# 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; ``` ### 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*