Module: VerifactuRails::Libro

Defined in:
lib/verifactu_rails/libro.rb,
lib/verifactu_rails/libro/cadena.rb,
lib/verifactu_rails/libro/remesa.rb,
lib/verifactu_rails/libro/registro.rb,
lib/verifactu_rails/libro/migracion.rb,
lib/verifactu_rails/libro/autochequeo.rb,
lib/verifactu_rails/libro/reconciliacion.rb

Overview

El libro registro: la capa de persistencia.

Se carga APARTE del núcleo (require 'verifactu_rails/libro'), porque exige ActiveRecord y el núcleo no depende de Rails. Quien solo quiera generar XML y huellas no arrastra nada de esto.

POR QUÉ ESTA CAPA EXISTE. No es una caché de lo que tiene la AEAT: es el sistema de registro. Está comprobado que la consulta de la AEAT devuelve una foto por factura, no el histórico, así que los eslabones sustituidos por una subsanación desaparecen de allí. El histórico de la cadena no existe en ninguna otra parte.

Defined Under Namespace

Classes: Autochequeo, Cadena, Configuracion, Migracion, Reconciliacion, Registro, Remesa

Class Method Summary collapse

Class Method Details

.avisar_de(anomalias, registro) ⇒ Object

Las anomalías del art. 7.i no interrumpen la facturación, pero tienen que llegar a alguien. Por defecto no se hace nada: quien despliega decide si las manda a un log, a Sentry o a un panel.



77
78
79
# File 'lib/verifactu_rails/libro.rb', line 77

def avisar_de(anomalias, registro)
  configuracion.al_detectar_anomalia&.call(anomalias, registro)
end

.configuracionObject



52
53
54
# File 'lib/verifactu_rails/libro.rb', line 52

def configuracion
  @configuracion ||= Configuracion.new(entorno: :pruebas)
end

.configure {|configuracion| ... } ⇒ Object

Yields:



56
# File 'lib/verifactu_rails/libro.rb', line 56

def configure = yield(configuracion)

.fragmento_xml(registro, anterior) ⇒ Object

El fragmento XML del registro, ya construido y con su huella dentro. Se guarda hecho para que lo que se envíe sea exactamente lo que se calculó: si nadie vuelve a derivarlo, la huella y el XML no pueden divergir.

Los namespaces se declaran en el propio fragmento aunque luego se anide dentro del envío, que los repite: es redundante pero válido, y hace que cada fragmento se pueda leer y validar por separado.



65
66
67
68
69
70
71
72
# File 'lib/verifactu_rails/libro.rb', line 65

def fragmento_xml(registro, anterior)
  constructor = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
    xml['sum'].RegistroFactura('xmlns:sum' => NS_LR, 'xmlns:sum1' => NS_SF) do
      registro.construir(xml, anterior: anterior)
    end
  end
  constructor.doc.root.to_xml
end