From e1620e740ddaa4fd208804eb0c10938dd200a8f8 Mon Sep 17 00:00:00 2001 From: Holger Trampe Date: Thu, 7 Oct 2021 19:11:44 +0200 Subject: [PATCH] Bug Gleitzeit --- adm/views.py | 3 +++ digitaleagentur/utils.py | 52 +++++++++++++++++++--------------------- timemanagement/views.py | 1 - 3 files changed, 27 insertions(+), 29 deletions(-) diff --git a/adm/views.py b/adm/views.py index 684f999..39651ea 100644 --- a/adm/views.py +++ b/adm/views.py @@ -29,6 +29,9 @@ from django.template.loader import render_to_string from cloud.models import DataFile import math import requests + +# TODO: ADM-Oberfläche Auswertung machen, an welchen Tagen eines Mitarbeiters auch eine Abwesenheit + ''' Prüfung, ob angemeldeter User Mitarbeiterstatus hat. IMMER PER DISPATCH EINBAUEN! ''' diff --git a/digitaleagentur/utils.py b/digitaleagentur/utils.py index c58ed79..1e461f2 100644 --- a/digitaleagentur/utils.py +++ b/digitaleagentur/utils.py @@ -48,53 +48,49 @@ def checkAbsenceWorkdayCollide(absence): # Alle einzelnen Tage der Abwesenheit werden durchgegangen: for day in daterange(absence.start, absence.end): # Arbeitstage an diesem Tag werden geladen - workdays = Workday.objects.filter(user=absence.user, start__day=absence.start.day, start__month=absence.start.month, start__year=absence.start.year) + workdays = Workday.objects.filter(user=absence.user, start__day=day.day, start__month=day.month, start__year=day.year) # Wenn es Arbeitstage gibt, dann wird geprüft, ob die Abwesenheit diesen verändert hat. for workday in workdays: # Arbeitstag in Tag ohne Zeit umwandeln # Wenn die Abwesenheit die Zeiterfassung NICHT ändert, muss diese ggf. geändert werden. Ansonsten bleibt sie gleich. - if absence.reason.is_time == False: + if absence.reason.is_time == True: # Prüfung, ob der Tag halb ist oder nicht. Wenn ja, dann Zielarbeitszeit des Tages um die Hälfte reduzieren. - if (workday.start.day == absence.start.day and workday.start.month == absence.start.month and workday.start.year == absence.start.year) or (workday.end.day == absence.end.day and workday.end.month == absence.end.month and workday.end.year == absence.end.year): - if(getIsAbsenceStartEndHalf(absence)): - workday.target = workday.target / 2 - workday.save() - # Ganzer Tag vorhanden, Arbeitstag wird als löschen markiert, aber nicht gelöscht - else: - workday.delflag = True - workday.save() - else: - # Sollte der ganze Tag mal als zu löschen markiert worden sein, wird dies hier zurückgenommen - if workday.delflag == True: - workday.delflag = False + #if (workday.start.day == absence.start.day and workday.start.month == absence.start.month and workday.start.year == absence.start.year) or (workday.end.day == absence.end.day and workday.end.month == absence.end.month and workday.end.year == absence.end.year): + if(getIsAbsenceStartEndHalf(absence)): + workday.target = workday.target / 2 workday.save() + # Sollte der ganze Tag mal als zu löschen markiert worden sein, wird dies hier zurückgenommen + if workday.delflag == True: + workday.delflag = False + workday.save() + else: + workday.delflag = True + workday.save() def checkAbsenceWorkdayCollideDelete(absence): # Alle einzelnen Tage der Abwesenheit werden durchgegangen: for day in daterange(absence.start, absence.end): # Arbeitstage an diesem Tag werden geladen - workdays = Workday.objects.filter(user=absence.user, start__day=absence.start.day, start__month=absence.start.month, start__year=absence.start.year) + workdays = Workday.objects.filter(user=absence.user, start__day=day.day, start__month=day.month, start__year=day.year) # Wenn es Arbeitstage gibt, dann wird geprüft, ob die Abwesenheit diesen verändert hat. for workday in workdays: # Arbeitstag in Tag ohne Zeit umwandeln # Wenn die Abwesenheit die Zeiterfassung NICHT ändert, muss diese ggf. geändert werden. Ansonsten bleibt sie gleich. - if absence.reason.is_time == False: + if absence.reason.is_time == True: # Prüfung, ob der Tag halb ist oder nicht. Wenn ja, dann Zielarbeitszeit des Tages um die Hälfte reduzieren. - if (workday.start.day == absence.start.day and workday.start.month == absence.start.month and workday.start.year == absence.start.year) or (workday.end.day == absence.end.day and workday.end.month == absence.end.month and workday.end.year == absence.end.year): - if(getIsAbsenceStartEndHalf(absence)): - workday.target = workday.target / 2 - workday.save() - # Ganzer Tag vorhanden, Arbeitstag wird als löschen markiert, aber nicht gelöscht - else: - workday.delflag = False - workday.save() - else: - # Sollte der ganze Tag mal als zu löschen markiert worden sein, wird dies hier zurückgenommen - if workday.delflag == True: - workday.delflag = False + #if (workday.start.day == absence.start.day and workday.start.month == absence.start.month and workday.start.year == absence.start.year) or (workday.end.day == absence.end.day and workday.end.month == absence.end.month and workday.end.year == absence.end.year): + if(getIsAbsenceStartEndHalf(absence)): + workday.target = workday.target / 2 workday.save() + # Sollte der ganze Tag mal als zu löschen markiert worden sein, wird dies hier zurückgenommen + if workday.delflag == True: + workday.delflag = False + workday.save() + else: + workday.delflag = True + workday.save() diff --git a/timemanagement/views.py b/timemanagement/views.py index b534670..8395fca 100644 --- a/timemanagement/views.py +++ b/timemanagement/views.py @@ -23,7 +23,6 @@ from django.template.loader import render_to_string from django.core.mail import send_mail from digitaleagentur.utils import * - # Load freedays def loadingFreeDays(plz): # Getting land