Guía de Implementación Técnica
Este es un módulo de librería técnica. Para usarlo, herede el Mixin e implemente la lógica en el método _get_view.
from odoo import models, api
class ResPartner(models.Model):
_inherit = ['res.partner', 'l10n.country.filter.mixin']
@api.model
def _get_view(self, view_id=None, view_type='form', **options):
arch, view = super()._get_view(view_id, view_type, **options)
peru = self.env.ref('base.pe', raise_if_not_found=False)
if not peru: return arch, view
arch, view = self._tags_invisible_per_country(
arch, view, view_type,
tags=['l10n_pe_vat_code', ('group', 'l10n_pe_group_vat')],
countries=[peru]
)
return arch, view
CRÍTICO: La herencia de l10n.country.filter.mixin es obligatoria para manejar correctamente el caché de vistas por compañía (company_id) en Odoo 19.
FAQ & Troubleshooting
¿Los campos no se ocultan. Qué sucede?
Verifique que el país de la compañía actual esté configurado en Ajustes > Compañías. Si el país coincide con la lista permitida en el código, el campo permanecerá visible.
¿Funciona con Odoo Studio?
No. Esta es una utilidad a nivel de código Python (Controller/Model). Odoo Studio aplica cambios estáticos al XML, mientras que este módulo invoca lógica dinámica antes de servir la vista.
¿Es compatible con Multi-Website?
Sí. La lógica está ligada al company_id del usuario en sesión, lo que lo hace seguro para operaciones de backend en configuraciones multi-sitio.