From 28e676ac9a185e0d73db93438b3bd32a6660539e Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 19 Jul 2017 14:07:18 +0200 Subject: [PATCH] Allow to only require the name in the invoice address --- src/pretix/base/settings.py | 4 ++++ src/pretix/control/forms/event.py | 8 ++++++++ .../templates/pretixcontrol/event/invoicing.html | 1 + src/pretix/presale/forms/checkout.py | 11 ++++++++--- .../pretixpresale/event/checkout_questions.html | 6 +++--- 5 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py index 72ea09ac98..f68e05d7b9 100644 --- a/src/pretix/base/settings.py +++ b/src/pretix/base/settings.py @@ -45,6 +45,10 @@ DEFAULTS = { 'default': 'True', 'type': bool, }, + 'invoice_name_required': { + 'default': 'False', + 'type': bool, + }, 'invoice_address_required': { 'default': 'False', 'type': bool, diff --git a/src/pretix/control/forms/event.py b/src/pretix/control/forms/event.py index f46970957b..9886d74531 100644 --- a/src/pretix/control/forms/event.py +++ b/src/pretix/control/forms/event.py @@ -436,6 +436,14 @@ class InvoiceSettingsForm(SettingsForm): required=False, widget=forms.CheckboxInput(attrs={'data-checkbox-dependency': '#id_invoice_address_asked'}), ) + invoice_name_required = forms.BooleanField( + label=_("Require customer name"), + required=False, + widget=forms.CheckboxInput( + attrs={'data-checkbox-dependency': '#id_invoice_address_asked', + 'data-inverse-dependency': '#id_invoice_address_required'} + ), + ) invoice_address_vatid = forms.BooleanField( label=_("Ask for VAT ID"), help_text=_("Does only work if an invoice address is asked for. VAT ID is not required."), diff --git a/src/pretix/control/templates/pretixcontrol/event/invoicing.html b/src/pretix/control/templates/pretixcontrol/event/invoicing.html index 66aa688b26..c7f0cd2a7d 100644 --- a/src/pretix/control/templates/pretixcontrol/event/invoicing.html +++ b/src/pretix/control/templates/pretixcontrol/event/invoicing.html @@ -9,6 +9,7 @@ {% trans "Invoicing" %} {% bootstrap_field form.invoice_address_asked layout="horizontal" %} {% bootstrap_field form.invoice_address_required layout="horizontal" %} + {% bootstrap_field form.invoice_name_required layout="horizontal" %} {% bootstrap_field form.invoice_address_vatid layout="horizontal" %} {% bootstrap_field form.invoice_numbers_consecutive layout="horizontal" %} {% bootstrap_field form.invoice_numbers_prefix layout="horizontal" %} diff --git a/src/pretix/presale/forms/checkout.py b/src/pretix/presale/forms/checkout.py index bc6e038218..2e233126db 100644 --- a/src/pretix/presale/forms/checkout.py +++ b/src/pretix/presale/forms/checkout.py @@ -84,9 +84,8 @@ class InvoiceAddressForm(forms.ModelForm): 'is_business': BusinessBooleanRadio, 'street': forms.Textarea(attrs={'rows': 2, 'placeholder': _('Street and Number')}), 'company': forms.TextInput(attrs={'data-typocheck-source': '1', - 'data-display-dependency': '#id_is_business_1', - 'data-required-if': '#id_is_business_1'}), - 'name': forms.TextInput(attrs={'data-typocheck-source': '1', 'data-required-if': '#id_is_business_0'}), + 'data-display-dependency': '#id_is_business_1'}), + 'name': forms.TextInput(attrs={'data-typocheck-source': '1'}), 'vat_id': forms.TextInput(attrs={'data-display-dependency': '#id_is_business_1'}), } labels = { @@ -105,6 +104,12 @@ class InvoiceAddressForm(forms.ModelForm): if 'required' in f.widget.attrs: del f.widget.attrs['required'] + if event.settings.invoice_name_required: + self.fields['name'].required = True + else: + self.fields['company'].widget.attrs['data-required-if'] = '#id_is_business_1' + self.fields['name'].widget.attrs['data-required-if'] = '#id_is_business_0' + def clean(self): data = self.cleaned_data if not data['name'] and not data['company'] and self.event.settings.invoice_address_required: diff --git a/src/pretix/presale/templates/pretixpresale/event/checkout_questions.html b/src/pretix/presale/templates/pretixpresale/event/checkout_questions.html index 895725ade5..8055eb4367 100644 --- a/src/pretix/presale/templates/pretixpresale/event/checkout_questions.html +++ b/src/pretix/presale/templates/pretixpresale/event/checkout_questions.html @@ -32,8 +32,8 @@
-
+
{% bootstrap_form invoice_form layout="horizontal" %}