Do not allow offset refund to different currency

This commit is contained in:
Raphael Michel
2023-11-13 13:09:34 +01:00
parent db9049130c
commit c2ababb9d6
2 changed files with 18 additions and 22 deletions

View File

@@ -2175,22 +2175,28 @@ def test_refund_paid_order_offsetting_to_unknown(client, env):
@pytest.mark.django_db
def test_refund_paid_order_offsetting_to_expired(client, env):
def test_refund_paid_order_offsetting_to_wrong_currency(client, env):
with scopes_disabled():
p = env[2].payments.last()
p.confirm()
client.login(email='dummy@dummy.dummy', password='dummy')
event2 = Event.objects.create(
organizer=env[0].organizer, name='Dummy', slug='dummy2',
date_from=now(), plugins='pretix.plugins.banktransfer,pretix.plugins.stripe,tests.testdummy',
currency='USD',
)
ticket2 = Item.objects.create(event=event2, name='Early-bird ticket',
category=None, default_price=23,
admission=True, personalized=True)
o = Order.objects.create(
code='BAZ', event=env[0], email='dummy@dummy.test',
status=Order.STATUS_EXPIRED,
code='BAZ', event=event2, email='dummy@dummy.test',
status=Order.STATUS_PENDING,
datetime=now(), expires=now() + timedelta(days=10),
total=5, locale='en'
)
o.positions.create(price=5, item=env[3])
q = Quota.objects.create(event=env[0], size=0)
q.items.add(env[3])
o.positions.create(price=5, item=ticket2)
client.post('/control/event/dummy/dummy/orders/FOO/refund', {
r = client.post('/control/event/dummy/dummy/orders/FOO/refund', {
'start-partial_amount': '5.00',
'start-mode': 'partial',
'start-action': 'mark_pending',
@@ -2199,21 +2205,8 @@ def test_refund_paid_order_offsetting_to_expired(client, env):
'manual_state': 'pending',
'perform': 'on'
}, follow=True)
p.refresh_from_db()
assert p.state == OrderPayment.PAYMENT_STATE_CONFIRMED
env[2].refresh_from_db()
with scopes_disabled():
r = env[2].refunds.last()
assert r.provider == "offsetting"
assert r.state == OrderRefund.REFUND_STATE_DONE
assert r.amount == Decimal('5.00')
assert env[2].status == Order.STATUS_PENDING
o.refresh_from_db()
assert o.status == Order.STATUS_EXPIRED
p2 = o.payments.first()
assert p2.provider == "offsetting"
assert p2.amount == Decimal('5.00')
assert p2.state == OrderPayment.PAYMENT_STATE_CONFIRMED
assert b'alert-danger' in r.content
assert b'different currency' in r.content
@pytest.mark.django_db