changeset 4a14c103be46 in modules/account_payment_clearing:5.2
details: 
https://hg.tryton.org/modules/account_payment_clearing?cmd=changeset;node=4a14c103be46
description:
        Prevent calling succeed or fail with duplicate payments

        issue9064
        review266821003
        (grafted from a548f3e2d37bd6937a02da007817ecd0191dca41)
diffstat:

 statement.py |  16 ++++++++--------
 1 files changed, 8 insertions(+), 8 deletions(-)

diffs (40 lines):

diff -r a82e31dbfdf3 -r 4a14c103be46 statement.py
--- a/statement.py      Sun Mar 01 21:03:30 2020 +0100
+++ b/statement.py      Thu Mar 05 23:02:21 2020 +0100
@@ -19,28 +19,28 @@
 
         moves = super(Statement, cls).create_move(statements)
 
-        to_success = []
-        to_fail = []
+        to_success = set()
+        to_fail = set()
         for move, statement, lines in moves:
             for line in lines:
                 if line.payment:
-                    payments = [line.payment]
+                    payments = {line.payment}
                     kind = line.payment.kind
                 elif line.payment_group:
-                    payments = line.payment_group.payments
+                    payments = set(line.payment_group.payments)
                     kind = line.payment_group.kind
                 else:
                     continue
                 if (kind == 'receivable') == (line.amount >= 0):
-                    to_success.extend(payments)
+                    to_success.update(payments)
                 else:
-                    to_fail.extend(payments)
+                    to_fail.update(payments)
         # The failing should be done last because success is usually not a
         # definitive state
         if to_success:
-            Payment.succeed(to_success)
+            Payment.succeed(Payment.browse(to_success))
         if to_fail:
-            Payment.fail(to_fail)
+            Payment.fail(Payment.browse(to_fail))
 
         for move, statement, lines in moves:
             assert len({l.payment for l in lines}) == 1

Reply via email to