Настройка
- Модель A: global.budget содержит список разрешенных аккаунтов account.analytic.account.
- Модель B: Purchase.order имеет поле общий_бюджет_ид, указывающий на модель A.
- Цель: при нажатии на виджет аналитики_распределения в строке заказа на покупку в результатах поиска/выбора «Аналитическая учетная запись» должны отображаться только учетные записи, определенные в связанном бюджете.
В Odoo 18 виджет аналитики_распределения похоже, обходит стандартные перехватчики Python для поиска. Я безуспешно пробовал следующее:
Что мы пробовали
- Внедрение контекста в XML:
Код: Выделить всё
{
'allowed_analytic_account_ids': parent.allowed_analytic_account_ids
}
- Переопределение _search и name_search в account.analytic.account:
Я добавил операторы печати в _search и name_search, чтобы поймать filter_budget_id из контекста. Однако эти методы никогда не срабатывают при поиске учетной записи во всплывающем окне виджета распространения.
Код: Выделить всё
@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)
print("Search domain:", 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
print(args)
return super().name_search(
name=name, args=args, operator=operator, limit=limit
)
Виджет аналитического_распределения (который использует определенный компонент OWL в версии 18), похоже, использует другой вызов RPC или определенный маршрут для получения учетных записей.
- Какой метод мне следует переопределить в Odoo 18, чтобы фильтровать учетные записи, предлагаемые этим конкретным виджетом?
- Есть ли конкретный ключ параметров в XML для передачи домена в подполя виджета распространения?
Любая помощь или указатель на правильный метод/перехват для переопределения будем очень признательны!
Заранее спасибо.