# Mapeo de Modulos: MAI (Construccion) -> MGN (Generico)

**Documento:** Mapeo de Modulos entre ERP Construccion y ERP Generico
**Fecha:** 2025-11-24
**Responsable:** Architecture-Analyst
**Version:** 1.0.0

---

## Proposito

Este documento define el mapeo entre los modulos del ERP Construccion (prefijo MAI/MAE/MAA) y los modulos del ERP Generico (prefijo MGN), identificando que componentes son reutilizables y cuales son especificos de construccion.

## Resumen de Reutilizacion

| Tipo | Cantidad | % |
|------|----------|---|
| **Modulos 100% Genericos** | 5 | 29% |
| **Modulos Parcialmente Genericos** | 6 | 35% |
| **Modulos 100% Especificos** | 6 | 35% |
| **TOTAL** | **17** | 100% |

**Porcentaje Global de Reutilizacion:** 61%

---

## Mapeo Detallado

### FASE 1: Alcance Inicial (MAI-XXX)

#### MAI-001: Fundamentos -> MGN-001: Fundamentos

| Aspecto | Valor |
|---------|-------|
| **Reutilizacion** | 100% GENERICO |
| **Modulo Generico** | MGN-001 Fundamentos |
| **Componentes Genericos** | auth, users, roles, permissions, sessions |
| **Componentes Especificos** | Ninguno |

**Detalle:**
```yaml
tablas_genericas:
  - auth.users
  - auth.roles
  - auth.permissions
  - auth.user_roles
  - auth.sessions
  - auth.refresh_tokens

backend_generico:
  - AuthModule
  - UsersModule
  - RolesModule
  - PermissionsModule

frontend_generico:
  - LoginPage
  - UserManagement
  - RoleManagement
```

---

#### MAI-002: Proyectos y Estructura -> MGN-009: Proyectos + ESPECIFICO

| Aspecto | Valor |
|---------|-------|
| **Reutilizacion** | 40% GENERICO / 60% ESPECIFICO |
| **Modulo Generico** | MGN-009 Proyectos (base) |
| **Componentes Genericos** | projects base, project_status |
| **Componentes Especificos** | fraccionamientos, etapas, manzanas, lotes, torres, prototipos |

**Detalle:**
```yaml
tablas_genericas:
  - projects.projects (base)
  - projects.project_members

tablas_especificas:
  - construction.fraccionamientos
  - construction.etapas
  - construction.manzanas
  - construction.lotes
  - construction.torres
  - construction.niveles
  - construction.departamentos
  - construction.prototipos
  - construction.lote_prototipo

backend_especifico:
  - FraccionamientosModule
  - LotesModule
  - PrototiposModule
  - EstructuraObraModule

frontend_especifico:
  - FraccionamientoForm
  - LotesGrid
  - PrototipoSelector
  - EstructuraTree
```

---

#### MAI-003: Presupuestos y Control de Costos -> ESPECIFICO

| Aspecto | Valor |
|---------|-------|
| **Reutilizacion** | 0% - 100% ESPECIFICO |
| **Modulo Generico** | Ninguno |
| **Componentes Especificos** | presupuestos, APUs, conceptos, explosiones, control costos |

**Detalle:**
```yaml
tablas_especificas:
  - construction.presupuestos
  - construction.presupuesto_partidas
  - construction.apus  # Analisis de Precios Unitarios
  - construction.apu_insumos
  - construction.conceptos
  - construction.explosiones_insumos
  - construction.control_costos
  - construction.comparativo_presupuestal

backend_especifico:
  - PresupuestosModule
  - APUsModule
  - ControlCostosModule

frontend_especifico:
  - PresupuestoEditor
  - APUForm
  - ComparativoPresupuestal
  - ExplosionInsumos
```

---

#### MAI-004: Compras e Inventarios -> MGN-005 + MGN-006

| Aspecto | Valor |
|---------|-------|
| **Reutilizacion** | 80% GENERICO / 20% ESPECIFICO |
| **Modulos Genericos** | MGN-005 Inventario, MGN-006 Compras |
| **Componentes Genericos** | productos, almacenes, movimientos, ordenes compra, proveedores |
| **Componentes Especificos** | requisiciones obra, almacen por proyecto |

**Detalle:**
```yaml
tablas_genericas:
  - inventory.products
  - inventory.warehouses
  - inventory.stock_moves
  - inventory.stock_quants
  - purchase.suppliers
  - purchase.purchase_orders
  - purchase.purchase_order_lines

tablas_especificas:
  - construction.requisiciones_obra
  - construction.requisicion_lineas
  - construction.almacen_proyecto  # Almacen por obra

backend_generico:
  - ProductsModule
  - WarehousesModule
  - StockModule
  - PurchaseModule
  - SuppliersModule

backend_especifico:
  - RequisicionesObraModule

frontend_especifico:
  - RequisicionObraForm
  - AlmacenProyectoView
```

---

#### MAI-005: Control de Obra y Avances -> ESPECIFICO

| Aspecto | Valor |
|---------|-------|
| **Reutilizacion** | 0% - 100% ESPECIFICO |
| **Modulo Generico** | Ninguno |
| **Componentes Especificos** | avances fisicos, % completado, bitacora, checkpoints |

**Detalle:**
```yaml
tablas_especificas:
  - construction.avances_obra
  - construction.avance_conceptos
  - construction.bitacora_obra
  - construction.checkpoints
  - construction.fotos_avance
  - construction.programa_obra  # Gantt

backend_especifico:
  - AvancesObraModule
  - BitacoraModule
  - ProgramaObraModule

frontend_especifico:
  - AvanceCapture
  - BitacoraView
  - GanttChart
  - FotosAvance
```

---

#### MAI-006: Reportes y Analytics -> MGN-014 + MGN-008

| Aspecto | Valor |
|---------|-------|
| **Reutilizacion** | 60% GENERICO / 40% ESPECIFICO |
| **Modulos Genericos** | MGN-014 Reportes, MGN-008 Analitica |
| **Componentes Genericos** | dashboards base, reportes financieros |
| **Componentes Especificos** | reportes obra, comparativos, avance grafico |

**Detalle:**
```yaml
generico:
  - Dashboard base
  - Reportes financieros (P&L, Balance)
  - Contabilidad analitica por proyecto
  - Graficas base (Chart.js)

especifico:
  - Dashboard Director de Obra
  - Dashboard Residente
  - Reporte Avance Fisico vs Financiero
  - Comparativo Presupuestal
  - Curva S
  - Reporte INFONAVIT
```

---

#### MAI-007: RRHH y Asistencias -> MGN-010: RRHH + ESPECIFICO

| Aspecto | Valor |
|---------|-------|
| **Reutilizacion** | 50% GENERICO / 50% ESPECIFICO |
| **Modulo Generico** | MGN-010 RRHH |
| **Componentes Genericos** | employees, contracts, departments |
| **Componentes Especificos** | asistencias GPS, biometrico, destajo |

**Detalle:**
```yaml
tablas_genericas:
  - hr.employees
  - hr.contracts
  - hr.departments
  - hr.job_positions

tablas_especificas:
  - construction.asistencias
  - construction.asistencia_gps
  - construction.asistencia_biometrico
  - construction.destajo
  - construction.destajo_empleado

backend_especifico:
  - AsistenciasModule (GPS)
  - BiometricoModule
  - DestajoModule

frontend_especifico:
  - AsistenciaCapture (Mobile)
  - GPSTracker
  - DestajoCalculator
```

---

#### MAI-008: Estimaciones y Facturacion -> ESPECIFICO

| Aspecto | Valor |
|---------|-------|
| **Reutilizacion** | 20% GENERICO / 80% ESPECIFICO |
| **Modulo Generico** | MGN-004 Financiero (parcial) |
| **Componentes Especificos** | estimaciones, anticipos, retenciones, generadores |

**Detalle:**
```yaml
tablas_genericas:
  - financial.invoices (base)

tablas_especificas:
  - estimates.estimaciones
  - estimates.estimacion_conceptos
  - estimates.generadores
  - estimates.anticipos
  - estimates.retenciones
  - estimates.amortizaciones
  - estimates.workflow_estimacion

backend_especifico:
  - EstimacionesModule
  - GeneradoresModule
  - AnticiposModule
  - RetencionesModule

frontend_especifico:
  - EstimacionForm
  - GeneradorEditor
  - AnticiposRetenciones
  - WorkflowEstimacion
```

---

#### MAI-009: Calidad, Postventa y Garantias -> ESPECIFICO

| Aspecto | Valor |
|---------|-------|
| **Reutilizacion** | 10% GENERICO / 90% ESPECIFICO |
| **Componentes Especificos** | check-lists, punchlists, garantias, tickets postventa |

---

#### MAI-010: CRM Derechohabientes -> MGN-011 + MGN-013 + ESPECIFICO

| Aspecto | Valor |
|---------|-------|
| **Reutilizacion** | 40% GENERICO / 60% ESPECIFICO |
| **Modulos Genericos** | MGN-011 CRM (parcial), MGN-013 Portal |
| **Componentes Especificos** | derechohabientes INFONAVIT, asignacion vivienda |

---

#### MAI-011: INFONAVIT y Cumplimiento -> ESPECIFICO

| Aspecto | Valor |
|---------|-------|
| **Reutilizacion** | 0% - 100% ESPECIFICO |
| **Componentes Especificos** | reportes INFONAVIT, actas, cumplimiento regulatorio |

---

#### MAI-012: Contratos y Subcontratos -> ESPECIFICO

| Aspecto | Valor |
|---------|-------|
| **Reutilizacion** | 20% GENERICO / 80% ESPECIFICO |
| **Componentes Especificos** | contratos subcontratistas, destajo, penalizaciones |

---

#### MAI-013: Administracion y Seguridad -> MGN-001 + MGN-012

| Aspecto | Valor |
|---------|-------|
| **Reutilizacion** | 80% GENERICO / 20% ESPECIFICO |
| **Modulos Genericos** | MGN-001 Auth, MGN-012 Notificaciones |

---

### FASE 2: Enterprise (MAE-XXX)

#### MAE-014: Finanzas y Controlling -> MGN-004 + MGN-008

| Aspecto | Valor |
|---------|-------|
| **Reutilizacion** | 70% GENERICO / 30% ESPECIFICO |

---

#### MAE-015: Activos y Maquinaria -> ESPECIFICO

| Aspecto | Valor |
|---------|-------|
| **Reutilizacion** | 30% GENERICO / 70% ESPECIFICO |

---

#### MAE-016: Gestion Documental -> MGN-014 (parcial)

| Aspecto | Valor |
|---------|-------|
| **Reutilizacion** | 50% GENERICO / 50% ESPECIFICO |

---

### FASE 3: Avanzada (MAA-XXX)

#### MAA-017: Seguridad, Riesgos y HSE -> ESPECIFICO

| Aspecto | Valor |
|---------|-------|
| **Reutilizacion** | 0% - 100% ESPECIFICO |

---

## Matriz de Dependencias

```
MGN-001 (Fundamentos) <-- MAI-001 (100%)
                      <-- MAI-013 (80%)

MGN-004 (Financiero)  <-- MAI-008 (20%)
                      <-- MAE-014 (70%)

MGN-005 (Inventario)  <-- MAI-004 (80%)

MGN-006 (Compras)     <-- MAI-004 (80%)

MGN-008 (Analitica)   <-- MAI-006 (60%)
                      <-- MAE-014 (70%)

MGN-009 (Proyectos)   <-- MAI-002 (40%)

MGN-010 (RRHH)        <-- MAI-007 (50%)

MGN-011 (CRM)         <-- MAI-010 (40%)

MGN-013 (Portal)      <-- MAI-010 (40%)

MGN-014 (Reportes)    <-- MAI-006 (60%)
                      <-- MAE-016 (50%)
```

---

## Estrategia de Implementacion

### Paso 1: Dependencias del ERP Generico
```json
{
  "dependencies": {
    "@erp-generic/auth": "^1.0.0",
    "@erp-generic/core": "^1.0.0",
    "@erp-generic/financial": "^1.0.0",
    "@erp-generic/inventory": "^1.0.0",
    "@erp-generic/purchasing": "^1.0.0",
    "@erp-generic/analytics": "^1.0.0",
    "@erp-generic/hr": "^1.0.0",
    "@erp-generic/ui-components": "^1.0.0"
  }
}
```

### Paso 2: Extension de Modulos Genericos
```typescript
// Ejemplo: Extender proyecto generico para construccion
import { Project } from '@erp-generic/projects';

export class Fraccionamiento extends Project {
  etapas: Etapa[];
  manzanas: Manzana[];
  // Especifico de construccion
}
```

### Paso 3: Modulos Especificos de Construccion
```
@construccion/presupuestos
@construccion/estimaciones
@construccion/avances-obra
@construccion/infonavit
@construccion/calidad
```

---

## Referencias

- [ERP Generico - Lista de Modulos](/projects/erp-generic/docs/01-definicion-modulos/LISTA-MODULOS-ERP-GENERICO.md)
- [ERP Generico - Alcance por Modulo](/projects/erp-generic/docs/01-definicion-modulos/ALCANCE-POR-MODULO.md)
- [Retroalimentacion ERP Construccion](/projects/erp-generic/docs/01-definicion-modulos/RETROALIMENTACION-ERP-CONSTRUCCION.md)

---

**Ultima actualizacion:** 2025-11-24
**Version:** 1.0.0
