From 159eced9c7398aebd384dd0d0801245398c7175d Mon Sep 17 00:00:00 2001 From: erichhasl Date: Thu, 19 Jul 2018 23:17:16 +0200 Subject: [PATCH] sum umsatz script --- web_dev/sas_web/meingoethopia/admin.py | 31 ++++++++++++++++- .../templates/meingoethopia/umsatz_view.html | 33 +++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 web_dev/sas_web/meingoethopia/templates/meingoethopia/umsatz_view.html diff --git a/web_dev/sas_web/meingoethopia/admin.py b/web_dev/sas_web/meingoethopia/admin.py index 1ab6796..d90e218 100644 --- a/web_dev/sas_web/meingoethopia/admin.py +++ b/web_dev/sas_web/meingoethopia/admin.py @@ -86,6 +86,35 @@ def create_overview(modeladmin, request, queryset): create_overview.short_description = "Übersicht erstellen" +def sum_umsatz(modeladmin, request, queryset): + if request.POST.get('back'): + pass + else: + betriebe = queryset + klassen = {} + umsatz_gesamt = 0 + for b in betriebe: + u = sum([a.umsatz for a in b.betriebsabrechnung_set.all()]) + umsatz_gesamt += u + try: + u2 = u / b.angestellte.count() + except ZeroDivisionError: + u2 = 0 + for a in b.angestellte.all(): + if a.klasse not in klassen: + klassen[a.klasse] = u2 + else: + klassen[a.klasse] += u2 + anteile = {k: round((v / umsatz_gesamt) * 100, 2) for k, v in klassen.items()} + context = {'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME, + 'umsatz_gesamt': umsatz_gesamt, + 'klassen': anteile, + 'title': "Umsatzübersicht"} + return render(request, 'meingoethopia/umsatz_view.html', context) + +sum_umsatz.short_description = "Umsatzverteilung berechnen" + + class AufsichtInline(admin.TabularInline): model = Betriebsaufsicht extra = 0 @@ -125,7 +154,7 @@ class BetriebAdmin(admin.ModelAdmin): models.ManyToManyField: {'widget': forms.CheckboxSelectMultiple}, models.ForeignKey: {'widget': apply_select2(forms.Select)} } - actions = [ban_ip, create_overview] + actions = [ban_ip, create_overview, sum_umsatz] filter_horizontal = ('angestellte',) inlines = [BetriebsabrechnungInline, BetriebskreditInline, AufsichtInline] diff --git a/web_dev/sas_web/meingoethopia/templates/meingoethopia/umsatz_view.html b/web_dev/sas_web/meingoethopia/templates/meingoethopia/umsatz_view.html new file mode 100644 index 0000000..a72aded --- /dev/null +++ b/web_dev/sas_web/meingoethopia/templates/meingoethopia/umsatz_view.html @@ -0,0 +1,33 @@ +{% extends "admin/base_site.html" %} + +{% block content %} + +

Gesamtumsatz

+ +

Insgesamt wurden {{ umsatz_gesamt }} G-Mark erwirtschaftet.

+ +

Klassenverteilung

+ +

Bei einer Verteilung des Projektgewinns auf die Klassenkassen je nach Arbeitnehmer des +Betriebs, entsteht folgender Schlüssel.

+ + + + + + + {% for klasse, anteil in klassen.items %} + + + + + + {% endfor %} +
KlasseProzentualer Gewinnanteil
{{ klasse }}{{ anteil }} %
+ +
+ {% csrf_token %} + +
+ +{% endblock %}