From a7b331a9b09c94243936cda5a6afc03ef43be1cb Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 14 Jan 2021 17:49:31 +0100 Subject: [PATCH] Bank transfer: Fix mismatch if the reference contains the code twice --- src/pretix/plugins/banktransfer/tasks.py | 4 ++-- src/tests/plugins/banktransfer/test_import.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/pretix/plugins/banktransfer/tasks.py b/src/pretix/plugins/banktransfer/tasks.py index 908d3dbc4c..00344754e4 100644 --- a/src/pretix/plugins/banktransfer/tasks.py +++ b/src/pretix/plugins/banktransfer/tasks.py @@ -84,13 +84,13 @@ def _handle_transaction(trans: BankTransaction, matches: tuple, event: Event = N if event: for slug, code in matches: order = _find_order_for_code(event.orders, code) - if order: + if order and order.code not in {o.code for o in orders}: orders.append(order) else: qs = Order.objects.filter(event__organizer=organizer) for slug, code in matches: order = _find_order_for_code(qs.filter(event__slug__iexact=slug), code) - if order: + if order and order.code not in {o.code for o in orders}: orders.append(order) if not orders: diff --git a/src/tests/plugins/banktransfer/test_import.py b/src/tests/plugins/banktransfer/test_import.py index acc7ba86fa..3422f16fee 100644 --- a/src/tests/plugins/banktransfer/test_import.py +++ b/src/tests/plugins/banktransfer/test_import.py @@ -260,6 +260,18 @@ def test_mark_paid_organizer(env, orga_job): assert env[2].status == Order.STATUS_PAID +@pytest.mark.django_db +def test_mark_paid_double_reference(env, orga_job): + process_banktransfers(orga_job, [{ + 'payer': 'Karla Kundin', + 'reference': 'Bestellung DUMMY-1234S DUMMY-1234S', + 'date': '2016-01-26', + 'amount': '23.00' + }]) + env[2].refresh_from_db() + assert env[2].status == Order.STATUS_PAID + + @pytest.mark.django_db def test_mark_paid_organizer_dash_in_slug(env, orga_job): env[0].slug = "foo-bar"