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', '