Zeiterfassungs Update

* Implementerung Fahrzeugverwaltung
 * neue Buchungsart Fahrtenbuch
 * Diverse Bugfixes
 * Exportfunktionen für BMD
 * Neue Bauchungsarteigenschaft unbezahlt
 *
This commit is contained in:
Spitzer Daniel
2024-03-26 20:23:21 +01:00
parent 025522a740
commit 88702030e2
11 changed files with 538 additions and 7 deletions

View File

@@ -392,8 +392,10 @@ class TimerecordingReportController extends mfBaseController
$r = $this->request;
$mustSeconds = 0;
$isSeconds = 0;
$isSecondscleanarray = array();
$holiDays = 0;
$plusHours = 0;
$nlzTimes = array();
$daysum = array();
if (!$user_id) {
$user_id = $r->user_id;
@@ -405,6 +407,7 @@ class TimerecordingReportController extends mfBaseController
if ($employee) {
$holiDays = $employee[0]->holidays;
$plusHours = $employee[0]->plushours;
$overtime_now = $employee[0]->overtime_now;
$auto_workinghours = $employee[0]->auto_workinghours;
$startdate = $employee[0]->startdate;
}
@@ -451,6 +454,10 @@ class TimerecordingReportController extends mfBaseController
$lastdate = strtotime(date("Y-m-t", $datamonth));
$daycount = date("t", $datamonth);
$lastdate = strtotime(date("Y-m-d", $lastdate) . ' 23:59:59');
//Lastdate staticmust deleted
// $lastdate = strtotime("2024-03-22 23:59:59");
// $daycount=22;
$searchArray = ['user_id' => $user_id, 'start' => $firstdate, 'end' => $lastdate];
$timestamp = $firstdate;
@@ -493,13 +500,50 @@ class TimerecordingReportController extends mfBaseController
$timerecordings = TimerecordingModel::search($searchArray);
$responsecount = count($timerecordings);
$oldday = "";
$homeoffice = false;
$homeofficesum = 0;
$dietsum = 0;
$diet = 0;
$dietbase = TimerecordingBillingModel::$dieatBase;
foreach ($timerecordings as $timerecording):
$state = "";
$enddate = "";
$sum = "-";
$day = "";
$orderdate = $timerecording->start;
if ($oldday != date('Y-m-d', $timerecording->start)) {
if ($homeoffice == 1) {
$homeofficesum++;
$homeoffice = false;
}
if ($diet > 10800) {
if ($diet >= 43200) {
$diet = 43200;
}
$calcdiet = $dietbase / 12;
$calcdiet = ($diet / 3600) * $calcdiet;
$dietsum = $dietsum + $calcdiet;
}
$diet = 0;
}
if ($timerecording->homeoffice == 1 && (!$homeoffice || $homeoffice == 1)) {
$homeoffice = 1;
} else {
$homeoffice = 0;
}
if ($timerecording->businesstrip == 1 && $timerecording->timerecordingCategory->hourday == 1) {
$diet = $diet + $timerecording->end - $timerecording->start;
}
if ($timerecording->timerecordingCategory->hourday == 1) {
$date = date("d.m.Y", $timerecording->start);
$datadate = date("Y-m-d", $timerecording->start);
$start = date("H:i", $timerecording->start);
@@ -510,6 +554,18 @@ class TimerecordingReportController extends mfBaseController
$sum = sprintf("%02d", $hours) . ":" . sprintf("%02d", $minutes);
$day = $daysgerm[date("w", $timerecording->start)];
$isSeconds = $isSeconds + $seconds;
if ($isSecondscleanarray[$timerecording->timerecordingCategory->short]) {
$isSecondscleanarray[$timerecording->timerecordingCategory->short] = $isSecondscleanarray[$timerecording->timerecordingCategory->short] + $seconds;
} else {
$isSecondscleanarray[$timerecording->timerecordingCategory->short] = $seconds;
}
if ($timerecording->timerecordingCategory->short != "1000,1200,1400") {
$nlzTimes[$timerecording->id]['start'] = date("d.m.Y", $timerecording->start);
$nlzTimes[$timerecording->id]['end'] = date("d.m.Y", $timerecording->end);
$nlzTimes[$timerecording->id]['minutes'] = $seconds / 60;
$nlzTimes[$timerecording->id]['category'] = $timerecording->timerecordingCategory->name;
$nlzTimes[$timerecording->id]['categoryshort'] = $timerecording->timerecordingCategory->short;
}
} else if ($timerecording->timerecordingCategory->hourday == 2 || ($timerecording->timerecordingCategory->hourday == 3 && $timerecording->end)) {
$date = date("d.m.", $timerecording->start) . " - " . $daysgerm[date("w", $timerecording->end)] . " " . date("d.m.Y", $timerecording->end);
$datadate = date("Y-m-d", $timerecording->start);
@@ -558,11 +614,17 @@ class TimerecordingReportController extends mfBaseController
$sum = $sumdays . " Tage";
}
if (!$daysum[$timerecording->timerecordingCategory->short]) {
$daysum[$timerecording->timerecordingCategory->short] = $sumdays;
if (!$daysum[$timerecording->timerecordingCategory->name]) {
$daysum[$timerecording->timerecordingCategory->name] = $sumdays;
} else {
$daysum[$timerecording->timerecordingCategory->short] = $daysum[$timerecording->timerecordingCategory->short] + $sumdays;
$daysum[$timerecording->timerecordingCategory->name] = $daysum[$timerecording->timerecordingCategory->name] + $sumdays;
}
$nlzTimes[$timerecording->id]['start'] = date("d.m.Y", $timerecording->start);
$nlzTimes[$timerecording->id]['end'] = date("d.m.Y", $timerecording->end);
$nlzTimes[$timerecording->id]['days'] = $sumdays;
$nlzTimes[$timerecording->id]['category'] = $timerecording->timerecordingCategory->name;
$nlzTimes[$timerecording->id]['categoryshort'] = $timerecording->timerecordingCategory->short;
} else if ($timerecording->timerecordingCategory->hourday == 3 && !$timerecording->end) {
$date = date("d.m.Y", $timerecording->start) . " - " . $daysgerm[date("w", time())] . " " . date("d.m.Y", time());;
$datadate = date("Y-m-d", $timerecording->start);
@@ -653,13 +715,52 @@ class TimerecordingReportController extends mfBaseController
} else {
}
$oldday = date('Y-m-d', $timerecording->start);
endforeach;
if ($homeoffice == 1) {
$homeofficesum++;
$homeoffice = 0;
}
if ($diet > 10800) {
if ($diet >= 43200) {
$diet = 43200;
}
$calcdiet = $dietbase / 12;
$calcdiet = ($diet / 3600) * $calcdiet;
$dietsum = $dietsum + $calcdiet;
}
$summseconds = $isSeconds - $mustSeconds;
$isorder = $isSeconds;
if ($isSeconds < 0) {
$isSeconds = $isSeconds * -1;
$isSeconds = "-" . sprintf('%02dh:%02dm', floor($isSeconds / 3600), floor($isSeconds / 60 % 60));
} else {
$isSeconds = sprintf('%02dh:%02dm', floor($isSeconds / 3600), floor($isSeconds / 60 % 60));
}
$summsecondsorder = $summseconds;
if ($summseconds < 0) {
$summseconds = $summseconds * -1;
$summseconds = "-" . sprintf('%02dh:%02dm', floor($summseconds / 3600), floor($summseconds / 60 % 60));
} else {
$summseconds = sprintf('%02dh:%02dm', floor($summseconds / 3600), floor($summseconds / 60 % 60));
}
$json['success'] = true;
$json['time']['auto_workinghours'] = $auto_workinghours;
$json['time']['is'] = sprintf('%02dh:%02dm', floor($isSeconds / 3600), floor($isSeconds / 60 % 60));
$json['time']['is'] = $isSeconds;
$json['time']['isorder'] = $isorder;
$json['time']['isclean'] = $isSecondscleanarray;
$json['time']['must'] = sprintf('%02dh:%02dm', floor($mustSeconds / 3600), floor($mustSeconds / 60 % 60));
$json['time']['mustorder'] = $mustSeconds;
$json['time']['holidays'] = $holiDays;
$json['time']['plushours'] = sprintf('%02dh:%02dm', floor($plusHours / 3600), floor($plusHours / 60 % 60));
$json['time']['overtime_now'] = sprintf('%02dh:%02dm', floor($overtime_now / 3600), floor($overtime_now / 60 % 60));
$json['time']['overtime_noworder'] = $overtime_now;
$json['time']['homeoffice'] = $homeofficesum;
$json['time']['summseconds'] = $summseconds;
$json['time']['summsecondsorder'] = $summsecondsorder;
$json['time']['nlztimes'] = $nlzTimes;
$json['time']['diet'] = $dietsum;
$json['time']['daysum'] = $daysum;
$json['recordsFiltered'] = $responsecount;
$json['recordsTotal'] = $responsecount;