Bug Gleitzeit

This commit is contained in:
Holger Trampe 2021-10-07 19:11:44 +02:00
parent c31d329e4a
commit e1620e740d
3 changed files with 27 additions and 29 deletions

View File

@ -29,6 +29,9 @@ from django.template.loader import render_to_string
from cloud.models import DataFile from cloud.models import DataFile
import math import math
import requests 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! Prüfung, ob angemeldeter User Mitarbeiterstatus hat. IMMER PER DISPATCH EINBAUEN!
''' '''

View File

@ -48,53 +48,49 @@ def checkAbsenceWorkdayCollide(absence):
# Alle einzelnen Tage der Abwesenheit werden durchgegangen: # Alle einzelnen Tage der Abwesenheit werden durchgegangen:
for day in daterange(absence.start, absence.end): for day in daterange(absence.start, absence.end):
# Arbeitstage an diesem Tag werden geladen # 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. # Wenn es Arbeitstage gibt, dann wird geprüft, ob die Abwesenheit diesen verändert hat.
for workday in workdays: for workday in workdays:
# Arbeitstag in Tag ohne Zeit umwandeln # Arbeitstag in Tag ohne Zeit umwandeln
# Wenn die Abwesenheit die Zeiterfassung NICHT ändert, muss diese ggf. geändert werden. Ansonsten bleibt sie gleich. # 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. # 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 (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)): if(getIsAbsenceStartEndHalf(absence)):
workday.target = workday.target / 2 workday.target = workday.target / 2
workday.save() 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 # Sollte der ganze Tag mal als zu löschen markiert worden sein, wird dies hier zurückgenommen
if workday.delflag == True: if workday.delflag == True:
workday.delflag = False workday.delflag = False
workday.save() workday.save()
else:
workday.delflag = True
workday.save()
def checkAbsenceWorkdayCollideDelete(absence): def checkAbsenceWorkdayCollideDelete(absence):
# Alle einzelnen Tage der Abwesenheit werden durchgegangen: # Alle einzelnen Tage der Abwesenheit werden durchgegangen:
for day in daterange(absence.start, absence.end): for day in daterange(absence.start, absence.end):
# Arbeitstage an diesem Tag werden geladen # 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. # Wenn es Arbeitstage gibt, dann wird geprüft, ob die Abwesenheit diesen verändert hat.
for workday in workdays: for workday in workdays:
# Arbeitstag in Tag ohne Zeit umwandeln # Arbeitstag in Tag ohne Zeit umwandeln
# Wenn die Abwesenheit die Zeiterfassung NICHT ändert, muss diese ggf. geändert werden. Ansonsten bleibt sie gleich. # 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. # 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 (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)): if(getIsAbsenceStartEndHalf(absence)):
workday.target = workday.target / 2 workday.target = workday.target / 2
workday.save() 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 # Sollte der ganze Tag mal als zu löschen markiert worden sein, wird dies hier zurückgenommen
if workday.delflag == True: if workday.delflag == True:
workday.delflag = False workday.delflag = False
workday.save() workday.save()
else:
workday.delflag = True
workday.save()

View File

@ -23,7 +23,6 @@ from django.template.loader import render_to_string
from django.core.mail import send_mail from django.core.mail import send_mail
from digitaleagentur.utils import * from digitaleagentur.utils import *
# Load freedays # Load freedays
def loadingFreeDays(plz): def loadingFreeDays(plz):
# Getting land # Getting land