class SiapExporter::ComprasVentas
Constants
- AlicuotaCompra
- AlicuotaVenta
- Compra
- Venta
Public Class Methods
generate(comprobantes)
click to toggle source
# File lib/siap_exporter.rb, line 90 def self.generate comprobantes new(comprobantes).generate end
new(comprobantes)
click to toggle source
# File lib/siap_exporter.rb, line 94 def initialize comprobantes @comprobantes = comprobantes @ventas = [] @alicuotas_ventas = [] @compras = [] @alicuotas_compras = [] end
Public Instance Methods
generate()
click to toggle source
# File lib/siap_exporter.rb, line 102 def generate @comprobantes.each do |comprobante| if comprobante[:numero_identificacion_comprador] # las alicuotas se deben generar antes que la venta, porque la # cantidad se indica en el registro de venta alicuotas_venta(comprobante) venta(comprobante) else alicuotas_compra(comprobante) compra(comprobante) end end { ventas: @ventas.join("\r\n"), alicuotas_ventas: @alicuotas_ventas.join("\r\n"), compras: @compras.join("\r\n"), alicuotas_compras: @alicuotas_compras.join("\r\n") } end
Private Instance Methods
alicuotas_compra(comprobante)
click to toggle source
# File lib/siap_exporter.rb, line 160 def alicuotas_compra comprobante comprobante[:cantidad_de_alicuotas] = 0 TIPO_ALICUOTA.each do |id, claves| gravado = comprobante[claves[0]] if gravado && gravado > 0 alicuota = comprobante.merge( codigo_documento_vendedor: 80, tipo_comprobante: tipo_comprobante(comprobante[:tipo_comprobante]), gravado: gravado, tipo_alicuota: id, impuesto: comprobante[claves[1]]) @alicuotas_compras << AlicuotaCompra.apply(alicuota) comprobante[:cantidad_de_alicuotas] += 1 end end end
alicuotas_venta(comprobante)
click to toggle source
# File lib/siap_exporter.rb, line 124 def alicuotas_venta comprobante comprobante[:cantidad_de_alicuotas] = 0 TIPO_ALICUOTA.each do |id, claves| gravado = comprobante[claves[0]] if gravado and gravado > 0 alicuota = comprobante.merge( tipo_comprobante: tipo_comprobante(comprobante[:tipo_comprobante]), gravado: gravado, tipo_alicuota: id, impuesto: comprobante[claves[1]]) @alicuotas_ventas << AlicuotaVenta.apply(alicuota) comprobante[:cantidad_de_alicuotas] += 1 end end end
compra(comprobante)
click to toggle source
# File lib/siap_exporter.rb, line 177 def compra comprobante comprobante = comprobante.merge( fecha: Date.parse(comprobante[:fecha]).strftime('%Y%m%d'), tipo_comprobante: tipo_comprobante(comprobante[:tipo_comprobante]), despacho_importacion: '', codigo_documento_vendedor: 80, total: total(comprobante), a_cuenta_iva: 0, impuestos_nacionales: 0, ingresos_brutos: 0, impuestos_municipales: 0, impuestos_internos: 0, moneda: 'PES', cambio: 1000000, codigo_de_operacion: 0, credito_fiscal: 0, otros_tributos: 0, cuit_emisor_corredor: 0, denominacion_emisor_corredor: '', iva_comision: 0 ) @compras << Compra.apply(comprobante) end
tipo_comprobante(tipo)
click to toggle source
# File lib/siap_exporter.rb, line 202 def tipo_comprobante tipo TIPO_COMPROBANTE.fetch(tipo) end
total(comprobante)
click to toggle source
# File lib/siap_exporter.rb, line 206 def total comprobante comprobante.values_at(:gravado_21, :iva_21, :gravado_10, :iva_10, :no_gravado, :exento).compact.reduce(0, :+) end
venta(comprobante)
click to toggle source
# File lib/siap_exporter.rb, line 140 def venta comprobante comprobante = comprobante.merge( fecha: comprobante[:fecha].gsub('-', ''), tipo_comprobante: tipo_comprobante(comprobante[:tipo_comprobante]), numero_comprobante_hasta: comprobante[:numero_comprobante], codigo_documento_comprador: 80, total: total(comprobante), no_categorizados: 0, impuestos_nacionales: 0, ingresos_brutos: 0, impuestos_municipales: 0, impuestos_internos: 0, moneda: 'PES', cambio: 1000000, codigo_de_operacion: 0, otros_tributos: 0, vencimiento_de_pago: 0) @ventas << Venta.apply(comprobante) end