Class: VerifactuRails::Libro::Autochequeo

Inherits:
Object
  • Object
show all
Defined in:
lib/verifactu_rails/libro/autochequeo.rb

Overview

Las comprobaciones que el art. 7.i) de la Orden HAC/1177/2024 obliga a hacer ANTES de generar cada registro:

1.º El último registro de facturación generado está correctamente
  encadenado.
2.º La fecha y hora de generación del último registro no es superior en
  más de un minuto a la fecha y hora actuales.

DEVUELVE una lista de anomalías; no levanta excepciones. Es deliberado: las FAQs dicen que "será preciso generar el siguiente RF, ya que la facturación por este motivo NUNCA debe interrumpirse". Bloquear la caja por un problema de trazabilidad es peor remedio que la enfermedad.

Constant Summary collapse

MARGEN_RELOJ =

El minuto del art. 7.i).2.º.

60

Instance Method Summary collapse

Constructor Details

#initialize(anterior) ⇒ Autochequeo

Returns a new instance of Autochequeo.



21
22
23
# File 'lib/verifactu_rails/libro/autochequeo.rb', line 21

def initialize(anterior)
  @anterior = anterior
end

Instance Method Details

#anomalias(ahora:) ⇒ Array<Symbol>

Returns vacío si todo cuadra.

Parameters:

  • ahora (Time)

    la hora con la que se va a fechar el nuevo registro

Returns:

  • (Array<Symbol>)

    vacío si todo cuadra



27
28
29
30
31
32
33
34
35
# File 'lib/verifactu_rails/libro/autochequeo.rb', line 27

def anomalias(ahora:)
  return [] if anterior.nil? # "salvo cuando se trate del primer registro"

  fallos = []
  fallos << :encadenamiento_roto unless eslabon_cuadra?
  fallos << :huella_alterada unless anterior.huella_cuadra?
  fallos << :reloj_hacia_atras if reloj_atrasado?(ahora)
  fallos
end