class CFDI::Impuestos

Public Class Methods

new(data={}) click to toggle source
# File lib/impuestos.rb, line 9
def initialize data={}
  self.traslados = data[:traslados] || []
  self.retenciones = data[:retenciones] || []
  self.totalImpuestosTrasladados = data[:totalImpuestosTrasladados] if data[:totalImpuestosTrasladados]
  self.totalImpuestosRetenidos = data[:totalImpuestosRetenidos] if data[:totalImpuestosRetenidos]
end

Public Instance Methods

count() click to toggle source

@return [Integer] La cantidad de impuestos que tiene.

# File lib/impuestos.rb, line 52
def count
  traslados.count + retenciones.count
end
retenciones=(value) click to toggle source
# File lib/impuestos.rb, line 27
def retenciones= value
  @retenciones = value.map { |t|
    t.is_a?(ImpuestoGenerico) ? t : Impuestos::Retencion.new({
      tasa: t[:tasa],
      impuesto: t[:impuesto] || 'IVA',
      importe: t[:importe]
    })
  }
  @totalImpuestosRetenidos = suma(:retenciones) if @retenciones.count > 0
end
suma(tipo_impuestos) click to toggle source
# File lib/impuestos.rb, line 56
def suma tipo_impuestos
  instance_variable_get("@#{tipo_impuestos}").map(&:importe).reduce(0.0, &:+)
end
total() click to toggle source

@return [Float] la suma de traslados menos retenciones

# File lib/impuestos.rb, line 61
def total
  suma(:traslados) - suma(:retenciones)
end
totalImpuestosRetenidos=(valor) click to toggle source

Asigna el total de impuestos retenidos @param valor [String, Float, to_f] Cualquier objeto que responda a to_f

# File lib/impuestos.rb, line 47
def totalImpuestosRetenidos= valor
  @totalImpuestosRetenidos = valor.to_f
end
totalImpuestosTrasladados=(valor) click to toggle source

Asigna el total de impuestos trasladados @param valor [String, Float, to_f] Cualquier objeto que responda a to_f

# File lib/impuestos.rb, line 41
def totalImpuestosTrasladados= valor
  @totalImpuestosTrasladados = valor.to_f
end
traslados=(value) click to toggle source
# File lib/impuestos.rb, line 16
def traslados= value
  @traslados = value.map { |t|
    t.is_a?(ImpuestoGenerico) ? t : Impuestos::Traslado.new({
      tasa: t[:tasa],
      impuesto: t[:impuesto] || 'IVA',
      importe: t[:importe]
    })
  }
  @totalImpuestosTrasladados = suma(:traslados) if @traslados.count > 0
end