Frequently Asked Question
Aquí veremos documentación destinada a desarrolladores que quieran participar mejorando el proyecto LibreDTE, ya sea corrigiendo bugs, añadiendo nuevas funcionalidades o simplemente entender cómo está construido el proyecto.
Si se requiere documentación del framework usado para construir LibreDTE se recomienda revisar el wiki de SowerPHP.
Componentes
A continuación se explica la arquitectura de los software y proyectos necesarios para que la aplicación web de LibreDTE funcione. En la siguiente imagen se encuentra desde el sistema operativo hasta la aplicación web.

La arquitectura se divide en 3 partes fundamentales que se requieren para que LibreDTE funcione: sistema operativo, framework SowerPHP y LibreDTE. A continuación se explica cada una.
Sistema Operativo
Este define los requerimientos de software del sistema operativo y sus servicios para que el proyecto funcione de forma correcta. Los componentes son:
- Apache: servidor web
- PHP: intérprete para el lenguaje PHP
- PostgreSQL: base de datos oficialmente soportada (existe un soporte limitado para MySQL/MariaDB)
- Memcached: no es obligatorio, pero si está habilitado permite:
- Tener exportación automática desde tablas a diferentes formatos de archivos.
- Optimizar ciertas consultas que se realizan a la base de datos guardando objetos en la caché.
SowerPHP
SowerPHP es el framework utilizado para hacer el desarrollo de los módulos y la aplicación web de LibreDTE. El framework es software libre compatible con LibreDTE y es mantendido por SASCO SpA (al igual que LibreDTE).
Los componentes usados del framework están divididos en dos partes: el framework en sí y dos extensiones:
- Framework SowerPHP: proporciona las funcionalidades básicas para poder crear un sitio web en PHP.
- Extensión general: contiene una capa extra que extiende las funcionalidades el bases del framework. Por ejemplo proporciona el los helpers para crear tablas o formularios.
- Extensión app: contiene una capa extra (que hace uso de la extensión general) y entrega las funcionalidades para poder construir una aplicación web. Por ejemplo proporciona la autenticación de usuarios y el sistema de servicios web.
Puedes encontrar más información del framework en el wiki de SowerPHP.
LibreDTE
La aplicación web de LibreDTE está conformada por 4 proyectos diferentes, 3 de estos proyectos son contenidos dentro del proyecto aplicación web. Los componentes son:
- Biblioteca: provee las funcionalidades básicas para la interacción con el SII, no entrega interfaces gráficas.
- Módulo Dte: provee la interfaz gráfica para la emisión de los DTE, este módulo hace uso de la biblioteca para la emisión de los documentos.
- Módulo Lce: provee el módulo de contabilidad (disponible sólo en Versión Oficial).
- Aplicación web: es el contenedor principal que contiene los módulos Dte/Lce, administra las dependencias de la biblioteca. Este proyecto es el directorio project del framework SowerPHP (la aplicación web en sí que usa directamente el framework).
Servidores
Si por motivos de rendimiento, protección u otro se desea separar en diferentes servidores la aplicación, la siguiente imagen muestra un ejemplo de cómo puedes realizar la separación.

Servidor 1: web
Este servidor ofrecerá la aplicación web, esto es todo lo asociado a los proyectos LibreDTE y SowerPHP. No es posible realizar una separación entre el backend y el frontend ya que el framework PHP es el que genera las vistas de la aplicación a través de código PHP directamente.
Servidor 2: base de datos
Es posible separar la base de datos del servidor donde se encuentra corriendo la aplicación. En este caso se deberán configurar los datos de la conexión a la base de datos en el archivo Config/core.php
\sowerphp\core\Configure::write('database.default', [ 'type' => 'PostgreSQL', 'host' => '192.168.1.20' 'port' => 5432, 'user' => '', 'pass' => '', 'name' => 'libredte', ]);
Servidor 3: caché
El servidor de caché permite reducir las consultas a la base de datos y guardar temporalmente los datos de tablas que se desean exportar. Si se desea utilizar un servidor memcached separado de la aplicación web se debe crear la configuración en Config/core.php
\sowerphp\core\Configure::write('cache.default', [ 'host' => '192.168.1.21', 'port' => 11211, ]);