forked from CGM_Public/pretix_original
* Bank transfer: Do not show reference before it is as complete as possible (fixes #5296) * Update src/pretix/plugins/banktransfer/payment.py Co-authored-by: Richard Schreiber <schreiber@pretix.eu> * Apply suggestion from @raphaelm --------- Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
This commit is contained in:
@@ -271,7 +271,8 @@ class BankTransfer(BasePaymentProvider):
|
|||||||
'request': request,
|
'request': request,
|
||||||
'event': self.event,
|
'event': self.event,
|
||||||
'settings': self.settings,
|
'settings': self.settings,
|
||||||
'code': self._code(order) if order else None,
|
'code': self._code(order, force=False) if order else None,
|
||||||
|
'order': order,
|
||||||
'details': self.settings.get('bank_details', as_type=LazyI18nString),
|
'details': self.settings.get('bank_details', as_type=LazyI18nString),
|
||||||
}
|
}
|
||||||
return template.render(ctx)
|
return template.render(ctx)
|
||||||
@@ -295,7 +296,7 @@ class BankTransfer(BasePaymentProvider):
|
|||||||
md_nl2br = " \n"
|
md_nl2br = " \n"
|
||||||
if self.settings.get('bank_details_type') == 'sepa':
|
if self.settings.get('bank_details_type') == 'sepa':
|
||||||
bankdetails = (
|
bankdetails = (
|
||||||
(_("Reference"), self._code(order)),
|
(_("Reference"), self._code(order, force=True)),
|
||||||
(_("Amount"), money_filter(payment.amount, self.event.currency)),
|
(_("Amount"), money_filter(payment.amount, self.event.currency)),
|
||||||
(_("Account holder"), self.settings.get('bank_details_sepa_name')),
|
(_("Account holder"), self.settings.get('bank_details_sepa_name')),
|
||||||
(_("IBAN"), ibanformat(self.settings.get('bank_details_sepa_iban'))),
|
(_("IBAN"), ibanformat(self.settings.get('bank_details_sepa_iban'))),
|
||||||
@@ -304,7 +305,7 @@ class BankTransfer(BasePaymentProvider):
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
bankdetails = (
|
bankdetails = (
|
||||||
(_("Reference"), self._code(order)),
|
(_("Reference"), self._code(order, force=True)),
|
||||||
(_("Amount"), money_filter(payment.amount, self.event.currency)),
|
(_("Amount"), money_filter(payment.amount, self.event.currency)),
|
||||||
)
|
)
|
||||||
t += md_nl2br.join([f"**{k}:** {v}" for k, v in bankdetails])
|
t += md_nl2br.join([f"**{k}:** {v}" for k, v in bankdetails])
|
||||||
@@ -317,7 +318,7 @@ class BankTransfer(BasePaymentProvider):
|
|||||||
template = get_template('pretixplugins/banktransfer/pending.html')
|
template = get_template('pretixplugins/banktransfer/pending.html')
|
||||||
ctx = {
|
ctx = {
|
||||||
'event': self.event,
|
'event': self.event,
|
||||||
'code': self._code(payment.order),
|
'code': self._code(payment.order, force=True),
|
||||||
'order': payment.order,
|
'order': payment.order,
|
||||||
'amount': payment.amount,
|
'amount': payment.amount,
|
||||||
'payment_info': payment.info_data,
|
'payment_info': payment.info_data,
|
||||||
@@ -345,16 +346,25 @@ class BankTransfer(BasePaymentProvider):
|
|||||||
def _render_control_info(self, request, order, info_data, **extra_context):
|
def _render_control_info(self, request, order, info_data, **extra_context):
|
||||||
template = get_template('pretixplugins/banktransfer/control.html')
|
template = get_template('pretixplugins/banktransfer/control.html')
|
||||||
ctx = {'request': request, 'event': self.event,
|
ctx = {'request': request, 'event': self.event,
|
||||||
'code': self._code(order),
|
'code': self._code(order, force=True),
|
||||||
'payment_info': info_data, 'order': order,
|
'payment_info': info_data, 'order': order,
|
||||||
**extra_context}
|
**extra_context}
|
||||||
return template.render(ctx)
|
return template.render(ctx)
|
||||||
|
|
||||||
def _code(self, order):
|
def _code(self, order, force=False):
|
||||||
prefix = self.settings.get('prefix', default='')
|
prefix = self.settings.get('prefix', default='')
|
||||||
li = order.invoices.last()
|
li = order.invoices.last()
|
||||||
invoice_number = li.number if self.settings.get('include_invoice_number', as_type=bool) and li else ''
|
invoice_number = li.number if self.settings.get('include_invoice_number', as_type=bool) and li else ''
|
||||||
|
|
||||||
|
invoice_will_be_generated = (
|
||||||
|
not li and
|
||||||
|
self.settings.get('include_invoice_number', as_type=bool) and
|
||||||
|
order.event.settings.get('invoice_generate') == 'paid' and
|
||||||
|
self.requires_invoice_immediately
|
||||||
|
)
|
||||||
|
if invoice_will_be_generated and not force:
|
||||||
|
return None
|
||||||
|
|
||||||
code = " ".join((prefix, order.full_code, invoice_number)).strip(" ")
|
code = " ".join((prefix, order.full_code, invoice_number)).strip(" ")
|
||||||
|
|
||||||
if self.settings.get('omit_hyphen', as_type=bool):
|
if self.settings.get('omit_hyphen', as_type=bool):
|
||||||
|
|||||||
@@ -24,7 +24,13 @@
|
|||||||
{{ details | rich_text }}
|
{{ details | rich_text }}
|
||||||
{% if not code %}</div>{% endif %}
|
{% if not code %}</div>{% endif %}
|
||||||
|
|
||||||
{% if not code %}
|
{% if not code and order %}
|
||||||
|
<p>
|
||||||
|
<strong>
|
||||||
|
{% trans "We will assign you a personal reference code in the next step." %}
|
||||||
|
</strong>
|
||||||
|
</p>
|
||||||
|
{% elif not code %}
|
||||||
<p>
|
<p>
|
||||||
<strong>
|
<strong>
|
||||||
{% trans "We will assign you a personal reference code to use after you completed the order." %}
|
{% trans "We will assign you a personal reference code to use after you completed the order." %}
|
||||||
|
|||||||
Reference in New Issue
Block a user