Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Envío de registros y sus respuestas (https://www.clubdelphi.com/foros/forumdisplay.php?f=66)
-   -   Controles fecha/hora (https://www.clubdelphi.com/foros/showthread.php?t=96967)

adolphsys 05-11-2024 12:50:32

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 559200)
Nosotros sí tenemos un control similar de control de fechas. Para que no puedan meter una factura con fecha anterior a la última introducida (a nuestros clientes se les ocurren cosas muy raras). Cambios de fecha del equipo, por ejemplo.

Pues, al menos con los servidores de prueba Verifactu, están admitiendo remitir una factura con fecha anterior a la última... :confused:

edari 06-11-2024 09:48:55

Cita:

Empezado por adolphsys (Mensaje 559264)
Pues, al menos con los servidores de prueba Verifactu, están admitiendo remitir una factura con fecha anterior a la última... :confused:


Y también están admitiendo dos envíos diferentes en menos de un minuto...quería yo comprobar el error antes de programar el "delay" para el siguiente envío y nanai...lo traga como un campeón


En cualquier caso me pongo a ello

ermendalenda 06-11-2024 10:05:36

Cita:

Empezado por edari (Mensaje 559314)
Y también están admitiendo dos envíos diferentes en menos de un minuto...quería yo comprobar el error antes de programar el "delay" para el siguiente envío y nanai...lo traga como un campeón


En cualquier caso me pongo a ello

Bueno si, pero cuando repites mucho te meten un delay en la respuesta y se queda colgafa la respuesta el tiempo que le tengas puesto de espera

ermendalenda 06-11-2024 20:01:01

He añadido un nuevo control de fecha (Activable/Desactivable), ultimo registro después del anterior no puede pasar mas de 300 días, si se considera que es correcta esa inactividad del SIF pueden desactivar el control y posteriormente volverlo a activar.


Que obsesión, esto me va a matar!!!

bmfranky 06-11-2024 21:39:07

Cita:

Empezado por ermendalenda (Mensaje 559358)
He añadido un nuevo control de fecha (Activable/Desactivable), ultimo registro después del anterior no puede pasar mas de 300 días, si se considera que es correcta esa inactividad del SIF pueden desactivar el control y posteriormente volverlo a activar.


Que obsesión, esto me va a matar!!!

Hola, por que lo has incluido , es hobligatorio ?

ermendalenda 06-11-2024 21:53:00

Cita:

Empezado por bmfranky (Mensaje 559360)
Hola, por que lo has incluido , es hobligatorio ?

No es obligatorio, tenoa el control de no poder grabar un registro con fecha/hora anterior al último y por lo mismo digo, a ver si un día reconectan un sif que estaba descartado o no está conectado a Internet y le ponen una fecha futura.
300 días sin movimientos es complicado que se dé. Una capa más. Aunque no te lo creas alguna vez después de una caída de luz al reconectar el equipo no le dejaba facturar por fecha antigua pero al ponerle la fecha manualmente le han puesto algún año más. Cuando la conexión a Internet esta ok no hay problema, pero si no...

bmfranky 06-11-2024 21:55:48

Cita:

Empezado por ermendalenda (Mensaje 559363)
No es obligatorio, tenoa el control de no poder grabar un registro con fecha/hora anterior al último y por lo mismo digo, a ver si un día reconectan un sif que estaba descartado o no está conectado a Internet y le ponen una fecha futura.
300 días sin movimientos es complicado que se dé. Una capa más. Aunque no te lo creas alguna vez después de una caída de luz al reconectar el equipo no le dejaba facturar por fecha antigua pero al ponerle la fecha manualmente le han puesto algún año más. Cuando la conexión a Internet esta ok no hay problema, pero si no...

Pues si , me lo creo, la gente es capaz de todo...

ermendalenda 08-11-2024 16:08:17

Ojo con los controles de fecha y hora para los que tengan software en el mercado que puedan trabajar en las madrugadas de los días en que se cambian la hora, qaunque dicen que van a quitar los cambios horarios no paran de retrasarlo
Lo digo para los que tenéis el control puesto de que la siguiente factura no sea de fecha hora a la anterior, si no usáis la hora del meridiano para controlarla claro.

bmfranky 08-11-2024 16:21:36

Cita:

Empezado por ermendalenda (Mensaje 559480)
Ojo con los controles de fecha y hora para los que tengan software en el mercado que puedan trabajar en las madrugadas de los días en que se cambian la hora, qaunque dicen que van a quitar los cambios horarios no paran de retrasarlo
Lo digo para los que tenéis el control puesto de que la siguiente factura no sea de fecha hora a la anterior, si no usáis la hora del meridiano para controlarla claro.

Jova, anda que no te gusta tenerlo todo atado... :D:D:D:D ^\||/

novatico 08-11-2024 16:25:59

Cita:

Empezado por ermendalenda (Mensaje 559480)
Ojo con los controles de fecha y hora para los que tengan software en el mercado que puedan trabajar en las madrugadas de los días en que se cambian la hora, qaunque dicen que van a quitar los cambios horarios no paran de retrasarlo
Lo digo para los que tenéis el control puesto de que la siguiente factura no sea de fecha hora a la anterior, si no usáis la hora del meridiano para controlarla claro.

Yo, para la creación de la factura, sólo voy a tener en cuenta la fecha. Por eso, sólo impido poner fecha factura anterior a la de la última, por supuesto por serie.

Sólo para los registros de facturación voy a usar el datetime ISO 8601

bmfranky 08-11-2024 16:28:08

Cita:

Empezado por novatico (Mensaje 559483)
Yo, para la creación de la factura, sólo voy a tener en cuenta la fecha. Por eso, sólo impido poner fecha factura anterior a la de la última, por supuesto por serie.

Sólo para los registros de facturación voy a usar el datetime ISO 8601

Ahi es dnde vas a tener problema si por una problema x del sistema envias un registro con fecha hora anterior al ultimo enviado.

novatico 08-11-2024 17:40:55

Cita:

Empezado por bmfranky (Mensaje 559484)
Ahi es dnde vas a tener problema si por una problema x del sistema envias un registro con fecha hora anterior al ultimo enviado.

Es que yo no tomo la fecha hora del sistema, sino que la tomo de internet.

Incluso he encontrado la forma de tomar el "unixtime" del ROA (Real Observatorio de la Armada) que es el dato oficial que tomas todos los organismos estatales, incluida la AEAT.
Solo hay que tener en cuenta, además, el desfase por la zona horaria.

Aunque de momento no lo he implementado y lo tomo de "http://date.jsontest.com" al que tambien hay que añadir el desfase de zona.

Es que tengo clientes "muy amigos" de cambiar la fecha y hora del sistema.

bmfranky 08-11-2024 17:43:06

Cita:

Empezado por novatico (Mensaje 559492)
Es que yo no tomo la fecha hora del sistema, sino que la tomo de internet.

Incluso he encontrado la forma de tomar el "unixtime" del ROA (Real Observatorio de la Armada) que es el dato oficial que tomas todos los organismos estatales, incluida la AEAT.
Solo hay que tener en cuenta, además, el desfase por la zona horaria.

Aunque de momento no lo he implementado y lo tomo de "http://date.jsontest.com"

Entonces no tienes problema, tienes la misma hora que ellos, si o si...

ermendalenda 08-11-2024 17:46:47

Cita:

Empezado por novatico (Mensaje 559492)
Es que yo no tomo la fecha hora del sistema, sino que la tomo de internet.

Incluso he encontrado la forma de tomar el "unixtime" del ROA (Real Observatorio de la Armada) que es el dato oficial que tomas todos los organismos estatales, incluida la AEAT.
Solo hay que tener en cuenta, además, el desfase por la zona horaria.

Aunque de momento no lo he implementado y lo tomo de "http://date.jsontest.com" al que tambien hay que añadir el desfase de zona.

Es que tengo clientes "muy amigos" de cambiar la fecha y hora del sistema.

Y podrías poner como haces la petición?

novatico 08-11-2024 17:54:48

Cita:

Empezado por ermendalenda (Mensaje 559497)
Y podrías poner como haces la petición?

Bueno, primero he de recordar algo que ya he comentado en este foro. No uso Delphi, pero estoy por aquí porque es un foro muy activo.
Si tecleas esa dirección http://date.jsontest.com en el navegador, ya vas a ver los datos que devuelve.

Para hacer programáticamente, yo hago un "httpRequest" con orden "GET" y me devuelve el mismo texto que ves en el navegador.
Sólo hay que tomar la información y manejarla, y la respuesta es muy rápida.
Al principio usaba la dirección http://worldtimeapi.org/api/timezone/Europe/Madrid, pero, aunque es más completa, falla en muchas ocasiones.

Os pego el trozo de mi código por si os ayuda:


Código Delphi [-]
        lcURL = "http://date.jsontest.com"
        loHTTP = Createobject("WinHttp.WinHttpRequest.5.1")
        loHTTP.Open("GET", lcURL, .F.)
        loHTTP.Send()

En lcURL va la dirección de más arriba.

Me olvidaba, la respuesta va en:
Código Delphi [-]
cResp = loHTTP.ResponseText

ermendalenda 08-11-2024 17:59:55

Cita:

Empezado por novatico (Mensaje 559501)
Bueno, primero he de recordar algo que ya he comentado en este foro. No uso Delphi, pero estoy por aquí porque es un foro muy activo.
Si tecleas esa dirección "http://date.jsontest.com" en el navegador, ya vas a ver los datos que devuelve.

Para hacer programáticamente, yo hago un "httpRequest" con orden "GET" y me devuelve el mismo texto que ves en el navegador.
Sólo hay que tomar la información y manejarla, y la respuesta es muy rápida.
Al principio usaba la dirección "http://worldtimeapi.org/api/timezone/Europe/Madrid", pero, aunque es más completa, falla en muchas ocasiones.

Os pego el trozo de mi código por si os ayuda:


lcURL = "http://date.jsontest.com"
loHTTP = Createobject("WinHttp.WinHttpRequest.5.1")
loHTTP.Open("GET", lcURL, .F.)
loHTTP.Send()

En lcURL va la dirección de más arriba.

Me olvidaba, la respuesta va en:

cResp = loHTTP.ResponseText

Gracias
Ese lo tengo
Me refiero al de la armada

novatico 08-11-2024 18:33:14

Cita:

Empezado por ermendalenda (Mensaje 559502)
Gracias
Ese lo tengo
Me refiero al de la armada

Creo que es "hora.roa.es"

ermendalenda 08-11-2024 19:26:14

Cita:

Empezado por novatico (Mensaje 559506)
Creo que es "hora.roa.es"

Gracias
Lo miro

bmfranky 08-11-2024 19:38:43

Cita:

Empezado por novatico (Mensaje 559506)
Creo que es "hora.roa.es"

Hola ahora es https://www2.roa.es/hora/

bmfranky 08-11-2024 20:52:08

Funcion Obterner Fechora de internet ROA
 
Hola,despues de leer lo anterior, he adaptado la funcion que tenia para obtener la hora de internet os la paso aqui por si a alguien le interesa, devuelve la hora del Real Instituto y Observatorio de la Armada (ROA)
Hay que instalar el paquete Nugget de criptografia BouncyCastle,


Aqui adaptado para devolver datetime , tened encuenta que devuelve utc

Código:

        /// <summary>
        /// Devuelve la hora actual de internet.
        /// </summary>
        /// <returns>Hora actual formateada.</returns>
        public static DateTime leeFechaHoraInternet()
        {
         
            System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            try
            {
                HttpWebRequest webRequest =  (HttpWebRequest)WebRequest.Create("https://www2.roa.es/cgi-bin/horautc");//https://worldtimeapi.org/api/ip");
                webRequest.Method = "GET";
                HttpWebResponse respuesta = (HttpWebResponse) webRequest.GetResponse();
                if(respuesta.StatusCode == HttpStatusCode.OK)
                {
                    Stream strmRespuesta = respuesta.GetResponseStream();
                    StreamReader leeRespuesta = new StreamReader(strmRespuesta);
                    string jsonRespuesta = leeRespuesta.ReadToEnd();
                    long ticks = long.Parse(jsonRespuesta.Replace("\\n", ""));
                    var fechora =  Org.BouncyCastle.Utilities.Date.DateTimeUtilities.UnixMsToDateTime(ticks);//esta  la uso yo porque tengo bouncy instalado
                    //desde el paquete nuget BouncyCastle
                    return fechora;                             
                }
            }
            catch(Exception Exc)
            {
              return DateTime.Now;
            }
            return DateTime.Now;
        }



La franja horaria es GMT +2. Ahora son las 22:56:08.

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