Hemos comenzado el desarrollo de FacturaScripts 2023 en la rama new-engine del repositorio en github.
Al contrario que con FacturaScripts 2018, este no será un rediseño desde cero, sino simplemente una actualización un poco más grande de lo habitual, pero sin romper demasiado. Y digo demasiado porque obviamente romperemos compatibilidad con algunas clases. El diseño del core no es lo suficientemente robusto o flexible para poder añadir nuevas funciones sin tener que romper compatibilidad en algunas ocasiones. En la ayuda tienes precisamente una sección sobre migración de plugins antiguos, para puedas ver qué hay que modificar de una versión a otra.
Antes de pasar a detallar los cambios que traerá la nueva versión, nos gustaría que te tomases unos minutos para meditar qué echas en falta en el core actual, a nivel de desarrollo, o qué cambiarías lo antes posible. En la nueva versión queremos facilitar el trabajo de todos los programadores, por lo que el feedback es importante.
Si tienes una propuesta concreta, puedes enviarla por cualquiera de estos medios:
Me gustaría que se añadiese la función trans() a twig, para no tener que estar llamando continuamente a i18n.trans() en las plantillas twig, y no tener que pasarlo como parámetro a las macros. Ejemplo de código:
{{ trans('save') }}
Se ha sustituido toda la parte de Core/App por un nuevo kernel, más limpio, rápido y con manejador de errores integrado, lo que nos permite poder lanzar excepciones en cualquier clase y que el kernel reaccione con un controlador concreto, que podemos personalizar desde los plugins.
Este nuevo kernel nos permite, por ejemplo, no conectar a la base de datos a menos que sea necesario (porque algún modelo quiera leer datos). Si en ese momento no puede conectar con la base de datos, la propia clase Database lanza una excepción concreta, que recibe el kernel y carga el controlador específico, en este caso el DatabaseError, que muestra la plantilla html con el error en pantalla.
Este pequeño cambio nos abre muchas puertas, además de aumentar el rendmiento. Ya no tenemos que hacer comprobaciones en cada petición, ahora podemos cortar la ejecución en cualquier momento lanzando una excepción, que nosotros mismos podemos controlar. El código también queda mucho más limpio, solo hay que ver el nuevo index.php
Tenemos el código plagado de llamadas a constantes como FS_FOLDER, FS_NF0, etc. Unas se definen en el config.php, otras las carga AppSettings, un lío. Además las herramientas de análisis de código muchas veces no encuentran dónde se definen y muestran errores. En esta nueva versión se ha añadido la clase Setup, que permite consultar estas constantes y también cargarlas desde el archivo config.php o bien desde variables de entorno, lo que abre la puerta a poder desplegar FacturaScripts en docker saltando el paso de la instalación y pasando los datos de configuración de la base de datos como variables de entorno.
Antes:
echo FS_TIMEZONE;
En 2023:
echo Setup::get('timezone');
A parte de no conectar a la base de datos a menos que sea necesario, solamente se comprobará y actualizará la base de datos cuando se instale o actualice. Hasta ahora cada vez que se inicializaba un modelo, se comprobaba la tabla correspondiente y se guardaba en una lista en caché, para no comprobar de nuevo cada vez. Pero la caché se refresca cada hora y de nuevo se volvía a comprobar la tabla. Para entornos pequeños nunca ha supuesto un problema, pero en entornos como megacity es un problema de rendimiento.
A partir de ahora la case DatabaseUpdater se encargará de comprobar y actualizar las tablas de la base de datos cuando se instala o actualiza (o cuando se pulsa reconstruir en el listado de plugins).
Hasta ahora solamente el controlador tenía cargado el usuario que ha iniciado sesión. Si desde otra clase queríamos consultar algo del usuario, debíamos pasarlo como parámetro desde el controlador. Este es un limitante en muchos escenarios y a menudo obliga a cambiar la lista de parámetros de algunas funciones, rompiendo la compatibilidad con otros plugins. Con la nueva clase Session podremos consultar desde cualquier otra clase datos relativos al usuario que ha iniciado sesión, así como la IP, obtener o validar tokens para formularios, etc.
Existen muchas tareas que tenemos que ejecutar, pero que no son imprescindibles en ese momento. Por ejemplo, cuando hacemos un asiento, debemos recalcular los saldos de las subcuentas, pero no es imprescindible en ese momento, podríamos hacerlo después. Para este tipo de situaciones necesitamos una forma de poder ejecutar tareas "en segundo plano". Esta función todavía no está implementada.
Aún faltan cosas por concretar, y recibir feedback de los programadores. No se espera romper demasiado la compatibilidad con esta nueva versión, pero si facilitar mucho el desarrollo. Quedamos atentos a vuestros comentarios y sugerencias ;-)
Con este curso aprenderás a gestionar el día a día de tu negocio con FacturaScripts: hacer facturas, albaranes, pedidos, presupuestos, gestionar clientes, proveedores, tarifas, usuarios, además de usar el informe de impuestos. ¿A quién va dirigido? A cualquier usuario que quiera aprender rápidamente el manejo diario del programa.
| 435 | 0,00 € |
¡Aprende a programar en PHP de manera fácil y divertida con nuestro curso básico! En este curso, te enseñaremos los conceptos fundamentales de la programación en PHP, incluyendo la sintaxis básica, el manejo de variables, estructuras de control de flujo y mucho más. Al terminar estarás listo para comenzar con el curso de creación de plugins para FacturaScripts.
| 63 | 5,00 € |
Con este curso aprenderás a diagnosticar y resolver los problemas más habituales de FacturaScripts: encontrar el origen de un error, recuperar el acceso cuando un usuario no puede iniciar sesión, aislar un plugin que da problemas, averiguar por qué va lento, reconstruir el Dinamic, solucionar fallos al actualizar, restaurar el core tras una actualización fallida, corregir problemas de impresión, de envío de emails, de subida de archivos y de codificación de la base de datos, comprobar que la tarea cron funciona, hacer y restaurar copias de seguridad y migrar la instalación a otro servidor. También verás cómo reportar un error para obtener una solución rápida. ¿A quién va dirigido? A administradores de FacturaScripts, técnicos de soporte y partners que mantienen instalaciones propias o de sus clientes. No necesitas saber programar, aunque te ayudará manejarte con el FTP y el panel de tu hosting.
| 2 | 14,99 € |
Aprenderás a crear y configurar documentos recurrentes en FacturaScripts, definir sus líneas y periodicidad, generar documentos manual y automáticamente, enviarlos por correo electrónico y trabajar con plantillas individuales o grupos recurrentes según las necesidades de cada cliente. También conocerás las opciones de importación y exportación mediante CSV para gestionar grandes volúmenes de recurrencias de forma más cómoda. El curso está dirigido a usuarios de FacturaScripts que quieran automatizar tareas administrativas repetitivas relacionadas con presupuestos, pedidos, albaranes o facturas periódicas, y especialmente a quienes ya han adquirido el plugin Documentos Recurrentes y quieren sacarle el máximo partido desde el primer momento, sin necesidad de conocimientos de programación.
| 0 | 9,99 € |
Este curso está dirigido a trabajadores de empresas que utilizan Recursos Humanos para registrar su jornada y consultar información relacionada con su trabajo. No necesitas conocimientos previos de FacturaScripts. Vamos a centrarnos en las funciones que puedes utilizar como empleado, sin entrar en la configuración ni en las tareas administrativas de la empresa. A lo largo del curso conocerás las distintas formas de fichar y de acceder a tu información personal. Veremos las distintas maneras que la empresa puede tener para registrar las entradas y las salidas, pudiendo en algunos casos registrar ausencias justificadas. También aprenderás cómo solicitar vacaciones, consultar tus documentos y revisar los vales o anticipos que tengas registrados, si tu empresa utiliza esas funciones. Al completar el curso, sabrás utilizar estas herramientas en tu día a día facilitándote la vida laboral.
| 1 | 5,00 € |
¿Sueles añadir los mismos productos o servicios cada vez que preparas un presupuesto, un pedido o una factura en FacturaScripts? Con ProductoPack puedes preparar esas combinaciones una sola vez y reutilizarlas mediante una referencia. En este curso aprenderás a crear y utilizar Packs, decidir cómo se muestran sus componentes en los documentos y elegir si el precio lo defines para el conjunto o se calcula a partir de los productos incluidos. También descubrirás cómo utilizar un Pack como plantilla de líneas y cuándo conviene trabajar con una Caja, que se vende y controla en stock como un producto propio. Al terminar, sabrás configurar ProductoPack para tus casos habituales, ahorrar la introducción repetitiva de líneas y elegir la modalidad adecuada para cada operación.
| 0 | 5,00 € |
Aprende a gestionar los inmovilizados de tu empresa y los préstamos bancarios con el plugin Amortizaciones para FacturaScripts, simplificando los cálculos, el seguimiento de importes pendientes y la generación de asientos contables. En este curso práctico aprenderás a crear y configurar inmovilizados, generar planes de amortización y contabilizar sus periodos. Trabajaremos con ejemplos habituales, como equipos informáticos, instalaciones, licencias de software y vehículos comerciales. También descubrirás cómo modificar planes existentes, continuar amortizaciones procedentes de otros programas y gestionar la venta o baja de un inmovilizado. Además, aprenderás a gestionar préstamos bancarios, calcular sus cuotas mediante el sistema francés y contabilizar por separado el capital y los intereses. Un curso de 8 capítulos, pensado para usuarios de FacturaScripts, con ejemplos paso a paso que te permitirán aprovechar las funcionalidades del plugin y gestionar tus amortizaciones de forma más sencilla y organizada.
| 1 | 8,99 € |
Estas empresas y profesionales apoyan económicamente FacturaScripts y nos ayudan a dedicar más tiempo al desarrollo, las pruebas y la documentación.
Si quieres impulsar nuevas mejoras y ayudar a que el proyecto siga creciendo, conviértete en patrocinador y forma parte de quienes lo hacen posible.
Patrocinar