add dialog to show accounting data
This commit is contained in:
		
							
								
								
									
										48
									
								
								billard/templates/billard/accounting.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								billard/templates/billard/accounting.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
				
			|||||||
 | 
					{% extends 'billard/base.html' %}
 | 
				
			||||||
 | 
					{% load display_client %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% block title %}Accounting Data{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% block content %}
 | 
				
			||||||
 | 
					{% if not locations|length_is:"1" %}
 | 
				
			||||||
 | 
					    <form action="accounting" method="post" id="location-form">
 | 
				
			||||||
 | 
					{% csrf_token %}
 | 
				
			||||||
 | 
					        <div id="location-selector" class="alert">
 | 
				
			||||||
 | 
					            <select class="form-control" form="location-form" name="location-selector" id="location-select">
 | 
				
			||||||
 | 
					{% for loc in locations %}
 | 
				
			||||||
 | 
					                <option value="{{ loc.id }}"{%  if loc.id == location_id %} selected{% endif %}>{{ loc.code }} - {{ loc.name }}</option>
 | 
				
			||||||
 | 
					{% endfor %}
 | 
				
			||||||
 | 
					            </select>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					    </form>
 | 
				
			||||||
 | 
					{% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <div class="alert alert-success" role="alert">Gesamt-Summe: {{ acc_sum }}</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <table class="table">
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <th>Start-Datum:</th>
 | 
				
			||||||
 | 
					            <th>Stop-Datum:</th>
 | 
				
			||||||
 | 
					            <th>Preis Normal:</th>
 | 
				
			||||||
 | 
					            <th>Preis Happy Hour:</th>
 | 
				
			||||||
 | 
					            <th>Preis gesamt:</th>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					{% for acc in accounting %}
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td>{{ acc.time_from }}</td>
 | 
				
			||||||
 | 
					            <td>{{ acc.time_to }}</td>
 | 
				
			||||||
 | 
					            <td>{{ acc.prize_normal }}</td>
 | 
				
			||||||
 | 
					            <td>{{ acc.prize_hh }}</td>
 | 
				
			||||||
 | 
					            <td>{{ acc.prize }}</td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					{% endfor %}
 | 
				
			||||||
 | 
					    </table>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <form action="accounting" method="post" id="accounting">
 | 
				
			||||||
 | 
					{% csrf_token %}
 | 
				
			||||||
 | 
					        <input type="hidden" name="location-selector" value="{{ location_id }}">
 | 
				
			||||||
 | 
					        <input type="hidden" name="accountings" value="{{ acc_ids }}">
 | 
				
			||||||
 | 
					        <button type="submit" class="btn btn-default">Abrechnen</button>
 | 
				
			||||||
 | 
					    </form>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% endblock %}
 | 
				
			||||||
@@ -29,6 +29,7 @@
 | 
				
			|||||||
            <div id="navbar" class="collapse navbar-collapse">
 | 
					            <div id="navbar" class="collapse navbar-collapse">
 | 
				
			||||||
                <ul class="nav navbar-nav">
 | 
					                <ul class="nav navbar-nav">
 | 
				
			||||||
                    <li class="{% ifequal request.path '/billard/' %}active{% endifequal %}"><a href="{% url "carom_index" %}">Tische</a></li>
 | 
					                    <li class="{% ifequal request.path '/billard/' %}active{% endifequal %}"><a href="{% url "carom_index" %}">Tische</a></li>
 | 
				
			||||||
 | 
					                    <li class="{% ifequal request.path '/billard/accounting' %}active{% endifequal %}"><a href="{% url "accounting" %}">Abrechnung</a></li>
 | 
				
			||||||
{% if user.is_superuser %}
 | 
					{% if user.is_superuser %}
 | 
				
			||||||
                    <li class="{% ifequal request.path '/logout/' %}active{% endifequal %}"><a href="/admin/">Administration</a></li>
 | 
					                    <li class="{% ifequal request.path '/logout/' %}active{% endifequal %}"><a href="/admin/">Administration</a></li>
 | 
				
			||||||
{% endif %}
 | 
					{% endif %}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,6 +10,7 @@ urlpatterns = [
 | 
				
			|||||||
    url(r'^(?P<pk>[0-9]+)/$', views.LocationDataDetailView.as_view(), name='detail'),
 | 
					    url(r'^(?P<pk>[0-9]+)/$', views.LocationDataDetailView.as_view(), name='detail'),
 | 
				
			||||||
    url(r'api/v1/', include(router.urls)),
 | 
					    url(r'api/v1/', include(router.urls)),
 | 
				
			||||||
    url(r'process_locationdata', views.process_locationdata, name='process_locationdata'),
 | 
					    url(r'process_locationdata', views.process_locationdata, name='process_locationdata'),
 | 
				
			||||||
 | 
					    url(r'accounting', views.accounting, name='accounting'),
 | 
				
			||||||
    url(r'accountmodal$', views.accountmodalview, name='accountmodal'),
 | 
					    url(r'accountmodal$', views.accountmodalview, name='accountmodal'),
 | 
				
			||||||
    url(r'accoutmodal/confirm/(?P<pk>[0-9]+)$', views.accountmodalconfirmview, name="accountmodalconfirm")
 | 
					    url(r'accoutmodal/confirm/(?P<pk>[0-9]+)$', views.accountmodalconfirmview, name="accountmodalconfirm")
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ from django.shortcuts import render, redirect
 | 
				
			|||||||
from django.views import generic
 | 
					from django.views import generic
 | 
				
			||||||
from django.views.generic.detail import DetailView
 | 
					from django.views.generic.detail import DetailView
 | 
				
			||||||
from django.contrib.auth.decorators import login_required
 | 
					from django.contrib.auth.decorators import login_required
 | 
				
			||||||
from django.db.models import Min
 | 
					from django.db.models import Min, Sum
 | 
				
			||||||
from django.http import HttpResponse
 | 
					from django.http import HttpResponse
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -53,6 +53,51 @@ def accountmodalconfirmview(request, pk):
 | 
				
			|||||||
    return redirect('carom_index')
 | 
					    return redirect('carom_index')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@login_required
 | 
				
			||||||
 | 
					def accounting(request):
 | 
				
			||||||
 | 
					    if request.method == 'GET':
 | 
				
			||||||
 | 
					        template = 'billard/accounting.html'
 | 
				
			||||||
 | 
					        loc = None
 | 
				
			||||||
 | 
					        min_loc = Location.objects.filter(users__id=request.user.id).aggregate(Min('id'))['id__min']
 | 
				
			||||||
 | 
					        if 'loc' in request.GET:
 | 
				
			||||||
 | 
					            loc = request.GET['loc']
 | 
				
			||||||
 | 
					        if not Location.objects.filter(users__id=request.user.id).filter(id=loc).exists():
 | 
				
			||||||
 | 
					            resp = redirect('accounting')
 | 
				
			||||||
 | 
					            if min_loc is not None:
 | 
				
			||||||
 | 
					                resp['Location'] += '?loc={}'.format(str(min_loc))
 | 
				
			||||||
 | 
					                request.session['loc'] = str(min_loc)
 | 
				
			||||||
 | 
					                return resp
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                return render(request, accounting)
 | 
				
			||||||
 | 
					        if loc is None:
 | 
				
			||||||
 | 
					            loc = min_loc
 | 
				
			||||||
 | 
					        locations = Location.objects.filter(users__id=request.user.id).order_by('code')
 | 
				
			||||||
 | 
					        acc = Accounting.objects.filter(billed=False).exclude(time_to__isnull=True).\
 | 
				
			||||||
 | 
					            filter(desk__client__location_id=loc).order_by('-time_from')
 | 
				
			||||||
 | 
					        acc_sum = acc.aggregate(Sum('prize'))
 | 
				
			||||||
 | 
					        acc_ids = list()
 | 
				
			||||||
 | 
					        for a in acc:
 | 
				
			||||||
 | 
					            acc_ids.append(a.id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        context = {
 | 
				
			||||||
 | 
					            'location_id': int(loc),
 | 
				
			||||||
 | 
					            'locations': locations,
 | 
				
			||||||
 | 
					            'accounting': acc,
 | 
				
			||||||
 | 
					            'acc_ids': acc_ids,
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if acc_sum['prize__sum'] is None:
 | 
				
			||||||
 | 
					            context['acc_sum'] = 0
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            context['acc_sum'] = acc_sum['prize__sum']
 | 
				
			||||||
 | 
					        return render(request, template_name=template, context=context)
 | 
				
			||||||
 | 
					    if request.method == 'POST':
 | 
				
			||||||
 | 
					        loc = request.POST['location-selector']
 | 
				
			||||||
 | 
					        request.session['loc'] = str(loc)
 | 
				
			||||||
 | 
					        resp = redirect('accounting')
 | 
				
			||||||
 | 
					        resp['Location'] += '?loc={}'.format(str(loc))
 | 
				
			||||||
 | 
					        return resp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@login_required
 | 
					@login_required
 | 
				
			||||||
def index(request):
 | 
					def index(request):
 | 
				
			||||||
    if request.method == 'GET':
 | 
					    if request.method == 'GET':
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user