FacturaScripts

Desarrollo de plugins para el ERP español de código abierto

¿Qué es FacturaScripts?

FacturaScripts es un software de facturación y contabilidad, ERP y CRM de código abierto desarrollado en PHP. Es la alternativa española a soluciones privativas, con una comunidad activa y gran flexibilidad para personalizaciones.

🚀 Características Principales

  • Facturación y presupuestos
  • Gestión de stock e inventario
  • Contabilidad y tesorería
  • CRM y gestión de clientes
  • Sistema modular con plugins

💻 Tecnologías

  • Backend: PHP 7.4+
  • Base de datos: MySQL/MariaDB
  • Frontend: HTML5, CSS3, JavaScript
  • Framework: Propio (MVC)
  • APIs: REST API incluida

Requisitos del Sistema

📋 Servidor Web

  • Apache 2.4+ con mod_rewrite
  • Nginx 1.14+ con rewrite rules
  • PHP 7.4 o superior (8.x recomendado)
  • MySQL 5.7+ o MariaDB 10.2+

🔧 Extensiones PHP

  • PDO MySQL
  • GD Library
  • cURL
  • OpenSSL
  • XML
  • ZIP

💾 Espacio en Disco

  • 200 MB para la aplicación
  • Espacio adicional para documentos
  • Backups automáticos

Instalación de FacturaScripts

Paso 1: Descargar FacturaScripts

Visita la página oficial de FacturaScripts y descarga la última versión estable.

O descargala haciendo click aquí Descargar y descarga la última versión estable.

# Descargar desde línea de comandos
wget https://facturascripts.com/DownloadBuild/1/stable

Paso 2: Descomprimir en el directorio correcto

Para XAMPP:

# Descomprimir en:
C:\xampp\htdocs\facturascripts\  (Windows)
/opt/lampp/htdocs/facturascripts/ (Linux)
/Applications/XAMPP/htdocs/facturascripts/ (macOS)

Para WAMPP:

# Descomprimir en:
C:\wamp\www\facturascripts\

Para servidores Linux:

# Descomprimir en:
/var/www/html/facturascripts/

Paso 3: Instalación web

  1. Abre tu navegador y ve a: http://localhost/facturascripts
  2. Sigue el asistente de instalación
  3. Configura la base de datos
  4. Crea el usuario administrador
  5. Completa la información de la empresa

Imágenes de prueba de Instalación


Instalación de extensión gd y zip en XAMPP


Estructura de Directorios

facturascripts/
├── Core/                 # Núcleo del sistema
│   ├── Base/            # Clases base
│   ├── Controller/      # Controladores
│   ├── Model/           # Modelos de datos
│   └── View/            # Vistas
├── Dinamic/             # Directorio para desarrolladores
│   ├── Controller/      # Controladores personalizados
│   ├── Model/           # Modelos personalizados
│   ├── View/            # Vistas personalizadas
│   └── Lib/             # Librerías personalizadas
├── Plugins/             # Plugins instalados
├── MyFiles/             # Archivos subidos y documentos
├── node_modules/        # Dependencias JavaScript
└── vendor/              # Dependencias PHP (Composer)

Arquitectura de Plugins

¿Qué es un plugin en FacturaScripts?

Un plugin es un módulo que extiende la funcionalidad base del sistema. Puede agregar:

  • Nuevos controladores (páginas)
  • Modelos de datos adicionales
  • Procesos automáticos (Cron jobs)
  • APIs personalizadas
  • Widgets para el dashboard

Estructura de un plugin

Plugins/
└── MiPlugin/
    ├── Controller/
    │   └── MiControlador.php
    ├── Model/
    │   └── MiModelo.php
    ├── View/
    │   └── MiVista.html
    ├── Lib/
    │   └── MiLibreria.php
    ├── Translation/
    │   └── es_ES.json
    └── facturascripts.ini

Activación y Prueba del Plugin

Paso 1: Activar el plugin

  1. Ir al panel de administración
  2. Navegar a "Administración → Plugins"
  3. Buscar "Mi Primer Plugin" en la lista
  4. Hacer clic en "Activar"

Paso 2: Verificar la instalación

Después de activar el plugin, deberías ver:

  • Nuevo elemento en el menú "Mi Plugin"
  • Nueva tabla en la base de datos
  • Posibilidad de crear registros en tu modelo

Paso 3: Probar la funcionalidad

Accede a tu nuevo controlador navegando al menú y verifica que:

  • La página carga correctamente
  • Puedes crear nuevos registros
  • Los datos se guardan en la base de datos
  • No hay errores en el log

Hooks y Extensiones

¿Qué son los Hooks?

Los hooks permiten extender la funcionalidad del core sin modificar los archivos originales.

Ejemplo: Hook para enviar email al crear factura

<? php
namespace FacturaScripts\Plugins\MiPlugin\Lib;

use FacturaScripts\Core\Base\Contract\SalesLineInterface;
use FacturaScripts\Core\Model\FacturaCliente;

class FacturaHook implements SalesLineInterface
{
    public function exec($model, $user) {
        if ($model instanceof FacturaCliente && $model->isInsert()) {
            $this->enviarEmailFactura($model);
        }
    }
    
    private function enviarEmailFactura(FacturaCliente $factura) {
    }
}

Solución de Problemas Comunes

Plugin no aparece en la lista

  • Verificar que el directorio tenga permisos de lectura
  • Comprobar que facturascripts.ini esté bien formado
  • Revisar los logs en MyFiles/Logs/
  • Forzar recarga de plugins desde Admin → Actualizar

Errores de base de datos

  • Verificar que el usuario de BD tenga permisos CREATE TABLE
  • Comprobar que no haya tablas con el mismo nombre
  • Revisar collation de la base de datos (utf8mb4)

Errores PHP

  • Activar modo debug en config.php
  • Verificar versión de PHP (mínimo 7.4)
  • Comprobar que todas las extensiones requeridas estén activas
  • Revisar memory_limit en php.ini

Mejores Prácticas

📁 Estructura de código

  • Seguir PSR-4 para autoloading
  • Usar namespaces correctamente
  • Mantener separación MVC
  • Documentar el código

🔒 Seguridad

  • Validar siempre datos de entrada
  • Usar consultas preparadas
  • Respetar permisos de usuarios
  • Sanitizar salidas HTML

🎯 UX/UI

  • Usar el sistema de plantillas de FacturaScripts
  • Mantener consistencia con el estilo del core
  • Hacer plugins responsive
  • Proveer traducciones

Recursos Adicionales