Zeiterfassung zurücksetzen und Ausgangsarbeitstage hinzugefügt
This commit is contained in:
parent
f775ef73a9
commit
fd0976c79b
|
|
@ -334,9 +334,10 @@ class UserTimeForm(forms.ModelForm):
|
|||
"wd_sa" : "Samstag",
|
||||
"wd_so" : "Sonntag",
|
||||
"usetime" : "Zeiterfassung" ,
|
||||
"startcount" : "Bisheriges Gleitzeitkonto",
|
||||
"usetime_start" : "Zeiterfassung ab"
|
||||
}
|
||||
fields = ["startdate", "usetime", "usetime_start", "wd_mo", "wd_tu", "wd_we", "wd_th", "wd_fr", "wd_sa", "wd_so", "loose_holidedate"]
|
||||
fields = ["startcount", "startdate", "usetime", "usetime_start", "wd_mo", "wd_tu", "wd_we", "wd_th", "wd_fr", "wd_sa", "wd_so", "loose_holidedate"]
|
||||
widgets = {
|
||||
"startdate" : DatePickerInput(options={"format":'DD.MM.YYYY', "locale":'de'}),
|
||||
"usetime_start" : DatePickerInput(options={"format":'DD.MM.YYYY', "locale":'de'})
|
||||
|
|
@ -346,6 +347,7 @@ class UserTimeForm(forms.ModelForm):
|
|||
super().__init__(*args, **kwargs)
|
||||
self.fields['startdate'].required = True
|
||||
self.fields['usetime_start'].required = False
|
||||
self.fields['startcount'].required = False
|
||||
self.fields['usetime'].required = False
|
||||
#self.fields['usetime'].widget.attrs['readonly'] = True
|
||||
#self.fields['usetime_start'].widget.attrs['readonly'] = True
|
||||
|
|
|
|||
|
|
@ -166,13 +166,25 @@
|
|||
<input type="hidden" name="form_type" value="contract">
|
||||
<h5>Zeiterfassung <small><i data-toggle="tooltip" data-placement="top" title="Legen Sie fest, ob dieser Mitarbeit seine Arbeitszeit erfassen soll." class="far fa-question-circle"></i></small></h5>
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<div class="col-2">
|
||||
{{usertime_form.usetime|as_crispy_field}}
|
||||
</div>
|
||||
<div class="col-5">
|
||||
<div class="col-3">
|
||||
{{usertime_form.usetime_start|as_crispy_field}}
|
||||
</div>
|
||||
<div class="col-3">
|
||||
{{usertime_form.startcount|as_crispy_field}}
|
||||
</div>
|
||||
{% if usertochangefull.usertime.usetime %}
|
||||
<div class="col-3">
|
||||
Zurücksetzen
|
||||
{% if request.user.profile.showtooltips %} <small><i data-toggle="tooltip" data-placement="top" title="Setzen Sie hier alle bisherigen Arbeitstage zurück." class="far fa-question-circle"></i></small>{% endif %}
|
||||
<br />
|
||||
<button type="button" onclick="javascript:$('#resetTimeManagementConfirm').modal('toggle');" class="btn btn-primary mt-2" >Zeiterfassung zurücksetzen</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<!--
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
|
|
@ -301,6 +313,81 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- RESET TIMEMANAGEMENT -->
|
||||
<div class="modal fade " id="resetTimeManagementConfirm" data-backdrop="static" data-keyboard="false">
|
||||
<div class="modal-dialog modal-xl">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Zeiterfassung zurücksetzen</h4>
|
||||
</div>
|
||||
<div class="modal-body" id="">
|
||||
<h3>Achtung!</h3>
|
||||
Hiermit löschen Sie unwiderruflich alle vergangenen Arbeitstage, welche über die Zeiterfassung erstellt wurden, bis zum Datum des Beginns der Zeiterfassung. Dieser Vorgang kann nicht rückgängig gemacht werden.<br />
|
||||
<hr>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" value="" id="confirmDel" onclick="javascript:toggleDoDelBtn()">
|
||||
<label class="form-check-label" for="confirmDel">
|
||||
Ja, alle Arbeitstage bis zum {{usertochangefull.usertime.usetime_start|date:"d.m.Y"}} von <b>{{user_fullname}}</b> löschen!
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Abbrechen</button>
|
||||
<button type="button" class="btn btn-primary" disabled="true" id="dodeltmdata" onclick="javascript:delTMData({{vieweduser}})">Bestätigen</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade " id="resetTimeManagementMessage" data-backdrop="static" data-keyboard="false">
|
||||
<div class="modal-dialog modal-xl">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Zeiterfassung zurücksetzen</h4>
|
||||
</div>
|
||||
<div class="modal-body" id="">
|
||||
Die Zeiterfassung von <b>{{user_fullname}}</b> wurde zurückgesetzt.
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal">Schließen</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
function toggleDoDelBtn(){
|
||||
if($('#confirmDel').prop('checked')){
|
||||
$('#dodeltmdata').attr('disabled', false);
|
||||
}
|
||||
else{
|
||||
$('#dodeltmdata').attr('disabled', true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function delTMData(userid){
|
||||
$("#resetTimeManagementConfirm").modal("toggle");
|
||||
$.ajax(
|
||||
{
|
||||
type: "GET",
|
||||
url: "{% url 'dasettings-ajax' %}",
|
||||
data:{
|
||||
action : "del_tmdata",
|
||||
userid: {{vieweduser}}
|
||||
},
|
||||
success: function( data )
|
||||
{
|
||||
$("#resetTimeManagementMessage").modal("toggle");
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
/*
|
||||
DYNAMIC HOLIDAY CHANGES
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import webcolors
|
|||
import datetime
|
||||
from datetime import date
|
||||
from standards.models import Standards
|
||||
from timemanagement.models import AbsenceReason, FreeDays
|
||||
from timemanagement.models import AbsenceReason, FreeDays, Workday
|
||||
from django.core.mail import send_mail
|
||||
from django.conf import settings
|
||||
import re, os, csv, requests
|
||||
|
|
@ -958,8 +958,15 @@ def SettingsAjaxRouter(request):
|
|||
"user_years" : UserYearAbsenceInfo.objects.filter(user=User.objects.get(pk=request.GET["userid"])),
|
||||
}
|
||||
return render(request, 'dasettings/data_absence_yeardata.html', context)
|
||||
# RESET TIMEMANAGEMENT
|
||||
elif request.method == "GET" and request.GET['action'] == "del_tmdata" :
|
||||
|
||||
|
||||
tempuser = User.objects.get(pk=request.GET['userid'])
|
||||
if(request.user.has_perm('users.usermanager') and request.user.profile.agency == tempuser.profile.agency):
|
||||
deluntildate = tempuser.usertime.usetime_start
|
||||
delete_days = Workday.objects.filter(user=tempuser, start__lt=deluntildate).delete()
|
||||
return JsonResponse({"success" : success, "data" : data})
|
||||
else:
|
||||
success = False
|
||||
return JsonResponse({"success" : success, "data" : data})
|
||||
|
|
@ -1063,6 +1070,7 @@ def UserProfileUpdate(request, pk, newuser=0):
|
|||
'usertime_form' : UserTimeForm(instance=UserTime.objects.get(user=usertochange)),
|
||||
'user_years' : UserYearAbsenceInfo.objects.filter(user=usertochange),
|
||||
'newuser' : newuser,
|
||||
'usertochangefull' : usertochange,
|
||||
'vieweduser' : usertochange.pk,
|
||||
'parentuser' : parentuser,
|
||||
'mail' : usertochange.email,
|
||||
|
|
@ -1086,6 +1094,7 @@ def UserProfileUpdate(request, pk, newuser=0):
|
|||
'usertime_form' : UserTimeForm(instance=UserTime.objects.get(user=usertochange)),
|
||||
'user_years' : UserYearAbsenceInfo.objects.filter(user=usertochange),
|
||||
'newuser' : newuser,
|
||||
'usertochangefull' : usertochange,
|
||||
'vieweduser' : usertochange.pk,
|
||||
'parentuser' : parentuser,
|
||||
'mail' : usertochange.email,
|
||||
|
|
@ -1114,6 +1123,7 @@ def UserProfileUpdate(request, pk, newuser=0):
|
|||
'newuser' : newuser,
|
||||
'vieweduser' : usertochange.pk,
|
||||
'parentuser' : parentuser,
|
||||
'usertochangefull' : usertochange,
|
||||
'mail' : usertochange.email,
|
||||
'imagelink' : usertochange.profile.get_photo_url,
|
||||
'profileform' : UserProfileForm(instance=usertochange.profile),
|
||||
|
|
@ -1124,6 +1134,7 @@ def UserProfileUpdate(request, pk, newuser=0):
|
|||
messages.success(request, f'Fehlerhafte Eingabe! Das Verfallsdatum muss im Format TAG.MONAT. sein und existieren!')
|
||||
context = {
|
||||
'active_link' : 'dasettings',
|
||||
'usertochangefull' : usertochange,
|
||||
'user_fullname' : user_fullname,
|
||||
'first_name' : usertochange.first_name,
|
||||
'last_name' : usertochange.last_name,
|
||||
|
|
@ -1159,6 +1170,7 @@ def UserProfileUpdate(request, pk, newuser=0):
|
|||
'newuser' : newuser,
|
||||
'mail' : usertochange.email,
|
||||
'vieweduser' : usertochange.pk,
|
||||
'usertochangefull' : usertochange,
|
||||
'imagelink' : usertochange.profile.get_photo_url,
|
||||
'profileform' : UserProfileForm(instance=usertochange.profile),
|
||||
'parentuser' : parentuser,
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -589,7 +589,7 @@ def loadaccounttime(user):
|
|||
today = date.today()
|
||||
workdays = Workday.objects.filter(user=user, start__lt=today).exclude(end=None)
|
||||
|
||||
finalaccounttimesum = datetime.timedelta(minutes=0)
|
||||
finalaccounttimesum = datetime.timedelta(minutes=0) + datetime.timedelta(hours=UserTime.objects.get(user=user).startcount)
|
||||
|
||||
|
||||
for workday in workdays:
|
||||
|
|
@ -613,7 +613,6 @@ def loadaccounttime(user):
|
|||
final_info = final_info * -1
|
||||
finalaccounttimesum -= datetime.timedelta(minutes=final_info)
|
||||
|
||||
|
||||
# Gesamtgleitzeit einmal schick darstellen mit rot und grün
|
||||
# Wenn GLeitzeit NEGATIV ist
|
||||
if(finalaccounttimesum.total_seconds() < 0):
|
||||
|
|
|
|||
|
|
@ -314,6 +314,7 @@ class UserTime(models.Model):
|
|||
wd_so = models.FloatField(default=0.0)
|
||||
loose_holidedate = models.CharField(default="30.04.", max_length=6)
|
||||
startdate = models.DateField(default=None, blank=True, null=True)
|
||||
startcount = models.FloatField(default=0.0)
|
||||
usetime = models.BooleanField(default=False)
|
||||
usetime_start = models.DateField(default=None, blank=True, null=True)
|
||||
'''
|
||||
|
|
|
|||
Loading…
Reference in New Issue