Versión LibreDTE 20180101

¡Feliz año nuevo! Y como ya es costumbre, celebramos una fecha especial con una nueva versión de la biblioteca y aplicación web de LibreDTE.

Esta versión incluye mejoras en la programación de la aplicación, simplicidad para hacer cambios, integración y mejoras en el diseño del código.

Esta versión corrigió un BUG grave asociado a boletas. También había un problema de rendimiento en facturas de exportación. Si usas algunos de estos ¡debes actualizar tu versión de LibreDTE!

Lo más relevante:

  • Biblioteca:
    • Se agrega, y normaliza, información de OtraMoneda de un DTE.
    • Correos en boletas son colocados como referencias (no hay tag para correo en boleta, el que hay se usa para el teléfono). Con esto, el correo saldrá en el PDF como una referencia.
    • Se actualizó esquema de DTE para poder usar tipo de transacción de compra y venta.
    • Se normaliza forma de pago cuando es DTE de exportación (entrega gratuita se mapea al código 21 de aduanas).
    • Ejemplo de consumo de folios de boletas incluye caso para generar consumos vacíos si no se indican documentos.
    • Se permite colocar el timbre/total/acuse inmediatamente debajo del detalle en el PDF, y no al pie de la página (esto en hoja carta).
    • Se puede generar libro de guías sin guías de ventas (antes daba error).
    • Se modifica parser de set de prueba para incluir OtraMoneda en el set de exportación.
    • Es posible crear XML con un namespace en los tags.
    • Se agrega flag para enviar DTE comprimido al SII.
    • Se corrige ancho de timbre en papel continuo para que sea lo más grande posible.
    • Se agrega referencia de entrada de mercadería (EM).
    • Fix al haber DTE sin comuna emisor en creación PDF (útil para XML de DTE que no son generados por LibreDTE y vienen sin ese tag).
    • Se crea método para obtener las referencias de un DTE.
    • Se contabiliza el impuesto a vehículos.
  • Aplicación web (y módulo facturación):
    • Se puede obtener configuración de empresa vía servicio web.
    • Se añade tipo de cambio a DTE de exportación según exigencia del SII. Si se crea un DTE de exportación y no se indicó el tipo de cambio ni se puede determinar de manera automática, no será posible crear el DTE. Más información en el blog.
    • Cotizaciones ahora podrán tener las personalizaciones básicas del PDF de hoja carta que se aplicaban a DTE reales.
    • Se puede obtener vía API los folios sin uso en la aplicación (entre el primero emitido y el último emitido).
    • Es posible configurar para colocar el timbre del PDF  hoja carta inmediatamente debajo del detalle, sin dejar espacio en blanco entre el detalle y el timbre.
    • Se crea un nuevo sistema para manejar las API a las que LibreDTE tiene acceso, esto permite definir API personalizadas por cada APP fácilmente y consultarlas en el objeto del contribuyente con Contribuyente::getApiClient() (ver anexo).
    • Es posible personalizar al 100% el PDF del DTE con un servicio web (ver anexo).
    • Se crean triggers y se limpia el código de la versión liberada de código que está sólo en versión oficial (ver anexo).
    • Se crea método para obtener enlaces públicos de las cotizaciones o documentos emitidos (xml y pdf).
    • Se puede definir una cuota de registro de empresas por usuario.
    • Se puede indicar si usar papel continuo o no al descargar el PDF por GET, parámetro papelContinuo, esto permite especificar sin tener que modificar la configuración el tipo de papel a descargar el PDF.
    • Se corrigió BUG grave que permitía eliminar boletas emitidas reales (si usan boletas, es obligatorio actualizar a esta versión por este BUG).
    • Es posible configurar el modelo que representa el Contribuyente. Esto permite crear un nuevo modelo que herede del contribuyente y tener este modelo extendido disponible en la aplicación (muy útil al crear módulos nuevos en una extensión).
    • Corregido un problema de rendimiento al hacer búsquedas en documentos emitidos si existían DTE de exportación. Esto generaba que se requirieran varios segundos para listar los DTE emitidos.
    • Se mejora detección automática de estado de los DTE (incluyendo más casos).
    • Se agrega referencia personalizada “EM: entrega de mercadería” a la lista de referencias en página de emisión de DTE.
    • En la vista del intercambio, pestaña avanzado, se puede ver un resumen de los documentos del intercambio.
    • Se detecta donde viene el correo en los datos del receptor, usuarios de API u otros DTE pueden enviar el dato en un tag que es para teléfono. Sobre todo aquellos que usan boletas.
    • Se agregaron exportaciones a la propuesta del F29.
    • Se mejoró el error que se obtiene al no poder solicitar timbraje electrónico desde LibreDTE (requiere acceso a servicios web oficiales de www.libredte.cl)
    • Se puede agregar NumId al emitir un DTE de exportación.
    • Se puede ver el estado de los folios sin uso y anularlos directamente en LibreDTE sin entrar al SII (requiere acceso a servicios web oficiales de www.libredte.cl).
    • Mejoras pequeñas para dispositivos móviles (en el futuro se harán más).
    • Se puede crear un menú personalizado para el contribuyente (ver anexo).
  • Framework (estos cambios son genéricos y afectan a la aplicación web):
    • Usuario tienen configuración extendida, igual que los contribuyentes (se debe aplicar cambio en BD, revisar script actualización).
    • Soporte de triggers (explicados antes, ver anexo).
    • Soporte para una nueva capa de la aplicación, una extensión que va sobre la capa website. Esto permite personalizar la aplicación, sin realizar cambios al código de la aplicación (ver anexo).
    • Soporte para 2FA (ver anexo).
    • Se actualizó a Font Awesome 5. Si tienen modificaciones o requieren migrar, se recomienda usar el script de migración.

Hay cambios en la base de datos, revisar script de actualización 20180101.sql en website/Module/Dte/Model/Sql/updates

Recuerden además actualizar el framework SowerPHP, muchos de los cambios requieren una versión actualizada del framework.

Junto a esta versión se publicó una nueva versión de los términos, condiciones de uso y licencia del proyecto LibreDTE. Son básicamente los mismos de antes, pero redactados por nuestro abogado. Se recomienda revisar la nueva versión de estos en la página de términos, condiciones de uso y licencia del proyecto LibreDTE.

Si tienen dudas pueden escribir al foro o si tienes soporte oficial de SASCO SpA abrir un ticket en https://soporte.sasco.cl/open.php (tema: Facturación electrónica / Servicio Local)

Anexo: nueva capa sobre website (extensión personalizada)

La nueva versión del framework incorpora la posibilidad de incluir una capa sobre website. Esta era la capa superior de la aplicación, la que más arriba podía estar y por ende la que mayor preferencia tenía. Sin embargo ahora es posible “pisarla”.

Poder colocar una capa nueva sobre website permite a los desarrolladores dar prioridad a una extensión que desarrollen y de esta forma controladores, vistas y otras funcionalidades son obtenidas de esta capa superior en vez de website u otras inferiores.

Esto resuelve el problema: deseo modificar LibreDTE, pero al hacerlo ya no puedo actualizar.

Cuando se hacen cambios en el código de LibreDTE, es complicado luego llevar un registro de estos cambios para aplicar las nuevas actualizaciones. Con esta capa nueva, ya no será necesario modificar LibreDTE directamente, sino que bastará crear una extensión nueva y colocarla sobre website. Con esto los cambios se hacen en la extensión quedando separados del resto de LibreDTE y permitiendo seguir actualizando sin problemas.

En la extensión podrán personalizar funciones, métodos, clases, controladores y vistas. Incluso algunos modelos (como el del Contribuyente). También, y sobre todo para modificar comportamiento en otros modelos, podrán definir los triggers que quieren procesar.

Se irán publicando ejemplos a medida que los vayan solictando en:

https://github.com/LibreDTE/libredte-webapp-ejemplos-extensiones

Si quieres hacer algo en específico con una extensión de LibreDTE y no sabes cómo, pregunta en el foro o bien abre una issue aquí para que el ejemplo sea creado.

¡Haremos muchos ejemplos! Pero sólo si los piden.

Anexo: API servicios web del contribuyentes

Es posible definir servicios web a los que LibreDTE puede acceder, servicios que están en el control del contribuyente. De esta forma se pueden crear servicios externos y LibreDTE se conecta a ellos. Se definió una forma estándar de definirlos, de esta forma se pueden crear N servicios sin modificar el código, sólo la configuración.

Si quieres habilitar servicios agrega la configuración correspondiente al core.php Puedes basarse en la del servicios web de items disponible aquí.

Anexo: personalización PDF con servicio web

Es posible que cada empresa defina un servicio web propio para la generación del PDF, si lo hace, se usará en todos lados ese servicio web en vez del formato local. Esto permite personalizar al 100% el PDF y que salga con cualquier formato que el contribuyente desee.

Para esto se debe crear un servicio web, que tenga las mismas entradas y salida que el servicio web oficial de LibreDTE. Hay un ejemplo en el repositorio que muestra como hacer este servicio web en PHP:

https://github.com/LibreDTE/libredte-pdf

Se debe definir la configuración del servicio web para que el sistema lo permita configurar de la siguiente forma.

Más información en https://blog.libredte.cl/index.php/2017/10/06/personaliza-el-pdf-de-tus-dte-como-quieras/

Anexo: triggers

Se define un sistema de triggers que permite lanzar acciones bajo ciertas circunstancias. Los que existen actualmente:

  • dte_documento_emitido: se ejecuta cuando se emite un DTE vía API,  después de guardar el DTE temporal.
  • dte_documento_generado: se ejecuta cuando se genera un DTE real (se pasa de temporal a real)
  • dte_dte_tmp_guardar: se ejecuta antes de guardar el DTE temporal
  • dte_dte_emitido_guardar: se ejecuta antes de guardar un DTE emitido (real)
  • dte_dte_recibido_guardar: se ejecuta antes de guardar un DTE recibido.
  • dte_dte_tmp_emails: se ejecuta al solicitar los correos electrónicos
    de un DTE temporal (permite agregar correos de una fuente diferente)
  • dte_dte_emitido_emails: se ejecuta al solicitar los correos
    electrónicos de un DTE real (permite agregar correos de una fuente
    diferente)
  • dte_dte_emitido_eliminar: se ejecuta antes de eliminar un DTE real
    (sólo en casos que se permite eliminar, rechazo del SII generalmente)

La información de los triggers originalmente fue publicada en https://groups.google.com/forum/#!searchin/libredte/triggers%7Csort:date/libredte/O5s02uW9R2A/SIsoDs7NAgAJ

Si quieren pedir uno nuevo, pueden hacerlo en el foro o abriendo una issue en github.

Anexo: 2FA

Ahora, adicional a Latch, es posible configurar 2FA para las cuentas de usuarios. Para activar esta opción agregar la siguiente configuración a core.php

// Configuración para autorización secundaria
\sowerphp\core\Configure::write(‘auth2’, [
‘2FA’ => [
‘app_url’ => ‘www.libredte.cl’,
],
]);

La dirección www.libredte.cl se cambia por la URL de la APP real.

Además, cada empresa podrá exigir que el usuario use 2FA antes de seleccionar la empresa para operar con ella. Esto es configurable por empresa.

Más información en https://blog.libredte.cl/index.php/2017/12/23/autenticacion-secundaria-2fa-y-latch/

Anexo: menú personalizado por contribuyente

Es posible definir un menú estándar para los contribuyentes, esto en la configuración se define aquí. Este menú será para todas las empresas por igual.

Adicionalmente, cada empresa puede definir su propio menú, reemplazando el estándar. Esto se hace en la configuración de la empresa, pestaña General.

Agregar un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *