Introduction
L'article aborde la question de la filtration des comptes analytiques dans le widget de distribution analytique d'Odoo 18. Le but est de limiter les comptes analytiques affichés en fonction des comptes définis dans le budget lié à une commande d'achat.
Contexte Technique
Le widget de distribution analytique d'Odoo 18 semble utiliser une approche différente pour la recherche de comptes analytiques, contournant les hooks Python standard. Les tentatives pour injecter un contexte via du code XML ou pour surcharger les méthodes _search et name_search sur le modèle account.analytic.account n'ont pas abouti.
Le code suivant montre les tentatives effectuées :
Contexte injection en XML :
<xpath expr="//sheet" position="inside">
<field name="allowed_analytic_account_ids" invisible="1"/>
</xpath>
<xpath expr="//field[@name='order_line']/list//field[@name='analytic_distribution']" position="attributes">
<attribute name="context">{'allowed_analytic_account_ids': parent.allowed_analytic_account_ids}
</attribute>
</xpath>
Surcharge des méthodes _search et name_search :
@api.model
def search(self, domain, offset=0, limit=None, order=None):
allowed_ids = self.env.context.get('allowed_analytic_account_ids')
if allowed_ids:
domain = [('id', 'in', allowed_ids)] + list(domain)
return super().search(domain, offset=offset, limit=limit, order=order)
@api.model
def name_search(self, name='', args=None, operator='ilike', limit=100):
args = args or []
allowed_ids = self.env.context.get('allowed_analytic_account_ids')
if allowed_ids:
args = [('id', 'in', allowed_ids)] + args
return super().name_search(name=name, args=args, operator=operator, limit=limit)
Analyse et Implications
Il semble que le widget de distribution analytique utilise un appel RPC spécifique ou une route pour récupérer les comptes, ce qui explique pourquoi les méthodes standard ne sont pas appelées. La question est de savoir quel méthode il faut surcharger dans Odoo 18 pour filtrer les comptes suggérés par ce widget.
Perspective
La résolution de ce problème nécessite probablement une compréhension plus approfondie du fonctionnement interne du widget de distribution analytique dans Odoo 18 et de la manière dont il récupère les comptes analytiques. Il faudrait investiguer les options disponibles pour passer un domaine aux sous-champs du widget de distribution ou trouver la méthode appropriée à surcharger pour appliquer le filtre désiré.