255 lines
8.1 KiB
Markdown
255 lines
8.1 KiB
Markdown
# Resumen Ejecutivo - Análisis de Módulos Odoo
|
|
|
|
**Proyecto:** ERP Genérico
|
|
**Fuente:** Odoo Community Edition v18.0
|
|
**Fecha:** 2025-11-23
|
|
**Analista:** Architecture-Analyst
|
|
|
|
---
|
|
|
|
## Objetivo del Análisis
|
|
|
|
Analizar los 12 módulos core de Odoo para extraer:
|
|
- Lógica de negocio consolidada y probada
|
|
- Modelos de datos principales
|
|
- Patrones arquitectónicos
|
|
- Funcionalidades relevantes para ERP Genérico
|
|
- Mapeo a módulos MGN (MGN-001 a MGN-014)
|
|
|
|
---
|
|
|
|
## Módulos Analizados (12)
|
|
|
|
| Módulo Odoo | Aplicación en ERP Genérico | Prioridad | Mapeo MGN | Estado |
|
|
|-------------|---------------------------|-----------|-----------|--------|
|
|
| **base** | Sistema base, modelos fundamentales | P0 | MGN-001, MGN-002, MGN-003 | ✅ Analizado |
|
|
| **auth_signup** | Autenticación y registro | P0 | MGN-001 | ✅ Analizado |
|
|
| **account** | Módulo financiero | P0 | MGN-004 | ✅ Analizado |
|
|
| **stock** | Inventario | P0 | MGN-005 | ✅ Analizado |
|
|
| **purchase** | Compras | P0 | MGN-006 | ✅ Analizado |
|
|
| **sale** | Ventas | P0 | MGN-007 | ✅ Analizado |
|
|
| **analytic** | Contabilidad analítica | P0 | MGN-008 | ✅ Analizado |
|
|
| **mail** | Mensajería y notificaciones | P0 | MGN-014 | ✅ Analizado |
|
|
| **crm** | CRM básico | P1 | MGN-009 | ✅ Analizado |
|
|
| **hr** | Recursos humanos | P1 | MGN-010 | ✅ Analizado |
|
|
| **project** | Proyectos genéricos | P1 | MGN-011 | ✅ Analizado |
|
|
| **portal** | Portal de usuarios | P1 | MGN-013 | ✅ Analizado |
|
|
|
|
---
|
|
|
|
## Hallazgos Principales
|
|
|
|
### 1. Arquitectura ORM Potente
|
|
Odoo implementa un ORM muy completo con:
|
|
- Decoradores para computed fields (`@api.depends`)
|
|
- Sistema de herencia múltiple (`_inherit`, `_inherits`)
|
|
- Campos relacionales sofisticados (Many2one, One2many, Many2many)
|
|
- Validaciones con `@api.constrains`
|
|
- OnChange events (`@api.onchange`)
|
|
|
|
**Aplicabilidad:** ⭐⭐⭐⭐⭐ - Patrones traducibles a TypeORM/Prisma
|
|
|
|
### 2. Sistema de Permisos Robusto
|
|
- Grupos de seguridad (`res.groups`)
|
|
- Record rules (filtrado por usuario/empresa)
|
|
- Permisos CRUD granulares (`ir.model.access`)
|
|
- Multi-company support nativo
|
|
|
|
**Aplicabilidad:** ⭐⭐⭐⭐⭐ - RBAC implementado en MGN-001
|
|
|
|
### 3. Contabilidad Analítica Universal
|
|
El módulo `analytic` permite tracking de costos por proyecto/centro de costos
|
|
- Integrado en todos los módulos (compras, ventas, inventario)
|
|
- Base para reportes financieros
|
|
- Esencial para ERPs multi-proyecto
|
|
|
|
**Aplicabilidad:** ⭐⭐⭐⭐⭐ - MGN-008 debe implementar este patrón
|
|
|
|
### 4. Sistema de Workflows con Estados
|
|
Todos los módulos usan Selection fields con estados bien definidos:
|
|
- `draft` → `confirmed` → `done` → `cancel`
|
|
- Transiciones controladas por lógica de negocio
|
|
- Integración con mail.thread para tracking
|
|
|
|
**Aplicabilidad:** ⭐⭐⭐⭐⭐ - Patrón universal para ERP Genérico
|
|
|
|
### 5. Integración con mail.thread
|
|
Casi todos los modelos heredan de `mail.thread` para:
|
|
- Tracking de cambios automático
|
|
- Sistema de mensajes y notificaciones
|
|
- Followers y actividades programadas
|
|
- Chatter UI
|
|
|
|
**Aplicabilidad:** ⭐⭐⭐⭐⭐ - MGN-014 debe implementar patrón similar
|
|
|
|
---
|
|
|
|
## Patrones Arquitectónicos Destacables
|
|
|
|
### 1. Multi-Company
|
|
```python
|
|
# Odoo pattern
|
|
company_id = fields.Many2one('res.company', required=True, default=lambda self: self.env.company)
|
|
```
|
|
- Record rules filtran por empresa automáticamente
|
|
- Usuarios pueden cambiar de empresa
|
|
- Aplicable a multi-tenancy del ERP Genérico
|
|
|
|
### 2. Analytic Accounts
|
|
```python
|
|
# Odoo pattern
|
|
analytic_account_id = fields.Many2one('account.analytic.account')
|
|
```
|
|
- Presente en: compras, ventas, inventario, proyectos
|
|
- Permite reportes consolidados de costos/ingresos por proyecto
|
|
- Esencial para construcción/manufactura
|
|
|
|
### 3. Portal Views
|
|
```python
|
|
# Odoo pattern
|
|
@http.route(['/my/orders'], type='http', auth='user', website=True)
|
|
def portal_my_orders(self):
|
|
# Vista limitada para clientes
|
|
```
|
|
- Sistema de portal para usuarios externos
|
|
- Acciones permitidas (aprobar, comentar, descargar)
|
|
- Seguridad con record rules
|
|
|
|
### 4. Wizard Pattern (TransientModel)
|
|
```python
|
|
class Wizard(models.TransientModel):
|
|
_name = 'module.wizard'
|
|
_description = 'Wizard for X'
|
|
```
|
|
- Modelos temporales para asistentes/formularios
|
|
- No se persisten en BD
|
|
- Útil para operaciones batch, imports, exports
|
|
|
|
### 5. Computed Fields
|
|
```python
|
|
@api.depends('line_ids.price_total')
|
|
def _compute_amount_total(self):
|
|
for record in self:
|
|
record.amount_total = sum(record.line_ids.mapped('price_total'))
|
|
```
|
|
- Campos calculados automáticamente
|
|
- Caché inteligente
|
|
- Actualización cascada
|
|
|
|
---
|
|
|
|
## Recomendaciones para ERP Genérico
|
|
|
|
### ADOPTAR ✅
|
|
|
|
1. **Sistema de estados con workflows**
|
|
- Implementar en todos los módulos MGN
|
|
- Estados: draft, confirmed, done, cancelled
|
|
- Transiciones controladas
|
|
|
|
2. **RBAC granular**
|
|
- Basado en res.users y res.groups de Odoo
|
|
- Permisos por modelo (CRUD)
|
|
- Record rules para filtrado
|
|
|
|
3. **Contabilidad analítica**
|
|
- MGN-008 debe implementar `analytic_accounts`
|
|
- Integrar en todos los módulos transaccionales
|
|
|
|
4. **Multi-company/Multi-tenant**
|
|
- Patrón similar a Odoo pero con schemas PostgreSQL
|
|
- Campo `tenant_id` en todas las tablas
|
|
- RLS policies
|
|
|
|
5. **Sistema de tracking y auditoría**
|
|
- Patrón mail.thread adaptado
|
|
- Tracking de cambios automático
|
|
- Historial de modificaciones
|
|
|
|
### ADAPTAR 🔧
|
|
|
|
1. **ORM patterns → TypeORM/Prisma**
|
|
- Traducir decoradores Python a TypeScript
|
|
- Computed fields → getters o virtual columns
|
|
- Constraints → validaciones Zod/Joi
|
|
|
|
2. **XML Views → React Components**
|
|
- Form views → React forms (React Hook Form)
|
|
- Tree views → DataTables (TanStack Table)
|
|
- Kanban views → Drag & drop boards
|
|
|
|
3. **Portal → Frontend routes**
|
|
- Portal Odoo → rutas públicas en React
|
|
- Autenticación JWT
|
|
- Permisos en frontend + backend
|
|
|
|
### EVITAR ❌
|
|
|
|
1. **No copiar arquitectura Python**
|
|
- No replicar ORM de Odoo
|
|
- Usar ORMs nativos de Node.js
|
|
|
|
2. **No usar XML para UI**
|
|
- Odoo usa XML, nosotros React/TypeScript
|
|
- Componentes modernos
|
|
|
|
3. **No sobre-complicar**
|
|
- Odoo tiene 600+ módulos
|
|
- ERP Genérico solo 14 módulos core
|
|
|
|
---
|
|
|
|
## Mapeo Odoo → MGN
|
|
|
|
Ver archivo detallado: [MAPEO-ODOO-TO-MGN.md](./MAPEO-ODOO-TO-MGN.md)
|
|
|
|
| Módulo Odoo | Módulo MGN | Funcionalidades Clave a Migrar |
|
|
|-------------|------------|--------------------------------|
|
|
| base + auth_signup | MGN-001 | Autenticación, usuarios, RBAC |
|
|
| base (res.company, res.currency) | MGN-002 | Empresas, organizaciones |
|
|
| base (res.partner, res.country, uom) | MGN-003 | Catálogos maestros |
|
|
| account | MGN-004 | Contabilidad, plan de cuentas, asientos |
|
|
| stock | MGN-005 | Inventario, almacenes, movimientos |
|
|
| purchase | MGN-006 | Compras, proveedores, requisiciones |
|
|
| sale | MGN-007 | Ventas, cotizaciones, clientes |
|
|
| analytic | MGN-008 | Cuentas analíticas, centros de costo |
|
|
| crm | MGN-009 | Leads, oportunidades, pipeline |
|
|
| hr | MGN-010 | Empleados, departamentos, contratos |
|
|
| project | MGN-011 | Proyectos, tareas, milestones |
|
|
| account (reports) | MGN-012 | Reportes financieros, dashboards |
|
|
| portal | MGN-013 | Portal de usuarios externos |
|
|
| mail | MGN-014 | Mensajería, notificaciones, tracking |
|
|
|
|
---
|
|
|
|
## Archivos de Análisis Detallado
|
|
|
|
1. [odoo-base-analysis.md](./odoo-base-analysis.md)
|
|
2. [odoo-auth-analysis.md](./odoo-auth-analysis.md)
|
|
3. [odoo-account-analysis.md](./odoo-account-analysis.md)
|
|
4. [odoo-stock-analysis.md](./odoo-stock-analysis.md)
|
|
5. [odoo-purchase-analysis.md](./odoo-purchase-analysis.md)
|
|
6. [odoo-sale-analysis.md](./odoo-sale-analysis.md)
|
|
7. [odoo-analytic-analysis.md](./odoo-analytic-analysis.md)
|
|
8. [odoo-mail-analysis.md](./odoo-mail-analysis.md)
|
|
9. [odoo-crm-analysis.md](./odoo-crm-analysis.md)
|
|
10. [odoo-hr-analysis.md](./odoo-hr-analysis.md)
|
|
11. [odoo-project-analysis.md](./odoo-project-analysis.md)
|
|
12. [odoo-portal-analysis.md](./odoo-portal-analysis.md)
|
|
|
|
---
|
|
|
|
## Próximos Pasos
|
|
|
|
1. Revisar análisis detallado de cada módulo
|
|
2. Validar mapeo Odoo → MGN
|
|
3. Priorizar funcionalidades a implementar
|
|
4. Crear RF basándose en funcionalidades Odoo
|
|
5. Diseñar BD basándose en modelos Odoo
|
|
|
|
---
|
|
|
|
**Fecha:** 2025-11-23
|
|
**Versión:** 1.0.0
|
|
**Estado:** ✅ Análisis completo
|