374 lines
11 KiB
Markdown
374 lines
11 KiB
Markdown
# Mapeo Odoo - ERP Construccion
|
|
|
|
**Version:** 1.0.0
|
|
**Fecha:** 2025-12-05
|
|
**Responsable:** Requirements-Analyst
|
|
|
|
---
|
|
|
|
## Resumen
|
|
|
|
Este documento detalla el mapeo entre los modulos de Odoo Community y los modulos del ERP Construccion, incluyendo que funcionalidades se adoptan, adaptan o crean desde cero.
|
|
|
|
---
|
|
|
|
## Matriz de Mapeo por Modulo
|
|
|
|
### MAI-001: Autenticacion y Multi-tenancy
|
|
|
|
| Funcionalidad | Modulo Odoo | Estrategia | Notas |
|
|
|---------------|-------------|------------|-------|
|
|
| Login/Logout | `auth_signup`, `base` | Adaptar | JWT en lugar de sesiones |
|
|
| Multi-company | `base.res_company` | Adaptar | Schema-level RLS vs company_id |
|
|
| Roles y permisos | `base.res_groups` | Crear nuevo | RBAC con claims personalizados |
|
|
| 2FA | `auth_totp` | Adoptar patron | Implementar TOTP compatible |
|
|
| SSO | No nativo | Crear nuevo | SAML/OIDC para enterprise |
|
|
|
|
**Patrones Adoptados:**
|
|
- Concepto de `company_id` como filtro global
|
|
- Grupos de permisos jerarquicos
|
|
- Modelo de usuario con partner asociado
|
|
|
|
---
|
|
|
|
### MAI-002: Gestion de Proyectos
|
|
|
|
| Funcionalidad | Modulo Odoo | Estrategia | Notas |
|
|
|---------------|-------------|------------|-------|
|
|
| Proyectos | `project.project` | Adoptar | Extender con campos construccion |
|
|
| Tareas | `project.task` | Adaptar | Convertir en actividades de obra |
|
|
| Stages | `project.task.type` | Adoptar | Personalizar para construccion |
|
|
| Milestones | `project.milestone` | Adoptar | Hitos de obra |
|
|
| Team | `project.tags` | Crear nuevo | Equipo de proyecto dedicado |
|
|
|
|
**Mapeo de Estados:**
|
|
```
|
|
Odoo: draft -> open -> pending -> done -> cancel
|
|
Ours: PLANNING -> IN_PROGRESS -> PAUSED -> COMPLETED -> CANCELLED
|
|
```
|
|
|
|
**Campos Adicionales (no en Odoo):**
|
|
- `progress_percentage` - Avance calculado
|
|
- `development_id` - Vinculo con desarrollo inmobiliario
|
|
- `infonavit_registration` - Registro INFONAVIT
|
|
- `contractor_id` - Contratista principal
|
|
|
|
---
|
|
|
|
### MAI-003: Presupuestos y APU
|
|
|
|
| Funcionalidad | Modulo Odoo | Estrategia | Notas |
|
|
|---------------|-------------|------------|-------|
|
|
| Catalogo conceptos | No existe | Crear nuevo | Catalogo CMIC base |
|
|
| APU (Analisis Precios) | No existe | Crear nuevo | Formato mexicano |
|
|
| Presupuesto base | `account.budget` | Referencia | Concepto similar, diferente impl |
|
|
| Partidas | No existe | Crear nuevo | Jerarquia de costos |
|
|
| Versiones | No existe | Crear nuevo | Control de versiones |
|
|
|
|
**Estructura APU (Creacion propia):**
|
|
```
|
|
BudgetItem (Partida)
|
|
├── concept_code
|
|
├── description
|
|
├── unit
|
|
├── quantity
|
|
├── unit_price (compuesto de):
|
|
│ ├── materials[]
|
|
│ ├── labor[]
|
|
│ ├── equipment[]
|
|
│ └── indirect_costs
|
|
└── total_amount
|
|
```
|
|
|
|
---
|
|
|
|
### MAI-004: Compras e Inventario
|
|
|
|
| Funcionalidad | Modulo Odoo | Estrategia | Notas |
|
|
|---------------|-------------|------------|-------|
|
|
| Ordenes de compra | `purchase.order` | Adoptar | Estados identicos |
|
|
| Lineas de compra | `purchase.order.line` | Adoptar | Con proyecto vinculado |
|
|
| Proveedores | `res.partner` (supplier) | Adoptar | Con campos adicionales |
|
|
| Almacenes | `stock.warehouse` | Adoptar | Multi-almacen por proyecto |
|
|
| Movimientos | `stock.move` | Adoptar | Trazabilidad completa |
|
|
| Inventario | `stock.quant` | Adoptar | Stock actual calculado |
|
|
| Requisiciones | `purchase.requisition` | Adoptar | Flujo de requisicion |
|
|
|
|
**Estados de Orden de Compra:**
|
|
```
|
|
Odoo: draft -> sent -> to_approve -> purchase -> done -> cancel
|
|
Ours: DRAFT -> SENT -> TO_APPROVE -> APPROVED -> RECEIVED -> CANCELLED
|
|
```
|
|
|
|
**Campos Adicionales:**
|
|
- `project_id` - Vinculo con proyecto
|
|
- `budget_item_id` - Partida de presupuesto
|
|
- `cost_center` - Centro de costos
|
|
|
|
---
|
|
|
|
### MAI-005: Avances de Obra
|
|
|
|
| Funcionalidad | Modulo Odoo | Estrategia | Notas |
|
|
|---------------|-------------|------------|-------|
|
|
| Registro avances | No existe | Crear nuevo | % completado por actividad |
|
|
| Curva S | No existe | Crear nuevo | Grafico planeado vs real |
|
|
| Cronograma | `project.task` (dates) | Adaptar | Extender con Gantt |
|
|
| Evidencia fotografica | No existe | Crear nuevo | Fotos con geolocalizacion |
|
|
|
|
**Modelo de Avance (Creacion propia):**
|
|
```
|
|
ProgressEntry
|
|
├── activity_id
|
|
├── report_date
|
|
├── planned_percentage
|
|
├── actual_percentage
|
|
├── quantity_completed
|
|
├── photos[] (with GPS)
|
|
└── notes
|
|
```
|
|
|
|
---
|
|
|
|
### MAI-006: Finanzas y Contabilidad
|
|
|
|
| Funcionalidad | Modulo Odoo | Estrategia | Notas |
|
|
|---------------|-------------|------------|-------|
|
|
| Plan de cuentas | `account.account` | Adaptar | Cuenta contable mexicana |
|
|
| Polizas | `account.move` | Adoptar | Journal entries |
|
|
| Lineas contables | `account.move.line` | Adoptar | Con cuenta analitica |
|
|
| Cuenta analitica | `account.analytic` | Adoptar | Por proyecto |
|
|
| Facturas | `account.move` (invoice) | Adaptar | CFDI requerido |
|
|
| Pagos | `account.payment` | Adoptar | Multiples metodos |
|
|
| Conciliacion | `account.bank.statement` | Adoptar | Conciliacion bancaria |
|
|
|
|
**Integracion CFDI (Creacion propia):**
|
|
- PAC integration
|
|
- Timbrado automatico
|
|
- Descarga masiva SAT
|
|
- Cancelacion CFDI
|
|
|
|
---
|
|
|
|
### MAI-007: Nomina
|
|
|
|
| Funcionalidad | Modulo Odoo | Estrategia | Notas |
|
|
|---------------|-------------|------------|-------|
|
|
| Empleados | `hr.employee` | Adoptar | Con CURP, RFC, IMSS |
|
|
| Contratos | `hr.contract` | Adoptar | Tipos mexicanos |
|
|
| Nomina | `hr.payslip` | Referencia | Muy diferente, crear nuevo |
|
|
| Percepciones/Ded | No compatible | Crear nuevo | Ley mexicana |
|
|
| IMSS | No existe | Crear nuevo | SUA compatible |
|
|
| ISN | No existe | Crear nuevo | Impuesto estatal |
|
|
|
|
**Nota:** La nomina mexicana difiere significativamente de Odoo. Se toma como referencia la arquitectura pero se implementa logica propia para:
|
|
- Tabla ISR
|
|
- Calculo IMSS patron/trabajador
|
|
- PTU
|
|
- Aguinaldo
|
|
- Prima vacacional
|
|
|
|
---
|
|
|
|
### MAI-008: Estimaciones INFONAVIT
|
|
|
|
| Funcionalidad | Modulo Odoo | Estrategia | Notas |
|
|
|---------------|-------------|------------|-------|
|
|
| Todo el modulo | No existe | Crear nuevo | 100% propietario |
|
|
|
|
**Funcionalidades propias:**
|
|
- Generacion de estimaciones por vivienda
|
|
- Calculo automatico de avances
|
|
- Formato INFONAVIT oficial
|
|
- Validacion de requisitos
|
|
- Envio electronico
|
|
|
|
---
|
|
|
|
### MAI-009: Calidad
|
|
|
|
| Funcionalidad | Modulo Odoo | Estrategia | Notas |
|
|
|---------------|-------------|------------|-------|
|
|
| Puntos de control | `quality.point` | Adoptar | Checklist de calidad |
|
|
| Inspecciones | `quality.check` | Adoptar | Con evidencia |
|
|
| No conformidades | `quality.alert` | Adoptar | Workflow de correccion |
|
|
| Acciones correctivas | No nativo completo | Crear nuevo | CAPA process |
|
|
|
|
---
|
|
|
|
### MAI-010: Portal Derechohabientes
|
|
|
|
| Funcionalidad | Modulo Odoo | Estrategia | Notas |
|
|
|---------------|-------------|------------|-------|
|
|
| Portal base | `portal` | Referencia | UI completamente diferente |
|
|
| Autenticacion | `auth_signup` | Referencia | Con CURP validation |
|
|
| Documentos | `documents` | Referencia | Firma electronica NOM-151 |
|
|
|
|
**Funcionalidades propias:**
|
|
- Vinculacion por NSS INFONAVIT
|
|
- Estado de vivienda
|
|
- Documentos de entrega
|
|
- Citas de entrega
|
|
- Garantias post-venta
|
|
|
|
---
|
|
|
|
### MAI-011: Cumplimiento INFONAVIT
|
|
|
|
| Funcionalidad | Modulo Odoo | Estrategia | Notas |
|
|
|---------------|-------------|------------|-------|
|
|
| Todo el modulo | No existe | Crear nuevo | 100% propietario |
|
|
|
|
**Funcionalidades propias:**
|
|
- Catalogo de requisitos por programa
|
|
- Checklist de cumplimiento
|
|
- Evidencia documental
|
|
- Auditorias de verificacion
|
|
- Alertas de vencimiento
|
|
|
|
---
|
|
|
|
### MAE-014: Modulo Financiero Avanzado
|
|
|
|
| Funcionalidad | Modulo Odoo | Estrategia | Notas |
|
|
|---------------|-------------|------------|-------|
|
|
| CxP avanzado | `account` | Extender | Flujos de aprobacion |
|
|
| CxC avanzado | `account` | Extender | Cobranza automatizada |
|
|
| Flujo de caja | No nativo | Crear nuevo | Proyeccion y control |
|
|
| Presupuesto financiero | `account.budget` | Adaptar | Por proyecto |
|
|
| Reportes SAT | No existe | Crear nuevo | DIOT, Balanza, etc |
|
|
|
|
---
|
|
|
|
### MAE-015: Gestion de Activos
|
|
|
|
| Funcionalidad | Modulo Odoo | Estrategia | Notas |
|
|
|---------------|-------------|------------|-------|
|
|
| Catalogo activos | `account.asset` | Adoptar | Registro de activos |
|
|
| Depreciacion | `account.asset` | Adoptar | Metodos mexicanos |
|
|
| Mantenimiento | `maintenance.request` | Adoptar | Preventivo/correctivo |
|
|
| Ordenes trabajo | `maintenance.request` | Extender | Workflow completo |
|
|
| GPS/Geofence | No existe | Crear nuevo | Tracking en tiempo real |
|
|
|
|
---
|
|
|
|
### MAE-016: Gestion Documental
|
|
|
|
| Funcionalidad | Modulo Odoo | Estrategia | Notas |
|
|
|---------------|-------------|------------|-------|
|
|
| Carpetas | `documents.folder` | Adoptar | Estructura jerarquica |
|
|
| Documentos | `documents.document` | Adoptar | Con versionado |
|
|
| Tags | `documents.tag` | Adoptar | Categorizacion |
|
|
| Workflow | `documents.workflow` | Referencia | Aprobaciones custom |
|
|
| Planos | No existe | Crear nuevo | Gestion de revisiones |
|
|
|
|
---
|
|
|
|
## Patrones Arquitectonicos de Odoo Adoptados
|
|
|
|
### 1. State Machine Pattern
|
|
|
|
Todos los documentos principales usan estados:
|
|
```python
|
|
# Odoo pattern
|
|
state = fields.Selection([
|
|
('draft', 'Draft'),
|
|
('confirm', 'Confirmed'),
|
|
('done', 'Done'),
|
|
('cancel', 'Cancelled')
|
|
])
|
|
```
|
|
|
|
```typescript
|
|
// Our adaptation
|
|
enum DocumentStatus {
|
|
DRAFT = 'draft',
|
|
CONFIRMED = 'confirmed',
|
|
DONE = 'done',
|
|
CANCELLED = 'cancelled'
|
|
}
|
|
```
|
|
|
|
### 2. Analytic Distribution
|
|
|
|
Costos distribuidos entre proyectos/centros:
|
|
```python
|
|
# Odoo
|
|
analytic_distribution = fields.Json()
|
|
# {"project_1_id": 60, "project_2_id": 40}
|
|
```
|
|
|
|
```typescript
|
|
// Our adaptation
|
|
@Column('jsonb')
|
|
analyticDistribution: Record<string, number>;
|
|
```
|
|
|
|
### 3. Mail Thread (Audit Trail)
|
|
|
|
Tracking de cambios en entidades:
|
|
```python
|
|
# Odoo
|
|
_inherit = ['mail.thread']
|
|
name = fields.Char(tracking=True)
|
|
```
|
|
|
|
```typescript
|
|
// Our adaptation
|
|
@EventSubscriber()
|
|
class AuditTrailSubscriber {
|
|
@AfterUpdate()
|
|
logChanges(event: UpdateEvent) { }
|
|
}
|
|
```
|
|
|
|
### 4. Computed Fields with Store
|
|
|
|
Campos calculados que se almacenan:
|
|
```python
|
|
# Odoo
|
|
@api.depends('line_ids.amount')
|
|
def _compute_total(self):
|
|
self.total = sum(self.line_ids.mapped('amount'))
|
|
|
|
total = fields.Float(compute='_compute_total', store=True)
|
|
```
|
|
|
|
```typescript
|
|
// Our adaptation
|
|
@BeforeInsert()
|
|
@BeforeUpdate()
|
|
computeTotal() {
|
|
this.total = this.lines.reduce((sum, l) => sum + l.amount, 0);
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Modulos Odoo No Utilizados
|
|
|
|
Los siguientes modulos de Odoo no aplican directamente:
|
|
|
|
| Modulo | Razon |
|
|
|--------|-------|
|
|
| `website`, `website_sale` | Frontend custom en React |
|
|
| `crm` | No requerido para construccion |
|
|
| `mrp` | Manufactura no aplica |
|
|
| `fleet` | Activos propios implementados |
|
|
| `event` | No requerido |
|
|
| `pos` | No requerido |
|
|
| `lunch` | No requerido |
|
|
| `l10n_*` | Localizacion propia para Mexico |
|
|
|
|
---
|
|
|
|
## Referencias
|
|
|
|
- [GUIA-USO-REFERENCIAS-ODOO.md](../../GUIA-USO-REFERENCIAS-ODOO.md)
|
|
- [Odoo Developer Documentation](https://www.odoo.com/documentation)
|
|
- [Backend Specifications](../../05-backend-specs/)
|
|
|
|
---
|
|
|
|
*Ultima actualizacion: 2025-12-05*
|