# GAP ANALYSIS - MGN-002: Empresas y Organizaciones

**Fecha:** 2025-11-23
**Basado en:** Odoo base (res.company), Gamilit core, Construcción MAI-002
**Estado:** Gap analysis completado

## Resumen Ejecutivo

| Métrica | Valor |
|---------|-------|
| **Funcionalidades de Odoo** | 8 |
| **Funcionalidades incluidas en MGN-002** | 5 |
| **Gaps identificados** | 3 |
| **Gaps P0 (críticos)** | 0 |
| **Gaps P1 (altos)** | 1 |
| **Gaps P2 (bajos)** | 2 |
| **% Cobertura** | 63% |

## 1. FUNCIONALIDADES DE ODOO

### Del Módulo base (res.company)

1. **Gestión de empresas:** CRUD de empresas con datos completos
2. **Multi-company access:** Usuario puede acceder a múltiples empresas
3. **Context switching:** Cambio de empresa activa sin logout
4. **Configuración empresa:** Logo, datos fiscales, moneda principal
5. **Holdings:** Jerarquías de empresas (parent_id)
6. **Empresa como partner:** Empresa vinculada a res.partner
7. **Consolidación financiera:** Balance consolidado de holdings
8. **Transferencias inter-compañía:** Transacciones entre empresas del grupo

## 2. FUNCIONALIDADES INCLUIDAS EN MGN-002

1. ✅ **Gestión de empresas:** Incluida en MGN-002 (CRUD completo)
2. ✅ **Multi-empresa:** Incluida en MGN-002 (Usuario accede a múltiples)
3. ✅ **Context switching:** Incluida en MGN-002 (Cambio de empresa activa)
4. ✅ **Configuración empresa:** Incluida en MGN-002 (Logo, datos fiscales, moneda)
5. ✅ **Holdings:** Incluida en MGN-002 (parent_id jerárquico)

## 3. GAPS IDENTIFICADOS

### Gap P0 (Críticos - Debe incluirse en MVP)

**NO HAY GAPS P0**

### Gap P1 (Altos - Deseable para MVP)

#### GAP-MGN-002-001: Roles Diferentes por Empresa
- **Descripción:** Usuario puede tener un rol diferente en cada empresa (ej: Admin en Empresa A, Employee en Empresa B)
- **Referencia Odoo:** res.company.users_rel con roles específicos
- **Impacto:** ALTO
- **Justificación impacto:** En grupos empresariales, usuario puede ser gerente en una empresa y supervisor en otra. Sin esto, usuario tiene mismo rol en todas (limitación)
- **Recomendación:** CONSIDERAR para MVP o Fase 2
- **Esfuerzo estimado:** 8 SP
- **Implementación sugerida:**
  ```sql
  -- Modificar tabla users_companies
  CREATE TABLE core.users_companies (
    user_id UUID REFERENCES auth.users(id),
    company_id UUID REFERENCES core.companies(id),
    role_id UUID REFERENCES auth.roles(id), -- Rol específico en esta empresa
    is_default BOOLEAN DEFAULT FALSE,
    PRIMARY KEY (user_id, company_id)
  );
  ```
- **Dependencias:** MGN-001 (roles), MGN-002 (empresas)

### Gap P2 (Medios/Bajos - No crítico)

#### GAP-MGN-002-002: Consolidación Financiera Multi-Empresa
- **Descripción:** Balance consolidado de holdings (suma automática de balances de empresas hijas)
- **Referencia Odoo:** account (consolidación)
- **Impacto:** MEDIO
- **Justificación impacto:** Útil para grupos empresariales, pero es funcionalidad contable avanzada. Puede implementarse con queries custom en MGN-004 o MGN-012
- **Recomendación:** POSPONER a Fase 2 o extensión MGN-004
- **Esfuerzo estimado:** 21 SP (complejo)

#### GAP-MGN-002-003: Transferencias Inter-Compañía Automáticas
- **Descripción:** Transferencias de inventario/financieras entre empresas del grupo con asientos automáticos
- **Referencia Odoo:** account (inter-company transactions)
- **Impacto:** BAJO
- **Justificación impacto:** Funcionalidad avanzada para holdings. No es esencial para mayoría de casos de uso
- **Recomendación:** POSPONER a Fase 2 o posterior
- **Esfuerzo estimado:** 13 SP

## 4. FUNCIONALIDADES SOBRANTES (No en Odoo, pero incluidas)

**NO HAY FUNCIONALIDADES SOBRANTES**

MGN-002 es implementación fiel de res.company de Odoo.

## 5. ANÁLISIS COMPARATIVO CON CONSTRUCCIÓN

### Funcionalidades en ERP Construcción (MAI-002)

**Implementadas:**
- ✅ Gestión de empresas (CRUD)
- ✅ Multi-empresa (usuario accede a múltiples)
- ✅ Configuración empresa (logo, RFC, datos fiscales)
- ✅ Context switching

**No implementadas:**
- ❌ Holdings (parent_id)
- ❌ Roles diferentes por empresa
- ❌ Empresa vinculada a partner

### Gaps vs Construcción

**Funcionalidades que Construcción NO tiene pero DEBERÍA tener según Odoo:**

1. **Holdings (P1):** Para grupos constructoras (matriz con subsidiarias)
2. **Empresa como partner (P1):** Patrón Odoo, simplifica catálogos
3. **Roles por empresa (P1):** Usuario puede ser Admin en una empresa, Supervisor en otra

## 6. RECOMENDACIONES

### Para MGN-002

- [ ] **Considerar roles por empresa (GAP-001):** Útil para grupos empresariales, pero NO bloquea MVP
- [ ] **Agregar company.partner_id:** Vincular empresa a partner (patrón Odoo)
- [ ] **Validar jerarquías:** Prevenir ciclos en parent_id (empresa A → B → A)

### Para ERP Construcción

- [x] **Retroalimentación 1:** Implementar holdings (parent_id) para grupos constructoras
- [x] **Retroalimentación 2:** Vincular empresa a partner (simplifica catálogos)
- [ ] **Retroalimentación 3:** Considerar roles diferentes por empresa para organización matricial

## 7. IMPACTO EN STORY POINTS

| Concepto | SP Original | SP Gaps P0 | SP Nuevo | Δ SP |
|----------|-------------|------------|----------|------|
| MGN-002 Original | 30 SP | - | 30 SP | - |
| GAP-001 (Roles por empresa) | - | 0 SP (P1) | - | - |
| **MGN-002 Total** | **30 SP** | **+0 SP** | **30 SP** | **+0 SP** |

**Análisis:** No hay gaps P0. MGN-002 puede implementarse sin cambios. Si se incluye GAP-001 (P1), serían +8 SP (+27%).

**Recomendación:**
- MVP: 30 SP (sin cambios)
- Fase 2: +8 SP (roles por empresa)

## 8. REFERENCIAS

- [ALCANCE-POR-MODULO.md - MGN-002](../ALCANCE-POR-MODULO.md#mgn-002-empresas-y-organizaciones)
- [MAPEO-ODOO-TO-MGN.md](../../00-analisis-referencias/odoo/MAPEO-ODOO-TO-MGN.md)
- [odoo-base-analysis.md](../../00-analisis-referencias/odoo/odoo-base-analysis.md)
- [ADR-002: Arquitectura Modular](../../adr/ADR-002-arquitectura-modular.md)
- [ADR-003: Multi-Tenancy](../../adr/ADR-003-multi-tenancy.md)
