479 lines
15 KiB
Markdown
479 lines
15 KiB
Markdown
# 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
|