11 KiB
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_idcomo 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 calculadodevelopment_id- Vinculo con desarrollo inmobiliarioinfonavit_registration- Registro INFONAVITcontractor_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 proyectobudget_item_id- Partida de presupuestocost_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:
# Odoo pattern
state = fields.Selection([
('draft', 'Draft'),
('confirm', 'Confirmed'),
('done', 'Done'),
('cancel', 'Cancelled')
])
// Our adaptation
enum DocumentStatus {
DRAFT = 'draft',
CONFIRMED = 'confirmed',
DONE = 'done',
CANCELLED = 'cancelled'
}
2. Analytic Distribution
Costos distribuidos entre proyectos/centros:
# Odoo
analytic_distribution = fields.Json()
# {"project_1_id": 60, "project_2_id": 40}
// Our adaptation
@Column('jsonb')
analyticDistribution: Record<string, number>;
3. Mail Thread (Audit Trail)
Tracking de cambios en entidades:
# Odoo
_inherit = ['mail.thread']
name = fields.Char(tracking=True)
// Our adaptation
@EventSubscriber()
class AuditTrailSubscriber {
@AfterUpdate()
logChanges(event: UpdateEvent) { }
}
4. Computed Fields with Store
Campos calculados que se almacenan:
# 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)
// 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
Ultima actualizacion: 2025-12-05