Compare commits

...

2 Commits

Author SHA1 Message Date
Raphael Michel
0fc2df665c Update src/pretix/base/invoicing/peppol.py
Co-authored-by: pajowu <engelhardt@pretix.eu>
2026-03-10 09:52:49 +01:00
Raphael Michel
79246b23f6 Invoice address: Special validation for Belgium (Z#23224796) 2026-03-09 18:04:27 +01:00
3 changed files with 9 additions and 2 deletions

View File

@@ -1415,6 +1415,7 @@ class BaseInvoiceAddressForm(forms.ModelForm):
if not data.get(r):
raise ValidationError({r: _("This field is required for the selected type of invoice transmission.")})
transmission_type.validate_invoice_address_data(data)
self.instance.transmission_type = transmission_type.identifier
self.instance.transmission_info = transmission_type.form_data_to_transmission_info(data)
elif transmission_type.is_exclusive(self.event, data.get("country"), data.get("is_business")):

View File

@@ -204,6 +204,12 @@ class PeppolTransmissionType(TransmissionType):
}
return base | {"transmission_peppol_participant_id"}
def validate_invoice_address_data(self, address_data: dict):
# Special case Belgium: If a Belgian business ID is used as Peppol ID, it should match the VAT ID
if address_data.get("transmission_peppol_participant_id").startswith("0208:") and address_data.get("vat_id"):
if address_data["vat_id"].removeprefix("BE") != address_data["transmission_peppol_participant_id"].removeprefix("0208:"):
raise ValidationError({"transmission_peppol_participant_id": _("The Peppol participant ID does not match your VAT ID.")})
def pdf_watermark(self) -> str:
return pgettext("peppol_invoice", "Visual copy")

View File

@@ -24,7 +24,7 @@ from typing import Optional
from django.utils.translation import gettext_lazy as _
from django_countries.fields import Country
from pretix.base.models import Invoice, InvoiceAddress
from pretix.base.models import Invoice
from pretix.base.signals import EventPluginRegistry, Registry
@@ -89,7 +89,7 @@ class TransmissionType:
def invoice_address_form_fields_visible(self, country: Country, is_business: bool) -> set:
return set(self.invoice_address_form_fields.keys())
def validate_address(self, ia: InvoiceAddress):
def validate_invoice_address_data(self, address_data: dict):
pass
@property