From 8ff4078a4e15ea08ef2be29b7d0a3703c94e3072 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 27 Sep 2016 19:37:22 +0200 Subject: [PATCH] Add company domain on analytic entries issue5104 review17991002 --- sale.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/sale.py b/sale.py index 08514c9c2c..d57cee55bf 100644 --- a/sale.py +++ b/sale.py @@ -1,6 +1,8 @@ # This file is part of Tryton. The COPYRIGHT file at the top level of # this repository contains the full copyright notices and license terms. +from trytond.model import fields from trytond.pool import Pool, PoolMeta +from trytond.pyson import Eval, If from trytond.modules.analytic_account import AnalyticMixin @@ -10,6 +12,15 @@ __all__ = ['SaleLine', 'AnalyticAccountEntry'] class SaleLine(AnalyticMixin): __name__ = 'sale.line' + @classmethod + def __setup__(cls): + super(SaleLine, cls).__setup__() + cls.analytic_accounts.domain = [ + ('company', '=', If(~Eval('_parent_sale', {}), + Eval('context', {}).get('company', -1), + Eval('_parent_sale', {}).get('company', -1))), + ] + def get_invoice_line(self): pool = Pool() AnalyticAccountEntry = pool.get('analytic.account.entry') @@ -32,3 +43,21 @@ class AnalyticAccountEntry: def _get_origin(cls): origins = super(AnalyticAccountEntry, cls)._get_origin() return origins + ['sale.line'] + + @fields.depends('origin') + def on_change_with_company(self, name=None): + pool = Pool() + SaleLine = pool.get('sale.line') + company = super(AnalyticAccountEntry, self).on_change_with_company( + name) + if isinstance(self.origin, SaleLine) and self.origin.sale: + company = self.origin.sale.company.id + return company + + @classmethod + def search_company(cls, name, clause): + domain = super(AnalyticAccountEntry, cls).search_company(name, clause), + return ['OR', + domain, + ('origin.sale.company',) + tuple(clause[1:]) + ('sale.line',), + ]