Automatismen Zeiterfassung DONE
This commit is contained in:
parent
2059671f3c
commit
a70a4e8f6c
|
|
@ -1,5 +1,5 @@
|
|||
from datetime import timedelta
|
||||
|
||||
from timemanagement.models import *
|
||||
'''
|
||||
|
||||
Hier sind alle Methoden gesammelt, die bei der Zeiterfassung eine Rolle spielen.
|
||||
|
|
@ -25,6 +25,18 @@ from datetime import timedelta
|
|||
True -> Ist nur ein halber Tag
|
||||
False -> Ist ein ganzer Tag
|
||||
|
||||
|
||||
isfreedaycheck()
|
||||
- Gibt True/False zurück, wenn der übergebene Tag innerhalb oder an einem Feiertag/freien Tag der Agentur lirgt.
|
||||
|
||||
@param
|
||||
user - Benutzer, um über user.profile.agency die entsprechende Agentur abzufragen
|
||||
day - Tag, welcher geprüft werden soll
|
||||
|
||||
@return:
|
||||
True -> Übergebener Tag ist kein freier Tag oder kein Feiertag
|
||||
False -> Übergebener Tag ist ein freier Tag oder ein Feiertag
|
||||
|
||||
'''
|
||||
|
||||
# Gibt die Woche als Wochentage zurück
|
||||
|
|
@ -38,4 +50,15 @@ def getIsAbsenceStartEndHalf(absence):
|
|||
if absence.startday_info == "1" or absence.startday_info == "2" or absence.endday_info == "1" or absence.endday_info == "2":
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
return False
|
||||
|
||||
# Gibt True zurück, wenn dieser Tag nicht an einem freien Tag liegt.
|
||||
def isfreedaycheck(user, day):
|
||||
if len(FreeDays.objects.filter(agency=user.profile.agency, day=day)) > 0:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -36,13 +36,16 @@
|
|||
<tbody id="table_contacts" >
|
||||
{% for da in days_this_month %}
|
||||
|
||||
|
||||
{% isfreedayname request.user da as isfreename %}
|
||||
|
||||
{% getabscenceday request.user request.user da as abday %}
|
||||
<tr id="da_{{da|date:"d-m-y"}}"
|
||||
{% if da.weekday == 5 or da.weekday == 6 %}
|
||||
style="background-color: #d3d3d3;"
|
||||
{% elif abday != False %}
|
||||
style="background-color: {{abday.reason.color}}; color: #ffffff"
|
||||
{% elif isfreename != False %}
|
||||
style="background-color: #d3d3d3;"
|
||||
{% else %}
|
||||
{% for workday in workdays %}
|
||||
{% if workday.start|date:"d-m-y" == da|date:"d-m-y" %}
|
||||
|
|
@ -61,9 +64,13 @@
|
|||
{{da|date:"d.m.y"}}
|
||||
</td>
|
||||
<!-- START -->
|
||||
<td {% if abday != False %} colspan="3" {% endif %}>
|
||||
{% if abday != False %}
|
||||
{{abday.reason}}
|
||||
<td {% if abday != False or isfreename != False %} colspan="3" {% endif %}>
|
||||
{% if abday != False or isfreename != False %}
|
||||
{% if isfreename != False %}
|
||||
{{isfreename}}
|
||||
{% else %}
|
||||
{{abday.reason}}
|
||||
{% endif %}
|
||||
{% if abday.start == da%}
|
||||
{% if abday.startday_info == "1" %}
|
||||
(nur Vormittags)
|
||||
|
|
@ -213,7 +220,7 @@
|
|||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
{% if abday == False %}
|
||||
{% if abday == False and isfreename == False %}
|
||||
<!-- ENDE -->
|
||||
<td>
|
||||
{% counterWDreset %}
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ from django.contrib.auth.models import User, Group
|
|||
from users.signals import adjust_group_notifications_permission
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from digitaleagentur.utils import *
|
||||
from digitaleagentur.timemanagement_utils import *
|
||||
from organizer.models import QuickLinks
|
||||
from areas.models import Areas
|
||||
from tasks.models import Tasks
|
||||
|
|
@ -1641,9 +1642,9 @@ def cronactionsdaily(request, code):
|
|||
if(getAbsenceForOneDay(user, yesterday) != False):
|
||||
targettworktime = targettworktime / 2
|
||||
day_half_found = True
|
||||
|
||||
|
||||
# Es wird nur ein Arbeitstag erstellt, wenn KEINE Abwesenheiten vorliegen und der Nutzer an diesem Tag arbeiten muss
|
||||
if(workdays_yesterday == 0 and (absencecheck(user, yesterday) == False or day_half_found) and targettworktime > 0.0 and user.usertime.usetime_start < today):
|
||||
if(workdays_yesterday == 0 and (absencecheck(user, yesterday) == False or day_half_found) and isfreedaycheck(user, yesterday) and targettworktime > 0.0 and user.usertime.usetime_start < today):
|
||||
workdaytemp = Workday(user=user, agency=user.profile.agency, start=datetime(yesterday.year, yesterday.month, yesterday.day, 8, 0), end=datetime(yesterday.year, yesterday.month, yesterday.day, 8, 0), target=targettworktime)
|
||||
workdaytemp.save()
|
||||
except:
|
||||
|
|
|
|||
Loading…
Reference in New Issue