diff --git a/src/backoffice/templates/tickets/scan.html b/src/backoffice/templates/info_desk/scan.html
similarity index 68%
rename from src/backoffice/templates/tickets/scan.html
rename to src/backoffice/templates/info_desk/scan.html
index 692d74a4..628d2629 100644
--- a/src/backoffice/templates/tickets/scan.html
+++ b/src/backoffice/templates/info_desk/scan.html
@@ -27,7 +27,6 @@
{% if ticket %}
-
@@ -110,7 +109,61 @@
{% endif %}
+
+
+
+{% if view.order_search %}
+
+ {% if order %}
+
+ Order #{{ order.id }}
+
+
+
+
+ Total
+ |
+ {{ order.total }} DKK
+ |
+
+ Paid?
+ |
+ {{ order.paid }}
+
+ |
+
+ Payment type
+ |
+ {{ order.get_payment_method_display }}
+
+ |
+
+ {% if not order.paid and order.payment_method == order.CASH %}
+
+ {% endif %}
+
+ {% else %}
+
+ Order not found...
+
+ {% endif %}
+
+ Clear
+
+{% endif %}
diff --git a/src/backoffice/urls.py b/src/backoffice/urls.py
index 86a4d1a5..dd6fefd5 100644
--- a/src/backoffice/urls.py
+++ b/src/backoffice/urls.py
@@ -7,9 +7,11 @@ app_name = "backoffice"
urlpatterns = [
path("", BackofficeIndexView.as_view(), name="index"),
# infodesk
- path(
- "tickets/", include([path("", ScanTicketsView.as_view(), name="scan_tickets")])
- ),
+ path("infodesk/", include(
+ [
+ path("", ScanTicketsView.as_view(), name="scan_tickets"),
+ ]
+ )),
path("product_handout/", ProductHandoutView.as_view(), name="product_handout"),
path("badge_handout/", BadgeHandoutView.as_view(), name="badge_handout"),
path("ticket_checkin/", TicketCheckinView.as_view(), name="ticket_checkin"),
diff --git a/src/backoffice/views.py b/src/backoffice/views.py
index b9817b80..a689a523 100644
--- a/src/backoffice/views.py
+++ b/src/backoffice/views.py
@@ -2,7 +2,7 @@ import logging, os
from itertools import chain
import qrcode
-from django.contrib.auth.mixins import PermissionRequiredMixin, UserPassesTestMixin
+from django.contrib.auth.mixins import PermissionRequiredMixin, UserPassesTestMixin, LoginRequiredMixin
from django.contrib.auth.models import User
from django.views.generic import TemplateView, ListView, DetailView
from django.views.generic.edit import CreateView, UpdateView, DeleteView
@@ -565,10 +565,12 @@ def _ticket_getter_by_pk(pk):
pass
-class ScanTicketsView(TemplateView):
- template_name = "tickets/scan.html"
+class ScanTicketsView(LoginRequiredMixin, InfoTeamPermissionMixin, CampViewMixin,TemplateView):
+ template_name = "info_desk/scan.html"
ticket = None
+ order = None
+ order_search = False
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
@@ -589,6 +591,9 @@ class ScanTicketsView(TemplateView):
else:
messages.warning(self.request, "Ticket not found!")
+ elif self.order_search:
+ context['order'] = self.order
+
return context
def post(self, request, **kwargs):
@@ -596,6 +601,15 @@ class ScanTicketsView(TemplateView):
self.ticket = self.check_in_ticket(request)
elif 'badge_ticket_id' in request.POST:
self.ticket = self.hand_out_badge(request)
+ elif 'find_order_id' in request.POST:
+ self.order_search = True
+ try:
+ order_id = self.request.POST.get('find_order_id')
+ self.order = Order.objects.get(id=order_id)
+ except Order.DoesNotExist:
+ pass
+ elif 'mark_as_paid' in request.POST:
+ self.mark_order_as_paid(request)
return super().get(request, **kwargs)
@@ -614,3 +628,8 @@ class ScanTicketsView(TemplateView):
ticket_to_handout_badge_for.save()
messages.info(request, "Badge marked as handed out!")
return ticket_to_handout_badge_for
+
+ def mark_order_as_paid(self, request):
+ order = Order.objects.get(id=request.POST.get('mark_as_paid'))
+ order.mark_as_paid()
+ messages.success(request, "Order #{} has been marked as paid!".format(order.id))