mirror of
https://github.com/pretix/pretix.git
synced 2026-05-04 15:04:03 +00:00
Orders: Add bulk action to refund overpaid amount (#3721)
* add bulk action to refund overpaid amount * display number of successful actions, use existing annotate method * add tests, address review comments * lint
This commit is contained in:
@@ -277,3 +277,50 @@ def test_order_bulk_delete_ignore_wrong_state(client, env, order1, order2):
|
||||
|
||||
with scopes_disabled():
|
||||
assert Order.objects.get() == order2
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_order_bulk_overpaid_refund_explicit_id(client, env, order1, order2):
|
||||
client.login(email='dummy@dummy.dummy', password='dummy')
|
||||
with scopes_disabled():
|
||||
payment1 = order1.payments.first()
|
||||
payment1.state = OrderPayment.PAYMENT_STATE_CONFIRMED
|
||||
payment1.info_data = {"payer": "Dummy Dummy", "iban": "DE02120300000000202051"}
|
||||
payment1.save()
|
||||
order1.payments.create(
|
||||
amount=2, provider='banktransfer', state=OrderPayment.PAYMENT_STATE_CONFIRMED
|
||||
)
|
||||
|
||||
_run_bulk_action(client, 'refund_overpaid', {'order': order1.pk}, {'operation': 'confirm'})
|
||||
|
||||
order1.refresh_from_db()
|
||||
order2.refresh_from_db()
|
||||
with scopes_disabled():
|
||||
assert order1.refunds.exists()
|
||||
assert order1.refunds.get().amount == Decimal('2.00')
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_order_bulk_overpaid_refund_ignores_non_refundable(client, env, order1, order2):
|
||||
client.login(email='dummy@dummy.dummy', password='dummy')
|
||||
with scopes_disabled():
|
||||
o1_payment1 = order1.payments.first()
|
||||
o1_payment1.state = OrderPayment.PAYMENT_STATE_CONFIRMED
|
||||
o1_payment1.save()
|
||||
order1.payments.create(
|
||||
amount=2, provider='banktransfer', state=OrderPayment.PAYMENT_STATE_CONFIRMED
|
||||
)
|
||||
o2_payment1 = order1.payments.first()
|
||||
o2_payment1.provider = "manual"
|
||||
o2_payment1.save()
|
||||
order2.payments.create(
|
||||
amount=2, provider='banktransfer', state=OrderPayment.PAYMENT_STATE_CONFIRMED
|
||||
)
|
||||
|
||||
_run_bulk_action(client, 'refund_overpaid', {'__ALL': 'on'}, {'operation': 'confirm'})
|
||||
|
||||
order1.refresh_from_db()
|
||||
order2.refresh_from_db()
|
||||
with scopes_disabled():
|
||||
assert not order1.refunds.exists()
|
||||
assert not order2.refunds.exists()
|
||||
|
||||
Reference in New Issue
Block a user