sum umsatz script
This commit is contained in:
@@ -86,6 +86,35 @@ def create_overview(modeladmin, request, queryset):
|
|||||||
create_overview.short_description = "Übersicht erstellen"
|
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):
|
class AufsichtInline(admin.TabularInline):
|
||||||
model = Betriebsaufsicht
|
model = Betriebsaufsicht
|
||||||
extra = 0
|
extra = 0
|
||||||
@@ -125,7 +154,7 @@ class BetriebAdmin(admin.ModelAdmin):
|
|||||||
models.ManyToManyField: {'widget': forms.CheckboxSelectMultiple},
|
models.ManyToManyField: {'widget': forms.CheckboxSelectMultiple},
|
||||||
models.ForeignKey: {'widget': apply_select2(forms.Select)}
|
models.ForeignKey: {'widget': apply_select2(forms.Select)}
|
||||||
}
|
}
|
||||||
actions = [ban_ip, create_overview]
|
actions = [ban_ip, create_overview, sum_umsatz]
|
||||||
filter_horizontal = ('angestellte',)
|
filter_horizontal = ('angestellte',)
|
||||||
inlines = [BetriebsabrechnungInline, BetriebskreditInline, AufsichtInline]
|
inlines = [BetriebsabrechnungInline, BetriebskreditInline, AufsichtInline]
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
{% extends "admin/base_site.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<h2>Gesamtumsatz</h2>
|
||||||
|
|
||||||
|
<p>Insgesamt wurden {{ umsatz_gesamt }} G-Mark erwirtschaftet.</p>
|
||||||
|
|
||||||
|
<h2>Klassenverteilung</h2>
|
||||||
|
|
||||||
|
<p>Bei einer Verteilung des Projektgewinns auf die Klassenkassen je nach Arbeitnehmer des
|
||||||
|
Betriebs, entsteht folgender Schlüssel.</p>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Klasse</th>
|
||||||
|
<th>Prozentualer Gewinnanteil</th>
|
||||||
|
</tr>
|
||||||
|
{% for klasse, anteil in klassen.items %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ klasse }}</td>
|
||||||
|
<td>{{ anteil }} %</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<form action="" method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
<input type="submit" value="Zurück">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
Reference in New Issue
Block a user