Class: VerifactuRails::Libro::Registro
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- VerifactuRails::Libro::Registro
- Defined in:
- lib/verifactu_rails/libro/registro.rb
Overview
Una anotación del libro registro: un registro de facturación tal y como se generó, con su sitio en la cadena.
Es el SISTEMA DE REGISTRO, no una caché de lo que tiene la AEAT. Está comprobado que la consulta de la AEAT devuelve una foto por factura y no el histórico: los eslabones sustituidos desaparecen de allí. Si esta tabla se pierde, el histórico de la cadena no existe en ninguna otra parte.
Constant Summary collapse
- ESTADOS =
%w[pendiente enviando anotado aceptado_con_errores rechazado].freeze
Instance Method Summary collapse
-
#a_registro_anterior ⇒ Object
Para encadenar el siguiente.
- #anomalias? ⇒ Boolean
- #anomalias_lista ⇒ Object
-
#anterior ⇒ Object
El eslabón anterior, buscado por su huella.
- #huella_cuadra? ⇒ Boolean
-
#huella_recalculada ⇒ Object
Recalcula la huella desde las columnas, sin tocar el payload ni volver a construir el objeto de dominio.
-
#momento ⇒ Object
La marca temporal tal y como entró en la huella, con su huso.
- #primero? ⇒ Boolean
Instance Method Details
#a_registro_anterior ⇒ Object
Para encadenar el siguiente.
45 46 47 48 |
# File 'lib/verifactu_rails/libro/registro.rb', line 45 def a_registro_anterior RegistroAnterior.new(id_emisor: id_emisor, num_serie: num_serie, fecha_expedicion: fecha_expedicion, huella: huella) end |
#anomalias? ⇒ Boolean
30 |
# File 'lib/verifactu_rails/libro/registro.rb', line 30 def anomalias? = anomalias.present? |
#anomalias_lista ⇒ Object
32 33 34 |
# File 'lib/verifactu_rails/libro/registro.rb', line 32 def anomalias_lista anomalias.nil? ? [] : JSON.parse(anomalias).map(&:to_sym) end |
#anterior ⇒ Object
El eslabón anterior, buscado por su huella. Funciona porque (cadena_id, huella) es único.
38 39 40 41 42 |
# File 'lib/verifactu_rails/libro/registro.rb', line 38 def anterior return nil if primero? cadena.registros.find_by(huella: huella_anterior) end |
#huella_cuadra? ⇒ Boolean
71 |
# File 'lib/verifactu_rails/libro/registro.rb', line 71 def huella_cuadra? = huella_recalculada == huella |
#huella_recalculada ⇒ Object
Recalcula la huella desde las columnas, sin tocar el payload ni volver a construir el objeto de dominio. Es lo que permite detectar que alguien editó la fila: si el recálculo no da lo almacenado, la anotación está alterada.
57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/verifactu_rails/libro/registro.rb', line 57 def huella_recalculada if tipo == 'anulacion' Huella.anulacion(id_emisor: id_emisor, num_serie: num_serie, fecha_expedicion: fecha_expedicion, fecha_hora_gen: fecha_hora_gen, huella_anterior: huella_anterior) else Huella.alta(id_emisor: id_emisor, num_serie: num_serie, fecha_expedicion: fecha_expedicion, tipo_factura: tipo_factura, cuota_total: cuota_total, importe_total: importe_total, fecha_hora_gen: fecha_hora_gen, huella_anterior: huella_anterior) end end |
#momento ⇒ Object
La marca temporal tal y como entró en la huella, con su huso.
51 |
# File 'lib/verifactu_rails/libro/registro.rb', line 51 def momento = Time.iso8601(fecha_hora_gen) |
#primero? ⇒ Boolean
29 |
# File 'lib/verifactu_rails/libro/registro.rb', line 29 def primero? = huella_anterior == '' |