Class: VerifactuRails::Desglose
- Inherits:
-
Object
- Object
- VerifactuRails::Desglose
- Defined in:
- lib/verifactu_rails/desglose.rb
Overview
Conjunto de líneas del desglose (sf:DesgloseType).
Constant Summary collapse
- MAXIMO_LINEAS =
maxOccurs del esquema; no es orientativo
12
Instance Attribute Summary collapse
-
#detalles ⇒ Object
readonly
Returns the value of attribute detalles.
Instance Method Summary collapse
- #base_total ⇒ Object
-
#cuota_total ⇒ Object
Suma de cuotas repercutidas y de recargos.
-
#initialize(detalles) ⇒ Desglose
constructor
A new instance of Desglose.
Constructor Details
#initialize(detalles) ⇒ Desglose
Returns a new instance of Desglose.
365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 |
# File 'lib/verifactu_rails/desglose.rb', line 365 def initialize(detalles) @detalles = Array(detalles) raise ValidacionError, 'El desglose necesita al menos una línea' if @detalles.empty? if @detalles.size > MAXIMO_LINEAS raise ValidacionError, "El desglose admite como mucho #{MAXIMO_LINEAS} líneas " \ "(recibidas #{@detalles.size}). Agrupa por tipo impositivo." end unless @detalles.all?(Detalle) raise ValidacionError, 'Todas las líneas deben ser VerifactuRails::Detalle' end end |
Instance Attribute Details
#detalles ⇒ Object (readonly)
Returns the value of attribute detalles.
363 364 365 |
# File 'lib/verifactu_rails/desglose.rb', line 363 def detalles @detalles end |
Instance Method Details
#base_total ⇒ Object
392 393 394 |
# File 'lib/verifactu_rails/desglose.rb', line 392 def base_total Importe.formatear(detalles.sum { |d| BigDecimal(d.base_imponible) }) end |
#cuota_total ⇒ Object
Suma de cuotas repercutidas y de recargos. Se ofrece como ayuda para rellenar CuotaTotal, pero NO se impone: la relación entre el desglose y los totales tiene casos límite (rectificativas, no sujetas) y preferimos que el importe que se envía sea siempre el que decide quien llama.
385 386 387 388 389 390 |
# File 'lib/verifactu_rails/desglose.rb', line 385 def cuota_total suma = detalles.sum do |d| BigDecimal(d.cuota_repercutida || '0') + BigDecimal(d.cuota_recargo || '0') end Importe.formatear(suma) end |