- Configure workspace Git repository with comprehensive .gitignore - Add Odoo as submodule for ERP reference code - Include documentation: SETUP.md, GIT-STRUCTURE.md - Add gitignore templates for projects (backend, frontend, database) - Structure supports independent repos per project/subproject level Workspace includes: - core/ - Reusable patterns, modules, orchestration system - projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.) - knowledge-base/ - Reference code and patterns (includes Odoo submodule) - devtools/ - Development tools and templates - customers/ - Client implementations template 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
20 KiB
📊 ANÁLISIS DE MÓDULOS ODOO - REFERENCIA PARA PROYECTO INMOBILIARIA
Proyecto: Sistema de Administración de Obra e INFONAVIT Repositorio Odoo: Community Edition v18.0 Última actualización: 2025-11-22 Commit: 1e3e1e13d3e161f8896c37c606b0472a49a19965 Tamaño: 1.2 GB Total de módulos: 609 Licencia: LGPL v3
🎯 OBJETIVO
Documentar los módulos más relevantes de Odoo Community Edition que pueden servir como referencia para el desarrollo del Sistema de Administración de Obra e INFONAVIT.
📁 ESTRUCTURA GENERAL DE ODOO
odoo/
├── odoo/ # Core del framework
│ ├── api.py # Decoradores y sistema de API
│ ├── fields.py # Tipos de campos del ORM (236 KB)
│ ├── models.py # Sistema ORM de Odoo (341 KB)
│ ├── http.py # Controllers y rutas HTTP
│ ├── sql_db.py # Capa de base de datos
│ ├── tools/ # Herramientas y utilidades
│ ├── tests/ # Sistema de testing
│ └── modules/ # Gestión de módulos
│
├── addons/ # 609 módulos oficiales
│ ├── project/ # ⭐ Gestión de proyectos
│ ├── sale/ # ⭐ Ventas
│ ├── purchase/ # ⭐ Compras
│ ├── stock/ # ⭐ Inventario
│ ├── account/ # ⭐ Contabilidad
│ ├── hr/ # ⭐ Recursos Humanos
│ ├── crm/ # ⭐ CRM
│ └── ... # 602 módulos más
│
└── doc/ # Documentación oficial
⭐ MÓDULOS CLAVE PARA REFERENCIA
1. PROJECT - Gestión de Proyectos
Ubicación: reference/odoo/addons/project/
Descripción: Módulo principal para organizar y planificar proyectos de construcción.
Características relevantes:
- ✅ Gestión de tareas y subtareas
- ✅ Etapas personalizables (stages)
- ✅ Milestones (hitos)
- ✅ Integración con analytic accounts
- ✅ Portal de clientes
- ✅ Sistema de calificaciones (ratings)
- ✅ Actualizaciones de proyecto
- ✅ Burndown charts
Estructura de archivos clave:
project/
├── models/
│ ├── project_project.py # Modelo principal de proyecto
│ ├── project_task.py # Modelo de tareas
│ ├── project_milestone.py # Hitos del proyecto
│ ├── project_update.py # Actualizaciones de proyecto
│ └── project_task_type.py # Tipos/etapas de tareas
├── views/
│ ├── project_project_views.xml # Vistas de proyectos
│ └── project_task_views.xml # Vistas de tareas
└── security/
└── project_security.xml # Reglas de seguridad
Patrones arquitectónicos observados:
- Uso extensivo de
@api.dependspara campos computados - Integración con
mail.threadpara tracking de cambios - Portal views para acceso externo
- Sistema de stages con drag & drop en kanban
- Uso de
analytic.accountpara costos
Aplicabilidad al proyecto: 🟢 ALTA Ideal para gestionar proyectos de construcción, tareas de obra, y milestones de avance.
2. PROJECT_PURCHASE - Compras en Proyectos
Ubicación: reference/odoo/addons/project_purchase/
Descripción: Integración entre proyectos y compras para monitorear gastos.
Características relevantes:
- ✅ Vincular órdenes de compra a proyectos
- ✅ Tracking de costos por proyecto
- ✅ Integración con contabilidad analítica
Estructura:
project_purchase/
├── views/
│ ├── project_project.xml # Vista extendida de proyecto
│ └── purchase_order.xml # Vista extendida de compra
└── data/
└── project_purchase_demo.xml # Datos de demostración
Aplicabilidad al proyecto: 🟢 ALTA Esencial para vincular compras de materiales a proyectos de obra.
3. SALE - Gestión de Ventas
Ubicación: reference/odoo/addons/sale/
Descripción: Módulo completo para gestión de cotizaciones, órdenes de venta y contratos.
Características relevantes:
- ✅ Cotizaciones y órdenes de venta
- ✅ Líneas de productos/servicios
- ✅ Términos y condiciones
- ✅ Portal de clientes para aprobar cotizaciones
- ✅ Facturación desde ventas
- ✅ Teams de ventas
Estructura de archivos clave:
sale/
├── models/
│ ├── sale_order.py # Órdenes de venta
│ ├── sale_order_line.py # Líneas de orden
│ └── res_partner.py # Extensión de partner
├── views/
│ └── sale_order_views.xml # Vistas de ventas
└── report/
└── sale_report.py # Reportes de ventas
Patrones destacables:
- Estado de orden con flujo bien definido (draft → sent → sale → done)
- Uso de
product.templateyproduct.product - Integración con
account.movepara facturación - Portal views con firma electrónica
Aplicabilidad al proyecto: 🟢 ALTA Para contratos de venta de vivienda, cotizaciones de proyectos.
4. PURCHASE - Gestión de Compras
Ubicación: reference/odoo/addons/purchase/
Descripción: Sistema completo de gestión de compras, proveedores y requisiciones.
Características relevantes:
- ✅ Órdenes de compra
- ✅ Solicitudes de cotización (RFQ)
- ✅ Gestión de proveedores
- ✅ Confirmación de recepción
- ✅ Control de facturas de proveedor
Estructura clave:
purchase/
├── models/
│ ├── purchase_order.py # Órdenes de compra
│ ├── purchase_order_line.py # Líneas de compra
│ └── res_partner.py # Proveedores
├── views/
│ └── purchase_order_views.xml # Vistas de compras
└── wizard/
└── purchase_make_invoice.py # Asistente para facturas
Aplicabilidad al proyecto: 🟢 ALTA Para compras de materiales, contratación de subcontratistas.
5. STOCK - Gestión de Inventario
Ubicación: reference/odoo/addons/stock/
Descripción: Sistema completo de gestión de almacenes, inventario y logística.
Características relevantes:
- ✅ Gestión de almacenes (warehouses)
- ✅ Ubicaciones de almacenamiento
- ✅ Movimientos de inventario (stock moves)
- ✅ Pickings (albaranes/guías)
- ✅ Trazabilidad de productos (lotes y series)
- ✅ Estrategias de reabastecimiento
- ✅ Inventario en tiempo real
Estructura:
stock/
├── models/
│ ├── stock_warehouse.py # Almacenes
│ ├── stock_location.py # Ubicaciones
│ ├── stock_move.py # Movimientos de stock
│ ├── stock_picking.py # Albaranes/guías
│ ├── stock_quant.py # Cantidades en stock
│ └── stock_lot.py # Lotes y series
├── views/
│ └── stock_views.xml # Vistas de inventario
└── report/
└── stock_report.py # Reportes de inventario
Patrones arquitectónicos:
- Uso de
stock.locationpara estructura jerárquica de almacenes stock.movecomo registro de todos los movimientosstock.quantpara cantidades reales en ubicaciones- Estrategias FIFO/LIFO implementadas
Aplicabilidad al proyecto: 🟢 ALTA Para inventario de materiales, control de almacenes en obra.
6. ACCOUNT - Contabilidad
Ubicación: reference/odoo/addons/account/
Descripción: Sistema contable completo con plan de cuentas, facturas, pagos y reportes financieros.
Características relevantes:
- ✅ Plan de cuentas (chart of accounts)
- ✅ Asientos contables (journal entries)
- ✅ Facturas de cliente y proveedor
- ✅ Pagos y conciliación bancaria
- ✅ Reportes financieros (balance, P&L)
- ✅ Multi-moneda
- ✅ Cuentas analíticas
Estructura:
account/
├── models/
│ ├── account_move.py # Asientos contables
│ ├── account_move_line.py # Líneas de asientos
│ ├── account_account.py # Plan de cuentas
│ ├── account_payment.py # Pagos
│ └── account_journal.py # Diarios contables
├── views/
│ └── account_views.xml # Vistas contables
└── report/
└── account_financial_report.py # Reportes financieros
Aplicabilidad al proyecto: 🟢 ALTA Para contabilidad del proyecto, facturas, control financiero.
7. HR - Recursos Humanos
Ubicación: reference/odoo/addons/hr/
Descripción: Gestión de empleados, departamentos, contratos y nómina.
Características relevantes:
- ✅ Gestión de empleados
- ✅ Departamentos y puestos
- ✅ Contratos laborales
- ✅ Asistencia y permisos
- ✅ Organigrama
- ✅ Habilidades y competencias
Módulos relacionados relevantes:
hr_attendance- Control de asistenciahr_contract- Contratos laboraleshr_timesheet- Control de horas trabajadashr_expense- Gastos de empleados
Aplicabilidad al proyecto: 🟡 MEDIA Para gestión de personal de obra, asistencias, nómina.
8. HR_CONTRACT - Contratos Laborales
Ubicación: reference/odoo/addons/hr_contract/
Descripción: Gestión de contratos de trabajo, salarios y renovaciones.
Características relevantes:
- ✅ Definición de contratos
- ✅ Tipos de contrato
- ✅ Salarios y beneficios
- ✅ Fechas de inicio/fin
- ✅ Renovaciones automáticas
Aplicabilidad al proyecto: 🟡 MEDIA Para contratos de empleados y subcontratistas.
9. CRM - Customer Relationship Management
Ubicación: reference/odoo/addons/crm/
Descripción: Gestión de oportunidades de venta, pipeline y leads.
Características relevantes:
- ✅ Gestión de leads/oportunidades
- ✅ Pipeline de ventas
- ✅ Actividades y seguimiento
- ✅ Conversión a cotización
- ✅ Reportes de rendimiento
Aplicabilidad al proyecto: 🟡 MEDIA Para seguimiento de prospectos de venta de viviendas.
10. MRP_SUBCONTRACTING - Subcontratación
Ubicación: reference/odoo/addons/mrp_subcontracting/
Descripción: Gestión de subcontratación de producción/manufactura.
Características relevantes:
- ✅ Gestión de subcontratistas
- ✅ Órdenes a subcontratistas
- ✅ Control de componentes enviados
- ✅ Recepción de productos terminados
- ✅ Portal para subcontratistas
Estructura:
mrp_subcontracting/
├── models/
│ ├── mrp_bom.py # Bill of Materials
│ ├── res_partner.py # Subcontratistas
│ └── stock_picking.py # Envíos a subcontratistas
├── views/
│ └── subcontracting_portal_views.xml # Portal
└── security/
└── mrp_subcontracting_security.xml # Seguridad
Aplicabilidad al proyecto: 🟢 ALTA Para gestión de subcontratistas en obra (electricistas, plomeros, etc.)
🏗️ MÓDULOS ADICIONALES RELEVANTES
Por Categoría
Gestión de Proyectos y Obra
project_stock- Integración proyecto-inventarioproject_account- Integración proyecto-contabilidadproject_timesheet_holidays- Integración con vacacionesproject_milestone- Hitos de proyecto
Compras e Inventario
purchase_stock- Integración compra-inventariopurchase_requisition- Requisiciones de comprastock_landed_costs- Costos de importaciónstock_picking_batch- Procesamiento por lotes
Contabilidad y Finanzas
account_payment- Gestión de pagosanalytic- Contabilidad analítica (ESENCIAL para costos por proyecto)account_tax_python- Impuestos con Pythonaccount_edi- Facturación electrónica
Recursos Humanos
hr_attendance- Control de asistenciahr_timesheet- Control de horashr_expense- Gastos de empleadoshr_maintenance- Mantenimiento de equipos
Ventas y CRM
sale_project- Integración venta-proyectosale_crm- Integración venta-CRMsale_stock- Integración venta-inventario
🔧 CORE DE ODOO - Archivos Clave
odoo/api.py (63 KB)
Decoradores y sistema de API:
@api.model- Método de clase@api.depends(...)- Campos computados con dependencias@api.onchange(...)- Eventos onChange en UI@api.constrains(...)- Validaciones
Ejemplo de uso:
@api.depends('order_line.price_total')
def _compute_amount(self):
for order in self:
order.amount_total = sum(order.order_line.mapped('price_total'))
odoo/fields.py (236 KB)
Tipos de campos del ORM:
Char,Text,Integer,Float,BooleanDate,DatetimeMany2one,One2many,Many2manySelection,Binary,HtmlMonetary(para monedas)
Ejemplo de uso:
name = fields.Char(string='Name', required=True)
amount = fields.Monetary(string='Amount', currency_field='currency_id')
partner_id = fields.Many2one('res.partner', string='Partner')
odoo/models.py (341 KB)
Sistema ORM de Odoo:
Model- Clase base para modelos persistentesTransientModel- Modelos temporales (wizards)AbstractModel- Modelos abstractos (herencia)- CRUD operations:
create(),write(),unlink() - Búsquedas:
search(),search_count(),browse()
Patrones observados:
- Herencia múltiple con
_inherit - Delegación con
_inherits - Computed fields con
@api.depends - Constraints con
@api.constrains
odoo/http.py (101 KB)
Controllers y rutas HTTP:
- Decorador
@http.route() - Tipos de autenticación:
public,user - Request/Response handling
- JSON-RPC support
Ejemplo:
from odoo import http
class MyController(http.Controller):
@http.route('/my/route', type='http', auth='user')
def my_handler(self):
return "Hello World"
📚 MEJORES PRÁCTICAS IDENTIFICADAS
1. Estructura de Módulos
Todos los módulos siguen la estructura:
module_name/
├── __init__.py
├── __manifest__.py # Metadatos del módulo
├── models/
│ ├── __init__.py
│ └── model_name.py
├── views/
│ └── views.xml
├── security/
│ ├── ir.model.access.csv # Permisos de modelo
│ └── security.xml # Reglas de seguridad
├── data/
│ └── data.xml # Datos iniciales
├── demo/
│ └── demo.xml # Datos de demostración
└── static/
└── src/ # Assets JS/CSS
2. Naming Conventions
- Modelos:
module.model_name(ej:project.task) - Campos Many2one:
partner_id,project_id - Campos One2many:
line_ids,task_ids - Campos compute:
_compute_<field_name> - Views:
view_<model>_<type>(ej:view_project_task_form)
3. Security
- Siempre definir
ir.model.access.csvcon permisos CRUD - Usar record rules para filtrado por usuario/empresa
- Grupos de seguridad bien definidos
4. Vistas
- Vista form para edición individual
- Vista tree/list para listados
- Vista kanban para tableros
- Vista calendar para eventos
- Vista pivot/graph para análisis
5. Integración con mail.thread
Casi todos los modelos importantes heredan de mail.thread para:
- Tracking de cambios
- Mensajes y notificaciones
- Actividades programadas
- Followers
Ejemplo:
class ProjectTask(models.Model):
_name = 'project.task'
_inherit = ['mail.thread', 'mail.activity.mixin']
name = fields.Char(tracking=True) # Cambios registrados
state = fields.Selection(tracking=True)
🎨 PATRONES ARQUITECTÓNICOS DESTACABLES
1. Estado con Workflow
Uso de Selection fields con estados bien definidos:
state = fields.Selection([
('draft', 'Draft'),
('confirmed', 'Confirmed'),
('done', 'Done'),
('cancel', 'Cancelled')
], default='draft', tracking=True)
2. Contabilidad Analítica
Integración con account.analytic.account para tracking de costos:
- Cada proyecto tiene una cuenta analítica
- Todas las transacciones se registran ahí
- Permite reportes de costos por proyecto
3. Portal Views
Sistema de portal para clientes externos:
- Vista limitada de sus proyectos/órdenes
- Acciones permitidas (aprobar, comentar)
- Seguridad con record rules
4. Multi-Company
Soporte nativo para múltiples empresas:
- Campo
company_iden modelos relevantes - Record rules filtran por empresa
- Usuarios pueden cambiar de empresa
5. Wizard Pattern
Uso de TransientModel para wizards/asistentes:
class ProjectShareWizard(models.TransientModel):
_name = 'project.share.wizard'
_description = 'Share Project Wizard'
📖 GUÍA DE USO PARA DESARROLLO
Cuando implementar funcionalidad X, consultar:
| Funcionalidad | Módulo de Referencia | Archivos Clave |
|---|---|---|
| Gestión de proyectos | project |
models/project_project.py, models/project_task.py |
| Órdenes de compra | purchase |
models/purchase_order.py |
| Inventario de materiales | stock |
models/stock_quant.py, models/stock_move.py |
| Facturación | account |
models/account_move.py |
| Contratos | hr_contract, sale |
models/hr_contract.py, models/sale_order.py |
| Subcontratistas | mrp_subcontracting |
models/res_partner.py, views/subcontracting_portal_views.xml |
| Reportes de costos | analytic, project_account |
models/account_analytic_account.py |
| Portal de clientes | project (portal) |
views/project_portal_templates.xml |
| Asistencia de empleados | hr_attendance |
models/hr_attendance.py |
| Control de horas | hr_timesheet |
models/account_analytic_line.py |
Flujo de consulta recomendado:
- Identificar funcionalidad a implementar
- Localizar módulo relevante en
reference/odoo/addons/ - Leer
__manifest__.pypara entender dependencias - Revisar
models/para entender lógica de negocio - Revisar
views/para entender UI/UX - Revisar
security/para entender permisos - Adaptar patrón al proyecto actual
🚀 PRÓXIMOS PASOS
Análisis Profundo Pendiente
- Analizar módulo
analyticpara contabilidad analítica - Estudiar integración
sale_projectpara ventas vinculadas a proyectos - Revisar sistema de permisos en módulos grandes
- Analizar reportes financieros en
account - Estudiar portal views para implementar portal de clientes INFONAVIT
- Revisar sistema de workflows y estados
- Analizar patrón de wizards para asistentes
Documentación Específica a Crear
- ADR sobre adopción de patrón de estados de Odoo
- Guía de contabilidad analítica basada en Odoo
- Estándares de nomenclatura alineados con Odoo
- Estructura de módulos basada en Odoo
⚠️ CONSIDERACIONES
Diferencias con nuestro stack
- Odoo usa Python + PostgreSQL vs nuestro stack (definir)
- Odoo usa ORM propio vs ORM que usemos (TypeORM, Prisma, etc.)
- Odoo usa XML para vistas vs nuestro frontend (React, Vue, etc.)
Qué adoptar
✅ Patrones de arquitectura (estados, workflows) ✅ Estructura de módulos ✅ Naming conventions ✅ Sistema de permisos por rol ✅ Integración de contabilidad analítica
Qué adaptar
🔄 ORM patterns (traducir a nuestro ORM) 🔄 View patterns (traducir a React/Vue components) 🔄 API patterns (traducir a REST/GraphQL)
Qué evitar
❌ No copiar código directamente ❌ No adoptar XML para vistas si usamos frontend moderno ❌ No implementar funcionalidades innecesarias
Fecha de análisis: 2025-11-23 Analizado por: Architecture-Analyst Versión: 1.0.0 Estado: ✅ Análisis inicial completado
📋 REFERENCIAS
- Repositorio oficial: https://github.com/odoo/odoo
- Documentación: https://www.odoo.com/documentation/master/developer.html
- ORM Guide: https://www.odoo.com/documentation/master/developer/reference/backend/orm.html
- Community Association: https://github.com/OCA