diff --git a/src/pretix/api/serializers/event.py b/src/pretix/api/serializers/event.py index bfc0668fa..e2f3b507d 100644 --- a/src/pretix/api/serializers/event.py +++ b/src/pretix/api/serializers/event.py @@ -762,6 +762,7 @@ class EventSettingsSerializer(SettingsSerializer): 'cancel_allow_user_paid_adjust_fees_step', 'cancel_allow_user_paid_refund_as_giftcard', 'cancel_allow_user_paid_require_approval', + 'cancel_allow_user_paid_require_approval_fee_unknown', 'change_allow_user_variation', 'change_allow_user_addons', 'change_allow_user_until', diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py index 60606f301..4c1dbbd08 100644 --- a/src/pretix/base/settings.py +++ b/src/pretix/base/settings.py @@ -1514,6 +1514,15 @@ DEFAULTS = { "before the order is canceled and a refund is issued."), ) }, + 'cancel_allow_user_paid_require_approval_fee_unknown': { + 'default': 'False', + 'type': bool, + 'form_class': forms.BooleanField, + 'serializer_class': serializers.BooleanField, + 'form_kwargs': dict( + label=_("Do not show the cancellation fee to users when they request cancellation."), + ) + }, 'cancel_allow_user_paid_refund_as_giftcard': { 'default': 'off', 'type': str, diff --git a/src/pretix/control/forms/event.py b/src/pretix/control/forms/event.py index 4c479f259..2f54c24ea 100644 --- a/src/pretix/control/forms/event.py +++ b/src/pretix/control/forms/event.py @@ -674,6 +674,7 @@ class CancelSettingsForm(SettingsForm): 'cancel_allow_user_paid_adjust_fees_step', 'cancel_allow_user_paid_refund_as_giftcard', 'cancel_allow_user_paid_require_approval', + 'cancel_allow_user_paid_require_approval_fee_unknown', 'change_allow_user_variation', 'change_allow_user_price', 'change_allow_user_until', diff --git a/src/pretix/control/templates/pretixcontrol/event/cancel.html b/src/pretix/control/templates/pretixcontrol/event/cancel.html index cf0e76c10..d02b1c0c1 100644 --- a/src/pretix/control/templates/pretixcontrol/event/cancel.html +++ b/src/pretix/control/templates/pretixcontrol/event/cancel.html @@ -16,6 +16,9 @@ {% bootstrap_field form.cancel_allow_user_paid layout="control" %} {% bootstrap_field form.cancel_allow_user_paid_require_approval layout="control" %} +
+ {% blocktrans trimmed %} + You can request to cancel this order. + {% endblocktrans %} + {% blocktrans trimmed %} + If your request is approved, the organizer will determine if you will receive a + full refund or if a cancellation fee is deducted according to their cancellation + policy. + {% endblocktrans %} + {% if request.event.settings.cancel_allow_user_paid_refund_as_giftcard == "force" %} + {% trans "The refund will be issued in form of a gift card that you can use for further purchases." %} + {% elif request.event.settings.cancel_allow_user_paid_refund_as_giftcard == "option" %} + {% trans "The refund can be issued to your original payment method or as a gift card." %} + {% elif request.event.settings.cancel_allow_user_paid_refund_as_giftcard == "off" %} + {% trans "The refund will be issued to your original payment method." %} + {% endif %} + {% trans "This will invalidate all tickets in this order." %} +
+ {% elif order.user_cancel_fee >= order.total %}{% if request.event.settings.cancel_allow_user_paid_require_approval %} {% blocktrans trimmed %} diff --git a/src/pretix/presale/templates/pretixpresale/event/order_cancel.html b/src/pretix/presale/templates/pretixpresale/event/order_cancel.html index 410e32f1b..d059a5280 100644 --- a/src/pretix/presale/templates/pretixpresale/event/order_cancel.html +++ b/src/pretix/presale/templates/pretixpresale/event/order_cancel.html @@ -22,12 +22,25 @@ data-asynctask class=""> {% if request.event.settings.cancel_allow_user_paid_require_approval and order.status == "p" and order.total != 0 %} -
- {% blocktrans trimmed %} - You can request the cancellation of your order on this page. The event organizer will then decide - on your request. If they approve, your order will be canceled and all tickets will be invalidated. - {% endblocktrans %} -
+ {% if request.event.settings.cancel_allow_user_paid_require_approval_fee_unknown %} ++ {% blocktrans trimmed %} + You can request to cancel this order. + {% endblocktrans %} + {% blocktrans trimmed %} + If your request is approved, the organizer will determine if you will receive a + full refund or if a cancellation fee is deducted according to their cancellation + policy. + {% endblocktrans %} +
+ {% else %} ++ {% blocktrans trimmed %} + You can request the cancellation of your order on this page. The event organizer will then decide + on your request. If they approve, your order will be canceled and all tickets will be invalidated. + {% endblocktrans %} +
+ {% endif %} {% else %}{% blocktrans trimmed %} @@ -37,6 +50,7 @@
{% endif %} + {% if not request.event.settings.cancel_allow_user_paid_require_approval or not request.event.settings.cancel_allow_user_paid_require_approval_fee_unknown %} {% if request.event.settings.cancel_allow_user_paid_adjust_fees and order.status == "p" and order.total != 0 %}{% if cancel_fee %} @@ -82,6 +96,7 @@ {% trans "Refund amount:" %} {{ refund_amount|money:request.event.currency }}
{% endif %} + {% endif %} {% if refund_amount %} {% if request.event.settings.cancel_allow_user_paid_refund_as_giftcard == "manually" %}