Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Errores (relacionados con al AEAT) (https://www.clubdelphi.com/foros/forumdisplay.php?f=78)
-   -   Error FechaHoraHusoGenRegistro al enviar factura (https://www.clubdelphi.com/foros/showthread.php?t=97445)

bmfranky 22-04-2025 09:13:14

Cita:

Empezado por rci (Mensaje 563922)
Muchas gracias por la respuesta FelixDL
De esta forma se obtiene directamente una cadena, pero trabajando con objetos tengo el mismo problema

Hola, @rci , prueba a crear desde esa cadena el System.DateTime, y se lo pasas al componente a ver si soluciona tu problema.

rci 22-04-2025 09:57:18

Cita:

Empezado por bmfranky (Mensaje 563924)
Hola, @rci , prueba a crear desde esa cadena el System.DateTime, y se lo pasas al componente a ver si soluciona tu problema.

Muchas gracias bmfranky por la respuesta. pero el tema es el mismo. la transformación de string a DateTime depende de la configuración del huso horario del ordenador donde se ejecuta la conversión.

bmfranky 22-04-2025 14:19:28

Cita:

Empezado por rci (Mensaje 563926)
Muchas gracias bmfranky por la respuesta. pero el tema es el mismo. la transformación de string a DateTime depende de la configuración del huso horario del ordenador donde se ejecuta la conversión.

Pues entonces la unica solucion, la que has tomado, no permitir diferentes usos horarios, en una misma instalacion.

rafa1963 06-05-2025 12:05:35

Error FechaHoraHusoGenRegistro al enviar factura
 
Buenas tardes compañeros al intentar enviar unas facturas de prueba me lanza este error .A202500495 AceptadoConErrores 2004 El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de: 240 segundos.
He comprobado mil veces la hora actual del sistema y está todo correcto.

me podeis echar una manita ????.
Gracias

gcqZW 06-05-2025 12:10:21

En principio esos errores no hay que subsanarlos, si no pones que valor envías poco te podemos ayudar. Por lo pronto fíjate a ver el tema de zona horaria, si no me equivoco ahora estamos en +2.

rafa1963 06-05-2025 12:28:30

Respuesta a gcqZW
 
Gracias gcqZW, comprobaré la zona horaria.

rafa1963 06-05-2025 12:44:57

Resuelto
 
He Activado la opción para Establecer la zona horaria automáticamente y ya está solucionado.
Gracias compañero gcqZW por tu ayuda.
.

Neftali [Germán.Estévez] 06-05-2025 12:53:02

Voy a unirlo con el tema ya existente sobre esto.
Recordad realizar búsquedas antes de crear nuevas preguntas, para no repetir temas.

Gracias.

VJSoftware 07-05-2025 13:34:18

Cita:

Empezado por rci (Mensaje 563873)
Hola bmfranky, esto es exactamente lo que hago ;)
Pero esto solo crea un DateTime indicando que DateTimeKind es local, luego cuando el serializador o "quien" sea coge ese DateTime para obtener la fecha hora real con el huso, utiliza la configuración de la zona horaria del ordenador donde se ejecuta. y si no es el mismo que el que generó el registro de facturación, pues no indica la misma hora/huso.



Si hago esto funcionaria pero no cumpliría la ley :) Generar el registro y la huella se tiene que hacer al emitir la factura y no al enviar.

Pero gracias de todas formas.

De momento he prohibido que haya configuraciones de zona horaria distintas en todos los ordenadores que ejecutan el programa con la misma base de datos.
Si no encuentro otra solución lo dejaré así.

Saludos

Tengo un software de TPV instalado en una tienda que hace, en los días grandes, alrededor de 500 tickets. Paso a comentaros mi problemática.
Parto de estas premisas que me ha parecido leer:
1.- Hay que mandar los registros de facturación cada 60 segundos o cada 1000 registros, lo que antes suceda.
2.- No se pueden hacer nuevos envíos si no han pasado 240 segundos desde el envío anterior. este mensaje lo he recibido a veces como respuesta de la AEAT y es absolutamente incompatible con el primero.

Y ahora mis preguntas
¿Si voy haciendo tickets y generando a la vez sus RF hay que estar pendiente de enviarlos antes de que pasen los 60 segundos?
Si fuera así entonces si hago un ticket ahora con su RF y lo envío y viene otro ticket y lo quiero enviar, no me va a dejar porque no han pasado los 240 segundos desde el envío anterior......
¿Puedo hacer los tickets y después, cuando se vayan a enviar, generar los RF por ejemplo al final del día?
¿Puedo hacer los RF a futuro?, me explico, si ahora son las 12:00:00 y hago ahora los RF de 200 tickets, puedo ponerles como fechahorahuso las 12:15:00 y cuando llegue esa hora realmente, enviarlos?

Gracias por las respuestas de antemano

gcqZW 07-05-2025 13:37:06

No, el problema viene con el QR, si has impreso el ticket has tenido que enviar el RF a la AEAT previamente.

VJSoftware 07-05-2025 13:43:59

Cita:

Empezado por gcqZW (Mensaje 564317)
No, el problema viene con el QR, si has impreso el ticket has tenido que enviar el RF a la AEAT previamente.

Pero no es así. Si te das cuenta, en el QR solamente interviene la fecha, no la hora...
Entonces, yo puedo imprimir un ticket con su QR perfectamente pero, si el cliente trata de verificarlo en ese instante, le va a decir que aún no está en hacienda. Quizás dentro de 10 minutos ya lo mande...
Aquí el QR no influye para nada.

rci 07-05-2025 13:52:29

Cita:

Empezado por VJSoftware (Mensaje 564316)
1.- Hay que mandar los registros de facturación cada 60 segundos o cada 1000 registros, lo que antes suceda.

Este valor de 60 segundos, puede variar en cada envío (de momento no lo hace) pero la normativa dice que de cada respuesta de un envío debemos leer el nuevo tiempo de espera.

Cita:

Empezado por VJSoftware (Mensaje 564316)
2.- No se pueden hacer nuevos envíos si no han pasado 240 segundos desde el envío anterior. este mensaje lo he recibido a veces como respuesta de la AEAT y es absolutamente incompatible con el primero.

NO lo has entendido bien. El error te dice que han pasado MAS de 240 segundos desde que generaste el registro de facturación, por lo tanto que lo estás enviando TARDE.


Cita:

Empezado por VJSoftware (Mensaje 564316)
¿Si voy haciendo tickets y generando a la vez sus RF hay que estar pendiente de enviarlos antes de que pasen los 60 segundos?
Si fuera así entonces si hago un ticket ahora con su RF y lo envío y viene otro ticket y lo quiero enviar, no me va a dejar porque no han pasado los 240 segundos desde el envío anterior......

El SIF tiene que ir haciendo registros de facturación en el momento que emita las facturas y en paralelo se tiene que ir enviando los registros de facturación pendientes de envío, cada cuando toque, siguiendo la normativa del control de flujo, cada X tiempo (normalmente 60 s) o si ya hay 1000 RFs pendientes.


Cita:

Empezado por VJSoftware (Mensaje 564316)
¿Puedo hacer los tickets y después, cuando se vayan a enviar, generar los RF por ejemplo al final del día?

Según la ley NO puedes hacer esto. La ley dice que el registro de facturación se tiene que crear en el momento de emitir la factura.

Cita:

Empezado por VJSoftware (Mensaje 564316)
¿Puedo hacer los RF a futuro?, me explico, si ahora son las 12:00:00 y hago ahora los RF de 200 tickets, puedo ponerles como fechahorahuso las 12:15:00 y cuando llegue esa hora realmente, enviarlos?

Según la ley NO puedes hacer esto. La ley dice que el registro de facturación se tiene que crear en el momento de emitir la factura.

Jarogo08 07-05-2025 13:54:26

Cita:

Empezado por VJSoftware (Mensaje 564316)
Parto de estas premisas que me ha parecido leer:
1.- Hay que mandar los registros de facturación cada 60 segundos o cada 1000 registros, lo que antes suceda.
2.- No se pueden hacer nuevos envíos si no han pasado 240 segundos desde el envío anterior. este mensaje lo he recibido a veces como respuesta de la AEAT y es absolutamente incompatible con el primero.

Y ahora mis preguntas
¿Si voy haciendo tickets y generando a la vez sus RF hay que estar pendiente de enviarlos antes de que pasen los 60 segundos?
Si fuera así entonces si hago un ticket ahora con su RF y lo envío y viene otro ticket y lo quiero enviar, no me va a dejar porque no han pasado los 240 segundos desde el envío anterior......
¿Puedo hacer los tickets y después, cuando se vayan a enviar, generar los RF por ejemplo al final del día?
¿Puedo hacer los RF a futuro?, me explico, si ahora son las 12:00:00 y hago ahora los RF de 200 tickets, puedo ponerles como fechahorahuso las 12:15:00 y cuando llegue esa hora realmente, enviarlos?


-Cuando haces un envío en la respuesta te dice cuando tienes que esperar para hacer el siguiente envío. A mí por ahora siempre me devuelve 60, no 240. La premisa número 2 diría que es falsa

En cuanto a las preguntas...

Si tienes un proceso que salte cada 60 segundos (o los segundos que diga la respuesta del último envío) para revisar si hay algo pendiente de enviar y si lo hay que lo envíe, ya te responde a las 2 primeras preguntas:
Si el proceso salta ahora mismo y no hay nada pendiente vuelve a saltar dentro de 60 segundos. En ese momento va a haber x tickets (los que se hicieron en esos 60 segundos: 0, 1 o 50) y los envía. Dentro de otros 60 segundos volverá a enviar otros X... y así por los siglos de los siglos :D Vamos a suponer que en ese minuto no aparecen 1000 tickets, sino sí que tendrías que mandar antes (nosotros por ahora no contemplamos ese caso, no somos capaces de hacer 1000 documentos en un minuto)
-La tercera pregunta: NO, los RF tienen que crearse y enviarse prácticamente al momento de terminar el ticket, con esos x (60) segundos de margen para el envío (pero no para la creación del RF)
-La cuarta pregunta: NO, lo mismo que la anterior

EDITO: rci ya te lo ha contestado perfectamente!

aleixep 07-05-2025 13:58:56

Hola VJSoftware, la primera premisa es correcta, pero no la segunda.

Como bien mencionas, entre envío y envío deben pasar mínimo 60 segundos (este valor es variable, pues la AEAT especificará en la respuesta el valor exacto), o que haya 1000 registros en cola (en este caso, se ignora el tiempo de espera). Por lo tanto, si se genera un registro y se envía, el próximo grupo de registros no podrá enviarse hasta pasado ese tiempo.

Ahora bien, lo de los 240 segundos es otro tema. Si sale ese error se refiere a que, desde que se ha generado el registro hasta que se ha enviado a la AEAT, han pasado más de 240 segundos. La AEAT quiere que los registros se envíen automáticamente cuando se generan (o con los 60 segundos de espera que hablábamos antes). Por lo tanto, si han pasado más de 240 segundos, la AEAT considera que es un error.

¡Espero que te haya servido para aclarar un poco el tema!

Edito: tanto rci como Jarogo08 han respondido de forma muy completa, ¡parece que varios hemos respondido a la vez!

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

Cita:

Empezado por VJSoftware (Mensaje 564316)
Parto de estas premisas que me ha parecido leer:
1.- Hay que mandar los registros de facturación cada 60 segundos o cada 1000 registros, lo que antes suceda.
2.- No se pueden hacer nuevos envíos si no han pasado 240 segundos desde el envío anterior. este mensaje lo he recibido a veces como respuesta de la AEAT y es absolutamente incompatible con el primero.

Yo creo que te estás haciendo un lío con los tiempos.
Por defecto los 60 sg. es el tiempo que debes esperar entre envíos de registros de facturación. Es decir, no puedes estar haciendo envíos cada 3 sg. (*1*)
Los 240 sg. es el tiempo máximo que tener entre que se genera un Registro de Facturación y se envía. (*2*)

Es decir, no quieren que envíes cada 5 sg. (*1*), pero que tampoco envíes cada 4 horas (*2*).
El tiempo de 60 sg. entre un envío y otro, se puede ampliar (lo devuelve la AEAT en cada envío). Es de suponer que cuando ese tiempo se amplíe (el de 60sg.) también lo harán con el otro (el de 240sg.).


Cita:

Empezado por VJSoftware (Mensaje 564316)
¿Si voy haciendo tickets y generando a la vez sus RF hay que estar pendiente de enviarlos antes de que pasen los 60 segundos?

Lo lógico es hacer envíos cada 60 sg. aproximadamente para evitar problemas. Mientras que la AEAT no modifique ese tiempo.
Nosotros tenemos un servicio que cada 60 sg. realiza en envío de lo que haya pendiente (puede ser 0, 1 o 200 tickets/facturas). NOTA: En nuestro caso no comprobamos que haya 1000 porque en nuestro sistema eso no se va a dar.

Cita:

Empezado por VJSoftware (Mensaje 564316)
Si fuera así entonces si hago un ticket ahora con su RF y lo envío y viene otro ticket y lo quiero enviar, no me va a dejar porque no han pasado los 240 segundos desde el envío anterior......
¿Puedo hacer los tickets y después, cuando se vayan a enviar, generar los RF por ejemplo al final del día?

Yo creo que no.
Lo correcto (creo yo) es generar la factura/ticket y en ese momento generar el Registro de Facturación. Y dejarlo pendiente de enviar hasta el momento que envíes ese y el resto que tenga pendientes (cada 60 sg. como hemos dicho).

Cita:

Empezado por VJSoftware (Mensaje 564316)
¿Puedo hacer los RF a futuro?, me explico, si ahora son las 12:00:00 y hago ahora los RF de 200 tickets, puedo ponerles como fechahorahuso las 12:15:00 y cuando llegue esa hora realmente, enviarlos?

Creo que con la anterior ya está respondido. Yo no le veo sentido a eso.

Cita:

Empezado por gcqZW (Mensaje 564317)
No, el problema viene con el QR, si has impreso el ticket has tenido que enviar el RF a la AEAT previamente.

No.
Los Registro de Facturación y el QR pueden, y yo creo que deben, generarse independientemente del envío.
Lo normal es porque el envío se hará más tarde (entre 1 y 60 sg. más tarde).
Pero también en casos "anormales", por ejemplo porque los servidores de la AEAT han "caído" (durante 2 horas), y debes poder seguir trabajando, generando tickets, dándoselos al cliente,... aunque no puedas enviar o los envíos no funcionen.

Cita:

Empezado por VJSoftware (Mensaje 564322)
Pero no es así. Si te das cuenta, en el QR solamente interviene la fecha, no la hora...
Entonces, yo puedo imprimir un ticket con su QR perfectamente pero, si el cliente trata de verificarlo en ese instante, le va a decir que aún no está en hacienda. Quizás dentro de 10 minutos ya lo mande...
Aquí el QR no influye para nada.

Correcto.
Es posible que surante un tiempo el ticket/factura con QR esté generado, pero todavía no sea "consultable".
Eso se assume.

gcqZW 07-05-2025 14:09:13

Cita:

Aquí el QR no influye para nada.
A lo que me refiero a que no es que te impida programáticamente hacerlo sino que no deberías entregar un QR que no se pueda comprobar (por lo menos en el rato cercano a la entrega del mismo). No vas a ir repartiendo facturas a diestro y siniestro y mandar los RF cuando te de por ahí.

VJSoftware 07-05-2025 14:10:13

NO lo has entendido bien. El error te dice que han pasado MAS de 240 segundos desde que generaste el registro de facturación, por lo tanto que lo estás enviando TARDE.

Vale, entiendo. Pero te agradecería que abundáramos un poco más en este tema.

Voy creando los RF de los tickets.
Tengo un proceso por debajo que comprueba si se va a cumplir el tiempo de espera fijado por la AEAT (60 segundos)
Antes de que se cumpla, realizo el envío de todos los RF pendientes y tomo nota del nuevo margen de tiempo para el siguiente envío.
Así sucesivamente.
¿Eso es lo que me dices?


El error que se recibe es: El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de: 240 segundos.

Entonces podemos enviar cada 200 segundos, por ejemplo, y admitiría todo los RF que haya hasta entonces. ¿Es así?

Muchas gracias de antemano

VJSoftware 07-05-2025 14:13:53

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 564329)
Yo creo que te estás haciendo un lío con los tiempos.
Por defecto los 60 sg. es el tiempo que debes esperar entre envíos de registros de facturación. Es decir, no puedes estar haciendo envíos cada 3 sg. (*1*)
Los 240 sg. es el tiempo máximo que tener entre que se genera un Registro de Facturación y se envía. (*2*)

Es decir, no quieren que envíes cada 5 sg. (*1*), pero que tampoco envíes cada 4 horas (*2*).
El tiempo de 60 sg. entre un envío y otro, se puede ampliar (lo devuelve la AEAT en cada envío). Es de suponer que cuando ese tiempo se amplíe (el de 60sg.) también lo harán con el otro (el de 240sg.).




Lo lógico es hacer envíos cada 60 sg. aproximadamente para evitar problemas. Mientras que la AEAT no modifique ese tiempo.
Nosotros tenemos un servicio que cada 60 sg. realiza en envío de lo que haya pendiente (puede ser 0, 1 o 200 tickets/facturas). NOTA: En nuestro caso no comprobamos que haya 1000 porque en nuestro sistema eso no se va a dar.


Yo creo que no.
Lo correcto (creo yo) es generar la factura/ticket y en ese momento generar el Registro de Facturación. Y dejarlo pendiente de enviar hasta el momento que envíes ese y el resto que tenga pendientes (cada 60 sg. como hemos dicho).



Creo que con la anterior ya está respondido. Yo no le veo sentido a eso.



No.
Los Registro de Facturación y el QR pueden, y yo creo que deben, generarse independientemente del envío.
Lo normal es porque el envío se hará más tarde (entre 1 y 60 sg. más tarde).
Pero también en casos "anormales", por ejemplo porque los servidores de la AEAT han "caído" (durante 2 horas), y debes poder seguir trabajando, generando tickets, dándoselos al cliente,... aunque no puedas enviar o los envíos no funcionen.



Correcto.
Es posible que surante un tiempo el ticket/factura con QR esté generado, pero todavía no sea "consultable".
Eso se assume.

OK. Muchas gracias por tu tiempo. Un saludo.

Neftali [Germán.Estévez] 07-05-2025 15:07:55

Cita:

Empezado por VJSoftware (Mensaje 564331)
Voy creando los RF de los tickets.
Tengo un proceso por debajo que comprueba si se va a cumplir el tiempo de espera fijado por la AEAT (60 segundos)
Antes de que se cumpla, realizo el envío de todos los RF pendientes y tomo nota del nuevo margen de tiempo para el siguiente envío.
Así sucesivamente.
¿Eso es lo que me dices?

Todo correcto, excepto el "antes de que se cumpla".
En el caso por defecto NO deberás hacer el envío antes de los 60 sg. y no después de los 240.

Cita:

Empezado por VJSoftware (Mensaje 564331)
Entonces podemos enviar cada 200 segundos, por ejemplo, y admitiría todo los RF que haya hasta entonces. ¿Es así?

Eso.
Puedes enviar cada 70, 120, 180 o 200, (si estamos hablando de los 60 sg. que es el valor por defecto).
En todos esos casos es correcto porque se cumple: >60 y < 240.

Si la AEAT cambia ese valor por defecto (60 sg.) habrá que reevaluar.


La franja horaria es GMT +2. Ahora son las 14:49:41.

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