false,
'qrCodeHeight' => 75,
'qrCodeWidth' => 75,
'version' => -1,
'quietzoneSize' => 1
]);
$Epi = new Epirent();
$result = $Epi->requestEpiApi('/v1/packingnote/open?isco=False&cl=' . Epirent_Mandant);
$data_output = json_decode($result)->payload;
if (SortCheckIn == 2) {
// Prüfen, ob $data_output ein Array ist
if (is_array($data_output)) {
usort($data_output, function ($a, $b) {
// Konvertiere time_start von Millisekunden in Sekunden
$timeStartA = $a->time_end / 1000; // Zeit in Sekunden
$timeStartB = $b->time_end / 1000;
// Kombiniere date_start mit time_start
$datetimeA = strtotime($a->date_end) + $timeStartA;
$datetimeB = strtotime($b->date_end) + $timeStartB;
// Vergleich für die Sortierung
return $datetimeA <=> $datetimeB;
});
// Sortierte Daten ausgeben oder weiterverarbeiten
// print_r($data_output);
} else {
echo "Daten konnten nicht verarbeitet werden.";
}
}
foreach ($data_output as $packingjob) {
if ($packingjob->is_archived != true) {
//get OrderDetails
$result = $Epi->requestEpiApi('/v1/order/' . $packingjob->order_pk . '?cl=' . Epirent_Mandant);
$orderdetail_output = json_decode($result)->payload[0];
// get PackingNote Details
$PackingNoteDetailResult = $Epi->requestEpiApi('/v1/packingnote/' . $packingjob->primary_key . '?cl=' . Epirent_Mandant);
$PackingNote_data_output = json_decode($PackingNoteDetailResult)->payload[0];
$NachbereitungsTimeDetail;
foreach ($orderdetail_output->order_schedule as $scheduledetail) {
if (UsePackingNoteDateForCheckin) {
$tempTimeObject = new stdClass();
$tempTimeObject->date_end = $PackingNote_data_output->date_redelivery;
$tempTimeObject->time_end = $PackingNote_data_output->time_redelivery;
print($PackingNote_data_output->time_redelivery);
$NachbereitungsTimeDetail = $tempTimeObject;
} else {
if ($scheduledetail->name == Rueckpacken_Zeitvariable) {
$NachbereitungsTimeDetail = $scheduledetail;
}
}
}
//End Of get Order Details
if (CheckIn_UseDispoEndForRowMarking || ($NachbereitungsTimeDetail->date_start == null)) {
$date = new DateTime($packingjob->date_end);
} else {
$date = new DateTime($NachbereitungsTimeDetail->date_start);
}
$date->setTime(0, 0, 0);
$today = new DateTime();
$today->setTime(0, 0, 0);
$todayFilter = new DateTime();
$todayFilter->setTime(0, 0, 0);
if (CheckIn_FutureDays == -1 || $date <= ($todayFilter->modify('+' . CheckIn_FutureDays . ' day'))) {
//prüfe, ob entweder unbegrenzte (-1) Anzeige Aktiv ist, oder das Datum kleiner oder Gleich heute + Zukunftsspanne ist
if ($date == $today) {
echo "
";
}
if (Enable_QR_Code_CheckIn) {
echo "| " . ' ' . (new QRCode($options))->render($packingjob->packingnote_no) . " | ";
} else {
echo "" . $packingjob->packingnote_no . " | ";
}
echo "" . $packingjob->contact->name . " | ";
echo "" . $packingjob->event . " | ";
if(!HideCheckOutTimeOnCheckin){
if ($NachbereitungsTimeDetail->date_start != null) {
echo "";
if(!HideDispoTimes){
echo "" . date_format(new \DateTime($packingjob->date_start), 'd.m.Y') . " " . getTimeFromSeconds($packingjob->time_start) . " ";
}
echo "" . date_format(new \DateTime($NachbereitungsTimeDetail->date_start), 'd.m.Y') . " " . getTimeFromSeconds($NachbereitungsTimeDetail->time_start) . " | ";
} else if(!HideDispoTimes){
echo "" . date_format(new \DateTime($packingjob->date_start), 'd.m.Y') . " " . getTimeFromSeconds($packingjob->time_start) . " | ";
}
}
if ($NachbereitungsTimeDetail->date_end != null) {
echo "";
if(!HideDispoTimes){
echo "" . date_format(new \DateTime($packingjob->date_end), 'd.m.Y') . " " . getTimeFromSeconds($packingjob->time_end) . " ";
}
echo "" . date_format(new \DateTime($NachbereitungsTimeDetail->date_end), 'd.m.Y') . " " . getTimeFromSeconds($NachbereitungsTimeDetail->time_end) . " | ";
} else if(!HideDispoTimes){
echo "" . date_format(new \DateTime($packingjob->date_end), 'd.m.Y') . " " . getTimeFromSeconds($packingjob->time_end) . " | ";
}
echo "";
if ($packingjob->is_all_in ==0) {
echo "";
} else {
echo '';
echo "";
}
echo ( $packingjob->pieces_sum_total - abs($packingjob->is_all_out) - abs($packingjob->is_all_in)) . "/" . ($packingjob->pieces_sum_total - $packingjob ->is_all_out) . " (" . $packingjob->pieces_sum_total.")";
echo " | ";
if(ShowShippingIcons){
if(UseShippingStatus){
if(($PackingNote_data_output->status==ShippingInOrganizedStatus)||($PackingNote_data_output->status==ShippingOrganizedStatus)){
echo "";
}else{
echo " | ";
}
if($PackingNote_data_output->is_self_redeliver){
echo '';
} else{
if(preg_match('/'.KurierContainsText.'/i',$PackingNote_data_output->shipping_in)){
echo '';
}
if(preg_match('/'.SpeditionContainsText.'/i',$PackingNote_data_output->shipping_in)){
echo '';
}
if(preg_match('/'.DHLContainsText.'/i',$PackingNote_data_output->shipping_in)){
echo '';
}
if(preg_match('/'.LKWContainsText.'/i',$PackingNote_data_output->shipping_in)){
echo '';
}
if(preg_match('/'.TransporterContainsText.'/i',$PackingNote_data_output->shipping_in)){
echo '';
}
if(preg_match('/'.PKWContainsText.'/i',$PackingNote_data_output->shipping_in)){
echo '';
}
}
echo " | ";
}
echo "
";
}
}
}
}
function getTimeFromSeconds(string $timestring) {
$hours = floor($timestring / 3600);
$mins = floor($timestring / 60 % 60);
$secs = floor($timestring % 60);
$timeFormat = sprintf('%02d:%02d', $hours, $mins);
return $timeFormat;
}