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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-07-2025
edinru edinru is offline
Miembro
 
Registrado: may 2010
Posts: 18
Poder: 0
edinru Va por buen camino
ERROR 2004 El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del s

Estoy teniendo problemas con el envío del soap-xml a verifactu.



Estoy haciendo adaptaciones, viendo el de seccion31, pero para usar en delphi 12 con httprio, como una aplicacion de consola que se lance,….

Todo me funciona “mas o menos” bien, ya conecta con verifactu, devuelve los errores.

Pero hay un error que me tiene loco, aunque verifactu dice (en su respuesta soap) que lo admite pero con warning.

Es la fecha de huso, que por mas que le doy vueltas no consigo enviarla con el valor correcto.

He analizado parte del codigo de seccion31, y hay una cosa en particular que me resulta curiosa:



ESTE ES CODIGO DE SECCION31

Código Delphi [-]
    // XSDatetime
    ahora:=Now;
    XSDatetime := TXSDatetime.Create;
    XSDatetime.AsDateTime := ahora;
    XSDatetime.UseZeroMilliseconds := False;
    XSDatetime.Millisecond := 0;
    XSDatetime.UseZeroMilliseconds := False;
    XSDatetime.FractionalSeconds := 0;

        Factura.RegistroAlta.FechaHoraHusoGenRegistro     :=XSDatetime; // Formato: YYYY-MM-DDThh:mm:ssTZD (ej: 2024-01-01T19:20:30+01:00) (ISO 8601)

str:=Factura.FechaHoraHusoGenRegistro.NativeToXS;


        huellaSinCodificar:=GenerarHuella_alta_RegistroVerifactu(sesion,indice,Factura.RegistroAlta, false);




function GenerarHuella_alta_RegistroVerifactu( sesion, indice:integer; alta:RegistroFacturacionAltaType; devuelveHuella:boolean):string;
var
   CadenaTemporalHuella,huellaAnterior:string;
   indiceAnterior:integer;
begin
    huellaAnterior:=sesiones[sesion].facturas[  getIndexHuellaAnterior(sesion, indice) ].huellaAnterior;

    CadenaTemporalHuella:= 'IDEmisorFactura='+         alta.IDFactura.IDEmisorFactura+'&'+
                           'NumSerieFactura='+         alta.IDFactura.NumSerieFactura+'&'+
                           'FechaExpedicionFactura='+  alta.IDFactura.FechaExpedicionFactura+'&'+
                           'TipoFactura='+             TipoFacturaVerifactuToString( alta.TipoFactura )+'&'+
                           'CuotaTotal='+              alta.CuotaTotal+'&'+
                           'ImporteTotal='+            alta.ImporteTotal+'&'+
                           'Huella='+                  huellaAnterior+'&'+
                           'FechaHoraHusoGenRegistro='+alta.FechaHoraHusoGenRegistro.NativeToXS;

AQUI TERMINA CODIGO DE SECCION31

Esta generando la huella con alta.FechaHoraHusoGenRegistro.NativeToXS; es decir

El método NativeToXS convierte el valor de fecha y hora de formato nativo de Delphi (TDateTime) a una cadena en formato ISO 8601 extendido (por ejemplo: 2024-07-25T14:48:32+02:00), que es el formato requerido por los XML de Verifactu/SII.
Si utilizo ese criterio

Código:
2025-07-25 12:41:25 TPreparadorFacturas.IDEmisorFactura=XXXF&NumSerieFactura=VERI-9017&FechaExpedicionFactura=25-07-2025&TipoFactura=F1&CuotaTotal=21.00&ImporteTotal=121.00&Huella=&FechaHoraHusoGenRegistro=2025-07-25T12:41:25+02:00

Siempre me da error

Código:
2025-07-25 12:41:26   C¢digoErrorRegistro = 2000
2025-07-25 12:41:26   DescripcionErrorRegistro = El c lculo de la huella suministrada es incorrecta.
Datos de entrada c lculo huella:
Código:
IDEmisorFactura=XXXF&NumSerieFactura=VERI-9017&FechaExpedicionFactura=25-07-2025&TipoFactura=F1&CuotaTotal=21.00&ImporteTotal=121.00&Huella=&FechaHoraHusoGenRegistro=2025-07-25T12:41:25.000Z
 Huella calculada: E5870096D057B3D1A10B05FB410DEFBB82FC6FFE89AAF38DB56A3A3A8F35BF15
2025-07-25 12:41:26 Proceso finalizado

Fijate en su cadena, ellos han calculado con hora ZULU, pero no la real ZULU sino una que se han inventado con la hora local y la Z al final

Total, que les hago caso y les envío la fechahuso en “su formato ZULU” EN LA GENERACION DE LA HUELLA, EN EL XML TIENE QUE IR EN UTC

Ya queda resuelto el error 2000, lo que entiendo que la huella esta ya bien (observa que la he tenido que enviar en un formato distinto al de seccion31)

Pero me devuelven el siguiente mensaje

Código:
2025-07-25 12:45:41 TPreparadorFacturas.IDEmisorFactura=XXXF&NumSerieFactura=VERI-9018&FechaExpedicionFactura=25-07-2025&TipoFactura=F1&CuotaTotal=21.00&ImporteTotal=121.00&Huella=&FechaHoraHusoGenRegistro=2025-07-25T12:45:41.000Z
2025-07-25 12:45:41 TPreparadorFacturas.35FEC3F257B4C58873C9D448E7D173C3BFBA7BE0E8975C56EDBF3A99BDE39C5C
2025-07-25 12:45:41 EstadoEnvio = ParcialmenteCorrecto
2025-07-25 12:45:41 Factura [VERI-9018 | 25-07-2025]: INCORRECTA (estado AceptadoConErrores).
2025-07-25 12:45:41   C¢digoErrorRegistro = 2004
2025-07-25 12:45:41   DescripcionErrorRegistro = El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admiti‚ndose un margen de error de: 240 segundos.
2025-07-25 12:45:41 Proceso finalizado

DUDAS: ¿como es posible que a seccion31 le este funcionando correcto y acepten la fechaHuso (en la generacion de la huella) con UTC? ¿Será algo del SOAP que tenga que definirle como generico y yo no lo este haciendo?

DUDAS: no hay ningun margen excedido de 240 segundos, tarda menos de un segundo en hacerlo todo, fijate en las horas del log.

IMPORTANTE: COMO ESTOY REALIZANDO MIL PRUEBAS SOBRE LO MISMO, REUTILIZO LA FACTURA, LE INCREMENTO UN NUMERO Y CAMBIO EL NUMERO DE INSTALACION, LE PONGO CUALQUIER COSA DISTINTA, Y LA HUELLA ANTERIOR SIEMPRE LA DEJO VACIA (SE SUPONE QUE ES LA PRIMERA)


Por favor, a ver si algún alma caritativa se apiada.

Gracias de todas formas

Última edición por Neftali [Germán.Estévez] fecha: 28-07-2025 a las 10:13:53.
Responder Con Cita
 



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
Error 2004 en VeriFactu: FechaHoraHusoGenRegistro fuera de sincronización francescofera Errores (relacionados con al AEAT) 10 01-07-2025 12:53:41
campo ID debe tener un valor FGarcia Firebird e Interbase 8 01-10-2008 22:05:00
Comparar Fecha Actual con Campo Zakio14 Firebird e Interbase 2 10-04-2008 03:03:32
Como insertar en un campo mediante un trigger la fecha actual del servidor kovaski Firebird e Interbase 2 04-10-2006 16:39:33
Comparar una fecha de n campo date contra fecha actual amadis SQL 2 27-06-2005 21:37:41


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


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