From 62a0dd2541500a88f0c8cf886a767513a6e357a5 Mon Sep 17 00:00:00 2001 From: julia-luna <72915853+julia-luna@users.noreply.github.com> Date: Wed, 11 Nov 2020 14:27:43 +0100 Subject: [PATCH] Add option to include prefix and invoice number in payment reference (#1848) --- src/pretix/plugins/banktransfer/payment.py | 22 ++++++++++++++++++---- src/pretix/presale/views/order.py | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/pretix/plugins/banktransfer/payment.py b/src/pretix/plugins/banktransfer/payment.py index da7af3774..7e5c1a38c 100644 --- a/src/pretix/plugins/banktransfer/payment.py +++ b/src/pretix/plugins/banktransfer/payment.py @@ -111,10 +111,18 @@ class BankTransfer(BasePaymentProvider): required=False )), ('omit_hyphen', forms.BooleanField( - label=_('Do not include a hyphen in the payment reference.'), + label=_('Do not include hyphens in the payment reference.'), help_text=_('This is required in some countries.'), required=False )), + ('include_invoice_number', forms.BooleanField( + label=_('Include invoice number in the payment reference.'), + required=False + )), + ('prefix', forms.CharField( + label=_('Prefix for the payment reference'), + required=False, + )) ]) @property @@ -227,10 +235,16 @@ class BankTransfer(BasePaymentProvider): return template.render(ctx) def _code(self, order): + prefix = self.settings.get('prefix', default='') + li = order.invoices.last() + invoice_number = li.number if self.settings.get('include_invoice_number', as_type=bool) and li else '' + + code = " ".join((prefix, order.full_code, invoice_number)).strip(" ") + if self.settings.get('omit_hyphen', as_type=bool): - return self.event.slug.upper() + order.code - else: - return order.full_code + code = code.replace('-', '') + + return code def shred_payment_info(self, obj): if not obj.info_data: diff --git a/src/pretix/presale/views/order.py b/src/pretix/presale/views/order.py index 3cb921229..d4b6edadd 100644 --- a/src/pretix/presale/views/order.py +++ b/src/pretix/presale/views/order.py @@ -227,7 +227,7 @@ class OrderDetails(EventViewMixin, OrderDetailMixin, CartMixin, TicketPageMixin, if lp and lp.state not in (OrderPayment.PAYMENT_STATE_CONFIRMED, OrderPayment.PAYMENT_STATE_REFUNDED, OrderPayment.PAYMENT_STATE_CANCELED): - ctx['last_payment'] = self.order.payments.last() + ctx['last_payment'] = lp pp = lp.payment_provider ctx['last_payment_info'] = pp.payment_pending_render(self.request, ctx['last_payment'])