# Mapeo Completo: Odoo → ERP Genérico (MGN)

**Proyecto:** ERP Genérico
**Fecha:** 2025-11-23
**Versión:** 1.0.0

---

## Objetivo

Mapear funcionalidades de los 12 módulos Odoo analizados a los 14 módulos del ERP Genérico (MGN-001 a MGN-014).

---

## Tabla de Mapeo General

| Módulo Odoo | Módulo MGN | Nombre MGN | Prioridad | Reutilización |
|-------------|------------|------------|-----------|---------------|
| base | MGN-001 | Fundamentos | P0 | 90% |
| auth_signup | MGN-001 | Fundamentos | P0 | 85% |
| base (res.company) | MGN-002 | Empresas y Organizaciones | P0 | 90% |
| base (partners, countries, uom) | MGN-003 | Catálogos Maestros | P0 | 95% |
| account | MGN-004 | Financiero Básico | P0 | 70% |
| stock | MGN-005 | Inventario Básico | P0 | 80% |
| purchase | MGN-006 | Compras Básico | P0 | 85% |
| sale | MGN-007 | Ventas Básico | P0 | 85% |
| analytic | MGN-008 | Contabilidad Analítica | P0 | 95% |
| crm | MGN-009 | CRM Básico | P1 | 75% |
| hr | MGN-010 | RRHH Básico | P1 | 70% |
| project | MGN-011 | Proyectos Genéricos | P1 | 80% |
| account (reports) | MGN-012 | Reportes y Analytics | P1 | 60% |
| portal | MGN-013 | Portal de Usuarios | P1 | 80% |
| mail | MGN-014 | Mensajería y Notificaciones | P0 | 85% |

---

## Mapeo Detallado por Módulo MGN

### MGN-001: Fundamentos

**Fuentes Odoo:**
- `base` (res.users, res.groups, ir.model.access, ir.rule)
- `auth_signup` (signup, reset password)

**Funcionalidades a Migrar:**

| Funcionalidad Odoo | RF MGN-001 | Descripción | Prioridad |
|-------------------|------------|-------------|-----------|
| Autenticación usuarios | RF-AUTH-001 | Login con JWT | P0 |
| Gestión de usuarios | RF-AUTH-002 | CRUD usuarios, perfiles | P0 |
| Sistema RBAC | RF-AUTH-003 | Roles, permisos por modelo, RLS | P0 |
| Multi-tenancy | RF-AUTH-004 | Schema-level isolation | P0 |
| Registro usuarios | RF-AUTH-005 | Signup con validación | P0 |
| Reset password | RF-AUTH-006 | Token seguro, expiración 24h | P0 |
| Cambio contraseña | RF-AUTH-007 | Validación password fuerte | P0 |
| Verificación email | RF-AUTH-008 | Token de verificación | P1 |

**Modelos Odoo → Tablas MGN:**
- `res.users` → `auth.users`
- `res.groups` → `auth.roles`
- `ir.model.access` → `auth.model_permissions`
- `ir.rule` → PostgreSQL RLS policies

**Patrones a Adoptar:**
- ✅ RBAC con herencia de roles
- ✅ Permisos CRUD granulares
- ✅ RLS (Row Level Security)
- ✅ Soft delete (active=true/false)

**Patrones a Adaptar:**
- 🔧 Sesiones → JWT tokens
- 🔧 Python decorators → TypeScript decorators
- 🔧 XML-RPC → REST APIs

---

### MGN-002: Empresas y Organizaciones

**Fuente Odoo:**
- `base` (res.company)

**Funcionalidades a Migrar:**

| Funcionalidad Odoo | RF MGN-002 | Descripción | Prioridad |
|-------------------|------------|-------------|-----------|
| Gestión de empresas | RF-COMP-001 | CRUD empresas, holdings | P0 |
| Multi-company | RF-COMP-002 | Usuario acceso a múltiples empresas | P0 |
| Configuración empresa | RF-COMP-003 | Logo, datos fiscales, moneda | P0 |

**Modelos Odoo → Tablas MGN:**
- `res.company` → `core.companies`

**Patrones a Adoptar:**
- ✅ Holdings (parent_id)
- ✅ Empresa vinculada a partner
- ✅ Moneda principal por empresa

---

### MGN-003: Catálogos Maestros

**Fuente Odoo:**
- `base` (res.partner, res.currency, res.country, uom.uom)

**Funcionalidades a Migrar:**

| Funcionalidad Odoo | RF MGN-003 | Descripción | Prioridad |
|-------------------|------------|-------------|-----------|
| Gestión de partners | RF-CAT-001 | Clientes, proveedores, contactos (patrón universal) | P0 |
| Catálogo monedas | RF-CAT-002 | ISO 4217, tasas de cambio | P0 |
| Catálogo países | RF-CAT-003 | ISO 3166-1, estados/provincias | P0 |
| Unidades de medida | RF-CAT-004 | Categorías, conversiones | P0 |

**Modelos Odoo → Tablas MGN:**
- `res.partner` → `core.partners`
- `res.currency` → `core.currencies`
- `res.country` → `core.countries`
- `res.country.state` → `core.states`
- `uom.uom` → `core.units_of_measure`
- `uom.category` → `core.uom_categories`

**Patrones a Adoptar:**
- ✅ Partner universal (is_customer, is_vendor, is_employee)
- ✅ Estructura jerárquica (parent_id)
- ✅ Conversiones de UoM

---

### MGN-004: Financiero Básico

**Fuente Odoo:**
- `account`

**Funcionalidades a Migrar:**

| Funcionalidad Odoo | RF MGN-004 | Descripción | Prioridad |
|-------------------|------------|-------------|-----------|
| Plan de cuentas | RF-FIN-001 | Chart of accounts, tipos de cuenta | P0 |
| Asientos contables | RF-FIN-002 | Journal entries, débito/crédito | P0 |
| Facturas | RF-FIN-003 | Facturas cliente/proveedor | P0 |
| Pagos | RF-FIN-004 | Pagos, conciliación | P0 |
| Reportes financieros | RF-FIN-005 | Balance, P&L | P1 |
| Multi-moneda | RF-FIN-006 | Tasas de cambio, gain/loss | P1 |

**Modelos Odoo → Tablas MGN:**
- `account.account` → `financial.accounts`
- `account.move` → `financial.journal_entries`
- `account.move.line` → `financial.journal_entry_lines`
- `account.journal` → `financial.journals`
- `account.payment` → `financial.payments`

**Patrones a Adoptar:**
- ✅ Doble entrada (débito = crédito)
- ✅ Estados: draft → posted
- ✅ Conciliación bancaria

---

### MGN-005: Inventario Básico

**Fuente Odoo:**
- `stock`

**Funcionalidades a Migrar:**

| Funcionalidad Odoo | RF MGN-005 | Descripción | Prioridad |
|-------------------|------------|-------------|-----------|
| Gestión almacenes | RF-INV-001 | Warehouses, configuración | P0 |
| Ubicaciones | RF-INV-002 | Estructura jerárquica, tipos | P0 |
| Movimientos | RF-INV-003 | Stock moves, origen/destino | P0 |
| Pickings | RF-INV-004 | Albaranes, agrupación movimientos | P0 |
| Trazabilidad | RF-INV-005 | Lotes, números de serie | P1 |
| Valoración | RF-INV-006 | FIFO, Average Cost | P1 |

**Modelos Odoo → Tablas MGN:**
- `stock.warehouse` → `inventory.warehouses`
- `stock.location` → `inventory.locations`
- `stock.move` → `inventory.stock_moves`
- `stock.picking` → `inventory.pickings`
- `stock.quant` → `inventory.stock_quants`

**Patrones a Adoptar:**
- ✅ Doble movimiento (origen → tránsito → destino)
- ✅ Ubicaciones virtuales
- ✅ Estrategias de inventario

---

### MGN-006: Compras Básico

**Fuente Odoo:**
- `purchase`

**Funcionalidades a Migrar:**

| Funcionalidad Odoo | RF MGN-006 | Descripción | Prioridad |
|-------------------|------------|-------------|-----------|
| Gestión proveedores | RF-COM-001 | Catálogo, condiciones pago | P0 |
| RFQ | RF-COM-002 | Solicitudes de cotización | P0 |
| Órdenes de compra | RF-COM-003 | Purchase orders, aprobación | P0 |
| Recepciones | RF-COM-004 | Integración con inventario | P0 |
| Facturación compras | RF-COM-005 | Facturas de proveedor | P0 |

**Modelos Odoo → Tablas MGN:**
- `purchase.order` → `purchase.orders`
- `purchase.order.line` → `purchase.order_lines`
- Partners con `supplier_rank > 0` → Vendors

**Patrones a Adoptar:**
- ✅ Workflow: RFQ → PO → Recepción → Factura
- ✅ Integración automática con stock
- ✅ Control cantidades recibidas vs facturadas

---

### MGN-007: Ventas Básico

**Fuente Odoo:**
- `sale`

**Funcionalidades a Migrar:**

| Funcionalidad Odoo | RF MGN-007 | Descripción | Prioridad |
|-------------------|------------|-------------|-----------|
| Gestión clientes | RF-VEN-001 | Catálogo, condiciones pago | P0 |
| Cotizaciones | RF-VEN-002 | Quotations, envío a cliente | P0 |
| Órdenes de venta | RF-VEN-003 | Sales orders, aprobación | P0 |
| Entregas | RF-VEN-004 | Integración con inventario | P0 |
| Facturación ventas | RF-VEN-005 | Facturas de cliente | P0 |
| Portal clientes | RF-VEN-006 | Aprobación online, firma | P1 |

**Modelos Odoo → Tablas MGN:**
- `sale.order` → `sales.orders`
- `sale.order.line` → `sales.order_lines`
- Partners con `customer_rank > 0` → Customers

**Patrones a Adoptar:**
- ✅ Workflow: Cotización → Venta → Entrega → Factura
- ✅ Portal de aprobación
- ✅ Firma electrónica

---

### MGN-008: Contabilidad Analítica

**Fuente Odoo:**
- `analytic`

**Funcionalidades a Migrar:**

| Funcionalidad Odoo | RF MGN-008 | Descripción | Prioridad |
|-------------------|------------|-------------|-----------|
| Cuentas analíticas | RF-ANA-001 | Proyectos, centros de costo | P0 |
| Líneas analíticas | RF-ANA-002 | Registro de costos/ingresos | P0 |
| Reportes analíticos | RF-ANA-003 | Balance por proyecto | P0 |
| Integración módulos | RF-ANA-004 | Compras, ventas, nómina → analytic | P0 |

**Modelos Odoo → Tablas MGN:**
- `account.analytic.account` → `analytics.accounts`
- `account.analytic.line` → `analytics.lines`

**Patrones a Adoptar:**
- ✅ Campo `analytic_account_id` en TODOS los módulos transaccionales
- ✅ Reportes consolidados por proyecto
- ✅ Integración universal

**Aplicabilidad:** ⭐⭐⭐⭐⭐ - CRÍTICO para ERP de proyectos

---

### MGN-009: CRM Básico

**Fuente Odoo:**
- `crm`

**Funcionalidades a Migrar:**

| Funcionalidad Odoo | RF MGN-009 | Descripción | Prioridad |
|-------------------|------------|-------------|-----------|
| Gestión de leads | RF-CRM-001 | Leads/oportunidades | P1 |
| Pipeline ventas | RF-CRM-002 | Stages, probabilidad | P1 |
| Actividades | RF-CRM-003 | Seguimiento, recordatorios | P1 |
| Conversión | RF-CRM-004 | Lead → Cotización | P1 |
| Reportes CRM | RF-CRM-005 | Rendimiento vendedores | P2 |

**Modelos Odoo → Tablas MGN:**
- `crm.lead` → `crm.leads`
- `crm.stage` → `crm.stages`
- `crm.team` → `crm.teams`

**Patrones a Adoptar:**
- ✅ Pipeline kanban drag-and-drop
- ✅ Lead scoring automático
- ✅ Actividades de seguimiento

---

### MGN-010: RRHH Básico

**Fuente Odoo:**
- `hr`, `hr_contract`, `hr_attendance`

**Funcionalidades a Migrar:**

| Funcionalidad Odoo | RF MGN-010 | Descripción | Prioridad |
|-------------------|------------|-------------|-----------|
| Gestión empleados | RF-HR-001 | Datos personales, puestos | P1 |
| Departamentos | RF-HR-002 | Estructura jerárquica | P1 |
| Contratos | RF-HR-003 | Tipo, salario, fechas | P1 |
| Asistencias | RF-HR-004 | Check-in/out, horas trabajadas | P1 |
| Timesheet | RF-HR-005 | Horas por proyecto/tarea | P2 |

**Modelos Odoo → Tablas MGN:**
- `hr.employee` → `hr.employees`
- `hr.department` → `hr.departments`
- `hr.contract` → `hr.contracts`
- `hr.attendance` → `hr.attendances`

**Patrones a Adoptar:**
- ✅ Empleado vinculado a partner y user
- ✅ Departamentos jerárquicos
- ✅ Integración timesheet → analytic accounts

---

### MGN-011: Proyectos Genéricos

**Fuente Odoo:**
- `project`

**Funcionalidades a Migrar:**

| Funcionalidad Odoo | RF MGN-011 | Descripción | Prioridad |
|-------------------|------------|-------------|-----------|
| Gestión proyectos | RF-PRO-001 | Proyectos, manager | P1 |
| Tareas | RF-PRO-002 | Tasks, subtasks, asignación | P1 |
| Stages | RF-PRO-003 | Pipeline personalizable | P1 |
| Timesheet | RF-PRO-004 | Horas por tarea | P2 |
| Portal proyectos | RF-PRO-005 | Vista cliente | P2 |

**Modelos Odoo → Tablas MGN:**
- `project.project` → `projects.projects`
- `project.task` → `projects.tasks`
- `project.task.type` → `projects.task_stages`

**Patrones a Adoptar:**
- ✅ Vista kanban de tareas
- ✅ Integración con analytic accounts
- ✅ Portal de clientes

**Aplicabilidad:** ⭐⭐⭐⭐⭐ - CRÍTICO para construcción/proyectos

---

### MGN-012: Reportes y Analytics

**Fuente Odoo:**
- `account` (reportes)

**Funcionalidades a Migrar:**

| Funcionalidad Odoo | RF MGN-012 | Descripción | Prioridad |
|-------------------|------------|-------------|-----------|
| Reportes financieros | RF-REP-001 | Balance, P&L | P1 |
| Dashboards | RF-REP-002 | KPIs, gráficos | P1 |
| Reportes personalizados | RF-REP-003 | Query builder | P2 |
| Exportación | RF-REP-004 | PDF, Excel, CSV | P1 |

**Patrones a Adoptar:**
- ✅ Reportes con filtros dinámicos
- ✅ Caching de reportes pesados
- ✅ Exportación multi-formato

---

### MGN-013: Portal de Usuarios

**Fuente Odoo:**
- `portal`

**Funcionalidades a Migrar:**

| Funcionalidad Odoo | RF MGN-013 | Descripción | Prioridad |
|-------------------|------------|-------------|-----------|
| Portal clientes | RF-POR-001 | Dashboard, login | P1 |
| Vista documentos | RF-POR-002 | Órdenes, facturas | P1 |
| Aprobación cotizaciones | RF-POR-003 | Firma electrónica | P1 |
| Vista proyectos | RF-POR-004 | Tareas, comentarios | P2 |

**Modelos Odoo → Tablas MGN:**
- Usuarios con `share=true` → Rol `portal_user`

**Patrones a Adoptar:**
- ✅ RLS estricto (usuario solo ve sus registros)
- ✅ Permisos read-only + acciones permitidas
- ✅ Firma electrónica (canvas HTML5)

**Aplicabilidad:** ⭐⭐⭐⭐⭐ - CRÍTICO para portal derechohabientes INFONAVIT

---

### MGN-014: Mensajería y Notificaciones

**Fuente Odoo:**
- `mail`

**Funcionalidades a Migrar:**

| Funcionalidad Odoo | RF MGN-014 | Descripción | Prioridad |
|-------------------|------------|-------------|-----------|
| Sistema notificaciones | RF-NOT-001 | Notificaciones en tiempo real | P0 |
| Mensajería interna | RF-NOT-002 | Chat, mensajes por registro | P1 |
| Tracking cambios | RF-NOT-003 | Auditoría automática | P0 |
| Actividades | RF-NOT-004 | Recordatorios, tareas | P1 |
| Followers | RF-NOT-005 | Suscripción a registros | P2 |

**Modelos Odoo → Tablas MGN:**
- `mail.message` → `notifications.messages`
- `mail.followers` → `notifications.followers`
- `mail.activity` → `notifications.activities`
- Tracking implícito → `notifications.tracking`

**Patrones a Adoptar:**
- ✅ Tracking automático de campos (tracking=true)
- ✅ Chatter UI por registro
- ✅ Followers + notificaciones

**Patrones a Mejorar:**
- 🔧 Polling → WebSocket (Socket.IO)
- 🔧 Mejor UX de notificaciones

**Aplicabilidad:** ⭐⭐⭐⭐⭐ - ESENCIAL para auditoría y colaboración

---

## Resumen de Reutilización

| Módulo MGN | % Reutilización Odoo | Esfuerzo Adaptación | Prioridad |
|------------|----------------------|---------------------|-----------|
| MGN-001 | 90% | Bajo | P0 |
| MGN-002 | 90% | Bajo | P0 |
| MGN-003 | 95% | Muy Bajo | P0 |
| MGN-004 | 70% | Medio | P0 |
| MGN-005 | 80% | Bajo-Medio | P0 |
| MGN-006 | 85% | Bajo | P0 |
| MGN-007 | 85% | Bajo | P0 |
| MGN-008 | 95% | Muy Bajo | P0 |
| MGN-009 | 75% | Medio | P1 |
| MGN-010 | 70% | Medio | P1 |
| MGN-011 | 80% | Bajo-Medio | P1 |
| MGN-012 | 60% | Alto | P1 |
| MGN-013 | 80% | Bajo-Medio | P1 |
| MGN-014 | 85% | Bajo | P0 |

**Promedio de reutilización:** 81%

---

## Conclusión

Los 12 módulos de Odoo analizados proporcionan una base sólida para implementar los 14 módulos del ERP Genérico.

**Principales beneficios del análisis:**
1. Lógica de negocio probada en miles de empresas
2. Patrones arquitectónicos consolidados
3. Funcionalidades completas y bien diseñadas
4. Reducción de riesgo en decisiones de diseño

**Próximos pasos:**
1. Usar este mapeo para crear RF de MGN-001 a MGN-014
2. Diseñar BD basándose en modelos Odoo
3. Adaptar patrones Odoo a stack Node.js + React + PostgreSQL

---

**Fecha:** 2025-11-23
**Analista:** Architecture-Analyst
**Estado:** ✅ Mapeo completo
