Class: Facturapi::Helpers::Totales
- Inherits:
-
Object
- Object
- Facturapi::Helpers::Totales
- Defined in:
- lib/facturapi/helpers/totales.rb
Overview
Corresponde a los valores totales de una Boleta Electronica.
Constant Summary collapse
- IVA =
0.19
Instance Attribute Summary collapse
-
#iva ⇒ Object
Corresponde al valor IVA (Impuesto al Valor Agregado) de la boleta electronica, solamente se indica en el caso que el sea una boleta afecta y que IndMntNeto tenga el valor 2.
-
#mnt_exe ⇒ Object
Corresponde al valor Exento de la boleta electronica.
-
#mnt_neto ⇒ Object
Corresponde al valor Neto de la boleta electronica, solamente se indica en el caso que el sea una boleta afecta y que IndMntNeto tenga el valor 2.
-
#mnt_total ⇒ Object
Corresponde al valor total de la boleta electronica y se puede calcular de dos maneras diferentes.
-
#monto_nf ⇒ Object
Corresponde a la suma de los montos de bienes o servicios no facturables de la boleta electronica.
-
#saldo_anterior ⇒ Object
Corresponde al saldo anterior de un periodo, esta es informacion ilustrativa en la boleta electronica, es decir, que se utiliza para el formato impreso del documento.
-
#tasa_iva ⇒ Object
Corresponde a la tasa de impuesto al valor agregado (IVA), este valor debe ser expresado en porcentaje.
-
#total_periodo ⇒ Object
Corresponde a la suma final del documento, tomando el total y el monto no facturable en la boleta electronica.
-
#vlr_pagar ⇒ Object
Es el valor cobrado de la transaccion realizada.
Instance Method Summary collapse
- #as_node ⇒ Object
- #auto_mnt_total ⇒ Object
- #autocomplete!(params = {}) ⇒ Object
-
#initialize(params = {}) ⇒ Totales
constructor
A new instance of Totales.
Constructor Details
#initialize(params = {}) ⇒ Totales
Returns a new instance of Totales.
84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/facturapi/helpers/totales.rb', line 84 def initialize(params = {}) @mnt_neto = params[:mnt_neto].to_i if params[:mnt_neto] @mnt_exe = params[:mnt_exe].to_i if params[:mnt_exe] @iva = params[:iva].to_i if params[:iva] @mnt_total = params[:mnt_total].to_i if params[:mnt_total] @monto_nf = params[:monto_nf].to_i if params[:monto_nf] @total_periodo = params[:total_periodo].to_i if params[:total_periodo] @saldo_anterior = params[:saldo_anterior].to_i @vlr_pagar = params[:vlr_pagar].to_i if params[:vlr_pagar] @tasa_iva = params[:tasa_iva] autocomplete! if params[:auto] end |
Instance Attribute Details
#iva ⇒ Object
Corresponde al valor IVA (Impuesto al Valor Agregado) de la boleta electronica, solamente se indica en el caso que el sea una boleta afecta y que IndMntNeto tenga el valor 2. Al ser un campo de monto, se debe indicar sin decimales y sin separadores de miles. Se calcula de la siguiente forma:
IVA = MntNeto * 19%
32 33 34 |
# File 'lib/facturapi/helpers/totales.rb', line 32 def iva @iva end |
#mnt_exe ⇒ Object
Corresponde al valor Exento de la boleta electronica. Al ser un campo de monto, se debe indicar sin decimales y sin separadores de miles. Se calcula de la siguiente forma:
MntExe = Suma de ValorExento por linea de detalle
# Solamente MontoItem de los items que tienen IndExe = 1
23 24 25 |
# File 'lib/facturapi/helpers/totales.rb', line 23 def mnt_exe @mnt_exe end |
#mnt_neto ⇒ Object
Corresponde al valor Neto de la boleta electronica, solamente se indica en el caso que el sea una boleta afecta y que IndMntNeto tenga el valor 2. Al ser un campo de monto, se debe indicar sin decimales y sin separadores de miles. Se calcula de la siguiente forma:
MntNeto = Suma de MontoItem por linea de detalle - Descuentos + Recargos
# Solamente MontoItem de los items que tienen IndExe = 0
# Descuentos y Recargos basados en etiqueta <DscRcgGlobal>
15 16 17 |
# File 'lib/facturapi/helpers/totales.rb', line 15 def mnt_neto @mnt_neto end |
#mnt_total ⇒ Object
Corresponde al valor total de la boleta electronica y se puede calcular de dos maneras diferentes. Al ser un campo de monto, se debe indicar sin decimales y sin separadores de miles. Se calcula de la siguiente forma:
# Para el caso que se indique una boleta afecta y que IndMntNeto tenga
# el valor 2, se calcula:
MntTotal = MntNeto + IVA + MntExe
# Para el caso que no se indique IndMntNeto, o tenga el valor 0, se
# calcula:
MntTotal = Suma de MontoItem por linea de detalle - Descuentos + Recargos
# Solamente MontoItem de los items que tienen IndExe = 0
# Descuentos y Recargos basados en etiqueta <DscRcgGlobal>
47 48 49 |
# File 'lib/facturapi/helpers/totales.rb', line 47 def mnt_total @mnt_total end |
#monto_nf ⇒ Object
Corresponde a la suma de los montos de bienes o servicios no facturables de la boleta electronica. Los montos no facturables pueden ser negativos. Al ser un campo de monto, se debe indicar sin decimales y sin separadores de miles. Se calcula de la siguiente forma:
MontoNF = Suma de MontoItem por linea de detalle
# Solamente MontoItem de los items que tienen IndExe igual a 2 y 6.
56 57 58 |
# File 'lib/facturapi/helpers/totales.rb', line 56 def monto_nf @monto_nf end |
#saldo_anterior ⇒ Object
Corresponde al saldo anterior de un periodo, esta es informacion ilustrativa en la boleta electronica, es decir, que se utiliza para el formato impreso del documento. Si no se desea usar, se debe asignar 0 (cero). Al ser un campo de monto, se debe indicar sin decimales y sin separadores de miles.
71 72 73 |
# File 'lib/facturapi/helpers/totales.rb', line 71 def saldo_anterior @saldo_anterior end |
#tasa_iva ⇒ Object
Corresponde a la tasa de impuesto al valor agregado (IVA), este valor debe ser expresado en porcentaje
82 83 84 |
# File 'lib/facturapi/helpers/totales.rb', line 82 def tasa_iva @tasa_iva end |
#total_periodo ⇒ Object
Corresponde a la suma final del documento, tomando el total y el monto no facturable en la boleta electronica. Al ser un campo de monto, se debe indicar sin decimales y sin separadores de miles. Se calcula de la siguiente forma:
TotalPeriodo = MntTotal + MontoNF
64 65 66 |
# File 'lib/facturapi/helpers/totales.rb', line 64 def total_periodo @total_periodo end |
#vlr_pagar ⇒ Object
Es el valor cobrado de la transaccion realizada. Al ser un campo de monto, se debe indicar sin decimales y sin separadores de miles. Se calcula de la siguiente forma:
VlrPagar = MntTotal + SaldoAnterior
78 79 80 |
# File 'lib/facturapi/helpers/totales.rb', line 78 def vlr_pagar @vlr_pagar end |
Instance Method Details
#as_node ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/facturapi/helpers/totales.rb', line 97 def as_node create_node('Totales') do |totales| totales << create_node('MntNeto') { |n| n << mnt_neto } totales << create_node('MntExe') { |n| n << mnt_exe } totales << create_node('IVA') { |n| n << iva } totales << create_node('MntTotal') { |n| n << mnt_total } totales << create_node('MontoNF') { |n| n << monto_nf } if monto_nf totales << create_node('TotalPeriodo') { |n| n << total_periodo } if total_periodo totales << create_node('SaldoAnterior') { |n| n << saldo_anterior } if saldo_anterior totales << create_node('VlrPagar') { |n| n << vlr_pagar } if vlr_pagar totales << create_node('TasaIVA') { |n| n << tasa_iva } if tasa_iva end end |
#auto_mnt_total ⇒ Object
132 133 134 |
# File 'lib/facturapi/helpers/totales.rb', line 132 def auto_mnt_total mnt_neto + iva + mnt_exe end |
#autocomplete!(params = {}) ⇒ Object
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/facturapi/helpers/totales.rb', line 111 def autocomplete!(params = {}) is_monto_neto = params[:is_monto_neto] mnt_neto = params[:mnt_neto] mnt_exe = params[:mnt_exe] monto_nf = params[:monto_nf] is_boleta = params[:is_boleta] self.tasa_iva = IVA * 100 if !is_boleta && tasa_iva.blank? if is_monto_neto && mnt_neto self.mnt_neto = mnt_neto if self.mnt_neto.blank? self.iva = (mnt_neto * (tasa_iva || IVA * 100) / 100).to_i if iva.blank? end self.mnt_exe = mnt_exe || 0 if self.mnt_exe.blank? self.monto_nf = monto_nf || 0 if self.monto_nf.blank? if mnt_total.blank? && mnt_neto self.mnt_total = is_monto_neto ? auto_mnt_total : mnt_neto end self.total_periodo = mnt_total + self.monto_nf if total_periodo.blank? self.vlr_pagar = mnt_total + saldo_anterior if vlr_pagar.blank? end |