# 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
