Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Registros de Facturacion y Eventos (XML) (https://www.clubdelphi.com/foros/forumdisplay.php?f=67)
-   -   Guardar y qué de cada registro de facturación (https://www.clubdelphi.com/foros/showthread.php?t=97262)

CarlosMz 04-03-2025 20:15:44

Guardar y qué de cada registro de facturación
 
Buenas a todos,

Quería preguntar por vuestro consejo sobre qué datos guardar de cada registro de facturación.
Aunque no es obligatorio guardarlos por reglamento si es solo VeriFactu, creo que la realidad es otra ya que hay tener ciertos campos como huella anterior...

Actualmente he creado un tabla RegistrosFacturacion con campos como:

Código:


TipoRegistro

IDEmisor
NumSerieFactura
FechaExpedicionFactura
FechaOperacion

RefExterna

Cliente
NIF

Huella
CuotaTotal
ImporteTotal

Rectificativa
FechaRectificativa

EstadoRegistro

Otros datos como bases, ivas... podrían obtenerse con join a la tabla de facturas/tiquets.

¿Qué recomendáis?

morta71 04-03-2025 20:47:13

Hola a todos,

En la aplicación que estoy adaptando guardo los siguientes campos en una tabla al uso:

- operacion -> tipo de registro
- rechazoPrevio (null,S,N)
- subsanacion (null,S,N)
- csv
- estadoRegistro
- codigoErrorRegistro
- descripcionErrorRegistro
- idDuplicado
- encadenamiento (con registro anterior -> numSerie, fecha, huella)
- huella
- fechaGeneracion
- registro (xml del registro de facturación)
- factura_id (relaciona la tabla facturas)
- envio_id (relaciona la tabla envios)

El resto de datos como refExterna, datos del destinatario, fecha, factura... los obtengo de la tabla de facturas o de envios si fuera necesario.

P.D.: Después de mis inicios con Delphi 3/5, y aunque ahora desarrollo en PHP, este foro me ha servido de mucha ayuda con el tema que nos ocupa. Muchas gracias a todos los usuarios que lo hacéis posible.

CarlosMz 05-03-2025 08:41:06

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?

newtron 05-03-2025 09:40:10

Yo lo que hago es guardar todos los xmls de envío y de respuesta, así me aseguro de que tengo toda la información. Para no "petar" una carpeta con tanto fichero los guardo en carpetas por años/meses.


Saludos.

CarlosMz 05-03-2025 09:57:19

Cita:

Empezado por newtron (Mensaje 562465)
Yo lo que hago es guardar todos los xmls de envío y de respuesta, así me aseguro de que tengo toda la información. Para no "petar" una carpeta con tanto fichero los guardo en carpetas por años/meses.


Saludos.

Y como gestionas las respuestas sobre los errores y subsanaciones de cara al usuario ?

Faneka 05-03-2025 10:14:45

Yo guardo los XML completos de envío, el XML de cada RF, los XML de las respuestas. Luego en la base de datos por cada factura tengo información de cuando se envio, el estado de la factura (CORRECTA, ACEPTADA CON ERRORES, INCORRECTA, RECTIFICADA, ...), el CSV, el registro anterior, etc... Así el cliente si va a la factura puede ver como esta.

morta71 05-03-2025 12:26:17

Cita:

Empezado por CarlosMz (Mensaje 562460)
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.

newtron 05-03-2025 13:50:53

Cita:

Empezado por CarlosMz (Mensaje 562468)
Y como gestionas las respuestas sobre los errores y subsanaciones de cara al usuario ?


Además de estos ficheros creo otro fichero más simple con el número de factura, si está aceptada o rechazada y en su caso el código y la descripción del error que luego importo desde el programa de gestión para manejarlo. Los .xml solo los guardo por si en el futuro hubiera que hacer alguna revisión por algún motivo poder echarles un vistazo.


Saludos.

Neftali [Germán.Estévez] 05-03-2025 14:38:54

Cita:

Empezado por newtron (Mensaje 562465)
Yo lo que hago es guardar todos los xmls de envío y de respuesta, así me aseguro de que tengo toda la información. Para no "petar" una carpeta con tanto fichero los guardo en carpetas por años/meses.


Nosotros algo similar.
En Base de Datos están los XML de los registros de facturación y eventos.
Son exportables desde la BD a disco (bajo petición del usuario).
Opcionalmente se guardan a disco (activando configuración de debug); Esto es de cara a nosotros (sólo para debug) y eventualmente en algún cliente que pueda tener algún problema.


La franja horaria es GMT +2. Ahora son las 18:18:48.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi