Integración desde un lenguaje que no consume servicios web
La integración con la aplicación web de LibreDTE se hace consumiendo los servicios web de www.libredte.cl. Estos servicios web tienen una documentación en https://developers.libredte.cl/ y en general, cualquier lenguaje que permita la conexión a servicios web de manera “fácil” debería usar siempre este método.
Sin embargo, hay lenguajes, como Clipper, donde el consumo de servicios web es muy difícil, o imposible. Uno podría pensar que en estos casos no es posible consumir los servicios web, pero si es posible.
Para estos casos la alternativa es usar un programa intermediario, un middleware, entre su sistema y LibreDTE. Este programa lo puede generar cada integrador en un lenguaje que si permita conexión a servicios web o bien se puede usar nuestro cliente de escritorio, es una buena idea usar el cliente nuestro porque ya está listo. Sin embargo, tendrá limitaciones en cuánto a qué podrá consumir desde los servicios web de LibreDTE.
MIDDLEWARE: mayo 2015
El middleware permite unir su sistema con LibreDTE
El cliente de escritorio de LibreDTE es un programa escrito en Python que se ejecuta en el computador donde está el sistema que se desea conectar. De tal forma que cuando el sistema desea generar un DTE, o cualquier otra comunicación con LibreDTE, se comunica con el middleware y este a su vez se comunicará con los servicios web de LibreDTE.
Lo primero es instalar este cliente, para esto las instrucciones están detalladas en https://github.com/LibreDTE/libredte-cliente Es importante seguir la guía paso a paso, sin saltarlos, ya que todos son importantes.
Una vez se tiene el cliente de escritorio instalado, lo segundo es definir el formato de los datos que se enviarán. Para esto hay 2 alternativas:
Formato oficial en JSON, XML o YAML: son los formatos oficiales de LibreDTE que tienen como principal ventaja usar la misma estructura de los archivos del SII. Por esta razón es muy recomendado usarlos, ya que usan la misma documentación del SII para facturas y boletas. A estos formatos podemos dar soporte, ya que los conocemos y son los que usamos nosotros.
Formatos no oficiales: LibreDTE permite el uso de formatos de otros proveedores, por ejemplo, algunos clientes usan el formato de Acepta. Sin embargo, en este caso no podemos dar el soporte, sólo entregar la documentación, ya que no es un formato oficial de LibreDTE.
Ejemplo de boleta en formato YAML
Una nota muy importante para el formato YAML, los espacios son muy importantes, ya que esos definen la anidación. Por lo cual, si se usa ese formato, se debe respetar la indentación. Acá hay detalles sobre YAML https://es.wikipedia.org/wiki/YAML
Tercero, qué modo usará para procesar los archivos, hay 2 alternativas:
Llamar al cliente desde el sistema que se está conectando. Esto se puede hacer con una llamada a “system”, “exec”, “run” o similar, según el lenguaje usado. En este caso se usa el comando dte_generar del cliente de LibreDTE. Tiene como ventaja que es el sistema el que inicia la ejecución del comando y entrega más control
Usar el modo monitor, con el comando monitor. Este modo escaneará una carpeta y cuando detecte un archivo lo tomará y lo procesará. Requiere menos intervención al sistema, pero requiere tener el cliente funcionando siempre “escuchando” nuevos archivos. En general, no se aconseja esta forma, sólo si no es posible usar la anterior.
Cuarto, listo. Si, esto es todo. Una vez que se tienen esos 3 pasos, la integración está completa.