![]() |
![]() |
| 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:
Si es posible, lo más sencillo (creo yo) es que tantos los programas cliente (ERP) como el servicio (o la app. que habías pensado) estén conectados a la Base de Datos. Los ERP van colocando ficheros en la cola (es una o varias tablas dependiendo del diseño) y el servicio los va procesando y en la misma Base de Datos va generando las respuestas. La lógica de envío sólo está en el servicio. Cita:
Nosotros diseñamos el servicio en 2 piezas (EXE + DLL). En realidad para facilitar debug y pruebas, se diseña un servicio y una aplicación. Para no "repetir" código, toda la lógica se encuentra en la DLL y esa DLL se llama desde una APP y desde un SERVICIO. Como he dicho la APP y el SERVICIO sólo tienen una llamada al método de "procesar" de la DLL (que tiene toda la lógica). ¿Porqué se hace esto? Porque los servicios no pueden tener parte visual y los LOGs para debug se envían al registro de eventos de Windows, en el caso de la APP sí puede tener parte visual y los LOGs para debug se envían a un fichero. Para todo el proceso de desarrollo se usa la APP+DLL y para el cliente final SERVICIO+DLL. Si buscas por los foros encontrarás muchos hilos al respecto y posiblemente en el FTP encontrarás algún ejemplo: https://www.clubdelphi.com/foros/showthread.php?t=89341 https://www.clubdelphi.com/foros/showthread.php?t=48843 https://www.clubdelphi.com/foros/showthread.php?t=12776 https://www.clubdelphi.com/foros/showthread.php?t=20913 https://www.intitec.com/varios/delph...io_windows.pdf
__________________
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
|
|||
|
|||
|
Cita:
|
|
#3
|
|||
|
|||
|
Cita:
Los servicios se atienden a quien los pide, no se entremezclan y además puedes mandarles parámetros para identificar desde donde lo envías para que se registre. Última edición por ermendalenda fecha: 11-12-2024 a las 21:33:24. |
|
#4
|
|||
|
|||
|
Cita:
|
|
#5
|
||||
|
||||
|
Cita:
Es cuestión de buscar soluciones a los problemas. En nuestro caso hay un único Servidor de Base de Datos, pero puede haber varias Bases de Datos dentro de ese servidor. Cada base de datos es una empresa/obligado diferente (no se si es también tu caso); El servicio hace y una rueda y se va conectando a las diferentes Bases de Datos para enviar los datos de esa empresa. Una vez acabado se apunta en tiempo de espera (o el tiempo hasta el siguiente envío) para esa empresa. Es decir, en nuestro caso, un único servicio se encarga de todos los envíos de las diferentes empresas/obligados tributarios. Por ahora en el Thread principal, porque no contemplamos que la "rueda de envío" pueda tardar más de 60 sg. Actualmente se hace muy rápido. Si en su día esa "rueda de envíos" empezara a tardar mucho, nos planteamos crear Threads (ya lo tenemos pensado).
__________________
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. |
|
#6
|
|||
|
|||
|
Cita:
También estamos considerando hacer threads independientes para cada empresa (obligado tributario) para que se vayan enviando en paralelo las facturas de cada OT. Pero como es un proceso que se va ejecutando repetidamente, si hacemos threads asíncronos, el proceso volverá a iniciarse y podría ser que el anterior no hubiera terminado y dos procesos estuviesen intentando enviar las mismas facturas. No tengo claro como hacerlo, porque si espero a que termine un envío (proceso síncrono) ya no tengo procesos en paralelo... le tendremos que dar una vuelta. Saludos |
|
#7
|
||||
|
||||
|
De momento nosotros lo estamos controlando en desarrollo con un campo en la base de datos, cada vez que comienza un envío, se marca ese campo, y no se desmarca hasta que el propio proceso de envío lo desmarca al final, así si se intenta realizar un nuevo envío estando el campo marcado, no se permite.
El único problema que le veo a esto, que estoy pensando cómo solucionarlo, es que el proceso se interrumpa por cualquier motivo (un pantallazo azul de la muerte, por ejemplo) y no se desmarque el campo, y se queden las facturas sin enviar porque el proceso no arranca de nuevo. |
|
#8
|
|||
|
|||
|
Ojo con eso para no verifactu
Las bases de datos y datos tienen que estar claramente separadas para distintos obligados tributariosm Y según cono tengas el sif también para verifactu. |
|
#9
|
|||
|
|||
|
Cita:
Anda no sabia nada de eso. nosotros en principio solo haremos modo Veri*Factu. En cada tabla hay un campo que indica de que obligado tributario es esa información... eso sirve para lo que dices ermendalenda? |
|
#10
|
|||
|
|||
|
¿Puedes indicar en qué artículo del reglamento pone que esto es así?
|
|
#11
|
||||
|
||||
|
Cita:
No se que quiere decir eso. En un ERP con multiempresa puedes una Base de Datos con diferentes obligados tributarios. Creo que es lo habitual si piensas en empresas con varias sucursales, por ejemplo; o en un despacho/gestoría que gestiona N clientes.
__________________
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. |
|
#12
|
|||
|
|||
|
Cita:
|
|
#13
|
|||
|
|||
|
Cita:
Buenos días. A ver si alguien me puede dar alguna pista sobre el error que estoy teniendo. Yo hasta ahora tenía una dll que se encargaba de todo, el envío a la aeat, la respuesta, etc.... funcionando correctamente. Cuando he decidido crear un servicio que aproveche esta dll, mi sorpresa ha sido que no funciona correctamente, me da el siguiente error "Received content of invalid Content-Type setting: text/html - SOAP expects "text/xml". ¿ Alguien sabe algo de este error o me puede decir si se puede depurar un servicio en funcionamiento, para ver qué está pasando. ? Muchas gracias. |
|
#14
|
||||
|
||||
|
¿Estás llamado a la URL correcta?
Deberás añadir log, para ver más o menos dónde está fallando. CXreo que suele ser lo habitual, cuando el componente de envío no recibe una respuesta correcta al realizar la llamada, por ejemplo cuando la URL es incorrecta, pero sin saber algo más concreto es difícil.
__________________
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. |
|
#15
|
|||
|
|||
|
Hola. Buenos días.
La url que estoy enviando es : xxxxxhttps://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP sin las xxxxx Pero lo más curioso es que la dll es la misma, en un proyecto tengo una aplicación que llama a la dll y funciona correctamente y en el segundo proyecto que es el servicio hace exactamente lo mismo, pero la dll devuelve el error. He visto por ahí que hay que poner la propieda content-type del httprio en "text/xml; charset=utf-8" pero no lo veo en el componente por ningún sitio. No sé si lo tengo delante, pero no lo veo. |
|
#16
|
|||
|
|||
|
Cita:
En nuestro caso, ISCOPYME, nos salía ese error cuando no se enviaba correctamente el certificado electrónico. Si abres el navegador web, pegas esa URL y no seleccionas el certificado, la AEAT devuelve un HTML indicando el error 403. En nuestro caso, si el Delphi no encontraba el certificado, cuando hacía la petición al WebService sin él, también devolvía un HTML. ¡Espero que te sirva! Última edición por aleixep fecha: 11-04-2025 a las 08:31:32. Razón: Añadí un emoticono pero no se veía |
|
#17
|
|||
|
|||
|
Cita:
Muchas gracias. |
|
#18
|
|||
|
|||
|
Ya he averiguado el problema.
Lo pongo en vuestro conocimiento, por si a alguno le pasara. Por lo visto al crear el servicio se instala bajo la cuenta del usuario del sistema local, que parece ser no tiene privilegios de acceso al almacén de certificados de windows. Cuando he cambiado el usuario que inicia la sesión a un usuario con privilegios ya funciona correctamente. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Capturar id de maquina remota | mediaplanet | API de Windows | 3 | 18-05-2010 10:46:09 |
| Instalar un proceso de forma remota | fide_32 | API de Windows | 1 | 26-09-2008 10:08:42 |
| Ejecutar programa desde una maquina remota | rjsitruiz | Varios | 0 | 12-01-2005 16:55:19 |
| abrir un documento en una maquina remota | CarlosHernandez | API de Windows | 2 | 10-03-2004 21:47:14 |
| Nuevo Contacto en máquina remota | Igna | Servers | 1 | 21-01-2004 18:47:24 |
|