From fd6d3934c00e18aeab07b6bd61524c83876da498 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Mon, 23 Mar 2026 14:33:17 +0100 Subject: [PATCH] Remove invoice_address_from_vat_id on save if it is not used --- src/pretix/base/settings.py | 8 ++++++++ src/pretix/control/forms/event.py | 9 ++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py index 0c801fac7..d4245baeb 100644 --- a/src/pretix/base/settings.py +++ b/src/pretix/base/settings.py @@ -4148,6 +4148,14 @@ def validate_event_settings(event, settings_dict): ) ]} ) + if ( + settings_dict.get('invoice_address_from_vat_id') and + settings_dict.get('invoice_address_from_country') and + settings_dict.get('invoice_address_from_country') not in VAT_ID_COUNTRIES + ): + raise ValidationError({ + 'invoice_address_from_vat_id': _('VAT-ID is not supported for "{}".').format(settings_dict.get('invoice_address_from_country')) + }) payment_term_last = settings_dict.get('payment_term_last') if payment_term_last and event.presale_end: diff --git a/src/pretix/control/forms/event.py b/src/pretix/control/forms/event.py index d70a94eb0..e1fb92aea 100644 --- a/src/pretix/control/forms/event.py +++ b/src/pretix/control/forms/event.py @@ -63,7 +63,7 @@ from pretix.base.forms import ( from pretix.base.models import Event, Organizer, TaxRule, Team from pretix.base.models.event import EventFooterLink, EventMetaValue, SubEvent from pretix.base.models.organizer import TeamQuerySet -from pretix.base.models.tax import TAX_CODE_LISTS +from pretix.base.models.tax import TAX_CODE_LISTS, VAT_ID_COUNTRIES from pretix.base.reldate import RelativeDateField, RelativeDateTimeField from pretix.base.services.placeholders import FormPlaceholderMixin from pretix.base.settings import ( @@ -531,6 +531,13 @@ class EventUpdateForm(I18nModelForm): class EventSettingsValidationMixin: + def clean_invoice_address_from_vat_id(self): + value = self.cleaned_data.get('invoice_address_from_vat_id') + country = self.cleaned_data.get('invoice_address_from_country') + if value and country and country not in VAT_ID_COUNTRIES: + return None + return value + def clean(self): data = super().clean() settings_dict = self.obj.settings.freeze()