Bank transfer: Fix mismatch if the reference contains the code twice

This commit is contained in:
Raphael Michel
2021-01-14 17:49:31 +01:00
parent 1d541df381
commit a7b331a9b0
2 changed files with 14 additions and 2 deletions

View File

@@ -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:

View File

@@ -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"