mirror of
https://github.com/pretix/pretix.git
synced 2025-12-17 15:52:26 +00:00
Compare commits
21 Commits
cart-use-b
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d0d7670ca5 | ||
|
|
a17a098b15 | ||
|
|
40516ab8e0 | ||
|
|
3ca343fabc | ||
|
|
7304b7f24b | ||
|
|
abaf968103 | ||
|
|
86e2f5a155 | ||
|
|
4c64af02c1 | ||
|
|
11df4398e1 | ||
|
|
2e89fc0a94 | ||
|
|
510c4850a5 | ||
|
|
b13368d614 | ||
|
|
b5cc8b368b | ||
|
|
87c30d0acb | ||
|
|
ffed8b29b1 | ||
|
|
53fbb64225 | ||
|
|
e10ec4074b | ||
|
|
7f2dc77aca | ||
|
|
199a3bf1e7 | ||
|
|
82ca50c7ff | ||
|
|
3437b64947 |
@@ -90,6 +90,7 @@ StaticMapping = namedtuple('StaticMapping', ('id', 'pretix_model', 'external_obj
|
||||
|
||||
class OutboundSyncProvider:
|
||||
max_attempts = 5
|
||||
list_field_joiner = "," # set to None to keep native lists in properties
|
||||
|
||||
def __init__(self, event):
|
||||
self.event = event
|
||||
@@ -281,7 +282,8 @@ class OutboundSyncProvider:
|
||||
'Please update value mapping for field "{field_name}" - option "{val}" not assigned'
|
||||
).format(field_name=key, val=val)])
|
||||
|
||||
val = ",".join(val)
|
||||
if self.list_field_joiner:
|
||||
val = self.list_field_joiner.join(val)
|
||||
return val
|
||||
|
||||
def get_properties(self, inputs: dict, property_mappings: List[dict]):
|
||||
|
||||
@@ -71,15 +71,20 @@ def assign_properties(
|
||||
return out
|
||||
|
||||
|
||||
def _add_to_list(out, field_name, current_value, new_item, list_sep):
|
||||
new_item = str(new_item)
|
||||
def _add_to_list(out, field_name, current_value, new_item_input, list_sep):
|
||||
if list_sep is not None:
|
||||
new_item = new_item.replace(list_sep, "")
|
||||
new_items = str(new_item_input).split(list_sep)
|
||||
current_value = current_value.split(list_sep) if current_value else []
|
||||
elif not isinstance(current_value, (list, tuple)):
|
||||
current_value = [str(current_value)]
|
||||
if new_item not in current_value:
|
||||
new_list = current_value + [new_item]
|
||||
else:
|
||||
new_items = [str(new_item_input)]
|
||||
if not isinstance(current_value, (list, tuple)):
|
||||
current_value = [str(current_value)]
|
||||
|
||||
new_list = list(current_value)
|
||||
for new_item in new_items:
|
||||
if new_item not in current_value:
|
||||
new_list.append(new_item)
|
||||
if new_list != current_value:
|
||||
if list_sep is not None:
|
||||
new_list = list_sep.join(new_list)
|
||||
out[field_name] = new_list
|
||||
|
||||
@@ -541,7 +541,7 @@ class CartManager:
|
||||
else:
|
||||
raise e
|
||||
|
||||
def _extend_expired_positions(self):
|
||||
def extend_expired_positions(self):
|
||||
requires_seat = Exists(
|
||||
SeatCategoryMapping.objects.filter(
|
||||
Q(product=OuterRef('item'))
|
||||
@@ -607,7 +607,7 @@ class CartManager:
|
||||
self._check_item_constraints(op)
|
||||
|
||||
if cp.voucher:
|
||||
self._voucher_use_diff[cp.voucher] += 1
|
||||
self._voucher_use_diff[cp.voucher] += 2
|
||||
|
||||
self._operations.append(op)
|
||||
return err
|
||||
@@ -1449,7 +1449,7 @@ class CartManager:
|
||||
self._check_max_cart_size()
|
||||
|
||||
err = self._delete_out_of_timeframe()
|
||||
err = self._extend_expired_positions() or err
|
||||
err = self.extend_expired_positions() or err
|
||||
err = err or self._check_min_per_voucher()
|
||||
|
||||
self._extend_expiry_of_valid_existing_positions()
|
||||
|
||||
65
src/pretix/base/templatetags/html_time.py
Normal file
65
src/pretix/base/templatetags/html_time.py
Normal file
@@ -0,0 +1,65 @@
|
||||
#
|
||||
# This file is part of pretix (Community Edition).
|
||||
#
|
||||
# Copyright (C) 2014-2020 Raphael Michel and contributors
|
||||
# Copyright (C) 2020-today pretix GmbH and contributors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General
|
||||
# Public License as published by the Free Software Foundation in version 3 of the License.
|
||||
#
|
||||
# ADDITIONAL TERMS APPLY: Pursuant to Section 7 of the GNU Affero General Public License, additional terms are
|
||||
# applicable granting you additional permissions and placing additional restrictions on your usage of this software.
|
||||
# Please refer to the pretix LICENSE file to obtain the full terms applicable to this work. If you did not receive
|
||||
# this file, see <https://pretix.eu/about/en/license>.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
# details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
|
||||
# <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
from datetime import datetime
|
||||
|
||||
from django import template
|
||||
from django.utils.html import format_html
|
||||
from django.utils.timezone import get_current_timezone
|
||||
|
||||
from pretix.base.i18n import LazyExpiresDate
|
||||
from pretix.helpers.templatetags.date_fast import date_fast
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def html_time(value: datetime, dt_format: str = "SHORT_DATE_FORMAT", **kwargs):
|
||||
"""
|
||||
Building a <time datetime='{html-datetime}'>{human-readable datetime}</time> html string,
|
||||
where the html-datetime as well as the human-readable datetime can be set
|
||||
to a value from django's FORMAT_SETTINGS or "format_expires".
|
||||
|
||||
If attr_fmt isn’t provided, it will be set to isoformat.
|
||||
|
||||
Usage example:
|
||||
{% html_time event_start "SHORT_DATETIME_FORMAT" %}
|
||||
or
|
||||
{% html_time event_start "TIME_FORMAT" attr_fmt="H:i" %}
|
||||
"""
|
||||
if value in (None, ''):
|
||||
return ''
|
||||
value = value.astimezone(get_current_timezone())
|
||||
attr_fmt = kwargs["attr_fmt"] if kwargs else None
|
||||
|
||||
try:
|
||||
if not attr_fmt:
|
||||
date_html = value.isoformat()
|
||||
else:
|
||||
date_html = date_fast(value, attr_fmt)
|
||||
|
||||
if dt_format == "format_expires":
|
||||
date_human = LazyExpiresDate(value)
|
||||
else:
|
||||
date_human = date_fast(value, dt_format)
|
||||
return format_html("<time datetime='{}'>{}</time>", date_html, date_human)
|
||||
except AttributeError:
|
||||
return ''
|
||||
@@ -207,6 +207,7 @@ class EventWizardBasicsForm(I18nModelForm):
|
||||
'Sample Conference Center\nHeidelberg, Germany'
|
||||
)
|
||||
self.fields['slug'].widget.prefix = build_absolute_uri(self.organizer, 'presale:organizer.index')
|
||||
self.fields['tax_rate']._required = True # Do not render as optional because it is conditionally required
|
||||
if self.has_subevents:
|
||||
del self.fields['presale_start']
|
||||
del self.fields['presale_end']
|
||||
|
||||
@@ -61,6 +61,10 @@ from pretix.base.models import (
|
||||
SubEvent, SubEventMetaValue, Team, TeamAPIToken, TeamInvite, Voucher,
|
||||
)
|
||||
from pretix.base.signals import register_payment_providers
|
||||
from pretix.base.timeframes import (
|
||||
DateFrameField,
|
||||
resolve_timeframe_to_datetime_start_inclusive_end_exclusive,
|
||||
)
|
||||
from pretix.control.forms import SplitDateTimeField
|
||||
from pretix.control.forms.widgets import Select2, Select2ItemVarQuota
|
||||
from pretix.control.signals import order_search_filter_q
|
||||
@@ -1219,6 +1223,129 @@ class OrderPaymentSearchFilterForm(forms.Form):
|
||||
return qs
|
||||
|
||||
|
||||
class QuestionAnswerFilterForm(forms.Form):
|
||||
STATUS_VARIANTS = [
|
||||
("", _("All orders")),
|
||||
(Order.STATUS_PAID, _("Paid")),
|
||||
(Order.STATUS_PAID + 'v', _("Paid or confirmed")),
|
||||
(Order.STATUS_PENDING, _("Pending")),
|
||||
(Order.STATUS_PENDING + Order.STATUS_PAID, _("Pending or paid")),
|
||||
("o", _("Pending (overdue)")),
|
||||
(Order.STATUS_EXPIRED, _("Expired")),
|
||||
(Order.STATUS_PENDING + Order.STATUS_EXPIRED, _("Pending or expired")),
|
||||
(Order.STATUS_CANCELED, _("Canceled"))
|
||||
]
|
||||
|
||||
status = forms.ChoiceField(
|
||||
choices=STATUS_VARIANTS,
|
||||
required=False,
|
||||
label=_("Order status"),
|
||||
)
|
||||
item = forms.ChoiceField(
|
||||
choices=[],
|
||||
required=False,
|
||||
label=_("Products"),
|
||||
)
|
||||
subevent = forms.ModelChoiceField(
|
||||
queryset=SubEvent.objects.none(),
|
||||
required=False,
|
||||
empty_label=pgettext_lazy('subevent', 'All dates'),
|
||||
label=pgettext_lazy("subevent", "Date"),
|
||||
)
|
||||
date_range = DateFrameField(
|
||||
required=False,
|
||||
include_future_frames=True,
|
||||
label=_('Event date'),
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.event = kwargs.pop('event')
|
||||
super().__init__(*args, **kwargs)
|
||||
self.initial['status'] = Order.STATUS_PENDING + Order.STATUS_PAID
|
||||
|
||||
choices = [('', _('All products'))]
|
||||
for i in self.event.items.prefetch_related('variations').all():
|
||||
variations = list(i.variations.all())
|
||||
if variations:
|
||||
choices.append((str(i.pk), _('{product} – Any variation').format(product=str(i))))
|
||||
for v in variations:
|
||||
choices.append(('%d-%d' % (i.pk, v.pk), '%s – %s' % (str(i), v.value)))
|
||||
else:
|
||||
choices.append((str(i.pk), str(i)))
|
||||
self.fields['item'].choices = choices
|
||||
|
||||
if self.event.has_subevents:
|
||||
self.fields["subevent"].queryset = self.event.subevents.all()
|
||||
self.fields['subevent'].widget = Select2(
|
||||
attrs={
|
||||
'data-model-select2': 'event',
|
||||
'data-select2-url': reverse('control:event.subevents.select2', kwargs={
|
||||
'event': self.event.slug,
|
||||
'organizer': self.event.organizer.slug,
|
||||
}),
|
||||
'data-placeholder': pgettext_lazy('subevent', 'All dates')
|
||||
}
|
||||
)
|
||||
self.fields['subevent'].widget.choices = self.fields['subevent'].choices
|
||||
else:
|
||||
del self.fields['subevent']
|
||||
|
||||
def clean(self):
|
||||
cleaned_data = super().clean()
|
||||
subevent = cleaned_data.get('subevent')
|
||||
date_range = cleaned_data.get('date_range')
|
||||
|
||||
if subevent is not None and date_range is not None:
|
||||
d_start, d_end = resolve_timeframe_to_datetime_start_inclusive_end_exclusive(now(), date_range, self.event.timezone)
|
||||
if (
|
||||
(d_start and not (d_start <= subevent.date_from)) or
|
||||
(d_end and not (subevent.date_from < d_end))
|
||||
):
|
||||
self.add_error('subevent', pgettext_lazy('subevent', "Date doesn't start in selected date range."))
|
||||
return cleaned_data
|
||||
|
||||
def filter_qs(self, opqs):
|
||||
fdata = self.cleaned_data
|
||||
|
||||
subevent = fdata.get('subevent', None)
|
||||
date_range = fdata.get('date_range', None)
|
||||
|
||||
if subevent is not None:
|
||||
opqs = opqs.filter(subevent=subevent)
|
||||
|
||||
if date_range is not None:
|
||||
d_start, d_end = resolve_timeframe_to_datetime_start_inclusive_end_exclusive(now(), date_range, self.event.timezone)
|
||||
opqs = opqs.filter(
|
||||
subevent__date_from__gte=d_start,
|
||||
subevent__date_from__lt=d_end
|
||||
)
|
||||
|
||||
s = fdata.get("status", Order.STATUS_PENDING + Order.STATUS_PAID)
|
||||
if s != "":
|
||||
if s == Order.STATUS_PENDING:
|
||||
opqs = opqs.filter(order__status=Order.STATUS_PENDING,
|
||||
order__expires__lt=now().replace(hour=0, minute=0, second=0))
|
||||
elif s == Order.STATUS_PENDING + Order.STATUS_PAID:
|
||||
opqs = opqs.filter(order__status__in=[Order.STATUS_PENDING, Order.STATUS_PAID])
|
||||
elif s == Order.STATUS_PAID + 'v':
|
||||
opqs = opqs.filter(
|
||||
Q(order__status=Order.STATUS_PAID) |
|
||||
Q(order__status=Order.STATUS_PENDING, order__valid_if_pending=True)
|
||||
)
|
||||
elif s == Order.STATUS_PENDING + Order.STATUS_EXPIRED:
|
||||
opqs = opqs.filter(order__status__in=[Order.STATUS_PENDING, Order.STATUS_EXPIRED])
|
||||
else:
|
||||
opqs = opqs.filter(order__status=s)
|
||||
|
||||
if s not in (Order.STATUS_CANCELED, ""):
|
||||
opqs = opqs.filter(canceled=False)
|
||||
if fdata.get("item", "") != "":
|
||||
i = fdata.get("item", "")
|
||||
opqs = opqs.filter(item_id__in=(i,))
|
||||
|
||||
return opqs
|
||||
|
||||
|
||||
class SubEventFilterForm(FilterForm):
|
||||
orders = {
|
||||
'date_from': 'date_from',
|
||||
|
||||
@@ -20,35 +20,20 @@
|
||||
</div>
|
||||
<form class="panel-body filter-form" action="" method="get">
|
||||
<div class="row">
|
||||
<div class="col-lg-2 col-sm-6 col-xs-6">
|
||||
<select name="status" class="form-control">
|
||||
<option value="" {% if request.GET.status == "" %}selected="selected"{% endif %}>{% trans "All orders" %}</option>
|
||||
<option value="p" {% if request.GET.status == "p" %}selected="selected"{% endif %}>{% trans "Paid" %}</option>
|
||||
<option value="pv" {% if request.GET.status == "pv" %}selected="selected"{% endif %}>{% trans "Paid or confirmed" %}</option>
|
||||
<option value="n" {% if request.GET.status == "n" %}selected="selected"{% endif %}>{% trans "Pending" %}</option>
|
||||
<option value="np" {% if request.GET.status == "np" or "status" not in request.GET %}selected="selected"{% endif %}>{% trans "Pending or paid" %}</option>
|
||||
<option value="o" {% if request.GET.status == "o" %}selected="selected"{% endif %}>{% trans "Pending (overdue)" %}</option>
|
||||
<option value="e" {% if request.GET.status == "e" %}selected="selected"{% endif %}>{% trans "Expired" %}</option>
|
||||
<option value="ne" {% if request.GET.status == "ne" %}selected="selected"{% endif %}>{% trans "Pending or expired" %}</option>
|
||||
<option value="c" {% if request.GET.status == "c" %}selected="selected"{% endif %}>{% trans "Canceled" %}</option>
|
||||
</select>
|
||||
<div class="col-md-2 col-xs-6">
|
||||
{% bootstrap_field form.status %}
|
||||
</div>
|
||||
<div class="col-md-3 col-xs-6">
|
||||
{% bootstrap_field form.item %}
|
||||
</div>
|
||||
{% if has_subevents %}
|
||||
<div class="col-md-3 col-xs-6">
|
||||
{% bootstrap_field form.subevent %}
|
||||
</div>
|
||||
<div class="col-lg-5 col-sm-6 col-xs-6">
|
||||
<select name="item" class="form-control">
|
||||
<option value="">{% trans "All products" %}</option>
|
||||
{% for item in items %}
|
||||
<option value="{{ item.id }}"
|
||||
{% if request.GET.item|add:0 == item.id %}selected="selected"{% endif %}>
|
||||
{{ item.name }}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<div class="col-md-4 col-xs-6">
|
||||
{% bootstrap_field form.date_range %}
|
||||
</div>
|
||||
{% if request.event.has_subevents %}
|
||||
<div class="col-lg-5 col-sm-6 col-xs-6">
|
||||
{% include "pretixcontrol/event/fragment_subevent_choice_simple.html" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<button class="btn btn-primary btn-lg" type="submit">
|
||||
|
||||
@@ -65,7 +65,7 @@ from pretix.api.serializers.item import (
|
||||
)
|
||||
from pretix.base.forms import I18nFormSet
|
||||
from pretix.base.models import (
|
||||
CartPosition, Item, ItemCategory, ItemProgramTime, ItemVariation, Order,
|
||||
CartPosition, Item, ItemCategory, ItemProgramTime, ItemVariation,
|
||||
OrderPosition, Question, QuestionAnswer, QuestionOption, Quota,
|
||||
SeatCategoryMapping, Voucher,
|
||||
)
|
||||
@@ -74,6 +74,7 @@ from pretix.base.models.items import ItemAddOn, ItemBundle, ItemMetaValue
|
||||
from pretix.base.services.quotas import QuotaAvailability
|
||||
from pretix.base.services.tickets import invalidate_cache
|
||||
from pretix.base.signals import quota_availability
|
||||
from pretix.control.forms.filter import QuestionAnswerFilterForm
|
||||
from pretix.control.forms.item import (
|
||||
CategoryForm, ItemAddOnForm, ItemAddOnsFormSet, ItemBundleForm,
|
||||
ItemBundleFormSet, ItemCreateForm, ItemMetaValueForm, ItemProgramTimeForm,
|
||||
@@ -660,46 +661,26 @@ class QuestionMixin:
|
||||
return ctx
|
||||
|
||||
|
||||
class QuestionView(EventPermissionRequiredMixin, QuestionMixin, ChartContainingView, DetailView):
|
||||
class QuestionView(EventPermissionRequiredMixin, ChartContainingView, DetailView):
|
||||
model = Question
|
||||
template_name = 'pretixcontrol/items/question.html'
|
||||
permission = 'can_change_items'
|
||||
template_name_field = 'question'
|
||||
|
||||
@cached_property
|
||||
def filter_form(self):
|
||||
return QuestionAnswerFilterForm(event=self.request.event, data=self.request.GET)
|
||||
|
||||
def get_answer_statistics(self):
|
||||
opqs = OrderPosition.objects.filter(
|
||||
order__event=self.request.event,
|
||||
)
|
||||
if self.filter_form.is_valid():
|
||||
opqs = self.filter_form.filter_qs(opqs)
|
||||
|
||||
qs = QuestionAnswer.objects.filter(
|
||||
question=self.object, orderposition__isnull=False,
|
||||
)
|
||||
|
||||
if self.request.GET.get("subevent", "") != "":
|
||||
opqs = opqs.filter(subevent=self.request.GET["subevent"])
|
||||
|
||||
s = self.request.GET.get("status", "np")
|
||||
if s != "":
|
||||
if s == 'o':
|
||||
opqs = opqs.filter(order__status=Order.STATUS_PENDING,
|
||||
order__expires__lt=now().replace(hour=0, minute=0, second=0))
|
||||
elif s == 'np':
|
||||
opqs = opqs.filter(order__status__in=[Order.STATUS_PENDING, Order.STATUS_PAID])
|
||||
elif s == 'pv':
|
||||
opqs = opqs.filter(
|
||||
Q(order__status=Order.STATUS_PAID) |
|
||||
Q(order__status=Order.STATUS_PENDING, order__valid_if_pending=True)
|
||||
)
|
||||
elif s == 'ne':
|
||||
opqs = opqs.filter(order__status__in=[Order.STATUS_PENDING, Order.STATUS_EXPIRED])
|
||||
else:
|
||||
opqs = opqs.filter(order__status=s)
|
||||
|
||||
if s not in (Order.STATUS_CANCELED, ""):
|
||||
opqs = opqs.filter(canceled=False)
|
||||
if self.request.GET.get("item", "") != "":
|
||||
i = self.request.GET.get("item", "")
|
||||
opqs = opqs.filter(item_id__in=(i,))
|
||||
|
||||
qs = qs.filter(orderposition__in=opqs)
|
||||
op_cnt = opqs.filter(item__in=self.object.items.all()).count()
|
||||
|
||||
@@ -746,9 +727,11 @@ class QuestionView(EventPermissionRequiredMixin, QuestionMixin, ChartContainingV
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
ctx = super().get_context_data()
|
||||
ctx['items'] = self.object.items.all()
|
||||
ctx['items'] = self.object.items.exists()
|
||||
ctx['has_subevents'] = self.request.event.has_subevents
|
||||
stats = self.get_answer_statistics()
|
||||
ctx['stats'], ctx['total'] = stats
|
||||
ctx['form'] = self.filter_form
|
||||
return ctx
|
||||
|
||||
def get_object(self, queryset=None) -> Question:
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-11-27 13:57+0000\n"
|
||||
"PO-Revision-Date: 2025-12-05 18:00+0000\n"
|
||||
"PO-Revision-Date: 2025-12-15 20:00+0000\n"
|
||||
"Last-Translator: sandra r <sandrarial@gestiontickets.online>\n"
|
||||
"Language-Team: Galician <https://translate.pretix.eu/projects/pretix/pretix/"
|
||||
"gl/>\n"
|
||||
@@ -6506,7 +6506,6 @@ msgstr "pendiente"
|
||||
|
||||
#: pretix/base/models/orders.py:203 pretix/base/payment.py:570
|
||||
#: pretix/base/services/invoices.py:581
|
||||
#, fuzzy
|
||||
msgid "paid"
|
||||
msgstr "pagado"
|
||||
|
||||
@@ -6840,9 +6839,8 @@ msgid "This reference will be printed on your invoice for your convenience."
|
||||
msgstr "Esta referencia imprimirase na súa factura para a súa conveniencia."
|
||||
|
||||
#: pretix/base/models/orders.py:3534
|
||||
#, fuzzy
|
||||
msgid "Transmission type"
|
||||
msgstr "Código de transacción"
|
||||
msgstr "Medio de contacto"
|
||||
|
||||
#: pretix/base/models/orders.py:3632
|
||||
#: pretix/plugins/badges/templates/pretixplugins/badges/control_order_position_buttons.html:9
|
||||
@@ -9295,10 +9293,10 @@ msgid "Your exported data exceeded the size limit for scheduled exports."
|
||||
msgstr ""
|
||||
|
||||
#: pretix/base/services/invoices.py:116
|
||||
#, fuzzy, python-brace-format
|
||||
#, python-brace-format
|
||||
msgctxt "invoice"
|
||||
msgid "Please complete your payment before {expire_date}."
|
||||
msgstr "Por favor complete su pago antes de {expire_date}."
|
||||
msgstr "Complete o seu pago antes de {expire_date}."
|
||||
|
||||
#: pretix/base/services/invoices.py:128
|
||||
#, python-brace-format
|
||||
@@ -21609,9 +21607,8 @@ msgid "Placed order"
|
||||
msgstr "Pedido realizado"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/event/mail.html:93
|
||||
#, fuzzy
|
||||
msgid "Paid order"
|
||||
msgstr "Orden de pago"
|
||||
msgstr "Pedido pagado"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/event/mail.html:96
|
||||
msgid "Free order"
|
||||
@@ -24216,9 +24213,8 @@ msgstr "Sí, aprobar la orden"
|
||||
#: pretix/control/templates/pretixcontrol/order/index.html:166
|
||||
#: pretix/presale/templates/pretixpresale/event/order.html:483
|
||||
#: pretix/presale/templates/pretixpresale/event/order_cancel.html:7
|
||||
#, fuzzy
|
||||
msgid "Cancel order"
|
||||
msgstr "Cancelar orden"
|
||||
msgstr "Cancelar a orde"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/order/cancel.html:12
|
||||
#: pretix/control/templates/pretixcontrol/order/deny.html:11
|
||||
@@ -24978,9 +24974,8 @@ msgstr "Cambiar"
|
||||
#: pretix/control/templates/pretixcontrol/order/index.html:1034
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:90
|
||||
#: pretix/presale/templates/pretixpresale/event/order.html:318
|
||||
#, fuzzy
|
||||
msgid "ZIP code and city"
|
||||
msgstr "Código postal y ciudad"
|
||||
msgstr "Código postal e cidade"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/order/index.html:1047
|
||||
#, fuzzy
|
||||
@@ -25437,9 +25432,8 @@ msgid "Preview refund amount"
|
||||
msgstr "Reembolso"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/orders/cancel.html:88
|
||||
#, fuzzy
|
||||
msgid "Cancel all orders"
|
||||
msgstr "Cancelar orden"
|
||||
msgstr "Cancelar todos os pedidos"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/orders/cancel_confirm.html:13
|
||||
#, fuzzy
|
||||
@@ -33254,9 +33248,8 @@ msgid "Payment reversed."
|
||||
msgstr "Pago anulado."
|
||||
|
||||
#: pretix/plugins/paypal2/signals.py:62
|
||||
#, fuzzy
|
||||
msgid "Payment pending."
|
||||
msgstr "Pago pendiente."
|
||||
msgstr "Pago pendente."
|
||||
|
||||
#: pretix/plugins/paypal2/signals.py:63
|
||||
#, fuzzy
|
||||
@@ -33398,9 +33391,8 @@ msgstr "Por favor, inténtalo de nuevo."
|
||||
|
||||
#: pretix/plugins/paypal2/templates/pretixplugins/paypal2/pay.html:29
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:57
|
||||
#, fuzzy
|
||||
msgid "Please select how you want to pay."
|
||||
msgstr "Por favor, seleccione cómo desea pagar."
|
||||
msgstr "Por favor, seleccione cómo desexa pagar."
|
||||
|
||||
#: pretix/plugins/paypal2/templates/pretixplugins/paypal2/pending.html:10
|
||||
#, fuzzy
|
||||
@@ -34550,7 +34542,7 @@ msgstr ""
|
||||
|
||||
#: pretix/plugins/stripe/payment.py:337
|
||||
msgid "Credit card payments"
|
||||
msgstr "Pagos con cartón de crédito"
|
||||
msgstr "Pagos con tarxeta de crédito"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py:342 pretix/plugins/stripe/payment.py:1527
|
||||
msgid "iDEAL"
|
||||
@@ -35103,18 +35095,12 @@ msgstr "Titular de la cuenta"
|
||||
#: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_form_simple.html:7
|
||||
#: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_form_simple_messaging_noform.html:13
|
||||
#: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_form_simple_noform.html:5
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "After you submitted your order, we will redirect you to the payment "
|
||||
#| "service provider to complete your payment. You will then be redirected "
|
||||
#| "back here to get your tickets."
|
||||
msgid ""
|
||||
"After you submitted your order, we will redirect you to the payment service "
|
||||
"provider to complete your payment. You will then be redirected back here."
|
||||
msgstr ""
|
||||
"Despois de que enviase o seu pedido, redirixirémoslle ao provedor de "
|
||||
"servizos de pago para completar o seu pago. A continuación, redirixiráselle "
|
||||
"de novo aquí para obter as súas entradas."
|
||||
"Despois de enviar o teu pedido, redirixirémoste ao provedor de servizos de "
|
||||
"pagamento para completar o pago. Despois, serás redirixido de novo aquí."
|
||||
|
||||
#: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_form_card.html:9
|
||||
msgid ""
|
||||
@@ -35490,9 +35476,8 @@ msgid "Download tickets (PDF)"
|
||||
msgstr "Descargar tickets (PDF)"
|
||||
|
||||
#: pretix/plugins/ticketoutputpdf/ticketoutput.py:66
|
||||
#, fuzzy
|
||||
msgid "Download ticket (PDF)"
|
||||
msgstr "Descargar ticket"
|
||||
msgstr "Descargar ticket (PDF)"
|
||||
|
||||
#: pretix/plugins/ticketoutputpdf/views.py:62
|
||||
#, fuzzy
|
||||
@@ -35631,7 +35616,6 @@ msgstr ""
|
||||
"selecciona un método de pago."
|
||||
|
||||
#: pretix/presale/checkoutflow.py:1393 pretix/presale/views/order.py:679
|
||||
#, fuzzy
|
||||
msgid "Please select a payment method."
|
||||
msgstr "Por favor seleccione un método de pago."
|
||||
|
||||
@@ -36092,9 +36076,8 @@ msgid "Cart expired"
|
||||
msgstr "O carro da compra caducou"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_base.html:36
|
||||
#, fuzzy
|
||||
msgid "Show full cart"
|
||||
msgstr "Mostrar información"
|
||||
msgstr "Mostrar o carro completo"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_base.html:52
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:86
|
||||
@@ -36186,9 +36169,8 @@ msgstr ""
|
||||
"un enlace que puede utilizar para pagar."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:215
|
||||
#, fuzzy
|
||||
msgid "Place binding order"
|
||||
msgstr "Colocar orden de compra"
|
||||
msgstr "Realizar orde"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:217
|
||||
msgid "Submit registration"
|
||||
@@ -36787,9 +36769,9 @@ msgstr[0] "Unha entrada"
|
||||
msgstr[1] "%(num)s entradas"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:485
|
||||
#, fuzzy, python-format
|
||||
#, python-format
|
||||
msgid "incl. %(tax_sum)s taxes"
|
||||
msgstr "incl. %(tax_sum)s impuestos"
|
||||
msgstr "incl. %(tax_sum)s IVE"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:505
|
||||
#, python-format
|
||||
@@ -37112,9 +37094,8 @@ msgid "Confirmed"
|
||||
msgstr "Confirmado"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_order_status.html:15
|
||||
#, fuzzy
|
||||
msgid "Payment pending"
|
||||
msgstr "Pago pendiente"
|
||||
msgstr "Pago pendente"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:21
|
||||
#, fuzzy
|
||||
@@ -37138,11 +37119,11 @@ msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:131
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:288
|
||||
#, fuzzy, python-format
|
||||
#, python-format
|
||||
msgid "%(amount)s× in your cart"
|
||||
msgid_plural "%(amount)s× in your cart"
|
||||
msgstr[0] "%(count)s elementos"
|
||||
msgstr[1] "%(count)s elementos"
|
||||
msgstr[0] "%(amount)s× no teu carro"
|
||||
msgstr[1] "%(amount)s× no teu carro"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:209
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:374
|
||||
@@ -37373,9 +37354,9 @@ msgstr "O seu pedido foi procesado con éxito! Ver abaixo para máis detalles."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/order.html:19
|
||||
#: pretix/presale/templates/pretixpresale/event/order.html:50
|
||||
#, fuzzy
|
||||
msgid "We successfully received your payment. See below for details."
|
||||
msgstr "Hemos recibido con éxito su pago. Ver abajo para más detalles."
|
||||
msgstr ""
|
||||
"Recibimos o teu pagamento correctamente. Consulta os detalles a continuación."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/order.html:35
|
||||
#, fuzzy
|
||||
@@ -37396,24 +37377,18 @@ msgstr ""
|
||||
"organizador del evento antes de que pueda pagar y completar este pedido."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/order.html:43
|
||||
#, fuzzy
|
||||
msgid "Please note that we still await your payment to complete the process."
|
||||
msgstr "Tenga en cuenta que aún esperamos su pago para completar el proceso."
|
||||
msgstr "Ten en conta que aínda agardamos o teu pago para completar o proceso."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/order.html:55
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Please bookmark or save the link to this exact page if you want to access "
|
||||
#| "your order later. We also sent you an email containing the link to the "
|
||||
#| "address you specified."
|
||||
msgid ""
|
||||
"Please bookmark or save the link to this exact page if you want to access "
|
||||
"your order later. We also sent you an email to the address you specified "
|
||||
"containing the link to this page."
|
||||
msgstr ""
|
||||
"Por favor, marque ou garde a ligazón a esta páxina exacta se desexa acceder "
|
||||
"ao seu pedido máis tarde. Tamén lle enviamos un correo electrónico coa "
|
||||
"ligazón ao enderezo que vostede especificou."
|
||||
"Por favor, garda a ligazón a esta páxina exacta se queres acceder ao teu "
|
||||
"pedido máis tarde. Tamén che enviamos un correo electrónico ao enderezo que "
|
||||
"especificaches coa ligazón a esta páxina."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/order.html:59
|
||||
#, fuzzy
|
||||
@@ -37435,9 +37410,9 @@ msgid "View in backend"
|
||||
msgstr "Ver en el backend"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/order.html:91
|
||||
#, fuzzy, python-format
|
||||
#, python-format
|
||||
msgid "A payment of %(total)s is still pending for this order."
|
||||
msgstr "Un pago de %(total)s todavía está pendiente para esta orden."
|
||||
msgstr "Un pago de %(total)s aínda está pendente para esta orde."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/order.html:96
|
||||
#, fuzzy, python-format
|
||||
@@ -37546,10 +37521,9 @@ msgid "Change your order"
|
||||
msgstr "Cancelar orden"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/order.html:358
|
||||
#, fuzzy
|
||||
msgctxt "action"
|
||||
msgid "Cancel your order"
|
||||
msgstr "Cancelar orden"
|
||||
msgstr "Cancela o teu pedido"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/order.html:366
|
||||
msgid ""
|
||||
@@ -37665,9 +37639,9 @@ msgid "Request cancellation: %(code)s"
|
||||
msgstr "Pedido cancelado: %(code)s"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/order_cancel.html:15
|
||||
#, fuzzy, python-format
|
||||
#, python-format
|
||||
msgid "Cancel order: %(code)s"
|
||||
msgstr "Cancelar orden: %(code)s"
|
||||
msgstr "Cancelar orde: %(code)s"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/order_cancel.html:38
|
||||
msgid ""
|
||||
@@ -37753,14 +37727,12 @@ msgid "Modify order: %(code)s"
|
||||
msgstr "Modificar pedido: %(code)s"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/order_modify.html:18
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Modifying your invoice address will not automatically generate a new "
|
||||
"invoice. Please contact us if you need a new invoice."
|
||||
msgstr ""
|
||||
"La modificación de la dirección de facturación no generará automáticamente "
|
||||
"una nueva factura. Póngase en contacto con nosotros si necesita una nueva "
|
||||
"factura."
|
||||
"A modificación do enderezo de facturación non xerará automaticamente unha "
|
||||
"nova factura. Póñase en contacto connosco se precisa unha nova factura."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/order_modify.html:88
|
||||
#: pretix/presale/templates/pretixpresale/event/position_modify.html:49
|
||||
@@ -38609,10 +38581,8 @@ msgid "Your cart is now empty."
|
||||
msgstr "Baleirouse o seu pedido."
|
||||
|
||||
#: pretix/presale/views/cart.py:569
|
||||
#, fuzzy
|
||||
#| msgid "Your cart has been updated."
|
||||
msgid "Your cart timeout was extended."
|
||||
msgstr "O seu pedido actualizouse."
|
||||
msgstr "Ampliouse o tempo de espera do teu carro."
|
||||
|
||||
#: pretix/presale/views/cart.py:584
|
||||
msgid "The products have been successfully added to your cart."
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-11-27 13:57+0000\n"
|
||||
"PO-Revision-Date: 2025-12-09 07:09+0000\n"
|
||||
"PO-Revision-Date: 2025-12-11 01:00+0000\n"
|
||||
"Last-Translator: Renne Rocha <renne@rocha.dev.br>\n"
|
||||
"Language-Team: Portuguese (Brazil) <https://translate.pretix.eu/projects/"
|
||||
"pretix/pretix/pt_BR/>\n"
|
||||
@@ -816,28 +816,22 @@ msgstr ""
|
||||
"confirme primeiro o endereço de email na sua conta."
|
||||
|
||||
#: pretix/base/datasync/datasync.py:263
|
||||
#, fuzzy, python-brace-format
|
||||
#| msgid ""
|
||||
#| "Field \"{field_name}\" is not valid for {available_inputs}. Please check "
|
||||
#| "your {provider_name} settings."
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Field \"{field_name}\" does not exist. Please check your {provider_name} "
|
||||
"settings."
|
||||
msgstr ""
|
||||
"O campo \"{field_name}\" não é válido para {available_inputs}. Verifique as "
|
||||
"configurações de {provider_name}."
|
||||
"O campo \"{field_name}\" não existe. Por favor, verifique as configurações "
|
||||
"de {provider_name}."
|
||||
|
||||
#: pretix/base/datasync/datasync.py:270
|
||||
#, fuzzy, python-brace-format
|
||||
#| msgid ""
|
||||
#| "Field \"{field_name}\" is not valid for {available_inputs}. Please check "
|
||||
#| "your {provider_name} settings."
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Field \"{field_name}\" requires {required_input}, but only got "
|
||||
"{available_inputs}. Please check your {provider_name} settings."
|
||||
msgstr ""
|
||||
"O campo \"{field_name}\" não é válido para {available_inputs}. Verifique as "
|
||||
"configurações de {provider_name}."
|
||||
"Campo \"{field_name}\" exige {required_input}, mas apenas {available_inputs} "
|
||||
"foram fornecidas. Por favor, verifique as configurações de {provider_name}."
|
||||
|
||||
#: pretix/base/datasync/datasync.py:281
|
||||
#, python-brace-format
|
||||
@@ -2137,7 +2131,7 @@ msgstr "Comprar este produto requer aprovação"
|
||||
|
||||
#: pretix/base/exporters/items.py:85 pretix/base/models/items.py:627
|
||||
msgid "Only sell this product as part of a bundle"
|
||||
msgstr "Disponível apenas como parte de um pacote"
|
||||
msgstr "Venda este produto apenas como parte de um pacote"
|
||||
|
||||
#: pretix/base/exporters/items.py:86 pretix/base/models/items.py:634
|
||||
msgid "Allow product to be canceled or changed"
|
||||
@@ -2839,7 +2833,7 @@ msgstr "Código de Status"
|
||||
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_assign.html:25
|
||||
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:13
|
||||
msgid "Amount"
|
||||
msgstr "Valor"
|
||||
msgstr "Quantidade"
|
||||
|
||||
#: pretix/base/exporters/orderlist.py:1098
|
||||
#: pretix/control/templates/pretixcontrol/boxoffice/payment.html:102
|
||||
@@ -3398,6 +3392,8 @@ msgid ""
|
||||
"If you enter an invoice address, you also need to select an invoice "
|
||||
"transmission method."
|
||||
msgstr ""
|
||||
"Se você informar um endereço para a fatura, você também deverá selecionar um "
|
||||
"método para transmissão da fatura."
|
||||
|
||||
#: pretix/base/forms/questions.py:1385
|
||||
msgid ""
|
||||
@@ -3412,6 +3408,8 @@ msgid ""
|
||||
"The selected type of invoice transmission requires a field that is currently "
|
||||
"not available, please reach out to the organizer."
|
||||
msgstr ""
|
||||
"O tipo de transmissão de fatura selecionado exige um campo que não está "
|
||||
"disponível atualmente. Por favor, entre em contato com a organização."
|
||||
|
||||
#: pretix/base/forms/questions.py:1398
|
||||
msgid "This field is required for the selected type of invoice transmission."
|
||||
@@ -13205,13 +13203,13 @@ msgid "Contact:"
|
||||
msgstr "Contato:"
|
||||
|
||||
#: pretix/base/templates/pretixbase/email/order_details.html:54
|
||||
#, fuzzy, python-format
|
||||
#| msgid ""
|
||||
#| "You are receiving this email because you placed an order for {event}."
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You are receiving this email because you placed an order for "
|
||||
"<strong>%(event)s</strong>."
|
||||
msgstr "Você está recebendo este email porque fez um pedido para {event}."
|
||||
msgstr ""
|
||||
"Você está recebendo este email por ter realizado um pedido para <strong>%"
|
||||
"(event)s</strong>."
|
||||
|
||||
#: pretix/base/templates/pretixbase/email/order_details.html:93
|
||||
#: pretix/control/templates/pretixcontrol/organizers/customer.html:23
|
||||
@@ -17345,13 +17343,9 @@ msgid "Your account has been disabled."
|
||||
msgstr "Sua conta foi desativada."
|
||||
|
||||
#: pretix/control/logdisplay.py:672
|
||||
#, fuzzy, python-brace-format
|
||||
#| msgid ""
|
||||
#| "The email address has been changed from \"{old_email}\" to \"{new_email}"
|
||||
#| "\"."
|
||||
#, python-brace-format
|
||||
msgid "Your email address has been changed from {old_email} to {email}."
|
||||
msgstr ""
|
||||
"O endereço de e-mail foi alterado de \"{old_email}\" para \"{new_email}\"."
|
||||
msgstr "Seu endereço de email foi modificado de {old_email} para {email}."
|
||||
|
||||
#: pretix/control/logdisplay.py:673
|
||||
#, python-brace-format
|
||||
@@ -33732,12 +33726,11 @@ msgstr "Selecione como deseja pagar o saldo restante:"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:82
|
||||
#: pretix/presale/templates/pretixpresale/event/order_pay_change.html:45
|
||||
#, fuzzy, python-format
|
||||
#| msgid "%(num)s available"
|
||||
#, python-format
|
||||
msgid "(%(count)s available)"
|
||||
msgid_plural "(%(count)s available)"
|
||||
msgstr[0] "%(num)s disponíveis"
|
||||
msgstr[1] "%(num)s disponíveis"
|
||||
msgstr[0] "(%(count)s disponível)"
|
||||
msgstr[1] "(%(count)s disponíveis)"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:101
|
||||
msgid "This sales channel does not provide support for test mode."
|
||||
@@ -34516,13 +34509,11 @@ msgstr "Mostrar imagem em tamanho real de %(item)s"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:131
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:288
|
||||
#, fuzzy, python-format
|
||||
#| msgid "%(count)s event"
|
||||
#| msgid_plural "%(count)s events"
|
||||
#, python-format
|
||||
msgid "%(amount)s× in your cart"
|
||||
msgid_plural "%(amount)s× in your cart"
|
||||
msgstr[0] "%(count)s evento"
|
||||
msgstr[1] "%(count)s events"
|
||||
msgstr[0] "%(amount)s× no seu carrinho"
|
||||
msgstr[1] "%(amount)s× no seu carrinho"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:209
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:374
|
||||
@@ -35608,7 +35599,7 @@ msgid ""
|
||||
"This is a self-hosted installation of <a %(a_attr)s>pretix, your free and "
|
||||
"open source ticket sales software</a>."
|
||||
msgstr ""
|
||||
"Está é uma instalação self-hosted do <a %(a_attr)s>pretix, seu aplicativo "
|
||||
"Esta é uma instalação auto-hospedada do <a %(a_attr)s>pretix, seu aplicativo "
|
||||
"livre e de código aberto para venda de ingressos.</a>."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/index.html:15
|
||||
@@ -35704,10 +35695,9 @@ msgid "Issued on %(date)s"
|
||||
msgstr "Leitura negada: %(date)s"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:38
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Expired since"
|
||||
#, python-format
|
||||
msgid "Expired since %(date)s"
|
||||
msgstr "Expirado desde"
|
||||
msgstr "Expirado desde %(date)s"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:46
|
||||
#, python-format
|
||||
@@ -35715,10 +35705,8 @@ msgid "Valid until %(date)s"
|
||||
msgstr "Válido até %(date)s"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:66
|
||||
#, fuzzy
|
||||
#| msgid "Remaining balance"
|
||||
msgid "Remaining value:"
|
||||
msgstr "Saldo restante"
|
||||
msgstr "Valor restante:"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:76
|
||||
#, fuzzy
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-11-27 13:57+0000\n"
|
||||
"PO-Revision-Date: 2025-12-02 16:47+0000\n"
|
||||
"PO-Revision-Date: 2025-12-11 01:00+0000\n"
|
||||
"Last-Translator: Ana Rute Pacheco Vivas <rute.vivas@om.org>\n"
|
||||
"Language-Team: Portuguese (Portugal) <https://translate.pretix.eu/projects/"
|
||||
"pretix/pretix/pt_PT/>\n"
|
||||
@@ -3522,8 +3522,7 @@ msgstr "Participante individual"
|
||||
|
||||
#: pretix/base/invoicing/email.py:50
|
||||
msgid "Email invoice directly to accounting department"
|
||||
msgstr ""
|
||||
"Envie a fatura diretamente por e-mail para o departamento de contabilidade"
|
||||
msgstr "Envia a fatura diretamente por e-mail para o departamento financeiro"
|
||||
|
||||
#: pretix/base/invoicing/email.py:51
|
||||
msgid ""
|
||||
@@ -6702,10 +6701,8 @@ msgstr ""
|
||||
"tua fatura, caso assim o desejes."
|
||||
|
||||
#: pretix/base/models/orders.py:3534
|
||||
#, fuzzy
|
||||
#| msgid "Transaction time"
|
||||
msgid "Transmission type"
|
||||
msgstr "Hora de transação"
|
||||
msgstr "Modo de comunicação"
|
||||
|
||||
#: pretix/base/models/orders.py:3632
|
||||
#: pretix/plugins/badges/templates/pretixplugins/badges/control_order_position_buttons.html:9
|
||||
@@ -20186,8 +20183,8 @@ msgid ""
|
||||
"email address is owned by you. Please enter the verification code below:"
|
||||
msgstr ""
|
||||
"Enviamos um e-mail para %(recp)s com um código de confirmação para verificar "
|
||||
"se este endereço de e-mail é da sua propriedade. Por favor, insira o código "
|
||||
"de verificação abaixo:"
|
||||
"se este endereço de e-mail te pertence. Por favor, indica o código de "
|
||||
"verificação abaixo:"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/email_setup_simple.html:63
|
||||
msgid "Verification code"
|
||||
@@ -27454,6 +27451,9 @@ msgid ""
|
||||
"We will send a confirmation code to your new email address, which you need "
|
||||
"to enter in the next step to confirm the email address is correct."
|
||||
msgstr ""
|
||||
"Enviaremos um código de confirmação para o teu novo endereço de e-mail, que "
|
||||
"precisas de inserir na próxima etapa para confirmar que o endereço de e-mail "
|
||||
"está correto."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/user/change_password.html:4
|
||||
#: pretix/control/templates/pretixcontrol/user/change_password.html:8
|
||||
@@ -27567,6 +27567,9 @@ msgid ""
|
||||
"confirm your email address using a confirmation code we will send to your "
|
||||
"email address."
|
||||
msgstr ""
|
||||
"O teu endereço de e-mail ainda não foi confirmado. Para proteger a tua "
|
||||
"conta, confirma o teu endereço de e-mail usando um código de confirmação que "
|
||||
"te enviaremos."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/user/settings.html:18
|
||||
#, fuzzy
|
||||
@@ -28878,7 +28881,7 @@ msgstr ""
|
||||
|
||||
#: pretix/control/views/mailsetup.py:216
|
||||
msgid "The verification code was incorrect, please try again."
|
||||
msgstr "O código de verificação estava incorreto, tente novamente."
|
||||
msgstr "O código de verificação estava incorreto, tenta novamente."
|
||||
|
||||
#: pretix/control/views/mailsetup.py:221
|
||||
msgid "Sender address verification"
|
||||
@@ -29937,6 +29940,8 @@ msgid ""
|
||||
"Please enter the confirmation code we sent to your email address "
|
||||
"<strong>{email}</strong>."
|
||||
msgstr ""
|
||||
"Indica o código de confirmação que enviámos para o teu endereço de e-mail "
|
||||
"<strong>{email}</strong>."
|
||||
|
||||
#: pretix/control/views/user.py:947
|
||||
#, fuzzy
|
||||
@@ -34939,7 +34944,7 @@ msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:9
|
||||
msgid "Before we continue, we need you to answer some questions."
|
||||
msgstr "Antes de continuarmos, precisamos que respondas a algumas perguntas."
|
||||
msgstr "Antes de continuares, precisamos que respondas a algumas perguntas."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:49
|
||||
msgid "Auto-fill with address"
|
||||
@@ -35374,10 +35379,8 @@ msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:514
|
||||
#: pretix/presale/templates/pretixpresale/fragment_modals.html:48
|
||||
#, fuzzy
|
||||
#| msgid "Event description"
|
||||
msgid "Renew reservation"
|
||||
msgstr "Descrição do Evento"
|
||||
msgstr "Renovar a reserva"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:526
|
||||
#, fuzzy
|
||||
@@ -35962,8 +35965,8 @@ msgid ""
|
||||
"Please note that we still await approval by the event organizer before you "
|
||||
"can pay and complete this order."
|
||||
msgstr ""
|
||||
"Por favor, note que a aprovação ainda aguardam pelo organizador do evento "
|
||||
"antes que pode pagar e concluir este pedido."
|
||||
"Por favor, nota que ainda estamos à espera da aprovação do organizador do "
|
||||
"evento antes de poderes pagar e concluir esta encomenda."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/order.html:43
|
||||
msgid "Please note that we still await your payment to complete the process."
|
||||
@@ -35972,19 +35975,14 @@ msgstr ""
|
||||
"processo."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/order.html:55
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Please bookmark or save the link to this exact page if you want to access "
|
||||
#| "your order later. We also sent you an email containing the link to the "
|
||||
#| "address you specified."
|
||||
msgid ""
|
||||
"Please bookmark or save the link to this exact page if you want to access "
|
||||
"your order later. We also sent you an email to the address you specified "
|
||||
"containing the link to this page."
|
||||
msgstr ""
|
||||
"Por favor, guarda o link para esta página, caso queiras aceder ao teu pedido "
|
||||
"mais tarde. Também iremos enviar-te um email com o link para o endereço que "
|
||||
"indicaste."
|
||||
"Por favor, guarda o link desta página, se quiseres aceder à tua encomenda "
|
||||
"mais tarde. Também enviámos um e-mail para o endereço que indicaste com o "
|
||||
"link para esta página."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/order.html:59
|
||||
#, fuzzy
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-11-20 10:37+0000\n"
|
||||
"PO-Revision-Date: 2025-11-11 21:00+0000\n"
|
||||
"PO-Revision-Date: 2025-12-10 15:49+0000\n"
|
||||
"Last-Translator: Ana Rute Pacheco Vivas <rute.vivas@om.org>\n"
|
||||
"Language-Team: Portuguese (Portugal) <https://translate.pretix.eu/projects/"
|
||||
"pretix/pretix-js/pt_PT/>\n"
|
||||
@@ -798,7 +798,7 @@ msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:90
|
||||
msgid "Renew reservation"
|
||||
msgstr ""
|
||||
msgstr "Renovar a reserva"
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/main.js:194
|
||||
msgid "The organizer keeps %(currency)s %(amount)s"
|
||||
|
||||
@@ -8,34 +8,36 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-11-27 13:57+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
"PO-Revision-Date: 2025-12-14 00:00+0000\n"
|
||||
"Last-Translator: Lachlan Struthers <lachlan.struthers@om.org>\n"
|
||||
"Language-Team: Albanian <https://translate.pretix.eu/projects/pretix/pretix/"
|
||||
"sq/>\n"
|
||||
"Language: sq\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#: pretix/_base_settings.py:87
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
msgstr "Anglisht"
|
||||
|
||||
#: pretix/_base_settings.py:88
|
||||
msgid "German"
|
||||
msgstr ""
|
||||
msgstr "Gjermanisht"
|
||||
|
||||
#: pretix/_base_settings.py:89
|
||||
msgid "German (informal)"
|
||||
msgstr ""
|
||||
msgstr "Gjermanisht (joformale)"
|
||||
|
||||
#: pretix/_base_settings.py:90
|
||||
msgid "Arabic"
|
||||
msgstr ""
|
||||
msgstr "Arabisht"
|
||||
|
||||
#: pretix/_base_settings.py:91
|
||||
msgid "Basque"
|
||||
msgstr ""
|
||||
msgstr "Baskisht"
|
||||
|
||||
#: pretix/_base_settings.py:92
|
||||
msgid "Catalan"
|
||||
@@ -450,7 +452,7 @@ msgstr ""
|
||||
#: pretix/control/templates/pretixcontrol/event/mail.html:114
|
||||
#: pretix/control/views/orders.py:1569
|
||||
msgid "Order canceled"
|
||||
msgstr ""
|
||||
msgstr "Porositja ësthë anuluar"
|
||||
|
||||
#: pretix/api/webhooks.py:278 pretix/base/notifications.py:257
|
||||
msgid "Order reactivated"
|
||||
@@ -1407,7 +1409,7 @@ msgstr ""
|
||||
#: pretix/plugins/checkinlists/exporters.py:827
|
||||
#: pretix/plugins/checkinlists/exporters.py:828
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
msgstr "Po"
|
||||
|
||||
#: pretix/base/exporters/customers.py:100
|
||||
#: pretix/base/exporters/customers.py:101 pretix/base/exporters/events.py:83
|
||||
@@ -1431,7 +1433,7 @@ msgstr ""
|
||||
#: pretix/plugins/checkinlists/exporters.py:827
|
||||
#: pretix/plugins/checkinlists/exporters.py:828
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
msgstr "Jo"
|
||||
|
||||
#: pretix/base/exporters/dekodi.py:42 pretix/base/exporters/invoices.py:66
|
||||
msgctxt "export_category"
|
||||
@@ -2445,7 +2447,7 @@ msgstr ""
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:12
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:91
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
msgstr "Produkti"
|
||||
|
||||
#: pretix/base/exporters/orderlist.py:619 pretix/base/models/vouchers.py:315
|
||||
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:5
|
||||
@@ -2783,7 +2785,7 @@ msgstr ""
|
||||
#: pretix/control/templates/pretixcontrol/event/cancel.html:20
|
||||
#: pretix/control/views/item.py:971
|
||||
msgid "Paid orders"
|
||||
msgstr ""
|
||||
msgstr "Porositje të paguara"
|
||||
|
||||
#: pretix/base/exporters/orderlist.py:1155 pretix/control/views/item.py:976
|
||||
msgid "Pending orders"
|
||||
@@ -2952,7 +2954,7 @@ msgstr ""
|
||||
#: pretix/plugins/reports/accountingreport.py:105
|
||||
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html:67
|
||||
msgid "All"
|
||||
msgstr ""
|
||||
msgstr "Të gjitha"
|
||||
|
||||
#: pretix/base/exporters/orderlist.py:1329 pretix/control/forms/filter.py:1450
|
||||
msgid "Live"
|
||||
@@ -3879,7 +3881,7 @@ msgstr ""
|
||||
#: pretix/base/modelimport_vouchers.py:205 pretix/base/models/items.py:1256
|
||||
#: pretix/base/models/vouchers.py:266 pretix/base/models/waitinglist.py:99
|
||||
msgid "Product variation"
|
||||
msgstr ""
|
||||
msgstr "Varianti i produktit"
|
||||
|
||||
#: pretix/base/modelimport_orders.py:161
|
||||
msgid "The variation can be specified by its internal ID or full name."
|
||||
@@ -4278,19 +4280,19 @@ msgstr ""
|
||||
|
||||
#: pretix/base/models/checkin.py:336
|
||||
msgid "Entry"
|
||||
msgstr ""
|
||||
msgstr "Hyrje"
|
||||
|
||||
#: pretix/base/models/checkin.py:337
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
msgstr "Dalje"
|
||||
|
||||
#: pretix/base/models/checkin.py:356
|
||||
msgid "Unknown ticket"
|
||||
msgstr ""
|
||||
msgstr "Biletë e panjohur"
|
||||
|
||||
#: pretix/base/models/checkin.py:357
|
||||
msgid "Ticket not paid"
|
||||
msgstr ""
|
||||
msgstr "Bileta nuk është paguar"
|
||||
|
||||
#: pretix/base/models/checkin.py:358
|
||||
msgid "Forbidden by custom rule"
|
||||
@@ -4298,23 +4300,23 @@ msgstr ""
|
||||
|
||||
#: pretix/base/models/checkin.py:359
|
||||
msgid "Ticket code revoked/changed"
|
||||
msgstr ""
|
||||
msgstr "Kodi i biletës është anuluar/ndryshuar"
|
||||
|
||||
#: pretix/base/models/checkin.py:360
|
||||
msgid "Information required"
|
||||
msgstr ""
|
||||
msgstr "Informacion i domosdoshëm"
|
||||
|
||||
#: pretix/base/models/checkin.py:361
|
||||
msgid "Ticket already used"
|
||||
msgstr ""
|
||||
msgstr "Bileta tashmë është përdorur"
|
||||
|
||||
#: pretix/base/models/checkin.py:362
|
||||
msgid "Ticket type not allowed here"
|
||||
msgstr ""
|
||||
msgstr "Ky lloj bilete nuk lejohet këtu"
|
||||
|
||||
#: pretix/base/models/checkin.py:363
|
||||
msgid "Ticket code is ambiguous on list"
|
||||
msgstr ""
|
||||
msgstr "Kodi i biletës është e paqartë në listë"
|
||||
|
||||
#: pretix/base/models/checkin.py:364
|
||||
msgid "Server error"
|
||||
@@ -4322,15 +4324,15 @@ msgstr ""
|
||||
|
||||
#: pretix/base/models/checkin.py:365
|
||||
msgid "Ticket blocked"
|
||||
msgstr ""
|
||||
msgstr "Bileta u bllokua"
|
||||
|
||||
#: pretix/base/models/checkin.py:366
|
||||
msgid "Order not approved"
|
||||
msgstr ""
|
||||
msgstr "Porositje nuk është aprovuar"
|
||||
|
||||
#: pretix/base/models/checkin.py:367
|
||||
msgid "Ticket not valid at this time"
|
||||
msgstr ""
|
||||
msgstr "Bileta nuk është e vlefshme për momentin"
|
||||
|
||||
#: pretix/base/models/checkin.py:368
|
||||
msgid "Check-in annulled"
|
||||
@@ -4460,7 +4462,7 @@ msgstr ""
|
||||
#: pretix/control/templates/pretixcontrol/organizers/gates.html:16
|
||||
#: pretix/plugins/checkinlists/exporters.py:769
|
||||
msgid "Gate"
|
||||
msgstr ""
|
||||
msgstr "Porta"
|
||||
|
||||
#: pretix/base/models/devices.py:131
|
||||
#: pretix/control/templates/pretixcontrol/organizers/devices.html:83
|
||||
@@ -5928,7 +5930,7 @@ msgstr ""
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:34
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:44
|
||||
msgid "Canceled"
|
||||
msgstr ""
|
||||
msgstr "e anuluar"
|
||||
|
||||
#: pretix/base/models/memberships.py:134
|
||||
#: pretix/control/templates/pretixcontrol/organizers/customer.html:117
|
||||
@@ -6671,7 +6673,7 @@ msgstr ""
|
||||
|
||||
#: pretix/base/models/vouchers.py:204 pretix/control/views/vouchers.py:120
|
||||
msgid "Redeemed"
|
||||
msgstr ""
|
||||
msgstr "e përdorur"
|
||||
|
||||
#: pretix/base/models/vouchers.py:209
|
||||
msgid ""
|
||||
@@ -7432,7 +7434,7 @@ msgstr ""
|
||||
#: pretix/base/pdf.py:278 pretix/base/pdf.py:307
|
||||
#: pretix/base/services/checkin.py:362 pretix/control/forms/filter.py:1271
|
||||
msgid "Friday"
|
||||
msgstr ""
|
||||
msgstr "E Premte"
|
||||
|
||||
#: pretix/base/pdf.py:282
|
||||
msgid "Event end date and time"
|
||||
@@ -7704,15 +7706,15 @@ msgstr ""
|
||||
|
||||
#: pretix/base/reldate.py:38
|
||||
msgid "Event start"
|
||||
msgstr ""
|
||||
msgstr "Fillimi i eventit"
|
||||
|
||||
#: pretix/base/reldate.py:39
|
||||
msgid "Event end"
|
||||
msgstr ""
|
||||
msgstr "Mbarimi i eventit"
|
||||
|
||||
#: pretix/base/reldate.py:40
|
||||
msgid "Event admission"
|
||||
msgstr ""
|
||||
msgstr "Hyrja në event"
|
||||
|
||||
#: pretix/base/reldate.py:41
|
||||
msgid "Presale start"
|
||||
@@ -8130,27 +8132,27 @@ msgstr ""
|
||||
|
||||
#: pretix/base/services/checkin.py:358 pretix/control/forms/filter.py:1267
|
||||
msgid "Monday"
|
||||
msgstr ""
|
||||
msgstr "E Hënë"
|
||||
|
||||
#: pretix/base/services/checkin.py:359 pretix/control/forms/filter.py:1268
|
||||
msgid "Tuesday"
|
||||
msgstr ""
|
||||
msgstr "E Martë"
|
||||
|
||||
#: pretix/base/services/checkin.py:360 pretix/control/forms/filter.py:1269
|
||||
msgid "Wednesday"
|
||||
msgstr ""
|
||||
msgstr "E Mërkurë"
|
||||
|
||||
#: pretix/base/services/checkin.py:361 pretix/control/forms/filter.py:1270
|
||||
msgid "Thursday"
|
||||
msgstr ""
|
||||
msgstr "E Enjte"
|
||||
|
||||
#: pretix/base/services/checkin.py:363 pretix/control/forms/filter.py:1272
|
||||
msgid "Saturday"
|
||||
msgstr ""
|
||||
msgstr "E Shtunë"
|
||||
|
||||
#: pretix/base/services/checkin.py:364 pretix/control/forms/filter.py:1273
|
||||
msgid "Sunday"
|
||||
msgstr ""
|
||||
msgstr "E Diel"
|
||||
|
||||
#: pretix/base/services/checkin.py:368
|
||||
#, python-brace-format
|
||||
@@ -12889,7 +12891,7 @@ msgstr ""
|
||||
#: pretix/plugins/reports/exporters.py:391
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_order_status.html:7
|
||||
msgid "Approval pending"
|
||||
msgstr ""
|
||||
msgstr "Duke pritur aprovimin"
|
||||
|
||||
#: pretix/control/forms/filter.py:247
|
||||
msgid "Follow-up configured"
|
||||
@@ -13042,7 +13044,7 @@ msgstr ""
|
||||
#: pretix/control/forms/filter.py:2052 pretix/control/forms/filter.py:2054
|
||||
#: pretix/control/forms/filter.py:2620 pretix/control/forms/filter.py:2622
|
||||
msgid "Search query"
|
||||
msgstr ""
|
||||
msgstr "Kërkim"
|
||||
|
||||
#: pretix/control/forms/filter.py:1528 pretix/control/forms/filter.py:1600
|
||||
#: pretix/control/templates/pretixcontrol/organizers/customer.html:47
|
||||
@@ -13157,7 +13159,7 @@ msgstr ""
|
||||
#: pretix/control/forms/filter.py:2117
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:51
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
msgstr "e vlefshme"
|
||||
|
||||
#: pretix/control/forms/filter.py:2118
|
||||
msgid "Unredeemed"
|
||||
@@ -16427,7 +16429,7 @@ msgstr ""
|
||||
#: pretix/presale/templates/pretixpresale/event/order_pay_change.html:75
|
||||
#: pretix/presale/templates/pretixpresale/event/position_change.html:29
|
||||
msgid "Continue"
|
||||
msgstr ""
|
||||
msgstr "Vazhdoni"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html:8
|
||||
msgid "Authorize an application"
|
||||
@@ -16675,7 +16677,7 @@ msgstr ""
|
||||
#: pretix/presale/templates/pretixpresale/postmessage.html:27
|
||||
#: pretix/presale/templates/pretixpresale/waiting.html:42
|
||||
msgid "If this takes longer than a few minutes, please contact us."
|
||||
msgstr ""
|
||||
msgstr "Nëse kalon më shumë se disa minuta, ju lutemi t'na kontaktoni."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/boxoffice/payment.html:4
|
||||
#: pretix/control/templates/pretixcontrol/organizers/devices.html:71
|
||||
@@ -16905,7 +16907,7 @@ msgstr[1] ""
|
||||
#: pretix/presale/templates/pretixpresale/event/position_change.html:24
|
||||
#: pretix/presale/templates/pretixpresale/event/position_modify.html:44
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "Anuloni"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/checkin/bulk_revert_confirm.html:27
|
||||
#: pretix/control/templates/pretixcontrol/checkin/list_delete.html:24
|
||||
@@ -17019,7 +17021,7 @@ msgstr ""
|
||||
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:14
|
||||
#: pretix/plugins/checkinlists/exporters.py:770
|
||||
msgid "Result"
|
||||
msgstr ""
|
||||
msgstr "Rezultati"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/checkin/checkins.html:78
|
||||
#: pretix/control/templates/pretixcontrol/order/index.html:437
|
||||
@@ -17363,7 +17365,7 @@ msgstr ""
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/checkin/simulator.html:68
|
||||
msgid "Additional information required"
|
||||
msgstr ""
|
||||
msgstr "Më shumë informacione kërkohen"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/checkin/simulator.html:70
|
||||
msgid ""
|
||||
@@ -18272,7 +18274,7 @@ msgstr ""
|
||||
#: pretix/control/templates/pretixcontrol/organizers/device_logs.html:50
|
||||
#: pretix/control/templates/pretixcontrol/organizers/logs.html:80
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "S'ka rezultate"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/event/mail.html:7
|
||||
#: pretix/control/templates/pretixcontrol/organizers/mail.html:11
|
||||
@@ -18477,7 +18479,7 @@ msgstr ""
|
||||
#: pretix/control/templates/pretixcontrol/event/plugins.html:34
|
||||
#: pretix/control/templates/pretixcontrol/organizers/plugins.html:34
|
||||
msgid "Search results"
|
||||
msgstr ""
|
||||
msgstr "Rezultatet e kërkimit"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/event/plugins.html:56
|
||||
#: pretix/control/templates/pretixcontrol/organizers/plugins.html:56
|
||||
@@ -19324,51 +19326,51 @@ msgstr ""
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/global_sysreport.html:16
|
||||
msgid "January"
|
||||
msgstr ""
|
||||
msgstr "Janar"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/global_sysreport.html:17
|
||||
msgid "February"
|
||||
msgstr ""
|
||||
msgstr "Shkurt"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/global_sysreport.html:18
|
||||
msgid "March"
|
||||
msgstr ""
|
||||
msgstr "Mars"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/global_sysreport.html:19
|
||||
msgid "April"
|
||||
msgstr ""
|
||||
msgstr "Prill"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/global_sysreport.html:20
|
||||
msgid "May"
|
||||
msgstr ""
|
||||
msgstr "Maj"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/global_sysreport.html:21
|
||||
msgid "June"
|
||||
msgstr ""
|
||||
msgstr "Qershor"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/global_sysreport.html:22
|
||||
msgid "July"
|
||||
msgstr ""
|
||||
msgstr "Korrik"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/global_sysreport.html:23
|
||||
msgid "August"
|
||||
msgstr ""
|
||||
msgstr "Gusht"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/global_sysreport.html:24
|
||||
msgid "September"
|
||||
msgstr ""
|
||||
msgstr "Shtator"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/global_sysreport.html:25
|
||||
msgid "October"
|
||||
msgstr ""
|
||||
msgstr "Tetor"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/global_sysreport.html:26
|
||||
msgid "November"
|
||||
msgstr ""
|
||||
msgstr "Nëntor"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/global_sysreport.html:27
|
||||
msgid "December"
|
||||
msgstr ""
|
||||
msgstr "Dhjetor"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/global_sysreport.html:32
|
||||
msgid "Generate report"
|
||||
@@ -19743,7 +19745,7 @@ msgstr ""
|
||||
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:355
|
||||
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:364
|
||||
msgid "minutes"
|
||||
msgstr ""
|
||||
msgstr "minuta"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/item/index.html:229
|
||||
msgid "hours"
|
||||
@@ -20096,7 +20098,7 @@ msgstr ""
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/items/question.html:91
|
||||
msgid "Count"
|
||||
msgstr ""
|
||||
msgstr "Sasia"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/items/question.html:92
|
||||
#, python-format
|
||||
@@ -21014,7 +21016,7 @@ msgstr ""
|
||||
#: pretix/plugins/reports/exporters.py:969
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:469
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
msgstr "Shuma totale"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/order/index.html:789
|
||||
#: pretix/presale/templates/pretixpresale/event/order.html:210
|
||||
@@ -23096,7 +23098,7 @@ msgstr ""
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/pdf/index.html:52
|
||||
msgid "Text box"
|
||||
msgstr ""
|
||||
msgstr "Kutia teksti"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/pdf/index.html:59
|
||||
msgid "QR Code"
|
||||
@@ -23135,7 +23137,7 @@ msgstr ""
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/pdf/index.html:107
|
||||
msgid "Duplicate"
|
||||
msgstr ""
|
||||
msgstr "Kopjoni"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/pdf/index.html:117
|
||||
msgid "Undo"
|
||||
@@ -27329,7 +27331,7 @@ msgstr ""
|
||||
|
||||
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:80
|
||||
msgid "Comment:"
|
||||
msgstr ""
|
||||
msgstr "Komente:"
|
||||
|
||||
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:98
|
||||
msgid "No order code detected"
|
||||
@@ -27572,7 +27574,7 @@ msgstr ""
|
||||
#: pretix/plugins/paypal2/payment.py:1097
|
||||
#: pretix/plugins/paypal2/payment.py:1098 pretix/plugins/stripe/payment.py:1816
|
||||
msgid "PayPal"
|
||||
msgstr ""
|
||||
msgstr "PayPal"
|
||||
|
||||
#: pretix/plugins/paypal/apps.py:53
|
||||
msgid ""
|
||||
@@ -29012,8 +29014,9 @@ msgid "Credit card payments"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/plugins/stripe/payment.py:342 pretix/plugins/stripe/payment.py:1527
|
||||
#, fuzzy
|
||||
msgid "iDEAL"
|
||||
msgstr ""
|
||||
msgstr "iDEAL"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py:344 pretix/plugins/stripe/payment.py:352
|
||||
#: pretix/plugins/stripe/payment.py:360 pretix/plugins/stripe/payment.py:395
|
||||
@@ -29032,12 +29035,14 @@ msgid "Alipay"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/plugins/stripe/payment.py:358 pretix/plugins/stripe/payment.py:1564
|
||||
#, fuzzy
|
||||
msgid "Bancontact"
|
||||
msgstr ""
|
||||
msgstr "Bancontact"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py:366
|
||||
#, fuzzy
|
||||
msgid "SEPA Direct Debit"
|
||||
msgstr ""
|
||||
msgstr "Debit direkt me SEPA"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py:369
|
||||
msgid ""
|
||||
@@ -29072,12 +29077,14 @@ msgid "Multibanco"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/plugins/stripe/payment.py:409 pretix/plugins/stripe/payment.py:1730
|
||||
#, fuzzy
|
||||
msgid "Przelewy24"
|
||||
msgstr ""
|
||||
msgstr "Przelewy24"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py:417 pretix/plugins/stripe/payment.py:1769
|
||||
#, fuzzy
|
||||
msgid "WeChat Pay"
|
||||
msgstr ""
|
||||
msgstr "WeChat Pay"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py:433 pretix/plugins/stripe/payment.py:1824
|
||||
msgid "Swish"
|
||||
@@ -29221,8 +29228,9 @@ msgid "giropay via Stripe"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/plugins/stripe/payment.py:1480
|
||||
#, fuzzy
|
||||
msgid "giropay"
|
||||
msgstr ""
|
||||
msgstr "giropay"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py:1483
|
||||
msgid ""
|
||||
@@ -29757,7 +29765,7 @@ msgstr ""
|
||||
|
||||
#: pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/edit.html:23
|
||||
msgid "Ticket design"
|
||||
msgstr ""
|
||||
msgstr "Dizajni i biletës"
|
||||
|
||||
#: pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/edit.html:27
|
||||
msgid "You can modify the design after you saved this page."
|
||||
@@ -30320,7 +30328,7 @@ msgstr ""
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:27
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:18
|
||||
msgid "Cart expired"
|
||||
msgstr ""
|
||||
msgstr "Shporta juaj u skadua"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_base.html:36
|
||||
msgid "Show full cart"
|
||||
@@ -30928,11 +30936,13 @@ msgid ""
|
||||
"The items in your cart are no longer reserved for you. You can still "
|
||||
"complete your order as long as they’re available."
|
||||
msgstr ""
|
||||
"Sendet në shportën tuaj nuk janë të rezervuar më për ju. Ju mund t'a "
|
||||
"përmbushni porosinë tuaj derisa janë ende të disponueshëm."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:514
|
||||
#: pretix/presale/templates/pretixpresale/fragment_modals.html:48
|
||||
msgid "Renew reservation"
|
||||
msgstr ""
|
||||
msgstr "Rivendosni rezervimin"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:526
|
||||
msgid "Reservation renewed"
|
||||
@@ -32444,7 +32454,7 @@ msgstr ""
|
||||
#: pretix/presale/templates/pretixpresale/postmessage.html:21
|
||||
#: pretix/presale/templates/pretixpresale/waiting.html:22
|
||||
msgid "We are processing your request …"
|
||||
msgstr ""
|
||||
msgstr "Ne po e proçesojmë kërkesën tuaj …"
|
||||
|
||||
#: pretix/presale/utils.py:271 pretix/presale/utils.py:417
|
||||
#: pretix/presale/utils.py:418
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
71
src/pretix/plugins/banktransfer/camtimport.py
Normal file
71
src/pretix/plugins/banktransfer/camtimport.py
Normal file
@@ -0,0 +1,71 @@
|
||||
#
|
||||
# This file is part of pretix (Community Edition).
|
||||
#
|
||||
# Copyright (C) 2014-2020 Raphael Michel and contributors
|
||||
# Copyright (C) 2020-today pretix GmbH and contributors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General
|
||||
# Public License as published by the Free Software Foundation in version 3 of the License.
|
||||
#
|
||||
# ADDITIONAL TERMS APPLY: Pursuant to Section 7 of the GNU Affero General Public License, additional terms are
|
||||
# applicable granting you additional permissions and placing additional restrictions on your usage of this software.
|
||||
# Please refer to the pretix LICENSE file to obtain the full terms applicable to this work. If you did not receive
|
||||
# this file, see <https://pretix.eu/about/en/license>.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
# details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
|
||||
# <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from lxml import etree
|
||||
|
||||
|
||||
def parse(file):
|
||||
# Spec: https://www.ebics.de/de/datenformate
|
||||
data = file.read()
|
||||
root = etree.fromstring(data)
|
||||
|
||||
statements = root.findall("{*}BkToCstmrStmt/{*}Stmt")
|
||||
if not statements:
|
||||
raise ValueError(_("Empty file or unknown format."))
|
||||
|
||||
def get_text(findall_result):
|
||||
if len(findall_result) == 1:
|
||||
return findall_result[0].text
|
||||
return ""
|
||||
|
||||
rows = []
|
||||
for stmt in statements:
|
||||
for ntry in stmt.findall("{*}Ntry"):
|
||||
minus = ""
|
||||
otherparty = "Dbtr"
|
||||
if ntry.findall("{*}CdtDbtInd")[0].text == "DBIT":
|
||||
otherparty = "Cdtr"
|
||||
minus = "-"
|
||||
reference_parts = [
|
||||
get_text(ntry.findall("{*}NtryDtls/{*}TxDtls/{*}RmtInf/{*}Ustrd")),
|
||||
get_text(ntry.findall("{*}NtryDtls/{*}TxDtls/{*}Refs/{*}EndToEndId")),
|
||||
get_text(ntry.findall("{*}NtryDtls/{*}TxDtls/{*}Refs/{*}InstructionIdentification")),
|
||||
]
|
||||
if ntry.findall("{*}NtryDtls/{*}Btch"):
|
||||
# Batch booking, we do not support splitting yet
|
||||
reference_parts.insert(0, get_text(ntry.findall("{*}NtryDtls/{*}Btch/{*}PmtInfId")))
|
||||
row = {
|
||||
'amount': minus + ntry.findall("{*}Amt")[0].text,
|
||||
'date': get_text(ntry.findall("{*}BookgDt/{*}Dt")),
|
||||
'reference': "\n".join(filter(lambda a: bool(a) and a != "NOTPROVIDED", reference_parts))
|
||||
}
|
||||
if ext_id := get_text(ntry.findall("{*}AcctSvcrRef")):
|
||||
row['external_id'] = ext_id
|
||||
if iban := get_text(ntry.findall(f"{{*}}NtryDtls/{{*}}TxDtls/{{*}}RltdPties/{{*}}{otherparty}Acct/{{*}}Id/{{*}}IBAN")):
|
||||
row['iban'] = iban
|
||||
if bic := get_text(ntry.findall(f"{{*}}NtryDtls/{{*}}TxDtls/{{*}}RltdAgts/{{*}}{otherparty}Agt/{{*}}FinInstnId/{{*}}BICFI")):
|
||||
row['bic'] = bic
|
||||
if payer := get_text(ntry.findall(f"{{*}}NtryDtls/{{*}}TxDtls/{{*}}RltdPties/{{*}}{otherparty}/{{*}}Nm")):
|
||||
row['payer'] = payer
|
||||
rows.append(row)
|
||||
|
||||
return rows
|
||||
@@ -66,7 +66,7 @@ from pretix.control.permissions import (
|
||||
)
|
||||
from pretix.control.views.organizer import OrganizerDetailViewMixin
|
||||
from pretix.helpers.json import CustomJSONEncoder
|
||||
from pretix.plugins.banktransfer import csvimport, mt940import
|
||||
from pretix.plugins.banktransfer import camtimport, csvimport, mt940import
|
||||
from pretix.plugins.banktransfer.models import (
|
||||
BankImportJob, BankTransaction, RefundExport,
|
||||
)
|
||||
@@ -419,6 +419,9 @@ class ImportView(ListView):
|
||||
):
|
||||
return self.process_mt940()
|
||||
|
||||
elif 'file' in self.request.FILES and '.xml' in self.request.FILES.get('file').name.lower():
|
||||
return self.process_camt()
|
||||
|
||||
elif self.request.FILES.get('file') is None:
|
||||
messages.error(self.request, _('You must choose a file to import.'))
|
||||
return self.redirect_back()
|
||||
@@ -432,6 +435,14 @@ class ImportView(ListView):
|
||||
def settings(self):
|
||||
return SettingsSandbox('payment', 'banktransfer', getattr(self.request, 'event', self.request.organizer))
|
||||
|
||||
def process_camt(self):
|
||||
try:
|
||||
return self.start_processing(camtimport.parse(self.request.FILES.get('file')))
|
||||
except:
|
||||
logger.exception('Failed to import CAMT file')
|
||||
messages.error(self.request, _('We were unable to process your input.'))
|
||||
return self.redirect_back()
|
||||
|
||||
def process_mt940(self):
|
||||
try:
|
||||
return self.start_processing(mt940import.parse(self.request.FILES.get('file')))
|
||||
|
||||
@@ -137,7 +137,7 @@ logger = logging.getLogger('pretix.plugins.stripe')
|
||||
# Real-time payments
|
||||
# - Swish: ✓
|
||||
# - PayNow: ✗
|
||||
# - PromptPay: ✗
|
||||
# - PromptPay: ✓
|
||||
# - Pix: ✗
|
||||
#
|
||||
# Vouchers
|
||||
@@ -440,6 +440,14 @@ class StripeSettingsHolder(BasePaymentProvider):
|
||||
'before they work properly.'),
|
||||
required=False,
|
||||
)),
|
||||
('method_promptpay',
|
||||
forms.BooleanField(
|
||||
label='PromptPay',
|
||||
disabled=self.event.currency != 'THB',
|
||||
help_text=_('Some payment methods might need to be enabled in the settings of your Stripe account '
|
||||
'before they work properly.'),
|
||||
required=False,
|
||||
)),
|
||||
('method_swish',
|
||||
forms.BooleanField(
|
||||
label=_('Swish'),
|
||||
@@ -1880,6 +1888,30 @@ class StripeSwish(StripeRedirectMethod):
|
||||
}
|
||||
|
||||
|
||||
class StripePromptPay(StripeRedirectMethod):
|
||||
identifier = 'stripe_promptpay'
|
||||
verbose_name = _('PromptPay via Stripe')
|
||||
public_name = 'PromptPay'
|
||||
method = 'promptpay'
|
||||
confirmation_method = 'automatic'
|
||||
explanation = _(
|
||||
'This payment method is available to PromptPay users in Thailand. Please have your app ready.'
|
||||
)
|
||||
|
||||
def is_allowed(self, request: HttpRequest, total: Decimal=None) -> bool:
|
||||
return super().is_allowed(request, total) and request.event.currency == "THB"
|
||||
|
||||
def _payment_intent_kwargs(self, request, payment):
|
||||
return {
|
||||
"payment_method_data": {
|
||||
"type": "promptpay",
|
||||
"billing_details": {
|
||||
"email": payment.order.email,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
class StripeTwint(StripeRedirectMethod):
|
||||
identifier = 'stripe_twint'
|
||||
verbose_name = _('TWINT via Stripe')
|
||||
|
||||
@@ -46,15 +46,17 @@ def register_payment_provider(sender, **kwargs):
|
||||
from .payment import (
|
||||
StripeAffirm, StripeAlipay, StripeBancontact, StripeCC, StripeEPS,
|
||||
StripeGiropay, StripeIdeal, StripeKlarna, StripeMobilePay,
|
||||
StripeMultibanco, StripePayByBank, StripePayPal, StripePrzelewy24,
|
||||
StripeRevolutPay, StripeSEPADirectDebit, StripeSettingsHolder,
|
||||
StripeSofort, StripeSwish, StripeTwint, StripeWeChatPay,
|
||||
StripeMultibanco, StripePayByBank, StripePayPal, StripePromptPay,
|
||||
StripePrzelewy24, StripeRevolutPay, StripeSEPADirectDebit,
|
||||
StripeSettingsHolder, StripeSofort, StripeSwish, StripeTwint,
|
||||
StripeWeChatPay,
|
||||
)
|
||||
|
||||
return [
|
||||
StripeSettingsHolder, StripeCC, StripeGiropay, StripeIdeal, StripeAlipay, StripeBancontact,
|
||||
StripeSofort, StripeEPS, StripeMultibanco, StripePrzelewy24, StripeRevolutPay, StripeWeChatPay,
|
||||
StripeSEPADirectDebit, StripeAffirm, StripeKlarna, StripePayByBank, StripePayPal, StripeSwish, StripeTwint, StripeMobilePay
|
||||
StripeSofort, StripeEPS, StripeMultibanco, StripePayByBank, StripePrzelewy24, StripePromptPay, StripeRevolutPay,
|
||||
StripeWeChatPay, StripeSEPADirectDebit, StripeAffirm, StripeKlarna, StripePayPal, StripeSwish,
|
||||
StripeTwint, StripeMobilePay
|
||||
]
|
||||
|
||||
|
||||
|
||||
@@ -79,3 +79,9 @@
|
||||
.vcenter {
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.stripe-qr-code {
|
||||
max-width: 80%;
|
||||
width: 200px;
|
||||
height: auto;
|
||||
}
|
||||
@@ -325,6 +325,8 @@ $(function () {
|
||||
} else if ($("#stripe_payment_intent_next_action_redirect_url").length) {
|
||||
let payment_intent_next_action_redirect_url = $.trim($("#stripe_payment_intent_next_action_redirect_url").html());
|
||||
pretixstripe.handlePaymentRedirectAction(payment_intent_next_action_redirect_url);
|
||||
} else if ($.trim($("#stripe_payment_intent_action_type").html()) === "promptpay_display_qr_code") {
|
||||
waitingDialog.hide();
|
||||
} else if ($.trim($("#stripe_payment_intent_action_type").html()) === "wechat_pay_display_qr_code") {
|
||||
let payment_intent_client_secret = $.trim($("#stripe_payment_intent_client_secret").html());
|
||||
pretixstripe.handleWechatAction(payment_intent_client_secret);
|
||||
|
||||
@@ -27,9 +27,21 @@
|
||||
<div class="stripe-errors sr-only panel-body">
|
||||
|
||||
</div>
|
||||
<div class="panel-body embed-responsive embed-responsive-sca" id="scacontainer">
|
||||
|
||||
</div>
|
||||
{% if payment_intent_promptpay_image_url %}
|
||||
<div class="panel-body">
|
||||
<p>{% blocktrans trimmed %}
|
||||
Please scan the QR code below to complete your PromptPay payment.
|
||||
Once you have completed your payment, you can refresh this page.
|
||||
{% endblocktrans %}</p>
|
||||
<div class="text-center">
|
||||
<img src="{{ payment_intent_promptpay_image_url }}" alt="{% trans 'PromptPay QR code' %}"
|
||||
class="stripe-qr-code" />
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="panel-body embed-responsive embed-responsive-sca" id="scacontainer">
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="row checkout-button-row">
|
||||
<div class="col-md-4">
|
||||
|
||||
@@ -613,7 +613,7 @@ class ScaView(StripeOrderView, View):
|
||||
|
||||
if intent.status == 'requires_action' and intent.next_action.type in [
|
||||
'use_stripe_sdk', 'redirect_to_url', 'alipay_handle_redirect', 'wechat_pay_display_qr_code',
|
||||
'swish_handle_redirect_or_display_qr_code', 'multibanco_display_details',
|
||||
'swish_handle_redirect_or_display_qr_code', 'multibanco_display_details', 'promptpay_display_qr_code',
|
||||
]:
|
||||
ctx = {
|
||||
'order': self.order,
|
||||
@@ -631,6 +631,8 @@ class ScaView(StripeOrderView, View):
|
||||
elif intent.next_action.type == 'multibanco_display_details':
|
||||
ctx['payment_intent_next_action_redirect_url'] = intent.next_action.multibanco_display_details['hosted_voucher_url']
|
||||
ctx['payment_intent_redirect_action_handling'] = 'iframe'
|
||||
elif intent.next_action.type == 'promptpay_display_qr_code':
|
||||
ctx['payment_intent_promptpay_image_url'] = intent.next_action.promptpay_display_qr_code['image_url_svg']
|
||||
|
||||
r = render(request, 'pretixplugins/stripe/sca.html', ctx)
|
||||
r._csp_ignore = True
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
{% load html_time %}
|
||||
{% load i18n %}
|
||||
{% load icon %}
|
||||
{% load eventurl %}
|
||||
@@ -21,20 +22,18 @@
|
||||
{% if event.settings.show_times %}
|
||||
<br>
|
||||
<span data-time="{{ ev.date_from.isoformat }}" data-timezone="{{ request.event.timezone }}">
|
||||
{% with time_human=ev.date_from|date:"TIME_FORMAT" time_24=ev.date_from|time:"H:i" %}
|
||||
{% blocktrans trimmed with time='<time datetime="'|add:time_24|add:'">'|add:time_human|add:"</time>"|safe %}
|
||||
Begin: {{ time }}
|
||||
{% endblocktrans %}
|
||||
{% endwith %}
|
||||
{% html_time ev.date_from "TIME_FORMAT" attr_fmt="H:i" as time%}
|
||||
{% blocktrans with time=time %}
|
||||
Begin: {{ time }}
|
||||
{% endblocktrans %}
|
||||
</span>
|
||||
{% if event.settings.show_date_to and ev.date_to %}
|
||||
<br>
|
||||
<span data-time="{{ ev.date_to.isoformat }}" data-timezone="{{ request.event.timezone }}">
|
||||
{% with time_human=ev.date_to|date:"TIME_FORMAT" time_24=ev.date_to|time:"H:i" %}
|
||||
{% blocktrans trimmed with time='<time datetime="'|add:time_24|add:'">'|add:time_human|add:"</time>"|safe %}
|
||||
End: {{ time }}
|
||||
{% endblocktrans %}
|
||||
{% endwith %}
|
||||
{% html_time ev.date_to "TIME_FORMAT" attr_fmt="H:i" as time%}
|
||||
{% blocktrans with time=time %}
|
||||
End: {{ time }}
|
||||
{% endblocktrans %}
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
@@ -42,19 +41,17 @@
|
||||
<br>
|
||||
{% if ev.date_admission|date:"SHORT_DATE_FORMAT" == ev.date_from|date:"SHORT_DATE_FORMAT" %}
|
||||
<span data-time="{{ ev.date_admission.isoformat }}" data-timezone="{{ request.event.timezone }}">
|
||||
{% with time_human=ev.date_admission|date:"TIME_FORMAT" time_24=ev.date_admission|time:"H:i" %}
|
||||
{% blocktrans trimmed with time='<time datetime="'|add:time_24|add:'">'|add:time_human|add:"</time>"|safe %}
|
||||
Admission: {{ time }}
|
||||
{% endblocktrans %}
|
||||
{% endwith %}
|
||||
{% html_time ev.date_admission "TIME_FORMAT" attr_fmt="H:i" as time%}
|
||||
{% blocktrans trimmed with time=time %}
|
||||
Admission: {{ time }}
|
||||
{% endblocktrans %}
|
||||
</span>
|
||||
{% else %}
|
||||
<span data-time="{{ ev.date_admission.isoformat }}" data-timezone="{{ request.event.timezone }}">
|
||||
{% with datetime_human=ev.date_admission|date:"SHORT_DATETIME_FORMAT" datetime_iso=ev.date_admission|time:"Y-m-d H:i" %}
|
||||
{% blocktrans trimmed with datetime='<time datetime="'|add:datetime_iso|add:'">'|add:datetime_human|add:"</time>"|safe %}
|
||||
Admission: {{ datetime }}
|
||||
{% endblocktrans %}
|
||||
{% endwith %}
|
||||
{% html_time ev.date_admission "SHORT_DATETIME_FORMAT" attr_fmt="Y-m-d H:i" as datetime%}
|
||||
{% blocktrans trimmed with datetime=datetime %}
|
||||
Admission: {{ datetime }}
|
||||
{% endblocktrans %}
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{% extends "pretixpresale/event/base.html" %}
|
||||
{% load html_time %}
|
||||
{% load i18n %}
|
||||
{% load bootstrap3 %}
|
||||
{% load eventsignal %}
|
||||
@@ -92,11 +93,10 @@
|
||||
A payment of {{ total }} is still pending for this order.
|
||||
{% endblocktrans %}</strong>
|
||||
<strong>
|
||||
{% with date_human=order|format_expires|safe date_iso=order.expires|date:"c" %}
|
||||
{% blocktrans trimmed with date='<time datetime="'|add:date_iso|add:'">'|add:date_human|add:"</time>"|safe %}
|
||||
{% html_time order.expires "format_expires" as date %}
|
||||
{% blocktrans trimmed with date=date %}
|
||||
Please complete your payment before {{ date }}
|
||||
{% endblocktrans %}
|
||||
{% endwith %}
|
||||
</strong>
|
||||
</p>
|
||||
{% if last_payment %}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
{% load html_time %}
|
||||
{% load i18n %}
|
||||
{% load date_fast %}
|
||||
{% load calendarhead %}
|
||||
@@ -55,7 +56,7 @@
|
||||
running
|
||||
{% elif event.event.presale_has_ended %}
|
||||
over
|
||||
{% elif event.event.settings.presale_start_show_date and event.event.presale_start %}
|
||||
{% elif event.event.settings.presale_start_show_date and event.event.effective_presale_start %}
|
||||
soon
|
||||
{% else %}
|
||||
soon
|
||||
@@ -108,13 +109,12 @@
|
||||
<span class="fa fa-ticket" aria-hidden="true"></span> {% trans "Book now" %}
|
||||
{% elif event.event.presale_has_ended %}
|
||||
{% trans "Sale over" %}
|
||||
{% elif event.event.settings.presale_start_show_date and event.event.presale_start %}
|
||||
{% elif event.event.settings.presale_start_show_date and event.event.effective_presale_start %}
|
||||
<span class="fa fa-ticket" aria-hidden="true"></span>
|
||||
{% with date_human=event.event.presale_start|date_fast:"SHORT_DATE_FORMAT" date_iso=event.event.presale_start|date_fast:"c" %}
|
||||
{% blocktrans with start_date="<time datetime='"|add:date_iso|add:"'>"|add:date_human|add:"</time>"|safe %}
|
||||
{% html_time event.event.effective_presale_start "SHORT_DATE_FORMAT" as start_date %}
|
||||
{% blocktrans with start_date=start_date %}
|
||||
from {{ start_date }}
|
||||
{% endblocktrans %}
|
||||
{% endwith %}
|
||||
{% else %}
|
||||
<span class="fa fa-ticket" aria-hidden="true"></span> {% trans "Soon" %}
|
||||
{% endif %}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
{% load html_time %}
|
||||
{% load i18n %}
|
||||
{% load eventurl %}
|
||||
<div class="day-calendar cal-size-{{ raster_to_shortest_ratio }}{% if no_headlines %} no-headlines{% endif %}"
|
||||
@@ -52,7 +53,7 @@
|
||||
running
|
||||
{% elif event.event.presale_has_ended %}
|
||||
over
|
||||
{% elif event.event.settings.presale_start_show_date and event.event.presale_start %}
|
||||
{% elif event.event.settings.presale_start_show_date and event.event.effective_presale_start %}
|
||||
soon
|
||||
{% else %}
|
||||
soon
|
||||
@@ -114,9 +115,10 @@
|
||||
<span class="fa fa-ticket" aria-hidden="true"></span> {% trans "Book now" %}
|
||||
{% elif event.event.presale_has_ended %}
|
||||
<span class="fa fa-ticket" aria-hidden="true"></span> {% trans "Sale over" %}
|
||||
{% elif event.event.settings.presale_start_show_date and event.event.presale_start %}
|
||||
{% elif event.event.settings.presale_start_show_date and event.event.effective_presale_start %}
|
||||
<span class="fa fa-ticket" aria-hidden="true"></span>
|
||||
{% blocktrans with start_date=event.event.presale_start|date:"SHORT_DATE_FORMAT" %}
|
||||
{% html_time event.event.effective_presale_start "SHORT_DATE_FORMAT" as start_date %}
|
||||
{% blocktrans with start_date=start_date %}
|
||||
from {{ start_date }}
|
||||
{% endblocktrans %}
|
||||
{% else %}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
{% load html_time %}
|
||||
{% load i18n %}
|
||||
{% load icon %}
|
||||
{% load textbubble %}
|
||||
@@ -52,11 +53,10 @@
|
||||
{% endtextbubble %}
|
||||
{% if event.settings.presale_start_show_date %}
|
||||
<br><span class="text-muted">
|
||||
{% with date_iso=event.effective_presale_start.isoformat date_human=event.effective_presale_start|date:"SHORT_DATE_FORMAT" %}
|
||||
{% blocktrans trimmed with date='<time datetime="'|add:date_iso|add:'">'|add:date_human|add:"</time>"|safe %}
|
||||
{% html_time event.event.effective_presale_start "SHORT_DATE_FORMAT" as date %}
|
||||
{% blocktrans with date=date %}
|
||||
Sale starts {{ date }}
|
||||
{% endblocktrans %}
|
||||
{% endwith %}
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
{% load html_time %}
|
||||
{% load i18n %}
|
||||
{% load date_fast %}
|
||||
<div class="week-calendar">
|
||||
@@ -24,7 +25,7 @@
|
||||
running
|
||||
{% elif event.event.presale_has_ended %}
|
||||
over
|
||||
{% elif event.event.settings.presale_start_show_date and event.event.presale_start %}
|
||||
{% elif event.event.settings.presale_start_show_date and event.event.effective_presale_start %}
|
||||
soon
|
||||
{% else %}
|
||||
soon
|
||||
@@ -77,9 +78,10 @@
|
||||
<span class="fa fa-ticket" aria-hidden="true"></span> {% trans "Book now" %}
|
||||
{% elif event.event.presale_has_ended %}
|
||||
{% trans "Sale over" %}
|
||||
{% elif event.event.settings.presale_start_show_date and event.event.presale_start %}
|
||||
{% elif event.event.settings.presale_start_show_date and event.event.effective_presale_start %}
|
||||
<span class="fa fa-ticket" aria-hidden="true"></span>
|
||||
{% blocktrans with start_date=event.event.presale_start|date_fast:"SHORT_DATE_FORMAT" %}
|
||||
{% html_time event.event.effective_presale_start "SHORT_DATE_FORMAT" as start_date %}
|
||||
{% blocktrans with start_date=start_date %}
|
||||
from {{ start_date }}
|
||||
{% endblocktrans %}
|
||||
{% else %}
|
||||
|
||||
@@ -471,10 +471,11 @@ class WidgetAPIProductList(EventListMixin, View):
|
||||
availability['color'] = 'red'
|
||||
availability['text'] = gettext('Sale over')
|
||||
availability['reason'] = 'over'
|
||||
elif event.settings.presale_start_show_date and ev.presale_start:
|
||||
elif event.settings.presale_start_show_date and ev.effective_presale_start:
|
||||
availability['color'] = 'orange'
|
||||
availability['text'] = gettext('from %(start_date)s') % {
|
||||
'start_date': date_format(ev.presale_start.astimezone(tz or event.timezone), "SHORT_DATE_FORMAT")
|
||||
'start_date': date_format(ev.effective_presale_start.astimezone(tz or event.timezone),
|
||||
"SHORT_DATE_FORMAT")
|
||||
}
|
||||
availability['reason'] = 'soon'
|
||||
else:
|
||||
|
||||
536
src/pretix/static/pretixcontrol/img/auth-b.svg
Normal file
536
src/pretix/static/pretixcontrol/img/auth-b.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 163 KiB |
@@ -1,7 +1,7 @@
|
||||
[flake8]
|
||||
ignore = N802,W503,E402,C901,E722,W504,E252,N812,N806,N818,E741
|
||||
max-line-length = 160
|
||||
exclude = migrations,.ropeproject,static,mt940.py,_static,build,make_testdata.py,*/testutils/settings.py,tests/settings.py,pretix/base/models/__init__.py,pretix/base/secretgenerators/pretix_sig1_pb2.py,.eggs/*
|
||||
exclude = data/*,migrations,.ropeproject,static,mt940.py,_static,build,make_testdata.py,*/testutils/settings.py,tests/settings.py,pretix/base/models/__init__.py,pretix/base/secretgenerators/pretix_sig1_pb2.py,.eggs/*
|
||||
max-complexity = 11
|
||||
|
||||
[isort]
|
||||
@@ -13,7 +13,7 @@ extra_standard_library = typing,enum,mimetypes
|
||||
multi_line_output = 5
|
||||
line_length = 79
|
||||
honor_noqa = true
|
||||
skip_glob = make_testdata.py,wsgi.py,bootstrap,celery_app.py,pretix/settings.py,tests/settings.py,pretix/testutils/settings.py,.eggs/**
|
||||
skip_glob = data/**,make_testdata.py,wsgi.py,bootstrap,celery_app.py,pretix/settings.py,tests/settings.py,pretix/testutils/settings.py,.eggs/**
|
||||
|
||||
[tool:pytest]
|
||||
DJANGO_SETTINGS_MODULE = tests.settings
|
||||
|
||||
756
src/tests/plugins/banktransfer/camt.053_bundesbank.xml
Normal file
756
src/tests/plugins/banktransfer/camt.053_bundesbank.xml
Normal file
@@ -0,0 +1,756 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--Beispielnachricht_camt.053_BankToCustomerStatement_via_EBICS-->
|
||||
<!-- Source https://www.bundesbank.de/de/startseite/beispieldateien-zur-bereitstellung-der-elektronischen-kontoinformationen-zu-dotationskonten-von-banken-im-format-camt-052-und-camt-053-bei-kommunikation-via-ebics-example-files-for-the-provision-of-electronic-account-information-for-cash-handling-accounts-of-banks-in-camt-052-and-camt-053-format-when-communicating-via-ebics-943090 -->
|
||||
<Document xmlns:n0="urn:iso:std:iso:20022:tech:xsd:camt.053.001.08">
|
||||
<BkToCstmrStmt>
|
||||
<GrpHdr>
|
||||
<MsgId>20240313C0098170</MsgId>
|
||||
<CreDtTm>2024-03-13T18:40:42.8734727+01:00</CreDtTm>
|
||||
</GrpHdr>
|
||||
<Stmt>
|
||||
<Id>20240313C0098170</Id>
|
||||
<StmtPgntn>
|
||||
<PgNb>00001</PgNb>
|
||||
<LastPgInd>true</LastPgInd>
|
||||
</StmtPgntn>
|
||||
<ElctrncSeqNb>1</ElctrncSeqNb>
|
||||
<CreDtTm>2024-03-13T18:40:42.8734727+01:00</CreDtTm>
|
||||
<Acct>
|
||||
<Id>
|
||||
<IBAN>DE00IBANdesDotationskontos</IBAN>
|
||||
</Id>
|
||||
<Tp>
|
||||
<Cd>CACC</Cd>
|
||||
</Tp>
|
||||
<Ccy>EUR</Ccy>
|
||||
<Nm>Testbank, Hamburg</Nm>
|
||||
<Ownr>
|
||||
<Nm>Testbank-Inhaber</Nm>
|
||||
</Ownr>
|
||||
<Svcr>
|
||||
<FinInstnId>
|
||||
<BICFI>MARKDEF1200</BICFI>
|
||||
<ClrSysMmbId>
|
||||
<ClrSysId>
|
||||
<Cd>DEBLZ</Cd>
|
||||
</ClrSysId>
|
||||
<MmbId>20000000</MmbId>
|
||||
</ClrSysMmbId>
|
||||
<Nm>Deutsche Bundesbank</Nm>
|
||||
<Othr>
|
||||
<Id>DE114103555</Id>
|
||||
<Issr>UmsStId</Issr>
|
||||
</Othr>
|
||||
</FinInstnId>
|
||||
<BrnchId>
|
||||
<Nm>Filiale Hamburg</Nm>
|
||||
</BrnchId>
|
||||
</Svcr>
|
||||
</Acct>
|
||||
<Bal>
|
||||
<Tp>
|
||||
<CdOrPrtry>
|
||||
<Cd>OPBD</Cd>
|
||||
</CdOrPrtry>
|
||||
</Tp>
|
||||
<Amt Ccy="EUR">0.00</Amt>
|
||||
<CdtDbtInd>CRDT</CdtDbtInd>
|
||||
<Dt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</Dt>
|
||||
</Bal>
|
||||
<Bal>
|
||||
<Tp>
|
||||
<CdOrPrtry>
|
||||
<Cd>CLBD</Cd>
|
||||
</CdOrPrtry>
|
||||
</Tp>
|
||||
<Amt Ccy="EUR">0.00</Amt>
|
||||
<CdtDbtInd>CRDT</CdtDbtInd>
|
||||
<Dt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</Dt>
|
||||
</Bal>
|
||||
<Ntry>
|
||||
<NtryRef>2000000011240313</NtryRef>
|
||||
<Amt Ccy="EUR">100000.00</Amt>
|
||||
<CdtDbtInd>CRDT</CdtDbtInd>
|
||||
<Sts>
|
||||
<Cd>BOOK</Cd>
|
||||
</Sts>
|
||||
<BookgDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</BookgDt>
|
||||
<ValDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</ValDt>
|
||||
<AcctSvcrRef>103600002791/0019200002</AcctSvcrRef>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>CNTR</Cd>
|
||||
<SubFmlyCd>CDPT</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NCMI+082+0019200002</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<NtryDtls>
|
||||
<TxDtls>
|
||||
<Refs>
|
||||
<AcctSvcrRef>2000000011240313</AcctSvcrRef>
|
||||
</Refs>
|
||||
<Amt Ccy="EUR">100000.00</Amt>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>CNTR</Cd>
|
||||
<SubFmlyCd>CDPT</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NCMI+082+0019200002</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<Purp>
|
||||
<Prtry>Einzahlung</Prtry>
|
||||
</Purp>
|
||||
<AddtlTxInf>Einzahlungen</AddtlTxInf>
|
||||
</TxDtls>
|
||||
</NtryDtls>
|
||||
<AddtlNtryInf>Einzahlungen</AddtlNtryInf>
|
||||
</Ntry>
|
||||
<Ntry>
|
||||
<NtryRef>2000000012240313</NtryRef>
|
||||
<Amt Ccy="EUR">25000.00</Amt>
|
||||
<CdtDbtInd>DBIT</CdtDbtInd>
|
||||
<Sts>
|
||||
<Cd>BOOK</Cd>
|
||||
</Sts>
|
||||
<BookgDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</BookgDt>
|
||||
<ValDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</ValDt>
|
||||
<AcctSvcrRef>049000039704/0019000002</AcctSvcrRef>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>CNTR</Cd>
|
||||
<SubFmlyCd>CWDL</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NCMI+083+0019000002</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<NtryDtls>
|
||||
<TxDtls>
|
||||
<Refs>
|
||||
<AcctSvcrRef>2000000012240313</AcctSvcrRef>
|
||||
<InstrId>9998770</InstrId>
|
||||
<ChqNb>9998770</ChqNb>
|
||||
</Refs>
|
||||
<Amt Ccy="EUR">25000.00</Amt>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>CNTR</Cd>
|
||||
<SubFmlyCd>CWDL</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NCMI+083+0019000002</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<Purp>
|
||||
<Prtry>Auszahlung</Prtry>
|
||||
</Purp>
|
||||
<AddtlTxInf>Auszahlungen</AddtlTxInf>
|
||||
</TxDtls>
|
||||
</NtryDtls>
|
||||
<AddtlNtryInf>Auszahlungen</AddtlNtryInf>
|
||||
</Ntry>
|
||||
<Ntry>
|
||||
<Amt Ccy="EUR">20000.00</Amt>
|
||||
<CdtDbtInd>DBIT</CdtDbtInd>
|
||||
<Sts>
|
||||
<Cd>BOOK</Cd>
|
||||
</Sts>
|
||||
<BookgDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</BookgDt>
|
||||
<ValDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</ValDt>
|
||||
<AcctSvcrRef>047200003598/0002000001</AcctSvcrRef>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>ICHQ</Cd>
|
||||
<SubFmlyCd>CCHQ</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NCHK+101+0002000001</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<NtryDtls>
|
||||
<TxDtls>
|
||||
<Refs>
|
||||
<InstrId>9998771</InstrId>
|
||||
<ChqNb>9998771</ChqNb>
|
||||
</Refs>
|
||||
<Amt Ccy="EUR">250000.00</Amt>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>ICHQ</Cd>
|
||||
<SubFmlyCd>CCHQ</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NCHK+101+0002000001</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<RltdPties>
|
||||
<Cdtr>
|
||||
<Pty>
|
||||
<Nm>Deutsche Bundesbank KBS HMS Hamburg</Nm>
|
||||
</Pty>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>DE98200000000020002633</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
</RltdPties>
|
||||
<RltdAgts>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<ClrSysMmbId>
|
||||
<ClrSysId>
|
||||
<Cd>DEBLZ</Cd>
|
||||
</ClrSysId>
|
||||
<MmbId>20000000</MmbId>
|
||||
</ClrSysMmbId>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
</RltdAgts>
|
||||
<Purp>
|
||||
<Prtry>LS bestätigter Scheck</Prtry>
|
||||
</Purp>
|
||||
<RmtInf>
|
||||
<Ustrd>Bestätigter Scheck vom 13.03.2024</Ustrd>
|
||||
<Ustrd>Scheck Nr. 135469</Ustrd>
|
||||
</RmtInf>
|
||||
<AddtlTxInf>Inhaberscheck</AddtlTxInf>
|
||||
</TxDtls>
|
||||
</NtryDtls>
|
||||
<AddtlNtryInf>Inhaberscheck</AddtlNtryInf>
|
||||
</Ntry>
|
||||
<Ntry>
|
||||
<Amt Ccy="EUR">15.00</Amt>
|
||||
<CdtDbtInd>DBIT</CdtDbtInd>
|
||||
<Sts>
|
||||
<Cd>BOOK</Cd>
|
||||
</Sts>
|
||||
<BookgDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</BookgDt>
|
||||
<ValDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</ValDt>
|
||||
<AcctSvcrRef>047200003598/0002000001</AcctSvcrRef>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>ACMT</Cd>
|
||||
<Fmly>
|
||||
<Cd>MDOP</Cd>
|
||||
<SubFmlyCd>CHRG</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NCHG+808+0002000001</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<NtryDtls>
|
||||
<TxDtls>
|
||||
<Amt Ccy="EUR">15.00</Amt>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>ACMT</Cd>
|
||||
<Fmly>
|
||||
<Cd>MDOP</Cd>
|
||||
<SubFmlyCd>CHRG</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NCHG+808+0002000001</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<Purp>
|
||||
<Prtry>LS Entgelte Giro, SchE</Prtry>
|
||||
</Purp>
|
||||
<AddtlTxInf>Gebühren</AddtlTxInf>
|
||||
</TxDtls>
|
||||
</NtryDtls>
|
||||
<AddtlNtryInf>Gebühren</AddtlNtryInf>
|
||||
</Ntry>
|
||||
<Ntry>
|
||||
<NtryRef>H202403135000000107</NtryRef>
|
||||
<Amt Ccy="EUR">145015.00</Amt>
|
||||
<CdtDbtInd>CRDT</CdtDbtInd>
|
||||
<Sts>
|
||||
<Cd>BOOK</Cd>
|
||||
</Sts>
|
||||
<BookgDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</BookgDt>
|
||||
<ValDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</ValDt>
|
||||
<AcctSvcrRef>051500000059/0019000003</AcctSvcrRef>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>RCDT</Cd>
|
||||
<SubFmlyCd>SDVA</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NTRF+088+0019000003</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<NtryDtls>
|
||||
<TxDtls>
|
||||
<Refs>
|
||||
<AcctSvcrRef>H202403135000000107</AcctSvcrRef>
|
||||
<InstrId>H202403135000000107</InstrId>
|
||||
</Refs>
|
||||
<Amt Ccy="EUR">145015.00</Amt>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>RCDT</Cd>
|
||||
<SubFmlyCd>SDVA</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NTRF+088+0019000003</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<Purp>
|
||||
<Prtry>Überw Prior1/SWI</Prtry>
|
||||
</Purp>
|
||||
<AddtlTxInf>Überweisungsgutschrift mit Festvaluta</AddtlTxInf>
|
||||
</TxDtls>
|
||||
</NtryDtls>
|
||||
<AddtlNtryInf>Überweisungsgutschrift mit Festvaluta</AddtlNtryInf>
|
||||
</Ntry>
|
||||
<Ntry>
|
||||
<NtryRef>H202403135000000108</NtryRef>
|
||||
<Amt Ccy="EUR">50000.00</Amt>
|
||||
<CdtDbtInd>CRDT</CdtDbtInd>
|
||||
<Sts>
|
||||
<Cd>BOOK</Cd>
|
||||
</Sts>
|
||||
<BookgDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</BookgDt>
|
||||
<ValDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</ValDt>
|
||||
<AcctSvcrRef>105600004525/0019200003</AcctSvcrRef>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>RCDT</Cd>
|
||||
<SubFmlyCd>SDVA</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NTRF+088+0019200003</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<NtryDtls>
|
||||
<TxDtls>
|
||||
<Refs>
|
||||
<AcctSvcrRef>H202403135000000108</AcctSvcrRef>
|
||||
<InstrId>H202403135000000108</InstrId>
|
||||
</Refs>
|
||||
<Amt Ccy="EUR">50000.00</Amt>
|
||||
<AmtDtls>
|
||||
<InstdAmt>
|
||||
<Amt Ccy="EUR">50000.00</Amt>
|
||||
</InstdAmt>
|
||||
</AmtDtls>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>RCDT</Cd>
|
||||
<SubFmlyCd>SDVA</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NTRF+088+0019200003</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<RltdPties>
|
||||
<Dbtr>
|
||||
<Pty>
|
||||
<Nm>Testbank</Nm>
|
||||
</Pty>
|
||||
</Dbtr>
|
||||
<DbtrAcct>
|
||||
<Id>
|
||||
<Othr>
|
||||
<Id>0123456789</Id>
|
||||
</Othr>
|
||||
</Id>
|
||||
</DbtrAcct>
|
||||
</RltdPties>
|
||||
<Purp>
|
||||
<Prtry>Überw Prior1/SWI</Prtry>
|
||||
</Purp>
|
||||
<RmtInf>
|
||||
<Ustrd>VWZ pacs008 RTGS nach DOTA</Ustrd>
|
||||
</RmtInf>
|
||||
<AddtlTxInf>Überweisungsgutschrift mit Festvaluta</AddtlTxInf>
|
||||
</TxDtls>
|
||||
</NtryDtls>
|
||||
<AddtlNtryInf>Überweisungsgutschrift mit Festvaluta</AddtlNtryInf>
|
||||
</Ntry>
|
||||
<Ntry>
|
||||
<NtryRef>H202403135000000109</NtryRef>
|
||||
<Amt Ccy="EUR">80000.00</Amt>
|
||||
<CdtDbtInd>CRDT</CdtDbtInd>
|
||||
<Sts>
|
||||
<Cd>BOOK</Cd>
|
||||
</Sts>
|
||||
<BookgDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</BookgDt>
|
||||
<ValDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</ValDt>
|
||||
<AcctSvcrRef>051800000156/0019000004</AcctSvcrRef>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>RCDT</Cd>
|
||||
<SubFmlyCd>SDVA</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NTRF+088+0019000004</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<NtryDtls>
|
||||
<TxDtls>
|
||||
<Refs>
|
||||
<AcctSvcrRef>H202403135000000109</AcctSvcrRef>
|
||||
<InstrId>pacs009-EndToEndId-00004</InstrId>
|
||||
</Refs>
|
||||
<Amt Ccy="EUR">80000.00</Amt>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>RCDT</Cd>
|
||||
<SubFmlyCd>SDVA</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NTRF+088+0019000004</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<Purp>
|
||||
<Prtry>Überw Prior1/SWI</Prtry>
|
||||
</Purp>
|
||||
<RmtInf>
|
||||
<Ustrd>VWZ pacs009 RTGS nach DOTA</Ustrd>
|
||||
</RmtInf>
|
||||
<AddtlTxInf>Überweisungsgutschrift mit Festvaluta</AddtlTxInf>
|
||||
</TxDtls>
|
||||
</NtryDtls>
|
||||
<AddtlNtryInf>Überweisungsgutschrift mit Festvaluta</AddtlNtryInf>
|
||||
</Ntry>
|
||||
<Ntry>
|
||||
<NtryRef>pacs009-InstrId-00005</NtryRef>
|
||||
<Amt Ccy="EUR">30000.00</Amt>
|
||||
<CdtDbtInd>DBIT</CdtDbtInd>
|
||||
<Sts>
|
||||
<Cd>BOOK</Cd>
|
||||
</Sts>
|
||||
<BookgDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</BookgDt>
|
||||
<ValDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</ValDt>
|
||||
<AcctSvcrRef>055100000086/0019000005</AcctSvcrRef>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>ICDT</Cd>
|
||||
<SubFmlyCd>SDVA</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NTRF+087+0019000005</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<NtryDtls>
|
||||
<TxDtls>
|
||||
<Refs>
|
||||
<AcctSvcrRef>pacs009-InstrId-00005</AcctSvcrRef>
|
||||
<InstrId>pacs009-InstrId-00005</InstrId>
|
||||
</Refs>
|
||||
<Amt Ccy="EUR">30000.00</Amt>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>ICDT</Cd>
|
||||
<SubFmlyCd>SDVA</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NTRF+087+0019000005</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<Purp>
|
||||
<Prtry>Überw Prior1/SWI</Prtry>
|
||||
</Purp>
|
||||
<RmtInf>
|
||||
<Ustrd>VWZ pacs009 DOTA nach MCA</Ustrd>
|
||||
</RmtInf>
|
||||
<AddtlTxInf>Eilüberweisung</AddtlTxInf>
|
||||
</TxDtls>
|
||||
</NtryDtls>
|
||||
<AddtlNtryInf>Eilüberweisung</AddtlNtryInf>
|
||||
</Ntry>
|
||||
<Ntry>
|
||||
<NtryRef>pacs009-InstrId-00006</NtryRef>
|
||||
<Amt Ccy="EUR">120000.00</Amt>
|
||||
<CdtDbtInd>DBIT</CdtDbtInd>
|
||||
<Sts>
|
||||
<Cd>BOOK</Cd>
|
||||
</Sts>
|
||||
<BookgDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</BookgDt>
|
||||
<ValDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</ValDt>
|
||||
<AcctSvcrRef>001400001221/0019000006</AcctSvcrRef>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>ICDT</Cd>
|
||||
<SubFmlyCd>SDVA</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NTRF+087+0019000006</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<NtryDtls>
|
||||
<TxDtls>
|
||||
<Refs>
|
||||
<AcctSvcrRef>pacs009-InstrId-00006</AcctSvcrRef>
|
||||
<InstrId>pacs009-InstrId-00006</InstrId>
|
||||
</Refs>
|
||||
<Amt Ccy="EUR">120000.00</Amt>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>ICDT</Cd>
|
||||
<SubFmlyCd>SDVA</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NTRF+087+0019000006</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<Purp>
|
||||
<Prtry>Überw Prior1/SWI</Prtry>
|
||||
</Purp>
|
||||
<RmtInf>
|
||||
<Ustrd>VWZ pacs009 DOTA nach RTGS</Ustrd>
|
||||
</RmtInf>
|
||||
<AddtlTxInf>Eilüberweisung</AddtlTxInf>
|
||||
</TxDtls>
|
||||
</NtryDtls>
|
||||
<AddtlNtryInf>Eilüberweisung</AddtlNtryInf>
|
||||
</Ntry>
|
||||
<Ntry>
|
||||
<Amt Ccy="EUR">100000.00</Amt>
|
||||
<CdtDbtInd>CRDT</CdtDbtInd>
|
||||
<Sts>
|
||||
<Cd>BOOK</Cd>
|
||||
</Sts>
|
||||
<BookgDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</BookgDt>
|
||||
<ValDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</ValDt>
|
||||
<AcctSvcrRef>016900004681/0002000002</AcctSvcrRef>
|
||||
<BkTxCd>
|
||||
<Prtry>
|
||||
<Cd>NCHK+070+0002000002</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<NtryDtls>
|
||||
<TxDtls>
|
||||
<Amt Ccy="EUR">100000.00</Amt>
|
||||
<BkTxCd>
|
||||
<Prtry>
|
||||
<Cd>NCHK+070+0002000002</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<RltdPties>
|
||||
<Dbtr>
|
||||
<Pty>
|
||||
<Nm>Deutsche Bundesbank / 22772 Hamburg</Nm>
|
||||
</Pty>
|
||||
</Dbtr>
|
||||
<DbtrAcct>
|
||||
<Id>
|
||||
<IBAN>DE98200000000020002633</IBAN>
|
||||
</Id>
|
||||
</DbtrAcct>
|
||||
</RltdPties>
|
||||
<RltdAgts>
|
||||
<DbtrAgt>
|
||||
<FinInstnId>
|
||||
<ClrSysMmbId>
|
||||
<ClrSysId>
|
||||
<Cd>DEBLZ</Cd>
|
||||
</ClrSysId>
|
||||
<MmbId>20000000</MmbId>
|
||||
</ClrSysMmbId>
|
||||
</FinInstnId>
|
||||
</DbtrAgt>
|
||||
</RltdAgts>
|
||||
<Purp>
|
||||
<Prtry>GS bestätigter Scheck</Prtry>
|
||||
</Purp>
|
||||
<RmtInf>
|
||||
<Ustrd>Rückgabe Best. Scheck vom 28.02.2024</Ustrd>
|
||||
<Ustrd>Scheck Nr. 135468</Ustrd>
|
||||
</RmtInf>
|
||||
</TxDtls>
|
||||
</NtryDtls>
|
||||
</Ntry>
|
||||
<Ntry>
|
||||
<NtryRef>pacs008-InstrId-00007</NtryRef>
|
||||
<Amt Ccy="EUR">280000.00</Amt>
|
||||
<CdtDbtInd>DBIT</CdtDbtInd>
|
||||
<Sts>
|
||||
<Cd>BOOK</Cd>
|
||||
</Sts>
|
||||
<BookgDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</BookgDt>
|
||||
<ValDt>
|
||||
<Dt>2024-03-13</Dt>
|
||||
</ValDt>
|
||||
<AcctSvcrRef>010300005153/0019000007</AcctSvcrRef>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>ICDT</Cd>
|
||||
<SubFmlyCd>SDVA</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NTRF+087+0019000007</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<NtryDtls>
|
||||
<TxDtls>
|
||||
<Refs>
|
||||
<AcctSvcrRef>pacs008-InstrId-00007</AcctSvcrRef>
|
||||
<InstrId>pacs008-InstrId-00007</InstrId>
|
||||
</Refs>
|
||||
<Amt Ccy="EUR">280000.00</Amt>
|
||||
<BkTxCd>
|
||||
<Domn>
|
||||
<Cd>PMNT</Cd>
|
||||
<Fmly>
|
||||
<Cd>ICDT</Cd>
|
||||
<SubFmlyCd>SDVA</SubFmlyCd>
|
||||
</Fmly>
|
||||
</Domn>
|
||||
<Prtry>
|
||||
<Cd>NTRF+087+0019000007</Cd>
|
||||
<Issr>DK</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<RltdPties>
|
||||
<Cdtr>
|
||||
<Pty>
|
||||
<Nm>Testbank, Hamburg</Nm>
|
||||
</Pty>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>DE00IBANbeiTestbank</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
</RltdPties>
|
||||
<Purp>
|
||||
<Prtry>Überw Prior1/SWI</Prtry>
|
||||
</Purp>
|
||||
<RmtInf>
|
||||
<Ustrd>VWZ pacs008 DOTA nach RTGS</Ustrd>
|
||||
</RmtInf>
|
||||
<AddtlTxInf>Eilüberweisung</AddtlTxInf>
|
||||
</TxDtls>
|
||||
</NtryDtls>
|
||||
<AddtlNtryInf>Eilüberweisung</AddtlNtryInf>
|
||||
</Ntry>
|
||||
</Stmt>
|
||||
</BkToCstmrStmt>
|
||||
</Document>
|
||||
312
src/tests/plugins/banktransfer/camt.053_sepatools.xml
Normal file
312
src/tests/plugins/banktransfer/camt.053_sepatools.xml
Normal file
@@ -0,0 +1,312 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02 camt.053.001.02.xsd">
|
||||
|
||||
<BkToCstmrStmt>
|
||||
<GrpHdr>
|
||||
<MsgId>053D2013-12-27T22:05:03.0N130000005</MsgId>
|
||||
<CreDtTm>2013-12-27T22:04:52.0+01:00</CreDtTm>
|
||||
<MsgPgntn>
|
||||
<PgNb>1</PgNb>
|
||||
<LastPgInd>true</LastPgInd>
|
||||
</MsgPgntn>
|
||||
</GrpHdr>
|
||||
<Stmt>
|
||||
<Id>0352C5320131227220503</Id>
|
||||
<ElctrncSeqNb>130000005</ElctrncSeqNb>
|
||||
<CreDtTm>2013-12-27T22:04:52.0+01:00</CreDtTm>
|
||||
<Acct>
|
||||
<Id>
|
||||
<IBAN>DE14740618130000033626</IBAN>
|
||||
</Id>
|
||||
<Ccy>EUR</Ccy>
|
||||
<Ownr>
|
||||
<Nm>Testkonto Nummer 1</Nm>
|
||||
</Ownr>
|
||||
<Svcr>
|
||||
<FinInstnId>
|
||||
<BIC>GENODEF1PFK</BIC>
|
||||
<Nm>VR-Bank Rottal-Inn eG</Nm>
|
||||
<Othr>
|
||||
<Id>DE 129267947</Id>
|
||||
<Issr>UmsStId</Issr>
|
||||
</Othr>
|
||||
</FinInstnId>
|
||||
</Svcr>
|
||||
</Acct>
|
||||
<Bal>
|
||||
<Tp>
|
||||
<CdOrPrtry>
|
||||
<Cd>PRCD</Cd>
|
||||
</CdOrPrtry>
|
||||
</Tp>
|
||||
<Amt Ccy="EUR">33.06</Amt>
|
||||
<CdtDbtInd>CRDT</CdtDbtInd>
|
||||
<Dt>
|
||||
<Dt>2013-12-27</Dt>
|
||||
</Dt>
|
||||
</Bal>
|
||||
<Bal>
|
||||
<Tp>
|
||||
<CdOrPrtry>
|
||||
<Cd>CLBD</Cd>
|
||||
</CdOrPrtry>
|
||||
</Tp>
|
||||
<Amt Ccy="EUR">23.06</Amt>
|
||||
<CdtDbtInd>CRDT</CdtDbtInd>
|
||||
<Dt>
|
||||
<Dt>2013-12-27</Dt>
|
||||
</Dt>
|
||||
</Bal>
|
||||
<Ntry>
|
||||
<Amt Ccy="EUR">2.00</Amt>
|
||||
<CdtDbtInd>DBIT</CdtDbtInd>
|
||||
<Sts>BOOK</Sts>
|
||||
<BookgDt>
|
||||
<Dt>2013-12-27</Dt>
|
||||
</BookgDt>
|
||||
<ValDt>
|
||||
<Dt>2013-12-27</Dt>
|
||||
</ValDt>
|
||||
<AcctSvcrRef>2013122710583450000</AcctSvcrRef>
|
||||
<BkTxCd/>
|
||||
<NtryDtls>
|
||||
<TxDtls>
|
||||
<BkTxCd>
|
||||
<Prtry>
|
||||
<Cd>NTRF+020</Cd>
|
||||
<Issr>ZKA</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<RltdPties>
|
||||
<Cdtr>
|
||||
<Nm>Testkonto Nummer 2</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<Othr>
|
||||
<Id> 740618130100033626</Id>
|
||||
<SchmeNm>
|
||||
<Cd>BBAN</Cd>
|
||||
</SchmeNm>
|
||||
</Othr>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
</RltdPties>
|
||||
<RmtInf>
|
||||
<Ustrd>TEST BERWEISUNG MITTELS BLZUND KONTONUMMER - DTA</Ustrd>
|
||||
</RmtInf>
|
||||
</TxDtls>
|
||||
</NtryDtls>
|
||||
</Ntry>
|
||||
<Ntry>
|
||||
<Amt Ccy="EUR">3.00</Amt>
|
||||
<CdtDbtInd>DBIT</CdtDbtInd>
|
||||
<Sts>BOOK</Sts>
|
||||
<BookgDt>
|
||||
<Dt>2013-12-27</Dt>
|
||||
</BookgDt>
|
||||
<ValDt>
|
||||
<Dt>2013-12-27</Dt>
|
||||
</ValDt>
|
||||
<AcctSvcrRef>2013122710583600000</AcctSvcrRef>
|
||||
<BkTxCd/>
|
||||
<NtryDtls>
|
||||
<TxDtls>
|
||||
<Refs>
|
||||
<MsgId>CCTI/VRNWSW/b044f24cddb92a502b8a1b5</MsgId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</Refs>
|
||||
<BkTxCd>
|
||||
<Prtry>
|
||||
<Cd>NMSC+201</Cd>
|
||||
<Issr>ZKA</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<RltdPties>
|
||||
<Dbtr>
|
||||
<Nm>Testkonto Nummer 1</Nm>
|
||||
</Dbtr>
|
||||
<DbtrAcct>
|
||||
<Id>
|
||||
<IBAN>DE14740618130000033626</IBAN>
|
||||
</Id>
|
||||
</DbtrAcct>
|
||||
<UltmtDbtr>
|
||||
<Nm>keine Information vorhanden</Nm>
|
||||
</UltmtDbtr>
|
||||
<Cdtr>
|
||||
<Nm>Testkonto Nummer 2</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>DE58740618130100033626</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<UltmtCdtr>
|
||||
<Nm>keine Information vorhanden</Nm>
|
||||
</UltmtCdtr>
|
||||
</RltdPties>
|
||||
<RltdAgts>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>GENODEF1PFK</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
</RltdAgts>
|
||||
<RmtInf>
|
||||
<Ustrd>Test+berweisung mit BIC und IBAN SEPA IBAN: DE58740618130100033626 BIC: GENODEF1PFK</Ustrd>
|
||||
</RmtInf>
|
||||
</TxDtls>
|
||||
</NtryDtls>
|
||||
</Ntry>
|
||||
<Ntry>
|
||||
<Amt Ccy="EUR">1.00</Amt>
|
||||
<CdtDbtInd>CRDT</CdtDbtInd>
|
||||
<Sts>BOOK</Sts>
|
||||
<BookgDt>
|
||||
<Dt>2013-12-27</Dt>
|
||||
</BookgDt>
|
||||
<ValDt>
|
||||
<Dt>2013-12-27</Dt>
|
||||
</ValDt>
|
||||
<AcctSvcrRef>2013122711085260000</AcctSvcrRef>
|
||||
<BkTxCd/>
|
||||
<NtryDtls>
|
||||
<TxDtls>
|
||||
<BkTxCd>
|
||||
<Prtry>
|
||||
<Cd>NMSC+051</Cd>
|
||||
<Issr>ZKA</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<RltdPties>
|
||||
<Dbtr>
|
||||
<Nm>Testkonto Nummer 2</Nm>
|
||||
</Dbtr>
|
||||
<DbtrAcct>
|
||||
<Id>
|
||||
<Othr>
|
||||
<Id> 740618130100033626</Id>
|
||||
<SchmeNm>
|
||||
<Cd>BBAN</Cd>
|
||||
</SchmeNm>
|
||||
</Othr>
|
||||
</Id>
|
||||
</DbtrAcct>
|
||||
</RltdPties>
|
||||
<RmtInf>
|
||||
<Ustrd>R CKBUCHUNG</Ustrd>
|
||||
</RmtInf>
|
||||
</TxDtls>
|
||||
</NtryDtls>
|
||||
</Ntry>
|
||||
<Ntry>
|
||||
<Amt Ccy="EUR">6.00</Amt>
|
||||
<CdtDbtInd>DBIT</CdtDbtInd>
|
||||
<Sts>BOOK</Sts>
|
||||
<BookgDt>
|
||||
<Dt>2013-12-27</Dt>
|
||||
</BookgDt>
|
||||
<ValDt>
|
||||
<Dt>2013-12-27</Dt>
|
||||
</ValDt>
|
||||
<AcctSvcrRef>2013122711513230000</AcctSvcrRef>
|
||||
<BkTxCd/>
|
||||
<NtryDtls>
|
||||
<Btch>
|
||||
<PmtInfId>STZV-PmInf27122013-11:02-2</PmtInfId>
|
||||
<NbOfTxs>2</NbOfTxs>
|
||||
</Btch>
|
||||
<TxDtls>
|
||||
<Refs>
|
||||
<MsgId>STZV-Msg27122013-11:02</MsgId>
|
||||
<EndToEndId>STZV-EtE27122013-11:02-1</EndToEndId>
|
||||
</Refs>
|
||||
<AmtDtls>
|
||||
<TxAmt>
|
||||
<Amt Ccy="EUR">3.50</Amt>
|
||||
</TxAmt>
|
||||
</AmtDtls>
|
||||
<BkTxCd>
|
||||
<Prtry>
|
||||
<Cd>NMSC+201</Cd>
|
||||
<Issr>ZKA</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<RltdPties>
|
||||
<Dbtr>
|
||||
<Nm>Testkonto Nummer 2</Nm>
|
||||
</Dbtr>
|
||||
<DbtrAcct>
|
||||
<Id>
|
||||
<IBAN>DE58740618130100033626</IBAN>
|
||||
</Id>
|
||||
</DbtrAcct>
|
||||
<UltmtDbtr>
|
||||
<Nm>keine Information vorhanden</Nm>
|
||||
</UltmtDbtr>
|
||||
<Cdtr>
|
||||
<Nm>Testkonto Nummer 1</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>DE14740618130000033626</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<UltmtCdtr>
|
||||
<Nm>Testkonto</Nm>
|
||||
</UltmtCdtr>
|
||||
</RltdPties>
|
||||
<RmtInf>
|
||||
<Ustrd>Sammelueberwseisung 2. Zahlung TAN:283044 </Ustrd>
|
||||
</RmtInf>
|
||||
</TxDtls>
|
||||
<TxDtls>
|
||||
<Refs>
|
||||
<MsgId>STZV-Msg27122013-11:02</MsgId>
|
||||
<EndToEndId>STZV-EtE27122013-11:02-2</EndToEndId>
|
||||
</Refs>
|
||||
<AmtDtls>
|
||||
<TxAmt>
|
||||
<Amt Ccy="EUR">2.50</Amt>
|
||||
</TxAmt>
|
||||
</AmtDtls>
|
||||
<BkTxCd>
|
||||
<Prtry>
|
||||
<Cd>NMSC+201</Cd>
|
||||
<Issr>ZKA</Issr>
|
||||
</Prtry>
|
||||
</BkTxCd>
|
||||
<RltdPties>
|
||||
<Dbtr>
|
||||
<Nm>Testkonto Nummer 2</Nm>
|
||||
</Dbtr>
|
||||
<DbtrAcct>
|
||||
<Id>
|
||||
<IBAN>DE58740618130100033626</IBAN>
|
||||
</Id>
|
||||
</DbtrAcct>
|
||||
<UltmtDbtr>
|
||||
<Nm>keine Information vorhanden</Nm>
|
||||
</UltmtDbtr>
|
||||
<Cdtr>
|
||||
<Nm>Testkonto Nummer 1</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>DE14740618130000033626</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<UltmtCdtr>
|
||||
<Nm>Testkonto</Nm>
|
||||
</UltmtCdtr>
|
||||
</RltdPties>
|
||||
<RmtInf>
|
||||
<Ustrd>Sammelueberweisung 1. Zahlung TAN:283044 </Ustrd>
|
||||
</RmtInf>
|
||||
</TxDtls>
|
||||
</NtryDtls>
|
||||
</Ntry>
|
||||
</Stmt>
|
||||
</BkToCstmrStmt>
|
||||
</Document>
|
||||
146
src/tests/plugins/banktransfer/test_camt.py
Normal file
146
src/tests/plugins/banktransfer/test_camt.py
Normal file
@@ -0,0 +1,146 @@
|
||||
#
|
||||
# This file is part of pretix (Community Edition).
|
||||
#
|
||||
# Copyright (C) 2014-2020 Raphael Michel and contributors
|
||||
# Copyright (C) 2020-today pretix GmbH and contributors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General
|
||||
# Public License as published by the Free Software Foundation in version 3 of the License.
|
||||
#
|
||||
# ADDITIONAL TERMS APPLY: Pursuant to Section 7 of the GNU Affero General Public License, additional terms are
|
||||
# applicable granting you additional permissions and placing additional restrictions on your usage of this software.
|
||||
# Please refer to the pretix LICENSE file to obtain the full terms applicable to this work. If you did not receive
|
||||
# this file, see <https://pretix.eu/about/en/license>.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
# details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
|
||||
# <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
import os.path
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from pretix.plugins.banktransfer import camtimport
|
||||
|
||||
DATA_DIR = os.path.dirname(__file__)
|
||||
|
||||
|
||||
class CamtImportTest(TestCase):
|
||||
def _test_from_sample_file(self, filename, expected_parsed):
|
||||
with open(os.path.join(DATA_DIR, filename), "rb") as f:
|
||||
parsed = camtimport.parse(f)
|
||||
print(parsed)
|
||||
self.assertEqual(parsed, expected_parsed)
|
||||
|
||||
def test_sample_file_sepatools(self):
|
||||
expected_parsed = [
|
||||
{
|
||||
"amount": "-2.00",
|
||||
"date": "2013-12-27",
|
||||
"reference": "TEST BERWEISUNG MITTELS BLZUND KONTONUMMER - DTA",
|
||||
"external_id": "2013122710583450000",
|
||||
"payer": "Testkonto Nummer 2",
|
||||
},
|
||||
{
|
||||
"amount": "-3.00",
|
||||
"date": "2013-12-27",
|
||||
"reference": "Test+berweisung mit BIC und IBAN SEPA IBAN: DE58740618130100033626 BIC: GENODEF1PFK",
|
||||
"external_id": "2013122710583600000",
|
||||
"iban": "DE58740618130100033626",
|
||||
"payer": "Testkonto Nummer 2",
|
||||
},
|
||||
{
|
||||
"amount": "1.00",
|
||||
"date": "2013-12-27",
|
||||
"reference": "R CKBUCHUNG",
|
||||
"external_id": "2013122711085260000",
|
||||
"payer": "Testkonto Nummer 2",
|
||||
},
|
||||
{
|
||||
"amount": "-6.00",
|
||||
"date": "2013-12-27",
|
||||
"reference": "STZV-PmInf27122013-11:02-2",
|
||||
"external_id": "2013122711513230000",
|
||||
},
|
||||
]
|
||||
filename = "camt.053_sepatools.xml"
|
||||
self._test_from_sample_file(filename, expected_parsed)
|
||||
|
||||
def test_sample_file_bundesbank(self):
|
||||
expected_parsed = [
|
||||
{
|
||||
"amount": "100000.00",
|
||||
"date": "2024-03-13",
|
||||
"reference": "",
|
||||
"external_id": "103600002791/0019200002",
|
||||
},
|
||||
{
|
||||
"amount": "-25000.00",
|
||||
"date": "2024-03-13",
|
||||
"reference": "",
|
||||
"external_id": "049000039704/0019000002",
|
||||
},
|
||||
{
|
||||
"amount": "-20000.00",
|
||||
"date": "2024-03-13",
|
||||
"reference": "",
|
||||
"external_id": "047200003598/0002000001",
|
||||
"iban": "DE98200000000020002633",
|
||||
},
|
||||
{
|
||||
"amount": "-15.00",
|
||||
"date": "2024-03-13",
|
||||
"reference": "",
|
||||
"external_id": "047200003598/0002000001",
|
||||
},
|
||||
{
|
||||
"amount": "145015.00",
|
||||
"date": "2024-03-13",
|
||||
"reference": "",
|
||||
"external_id": "051500000059/0019000003",
|
||||
},
|
||||
{
|
||||
"amount": "50000.00",
|
||||
"date": "2024-03-13",
|
||||
"reference": "VWZ pacs008 RTGS nach DOTA",
|
||||
"external_id": "105600004525/0019200003",
|
||||
},
|
||||
{
|
||||
"amount": "80000.00",
|
||||
"date": "2024-03-13",
|
||||
"reference": "VWZ pacs009 RTGS nach DOTA",
|
||||
"external_id": "051800000156/0019000004",
|
||||
},
|
||||
{
|
||||
"amount": "-30000.00",
|
||||
"date": "2024-03-13",
|
||||
"reference": "VWZ pacs009 DOTA nach MCA",
|
||||
"external_id": "055100000086/0019000005",
|
||||
},
|
||||
{
|
||||
"amount": "-120000.00",
|
||||
"date": "2024-03-13",
|
||||
"reference": "VWZ pacs009 DOTA nach RTGS",
|
||||
"external_id": "001400001221/0019000006",
|
||||
},
|
||||
{
|
||||
"amount": "100000.00",
|
||||
"date": "2024-03-13",
|
||||
"reference": "",
|
||||
"external_id": "016900004681/0002000002",
|
||||
"iban": "DE98200000000020002633",
|
||||
},
|
||||
{
|
||||
"amount": "-280000.00",
|
||||
"date": "2024-03-13",
|
||||
"reference": "VWZ pacs008 DOTA nach RTGS",
|
||||
"external_id": "010300005153/0019000007",
|
||||
"iban": "DE00IBANbeiTestbank",
|
||||
},
|
||||
]
|
||||
|
||||
filename = "camt.053_bundesbank.xml"
|
||||
self._test_from_sample_file(filename, expected_parsed)
|
||||
@@ -2709,6 +2709,7 @@ class CartAddonTest(CartTestMixin, TestCase):
|
||||
item=self.workshop1, price=Decimal('0.00'),
|
||||
event=self.event, cart_id=self.session_key, addon_to=cp1
|
||||
)
|
||||
self.cm.extend_expired_positions()
|
||||
self.cm.commit()
|
||||
cp2.refresh_from_db()
|
||||
assert cp2.expires > now()
|
||||
@@ -2731,6 +2732,7 @@ class CartAddonTest(CartTestMixin, TestCase):
|
||||
item=self.workshop1, price=Decimal('0.00'),
|
||||
event=self.event, cart_id=self.session_key, addon_to=cp1
|
||||
)
|
||||
self.cm.extend_expired_positions()
|
||||
with self.assertRaises(CartError):
|
||||
self.cm.commit()
|
||||
assert CartPosition.objects.count() == 0
|
||||
@@ -3398,6 +3400,7 @@ class CartAddonTest(CartTestMixin, TestCase):
|
||||
item=self.workshop1, price=Decimal('12.00'),
|
||||
event=self.event, cart_id=self.session_key, addon_to=cp1
|
||||
)
|
||||
self.cm.extend_expired_positions()
|
||||
self.cm.commit()
|
||||
cp1.refresh_from_db()
|
||||
cp2.refresh_from_db()
|
||||
@@ -3408,12 +3411,13 @@ class CartAddonTest(CartTestMixin, TestCase):
|
||||
@classscope(attr='orga')
|
||||
def test_expand_expired_refresh_voucher(self):
|
||||
v = Voucher.objects.create(item=self.ticket, value=Decimal('20.00'), event=self.event, price_mode='set',
|
||||
valid_until=now() + timedelta(days=2), max_usages=1, redeemed=0)
|
||||
valid_until=now() + timedelta(days=2), max_usages=999, redeemed=0)
|
||||
cp1 = CartPosition.objects.create(
|
||||
expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time,
|
||||
item=self.ticket, price=Decimal('21.50'),
|
||||
event=self.event, cart_id=self.session_key, voucher=v
|
||||
)
|
||||
self.cm.extend_expired_positions()
|
||||
self.cm.commit()
|
||||
cp1.refresh_from_db()
|
||||
assert cp1.expires > now()
|
||||
|
||||
Reference in New Issue
Block a user