Fix #957 -- Integrate BezahlCode and GiroCode

This commit is contained in:
Raphael Michel
2018-10-29 12:57:26 +01:00
parent 409e77cf2f
commit 7a945daefc
8 changed files with 77 additions and 12 deletions

View File

@@ -19,6 +19,7 @@ class BankTransferApp(AppConfig):
def ready(self):
from . import signals # NOQA
from . import tasks # NOQA
from .templatetags import commadecimal # NOQA
@cached_property
def compatibility_warnings(self):

View File

@@ -175,6 +175,7 @@ class BankTransfer(BasePaymentProvider):
'event': self.event,
'code': self._code(payment.order),
'order': payment.order,
'amount': payment.amount,
'settings': self.settings,
'details': self.settings.get('bank_details', as_type=LazyI18nString),
}

View File

@@ -1,21 +1,59 @@
{% load i18n %}
{% load l10n %}
{% load commadecimal %}
{% load money %}
<p>{% blocktrans trimmed %}
Please transfer the full amount to the following bank account:
{% endblocktrans %}</p>
<address>
<div class="row">
<div class="{% if settings.bank_details_type == "sepa" %}col-md-6{% else %}col-md-12{% endif %} col-xs-12">
<p>
{% if settings.bank_details_type == "sepa" %}
<strong>{% trans "Account holder" %}:</strong> {{ settings.bank_details_sepa_name }}<br>
<strong>{% trans "IBAN" %}:</strong> {{ settings.bank_details_sepa_iban }}<br>
<strong>{% trans "BIC" %}:</strong> {{ settings.bank_details_sepa_bic }}<br>
<strong>{% trans "Bank" %}:</strong> {{ settings.bank_details_sepa_bank }}<br>
{% endif %}
{% if details %}
{{ details|linebreaksbr }}<br>
{% endif %}
<strong>{% trans "Amount:" %}</strong> {{ amount|money:event.currency }}<br/>
<strong>{% trans "Reference code (important):" %} {{ code }}</strong>
</p>
</div>
{% if settings.bank_details_type == "sepa" %}
<strong>{% trans "Account holder" %}:</strong> {{ settings.bank_details_sepa_name }}<br>
<strong>{% trans "IBAN" %}:</strong> {{ settings.bank_details_sepa_iban }}<br>
<strong>{% trans "BIC" %}:</strong> {{ settings.bank_details_sepa_bic }}<br>
<strong>{% trans "Bank" %}:</strong> {{ settings.bank_details_sepa_bank }}<br>
<div class="col-md-3 col-sm-6 hidden-xs text-center">
BezahlCode<br>
<a href="bank://singlepaymentsepa?name={{ settings.bank_details_sepa_name|urlencode }}&iban={{ settings.bank_details_sepa_iban }}&bic={{ settings.bank_details_sepa_bic }}&amount={{ order.total|commadecimal }}&reason={{ code }}&currency={{ event.currency }}">
<script type="text/plain" data-size="150" data-replace-with-qr>bank://singlepaymentsepa?name={{ settings.bank_details_sepa_name|urlencode }}&iban={{ settings.bank_details_sepa_iban }}&bic={{ settings.bank_details_sepa_bic }}&amount={{ amount|commadecimal }}&reason={{ code }}&currency={{ event.currency }}</script>
</a>
<p>&nbsp;</p>
</div>
<div class="col-md-3 col-sm-6 hidden-xs text-center">
GiroCode / EPC-QR<br>
<script type="text/plain" data-size="150" data-replace-with-qr>BCD
002
2
SCT
{{ settings.bank_details_sepa_bic }}
{{ settings.bank_details_sepa_name }}
{{ settings.bank_details_sepa_iban }}
{{ event.currency }}{{ amount|floatformat:2 }}
{{ code }}
</script>
</div>
<div class="visible-xs-block text-center">
<p>
<a href="bank://singlepaymentsepa?name={{ settings.bank_details_sepa_name|urlencode }}&iban={{ settings.bank_details_sepa_iban }}&bic={{ settings.bank_details_sepa_bic }}&amount={{ order.total|commadecimal }}&reason={{ code }}&currency={{ event.currency }}" class="btn btn-default">
{% trans "Open banking app" %}
</a><br>
<small>{% trans "Requires that the app supports BezahlCode" %}</small>
</p>
</div>
{% endif %}
{% if details %}
{{ details|linebreaksbr }}<br>
{% endif %}
<strong>{% trans "Amount:" %}</strong> {{ order.total|money:event.currency }}<br />
<strong>{% trans "Reference code (important):" %} {{ code }}</strong>
</address>
</div>

View File

@@ -0,0 +1,8 @@
from django import template
register = template.Library()
@register.filter
def commadecimal(value):
return str(value).replace(".", ",")

View File

@@ -24,6 +24,7 @@
<script type="text/javascript" src="{% static "js/jquery.formset.js" %}"></script>
<script type="text/javascript" src="{% static "bootstrap/js/bootstrap.js" %}"></script>
<script type="text/javascript" src="{% static "datetimepicker/bootstrap-datetimepicker.js" %}"></script>
<script type="text/javascript" src="{% static "pretixcontrol/js/jquery.qrcode.min.js" %}"></script>
<script type="text/javascript" src="{% static "pretixpresale/js/ui/main.js" %}"></script>
<script type="text/javascript" src="{% static "pretixbase/js/asynctask.js" %}"></script>
<script type="text/javascript" src="{% static "pretixbase/js/asyncdownload.js" %}"></script>

View File

@@ -374,7 +374,10 @@ var form_handlers = function (el) {
$div.insertBefore($(this));
$div.qrcode(
{
text: $(this).html()
text: $(this).html(),
correctLevel: 0, // M
width: $(this).attr("data-size") ? parseInt($(this).attr("data-size")) : 256,
height: $(this).attr("data-size") ? parseInt($(this).attr("data-size")) : 256,
}
);
});

View File

@@ -91,6 +91,19 @@ var form_handlers = function (el) {
};
$(this).datetimepicker(opts);
});
el.find("script[data-replace-with-qr]").each(function () {
var $div = $("<div>");
$div.insertBefore($(this));
$div.qrcode(
{
text: $(this).html(),
correctLevel: 0, // M
width: $(this).attr("data-size") ? parseInt($(this).attr("data-size")) : 256,
height: $(this).attr("data-size") ? parseInt($(this).attr("data-size")) : 256,
}
);
});
}