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)
-   -   ¿Como hacéis los envios al web service? (https://www.clubdelphi.com/foros/showthread.php?t=97235)

Jarogo08 20-02-2025 10:36:34

¿Como hacéis los envios al web service?
 
Buenos días


Pues eso, quería saber cómo estáis planteando el tema de que cada X tiempo (entiendo que cada minuto, o máximo 2 minutos) salte el proceso de subir los registros pendientes al web service.


En mi caso nuestro programa tiene base de datos SQL, con lo cual hay un servidor que tiene el SQL Server con la base de datos y luego equipos en red con el programa que se conectan a esa base de datos. También se puede dar que haya un equipo monopuesto, que hace de servidor y es donde el usuario trabaja o un cloud, en el que los usuarios se conectan al propio servidor que tiene la base de datos.


Mis dudas son las siguientes:


1- ¿que equipo hace el envío? ¿el servidor o todos los equipos en red que tengan el programa abierto?
2- ¿como configuráis el envío? ¿una tarea programada de windows? ¿un servicio? ¿de otra manera?


Yo tenía en mente que sea el servidor el que envíe. De esta manera sólo tengo la tarea en un equipo (el único que sé seguro que si está apagado nadie puede grabar registros, puesto que es donde está la base de datos; si el servidor está apagado o "colgado" la aplicación no funciona). Si son los equipos de la red los que envían me imagino que puede haber más problemas (que 2 equipos intenten enviar la misma factura, si se apagan pueden quedar registros sin enviar, etc.)


Y por otro lado como se configura el envío. Tenía en mente una tera programada de windows que se lance cada minuto por ejemplo, pero algo leí de servicios e igual es mejor. Tengo que tener en cuenta que si por ejemplo tengo 500 clientes con mi programa no quería conectarme a 500 servidores a configurar 500 tareas programadas.


¿Hay algo que se pueda programar (en mi caso desde Visual Studio .NET) para que se configure automáticamante en una actualización del programa sin tener que conectarme a todos los servidores?


Me gustaria escuchar opiniones y ver cómo lo estáis planteando


Muchas gracias por todo!

Neftali [Germán.Estévez] 20-02-2025 15:18:28

Ya hemos hablado de este tema; Revisa este hilo:
https://www.clubdelphi.com/foros/sho...light=Servicio


Nosotros trabajamos con una instalación que requiere que un equipo sea "servidor"; En la mayoría de los casos coincide con la máquina donde está el SGBD -SQLServer- instalado.
En esa misma máquina utilizamos varios servicios, entre ellos hemos implementado uno para los envíos.

Jarogo08 20-02-2025 18:40:56

Muchas gracias por la respuesta, Neftali


Tendremos que investigar entonces como van los servicios.


A ver si me puedes aclarar esta duda: ¿puedo crear desde Visual Studio los servicios en el servidor? ¿en una actualización del programa, por ejemplo? ¿o lo tengo que hacer manualmente?


Porque si me tengo que conectar a todos los servidores que tengan el programa e ir creando los servicios va a ser un trabajo de chinos


Muchas gracias de nuevo!

Neftali [Germán.Estévez] 21-02-2025 10:26:11

Cita:

Empezado por Jarogo08 (Mensaje 562150)
¿puedo crear desde Visual Studio los servicios en el servidor? ¿en una actualización del programa, por ejemplo? ¿o lo tengo que hacer manualmente?
Porque si me tengo que conectar a todos los servidores que tengan el programa e ir creando los servicios va a ser un trabajo de chinos


Los servicios debes instalarlos como cualquier aplicación normal.
En nuestro caso va incluído en la instalación del servidor. Puedes crear un instalador y ejecutarlo con siguiente, siguiente,...

DarkDudae 22-02-2025 21:19:15

Te cuento como lo he planteado yo:

Cada equipo, al tener consideración de SIF independiente y tener su propio encadenamiento y números consecutivos, se encarga de enviar sus propias facturas.

Uso el componente de seccion_31 con algunas modificaciones que se encargan de leer el tiempo de espera informado por la AEAT y me envía un aviso a un evento del propio componente cuando se vuelve a abrir la ventana de envío.

Todo esto lo tengo en un hilo de ejecución independiente que funciona en paralelo con el hilo principal del programa para que independientemente de lo que pase con los servidores de VeriFactu, el sistema principal funcione de forma normal.La solución de un servicio que recoja de varios SIFs me preocupa, ya que si falla el equipo donde se ejecuta dicho servicio quedarían todos los SIFs sin enviar.

También me preocupaba que un servicio “independiente” pudiese contravenir la legalidad, ya que estrictamente hablando, el servicio que se encarga del envío bien podría adaptarse para funcionar en SIFs muy antiguos a los que no se les ha tocado ni una coma de código.

Jarogo08 24-02-2025 08:39:57

Muchas gracias por tu aportación, DarkDudae


Cita:

Empezado por DarkDudae (Mensaje 562181)
Cada equipo, al tener consideración de SIF independiente y tener su propio encadenamiento y números consecutivos, se encarga de enviar sus propias facturas.


Ahí ya me has descolocado un poco... entiendo que si tengo un equipo que hace de servidor y por ejemplo 5 equipos cliente conectados a ese servidor trabajando sobre la misma empresa es un único SIF y los encadenamientos son comunes, no para cada equipo. ¿no?


Cita:

Empezado por DarkDudae (Mensaje 562181)
También me preocupaba que un servicio “independiente” pudiese contravenir la legalidad, ya que estrictamente hablando, el servicio que se encarga del envío bien podría adaptarse para funcionar en SIFs muy antiguos a los que no se les ha tocado ni una coma de código.


En mi caso eso no se debería dar, porque he creado una tabla donde voy grabando todos los registros a subir. Un cliente que no actualice a la última versión (la que controla el Verifactu) puede llegar a instalar el servicio, pero esa tabla no tendrá registros y no habrá nada que subir

DarkDudae 24-02-2025 12:14:31

Cita:

Empezado por Jarogo08 (Mensaje 562194)
Ahí ya me has descolocado un poco... entiendo que si tengo un equipo que hace de servidor y por ejemplo 5 equipos cliente conectados a ese servidor trabajando sobre la misma empresa es un único SIF y los encadenamientos son comunes, no para cada equipo. ¿no?

Eso depende de lo que hacienda considere como SIF. Supuestamente un SIF es cada conjunto de software/hardware capaz de generar facturas (para mí esto sería por ejemplo un TPV). Ahora bien, siempre puedes decir que tu SIF no es el TPV, sino el conjunto de servidor+tpv. Supongo que así "pordría" ser legal que sea el servidor el que hace los envíos a VeriFactu. Yo creo que es más problemático esto último de cara a "justificarse" ante Hacienda. Pero igual sería una pregunta interesante de cara a plantear. Yo trabajo con muchos TPVs y muchas veces cada uno de ellos funciona incluso sin servidor adicional (por si hay errores de red). Para nosotros, optar con que cada equipo fuera un SIF independiente siempre fue la apuesta más lógica.

Cita:

Empezado por Jarogo08 (Mensaje 562194)
En mi caso eso no se debería dar, porque he creado una tabla donde voy grabando todos los registros a subir. Un cliente que no actualice a la última versión (la que controla el Verifactu) puede llegar a instalar el servicio, pero esa tabla no tendrá registros y no habrá nada que subir

En nuestro caso también existe una tabla así, pero esta tiene el campo "NInstalación" que coincide con los datos del Sistema Informático, que es único por cada SIF usado. Así, en casos en los que se usen varios TPVs enlazados a una única base de datos, o varios obligados tributarios trabajando en paralelo sobre la misma pueden hacerlo sin problema, ya que cada TPV y obligado tributario tendrá su propio encadenamiento en dicha tabla de registros.


La franja horaria es GMT +2. Ahora son las 15:24:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi