diff --git a/src/pretix/control/forms/event.py b/src/pretix/control/forms/event.py index 7a63c7bc0..bc4644842 100644 --- a/src/pretix/control/forms/event.py +++ b/src/pretix/control/forms/event.py @@ -136,6 +136,11 @@ class EventWizardBasicsForm(I18nModelForm): choices=settings.LANGUAGES, label=_("Default language"), ) + no_taxes = forms.BooleanField( + label=_("I don't want to specify taxes now"), + help_text=_("You can always configure tax rates later."), + required=False, + ) tax_rate = forms.DecimalField( label=_("Sales tax rate"), help_text=_("Do you need to pay sales tax on your tickets? In this case, please enter the applicable tax rate " @@ -223,6 +228,11 @@ class EventWizardBasicsForm(I18nModelForm): raise ValidationError({ 'timezone': _('Your default locale must be specified.') }) + if not data.get("no_taxes") and not data.get("tax_rate"): + raise ValidationError({ + 'tax_rate': _('You have not specified a tax rate. If you do not want us to compute sales taxes, please ' + 'check "Do not use taxes" above.') + }) # change timezone zone = ZoneInfo(data.get('timezone')) diff --git a/src/pretix/control/templates/pretixcontrol/events/create_basics.html b/src/pretix/control/templates/pretixcontrol/events/create_basics.html index efbeabf76..faa8c0099 100644 --- a/src/pretix/control/templates/pretixcontrol/events/create_basics.html +++ b/src/pretix/control/templates/pretixcontrol/events/create_basics.html @@ -41,7 +41,10 @@ {% endif %} {% include "pretixcontrol/event/fragment_geodata.html" %} {% bootstrap_field form.currency layout="control" %} - {% bootstrap_field form.tax_rate addon_after="%" layout="control" %} + {% bootstrap_field form.no_taxes layout="control" %} +
+ {% bootstrap_field form.tax_rate addon_after="%" layout="control" %} +
{% trans "Display settings" %} diff --git a/src/tests/control/test_events.py b/src/tests/control/test_events.py index ada6a90d0..93bc87272 100644 --- a/src/tests/control/test_events.py +++ b/src/tests/control/test_events.py @@ -763,6 +763,7 @@ class EventsTest(SoupTest): 'basics-location_1': 'Hamburg', 'basics-currency': 'EUR', 'basics-tax_rate': '', + 'basics-no_taxes': 'on', 'basics-locale': 'en', 'basics-timezone': 'Europe/Berlin', 'basics-presale_start': '2016-11-01 10:00:00', @@ -792,6 +793,7 @@ class EventsTest(SoupTest): 'basics-location_1': 'Hamburg', 'basics-currency': 'EUR', 'basics-tax_rate': '', + 'basics-no_taxes': 'on', 'basics-locale': 'en', 'basics-timezone': 'Europe/Berlin', 'basics-presale_start_0': '2016-11-01', @@ -888,6 +890,7 @@ class EventsTest(SoupTest): 'basics-location_1': 'Hamburg', 'basics-currency': 'EUR', 'basics-tax_rate': '', + 'basics-no_taxes': 'on', 'basics-locale': 'en', 'basics-timezone': 'Europe/Berlin', 'basics-presale_start_0': '2016-11-01', @@ -1073,6 +1076,7 @@ class EventsTest(SoupTest): 'basics-location_0': 'Hamburg', 'basics-currency': 'EUR', 'basics-tax_rate': '', + 'basics-no_taxes': 'on', 'basics-locale': 'en', 'basics-timezone': 'UTC', 'basics-presale_start_0': '', @@ -1121,6 +1125,7 @@ class EventsTest(SoupTest): 'basics-location_0': 'Hamburg', 'basics-currency': 'EUR', 'basics-tax_rate': '', + 'basics-no_taxes': 'on', 'basics-locale': 'en', 'basics-timezone': 'UTC', 'basics-presale_start_0': '', @@ -1171,6 +1176,7 @@ class EventsTest(SoupTest): 'basics-location_0': 'Hamburg', 'basics-currency': 'EUR', 'basics-tax_rate': '', + 'basics-no_taxes': 'on', 'basics-locale': 'en', 'basics-timezone': 'Europe/Berlin', 'basics-presale_start_0': '2016-11-01', @@ -1200,6 +1206,7 @@ class EventsTest(SoupTest): 'basics-location_0': 'Hamburg', 'basics-currency': '$', 'basics-tax_rate': '', + 'basics-no_taxes': 'on', 'basics-locale': 'en', 'basics-timezone': 'Europe/Berlin', 'basics-presale_start_0': '2016-11-01', @@ -1229,6 +1236,7 @@ class EventsTest(SoupTest): 'basics-location_0': 'Hamburg', 'basics-currency': 'ASD', 'basics-tax_rate': '', + 'basics-no_taxes': 'on', 'basics-locale': 'en', 'basics-timezone': 'Europe/Berlin', 'basics-presale_start_0': '2016-11-01',