# FASE 4: Validacion de Dependencias **ID:** EPIC-VAL-004 **Fecha:** 2026-01-04 **Estado:** Completado **Basado en:** FASE-3 (Plan de Correcciones) --- ## 1. Objetivo Validar que las correcciones planificadas en FASE 3: 1. No rompan dependencias existentes 2. Tengan todas sus dependencias satisfechas 3. Sean compatibles con la estructura actual 4. Identifiquen correcciones ya implementadas --- ## 2. Analisis de Estado Actual ### 2.1 Correcciones Ya Implementadas (Excluir del Plan) | ID Plan | Descripcion | Estado Actual | Accion | |---------|-------------|---------------|--------| | COR-034 | core.attachments | YA EXISTE (linea 271) | EXCLUIR | | COR-027 | hr.leaves | YA EXISTE (linea 252) | AJUSTAR | | COR-027 | hr.leave_types | YA EXISTE (linea 231) | AJUSTAR | **Nota:** HR ya tiene estructura de leaves. Solo falta `leave_allocations`. ### 2.2 Correcciones P1/P2 Anteriores Verificadas | ID | Tabla/Funcion | Archivo | Linea | Verificado | |----|---------------|---------|-------|------------| | COR-005 | financial.tax_groups | 04-financial.sql | 285 | OK | | COR-013 | financial.account_full_reconcile | 04-financial.sql | 593 | OK | | COR-013 | financial.account_partial_reconcile | 04-financial.sql | 606 | OK | | COR-020 | core.partner_duplicates | 02-core.sql | 759 | OK | --- ## 3. Validacion de Dependencias por Correccion ### 3.1 COR-021: core.states | Dependencia | Tabla/Schema | Existe | Estado | |-------------|--------------|--------|--------| | core.countries | core | SI | OK | | system.tenants | auth | SI | OK | **Dependencias Satisfechas:** SI **Tablas que dependeran de states:** - core.partners (agregar state_id) - core.addresses (agregar state_id) - financial.fiscal_positions (state_ids array) ### 3.2 COR-022: core.banks, core.partner_banks | Dependencia | Tabla/Schema | Existe | Estado | |-------------|--------------|--------|--------| | system.tenants | auth | SI | OK | | core.countries | core | SI | OK | | core.partners | core | SI | OK | | core.currencies | core | SI | OK | **Dependencias Satisfechas:** SI **Tablas que dependeran:** - financial.bank_statements (journal_id -> partner_bank_id) - financial.payments (partner_bank_id) ### 3.3 COR-023: financial.bank_statements, bank_statement_lines | Dependencia | Tabla/Schema | Existe | Estado | |-------------|--------------|--------|--------| | system.tenants | auth | SI | OK | | financial.journals | financial | SI | OK | | core.currencies | core | SI | OK | | core.partners | core | SI | OK | | core.partner_banks | core | NO | REQUIERE COR-022 | **Dependencias Satisfechas:** NO - Requiere COR-022 primero **Orden de ejecucion:** COR-022 -> COR-023 ### 3.4 COR-024: financial.tax_repartition_lines | Dependencia | Tabla/Schema | Existe | Estado | |-------------|--------------|--------|--------| | system.tenants | auth | SI | OK | | financial.taxes | financial | SI | OK | | financial.accounts | financial | SI | OK | **Dependencias Satisfechas:** SI ### 3.5 COR-025: inventory.routes, stock_rules | Dependencia | Tabla/Schema | Existe | Estado | |-------------|--------------|--------|--------| | system.tenants | auth | SI | OK | | inventory.warehouses | inventory | SI | OK | | inventory.locations | inventory | SI | OK | | inventory.picking_types | inventory | SI | OK (COR-007) | | core.partners | core | SI | OK | | core.companies | core | SI | OK | **Dependencias Satisfechas:** SI ### 3.6 COR-026: hr.attendances | Dependencia | Tabla/Schema | Existe | Estado | |-------------|--------------|--------|--------| | auth.tenants | auth | SI | OK | | hr.employees | hr | SI | OK | **Dependencias Satisfechas:** SI ### 3.7 COR-027: hr.leave_allocations (AJUSTADO) | Dependencia | Tabla/Schema | Existe | Estado | |-------------|--------------|--------|--------| | auth.tenants | auth | SI | OK | | hr.employees | hr | SI | OK | | hr.leave_types | hr | SI | YA EXISTE | **Dependencias Satisfechas:** SI **Nota:** Solo se requiere agregar `leave_allocations`, no recrear estructura ### 3.8 COR-028: financial.fiscal_positions | Dependencia | Tabla/Schema | Existe | Estado | |-------------|--------------|--------|--------| | system.tenants | auth | SI | OK | | core.companies | core | SI | OK | | core.countries | core | SI | OK | | core.states | core | NO | REQUIERE COR-021 | | financial.taxes | financial | SI | OK | | financial.accounts | financial | SI | OK | **Dependencias Satisfechas:** PARCIAL - Requiere COR-021 para state_ids **Workaround:** Puede implementarse sin states, agregar despues ### 3.9 COR-029: purchase.button_cancel, button_draft | Dependencia | Tabla/Schema | Existe | Estado | |-------------|--------------|--------|--------| | purchase.purchase_orders | purchase | SI | OK | | inventory.pickings | inventory | SI | OK | **Dependencias Satisfechas:** SI ### 3.10 COR-030: crm.merge_leads | Dependencia | Tabla/Schema | Existe | Estado | |-------------|--------------|--------|--------| | crm.leads | crm | SI | OK | | crm.lead_activities | crm | VERIFICAR | - | **Dependencias Satisfechas:** VERIFICAR lead_activities ### 3.11 COR-031: inventory.stock_scrap | Dependencia | Tabla/Schema | Existe | Estado | |-------------|--------------|--------|--------| | system.tenants | auth | SI | OK | | inventory.products | inventory | SI | OK | | core.uom | core | SI | OK | | inventory.lots | inventory | SI | OK | | inventory.locations | inventory | SI | OK | | inventory.stock_moves | inventory | SI | OK | | inventory.pickings | inventory | SI | OK | **Dependencias Satisfechas:** SI ### 3.12 COR-032: projects.project_updates | Dependencia | Tabla/Schema | Existe | Estado | |-------------|--------------|--------|--------| | system.tenants | auth | SI | OK | | projects.projects | projects | SI | OK | | auth.users | auth | SI | OK | **Dependencias Satisfechas:** SI ### 3.13 COR-033: sales.order_templates | Dependencia | Tabla/Schema | Existe | Estado | |-------------|--------------|--------|--------| | system.tenants | auth | SI | OK | | inventory.products | inventory | SI | OK | | core.uom | core | SI | OK | **Dependencias Satisfechas:** SI --- ## 4. Grafo de Dependencias ``` GRUPO 0 (Sin dependencias) - Ejecutar primero ├── COR-021: core.states ├── COR-024: financial.tax_repartition_lines ├── COR-025: inventory.routes + rules ├── COR-026: hr.attendances ├── COR-027: hr.leave_allocations (ajustado) ├── COR-029: purchase.button_cancel/draft ├── COR-031: inventory.stock_scrap ├── COR-032: projects.project_updates └── COR-033: sales.order_templates GRUPO 1 (Depende de GRUPO 0) ├── COR-022: core.banks + partner_banks (despues de states) ├── COR-028: financial.fiscal_positions (depende de COR-021) └── COR-030: crm.merge_leads (verificar activities) GRUPO 2 (Depende de GRUPO 1) └── COR-023: financial.bank_statements (depende de COR-022) EXCLUIDOS (Ya existen) ├── COR-034: core.attachments - YA EXISTE ├── hr.leaves - YA EXISTE └── hr.leave_types - YA EXISTE ``` --- ## 5. Tabla de Referencias Cruzadas ### 5.1 Tablas que Agregan FK a Tablas Existentes | Tabla Existente | Nuevo Campo | Referencia a | Correccion | |-----------------|-------------|--------------|------------| | core.partners | state_id | core.states | COR-021 | | core.addresses | state_id | core.states | COR-021 | | core.partners | bank_ids | core.partner_banks | COR-022 | | financial.payments | partner_bank_id | core.partner_banks | COR-022 | ### 5.2 Tablas Nuevas con Referencias a Existentes | Nueva Tabla | Referencia | Tabla Existente | |-------------|------------|-----------------| | core.states | country_id | core.countries | | core.banks | country_id | core.countries | | core.partner_banks | partner_id | core.partners | | financial.bank_statements | journal_id | financial.journals | | financial.bank_statement_lines | partner_id | core.partners | | financial.tax_repartition_lines | tax_id | financial.taxes | | inventory.routes | warehouse_id | inventory.warehouses | | inventory.stock_rules | route_id | inventory.routes | | hr.attendances | employee_id | hr.employees | | hr.leave_allocations | employee_id | hr.employees | --- ## 6. Validacion de Schemas ### 6.1 Orden de Carga de Schemas ``` 00-prerequisites.sql (funciones utilitarias) ↓ 01-auth.sql (tenants, users, roles) ↓ 02-core.sql (countries, currencies, partners) ↓ 03-analytics.sql (analytic accounts) ↓ 04-financial.sql (accounts, journals, taxes) ↓ 05-inventory.sql (products, warehouses, stock) ↓ 06-purchase.sql (purchase orders) ↓ 07-sales.sql (sales orders) ↓ 08-projects.sql (projects, tasks) ↓ 09-system.sql (system config) ↓ 10-billing.sql (subscriptions) ↓ 11-crm.sql (leads, opportunities) ↓ 12-hr.sql (employees, contracts) ``` **Validacion:** El orden actual es correcto para las nuevas correcciones. --- ## 7. Conflictos Identificados ### 7.1 Conflicto Potencial: auth.tenants vs system.tenants **Observacion:** Algunos archivos usan `auth.tenants`, otros `system.tenants`. **Estado:** Necesita verificacion de cual es el estandar actual. **Accion:** Usar el schema que corresponda segun el archivo DDL donde se implemente. ### 7.2 Conflicto Potencial: Trigger function core.update_timestamp **Observacion:** 12-hr.sql usa `core.update_timestamp()` pero podria no existir. **Estado:** Verificar que existe en 02-core.sql **Accion:** Usar `update_updated_at_column()` de 00-prerequisites.sql si es necesario. --- ## 8. Resumen de Validacion ### 8.1 Correcciones Validadas | ID | Descripcion | Dependencias OK | Listo | |----|-------------|-----------------|-------| | COR-021 | core.states | SI | SI | | COR-022 | core.banks | SI | SI | | COR-023 | bank_statements | SI (con COR-022) | SI | | COR-024 | tax_repartition | SI | SI | | COR-025 | routes/rules | SI | SI | | COR-026 | hr.attendances | SI | SI | | COR-027 | hr.leave_allocations | SI (ajustado) | SI | | COR-028 | fiscal_positions | SI (con COR-021) | SI | | COR-029 | purchase functions | SI | SI | | COR-030 | merge_leads | VERIFICAR | PARCIAL | | COR-031 | stock_scrap | SI | SI | | COR-032 | project_updates | SI | SI | | COR-033 | order_templates | SI | SI | ### 8.2 Correcciones Excluidas | ID | Razon | |----|-------| | COR-034 | core.attachments ya existe | ### 8.3 Metricas Finales | Metrica | Cantidad | |---------|----------| | Correcciones planificadas | 14 | | Correcciones validadas | 12 | | Correcciones excluidas | 1 | | Correcciones a verificar | 1 | | **Listas para ejecucion** | **12** | --- ## 9. Proximos Pasos 1. **FASE 5:** Refinar el plan con el orden exacto de ejecucion 2. Verificar existencia de `crm.lead_activities` para COR-030 3. Confirmar trigger function para timestamps --- **Generado:** 2026-01-04 **Herramienta:** Claude Code **Metodologia:** SCRUM/SIMCO