Files
votianng/html/service/contractor_request.php
2026-03-29 10:34:57 +02:00

1225 lines
66 KiB
PHP

<?php
/*=======================================================================
*
* contractor_request.php
*
* Autor: Marc Vollmann
*
=======================================================================*/
include_once ("../include/mcglobal.inc.php");
// include_once ('../include/email/htmlMimeMail.php');
// include_once ("../include/services_func.inc.php");
include_once ("../include/inc_parseXML.inc.php");
include_once ("../include/inc_mtf_func.inc.php");
include_once ("../include/inc_job.inc.php");
include_once ("../include/inc_wording_wrapper.inc.php");
include_once ("../include/inc_file.inc.php");
include_once ("../include/inc_courier.inc.php");
include_once ("../include/inc_vehicle.inc.php");
// include_once ("../include/inc_disposition.inc.php");
// include_once ("../include/inc_tracking.inc.php");
// include_once ("../include/inc_disposition_DEV.inc.php");
include_once ("../geo/geocode.inc.php");
// Write logdata into log file
$currentTime = getDateTime("0");
$currentDate = getDateTime("3");
// Get global constants
defineGlobalParameters("1");
$debug = false;
$debugOut = array();
$contractorXML = "";
$retDbIds = "";
$lineFeed = "\n";
// $contractorReq = file_get_contents('php://input');
// Check HTTP-Parameters
getSecHttpVars("1",array("f_act", "contractorReq", "selectedLanguage"));
if ($contractorReq == "") :
if (isset($argv[1])) :
$contractorReq = $argv[1];
endif;
endif;
function contractorRequestLogFile ($msg, $logLevel = 0) {
XMLRequestLogFile($msg, $logLevel, $logFile = "contractorReq.log");
}
function authCheckEmployeeRights ($empId, $right) {
return false;
}
// Calling client IP
$currentClientIP = trim($_SERVER['REMOTE_ADDR']);
$contractorReq = urldecode($contractorReq);
$contractorReq = str_replace("'", "", $contractorReq);
$contractorReq = mcEncode($contractorReq);
$contractorReq = str_replace("'", "", $contractorReq);
// echo $contractorReq . "<br><br>";
contractorRequestLogFile($currentTime . " - " . $currentClientIP);
contractorRequestLogFile($contractorReq);
if ($selectedLanguage == "" || !is_numeric($selectedLanguage)) : $selectedLanguage = "1"; endif; // Default in English
$languageSelected = $selectedLanguage;
getLanguage(__FILE__);
getCurrentScript(__FILE__);
$err = array();
$outResponse = "";
$acceptOrder = true;
// ---------------------------------------------------------------------------
// ERROR CODES
$errCode = array();
$modeErrCode = "DE";
if ($modeErrCode == "DE") :
$errCode[100] = getLngt("Der Wert entspricht nicht dem geforderten Typ bzw. den Validitätsbedungungen.");
$errCode[101] = getLngt("Die Authentifizierungsdaten sind nicht in Ordnung.");
$errCode[102] = getLngt("Die notwendige ID des Auftragnehmers ist nicht gesetzt.");
$errCode[103] = getLngt("Der Auftragnehmer wurde nicht im Datenbestand gefunden.");
$errCode[104] = getLngt("Der Auftragnehmer hat den Status eines Metakunden für einen anderen Auftragnehmer.");
$errCode[105] = getLngt("Der Auftragnehmer hat mindestens einen Auftrag und kann daher nicht entfernt werden.");
$errCode[106] = getLngt("Eine ID darf bei einer Neuanlage nicht existieren.");
$errCode[107] = getLngt("Eine Neuanlage erfolgte nicht.");
$errCode[108] = getLngt("Der Benutzername existiert schon. Eine Neuanlage fand nicht statt.");
$errCode[109] = getLngt("Die Validierung des Passwortes schlug fehl. Eine Neuanlage fand nicht statt.");
$errCode[110] = getLngt("Der Benutzername existiert schon bei einem anderen Benutzer");
$errCode[111] = getLngt("Das Passwort genügt nicht den Sicherheitsanforderungen.");
$errCode[112] = getLngt("Das Geburtsdatum ist nicht korrekt.");
$errCode[113] = getLngt("Die Syntax der Email-Adresse ist nicht korrekt.");
$errCode[114] = getLngt("Die Syntax der Rechnungs-Email-Adresse ist nicht korrekt.");
$errCode[115] = getLngt("Die Adressdaten ist nicht vollständig.");
$errCode[116] = getLngt("Die eindeutige Auftragnehmer-ID (EID) ist bereits vergeben.");
$errCode[117] = getLngt("Es wurde bei dem Fahrzeug keine Operation übergeben.");
$errCode[118] = getLngt("Zum Löschen eines Fahrzeugs muss die ID übergeben werden.");
$errCode[119] = getLngt("Das Fahrzeug ist nicht dem Auftragnehmer zugeordnet und kann nicht gelöscht werden.");
$errCode[120] = getLngt("");
$errCode[121] = getLngt("Beim Einfügen eines neuen Fahrzeugs darf keine Fahrzeug-ID übergeben werden.");
$errCode[122] = getLngt("Beim Einfügen eines neuen Fahrzeugs darf die SID nicht leer sein und sie darf nicht schon existieren.");
$errCode[123] = getLngt("");
$errCode[124] = getLngt("");
$errCode[125] = getLngt("Zur Aktualisierung einer Kostenstelle muss die ID übergeben werden.");
$errCode[126] = getLngt("Die eindeutige Fahrzeug SID existiert schon systemweit und kann nicht zur Aktualisierung herangezogen werden.");
$errCode[127] = getLngt("Zur Änderung einer Kostenstellenadresse ist die beabsichtigte Operation anzugeben.");
$errCode[128] = getLngt("Für alle Operationen auf Kostenstellenadressen ist die jeweilige Adresstypnummer anzugeben.");
$errCode[129] = getLngt("Die Kostenstellenadresse kann nicht eingefügt werden, weil der Adresstyp schon existiert für die spezifizierte Kostenstelle.");
$errCode[130] = getLngt("Eine Aktualisierung der Kostenstelle konnte nicht erfolgen, da ein Eintrag mit dem spezifizierten Adresstyp nicht existiert.");
$errCode[131] = getLngt("Die Zuordnung zur übergeordneten Kostenstelle kann bei einer Aktualisierung einer Kostenstelle nicht geändert werden.");
$errCode[132] = getLngt("Die übergebene ID des übergeordneten Auftragnehmers muss numerisch sein.");
$errCode[133] = getLngt("Die übergebene ID des übergeordneten Auftragnehmers existiert nicht.");
$errCode[134] = getLngt("Der übergeordnete Auftragnehmer hat seinerseits schon einen übergeordneten Auftragnemer. Eine Subunternehmerkaskade ist nicht möglich.");
$errCode[135] = getLngt("");
$errCode[136] = getLngt("");
$errCode[137] = getLngt("");
$errCode[138] = getLngt("");
$errCode[139] = getLngt("");
else :
$errCode[100] = getLngt("The value does not match the requested type or is not valid.");
$errCode[101] = getLngt("Authentication Data not correct.");
$errCode[102] = getLngt("No contractor defined for operation.");
$errCode[103] = getLngt("Contractor not found in database.");
$errCode[104] = getLngt("Contractor is meta contractor of another contractor. Delete operation not executed.");
$errCode[105] = getLngt("At least one job does exist for contractor. Delete operation not executed.");
$errCode[106] = getLngt("Contractor ID may not exist for insert operation.");
$errCode[107] = getLngt("Insert operation failed.");
$errCode[108] = getLngt("User account does exist. Insert operation not executed.");
$errCode[109] = getLngt("Password validation failed. Insert operation not executed.");
$errCode[110] = getLngt("The user account does exist for another user.");
$errCode[111] = getLngt("Passwort is not strong enough.");
$errCode[112] = getLngt("The birthdate is not valid.");
$errCode[113] = getLngt("Syntax of the mail address is not correct.");
$errCode[114] = getLngt("Syntax of the invoice mail address is not correct.");
$errCode[115] = getLngt("The address is not complete.");
$errCode[116] = getLngt("The unique contractor ID (EID) does exist at another contractor.");
$errCode[117] = getLngt("The couriervehicle operation tag has to be set but does not exist.");
$errCode[118] = getLngt("To delete a couriervehicle the id has to be set.");
$errCode[119] = getLngt("The couriervehicle is not associated to the contractor and may not be deleted.");
$errCode[120] = getLngt("");
$errCode[121] = getLngt("The couriervehicle ID has to be empty because of requested insert operation a new one will be generated.");
$errCode[122] = getLngt("The couriervehicle SID may not be empty and may not exist by insert operation.");
$errCode[123] = getLngt("");
$errCode[124] = getLngt("");
$errCode[125] = getLngt("To update a couriervehicle the id has to be set.");
$errCode[126] = getLngt("No update of the couriervehicle possible because the couriervehicle SID does exist for another couriervehicle.");
$errCode[127] = getLngt("The operation to modify the couriervehicle address is not correct.");
$errCode[128] = getLngt("All operations on couriervehicle addresses require the addres type ID.");
$errCode[129] = getLngt("The couriervehicleaddress cannot be inserted because an address with the specified address type does exist.");
$errCode[130] = getLngt("The update of the specified couriervehicleaddress failed, because a couriervehicle address with the specified address type does not exist.");
$errCode[131] = getLngt("The parent vehicle ID has to be empty for couriervehicle update operation.");
$errCode[132] = getLngt("The parent contractor ID is not a number.");
$errCode[133] = getLngt("The parent contractor ID does not exist.");
$errCode[134] = getLngt("Insert operation with this parent ID not possible, because this parent has a parent by himself. A cascade is not desired.");
$errCode[135] = getLngt("");
$errCode[136] = getLngt("");
$errCode[137] = getLngt("");
$errCode[138] = getLngt("");
$errCode[139] = getLngt("");
endif;
$statusMessage = getLngt("");
// ---------------------------------------------------------------------------
// GLOBAL MODE OF USAGE
$globalParUseRelatedCustomer = getParameterValue("0", "GLOBAL_USE_RELATED_CUSTOMER", "0");
// *** Init ***
// $maxNumOfOrdersPerDay = 300;
// $maxNumOfRunningOrders = 1000;
$hqId = "";
$usr_id = "";
$txId = "4";
$txValue = getFieldValueFromId("tax","tx_id",$txId,"tx_value");
$txSign = getFieldValueFromId("tax","tx_id",$txId,"tx_sign");
if ($globalParUseRelatedCustomer == "1") :
$txValue = $txId;
$txSign = "";
endif;
// *** Parse request ***
$dataArray = xml2array($contractorReq);
// *** Convert result array to usable parameters ***
// Authentication data
$sessionId = convertSpecial($dataArray["xml"]["contractor"]["auth"]["session_id"]);
$passPhrase = convertSpecial($dataArray["xml"]["contractor"]["auth"]["passphrase"]);
if (checkRequestAuthenticationData2($sessionId, $passPhrase)) :
// **************************
// **** Get request data ****
// **************************
$crArray = array();
$eidPrefix = "AN";
$debugOut[] = "Authentication okay!";
$operationMode = convertSpecial($dataArray["xml"]["contractor"]["operation"]);
if ($operationMode == "") :
$operationMode = "GET";
else :
$operationMode = strtoupper($operationMode);
endif;
$debugOn = convertSpecial($dataArray["xml"]["contractor"]["debug_on"]);
if (strtoupper($debugOn) == "YES" || strtoupper($debugOn) == "ON") :
$debug = true;
endif;
$crId = convertSpecial($dataArray["xml"]["contractor"]["cr_id"]);
$crEid = convertSpecial($dataArray["xml"]["contractor"]["cr_eid"]); // NOT for INSERT (!!!!)
if ($crId != "" && $crEid == "") :
$crEid = getFieldValueFromId("courier","cr_id",$crId,"cr_eid");
elseif ($crEid != "" && $crId == "") :
$crId = getFieldValueFromId("courier","cr_eid",$crEid,"cr_id");
endif;
$crArray["cr_eid"] = $crEid;
$crArray["cr_sid"] = convertSpecial($dataArray["xml"]["contractor"]["cr_sid"]);
$crArray["cr_id_parent"] = convertSpecial($dataArray["xml"]["contractor"]["cr_id_parent"]);
$crArray["vht_id"] = convertSpecial($dataArray["xml"]["contractor"]["vht_id"]);
$crArray["vht_id_inv"] = convertSpecial($dataArray["xml"]["contractor"]["vht_id_inv"]);
$crArray["cr_vh_sign"] = convertSpecial($dataArray["xml"]["contractor"]["cr_vh_sign"]);
$crArray["cr_imei"] = convertSpecial($dataArray["xml"]["contractor"]["cr_imei"]);
$crArray["cr_mobile_pda"] = convertSpecial($dataArray["xml"]["contractor"]["cr_mobile_pda"]);
$crArray["cr_maxweight"] = convertSpecial($dataArray["xml"]["contractor"]["cr_maxweight"]);
$crArray["cr_outlay"] = convertSpecial($dataArray["xml"]["contractor"]["cr_outlay"]);
$crArray["cr_locationzipcode"] = convertSpecial($dataArray["xml"]["contractor"]["cr_locationzipcode"]);
$crArray["cr_available"] = convertSpecial($dataArray["xml"]["contractor"]["cr_available"]);
$crArray["cr_availabletime"] = convertSpecial($dataArray["xml"]["contractor"]["cr_availabletime"]);
$crArray["cr_occupied"] = convertSpecial($dataArray["xml"]["contractor"]["cr_occupied"]);
$crArray["cr_logintime"] = convertSpecial($dataArray["xml"]["contractor"]["cr_logintime"]);
$crArray["cr_gps_lat"] = convertSpecial($dataArray["xml"]["contractor"]["cr_gps_lat"]);
$crArray["cr_gps_lat"] = str_replace(",", ".", $crArray["cr_gps_lat"]);
$crArray["cr_gps_long"] = convertSpecial($dataArray["xml"]["contractor"]["cr_gps_long"]);
$crArray["cr_gps_long"] = str_replace(",", ".", $crArray["cr_gps_long"]);
if (!is_numeric($crArray["cr_gps_lat"]) || !is_numeric($crArray["cr_gps_long"])) :
$crArray["cr_gps_lat"] = "";
$crArray["cr_gps_long"] = "";
endif;
$crArray["cr_gps_time"] = convertSpecial($dataArray["xml"]["contractor"]["cr_gps_time"]);
$crArray["cr_gps_type"] = convertSpecial($dataArray["xml"]["contractor"]["cr_gps_type"]);
$crArray["cr_mobile_cell"] = convertSpecial($dataArray["xml"]["contractor"]["cr_mobile_cell"]);
$crArray["cr_weekdays"] = convertSpecial($dataArray["xml"]["contractor"]["cr_weekdays"]);
$crArray["cmp_type"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_type"]);
$crArray["cmp_comp"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_comp"]);
$crArray["cmp_comp2"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_comp2"]);
$crArray["cmp_comp3"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_comp3"]);
$crArray["cmp_comp4"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_comp4"]);
$crArray["ad_street"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["ad_street"]);
$crArray["cmp_hsno"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["ad_hsno"]);
$crArray["ad_zipcode"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["ad_zipcode"]);
$crArray["ad_city"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["ad_city"]);
$crArray["ad_country"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["ad_country"]);
$crArray["cmp_iln"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_iln"]);
$crArray["cmp_tax_idno"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_tax_idno"]);
$crArray["cmp_stax_idno"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_stax_idno"]);
$crArray["cmp_bank"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_bank"]);
$crArray["cmp_bankno"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_bankno"]);
$crArray["cmp_bankacc"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_bankacc"]);
$crArray["cmp_iban"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_iban"]);
$crArray["cmp_swift"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_swift"]);
$crArray["cmp_logo"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_logo"]);
$crArray["cmp_logo_width"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_logo_width"]);
$crArray["cmp_logo_height"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_logo_height"]);
$crArray["cmp_remark"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_remark"]);
$crArray["cmp_remark2"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_remark2"]);
$crArray["cmp_match"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_match"]);
$crArray["cmp_match2"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_match2"]);
$crArray["cmp_newsletter"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_newsletter"]);
$crArray["cmp_pda_usage"] = convertSpecial($dataArray["xml"]["contractor"]["company"]["cmp_pda_usage"]);
$crArray["usr_name"] = convertSpecial($dataArray["xml"]["contractor"]["user"]["usr_name"]);
$crArray["usr_firstname"] = convertSpecial($dataArray["xml"]["contractor"]["user"]["usr_firstname"]);
$crArray["usr_birthdate"] = convertSpecial($dataArray["xml"]["contractor"]["user"]["usr_birthdate"]);
$crArray["usr_email"] = convertSpecial($dataArray["xml"]["contractor"]["user"]["usr_email"]);
$crArray["usr_inv_email"] = convertSpecial($dataArray["xml"]["contractor"]["user"]["usr_inv_email"]);
$crArray["usr_phone"] = convertSpecial($dataArray["xml"]["contractor"]["user"]["usr_phone"]);
$crArray["usr_phone2"] = convertSpecial($dataArray["xml"]["contractor"]["user"]["usr_phone2"]);
$crArray["usr_fax"] = convertSpecial($dataArray["xml"]["contractor"]["user"]["usr_fax"]);
$crArray["usr_account"] = convertSpecial($dataArray["xml"]["contractor"]["user"]["usr_account"]);
$crArray["usr_password"] = convertSpecial($dataArray["xml"]["contractor"]["user"]["usr_password"]);
$crArray["usr_password2"] = $crArray["usr_password"]; // Equality has to be checked by frontend !!!!
$crArray["sys_inc_geocode_disabled"] = "1"; // No geo-check of the address
$crArray["noValidationOfAddress"] = true; // No call of "checkCityZipcode()" [AND insertAddress()]
// Init special values e.g. if does not exist
if ($crArray["cr_locationzipcode"] == "" && $crArray["ad_zipcode"] != "") :
$crArray["cr_locationzipcode"] = $crArray["ad_zipcode"];
endif;
if ($crArray["cr_available"] == "") :
$crArray["cr_available"] = "1";
endif;
if ($crArray["cr_availabletime"] == "") :
$crArray["cr_availabletime"] = $currentTime;
endif;
$crArray["crvh"] = array();
$numOfCouriervehicles = 0;
if ($dataArray["xml"]["contractor"]["couriervehicles"]["couriervehicle"]["crvh_operation"] != "" || $dataArray["xml"]["contractor"]["couriervehicles"]["couriervehicle"]["crvh_id"] != "") :
$numOfCouriervehicles = 1;
else :
$numOfCouriervehicles = count($dataArray["xml"]["contractor"]["couriervehicles"]["couriervehicle"]);
endif;
if ($debug) : echo "numOfCouriervehicles = " . $numOfCouriervehicles . "<br>\n"; endif;
if ($numOfCouriervehicles > 0) :
for ($i = 0; $i < $numOfCouriervehicles; $i++) :
if ($numOfCouriervehicles == 1) :
$dataCrvhArr[$i] = $dataArray["xml"]["contractor"]["couriervehicles"]["couriervehicle"];
else :
$dataCrvhArr[$i] = $dataArray["xml"]["contractor"]["couriervehicles"]["couriervehicle"][$i];
endif;
$crArray["crvh"][$i]["crvh_operation"] = convertSpecial($dataCrvhArr[$i]["crvh_operation"]);
$crArray["crvh"][$i]["crvh_operation"] = strtoupper($crArray["crvh"][$i]["crvh_operation"]);
$crArray["crvh"][$i]["crvh_id"] = convertSpecial($dataCrvhArr[$i]["crvh_id"]);
$crArray["crvh"][$i]["crvh_sort"] = convertSpecial($dataCrvhArr[$i]["crvh_sort"]);
$crArray["crvh"][$i]["crvh_sid"] = convertSpecial($dataCrvhArr[$i]["crvh_sid"]);
$crArray["crvh"][$i]["crvh_comm_no"] = convertSpecial($dataCrvhArr[$i]["crvh_comm_no"]);
$crArray["crvh"][$i]["crvh_vh_sign"] = convertSpecial($dataCrvhArr[$i]["crvh_vh_sign"]);
$crArray["crvh"][$i]["crvh_vh_name"] = convertSpecial($dataCrvhArr[$i]["crvh_vh_name"]);
$crArray["crvh"][$i]["crvh_licence_date"] = convertSpecial($dataCrvhArr[$i]["crvh_licence_date"]);
$crArray["crvh"][$i]["crvh_env_badge_level"] = convertSpecial($dataCrvhArr[$i]["crvh_env_badge_level"]);
$crArray["crvh"][$i]["crvh_prov"] = convertSpecial($dataCrvhArr[$i]["crvh_prov"]);
$crArray["crvh"][$i]["crvh_payload"] = convertSpecial($dataCrvhArr[$i]["crvh_payload"]);
$crArray["crvh"][$i]["crvh_totalweight"] = convertSpecial($dataCrvhArr[$i]["crvh_totalweight"]);
$crArray["crvh"][$i]["crvh_length"] = convertSpecial($dataCrvhArr[$i]["crvh_length"]);
$crArray["crvh"][$i]["crvh_width"] = convertSpecial($dataCrvhArr[$i]["crvh_width"]);
$crArray["crvh"][$i]["crvh_height"] = convertSpecial($dataCrvhArr[$i]["crvh_height"]);
$crArray["crvh"][$i]["crvh_position"] = convertSpecial($dataCrvhArr[$i]["crvh_position"]);
$crArray["crvh"][$i]["crvh_aperture_height_side"] = convertSpecial($dataCrvhArr[$i]["crvh_aperture_height_side"]);
$crArray["crvh"][$i]["crvh_aperture_height_rear"] = convertSpecial($dataCrvhArr[$i]["crvh_aperture_height_rear"]);
$crArray["crvh"][$i]["crvh_insurance_name"] = convertSpecial($dataCrvhArr[$i]["crvh_insurance_name"]);
$crArray["crvh"][$i]["crvh_insurance_no"] = convertSpecial($dataCrvhArr[$i]["crvh_insurance_no"]);
$crArray["crvh"][$i]["crvh_remark"] = convertSpecial($dataCrvhArr[$i]["crvh_remark"]);
$crArray["crvh"][$i]["crvh_filter"] = convertSpecial($dataCrvhArr[$i]["crvh_filter"]);
$crArray["crvh"][$i]["crvh_service"] = convertSpecial($dataCrvhArr[$i]["crvh_service"]);
$crArray["crvh"][$i]["crvh_group"] = convertSpecial($dataCrvhArr[$i]["crvh_group"]);
$crArray["crvh"][$i]["crvh_special"] = convertSpecial($dataCrvhArr[$i]["crvh_special"]);
$crArray["crvh"][$i]["crvh_corporate_identity"] = convertSpecial($dataCrvhArr[$i]["crvh_corporate_identity"]);
$crArray["crvh"][$i]["crvh_funding_state"] = convertSpecial($dataCrvhArr[$i]["crvh_funding_state"]);
$crArray["crvh"][$i]["crvh_funding_final_installment"] = convertSpecial($dataCrvhArr[$i]["crvh_funding_final_installment"]);
$crArray["crvh"][$i]["crvh_funding_residual_value"] = convertSpecial($dataCrvhArr[$i]["crvh_funding_residual_value"]);
$crArray["crvh"][$i]["crvh_pda_usage"] = convertSpecial($dataCrvhArr[$i]["crvh_pda_usage"]);
$crArray["crvh"][$i]["crvh_system_fee"] = convertSpecial($dataCrvhArr[$i]["crvh_system_fee"]);
$crArray["crvh"][$i]["crvh_freetext_1"] = convertSpecial($dataCrvhArr[$i]["crvh_freetext_1"]);
$crArray["crvh"][$i]["crvh_weekdays"] = convertSpecial($dataCrvhArr[$i]["crvh_weekdays"]);
endfor;
endif;
if ($debug) :
echo "operationMode = " . $operationMode . "<br>\n";
echo "crId = " . $crId . "<br>\n";
print_r($crArray); echo "<br><br><br>";
print_r($dataArray); echo "<br><br><br>";
endif;
// *************
// **** GET ****
// *************
if ($operationMode == "GET") :
// Check existence of the contractor
if ($crId != "" && is_numeric($crId)) :
$crId = getFieldValueFromId("courier","cr_id",$crId,"cr_id");
if ($crId != "") :
$contractorArray = array();
$cmpId = getFieldValueFromId("courier","cr_id",$crId,"cmp_id");
$hq_id = getFieldValueFromId("courier","cr_id",$crId,"hq_id");
$f_hq_id = array();
$emp_id = "";
$contractorArray["contractor"] = getCourier($cmpId, "2");
$contractorArray["contractor"]["company"]["cmp_id"] = $cmpId; // Add company ID
// (Fix) GPS coordinates from "geocode"
$contractorArray["cr_gps_fix_lat"] = getFieldValueFromClause("geocode","gc_lat","gc_obj_type = 'cr' AND gc_obj_id = '" . $crId . "'");
$contractorArray["cr_gps_fix_long"] = getFieldValueFromClause("geocode","gc_long","gc_obj_type = 'cr' AND gc_obj_id = '" . $crId . "'");
// Vehicles
$tmpCrvhIds = getColVectorFromDB2ArrayByClause("couriervehicle", "crvh_id", "cr_id = '" . $crId . "'", "", "", "");
if ($debug) :
echo "<br><br>FAHRZEUG_ID (crvh_id) VON: " . $crId . ": <br>\n";
print_r($tmpCrvhIds); echo "<br><br><br>";
endif;
$tmpCrvhIdsLen = count($tmpCrvhIds);
if ($tmpCrvhIdsLen > 0) :
$contractorArray["contractor"]["vehicles"]["vehicle"] = array();
for ($c = 0; $c < $tmpCrvhIdsLen; $c++) :
getDBData("couriervehicle", $tmpCrvhIds[$c]);
$contractorArray["contractor"]["vehicles"]["vehicle"][$c] = $dbData["couriervehicle"];
endfor;
endif;
if ($debug) :
echo "<br><br>FAHRZEUGDATEN VON: " . $crId . ": <br>\n";
print_r($contractorArray["contractor"]["vehicles"]); echo "<br><br><br>";
endif;
// Favoured customers
$tmpCsIds = getColVectorFromDB2ArrayByClause("customercourier", "cs_id", "cr_id = '" . $crId . "' AND cscr_relation = '1'", "", "", "");
$tmpCsIdsLen = count($tmpCsIds);
if ($tmpCsIdsLen > 0) :
$contractorArray["contractor"]["customercouriers"]["customercourier"] = array();
for ($c = 0; $c < $tmpCsIdsLen; $c++) :
$csId = $tmpCsIds[$c];
$contractorArray["contractor"]["customercouriers"]["customercourier"][$c]["cs_id"] = $csId;
$contractorArray["contractor"]["customercouriers"]["customercourier"][$c]["cs_eid"] = getFieldValueFromId("customer","cs_id",$csId,"cs_eid");
endfor;
endif;
// Check asset tables
$parAddCrToAsset = getParameterValue("0", "CR_ADD_TO_ASSET_ENABLED", "0");
if ($parAddCrToAsset == "1") :
$asId = getAsset("", "cr", $crId, array("asset","assetrelation","asd_as"));
if ($asId != "" && is_numeric($asId) && $asId > "0") :
$contractorArray["contractor"]["asset"] = $dbData["asset"];
if (is_array($dbData["asr_owner"]) && count($dbData["asr_owner"]) > 0) :
$contractorArray["contractor"]["asset"]["assetrelations"]["asr_owner"] = $dbData["asr_owner"];
endif;
if (is_array($dbData["assetrelation"]) && count($dbData["assetrelation"]) > 0) :
$contractorArray["contractor"]["asset"]["assetrelations"]["assetrelation"] = $dbData["assetrelation"];
endif;
if (is_array($dbData["assetdisposition"]) && count($dbData["assetdisposition"]) > 0) :
$contractorArray["contractor"]["asset"]["assetdisposition"] = $dbData["assetdisposition"];
endif;
endif;
endif;
$contractorXML = mcArray2Xml($contractorArray, "", $lineFeed);
else :
// ERR: "Contractor not found in database."
$err[] = array("103", $errCode[103]);
endif;
else :
// ERR: "No contractor defined for operation."
$err[] = array("102", $errCode[102]);
endif;
endif;
// ****************
// **** DELETE ****
// ****************
if ($operationMode == "DELETE" || $operationMode == "DEL") :
// Check existence of the contractor
if ($crId != "" && is_numeric($crId)) :
$crId = getFieldValueFromId("courier","cr_id",$crId,"cr_id");
if ($crId != "") :
// Check for being meta contractor (parent for another contractor)
if (!existsEntry("courier",array("cr_id_parent",$crId))) :
// Check at least one job
$jbId = getLastJob($crId, "cs");
if ($jbId == "") :
TA("B");
$hq_id = getFieldValueFromId("courier","cr_id",$crId,"hq_id");
$tmpCmpId = getFieldValueFromId("courier","cr_id",$crId,"cmp_id");
$tmpCsAdmin = getFieldValueFromId("courier","cr_id",$crId,"cr_admin"); // Equals "emp_id"
if ($tmpCsAdmin != "") :
$tmpUsrId = getFieldValueFromId("employee","emp_id",$tmpCsAdmin,"usr_id");
if ($tmpUsrId != "") :
deleteStmt("user", "usr_id = '" . $tmpUsrId . "'");
endif;
deleteStmt("employee", "emp_id = '" . $tmpCsAdmin . "'");
endif;
$tmpCscIds = getColVectorFromDB2ArrayByClause("costcenter", "csc_id", "cr_id = '" . $crId . "'", "", "", "");
$tmpCscIdsLen = count($tmpCscIds);
if ($tmpCscIdsLen > 0) :
deleteStmt("costcenteraddress", "csc_id IN (" . implode(",", $tmpCscIds) . ")");
deleteStmt("costcenter", "cr_id = '" . $crId . "'");
endif;
if ($tmpCmpId != "") :
deleteStmt("company", "cmp_id = '" . $tmpCmpId . "'");
endif;
// Check asset tables
$parAddCrToAsset = getParameterValue("0", "CR_ADD_TO_ASSET_ENABLED", "0");
if ($parAddCrToAsset == "1") :
endif;
deleteStmt("courier", "cr_id = '" . $crId . "'");
// Write logdata into log database
writeToLogDB("42",$hq_id,"","0","","",$crId,"STATUS_DELETED");
TA("C");
TA("E");
else :
// ERR: "At least one job does exist for contractor. Delete operation not executed."
$err[] = array("105", $errCode[105]);
endif;
else :
// ERR: "Contractor is meta contractor of another contractor. Delete operation not executed."
$err[] = array("104", $errCode[104]);
endif;
else :
// ERR: "Contractor not found in database."
$err[] = array("103", $errCode[103]);
endif;
else :
// ERR: "No contractor defined for operation."
$err[] = array("102", $errCode[102]);
endif;
endif;
// ****************
// **** INSERT ****
// ****************
if ($operationMode == "INS" || $operationMode == "INSERT") :
if ($crId == "") :
$crEid = $eidPrefix . getDateTime(6); // "YmdHis"
$crArray["cr_eid"] = $crEid;
if ($debug) : echo "crArray[cr_eid] = " . $crArray["cr_eid"] . "<br>"; endif;
// Check existence of usr_account
$doInsert = true;
// Check user
$defaultFieldArray = array();
$sqlPhraseArr = array();
$checkFieldArray = getFieldsAndTypes("user");
$errKey = checkTypesForDbImportFieldValues($crArray, $defaultFieldArray, $checkFieldArray, $sqlPhraseArr);
if ($errKey != "") :
$doInsert = false;
$err[] = array("100", $errCode[100] . " [" . $errKey . "]");
endif;
// Check company
if ($doInsert) :
$defaultFieldArray = array();
$sqlPhraseArr = array();
$checkFieldArray = getFieldsAndTypes("company");
$errKey = checkTypesForDbImportFieldValues($crArray, $defaultFieldArray, $checkFieldArray, $sqlPhraseArr);
if ($errKey != "") :
$doInsert = false;
$err[] = array("100", $errCode[100] . " [" . $errKey . "]");
endif;
endif;
// Check courier
if ($doInsert) :
$defaultFieldArray = array();
$sqlPhraseArr = array();
$checkFieldArray = getFieldsAndTypes("courier");
$errKey = checkTypesForDbImportFieldValues($crArray, $defaultFieldArray, $checkFieldArray, $sqlPhraseArr);
if ($errKey != "") :
$doInsert = false;
$err[] = array("100", $errCode[100] . " [" . $errKey . "]");
endif;
endif;
if ($doInsert) :
// Check existence of usr_account
if ($crArray["usr_account"] != ""):
$doInsert = false;
if (!existsEntry("user",array("usr_account",$crArray["usr_account"]))) :
if ($crArray["usr_password"] != "" && checkPasswordValidation($crArray["usr_password"],$crArray["usr_password"])) :
$doInsert = true;
else:
// ERR: "Password validation failed. Insert operation not executed."
$err[] = array("109", $errCode[109]);
endif;
else :
// ERR: "User account does exist. Insert operation not executed."
$err[] = array("108", $errCode[108]);
endif;
else :
$crArray["usr_password"] = ""; // Remove password if "usr_account" is empty
endif;
// Check existence of parent ID if not empty
if ($crArray["cr_id_parent"] != ""):
$doInsert = false;
// Check parent ID is numeric
// if (is_numeric($crArray["cr_id_parent"])) :
// Check existence of the parent ID
if (existsEntry("courier",array("cr_id",$crArray["cr_id_parent"]))) :
// If parent does exist then check this parent does NOT have a parent ID (!!!!)
$crParentIdOfParent = getFieldValueFromId("courier","cr_id",$crArray["cr_id_parent"],"cr_id_parent");
if ($crParentIdOfParent == "" || $crParentIdOfParent == "0") :
$doInsert = true;
else :
$err[] = array("134", $errCode[134]);
endif;
else :
$err[] = array("133", $errCode[133]);
endif;
// else :
// $err[] = array("132", $errCode[132]);
// endif;
endif;
if ($doInsert) :
$retArr = insertCourier($crArray, "1");
if ($debug) : print_r($retArr); endif;
if (is_array($retArr) && $retArr[0] != "") :
// Because of multi user access the last two digits of the "cr_id" will be added to the "cr_eid"
updateStmt("courier","cr_id",$retArr[0], array("cr_eid", $crArray["cr_eid"] . substr($retArr[0],-2)));
// Insert (fix) GPS coordinates into geocode
if ($crArray["cr_gps_lat"] != "" && $crArray["cr_gps_long"] != "") :
$gc_id_new = dbInsert("geocode", array("gc_obj_type", "cs", "gc_obj_id", $retArr[0], "gc_lat", $crArray["cr_gps_lat"], "gc_long", $crArray["cr_gps_long"]));
endif;
$retDbIds = getDbIdTree("cr", $retArr[0], "1", "db_id_struct", "\n");
else :
// ERR: "Insert operation failed."
$err[] = array("107", $errCode[107]);
endif;
endif;
endif;
/*
if ($doInsert) :
// TA("B");
$ok = insertCourier($crArray);
if ($ok) :
// TA("C");
else:
// TA("R");
// ERR: "Insert operation failed."
$err[] = array("107", $errCode[107]);
endif;
// TA("E");
endif;
*/
else :
// ERR: "Contractor ID may not exist for insert operation."
$err[] = array("106", $errCode[106]);
endif;
endif;
// ****************
// **** UPDATE ****
// ****************
if ($operationMode == "UPD" || $operationMode == "UPDATE") :
// Check existence of the contractor
if ($crId != "" && is_numeric($crId)) :
$crId = getFieldValueFromId("courier","cr_id",$crId,"cr_id");
if ($crId != "") :
TA("B");
// Get current primary IDs
$crCmpId = getFieldValueFromId("courier","cr_id",$crId,"cmp_id");
$crUsrId = getFieldValueFromId("courier","cr_id",$crId,"usr_id");
$doCrUpdate = true;
// **** User data ****
if ($doCsUpdate):
$defaultFieldArray = array();
$sqlPhraseArr = array("db.account.1" => $crUsrId);
$checkFieldArray = getFieldsAndTypes("user");
$errKey = checkTypesForDbImportFieldValues($crArray, $defaultFieldArray, $checkFieldArray, $sqlPhraseArr);
if ($errKey == "") :
if (count($defaultFieldArray) > 0) :
updateStmt("user","usr_id",$crUsrId,$defaultFieldArray);
endif;
else :
$doCrUpdate = false;
$err[] = array("100", $errCode[100] . " [" . $errKey . "]");
endif;
endif;
// **** Company data ****
if ($doCrUpdate):
// Check address data being not empty
if ($crArray["ad_street"] == "" || $crArray["ad_zipcode"] == "" || $crArray["ad_city"] == "" || $crArray["cmp_hsno"] == "") :
if ($crArray["ad_street"] . $crArray["ad_zipcode"] . $crArray["ad_city"] . $crArray["cmp_hsno"] != "") :
$err[] = array("115", $errCode[115]);
$doCrUpdate = false;
$crArray["ad_street"] = "";
$crArray["ad_zipcode"] = "";
$crArray["ad_city"] = "";
$crArray["cmp_hsno"] = "";
endif;
endif;
endif;
if ($doCrUpdate):
// Take current data to log for history
// .............. !!!! ..............
$defaultFieldArray = array();
$sqlPhraseArr = array();
$checkFieldArray = getFieldsAndTypes("company");
$errKey = checkTypesForDbImportFieldValues($crArray, $defaultFieldArray, $checkFieldArray, $sqlPhraseArr);
if ($errKey != "") :
$doCrUpdate = false;
$err[] = array("100", $errCode[100] . " [" . $errKey . "]");
endif;
if ($crArray["ad_street"] != "" && $crArray["ad_zipcode"] != "" && $crArray["ad_city"] != "") :
if ($crArray["ad_country"] == "") : $crArray["ad_country"] = "DE"; endif;
$sqlStmt = "SELECT ad_id FROM address WHERE ad_street = '" . $crArray["ad_street"] . "' AND ad_zipcode = '" . $crArray["ad_zipcode"] . "' AND ad_city = '" . $crArray["ad_city"] . "' AND ad_country = '" . $crArray["ad_country"] . "'";
$crCmpAdId = $db->getOne($sqlStmt);
if (DB::isError($crCmpAdId)) die ("$PHP_SELF: <br>$sqlStmt<br>" . $crCmpAdId->getMessage());
if ($crCmpAdId == ""):
insertStmt("address", array("ad_street", $crArray["ad_street"], "ad_zipcode", $crArray["ad_zipcode"], "ad_city", $crArray["ad_city"], "ad_country", $crArray["ad_country"]));
$crCmpAdId = getLastInsertID();
endif;
array_push($defaultFieldArray, "ad_id", $crCmpAdId);
endif;
if (count($defaultFieldArray) > 0) :
// Get current state in cmp_modify_status because it is equal to "1" then do NOT change
$modifyStatus = getFieldValueFromId("company", "cmp_id", $crCmpId, "cmp_modify_status");
if ($modifyStatus != "1") : $modifyStatus = "2"; endif;
array_push($defaultFieldArray, "cmp_modify_status", $modifyStatus);
updateStmt("company","cmp_id",$crCmpId,$defaultFieldArray);
endif;
endif;
// **** Contractor data ****
// Check unique contractor ID
if ($crArray["cr_eid"] != "" && $db->getOne("SELECT cr_eid FROM courier WHERE cr_eid = '" . $crArray["cr_eid"] . "' AND NOT (cr_id = '" . $crId . "')")) :
$err[] = array("116", $errCode[116]);
$doCrUpdate = false;
$crArray["cr_eid"] = "";
endif;
// Check existence of parent ID if not empty
if ($doCrUpdate):
if ($crArray["cr_id_parent"] != ""):
$doCrUpdate = false;
// Check parent ID is numeric
// if (is_numeric($crArray["cr_id_parent"])) :
// Check existence of the parent ID
if (existsEntry("courier",array("cr_id",$crArray["cr_id_parent"]))) :
// If parent does exist then check this parent does NOT have a parent ID (!!!!)
$crParentIdOfParent = getFieldValueFromId("courier","cr_id",$crArray["cr_id_parent"],"cr_id_parent");
if ($crParentIdOfParent == "" || $crParentIdOfParent == "0") :
$doCrUpdate = true;
else :
$err[] = array("134", $errCode[134]);
endif;
else :
$err[] = array("133", $errCode[133]);
endif;
// else :
// $err[] = array("132", $errCode[132]);
// endif;
endif;
endif;
// Update contractor data
if ($doCrUpdate):
// Take current data to log for history
// .............. !!!! ..............
$defaultFieldArray = array();
$sqlPhraseArr = array();
$checkFieldArray = getFieldsAndTypes("courier");
$errKey = checkTypesForDbImportFieldValues($crArray, $defaultFieldArray, $checkFieldArray, $sqlPhraseArr);
if ($errKey != "") :
$doCrUpdate = false;
$err[] = array("100", $errCode[100] . " [" . $errKey . "]");
endif;
if ($crArray["cr_gps_lat"] != "" && $crArray["cr_gps_long"] != "") :
array_push($defaultFieldArray, "cr_gps_lat", $crArray["cr_gps_lat"]);
array_push($defaultFieldArray, "cr_gps_long", $crArray["cr_gps_long"]);
// Take these coordinates for fix GPS coordinate in "geocode"
updateStmt("geocode", "gc_obj_id", $crId, array("gc_lat", $crArray["cr_gps_lat"], "gc_long", $crArray["cr_gps_long"]), "gc_obj_type = 'cr'");
endif;
if ($crArray["cr_gps_time"] != "") : array_push($defaultFieldArray, "cr_gps_time", $crArray["cr_gps_time"]); endif;
if ($crArray["cr_gps_type"] != "") : array_push($defaultFieldArray, "cr_gps_type", $crArray["cr_gps_type"]); endif;
if ($crArray["cr_mobile_cell"] != "") : array_push($defaultFieldArray, "cr_mobile_cell", $crArray["cr_mobile_cell"]); endif;
if (count($defaultFieldArray) > 0) :
updateStmt("courier","cr_id",$crId,$defaultFieldArray);
endif;
endif;
// **** Couriervehicle data ****
// Update contractor data
if ($doCrUpdate):
// Take current data to log for history
// .............. !!!! ..............
$numOfCouriervehicles = count($crArray["crvh"]);
if ($debug) : echo "numOfCouriervehicles = " . $numOfCouriervehicles . "<br>\n"; endif;
if ($numOfCouriervehicles > 0) :
for ($i = 0; $i < $numOfCouriervehicles; $i++) :
$crvhOperation = $crArray["crvh"][$i]["crvh_operation"];
$crvhId = $crArray["crvh"][$i]["crvh_id"];
if ($crvhOperation == "INS" || $crvhOperation == "UPD" || $crvhOperation == "DEL") :
if ($crvhOperation == "DEL") :
if ($crvhId != "" && is_numeric($crvhId)) :
// Check contractor is owner of the couriervehicle
if (existsEntry("couriervehicle", array("crvh_id",$crvhId,"cr_id",$crId))) :
// Check couriervehicle to be deleted ....
// if (!existsEntry("couriervehicle", array("cr_id",$crId,"xxxx",$xxxx))) :
// Check couriervehicle to be deleted does not have any job
// if (!existsEntry("job", array("csc_id",$crvhId)) && !existsEntry("job", array("csc_id_payer",$crvhId)) && !existsEntry("job", array("csc_id_payer_cash",$crvhId))) :
deleteStmt("couriervehicle", "crvh_id = '" . $crvhId . "'");
// else :
// $err[] = array("124", $errCode[124] . " [crvh:" . $i . "]");
// $doCrUpdate = false;
// endif;
// else :
// $err[] = array("120", $errCode[120] . " [crvh:" . $i . "]");
// $doCrUpdate = false;
// endif;
else :
$err[] = array("119", $errCode[119] . " [crvh:" . $i . "]");
$doCrUpdate = false;
endif;
else :
$err[] = array("118", $errCode[118] . " [crvh:" . $i . "]");
$doCrUpdate = false;
endif;
elseif ($crvhOperation == "INS") :
if ($crvhId == "") :
$doInsert = false;
// Check existence of crvh_sid
if ($crArray["crvh"][$i]["crvh_sid"] != "" && !existsEntry("couriervehicle", array("cr_id",$crId,"crvh_sid",$crArray["crvh"][$i]["crvh_sid"]))):
// if (true) :
$defaultFields = array("cr_id", $crId);
$sqlPhraseArr = array();
$checkFieldArray = getFieldsAndTypes("couriervehicle");
$errKey = checkTypesForDbImportFieldValues($crArray["crvh"][$i], $defaultFields, $checkFieldArray, $sqlPhraseArr);
if ($errKey == "") :
insertStmt("couriervehicle",$defaultFields);
else :
$doCrUpdate = false;
$err[] = array("100", $errCode[100] . " [" . $errKey . "]");
endif;
// else :
// $err[] = array("123", $errCode[123] . " [crvh:" . $i . "]");
// $doCrUpdate = false;
// endif;
else :
$err[] = array("122", $errCode[122] . " [crvh:" . $i . "]");
$doCrUpdate = false;
endif;
else :
$err[] = array("121", $errCode[121] . " [crvh:" . $i . "]");
$doCrUpdate = false;
endif;
elseif ($crvhOperation == "UPD") :
if ($crvhId != "") :
$defaultFields = array();
// Update couriervehicle data because couriervehicle SID is set and should rename the current one
if ($crArray["crvh"][$i]["crvh_sid"] != ""):
if (!$db->getOne("SELECT crvh.crvh_id FROM couriervehicle AS crvh WHERE crvh.crvh_sid = '" . $crArray["crvh"][$i]["crvh_sid"] . "' AND crvh.crvh_id != '" . $crvhId . "'")):
$defaultFields = array("crvh_sid", $crArray["crvh"][$i]["crvh_sid"]);
$sqlPhraseArr = array();
$checkFieldArray = getFieldsAndTypes("couriervehicle");
$errKey = checkTypesForDbImportFieldValues($crArray["crvh"][$i], $defaultFields, $checkFieldArray, $sqlPhraseArr);
if ($errKey == "") :
insertStmt("couriervehicle",$defaultFields);
else :
$doCrUpdate = false;
$err[] = array("100", $errCode[100] . " [" . $errKey . "]");
endif;
else :
$err[] = array("126", $errCode[126] . " [crvh:" . $i . "]");
$doCrUpdate = false;
endif;
endif;
// if ($doCrUpdate) :
// Update requested couriervehicle item
if (count($defaultFields) > 0 && $doCrUpdate) :
updateStmt("couriervehicle","crvh_id",$crvhId, $defaultFields);
endif;
// endif; // $doCrUpdate
else :
$err[] = array("125", $errCode[125] . " [crvh:" . $i . "]");
$doCrUpdate = false;
endif;
endif;
else :
$err[] = array("117", $errCode[117] . " [crvh:" . $i . "]");
$doCrUpdate = false;
endif;
endfor;
endif;
endif;
// Commit or rollback of all transactions on "costcenter" and "costcenteraddress".
// "contractor", "company", "user", etc. are executed and made persistent if operations are ok. (!!!!)
if ($doCrUpdate) :
// Insert into or update in table "asset" if enabled
$parAddCrToAsset = getParameterValue("0", "CR_ADD_TO_ASSET_ENABLED", "0");
if ($parAddCrToAsset == "1") :
$tmpParentId = $crId;
if ($crArray["cr_id_parent"] != "" && is_numeric($crArray["cr_id_parent"]) && $crArray["cr_id_parent"] > "0") :
$tmpParentId = $crArray["cr_id_parent"];
endif;
if (existsEntry("asset", array("as_ref_obj_type","cr","as_ref_obj_id",$crId,"as_context","parent"))) :
updateStmt("asset","as_ref_obj_id",$crId, array("as_obj_type","cr","as_obj_id",$tmpParentId,"as_weekdays",$crArray["cr_weekdays"]),"as_ref_obj_type = 'cr' AND as_context = 'parent'");
else :
insertStmt("asset", array("as_obj_type", "cr", "as_obj_id", $tmpParentId, "as_ref_obj_type", "cr", "as_ref_obj_id", $crId,
"as_key", "", "as_value", "", "as_context", "parent", "as_weekdays", $crArray["cr_weekdays"]));
endif;
endif;
$retDbIds = getDbIdTree("cr", $crId, "1", "db_id_struct", "\n");
TA("C");
else :
TA("R");
endif;
TA("E");
else :
// ERR: "Contractor not found in database."
$err[] = array("103", $errCode[103]);
endif;
else :
// ERR: "No contractor defined for operation."
$err[] = array("102", $errCode[102]);
endif;
endif;
// Check existence of at least one error
$errLen = count($err);
else :
// Authentication data not ok
$err[] = array("101", getLngt("Die Authentifizierungsdaten sind nicht in Ordnung."));
endif;
// print_r($err);
// Check existence of at least one error
$errLen = count($err);
// Log execution data in CSV format if activated
// $crvLogLine = $crEid . ";" . $currentTime . ";" . $commissionNo . ";" . $commNoRelated . ";" . $commNoService . ";" . $operationMode . ";";
// Output
$outResponse .= "<xml>" . $lineFeed;
if ($errLen > 0) :
$errCsv = "";
contractorRequestLogFile("ERRORS", 1);
$outResponse .= "<state>NOT OK</state>" . $lineFeed;
$outResponse .= "<errors>" . $lineFeed;
for ($i = 0; $i < $errLen; $i++) :
$outResponse .= "<error>" . $lineFeed;
$outResponse .= "<err_no>" . $err[$i][0] . "</err_no>" . $lineFeed;
$outResponse .= "<err_desc><![CDATA[" . mcEncode($err[$i][1]) . "]]></err_desc>" . $lineFeed;
$outResponse .= "</error>" . $lineFeed;
if ($debug) :
$outResponse .= "<debug>" . implode("<br>", $debugOut) . "</debug>" . $lineFeed;
endif;
contractorRequestLogFile($err[$i][0] . " : " . mcEncode($err[$i][1]), 1);
$errCsv .= "[[" . $err[$i][0] . "][" . mcEncode($err[$i][1]) . "]]";
endfor;
$outResponse .= "</errors>" . $lineFeed;
// Log failed request in CSV format if activated
$crvLogLine .= $errCsv;
CSVRequestLogFile ($crvLogLine, 2);
else :
$outResponse .= "<state>OK</state>" . $lineFeed;
if ($debug) :
$outResponse .= "<debug>" . implode("<br>", $debugOut) . "</debug>" . $lineFeed;
endif;
$outResponse .= $retDbIds;
$outResponse .= $contractorXML;
// Log requests being OK in CSV format if activated
$crvLogLine .= "OK";
CSVRequestLogFile ($crvLogLine, 1);
endif;
$outResponse .= "</xml>" . $lineFeed;
// Log entries
contractorRequestLogFile(getDateTime("0") . " - " . $outResponse); // Write response into log
contractorRequestLogFile("___________________________________________________________________________________");
// Call autoresponder for the new job if enabled for the contractor
$parAutoresponseEnabled = getParameterValue("0", "ORDER_REQUEST_AUTORESPONSE_ENABLED_CS_" . $crId, "0");
if ($parAutoresponseEnabled == "1" || $parAutoresponseEnabled == "on" || $parAutoresponseEnabled == "yes") :
$path = getAbsoluteSystemPath();
$cmd = "php " . $path . "/tools/auto_response_job_new.php acapella7890 " . $crId . " " . $jbIdNew . " &";
system($cmd);
endif;
// Return output
echo $outResponse;
/*
// FELDER UND IHRE BEDEUTUNG
// Pefices: [cr = contractor] [cmp = company] [ad = address] [usr = user] [crvh = couriervehicle]
// => cr has one cmp
// => cr has one usr
// => cr has none, one or more vehicles
// Usage: [mdtr = mandatory] [opt = optional] [doop = depends on operation] [fut = future]
<xml>
<contractor> // Auftragnehmer
<auth> // Abschnitt für Authentifikation des Requests
<session_id>[mdtr]</session_id> // Zusätzliche Session-ID, die mit dem Auftragnehmer ausgehandelt wurde [mandatory]
<passphrase>[mdtr]</passphrase> // Per Algorithmus generierte Phrase, die per one-way-encryption ermittelt wird sowohl für den Versand als auch zum Abgleich bei Eingang
</auth>
<operation>[opt]</operation> // Operation on contractor dataset (INS, INSERT, UPD, UPDATE, DEL, DELETE) [default = empty = INS(ERT)]
<debug_on>[opt]</debug_on> // Activates debug output ("ON" or "YES")
<cr_id>[doop]</cr_id> // ID of the contractor, needed for DEL or UPD
<cr_eid>[opt]</cr_eid> // EID of the contractor, needed for INS (use explicitly if does not exist) or UPD (overwrite if does not exist)
<cr_sid>[doop]</cr_sid> // Commission no of the contractor of remote system
<hq_id>[fut]</hq_id> // Headquarters {1, 2, ....} or {HB, HH, ....}. If numeric value then checked by database field "hq_id", otherwise by "hq_mnemonic"
<cr_id_parent>[opt]</cr_id_parent> // Unternehmer, dem die Person zugeordnet wird bzw. ist
<vht_id>[opt]</vht_id> // Fahrzeug zur Verfügung
<vht_id_inv>[fut]</vht_id_inv> // Rechnungsfahrzeug
<cr_vh_sign>[opt]</cr_vh_sign> // KFZ-Kennzeichen
<cr_imei>[opt]</cr_imei> // IMEI eines vorhandenen Endgerätes
<cr_mobile_pda>[opt]</cr_mobile_pda> // Mobilnummer / Kartennummer
<cr_maxweight>[opt]</cr_maxweight> // Maximales Tragegewicht für Person
<cr_outlay>[opt]</cr_outlay> // Maximale Auslage an Geld
<cr_locationzipcode>[opt]</cr_locationzipcode> // Aktuelle Position (PLZ)
<cr_available>[opt]</cr_available> // Person steht aktuell zur Verfügung
<cr_availabletime>[opt]</cr_availabletime> // Zeitpunkt der Verfügbarkeit
<cr_occupied>[opt]</cr_occupied> // Person absolviert aktuell einen Auftrag
<cr_logintime>[opt]</cr_logintime> // Letzer Anmeldezeitpunkt wenn Endgerät verfügbar
<cr_gps_long>[opt]</cr_gps_long> // Aktuelle Position (Länge)
<cr_gps_lat>[opt]</cr_gps_lat> // Aktuelle Position (Breite)
<cr_gps_time>[opt]</cr_gps_time> // Jüngster Ortungszeitpunkt
<cr_gps_type>[opt]</cr_gps_type> // Ortungstyp (1 = LBS [depricated], 2 = GPS, 3 = Network)
<cr_mobile_cell>[opt]</cr_mobile_cell> // Aktuelle Zellinformationen wenn Endgerät aktiv
<cr_weekdays> // Wochentage, an denen die Person grundsätzlich zur Verfügung steht (Integer value for bitstring [2^0 = Montag, 2^1 = Dienstag, ....])
<company> // COMPANY [1:1 CUSTOMER]
<cmp_type>[fut]</cmp_type> // Type of the contractor (default = 0 <=> active contractor)
<cmp_comp>[doop]</cmp_comp> // Name field 1 [mandatory for insert]
<cmp_comp2>[opt]</cmp_comp2> // Name field 2
<cmp_comp3>[opt]</cmp_comp3> // Name field 3
<cmp_comp4>[opt]</cmp_comp4> // Name field 4
<ad_street>[mdtr]</ad_street> // Street
<ad_hsno>[mdtr]</ad_hsno> // House number
<ad_zipcode>[mdtr]</ad_zipcode> // Zipcode
<ad_city>[mdtr]</ad_city> // City
<ad_country>[mdtr]</ad_country> // Country
<cmp_iln>[opt]</cmp_iln> // ILN (= GLN = Global Location Number)
<cmp_tax_idno>[opt]</cmp_tax_idno> // Tax no
<cmp_stax_idno>[mdtr]</cmp_stax_idno> // Sales tax no (Umsatzsteueridentifikationsnummer)
<cmp_bank>[opt]</cmp_bank> // Bank name
<cmp_bankno>[opt]</cmp_bankno> // Bank no (BLZ)
<cmp_bankacc>[opt]</cmp_bankacc> // bank account (in connection with the bank no)
<cmp_iban>[mdtr]</cmp_iban> // IBAN (either IBAN is mandatory or fields <cmp_bankno> and <cmp_bankacc> have to be set)
<cmp_swift>[opt]</cmp_swift> // SWIFT
<cmp_logo>[opt]</cmp_logo> // Filename of the logo (The generated cr_id or cr_eid will be the prefix of the filename)
<cmp_logo_width>[opt]</cmp_logo_width> // Width of the logo
<cmp_logo_height>[opt]</cmp_logo_height> // Height of the logo
<cmp_remark>[opt]</cmp_remark> // Public remark for the contractor
<cmp_remark2>[opt]</cmp_remark2> // Private (internal) remark for the contractor
<cmp_match>[opt]</cmp_match> // Freetext (200 chars) with space separated buzzword for search requests in contractor master data
<cmp_match2>[opt]</cmp_match2> // Freetext (50 chars) for internal categorization
<cmp_newsletter>[fut]</cmp_newsletter> // Flag for getting newsletter (default = 0)
<cmp_pda_usage>[fut]</cmp_pda_usage> // Flag for using pda with app (default = 0)
</company>
<user> // USER [1:1 CUSTOMER] ("Root"-)User des Auftragnehmers, der sich (in votian und/oder im (Börsen-)Portal) einloggen kann
<usr_name>[opt]</usr_name> // Lastname
<usr_firstname>[opt]</usr_firstname> // Fistname
<usr_birthdate>[opt]</usr_birthdate> // Birthdate ["Y-m-d" <=> "JJJJ-MM-TT"]
<usr_email>[doop]</usr_email> // Mail-Address (primäre Mailadresse)
<usr_inv_email>[opt]</usr_inv_email> // Invoice Mmail-Address
<usr_phone>[opt]</usr_phone> // Telefon
<usr_phone2>[opt]</usr_phone2> // Mobil
<usr_fax>[opt]</usr_fax> // Fax
<usr_account>[doop]</usr_account> // Account
<usr_password>[doop]</usr_password> // Password (mind. 8-stellig, mind. eine Zahl, mind. ein Buchstabe)
</user>
<couriervehicles> // FAHRZEUGE
<couriervehicle>
<crvh_operation>[mdtr]</crvh_operation> // Has to be set (INS, INSERT, UPD, UPDATE, DEL, DELETE)]
<crvh_id>[doop]</crvh_id> // Ignored if tag <operation> != "UPD" or <csc_operation> == "INS", otherwise delete or update costcenter
<vht_id>[mdtr]</vht_id> // Vehicle type
<crvh_sort>[fut]</crvh_sort> // Number for sort sequence
<crvh_sid>[opt]</crvh_sid> // Short name (e.g. "HH1001") of the vehicle
<crvh_comm_no>[opt]</crvh_comm_no> // Commission number
<crvh_vh_sign>[opt]</crvh_vh_sign> // Vehicle sign
<crvh_vh_name>[opt]</crvh_vh_name> // Auto brand
<crvh_licence_date>[opt]</crvh_licence_date> // Erstzulassung (Y-m-d)
<crvh_env_badge_level>[opt]</crvh_env_badge_level> // Umweltstufe (1..6)
<crvh_prov>[opt]</crvh_prov> // Provision
<crvh_payload>[opt]</crvh_payload> // Nutzlast
<crvh_totalweight>[opt]</crvh_totalweight> // Gesamtgewicht
<crvh_length>[opt]</crvh_length> // Länge
<crvh_width>[opt]</crvh_width> // Breite
<crvh_height>[opt]</crvh_height> // Höhe
<crvh_position>[opt]</crvh_position> // Stellplätze
<crvh_aperture_height_side>[opt]</crvh_aperture_height_side> // Seitendurchladehöhe
<crvh_aperture_height_rear>[opt]</crvh_aperture_height_rear> // Heckdurchladehöhe
<crvh_insurance_name>[opt]</crvh_insurance_name> // Versicherung
<crvh_insurance_no>[opt]</crvh_insurance_no> // Versicherungsnummer
<crvh_remark>[opt]</crvh_remark> // Bemerkung
<crvh_filter>[opt]</crvh_filter> // Fahrzeug-Filter / vehicle skills
<crvh_service>[opt]</crvh_service> // Services (Lieferung und/oder Montage und/oder ....)
<crvh_group>[opt]</crvh_group> // Gruppenzugehörigkeitenß
<crvh_special>[opt]</crvh_special> // Eigenfahrzeug
<crvh_corporate_identity>[opt]</crvh_corporate_identity> // Fahrzeug-CI (Fahrzeug UND Fahrer zusammen)
<crvh_funding_state>[opt]</crvh_funding_state> // Finanzierung
<crvh_funding_final_installment>[opt]</crvh_funding_final_installment> //
<crvh_funding_residual_value>[opt]</crvh_funding_residual_value> //
<crvh_pda_usage>[opt]</crvh_pda_usage> // Endgerätenutzung (ja/nein)
<crvh_system_fee>[opt]</crvh_system_fee> // Systemgebühr
<crvh_freetext_1>[opt]</crvh_freetext_1> // Freitext
<crvh_weekdays> // Wochentage, an denen das Fahrzeug grundsätzlich zur Verfügung steht (Integer value for bitstring [2^0 = Montag, 2^1 = Dienstag, ....])
</couriervehicle>
<couriervehicle> // Next vehicle ....
....
</couriervehicle>
....
</couriervehicles>
<skills> // Manuelle EVENTS
<val>[fut]</val>
<val>[fut]</val>
<val>[fut]</val>
...
</skills>
</contractor>
</xml>
*/
?>