changeset 7a20a31b7662 in modules/sale_promotion_coupon:default
details:
https://hg.tryton.org/modules/sale_promotion_coupon?cmd=changeset&node=7a20a31b7662
description:
Support many parties to count coupon
issue11385
review380731002
diffstat:
CHANGELOG | 2 ++
sale.py | 22 +++++++++++++++++++---
2 files changed, 21 insertions(+), 3 deletions(-)
diffs (59 lines):
diff -r fdfd810c38ad -r 7a20a31b7662 CHANGELOG
--- a/CHANGELOG Mon May 02 17:44:28 2022 +0200
+++ b/CHANGELOG Sun Jul 17 19:09:16 2022 +0200
@@ -1,3 +1,5 @@
+* Support many parties to count coupon
+
Version 6.4.0 - 2022-05-02
* Bug fixes (see mercurial logs for details)
* Add support for Python 3.10
diff -r fdfd810c38ad -r 7a20a31b7662 sale.py
--- a/sale.py Mon May 02 17:44:28 2022 +0200
+++ b/sale.py Sun Jul 17 19:09:16 2022 +0200
@@ -92,6 +92,8 @@
sale_number = Sale_Number.__table__()
context = Transaction().context
party = context.get('party')
+ if isinstance(party, int):
+ party = [party]
query = (table
.join(sale_number, 'LEFT',
@@ -101,7 +103,7 @@
if party:
query = query.join(sale, 'LEFT',
condition=(sale_number.sale == sale.id)
- & (sale.party == party))
+ & (sale.party.in_(party)))
active = Case(
((coupon.number_of_use > 0) & (coupon.per_party),
Count(sale.id) < coupon.number_of_use),
@@ -182,12 +184,26 @@
('coupon.promotion.company', '=', Eval('company', -1)),
],
context={
- 'party': Eval('party', -1),
+ 'party': Eval('coupon_parties', []),
},
states={
'readonly': Eval('state') != 'draft',
},
- depends={'party'})
+ depends={'coupon_parties'})
+ coupon_parties = fields.Function(fields.Many2Many(
+ 'party.party', None, None, "Coupon Parties"),
+ 'on_change_with_coupon_parties')
+
+ @fields.depends(methods=['_coupon_parties'])
+ def on_change_with_coupon_parties(self, name=None):
+ return [p.id for p in self._coupon_parties()]
+
+ @fields.depends('party')
+ def _coupon_parties(self):
+ parties = set()
+ if self.party:
+ parties.add(self.party)
+ return parties
@classmethod
@ModelView.button