![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
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.
__________________
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. |
|
#2
|
|||
|
|||
|
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? |
|
#3
|
|||
|
|||
|
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. |
|
#4
|
|||
|
|||
|
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 Última edición por Neftali [Germán.Estévez] fecha: 05-11-2024 a las 08:59:21. |
|
#5
|
|||
|
|||
|
Cita:
Estoy probando el servicio. Sabía si siempre devuelve 1 hora menos, o cambia en verano? Gracias |
|
#6
|
|||
|
|||
|
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 |
|
#7
|
||||
|
||||
|
Cita:
Yo uso esta Que devuelbe un json con todos los datos incluyendo el desfase UTC, basado en la ip, mirad el ejemplo. Cita:
__________________
Uno se alegra de ser útil. (Isaac Asimov) |
|
#8
|
|||
|
|||
|
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()
{
//default Windows time server
const string ntpServer = "time.windows.com";
// NTP message size - 16 bytes of the digest (RFC 2030)
var ntpData = new byte[48];
//Setting the Leap Indicator, Version Number and Mode values
ntpData[0] = 0x1B; //LI = 0 (no warning), VN = 3 (IPv4 only), Mode = 3 (Client Mode)
var addresses = Dns.GetHostEntry(ntpServer).AddressList;
//The UDP port number assigned to NTP is 123
var ipEndPoint = new IPEndPoint(addresses[0], 123);
//NTP uses UDP
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp))
{
socket.Connect(ipEndPoint);
//Stops code hang if NTP is blocked
socket.ReceiveTimeout = 3000;
socket.Send(ntpData);
socket.Receive(ntpData);
socket.Close();
}
//Offset to get to the "Transmit Timestamp" field (time at which the reply
//departed the server for the client, in 64-bit timestamp format."
const byte serverReplyTime = 40;
//Get the seconds part
ulong intPart = BitConverter.ToUInt32(ntpData, serverReplyTime);
//Get the seconds fraction
ulong fractPart = BitConverter.ToUInt32(ntpData, serverReplyTime + 4);
//Convert From big-endian to little-endian
intPart = SwapEndianness(intPart);
fractPart = SwapEndianness(fractPart);
var milliseconds = (intPart * 1000) + ((fractPart * 1000) / 0x100000000L);
//**UTC** time
var networkDateTime = (new DateTime(1900, 1, 1, 0, 0, 0, DateTimeKind.Utc)).AddMilliseconds((long)milliseconds);
return networkDateTime.ToLocalTime();
}
// stackoverflow.com/a/3294698/162671
private static uint SwapEndianness(ulong x)
{
return (uint)(((x & 0x000000ff) << 24) +
((x & 0x0000ff00) << 8) +
((x & 0x00ff0000) >> 8) +
((x & 0xff000000) >> 24));
}
|
|
#9
|
|||
|
|||
|
Cita:
Os dejó de funcionar? Porque yo he estado unas semanas con otros proyectos y ahora al volver a Verifactu veo que me da error la consulta a esta web... |
|
#10
|
|||
|
|||
|
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. |
|
#11
|
||||
|
||||
|
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.
__________________
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. Última edición por Neftali [Germán.Estévez] fecha: 04-11-2024 a las 17:20:01. |
|
#12
|
|||
|
|||
|
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.
|
|
#13
|
||||
|
||||
|
Cita:
Código:
if (DateTime.Parse(huellaAnterior.FechaHoraUso) > DateTime.Now)// si la fecha de uso es posterior a la del sistema...
{
MessageBox.Show("La fecha del sistema es anterior a la del ultimo registro enviado, se cancelara el envio hasta que se subsane la incidencia.", "Atencion.");
return;//<-cancelamos la funcion.
}
__________________
Uno se alegra de ser útil. (Isaac Asimov) |
|
#14
|
|||
|
|||
|
Cita:
|
|
#15
|
||||
|
||||
|
Hombre, no puede ser que la hora actual sea ni un segundo "Anterior" a la del registro ya enviado, posteior , o descuadrada del servidor de la aeat, podria ser, por eso , cuando implementen las funciones de consulta de registros anteriores, como en la respuesta se incluira el timestamp de hacienda, ahi si que verificare que la hora del sistema no se descuadre mucho de la de hacienda, por ejemplo consultando el ultimo registro enviado antes de empezar a facturar, o al cargar el SIF.
__________________
Uno se alegra de ser útil. (Isaac Asimov) |
|
#16
|
|||
|
|||
|
Cita:
|
|
#17
|
|||
|
|||
|
Cita:
![]() |
|
#18
|
|||
|
|||
|
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 |
|
#19
|
|||
|
|||
|
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
|
|
#20
|
|||
|
|||
|
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!!! |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Como le resto una hora a la fecha y hora en sql server | uper | MS SQL Server | 3 | 12-10-2015 20:41:49 |
| Agrupar por fecha, teniendo en el campo fecha y hora | El_Raso | Firebird e Interbase | 3 | 18-03-2010 22:05:19 |
| obtener solo la fecha en formato fecha y sin hora | BlueSteel | SQL | 14 | 09-05-2008 16:42:19 |
| formato fecha y hora a solo Fecha | ozegarra | Firebird e Interbase | 6 | 22-02-2008 18:43:34 |
| Extraccion fecha de un campo fecha y hora | matti | Firebird e Interbase | 3 | 26-04-2007 19:48:11 |
|