diff --git a/src/pretix/base/services/invoices.py b/src/pretix/base/services/invoices.py index a888bfd63e..b6e79d50ed 100644 --- a/src/pretix/base/services/invoices.py +++ b/src/pretix/base/services/invoices.py @@ -24,7 +24,7 @@ from pretix.base.models import Invoice, InvoiceAddress, InvoiceLine, Order from pretix.base.models.tax import EU_CURRENCIES from pretix.base.services.tasks import TransactionAwareTask from pretix.base.settings import GlobalSettingsObject -from pretix.base.signals import periodic_task +from pretix.base.signals import invoice_line_text, periodic_task from pretix.celery_app import app from pretix.helpers.database import rolledback_transaction from pretix.helpers.models import modelcopy @@ -139,6 +139,9 @@ def build_invoice(invoice: Invoice) -> Invoice: desc = " + " + desc if invoice.event.settings.invoice_attendee_name and p.attendee_name: desc += "
" + pgettext("invoice", "Attendee: {name}").format(name=p.attendee_name) + for recv, resp in invoice_line_text.send(sender=invoice.event, position=p): + if resp: + desc += "
" + resp for answ in p.answers.all(): if not answ.question.print_on_invoice: diff --git a/src/pretix/base/signals.py b/src/pretix/base/signals.py index e58fd50493..6411965c2c 100644 --- a/src/pretix/base/signals.py +++ b/src/pretix/base/signals.py @@ -622,3 +622,11 @@ order_split = EventPluginSignal( This signal is sent out when an order is split into two orders and allows you to copy related models to the new order. You will be passed the old order as ``original`` and the new order as ``split_order``. """ + +invoice_line_text = EventPluginSignal( + providing_args=["position"] +) +""" +This signal is sent out when an invoice is built for an order. You can return additional text that +should be shown on the invoice for the given ``position``. +"""