# Skill: Python (Odoo ORM) ## Estilo y convenciones - Sigue las OCA guidelines estrictamente. - Usa `black` para formateo automático (ver `pyproject.toml`). - Ordena imports con `isort` (perfil black). - Linting obligatorio con `flake8` y `pylint-odoo`. - Usa docstrings en clases y métodos públicos. - Comentarios inline solo para lógica compleja. ## Patrones clave - Modelos: hereda de `models.Model` o `models.TransientModel`. - Campos de negocio siempre en `product.product` (no en `product.template`). - Usa `@api.depends` para campos computados. - Notificaciones: usa `ir.actions.client` con `display_notification`. - Logging: `_logger.info()` para trazabilidad de precios y descuentos. - Bulk updates: prefiere `search().write()` sobre loops. ## Testing - Tests en `tests/` de cada addon. - Hereda de `odoo.tests.common.TransactionCase`. - Ejecuta tests con: ```bash docker-compose run odoo odoo -d odoo --test-enable --stop-after-init -u addon_name ``` ## Errores comunes - No uses `_()` en definiciones de campos (solo en métodos ejecutables). - Usa `related` fields en templates para lógica de variantes.