Ver Mensaje Individual
  #4  
Antiguo 01-09-2022
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 373
Reputación: 5
Sistel Va por buen camino
Cita:
Empezado por Irreo Ver Mensaje
Buenos días a todos,

Ando redactando la memoria para Gipuzkoa, y repasando en mi código el tema del encadenamiento, a la hora de redactar cómo funciona, me han entrado algunas dudas sobre si lo que tengo montado se puede considerar correcto.

En la documentación mencionan que en Gipuzkoa la comunicación debe ser "inmediata". Pero claro, no estoy seguro qué consideran ellos inmediato...

El sistema que tengo montado (todavía en fase de pruebas) funciona así:

Infraestructura:
- Servidor con un API propio, que viene a ser un "proxy" entre las personas que crean las facturas, y Hacienda.
- Tiendas físicas con software Windows para venta y emisión de tickets.

Servidor:
- Se recibe un JSON con una factura.
- Se crea un registro en la BBDD con todos los datos.
- Se firma y se guarda todo.
- Si es nueva factura queda marcada como "pendiente de enviar", y si es una corregida se guarda como "a reenviar"

Cronjob que se está ejecutando constantemente en el servidor:
- Cada 10 segundos, y en orden de creación de factura, se lee una factura de la tabla anterior y se envía.
- Si es una factura sin intento de envío previo, obtengo el XML ya firmado que estaba guardado.
- Si es una factura a corregir, genero de nuevo el XML a partir de los datos de la factura, que no va firmado.

Con esto me aseguro de que el encadenamiento esté siempre bien. Es decir, aunque una factura sea rechazada, ya se considera como "factura anterior" para el encadenamiento.
Y al haber solo un hilo del sistema dedicado al envío de facturas, con los 10 segundos de margen se evitan situaciones donde dos envíos se pisan entre ellos, si el primero por ejemplo tarda varios segundos.

Otro de los motivos de tener esto así, es poder emitir el ticket con el QR incluso aunque todavía no hayamos comunicado con Hacienda.

Es decir:
- Un cliente compra un producto en la tienda.
- El software del ordenador envía los datos a nuestro API, y le entrega el QR y TBAI.
- La factura todavía no sabemos si tiene el XML incorrecto, si va a ser rechazada o aceptada, pero entiendo que me da igual.
- El cliente se va con su ticket.
- En los segundos siguientes a haberse guardado la factura, ya se va a enviar a Hacienda mediante el cronjob.

¿Mi preocupación?
Que por lo que sea, se generen muchas facturas en algún momento, y en lugar de tardar de 1 a 9 segundos en estar funcional el QR, tarde 50 segundos por ejemplo... o más.

¿Debe ser inmediato.... inmediato?

¿Sabéis algo de si el inspector que hace verificaciones presenciales crea una factura e intenta leer el QR en el mismísimo instante?

Gracias!
Saludos.
Hola,

Parece correcto.
Aunque tienes que tener en cuenta algunos matices:

- Cuando dices "Se recibe un JSON con una factura", no es del todo correcto.
Deberías decir "Se recibe un JSON con los datos para emitir la factura", ya que la factura no existe hasta que no se emite, que es en el momento que se crea y firma el XML.

Y, por supuesto, es totalmente correcto que, a partir del tener el XML firmado obtengas el código TBAI y el código QR y los imprimas en el documento de la factura (independientemente de que aún no se haya enviado a Hacienda)

El término "envío inmediato" no supone ir a la velocidad de la luz.
Al igual que tú, yo lanzo un cronjob (yo lo hago cada minuto). Y se encarga de enviar cada una de los XML firmados que aún no se han enviado.
Yo entiendo que 1 minuto es inmediato.

Respecto al tema de la Verificación Presencial, entiendo que si un inspector se persona en el domicilio desde el que se emiten las facturas, puede solicitar ver el resultado que muestra el botón de "Verificación Presencial" (o como se quiera llamar en la aplicación), pero no creo que un inspector pueda tocar nada y, menos aún, emitir una factura.
Entiendo que podría solicitar ver una factura y escanear, con su smartphone el código QR para comprobar el estado y datos en la web de Hacienda Foral.

Saludos
Responder Con Cita