![]() |
Controles fecha/hora
Supongo que alguno ya lo habéis pensado.
Voy a meter un control de tiempo de que el registro que se genera no puede ser en fechs hora anterior al anterior. Y por si acaso no hay registros que sea superior a hoy 2/11/2024 o o lo metáis en algún parámetro del sistema. Esto mete una capa más de seguridad en los programas de escritorio en los que existen, remotas pero posibles, situaciones en los que puede pasar: 1. Que a raiz de un corte de luz, el equipo tenga gastada la pila y vuelva a una fecha anterior y no haya conexión a Internet, con lo cual no puede sincronizar con ningún reloj. 2. Que al primo del dueño del restaurante, Ramiro, le pregunten como hacer una factura con fecha anterior y como se está sacando un módulo de ofimática online en CCC es un genio. Entonces el tío vá y le quita Internet al equipo y le cambia la fecha al ordenador emite la factura, con su QR chulo y se pega el moco y ahora llama al servicio técnico para que haga una subsanacion de esto, a ver como te lo comes. Lo primero es guardar una log de este cambio de fecha, y después bloquear emisiones de facturas. |
Ojofaq Aeat/veri*factu
No sé si es aconsejable marcar como incidencia los cambios de fecha de envío ejemplo se genera el registro a las 23:59
Se envía a las 00:00 Esto no queda claro con lo que dicen. Cita:
|
Cita:
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. |
Holaqtal.
Yo me inclino por verificar la fecha del sistema mediante un webservice antes de hacer el envío, de esta forma nos aseguramos de que "mi vecino Jose" no ha tocado nada. He estado probando worldtimeapi.org, pero muchas veces no me responde. ¿Alguien sabe de algún servicio similar? |
Cita:
Prueba http://date.jsontest.com, es más sencillo pero puede servir. El servicio de worldtimeapi.org empezó a tener fallos/esperas aleatorias desde que, creo que en Septiembre, se produjo aquella caída masiva de Microsoft. Desde entonces, algunos días funciona perfectamente, y otros se producen esperas muy largas. En mi caso, esto lo he detectado principalmente por las tardes. |
Cita:
De todas formas le dalta una capa más de seguridad, que es a lo que me refiero, y es si le quitan el cable de Red para que no lea la fecha/hora de Internet, supongo que tu aplicación si es de escritorio seguirá funcionando.para ese caso proponía qu se compararse la fecha/hora del registro anterior que no sea mayor que la actual del sistema. |
Nosotros para temas "serios" pedimos la Fecha/hora al servidor de Base de Datos (en nuestro caso un SQLServer).
Ese servidor no suelen administrarlo los clientes y no pueden "tocarlo" y a los que lo administran ellos no se atreven, porque si cambiasen eso dejaría de funcionar TODA la aplicación. Para otros temas sin importancia sí que cogemos la del equipo cliente (como os he dicho), pero sabemos que alguno ya ha probado a cambiarla. |
Gracias, también había pensado hacer una segunda consulta a un servidor propio y así contrasto que si la fecha/hora del sistema es una de las 2, la del servidor público de hora o la del nuestro, la dé por válida. Ya que puede ocurrir que alguno falle y el desastre es monumental, pero así meto triple seguridad.
|
Cita:
Código:
if (DateTime.Parse(huellaAnterior.FechaHoraUso) > DateTime.Now)// si la fecha de uso es posterior a la del sistema... |
Cita:
|
Cita:
|
Cita:
|
Cita:
Pruebo este a ver pero me da hora inglesa...habrá que pasar algún parámetro? Conocéis algún otro que informe también de la zona horaria? Gracias |
Cita:
Estoy probando el servicio. Sabía si siempre devuelve 1 hora menos, o cambia en verano? Gracias |
Yo trabajo en c#.net y utilizo servidores ntp (Network Time Protocol) para consultar la hora en internet, ahora mismo uso time.windows.com pero creo que hay muchos mas servidores de este tipo.
Devuelve la fecha y hora UTC y luego la convierto en la hora local No se si serviría para delphi |
Cita:
Yo uso esta Que devuelbe un json con todos los datos incluyendo el desfase UTC, basado en la ip, mirad el ejemplo. Cita:
|
Cita:
Lo saqué de internet: https://stackoverflow.com/questions/...server-using-c Es posible que se pueda mejorar pero de momento uso este: Código:
private static DateTime GetNetworkTime() |
Aqui teneis en codigo en delphi 11.
|
Cita:
Por favor, añadid TAG's cuando pongáis código en los mensajes. Para los nuevos en los foros, la recomendación es leer la Guía de estilo de los foros. |
Cita:
|
Cita:
|
Cita:
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 |
Cita:
|
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!!! |
Cita:
|
Cita:
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... |
Cita:
|
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. |
Cita:
|
Cita:
Sólo para los registros de facturación voy a usar el datetime ISO 8601 |
Cita:
|
Cita:
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. |
Cita:
|
Cita:
|
Cita:
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:
En lcURL va la dirección de más arriba. Me olvidaba, la respuesta va en:
|
Cita:
Ese lo tengo Me refiero al de la armada |
Cita:
|
Cita:
Lo miro |
Cita:
|
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> |
| La franja horaria es GMT +2. Ahora son las 07:17:21. |
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