# Referencia Odoo Community Edition 18.0 **Fecha de clonación:** 2025-12-05 **Versión:** 18.0 **Fuente:** https://github.com/odoo/odoo --- ## Propósito Este repositorio sirve como **referencia de lógica de negocio** para el desarrollo del ERP Suite. NO se ejecutará Odoo, solo se usará para: 1. **Validar modelos de datos** - Comparar nuestras tablas con los modelos Odoo 2. **Revisar lógica de negocio** - Workflows, estados, validaciones 3. **Consultar patrones** - RBAC, multi-company, computed fields 4. **Verificar constraints** - Reglas de negocio probadas --- ## Estructura Relevante ``` odoo-18.0/ ├── odoo/addons/base/ # Módulo base (usuarios, companies, partners) │ ├── models/ │ │ ├── res_users.py # Usuarios y autenticación │ │ ├── res_company.py # Empresas/multi-company │ │ ├── res_partner.py # Partners (clientes/proveedores) │ │ ├── res_currency.py # Monedas y tasas de cambio │ │ ├── res_country.py # Países y estados │ │ ├── ir_rule.py # Record Rules (RLS) │ │ └── ir_model.py # Permisos por modelo │ └── security/ │ ├── ir.model.access.csv # Permisos CRUD │ └── base_groups.xml # Grupos/roles base │ ├── addons/ │ ├── account/ # Contabilidad │ ├── stock/ # Inventario │ ├── purchase/ # Compras │ ├── sale/ # Ventas │ ├── crm/ # CRM │ ├── hr/ # Recursos Humanos │ ├── project/ # Proyectos │ ├── mail/ # Mensajería/Notificaciones │ ├── portal/ # Portal usuarios externos │ ├── analytic/ # Contabilidad analítica │ └── auth_signup/ # Registro de usuarios ``` --- ## Mapeo Odoo → ERP Suite | Módulo Odoo | Módulo ERP Suite | Archivos Clave | |-------------|------------------|----------------| | base (res.users) | MGN-001 Auth | `res_users.py`, `ir_rule.py` | | base (res.company) | MGN-002 | `res_company.py` | | base (res.partner) | MGN-003 Catalogs | `res_partner.py`, `res_country.py` | | account | MGN-010 Financial | `account_move.py`, `account_account.py` | | stock | MGN-011 Inventory | `stock_move.py`, `stock_quant.py` | | purchase | MGN-012 Purchasing | `purchase_order.py` | | sale | - | `sale_order.py` | | crm | MGN-013 CRM | `crm_lead.py` | | hr | - | `hr_employee.py` | | project | - | `project.py`, `project_task.py` | | mail | MGN-008 Notifications | `mail_message.py`, `mail_thread.py` | | portal | - | `portal_mixin.py` | | analytic | - | `analytic_account.py` | --- ## Cómo Usar Esta Referencia ### 1. Consultar Modelo de Datos ```bash # Ver campos de usuarios cat odoo-18.0/odoo/addons/base/models/res_users.py # Ver campos de partners cat odoo-18.0/odoo/addons/base/models/res_partner.py ``` ### 2. Ver Permisos y Grupos ```bash # Permisos CRUD por modelo cat odoo-18.0/odoo/addons/base/security/ir.model.access.csv # Definición de grupos cat odoo-18.0/odoo/addons/base/security/base_groups.xml ``` ### 3. Revisar Lógica de Negocio ```bash # Workflow de órdenes de compra cat odoo-18.0/addons/purchase/models/purchase_order.py # Movimientos de inventario cat odoo-18.0/addons/stock/models/stock_move.py ``` ### 4. Ver Record Rules (RLS) ```bash # Reglas de seguridad grep -r "ir.rule" odoo-18.0/odoo/addons/base/security/ ``` --- ## Archivos Más Consultados ### Para MGN-001 Auth / MGN-002 Users / MGN-003 RBAC | Archivo | Propósito | |---------|-----------| | `odoo/addons/base/models/res_users.py` | Modelo de usuarios, autenticación | | `odoo/addons/base/models/ir_rule.py` | Record Rules (equivalente a RLS) | | `odoo/addons/base/security/ir.model.access.csv` | Permisos CRUD | | `odoo/addons/base/security/base_groups.xml` | Grupos y roles | | `addons/auth_signup/models/res_users.py` | Registro de usuarios | ### Para MGN-004 Tenants | Archivo | Propósito | |---------|-----------| | `odoo/addons/base/models/res_company.py` | Multi-company (≈ multi-tenant) | | `odoo/addons/base/models/ir_rule.py` | Filtrado por company_id | ### Para Módulos de Negocio | Archivo | Propósito | |---------|-----------| | `addons/account/models/account_move.py` | Asientos contables | | `addons/stock/models/stock_move.py` | Movimientos de inventario | | `addons/purchase/models/purchase_order.py` | Órdenes de compra | | `addons/sale/models/sale_order.py` | Órdenes de venta | --- ## Patrones Importantes a Estudiar ### 1. Estados y Transiciones ```python # En purchase_order.py state = fields.Selection([ ('draft', 'RFQ'), ('sent', 'RFQ Sent'), ('to approve', 'To Approve'), ('purchase', 'Purchase Order'), ('done', 'Locked'), ('cancel', 'Cancelled') ], string='Status', default='draft') ``` ### 2. Computed Fields ```python @api.depends('order_line.price_total') def _amount_all(self): for order in self: order.amount_total = sum(order.order_line.mapped('price_total')) ``` ### 3. Constraints ```python @api.constrains('date_start', 'date_end') def _check_dates(self): if self.date_start > self.date_end: raise ValidationError("End date must be after start date") ``` ### 4. Multi-Company Filter ```python # En ir.rule XML [('company_id', 'in', company_ids)] ``` --- ## Notas - **Tamaño:** ~1.2GB (incluye todos los addons) - **Licencia:** LGPL-3.0 - **NO ejecutar:** Solo referencia, no instalar dependencias Python --- ## Enlaces Útiles - [Odoo Documentation](https://www.odoo.com/documentation/18.0/) - [Odoo GitHub](https://github.com/odoo/odoo) - [Odoo ORM Reference](https://www.odoo.com/documentation/18.0/developer/reference/backend/orm.html)