changeset 2825998aecbb in modules/account_payment:default
details: 
https://hg.tryton.org/modules/account_payment?cmd=changeset;node=2825998aecbb
description:
        Make GroupedLines warning unique per selected lines

        issue8828
        review258401003
diffstat:

 account.py |  18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)

diffs (41 lines):

diff -r 04bc7380f43f -r 2825998aecbb account.py
--- a/account.py        Sat Dec 14 10:47:54 2019 +0100
+++ b/account.py        Tue Jan 07 10:14:23 2020 +0100
@@ -1,5 +1,6 @@
 # This file is part of Tryton.  The COPYRIGHT file at the top level of
 # this repository contains the full copyright notices and license terms.
+import hashlib
 from decimal import Decimal
 
 from sql import Null
@@ -257,19 +258,24 @@
                     ('payment_amount', '!=', 0),
                     ('move_state', '=', 'posted'),
                     ])
-            for line in others:
-                warning_name = '%s:%s' % (reverse[kind], line.party)
+            for party in parties:
+                party_lines = [l for l in others if l.party == party]
+                if not party_lines:
+                    continue
+                lines = [l for l in types[kind]['lines']
+                    if l.party == party]
+                warning_name = '%s:%s:%s' % (
+                    reverse[kind], party,
+                    hashlib.md5(str(lines).encode('utf-8')).hexdigest())
                 if Warning.check(warning_name):
-                    lines = [l for l in types[kind]['lines']
-                        if l.party == line.party]
                     names = ', '.join(l.rec_name for l in lines[:5])
                     if len(lines) > 5:
                         names += '...'
                     raise GroupWarning(warning_name,
                         gettext('account_payment.msg_pay_line_group',
                             names=names,
-                            party=line.party.rec_name,
-                            line=line.rec_name))
+                            party=party.rec_name,
+                            line=party_lines[0].rec_name))
         return {}
 
     def _get_journals(self):

Reply via email to