Sistema de contabilidad empresarial multi-empresa, multi-ejercicio fiscal, desarrollado en Laravel 12 con terminología contable venezolana (VEN-NIF).
- Multi-empresa / Multi-ejercicio fiscal — Aislamiento total por empresa y ejercicio mediante sesión y middleware de contexto
- Plan de Cuentas jerárquico VEN-NIF — 39 cuentas predefinidas con estructura de niveles auto-referenciada
- Contabilidad de Doble Entrada — Debe = Haber obligatorio en cada comprobante
- Comprobantes — Creación, edición y eliminación de asientos contables con máscara contable configurable
- Libros Contables — Libro Diario, Libro Mayor (Legal y normal), Balance de Comprobación jerárquico
- Reportes Financieros — Balance General, Estado de Resultados, Comparativos (hasta 3 ejercicios), Variaciones (análisis horizontal)
- Cierre de Ejercicio — Completo con pre-apertura, reversión y consolidación de saldos
- Exportación/Importación — JSON (Plan de Cuentas, Configuración, Estructura ER) e importación desde Otra Empresa
- PDF — Generación de documentos fiscales con DOMPDF y soporte Unicode
- Blindaje Mensual — Bloqueo de meses para prevenir registros no deseados
- Autenticación — Login/Register custom con roles: Administrador, Contador, Auxiliar
| Capa | Tecnología |
|---|---|
| Backend | PHP 8.3, Laravel 12 |
| Frontend | Blade (MPA), Livewire v4.3, Alpine.js, Tailwind CSS v4, Vite |
| Base de Datos | MySQL 8.4, DECIMAL(18,4) para montos |
barryvdh/laravel-dompdf v3.1.2, fuente dejavu sans |
|
| Auth | Custom (sin Breeze/Jetstream) |
| Servidor | Apache con .htaccess (dual-URL: http://contabilidad / http://localhost/contabilidad) |
contabilidad/
├── app/
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── Auth/ # LoginController, RegisterController
│ │ │ └── Web/ # Controladores web del ERP (11)
│ │ └── Middleware/ # ValidarContextoWeb, ValidarContextoWebEjercicio
│ ├── Livewire/ # Componentes Livewire (21+)
│ │ ├── CierreEjercicio/ # EjecucionCierre
│ │ ├── ComprobanteForm.php # Formulario de comprobantes
│ │ ├── Configuracion/ # CrearEmpresa, AjustesEmpresa, etc.
│ │ ├── Cuentas/ # ExportarJson, ImportarJson, ImportarDesdeEmpresa
│ │ ├── Operaciones/ # ComprobanteExcel, CargaSaldosIniciales, etc.
│ │ ├── Reportes/ # 13 componentes de reportes
│ │ └── PlanCuentas.php
│ ├── Models/ # 12 modelos Eloquent
│ ├── Services/ # 9 servicios de negocio
│ └── helpers.php # Funciones auxiliares (formato_monto)
├── config/
│ ├── dompdf.php # Configuración de PDF (fuente dejavu sans)
│ └── ...
├── database/
│ ├── migrations/ # 35 migraciones
│ ├── seeders/ # DefaultAdminSeeder, PlanCuentasSeeder, etc.
│ └── ...
├── resources/
│ ├── views/
│ │ ├── layouts/ # app.blade.php (sidebar, header)
│ │ ├── pdf/ # 7 plantillas PDF
│ │ └── ...
│ └── ...
├── routes/
│ └── web.php # 187 líneas de rutas
├── backup-contabilidad.sql # Respaldo de base de datos
└── .htaccess # Rewrite rules para dual-URL
| Modelo | Tabla | Relaciones |
|---|---|---|
Empresa |
empresas |
hasMany EjercicioFiscal, hasMany Configuracion |
EjercicioFiscal |
ejercicios_fiscales |
belongsTo Empresa, hasMany Comprobante, hasMany BloqueoMensual |
CuentaContable |
cuentas_contables |
belongsTo Empresa, belongsTo self (padre), hasMany self (hijos) |
Comprobante |
comprobantes |
belongsTo Empresa, EjercicioFiscal, TipoComprobante, hasMany AsientoContable |
AsientoContable |
asientos_contables |
belongsTo Comprobante, CuentaContable, Tercero |
Tercero |
terceros |
belongsTo Empresa |
TipoComprobante |
tipos_comprobantes |
hasMany Comprobante |
BloqueoMensual |
bloqueos_mensuales |
belongsTo EjercicioFiscal |
SaldoCuentaEjercicio |
saldos_cuentas_ejercicios |
Saldo inicial + acumulado por cuenta/año |
EstructuraEstadoResultado |
estructuras_estados_resultados |
Configuración de ER por empresa |
User |
users |
roles: Administrador, Contador, Auxiliar |
- Empresas — CRUD completo con creación unificada (Empresa + Primer Ejercicio)
- Ejercicios Fiscales — Gestión de años fiscales con soporte para ejercicios cortos y pre-apertura
- Plan de Cuentas — Jerárquico con 39 cuentas VEN-NIF, importación/exportación JSON
- Terceros — Clientes y proveedores con RIF venezolano validado
- Estructura de Estado de Resultados — Configuración personalizable
- Comprobantes — Creación con máscara contable, búsqueda de cuentas/terceros, balanceo automático
- Carga de Saldos Iniciales — Grid editable tipo Excel para nuevas empresas
- Blindaje Mensual — Preventivo de registros en meses bloqueados
- Importación Saint — Comprobantes desde formato Saint
- Balance General — Jerárquico con subtotales por grupo, toggle de código
- Estado de Resultados — Con cuentas expandibles,
etiquetafallback - Balance de Comprobación — Jerárquico con 6 tipos contables + Orden, Debe = Haber
- Libro Diario — Formato legal venezolano
- Libro Mayor — Formato legal y normal
- Comparativos — Balance General y Estado de Resultados multi-año (hasta 3)
- Variaciones — Análisis horizontal de 2 ejercicios
- PDF — Generación de todos los reportes en formato legal (oficio)
- Ejecución de Cierre — Traslado de resultados, consolidación de Superávit/Déficit
- Pre-Apertura — Creación anticipada del ejercicio siguiente (
estado=pre_apertura) - Reversión — Deshacer cierre y restaurar ejercicio anterior
- PHP 8.3+
- MySQL 8.4+
- Composer
- Node.js 20+
- Apache con mod_rewrite
# 1. Clonar el repositorio
git clone <URL_DEL_REPO> contabilidad
cd contabilidad
# 2. Restaurar la base de datos
mysql -u root -p -e "CREATE DATABASE contabilidad;"
mysql -u root -p contabilidad < backup-contabilidad.sql
# 3. Configurar .env
cp .env.example .env
# Editar: APP_URL, DB_DATABASE, DB_USERNAME, DB_PASSWORD
# 4. Instalar dependencias PHP
composer install
# 5. Instalar dependencias JS
npm install && npm run build
# 6. Generar clave de aplicación
php artisan key:generate
# 7. Iniciar el servidor
php artisan serveNota: La base de datos ya viene cargada con datos reales. Evitar
migrate --seedpara no duplicar datos.
- Usuario: admin
- Rol: Administrador
El sistema soporta dos URLs de acceso:
| URL | Configuración |
|---|---|
http://contabilidad |
Virtual Host Apache |
http://localhost/contabilidad |
Alias Apache + .htaccess |
- Terminología venezolana: Plan de Cuentas, Comprobante/Asiento, R.I.F., Descripción/Concepto, IVA/ISLR
- Formato de montos:
1.234.567,89(punto como miles, coma como decimal) - Motor de saldos:
saldo = saldo_inicial + movimientos_del_año(excluyendo asientos de cierre) - Contexto: Sesión con cookie
contabilidad_ctx(30 días) para empresa + ejercicio activo - Codificación: UTF-8 sin BOM en todos los archivos
.blade.php - PDF: Paper
legal(oficio), fuentedejavu sans, compact CSS (9pt)
| Servicio | Función |
|---|---|
ComprobanteService |
Creación, actualización y validación de comprobantes |
CierreEjercicioService |
Cierre fiscal, traslado de resultados, consolidación, creación de nuevo año |
BalanceService |
Cálculo de balances y estados financieros |
MayorService |
Generación del Libro Mayor |
DiarioService |
Generación del Libro Diario |
MascaraContableService |
Gestión de máscaras contables (ej: 9.99.99.999) |
ImportacionCuentasService |
Importación de plan de cuentas |
LibroDiarioBalanceService |
Balance para libro diario |
El sistema valida el contexto contable mediante un pipeline de middleware:
auth— Autenticación del usuariocontexto.web— Restaura empresa y ejercicio desde la cookiecontexto.web.ejercicio— Valida que existe ejercicio activo
Para la migración desde Windows/XAMPP a Ubuntu, consultar MIGRACION.md.
MIT License.