diff --git a/src/pretix/base/models/invoices.py b/src/pretix/base/models/invoices.py
index 7148afe78c..13f7e1e8e9 100644
--- a/src/pretix/base/models/invoices.py
+++ b/src/pretix/base/models/invoices.py
@@ -39,8 +39,12 @@ class Invoice(models.Model):
:type date: date
:param locale: The locale in which the invoice should be printed
:type locale: str
+ :param introductory_text: Introductory text for the invoice, e.g. for a greeting
+ :type introductory_text: str
:param additional_text: Additional text for the invoice
:type additional_text: str
+ :param footer_text: A footer text, displayed smaller and centered on every page
+ :type footer_text: str
:param file: The filename of the rendered invoice
:type file: File
"""
@@ -53,7 +57,9 @@ class Invoice(models.Model):
invoice_to = models.TextField()
date = models.DateField(default=date.today)
locale = models.CharField(max_length=50, default='en')
+ introductory_text = models.TextField(blank=True)
additional_text = models.TextField(blank=True)
+ footer_text = models.TextField(blank=True)
file = models.FileField(null=True, blank=True, upload_to=invoice_filename)
@staticmethod
diff --git a/src/pretix/base/services/invoices.py b/src/pretix/base/services/invoices.py
index 98f6834bae..bd51fbdb23 100644
--- a/src/pretix/base/services/invoices.py
+++ b/src/pretix/base/services/invoices.py
@@ -21,7 +21,7 @@ from reportlab.platypus import (
Table, TableStyle,
)
-from pretix.base.i18n import language
+from pretix.base.i18n import LazyI18nString, language
from pretix.base.models import Invoice, InvoiceAddress, InvoiceLine, Order
from pretix.base.signals import register_payment_providers
@@ -49,7 +49,14 @@ def generate_cancellation(invoice: Invoice):
def regenerate_invoice(invoice: Invoice):
with language(invoice.locale):
invoice.invoice_from = invoice.event.settings.get('invoice_address_from')
- invoice.additional_text = invoice.event.settings.get('invoice_additional_text').replace('\n','
')
+
+ introductory = invoice.event.settings.get('invoice_introductory_text', as_type=LazyI18nString)
+ additional = invoice.event.settings.get('invoice_additional_text', as_type=LazyI18nString)
+ footer = invoice.event.settings.get('invoice_footer_text', as_type=LazyI18nString)
+
+ invoice.introductory_text = str(introductory).replace('\n', '
')
+ invoice.additional_text = str(additional).replace('\n', '
')
+
+ introductory = i.event.settings.get('invoice_introductory_text', as_type=LazyI18nString)
+ additional = i.event.settings.get('invoice_additional_text', as_type=LazyI18nString)
+ footer = i.event.settings.get('invoice_footer_text', as_type=LazyI18nString)
+
+ i.introductory_text = str(introductory).replace('\n', '
')
+ i.additional_text = str(additional).replace('\n', '