Bank transfer import: Auto-detect valid split payments

This commit is contained in:
Raphael Michel
2020-12-19 16:54:51 +01:00
parent cbadb2c395
commit 070b871254
3 changed files with 152 additions and 56 deletions

View File

@@ -274,6 +274,20 @@ def test_mark_paid_organizer_dash_in_slug(env, orga_job):
assert env[2].status == Order.STATUS_PAID
@pytest.mark.django_db
def test_mark_paid_organizer_varying_order_code_length(env, orga_job):
env[2].code = "123412341234"
env[2].save()
process_banktransfers(orga_job, [{
'payer': 'Karla Kundin',
'reference': 'Bestellung DUMMY-123412341234',
'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_weird_slug(env, orga_job):
env[0].slug = 'du.m-y'
@@ -318,6 +332,56 @@ def test_keep_unmatched(env, orga_job):
assert t.state == BankTransaction.STATE_NOMATCH
@pytest.mark.django_db
def test_split_payment_success(env, orga_job):
o4 = Order.objects.create(
code='99999', event=env[0],
status=Order.STATUS_PENDING,
datetime=now(), expires=now() + timedelta(days=10),
total=12
)
process_banktransfers(orga_job, [{
'payer': 'Karla Kundin',
'reference': 'Bestellungen DUMMY-1Z3AS DUMMY-99999',
'date': '2016-01-26',
'amount': '35.00'
}])
with scopes_disabled():
job = BankImportJob.objects.last()
t = job.transactions.last()
assert t.state == BankTransaction.STATE_VALID
env[2].refresh_from_db()
assert env[2].status == Order.STATUS_PAID
assert env[2].payments.get().amount == Decimal('23.00')
o4.refresh_from_db()
assert o4.status == Order.STATUS_PAID
assert o4.payments.get().amount == Decimal('12.00')
@pytest.mark.django_db
def test_split_payment_mismatch(env, orga_job):
o4 = Order.objects.create(
code='99999', event=env[0],
status=Order.STATUS_PENDING,
datetime=now(), expires=now() + timedelta(days=10),
total=12
)
process_banktransfers(orga_job, [{
'payer': 'Karla Kundin',
'reference': 'Bestellungen DUMMY-1Z3AS DUMMY-99999',
'date': '2016-01-26',
'amount': '36.00'
}])
with scopes_disabled():
job = BankImportJob.objects.last()
t = job.transactions.last()
assert t.state == BankTransaction.STATE_NOMATCH
env[2].refresh_from_db()
assert env[2].status == Order.STATUS_PENDING
o4.refresh_from_db()
assert o4.status == Order.STATUS_PENDING
@pytest.mark.django_db
def test_import_very_long_csv_file(client, env):
client.login(email='dummy@dummy.dummy', password='dummy')