forked from CGM_Public/pretix_original
Only store transmission email if invoice receiver is a business (Z#23210414) (#5535)
* Use the transmission info transformation methods Use form_data_to_transmission_info and transmission_info_to_form_data to convert between database representation and form data * Only store transmission email address if invoice receiver is a business * Fix default implementation of form_data_to_transmission_info * Update src/pretix/base/forms/questions.py
This commit is contained in:
@@ -77,7 +77,9 @@ from pretix.base.forms.widgets import (
|
||||
from pretix.base.i18n import (
|
||||
get_babel_locale, get_language_without_region, language,
|
||||
)
|
||||
from pretix.base.invoicing.transmission import get_transmission_types
|
||||
from pretix.base.invoicing.transmission import (
|
||||
get_transmission_types, transmission_types,
|
||||
)
|
||||
from pretix.base.models import InvoiceAddress, Item, Question, QuestionOption
|
||||
from pretix.base.models.tax import ask_for_vat_id
|
||||
from pretix.base.services.tax import (
|
||||
@@ -1142,9 +1144,11 @@ class BaseInvoiceAddressForm(forms.ModelForm):
|
||||
if (not kwargs.get('instance') or not kwargs['instance'].country) and not kwargs["initial"].get("country"):
|
||||
kwargs['initial']['country'] = guess_country_from_request(self.request, self.event)
|
||||
|
||||
if kwargs.get('instance'):
|
||||
kwargs['initial'].update(kwargs['instance'].transmission_info or {})
|
||||
kwargs['initial']['transmission_type'] = kwargs['instance'].transmission_type
|
||||
if kwargs.get('instance') and kwargs['instance'].transmission_type:
|
||||
ttype, meta = transmission_types.get(identifier=kwargs['instance'].transmission_type)
|
||||
if ttype:
|
||||
kwargs['initial'].update(ttype.transmission_info_to_form_data(kwargs['instance'].transmission_info or {}))
|
||||
kwargs['initial']['transmission_type'] = ttype.identifier
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
@@ -1394,9 +1398,7 @@ class BaseInvoiceAddressForm(forms.ModelForm):
|
||||
raise ValidationError({r: _("This field is required for the selected type of invoice transmission.")})
|
||||
|
||||
self.instance.transmission_type = transmission_type.identifier
|
||||
self.instance.transmission_info = {
|
||||
k: data.get(k) for k in transmission_type.invoice_address_form_fields
|
||||
}
|
||||
self.instance.transmission_info = transmission_type.form_data_to_transmission_info(data)
|
||||
elif transmission_type.exclusive:
|
||||
if transmission_type.is_available(self.event, data.get("country"), data.get("is_business")):
|
||||
raise ValidationError({
|
||||
|
||||
@@ -77,7 +77,7 @@ class EmailTransmissionType(TransmissionType):
|
||||
}
|
||||
|
||||
def form_data_to_transmission_info(self, form_data: dict) -> dict:
|
||||
if form_data.get("transmission_email_other") and form_data.get("transmission_email_address"):
|
||||
if form_data.get("is_business") and form_data.get("transmission_email_other") and form_data.get("transmission_email_address"):
|
||||
return {
|
||||
"transmission_email_address": form_data["transmission_email_address"],
|
||||
}
|
||||
|
||||
@@ -99,7 +99,9 @@ class TransmissionType:
|
||||
return {}
|
||||
|
||||
def form_data_to_transmission_info(self, form_data: dict) -> dict:
|
||||
return form_data
|
||||
return {
|
||||
k: form_data.get(k) for k in self.invoice_address_form_fields
|
||||
}
|
||||
|
||||
def transmission_info_to_form_data(self, transmission_info: dict) -> dict:
|
||||
return transmission_info
|
||||
|
||||
Reference in New Issue
Block a user