![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#21
|
|||
|
|||
Cita:
Cuando pregunté al mail de Veri*Factu me remitieron a la siguiente web: https://sede.agenciatributaria.gob.e...a_oficial.html, pero no me he puesto a leerla a fondo. |
#22
|
||||
|
||||
Cita:
__________________
Uno se alegra de ser útil. (Isaac Asimov) |
#23
|
||||
|
||||
Cita:
![]() Pero si, se puede usar. |
#24
|
|||
|
|||
Me refería a los enlaces dentro de esa URL hombre!
|
#25
|
|||
|
|||
Cita:
|
#26
|
|||
|
|||
Les traigo una pequeña mejora del código de mqm, que permite pasarle el UTC que queramos. Por tanto, independientemente de la fecha, hora y región que tenga el equipo desde el que se ejecuta la aplicación, nos dará siempre la fecha-hora de Internet correcta:
|
#27
|
|||
|
|||
Estuve intentando hacer la función anterior con TRESTClient, pero al ejecutar la petición me da el error 403 forbidden:
¿Alguien tiene idea de cómo hacer que funcione con TRESTClient? Esto nos ahorraría tener que usar las librerías Openssl. |
#28
|
|||
|
|||
Lo conseguí con objetos TNetHTTPClient:
Acordarse de poner en el uses: System.Net.HttpClient, System.Net.URLClient, System.Net.HttpClientComponent |
#29
|
||||
|
||||
Actualizado el mensaje #2 que recopila códigos con este hilo.
__________________
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. |
#30
|
|||
|
|||
Cita:
|
#31
|
|||
|
|||
En mi caso no uso la fecha del sistema ni de la AEAT, porque la AEAT va a estar muchas veces caida y el registro deberiamos grabarlo si o si en nuestros SIF y darle la factura verificable al cliente final. Si no quieres seguir facturando sin tener conexion a la AEAT pues un control en nuestro registro a modo de campo y aviso en pantalla y no seguimos facturando hasta que se restablezca la conexion con la AEAT (Bucle Timer), Una vez restablecida la comunicacion se envia el ultimo registro como se tenga que enviar y a seguir facturando. Pero la hora tiene que ser exacta, de lo contrario nos va a dar mucho dolor de cabeza tener registros rechazados por fechas, horas y huellas que no coinciden apilados en los clientes. Si tenemos un cliente que no se ha dado cuenta de que tiene la fecha y hora mal ¿que hacemos? Le podemos poner un control y decirle que cambie la pila de la CPU o pasamos de eso y mientras que su SO funcione y tenga internet, calculamos la fecha y hora fuera del Sistema, calculamos si estamos en invierno o verano para aplicar a la UTC el horario que tenemos en España(península) UTC + 1 o nó, pero todo fuera del sistema y de la AEAT que tambien cojera la hora por servidores sincronizados por satélite como Nopuedoponerenlaces.roa.es/cgi-bin/horautc
Este codigo está en VB.net para el que le venga bien. Esta comentado Código:
Try 'Puede que tengas que ponerlo para asegurarte que el servidor no te rechaza por falta de seguridad ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 Dim url As String = "Nopuedoponerenlaces.roa.es/cgi-bin/horautc" Dim request As WebRequest = WebRequest.Create(url) request.Timeout = 5000 ' Tiempo de espera de 5 segundos creo que sobrado Dim response As WebResponse = request.GetResponse() ' obtengo la respuesta del servidor Dim responseText As String Using stream As Stream = response.GetResponseStream() Using reader As New StreamReader(stream) responseText = reader.ReadToEnd().Trim() ' Limpiar espacios o caracteres extra End Using End Using ' Tenemos una respuesta en una cadena de numeros(String) y hay que convertirla a un número de milisegundos Dim timestamp As Long If Long.TryParse(responseText, timestamp) Then 'Esta comprobacion la podemos omitir porque responseText siempre sera una cadena de numeros convertible a long pero bueno... Dim utcTime As DateTime = DateTimeOffset.FromUnixTimeMilliseconds(timestamp).UtcDateTime 'Determinar si estamos en horario de verano o invierno en España Dim year As Integer = utcTime.Year Dim ultimoMarzo As DateTime = New DateTime(year, 3, DateTime.DaysInMonth(year, 3)) ' Buscamos el último domingo de marzo que es cuando entra el horario de verano) While ultimoMarzo.DayOfWeek <> DayOfWeek.Sunday ultimoMarzo = ultimoMarzo.AddDays(-1) End While ultimoMarzo = New DateTime(year, 3, ultimoMarzo.Day, 2, 0, 0, DateTimeKind.Utc) ' Buscamos el último domingo de octubre que es cuando termina el horario de verano Dim ultimoOctubre As DateTime = New DateTime(year, 10, DateTime.DaysInMonth(year, 10)) While ultimoOctubre.DayOfWeek <> DayOfWeek.Sunday ultimoOctubre = ultimoOctubre.AddDays(-1) End While ultimoOctubre = New DateTime(year, 10, ultimoOctubre.Day, 1, 0, 0, DateTimeKind.Utc) ' Si estamos entre marzo y octubre estamos en horario de verano si no estamos en horario de invierno Dim esHorarioVerano As Boolean = utcTime >= ultimoMarzo AndAlso utcTime < ultimoOctubre ' Aplicamos 2 o 1 segun sea Dim offsetEspaña As Integer = If(esHorarioVerano, 2, 1) ' Calculamos la hora en España sin tener en cuenta el sistema Dim horaLocalEspaña As DateTime = utcTime.AddHours(offsetEspaña) ' lo muestro para que se vea, pero cada cual aplica a su forma MsgBox("Hora ajustada en España (Península): " & horaLocalEspaña.ToString("yyyy-MM-dd HH:mm:ss") & " (UTC+" & offsetEspaña & ")") Else MsgBox("Error: No se pudo interpretar el timestamp del servidor.") End If Catch ex As Exception MsgBox("Error al obtener la hora UTC: " & ex.Message) End Try Última edición por Neftali [Germán.Estévez] fecha: 31-01-2025 a las 08:48:09. Razón: Añadir TAG's al código |
#32
|
|||
|
|||
Cita:
Ya cada uno que diseñe como crea más conveniente, pero no acabo de entender algunas cuestiones que planteas, por ejemplo la hora se coge del ROA(armada) no es de la aeat. Otra cosa 3s el timestamp de la respuesta del ultimo envio. Por otro lado dices como de darle la posibilidaf(supongo que te refieres a parametrizae) la decisión de que si no se puede enviar no se puede facturar, cosa que particularmente veo un error por varios motivos, primero que el vendedor tiene que tener instrucciones de que hacer en ese caso(se lo anota?, le dice al valiente que no se factura?, se vende pero sin facturar?) Otra cosa que tu sistema dependa de Internet para generar los qr, so no no tiene sentido, se acumula y se envía como incidencia cuando vuelva imternet, pararlo es más negativo que positivo. No sé, cada uno vé claro su operativa según su soft2are y el tipo de clientes. |
#33
|
|||
|
|||
Otra cosa, octubre de 2026 es, presumiblemente, el último cambio de horario, com lo cual nos quedarimos con horario de invierno eternamente( a mi particularmente me gusta mas el horario de verano incluso para invierno). Me lo he dejado previsto, incluso parametrizado por si vuelven a cambiar de idea, y esa fecha está ahí al lado.
Por otro lado si vas a controlar las horas es recomendable desactivar de Windows/linux/otros cualquier intención de estos de cambios automáticos Última edición por ermendalenda fecha: 30-01-2025 a las 17:52:26. |
#34
|
|||
|
|||
Cita:
He hablado con algunos gestores y me comentan que tienen muchos problemas con la conexión con la AEAT en el envío de documentación y no es nuevo de ahora, imagino que cuando estemos todos atacando a sus servidores va a ser lo más. Bueno el tema del desfase horario si lo van a quitar simplificaría más el código pero tendremos que tenerlo en cuenta. |
#35
|
|||
|
|||
Cita:
Sigo sin entender muy bien tu prodecimiento, pero el que la lleva...Las proformas no llevan QR y las facturas normales se pueden generar e intentar enviar al momento , y se teintenta hasta que se pueda, si el problema es de ellos ya lo identificarán. |
#36
|
|||
|
|||
Cita:
|
#37
|
||||
|
||||
Actualizo el mensaje #2 con la recopilación de códigos.
Gracias por compartirlos.
__________________
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. |
#38
|
|||
|
|||
Cita:
No puedes/debes poner el envío de la factura como parte de la operativa del cobro de la factura, o sea, hay unos controles definidos en la norma que te obligan a que esos envíos lo hagas en segundo plano, por ejemplo, hay que respetar unos tiempos de espera entre envios, también por el escenario que pones de ejemplo, si en un momento dato no hay conexión puedes seguir emitiendo y encadenando y cuando haya conexión tienes que volver. A comenzar el control de flujos, ver cuantas tienes pendientes de enviar, y enviarlas juntas en un soloenvio(máximo 1000 facturas), pero no puedes hacer saltar en los envíos, tiene que ser secuencialmente r3specto a su generación cronológica y encadenamiento. Creo que te tienes que repasar la documentación de verifactu empezando por la Orden Ministerial. Saludos |
#39
|
|||
|
|||
Cita:
Exacto, eso que ha dicho ermendalenda |
#40
|
|||
|
|||
Gracias. No sabia que se pudiera mandar con saltos y era lo que quería saber. Entonces la operativa cambia. Seguimos estudiando, aprendiendo y compartiendo.
|
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
TimeStamp | Willo | MySQL | 4 | 22-03-2016 21:15:00 |
Consulta TimeStamp | Jose Roman | SQL | 2 | 06-09-2012 04:03:11 |
TimeStamp = TimeStamp me da error | Chogo | Firebird e Interbase | 7 | 16-03-2011 04:13:38 |
TIMESTAMP en restriccion | Cañones | SQL | 6 | 28-08-2007 23:19:27 |
Timestamp y bde 5.2 | Toni | Firebird e Interbase | 2 | 27-05-2003 09:26:33 |
![]() |
|