Ayer por la tarde un usuario nos escribió con dos mensajes de error que le salían en AIDocumentos:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') FROM 1 FOR 7) AS mes, COUNT(*) AS total, COUNT(CASE WHEN estado = 'importad...'
Estaba corregido y publicado esta mañana. Pero lo interesante no es el arreglo, que son cuatro líneas: es por qué no lo habíamos visto nosotros.
FacturaScripts funciona sobre PostgreSQL y sobre MySQL/MariaDB. Los dos hablan SQL, pero no exactamente el mismo SQL.
La pantalla de métricas de AIDocumentos agrupa los documentos por mes. Para eso recortaba los siete primeros caracteres de la fecha, así:
SUBSTRING(CAST(fecha AS VARCHAR) FROM 1 FOR 7)
En PostgreSQL funciona. En MySQL y MariaDB no existe el tipo VARCHAR dentro de un CAST — ahí se llama CHAR — así que el servidor rechaza la consulta entera. No es que devuelva un dato raro: es que no llega a ejecutarse, y la pantalla no se pinta.
Nuestro entorno de pruebas es PostgreSQL. Todas las pruebas pasaban. Y el plugin estaba roto para todo el que use MariaDB, que en hostings compartidos es la mayoría.
Un fallo así nunca viene solo. Buscando el mismo patrón en los 25 plugins apareció otro caso, en btransfer, y este era peor: el mismo SQL de PostgreSQL, pero envuelto en un try/catch para que la pantalla no se rompiera. Resultado en MariaDB: el recuadro de «envíos de este mes» mostraba 0 envíos, 0 archivos, 0 bytes aunque hubieras enviado diez cosas esa semana.
Un error visible es molesto. Un cero silencioso es peor: nadie escribe para preguntar, simplemente deja de fiarse del plugin.
Arreglar dos consultas es lo de menos. Lo que hacía falta era dejar de ser ciegos a esta familia entera de fallos, y para eso van tres cosas:
1. Un segundo entorno de pruebas sobre MariaDB. Ahora hay dos instalaciones de FacturaScripts que comparten la misma carpeta de plugins: una sobre PostgreSQL y otra sobre MariaDB. Lo que se arregla vale para las dos, y las dos se prueban antes de publicar nada.
2. Los 46 controladores se montan contra los dos motores. No solo las consultas escritas a mano: cada pantalla de cada plugin levanta sus vistas contra MariaDB y se comprueba que ninguna suelta un error de sintaxis.
3. Un revisor que no deja pasar SQL de un solo motor. Busca en el código los sospechosos habituales de los dos lados — CAST(... AS VARCHAR), ::text, ILIKE, DATE_TRUNC, TO_CHAR de PostgreSQL; DATE_FORMAT, IFNULL, GROUP_CONCAT, LIMIT a,b de MySQL — y si encuentra uno, no se publica.
Si usas MySQL o MariaDB y te salían esos mensajes en AIDocumentos, actualiza a la 9.3. Si usas btransfer y el recuadro del mes te salía a cero, actualiza a la 2.3. En los dos casos: Panel de control > Plugins > Actualizar. No se pierde nada, ni hace falta tocar la configuración.
Si usas PostgreSQL, nunca te afectó ninguno de los dos.
Este fallo lo encontró un usuario que se tomó la molestia de copiar el mensaje de error y mandarlo, en vez de desinstalar y seguir con su día. Si algo no te cuadra en cualquiera de nuestros plugins, dilo: se arregla antes de lo que parece.
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.
| 418 | 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,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 € |
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