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"