Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Proyecto SIF/Veri*Factu/Ley Antifraude > Envío de registros y sus respuestas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Tema Cerrado
 
Herramientas Buscar en Tema Desplegado
  #121  
Antiguo 10-02-2025
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 4.214
Poder: 24
newtron Va camino a la fama
Cita:
Empezado por ramherfer Ver Mensaje
Hola buenas tardes.
A ver si alguien me puede dar un empujoncito con respecto a la anulación.
Tenemos el siguiente planteamiento:

Oper. NumFra Fecha Fra
ALTA F240001 21/01/2024
ALTA F240002 22/01/2024
BAJA F240001 21/01/2024
ALTA F240003 22/01/2024
ALTA F240004 22/01/2024
ALTA F240005 22/01/2024
ALTA F240006 22/01/2024

En la hoja excel lo tengo claro y lo veo y sin ningún problema. pero me lleva loco el tema de la anulación y ostras, no soy capaz de encaminarlo. Como orientais el asunto en la base de datos si la tabla tiene como índice principal NumFra y tenemos ya el registro de alta con el número F240001. Sería sencillo y básico botón derecho en el alta correspondiente y opción anual factura, automáticamente se duplica el registro con la operación de baja y su fecha, pero no llego ni a probarlo ya que automáticamente me daría registros duplicados en la tabla de cabecera de facturas.

Si alguno me diera una pista de como orientar el tema se lo agradecería. No pensaba utilizar el tema de anulación, pero creo que se va a dar el caso en más de una vez y me gustaría tenerlo previsto.

Disculpar mi torpeza.
Un saludo,

No sé cómo piensas orientar el tema de las bajas pero yo lo veo peliagudo. Primero te crea problemas para manejar ese dato en la misma tabla de facturas (como ya estás comprobando) y segundo que no creo que sea muy recomendable anular facturas.


Si te sirve de algo yo he optado por no dejar anular facturas y en cambio generar facturas rectificativas. A partir de una factura determinada que se quiera modificar por algún motivo creo en memoria una copia para hacer los cambios que se quieran y si se aceptan muevo la factura original a otra tabla y se queda la rectificada con un nuevo número de otra serie. Si lo que se quiere es directamente eliminar la factura lo que hago es un abono. Este proceso, como tantas cosas, es discutible pero creo que es legal y no me marea mucho el programa.


Saludos.
__________________
Be water my friend.
  #122  
Antiguo 10-02-2025
Avatar de ramherfer
ramherfer ramherfer is offline
Miembro
 
Registrado: may 2013
Ubicación: Valencia
Posts: 162
Poder: 14
ramherfer Va por buen camino
Esto es como todo, en enviar pregunta y se aparece la iluminación divina....

Tratar el indice principal con un autoincrement y un secundario mantenido con número de factura. Pasa que no soy muy amigo de los autoincrement, pero como no afecta a los datos, me daría igual que este variara en cualquier momento y por cualquier motivo.
El problema es que no se a nivel de aplicación como me afectaría, en la busqueda de facturas.

J...r estoy encasquillado con el tema.
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos.
  #123  
Antiguo 10-02-2025
Avatar de ramherfer
ramherfer ramherfer is offline
Miembro
 
Registrado: may 2013
Ubicación: Valencia
Posts: 162
Poder: 14
ramherfer Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
No sé cómo piensas orientar el tema de las bajas pero yo lo veo peliagudo. Primero te crea problemas para manejar ese dato en la misma tabla de facturas (como ya estás comprobando) y segundo que no creo que sea muy recomendable anular facturas.


Si te sirve de algo yo he optado por no dejar anular facturas y en cambio generar facturas rectificativas. A partir de una factura determinada que se quiera modificar por algún motivo creo en memoria una copia para hacer los cambios que se quieran y si se aceptan muevo la factura original a otra tabla y se queda la rectificada con un nuevo número de otra serie. Si lo que se quiere es directamente eliminar la factura lo que hago es un abono. Este proceso, como tantas cosas, es discutible pero creo que es legal y no me marea mucho el programa.


Saludos.
Pues mira creo que tienes razón newtron, yo opté por esa opción en un principio, pero al verlo tan sencillo para el usuario, anular y volver a enviar un nuevo alta, "el empecinamiento creo que es mi mayor enemigo" y no me deja ver con claridad. Y creo que así se va a quedar, error -> abono y vuelta a empezar, que se fijen antes de facturar y ya vendrán mejores tiempos, e un mondo difichile!!, que nuestro trabajo no está pagado.

Gracias Darkdudae y Newtron por los aportes.
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos.

Última edición por ramherfer fecha: 10-02-2025 a las 20:27:53.
  #124  
Antiguo 11-02-2025
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.435
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por ramherfer Ver Mensaje
En la hoja excel lo tengo claro y lo veo y sin ningún problema. pero me lleva loco el tema de la anulación y ostras, no soy capaz de encaminarlo. Como orientais el asunto en la base de datos si la tabla tiene como índice principal NumFra y tenemos ya el registro de alta con el número F240001. Sería sencillo y básico botón derecho en el alta correspondiente y opción anual factura, automáticamente se duplica el registro con la operación de baja y su fecha, pero no llego ni a probarlo ya que automáticamente me daría registros duplicados en la tabla de cabecera de facturas.

Nosotros tenemos en la tabla de facturas un campo de ESTADO, que en un momento dado nos marca si la factura está ANULADA (y otros estados por los que puede pasar).
Por otro lado, tenemos una tabla de RegistrosDeFacturación, donde se almacena un registro por cada operación que se le realiza a una factura, y por lo tanto podemos tener varios registros (sobre la misma factura):

ALTA
MODIFICACION
MODIFICACION
ANULACION

Además, esa segunda tabla se puede consultar, para acceder rápidamente al "historial" de una factura y debe permitir descargar el RegistroDeFacturación de cada factura.

__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
  #125  
Antiguo 11-02-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
Vamos a ver si entendi lo de las bajas, como creo que lo he entendido siempre. bajo la experiencia del SII

Las bajas son una factura mas para la AEAT, tiene su huella: la que tuvo durante el alta y encadenamiento.

Cuando das de alta una nueva siguiente a la baja la encadenas con ella y listo.

El lugar de la baja no se puede ocupar porque dara error 3000.

¿esto es asi? lo unico que tienes que marcar es un flag en el archivo de facturas que te indique cual es su estado, sin mas.

Saludos

Nota: gracias a la demo de darkdudae, el componente con total seguridad abandonara el servidor de mensajes, y pasara a funcionar bajo DLL. No hay que modificar nada en el código de los programas que usan el componente. La semana que viene lo publicare.
  #126  
Antiguo 11-02-2025
Avatar de ramherfer
ramherfer ramherfer is offline
Miembro
 
Registrado: may 2013
Ubicación: Valencia
Posts: 162
Poder: 14
ramherfer Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Por otro lado, tenemos una tabla de RegistrosDeFacturación, donde se almacena un registro por cada operación que se le realiza a una factura, y por lo tanto podemos tener varios registros (sobre la misma factura):

Además, esa segunda tabla se puede consultar, para acceder rápidamente al "historial" de una factura y debe permitir descargar el RegistroDeFacturación de cada factura.

Hola Germán. Esa segunda tabla podría tener esta estructura, partiendo los envios desde la misma

Código:
Id	N.Factura	Fec.Factura  Operacion	Notificada
1	FR250001	02/06/2025	A	          S
2	FR250002	02/07/2025	A	          S
3	FR250003	02/07/2025	A	          S
4	FR250003	02/07/2025	M	          S
5	FR250004	02/10/2025	A	          S                    Encadenada a la 3
6	FR250001	02/06/2025	B	          S                    Encadenada a la 4???
7	FR250005	02/11/2025	A	          S                    Encadenada a la 1???
8	FR250006	02/11/2025	A	          S                    Encadenada a la 6

Cita:
debe permitir descargar el RegistroDeFacturación de cada factura.
Esto me ha dejado muerto...
Gracias.
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos.

Última edición por Neftali [Germán.Estévez] fecha: 11-02-2025 a las 15:24:10.
  #127  
Antiguo 11-02-2025
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.435
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por ramherfer Ver Mensaje
Hola Germán. Esa segunda tabla podría tener esta estructura, partiendo los envios desde la misma
...
Similar a la que tengo yo, aunque en la mía hay más campos.
Por ejemplo, en cada registro de facturación tengo el HASH, tengo el contenido del registro en formato XML,...

En esa tabla me lía un poco las fechas que has puesto.
En cuanto al encadenamiento, se va haciendo con el último RegistroDeFacturación generado, digamos de forma conológica (independientemente si lo último ha sido un alta, una subsanación o una anulación).


Cita:
Empezado por ramherfer Ver Mensaje
debe permitir descargar el RegistroDeFacturación de cada factura.
Digamos que tenemos una pantalla que muestra todos los registros de facturación dedicada a posibles inspecciones. Desde esa pantalla puedes buscar una fcatura y deberías ver su "historial" y su estado actual (todas sus operacion o registros de facturación); La mayoría aparecerán 1 vez como Alta aceptada, pero también podrás encontrar un Alta + Baja o Alta + Modificacion + Modificación + Baja,...

Y tal como pone la documentación se debe poder ver o descargar el registro de facturación (XML), por eso lo guardamos tal cual en un campo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
  #128  
Antiguo 11-02-2025
Avatar de DarkDudae
DarkDudae DarkDudae is offline
Miembro
 
Registrado: abr 2006
Posts: 177
Poder: 21
DarkDudae Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Y tal como pone la documentación se debe poder ver o descargar el registro de facturación (XML), por eso lo guardamos tal cual en un campo.
Con el “registro de facturación” en XML te refieres a la respuesta que devuelve Hacienda o a una suerte de “Factura Electrónica” con los metadatos de la factura?
__________________
El recuerdo es la prisión en la que el alma sueña pasado, cuando no vive el presente, ni quiere un futuro.
  #129  
Antiguo 12-02-2025
CarlosArjonomia CarlosArjonomia is offline
Miembro
 
Registrado: abr 2021
Posts: 293
Poder: 6
CarlosArjonomia Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Similar a la que tengo yo, aunque en la mía hay más campos.
Por ejemplo, en cada registro de facturación tengo el HASH, tengo el contenido del registro en formato XML,...

En esa tabla me lía un poco las fechas que has puesto.
En cuanto al encadenamiento, se va haciendo con el último RegistroDeFacturación generado, digamos de forma conológica (independientemente si lo último ha sido un alta, una subsanación o una anulación).



Digamos que tenemos una pantalla que muestra todos los registros de facturación dedicada a posibles inspecciones. Desde esa pantalla puedes buscar una fcatura y deberías ver su "historial" y su estado actual (todas sus operacion o registros de facturación); La mayoría aparecerán 1 vez como Alta aceptada, pero también podrás encontrar un Alta + Baja o Alta + Modificacion + Modificación + Baja,...

Y tal como pone la documentación se debe poder ver o descargar el registro de facturación (XML), por eso lo guardamos tal cual en un campo.
No se si me he perdido algo, pero si le meto una huella incorrecta en el encadenamiento del registro anterior se lo traga sin error. ¿Es esto normal?.
  #130  
Antiguo 12-02-2025
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.435
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por DarkDudae Ver Mensaje
Con el “registro de facturación” en XML te refieres a la respuesta que devuelve Hacienda o a una suerte de “Factura Electrónica” con los metadatos de la factura?
El registro de facturación es el fichero XML que debemos generar para cada factura (en realidad uno para cada alta, modificación o anulación). Si estamos en Verifactu, ese fichero/XML se envía, si estamos en NO-Verifactu, ese XML se firma y se guarda.
En cualquier momento esos XML se deen poder acceder y descargar.

https://sede.agenciatributaria.gob.e...generales.html
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
  #131  
Antiguo 12-02-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
El registro de facturación es el fichero XML que debemos generar para cada factura (en realidad uno para cada alta, modificación o anulación). Si estamos en Verifactu, ese fichero/XML se envía, si estamos en NO-Verifactu, ese XML se firma y se guarda.
En cualquier momento esos XML se deen poder acceder y descargar.

https://sede.agenciatributaria.gob.e...generales.html
bueno en el caso de verifactu en ese xml de envio no ira solamente 1 factura, pueden ir docenas.

Pienso que lo ideal a parte de quizas guardarlo en disco en una carpeta, con un nombre serializado, seria incluirlo en una tabla con un codigo y desde la factura(s) enlazarlo, con dos campos binarios, uno para el envio y otro la respuesta.

Saludos !
  #132  
Antiguo 12-02-2025
Avatar de DarkDudae
DarkDudae DarkDudae is offline
Miembro
 
Registrado: abr 2006
Posts: 177
Poder: 21
DarkDudae Va por buen camino
Cita:
Empezado por seccion_31 Ver Mensaje
bueno en el caso de verifactu en ese xml de envio no ira solamente 1 factura, pueden ir docenas.

Pienso que lo ideal a parte de quizas guardarlo en disco en una carpeta, con un nombre serializado, seria incluirlo en una tabla con un codigo y desde la factura(s) enlazarlo, con dos campos binarios, uno para el envio y otro la respuesta.

Saludos !
Es justo como lo estoy planteando yo en mi sistema.

Tengo una tabla llamada: verifactu_logcomunicaciones con la siguiente estructura:

Código:
ID (Autonumérico Entero)
FechaHora (TIMESTAMP)
XMLEnvio (BLOB comprimido con COMPRESS de MySQL)
XMLRespuesta (BLOB comprimido con COMPRESS de MySQL)
CSVRespuesta (VARCHAR)
Como al hacer un envío nos devuelve un CSV, y este CSV yo lo guardo en la tabla verifactu_registrofacturas cuando hago un envío, pues simplemente relaciono esos dos campos y ya tengo el XML de envío y de recepción de cada una de las facturas a nivel individual y/o colectivo.
__________________
El recuerdo es la prisión en la que el alma sueña pasado, cuando no vive el presente, ni quiere un futuro.
  #133  
Antiguo 12-02-2025
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 862
Poder: 3
bmfranky Va por buen camino
Cita:
Empezado por seccion_31 Ver Mensaje
bueno en el caso de verifactu en ese xml de envio no ira solamente 1 factura, pueden ir docenas.

Pienso que lo ideal a parte de quizas guardarlo en disco en una carpeta, con un nombre serializado, seria incluirlo en una tabla con un codigo y desde la factura(s) enlazarlo, con dos campos binarios, uno para el envio y otro la respuesta.

Saludos !
Hola, pero puedes perfectamente guardar solo el XML de la factura, no hace faltya que sea del envio completo, es mas lo que se guarda en el no verifactu es exactamente eso , solo el nodo RegistroAlta, por ejemplo.
Código:
<sum1:RegistroAlta xmlns:sum1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
    <sum1:IDVersion>1.0</sum1:IDVersion>
    <sum1:IDFactura>
        <sum1:IDEmisorFactura>89890001K</sum1:IDEmisorFactura>
        <sum1:NumSerieFactura>12345678-G66</sum1:NumSerieFactura>
        <sum1:FechaExpedicionFactura>03-02-2025</sum1:FechaExpedicionFactura>
    </sum1:IDFactura>
    <sum1:NombreRazonEmisor>certificado uno telematicas</sum1:NombreRazonEmisor>
    <sum1:Subsanacion>N</sum1:Subsanacion>
    <sum1:RechazoPrevio>N</sum1:RechazoPrevio>
    <sum1:TipoFactura>R3</sum1:TipoFactura>
    <sum1:TipoRectificativa>I</sum1:TipoRectificativa>
    <sum1:FacturasRectificadas>
        <sum1:IDFacturaRectificada>
            <sum1:IDEmisorFactura>89890001K</sum1:IDEmisorFactura>
            <sum1:NumSerieFactura>12345600-G66</sum1:NumSerieFactura>
            <sum1:FechaExpedicionFactura>01-04-2024</sum1:FechaExpedicionFactura>
        </sum1:IDFacturaRectificada>
    </sum1:FacturasRectificadas>
    <sum1:FechaOperacion>03-02-2025</sum1:FechaOperacion>
    <sum1:DescripcionOperacion>fecha entrega</sum1:DescripcionOperacion>
    <sum1:Destinatarios>
        <sum1:IDDestinatario>
            <sum1:NombreRazon>certificado dos telematicas</sum1:NombreRazon>
            <sum1:NIF>89890002E</sum1:NIF>
        </sum1:IDDestinatario>
    </sum1:Destinatarios>
    <sum1:Desglose>
        <sum1:DetalleDesglose>
            <sum1:ClaveRegimen>01</sum1:ClaveRegimen>
            <sum1:CalificacionOperacion>S1</sum1:CalificacionOperacion>
            <sum1:TipoImpositivo>4</sum1:TipoImpositivo>
            <sum1:BaseImponibleOimporteNoSujeto>10</sum1:BaseImponibleOimporteNoSujeto>
            <sum1:CuotaRepercutida>0.4</sum1:CuotaRepercutida>
        </sum1:DetalleDesglose>
        <sum1:DetalleDesglose>
            <sum1:ClaveRegimen>01</sum1:ClaveRegimen>
            <sum1:CalificacionOperacion>S1</sum1:CalificacionOperacion>
            <sum1:TipoImpositivo>21</sum1:TipoImpositivo>
            <sum1:BaseImponibleOimporteNoSujeto>100</sum1:BaseImponibleOimporteNoSujeto>
            <sum1:CuotaRepercutida>21</sum1:CuotaRepercutida>
        </sum1:DetalleDesglose>
        <sum1:DetalleDesglose>
            <sum1:ClaveRegimen>05</sum1:ClaveRegimen>
            <sum1:CalificacionOperacion>S1</sum1:CalificacionOperacion>
            <sum1:TipoImpositivo>10</sum1:TipoImpositivo>
            <sum1:BaseImponibleOimporteNoSujeto>100</sum1:BaseImponibleOimporteNoSujeto>
            <sum1:CuotaRepercutida>10</sum1:CuotaRepercutida>
        </sum1:DetalleDesglose>
    </sum1:Desglose>
    <sum1:CuotaTotal>41.4</sum1:CuotaTotal>
    <sum1:ImporteTotal>241.4</sum1:ImporteTotal>
    <sum1:Encadenamiento>
        <sum1:RegistroAnterior>
            <sum1:IDEmisorFactura>89890001K</sum1:IDEmisorFactura>
            <sum1:NumSerieFactura>12345677-G33</sum1:NumSerieFactura>
            <sum1:FechaExpedicionFactura>15-04-2024</sum1:FechaExpedicionFactura>
            <sum1:Huella>C9AF4AF1EF5EBBA700350DE3EEF12C2D355C56AC56F13DB2A25E0031BD2B7ED5</sum1:Huella>
        </sum1:RegistroAnterior>
    </sum1:Encadenamiento>
    <sum1:SistemaInformatico>
        <sum1:NombreRazon>CERTIFICADO UNO TELEMATICAS</sum1:NombreRazon>
        <sum1:NIF>89890001K</sum1:NIF>
        <sum1:NombreSistemaInformatico>NombreSistemaInformatico</sum1:NombreSistemaInformatico>
        <sum1:IdSistemaInformatico>77</sum1:IdSistemaInformatico>
        <sum1:Version>1.0.03</sum1:Version>
        <sum1:NumeroInstalacion>383</sum1:NumeroInstalacion>
        <sum1:TipoUsoPosibleSoloVerifactu>S</sum1:TipoUsoPosibleSoloVerifactu>
        <sum1:TipoUsoPosibleMultiOT>N</sum1:TipoUsoPosibleMultiOT>
        <sum1:IndicadorMultiplesOT>N</sum1:IndicadorMultiplesOT>
    </sum1:SistemaInformatico>
    <sum1:FechaHoraHusoGenRegistro>2025-02-03T14:30:00+01:00</sum1:FechaHoraHusoGenRegistro>
    <sum1:TipoHuella>01</sum1:TipoHuella>
    <sum1:Huella>FF954378B64ED331A9B2366AD317D86E9DEC1716B12DD0ACCB172A6DC4C105AA</sum1:Huella>


Este es el ejemplo de la aeat.


Y de la respuesta lo mismo , puedes deserializar los nodosde la respuesta por separado y almacenar solo el resultado de ese nodo en particular.
Seleccionas el nodo correspondiente a tu factura.
Código:
<RespuestaLinea>
<IDFactura>
<IDEmisorFactura>89890001K</IDEmisorFactura>
<NumSerieFactura>12345677-G33</NumSerieFactura>
<FechaExpedicionFactura>15-04-2024</FechaExpedicionFactura>
</IDFactura>
<EstadoRegistro>AceptadoConErrores</EstadoRegistro>
<CodigoErrorRegistro>2004</CodigoErrorRegistro>
<DescripcionErrorRegistro>El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de: 120 segundos.</DescripcionErrorRegistro>
</RespuestaLinea>
__________________
Uno se alegra de ser útil. (Isaac Asimov)
  #134  
Antiguo 13-02-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
Cita:
Empezado por bmfranky Ver Mensaje
Hola, pero puedes perfectamente guardar solo el XML de la factura, no hace faltya que sea del envio completo, es mas lo que se guarda en el no verifactu es exactamente eso , solo el nodo RegistroAlta, por ejemplo.
Código:
<sum1:RegistroAlta xmlns:sum1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
    <sum1:IDVersion>1.0</sum1:IDVersion>
    <sum1:IDFactura>
        <sum1:IDEmisorFactura>89890001K</sum1:IDEmisorFactura>
        <sum1:NumSerieFactura>12345678-G66</sum1:NumSerieFactura>
        <sum1:FechaExpedicionFactura>03-02-2025</sum1:FechaExpedicionFactura>
    </sum1:IDFactura>
    <sum1:NombreRazonEmisor>certificado uno telematicas</sum1:NombreRazonEmisor>
    <sum1:Subsanacion>N</sum1:Subsanacion>
    <sum1:RechazoPrevio>N</sum1:RechazoPrevio>
    <sum1:TipoFactura>R3</sum1:TipoFactura>
    <sum1:TipoRectificativa>I</sum1:TipoRectificativa>
    <sum1:FacturasRectificadas>
        <sum1:IDFacturaRectificada>
            <sum1:IDEmisorFactura>89890001K</sum1:IDEmisorFactura>
            <sum1:NumSerieFactura>12345600-G66</sum1:NumSerieFactura>
            <sum1:FechaExpedicionFactura>01-04-2024</sum1:FechaExpedicionFactura>
        </sum1:IDFacturaRectificada>
    </sum1:FacturasRectificadas>
    <sum1:FechaOperacion>03-02-2025</sum1:FechaOperacion>
    <sum1:DescripcionOperacion>fecha entrega</sum1:DescripcionOperacion>
    <sum1:Destinatarios>
        <sum1:IDDestinatario>
            <sum1:NombreRazon>certificado dos telematicas</sum1:NombreRazon>
            <sum1:NIF>89890002E</sum1:NIF>
        </sum1:IDDestinatario>
    </sum1:Destinatarios>
    <sum1:Desglose>
        <sum1:DetalleDesglose>
            <sum1:ClaveRegimen>01</sum1:ClaveRegimen>
            <sum1:CalificacionOperacion>S1</sum1:CalificacionOperacion>
            <sum1:TipoImpositivo>4</sum1:TipoImpositivo>
            <sum1:BaseImponibleOimporteNoSujeto>10</sum1:BaseImponibleOimporteNoSujeto>
            <sum1:CuotaRepercutida>0.4</sum1:CuotaRepercutida>
        </sum1:DetalleDesglose>
        <sum1:DetalleDesglose>
            <sum1:ClaveRegimen>01</sum1:ClaveRegimen>
            <sum1:CalificacionOperacion>S1</sum1:CalificacionOperacion>
            <sum1:TipoImpositivo>21</sum1:TipoImpositivo>
            <sum1:BaseImponibleOimporteNoSujeto>100</sum1:BaseImponibleOimporteNoSujeto>
            <sum1:CuotaRepercutida>21</sum1:CuotaRepercutida>
        </sum1:DetalleDesglose>
        <sum1:DetalleDesglose>
            <sum1:ClaveRegimen>05</sum1:ClaveRegimen>
            <sum1:CalificacionOperacion>S1</sum1:CalificacionOperacion>
            <sum1:TipoImpositivo>10</sum1:TipoImpositivo>
            <sum1:BaseImponibleOimporteNoSujeto>100</sum1:BaseImponibleOimporteNoSujeto>
            <sum1:CuotaRepercutida>10</sum1:CuotaRepercutida>
        </sum1:DetalleDesglose>
    </sum1:Desglose>
    <sum1:CuotaTotal>41.4</sum1:CuotaTotal>
    <sum1:ImporteTotal>241.4</sum1:ImporteTotal>
    <sum1:Encadenamiento>
        <sum1:RegistroAnterior>
            <sum1:IDEmisorFactura>89890001K</sum1:IDEmisorFactura>
            <sum1:NumSerieFactura>12345677-G33</sum1:NumSerieFactura>
            <sum1:FechaExpedicionFactura>15-04-2024</sum1:FechaExpedicionFactura>
            <sum1:Huella>C9AF4AF1EF5EBBA700350DE3EEF12C2D355C56AC56F13DB2A25E0031BD2B7ED5</sum1:Huella>
        </sum1:RegistroAnterior>
    </sum1:Encadenamiento>
    <sum1:SistemaInformatico>
        <sum1:NombreRazon>CERTIFICADO UNO TELEMATICAS</sum1:NombreRazon>
        <sum1:NIF>89890001K</sum1:NIF>
        <sum1:NombreSistemaInformatico>NombreSistemaInformatico</sum1:NombreSistemaInformatico>
        <sum1:IdSistemaInformatico>77</sum1:IdSistemaInformatico>
        <sum1:Version>1.0.03</sum1:Version>
        <sum1:NumeroInstalacion>383</sum1:NumeroInstalacion>
        <sum1:TipoUsoPosibleSoloVerifactu>S</sum1:TipoUsoPosibleSoloVerifactu>
        <sum1:TipoUsoPosibleMultiOT>N</sum1:TipoUsoPosibleMultiOT>
        <sum1:IndicadorMultiplesOT>N</sum1:IndicadorMultiplesOT>
    </sum1:SistemaInformatico>
    <sum1:FechaHoraHusoGenRegistro>2025-02-03T14:30:00+01:00</sum1:FechaHoraHusoGenRegistro>
    <sum1:TipoHuella>01</sum1:TipoHuella>
    <sum1:Huella>FF954378B64ED331A9B2366AD317D86E9DEC1716B12DD0ACCB172A6DC4C105AA</sum1:Huella>


Este es el ejemplo de la aeat.


Y de la respuesta lo mismo , puedes deserializar los nodosde la respuesta por separado y almacenar solo el resultado de ese nodo en particular.
Seleccionas el nodo correspondiente a tu factura.
Código:
<RespuestaLinea>
<IDFactura>
<IDEmisorFactura>89890001K</IDEmisorFactura>
<NumSerieFactura>12345677-G33</NumSerieFactura>
<FechaExpedicionFactura>15-04-2024</FechaExpedicionFactura>
</IDFactura>
<EstadoRegistro>AceptadoConErrores</EstadoRegistro>
<CodigoErrorRegistro>2004</CodigoErrorRegistro>
<DescripcionErrorRegistro>El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de: 120 segundos.</DescripcionErrorRegistro>
</RespuestaLinea>
Buenos dias,

Tecnicamente me gusta la idea, si x favor, me cedes el código para hacerlo lo incluyo en el componente, y que el usuario seleccione lo que desea archivar.

El componente ya no necesita de una aplicacion servidora, funciona bajo DLL, e incorpora bastantes cambios, incluyendo una demo muy mejorada. El fin de semana lo publicare. Las aplicaciones ya desarrolladas usandolo no van a necesitar cambio alguno.

Saludos !
  #135  
Antiguo 13-02-2025
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.435
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por seccion_31 Ver Mensaje
bueno en el caso de verifactu en ese xml de envio no ira solamente 1 factura, pueden ir docenas.

Ojo que son cosas diferentes.
RegistroDeFacturación: Nos referimos a la información referente a 1 factura (en formato XML), que va firmada o no dependiendo si estamos en Verifactu o no-verifactu.
Otra cosa es el envío (sólo en la modalidad verifactu). en el envío cómo han dicho pueden ir 1..1000 registros de facturación incluídos.

El RegistrodeFacturación es el que hay que guardar de forma obligatoria y debe ser accesible y descargable.

La información del envío, no es obligatorio guardarla, y cada uno puede decidir cómo y qué guardar (para luego gestionar toda esa lógica desde el programa). Si guardar todo el paquete (con las 1000 fcaturas), si guardar la respuesta en el formato que la da la AEAT, si guardar sólo los códigos,...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
  #136  
Antiguo 13-02-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Ojo que son cosas diferentes.
RegistroDeFacturación: Nos referimos a la información referente a 1 factura (en formato XML), que va firmada o no dependiendo si estamos en Verifactu o no-verifactu.
Otra cosa es el envío (sólo en la modalidad verifactu). en el envío cómo han dicho pueden ir 1..1000 registros de facturación incluídos.

El RegistrodeFacturación es el que hay que guardar de forma obligatoria y debe ser accesible y descargable.

La información del envío, no es obligatorio guardarla, y cada uno puede decidir cómo y qué guardar (para luego gestionar toda esa lógica desde el programa). Si guardar todo el paquete (con las 1000 fcaturas), si guardar la respuesta en el formato que la da la AEAT, si guardar sólo los códigos,...
Opcion 1:
Vale, sin intencion de hacerme el pesado, en tu opinion, (porque me acabo de enterar ahora) si guardamos todo el envio, asociado a cada factura, ¿estariamos cumpliendo? porque tecnicamente la informacion del registroDeFacturacion se encuentra alli. Encontrarla es tan facil como hacer una busqueda de texto.

Opcion 2:
Me gustaria poder sacar esa informacion del XML de envio, a ver si me podeis hacer llegar ese codigo ( bmfranky ) para incorporarlo.

¿Puedes por favor neftali resumir brevemente que es necesario guardar y disponer en un sistema verifactu? porque en el foro la informacion esta muy dispersa, para ver que le falta al componente y como incorporarlo.

gracias !
  #137  
Antiguo 13-02-2025
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.435
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Extraído directamente de la documentación de la AEAT (cuestiones generales):
Capacidad de exportar los registros

Todos los sistemas informáticos de facturación producidos y comercializados deberán tener capacidad de exportar y transmitir en línea los registros de facturación. Cuando la modalidad elegida sea NO VERI* FACTU, en caso de que se requieran por parte de la Administración Tributaria dichos registros, los mismos podrán ser directamente enviados a través de un procedimiento simplificado y automatizado.


La transmisión:
Verifactu: La transmisión es inmediata
No-verifactu: deben implementar la transmisión de registros bajo requrimiento.


Capacidad de exportar.
Yo creo que no deja dudas, desde el programa hay que poder exportar un registro de facturación.
El cómo lo hagamamos ya es cuestión de cada uno.

Digamos que en nuestro programa tenemos FACTURAS, para cada factura sabemos que hay 1..N REGISTROSDEFACTURACION (alta, subsanación, anuulación).
Nosotros hemos barajado varias opciones:

* Desde la factura exportar todos los registros asociados a esa factura (1..N)
* Desde la facttura, acceder a sus registros de facturación (1..N) -es como ver el historial de las operaciones sobre esa factura- y desde ahí poder exportarlos 1 a 1.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
  #138  
Antiguo 13-02-2025
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.435
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por seccion_31 Ver Mensaje
Opcion 1:
Vale, sin intencion de hacerme el pesado, en tu opinion, (porque me acabo de enterar ahora) si guardamos todo el envio, asociado a cada factura, ¿estariamos cumpliendo? porque tecnicamente la informacion del registroDeFacturacion se encuentra alli. Encontrarla es tan facil como hacer una busqueda de texto.

Opcion 2:
Me gustaria poder sacar esa informacion del XML de envio, a ver si me podeis hacer llegar ese codigo ( bmfranky ) para incorporarlo.

Yo creo que es más sencillo enfocarlo a cada registro de facturación que enfocarlo al envío.
Al grabar la factura DEBES generar el registro, por lo tanto creo que en ese momento es el punto fácil para guardarlo.

También puedes enfocarlo al envío, pero creo que es más complejo a la hora de recuperar los registros.
Pienso en que si has hecho varias operaciones sobre una factura (ALTA, SUBSANACION, ANULACION) si queres obtener todo la información de esa factura (y sus registros de facturación) vas a tener que ir navegando por diferentes envíos e ir extrayendo de cada uno de ellos el registro de facturación correspondiente a esa operación. Se puede hacer, pero creo que es más complejo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
  #139  
Antiguo 13-02-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Yo creo que es más sencillo enfocarlo a cada registro de facturación que enfocarlo al envío.
Al grabar la factura DEBES generar el registro, por lo tanto creo que en ese momento es el punto fácil para guardarlo.

También puedes enfocarlo al envío, pero creo que es más complejo a la hora de recuperar los registros.
Pienso en que si has hecho varias operaciones sobre una factura (ALTA, SUBSANACION, ANULACION) si queres obtener todo la información de esa factura (y sus registros de facturación) vas a tener que ir navegando por diferentes envíos e ir extrayendo de cada uno de ellos el registro de facturación correspondiente a esa operación. Se puede hacer, pero creo que es más complejo.
Al grabar la factura, la coloco en el objeto de la AEAT y no puedo o no se, recuperar ese XML parcial hasta su envio.

El plan desde mi ignorancia es enviar, guardar el XML completo y mediante alguna funcion extraer cada registrodefacturacion procesado para las facturas aceptadas. Si alguien tiene ese codigo para extraer una seccion del XML dado el numSerie de la factura, me evitaria trabajo de investigacion, o que se quedara pendiente.

Con Darkduae estamos mejorando la demo y el parseo de la respuesta de la AEAT para cubrir mas casos.
  #140  
Antiguo 13-02-2025
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.435
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por seccion_31 Ver Mensaje
Al grabar la factura, la coloco en el objeto de la AEAT y no puedo o no se, recuperar ese XML parcial hasta su envio.

Creo que hay varios mensajes donde está cómo hacerlo.
Por ejemplo este, genera el registro con SOAP y en un momento dado extrae el XML del registro de facturación.
https://www.clubdelphi.com/foros/sho...postcount=1428

Código Delphi [-]
...
 try
   newNode := Factura.RegistroFacturacion.ObjectToSOAP( ARootNode, ARootNode, MOPToSoapDomConvert, 'RegistroFacturacionType',
   Swdsl,'T',[ocoDontPrefixNode,ocoDontPutTypeAttr], RefId  ); //ocoDontPrefixNode

   XML.DocumentElement := ARootNode;
   XML.XML.SaveToFile('RegistroFacturacion.xml',TEncoding.UTF8);
   XML.Active := False;

 Except
   On E : Exception do Begin
    Showmessage(E.Message);
    XML.DocumentElement := ARootNode;
    XML.XML.SaveToFile('RegistroFacturacionError.xml',TEncoding.UTF8);
    XML.Active := False;
 End;
 ...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Tema Cerrado



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Verifactu o por requerimiento (no-verifactu) ¿decisión del usuario? Maska10 Temas legales 2 07-12-2024 12:34:47
Demo de una applicación para una estación de enfermera con RAD Studio AgustinOrtu La Taberna 1 21-07-2015 17:41:35
Demo Delphi, EMail Caral Internet 1 19-12-2006 00:37:56
Demo de delphi 2005 mazinger Varios 2 18-12-2004 09:23:09
El Rave que viene con Delphi es una Demo? apicito Impresión 0 04-06-2003 11:33:36


La franja horaria es GMT +2. Ahora son las 15:34:49.


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