changeset a1999dbdd3e3 in modules/sale_product_customer:default details: https://hg.tryton.org/modules/sale_product_customer?cmd=changeset;node=a1999dbdd3e3 description: Allow product customer to be deactivated
issue8062 review333461002 diffstat: CHANGELOG | 2 ++ product.py | 24 ++++++++++++++++-------- view/product_customer_form.xml | 8 ++++++-- 3 files changed, 24 insertions(+), 10 deletions(-) diffs (99 lines): diff -r f52acf277dd0 -r a1999dbdd3e3 CHANGELOG --- a/CHANGELOG Sat Dec 19 17:08:46 2020 +0100 +++ b/CHANGELOG Sun Jan 17 01:25:01 2021 +0100 @@ -1,3 +1,5 @@ +* Allow product customer to be deactivated + Version 5.8.0 - 2020-11-02 * Bug fixes (see mercurial logs for details) * Remove support for Python 3.5 diff -r f52acf277dd0 -r a1999dbdd3e3 product.py --- a/product.py Sat Dec 19 17:08:46 2020 +0100 +++ b/product.py Sun Jan 17 01:25:01 2021 +0100 @@ -1,14 +1,16 @@ # 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, ModelSQL, ModelView, sequence_ordered, - MatchMixin) +from trytond.model import ( + ModelSQL, ModelView, sequence_ordered, MatchMixin, DeactivableMixin, + fields) from trytond.pool import PoolMeta, Pool from trytond.pyson import If, Eval, Bool from trytond.tools import lstrip_wildcard -class ProductCustomer(sequence_ordered(), ModelSQL, ModelView, MatchMixin): +class ProductCustomer( + sequence_ordered(), DeactivableMixin, ModelSQL, ModelView, MatchMixin): 'Product Customer' __name__ = 'sale.product_customer' @@ -18,17 +20,19 @@ domain=[ If(Bool(Eval('product')), ('products', '=', Eval('product')), - ()) + ()), + If(Eval('active'), ('active', '=', True), ()), ], - depends=['product']) + depends=['product', 'active']) product = fields.Many2One( 'product.product', "Variant", select=True, domain=[ If(Bool(Eval('template')), ('template', '=', Eval('template')), ()), + If(Eval('active'), ('active', '=', True), ()), ], - depends=['template']) + depends=['template', 'active']) party = fields.Many2One('party.party', "Customer", required=True, ondelete='CASCADE') name = fields.Char("Name", translate=True) @@ -77,7 +81,10 @@ states={ 'invisible': ~Eval('salable', False), }, - depends=['salable']) + domain=[ + If(~Eval('active'), ('active', '=', False), ()), + ], + depends=['salable', 'active']) def product_customer_used(self, **pattern): for product_customer in self.product_customers: @@ -116,11 +123,12 @@ 'sale.product_customer', 'product', "Customers", domain=[ ('template', '=', Eval('template')), + If(~Eval('active'), ('active', '=', False), ()), ], states={ 'invisible': ~Eval('salable', False), }, - depends=['template', 'salable']) + depends=['template', 'salable', 'active']) def product_customer_used(self, **pattern): for product_customer in self.product_customers: diff -r f52acf277dd0 -r a1999dbdd3e3 view/product_customer_form.xml --- a/view/product_customer_form.xml Sat Dec 19 17:08:46 2020 +0100 +++ b/view/product_customer_form.xml Sun Jan 17 01:25:01 2021 +0100 @@ -8,8 +8,12 @@ <field name="product" colspan="3"/> <label name="party"/> <field name="party"/> - <label name="sequence"/> - <field name="sequence"/> + <group id="sequence-active" col="-1" colspan="2"> + <label name="sequence"/> + <field name="sequence"/> + <label name="active"/> + <field name="active"/> + </group> <label name="name"/> <field name="name"/> <label name="code"/>