mirror of
https://github.com/pretix/pretix.git
synced 2026-05-05 15:14:04 +00:00
Allow to charge a cancellation fee on unpaid orders (#2845)
This commit is contained in:
@@ -1403,6 +1403,8 @@ class OrderTestCase(BaseQuotaTestCase):
|
||||
self.order.total = 48
|
||||
self.order.save()
|
||||
self.order = Order.objects.get(pk=self.order.pk)
|
||||
self.order.status = Order.STATUS_PAID
|
||||
self.order.save()
|
||||
assert self.order.user_cancel_fee == Decimal('0.00')
|
||||
|
||||
self.event.settings.cancel_allow_user_paid_keep = Decimal('2.50')
|
||||
@@ -1421,6 +1423,27 @@ class OrderTestCase(BaseQuotaTestCase):
|
||||
self.order = Order.objects.get(pk=self.order.pk)
|
||||
assert self.order.user_cancel_fee == Decimal('48.00')
|
||||
|
||||
self.order.status = Order.STATUS_PENDING
|
||||
self.order.save()
|
||||
self.order = Order.objects.get(pk=self.order.pk)
|
||||
assert self.order.user_cancel_fee == Decimal('0.00')
|
||||
|
||||
self.event.settings.cancel_allow_user_unpaid_keep = Decimal('2.50')
|
||||
self.order = Order.objects.get(pk=self.order.pk)
|
||||
assert self.order.user_cancel_fee == Decimal('2.50')
|
||||
|
||||
self.event.settings.cancel_allow_user_unpaid_keep_percentage = Decimal('5.0')
|
||||
self.order = Order.objects.get(pk=self.order.pk)
|
||||
assert self.order.user_cancel_fee == Decimal('4.90')
|
||||
|
||||
self.event.settings.cancel_allow_user_unpaid_keep_fees = True
|
||||
self.order = Order.objects.get(pk=self.order.pk)
|
||||
assert self.order.user_cancel_fee == Decimal('6.80')
|
||||
|
||||
self.event.settings.cancel_allow_user_unpaid_keep = Decimal('100.00')
|
||||
self.order = Order.objects.get(pk=self.order.pk)
|
||||
assert self.order.user_cancel_fee == Decimal('48.00')
|
||||
|
||||
@classscope(attr='o')
|
||||
def test_paid_order_underpaid(self):
|
||||
self.order.status = Order.STATUS_PAID
|
||||
|
||||
@@ -285,6 +285,21 @@ def test_expire_twice(event):
|
||||
assert o2.invoices.count() == 2
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_expire_skipped_if_canceled_with_fee(event):
|
||||
o2 = Order.objects.create(
|
||||
code='FO2', event=event, email='dummy@dummy.test',
|
||||
status=Order.STATUS_PENDING, locale='en',
|
||||
datetime=now(), expires=now() - timedelta(days=10),
|
||||
total=12,
|
||||
)
|
||||
o2.fees.create(fee_type=OrderFee.FEE_TYPE_CANCELLATION, value=12)
|
||||
generate_invoice(o2)
|
||||
expire_orders(None)
|
||||
o2 = Order.objects.get(id=o2.id)
|
||||
assert o2.status == Order.STATUS_PENDING
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_expiring_auto_disabled(event):
|
||||
event.settings.set('payment_term_expire_automatically', False)
|
||||
|
||||
Reference in New Issue
Block a user