1144 lines
48 KiB
PHP
1144 lines
48 KiB
PHP
<?php
|
|
/*=======================================================================
|
|
*
|
|
* scan.php
|
|
*
|
|
=======================================================================*/
|
|
|
|
include_once ("../include/mcglobal.inc.php");
|
|
include_once ("../include/auth.inc.php");
|
|
|
|
getSecHttpVars("1",array("f_act", "statusMessage", "deactivateMenu", "numOfStations", "trackingIDsNotFound", "f_costcenter"));
|
|
|
|
// Select user-type for mode of security check
|
|
$userType = getFieldValueFromId("user","usr_id",$usr_id,"usr_type");
|
|
$userTypeName = getUserTypeName($userType);
|
|
|
|
// Check authentication verifying emmployee an his/her costcenter- and customer-association
|
|
if ( !( authCheckHQ($hq_id,$usr_id,$emp_id) || authCheck($hq_id,$usr_id,$emp_id,$cscIdRoot,$customerId,$cscIdActual) ) || $userTypeName == "" ) :
|
|
die ("$PHP_SELF: Access denied!");
|
|
endif;
|
|
|
|
// Testumgebung Leipzig
|
|
if ($usr_id == 800001 || $usr_id == 834522): // admin_l oder l_zanger
|
|
$hq_id = 99;
|
|
endif;
|
|
|
|
// Testumgebung Essen
|
|
if ($usr_id == 700001 || $usr_id == 842586): // admin_e oder staboe_test
|
|
$hq_id = 98;
|
|
endif;
|
|
|
|
$deactivateMenuStatic = "1";
|
|
|
|
getLanguage(__FILE__);
|
|
|
|
$pageTitel = getLngt("Aufträge");
|
|
include_once ("../admin/menu.php");
|
|
include_once ("../include/html.inc.php");
|
|
|
|
getCurrentScript(__FILE__);
|
|
|
|
|
|
// Init
|
|
$jobDataSrc = array();
|
|
$jobDataTarget = array();
|
|
|
|
if ($numOfStations == "") : $numOfStations = 0; endif;
|
|
|
|
// Get POST parameter
|
|
for ($i = 0; $i < $numOfStations; $i++) :
|
|
|
|
list ($jobDataSrc[$i]["jb_id"], $jobDataSrc[$i]["tr_sort"], $jobDataSrc[$i]["tr_hsno"], $jobDataSrc[$i]["trat_id"],
|
|
$jobDataSrc[$i]["trat_serialno"], $jobDataSrc[$i]["ad_id"], $jobDataSrc[$i]["crvh_sid"], $jobDataSrc[$i]["csc_id"],
|
|
$jobDataTarget[$i]["jb_id"], $jobDataTarget[$i]["tr_sort"], $jobDataTarget[$i]["tr_hsno"], $jobDataTarget[$i]["trat_id"],
|
|
$jobDataTarget[$i]["trat_serialno"], $jobDataTarget[$i]["ad_id"], $jobDataTarget[$i]["crvh_sid"], $jobDataTarget[$i]["csc_id"],
|
|
$jobDataTarget[$i]["scan"]
|
|
) = getSecHttpVars("1",array("jobDataSrc_" . $i . "_jb_id", "jobDataSrc_" . $i . "_tr_sort", "jobDataSrc_" . $i . "_tr_hsno", "jobDataSrc_" . $i . "_trat_id",
|
|
"jobDataSrc_" . $i . "_trat_serialno", "jobDataSrc_" . $i . "_ad_id", "jobDataSrc_" . $i . "_crvh_sid", "jobDataSrc_" . $i . "_csc_id",
|
|
"jobDataTarget_" . $i . "_jb_id", "jobDataTarget_" . $i . "_tr_sort", "jobDataTarget_" . $i . "_tr_hsno", "jobDataTarget_" . $i . "_trat_id",
|
|
"jobDataTarget_" . $i . "_trat_serialno", "jobDataTarget_" . $i . "_ad_id", "jobDataTarget_" . $i . "_crvh_sid", "jobDataTarget_" . $i . "_csc_id",
|
|
"jobDataTarget_" . $i . "_scan"));
|
|
endfor;
|
|
|
|
|
|
$trSortOffset = 500;
|
|
$specialJbStatusNo = 999;
|
|
$specialJbStatusEnabled = false;
|
|
$driverPool = array();
|
|
$htmlOut = "";
|
|
|
|
$cscIdPayerArrayOfIFTMIN = array();
|
|
$cscIdPayerAssociativeArrayOfIFTMIN = array();
|
|
$jobArrayOfIFTMIN = array();
|
|
$scanFieldArray = array();
|
|
for ($i = 0; $i < $numOfStations; $i++) :
|
|
$scanFieldArray[$jobDataSrc[$i]["jb_id"] . "_" . $jobDataSrc[$i]["tr_sort"]] = $jobDataTarget[$i]["scan"];
|
|
endfor;
|
|
|
|
// Get costcenters of all current IFTMIN orders
|
|
$sqlquery = "SELECT DISTINCT jb.csc_id_payer, csc.csc_name"
|
|
. " FROM phoenix.job AS jb, phoenix.costcenter AS csc"
|
|
. " WHERE jb.jb_status = '" . $specialJbStatusNo . "' AND"
|
|
. " jb.hq_id = '" . $hq_id . "' AND"
|
|
. " jb.csc_id_payer = csc.csc_id"
|
|
. " ORDER BY jb.csc_id_payer";
|
|
|
|
$result = $db->query($sqlquery);
|
|
if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage());
|
|
|
|
while ($row = $result->fetch_assoc()):
|
|
$cscIdPayerArrayOfIFTMIN[] = $row["csc_id_payer"];
|
|
$cscIdPayerAssociativeArrayOfIFTMIN[$row["csc_id_payer"]] = $row["csc_name"];
|
|
endwhile;
|
|
$result->free();
|
|
|
|
|
|
|
|
// Store changes of the stations and vehicles (drivers)
|
|
if ($f_act == "save") :
|
|
|
|
if ($numOfStations != "" && is_numeric($numOfStations)) :
|
|
|
|
TA("B");
|
|
|
|
// First step ALL involved "tr_sort" fields of the specified jobs(!) have to be updated with an offset(!)
|
|
for ($i = 0; $i < $numOfStations; $i++) :
|
|
|
|
$jbIdSrc = $jobDataSrc[$i]["jb_id"];
|
|
$trSortSrc = $jobDataSrc[$i]["tr_sort"];
|
|
|
|
if ($jbIdSrc != "") :
|
|
updateStmt("tour", "jb_id", $jbIdSrc, array("tr_sort", ($trSortSrc + $trSortOffset)),"tr_sort = '" . $trSortSrc . "'");
|
|
updateStmt("tourarticle", "jb_id", $jbIdSrc, array("tr_sort", ($trSortSrc + $trSortOffset)),"tr_sort = '" . $trSortSrc . "'");
|
|
endif;
|
|
endfor;
|
|
|
|
// Compare all (unique) tracking IDs and update "tr_sort" in "tour" and "tourarticle"
|
|
// Iterate SOURCE values
|
|
for ($i = 0; $i < $numOfStations; $i++) :
|
|
|
|
$trackingIdSrc = $jobDataSrc[$i]["trat_serialno"];
|
|
$jbIdSrc = $jobDataSrc[$i]["jb_id"];
|
|
$trSortSrc = $jobDataSrc[$i]["tr_sort"];
|
|
|
|
if ($jbIdSrc != "") :
|
|
// Iterate TARGET values
|
|
for ($j = 0; $j < $numOfStations; $j++) :
|
|
|
|
$trackingIdTarget = $jobDataTarget[$j]["trat_serialno"];
|
|
|
|
if ($trackingIdSrc == $trackingIdTarget) : // Has to be true every time because of IFTMIN and Javascript
|
|
|
|
$jbIdTarget = $jobDataTarget[$j]["jb_id"];
|
|
$trSortTarget = $jobDataTarget[$j]["tr_sort"];
|
|
$crvhSid = $jobDataTarget[$i]["crvh_sid"];
|
|
|
|
if ($jbIdSrc == $jbIdTarget) : // Has to be true every time because of Javascript
|
|
|
|
// Check jb_status
|
|
$jbStatusSrc = getFieldValueFromId("job", "jb_id", $jbIdSrc, "jb_status");
|
|
$jbStatusTarget = getFieldValueFromId("job", "jb_id", $jbIdTarget, "jb_status");
|
|
|
|
if (!$specialJbStatusEnabled || ($jbStatusSrc == $specialJbStatusNo && $jbStatusTarget == $specialJbStatusNo)) :
|
|
|
|
if ($trSortSrc == $trSortTarget) :
|
|
updateStmt("tour", "jb_id", $jbIdSrc, array("tr_sort", $trSortSrc, "tr_cs_freetext", $crvhSid),"tr_sort = '" . ($trSortSrc + $trSortOffset) . "'");
|
|
updateStmt("tourarticle", "jb_id", $jbIdSrc, array("tr_sort", $trSortSrc),"tr_sort = '" . ($trSortSrc + $trSortOffset) . "'");
|
|
else :
|
|
updateStmt("tour", "jb_id", $jbIdTarget, array("tr_sort", $trSortTarget, "tr_cs_freetext", $crvhSid),"tr_sort = '" . ($trSortSrc + $trSortOffset) . "'");
|
|
updateStmt("tourarticle", "jb_id", $jbIdTarget, array("tr_sort", $trSortTarget),"tr_sort = '" . ($trSortSrc + $trSortOffset) . "'");
|
|
endif;
|
|
else :
|
|
$statusMessage = getLngt("AUFTRAGSSTATUS NICHT " . $specialJbStatusNo . "!!!");
|
|
endif;
|
|
endif;
|
|
endif;
|
|
endfor;
|
|
endif;
|
|
endfor;
|
|
|
|
TA("C");
|
|
TA("E");
|
|
|
|
else :
|
|
$statusMessage = getLngt("Es sind keine Paketnummern vorhanden!");
|
|
endif;
|
|
endif;
|
|
|
|
|
|
// Set events for each of the packages
|
|
if ($f_act == "final_save") :
|
|
|
|
TA("B");
|
|
|
|
$currentTime = getDateTime("0");
|
|
|
|
// Write events into "tourarticleprocess" for scanned packages
|
|
for ($i = 0; $i < $numOfStations; $i++) :
|
|
|
|
$jbIdSrc = $jobDataSrc[$i]["jb_id"];
|
|
$trSortSrc = $jobDataSrc[$i]["tr_sort"];
|
|
$cscIdSrc = $jobDataSrc[$i]["csc_id"];
|
|
|
|
// Check for correct data to be final saved regarding the selected costcenter button
|
|
if ($f_costcenter == $cscIdSrc) :
|
|
|
|
if ($jbIdSrc != "") :
|
|
if ($trSortSrc != "1") :
|
|
// Get all tracking IDs being NOT(!) in pick up stations. Only delivery stations!
|
|
$tmpArray = $scanFieldArray[$jbIdSrc . "_" . $trSortSrc];
|
|
$scanField = spliti(",", $tmpArray);
|
|
$scanFieldLen = count($scanField);
|
|
|
|
// Get all "trat_id" entries and tracking IDs of the station
|
|
$sqlquery = "SELECT trat.trat_id, trat.trat_serialno"
|
|
. " FROM phoenix.tourarticle AS trat"
|
|
. " WHERE trat.jb_id = '" . $jbIdSrc . "' AND"
|
|
. " trat.tr_sort = '" . $trSortSrc . "'";
|
|
|
|
$result = $db->query($sqlquery);
|
|
if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage());
|
|
$tratIdArray = array();
|
|
$trackingIdArray = array();
|
|
while ($row = $result->fetch_assoc()):
|
|
$tratIdArray[] = $row["trat_id"];
|
|
$trackingIdArray[] = $row["trat_serialno"];
|
|
endwhile;
|
|
$result->free();
|
|
|
|
// Check for tracking ID being in scanned field
|
|
$trackingIdArrayLen = count($trackingIdArray);
|
|
|
|
for ($j = 0; $j < $trackingIdArrayLen; $j++) :
|
|
|
|
// Check for existence of a scan event "201" or "411"
|
|
$sqlquery = "SELECT tratp.tratp_type, tratp.tratp_state, trat.trat_id"
|
|
. " FROM phoenix.tourarticle AS trat, phoenix.tourarticleprocess AS tratp"
|
|
. " WHERE trat.trat_serialno = '" . $trackingIdArray[$j] . "' AND"
|
|
. " trat.trat_id = tratp.trat_id AND"
|
|
. " tratp.tratp_type IN ('201','411')";
|
|
|
|
$result = $db->query($sqlquery);
|
|
if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage());
|
|
$numberOfEventExists = "";
|
|
$stateOfEventExists = "0";
|
|
$tratIdOfEventExists = "0";
|
|
while ($row = $result->fetch_assoc()):
|
|
$numberOfEventExists = $row["tratp_type"];
|
|
$stateOfEventExists = $row["tratp_state"];
|
|
$tratIdOfEventExists = $row["trat_id"];
|
|
endwhile;
|
|
$result->free();
|
|
|
|
if ($numberOfEventExists == "") :
|
|
// Event does not exist in database, find package in current scan field of the page
|
|
$tmpSearch = array_search($trackingIdArray[$j], $scanField);
|
|
if ($tmpSearch === FALSE) :
|
|
$eventNo = "411";
|
|
else :
|
|
$eventNo = "201";
|
|
endif;
|
|
if ($tratIdArray[$j] != "") :
|
|
// The event has to be placed to the pickup station !!!
|
|
$tmpTratId = getFieldValueFromClause("tourarticle","trat_id","jb_id = '" . $jbIdSrc . "' AND tr_sort = '1' AND trat_serialno = '" . $trackingIdArray[$j] . "'");
|
|
if ($tmpTratId == "") :
|
|
$tmpTratId = $tratIdArray[$j]; // Fallback if package would not be found at pick up station.
|
|
endif;
|
|
insertStmt("tourarticleprocess", array("trat_id", $tmpTratId, "tratp_type", $eventNo, "tratp_state", "1", "tratp_remark", "", "tratp_createtime", $currentTime));
|
|
endif;
|
|
else :
|
|
// Event does exist and if event equals "not found" then it could be changed in found in current scan field of the page and IFTSTA was not sent
|
|
if ($stateOfEventExists < "2" && $numberOfEventExists == "411" && $tratIdOfEventExists > "0") :
|
|
// Find package in current scan field of the page
|
|
$tmpSearch = array_search($trackingIdArray[$j], $scanField);
|
|
if (!($tmpSearch === FALSE)) :
|
|
updateStmt("tourarticleprocess", "trat_id", $tratIdOfEventExists, array("tratp_type", "201", "tratp_createtime", $currentTime), "tratp_type = '411' AND tratp_state < '2'");
|
|
endif;
|
|
endif;
|
|
endif;
|
|
endfor;
|
|
endif;
|
|
endif;
|
|
endif;
|
|
endfor;
|
|
|
|
// Write events for scanned packages (into "tourarticleprocess") being NOT in any electronic manifest
|
|
$trackingIDsNotFoundArray = spliti(",", $trackingIDsNotFound);
|
|
$trackingIDsNotFoundArrayLen = count($trackingIDsNotFoundArray);
|
|
for ($i = 0; $i < $trackingIDsNotFoundArrayLen; $i++) :
|
|
|
|
$trackingIDNotFound = $trackingIDsNotFoundArray[$i];
|
|
|
|
// Check for existence of a scan event "412"
|
|
$sqlquery = "SELECT trat.trat_id"
|
|
. " FROM phoenix.tourarticle AS trat, phoenix.tourarticleprocess AS tratp"
|
|
. " WHERE trat.trat_serialno = '" . $trackingIDNotFound . "' AND"
|
|
. " trat.trat_id = tratp.trat_id AND"
|
|
. " tratp.tratp_type = '412'";
|
|
|
|
$result = $db->query($sqlquery);
|
|
if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage());
|
|
$tmpEventExists = false;
|
|
while ($row = $result->fetch_assoc()):
|
|
$tmpEventExists = true;
|
|
endwhile;
|
|
$result->free();
|
|
|
|
if (!$tmpEventExists) :
|
|
// Final check for the non-existence of the tracking no.
|
|
if ($trackingIDNotFound != "" && !existsEntry("tourarticle",array("trat_serialno",$trackingIDNotFound))) :
|
|
|
|
// It is nessessary to insert it into the "tourarticle", because the package (tracking ID) is not known and no tourarticle entry does exist.
|
|
// We can take the first (pick up) station of each job displayed, because all of them have the same pick up address !!!
|
|
// To simplify matters we take the first job and the first station, equals to the first entry of the list
|
|
$jbIdSrc = $jobDataSrc["0"]["jb_id"];
|
|
$trSortSrc = "1";
|
|
$eventNo = "412";
|
|
|
|
if ($jbIdSrc != "") :
|
|
insertStmt("tourarticle", array("jb_id", $jbIdSrc, "tr_sort", $trSortSrc, "trat_serialno", $trackingIDNotFound, "trat_state", "1", "trat_createtime", $currentTime));
|
|
$tratId = getLastInsertID();
|
|
insertStmt("tourarticleprocess", array("trat_id", $tratId, "tratp_type", $eventNo, "tratp_state", "1", "tratp_remark", "", "tratp_createtime", $currentTime));
|
|
endif;
|
|
endif;
|
|
endif;
|
|
endfor;
|
|
|
|
// Last step is to finalize the job
|
|
for ($i = 0; $i < $numOfStations; $i++) :
|
|
|
|
$jbIdSrc = $jobDataSrc[$i]["jb_id"];
|
|
$trSortSrc = $jobDataSrc[$i]["tr_sort"];
|
|
$cscIdSrc = $jobDataSrc[$i]["csc_id"];
|
|
|
|
// Check for correct data to be final saved regarding the selected costcenter button
|
|
if ($f_costcenter == $cscIdSrc) :
|
|
if ($jbIdSrc != "") :
|
|
if ($trSortSrc == "1") :
|
|
// Set jb_status
|
|
updateStmt("job", "jb_id", $jbIdSrc, array("jb_status", "998", "hq_id", $hq_id)); // ??? , "jb_ordertime", $currentTime, "jb_taketime", $currentTime
|
|
endif;
|
|
endif;
|
|
endif;
|
|
endfor;
|
|
|
|
TA("C");
|
|
TA("E");
|
|
|
|
$numOfStations = 0;
|
|
// $f_costcenter = "";
|
|
|
|
// Call function to finalize the job
|
|
include_once ("../tools/finalize_job.inc.php");
|
|
finalize_jobs();
|
|
endif;
|
|
|
|
|
|
function getCurrentJobData($jobArrayOfIFTMIN, $scanFieldArray = array(), $driverPool, $f_costcenter) {
|
|
global $db, $PHP_SELF;
|
|
global $hq_id;
|
|
|
|
$numOfStations = 0;
|
|
$htmlOut = "";
|
|
|
|
$jobArrayOfIFTMINLen = count($jobArrayOfIFTMIN);
|
|
|
|
if ($jobArrayOfIFTMINLen > 0) :
|
|
|
|
$whereClauseJobs = "(" . implode(",", $jobArrayOfIFTMIN) . ")";
|
|
|
|
// Get data from "job", "tour", "tourarticle"
|
|
/*
|
|
$sqlquery = "SELECT jb.jb_id, jb.cr_id, csc.csc_id, csc.csc_name,"
|
|
. " tr.tr_sort, tr.tr_signname, tr.tr_hsno,"
|
|
. " ad.ad_id, ad.ad_street, ad.ad_zipcode, ad.ad_city, ad.ad_country,"
|
|
. " crvh.crvh_sid"
|
|
. " FROM phoenix.job AS jb LEFT JOIN phoenix.couriervehicle AS crvh ON jb.cr_id = crvh.cr_id,"
|
|
. " phoenix.tour AS tr, phoenix.address AS ad, phoenix.costcenter AS csc"
|
|
. " WHERE jb.jb_id IN " . $whereClauseJobs . " AND"
|
|
. " jb.jb_id = tr.jb_id AND"
|
|
. " tr.ad_id = ad.ad_id AND"
|
|
. " jb.csc_id_payer = csc.csc_id"
|
|
. " ORDER BY jb.jb_id, tr.tr_sort";
|
|
|
|
$sqlquery = "SELECT jb.jb_id, csc.csc_id, csc.csc_name,"
|
|
. " tr.tr_sort, tr.tr_signname, tr.tr_hsno, tr.tr_cs_freetext AS crvh_sid,"
|
|
. " ad.ad_id, ad.ad_street, ad.ad_zipcode, ad.ad_city, ad.ad_country"
|
|
. " FROM phoenix.job AS jb, phoenix.tour AS tr, phoenix.address AS ad, phoenix.costcenter AS csc"
|
|
. " WHERE jb.jb_id IN " . $whereClauseJobs . " AND"
|
|
. " jb.jb_id = tr.jb_id AND"
|
|
. " tr.ad_id = ad.ad_id AND"
|
|
. " jb.csc_id_payer = csc.csc_id"
|
|
. " ORDER BY jb.jb_id, tr.tr_sort";
|
|
*/
|
|
$sqlquery = "SELECT jb.jb_id, csc.csc_id, csc.csc_name, tr.tr_comp, tr.tr_comp2, tr.tr_ware_from_to,"
|
|
. " tr.tr_sort, tr.tr_signname, tr.tr_hsno, tr.tr_cs_freetext AS crvh_sid,"
|
|
. " ad.ad_id, ad.ad_street, ad.ad_zipcode, ad.ad_city, ad.ad_country"
|
|
. " FROM phoenix.job AS jb, phoenix.tour AS tr, phoenix.address AS ad, phoenix.costcenter AS csc"
|
|
. " WHERE jb.jb_id IN " . $whereClauseJobs . " AND"
|
|
. " jb.jb_id = tr.jb_id AND"
|
|
. " tr.ad_id = ad.ad_id AND"
|
|
. " jb.csc_id_payer = csc.csc_id"
|
|
. " ORDER BY jb.jb_id, tr.tr_sort";
|
|
|
|
// echo $sqlquery . "<br>";
|
|
$result = $db->query($sqlquery);
|
|
if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage());
|
|
|
|
$htmlOut .= "<table>\n";
|
|
$htmlOut .= "<tr>\n";
|
|
// if ($f_costcenter == "") :
|
|
$htmlOut .= " <td align=\"center\"><b>" . getLngt("Kostenstelle") . "</b></td>\n";
|
|
// endif;
|
|
// $htmlOut .= " <td align=\"center\"><b>" . getLngt("Auftrag") . "</b></td>\n";
|
|
$htmlOut .= " <td align=\"center\"><b>" . getLngt("Station") . "</b></td>\n";
|
|
$htmlOut .= " <td align=\"center\"><b>" . getLngt("Adresse") . "</b></td>\n";
|
|
$htmlOut .= " <td align=\"center\"><b>" . " " . "</b></td>\n";
|
|
$htmlOut .= " <td align=\"center\"><b>" . getLngt("Sendung") . "</b></td>\n";
|
|
$htmlOut .= " <td align=\"center\"><b>" . getLngt("Scan") . "</b></td>\n";
|
|
$htmlOut .= " <td align=\"center\"><b>" . getLngt("Fahrer")
|
|
. " <input type=\"checkbox\" name=\"crvhTopDown\" value=\"0\" onfocus=\"javascript: setScanFocus();\">"
|
|
. " </b></td>\n";
|
|
$htmlOut .= " <td align=\"center\"><b>" . getLngt("Aktion") . "</b></td>\n";
|
|
$htmlOut .= "</tr>\n";
|
|
|
|
$numOfStations = $result->numRows();
|
|
|
|
$remJbId = "";
|
|
$remCscId = "";
|
|
$remCscName = "";
|
|
$i = 0;
|
|
while ($row = $result->fetch_assoc()):
|
|
|
|
// Get the tracking IDs of the stations
|
|
$trackingIDs = getColVectorFromDB2ArrayByClause("tourarticle", "trat_serialno", "jb_id = '" . $row["jb_id"] . "' AND tr_sort = '" . $row["tr_sort"] . "'", "", "");
|
|
$trackingIDsLen = count($trackingIDs);
|
|
$trackingIDsString = implode(",", $trackingIDs);
|
|
|
|
// Check for existence of event "201" or "411"
|
|
$existingEventNo = "";
|
|
for ($j = 0; $j < $trackingIDsLen; $j++) :
|
|
// Get all trat_id entries from the current tracking ID(s)
|
|
$tratIDs = getColVectorFromDB2ArrayByClause("tourarticle", "trat_id", "trat_serialno = '" . $trackingIDs[$j] . "'", "", "");
|
|
$tratIDsLen = count($tratIDs);
|
|
if ($tratIDsLen > 0) :
|
|
$tratIDsString = implode(",", $tratIDs);
|
|
// Get all event entries ("201" and "411" only) from the specified trat_id entries
|
|
$tratTypes = getColVectorFromDB2ArrayByClause("tourarticleprocess", "tratp_type", "trat_id IN (" . $tratIDsString . ") AND tratp_type IN ('201','411')", "", "");
|
|
$tratTypesLen = count($tratTypes);
|
|
if ($tratTypesLen > 0) :
|
|
$existingEventNo = $tratTypes[0];
|
|
endif;
|
|
endif;
|
|
endfor;
|
|
|
|
// Get number of stations of the job
|
|
$numOfStationsOfCurrentJob = getCountOfTable("tour", "jb_id = '" . $row["jb_id"] . "'");
|
|
|
|
// Driver pool
|
|
$tmpSearch = array_search($row["crvh_sid"], $driverPool);
|
|
if ($tmpSearch === FALSE) :
|
|
$driverPool[] = $row["crvh_sid"];
|
|
endif;
|
|
|
|
if ($remJbId != "" && $remJbId != $row["jb_id"]) :
|
|
$htmlOut .= "<tr><td colspan=\"6\" align=\"center\"><input type=\"button\" name=\"button_save_changes\" value=\"" . getLngt($remCscName . " Aufträge freigeben") . "\" onclick=\"javascript:finishFinalSave('" . $remCscId . "');\"><td><tr>";
|
|
$htmlOut .= "<tr><td colspan=\"6\" align=\"center\"><img src=\"../images/spacer_bgcolor.jpg\" border=\"0\" height=\"20\" width=\"100%\"></td></tr>\n";
|
|
endif;
|
|
|
|
// If first character of "tr_comp" equals "*" then add "*" to "tr_comp2"
|
|
$asterisk_01 = "";
|
|
if (substr($row["tr_comp"],0,1) == "*") :
|
|
$asterisk_01 = " [*]";
|
|
endif;
|
|
|
|
// FORM fields
|
|
// Hidden (Source)
|
|
$htmlOut .= "<input type=\"hidden\" name=\"jobDataSrc_" . $i . "_csc_id\" value=\"" . $row["csc_id"] . "\">\n";
|
|
// $htmlOut .= "<input type=\"hidden\" name=\"jobDataSrc_" . $i . "_csc_name\" value=\"" . $row["csc_name"] . "\">\n";
|
|
$htmlOut .= "<input type=\"hidden\" name=\"jobDataSrc_" . $i . "_csc_name\" value=\"" . $row["tr_comp2"] . $asterisk_01 . "\">\n";
|
|
$htmlOut .= "<input type=\"hidden\" name=\"jobDataSrc_" . $i . "_jb_id\" value=\"" . $row["jb_id"] . "\">\n";
|
|
$htmlOut .= "<input type=\"hidden\" name=\"jobDataSrc_" . $i . "_tr_sort\" value=\"" . $row["tr_sort"] . "\">\n";
|
|
$htmlOut .= "<input type=\"hidden\" name=\"jobDataSrc_" . $i . "_ad_id\" value=\"" . $row["ad_id"] . "\">\n";
|
|
$htmlOut .= "<input type=\"hidden\" name=\"jobDataSrc_" . $i . "_trat_id\" value=\"" . $row["trat_id"] . "\">\n";
|
|
if ($row["tr_sort"] == "1") :
|
|
$htmlOut .= "<input type=\"hidden\" name=\"jobDataSrc_" . $i . "_trat_serialno\" value=\"\" disabled>\n";
|
|
else :
|
|
$htmlOut .= "<input type=\"hidden\" name=\"jobDataSrc_" . $i . "_trat_serialno\" value=\"" . $trackingIDsString . "\">\n";
|
|
endif;
|
|
$htmlOut .= "<input type=\"hidden\" name=\"jobDataSrc_" . $i . "_crvh_sid\" value=\"" . $row["crvh_sid"] . "\">\n";
|
|
// Hidden (Target)
|
|
$htmlOut .= "<input type=\"hidden\" name=\"jobDataTarget_" . $i . "_csc_id\" value=\"" . $row["csc_id"] . "\">\n";
|
|
$htmlOut .= "<input type=\"hidden\" name=\"jobDataTarget_" . $i . "_ad_id\" value=\"" . $row["ad_id"] . "\">\n";
|
|
$htmlOut .= "<input type=\"hidden\" name=\"jobDataTarget_" . $i . "_trat_id\" value=\"" . $row["trat_id"] . "\">\n";
|
|
// Displayed
|
|
$htmlOut .= "<tr>\n";
|
|
// if ($f_costcenter == "") :
|
|
// $htmlOut .= " <td><input type=\"text\" name=\"jobDataTarget_" . $i . "_csc_name\" value=\"" . $row["csc_name"] . "\" size=\"15\" onfocus=\"javascript: setScanFocus();\" readonly ></td>\n";
|
|
$htmlOut .= " <td>" . "<input type=\"text\" name=\"jobDataTarget_" . $i . "_csc_name\" value=\"" . $row["tr_comp2"] . $asterisk_01 . "\" size=\"15\" onfocus=\"javascript: setScanFocus();\" readonly ></td>\n";
|
|
// endif;
|
|
// $htmlOut .= " <td><input type=\"text\" name=\"jobDataTarget_" . $i . "_jb_id\" value=\"" . $row["jb_id"] . "\" size=\"10\" onfocus=\"javascript: setScanFocus();\" readonly ></td>\n";
|
|
$htmlOut .= "<input type=\"hidden\" name=\"jobDataTarget_" . $i . "_jb_id\" value=\"" . $row["jb_id"] . "\">\n";
|
|
$htmlOut .= " <td><input type=\"text\" name=\"jobDataTarget_" . $i . "_tr_sort\" value=\"" . $row["tr_sort"] . "\" size=\"3\" onfocus=\"javascript: setScanFocus();\" readonly ></td>\n";
|
|
$htmlOut .= " <td><input type=\"text\" name=\"jobDataTarget_" . $i . "_address\" value=\"" . $row["ad_zipcode"] . " " . $row["ad_city"] . ", " . $row["ad_street"] . " " . $row["tr_hsno"] . "\" size=\"50\" readonly >";
|
|
if($row["tr_sort"] != "1"):
|
|
$htmlOut .= " <a href=\"javascript:showInfo('" . $trackingIDsString . "')\"><b>?</b></a>";
|
|
endif;
|
|
$htmlOut .= "</td>\n";
|
|
if ($row["tr_sort"] == "1" || $row["tr_ware_from_to"] == "1") :
|
|
$htmlOut .= " <td> </td>\n";
|
|
else :
|
|
$streetHttp = urlencode($row["ad_street"]);
|
|
$zipcodeHttp = urlencode($row["ad_zipcode"]);
|
|
$cityHttp = urlencode($row["ad_city"]);
|
|
$hsnoHttp = urlencode($row["tr_hsno"]);
|
|
$htmlOut .= " <td><input type=\"button\" name=\"action_ad_search\" value=\"...\" onclick=\"searchScanAddress('" . $i . "','" . $row["ad_id"] . "','" . $streetHttp . "','" . $zipcodeHttp . "','" . $cityHttp . "','" . $row["jb_id"] . "','" . $row["tr_sort"] . "','" . $hsnoHttp . "');\"></td>\n";
|
|
endif;
|
|
if ($row["tr_sort"] == "1") :
|
|
$htmlOut .= " <td><input type=\"text\" name=\"jobDataTarget_" . $i . "_trat_serialno\" value=\"\" size=\"35\" readonly disabled ></td>\n";
|
|
$htmlOut .= " <td><input type=\"text\" name=\"jobDataTarget_" . $i . "_scan\" value=\"\" size=\"35\" readonly disabled ></td>\n";
|
|
else :
|
|
$htmlOut .= " <td><input type=\"text\" name=\"jobDataTarget_" . $i . "_trat_serialno\" value=\"" . $trackingIDsString . "\" size=\"35\" readonly ></td>\n";
|
|
|
|
$tmpScanValue = $scanFieldArray[$row["jb_id"] . "_" . $row["tr_sort"]];
|
|
if ($existingEventNo == "201") :
|
|
$tmpScanValue = $trackingIDsString;
|
|
elseif ($existingEventNo == "411") :
|
|
$tmpScanValue = getLngt("Sendung fehlte!");
|
|
endif;
|
|
$htmlOut .= " <td><input type=\"text\" name=\"jobDataTarget_" . $i . "_scan\" value=\"" . $tmpScanValue . "\" size=\"35\" readonly ></td>\n";
|
|
endif;
|
|
$htmlOut .= " <td><select name=\"jobDataTarget_" . $i . "_crvh_sid\" onChange=\"changeVehicle(this,'" . $i . "','" . $row["jb_id"] . "','" . $row["tr_sort"] . "','" . $row["crvh_sid"] . "','" . $row["csc_id"] . "');\"><option value=\"\">---</option>" . addOptionsFromTable("couriervehicle AS crvh, courier AS cr", "crvh_sid", "crvh_sid", "crvh_sid", "crvh.cr_id = cr.cr_id AND cr.hq_id = '" . ($hq_id != 99 ? ($hq_id != 98 ? $hq_id : 7) : 8) . "'", $row["crvh_sid"]) . "</select></td>\n";
|
|
$htmlOut .= " <td align=\"center\">\n";
|
|
|
|
// No arrows at the first station (pick up)
|
|
// Move down
|
|
if ($row["tr_sort"] >= "2" && $row["tr_sort"] < $numOfStationsOfCurrentJob) :
|
|
$htmlOut .= " <a href=\"javascript:moveItem('down'," . $i . ")\">" . "<img src=\"../images/arrow_down.png\" border=\"1\" height=\"25\" width=\"10\">" . "</a>\n";
|
|
else :
|
|
$htmlOut .= " ";
|
|
endif;
|
|
// Move up
|
|
if ($row["tr_sort"] > "2") :
|
|
$htmlOut .= " <a href=\"javascript:moveItem('up'," . $i . ")\">" . "<img src=\"../images/arrow_up.png\" border=\"1\" height=\"25\" width=\"10\">" . "</a>\n";
|
|
else :
|
|
$htmlOut .= "  ";
|
|
endif;
|
|
|
|
$htmlOut .= " </td>\n";
|
|
$htmlOut .= "</tr>\n";
|
|
|
|
$remJbId = $row["jb_id"];
|
|
$remCscId = $row["csc_id"];
|
|
$remCscName = $row["csc_name"];
|
|
|
|
$i++;
|
|
endwhile;
|
|
$result->free();
|
|
$htmlOut .= "<tr><td colspan=\"6\" align=\"center\"><input type=\"button\" name=\"button_save_changes\" value=\"" . getLngt($remCscName . " Aufträge freigeben") . "\" onclick=\"javascript:finishFinalSave('" . $remCscId . "');\"><td><tr>";
|
|
$htmlOut .= "</table>\n";
|
|
endif;
|
|
|
|
return array($htmlOut, $numOfStations, $driverPool);
|
|
}
|
|
|
|
|
|
// Init current costcenter for the page if empty (Do this AFTER saving or final saving data!)
|
|
if ($f_costcenter == "") : $f_costcenter = $cscIdPayerArrayOfIFTMIN[0]; endif;
|
|
|
|
// $outCostcenters = "<b>" . getLngt("AUSWAHL:") . "</b> ";
|
|
// $outCostcenters .= "<select name=\"f_costcenter\" onChange=\"changeCostcenter();\"><option value=\"\">---</option>" . addOptionsFromAssociativeArray($cscIdPayerAssociativeArrayOfIFTMIN, $f_costcenter) . "</select>\n";
|
|
// $outCostcenters .= " ";
|
|
$outCostcenters = "";
|
|
|
|
// Get job data array of specified IFTMIN orders accorting to the selected costcenter
|
|
$whereClauseCostcenter = "";
|
|
/*
|
|
if ($f_costcenter != "" && is_numeric($f_costcenter)) :
|
|
$whereClauseCostcenter = " AND jb.csc_id_payer = '" . $f_costcenter . "'";
|
|
endif;
|
|
*/
|
|
|
|
$sqlquery = "SELECT jb.jb_id"
|
|
. " FROM phoenix.job AS jb"
|
|
. " WHERE jb.jb_status = '" . $specialJbStatusNo . "' AND"
|
|
. " jb.hq_id = '" . $hq_id . "'"
|
|
. $whereClauseCostcenter
|
|
. " ORDER BY jb.jb_id";
|
|
|
|
$result = $db->query($sqlquery);
|
|
if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage());
|
|
|
|
while ($row = $result->fetch_assoc()):
|
|
$jobArrayOfIFTMIN[] = $row["jb_id"];
|
|
endwhile;
|
|
$result->free();
|
|
|
|
$tmpJobArray = getCurrentJobData($jobArrayOfIFTMIN, $scanFieldArray, $driverPool, $f_costcenter);
|
|
$htmlOut = $tmpJobArray[0];
|
|
$numOfStations = $tmpJobArray[1];
|
|
$driverPool = $tmpJobArray[2];
|
|
?>
|
|
|
|
|
|
<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 type="text/javascript">
|
|
<!--
|
|
|
|
/********************************************************************************/
|
|
// Quelle: http://9elements.com/html5demos/audio/
|
|
// Audioelement erstellen
|
|
//var ackSnd;
|
|
var hintSnd;
|
|
var warnSnd;
|
|
var soundOn = true;
|
|
|
|
try {
|
|
// ackSnd = new Audio("");
|
|
hintSnd = new Audio("");
|
|
warnSnd = new Audio("");
|
|
} catch (e) {
|
|
soundOn = false;
|
|
}
|
|
|
|
function initSounds() {
|
|
if (soundOn) {
|
|
// im DOM einfügen, sonst wird es nicht abgespielt
|
|
// document.body.appendChild(ackSnd);
|
|
document.body.appendChild(hintSnd);
|
|
document.body.appendChild(warnSnd);
|
|
|
|
// herausfinden welcher Medientyp abgespielt werden kann
|
|
var canPlayType = warnSnd.canPlayType("audio/wav");
|
|
if(canPlayType.match(/maybe|probably/i)) {
|
|
// ackSnd.src = 'sound/registerscan.wav';
|
|
hintSnd.src = 'sound/buzzer1.wav';
|
|
warnSnd.src = 'sound/buzzer.wav';
|
|
} else {
|
|
soundOn = false;
|
|
}
|
|
}
|
|
// if (soundOn) {
|
|
// alert("Sound is on!")
|
|
// } else {
|
|
// alert("Sound is off!")
|
|
// }
|
|
}
|
|
|
|
//function beepAck() {
|
|
// if (soundOn)
|
|
// ackSnd.play();
|
|
//}
|
|
|
|
function beepHint() {
|
|
if (soundOn)
|
|
hintSnd.play();
|
|
}
|
|
|
|
function beepWarn() {
|
|
if (soundOn)
|
|
warnSnd.play();
|
|
}
|
|
/********************************************************************************/
|
|
|
|
// NAVIGATION
|
|
<?php echo $jsMenuOut; ?>
|
|
|
|
|
|
var numOfStations = <?php echo $numOfStations ?>;
|
|
|
|
function setScanFocus() {
|
|
<?php if ($usedFramework == "2") : ?>
|
|
if ($('f_scan')) {
|
|
$('f_scan').focus();
|
|
}
|
|
<?php else : ?>
|
|
if ($('#f_scan')) {
|
|
$('#f_scan').focus();
|
|
}
|
|
<?php endif; ?>
|
|
}
|
|
|
|
function executeScanCode() {
|
|
frm = document.forms[0];
|
|
var scan_elem = document.forms[0].f_scan;
|
|
var scan_value = trim(scan_elem.value);
|
|
|
|
var IDfound = false;
|
|
var IDfoundDouble = false;
|
|
|
|
if (scan_value != '') {
|
|
for(var i=0; i<numOfStations; ++i) {
|
|
var tratSerialno_elem = eval('frm.jobDataTarget_' + i + '_trat_serialno');
|
|
var tratSerialno = tratSerialno_elem.value;
|
|
var scannedIDs = eval('frm.jobDataTarget_' + i + '_scan');
|
|
|
|
var trackingIDs = tratSerialno.split(",");
|
|
trackingIDsLen = trackingIDs.length;
|
|
|
|
for(var j=0; j<trackingIDsLen; ++j) {
|
|
trackingID = trackingIDs[j];
|
|
if (trackingID == scan_value) {
|
|
|
|
IDfound = true;
|
|
|
|
// Check for multiple scan
|
|
tmpScannedIDs = scannedIDs.value;
|
|
checkScannedIDs = tmpScannedIDs.split(",");
|
|
checkScannedIDsLen = checkScannedIDs.length;
|
|
IDfoundDouble = false;
|
|
for(var j=0; j<checkScannedIDsLen; ++j) {
|
|
checkScanID = checkScannedIDs[j];
|
|
if (checkScanID == scan_value) {
|
|
IDfoundDouble = true;
|
|
}
|
|
}
|
|
if (!IDfoundDouble) {
|
|
if (scannedIDs.value == '<?php echo getLngt("Sendung fehlte!") ?>') {
|
|
scannedIDs.value = '';
|
|
}
|
|
if (scannedIDs.value != '') {
|
|
scannedIDs.value = scannedIDs.value + ',';
|
|
}
|
|
scannedIDs.value = scannedIDs.value + scan_value;
|
|
// beepAck();
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (IDfoundDouble) {
|
|
beepHint();
|
|
alert('<?php echo getLngt("Das Paket hatten Sie schon gescanned!") ?>');
|
|
} else {
|
|
if (scan_value != '') {
|
|
IDfoundDouble = false;
|
|
var notFoundIDs = frm.trackingIDsNotFound.value;
|
|
var notFoundIDsArray = notFoundIDs.split(",");
|
|
notFoundIDsArrayLen = notFoundIDsArray.length;
|
|
for(var j=0; j<notFoundIDsArrayLen; ++j) {
|
|
notFoundID = notFoundIDsArray[j];
|
|
if (notFoundID == scan_value) {
|
|
IDfoundDouble = true;
|
|
}
|
|
}
|
|
if (IDfoundDouble) {
|
|
beepWarn();
|
|
alert('<?php echo getLngt("Das Paket hatten Sie schon gescanned! Die Nummer befindet sich bei den nicht gefundenen Paketnummern!") ?>');
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!IDfound && !IDfoundDouble && scan_value != '') {
|
|
beepWarn();
|
|
var parPrefix = '<?php echo getParameterValue("0", "MASK_SCAN_TRACKING_NO_PREFIX", "0");?>';
|
|
/*
|
|
if (!confirm('<?php echo getLngt("Haben Sie versehentlich die Rechnungsnummer gescanned?") ?> [' + scan_value + ']')) {
|
|
if (frm.trackingIDsNotFound.value != '') {frm.trackingIDsNotFound.value = frm.trackingIDsNotFound.value + ','};
|
|
frm.trackingIDsNotFound.value = frm.trackingIDsNotFound.value + scan_value;
|
|
}
|
|
*/
|
|
if (frm.trackingIDsNotFound.value != '') {frm.trackingIDsNotFound.value = frm.trackingIDsNotFound.value + ','};
|
|
frm.trackingIDsNotFound.value = frm.trackingIDsNotFound.value + scan_value;
|
|
if (parPrefix != '' && parPrefix == scan_value.substring(0,3)) {
|
|
beepWarn();
|
|
alert('<?php echo getLngt("ACHTUNG: Kein Auftrag für das Paket ") ?> [' + scan_value + ']! Bitte zur Seite legen und mit dem Lieferanten klären!');
|
|
}
|
|
}
|
|
|
|
scan_elem.value = '';
|
|
setScanFocus();
|
|
}
|
|
|
|
function moveItem(upOrDown, station) {
|
|
frm = document.forms[0];
|
|
|
|
// ATTENTION: "down" is the same like "up" with changed stations
|
|
var stationTo;
|
|
if (upOrDown == 'up') {
|
|
stationTo = station - 1;
|
|
} else {
|
|
// Switch stations to use "UP" functionality
|
|
stationTo = station;
|
|
station = station + 1;
|
|
upOrDown = 'up';
|
|
};
|
|
|
|
// *** Get current contents ***
|
|
// FROM
|
|
var jbId = eval('frm.jobDataTarget_' + station + '_jb_id').value;
|
|
var trSort = eval('frm.jobDataTarget_' + station + '_tr_sort').value;
|
|
var adId = eval('frm.jobDataTarget_' + station + '_ad_id').value;
|
|
var address = eval('frm.jobDataTarget_' + station + '_address').value;
|
|
var tratId = eval('frm.jobDataTarget_' + station + '_trat_id').value;
|
|
var tratSerialno = eval('frm.jobDataTarget_' + station + '_trat_serialno').value;
|
|
var scan = eval('frm.jobDataTarget_' + station + '_scan').value;
|
|
var crvhSid;
|
|
var tmpCrvhSidElem = eval('frm.jobDataTarget_' + station + '_crvh_sid');
|
|
for(var j=0;j<tmpCrvhSidElem.length;++j) {
|
|
if (tmpCrvhSidElem.options[j].selected == true) {
|
|
crvhSid = tmpCrvhSidElem.options[j].value;
|
|
}
|
|
}
|
|
// TO
|
|
var jbIdTo = eval('frm.jobDataTarget_' + stationTo + '_jb_id').value;
|
|
var trSortTo = eval('frm.jobDataTarget_' + stationTo + '_tr_sort').value;
|
|
var adIdTo = eval('frm.jobDataTarget_' + stationTo + '_ad_id').value;
|
|
var addressTo = eval('frm.jobDataTarget_' + stationTo + '_address').value;
|
|
var tratIdTo = eval('frm.jobDataTarget_' + stationTo + '_trat_id').value;
|
|
var tratSerialnoTo = eval('frm.jobDataTarget_' + stationTo + '_trat_serialno').value;
|
|
var scanTo = eval('frm.jobDataTarget_' + stationTo + '_scan').value;
|
|
var crvhSidTo;
|
|
var tmpCrvhSidElemTo = eval('frm.jobDataTarget_' + stationTo + '_crvh_sid');
|
|
for(var j=0;j<tmpCrvhSidElemTo.length;++j) {
|
|
if (tmpCrvhSidElemTo.options[j].selected == true) {
|
|
crvhSidTo = tmpCrvhSidElemTo.options[j].value;
|
|
}
|
|
}
|
|
|
|
// *** Switch contents ***
|
|
// FROM => TO
|
|
eval('frm.jobDataTarget_' + station + '_ad_id').value = adIdTo;
|
|
eval('frm.jobDataTarget_' + station + '_address').value = addressTo;
|
|
eval('frm.jobDataTarget_' + station + '_trat_id').value = tratIdTo;
|
|
eval('frm.jobDataTarget_' + station + '_trat_serialno').value = tratSerialnoTo;
|
|
eval('frm.jobDataTarget_' + station + '_scan').value = scanTo;
|
|
tmpCrvhSidElem = 'jobDataTarget_' + station + '_crvh_sid';
|
|
setSelectedValue(tmpCrvhSidElem, crvhSidTo);
|
|
// TO => FROM
|
|
eval('frm.jobDataTarget_' + stationTo + '_ad_id').value = adId;
|
|
eval('frm.jobDataTarget_' + stationTo + '_address').value = address;
|
|
eval('frm.jobDataTarget_' + stationTo + '_trat_id').value = tratId;
|
|
eval('frm.jobDataTarget_' + stationTo + '_trat_serialno').value = tratSerialno;
|
|
eval('frm.jobDataTarget_' + stationTo + '_scan').value = scan;
|
|
tmpCrvhSidElemTo = 'jobDataTarget_' + stationTo + '_crvh_sid';
|
|
setSelectedValue(tmpCrvhSidElemTo, crvhSid);
|
|
}
|
|
|
|
function execBodyOnLoad() {
|
|
<?php
|
|
echo $phpCurrentNavigationOnLoad;
|
|
?>
|
|
initSounds();
|
|
// initForm();
|
|
displayStatusMessage();
|
|
setScanFocus();
|
|
}
|
|
|
|
function changeVehicle(elem, station, jbId, trSort, crvhSidOld, cscId) {
|
|
var elemLen = elem.length;
|
|
if (document.forms[0].crvhTopDown.checked) {
|
|
// Selected vehicle of the current element
|
|
for(var j=0;j<elemLen;++j) {
|
|
if (elem.options[j].selected == true) {
|
|
crvhSid = elem.options[j].value;
|
|
}
|
|
}
|
|
// Change all following elements according to "crvhSid"
|
|
for(var i=station;i<numOfStations;++i) {
|
|
tmpCrvhSidElem = 'jobDataTarget_' + i + '_crvh_sid';
|
|
setSelectedValue(tmpCrvhSidElem, crvhSid);
|
|
}
|
|
}
|
|
}
|
|
|
|
function changeVehicleOLD(elem, station, jbId, trSort, crvhSidOld, cscId) {
|
|
var elemLen = elem.length;
|
|
var crvhSid;
|
|
var jbIdTarget;
|
|
var trSortTarget;
|
|
var cscIdTarget;
|
|
var costcenterOk = true;
|
|
|
|
// Old vehicle (Source)
|
|
var crvhSidSource = eval('frm.jobDataSrc_' + station + '_crvh_sid').value;
|
|
var crvhSidTargetCurrent;
|
|
|
|
// Selected vehicle (Target)
|
|
for(var j=0;j<elemLen;++j) {
|
|
if (elem.options[j].selected == true) {
|
|
crvhSid = elem.options[j].value;
|
|
}
|
|
}
|
|
|
|
if (crvhSid != '') {
|
|
// Check compatibility of the costcenters
|
|
for(var i=0;i<numOfStations;++i) {
|
|
jbIdTarget = eval('frm.jobDataTarget_' + i + '_jb_id').value;
|
|
trSortTarget = eval('frm.jobDataTarget_' + i + '_tr_sort').value;
|
|
// Look for costcenter ID in pick up station only
|
|
if (trSortTarget == 1) {
|
|
// Get vehicle of the pickup station
|
|
crvhSidTargetCurrentElem = eval('frm.jobDataTarget_' + i + '_crvh_sid');
|
|
crvhSidTargetCurrentElemLen = crvhSidTargetCurrentElem.length;
|
|
for(var j=0;j<crvhSidTargetCurrentElemLen;++j) {
|
|
if (crvhSidTargetCurrentElem.options[j].selected == true) {
|
|
crvhSidTargetCurrent = crvhSidTargetCurrentElem.options[j].value;
|
|
}
|
|
}
|
|
// If the target vehicle matches the selected vehicle, both costcenters have to be the same
|
|
if (crvhSidTargetCurrent == crvhSid) {
|
|
cscIdTarget = eval('frm.jobDataTarget_' + i + '_csc_id').value;
|
|
if (cscIdTarget == cscId) {
|
|
tmpCrvhSidElem = 'jobDataTarget_' + i + '_crvh_sid';
|
|
setSelectedValue(tmpCrvhSidElem, crvhSid);
|
|
} else {
|
|
costcenterOk = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (costcenterOk) {
|
|
if (trSort == '1') {
|
|
for(var i=0;i<numOfStations;++i) {
|
|
jbIdTarget = eval('frm.jobDataTarget_' + i + '_jb_id').value;
|
|
trSortTarget = eval('frm.jobDataTarget_' + i + '_tr_sort').value;
|
|
if (jbIdTarget == jbId && trSortTarget > 1) {
|
|
// Get current vehicle of the target element
|
|
crvhSidTargetCurrentElem = eval('frm.jobDataTarget_' + i + '_crvh_sid');
|
|
crvhSidTargetCurrentElemLen = crvhSidTargetCurrentElem.length;
|
|
for(var j=0;j<crvhSidTargetCurrentElemLen;++j) {
|
|
if (crvhSidTargetCurrentElem.options[j].selected == true) {
|
|
crvhSidTargetCurrent = crvhSidTargetCurrentElem.options[j].value;
|
|
}
|
|
}
|
|
// if (crvhSidTargetCurrent == crvhSidSource) {
|
|
tmpCrvhSidElem = 'jobDataTarget_' + i + '_crvh_sid';
|
|
setSelectedValue(tmpCrvhSidElem, crvhSid);
|
|
// }
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
tmpCrvhSidElem = 'jobDataTarget_' + station + '_crvh_sid';
|
|
setSelectedValue(tmpCrvhSidElem, crvhSidOld);
|
|
alert('<?php echo getLngt("Dieses Fahrerzeug können Sie derzeit nicht zuordnen, da es in einem anderen Auftrag mit einer abweichenden Kostenstelle schon zugewiesen ist!") ?>');
|
|
}
|
|
}
|
|
}
|
|
|
|
function finishPage(f_act) {
|
|
document.forms[0].f_act.value = f_act;
|
|
document.forms[0].submit();
|
|
}
|
|
|
|
function finishSave() {
|
|
finishPage('save');
|
|
}
|
|
|
|
function finishSaveOld() {
|
|
var submitOk = true;
|
|
|
|
// Get driver entries of the pickup stations
|
|
var driverPool = new Array();
|
|
var crvhSid;
|
|
var count = 0;
|
|
for(var i=0;i<numOfStations;++i) {
|
|
var tmptrSortElem = eval('frm.jobDataTarget_' + i + '_tr_sort');
|
|
var tmptrSortValue = tmptrSortElem.value;
|
|
|
|
// Check for pick up address only
|
|
if (tmptrSortValue == '1') {
|
|
var tmpCrvhSidElem = eval('frm.jobDataTarget_' + i + '_crvh_sid');
|
|
for(var j=0;j<tmpCrvhSidElem.length;++j) {
|
|
if (tmpCrvhSidElem.options[j].selected == true) {
|
|
driverPool[count] = tmpCrvhSidElem.options[j].value;
|
|
count++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var driverPoolLen = driverPool.length;
|
|
|
|
// Check driver
|
|
// [1.] One driver cannot have more then one tour
|
|
var allDisjunct = true;
|
|
for(var i=0;i<driverPoolLen;++i) {
|
|
x = parseInt(i) + 1;
|
|
for(var j=x;j<driverPoolLen;++j) {
|
|
if (driverPool[i] == driverPool[j] && driverPool[i] != '' && driverPool[j] != '') {
|
|
allDisjunct = false;
|
|
submitOk = false;
|
|
}
|
|
}
|
|
}
|
|
if (!allDisjunct) {
|
|
alert('<?php echo getLngt("In den Abholstationen müssen unterschiedliche Fahrer eingetragen sein") ?>');
|
|
}
|
|
|
|
// [2.] All driver entries being NOT the first pick up station only have to be out of the pool according to [1.]
|
|
var currentDriver;
|
|
var currentDriverIsOk = true;
|
|
for(var i=0;i<numOfStations;++i) {
|
|
var tmptrSortElem = eval('frm.jobDataTarget_' + i + '_tr_sort');
|
|
var tmptrSortValue = tmptrSortElem.value;
|
|
|
|
// Check for all stations but NOT the pick up address
|
|
if (tmptrSortValue != '1') {
|
|
// Get current driver of the row
|
|
currentDriver = '';
|
|
var tmpCrvhSidElem = eval('frm.jobDataTarget_' + i + '_crvh_sid');
|
|
for(var j=0;j<tmpCrvhSidElem.length;++j) {
|
|
if (tmpCrvhSidElem.options[j].selected == true) {
|
|
currentDriver = tmpCrvhSidElem.options[j].value;
|
|
}
|
|
}
|
|
// Check "currentDriver" being in "driverPool"
|
|
var tmpBool = false;
|
|
for(var j=0;j<driverPoolLen;++j) {
|
|
if (driverPool[j] == currentDriver) {
|
|
tmpBool = true;
|
|
}
|
|
}
|
|
// At least one occurrence is enough to abort the submit
|
|
if (!tmpBool) {
|
|
currentDriverIsOk = false;
|
|
submitOk = false;
|
|
}
|
|
}
|
|
}
|
|
if (!currentDriverIsOk) {
|
|
alert('<?php echo getLngt("Die eingetragenen Fahrer der Auslieferstationen müssen aus der Menge der eingetragenen Fahrer der Abholstationen sein!") ?>');
|
|
}
|
|
|
|
if (submitOk) {
|
|
finishPage('save');
|
|
}
|
|
}
|
|
|
|
function finishFinalSave(cscId) {
|
|
var submitOk = false;
|
|
|
|
if (confirm('<?php echo getLngt("Haben Sie alle Änderungen übernommen? Diese würden ansonsten verworfen werden!") ?>')) {
|
|
if (confirm('<?php echo getLngt("Möchten Sie die Aufträge zur weiteren Bearbeitung finalisieren?") ?>')) {
|
|
document.forms[0].f_costcenter.value = cscId;
|
|
submitOk = true;
|
|
}
|
|
}
|
|
|
|
if (submitOk) {
|
|
finishPage('final_save');
|
|
}
|
|
}
|
|
|
|
function changeCostcenter() {
|
|
var submitOk = false;
|
|
// Check existence of any scanned tracking IDs
|
|
var scannedIDexists = false;
|
|
var scan;
|
|
for(var i=0;i<numOfStations;++i) {
|
|
scan = eval('frm.jobDataTarget_' + i + '_scan').value;
|
|
scan = trim(scan);
|
|
if (scan != '') {
|
|
scannedIDexists = true;
|
|
}
|
|
}
|
|
if (scannedIDexists) {
|
|
if (confirm('<?php echo getLngt("Achtung! Es ist mindestens ein Barcode gescanned worden. Bei einem Kostenstellenwechsel gehen diese Informationen verloren. Möchten Sie fortfahren?") ?>')) {
|
|
submitOk = true;
|
|
}
|
|
} else {
|
|
submitOk = true;
|
|
}
|
|
if (submitOk) {
|
|
finishPage('');
|
|
}
|
|
}
|
|
|
|
function searchScanAddress(elemNo, adId, adStreet, adZipcode, adCity, jbId, trSort, trHsno) {
|
|
var f_act = 'search';
|
|
var widthPopupWin = 1200;
|
|
var heightPopupWin = 800;
|
|
var leftPopupWin = (screen.width / 2) - (widthPopupWin / 2) - 12;
|
|
var topPopupWin = (screen.height / 2) - (heightPopupWin / 2) - 50;
|
|
var popupWin;
|
|
popupWin = window.open("../tools/ad_list2.php?f_act=" + f_act + "&elemNo=" + elemNo + "&f_ad_id=" + adId + "&f_street=" + adStreet + "&f_zipcode=" + adZipcode + "&f_city=" + adCity + "&f_jb_id=" + jbId + "&f_tr_sort=" + trSort + "&f_tr_hsno=" + trHsno, "","dependent=yes,width=" + widthPopupWin + ",height=" + heightPopupWin +",left=" + leftPopupWin + ",top=" + topPopupWin + ",scrollbars=yes");
|
|
};
|
|
|
|
function showInfo(trackingID) {
|
|
var widthPopupWin = 315;
|
|
/* var heightPopupWin = 275; */
|
|
var heightPopupWin = 260;
|
|
var leftPopupWin = (screen.width / 2) - (widthPopupWin / 2) - 12;
|
|
var topPopupWin = (screen.height / 2) - (heightPopupWin / 2) - 50;
|
|
var popupWin;
|
|
popupWin = window.open("../tools/show_tracking_id_info.php?f_id=" + trackingID, "Info","dependent=yes,width=" + widthPopupWin + ",height=" + heightPopupWin +",left=" + leftPopupWin + ",top=" + topPopupWin + ",scrollbars=no");
|
|
popupWin.focus();
|
|
};
|
|
|
|
-->
|
|
</script>
|
|
|
|
|
|
</head>
|
|
|
|
<body onLoad="execBodyOnLoad();">
|
|
|
|
<?php echo $phpMenuOut ?>
|
|
<?php echo $phpReducedMenuOut ?>
|
|
<?php echo $phpPageTitelOut ?>
|
|
|
|
<div class="maincontent" name="maincontent" id="maincontent">
|
|
|
|
<form name="scan" action="../tools/scan.php" method="post">
|
|
|
|
<input type="hidden" name="f_act" value="">
|
|
<?php echo $phpCurrentNavigationInputHidden ?>
|
|
<input type="hidden" name="deactivateMenu" value="<?php echo ec($deactivateMenu) ?>">
|
|
<input type="hidden" name="statusMessage" value="">
|
|
|
|
<input type="hidden" name="numOfStations" value="<?php echo $numOfStations ?>">
|
|
<input type="hidden" name="f_costcenter" value="<?php echo $f_costcenter ?>">
|
|
|
|
<br><br>
|
|
|
|
<center>
|
|
|
|
<?php echo $outCostcenters ?>
|
|
|
|
<b><?php echo getLngt("BARCODE-SCAN:") ?></b> <input type="text" id="f_scan" name="f_scan" value="" size="20" onblur="javascript:executeScanCode();" border="2">
|
|
|
|
<br><br>
|
|
|
|
<?php echo $htmlOut ?>
|
|
|
|
<br><br>
|
|
|
|
<b><?php echo getLngt("Nicht zuzuordnende Paketnummern:") ?></b><br>
|
|
<textarea name="trackingIDsNotFound" cols="100" rows="3" onblur="javascript:setScanFocus();"><?php echo $trackingIDsNotFound; ?></textarea>
|
|
|
|
<br><br>
|
|
|
|
<input type="button" name="button_save_changes" value="<?php echo getLngt("Fahrzeugänderungen übernehmen") ?>" onclick="javascript:finishSave();">
|
|
|
|
<!-- <input type="button" name="button_save_changes" value="<?php echo getLngt("Alle Aufträge freigeben") ?>" onclick="javascript:finishFinalSave();"> -->
|
|
|
|
</center>
|
|
|
|
</div>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
</body>
|
|
|
|
</html>
|