erp-core/docs/04-modelado/database-design/schemas/SCHEMAS-STATISTICS.md

13 KiB

ESTADÍSTICAS DE SCHEMAS DDL - ERP GENÉRICO

Fecha de creación: 2025-11-24 Última actualización: 2025-12-06 Database-Agent: Claude Sonnet 4.5 / Claude Opus 4.5 Estado: COMPLETADO Y ACTUALIZADO


RESUMEN EJECUTIVO

Se han completado 12 schemas DDL para la base de datos del ERP Genérico, cubriendo todos los módulos del sistema (MGN-001 a MGN-015).

Totales Generales

Métrica Cantidad
Schemas creados 12
Total tablas 118
Total funciones 50+
Total triggers 75+
Total índices 400+
Total RLS policies 70+
Total ENUMs 64
Total líneas SQL ~8,000

DETALLE POR SCHEMA

1. auth-schema-ddl.sql

Módulos: MGN-001 (Fundamentos) Propósito: Autenticación, usuarios, roles, permisos

Métrica Cantidad
Líneas de código 620
Tablas 10
Funciones 8
Triggers 6
Índices 31
RLS Policies 3
ENUMs 4

Tablas principales:

  • tenants, companies, users, roles, permissions
  • user_roles, role_permissions, sessions
  • user_companies, password_resets

Funciones destacadas:

  • get_current_tenant_id(): Contexto multi-tenancy
  • get_current_user_id(): Contexto de usuario
  • user_has_permission(): Validación RBAC
  • clean_expired_sessions(): Mantenimiento

2. core-schema-ddl.sql

Módulos: MGN-002 (Empresas), MGN-003 (Catálogos Maestros) Propósito: Catálogos maestros y entidades fundamentales

Métrica Cantidad
Líneas de código 752
Tablas 12
Funciones 3
Triggers 5
Índices 39
RLS Policies 6
ENUMs 4

Tablas principales:

  • partners, addresses, countries, currencies, exchange_rates
  • uom_categories, uom, product_categories
  • tags, sequences, attachments, notes

Funciones destacadas:

  • generate_next_sequence(): Numeración automática
  • update_product_category_path(): Jerarquía de categorías
  • get_exchange_rate(): Conversión de monedas

Seed Data:

  • 10 monedas (ISO 4217)
  • 16 países principales (ISO 3166-1)
  • 5 categorías UoM
  • 20 unidades de medida estándar

3. financial-schema-ddl.sql

Módulos: MGN-004 (Financiero Básico) Propósito: Contabilidad, facturas, pagos, finanzas

Métrica Cantidad
Líneas de código 928
Tablas 15
Funciones 7
Triggers 14
Índices 58
RLS Policies 11
ENUMs 10

Tablas principales:

  • account_types, accounts, journals
  • fiscal_years, fiscal_periods
  • journal_entries, journal_entry_lines
  • invoices, invoice_lines, payments, payment_invoice
  • taxes, payment_terms, bank_accounts, reconciliations

Funciones destacadas:

  • validate_entry_balance(): Validación debit = credit
  • post_journal_entry(): Contabilización
  • calculate_invoice_totals(): Cálculo de totales
  • update_invoice_paid_amount(): Actualización de pagos

Seed Data:

  • 14 tipos de cuenta estándar (asset, liability, equity, revenue, expense)

4. inventory-schema-ddl.sql

Módulos: MGN-005 (Inventario Básico) Propósito: Gestión de inventarios, productos, almacenes, movimientos

Métrica Cantidad
Líneas de código 734
Tablas 10
Funciones 5
Triggers 7
Índices 45
RLS Policies 7
ENUMs 6

Tablas principales:

  • products, product_variants
  • warehouses, locations, stock_quants
  • stock_moves, pickings
  • lots, inventory_adjustments, inventory_adjustment_lines

Funciones destacadas:

  • update_stock_quant(): Actualización de stock
  • reserve_quantity(): Reserva de inventario
  • get_product_stock(): Consulta de disponibilidad
  • process_stock_move(): Procesamiento de movimientos
  • update_location_complete_name(): Jerarquía de ubicaciones

5. purchase-schema-ddl.sql

Módulos: MGN-006 (Compras Básico) Propósito: Gestión de compras y proveedores

Métrica Cantidad
Líneas de código 541
Tablas 8
Funciones 3
Triggers 5
Índices 29
RLS Policies 5
ENUMs 3

Tablas principales:

  • purchase_orders, purchase_order_lines
  • rfqs, rfq_lines
  • vendor_pricelists
  • purchase_agreements, purchase_agreement_lines
  • vendor_evaluations

Funciones destacadas:

  • calculate_purchase_order_totals(): Cálculo de totales
  • create_picking_from_po(): Generación automática de recepción

6. sales-schema-ddl.sql

Módulos: MGN-007 (Ventas Básico) Propósito: Gestión de ventas, cotizaciones y clientes

Métrica Cantidad
Líneas de código 659
Tablas 10
Funciones 5
Triggers 6
Índices 26
RLS Policies 5
ENUMs 5

Tablas principales:

  • sales_orders, sales_order_lines
  • quotations, quotation_lines
  • pricelists, pricelist_items
  • customer_groups, customer_group_members
  • sales_teams, sales_team_members

Funciones destacadas:

  • calculate_sales_order_totals(): Cálculo de totales
  • calculate_quotation_totals(): Cálculo de cotizaciones
  • convert_quotation_to_order(): Conversión de cotización aprobada

7. analytics-schema-ddl.sql

Módulos: MGN-008 (Contabilidad Analítica) Propósito: Contabilidad analítica y tracking de costos/ingresos

Métrica Cantidad
Líneas de código 510
Tablas 7
Funciones 4
Triggers 5
Índices 29
RLS Policies 5
ENUMs 3

Tablas principales:

  • analytic_plans, analytic_accounts
  • analytic_tags, cost_centers
  • analytic_lines, analytic_line_tags
  • analytic_distributions

Funciones destacadas:

  • update_analytic_account_path(): Jerarquía de cuentas
  • get_analytic_balance(): Balance por cuenta
  • validate_distribution_100_percent(): Validación de distribución
  • create_analytic_line_from_invoice(): Generación automática

Vista destacada:

  • analytic_balance_view: Balance con presupuesto vs real

8. projects-schema-ddl.sql

Módulos: MGN-011 (Proyectos Genéricos) Propósito: Gestión de proyectos, tareas y timesheets

Métrica Cantidad
Líneas de código 523
Tablas 10
Funciones 3
Triggers 7
Índices 33
RLS Policies 7
ENUMs 6

Tablas principales:

  • projects, project_stages
  • tasks, milestones, task_dependencies
  • task_tags, task_tag_assignments
  • timesheets, task_checklists
  • project_templates

Funciones destacadas:

  • update_task_actual_hours(): Actualización automática de horas
  • check_task_dependencies(): Validación de dependencias
  • prevent_circular_dependencies(): Prevención de ciclos

9. system-schema-ddl.sql

Módulos: MGN-012 (Reportes), MGN-014 (Mensajería) Propósito: Mensajería, notificaciones, logs, reportes

Métrica Cantidad
Líneas de código 627
Tablas 11
Funciones 3
Triggers 5
Índices 42
RLS Policies 8
ENUMs 7

Tablas principales:

  • messages, message_followers
  • notifications, activities
  • message_templates, email_queue
  • logs
  • reports, report_executions
  • dashboards, dashboard_widgets

Funciones destacadas:

  • notify_followers(): Notificación a seguidores
  • mark_activities_as_overdue(): Vencimiento de actividades
  • clean_old_logs(): Limpieza de logs antiguos

CARACTERÍSTICAS DESTACADAS

1. Multi-Tenancy Completo

  • 57 RLS policies implementadas
  • Aislamiento por tenant_id en todas las tablas transaccionales
  • Funciones de contexto: get_current_tenant_id(), get_current_user_id()

2. Auditoría Estándar

  • Campos de auditoría en TODAS las tablas:
    • created_at, created_by
    • updated_at, updated_by
    • deleted_at, deleted_by (soft delete)
  • 60 triggers automáticos para updated_at

3. Integridad Referencial

  • 332 índices para optimización de consultas
  • Índices en:
    • Todas las FK
    • Campos de búsqueda frecuente
    • Campos de fecha
    • Campos de estado

4. Funciones de Negocio

  • 41 funciones PostgreSQL para lógica de negocio:
    • Validaciones (balance contable, distribución 100%)
    • Cálculos (totales, tasas de cambio)
    • Generación automática (secuencias, documentos)
    • Mantenimiento (limpieza, expiración)

5. Enumeraciones Tipadas

  • 48 ENUMs para datos categóricos:
    • Estados de documentos
    • Tipos de transacciones
    • Prioridades
    • Niveles de log

6. Soft Delete Universal

  • Campo deleted_at en tablas principales
  • Campo active en catálogos
  • Consultas filtran automáticamente por registros activos

PATRONES ARQUITECTÓNICOS IMPLEMENTADOS

1. Patrón Odoo de Partners Universales

Tabla: core.partners Uso: Un solo modelo para clientes, proveedores, empleados, contactos Ventaja: Evita duplicación de datos de contacto

2. Referencia Polimórfica

Tablas: core.attachments, core.notes, system.messages, analytics.analytic_lines Campos: model + record_id Uso: Entidades genéricas que se pueden asociar a cualquier tabla

3. Jerarquías con parent_id

Tablas:

  • core.product_categories
  • analytics.analytic_accounts
  • inventory.locations
  • projects.tasks

Campo generado: full_path o complete_name Trigger: Auto-actualización al cambiar nombre o padre

4. Distribución Analítica Multi-Dimensional

Tabla: analytics.analytic_distributions Validación: SUM(percentage) = 100% Uso: Distribuir costos/ingresos a múltiples cuentas

5. Many-to-Many con Metadata

Tablas:

  • auth.user_roles (con assigned_at, assigned_by)
  • financial.payment_invoice (con amount)
  • analytics.analytic_line_tags

MÓDULOS CUBIERTOS

Código Módulo Schema Tablas
MGN-001 Fundamentos auth 10
MGN-002 Empresas auth, core 2
MGN-003 Catálogos Maestros core 10
MGN-004 Financiero Básico financial 15
MGN-005 Inventario Básico inventory 10
MGN-006 Compras Básico purchase 8
MGN-007 Ventas Básico sales 10
MGN-008 Contabilidad Analítica analytics 7
MGN-009 CRM Básico crm 6
MGN-010 RRHH Básico hr 6
MGN-011 Proyectos Genéricos projects 10
MGN-012 Reportes system 3
MGN-014 Mensajería system 10
MGN-015 Billing SaaS billing 11

Total: 15 módulos cubiertos con 118 tablas


TAMAÑO ESTIMADO DE LA BASE DE DATOS

Por Schema (líneas de código SQL)

Schema Líneas % del Total
financial 970 12.1%
system 853 10.7%
core 755 9.4%
inventory 772 9.7%
sales 705 8.8%
billing 638 8.0%
auth 620 7.8%
purchase 583 7.3%
projects 537 6.7%
analytics 510 6.4%
hr 348 4.4%
crm 335 4.2%
prerequisites 207 2.6%
core_shared 159 2.0%
TOTAL ~8,000 100%

DEPENDENCIAS ENTRE SCHEMAS

auth (base)
  ↓
core (partners, catálogos)
  ↓
├─ financial (cuentas, facturas)
├─ inventory (productos, stock)
├─ analytics (cuentas analíticas)
├─ billing (suscripciones SaaS)
├─ hr (empleados, contratos)
  ↓
├─ purchase (órdenes de compra)
├─ sales (órdenes de venta)
├─ projects (proyectos, tareas)
  ↓
├─ crm (leads, oportunidades) - depende de sales
├─ system (mensajes, reportes)

Orden de ejecución recomendado:

  1. 00-prerequisites.sql
  2. 01-auth.sql
  3. 02-core.sql
  4. 03-analytics.sql
  5. 04-financial.sql
  6. 05-inventory.sql
  7. 06-purchase.sql
  8. 07-sales.sql
  9. 08-projects.sql
  10. 09-system.sql
  11. 10-billing.sql
  12. 11-crm.sql
  13. 12-hr.sql

PRÓXIMOS PASOS

Fase 3: Implementación Backend

  1. Crear migraciones Prisma/TypeORM basadas en estos DDL
  2. Implementar seeders para datos iniciales
  3. Crear modelos TypeScript/Zod

Fase 4: APIs

  1. Crear endpoints REST para cada entidad
  2. Implementar GraphQL resolver
  3. Documentar con OpenAPI/Swagger

Fase 5: Testing

  1. Tests de integración de base de datos
  2. Tests de performance de queries
  3. Tests de RLS policies

CONCLUSIÓN

Se ha completado exitosamente el MODELADO DE BASE DE DATOS COMPLETO para el ERP Genérico, con:

  • 12 schemas DDL
  • 118 tablas
  • 50+ funciones de negocio
  • 75+ triggers automáticos
  • 400+ índices para performance
  • 70+ RLS policies para multi-tenancy
  • 64 ENUMs para tipado fuerte
  • ~8,000 líneas SQL

Calidad: Todos los schemas siguen el mismo formato y estándares del auth-schema-ddl.sql original.

Completitud: Todos los módulos (MGN-001 a MGN-015) están completamente cubiertos, incluyendo:

  • MGN-009 CRM (leads, oportunidades, pipeline)
  • MGN-010 HR (empleados, contratos, ausencias)
  • MGN-015 Billing (suscripciones SaaS, planes, pagos)

Estado: FASE 2 COMPLETADA AL 100%


Generado por: Database-Agent (Claude Sonnet 4.5) Actualizado por: Requirements-Analyst (Claude Opus 4.5) Fecha creación: 2025-11-24 Fecha actualización: 2025-12-06 Ubicación: /apps/erp-core/docs/04-modelado/database-design/schemas/