Migración de plugins antiguos

No existe el código perfecto. Crear un framework con nuevas funciones que sea compatible hacia atrás por los siglos de los siglos es el santo grial de los informáticos. Hasta ahora, nadie lo ha conseguido, y cada cierto tiempo es necesario romper la compatibilidad con plugins antiguos, a veces poco y otras, mucho.

🧰 fsmaker

Tenemos una herramienta en línea de comandos para simplificar el desarrollo de plugins y, entre las muchas opciones que tiene, está la opción upgrade, para hacer automáticamente los cambios necesarios para adaptar el plugin a la última versión de FacturaScripts:

⚙️ Cambios en la v2025

  • El requisito mínimo es ahora PHP 8.0.
  • 📌 Todos los plugins que tengan min_version < 2025 se consideran incompatibles.
  • Los modelos deben heredar ahora de Core/Template/**ModelClass** y usar Core/Template/**ModelTrait** (en lugar de los archivos de Core/Model/Base).
  • Los modelos que antes heredaban de ModelOnChangeClass deben heredar ahora de Core/Template/**ModelClass** (no pierden funciones, los nuevos modelos ya incorporan esos cambios). Cambia las menciones de $this->previousData[KEY] por $this->getOriginal(KEY).
  • El método clear() de los modelos debe terminar en void.
  • El método all() de los modelos ya no tiene el límite de 50 elementos por defecto.
  • Se ha reemplazado la clase Request de Symfony por una propia y compatible. Conoce nuestra nueva clase Request.
  • También hemos reemplazado la clase Response de Symfony por otra propia y compatible. Consulta la nueva clase Response.
  • En los listados se reemplazó code por codes para los checkbox. Además, ahora hay que usar $this->request->request->getArray('codes') para obtener el array.

⚙️ Cambios en la v2024

  • El requisito mínimo es ahora PHP 7.4.
  • La clase CronClass se encuentra ahora en Core/Template y ha sido rediseñada para facilitar la creación de tareas programadas.
  • La clase InitClass también se ha movido a Core/Template. Revisa la documentación del Init.php.

⚙️ Cambios en la v2023

  • El requisito mínimo es ahora PHP 7.3.
  • La clase Core/Base/**Cache** ha sido reemplazada por Core/Cache.
  • La función getClientIp() de la clase IpFilter ha sido reemplazada por la misma función en Core/Session.
  • La clase Core/App/**WebRender** ha sido reemplazada por Core/Html.
  • La clase Core/Base/**PluginManager** ha sido reemplazada por Core/Plugins.
  • La clase Core/Base/**DownloadTools** ha sido reemplazada por Core/Http.
  • La clase Core/App/**AppSettings** ha sido reemplazada por Core/Tools.
  • La clase Core/Base/**ToolBox** ha sido reemplazada por Core/**Tools**.
  • Las llamadas a i18n.trans() en las plantillas HTML han sido reemplazadas por trans().
  • Las llamadas a appSettings.get() en las plantillas HTML han sido reemplazadas por settings().
  • Las llamadas a fsc.toolBox().coins().format() en las plantillas HTML han sido reemplazadas por money().
  • Las llamadas a fsc.toolBox().numbers().format() en las plantillas HTML han sido reemplazadas por number().

⚙️ Cambios en la v2022

La versión 2022 requiere como mínimo PHP 7.2. Además, se puede requerir una versión superior de PHP desde el archivo facturascripts.ini del plugin. También se han abandonado los gidview y se han rediseñado los formularios de albaranes, facturas, pedidos, presupuestos y asientos.

📌 Min version >= 2020

Todos los plugins que tengan en su archivo facturascripts.ini un min_version menor que 2020 se consideran incompatibles con la versión 2022.

📌 Forzado del tipo de retorno en muchas funciones

Para reducir los errores de programación y facilitar las herramientas de análisis de código, se han forzado los tipos de retorno de muchas funciones. Por ejemplo, la función getPageData() de los controladores debe forzar el tipo de retorno array:

forzado tipo retorno php

La diferencia está en que getPageData(): array indica a PHP que lo que devuelve la función debe ser un array o, de lo contrario, debe detener la ejecución. Lo mismo aplica para la función getModelClassName() de los EditController, que debe forzar el retorno de string:

<?php
namespace FacturaScripts\Core\Controller;

class EditFabricante extends \FacturaScripts\Core\Lib\ExtendedController\EditController
{
    public function getModelClassName(): string
    {
        return 'Fabricante';
    }
}

En los modelos, se debe forzar el tipo de retorno de las siguientes funciones (si las tiene el modelo):

  • delete(): bool
  • install(): string
  • loadFromCode($code, array $where = [], array $order = []): bool
  • primaryColumn(): string
  • primaryDescriptionColumn(): string
  • tableName(): string
  • test(): bool
  • save(): bool
  • saveInsert(array $values = []): bool
  • saveUpdate(array $values = []): bool
  • url(string $type = 'auto', string $list = 'List'): string

🔄 Calculator sustituye a BusinessDocTool

Se ha reemplazado la clase BusinessDocTool para calcular los totales de facturas, albaranes, pedidos y presupuestos:

$tools = new BusinessDocumentTools();
$tools->recalculate($albaran);

Ahora se debe usar la nueva clase Calculator:

$lines = $albaran->getLines();
Calculator::calculate($albaran, $lines, true);

⚙️ Cambios en la v2020

Los modelos de más de una tabla, conocidos como ModelView, se renombraron a JoinModel.

⚙️ Cambios en la v2018

La versión 2018 es un rediseño completo, por lo que no tiene compatibilidad con la versión 2017 o anteriores. Hemos renombrado las carpetas existentes y añadido algunas nuevas. La nueva estructura queda así:

  • Controller: anteriormente llamada controller. Contiene todos los controladores del plugin.
  • Model: anteriormente llamada model. Contiene todos los modelos del plugin.
  • Table: anteriormente llamada model/table. Contiene los archivos XML con la estructura de cada tabla usada por los modelos del plugin.
  • View: anteriormente llamada view. Contiene las vistas HTML usadas por el plugin.
Cookies
Usamos cookies en nuestro sitio web para brindarte la experiencia más relevante recordando tus preferencias y visitas repetidas. Al hacer clic en "Aceptar", aceptas el uso de TODAS las cookies necesarias.
Copyright (c) 2013-2025 FacturaScripts
0.11943s

Soporte