1660 lines
97 KiB
PHP
1660 lines
97 KiB
PHP
<?php
|
|
/*=======================================================================
|
|
*
|
|
* customer_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_customer.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();
|
|
|
|
$customerXML = "";
|
|
$retDbIds = "";
|
|
$lineFeed = "\n";
|
|
|
|
// $customerReq = file_get_contents('php://input');
|
|
|
|
// Check HTTP-Parameters
|
|
getSecHttpVars("1",array("f_act", "customerReq", "selectedLanguage"));
|
|
|
|
if ($customerReq == "") :
|
|
if (isset($argv[1])) :
|
|
$customerReq = $argv[1];
|
|
endif;
|
|
endif;
|
|
|
|
function customerRequestLogFile ($msg, $logLevel = 0) {
|
|
XMLRequestLogFile($msg, $logLevel, $logFile = "customerReq.log");
|
|
}
|
|
|
|
function authCheckEmployeeRights ($empId, $right) {
|
|
return false;
|
|
}
|
|
|
|
|
|
// Calling client IP
|
|
$currentClientIP = trim($_SERVER['REMOTE_ADDR']);
|
|
|
|
$customerReq = urldecode($customerReq);
|
|
$customerReq = str_replace("'", "", $customerReq);
|
|
$customerReq = mcEncode($customerReq);
|
|
$customerReq = str_replace("'", "", $customerReq);
|
|
// echo $customerReq . "<br><br>";
|
|
|
|
customerRequestLogFile($currentTime . " - " . $currentClientIP);
|
|
customerRequestLogFile($customerReq);
|
|
|
|
|
|
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 Auftraggebers ist nicht gesetzt.");
|
|
$errCode[103] = getLngt("Der Auftraggeber wurde nicht im Datenbestand gefunden.");
|
|
$errCode[104] = getLngt("Der Auftraggeber hat den Status eines Metakunden für einen anderen Auftraggeber.");
|
|
$errCode[105] = getLngt("Der Auftraggeber 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 Kundennummer (EID) ist bereits vergeben.");
|
|
$errCode[117] = getLngt("Es wurde bei der Kostenstelle keine Operation übergeben.");
|
|
$errCode[118] = getLngt("Zum Löschen einer Kostenstelle muss die ID übergeben werden.");
|
|
$errCode[119] = getLngt("Die Hauptkostenstelle kann nicht gelöscht werden.");
|
|
$errCode[120] = getLngt("Die Kostenstelle wird durch andere Kostenstellen referenziert (parent) und kann nicht entfernt werden.");
|
|
$errCode[121] = getLngt("Beim Einfügen einer neuen Kostenstelle darf keine Kostenstellen-ID übergeben werden.");
|
|
$errCode[122] = getLngt("Beim Einfügen einer neuen Kostenstelle darf die Kostenstellenbezeichnung nicht leer sein und sie darf nicht schon existieren.");
|
|
$errCode[123] = getLngt("Eine Kostenstellenreferenz wurde übergeben, die jedoch nicht zu existieren scheint.");
|
|
$errCode[124] = getLngt("Die Kostenstelle kann nicht gelöscht werden, weil mindestens ein Auftrag existiert.");
|
|
$errCode[125] = getLngt("Zur Aktualisierung einer Kostenstelle muss die ID übergeben werden.");
|
|
$errCode[126] = getLngt("Der Kostenstellenname existiert bei dem Kunden schon 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("Wird ein Auftraggeber neu angelegt (Operation INS), müssen alle Sub-Operationen ebenfalls INS sein.");
|
|
$errCode[133] = getLngt("Der zu assoziierende favorisierte Unternehmer existiert nicht.");
|
|
$errCode[134] = getLngt("Die Angabe für die letzten n Tage scheint nicht numerisch.");
|
|
$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 customer defined for operation.");
|
|
$errCode[103] = getLngt("Customer not found in database.");
|
|
$errCode[104] = getLngt("Customer is meta customer of another customer. Delete operation not executed.");
|
|
$errCode[105] = getLngt("At least one job does exist for customer. Delete operation not executed.");
|
|
$errCode[106] = getLngt("Customer 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 customer ID (EID) does exist at another customer.");
|
|
$errCode[117] = getLngt("The costcenter operation tag has to be set but does not exist.");
|
|
$errCode[118] = getLngt("To delete a costcenter the id has to be set.");
|
|
$errCode[119] = getLngt("The root costcenter cannont be deleted.");
|
|
$errCode[120] = getLngt("The costcenter may not be deleted because there are children costcenters.");
|
|
$errCode[121] = getLngt("The costcenter ID has to be empty because of requested insert operation a new one will be generated.");
|
|
$errCode[122] = getLngt("The costcenter name may not be empty and may not exist for the current customer by insert operation.");
|
|
$errCode[123] = getLngt("The requested reference of the parent costcenter ID does not exist regarding the customer.");
|
|
$errCode[124] = getLngt("The costcenter may not be deleted because there is at least one job.");
|
|
$errCode[125] = getLngt("To update a costcenter the id has to be set.");
|
|
$errCode[126] = getLngt("No update of the costcenter possible because the costcenter name does exist for another costcenter for the current customer.");
|
|
$errCode[127] = getLngt("The operation to modify the costcenter address is not correct.");
|
|
$errCode[128] = getLngt("All operations on costcenter addresses require the addres type ID.");
|
|
$errCode[129] = getLngt("The costcenteraddress cannot be inserted because an address with the specified address type does exist.");
|
|
$errCode[130] = getLngt("The update of the specified costcenteraddress failed, because a costcenter address with the specified address type does not exist.");
|
|
$errCode[131] = getLngt("The parent costcenter ID has to be empty for costcenter update operation.");
|
|
$errCode[132] = getLngt("Customer insertion requires INS in all sub operations.");
|
|
$errCode[133] = getLngt("The requested favoured contractor does not exist.");
|
|
$errCode[134] = getLngt("The value of the last n days seems not to be numeric.");
|
|
$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($customerReq);
|
|
|
|
|
|
// *** Convert result array to usable parameters ***
|
|
// Authentication data
|
|
$sessionId = convertSpecial($dataArray["xml"]["customer"]["auth"]["session_id"]);
|
|
$passPhrase = convertSpecial($dataArray["xml"]["customer"]["auth"]["passphrase"]);
|
|
|
|
if (checkRequestAuthenticationData2($sessionId, $passPhrase)) :
|
|
|
|
// **************************
|
|
// **** Get request data ****
|
|
// **************************
|
|
|
|
$csArray = array();
|
|
$eidPrefix = "AG";
|
|
$debugOut[] = "Authentication okay!";
|
|
|
|
$operationMode = convertSpecial($dataArray["xml"]["customer"]["operation"]);
|
|
if ($operationMode == "") :
|
|
$operationMode = "GET";
|
|
else :
|
|
$operationMode = strtoupper($operationMode);
|
|
endif;
|
|
|
|
$debugOn = convertSpecial($dataArray["xml"]["customer"]["debug_on"]);
|
|
if (strtoupper($debugOn) == "YES" || strtoupper($debugOn) == "ON") :
|
|
$debug = true;
|
|
endif;
|
|
|
|
$csId = convertSpecial($dataArray["xml"]["customer"]["cs_id"]);
|
|
$csEid = convertSpecial($dataArray["xml"]["customer"]["cs_eid"]); // NOT for INSERT (!!!!)
|
|
if ($csId != "" && $csEid == "") :
|
|
$csEid = getFieldValueFromId("customer","cs_id",$csId,"cs_eid");
|
|
elseif ($csEid != "" && $csId == "") :
|
|
$csId = getFieldValueFromId("customer","cs_eid",$csEid,"cs_id");
|
|
endif;
|
|
$csArray["cs_eid"] = $csEid;
|
|
|
|
$csSid = convertSpecial($dataArray["xml"]["customer"]["cs_sid"]);
|
|
$csArray["cs_sid"] = $csSid;
|
|
|
|
$csArray["hq_id"] = convertSpecial($dataArray["xml"]["customer"]["hq_id"]);
|
|
|
|
$csArray["cs_prov"] = convertSpecial($dataArray["xml"]["customer"]["cs_prov"]);
|
|
$csArray["cs_discount"] = convertSpecial($dataArray["xml"]["customer"]["cs_discount"]);
|
|
$csArray["cs_invmode"] = convertSpecial($dataArray["xml"]["customer"]["cs_invmode"]);
|
|
|
|
$csCrFavId = convertSpecial($dataArray["xml"]["customer"]["cs_cr_fav_id"]);
|
|
$csCrFavEid = convertSpecial($dataArray["xml"]["customer"]["cs_cr_fav_eid"]);
|
|
if ($csCrFavId != "--DEL--" && $csCrFavEid != "--DEL--") :
|
|
if ($csCrFavId != "" && $csCrFavEid == "") :
|
|
$csCrFavEid = getFieldValueFromId("courier","cr_id",$csCrFavId,"cr_eid");
|
|
elseif ($csCrFavEid != "" && $csCrFavId == "") :
|
|
$csCrFavId = getFieldValueFromId("courier","cr_eid",$csCrFavEid,"cr_id");
|
|
endif;
|
|
endif;
|
|
$csArray["cs_cr_fav_id"] = $csCrFavId;
|
|
$csArray["cs_cr_fav_eid"] = $csCrFavEid;
|
|
$csArray["cs_cr_fav_only"] = convertSpecial($dataArray["xml"]["customer"]["cs_cr_fav_only"]);
|
|
|
|
$csArray["cs_jbstatusmail"] = convertSpecial($dataArray["xml"]["customer"]["cs_jbstatusmail"]);
|
|
$csArray["cs_jbstatusmail2"] = convertSpecial($dataArray["xml"]["customer"]["cs_jbstatusmail2"]);
|
|
$csArray["cs_jbstatusmail3"] = convertSpecial($dataArray["xml"]["customer"]["cs_jbstatusmail3"]);
|
|
$csArray["cs_jbstatusmail_pdf"] = convertSpecial($dataArray["xml"]["customer"]["cs_jbstatusmail_pdf"]);
|
|
|
|
$csArray["cs_filter"] = convertSpecial($dataArray["xml"]["customer"]["cs_filter"]);
|
|
$csArray["cs_group"] = convertSpecial($dataArray["xml"]["customer"]["cs_group"]);
|
|
$csArray["cs_tracking"] = convertSpecial($dataArray["xml"]["customer"]["cs_tracking"]);
|
|
|
|
$csArray["cs_gps_lat"] = convertSpecial($dataArray["xml"]["customer"]["cs_gps_lat"]);
|
|
$csArray["cs_gps_lat"] = str_replace(",", ".", $csArray["cs_gps_lat"]);
|
|
$csArray["cs_gps_long"] = convertSpecial($dataArray["xml"]["customer"]["cs_gps_long"]);
|
|
$csArray["cs_gps_long"] = str_replace(",", ".", $csArray["cs_gps_long"]);
|
|
if (!is_numeric($csArray["cs_gps_lat"]) || !is_numeric($csArray["cs_gps_long"])) :
|
|
$csArray["cs_gps_lat"] = "";
|
|
$csArray["cs_gps_long"] = "";
|
|
endif;
|
|
|
|
$csArray["cs_last_job"] = convertSpecial($dataArray["xml"]["customer"]["cs_last_job"]);
|
|
if (strtoupper($csArray["cs_last_job"]) == "YES" || strtoupper($csArray["cs_last_job"]) == "ON") :
|
|
$csArray["cs_last_job"] = "1";
|
|
endif;
|
|
|
|
$csArray["cs_reports_num_since_last_login"] = convertSpecial($dataArray["xml"]["customer"]["cs_reports_num_since_last_login"]);
|
|
$csArray["cs_reports_data_since_last_login"] = convertSpecial($dataArray["xml"]["customer"]["cs_reports_data_since_last_login"]);
|
|
$csArray["cs_reports_data_limit"] = convertSpecial($dataArray["xml"]["customer"]["cs_reports_data_limit"]);
|
|
if ($csArray["cs_reports_data_limit"] == "" || !is_numeric($csArray["cs_reports_data_limit"])) :
|
|
$csArray["cs_reports_data_limit"] = "10";
|
|
endif;
|
|
|
|
$csArray["cs_appointments_num_since_last_login"] = convertSpecial($dataArray["xml"]["customer"]["cs_appointments_num_since_last_login"]);
|
|
$csArray["cs_appointments_data_since_last_login"] = convertSpecial($dataArray["xml"]["customer"]["cs_appointments_data_since_last_login"]);
|
|
$csArray["cs_appointments_data_limit"] = convertSpecial($dataArray["xml"]["customer"]["cs_appointments_data_limit"]);
|
|
if ($csArray["cs_appointments_data_limit"] == "" || !is_numeric($csArray["cs_appointments_data_limit"])) :
|
|
$csArray["cs_appointments_data_limit"] = "10";
|
|
endif;
|
|
|
|
$csArray["cmp_type"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_type"]);
|
|
$csArray["cmp_comp"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_comp"]);
|
|
$csArray["cmp_comp2"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_comp2"]);
|
|
$csArray["cmp_comp3"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_comp3"]);
|
|
$csArray["cmp_comp4"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_comp4"]);
|
|
|
|
$csArray["ad_street"] = convertSpecial($dataArray["xml"]["customer"]["company"]["ad_street"]);
|
|
$csArray["cmp_hsno"] = convertSpecial($dataArray["xml"]["customer"]["company"]["ad_hsno"]);
|
|
$csArray["ad_zipcode"] = convertSpecial($dataArray["xml"]["customer"]["company"]["ad_zipcode"]);
|
|
$csArray["ad_city"] = convertSpecial($dataArray["xml"]["customer"]["company"]["ad_city"]);
|
|
$csArray["ad_country"] = convertSpecial($dataArray["xml"]["customer"]["company"]["ad_country"]);
|
|
|
|
$csArray["cmp_iln"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_iln"]);
|
|
$csArray["cmp_tax_idno"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_tax_idno"]);
|
|
$csArray["cmp_stax_idno"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_stax_idno"]);
|
|
|
|
$csArray["cmp_bank"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_bank"]);
|
|
$csArray["cmp_bankno"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_bankno"]);
|
|
$csArray["cmp_bankacc"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_bankacc"]);
|
|
$csArray["cmp_iban"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_iban"]);
|
|
$csArray["cmp_swift"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_swift"]);
|
|
|
|
$csArray["cmp_logo"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_logo"]);
|
|
$csArray["cmp_logo_width"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_logo_width"]);
|
|
$csArray["cmp_logo_height"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_logo_height"]);
|
|
|
|
$csArray["cmp_remark"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_remark"]);
|
|
$csArray["cmp_remark2"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_remark2"]);
|
|
$csArray["cmp_match"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_match"]);
|
|
$csArray["cmp_match2"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_match2"]);
|
|
|
|
$csArray["cmp_newsletter"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_newsletter"]);
|
|
$csArray["cmp_pda_usage"] = convertSpecial($dataArray["xml"]["customer"]["company"]["cmp_pda_usage"]);
|
|
|
|
$csArray["usr_name"] = convertSpecial($dataArray["xml"]["customer"]["user"]["usr_name"]);
|
|
$csArray["usr_firstname"] = convertSpecial($dataArray["xml"]["customer"]["user"]["usr_firstname"]);
|
|
$csArray["usr_birthdate"] = convertSpecial($dataArray["xml"]["customer"]["user"]["usr_birthdate"]);
|
|
|
|
$csArray["usr_email"] = convertSpecial($dataArray["xml"]["customer"]["user"]["usr_email"]);
|
|
$csArray["usr_inv_email"] = convertSpecial($dataArray["xml"]["customer"]["user"]["usr_inv_email"]);
|
|
$csArray["usr_phone"] = convertSpecial($dataArray["xml"]["customer"]["user"]["usr_phone"]);
|
|
$csArray["usr_phone2"] = convertSpecial($dataArray["xml"]["customer"]["user"]["usr_phone2"]);
|
|
$csArray["usr_fax"] = convertSpecial($dataArray["xml"]["customer"]["user"]["usr_fax"]);
|
|
|
|
$csArray["usr_account"] = convertSpecial($dataArray["xml"]["customer"]["user"]["usr_account"]);
|
|
$csArray["usr_password"] = convertSpecial($dataArray["xml"]["customer"]["user"]["usr_password"]);
|
|
|
|
$csArray["csc"] = array();
|
|
|
|
$numOfCostcenters = 0;
|
|
if ($dataArray["xml"]["customer"]["costcenters"]["costcenter"]["csc_operation"] != "" || $dataArray["xml"]["customer"]["costcenters"]["costcenter"]["csc_id"] != "") :
|
|
$numOfCostcenters = 1;
|
|
else :
|
|
$numOfCostcenters = count($dataArray["xml"]["customer"]["costcenters"]["costcenter"]);
|
|
endif;
|
|
if ($debug) : echo "numOfCostcenters = " . $numOfCostcenters . "<br>\n"; endif;
|
|
|
|
if ($numOfCostcenters > 0) :
|
|
|
|
for ($i = 0; $i < $numOfCostcenters; $i++) :
|
|
|
|
if ($numOfCostcenters == 1) :
|
|
$dataCscArr[$i] = $dataArray["xml"]["customer"]["costcenters"]["costcenter"];
|
|
else :
|
|
$dataCscArr[$i] = $dataArray["xml"]["customer"]["costcenters"]["costcenter"][$i];
|
|
endif;
|
|
|
|
$csArray["csc"][$i]["csc_operation"] = convertSpecial($dataCscArr[$i]["csc_operation"]);
|
|
$csArray["csc"][$i]["csc_operation"] = strtoupper($csArray["csc"][$i]["csc_operation"]);
|
|
$csArray["csc"][$i]["csc_id"] = convertSpecial($dataCscArr[$i]["csc_id"]);
|
|
$csArray["csc"][$i]["csc_name"] = convertSpecial($dataCscArr[$i]["csc_name"]);
|
|
$csArray["csc"][$i]["csc_pre_id"] = convertSpecial($dataCscArr[$i]["csc_pre_id"]);
|
|
|
|
$numOfCostcenterAddresses = 0;
|
|
if ($dataCscArr[$i]["costcenteraddresses"]["costcenteraddress"]["cscad_operation"] != "" || $dataCscArr[$i]["costcenteraddresses"]["costcenteraddress"]["adt_id"] != "") :
|
|
$numOfCostcenterAddresses = 1;
|
|
else :
|
|
$numOfCostcenterAddresses = count($dataCscArr[$i]["costcenteraddresses"]["costcenteraddress"]);
|
|
endif;
|
|
if ($debug) : echo "numOfCostcenterAddresses = " . $numOfCostcenterAddresses . "<br>\n"; endif;
|
|
|
|
$csArray["csc"][$i]["cscad"] = array();
|
|
|
|
if ($numOfCostcenterAddresses > 0) :
|
|
|
|
for ($j = 0; $j < $numOfCostcenterAddresses; $j++) :
|
|
|
|
if ($numOfCostcenterAddresses == 1) :
|
|
$dataCscArr[$i][$j] = $dataCscArr[$i]["costcenteraddresses"]["costcenteraddress"];
|
|
else :
|
|
$dataCscArr[$i][$j] = $dataCscArr[$i]["costcenteraddresses"]["costcenteraddress"][$j];
|
|
endif;
|
|
|
|
$csArray["csc"][$i]["cscad"][$j]["cscad_operation"] = convertSpecial($dataCscArr[$i][$j]["cscad_operation"]);
|
|
$csArray["csc"][$i]["cscad"][$j]["cscad_operation"] = strtoupper($csArray["csc"][$i]["cscad"][$j]["cscad_operation"]);
|
|
$csArray["csc"][$i]["cscad"][$j]["adt_id"] = convertSpecial($dataCscArr[$i][$j]["adt_id"]);
|
|
|
|
$csArray["csc"][$i]["cscad"][$j]["cscad_comp"] = convertSpecial($dataCscArr[$i][$j]["cscad_comp"]);
|
|
$csArray["csc"][$i]["cscad"][$j]["cscad_comp2"] = convertSpecial($dataCscArr[$i][$j]["cscad_comp2"]);
|
|
$csArray["csc"][$i]["cscad"][$j]["cscad_comp3"] = convertSpecial($dataCscArr[$i][$j]["cscad_comp3"]);
|
|
$csArray["csc"][$i]["cscad"][$j]["cscad_comp4"] = convertSpecial($dataCscArr[$i][$j]["cscad_comp4"]);
|
|
|
|
$csArray["csc"][$i]["cscad"][$j]["ad_street"] = convertSpecial($dataCscArr[$i][$j]["ad_street"]);
|
|
$csArray["csc"][$i]["cscad"][$j]["ad_hsno"] = convertSpecial($dataCscArr[$i][$j]["ad_hsno"]);
|
|
$csArray["csc"][$i]["cscad"][$j]["ad_floor"] = convertSpecial($dataCscArr[$i][$j]["ad_floor"]);
|
|
$csArray["csc"][$i]["cscad"][$j]["ad_zipcode"] = convertSpecial($dataCscArr[$i][$j]["ad_zipcode"]);
|
|
$csArray["csc"][$i]["cscad"][$j]["ad_city"] = convertSpecial($dataCscArr[$i][$j]["ad_city"]);
|
|
$csArray["csc"][$i]["cscad"][$j]["ad_country"] = convertSpecial($dataCscArr[$i][$j]["ad_country"]);
|
|
|
|
$csArray["csc"][$i]["cscad"][$j]["cscad_person"] = convertSpecial($dataCscArr[$i][$j]["cscad_person"]);
|
|
$csArray["csc"][$i]["cscad"][$j]["cscad_phone"] = convertSpecial($dataCscArr[$i][$j]["cscad_phone"]);
|
|
$csArray["csc"][$i]["cscad"][$j]["cscad_email"] = convertSpecial($dataCscArr[$i][$j]["cscad_email"]);
|
|
$csArray["csc"][$i]["cscad"][$j]["cscad_remark"] = convertSpecial($dataCscArr[$i][$j]["cscad_remark"]);
|
|
endfor;
|
|
endif;
|
|
endfor;
|
|
endif;
|
|
|
|
if ($debug) :
|
|
echo "operationMode = " . $operationMode . "<br>\n";
|
|
echo "csId = " . $csId . "<br>\n";
|
|
print_r($csArray); echo "<br><br><br>";
|
|
print_r($dataArray); echo "<br><br><br>";
|
|
endif;
|
|
|
|
|
|
// *************
|
|
// **** GET ****
|
|
// *************
|
|
|
|
if ($operationMode == "GET") :
|
|
|
|
// Check existence of the customer
|
|
if ($csId != "" && is_numeric($csId)) :
|
|
|
|
$csId = getFieldValueFromId("customer","cs_id",$csId,"cs_id");
|
|
if ($csId != "") :
|
|
|
|
// For some sub-requests it will be better to use secondary (replication) server
|
|
if ($dbhostStatistic != "") :
|
|
global $dbname2, $dblogin2, $dbpassword2;
|
|
$db_conn = getDbConnectionSpecial ($dbhostStatistic, $dbname2, $dblogin2, $dbpassword2);
|
|
else :
|
|
getDb2Connection();
|
|
$db_conn = $db2;
|
|
endif;
|
|
|
|
$customerArray = array();
|
|
$cmpId = getFieldValueFromId("customer","cs_id",$csId,"cmp_id");
|
|
/*
|
|
$dbData = array();
|
|
getDBData("customer", $csId);
|
|
getDBData("company", $cmpId);
|
|
$tmpCscIds = getColVectorFromDB2ArrayByClause("costcenter", "csc_id", "cs_id = '" . $csId . "'", "", "", "");
|
|
$tmpCscIdsLen = count($tmpCscIds);
|
|
if ($tmpCscIdsLen > 0) :
|
|
for ($c = 0; $c < $tmpCscIdsLen; $c++) :
|
|
getDBData("costcenter", $tmpCscIds[$c]);
|
|
getDBData("costcenteraddress", $tmpCscIds[$c]);
|
|
endfor;
|
|
endif;
|
|
$customerArray = $dbData;
|
|
*/
|
|
|
|
$hq_id = getFieldValueFromId("customer","cs_id",$csId,"hq_id");
|
|
$f_hq_id = array();
|
|
$emp_id = "";
|
|
$customerArray["customer"] = getCustomer($cmpId, "2");
|
|
$customerArray["customer"]["company"]["cmp_id"] = $cmpId; // Add company ID
|
|
|
|
$customerArray["cs_gps_lat"] = getFieldValueFromClause("geocode","gc_lat","gc_obj_type = 'cs' AND gc_obj_id = '" . $csId . "'");
|
|
$customerArray["cs_gps_long"] = getFieldValueFromClause("geocode","gc_long","gc_obj_type = 'cs' AND gc_obj_id = '" . $csId . "'");
|
|
|
|
$tmpCscIds = getColVectorFromDB2ArrayByClause("costcenter", "csc_id", "cs_id = '" . $csId . "' AND csc_is_extern = '0'", "", "", "");
|
|
$tmpCscIdsLen = count($tmpCscIds);
|
|
if ($tmpCscIdsLen > 0) :
|
|
$customerArray["customer"]["costcenters"]["costcenter"] = array();
|
|
for ($c = 0; $c < $tmpCscIdsLen; $c++) :
|
|
|
|
getDBData("costcenter", $tmpCscIds[$c]);
|
|
$customerArray["customer"]["costcenters"]["costcenter"][$c] = $dbData["costcenter"];
|
|
|
|
getDBData("costcenteraddress", $tmpCscIds[$c]);
|
|
$customerArray["customer"]["costcenters"]["costcenter"][$c]["costcenteraddresses"]["costcenteraddress"] = $dbData["costcenteraddress"];
|
|
endfor;
|
|
endif;
|
|
|
|
// Favoured couriers
|
|
$tmpCrIds = getColVectorFromDB2ArrayByClause("customercourier", "cr_id", "cs_id = '" . $csId . "' AND cscr_relation = '1'", "", "", "");
|
|
$tmpCrIdsLen = count($tmpCrIds);
|
|
if ($tmpCrIdsLen > 0) :
|
|
$customerArray["customer"]["customercouriers"]["customercourier"] = array();
|
|
for ($c = 0; $c < $tmpCrIdsLen; $c++) :
|
|
$crId = $tmpCrIds[$c];
|
|
$customerArray["customer"]["customercouriers"]["customercourier"][$c]["cr_id"] = $crId;
|
|
$customerArray["customer"]["customercouriers"]["customercourier"][$c]["cr_eid"] = getFieldValueFromId("courier","cr_id",$crId,"cr_eid");
|
|
endfor;
|
|
endif;
|
|
|
|
// Blocked couriers
|
|
$tmpCrIds = getColVectorFromDB2ArrayByClause("customercourier", "cr_id", "cs_id = '" . $csId . "' AND cscr_relation = '0'", "", "", "");
|
|
$tmpCrIdsLen = count($tmpCrIds);
|
|
if ($tmpCrIdsLen > 0) :
|
|
$customerArray["customer"]["customercouriers_blocked"]["customercourier"] = array();
|
|
for ($c = 0; $c < $tmpCrIdsLen; $c++) :
|
|
$crId = $tmpCrIds[$c];
|
|
$customerArray["customer"]["customercouriers_blocked"]["customercourier"][$c]["cr_id"] = $crId;
|
|
$customerArray["customer"]["customercouriers_blocked"]["customercourier"][$c]["cr_eid"] = getFieldValueFromId("courier","cr_id",$crId,"cr_eid");
|
|
endfor;
|
|
endif;
|
|
|
|
// Last job
|
|
if ($csArray["cs_last_job"] == "1") :
|
|
$customerArray["customer"]["cs_last_job"] = getLastJob($csId, "cs");
|
|
endif;
|
|
|
|
// Reports since n days and optional since last login of specified employee ID
|
|
if ($csArray["cs_reports_data_since_last_login"] != "") :
|
|
$tmpArr = explode(",", $csArray["cs_reports_data_since_last_login"]);
|
|
$numOfDays = $tmpArr[0];
|
|
$reportType = $tmpArr[1];
|
|
$employeeIdLoggedIn = $tmpArr[2];
|
|
if (is_numeric($numOfDays)) :
|
|
$datetimeFrom = getDateTime("datetime_plus_offset", array(0,0,0,0,-($numOfDays),0), "Y-m-d H:i:s");
|
|
if (is_numeric($employeeIdLoggedIn) && $employeeIdLoggedIn > 0) :
|
|
$listOfLoginsArray = getListOfLogEntries(array('52','53'), array(0,0,0,0,-($numOfDays),0), array("log_createtime"), $employeeIdLoggedIn, "log_createtime DESC", $db_conn);
|
|
$listOfLoginsArrayLen = count($listOfLoginsArray);
|
|
if ($listOfLoginsArrayLen > 0) :
|
|
$datetimeFrom = $listOfLoginsArray[1][0];
|
|
endif;
|
|
endif;
|
|
if ($datetimeFrom != "") :
|
|
$reportTypeClause = "";
|
|
if (is_numeric($reportType) && $reportType > 0) :
|
|
$reportTypeClause = " rp.rp_reporttype = '" . $reportType . "' AND ";
|
|
endif;
|
|
// Get report data
|
|
$sqlStmt = "SELECT rp.rp_id, rp.hq_id, hq.hq_name, rp.usr_id, rp.rp_reporttype, mt.mt_value AS rp_reporttypename, rp.rp_text, rp.rp_confidential, rp.rp_createtime,
|
|
usr.usr_firstname, usr.usr_name, usr.usr_phone, cmp.cmp_comp, cmp.cmp_comp2, cs.cs_eid
|
|
FROM
|
|
phoenix.customer AS cs,
|
|
phoenix.company AS cmp,
|
|
phoenix.headquarters AS hq,
|
|
phoenix_group.report_process AS rp
|
|
LEFT JOIN phoenix.user AS usr ON rp.usr_id = usr.usr_id,
|
|
phoenix.metatype AS mt
|
|
WHERE
|
|
rp.rp_objtype = 'cs' AND
|
|
rp.rp_objid = cs.cs_id AND "
|
|
. $reportTypeClause . "
|
|
cs.cmp_id = cmp.cmp_id AND
|
|
rp.rp_objid = '" . $csId . "' AND
|
|
rp.hq_id IN (" . $hq_id . ") AND
|
|
rp.hq_id = hq.hq_id AND
|
|
rp.rp_createtime >= '" . $datetimeFrom . "' AND
|
|
rp.rp_createtime <= '" . $currentTime . "' AND
|
|
mt.mt_type = 'report_type' AND
|
|
rp.rp_reporttype = mt.mt_sort
|
|
ORDER BY rp_id DESC
|
|
LIMIT 0," . $csArray["cs_reports_data_limit"];
|
|
// $result = $db->query($sqlStmt);
|
|
$result = $db_conn->query($sqlStmt); // Secondary server !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage());
|
|
$customerArray["customer"]["reports"]["report"] = array();
|
|
$c = 0;
|
|
while ($row = $result->fetch_assoc()):
|
|
$customerArray["customer"]["reports"]["report"][$c]["rp_id"] = $row["rp_id"];
|
|
$customerArray["customer"]["reports"]["report"][$c]["hq_name"] = $row["hq_name"];
|
|
$customerArray["customer"]["reports"]["report"][$c]["cs_eid"] = $row["cs_eid"];
|
|
$customerArray["customer"]["reports"]["report"][$c]["rp_reporttype"] = $row["rp_reporttype"];
|
|
$customerArray["customer"]["reports"]["report"][$c]["rp_reporttypename"] = $row["rp_reporttypename"];
|
|
$customerArray["customer"]["reports"]["report"][$c]["rp_confidential"] = $row["rp_confidential"];
|
|
$customerArray["customer"]["reports"]["report"][$c]["rp_createtime"] = $row["rp_createtime"];
|
|
$customerArray["customer"]["reports"]["report"][$c]["usr_id"] = $row["usr_id"];
|
|
$customerArray["customer"]["reports"]["report"][$c]["usr_firstname"] = $row["usr_firstname"];
|
|
$customerArray["customer"]["reports"]["report"][$c]["usr_name"] = $row["usr_name"];
|
|
$customerArray["customer"]["reports"]["report"][$c]["usr_phone"] = $row["usr_phone"];
|
|
$customerArray["customer"]["reports"]["report"][$c]["rp_text"] = $row["rp_text"];
|
|
$c++;
|
|
endwhile;
|
|
$result->free();
|
|
endif;
|
|
else :
|
|
// ERR: "The value of the last n days seems not to be numeric."
|
|
$err[] = array("134", $errCode[134]);
|
|
endif;
|
|
endif;
|
|
|
|
// Num of reports since n days and optional since last login of specified employee ID
|
|
if ($csArray["cs_reports_num_since_last_login"] != "") :
|
|
$tmpArr = explode(",", $csArray["cs_reports_num_since_last_login"]);
|
|
$numOfDays = $tmpArr[0];
|
|
$reportType = $tmpArr[1];
|
|
$employeeIdLoggedIn = $tmpArr[2];
|
|
$numOfNewCsReports = 0;
|
|
if (is_numeric($numOfDays)) :
|
|
$datetimeFrom = getDateTime("datetime_plus_offset", array(0,0,0,0,-($numOfDays),0), "Y-m-d H:i:s");
|
|
if (is_numeric($employeeIdLoggedIn) && $employeeIdLoggedIn > 0) :
|
|
$listOfLoginsArray = getListOfLogEntries(array('52','53'), array(0,0,0,0,-($numOfDays),0), array("log_createtime"), $employeeIdLoggedIn, "log_createtime DESC", $db_conn);
|
|
$listOfLoginsArrayLen = count($listOfLoginsArray);
|
|
if ($listOfLoginsArrayLen > 0) :
|
|
$datetimeFrom = $listOfLoginsArray[1][0];
|
|
endif;
|
|
endif;
|
|
if ($datetimeFrom != "") :
|
|
$reportTypeClause = "";
|
|
if (is_numeric($reportType) && $reportType > 0) :
|
|
$reportTypeClause = "AND rp_reporttype = '" . $reportType . "'";
|
|
endif;
|
|
$numOfNewCsReports = getCountOfTable("phoenix_group.report_process", "hq_id = '" . $hq_id . "' AND rp_objtype = 'cs' AND rp_objid = '" . $csId . "' " . $reportTypeClause . " AND rp_createtime >= '" . $datetimeFrom . "'", $db_conn);
|
|
if ($numOfNewCsReports == -1) : $numOfNewCsReports = 0; endif;
|
|
endif;
|
|
$customerArray["customer"]["cs_reports_num_since_last_login"] = $numOfNewCsReports;
|
|
else :
|
|
// ERR: "The value of the last n days seems not to be numeric."
|
|
$err[] = array("134", $errCode[134]);
|
|
endif;
|
|
endif;
|
|
|
|
// Appointments since n days and optional since last login of specified employee ID
|
|
if ($csArray["cs_appointments_data_since_last_login"] != "" || $csArray["cs_appointments_num_since_last_login"] != "") :
|
|
$tmpArr = explode(",", $csArray["cs_appointments_data_since_last_login"]);
|
|
$numOfDays = $tmpArr[0];
|
|
$appointmentType = $tmpArr[1];
|
|
$employeeIdLoggedIn = $tmpArr[2];
|
|
if (is_numeric($numOfDays)) :
|
|
$datetimeFrom = $currentTime;
|
|
if (is_numeric($employeeIdLoggedIn) && $employeeIdLoggedIn > 0) :
|
|
$listOfLoginsArray = getListOfLogEntries(array('52','53'), array(0,0,0,0,-($numOfDays),0), array("log_createtime"), $employeeIdLoggedIn, "log_createtime DESC", $db_conn);
|
|
$listOfLoginsArrayLen = count($listOfLoginsArray);
|
|
if ($listOfLoginsArrayLen > 0) :
|
|
$datetimeFrom = $listOfLoginsArray[1][0];
|
|
endif;
|
|
endif;
|
|
if ($datetimeFrom != "") :
|
|
$appointmentTypeClause = "";
|
|
if (is_numeric($appointmentType) && $appointmentType > 0) :
|
|
$appointmentTypeClause = " ap.ap_category_3 = '" . $appointmentType . "' AND ";
|
|
endif;
|
|
// Get report data
|
|
$sqlStmt = "SELECT ap.ap_id, ap.hq_id, hq.hq_name, ap.usr_id, ap.ap_type, ap.ap_category_1, ap.ap_category_2, ap.ap_category_3, ap.ap_category_4,
|
|
mt.mt_value AS ap_appointmenttypename, ap.ap_text, ap.ap_execdate, ap.ap_enddate, ap.ap_confirmed,
|
|
usr.usr_firstname, usr.usr_name, usr.usr_phone, cmp.cmp_comp, cmp.cmp_comp2, cs.cs_eid
|
|
FROM
|
|
phoenix.customer AS cs,
|
|
phoenix.company AS cmp,
|
|
phoenix.headquarters AS hq,
|
|
phoenix_group.appointment AS ap
|
|
LEFT JOIN phoenix.user AS usr ON ap.usr_id = usr.usr_id,
|
|
phoenix.metatype AS mt
|
|
WHERE
|
|
ap.cs_id = cs.cs_id AND "
|
|
. $appointmentTypeClause . "
|
|
cs.cmp_id = cmp.cmp_id AND
|
|
ap.cs_id = '" . $csId . "' AND
|
|
ap.hq_id = '" . $hq_id . "' AND
|
|
ap.hq_id = hq.hq_id AND
|
|
ap.ap_execdate >= '" . $datetimeFrom . "' AND
|
|
mt.mt_type = 'appointment_category_3' AND
|
|
ap.ap_category_3 = mt.mt_sort
|
|
ORDER BY ap.ap_execdate DESC
|
|
LIMIT 0," . $csArray["cs_appointments_data_limit"];
|
|
// $result = $db->query($sqlStmt);
|
|
$result = $db_conn->query($sqlStmt); // Secondary server !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage());
|
|
$customerArray["customer"]["appointments"]["appointment"] = array();
|
|
$c = 0;
|
|
while ($row = $result->fetch_assoc()):
|
|
if ($csArray["cs_appointments_data_since_last_login"] != "") :
|
|
$customerArray["customer"]["appointments"]["appointment"][$c]["ap_id"] = $row["ap_id"];
|
|
$customerArray["customer"]["appointments"]["appointment"][$c]["hq_name"] = $row["hq_name"];
|
|
$customerArray["customer"]["appointments"]["appointment"][$c]["cs_eid"] = $row["cs_eid"];
|
|
$customerArray["customer"]["appointments"]["appointment"][$c]["ap_category_1"] = $row["ap_category_1"];
|
|
$customerArray["customer"]["appointments"]["appointment"][$c]["ap_category_2"] = $row["ap_category_2"];
|
|
$customerArray["customer"]["appointments"]["appointment"][$c]["ap_category_3"] = $row["ap_category_3"];
|
|
$customerArray["customer"]["appointments"]["appointment"][$c]["ap_category_4"] = $row["ap_category_4"];
|
|
$customerArray["customer"]["appointments"]["appointment"][$c]["ap_appointmenttypename"] = $row["ap_appointmenttypename"];
|
|
$customerArray["customer"]["appointments"]["appointment"][$c]["ap_confirmed"] = $row["ap_confirmed"];
|
|
$customerArray["customer"]["appointments"]["appointment"][$c]["ap_execdate"] = $row["ap_execdate"];
|
|
$customerArray["customer"]["appointments"]["appointment"][$c]["ap_enddate"] = $row["ap_enddate"];
|
|
$customerArray["customer"]["appointments"]["appointment"][$c]["usr_id"] = $row["usr_id"];
|
|
$customerArray["customer"]["appointments"]["appointment"][$c]["usr_firstname"] = $row["usr_firstname"];
|
|
$customerArray["customer"]["appointments"]["appointment"][$c]["usr_name"] = $row["usr_name"];
|
|
$customerArray["customer"]["appointments"]["appointment"][$c]["usr_phone"] = $row["usr_phone"];
|
|
$customerArray["customer"]["appointments"]["appointment"][$c]["ap_text"] = $row["ap_text"];
|
|
endif;
|
|
$c++;
|
|
endwhile;
|
|
if ($csArray["cs_appointments_num_since_last_login"] != "") :
|
|
$customerArray["customer"]["cs_appointments_num_since_last_login"] = $c;
|
|
endif;
|
|
$result->free();
|
|
endif;
|
|
else :
|
|
// ERR: "The value of the last n days seems not to be numeric."
|
|
$err[] = array("134", $errCode[134]);
|
|
endif;
|
|
endif;
|
|
|
|
$customerXML = mcArray2Xml($customerArray, "", $lineFeed);
|
|
else :
|
|
// ERR: "Customer not found in database."
|
|
$err[] = array("103", $errCode[103]);
|
|
endif;
|
|
else :
|
|
// ERR: "No customer defined for operation."
|
|
$err[] = array("102", $errCode[102]);
|
|
endif;
|
|
endif;
|
|
|
|
|
|
// ****************
|
|
// **** DELETE ****
|
|
// ****************
|
|
|
|
if ($operationMode == "DELETE" || $operationMode == "DEL") :
|
|
|
|
// Check existence of the customer
|
|
if ($csId != "" && is_numeric($csId)) :
|
|
|
|
$csId = getFieldValueFromId("customer","cs_id",$csId,"cs_id");
|
|
if ($csId != "") :
|
|
|
|
// Check for being meta customer (parent for another customer)
|
|
if (!existsEntry("customer",array("cs_id_parent",$csId))) :
|
|
|
|
// Check at least one job
|
|
$jbId = getLastJob($csId, "cs");
|
|
if ($jbId == "") :
|
|
|
|
TA("B");
|
|
|
|
$hq_id = getFieldValueFromId("customer","cs_id",$csId,"hq_id");
|
|
$tmpCmpId = getFieldValueFromId("customer","cs_id",$csId,"cmp_id");
|
|
|
|
$tmpCsAdmin = getFieldValueFromId("customer","cs_id",$csId,"cs_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", "cs_id = '" . $csId . "'", "", "", "");
|
|
$tmpCscIdsLen = count($tmpCscIds);
|
|
if ($tmpCscIdsLen > 0) :
|
|
deleteStmt("costcenteraddress", "csc_id IN (" . implode(",", $tmpCscIds) . ")");
|
|
deleteStmt("costcenter", "cs_id = '" . $csId . "'");
|
|
endif;
|
|
|
|
if ($tmpCmpId != "") :
|
|
deleteStmt("company", "cmp_id = '" . $tmpCmpId . "'");
|
|
endif;
|
|
|
|
deleteStmt("geocode", "gc_obj_type = 'cs' AND gc_obj_id = '" . $csId . "'");
|
|
|
|
deleteStmt("customercourier","cs_id = '" . $csId . "'");
|
|
|
|
deleteStmt("customer", "cs_id = '" . $csId . "'");
|
|
|
|
// Write logdata into log database
|
|
writeToLogDB("42",$hq_id,"","0","","",$csId,"STATUS_DELETED");
|
|
|
|
TA("C");
|
|
TA("E");
|
|
else :
|
|
// ERR: "At least one job does exist for customer. Delete operation not executed."
|
|
$err[] = array("105", $errCode[105]);
|
|
endif;
|
|
else :
|
|
// ERR: "Customer is meta customer of another customer. Delete operation not executed."
|
|
$err[] = array("104", $errCode[104]);
|
|
endif;
|
|
else :
|
|
// ERR: "Customer not found in database."
|
|
$err[] = array("103", $errCode[103]);
|
|
endif;
|
|
else :
|
|
// ERR: "No customer defined for operation."
|
|
$err[] = array("102", $errCode[102]);
|
|
endif;
|
|
endif;
|
|
|
|
|
|
// ****************
|
|
// **** INSERT ****
|
|
// ****************
|
|
|
|
if ($operationMode == "INS" || $operationMode == "INSERT") :
|
|
|
|
if ($csId == "") :
|
|
|
|
$csEid = $eidPrefix . getDateTime(6); // "YmdHis"
|
|
$csArray["cs_eid"] = $csEid;
|
|
$doInsert = true;
|
|
|
|
// Check user
|
|
$defaultFieldArray = array();
|
|
$sqlPhraseArr = array();
|
|
$checkFieldArray = getFieldsAndTypes("user");
|
|
$errKey = checkTypesForDbImportFieldValues($csArray, $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($csArray, $defaultFieldArray, $checkFieldArray, $sqlPhraseArr);
|
|
if ($errKey != "") :
|
|
$doInsert = false;
|
|
$err[] = array("100", $errCode[100] . " [" . $errKey . "]");
|
|
endif;
|
|
endif;
|
|
|
|
// Check customer
|
|
if ($doInsert) :
|
|
$defaultFieldArray = array();
|
|
$sqlPhraseArr = array();
|
|
$checkFieldArray = getFieldsAndTypes("customer");
|
|
$errKey = checkTypesForDbImportFieldValues($csArray, $defaultFieldArray, $checkFieldArray, $sqlPhraseArr);
|
|
if ($errKey != "") :
|
|
$doInsert = false;
|
|
$err[] = array("100", $errCode[100] . " [" . $errKey . "]");
|
|
endif;
|
|
endif;
|
|
|
|
// Check geocode
|
|
if ($doInsert) :
|
|
$defaultFieldArray = array();
|
|
$sqlPhraseArr = array();
|
|
$checkFieldArray = getFieldsAndTypes("geocode");
|
|
$errKey = checkTypesForDbImportFieldValues($csArray, $defaultFieldArray, $checkFieldArray, $sqlPhraseArr);
|
|
if ($errKey != "") :
|
|
$doInsert = false;
|
|
$err[] = array("100", $errCode[100] . " [" . $errKey . "]");
|
|
endif;
|
|
endif;
|
|
|
|
// Presently disabled because costcenters an their costcenter addresses will be inserted automatically. They can be modified by updating the customer only
|
|
/*
|
|
// Check costcenters and costcenter addresses
|
|
if ($doInsert) :
|
|
$numOfCostcenters = count($csArray["csc"]);
|
|
if ($numOfCostcenters > 0) :
|
|
for ($i = 0; $i < $numOfCostcenters; $i++) :
|
|
$cscOperation = $csArray["csc"][$i]["csc_operation"];
|
|
$cscId = $csArray["csc"][$i]["csc_id"];
|
|
$cscPreId = $csArray["csc"][$i]["csc_pre_id"];
|
|
if ($cscOperation == "INS") :
|
|
|
|
// Check for costcenter addresses
|
|
$numOfCostcenterAddresses = count($csArray["csc"][$i]["cscad"]);
|
|
if ($numOfCostcenterAddresses > 0) :
|
|
|
|
for ($j = 0; $j < $numOfCostcenterAddresses; $j++) :
|
|
$cscadOperation = $csArray["csc"][$i]["cscad"][$j]["cscad_operation"];
|
|
if ($cscadOperation == "INS") :
|
|
|
|
$defaultCscadFieldArray = array("csc_id", $cscId, "adt_id", $cscadAdt);
|
|
$sqlPhraseArr = array();
|
|
$checkFieldArray = getFieldsAndTypes("costcenteraddress");
|
|
$errKey = checkTypesForDbImportFieldValues($csArray["csc"][$i]["cscad"][$j], $defaultCscadFieldArray, $checkFieldArray, $sqlPhraseArr);
|
|
if ($errKey != "") :
|
|
$doCsUpdate = false;
|
|
$err[] = array("100", $errCode[100] . " [" . $errKey . "]");
|
|
endif;
|
|
|
|
else :
|
|
$doInsert = false;
|
|
$err[] = array("132", $errCode[132]);
|
|
endif;
|
|
endfor;
|
|
endif;
|
|
else :
|
|
$doInsert = false;
|
|
$err[] = array("132", $errCode[132]);
|
|
endif;
|
|
endfor;
|
|
endif;
|
|
endif;
|
|
*/
|
|
|
|
if ($doInsert) :
|
|
if ($debug) : echo "CS.INS.Level.I....passed!<br>\n"; endif;
|
|
|
|
// Check existence of usr_account
|
|
if ($csArray["usr_account"] != ""):
|
|
$doInsert = false;
|
|
if (!existsEntry("user",array("usr_account",$csArray["usr_account"]))) :
|
|
|
|
if ($csArray["usr_password"] != "" && checkPasswordValidation($csArray["usr_password"],$csArray["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 :
|
|
$csArray["usr_password"] = ""; // Remove password if "usr_account" is empty
|
|
endif;
|
|
|
|
if ($doInsert) :
|
|
if ($debug) : echo "CS.INS.Level.II....passed!<br>\n"; endif;
|
|
$csArray["noValidationOfAddress"] = true; // Do not check address!
|
|
$retArr = insertCustomer($csArray, "1");
|
|
|
|
if ($debug) :
|
|
echo "CS.INS.Level.III....passed!<br>\n";
|
|
echo "ID-Array nach Anlage<br>\n";
|
|
print_r($retArr);
|
|
endif;
|
|
|
|
if (is_array($retArr) && $retArr[0] != "") :
|
|
|
|
// Because of multi user access the last two digits of the "cs_id" will be added to the "cs_eid"
|
|
updateStmt("customer","cs_id",$retArr[0], array("cs_eid", $csArray["cs_eid"] . substr($retArr[0],-2)));
|
|
|
|
$retDbIds = getDbIdTree("cs", $retArr[0], "1", "db_id_struct", "\n");
|
|
if ($debug) : echo "CS.INS.Level.IV....passed!<br>\n"; endif;
|
|
else :
|
|
// ERR: "Insert operation failed."
|
|
$err[] = array("107", $errCode[107]);
|
|
endif;
|
|
endif;
|
|
|
|
// Associate (presently ONE ONLY) favoured courier to current customer
|
|
if ($doInsert) :
|
|
if ($debug) : echo "<br>CS.INS.CR.FAV....passed!<br>\n"; endif;
|
|
if (($csArray["cs_cr_fav_id"] == "" && $csArray["cs_cr_fav_eid"] == "") ||
|
|
($csArray["cs_cr_fav_id"] != "" && $csArray["cs_cr_fav_eid"] != "")) :
|
|
if (($csArray["cs_cr_fav_id"] != "" && $csArray["cs_cr_fav_eid"] != "") &&
|
|
($csArray["cs_cr_fav_id"] != "--DEL--" && $csArray["cs_cr_fav_eid"] != "--DEL--") &&
|
|
(is_array($retArr) && $retArr[0] != "")) :
|
|
// Insert customercourier
|
|
insertStmt("customercourier", array("cs_id",$retArr[0],"cr_id",$csArray["cs_cr_fav_id"],"cscr_relation","1","cscr_sort","1","cscr_description",""));
|
|
endif;
|
|
// $csArray["cs_cr_fav_only"]
|
|
else :
|
|
// ERR: "Insert operation failed."
|
|
$err[] = array("133", $errCode[133]);
|
|
$doInsert = false;
|
|
endif;
|
|
endif;
|
|
endif;
|
|
else :
|
|
// ERR: "Customer ID may not exist for insert operation."
|
|
$err[] = array("106", $errCode[106]);
|
|
endif;
|
|
endif;
|
|
|
|
|
|
// ****************
|
|
// **** UPDATE ****
|
|
// ****************
|
|
|
|
if ($operationMode == "UPD" || $operationMode == "UPDATE") :
|
|
|
|
// Check existence of the customer
|
|
if ($csId != "" && is_numeric($csId)) :
|
|
|
|
$csId = getFieldValueFromId("customer","cs_id",$csId,"cs_id");
|
|
if ($csId != "") :
|
|
|
|
TA("B");
|
|
|
|
// Get current primary IDs
|
|
$csCmpId = getFieldValueFromId("customer","cs_id",$csId,"cmp_id");
|
|
$csCscRootId = getFieldValueFromId("customer","cs_id",$csId,"csc_id");
|
|
$csEmpId = getFieldValueFromId("customer","cs_id",$csId,"cs_admin");
|
|
$csUsrId = getFieldValueFromId("employee","emp_id",$csEmpId,"usr_id");
|
|
|
|
$doCsUpdate = true;
|
|
|
|
// **** User data ****
|
|
if ($doCsUpdate):
|
|
$defaultFieldArray = array();
|
|
$sqlPhraseArr = array("db.account.1" => $csUsrId);
|
|
$checkFieldArray = getFieldsAndTypes("user");
|
|
$errKey = checkTypesForDbImportFieldValues($csArray, $defaultFieldArray, $checkFieldArray, $sqlPhraseArr);
|
|
if ($errKey == "") :
|
|
if (count($defaultFieldArray) > 0) :
|
|
updateStmt("user","usr_id",$csUsrId,$defaultFieldArray);
|
|
endif;
|
|
else :
|
|
$doCsUpdate = false;
|
|
$err[] = array("100", $errCode[100] . " [" . $errKey . "]");
|
|
endif;
|
|
endif;
|
|
|
|
// **** Company data ****
|
|
if ($doCsUpdate):
|
|
// Check address data being not empty
|
|
if ($csArray["ad_street"] == "" || $csArray["ad_zipcode"] == "" || $csArray["ad_city"] == "" || $csArray["cmp_hsno"] == "") :
|
|
if ($csArray["ad_street"] . $csArray["ad_zipcode"] . $csArray["ad_city"] . $csArray["cmp_hsno"] != "") :
|
|
$err[] = array("115", $errCode[115]);
|
|
$doCsUpdate = false;
|
|
$csArray["ad_street"] = "";
|
|
$csArray["ad_zipcode"] = "";
|
|
$csArray["ad_city"] = "";
|
|
$csArray["cmp_hsno"] = "";
|
|
endif;
|
|
endif;
|
|
endif;
|
|
|
|
// Update company data
|
|
if ($doCsUpdate):
|
|
// Take current data to log for history
|
|
// .............. !!!! ..............
|
|
|
|
$defaultFieldArray = array();
|
|
$sqlPhraseArr = array();
|
|
$checkFieldArray = getFieldsAndTypes("company");
|
|
$errKey = checkTypesForDbImportFieldValues($csArray, $defaultFieldArray, $checkFieldArray, $sqlPhraseArr);
|
|
if ($errKey != "") :
|
|
$doCsUpdate = false;
|
|
$err[] = array("100", $errCode[100] . " [" . $errKey . "]");
|
|
endif;
|
|
|
|
if ($csArray["ad_street"] != "" && $csArray["ad_zipcode"] != "" && $csArray["ad_city"] != "") :
|
|
|
|
if ($csArray["ad_country"] == "") : $csArray["ad_country"] = "DE"; endif;
|
|
$sqlStmt = "SELECT ad_id FROM address WHERE ad_street = '" . $csArray["ad_street"] . "' AND ad_zipcode = '" . $csArray["ad_zipcode"] . "' AND ad_city = '" . $csArray["ad_city"] . "' AND ad_country = '" . $csArray["ad_country"] . "'";
|
|
$csCmpAdId = $db->getOne($sqlStmt);
|
|
if (DB::isError($csCmpAdId)) die ("$PHP_SELF: <br>$sqlStmt<br>" . $csCmpAdId->getMessage());
|
|
if ($csCmpAdId == ""):
|
|
insertStmt("address", array("ad_street", $csArray["ad_street"], "ad_zipcode", $csArray["ad_zipcode"], "ad_city", $csArray["ad_city"], "ad_country", $csArray["ad_country"]));
|
|
$csCmpAdId = getLastInsertID();
|
|
endif;
|
|
array_push($defaultFieldArray, "ad_id", $csCmpAdId);
|
|
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", $csCmpId, "cmp_modify_status");
|
|
if ($modifyStatus != "1") : $modifyStatus = "2"; endif;
|
|
array_push($defaultFieldArray, "cmp_modify_status", $modifyStatus);
|
|
|
|
updateStmt("company","cmp_id",$csCmpId,$defaultFieldArray);
|
|
endif;
|
|
endif;
|
|
|
|
|
|
// **** Customer data ****
|
|
|
|
// Check unique customer ID
|
|
if ($csArray["cs_eid"] != "" && $db->getOne("SELECT cs_eid FROM customer WHERE cs_eid = '" . $csArray["cs_eid"] . "' AND NOT (cs_id = '" . $csId . "')")) :
|
|
$err[] = array("116", $errCode[116]);
|
|
$doCsUpdate = false;
|
|
$csArray["cs_eid"] = "";
|
|
endif;
|
|
|
|
// Update customer data
|
|
if ($doCsUpdate):
|
|
// Take current data to log for history
|
|
// .............. !!!! ..............
|
|
|
|
$defaultFieldArray = array();
|
|
$sqlPhraseArr = array();
|
|
$checkFieldArray = getFieldsAndTypes("customer");
|
|
$errKey = checkTypesForDbImportFieldValues($csArray, $defaultFieldArray, $checkFieldArray, $sqlPhraseArr);
|
|
if ($errKey != "") :
|
|
$doCsUpdate = false;
|
|
$err[] = array("100", $errCode[100] . " [" . $errKey . "]");
|
|
endif;
|
|
|
|
if ($doCsUpdate):
|
|
if ($csArray["cs_prov"] != "") :
|
|
$csArray["cs_prov"] = str_replace (",", ".", $csArray["cs_prov"]);
|
|
array_push($defaultFieldArray, "cs_prov", $csArray["cs_prov"]);
|
|
endif;
|
|
if ($csArray["cs_discount"] != "") :
|
|
$csArray["cs_discount"] = str_replace (",", ".", $csArray["cs_discount"]);
|
|
array_push($defaultFieldArray, "cs_discount", $csArray["cs_discount"]);
|
|
endif;
|
|
|
|
if (count($defaultFieldArray) > 0) :
|
|
updateStmt("customer","cs_id",$csId,$defaultFieldArray);
|
|
|
|
// Update GPS coordinates
|
|
if ($csArray["cs_gps_lat"] != "" && $csArray["cs_gps_long"] != "") :
|
|
updateStmt("geocode", "gc_obj_id", $csId, array("gc_lat", $csArray["cs_gps_lat"], "gc_long", $csArray["cs_gps_long"]), "gc_obj_type = 'cs'");
|
|
endif;
|
|
endif;
|
|
endif;
|
|
endif;
|
|
|
|
|
|
// **** Favoured courier data (SINGLE VIEW <=> ONE ASSOCIATED FAVOURED COURIER ONLY !!!!) ****
|
|
|
|
if ($doCsUpdate):
|
|
if (($csArray["cs_cr_fav_id"] == "" && $csArray["cs_cr_fav_eid"] == "") ||
|
|
($csArray["cs_cr_fav_id"] != "" && $csArray["cs_cr_fav_eid"] != "")) :
|
|
|
|
if ($csArray["cs_cr_fav_id"] == "--DEL--" || $csArray["cs_cr_fav_eid"] == "--DEL--") :
|
|
deleteStmt("customercourier","cs_id = '" . $csId . "'");
|
|
|
|
elseif ($csArray["cs_cr_fav_id"] != "" && $csArray["cs_cr_fav_eid"] != "") :
|
|
if (!existsEntry("customercourier",array("cs_id",$csId,"cr_id",$csArray["cs_cr_fav_id"]))) :
|
|
// Remove current (single!) favoured courier
|
|
deleteStmt("customercourier","cs_id = '" . $csId . "'");
|
|
// Insert (new) customercourier
|
|
insertStmt("customercourier", array("cs_id",$csId,"cr_id",$csArray["cs_cr_fav_id"],"cscr_relation","1","cscr_sort","1","cscr_description",""));
|
|
endif;
|
|
endif;
|
|
// $csArray["cs_cr_fav_only"]
|
|
else :
|
|
// ERR: "Insert operation failed."
|
|
$err[] = array("133", $errCode[133]);
|
|
$doCsUpdate = false;
|
|
endif;
|
|
endif;
|
|
|
|
|
|
// **** Costcenter data ****
|
|
|
|
// Update customer data
|
|
if ($doCsUpdate):
|
|
// Take current data to log for history
|
|
// .............. !!!! ..............
|
|
|
|
$numOfCostcenters = count($csArray["csc"]);
|
|
if ($debug) : echo "numOfCostcenters = " . $numOfCostcenters . "<br>\n"; endif;
|
|
|
|
if ($numOfCostcenters > 0) :
|
|
|
|
for ($i = 0; $i < $numOfCostcenters; $i++) :
|
|
|
|
$cscOperation = $csArray["csc"][$i]["csc_operation"];
|
|
$cscId = $csArray["csc"][$i]["csc_id"];
|
|
$cscPreId = $csArray["csc"][$i]["csc_pre_id"];
|
|
|
|
if ($cscOperation == "INS" || $cscOperation == "UPD" || $cscOperation == "DEL") :
|
|
|
|
if ($cscOperation == "DEL") :
|
|
|
|
if ($cscId != "" && is_numeric($cscId)) :
|
|
|
|
// Check costcenter not to be root costcenter
|
|
$csCscIdRoot = getFieldValueFromId("customer", "cs_id", $csId, "csc_id");
|
|
if ($csCscIdRoot != $cscId) :
|
|
|
|
// Check costcenter to be deleted is not a parent costcenter for another costcenter
|
|
if (!existsEntry("costcenter", array("cs_id",$csId,"csc_pre_id",$cscId))) :
|
|
|
|
// Check costcenter to be deleted does not have any job
|
|
if (!existsEntry("job", array("csc_id",$cscId)) && !existsEntry("job", array("csc_id_payer",$cscId)) && !existsEntry("job", array("csc_id_payer_cash",$cscId))) :
|
|
|
|
deleteStmt("costcenteraddress", "csc_id = '" . $cscId . "'");
|
|
deleteStmt("costcenter", "csc_id = '" . $cscId . "'");
|
|
else :
|
|
$err[] = array("124", $errCode[124] . " [csc:" . $i . "]");
|
|
$doCsUpdate = false;
|
|
endif;
|
|
else :
|
|
$err[] = array("120", $errCode[120] . " [csc:" . $i . "]");
|
|
$doCsUpdate = false;
|
|
endif;
|
|
else :
|
|
$err[] = array("119", $errCode[119] . " [csc:" . $i . "]");
|
|
$doCsUpdate = false;
|
|
endif;
|
|
else :
|
|
$err[] = array("118", $errCode[118] . " [csc:" . $i . "]");
|
|
$doCsUpdate = false;
|
|
endif;
|
|
|
|
elseif ($cscOperation == "INS") :
|
|
|
|
if ($cscId == "") :
|
|
|
|
$doInsert = false;
|
|
// Check existence of csc_name for the current customer
|
|
if ($csArray["csc"][$i]["csc_name"] != "" && !existsEntry("costcenter", array("cs_id",$csId,"csc_name",$csArray["csc"][$i]["csc_name"]))):
|
|
|
|
// If parent ID is set for this (new) costcenter to be inserted then get current path of the future parent costcenter
|
|
$cscNameParent = "";
|
|
$cscPathParent = "";
|
|
if ($cscPreId != "" && is_numeric($cscPreId) && $cscPreId > 0 && existsEntry("costcenter",array("cs_id",$csId,"csc_id",$cscPreId))) :
|
|
$cscNameParent = getFieldValueFromId("costcenter", "csc_id", $cscPreId, "csc_name");
|
|
$cscPathParent = getFieldValueFromId("costcenter", "csc_id", $cscPreId, "csc_path");
|
|
if ($cscPathParent == ""): $cscPathParent = "//"; endif;
|
|
endif;
|
|
|
|
// The new path is the concatenation of the path of the current costcenter and id of the current costcenter
|
|
if ($cscNameParent != "") :
|
|
$defaultFields = array("cs_id",$csId,"csc_pre_id",$cscPreId,"csc_name",$csArray["csc"][$i]["csc_name"],"csc_path",$cscPathParent . $cscNameParent . "//","csc_visible","1");
|
|
insertStmt("costcenter",$defaultFields);
|
|
|
|
// Per default costcenteraddresses (one of each address type) of the root costcenter will be inserted
|
|
$csCscIdRoot = getFieldValueFromId("customer", "cs_id", $csId, "csc_id");
|
|
if ($csCscIdRoot != "" && is_numeric($csCscIdRoot) && $csCscIdRoot > 0) :
|
|
for ($c = 1; $c <= 4; $c++) :
|
|
getDbFieldValues("costcenteraddress",array("ad_id","cscad_hsno","cscad_comp","cscad_comp2","cscad_comp3","cscad_comp4"),array("csc_id",$csCscIdRoot,"adt_id",$c));
|
|
insertStmt("costcenteraddress",array("csc_id", $cscIdNew, "cscad_comp", $cscad_comp, "cscad_comp2", $cscad_comp2, "cscad_comp3", $cscad_comp3, "cscad_comp4", $cscad_comp4, "ad_id", $ad_id, "adt_id", $c, "cscad_hsno", $cscad_hsno));
|
|
endfor;
|
|
endif;
|
|
else :
|
|
$err[] = array("123", $errCode[123] . " [csc:" . $i . "]");
|
|
$doCsUpdate = false;
|
|
endif;
|
|
else :
|
|
$err[] = array("122", $errCode[122] . " [csc:" . $i . "]");
|
|
$doCsUpdate = false;
|
|
endif;
|
|
else :
|
|
$err[] = array("121", $errCode[121] . " [csc:" . $i . "]");
|
|
$doCsUpdate = false;
|
|
endif;
|
|
|
|
elseif ($cscOperation == "UPD") :
|
|
|
|
if ($cscId != "") :
|
|
|
|
$defaultCscFieldArray = array();
|
|
|
|
// Update costcenter data because costcenter name is set and should rename the current one
|
|
if ($csArray["csc"][$i]["csc_name"] != ""):
|
|
|
|
if (!$db->getOne("SELECT csc.csc_id FROM costcenter AS csc WHERE csc.csc_name = '" . $csArray["csc"][$i]["csc_name"] . "' AND csc.csc_id != '" . $cscId . "' AND csc.cs_id = '" . $csId . "'")):
|
|
|
|
$defaultCscFieldArray = array("csc_name", $csArray["csc"][$i]["csc_name"]);
|
|
|
|
// All path field values of potential sub-costcenters have to be updated
|
|
$cscNameCurrent = getFieldValueFromId("costcenter","csc_id",$cscId,"csc_name");
|
|
$sqlStmt = "SELECT csc_id,csc_path FROM costcenter WHERE csc_path LIKE '%//" . $cscNameCurrent . "//%' AND cs_id = '" . $csId . "'";
|
|
$result = $db->query($sqlStmt);
|
|
if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage());
|
|
|
|
while ($row = $result->fetch_assoc()):
|
|
$tmpCscId = $row["csc_id"];
|
|
$tmpCscPath = str_replace("//" . $cscNameCurrent . "//","//" . $csArray["csc"][$i]["csc_name"] . "//",strWrapJs($row["csc_path"]));
|
|
updateStmt("costcenter","csc_id",$tmpCscId,array("csc_path",$tmpCscPath));
|
|
endwhile;
|
|
$result->free();
|
|
else :
|
|
$err[] = array("126", $errCode[126] . " [csc:" . $i . "]");
|
|
$doCsUpdate = false;
|
|
endif;
|
|
endif;
|
|
|
|
// Check parent costcenter ID to reassign sub-tree to another costcenter.
|
|
// Currently the tag <csc_pre_id> is of type "doop" and is used by INS only
|
|
if ($cscPreId != "") :
|
|
$err[] = array("131", $errCode[131] . " [csc:" . $i . "]");
|
|
$doCsUpdate = false;
|
|
// array_push($defaultCscFieldArray, "csc_pre_id", $cscPreId);
|
|
endif;
|
|
|
|
if ($doCsUpdate) :
|
|
|
|
// Update requested costcenter item
|
|
if (count($defaultCscFieldArray) > 0) :
|
|
updateStmt("costcenter","csc_id",$cscId, $defaultCscFieldArray);
|
|
endif;
|
|
|
|
// Check for costcenter addresses
|
|
$numOfCostcenterAddresses = count($csArray["csc"][$i]["cscad"]);
|
|
if ($debug) : echo "numOfCostcenterAddresses = " . $numOfCostcenterAddresses . " [csc:" . $i . "]" . "<br>\n"; endif;
|
|
|
|
if ($numOfCostcenterAddresses > 0) :
|
|
|
|
for ($j = 0; $j < $numOfCostcenterAddresses; $j++) :
|
|
|
|
$cscadOperation = $csArray["csc"][$i]["cscad"][$j]["cscad_operation"];
|
|
|
|
if ($cscadOperation == "INS" || $cscadOperation == "UPD" || $cscadOperation == "DEL") :
|
|
|
|
// For all operations the address type is required
|
|
$cscadAdt = $csArray["csc"][$i]["cscad"][$j]["adt_id"];
|
|
|
|
if ($cscadAdt != "" && is_numeric($cscadAdt) && $cscadAdt >= 0 && $cscadAdt <= 4) :
|
|
|
|
if ($cscadOperation == "DEL") :
|
|
|
|
deleteStmt("costcenteraddress", "csc_id = '" . $cscId . "' AND adt_id = '" . $cscadAdt . "'");
|
|
|
|
elseif ($cscadOperation == "INS") :
|
|
|
|
// Check existence of an address with the specified address type. It does NOT have to exist!
|
|
if (!existsEntry("costcenteraddress",array("csc_id",$cscId,"adt_id",$cscadAdt))) :
|
|
|
|
$defaultCscadFieldArray = array("csc_id", $cscId, "adt_id", $cscadAdt);
|
|
$sqlPhraseArr = array();
|
|
$checkFieldArray = getFieldsAndTypes("costcenteraddress");
|
|
$errKey = checkTypesForDbImportFieldValues($csArray["csc"][$i]["cscad"][$j], $defaultCscadFieldArray, $checkFieldArray, $sqlPhraseArr);
|
|
if ($errKey != "") :
|
|
$doCsUpdate = false;
|
|
$err[] = array("100", $errCode[100] . " [" . $errKey . "]");
|
|
endif;
|
|
|
|
if ($doCsUpdate) :
|
|
// Check address to be complete
|
|
$cscadAdId = "0";
|
|
if ($csArray["csc"][$i]["cscad"][$j]["ad_street"] != "" && $csArray["csc"][$i]["cscad"][$j]["ad_zipcode"] != "" && $csArray["csc"][$i]["cscad"][$j]["ad_city"] != "") :
|
|
if ($csArray["csc"][$i]["cscad"][$j]["ad_country"] == "") : $csArray["csc"][$i]["cscad"][$j]["ad_country"] = "DE"; endif;
|
|
$sqlStmt = "SELECT ad_id FROM address WHERE ad_street = '" . $csArray["csc"][$i]["cscad"][$j]["ad_street"] . "' AND ad_zipcode = '" . $csArray["csc"][$i]["cscad"][$j]["ad_zipcode"] . "' AND ad_city = '" . $csArray["csc"][$i]["cscad"][$j]["ad_city"] . "' AND ad_country = '" . $csArray["csc"][$i]["cscad"][$j]["ad_country"] . "'";
|
|
$cscadAdId = $db->getOne($sqlStmt);
|
|
if (DB::isError($cscadAdId)) die ("$PHP_SELF: <br>$sqlStmt<br>" . $cscadAdId->getMessage());
|
|
if ($cscadAdId == ""):
|
|
insertStmt("address", array("ad_street", $csArray["csc"][$i]["cscad"][$j]["ad_street"], "ad_zipcode", $csArray["csc"][$i]["cscad"][$j]["ad_zipcode"], "ad_city", $csArray["csc"][$i]["cscad"][$j]["ad_city"], "ad_country", $csArray["csc"][$i]["cscad"][$j]["ad_country"]));
|
|
$cscadAdId = getLastInsertID();
|
|
endif;
|
|
array_push($defaultCscadFieldArray, "ad_id", $cscadAdId);
|
|
endif;
|
|
|
|
if (count($defaultCscadFieldArray) > 0 && $cscadAdId > 0) :
|
|
insertStmt("costcenteraddress", $defaultCscadFieldArray);
|
|
endif;
|
|
endif;
|
|
else :
|
|
$err[] = array("129", $errCode[129] . " [csc:" . $i . "][cscad:" . $j . "]");
|
|
$doCsUpdate = false;
|
|
endif;
|
|
|
|
elseif ($cscadOperation == "UPD") :
|
|
|
|
// Check existence of an address with the specified address type. It has to exist!
|
|
if (existsEntry("costcenteraddress",array("csc_id",$cscId,"adt_id",$cscadAdt))) :
|
|
|
|
$defaultCscadFieldArray = array("csc_id", $cscId, "adt_id", $cscadAdt);
|
|
$sqlPhraseArr = array();
|
|
$checkFieldArray = getFieldsAndTypes("costcenteraddress");
|
|
$errKey = checkTypesForDbImportFieldValues($csArray["csc"][$i]["cscad"][$j], $defaultCscadFieldArray, $checkFieldArray, $sqlPhraseArr);
|
|
if ($errKey != "") :
|
|
$doCsUpdate = false;
|
|
$err[] = array("100", $errCode[100] . " [" . $errKey . "]");
|
|
endif;
|
|
|
|
if ($csArray["csc"][$i]["cscad"][$j]["ad_hsno"] != "") : array_push($defaultCscadFieldArray, "cscad_hsno", $csArray["csc"][$i]["cscad"][$j]["ad_hsno"]); endif;
|
|
if ($csArray["csc"][$i]["cscad"][$j]["ad_floor"] != "" && checkValueByType($csArray["csc"][$i]["cscad"][$j]["ad_floor"], "integer")) :
|
|
array_push($defaultCscadFieldArray, "cscad_floor", $csArray["csc"][$i]["cscad"][$j]["ad_floor"]);
|
|
else :
|
|
$doCsUpdate = false;
|
|
$err[] = array("100", $errCode[100] . " [" . "ad_floor" . "]");
|
|
endif;
|
|
|
|
if ($doCsUpdate) :
|
|
// Check address to be complete
|
|
$cscadAdId = "0";
|
|
if ($csArray["csc"][$i]["cscad"][$j]["ad_street"] != "" && $csArray["csc"][$i]["cscad"][$j]["ad_zipcode"] != "" && $csArray["csc"][$i]["cscad"][$j]["ad_city"] != "") :
|
|
if ($csArray["csc"][$i]["cscad"][$j]["ad_country"] == "") : $csArray["csc"][$i]["cscad"][$j]["ad_country"] = "DE"; endif;
|
|
$sqlStmt = "SELECT ad_id FROM address WHERE ad_street = '" . $csArray["csc"][$i]["cscad"][$j]["ad_street"] . "' AND ad_zipcode = '" . $csArray["csc"][$i]["cscad"][$j]["ad_zipcode"] . "' AND ad_city = '" . $csArray["csc"][$i]["cscad"][$j]["ad_city"] . "' AND ad_country = '" . $csArray["csc"][$i]["cscad"][$j]["ad_country"] . "'";
|
|
$cscadAdId = $db->getOne($sqlStmt);
|
|
if (DB::isError($cscadAdId)) die ("$PHP_SELF: <br>$sqlStmt<br>" . $cscadAdId->getMessage());
|
|
if ($cscadAdId == ""):
|
|
insertStmt("address", array("ad_street", $csArray["csc"][$i]["cscad"][$j]["ad_street"], "ad_zipcode", $csArray["csc"][$i]["cscad"][$j]["ad_zipcode"], "ad_city", $csArray["csc"][$i]["cscad"][$j]["ad_city"], "ad_country", $csArray["csc"][$i]["cscad"][$j]["ad_country"]));
|
|
$cscadAdId = getLastInsertID();
|
|
endif;
|
|
array_push($defaultCscadFieldArray, "ad_id", $cscadAdId);
|
|
endif;
|
|
|
|
if ($doCsUpdate) :
|
|
if (count($defaultCscadFieldArray) > 0 && $cscadAdId > 0) :
|
|
updateStmt("costcenteraddress","csc_id",$cscId, $defaultCscadFieldArray, "adt_id = '" . $cscadAdt . "'");
|
|
endif;
|
|
endif;
|
|
endif;
|
|
else :
|
|
$err[] = array("130", $errCode[130] . " [csc:" . $i . "][cscad:" . $j . "]");
|
|
$doCsUpdate = false;
|
|
endif;
|
|
endif;
|
|
else :
|
|
$err[] = array("128", $errCode[128] . " [csc:" . $i . "][cscad:" . $j . "]");
|
|
$doCsUpdate = false;
|
|
endif;
|
|
else :
|
|
$err[] = array("127", $errCode[127] . " [csc:" . $i . "][cscad:" . $j . "]");
|
|
$doCsUpdate = false;
|
|
endif;
|
|
endfor;
|
|
endif;
|
|
endif; // $doCsUpdate
|
|
else :
|
|
$err[] = array("125", $errCode[125] . " [csc:" . $i . "]");
|
|
$doCsUpdate = false;
|
|
endif;
|
|
endif;
|
|
else :
|
|
$err[] = array("117", $errCode[117] . " [csc:" . $i . "]");
|
|
$doCsUpdate = false;
|
|
endif;
|
|
endfor;
|
|
endif;
|
|
endif;
|
|
|
|
// Commit or rollback of all transactions on "costcenter" and "costcenteraddress".
|
|
// "customer", "company", "user", etc. are executed and made persistent if operations are ok. (!!!!)
|
|
if ($doCsUpdate) :
|
|
$retDbIds = getDbIdTree("cs", $csId, "1", "db_id_struct", "\n");
|
|
TA("C");
|
|
else :
|
|
TA("R");
|
|
endif;
|
|
TA("E");
|
|
else :
|
|
// ERR: "Customer not found in database."
|
|
$err[] = array("103", $errCode[103]);
|
|
endif;
|
|
else :
|
|
// ERR: "No customer defined for operation."
|
|
$err[] = array("102", $errCode[102]);
|
|
endif;
|
|
endif;
|
|
|
|
/*
|
|
if (!$errHandlerDisabled) :
|
|
$cscIdList = array();
|
|
if ($csId != "" && $csId > "0") :
|
|
$sqlquery = "SELECT csc.csc_id FROM costcenter AS csc WHERE csc.cs_id = '" . $csId . "'";
|
|
$result = $db->query($sqlquery);
|
|
if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage());
|
|
while ($row = $result->fetch_assoc()):
|
|
$cscIdList[] = $row["csc_id"];
|
|
endwhile;
|
|
$result->free();
|
|
endif;
|
|
if (count($cscIdList) > 0) :
|
|
// Check for maximum number of jobs per day
|
|
$numOfOrdersOfTheCurrentDay = getCountOfTable("job", "jb_modify >= '" . $currentDate . " 00:00:00' AND csc_id_payer IN (" . implode(",", $cscIdList) . ")");
|
|
if ($numOfOrdersOfTheCurrentDay == "" || (is_numeric($numOfOrdersOfTheCurrentDay) && $numOfOrdersOfTheCurrentDay > $maxNumOfOrdersPerDay)) :
|
|
$acceptOrder = false;
|
|
$err[] = array("102", getLngt("Das Limit der Aufträge pro Tag wurde überschritten. Derzeit sind dies") . " " . $maxNumOfOrdersPerDay . " " . getLngt("Aufträge"));
|
|
endif;
|
|
// Check for maximum number of running jobs
|
|
$numOfRunningOrders = getCountOfTable("job", "jb_status != '2' AND csc_id_payer IN (" . implode(",", $cscIdList) . ")");
|
|
if ($numOfRunningOrders > $maxNumOfRunningOrders) :
|
|
$acceptOrder = false;
|
|
$err[] = array("103", getLngt("Das Limit insgesamt laufender Aufträge wurde überschritten. Derzeit sind dies") . " " . $maxNumOfRunningOrders . " " . getLngt("Aufträge"));
|
|
endif;
|
|
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
|
|
// $csvLogLine = $csEid . ";" . $currentTime . ";" . $commissionNo . ";" . $commNoRelated . ";" . $commNoService . ";" . $operationMode . ";";
|
|
|
|
// Output
|
|
$outResponse .= "<xml>" . $lineFeed;
|
|
if ($errLen > 0) :
|
|
$errCsv = "";
|
|
customerRequestLogFile("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;
|
|
customerRequestLogFile($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
|
|
$csvLogLine .= $errCsv;
|
|
CSVRequestLogFile ($csvLogLine, 2);
|
|
else :
|
|
$outResponse .= "<state>OK</state>" . $lineFeed;
|
|
if ($debug) :
|
|
$outResponse .= "<debug>" . implode("<br>", $debugOut) . "</debug>" . $lineFeed;
|
|
endif;
|
|
$outResponse .= $retDbIds;
|
|
$outResponse .= $customerXML;
|
|
|
|
// Log requests being OK in CSV format if activated
|
|
$csvLogLine .= "OK";
|
|
CSVRequestLogFile ($csvLogLine, 1);
|
|
endif;
|
|
$outResponse .= "</xml>" . $lineFeed;
|
|
|
|
// Log entries
|
|
customerRequestLogFile(getDateTime("0") . " - " . $outResponse); // Write response into log
|
|
customerRequestLogFile("___________________________________________________________________________________");
|
|
|
|
// Call autoresponder for the new job if enabled for the customer
|
|
$parAutoresponseEnabled = getParameterValue("0", "ORDER_REQUEST_AUTORESPONSE_ENABLED_CS_" . $csId, "0");
|
|
if ($parAutoresponseEnabled == "1" || $parAutoresponseEnabled == "on" || $parAutoresponseEnabled == "yes") :
|
|
$path = getAbsoluteSystemPath();
|
|
$cmd = "php " . $path . "/tools/auto_response_job_new.php acapella7890 " . $csId . " " . $jbIdNew . " &";
|
|
system($cmd);
|
|
endif;
|
|
|
|
// Return output
|
|
echo $outResponse;
|
|
|
|
|
|
|
|
|
|
/*
|
|
// FELDER UND IHRE BEDEUTUNG
|
|
// Pefices: [cs = customer] [cmp = company] [csc = costcenter] [ad = address] [usr = user]
|
|
// => cs has one cmp
|
|
// => cs has one or more costcenters, but if no costcenter defined in request then the "root costcenter" would be created by tag data of user segment like user address
|
|
// Usage: [mdtr = mandatory] [opt = optional] [doop = depends on operation] [fut = future]
|
|
<xml>
|
|
<customer> // Auftraggeber
|
|
<auth> // Abschnitt für Authentifikation des Requests
|
|
<session_id>[mdtr]</session_id> // Zusätzliche Session-ID, die mit dem Kunden 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 customer dataset (INS, INSERT, UPD, UPDATE, DEL, DELETE) [default = empty = INS(ERT)]
|
|
<debug_on>[opt]</debug_on> // Activates debug output ("ON" or "YES")
|
|
|
|
<cs_id>[doop]</cs_id> // ID of the customer, needed for DEL or UPD
|
|
<cs_eid>[opt]</cs_eid> // EID of the customer, needed for INS (use explicitly if does not exist) or UPD (overwrite if does not exist)
|
|
<cs_sid>[doop]</cs_sid> // Commission no of the customer 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"
|
|
<cs_prov>[fut]</cs_prov> // Provision [%]
|
|
<cs_discount>[fut]</cs_discount> // Discount [%]
|
|
<cs_invmode>[opt]</cs_invmode> // Invoice mode
|
|
|
|
<cs_cr_fav_id>[opt]</cs_cr_fav_id> // Associate favoured courier by ID
|
|
<cs_cr_fav_eid>[opt]</cs_cr_fav_eid> // Associate favoured courier by EID
|
|
<cs_cr_fav_only>[fut]</cs_cr_fav_only> // Favoured couriers only
|
|
|
|
<cs_jbstatusmail>[opt]</cs_jbstatusmail> // Mail per order being finished
|
|
<cs_jbstatusmail2>[opt]</cs_jbstatusmail2> // Mail per order being picked up
|
|
<cs_jbstatusmail3>[opt]</cs_jbstatusmail3> // Mail per order being created
|
|
<cs_jbstatusmail_pdf>[opt]</cs_jbstatusmail_pdf> // Generate PDF attachement for mail "finished order"
|
|
|
|
<cs_filter>[opt]</cs_filter> // Classic filter regarding every order
|
|
<cs_group>[opt]</cs_group> // Customer can belong to a special group
|
|
<cs_tracking>[opt]</cs_tracking> // System is allowed to track the customer
|
|
|
|
<cs_gps_lat>[opt]</cs_gps_lat> // GPS latitude
|
|
<cs_gps_long>[opt]</cs_gps_long> // GPS longitude
|
|
|
|
<cs_last_job>[opt]</cs_last_job> // Enables search for GETting the last job ("ON" or "YES")
|
|
|
|
<cs_reports_num_since_last_login>[opt]</cs_reports_num_since_last_login>
|
|
// If field is NOT EMPTY, three comma separated values can be set.
|
|
// First value ist the last n days from today
|
|
// Second value is the type of the report (0 <=> ALL report types)
|
|
// Third value is the ID of the employee logged in for the option "since last login" only
|
|
// Examples:
|
|
// "4" <=> 4 days, all report types and no special employee <=> Gets the number of all reports since the last 4 days for ALL report types
|
|
// "7,2,4321" <=> 7 days, report type 2 only and special employee ID 4321 <=> Gets the number of reports with type 2 since the last 7 days but only from last login date of employee 4321
|
|
|
|
<company> // COMPANY [1:1 CUSTOMER]
|
|
<cmp_type>[fut]</cmp_type> // Type of the customer (default = 0 <=> active customer)
|
|
|
|
<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 cs_id or cs_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 customer
|
|
<cmp_remark2>[opt]</cmp_remark2> // Private (internal) remark for the customer
|
|
<cmp_match>[opt]</cmp_match> // Freetext (200 chars) with space separated buzzword for search requests in customer 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 Kunden bzw. Auftraggebers, der sich (in votian und/oder im (Börsen-)Portal) einloggen kann
|
|
<usr_name>[opt]</usr_name> // Nachname
|
|
<usr_firstname>[opt]</usr_firstname> // Vorname
|
|
<usr_birthdate>[opt]</usr_birthdate> // Geburtsdatum ["Y-m-d" <=> "JJJJ-MM-TT"]
|
|
|
|
<usr_email>[opt]</usr_email> // Email-Adresse (primäre Mailadresse)
|
|
<usr_inv_email>[fut]</usr_inv_email> // Rechnungs-Email-Adresse [NICHT IN VERWENDUNG BEI CUSTOMER]
|
|
<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> // Passwort (mind. 8-stellig, mind. eine Zahl, mind. ein Buchstabe)
|
|
</user>
|
|
|
|
<costcenters> // COSTCENTERS
|
|
<costcenter>
|
|
<csc_operation>[opt]</csc_operation> // Ignored if tag <operation> != "UPD", otherwise <csc_operation> IN (INS, INSERT, UPD, UPDATE, DEL, DELETE) [default = empty = INS(ERT)]
|
|
<csc_id>[doop]</csc_id> // Ignored if tag <operation> != "UPD" or <csc_operation> == "INS", otherwise delete or update costcenter
|
|
|
|
<csc_pre_id>[doop]</csc_pre_id> // Parent ID for hierarchy (default = empty for root costcenter). Mandatory for operation INS.
|
|
<csc_name>[opt]</csc_name> // Name of the costcenter. If empty for root costcenter then company name will be used
|
|
|
|
<costcenteraddresses> // Attention: If <csc_operation> is "INS" then segment <costcenteraddresses> will be ignored. Default addresses will be added identically to root costcenter addresses. A second update request is (presently) necessary! (!!!!)
|
|
<costcenteraddress>
|
|
<cscad_operation>[mdtr]</cscad_operation> // Ignored if tag <operation> != "UPD" and <csc_operation> != "UPD" and <csc_id> == "" and <adt_id> == "", otherwise INS, INSERT, UPD, UPDATE, DEL, DELETE [default = empty = INS(ERT)]
|
|
<adt_id>[mdtr]</adt_id> // Mandatory for all operations ("csc_id" and "adt_id" <=> combined index)
|
|
|
|
<cscad_comp>[doop]</cscad_comp> // Name field 1 [mandatory for insert]
|
|
<cscad_comp2>[opt]</cscad_comp2> // Name field 2
|
|
<cscad_comp3>[opt]</cscad_comp3> // Name field 3
|
|
<cscad_comp4>[opt]</cscad_comp4> // Name field 4
|
|
|
|
<ad_street>[opt]</ad_street> // Street (<adt_id> has to be set for update)
|
|
<ad_hsno>[opt]</ad_hsno> // House number (<adt_id> has to be set for update)
|
|
<ad_floor>[opt]</ad_floor> // Floor (für address) (<adt_id> has to be set for update)
|
|
<ad_zipcode>[opt]</ad_zipcode> // Zipcode (<adt_id> has to be set for update)
|
|
<ad_city>[opt]</ad_city> // City (<adt_id> has to be set for update)
|
|
<ad_country>[opt]</ad_country> // Country (<adt_id> has to be set for update)
|
|
|
|
<cscad_person>[opt]</cscad_person> // Person for costcenter address
|
|
<cscad_phone>[opt]</cscad_phone> // Phone for costcenter address
|
|
<cscad_email>[opt]</cscad_email> // Email for costcenter address
|
|
<cscad_remark>[opt]</cscad_remark> // Remark for costcenter address
|
|
</costcenteraddress>
|
|
|
|
<costcenteraddress>
|
|
....
|
|
</costcenteraddress>
|
|
....
|
|
</costcenteraddresses>
|
|
</costcenter>
|
|
|
|
<costcenter> // Next costcenter ....
|
|
....
|
|
</costcenter>
|
|
....
|
|
</costcenters>
|
|
|
|
<skills> // Manuelle EVENTS
|
|
<val>[fut]</val>
|
|
<val>[fut]</val>
|
|
<val>[fut]</val>
|
|
...
|
|
</skills>
|
|
|
|
</customer>
|
|
</xml>
|
|
*/
|
|
?>
|
|
|