Class: Facturapi::Helpers::Detalle
- Inherits:
-
Object
- Object
- Facturapi::Helpers::Detalle
- Defined in:
- lib/facturapi/helpers/detalle.rb
Overview
Corresponde a las lineas de detalle de una Boleta Electronica, con un minimo de 1 linea de detalle y un maximo de 1.000 lineas
Instance Attribute Summary collapse
-
#descuento_monto ⇒ Object
Es el valor de descuento del item (cuando corresponda), si el item no posee descuento se debe asignar 0 (cero) o no incluir el campo en el documento.
-
#descuento_pct ⇒ Object
Es el porcentaje de descuento del item (cuando corresponda), si el item no posee descuento se debe asignar 0 (cero) o no incluir el campo en el documento.
-
#dsc_item ⇒ Object
Es la descripcion adicional del producto o servicio antes indicado, con un maximo de 1.000 caracteres, en este campo se puede indicar mas informacion del producto o incluso una observacion en la linea de detalle.
-
#ind_exe ⇒ Object
Indica si el producto o servicio del item es afecto, exento o es no facturable, los indicadores son:.
-
#monto_item ⇒ Object
Indica el valor del item, es decir, el valor final de la linea de detalle.
-
#nmb_item ⇒ Object
Es la descripcion del producto o servicio, es decir, corresponde al nombre del producto o descripcion del servicio.
-
#nro_lin_det ⇒ Object
Indica el numero secuencial de linea de detalle de la Boleta Electronica, el cual puede ser desde la linea 1 hasta la linea 1.000.
-
#prc_item ⇒ Object
Es el precio unitario del item, su valor debe ser hasta 16 digitos y 2 decimales.
-
#qty_item ⇒ Object
Es la cantidad del item, su valor debe ser hasta 12 digitos y 6 decimales.
-
#recargo_monto ⇒ Object
Es el valor de recargo del item (cuando corresponda), si el item no posee recargo se debe asignar 0 (cero) o no incluir el campo en el documento.
-
#recargo_pct ⇒ Object
Es el porcentaje de recargo del item (cuando corresponda), si el item no posee recargo se debe asignar 0 (cero) o no incluir el campo en el documento.
-
#rut_mandante ⇒ Object
Corresponde al RUT del Mandante si la venta o servicio es por cuenta de otro, el cual es responsable del IVA devengado en el periodo.
-
#tpo_codigo ⇒ Object
Es el tipo de codigo que la empresa utiliza en el producto que se esta indicando en la linea de detalle; si no se tiene un tipo de codigo definido, se puede utilizar por defecto el tipo INT1.
-
#unmd_item ⇒ Object
Es la unidad de medida que se utiliza en el producto que se esta indicando en la linea de detalle; si no se tiene una unidad de medida definida, se puede utilizar por defecto la unidad de medida UN.
-
#vlr_codigo ⇒ Object
Es el codigo del producto, con un maximo de 35 caracteres.
Instance Method Summary collapse
- #afecto_iva? ⇒ Boolean
- #as_node ⇒ Object
- #autocomplete! ⇒ Object
- #exento_iva? ⇒ Boolean
-
#initialize(params = {}) ⇒ Detalle
constructor
A new instance of Detalle.
- #no_fact? ⇒ Boolean
- #no_fact_neg? ⇒ Boolean
Constructor Details
#initialize(params = {}) ⇒ Detalle
Returns a new instance of Detalle.
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/facturapi/helpers/detalle.rb', line 99 def initialize(params = {}) @nro_lin_det = params[:nro_lin_det] @tpo_codigo = params[:tpo_codigo] || 'INT1' @vlr_codigo = params[:vlr_codigo] @ind_exe = /^[0126]$/ =~ params[:ind_exe].to_s ? params[:ind_exe].to_s : '0' @nmb_item = params[:nmb_item] @qty_item = params[:qty_item].to_f.round(6) @prc_item = params[:prc_item].to_f.round(2) @monto_item = params[:monto_item] @rut_mandante = params[:rut_mandante] @dsc_item = params[:dsc_item] @unmd_item = params[:unmd_item] || 'UN' @descuento_pct = params[:descuento_pct] @descuento_monto = params[:descuento_monto] @recargo_pct = params[:recargo_pct] @recargo_monto = params[:recargo_monto] end |
Instance Attribute Details
#descuento_monto ⇒ Object
Es el valor de descuento del item (cuando corresponda), si el item no posee descuento se debe asignar 0 (cero) o no incluir el campo en el documento.
87 88 89 |
# File 'lib/facturapi/helpers/detalle.rb', line 87 def descuento_monto @descuento_monto end |
#descuento_pct ⇒ Object
Es el porcentaje de descuento del item (cuando corresponda), si el item no posee descuento se debe asignar 0 (cero) o no incluir el campo en el documento.
82 83 84 |
# File 'lib/facturapi/helpers/detalle.rb', line 82 def descuento_pct @descuento_pct end |
#dsc_item ⇒ Object
Es la descripcion adicional del producto o servicio antes indicado, con un maximo de 1.000 caracteres, en este campo se puede indicar mas informacion del producto o incluso una observacion en la linea de detalle.
72 73 74 |
# File 'lib/facturapi/helpers/detalle.rb', line 72 def dsc_item @dsc_item end |
#ind_exe ⇒ Object
Indica si el producto o servicio del item es afecto, exento o es no facturable, los indicadores son:
-
0: afecto a IVA
-
1: exento de IVA
-
2: no facturable
-
6: no facturable (negativo)
En caso que sea una factura, solo es necesario si se desea indicar que la linea es exenta de IVA. Los valores son:
-
1: No afecto o exento de IVA
-
2: Producto o servicio no es facturable
-
3: Garantia de deposito por envases (Cervezas, Jugos, Aguas Minerales,
Bebidas Analcoholicas u otros autorizados por Resolucion especial)
-
4: item No Venta. (Para facturas y guias de despacho (esta ultima con
Indicador Tipo de Traslado de Bienes igual a 1) y este item no sera facturado.
-
5: item a rebajar. Para guias de despacho NO VENTA que rebajan guia
anterior. En el area de referencias se debe indicar la guia anterior.
-
6: Producto o servicio no facturable negativo
40 41 42 |
# File 'lib/facturapi/helpers/detalle.rb', line 40 def ind_exe @ind_exe end |
#monto_item ⇒ Object
Indica el valor del item, es decir, el valor final de la linea de detalle. Este valor es bruto (con IVA), excepto cuando el campo 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:
MontoItem = PrcItem * QtyItem
60 61 62 |
# File 'lib/facturapi/helpers/detalle.rb', line 60 def monto_item @monto_item end |
#nmb_item ⇒ Object
Es la descripcion del producto o servicio, es decir, corresponde al nombre del producto o descripcion del servicio.
44 45 46 |
# File 'lib/facturapi/helpers/detalle.rb', line 44 def nmb_item @nmb_item end |
#nro_lin_det ⇒ Object
Indica el numero secuencial de linea de detalle de la Boleta Electronica, el cual puede ser desde la linea 1 hasta la linea 1.000.
8 9 10 |
# File 'lib/facturapi/helpers/detalle.rb', line 8 def nro_lin_det @nro_lin_det end |
#prc_item ⇒ Object
Es el precio unitario del item, su valor debe ser hasta 16 digitos y 2 decimales.
52 53 54 |
# File 'lib/facturapi/helpers/detalle.rb', line 52 def prc_item @prc_item end |
#qty_item ⇒ Object
Es la cantidad del item, su valor debe ser hasta 12 digitos y 6 decimales.
48 49 50 |
# File 'lib/facturapi/helpers/detalle.rb', line 48 def qty_item @qty_item end |
#recargo_monto ⇒ Object
Es el valor de recargo del item (cuando corresponda), si el item no posee recargo se debe asignar 0 (cero) o no incluir el campo en el documento.
97 98 99 |
# File 'lib/facturapi/helpers/detalle.rb', line 97 def recargo_monto @recargo_monto end |
#recargo_pct ⇒ Object
Es el porcentaje de recargo del item (cuando corresponda), si el item no posee recargo se debe asignar 0 (cero) o no incluir el campo en el documento.
92 93 94 |
# File 'lib/facturapi/helpers/detalle.rb', line 92 def recargo_pct @recargo_pct end |
#rut_mandante ⇒ Object
Corresponde al RUT del Mandante si la venta o servicio es por cuenta de otro, el cual es responsable del IVA devengado en el periodo. Debe contener valor desde 100.000 hasta 99 millones, guion y digito verificador (sin separador de miles).
66 67 68 |
# File 'lib/facturapi/helpers/detalle.rb', line 66 def rut_mandante @rut_mandante end |
#tpo_codigo ⇒ Object
Es el tipo de codigo que la empresa utiliza en el producto que se esta indicando en la linea de detalle; si no se tiene un tipo de codigo definido, se puede utilizar por defecto el tipo INT1.
13 14 15 |
# File 'lib/facturapi/helpers/detalle.rb', line 13 def tpo_codigo @tpo_codigo end |
#unmd_item ⇒ Object
Es la unidad de medida que se utiliza en el producto que se esta indicando en la linea de detalle; si no se tiene una unidad de medida definida, se puede utilizar por defecto la unidad de medida UN
77 78 79 |
# File 'lib/facturapi/helpers/detalle.rb', line 77 def unmd_item @unmd_item end |
#vlr_codigo ⇒ Object
Es el codigo del producto, con un maximo de 35 caracteres.
16 17 18 |
# File 'lib/facturapi/helpers/detalle.rb', line 16 def vlr_codigo @vlr_codigo end |
Instance Method Details
#afecto_iva? ⇒ Boolean
141 142 143 |
# File 'lib/facturapi/helpers/detalle.rb', line 141 def afecto_iva? ind_exe == '0' end |
#as_node ⇒ Object
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/facturapi/helpers/detalle.rb', line 117 def as_node create_node('Detalle') do |detalle| detalle << create_node('NroLinDet') { |n| n << nro_lin_det } detalle << create_node('TpoCodigo') { |n| n << tpo_codigo } detalle << create_node('VlrCodigo') { |n| n << vlr_codigo } detalle << create_node('IndExe') { |n| n << ind_exe } detalle << create_node('NmbItem') { |n| n << nmb_item } detalle << create_node('QtyItem') { |n| n << qty_item } detalle << create_node('PrcItem') { |n| n << prc_item } detalle << create_node('MontoItem') { |n| n << monto_item } detalle << create_node('RUTMandante') { |n| n << rut_mandante } if rut_mandante detalle << create_node('DscItem') { |n| n << dsc_item } if dsc_item detalle << create_node('UnmdItem') { |n| n << unmd_item } if unmd_item detalle << create_node('DescuentoPct') { |n| n << descuento_pct } if descuento_pct detalle << create_node('DescuentoMonto') { |n| n << descuento_monto } if descuento_monto detalle << create_node('RecargoPct') { |n| n << recargo_pct } if recargo_pct detalle << create_node('RecargoMonto') { |n| n << recargo_monto } if recargo_monto end end |
#autocomplete! ⇒ Object
137 138 139 |
# File 'lib/facturapi/helpers/detalle.rb', line 137 def autocomplete! self.monto_item = (prc_item * qty_item).to_i if monto_item.blank? end |
#exento_iva? ⇒ Boolean
145 146 147 |
# File 'lib/facturapi/helpers/detalle.rb', line 145 def exento_iva? ind_exe == '1' end |
#no_fact? ⇒ Boolean
149 150 151 |
# File 'lib/facturapi/helpers/detalle.rb', line 149 def no_fact? ind_exe == '2' end |
#no_fact_neg? ⇒ Boolean
153 154 155 |
# File 'lib/facturapi/helpers/detalle.rb', line 153 def no_fact_neg? ind_exe == '6' end |