Compare commits

...

7 Commits

Author SHA1 Message Date
Raphael Michel
77ffe55453 Bump version to 1.13.1 2018-03-07 10:37:23 +01:00
Raphael Michel
ab865e716f Allow admin to create invoice if invoice setting is set to "all orders" 2018-03-07 10:37:13 +01:00
Raphael Michel
0bf1832b23 Allow customer to manually generate invoices if order is older than invoice setting 2018-03-07 10:36:00 +01:00
Raphael Michel
650adb9235 pretixdroid: Online search should include name of parent position 2018-03-07 10:36:00 +01:00
Raphael Michel
e2d55fed0d Fix issue with fees without tax rules 2018-03-07 10:36:00 +01:00
Raphael Michel
aef751dbee Contact form data was only saved to session if invoice addresses where active 2018-03-07 10:36:00 +01:00
Raphael Michel
cd084fe8d1 Show "continue" instead of "checkout" also if order is free 2018-03-07 10:36:00 +01:00
7 changed files with 25 additions and 9 deletions

View File

@@ -1 +1 @@
__version__ = "1.13.0"
__version__ = "1.13.1"

View File

@@ -504,7 +504,7 @@ def _create_order(event: Event, email: str, positions: List[CartPosition], now_d
for fee in fees:
fee.order = order
fee._calculate_tax()
if not fee.tax_rule.pk:
if fee.tax_rule and not fee.tax_rule.pk:
fee.tax_rule = None # TODO: deprecate
fee.save()

View File

@@ -110,7 +110,7 @@ class OrderView(EventPermissionRequiredMixin, DetailView):
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
ctx['can_generate_invoice'] = invoice_qualified(self.order) and (
self.request.event.settings.invoice_generate in ('admin', 'user', 'paid')
self.request.event.settings.invoice_generate in ('admin', 'user', 'paid', 'True')
)
return ctx

View File

@@ -378,7 +378,10 @@ class ApiSearchView(ApiView):
)[:25]
else:
ops = qs.filter(
Q(secret__istartswith=query) | Q(attendee_name__icontains=query) | Q(order__code__istartswith=query)
Q(secret__istartswith=query)
| Q(attendee_name__icontains=query)
| Q(addon_to__attendee_name__icontains=query)
| Q(order__code__istartswith=query)
| Q(order__invoice_address__name__icontains=query)
)[:25]

View File

@@ -338,10 +338,10 @@ class QuestionsStep(QuestionsViewMixin, CartMixin, TemplateFlowStep):
_("We had difficulties processing your input. Please review the errors below."))
return self.render()
self.cart_session['email'] = self.contact_form.cleaned_data['email']
self.cart_session['contact_form_data'] = self.contact_form.cleaned_data
if request.event.settings.invoice_address_asked:
addr = self.invoice_form.save()
self.cart_session['invoice_address'] = addr.pk
self.cart_session['contact_form_data'] = self.contact_form.cleaned_data
update_tax_rates(
event=request.event,
@@ -408,6 +408,7 @@ class QuestionsStep(QuestionsViewMixin, CartMixin, TemplateFlowStep):
ctx['invoice_form'] = self.invoice_form
ctx['reverse_charge_relevant'] = self.eu_reverse_charge_relevant
ctx['cart'] = self.get_cart()
ctx['cart_session'] = self.cart_session
return ctx

View File

@@ -60,7 +60,7 @@
<div class="col-md-4 col-md-offset-4 col-xs-12">
<a class="btn btn-block btn-primary btn-lg"
href="{% eventurl request.event "presale:event.checkout.start" cart_namespace=cart_namespace %}">
{% if has_addon_choices %}
{% if has_addon_choices or cart.total == 0 %}
<i class="fa fa-shopping-cart"></i> {% trans "Continue" %}
</a>
{% else %}

View File

@@ -114,9 +114,14 @@ class OrderDetails(EventViewMixin, OrderDetailMixin, CartMixin, TemplateView):
[p.item.admission for p in ctx['cart']['positions']].count(True) > 1
)
ctx['invoices'] = list(self.order.invoices.all())
ctx['can_generate_invoice'] = invoice_qualified(self.order) and (
self.request.event.settings.invoice_generate == 'user'
can_generate_invoice = (
self.request.event.settings.get('invoice_generate') in ('user', 'True')
or (
self.request.event.settings.get('invoice_generate') == 'paid'
and self.order.status == Order.STATUS_PAID
)
)
ctx['can_generate_invoice'] = invoice_qualified(self.order) and can_generate_invoice
ctx['url'] = build_absolute_uri(
self.request.event, 'presale:event.order', kwargs={
'order': self.order.code,
@@ -409,7 +414,14 @@ class OrderInvoiceCreate(EventViewMixin, OrderDetailMixin, View):
return super().dispatch(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
if self.request.event.settings.get('invoice_generate') != 'user' or not invoice_qualified(self.order):
can_generate_invoice = (
self.request.event.settings.get('invoice_generate') in ('user', 'True')
or (
self.request.event.settings.get('invoice_generate') == 'paid'
and self.order.status == Order.STATUS_PAID
)
)
if not can_generate_invoice or not invoice_qualified(self.order):
messages.error(self.request, _('You cannot generate an invoice for this order.'))
elif self.order.invoices.exists():
messages.error(self.request, _('An invoice for this order already exists.'))