Cita:
Empezado por CarlosMz
Muchas gracias por compartir tu forma de hacerlo, una pregunta ¿por qué has creado una tabla envíos a parte y no envías directamente la tabla al uso que comentas?
|
En la tabla de envíos guardo el xml de la request y la response completa a la AEAT, el csv (igual lo quito de la tabla de registros), el estado del envío total, fechaHora del envío y tiempo de espera que contesta la AEAT.
De esta manera tengo cada registro individual en una tabla, y un registro de los envíos y respuestas que me permitiría, llegado el caso, realizar un análisis más exhaustivo sobre cómo ha ido un envío determinado.
La forma más simple y que lleva menos trabajo de programación que he encontrado es:
- Se emite la factura y se emite un evento de envío de registros a la AEAT, que se gestiona de forma asíncrona, a través de un demonio (systemd en Linux, programo en PHP).
- El proceso asíncrono genera la request completa del envio de todas las facturas pendientes, y recibe la response de la AEAT. Con esa información completo los campos necesarios de la tabla de registros de facturación, y emito un correo al cliente/administrador indicando el resultado del proceso (éxito, rechazo, fallo)
De momento todo corre perfecto, pero de aquí a julio puede que simplifique/reduzca algo las tablas. Pero de momento, prefiero guardar toda la información posible.
De esta manera en la consulta de factura se muestra el/los envíos que se hayan realizado (alta/anulación, alta/subsanación error,...), con la info de CSV, estado (Aceptado...), fechaHora de generación, fechaHora de envío, error si lo hay (y enlace para subsanar), y se puede descargar el XML del registro individual del envío y el XML del envío completo.