1058 lines
58 KiB
PHP
1058 lines
58 KiB
PHP
<?php
|
|
/*=======================================================================
|
|
*
|
|
* disposition_appointments.php
|
|
*
|
|
* Autor: Marc Vollmann
|
|
*
|
|
=======================================================================*/
|
|
|
|
|
|
include_once ("../include/mcglobal.inc.php");
|
|
include_once ("../include/auth.inc.php");
|
|
include_once ("../include/inc_vehicle.inc.php");
|
|
include_once ("../include/inc_disposition.inc.php");
|
|
|
|
|
|
// Check HTTP-Parameters
|
|
getSecHttpVars("1",array("f_act", "customerId", "cscIdRoot", "cscIdActual",
|
|
"jbId", "csId", "ecoDayTimeArray", "ecoWeekdayArray", "ecoZipcode", "ecoNeededTimeUnits",
|
|
"sortSequence", "ecoServices", "ecoWeight", "ecoPositions", "maxLimitOfRows", "deliveryTimeValue",
|
|
"deactivateMenu", "day_from", "month_from", "year_from", "day_to", "month_to", "year_to",
|
|
"jbTimedFilter", "dateSelectionByCalendar", "futureDaysOffset"));
|
|
|
|
|
|
|
|
getLanguage(__FILE__);
|
|
$deactivateMenuStatic = "1";
|
|
include_once ("../admin/menu.php");
|
|
include_once ("../include/html.inc.php");
|
|
getCurrentScript(__FILE__);
|
|
|
|
// Check for authentication access and granted rights
|
|
$usrAccessArray["hq"] = "1"; $usrAccessArray["cs"] = "1";
|
|
// authCheckForAccess($hq_id, $usr_id, $emp_id, "1", $customerId, $cscIdRoot, $cscIdActual);
|
|
if ($userTypeName == "hq") :
|
|
authCheckEmployeeRights($emp_id, "0", "1");
|
|
authCheckEmployeeRights($emp_id, "4", "1");
|
|
endif;
|
|
|
|
// Init
|
|
$currentTimestamp = getDateTime("0");
|
|
$currentDay = getDateTime("3"); // "Y-m-d"
|
|
$currentTime = getDateTime("4"); // Current time ("H:i:s")
|
|
$currYear = getDateTime("year"); // Current year
|
|
$combinedJob = false;
|
|
$pageTitel = getLngt("TERMINVERGABE");
|
|
$output = "";
|
|
$errMsgArray = array();
|
|
|
|
|
|
// Get available vehicle data
|
|
$globalParArray = array($jbId, $csId, $ecoDayTimeArray, $ecoWeekdayArray, $ecoZipcode, $ecoNeededTimeUnits, $sortSequence, $ecoServices, $ecoWeight, $ecoPositions,
|
|
$maxLimitOfRows, $deliveryTimeValue, $deactivateMenu, $day_from, $month_from, $year_from, $day_to, $month_to, $year_to, $jbTimedFilter,
|
|
$dateSelectionByCalendar, $futureDaysOffset);
|
|
|
|
$retArray = getDispositionAppointments("3", $globalParArray);
|
|
|
|
$globalParArray = $retArray[0]; // Global parameters
|
|
$tmpArray = $retArray[1]; // Available vehicle data as array OR error string
|
|
|
|
list($jbId, $csId, $ecoDayTimeArray, $ecoWeekdayArray, $ecoZipcode, $ecoNeededTimeUnits, $sortSequence, $ecoServices, $ecoWeight, $ecoPositions,
|
|
$maxLimitOfRows, $deliveryTimeValue, $deactivateMenu, $day_from, $month_from, $year_from, $day_to, $month_to, $year_to, $jbTimedFilter,
|
|
$dateSelectionByCalendar, $currentTimestamp, $currentDay, $currentTime, $currYear, $combinedJob, $hourTimeUnits, $ecoDayClockTimes,
|
|
$jbOrdertime, $ecoCapacityMax, $ecoSummatedNeededTimeUnits,$ecoHasWholeDayRequest, $ecoSrvpId, $ecoSrvzId, $weekDayNames, $checkTotalweight,
|
|
$dispositionJbStatusMode, $ecoChildrenServices, $maskDisplayWholeDayAvoidingSingleDaytimes, $ecoIsInstallationJob, $ecoIsSpecialServiceJob,
|
|
$dispositionAllocationMode, $ecoChildrenTimeunitsArray, $jbIdChildren, $jbIdChildrenLen, $daytimeReadonlyArray) = $globalParArray;
|
|
|
|
// Check for ERRORS
|
|
if (!is_array($tmpArray)) :
|
|
if (!(strpos($tmpArray, "ERR:ZIPCODE_NOT_IN_ANY_ZONE") === FALSE)) :
|
|
$errMsgArray[] = getLngt("Die PLZ ist keiner Zone zugeordnet!") . " [" . $ecoZipcode . "]";
|
|
else :
|
|
$errMsgArray[] = getLngt("Bereichsfehler!");
|
|
endif;
|
|
endif;
|
|
$errMsgArrayLen = count($errMsgArray);
|
|
|
|
// DEBUG (Start)
|
|
$empIdRootAdmin = getEmpIdOfRootAdmin("hq");
|
|
$debug = false;
|
|
if ($empIdRootAdmin == $emp_id || $emp_id == "15795") :
|
|
$debug = true;
|
|
endif;
|
|
// DEBUG (END)
|
|
|
|
// Write logdata into log database for calling reservation page
|
|
if ($jbId != "") :
|
|
$parLogCallingReservationPage = getParameterValue("0", "DISPOSITION_LOG_PAGE_CALL_ENABLED", $hq_id);
|
|
if ($parLogCallingReservationPage == "1") :
|
|
// ZIP = Zipcode, CJ = Combined Job, WD = Whole day request
|
|
writeToLogDB("130",$hq_id,$jbId,$usr_id,"","",$csId,"ZIP=" . $ecoZipcode . "|ZONE=" . $ecoSrvzId . "|CJ=" . ($combinedJob ? "Y" : "N") . "|WD=" . ($ecoHasWholeDayRequest ? "Y" : "N"),"","",$emp_id);
|
|
endif;
|
|
endif;
|
|
|
|
|
|
if ($errMsgArrayLen == 0 && $csId != "" && $ecoZipcode != "" && $ecoNeededTimeUnits != "") :
|
|
|
|
if (is_array($tmpArray)) :
|
|
$tmpArrayLen = count($tmpArray);
|
|
|
|
// Get parameter for hiding rows looks like the same. They are different because of different vehicles, but one vehicle for the day and daytime shall be displayed only !!!!
|
|
$maskDispositionMultipleRowsDisabled = getParameterValue("0", "MASK_DISPOSITION_MULTIPLE_ROWS_DISABLED", $hq_id);
|
|
if ($maskDispositionMultipleRowsDisabled == "") : $maskDispositionMultipleRowsDisabled = getParameterValue("0", "MASK_DISPOSITION_MULTIPLE_ROWS_DISABLED", "0"); endif;
|
|
|
|
// Get parameter for hiding special columns in appointment list
|
|
if ($ecoHasWholeDayRequest && $maskDisplayWholeDayAvoidingSingleDaytimes == "1") :
|
|
$maskDispositionAppointmentsEnabled = getParameterValue("0", "MASK_DISPOSITION_WHOLE_DAY_APPOINTMENTS_ENABLED", $hq_id);
|
|
if ($maskDispositionAppointmentsEnabled == "") : $maskDispositionAppointmentsEnabled = getParameterValue("0", "MASK_DISPOSITION_WHOLE_DAY_APPOINTMENTS_ENABLED", "0"); endif;
|
|
else :
|
|
$maskDispositionAppointmentsEnabled = getParameterValue("0", "MASK_DISPOSITION_APPOINTMENTS_ENABLED", $hq_id);
|
|
if ($maskDispositionAppointmentsEnabled == "") : $maskDispositionAppointmentsEnabled = getParameterValue("0", "MASK_DISPOSITION_APPOINTMENTS_ENABLED", "0"); endif;
|
|
endif;
|
|
if ($maskDispositionAppointmentsEnabled == "") : $maskDispositionAppointmentsEnabled = "0,1,2,3,4,5"; endif; // Default
|
|
$maskDisplayedArray = array();
|
|
if ($maskDispositionAppointmentsEnabled != "") :
|
|
$maskDisplayedArray = spliti(",", $maskDispositionAppointmentsEnabled);
|
|
endif;
|
|
$maskDisplayedArrayLen = count($maskDisplayedArray);
|
|
|
|
// Get parameter for hiding daytime intervals (display whole day only) if eco (or combined job) is installation, but no special service job !!!!
|
|
$displayStatusDaytimeForInstallations = true;
|
|
if ($ecoIsInstallationJob && !$ecoIsSpecialServiceJob) :
|
|
$maskDispositionDaytimeForInstallationsDisabled = getParameterValue("0", "MASK_DISPOSITION_DAYTIMES_FOR_INSTALLATIONS_DISABLED", $hq_id);
|
|
if ($maskDispositionDaytimeForInstallationsDisabled == "") : $maskDispositionDaytimeForInstallationsDisabled = getParameterValue("0", "MASK_DISPOSITION_DAYTIMES_FOR_INSTALLATIONS_DISABLED", "0"); endif;
|
|
if ($maskDispositionDaytimeForInstallationsDisabled == "1") :
|
|
$displayStatusDaytimeForInstallations = false;
|
|
endif;
|
|
endif;
|
|
|
|
// Get parameter for setting "whole-day"-jobs in FDS or "green banner" !!!!
|
|
$wholeDayEcoWillBeSetInFDS = getParameterValue("0", "MASK_DISPOSITION_WHOLE_DAY_JOB_SET_IN_FDS", $hq_id);
|
|
if ($wholeDayEcoWillBeSetInFDS == "") : $wholeDayEcoWillBeSetInFDS = getParameterValue("0", "MASK_DISPOSITION_WHOLE_DAY_JOB_SET_IN_FDS", "0"); endif;
|
|
if ($wholeDayEcoWillBeSetInFDS == "") : $wholeDayEcoWillBeSetInFDS = "1"; endif; // Enabled by default, because parameter does not exist. Eco will be placed in FDS
|
|
|
|
// DEBUG (Start)
|
|
if ($debug) :
|
|
echo "currentTimestamp : " . $currentTimestamp . "<br>";
|
|
echo "jbId : " . $jbId . "<br>";
|
|
echo "csId : " . $csId . "<br>";
|
|
echo "ecoZipcode : " . $ecoZipcode . "<br>";
|
|
echo "jbOrdertime : " . $jbOrdertime . "<br>";
|
|
echo "jbTimedFilter : " . $jbTimedFilter . "<br>";
|
|
echo "hourTimeUnits : " . $hourTimeUnits . "<br>";
|
|
echo "ecoNeededTimeUnits : " . $ecoNeededTimeUnits . "<br>";
|
|
echo "sortSequence : " . $sortSequence . "<br>";
|
|
echo "ecoServices : " . $ecoServices . "<br>";
|
|
echo "ecoIsInstallationJob : " . ($ecoIsInstallationJob ? "YES" : "NO") . "<br>";
|
|
echo "ecoWeight : " . $ecoWeight . "<br>";
|
|
echo "ecoPositions : " . $ecoPositions . "<br>";
|
|
echo "maxLimitOfRows : " . $maxLimitOfRows . "<br>";
|
|
echo "deliveryTimeValue : " . $deliveryTimeValue . "<br>";
|
|
echo "ecoWeekdayArray : "; print_r($ecoWeekdayArray); echo "<br>";
|
|
echo "ecoDayTimeArray : "; print_r($ecoDayTimeArray); echo "<br>";
|
|
echo "daytimeReadonlyArray : "; print_r($daytimeReadonlyArray); echo "<br>";
|
|
echo "Uhrzeitenpaare : "; print_r($ecoDayClockTimes); echo "<br>";
|
|
echo "jbIdChildren : "; print_r($jbIdChildren); echo "<br>";
|
|
echo "jbIdChildrenLen : " . $jbIdChildrenLen . "<br>";
|
|
echo "ecoHasWholeDayRequest : " . ($ecoHasWholeDayRequest ? "WD YES" : "WD NO") . "<br>";
|
|
echo "fromDateRange : " . "NOT_NEEDED_HERE" . "<br>";
|
|
echo "toDateRange : " . "NOT_NEEDED_HERE" . "<br>";
|
|
echo "whereClause : " . "NOT_NEEDED_HERE" . "<br>";
|
|
echo "orderByClause : " . "NOT_NEEDED_HERE" . "<br>";
|
|
echo "Wochentage : "; print_r($weekDayNames); echo "<br>";
|
|
echo "checkTotalweight : " . $checkTotalweight . "<br>";
|
|
echo "ecoSrvpId : " . $ecoSrvpId . "<br>";
|
|
echo "ecoSrvzId : " . $ecoSrvzId . "<br>";
|
|
if ($maskDispositionServicezoneCapacityEnabled == "1") :
|
|
echo "Max. Kapazitäten : "; print_r($ecoCapacityMax); echo "<br>";
|
|
echo "Akt. Kapazitäten des gesamten Tages : "; print_r($ecoCapacityOccupied); echo "<br>";
|
|
endif;
|
|
if ($combinedJob) :
|
|
echo "ecoSummatedNeededTimeUnits : " . $ecoSummatedNeededTimeUnits . "<br>";
|
|
echo "ecoChildrenServices : " . $ecoChildrenServices . "<br>";
|
|
else :
|
|
echo "combined_job: NO<br>";
|
|
endif;
|
|
echo "dispositionJbStatusMode : " . $dispositionJbStatusMode . "<br>";
|
|
echo "maskDisplayWholeDayAvoidingSingleDaytimes : " . $maskDisplayWholeDayAvoidingSingleDaytimes . "<br>";
|
|
echo "ecoIsSpecialServiceJob : " . $ecoIsSpecialServiceJob . "<br>";
|
|
echo "dispositionAllocationMode : " . $dispositionAllocationMode . "<br>";
|
|
echo "maskDispositionMultipleRowsDisabled : " . $maskDispositionMultipleRowsDisabled . "<br>";
|
|
echo "maskDispositionAppointmentsEnabled : " . $maskDispositionAppointmentsEnabled . "<br>";
|
|
echo "maskDispositionDaytimeForInstallationsDisabled : " . $maskDispositionDaytimeForInstallationsDisabled . "<br>";
|
|
endif;
|
|
// DEBUG (END)
|
|
|
|
// Headline of the list
|
|
$outWidth = " width=\"100\" ";
|
|
$output .= "<table>";
|
|
$output .= "<tr>";
|
|
|
|
for ($i = 0; $i < $maskDisplayedArrayLen; $i++) :
|
|
if ($maskDisplayedArray[$i] == 0) :
|
|
$output .= "<td" . $outWidth . "><b>" . getLngt("Wochentag") . " </b></td><td" . $outWidth . "><b>" . getLngt("Datum") . " </b></td>";
|
|
endif;
|
|
if ($maskDisplayedArray[$i] == 1) :
|
|
$output .= "<td" . $outWidth . "><b>" . getLngt("Fahrzeug") . " </b></td>"; // SID
|
|
endif;
|
|
if ($maskDisplayedArray[$i] == 2) :
|
|
$output .= "<td" . $outWidth . "><b>" . getLngt("Tageszeit") . " </b></td>"; // Namen der Tageszeiten
|
|
endif;
|
|
if ($maskDisplayedArray[$i] == 3) :
|
|
$output .= "<td" . $outWidth . "><b>" . getLngt("Verf. Zeiteinheiten") . " </b></td>";
|
|
endif;
|
|
if ($maskDisplayedArray[$i] == 4) :
|
|
$output .= "<td" . $outWidth . "><b>" . getLngt("Startzeit") . " </b></td>";
|
|
endif;
|
|
if ($maskDisplayedArray[$i] == 5) :
|
|
$output .= "<td" . $outWidth . "><b>" . getLngt("Service") . " </b></td>";
|
|
endif;
|
|
if ($maskDisplayedArray[$i] == 6) :
|
|
$output .= "<td" . $outWidth . "><b>" . getLngt("Tageszeiten") . " </b></td>"; // Nummern der Tageszeiten
|
|
endif;
|
|
// ....
|
|
if ($maskDisplayedArray[$i] == 10) :
|
|
$output .= "<td" . $outWidth . "><b>" . getLngt("Tageszeit") . " </b></td>"; // Uhrzeiten der Tageszeiten
|
|
endif;
|
|
if ($maskDisplayedArray[$i] == 11) :
|
|
$output .= "<td" . $outWidth . "><b>" . " " . " </b></td>"; // Uhrzeiten der Tageszeiten
|
|
endif;
|
|
endfor;
|
|
|
|
$output .= "</tr>";
|
|
|
|
|
|
// Get parameter for displaying "whole day" link after "day" has changed [="0" <=> default] or after "day AND vehicle" [="1"] have changed only
|
|
$wholeDayEcoLinkDisplayMode = getParameterValue("0", "MASK_DISPOSITION_WHOLE_DAY_JOB_DISPLAY_MODE", $hq_id);
|
|
if ($wholeDayEcoLinkDisplayMode == "") : $wholeDayEcoLinkDisplayMode = getParameterValue("0", "MASK_DISPOSITION_WHOLE_DAY_JOB_DISPLAY_MODE", "0"); endif;
|
|
if ($wholeDayEcoLinkDisplayMode == "") : $wholeDayEcoLinkDisplayMode = "0"; endif;
|
|
|
|
// Get MASK parameter for value to be inserted in attribute "colspan" for "whole-day"-jobs
|
|
// (e.g. "5,0" <=> 5 cols before phrase "Ganztägig" and 0 cols after phrase and befor link "Reservierung")
|
|
$wholeDayEcoColspanValues = "2,0";
|
|
$parWholeDayEcoColspanValues = getParameterValue("0", "MASK_DISPOSITION_WHOLE_DAY_COLSPAN_VALUES", $hq_id);
|
|
if ($parWholeDayEcoColspanValues == "") : $parWholeDayEcoColspanValues = getParameterValue("0", "MASK_DISPOSITION_WHOLE_DAY_COLSPAN_VALUES", "0"); endif;
|
|
if ($parWholeDayEcoColspanValues != "") :
|
|
$wholeDayEcoColspanValues = $parWholeDayEcoColspanValues;
|
|
endif;
|
|
$wholeDayEcoColspanArray = spliti(",", $wholeDayEcoColspanValues);
|
|
|
|
// Get MASK parameter for JAVASCRIPT setting for function "reserveEco" or "reserveMultiEco"
|
|
$wholeDayEcoJsReserveParameter = getParameterValue("0", "MASK_DISPOSITION_WHOLE_DAY_JS_RESERVE_PAR", $hq_id);
|
|
if ($wholeDayEcoJsReserveParameter == "") : $wholeDayEcoJsReserveParameter = getParameterValue("0", "MASK_DISPOSITION_WHOLE_DAY_JS_RESERVE_PAR", "0"); endif;
|
|
if ($wholeDayEcoJsReserveParameter == "") : $wholeDayEcoJsReserveParameter = "1"; endif;
|
|
|
|
|
|
if ($tmpArrayLen > 0) :
|
|
$remMasterArray = array();
|
|
$remDay = "";
|
|
$remDaytime = "";
|
|
$remVehicle = "";
|
|
$firstRowWillBeDisplayed = true;
|
|
$displayDayInRow = true;
|
|
$wholeDayEcoReserveLink = "";
|
|
$displayWholeDayLinkIfatLeastOneDaytimeLinkDoesExist = false; // The whole day link has to appear only if at least one daytime link does exist
|
|
|
|
for ($i = 0; $i < $tmpArrayLen; $i++) :
|
|
$tmpArray2 = $tmpArray[$i];
|
|
$tmpArray2Len = count($tmpArray2);
|
|
|
|
// Get week day of the suggested date
|
|
$weekDay = date("w", mktime(0, 0, 0, substr($tmpArray2[0],5,2), substr($tmpArray2[0],8,2), substr($tmpArray2[0],0,4))); // 0 = Sunday, 1 = Monday, etc.
|
|
if ($weekDay == 0) : $weekDay = "7"; endif; // Reformat to 1 = Monday, ... , 7 = Sunday
|
|
|
|
// Check for week day is matching the selection
|
|
if (!(array_search($weekDay, $ecoWeekdayArray) === FALSE)) :
|
|
|
|
if ($ecoHasWholeDayRequest && $maskDisplayWholeDayAvoidingSingleDaytimes == "1") :
|
|
|
|
// **** DISPLAYING WHOLE DAY LINKS ONLY ****************************************************************************************************
|
|
|
|
$displayDayInRow = false;
|
|
if ($remDay != $tmpArray2[0]) :
|
|
$displayDayInRow = true;
|
|
endif;
|
|
|
|
// Day changed?
|
|
if (true || $dispositionUniqueDisplayArray[0] == "1") :
|
|
$tmpCmpLeft = $remDay;
|
|
$tmpCmpRight = $tmpArray2[0];
|
|
endif;
|
|
// Daytime changed?
|
|
if ($dispositionUniqueDisplayArray[1] == "1") :
|
|
$tmpCmpLeft .= $remDaytime;
|
|
$tmpCmpRight .= $tmpArray2[6];
|
|
endif;
|
|
// Vehicle changed?
|
|
if ($dispositionUniqueDisplayArray[2] == "1") :
|
|
$tmpCmpLeft .= $remVehicle;
|
|
$tmpCmpRight .= $tmpArray2[7];
|
|
endif;
|
|
|
|
// if ($tmpCmpLeft != $tmpCmpRight) :
|
|
if (!in_array($tmpCmpRight, $remMasterArray)) :
|
|
|
|
$output .= "<tr>";
|
|
if ($displayDayInRow) :
|
|
$output .= "<td>" . $weekDayNames[$weekDay - 1] . "</td>"; // Name of the week day
|
|
$output .= "<td>" . $tmpArray2[$maskDisplayedArray[0]] . "</td>";
|
|
else :
|
|
$output .= "<td colspan=\"2\"></td>";
|
|
endif;
|
|
for ($j = 1; $j < $maskDisplayedArrayLen; $j++) :
|
|
if ($maskDisplayedArray[$j] == 11) :
|
|
// Coloured background for service or delivery
|
|
$cellBgCol = "#88BB88";
|
|
$cellText = getLngt("LI");
|
|
if (((int)$tmpArray2[$maskDisplayedArray[$j]] & 2) == 2) :
|
|
$cellBgCol = "#55BB55";
|
|
$cellText = getLngt("MO");
|
|
endif;
|
|
$output .= "<td style=\"text-align:center;\">";
|
|
$output .= " <table><tr><td> </td><td style=\"width:30px; text-align:center; background-color:" . $cellBgCol . ";\">" . $cellText . "</td><td> </td></tr></table>";
|
|
$output .= "</td>";
|
|
elseif ($maskDisplayedArray[$j] == 10) :
|
|
// if ($wholeDayEcoColspanArray[0] != "" && is_numeric($wholeDayEcoColspanArray[0]) && $wholeDayEcoColspanArray[0] > 0) :
|
|
// $output .= "<td colspan=\"" . $wholeDayEcoColspanArray[0] . "\"" . "> </td>";
|
|
// endif;
|
|
$output .= "<td>" . getLngt("Ganztägig") . "</td>";
|
|
// if ($wholeDayEcoColspanArray[1] != "" && is_numeric($wholeDayEcoColspanArray[1]) && $wholeDayEcoColspanArray[1] > 0) :
|
|
// $output .= "<td colspan=\"" . $wholeDayEcoColspanArray[1] . "\"" . "> </td>";
|
|
// endif;
|
|
else :
|
|
$output .= "<td>" . $tmpArray2[$maskDisplayedArray[$j]] . "</td>";
|
|
endif;
|
|
endfor;
|
|
|
|
// If the current data come from an stored job in the database then use following link to move this job on the timeline regarding the selected suggested date
|
|
// if ($jbId != "" && (!$ecoIsSpecialServiceJob || ($ecoIsSpecialServiceJob && ($tmpArray2[6] == "0" || $tmpArray2[6] == "1")))) :
|
|
if ($jbId != "") :
|
|
if ($combinedJob) :
|
|
// Set string with starttimes for ALL jobs
|
|
// (e.g. 5 jobs [1001-1005] 12_03, 12_05, 13_04, 16_03, 17_01 => "1001;12;03;2014-01-17 12:30:00;2#1002;12;05;2014-01-17 12:50:00;2#1003;13;04;2014-01-17 13:40:00;3#1004;16;03;2014-01-17 16:30:00;12#1005;17;01;2014-01-17 17:10:00;3")
|
|
$tmpStartHour = intval($tmpArray2[8]);
|
|
$tmpStartHourUnit = intval($tmpArray2[9]);
|
|
|
|
$remNeededTimeUnits = $ecoNeededTimeUnits; // The following job has to use the needed timeunits of the job before to get the start time !!!!
|
|
|
|
$combinedJobStr = $jbId . ";" .$tmpStartHour . ";" . $tmpStartHourUnit . ";" . $tmpArray2[0] . " " . $tmpArray2[4] . ":00" . ";" . $ecoNeededTimeUnits; // Init with main job
|
|
for ($k = 0; $k < $jbIdChildrenLen; $k++) :
|
|
// Add timeunits of the job before to increase $tmpStartHour and $tmpStartHourUnit for current (child) job
|
|
for ($l = 0; $l < $remNeededTimeUnits; $l++) :
|
|
$tmpStartHourUnit++;
|
|
if ($tmpStartHourUnit == $hourTimeUnits) :
|
|
$tmpStartHour++;
|
|
$tmpStartHourUnit = 0;
|
|
endif;
|
|
endfor;
|
|
|
|
// Get timeunits of the current (child) job
|
|
$tmpTimeUnitsNeeded = $ecoChildrenTimeunitsArray[$jbIdChildren[$k]];
|
|
if ($tmpTimeUnitsNeeded != "" && is_numeric($tmpTimeUnitsNeeded)) :
|
|
$combinedJobStr .= "#" . $jbIdChildren[$k] . ";" . pad(strval($tmpStartHour),2) . ";" . pad(strval($tmpStartHourUnit),2) . ";" . $tmpArray2[0] . " " . pad(strval($tmpStartHour),2) . ":" . pad(strval(floor($tmpStartHourUnit * (60 / $hourTimeUnits))), 2) . ":00" . ";" . $tmpTimeUnitsNeeded;
|
|
$remNeededTimeUnits = $tmpTimeUnitsNeeded;
|
|
endif;
|
|
endfor;
|
|
|
|
$ecoReserveLink = "<td>" . "<a href=\"javascript:reserveMultiEco('" . $tmpArray2[7] . "','" . $tmpArray2[0] . "','" . $combinedJobStr . "','" . $tmpArray2[10] . "','WHOLE_DAY_MAKRO');\" >" . getLngt("Reservierung") . "</a>" . "</td>";
|
|
else :
|
|
$ecoNewOrdertime = $tmpArray2[0] . " " . $tmpArray2[4] . ":00"; // Needed to set the new ordertime to the existing job
|
|
$ecoReserveLink = "<td>" . "<a href=\"javascript:reserveEco('" . $jbId . "','" . $tmpArray2[7] . "','" . $tmpArray2[0] . "','" . $tmpArray2[8] . "','" . $tmpArray2[9] . "','" . $ecoNeededTimeUnits . "','" . $ecoNewOrdertime . "','1','" . $tmpArray2[10] . "','WHOLE_DAY_MAKRO','1');\" >" . getLngt("Reservierung") . "</a>" . "</td>";
|
|
endif;
|
|
|
|
$tmpEcoReserveLink = str_replace("WHOLE_DAY_MAKRO", "1", $ecoReserveLink); // Link is "whole day"
|
|
/*
|
|
if ($wholeDayEcoWillBeSetInFDS == "1") :
|
|
$tmpEcoReserveLink = str_replace("WHOLE_DAY_MAKRO", "0", $ecoReserveLink); // Link is NOT "whole day"
|
|
else :
|
|
$tmpEcoReserveLink = str_replace("WHOLE_DAY_MAKRO", "1", $ecoReserveLink); // Link is "whole day"
|
|
endif;
|
|
*/
|
|
if ($displayStatusDaytimeForInstallations) :
|
|
$output .= $tmpEcoReserveLink;
|
|
endif;
|
|
|
|
// Set whole day link if eco should be set on the FDS. Take care to take the earliest (daytime) interval being available.
|
|
if ($wholeDayEcoReserveLink == "") :
|
|
$tmpEcoReserveLink = str_replace("WHOLE_DAY_MAKRO", $wholeDayEcoJsReserveParameter, $ecoReserveLink); // Link is "whole day"
|
|
$wholeDayEcoReserveLink = $tmpEcoReserveLink;
|
|
endif;
|
|
endif;
|
|
$output .= "</tr>";
|
|
|
|
$remDay = $tmpArray2[0];
|
|
$remDaytime = $tmpArray2[6];
|
|
$remVehicle = $tmpArray2[7];
|
|
|
|
array_push($remMasterArray, $tmpCmpRight);
|
|
endif;
|
|
|
|
else :
|
|
|
|
// **** STANDARD DISPLAYING ****************************************************************************************************************
|
|
|
|
// Display link for whole-day
|
|
if ($dispositionAllocationMode == "0") :
|
|
$displayDayInRow = false;
|
|
endif;
|
|
if ($firstRowWillBeDisplayed) :
|
|
$displayDayInRow = true;
|
|
$firstRowWillBeDisplayed = false;
|
|
endif;
|
|
|
|
if ($dispositionAllocationMode == "0") :
|
|
$tmpDisplayWholeDayLink = ($remDay != "" && $tmpArray2[0] != "" && $remDay != $tmpArray2[0]); // Day changed?
|
|
if ($wholeDayEcoLinkDisplayMode == "1") :
|
|
$tmpDisplayWholeDayLink = $tmpDisplayWholeDayLink && (true); // Vehicle or other changed....?
|
|
endif;
|
|
|
|
if ($tmpDisplayWholeDayLink) :
|
|
if ($ecoHasWholeDayRequest) :
|
|
$output .= "</tr>";
|
|
|
|
// Whole day reservation link
|
|
if ($displayWholeDayLinkIfatLeastOneDaytimeLinkDoesExist) :
|
|
$output .= "<tr>";
|
|
if ($wholeDayEcoColspanArray[0] != "" && is_numeric($wholeDayEcoColspanArray[0]) && $wholeDayEcoColspanArray[0] > 0) :
|
|
$output .= "<td colspan=\"" . $wholeDayEcoColspanArray[0] . "\"" . "> </td>";
|
|
endif;
|
|
$output .= "<td>" . getLngt("Ganztägig") . "</td>";
|
|
if ($wholeDayEcoColspanArray[1] != "" && is_numeric($wholeDayEcoColspanArray[1]) && $wholeDayEcoColspanArray[1] > 0) :
|
|
$output .= "<td colspan=\"" . $wholeDayEcoColspanArray[1] . "\"" . "> </td>";
|
|
endif;
|
|
if ($jbId != "") :
|
|
if ($wholeDayEcoWillBeSetInFDS == "1" && $wholeDayEcoReserveLink != "") :
|
|
$output .= $wholeDayEcoReserveLink;
|
|
$wholeDayEcoReserveLink = "";
|
|
else :
|
|
$output .= "<td>" . "<a href=\"javascript:reserveWholeDayEcoNotForFDS('" . $jbId . "','" . $remDay . " 00:00:01" . "','1');\" >" . getLngt("Reservierung") . "</a>" . "</td>";
|
|
endif;
|
|
endif;
|
|
$output .= "</tr>";
|
|
$displayWholeDayLinkIfatLeastOneDaytimeLinkDoesExist = false;
|
|
endif;
|
|
|
|
$output .= "<tr>";
|
|
endif;
|
|
$displayDayInRow = true;
|
|
endif;
|
|
endif;
|
|
|
|
// Check for mode hiding the row
|
|
$displayRow = true;
|
|
if ($dispositionAllocationMode == "0") :
|
|
if ($maskDispositionMultipleRowsDisabled == "1") :
|
|
$displayRow = false;
|
|
|
|
// Day changed?
|
|
if (true || $dispositionUniqueDisplayArray[0] == "1") :
|
|
$tmpCmpLeft = $remDay;
|
|
$tmpCmpRight = $tmpArray2[0];
|
|
endif;
|
|
// Daytime changed?
|
|
if ($dispositionUniqueDisplayArray[1] == "1") :
|
|
$tmpCmpLeft .= $remDaytime;
|
|
$tmpCmpRight .= $tmpArray2[6];
|
|
endif;
|
|
// Vehicle changed?
|
|
if ($dispositionUniqueDisplayArray[2] == "1") :
|
|
$tmpCmpLeft .= $remVehicle;
|
|
$tmpCmpRight .= $tmpArray2[7];
|
|
endif;
|
|
|
|
// if ($remDay . $remDaytime != $tmpArray2[0] . $tmpArray2[6]) :
|
|
// if ($tmpCmpLeft != $tmpCmpRight) :
|
|
if (!in_array($tmpCmpRight, $remMasterArray)) :
|
|
|
|
$remDay = $tmpArray2[0];
|
|
$remDaytime = $tmpArray2[6];
|
|
$remVehicle = $tmpArray2[7];
|
|
|
|
array_push($remMasterArray, $tmpCmpRight);
|
|
$displayRow = true;
|
|
endif;
|
|
endif;
|
|
endif;
|
|
|
|
// Check for servicezone capacities if enabled
|
|
if ($displayRow && $maskDispositionServicezoneCapacityEnabled == "1") :
|
|
if ( ( ($ecoCapacityMax[$weekDay][$tmpArray2[6]] - $ecoCapacityOccupied[$weekDay][$tmpArray2[6]]) <= 0) ||
|
|
( ($ecoCapacityMax[$weekDay]["999"] - $ecoCapacityOccupied[$weekDay]["999"]) <= 0)) :
|
|
$displayRow = false;
|
|
endif;
|
|
endif;
|
|
|
|
if ($displayRow) :
|
|
$output .= "<tr>";
|
|
if (!(array_search(0, $maskDisplayedArray) === false)) :
|
|
if ($displayDayInRow) :
|
|
$output .= "<td>" . $weekDayNames[$weekDay - 1] . "</td>"; // Name of the week day
|
|
$output .= "<td>" . $tmpArray2[$maskDisplayedArray[0]] . "</td>";
|
|
else :
|
|
$output .= "<td colspan=\"2\"></td>";
|
|
endif;
|
|
endif;
|
|
for ($j = 1; $j < $maskDisplayedArrayLen; $j++) :
|
|
if ($maskDisplayedArray[$j] == 11) :
|
|
// Coloured background for service or delivery
|
|
$cellBgCol = "#88BB88";
|
|
$cellText = getLngt("LI");
|
|
if (((int)$tmpArray2[$maskDisplayedArray[$j]] & 2) == 2) :
|
|
$cellBgCol = "#55BB55";
|
|
$cellText = getLngt("MO");
|
|
endif;
|
|
$output .= "<td style=\"text-align:center;\">";
|
|
$output .= " <table><tr><td> </td><td style=\"width:30px; text-align:center; background-color:" . $cellBgCol . ";\">" . $cellText . "</td><td> </td></tr></table>";
|
|
$output .= "</td>";
|
|
else :
|
|
$output .= "<td>" . $tmpArray2[$maskDisplayedArray[$j]] . "</td>";
|
|
endif;
|
|
endfor;
|
|
|
|
// If the current data come from an stored job in the database then use following link to move this job on the timeline regarding the selected suggested date
|
|
// if ($jbId != "" && (!$ecoIsSpecialServiceJob || ($ecoIsSpecialServiceJob && ($tmpArray2[6] == "0" || $tmpArray2[6] == "1")))) :
|
|
if ($jbId) :
|
|
if ($combinedJob) :
|
|
// Set string with starttimes for ALL jobs
|
|
// (e.g. 5 jobs [1001-1005] 12_03, 12_05, 13_04, 16_03, 17_01 => "1001;12;03;2014-01-17 12:30:00;2#1002;12;05;2014-01-17 12:50:00;2#1003;13;04;2014-01-17 13:40:00;3#1004;16;03;2014-01-17 16:30:00;12#1005;17;01;2014-01-17 17:10:00;3")
|
|
$tmpStartHour = intval($tmpArray2[8]);
|
|
$tmpStartHourUnit = intval($tmpArray2[9]);
|
|
|
|
$remNeededTimeUnits = $ecoNeededTimeUnits; // The following job has to use the needed timeunits of the job before to get the start time !!!!
|
|
|
|
$combinedJobStr = $jbId . ";" .$tmpStartHour . ";" . $tmpStartHourUnit . ";" . $tmpArray2[0] . " " . $tmpArray2[4] . ":00" . ";" . $ecoNeededTimeUnits; // Init with main job
|
|
for ($k = 0; $k < $jbIdChildrenLen; $k++) :
|
|
// Add timeunits of the job before to increase $tmpStartHour and $tmpStartHourUnit for current (child) job
|
|
for ($l = 0; $l < $remNeededTimeUnits; $l++) :
|
|
$tmpStartHourUnit++;
|
|
if ($tmpStartHourUnit == $hourTimeUnits) :
|
|
$tmpStartHour++;
|
|
$tmpStartHourUnit = 0;
|
|
endif;
|
|
endfor;
|
|
|
|
// Get timeunits of the current (child) job
|
|
$tmpTimeUnitsNeeded = $ecoChildrenTimeunitsArray[$jbIdChildren[$k]];
|
|
if ($tmpTimeUnitsNeeded != "" && is_numeric($tmpTimeUnitsNeeded)) :
|
|
$combinedJobStr .= "#" . $jbIdChildren[$k] . ";" . pad(strval($tmpStartHour),2) . ";" . pad(strval($tmpStartHourUnit),2) . ";" . $tmpArray2[0] . " " . pad(strval($tmpStartHour),2) . ":" . pad(strval(floor($tmpStartHourUnit * (60 / $hourTimeUnits))), 2) . ":00" . ";" . $tmpTimeUnitsNeeded;
|
|
$remNeededTimeUnits = $tmpTimeUnitsNeeded;
|
|
endif;
|
|
endfor;
|
|
|
|
$ecoReserveLink = "<td>" . "<a href=\"javascript:reserveMultiEco('" . $tmpArray2[7] . "','" . $tmpArray2[0] . "','" . $combinedJobStr . "','" . $tmpArray2[10] . "','WHOLE_DAY_MAKRO');\" >" . getLngt("Reservierung") . "</a>" . "</td>";
|
|
else :
|
|
$ecoNewOrdertime = $tmpArray2[0] . " " . $tmpArray2[4] . ":00"; // Needed to set the new ordertime to the existing job
|
|
$ecoReserveLink = "<td>" . "<a href=\"javascript:reserveEco('" . $jbId . "','" . $tmpArray2[7] . "','" . $tmpArray2[0] . "','" . $tmpArray2[8] . "','" . $tmpArray2[9] . "','" . $ecoNeededTimeUnits . "','" . $ecoNewOrdertime . "','1','" . $tmpArray2[10] . "','WHOLE_DAY_MAKRO','1');\" >" . getLngt("Reservierung") . "</a>" . "</td>";
|
|
endif;
|
|
|
|
$tmpEcoReserveLink = str_replace("WHOLE_DAY_MAKRO", "0", $ecoReserveLink); // Link is NOT "whole day"
|
|
if ($displayStatusDaytimeForInstallations) :
|
|
$output .= $tmpEcoReserveLink;
|
|
endif;
|
|
|
|
// Set whole day link if eco should be set on the FDS. Take care to take the earliest (daytime) interval being available.
|
|
if ($wholeDayEcoReserveLink == "") :
|
|
$tmpEcoReserveLink = str_replace("WHOLE_DAY_MAKRO", $wholeDayEcoJsReserveParameter, $ecoReserveLink); // Link is "whole day"
|
|
$wholeDayEcoReserveLink = $tmpEcoReserveLink;
|
|
endif;
|
|
endif;
|
|
|
|
$output .= "</tr>";
|
|
$displayWholeDayLinkIfatLeastOneDaytimeLinkDoesExist = true;
|
|
endif; // Check for $displayRow
|
|
endif; // Display mode "whole day only" or "standard mode"
|
|
endif;
|
|
endfor;
|
|
|
|
if ($dispositionAllocationMode == "0" && $ecoHasWholeDayRequest) :
|
|
if ($maskDisplayWholeDayAvoidingSingleDaytimes != "1") :
|
|
// Display link for whole-day for the last day displayed in the list
|
|
$output .= "<tr>";
|
|
if ($wholeDayEcoColspanArray[0] != "" && is_numeric($wholeDayEcoColspanArray[0]) && $wholeDayEcoColspanArray[0] > 0) :
|
|
$output .= "<td colspan=\"" . $wholeDayEcoColspanArray[0] . "\"" . "> </td>";
|
|
endif;
|
|
$output .= "<td>" . getLngt("Ganztägig") . "</td>";
|
|
if ($wholeDayEcoColspanArray[1] != "" && is_numeric($wholeDayEcoColspanArray[1]) && $wholeDayEcoColspanArray[1] > 0) :
|
|
$output .= "<td colspan=\"" . $wholeDayEcoColspanArray[1] . "\"" . "> </td>";
|
|
endif;
|
|
if ($jbId != "") :
|
|
if ($wholeDayEcoWillBeSetInFDS == "1" && $wholeDayEcoReserveLink != "") :
|
|
$output .= $wholeDayEcoReserveLink;
|
|
$wholeDayEcoReserveLink = "";
|
|
else :
|
|
$output .= "<td>" . "<a href=\"javascript:reserveWholeDayEcoNotForFDS('" . $jbId . "','" . $tmpArray2[0] . " 00:00:01" . "','1');\" >" . getLngt("Reservierung") . "</a>" . "</td>";
|
|
endif;
|
|
endif;
|
|
$output .= "</tr>";
|
|
endif;
|
|
endif;
|
|
else :
|
|
// $output .= "<tr><td>" . getLngt("In dem angegebenen Zeitraum sind keine passenden Termine verfügbar!") . "</td></tr>";
|
|
$output .= "<tr><td>" . getLngt("Überschreitung der Zeiteinheiten - bitte kontaktieren Sie die Disposition!") . "</td></tr>";
|
|
endif;
|
|
$output .= "</table>";
|
|
else :
|
|
if ($tmpArray == "ERR:NO_ZONE") :
|
|
$output .= "<span class=\"f12np1_red\">" . getLngt("Die PLZ des Kunden liegt außerhalb der Liefergebiete!") . "</span>"; // Error message
|
|
else :
|
|
$output .= "<span class=\"f12np1_red\">" . $tmpArray . "</span>"; // Error message
|
|
endif;
|
|
endif;
|
|
else :
|
|
// if ($jbId == "") :
|
|
if ($csId == "") :
|
|
$errMsgArray[] = getLngt("Der Kunde (z.B. Markt) ist nicht spezifiziert!");
|
|
endif;
|
|
if ($ecoZipcode == "") :
|
|
$errMsgArray[] = getLngt("Die PLZ wurde nicht definiert!");
|
|
endif;
|
|
if ($ecoNeededTimeUnits == "") :
|
|
$errMsgArray[] = getLngt("Die benötigte Auftragsdauer wurde nicht definiert!");
|
|
endif;
|
|
// endif;
|
|
endif;
|
|
|
|
// Check for any error message
|
|
if (count($errMsgArray) > 0) :
|
|
$output .= "<span class=\"f10np1_red\">" . implode("<br>", $errMsgArray) . "</span>"; // Error message
|
|
endif;
|
|
|
|
|
|
/*
|
|
Zone zipcodes IKEA Schnelsen
|
|
0 = 20253 // Kerngebiet
|
|
1 = 22946 // Sek.-gebiet Nord
|
|
2 = 21039 // Sek.-gebiet Süd
|
|
3 = 24239 // Restgebiet Nord
|
|
4 = 19273 // Restgebiet Süd
|
|
|
|
$tmpCrvhSid = getFieldValueFromId("couriervehicle", "crvh_id", $row["crvh_id"], "crvh_sid");
|
|
$tmpDaytime = getFieldValueFromClause("metatype","mt_value","mt_type = 'day_time' AND mt_objtype = 'cs' AND mt_objid = '" . $csId . "' AND mt_sort = '" . $row["vhat_daytime"] . "'");
|
|
$tmpStarttime = substr($row["vhat_starttimeunit"],0,2) . ":" . pad(strval(floor(intval(substr($row["vhat_starttimeunit"],3,2)) * (60 / $hourTimeUnits))), 2);
|
|
$retArray[] = array($row["vha_day"], $tmpCrvhSid, $tmpDaytime, $row["vhat_timeunits"], $tmpStarttime, $row["vhat_daytime"], $row["crvh_id"], substr($row["vhat_starttimeunit"],0,2), substr($row["vhat_starttimeunit"],3,2));
|
|
|
|
SELECT
|
|
vha.vha_day, vha.crvh_id, vhat.vhat_daytime, vhat.vhat_timeunits, vhat.vhat_starttimeunit
|
|
FROM
|
|
vehicleavailability AS vha, vehicleavailabilitytimeunits AS vhat
|
|
WHERE
|
|
vha.vha_id = vhat.vha_id AND
|
|
vhat.cs_id = '1' AND
|
|
vhat.vhat_srvz_no = '0' AND
|
|
vha.vha_day = '2013-08-16' AND
|
|
vhat.vhat_daytime = '0' AND
|
|
vhat.vhat_timeunits >= '7'
|
|
LIMIT 0,3
|
|
|
|
SELECT
|
|
crvh.crvh_sid, crvh.crvh_service, vha.vha_day, vhat.vhat_srvz_no, vhat.vhat_daytime, vhat.vhat_timeunits, vhat.vhat_starttimeunit
|
|
FROM
|
|
vehicleavailability AS vha, vehicleavailabilitytimeunits AS vhat , couriervehicle AS crvh
|
|
WHERE
|
|
crvh.crvh_id = vha.crvh_id AND
|
|
vha.vha_id = vhat.vha_id AND
|
|
vhat.cs_id = '1'
|
|
ORDER BY crvh.crvh_sid, vha.vha_day, vhat.vhat_srvz_no, vhat.vhat_daytime
|
|
*/
|
|
|
|
// * Output only *
|
|
|
|
// Javascript-function as template only for categorie depending on date-filter (not status-filter)
|
|
$onLoadCall = "initForm();"; // displayStatusMessage();
|
|
$onLoadCall .= "calendarMonthInit('appointment', " . $year_from . ", " . $month_from . ", true);";
|
|
|
|
$js_date = "";
|
|
$js_date .= "<script src=\"../include/lib_global.js\" type=\"text/javascript\">\n";
|
|
$js_date .= "</script>\n";
|
|
$js_date .= "\n";
|
|
$js_date .= "<script type=\"text/javascript\">\n";
|
|
$js_date .= "<!--\n";
|
|
$js_date .= "FILLDATEFIELDSSTARTYEAR=" . $currYear . ";\n";
|
|
$js_date .= "function initForm() {\n";
|
|
$js_date .= " fillDateFields(1,\"maincontent\",\"disposition\",\"\",\"day_from\",\"month_from\",\"year_from\",\"\",\"\",\"\");\n";
|
|
$js_date .= " setDateTimeFields(\"maincontent\",\"disposition\",".$day_from.",".$month_from.",".$year_from.", \"\", \"\", \"day_from\", \"month_from\", \"year_from\", \"\", \"\", \"\");\n";
|
|
$js_date .= " fillDateFields(1,\"maincontent\",\"disposition\", \"\", \"day_to\", \"month_to\", \"year_to\", \"\", \"\", \"\");\n";
|
|
$js_date .= " setDateTimeFields(\"maincontent\",\"disposition\",".$day_to.",".$month_to.",".$year_to.", \"\", \"\", \"day_to\", \"month_to\", \"year_to\", \"\", \"\", \"\");\n";
|
|
$js_date .= "}\n";
|
|
$js_date .= "-->\n";
|
|
$js_date .= "</script>\n";
|
|
|
|
// Date ranges
|
|
$categoryFilter = "von:\n";
|
|
$categoryFilter .= "<select name=\"day_from\" class=\"f8np1\" onchange=\"fillDateFieldsCheck(0, 'maincontent', 'disposition', 'day_from', 'day_from', 'month_from', 'year_from', '', '', '', 'day_to', 'month_to', 'year_to', '', '', '')\"></select>\n";
|
|
$categoryFilter .= "<select name=\"month_from\" class=\"f8np1\" onchange=\"fillDateFieldsCheck(0, 'maincontent', 'disposition', 'month_from', 'day_from', 'month_from', 'year_from', '', '', '', 'day_to', 'month_to', 'year_to', '', '', '')\"></select>\n";
|
|
$categoryFilter .= "<select name=\"year_from\" class=\"f8np1\" onchange=\"fillDateFieldsCheck(0, 'maincontent', 'disposition', 'year_from', 'day_from', 'month_from', 'year_from', '', '', '', 'day_to', 'month_to', 'year_to', '', '', '')\"></select>\n";
|
|
$categoryFilter .= " bis:\n";
|
|
$categoryFilter .= "<select name=\"day_to\" class=\"f8np1\" onchange=\"fillDateFieldsCheck(0, 'maincontent', 'disposition', 'day_to', 'day_from', 'month_from', 'year_from', '', '', '', 'day_to', 'month_to', 'year_to', '', '', '')\"></select>\n";
|
|
$categoryFilter .= "<select name=\"month_to\" class=\"f8np1\" onchange=\"fillDateFieldsCheck(0, 'maincontent', 'disposition', 'month_to', 'day_from', 'month_from', 'year_from', '', '', '', 'day_to', 'month_to', 'year_to', '', '', '')\"></select>\n";
|
|
$categoryFilter .= "<select name=\"year_to\" class=\"f8np1\" onchange=\"fillDateFieldsCheck(0, 'maincontent', 'disposition', 'year_to', 'day_from', 'month_from', 'year_from', '', '', '', 'day_to', 'month_to', 'year_to', '', '', '')\"></select>\n";
|
|
?>
|
|
|
|
<html>
|
|
|
|
<head>
|
|
<title><?php echo $pageTitel ?></title>
|
|
|
|
<link rel="stylesheet" type="text/css" href="../css/phoenix.css">
|
|
<style type="text/css">
|
|
<?php include_once ("../css/navigation.css.php"); ?>
|
|
</style>
|
|
|
|
<?php include_once ("../include/js_framework.inc.php"); ?>
|
|
|
|
<script src="../include/checkFormTags.js" type="text/javascript"></script>
|
|
<script src="../include/lib_calendar.js" type="text/javascript"></script>
|
|
|
|
<script type="text/javascript">
|
|
<!--
|
|
|
|
// NAVIGATION
|
|
<?php echo $jsMenuOut; ?>
|
|
|
|
|
|
function finishPage(mode) {
|
|
var ok = true;
|
|
|
|
if (mode == 'request') {
|
|
document.forms[0].dateSelectionByCalendar.value = '';
|
|
document.forms[0].submit();
|
|
}
|
|
|
|
if (mode == 'reserve') {
|
|
document.forms[0].submit();
|
|
}
|
|
// document.forms[0].f_act.value='xxxx';
|
|
// document.location.href = "disposition_appointments.php?jbId=<?php echo ec($jbId) ?>&csId=<?php echo ec($csId) ?>";
|
|
};
|
|
|
|
|
|
function setOpenerData (day, clocktime) {
|
|
if (opener.dispoCallback) {
|
|
var reservationText = '';
|
|
if (clocktime == '') {
|
|
day = day.substr(0, 10); // Whole-day, output day only without clock time inteval
|
|
clocktime = '<?php echo getLngt("ganztägig") ?>';
|
|
}
|
|
reservationText = day.substr(8, 2) + '.' + day.substr(5, 2) + '.' + day.substr(0, 4) + ' ' + clocktime;
|
|
opener.dispoCallback(reservationText);
|
|
}
|
|
}
|
|
|
|
// Reserves a job on the timeline according to the choice of one of the suggested dates.
|
|
// ATTENTION: For a single job (NOT combuned eco) the parameter "lastEcoOfCombinedJob" equals '1' !!!!
|
|
// This function moves(!) an existing job on the timeline and sets a new "jb_ordertime", "cr_sid", "cr_id", etc.
|
|
function reserveEco (ecoId, crvhId, orderDay, hour, hourUnit, neededTimeslots, newOrdertime, doSubmit, clockTime, isWholeDayLink, lastEcoOfCombinedJob) {
|
|
if (ecoId != '') {
|
|
var alertMsg = '';
|
|
var ecoInFDS = '0';
|
|
|
|
// Check eco is a multiple day job. If it is NOT then ecoMultDayTimeunitsOfSelectedDay =!= 0 else ecoMultDayTimeunitsOfSelectedDay contains the timeunits of the selected day
|
|
var ecoMultDayTimeunitsOfSelectedDay = 0;
|
|
ajaxRequestGet('../include/ajaxReqDisposition.php', 'mode=isMultipleDayJob&jbId=' + ecoId + '&csId=<?php echo $csId ?>');
|
|
if (isMultipleDayJob != '' && isMultipleDayJob != '0') {
|
|
// Eco is multiple day job, get timeunits of the selected day
|
|
// ajaxRequestGet('../include/ajaxReqDisposition.php', 'mode=getMultipleDayJobTimeunits&jbId=' + ecoId + '&csId=<?php echo $csId ?>&currDay=<?php echo $currentSelectedDay ?>');
|
|
ajaxRequestGet('../include/ajaxReqDisposition.php', 'mode=getMultipleDayJobTimeunits&jbId=' + ecoId + '&csId=<?php echo $csId ?>&currDay=' + orderDay);
|
|
if (jobMultipleDayTimeunitsOfSelectedDay != '' && jobMultipleDayTimeunitsOfSelectedDay != '0') {
|
|
ecoMultDayTimeunitsOfSelectedDay = parseInt(jobMultipleDayTimeunitsOfSelectedDay);
|
|
}
|
|
}
|
|
|
|
// Check the availability of the specified vehicle for the requested interval
|
|
if (ecoMultDayTimeunitsOfSelectedDay > 0) {
|
|
ajaxRequestGet('../include/ajaxReqDisposition.php', 'mode=checkAvailabilityCrvhMultipleDayJb&crvhId=' + crvhId + '&currDay=' + orderDay + '&hour=' + hour + '&hourUnit=' + hourUnit + '&jbId=' + ecoId + '&csId=<?php echo $csId ?>&hourTimeUnits=<?php echo $hourTimeUnits ?>');
|
|
} else {
|
|
ajaxRequestGet('../include/ajaxReqDisposition.php', 'mode=checkAvailabilityCrvhJb&crvhId=' + crvhId + '&currDay=' + orderDay + '&hour=' + hour + '&hourUnit=' + hourUnit + '×lots=' + neededTimeslots + '&jbId=' + ecoId + '&csId=<?php echo $csId ?>&hourTimeUnits=<?php echo $hourTimeUnits ?>');
|
|
}
|
|
|
|
// Check for parameter for total weight being enabled
|
|
var capacityCheckForTotalweight = '<?php echo $checkTotalweight ?>';
|
|
if (capacityCheckForTotalweight == '0' || capacityProblem == '') {
|
|
|
|
// Eco has been set to the new time slot => Update "jb_ordertime"
|
|
ajaxRequestGet('../include/ajaxReqLib.php', 'mode=100&db_table=job&db_id_field=jb_id&db_op_field=jb_ordertime&new_content=' + newOrdertime + '&search_value=' + ecoId);
|
|
|
|
// Remove potential existing eco on timeline
|
|
ajaxRequestGet('../include/ajaxReqDisposition.php', 'mode=removeAssocCrvhJb&jbId=' + ecoId + '&csId=<?php echo $csId ?>&hourTimeUnits=<?php echo $hourTimeUnits ?>');
|
|
if (isRemovedFromDb == '1') {
|
|
// Eco did exist in any timeline and is removed now
|
|
if (lastEcoOfCombinedJob == '1') {
|
|
alertMsg += '<?php echo getLngt("Der Auftrag wurde an der alten Position freigegeben.") ?> ';
|
|
}
|
|
}
|
|
|
|
// Persistent update of the new time interval for the eco into the DB
|
|
ajaxRequestGet('../include/ajaxReqDisposition.php', 'mode=setAssocCrvhJb&crvhId=' + crvhId + '&currDay=' + orderDay + '&hour=' + hour + '&hourUnit=' + hourUnit + '×lots=' + neededTimeslots + '&jbId=' + ecoId + '&csId=<?php echo $csId ?>&hourTimeUnits=<?php echo $hourTimeUnits ?>');
|
|
if (isUpdatedInDb == '1') {
|
|
// Check vehicle is blocked
|
|
var jbStatus = '9';
|
|
if ('<?php echo $dispositionJbStatusMode ?>' == '1') {
|
|
ajaxRequestGet('../include/ajaxReqDisposition.php', 'mode=crvhIsCarrierBlocked&crvhId=' + crvhId + '&currDay=' + orderDay);
|
|
if (retValue == '1') {
|
|
jbStatus = '0';
|
|
// Set "internal" courier and SID associated to the vehicle to the job
|
|
ajaxRequestGet('../include/ajaxReqDisposition.php', 'mode=setCourierAndVehicleInJobByVehicle&crvhId=' + crvhId + '&jbId=' + ecoId);
|
|
if (retValue != '1') {
|
|
jbStatus = '9';
|
|
}
|
|
}
|
|
}
|
|
// Set job status if vehicle is blocked for carrier administration => Update "jb_status"
|
|
ajaxRequestGet('../include/ajaxReqLib.php', 'mode=100&db_table=job&db_id_field=jb_id&db_op_field=jb_status&new_content=' + jbStatus + '&search_value=' + ecoId);
|
|
if (lastEcoOfCombinedJob == '1') {
|
|
alertMsg += '<?php echo getLngt("Die Reservierung erfolgte.") ?> ';
|
|
}
|
|
ecoInFDS = '1';
|
|
} else {
|
|
// Write log entry
|
|
if (lastEcoOfCombinedJob == '1') {
|
|
ajaxRequestGet('../include/ajaxReqLib.php', 'mode=300&db_id_field=129&db_op_field=jb&search_value=' + ecoId + '&id_01=CRVH_ID&value_01=' + crvhId + '&id_02=CURR_DAY&value_02=' + orderDay + '&id_03=TIMESLOTS&value_03=' + neededTimeslots + '&id_03=CS_ID&value_03=<?php echo $csId ?>');
|
|
alertMsg += '<?php echo getLngt("Der Auftrag konnte nicht auf das gewählte Fahrzeug gebucht werden. Bitte die Seite aktualisieren!") ?> ';
|
|
}
|
|
doSubmit = '0';
|
|
}
|
|
|
|
if (alertMsg != '') {
|
|
alert(alertMsg);
|
|
}
|
|
if (doSubmit == '1') {
|
|
// Check for being a whole day link
|
|
if (isWholeDayLink == '1') {
|
|
clockTime = '';
|
|
}
|
|
setOpenerData(orderDay, clockTime);
|
|
if (lastEcoOfCombinedJob == '1') {
|
|
// document.forms[0].submit();
|
|
window.close();
|
|
}
|
|
}
|
|
} else {
|
|
/*
|
|
if (capacityProblem == '0') {
|
|
alert('<?php echo getLngt("Der Auftrag kann dem Fahrzeug nicht zugewiesen werden!") ?>');
|
|
|
|
} else if (capacityProblem == '1') {
|
|
// Presently output for MULTIPLE DAY JOBS only !!!!
|
|
if (ecoMultDayTimeunitsOfSelectedDay > 0) {
|
|
alert('<?php echo getLngt("Die erforderlichen Zeiteinheiten für den mehrtägigen Auftrag stehen für das Fahrzeug leider nicht zur Verfügung!") ?>');
|
|
}
|
|
} else if (capacityProblem == '2') {
|
|
alert('<?php echo getLngt("Die Nutzlast des Fahrzeugs scheint ausgereizt!") ?>');
|
|
}
|
|
*/
|
|
}
|
|
}
|
|
<?php if ($combinedJob) : ?>
|
|
return ecoInFDS;
|
|
<?php endif; ?>
|
|
}
|
|
|
|
<?php if ($combinedJob) : ?>
|
|
function reserveMultiEco (crvhId, orderDay, combinedJobString, clockTime, isWholeDayLink) {
|
|
if (crvhId != '' && orderDay != '' && combinedJobString != '') {
|
|
var ecoInFDS = '1';
|
|
var alertMsg = '';
|
|
var lastEcoOfCombinedJob;
|
|
var jobDataString;
|
|
var jobDataArray;
|
|
|
|
var jobsArray = combinedJobString.split("#");
|
|
var jobsArrayLen = jobsArray.length;
|
|
for (i=0; i<jobsArrayLen ;++i) {
|
|
if (ecoInFDS == '1') {
|
|
jobDataString = jobsArray[i];
|
|
jobDataArray = jobDataString.split(";");
|
|
|
|
lastEcoOfCombinedJob = '0';
|
|
if (i == (jobsArrayLen - 1)) {
|
|
lastEcoOfCombinedJob = '1';
|
|
}
|
|
|
|
ecoInFDS = reserveEco(jobDataArray[0], crvhId, orderDay, jobDataArray[1], jobDataArray[2], jobDataArray[4], jobDataArray[3], '0', '', isWholeDayLink, lastEcoOfCombinedJob);
|
|
}
|
|
}
|
|
|
|
if (ecoInFDS == "1") {
|
|
// Check for being a whole day link
|
|
if (isWholeDayLink == '1') {
|
|
clockTime = '';
|
|
}
|
|
setOpenerData(orderDay, clockTime);
|
|
// document.forms[0].submit();
|
|
|
|
// Ok, all ecos are stored in FDS
|
|
window.close();
|
|
} else {
|
|
// Rollback, remove all combined ecos from the FDS
|
|
for (i=0; i<jobsArrayLen ;++i) {
|
|
jobDataString = jobsArray[i];
|
|
jobDataArray = jobDataString.split(";");
|
|
ajaxRequestGet('../include/ajaxReqDisposition.php', 'mode=removeAssocCrvhJb&jbId=' + jobDataArray[0] + '&csId=<?php echo $csId ?>&hourTimeUnits=<?php echo $hourTimeUnits ?>');
|
|
}
|
|
// Write log entry
|
|
ajaxRequestGet('../include/ajaxReqLib.php', 'mode=300&db_id_field=129&db_op_field=jb&search_value=' + jobDataArray[0] + '&id_01=CRVH_ID&value_01=' + crvhId + '&id_02=CURR_DAY&value_02=' + orderDay + '&id_03=TIMESLOTS&value_03=' + jobDataArray[4] + '&id_03=CS_ID&value_03=<?php echo $csId ?>&id_04=COMBINED&value_04=Y');
|
|
alertMsg += '<?php echo getLngt("Der Auftrag konnte nicht auf das gewählte Fahrzeug gebucht werden. Bitte die Seite aktualisieren!") ?> ';
|
|
}
|
|
if (alertMsg != '') {
|
|
alert(alertMsg);
|
|
}
|
|
}
|
|
}
|
|
<?php endif; ?>
|
|
|
|
// Reserves a job according to the choice of one of the suggested dates, but does not set it on the timeline.
|
|
function reserveWholeDayEcoNotForFDS (ecoId, newOrdertime, doSubmit) {
|
|
if (ecoId != '') {
|
|
var alertMsg = '';
|
|
|
|
// Remove potential existing eco on timeline
|
|
ajaxRequestGet('../include/ajaxReqDisposition.php', 'mode=removeAssocCrvhJb&jbId=' + ecoId + '&csId=<?php echo $csId ?>&hourTimeUnits=<?php echo $hourTimeUnits ?>');
|
|
if (isRemovedFromDb == '1') {
|
|
// Eco did exist in any timeline and is removed now
|
|
// alertMsg += '<?php echo getLngt("Der Auftrag wurde an der alten Position freigegeben.") ?> ';
|
|
}
|
|
|
|
// Eco has been set to the new ordertime => Update "jb_ordertime"
|
|
ajaxRequestGet('../include/ajaxReqLib.php', 'mode=100&db_table=job&db_id_field=jb_id&db_op_field=jb_ordertime&new_content=' + newOrdertime + '&search_value=' + ecoId);
|
|
alertMsg += '<?php echo getLngt("Der Auftrag wurde der neuen Position zugeordnet.") ?> ';
|
|
|
|
if (doSubmit == '1') { // && alertMsg != ''
|
|
// alert(alertMsg);
|
|
setOpenerData(newOrdertime, '');
|
|
// document.forms[0].submit();
|
|
window.close();
|
|
}
|
|
}
|
|
}
|
|
|
|
function calendarFunc(year, month, day) {
|
|
var monthStr = String(month);
|
|
var dayStr = String(day);
|
|
if (month < 10)
|
|
monthStr = '0' + monthStr;
|
|
if (day < 10)
|
|
dayStr = '0' + dayStr;
|
|
document.forms[0].day_from.value = dayStr;
|
|
document.forms[0].month_from.value = monthStr;
|
|
document.forms[0].year_from.value = year;
|
|
document.forms[0].day_to.value = '';
|
|
document.forms[0].month_to.value = '';
|
|
document.forms[0].year_to.value = '';
|
|
document.forms[0].dateSelectionByCalendar.value = '1';
|
|
document.forms[0].submit();
|
|
}
|
|
-->
|
|
</script>
|
|
|
|
<?php echo $js_date ?>
|
|
|
|
</head>
|
|
|
|
<body class="menu_bgcol" onLoad="<?php echo $phpCurrentNavigationOnLoad ?><?php echo $onLoadCall ?>">
|
|
|
|
<div class="maincontent" name="maincontent" id="maincontent">
|
|
|
|
<form name="disposition" action="../admin/disposition_appointments.php" method="post">
|
|
<input type="hidden" name="f_act" value="">
|
|
<input type="hidden" name="jbId" value="<?php echo ec($jbId) ?>">
|
|
<input type="hidden" name="csId" value="<?php echo ec($csId) ?>">
|
|
<input type="hidden" name="ecoServices" value="<?php echo ec($ecoServices) ?>">
|
|
<input type="hidden" name="ecoZipcode" value="<?php echo ec($ecoZipcode) ?>">
|
|
<input type="hidden" name="ecoNeededTimeUnits" value="<?php echo ec($ecoNeededTimeUnits) ?>">
|
|
<input type="hidden" name="ecoWeight" value="<?php echo ec($ecoWeight) ?>">
|
|
<input type="hidden" name="ecoPositions" value="<?php echo ec($ecoPositions) ?>">
|
|
<input type="hidden" name="maxLimitOfRows" value="<?php echo ec($maxLimitOfRows) ?>">
|
|
<input type="hidden" name="deliveryTimeValue" value="<?php echo ec($deliveryTimeValue) ?>">
|
|
<input type="hidden" name="dateSelectionByCalendar" value="">
|
|
<input type="hidden" name="futureDaysOffset" value="<?php echo ec($futureDaysOffset) ?>">
|
|
<input type="hidden" name="jbTimedFilter" value="<?php echo ec($jbTimedFilter) ?>">
|
|
|
|
<?php echo $phpCurrentNavigationInputHidden ?>
|
|
<input type="hidden" name="deactivateMenu" value="<?php echo ec($deactivateMenu) ?>">
|
|
|
|
<?php echo htmlDivLineSpacer("10px"); ?>
|
|
|
|
<div class="f12bp1_blue">
|
|
<?php echo $pageTitel ?>
|
|
</div>
|
|
|
|
<?php echo htmlDivLineSpacer("30px"); ?>
|
|
|
|
<div>
|
|
<div <?php echo setStyleHtmlDiv("250px","left"); ?>>
|
|
<!-- Calendar -->
|
|
<div id="appointment"></div>
|
|
<?php echo htmlDivLineSpacer("15px"); ?>
|
|
</div>
|
|
|
|
<div>
|
|
<!-- Date ranges -->
|
|
<div><?php echo "<b>" . getLngt("Bevorzugter Zeitraum") . " : </b>" . $categoryFilter; ?></div>
|
|
<?php echo htmlDivLineSpacer("15px"); ?>
|
|
|
|
<!-- Week days -->
|
|
<div><?php echo "<b>" . getLngt("Bevorzugte Wochentage") . " : </b>" . addCheckboxesFromTable("ecoWeekdayArray","metatype","mt_sort","LEFT(mt_value,2)","mt_sort","mt_type = 'cal_week_days' AND mt_objtype = '' AND mt_objid = '0'",$ecoWeekdayArray, " ") ?></div>
|
|
<?php echo htmlDivLineSpacer("15px"); ?>
|
|
|
|
<!-- Day times -->
|
|
<div><?php echo "<b>" . getLngt("Bevorzugte Tageszeit") . " : </b>" . addCheckboxesFromTable("ecoDayTimeArray","metatype","mt_sort","mt_value","mt_sort","mt_type = 'day_time' AND mt_objtype = 'cs' AND mt_objid = '" . $csId . "'",$ecoDayTimeArray, " ", $daytimeReadonlyArray) ?></div>
|
|
<?php echo htmlDivLineSpacer("15px"); ?>
|
|
|
|
|
|
<!-- Sort sequence -->
|
|
<?php if (false) : ?>
|
|
<div>
|
|
<?php echo "<b>" . getLngt("Anzeigepriorität nach") . " : </b>" ?>
|
|
<input class="f8np1" type="radio" name="sortSequence" value="0" <?php if ($sortSequence == "0") : echo "checked"; endif; ?>> <?php echo getLngt("Tagen") ?>
|
|
<input class="f8np1" type="radio" name="sortSequence" value="1" <?php if ($sortSequence == "1") : echo "checked"; endif; ?>> <?php echo getLngt("Zeitintervallen") ?>
|
|
</div>
|
|
<?php echo htmlDivLineSpacer("15px"); ?>
|
|
<?php endif; ?>
|
|
|
|
<?php echo htmlDivLineSpacer("10px"); ?>
|
|
|
|
<div>
|
|
<?php echo defineButtonType10(getLngt("Anfragen"), "action_save", "finishPage('request');", "100", "left", "3"); ?>
|
|
<?php // echo defineButtonType10(getLngt("Reservieren"), "action_close", "finishPage('reserve');", "100", "left", "3"); ?>
|
|
<?php // echo defineButtonType10(getLngt("Schließen"), "action_close", "window.close();", "100", "left", "3"); ?>
|
|
</div>
|
|
<?php echo htmlDivLineSpacer("20px", "", "left"); ?>
|
|
<!-- Show job data if current request looks for moving an existing job -->
|
|
<?php
|
|
if ($jbId != "") :
|
|
$jbOrdertime2 = substr($jbOrdertime,8,2) . "." . substr($jbOrdertime,5,2) . "." . substr($jbOrdertime,0,4) . "." . " " . substr($jbOrdertime,11,2) . ":" . substr($jbOrdertime,14,2) . " " . getLngt("Uhr");
|
|
$tmpService = implode(",", getColVectorFromDB2ArrayByClause("metatype", "mt_mapped_value", "mt_type = 'service' AND mt_objtype = '' AND mt_objid = '0' AND mt_sort IN (" . implode(",", mcConvertNum2Sel($ecoChildrenServices)) . ")", "", "mt_sort", ""));
|
|
?>
|
|
<div>
|
|
<?php echo "<b>" . getLngt("Auftrag") . " : </b>" . $jbId . " [" . $jbOrdertime2 . "]" . " [" . $tmpService . "]" . " [" . $ecoSummatedNeededTimeUnits . " ". getLngt("ZE") . "]"; ?>
|
|
</div>
|
|
<?php echo htmlDivLineSpacer("20px"); ?>
|
|
<?php
|
|
endif;
|
|
?>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Suggested dates -->
|
|
<div>
|
|
<table>
|
|
<tr>
|
|
<td class="f10bp1">
|
|
<?php echo getLngt("Vorschläge"); ?>
|
|
<br><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<?php echo $output ?>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
</form>
|
|
</div>
|
|
</body>
|
|
|
|
</html>
|