erp-construccion/docs/01-analisis-referencias/odoo/ODOO-CONSTRUCCION-MAPPING.md

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_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:

# 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