diff --git a/src/pretix/presale/checkoutflow.py b/src/pretix/presale/checkoutflow.py
index 5eb9de2273..aef32bfd7a 100644
--- a/src/pretix/presale/checkoutflow.py
+++ b/src/pretix/presale/checkoutflow.py
@@ -17,7 +17,7 @@ from pretix.base.services.cart import (
from pretix.base.services.orders import perform_order
from pretix.multidomain.urlreverse import eventreverse
from pretix.presale.forms.checkout import (
- AddOnsForm, ContactForm, InvoiceAddressForm,
+ AddOnsForm, ContactForm, InvoiceAddressForm, InvoiceNameForm,
)
from pretix.presale.signals import (
checkout_confirm_messages, checkout_flow_steps, contact_form_fields,
@@ -322,6 +322,12 @@ class QuestionsStep(QuestionsViewMixin, CartMixin, TemplateFlowStep):
@cached_property
def invoice_form(self):
+ if not self.request.event.settings.invoice_address_asked and self.request.event.settings.invoice_name_required:
+ return InvoiceNameForm(data=self.request.POST if self.request.method == "POST" else None,
+ event=self.request.event,
+ request=self.request,
+ instance=self.invoice_address,
+ validate_vat_id=False)
return InvoiceAddressForm(data=self.request.POST if self.request.method == "POST" else None,
event=self.request.event,
request=self.request,
@@ -331,7 +337,7 @@ class QuestionsStep(QuestionsViewMixin, CartMixin, TemplateFlowStep):
def post(self, request):
self.request = request
failed = not self.save() or not self.contact_form.is_valid()
- if request.event.settings.invoice_address_asked:
+ if request.event.settings.invoice_address_asked or self.request.event.settings.invoice_name_required:
failed = failed or not self.invoice_form.is_valid()
if failed:
messages.error(request,
@@ -339,7 +345,7 @@ class QuestionsStep(QuestionsViewMixin, CartMixin, TemplateFlowStep):
return self.render()
self.cart_session['email'] = self.contact_form.cleaned_data['email']
self.cart_session['contact_form_data'] = self.contact_form.cleaned_data
- if request.event.settings.invoice_address_asked:
+ if request.event.settings.invoice_address_asked or self.request.event.settings.invoice_name_required:
addr = self.invoice_form.save()
self.cart_session['invoice_address'] = addr.pk
@@ -369,8 +375,7 @@ class QuestionsStep(QuestionsViewMixin, CartMixin, TemplateFlowStep):
messages.warning(request, _('Please enter your invoicing address.'))
return False
- if request.event.settings.invoice_address_asked and request.event.settings.invoice_name_required and (
- not self.invoice_address or not self.invoice_address.name):
+ if request.event.settings.invoice_name_required and (not self.invoice_address or not self.invoice_address.name):
messages.warning(request, _('Please enter your name.'))
return False
diff --git a/src/pretix/presale/forms/checkout.py b/src/pretix/presale/forms/checkout.py
index 882c769c0d..230de222b6 100644
--- a/src/pretix/presale/forms/checkout.py
+++ b/src/pretix/presale/forms/checkout.py
@@ -61,6 +61,15 @@ class InvoiceAddressForm(BaseInvoiceAddressForm):
vat_warning = True
+class InvoiceNameForm(InvoiceAddressForm):
+
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ for f in list(self.fields.keys()):
+ if f != 'name':
+ del self.fields[f]
+
+
class QuestionsForm(BaseQuestionsForm):
"""
This form class is responsible for asking order-related questions. This includes
diff --git a/src/pretix/presale/templates/pretixpresale/event/checkout_confirm.html b/src/pretix/presale/templates/pretixpresale/event/checkout_confirm.html
index 578903e885..d6f42c9435 100644
--- a/src/pretix/presale/templates/pretixpresale/event/checkout_confirm.html
+++ b/src/pretix/presale/templates/pretixpresale/event/checkout_confirm.html
@@ -120,6 +120,12 @@
+ {% if not event.settings.invoice_address_asked and event.settings.invoice_name_required %}
+
+ - {% trans "Name" %}
+ - {{ addr.name }}
+
+ {% endif %}
{% for l, v in contact_info %}
- {{ l }}
diff --git a/src/pretix/presale/templates/pretixpresale/event/checkout_questions.html b/src/pretix/presale/templates/pretixpresale/event/checkout_questions.html
index f9f123647e..8676da65d1 100644
--- a/src/pretix/presale/templates/pretixpresale/event/checkout_questions.html
+++ b/src/pretix/presale/templates/pretixpresale/event/checkout_questions.html
@@ -21,6 +21,9 @@
diff --git a/src/pretix/presale/templates/pretixpresale/event/order.html b/src/pretix/presale/templates/pretixpresale/event/order.html
index 63c44ace2d..3ab1180438 100644
--- a/src/pretix/presale/templates/pretixpresale/event/order.html
+++ b/src/pretix/presale/templates/pretixpresale/event/order.html
@@ -120,7 +120,7 @@
{% eventsignal event "pretix.presale.signals.order_info" order=order %}
{% if invoices %}
-
+
{% elif can_generate_invoice %}
-
+
{% endif %}
- {% if request.event.settings.invoice_address_asked %}
+ {% if request.event.settings.invoice_address_asked or request.event.settings.invoice_name_required %}
@@ -173,27 +173,35 @@
{% endif %}
- {% trans "Invoice information" %}
+ {% if request.event.settings.invoice_address_asked %}
+ {% trans "Invoice information" %}
+ {% else %}
+ {% trans "Contact information" %}
+ {% endif %}
- - {% trans "Company" %}
- - {{ order.invoice_address.company }}
+ {% if request.event.settings.invoice_address_asked %}
+ - {% trans "Company" %}
+ - {{ order.invoice_address.company }}
+ {% endif %}
- {% trans "Name" %}
- {{ order.invoice_address.name }}
- - {% trans "Address" %}
- - {{ order.invoice_address.street|linebreaksbr }}
- - {% trans "ZIP code and city" %}
- - {{ order.invoice_address.zipcode }} {{ order.invoice_address.city }}
- - {% trans "Country" %}
- - {{ order.invoice_address.country.name|default:order.invoice_address.country_old }}
- {% if request.event.settings.invoice_address_vatid %}
- - {% trans "VAT ID" %}
- - {{ order.invoice_address.vat_id }}
+ {% if request.event.settings.invoice_address_asked %}
+ - {% trans "Address" %}
+ - {{ order.invoice_address.street|linebreaksbr }}
+ - {% trans "ZIP code and city" %}
+ - {{ order.invoice_address.zipcode }} {{ order.invoice_address.city }}
+ - {% trans "Country" %}
+ - {{ order.invoice_address.country.name|default:order.invoice_address.country_old }}
+ {% if request.event.settings.invoice_address_vatid %}
+ - {% trans "VAT ID" %}
+ - {{ order.invoice_address.vat_id }}
+ {% endif %}
+ - {% trans "Internal Reference" %}
+ - {{ order.invoice_address.internal_reference }}
{% endif %}
- - {% trans "Internal Reference" %}
- - {{ order.invoice_address.internal_reference }}
diff --git a/src/pretix/presale/templates/pretixpresale/event/order_modify.html b/src/pretix/presale/templates/pretixpresale/event/order_modify.html
index ec38b7e848..e30f65bf17 100644
--- a/src/pretix/presale/templates/pretixpresale/event/order_modify.html
+++ b/src/pretix/presale/templates/pretixpresale/event/order_modify.html
@@ -11,19 +11,27 @@