erp-core-database-v2/ddl/README.md
Adrian Flores Cortes 9060cf7715 docs: Update DDL README with comprehensive schema documentation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 23:19:23 -06:00

229 lines
8.6 KiB
Markdown

# Database DDL Files - erp-core
**Version:** 1.1.0
**Fecha:** 2026-02-03
**Total Archivos:** 38
**Total Schemas:** 20
---
## Convenciones de Numeracion
Los archivos DDL siguen un esquema de numeracion por rangos segun dominio funcional:
| Rango | Dominio | Descripcion |
|-------|---------|-------------|
| 01-09 | Foundation | Auth, core, mobile, billing base |
| 10-15 | System | Audit, feature-flags, webhooks, storage, AI, WhatsApp |
| 16-19 | Partners & Products | Partners, products, warehouses, attributes |
| 20-24 | Catalogs & Operations | Core catalogs, inventory, sales, purchases, invoices |
| 25-29 | Fiscal & CFDI | Catalogos SAT, facturacion electronica CFDI |
| 30-49 | Reserved | Expansiones futuras |
| 50-59 | Financial | Contabilidad completa |
| 60-69 | Projects | Proyectos y timesheets |
---
## Archivos DDL por Dominio
### Foundation (01-09)
| # | Archivo | Schema | Descripcion |
|---|---------|--------|-------------|
| 01 | `01-auth-profiles.sql` | auth | Usuarios, sesiones, perfiles |
| 02 | `02-auth-devices.sql` | auth | Dispositivos, biometria |
| 03 | `03-core-branches.sql` | core | Sucursales, horarios |
| 04 | `04-mobile.sql` | mobile | Sesiones movil, push, sync |
| 05 | `05-billing-usage.sql` | billing | Suscripciones, planes, uso |
| 06 | `06-auth-extended.sql` | auth | OAuth, MFA extendido |
| 07 | `07-users-rbac.sql` | auth | Roles, permisos, grupos |
| 08 | `08-plans.sql` | billing | Planes detallados, features |
| 09 | `09-notifications.sql` | notifications | Notificaciones multicanal |
### System (10-15)
| # | Archivo | Schema | Descripcion |
|---|---------|--------|-------------|
| 10 | `10-audit.sql` | audit | Logs de auditoria completos |
| 11 | `11-feature-flags.sql` | feature_flags | Feature toggles por tenant |
| 12 | `12-webhooks.sql` | webhooks | Suscripciones y entregas |
| 13 | `13-storage.sql` | storage | Archivos, buckets, uploads |
| 14 | `14-ai.sql` | ai | Modelos, prompts, completions |
| 15 | `15-whatsapp.sql` | whatsapp | Conversaciones, mensajes |
### Partners & Products (16-19)
| # | Archivo | Schema | Descripcion |
|---|---------|--------|-------------|
| 16 | `16-partners.sql` | partners | Clientes/proveedores, tax_info, segments |
| 17 | `17-products.sql` | products | Productos comerciales |
| 18 | `18-warehouses.sql` | inventory | Almacenes, zonas, ubicaciones |
| 19 | `19-product-attributes.sql` | products | Atributos, variantes |
### Catalogs & Operations (20-24)
| # | Archivo | Schema | Descripcion |
|---|---------|--------|-------------|
| 20 | `20-core-catalogs.sql` | core | Paises, monedas, UoM, secuencias |
| 21 | `21-inventory.sql` | inventory | Stock, lots, pickings, transfers |
| 22 | `22-sales.sql` | sales | Ordenes de venta, cotizaciones |
| 23 | `23-purchases.sql` | purchases | Ordenes de compra |
| 24 | `24-invoices.sql` | billing | Facturas operacionales, pagos |
### Fiscal & CFDI (25-29)
| # | Archivo | Schema | Descripcion |
|---|---------|--------|-------------|
| 25 | `25-payment-terminals.sql` | billing | Terminales punto de venta |
| 26 | `26-fiscal-catalogs.sql` | fiscal | Catalogos SAT (regimenes, usos CFDI, formas pago) |
| 27 | `27-cfdi-core.sql` | fiscal | CFDI: certificados, facturas CFDI, conceptos |
| 28 | `28-cfdi-operations.sql` | fiscal | CFDI: cancelaciones, logs, complementos pago |
| 29 | `29-cfdi-rls-functions.sql` | fiscal | CFDI: RLS, funciones auxiliares, triggers, vistas |
### Financial (50-57)
| # | Archivo | Schema | Descripcion |
|---|---------|--------|-------------|
| 50 | `50-financial-schema.sql` | financial | Schema y extensiones |
| 51 | `51-financial-accounts.sql` | financial | Plan de cuentas, tipos |
| 52 | `52-financial-journals.sql` | financial | Diarios contables |
| 53 | `53-financial-entries.sql` | financial | Asientos contables |
| 54 | `54-financial-invoices.sql` | financial | Facturas contables |
| 55 | `55-financial-payments.sql` | financial | Pagos contables |
| 56 | `56-financial-taxes.sql` | financial | Impuestos |
| 57 | `57-financial-bank-reconciliation.sql` | financial | Conciliacion bancaria |
### Projects (60+)
| # | Archivo | Schema | Descripcion |
|---|---------|--------|-------------|
| 60 | `60-projects-timesheets.sql` | projects | Hojas de tiempo |
### Matching (46)
| # | Archivo | Schema | Descripcion |
|---|---------|--------|-------------|
| 46 | `46-purchases-matching.sql` | purchases | 3-way matching PO/Receipt/Invoice |
---
## Schemas PostgreSQL
| Schema | Proposito | DDL Files |
|--------|-----------|-----------|
| auth | Autenticacion y usuarios | 01, 02, 06, 07 |
| audit | Logs de auditoria | 10 |
| billing | Facturacion SaaS | 05, 08, 24 |
| core | Catalogos compartidos | 03, 20 |
| feature_flags | Feature toggles | 11 |
| financial | Contabilidad | 50-57 |
| fiscal | Catalogos SAT y CFDI | 26, 27, 28, 29 |
| inventory | Inventario y stock | 18, 21 |
| mobile | App movil | 04 |
| notifications | Notificaciones | 09 |
| partners | Clientes/proveedores | 16 |
| products | Productos | 17, 19 |
| projects | Proyectos | 60 |
| purchases | Compras | 23, 46 |
| sales | Ventas | 22 |
| storage | Archivos | 13 |
| webhooks | Webhooks | 12 |
| whatsapp | WhatsApp | 15 |
| ai | Inteligencia artificial | 14 |
---
## Orden de Ejecucion
Para una instalacion limpia, ejecutar en orden numerico:
```bash
for f in $(ls *.sql | sort -n); do
psql -d erp_db -f "$f"
done
```
**Dependencias importantes:**
1. `01-auth-profiles.sql` debe ejecutarse primero (define auth.users, auth.tenants)
2. `50-financial-schema.sql` antes del resto de financial
3. `20-core-catalogs.sql` antes de inventory/sales/purchases
4. `24-invoices.sql` y `26-fiscal-catalogs.sql` antes de `27-cfdi-core.sql`
5. `27-cfdi-core.sql` antes de `28-cfdi-operations.sql` y `29-cfdi-rls-functions.sql`
---
## Notas de Sprint 2 (2026-01-24)
### Cambios realizados:
1. **21-inventory.sql**: Agregadas tablas `lots` y `pickings` con ENUMs
2. **16-partners.sql**: Agregadas tablas `partner_tax_info` y `partner_segments`
3. **26-fiscal-catalogs.sql**: Renumerado de 21 a 26 para evitar conflicto
### Renumeracion historica:
- `21-fiscal-catalogs.sql` -> `26-fiscal-catalogs.sql` (Sprint 2, 2026-01-24)
- `25-fiscal-catalogs.sql` eliminado (duplicado)
---
## Notas de Sprint - Modulo CFDI (2026-02-03)
### Archivos creados:
1. **27-cfdi-core.sql**: Tablas core del modulo CFDI
- `cfdi_certificates`: Certificados CSD para timbrado
- `cfdi_pac_configurations`: Configuracion de PACs
- `cfdi_invoices`: Extension de facturas con datos CFDI 4.0
- `cfdi_invoice_items`: Conceptos con claves SAT
- `cfdi_invoice_item_taxes`: Impuestos por concepto
- `cfdi_related_documents`: CFDIs relacionados
2. **28-cfdi-operations.sql**: Operaciones CFDI
- `cfdi_cancellation_requests`: Solicitudes de cancelacion
- `cfdi_operation_logs`: Audit trail de operaciones
- `cfdi_payment_complements`: Complementos de pago (REP)
- `cfdi_payment_complement_documents`: Documentos en complemento
- `cfdi_stamp_queue`: Cola de timbrado asincrono
3. **29-cfdi-rls-functions.sql**: Seguridad y funciones
- RLS policies para multi-tenancy
- Funciones auxiliares (validate_rfc, generate_folio, etc.)
- Triggers de auditoria y validacion
- Vistas para reportes y monitoreo
### ENUMs creados:
- `cfdi_voucher_type`: Tipos de comprobante (I, E, T, N, P)
- `csd_certificate_status`: Estados de certificado CSD
- `cfdi_status`: Estados del CFDI
- `cfdi_relation_type`: Tipos de relacion entre CFDIs
- `cfdi_cancellation_reason`: Motivos de cancelacion SAT
- `cancellation_request_status`: Estados de solicitud cancelacion
- `cfdi_operation_type`: Tipos de operacion para logs
- `payment_complement_status`: Estados del complemento de pago
### Funciones creadas:
- `fiscal.get_default_certificate()`: Obtener certificado activo
- `fiscal.get_active_pac()`: Obtener PAC configurado
- `fiscal.validate_rfc()`: Validar RFC mexicano
- `fiscal.generate_cfdi_folio()`: Generar folios consecutivos
- `fiscal.can_cancel_cfdi()`: Verificar si CFDI puede cancelarse
- `fiscal.get_invoice_payment_balance()`: Saldo de factura PPD
- `fiscal.get_cfdi_summary()`: Resumen de CFDIs por periodo
### Vistas creadas:
- `fiscal.v_cfdi_pending_stamp`: CFDIs pendientes de timbrar
- `fiscal.v_cfdi_pending_cancellations`: Cancelaciones pendientes
- `fiscal.v_certificates_expiring`: Certificados por vencer
- `fiscal.v_pac_stamp_usage`: Uso de timbres por PAC
- `fiscal.v_invoices_pending_payment`: Facturas PPD con saldo
---
## Referencias
- Entities: `docs/_definitions/ENTITIES-CATALOG.md`
- Services: `docs/_definitions/SERVICES-CATALOG.md`
- Invoices/Payments: `docs/_definitions/INVOICES-PAYMENTS-REFERENCE.md`
---
*Documentacion actualizada: 2026-02-03 - Modulo CFDI*