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
-
.avisar_de(anomalias, registro) ⇒ Object
Las anomalías del art.
- .configuracion ⇒ Object
- .configure {|configuracion| ... } ⇒ Object
-
.fragmento_xml(registro, anterior) ⇒ Object
El fragmento XML del registro, ya construido y con su huella dentro.
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 |
.configuracion ⇒ Object
52 53 54 |
# File 'lib/verifactu_rails/libro.rb', line 52 def configuracion @configuracion ||= Configuracion.new(entorno: :pruebas) end |
.configure {|configuracion| ... } ⇒ Object
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 |