Ambiente de DTE vía Servicios Web

Por alguna razón, no recuerdo cual, cuando diseñe la plataforma web de LibreDTE decidí que cada empresa podría seleccionar su ambiente. Esto significa que en la configuración de cada empresa está lo siguiente:

En la configuración de la empresa, pestaña “Facturación”, en LibreDTE

Con esto, cada empresa puede elegir, para un momento dado, si su empresa estaba en ambiente de pruebas/certificación o en ambiente real/producción.

El ambiente de pruebas, usa el servidor maullin del SII para enviar los datos. En cambio, el ambiente de producción, usa el servidor palena. Existen otros servidores, por ejemplo para boletas electrónicas, pero el procedimiento es el mismo. Se usa el servidor del SII que corresponda con el ambiente que está siendo usado.

En general, una vez que la empresa está en producción no debería tener mayores motivos para cambiar nuevamente a certificación. Pero como todo en la vida, hay excepciones. Los que se integran vía servicios web son una de ellas.

Los usuarios que usan los servicios web de LibreDTE de vez en cuando requieren hacer pruebas de integración, implementar un nuevo campo o simplemente probar una nueva funcionalidad. Hasta ahora, la única forma de hacer esto era haciendo las pruebas “fuera de horario”, cuando la empresa no usase LibreDTE para documentos reales y se pudiera cambiar en la configuración de la empresa al ambiente de pruebas.

Lo descrito no se acerca para nada al ideal. Siempre “faltó” una opción en los servicios web que permitiera decir qué ambiente se quería usar. Esa opción no existía y cuando algún cliente la solicitó se respondía lo mismo “es difícil de implementar”.

¿Y la verdad? Si, pensaba que era difícil de implementar. Pero como todo lo que hago con LibreDTE, al final era fácil. Sólo que no había considerado bien cómo hacerlo, hasta hace unos días y por fin se terminó de implementar el fin de semana pasado.

El problema puntual

LibreDTE almacena la configuración de ambiente en un atributo mágico del contribuyente llamado config_ambiente_en_certificacion es un atributo mágico porque es parte de los que inician su nombre por config_ En otro artículo me gustaría hablar en detalle de éstos.

Entonces, cada vez que se quería saber el ambiente en que estaba el contribuyente, se consultaba el atributo config_ambiente_en_certificacion Lo malo de esto, es que este atributo es estático, o sea, no cambia en la vida de ejecución de LibreDTE, a menos claro, que específicamente se modifique, lo cual, implica, por lo general, un cambio en la base de datos y es justamente lo que queremos evitar.

La solución

Muy simple la verdad. Consistió en crear un método enCertificacion() en la clase del Contribuyente donde ahora se verifica si hay una variable agregada en la URL, si existe se usa eso como ambiente. Si no existe se usa la configuración real del contribuyente.

Método creado que permite usar un ambiente diferente al de la configuración

Muy simple, ¿no?

Y ahora viene lo interesante, esta opción, con un método, ahora abre nuevas posibilidades, por ejemplo:

  • Poder leer el ambiente desde la sesión del usuario, así, diferentes usuarios, de la misma empresa, podrían estar funcionando al mismo tiempo en ambientes diferentes.
  • Forzar el uso de un ambiente en específico, por ejemplo, forzar que todas las empresas siempre estén en ambiente de pruebas. Esto sería útil para un servidor de demo dedicado sólo a mostrar LibreDTE.

Ninguna de estas 2 opciones están implementadas actualmente, principalmente porque no las necesitamos actualmente en la versión oficial. Pero si tu las necesitas, nos puedes contactar y lo cotizamos.

Un nota adicional, si bien la solución era muy simple, el método tiene apenas 4 líneas. Significó la edición más grande de LibreDTE en mucho tiempo, probablemente la más grande de todo el proyecto. Esto, porque fue necesario modificar todos y cada uno de los archivos que definían un ambiente que debían usar. Esos fueron muchos archivos modificados. Y no, no era posible hacer un simple “buscar y reemplazar”, habían casos donde no se podía modificar el método antiguo.

Ok… ¿y cómo uso esto vía servicios web?

¡Muy fácil!

Sólo debes pasar la variable _contribuyente_certificacion agregada a la URL con el ambiente que deseas usar.

  • 0 es ambiente de producción.
  • 1 es ambiente de certificación.

Recuerda, si no pasas la variable, se usará el ambiente configurado en la cuenta de la empresa.

Un ejemplo para forzar el ambiente a certificación al crear un DTE real a partir del temporal sería:

https://libredte.cl/api/dte/documentos/generar?_contribuyente_certificacion=1

¿Tiene dudas con este tipo de usos de los servicios web? Abre un ticket de soporte y te ayudamos.

Agregar un comentario

Su dirección de correo no se hará público.