diff --git a/src/pretix/base/forms/questions.py b/src/pretix/base/forms/questions.py index 2cd5936792..59be6e3cc9 100644 --- a/src/pretix/base/forms/questions.py +++ b/src/pretix/base/forms/questions.py @@ -1035,6 +1035,18 @@ class BaseInvoiceAddressForm(forms.ModelForm): 'is_business': '' } + @property + def ask_vat_id(self): + return self.event.settings.invoice_address_vatid + + @property + def address_required(self): + return self.event.settings.invoice_address_required + + @property + def company_required(self): + return self.event.settings.invoice_address_company_required + def __init__(self, *args, **kwargs): self.event = event = kwargs.pop('event') self.request = kwargs.pop('request', None) @@ -1046,7 +1058,11 @@ class BaseInvoiceAddressForm(forms.ModelForm): kwargs['initial']['country'] = guess_country_from_request(self.request, self.event) super().__init__(*args, **kwargs) - if not event.settings.invoice_address_vatid: + + self.fields["company"].widget.attrs["data-display-dependency"] = f'#id_{self.add_prefix("is_business")}_1' + self.fields["vat_id"].widget.attrs["data-display-dependency"] = f'#id_{self.add_prefix("is_business")}_1' + + if not self.ask_vat_id: del self.fields['vat_id'] elif self.validate_vat_id: self.fields['vat_id'].help_text = '
'.join([ @@ -1100,13 +1116,13 @@ class BaseInvoiceAddressForm(forms.ModelForm): self.data = self.data.copy() del self.data[fprefix + 'vat_id'] - if not event.settings.invoice_address_required or self.all_optional: + if not self.address_required or self.all_optional: for k, f in self.fields.items(): f.required = False f.widget.is_required = False if 'required' in f.widget.attrs: del f.widget.attrs['required'] - elif event.settings.invoice_address_company_required and not self.all_optional: + elif self.company_required and not self.all_optional: self.initial['is_business'] = True self.fields['is_business'].widget = BusinessBooleanRadio(require_business=True) @@ -1123,11 +1139,11 @@ class BaseInvoiceAddressForm(forms.ModelForm): label=_('Name'), initial=self.instance.name_parts, ) - if event.settings.invoice_address_required and not event.settings.invoice_address_company_required and not self.all_optional: + if self.address_required and not self.company_required and not self.all_optional: if not event.settings.invoice_name_required: - self.fields['name_parts'].widget.attrs['data-required-if'] = '#id_is_business_0' + self.fields['name_parts'].widget.attrs['data-required-if'] = f'#id_{self.add_prefix("is_business")}_0' self.fields['name_parts'].widget.attrs['data-no-required-attr'] = '1' - self.fields['company'].widget.attrs['data-required-if'] = '#id_is_business_1' + self.fields['company'].widget.attrs['data-required-if'] = f'#id_{self.add_prefix("is_business")}_1' if not event.settings.invoice_address_beneficiary: del self.fields['beneficiary'] @@ -1153,7 +1169,7 @@ class BaseInvoiceAddressForm(forms.ModelForm): data['vat_id'] = '' if data.get('is_business') and not ask_for_vat_id(data.get('country')): data['vat_id'] = '' - if self.address_validation and self.event.settings.invoice_address_required and not self.all_optional: + if self.address_validation and self.address_required and not self.all_optional: if data.get('is_business') and not data.get('company'): raise ValidationError({"company": _('You need to provide a company name.')}) if not data.get('is_business') and name_parts_is_empty(data.get('name_parts', {})):