diff --git a/src/pretix/base/services/invoices.py b/src/pretix/base/services/invoices.py
index a9f1b9464a..803bba2120 100644
--- a/src/pretix/base/services/invoices.py
+++ b/src/pretix/base/services/invoices.py
@@ -257,7 +257,8 @@ def invoice_pdf_task(invoice: int):
def invoice_qualified(order: Order):
- if order.total == Decimal('0.00') or order.require_approval:
+ if order.total == Decimal('0.00') or order.require_approval or \
+ order.sales_channel not in order.event.settings.get('invoice_generate_sales_channels'):
return False
return True
diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py
index 9074037bc4..f3b2fbf320 100644
--- a/src/pretix/base/settings.py
+++ b/src/pretix/base/settings.py
@@ -145,6 +145,10 @@ DEFAULTS = {
'default': 'False',
'type': str
},
+ 'invoice_generate_sales_channels': {
+ 'default': json.dumps(['web']),
+ 'type': list
+ },
'invoice_address_from': {
'default': '',
'type': str
diff --git a/src/pretix/control/forms/event.py b/src/pretix/control/forms/event.py
index ce88f92997..2601a6e487 100644
--- a/src/pretix/control/forms/event.py
+++ b/src/pretix/control/forms/event.py
@@ -18,6 +18,7 @@ from i18nfield.forms import (
)
from pytz import common_timezones, timezone
+from pretix.base.channels import get_all_sales_channels
from pretix.base.forms import I18nModelForm, PlaceholderValidator, SettingsForm
from pretix.base.models import Event, Organizer, TaxRule
from pretix.base.models.event import EventMetaValue, SubEvent
@@ -664,6 +665,13 @@ class InvoiceSettingsForm(SettingsForm):
),
help_text=_("Invoices will never be automatically generated for free orders.")
)
+ invoice_generate_sales_channels = forms.MultipleChoiceField(
+ label=_('Generate invoices for Sales channels'),
+ choices=[],
+ widget=forms.CheckboxSelectMultiple,
+ help_text=_("If you have enabled invoice generation in the previous setting, you can limit it here to specific "
+ "sales channels.")
+ )
invoice_attendee_name = forms.BooleanField(
label=_("Show attendee names on invoices"),
required=False
@@ -779,6 +787,9 @@ class InvoiceSettingsForm(SettingsForm):
self.fields['invoice_numbers_prefix'].widget.attrs['placeholder'] = event.slug.upper() + '-'
locale_names = dict(settings.LANGUAGES)
self.fields['invoice_language'].choices = [('__user__', _('The user\'s language'))] + [(a, locale_names[a]) for a in event.settings.locales]
+ self.fields['invoice_generate_sales_channels'].choices = (
+ (c.identifier, c.verbose_name) for c in get_all_sales_channels().values()
+ )
def multimail_validate(val):
diff --git a/src/pretix/control/templates/pretixcontrol/event/invoicing.html b/src/pretix/control/templates/pretixcontrol/event/invoicing.html
index a1f0902f3a..a9870ac2df 100644
--- a/src/pretix/control/templates/pretixcontrol/event/invoicing.html
+++ b/src/pretix/control/templates/pretixcontrol/event/invoicing.html
@@ -9,6 +9,7 @@