Files
horux-strategy-platform/docs/06-base-de-datos.md
Torch2196 4c3dc94ff2 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>
2026-01-31 22:24:00 -06:00

9.2 KiB

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