# 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.
