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
- Abre tu navegador y ve a:
http://localhost/facturascripts - Sigue el asistente de instalación
- Configura la base de datos
- Crea el usuario administrador
- 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
- Ir al panel de administración
- Navegar a "Administración → Plugins"
- Buscar "Mi Primer Plugin" en la lista
- 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