![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Determinar si el servicio Windows del Verifactu está activo o no
¡Buenos días! Una preguntilla para los que implementáis el Verifactu como un servicio. En nuestro caso, tenemos un servicio de Windows (externo del SIF) que detecta cuando hay nuevas facturas y las envía a la AEAT. Las empresas tienen un servidor central, donde está la base de datos, el servicio y una instancia del SIF; si hay otros ordenadores en la tienda, sus instancias del SIF se conectan a la base de datos de su servidor central. Por lo tanto, hay una única base de datos y un único servicio, aunque varias instancias del SIF.
Queremos poder detectar cuando el servicio no esté corriendo para avisar a todos los usuarios del SIF que se ha parado y que debe activarse para seguir facturando. Habíamos pensado el siguiente planteamiento: cuando se inicia el servicio, se guarda en la base de datos, en un campo booleano, que el servicio está activo. Cuando se para, se guarda en ese campo que se ha parado. Esto emitiría un evento de la base de datos, lo que permitiría avisar instantáneamente el SIF. Por otro lado, cada hora se actualizaría un campo con la fecha y hora actual, para que si por algún motivo se ha cerrado el servicio sin que haya podido avisar (se ha apagado repentinamente el ordenador, por ejemplo) se pueda mirar si ha pasado más de una hora desde la fecha guardada, lo que indicaría que también está cerrado. El SIF periódicamente (cada hora y también al realizar acciones concretas) consultaría ese campo para determinar si el servicio está abierto o no. Este es el planteamiento que teníamos pensado para detectar si el servicio está abierto o no, pero me gustaría preguntar qué procedimiento usáis vosotros, para ver si hay alguna forma mejor de hacerlo. ¡Gracias por vuestra ayuda! ![]() |
|
#2
|
|||
|
|||
|
Cita:
Nosotros lo hacemos así: Cuando vamos a crear un ticket o una factura (que son los dos documentos que se envían a Verifactu) hacemos antes una consulta a la tabla de registros de facturación. Si hay alguno pendiente de enviar de más de 240 segundos (el tiempo que marca Hacienda para que un registro vaya marcado como incidencia), sacamos un aviso y preguntamos si quiere continuar. El aviso es del tipo: "Existen registros de más de 240 segundos de antiguedad pendientes de enviar. ¿Quieres continuar igualmente?" De esta manera, si por ejemplo tienes 5 facturas sin enviar porque está el servicio parado, te avisa para que decidas si quieres revisar el problema antes de acumular una sexta, una séptima, etc. Pero puedes decidir seguir generando facturas si quieres (porque a lo mejor el problema es que esa mañana estás sin internet y eres consciente) Espero que te sirva |
|
#3
|
|||
|
|||
|
Buenas Jarogo08, ¡muchas gracias por tu respuesta y el tiempo!
Me gusta la idea, pero estamos buscando diferenciar entre "no se pueden enviar facturas" (porque no tenemos internet, por ejemplo) y "el servicio está parado". La idea sería poder mostrar desde el SIF el estado del servicio (quizás con un texto que diga "El servicio de envío Verifactu está parado"), con la dificultad de que el servicio puede estar en otra máquina de la misma red interna. Pero me guardo la idea del mensaje cuando hay facturas de más de 240 segundos, porque me parece muy útil también. ¡Gracias una vez más! |
|
#4
|
||||
|
||||
|
Cita:
Desde una máquina detectar si un servicio de otra está parada no es simple y requiere de muchas condiciones que se deben dar (muchos posibles problemas que pueden ocurrir), de ahí que esa idea se descartó de primeras.
__________________
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. |
|
#5
|
|||
|
|||
|
¡Muchas gracias, Neftalí! Más o menos es como lo teníamos pensado, así que vamos a continuar por ese camino. Gracias a ambos por vuestra ayuda.
![]() |
|
#6
|
||||
|
||||
|
Cita:
El servicio está en marcha constantemente, y cada X tiempo va revisando si hay facturas para enviar. Si las hay, las empaquete y las envía (con los tiempos que define la AEAT). Cada vez que revisa las facturas deja una "marca de tiempo" en la Base de Datos (TIMESTAMP), independientemente de si hay factura o no para enviar. Si las estaciones que generan facturas/tickets detectan que la última marca de tiempo que ha dejado el servicio es "demasiado antigua" (por decirlo de una manera): a) Asumen que el servicio tiene problemas (parado, apagada la máquina, problemas con la BD,....) b) Dan un mensaje al usuario y bloquean determinadas operaciones en el programa.
__________________
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. |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Servicio Web alta facturas Verifactu | ermendalenda | Envío de registros y sus respuestas | 6 | 09-09-2025 12:17:13 |
| Problemas al integrar verifactu en modo servicio | Galahad | Envío de registros y sus respuestas | 12 | 10-07-2025 18:59:50 |
| Verifactu ya activo! | Jarogo08 | General/Noticias | 13 | 02-07-2025 11:34:02 |
| Comprobar si un servicio de windows esta abierto | liser | Varios | 2 | 12-08-2008 11:03:18 |
| Es posible determinar si el servicio del firebird se esta ejecutando? | Ricardo León | Conexión con bases de datos | 1 | 18-09-2007 18:35:27 |
|