# Herencia de Base de Datos - ERP Core -> Retail **Fecha:** 2025-12-08 **Versión:** 1.0 **Vertical:** Retail **Nivel:** 2B.2 --- ## RESUMEN La vertical de Retail hereda los schemas base del ERP Core y extiende con schemas específicos del dominio de punto de venta y comercio minorista. **Ubicación DDL Core:** `apps/erp-core/database/ddl/` --- ## ARQUITECTURA DE HERENCIA ``` ┌─────────────────────────────────────────────────────────────────┐ │ ERP CORE (Base) │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ auth │ │ core │ │financial│ │inventory│ │ purchase │ │ │ │ 26 tbl │ │ 12 tbl │ │ 15 tbl │ │ 15 tbl │ │ 8 tbl │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ sales │ │analytics│ │ system │ │ crm │ │ │ │ 6 tbl │ │ 5 tbl │ │ 10 tbl │ │ 5 tbl │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │ TOTAL: ~102 tablas heredadas │ └─────────────────────────────────────────────────────────────────┘ │ │ HEREDA ▼ ┌─────────────────────────────────────────────────────────────────┐ │ RETAIL (Extensiones) │ │ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │ │ │ pos │ │ stores │ │ pricing │ │ │ │ (punto venta) │ │ (sucursales) │ │ (promociones) │ │ │ └───────────────┘ └───────────────┘ └───────────────┘ │ │ EXTENSIONES: ~30 tablas (planificadas) │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## SCHEMAS HEREDADOS DEL CORE | Schema | Tablas | Uso en Retail | |--------|--------|---------------| | `auth` | 26 | Autenticación, usuarios por sucursal | | `core` | 12 | Partners (clientes), catálogos | | `financial` | 15 | Facturas, cuentas, caja | | `inventory` | 15 | Inventario multi-sucursal | | `purchase` | 8 | Compras a proveedores | | `sales` | 6 | Ventas base | | `crm` | 5 | Clientes frecuentes | | `analytics` | 5 | Métricas de venta | | `system` | 10 | Notificaciones | **Total heredado:** ~102 tablas --- ## SCHEMAS ESPECÍFICOS DE RETAIL (Planificados) ### 1. Schema `pos` (estimado 12+ tablas) **Propósito:** Punto de venta y operaciones de caja ```sql -- Tablas principales planificadas: pos.cash_registers -- Cajas registradoras pos.cash_sessions -- Sesiones de caja pos.pos_orders -- Tickets/ventas POS pos.pos_order_lines -- Líneas de ticket pos.payment_methods -- Métodos de pago pos.cash_movements -- Movimientos de caja pos.cash_counts -- Cortes de caja pos.receipts -- Recibos ``` ### 2. Schema `stores` (estimado 8+ tablas) **Propósito:** Gestión de sucursales ```sql -- Tablas principales planificadas: stores.branches -- Sucursales stores.branch_inventory -- Inventario por sucursal stores.transfers -- Transferencias entre sucursales stores.transfer_lines -- Líneas de transferencia stores.branch_employees -- Empleados por sucursal ``` ### 3. Schema `pricing` (estimado 10+ tablas) **Propósito:** Precios y promociones ```sql -- Extiende: sales schema del core pricing.price_lists -- Listas de precios pricing.promotions -- Promociones pricing.discounts -- Descuentos pricing.loyalty_programs -- Programas de lealtad pricing.coupons -- Cupones pricing.price_history -- Historial de precios ``` --- ## SPECS DEL CORE APLICABLES **Documento detallado:** `orchestration/00-guidelines/HERENCIA-SPECS-CORE.md` ### Correcciones de DDL Core (2025-12-08) El DDL del ERP-Core fue corregido para resolver FK inválidas: 1. **stock_valuation_layers**: Campos `journal_entry_id` y `journal_entry_line_id` (antes `account_move_*`) 2. **stock_move_consume_rel**: Nueva tabla de trazabilidad (antes `move_line_consume_rel`) 3. **category_stock_accounts**: FK corregida a `core.product_categories` 4. **product_categories**: ALTERs ahora apuntan a schema `core` ### SPECS Obligatorias | Spec Core | Aplicación en Retail | SP | Estado | |-----------|---------------------|----:|--------| | SPEC-SISTEMA-SECUENCIAS | Foliado de tickets y facturas | 8 | ✅ DDL LISTO | | SPEC-VALORACION-INVENTARIO | Costeo de mercancía | 21 | ✅ DDL LISTO | | SPEC-SEGURIDAD-API-KEYS-PERMISOS | Control de acceso por sucursal | 31 | ✅ DDL LISTO | | SPEC-PRICING-RULES | Precios y promociones | 8 | PENDIENTE | | SPEC-INVENTARIOS-CICLICOS | Conteos en sucursales | 13 | ✅ DDL LISTO | | SPEC-TRAZABILIDAD-LOTES-SERIES | Productos con lote/serie | 13 | ✅ DDL LISTO | | SPEC-MAIL-THREAD-TRACKING | Comunicación con clientes | 13 | PENDIENTE | | SPEC-WIZARD-TRANSIENT-MODEL | Wizards de cierre de caja | 8 | PENDIENTE | ### SPECS Opcionales | Spec Core | Decisión | Razón | |-----------|----------|-------| | SPEC-PORTAL-PROVEEDORES | EVALUAR | Para compras centralizadas | | SPEC-TAREAS-RECURRENTES | EVALUAR | Para reorden automático | ### SPECS No Aplican | Spec Core | Razón | |-----------|-------| | SPEC-INTEGRACION-CALENDAR | No requiere calendario de citas | | SPEC-PROYECTOS-DEPENDENCIAS-BURNDOWN | No hay proyectos largos | | SPEC-FIRMA-ELECTRONICA-NOM151 | No aplica para tickets POS | --- ## ORDEN DE EJECUCIÓN DDL (Futuro) ```bash # PASO 1: Cargar ERP Core (base) cd apps/erp-core/database ./scripts/reset-database.sh --force # PASO 2: Cargar extensiones de Retail cd apps/verticales/retail/database psql $DATABASE_URL -f init/00-extensions.sql psql $DATABASE_URL -f init/01-create-schemas.sql psql $DATABASE_URL -f init/02-pos-tables.sql psql $DATABASE_URL -f init/03-stores-tables.sql psql $DATABASE_URL -f init/04-pricing-tables.sql ``` --- ## MAPEO DE NOMENCLATURA | Core | Retail | |------|--------| | `core.partners` | Clientes, proveedores | | `inventory.products` | Productos de venta | | `inventory.locations` | Almacenes de sucursal | | `sales.sale_orders` | Base para POS orders | | `financial.invoices` | Facturas de venta | --- ## REFERENCIAS - ERP Core DDL: `apps/erp-core/database/ddl/` - ERP Core README: `apps/erp-core/database/README.md` - Directivas: `orchestration/directivas/` - Inventarios: `orchestration/inventarios/` --- **Documento de herencia oficial** **Última actualización:** 2025-12-08