From 18fb4ef92bf54a79959203fe1310a3dbb7a7b3bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 2 Apr 2016 15:59:02 +0200 Subject: [PATCH] Fix copy methods to not copy template --- account.py | 2 ++ tax.py | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/account.py b/account.py index c1589a38a7..a56a20f98a 100644 --- a/account.py +++ b/account.py @@ -824,6 +824,8 @@ class Account(ModelSQL, ModelView): def copy(cls, accounts, default=None): if default is None: default = {} + else: + default = default.copy() default.setdefault('template') default.setdefault('deferrals', []) new_accounts = super(Account, cls).copy(accounts, default=default) diff --git a/tax.py b/tax.py index d272ab2224..cb43089210 100644 --- a/tax.py +++ b/tax.py @@ -231,6 +231,15 @@ class TaxCode(ModelSQL, ModelView): (cls._rec_name,) + tuple(clause[1:]), ] + @classmethod + def copy(cls, codes, default=None): + if default is None: + default = {} + else: + default = default.copy() + default.setdefault('template') + return super(TaxCode, cls).copy(codes, default=default) + @classmethod def delete(cls, codes): codes = cls.search([ @@ -769,6 +778,15 @@ class Tax(ModelSQL, ModelView): return self.company.currency.digits return 2 + @classmethod + def copy(cls, taxes, default=None): + if default is None: + default = {} + else: + default = default.copy() + default.setdefault('template') + return super(Tax, cls).copy(taxes, default=default) + def _process_tax(self, price_unit): if self.type == 'percentage': amount = price_unit * self.rate @@ -1218,6 +1236,15 @@ class TaxRule(ModelSQL, ModelView): def default_company(): return Transaction().context.get('company') + @classmethod + def copy(cls, rules, default=None): + if default is None: + default = {} + else: + default = default.copy() + default.setdefault('template') + return super(TaxRule, cls).copy(rules, default=default) + def apply(self, tax, pattern): ''' Apply rule on tax @@ -1451,6 +1478,15 @@ class TaxRuleLine(ModelSQL, ModelView, MatchMixin): table, _ = tables[None] return [Case((table.sequence == Null, 0), else_=1), table.sequence] + @classmethod + def copy(cls, lines, default=None): + if default is None: + default = {} + else: + default = default.copy() + default.setdefault('template') + return super(TaxRuleLine, cls).copy(lines, default=default) + def match(self, pattern): if 'group' in pattern and not self.group: if pattern['group']: