Initial commit: Horux Strategy Platform
- Laravel 11 backend with API REST - React 18 + TypeScript + Vite frontend - Multi-parser architecture for accounting systems (CONTPAQi, Aspel, SAP) - 27+ financial metrics calculation - PDF report generation with Browsershot - Complete documentation (10 documents) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
241
docs/06-base-de-datos.md
Normal file
241
docs/06-base-de-datos.md
Normal file
@@ -0,0 +1,241 @@
|
||||
# 6. Base de Datos
|
||||
|
||||
## Diagrama Entidad-Relación
|
||||
|
||||
```
|
||||
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
||||
│ giros │ │ clientes │ │ users │
|
||||
├─────────────┤ ├─────────────┤ ├─────────────┤
|
||||
│ id │◄──────┤ giro_id │ │ id │
|
||||
│ nombre │ │ id │◄──────┤ cliente_id │
|
||||
│ activo │ │ nombre_emp │ │ nombre │
|
||||
└─────────────┘ │ logo │ │ email │
|
||||
│ moneda │ │ password │
|
||||
│ config │ │ role │
|
||||
└──────┬──────┘ └─────────────┘
|
||||
│
|
||||
┌──────────────┼──────────────┐
|
||||
▼ ▼ ▼
|
||||
┌─────────────┐┌─────────────┐┌─────────────┐
|
||||
│ balanzas ││ reportes ││mapeo_cuentas│
|
||||
├─────────────┤├─────────────┤├─────────────┤
|
||||
│ id ││ id ││ id │
|
||||
│ cliente_id ││ cliente_id ││ cliente_id │
|
||||
│ periodo_ini ││ nombre ││ codigo_pat │
|
||||
│ periodo_fin ││ periodo_tipo││ categoria_id│
|
||||
│ sistema_orig││ data_calc │└─────────────┘
|
||||
│ status ││ pdf_path │
|
||||
└──────┬──────┘└─────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────┐
|
||||
│ cuentas │
|
||||
├─────────────┤
|
||||
│ id │
|
||||
│ balanza_id │
|
||||
│ codigo │
|
||||
│ nombre │
|
||||
│ nivel │
|
||||
│ saldos... │
|
||||
│ excluida │
|
||||
│ categoria_id│
|
||||
└─────────────┘
|
||||
|
||||
┌─────────────────┐ ┌─────────────────┐
|
||||
│reportes_contable│ │categorias_contab│
|
||||
├─────────────────┤ ├─────────────────┤
|
||||
│ id │◄────┤ reporte_cont_id │
|
||||
│ nombre │ │ id │
|
||||
└─────────────────┘ │ nombre │
|
||||
│ orden │
|
||||
└────────┬────────┘
|
||||
│
|
||||
┌────────┴────────┐
|
||||
▼ ▼
|
||||
┌─────────────┐ ┌─────────────┐
|
||||
│reglas_mapeo │ │ umbrales │
|
||||
├─────────────┤ ├─────────────┤
|
||||
│ sistema_orig│ │ metrica │
|
||||
│ rango_ini │ │ muy_positivo│
|
||||
│ rango_fin │ │ positivo │
|
||||
│ categoria_id│ │ neutral │
|
||||
│ prioridad │ │ negativo │
|
||||
└─────────────┘ │ muy_negativo│
|
||||
│ giro_id │
|
||||
└─────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Tablas
|
||||
|
||||
### users
|
||||
Usuarios del sistema.
|
||||
|
||||
| Campo | Tipo | Descripción |
|
||||
|-------|------|-------------|
|
||||
| id | bigint | PK |
|
||||
| nombre | varchar(255) | Nombre completo |
|
||||
| email | varchar(255) | Email único |
|
||||
| password | varchar(255) | Hash de contraseña |
|
||||
| role | enum | admin, analista, cliente, empleado |
|
||||
| cliente_id | bigint | FK a clientes (nullable) |
|
||||
|
||||
### clientes
|
||||
Empresas registradas.
|
||||
|
||||
| Campo | Tipo | Descripción |
|
||||
|-------|------|-------------|
|
||||
| id | bigint | PK |
|
||||
| nombre_empresa | varchar(255) | Nombre de la empresa |
|
||||
| logo | varchar(255) | Path al logo |
|
||||
| giro_id | bigint | FK a giros |
|
||||
| moneda | varchar(3) | MXN, USD, EUR |
|
||||
| configuracion | json | Configuración adicional |
|
||||
|
||||
### giros
|
||||
Catálogo de giros de negocio.
|
||||
|
||||
| Campo | Tipo | Descripción |
|
||||
|-------|------|-------------|
|
||||
| id | bigint | PK |
|
||||
| nombre | varchar(255) | Nombre del giro |
|
||||
| activo | boolean | Estado |
|
||||
|
||||
### balanzas
|
||||
Archivos de balanza subidos.
|
||||
|
||||
| Campo | Tipo | Descripción |
|
||||
|-------|------|-------------|
|
||||
| id | bigint | PK |
|
||||
| cliente_id | bigint | FK a clientes |
|
||||
| periodo_inicio | date | Inicio del periodo |
|
||||
| periodo_fin | date | Fin del periodo |
|
||||
| sistema_origen | varchar(50) | contpaqi, aspel, etc. |
|
||||
| archivo_original | varchar(255) | Path al archivo |
|
||||
| status | enum | pendiente, procesando, completado, error |
|
||||
| error_mensaje | text | Mensaje de error si aplica |
|
||||
|
||||
### cuentas
|
||||
Cuentas extraídas de balanzas.
|
||||
|
||||
| Campo | Tipo | Descripción |
|
||||
|-------|------|-------------|
|
||||
| id | bigint | PK |
|
||||
| balanza_id | bigint | FK a balanzas |
|
||||
| codigo | varchar(20) | Código de cuenta (ej: 001-100-000) |
|
||||
| nombre | varchar(255) | Nombre de la cuenta |
|
||||
| nivel | int | Nivel jerárquico (1, 2, 3) |
|
||||
| reporte_contable_id | bigint | FK a reportes_contables |
|
||||
| categoria_contable_id | bigint | FK a categorias_contables |
|
||||
| cuenta_padre_id | bigint | FK a cuentas (self-reference) |
|
||||
| saldo_inicial_deudor | decimal(18,2) | |
|
||||
| saldo_inicial_acreedor | decimal(18,2) | |
|
||||
| cargos | decimal(18,2) | |
|
||||
| abonos | decimal(18,2) | |
|
||||
| saldo_final_deudor | decimal(18,2) | |
|
||||
| saldo_final_acreedor | decimal(18,2) | |
|
||||
| excluida | boolean | Excluida del cálculo |
|
||||
| es_cuenta_padre | boolean | Es cuenta padre |
|
||||
| requiere_revision | boolean | Necesita revisión manual |
|
||||
| nota_revision | text | Nota sobre la anomalía |
|
||||
|
||||
### reportes_contables
|
||||
Tipos de reporte (Balance, Estado de Resultados).
|
||||
|
||||
| Campo | Tipo | Descripción |
|
||||
|-------|------|-------------|
|
||||
| id | bigint | PK |
|
||||
| nombre | varchar(255) | "Balance General", "Estado de Resultados" |
|
||||
|
||||
### categorias_contables
|
||||
Categorías dentro de cada reporte.
|
||||
|
||||
| Campo | Tipo | Descripción |
|
||||
|-------|------|-------------|
|
||||
| id | bigint | PK |
|
||||
| reporte_contable_id | bigint | FK a reportes_contables |
|
||||
| nombre | varchar(255) | Nombre de la categoría |
|
||||
| orden | int | Orden de aparición |
|
||||
|
||||
**Categorías de Balance General:**
|
||||
1. Activos Circulantes
|
||||
2. Activos No Circulantes
|
||||
3. Pasivo Circulante
|
||||
4. Pasivo No Circulante
|
||||
5. Capital Social
|
||||
6. Pérdidas Ejercicios Anteriores
|
||||
7. Utilidades Ejercicios Anteriores
|
||||
|
||||
**Categorías de Estado de Resultados:**
|
||||
1. Ingresos
|
||||
2. Costo de Venta
|
||||
3. Gastos Operativos
|
||||
4. Otros Gastos
|
||||
5. Gastos Financieros
|
||||
|
||||
### reglas_mapeo
|
||||
Reglas para clasificar cuentas automáticamente.
|
||||
|
||||
| Campo | Tipo | Descripción |
|
||||
|-------|------|-------------|
|
||||
| id | bigint | PK |
|
||||
| sistema_origen | varchar(50) | contpaqi, aspel, etc. |
|
||||
| cuenta_padre_codigo | varchar(20) | Código de cuenta padre |
|
||||
| rango_inicio | varchar(20) | Inicio del rango de códigos |
|
||||
| rango_fin | varchar(20) | Fin del rango |
|
||||
| patron_regex | varchar(255) | Patrón regex alternativo |
|
||||
| reporte_contable_id | bigint | FK |
|
||||
| categoria_contable_id | bigint | FK |
|
||||
| prioridad | int | Mayor = se evalúa primero |
|
||||
| activo | boolean | Regla activa |
|
||||
|
||||
### umbrales
|
||||
Umbrales para semáforos de métricas.
|
||||
|
||||
| Campo | Tipo | Descripción |
|
||||
|-------|------|-------------|
|
||||
| id | bigint | PK |
|
||||
| metrica | varchar(100) | Nombre de la métrica |
|
||||
| muy_positivo | decimal(10,4) | Umbral muy positivo |
|
||||
| positivo | decimal(10,4) | Umbral positivo |
|
||||
| neutral | decimal(10,4) | Umbral neutral |
|
||||
| negativo | decimal(10,4) | Umbral negativo |
|
||||
| muy_negativo | decimal(10,4) | Umbral muy negativo |
|
||||
| giro_id | bigint | FK a giros (nullable = general) |
|
||||
|
||||
### reportes
|
||||
Reportes generados.
|
||||
|
||||
| Campo | Tipo | Descripción |
|
||||
|-------|------|-------------|
|
||||
| id | bigint | PK |
|
||||
| cliente_id | bigint | FK a clientes |
|
||||
| nombre | varchar(255) | Nombre del reporte |
|
||||
| periodo_tipo | enum | mensual, trimestral, anual |
|
||||
| periodo_inicio | date | |
|
||||
| periodo_fin | date | |
|
||||
| fecha_generacion | timestamp | |
|
||||
| data_calculada | json | Métricas y estados financieros |
|
||||
| pdf_path | varchar(255) | Path al PDF generado |
|
||||
| status | enum | pendiente, procesando, completado, error |
|
||||
|
||||
### reporte_balanza
|
||||
Tabla pivote reporte-balanza.
|
||||
|
||||
| Campo | Tipo | Descripción |
|
||||
|-------|------|-------------|
|
||||
| reporte_id | bigint | FK a reportes |
|
||||
| balanza_id | bigint | FK a balanzas |
|
||||
|
||||
---
|
||||
|
||||
## Seeders
|
||||
|
||||
Los seeders iniciales crean:
|
||||
|
||||
1. **GirosSeeder** - 24 giros de negocio
|
||||
2. **ReportesContablesSeeder** - 2 reportes + 12 categorías
|
||||
3. **ReglasMapeeoContpaqiSeeder** - 12 reglas para CONTPAQi
|
||||
4. **UmbralesSeeder** - 24 umbrales por defecto
|
||||
5. **AdminUserSeeder** - Usuario admin inicial
|
||||
Reference in New Issue
Block a user