Class: Facturapi::Helpers::Detalle

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

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_montoObject

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_pctObject

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_itemObject

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_exeObject

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_itemObject

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_itemObject

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_detObject

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_itemObject

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_itemObject

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_montoObject

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_pctObject

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_mandanteObject

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_codigoObject

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_itemObject

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_codigoObject

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

Returns:

  • (Boolean)


141
142
143
# File 'lib/facturapi/helpers/detalle.rb', line 141

def afecto_iva?
  ind_exe == '0'
end

#as_nodeObject



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

Returns:

  • (Boolean)


145
146
147
# File 'lib/facturapi/helpers/detalle.rb', line 145

def exento_iva?
  ind_exe == '1'
end

#no_fact?Boolean

Returns:

  • (Boolean)


149
150
151
# File 'lib/facturapi/helpers/detalle.rb', line 149

def no_fact?
  ind_exe == '2'
end

#no_fact_neg?Boolean

Returns:

  • (Boolean)


153
154
155
# File 'lib/facturapi/helpers/detalle.rb', line 153

def no_fact_neg?
  ind_exe == '6'
end