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-tenancyget_current_user_id(): Contexto de usuariouser_has_permission(): Validación RBACclean_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áticaupdate_product_category_path(): Jerarquía de categoríasget_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 = creditpost_journal_entry(): Contabilizacióncalculate_invoice_totals(): Cálculo de totalesupdate_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 stockreserve_quantity(): Reserva de inventarioget_product_stock(): Consulta de disponibilidadprocess_stock_move(): Procesamiento de movimientosupdate_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 totalescreate_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 totalescalculate_quotation_totals(): Cálculo de cotizacionesconvert_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 cuentasget_analytic_balance(): Balance por cuentavalidate_distribution_100_percent(): Validación de distribucióncreate_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 horascheck_task_dependencies(): Validación de dependenciasprevent_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 seguidoresmark_activities_as_overdue(): Vencimiento de actividadesclean_old_logs(): Limpieza de logs antiguos
CARACTERÍSTICAS DESTACADAS
1. Multi-Tenancy Completo
- 57 RLS policies implementadas
- Aislamiento por
tenant_iden 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_byupdated_at,updated_bydeleted_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_aten tablas principales - Campo
activeen 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_categoriesanalytics.analytic_accountsinventory.locationsprojects.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(conassigned_at,assigned_by)financial.payment_invoice(conamount)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:
- 00-prerequisites.sql
- 01-auth.sql
- 02-core.sql
- 03-analytics.sql
- 04-financial.sql
- 05-inventory.sql
- 06-purchase.sql
- 07-sales.sql
- 08-projects.sql
- 09-system.sql
- 10-billing.sql
- 11-crm.sql
- 12-hr.sql
PRÓXIMOS PASOS
Fase 3: Implementación Backend
- Crear migraciones Prisma/TypeORM basadas en estos DDL
- Implementar seeders para datos iniciales
- Crear modelos TypeScript/Zod
Fase 4: APIs
- Crear endpoints REST para cada entidad
- Implementar GraphQL resolver
- Documentar con OpenAPI/Swagger
Fase 5: Testing
- Tests de integración de base de datos
- Tests de performance de queries
- 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/