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

2542 lines
115 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/*=======================================================================
*
* serviceXML.php
*
* Autor: Marc Vollmann
*
=======================================================================*/
// ******************
// **** Includes ****
// ******************
include_once ("../include/mcglobal.inc.php");
// include_once ("../include/auth.inc.php");
include_once ("../include/inc_parseXML.inc.php");
include_once ("../include/inc_APP.inc.php");
include_once ("../include/inc_WEB.inc.php");
include_once ("../include/inc_SRVC.inc.php");
// include_once ("../include/email/htmlMimeMail.php");
// Relevant include files to find functions [NOT in array: "inc_article", "html"]
/*
$includeArray = array("ftp", "image", "inc_calendar", "inc_customer", "inc_courier", "inc_file", "inc_filters", "inc_group", "inc_job", "inc_parseXML", "inc_services", "inc_pnpoly", "inc_stock", "inc_vehicle", "inc_html2pdf");
$includeArrayLen = count($includeArray);
for ($inc = 0; $inc < $includeArrayLen; $inc++) :
include_once ("../include/" . $includeArray[$inc] . ".inc.php");
endfor;
*/
include_once ("../include/ftp.inc.php");
include_once ("../include/inc_customer.inc.php");
include_once ("../include/inc_courier.inc.php");
include_once ("../include/inc_file.inc.php");
include_once ("../include/inc_filters.inc.php");
include_once ("../include/inc_group.inc.php");
include_once ("../include/inc_job.inc.php");
include_once ("../include/inc_services.inc.php");
include_once ("../include/inc_pnpoly.inc.php");
include_once ("../include/inc_stock.inc.php");
include_once ("../include/inc_vehicle.inc.php");
include_once ("../include/inc_html2pdf.inc.php");
include_once ("../include/image.inc.php");
include_once ("../include/services_func.inc.php");
include_once ("../include/inc_calendar.php");
include_once ("../groupware/calendar.php");
include_once ("../statistic/statistic_sql.inc.php");
// *************************
// **** Initialisations ****
// *************************
// $messageReqRawData = file_get_contents('php://input');
getSecHttpVars("1", array("data"));
$messageReq = $data;
// $messageReq = mcDecode($messageReq);
$messageReq = str_replace("'", "", $messageReq); // Remove all tics für DB security
$currentTime = getDateTime("0");
$currentClientIP = trim($_SERVER['REMOTE_ADDR']);
$constMaxLoginTrialsDefault = 5;
writeToFile("../log/mobile.log", $currentTime . " | " . $currentClientIP);
// writeToFile("../log/mobile.log", $messageReqRawData);
writeToFile("../log/mobile.log", $messageReq);
writeToFile("../log/mobile.log", "-------------------------------------------------------------------------------------------");
// *** Parse request ***
$reqArray = xml2array($messageReq);
$serviceContext = convertSpecial($reqArray["adsg_req"]["service_context"]);
$requestKey = convertSpecial($reqArray["adsg_req"]["req_key"]);
$functionName = convertSpecial($reqArray["adsg_req"]["id"]);
$licKey = convertSpecial($reqArray["adsg_req"]["licencekey"]);
$moId = convertSpecial($reqArray["adsg_req"]["mo_id"]);
$usrSession = convertSpecial($reqArray["adsg_req"]["session"]);
$appKey = convertSpecial($reqArray["adsg_req"]["app_key"]);
$appId = convertSpecial($reqArray["adsg_req"]["app_id"]);
$usrId = convertSpecial($reqArray["adsg_req"]["usr_id"]);
$sessionId = convertSpecial($reqArray["adsg_req"]["sessionId"]);
$passPhrase = convertSpecial($reqArray["adsg_req"]["passPhrase"]);
$appusrStatus = convertSpecial($reqArray["adsg_req"]["appusr_status"]);
$cmpComp = convertSpecial($reqArray["adsg_req"]["payload"]["company"]);
$cmpComp2 = convertSpecial($reqArray["adsg_req"]["payload"]["company2"]);
$usrName = convertSpecial($reqArray["adsg_req"]["payload"]["usr_name"]);
$usrFirstname = convertSpecial($reqArray["adsg_req"]["payload"]["usr_firstname"]);
$usrEmail = convertSpecial($reqArray["adsg_req"]["payload"]["usr_email"]);
$usrMobile = convertSpecial($reqArray["adsg_req"]["payload"]["usr_mobile"]);
$usrAccount = convertSpecial($reqArray["adsg_req"]["payload"]["account"]);
$usrPassword = convertSpecial($reqArray["adsg_req"]["payload"]["password"]);
$usrPassword2 = convertSpecial($reqArray["adsg_req"]["payload"]["password2"]);
$cmpId = convertSpecial($reqArray["adsg_req"]["payload"]["cmp_id"]);
$hqId = convertSpecial($reqArray["adsg_req"]["payload"]["hq_id"]);
$dateFrom = convertSpecial($reqArray["adsg_req"]["payload"]["date_from"]);
$dateTo = convertSpecial($reqArray["adsg_req"]["payload"]["date_to"]);
$adStreet = convertSpecial($reqArray["adsg_req"]["payload"]["ad_street"]);
$adHsno = convertSpecial($reqArray["adsg_req"]["payload"]["ad_hsno"]);
$adZipcode = convertSpecial($reqArray["adsg_req"]["payload"]["ad_zipcode"]);
$adCity = convertSpecial($reqArray["adsg_req"]["payload"]["ad_city"]);
$adCountry = convertSpecial($reqArray["adsg_req"]["payload"]["ad_country"]);
$mtfcId = convertSpecial($reqArray["adsg_req"]["payload"]["mtfc_id"]);
$category = convertSpecial($reqArray["adsg_req"]["payload"]["category"]);
$objType = convertSpecial($reqArray["adsg_req"]["payload"]["obj_type"]);
$objId = convertSpecial($reqArray["adsg_req"]["payload"]["obj_id"]);
$whereClause = convertSpecial($reqArray["adsg_req"]["payload"]["where_clause"]);
$orderByClause = convertSpecial($reqArray["adsg_req"]["payload"]["orderby_clause"]);
// ----------------------------------------------------------------------------------------------
$ttEvent = convertSpecial($reqArray["adsg_req"]["payload"]["tt_event"]);
$ttTimestamp = convertSpecial($reqArray["adsg_req"]["payload"]["tt_timestamp"]);
$gpsLong = convertSpecial($reqArray["adsg_req"]["payload"]["gps_long"]);
$gpsLat = convertSpecial($reqArray["adsg_req"]["payload"]["gps_lat"]);
// ----------------------------------------------------------------------------------------------
$selYear = convertSpecial($reqArray["adsg_req"]["payload"]["year"]);
$selMonth = convertSpecial($reqArray["adsg_req"]["payload"]["month"]);
$selWeek = convertSpecial($reqArray["adsg_req"]["payload"]["week"]);
$selDay = convertSpecial($reqArray["adsg_req"]["payload"]["day"]);
$apId = convertSpecial($reqArray["adsg_req"]["payload"]["ap_id"]);
$apText = convertSpecial($reqArray["adsg_req"]["payload"]["ap_text"]);
$execDatetime = convertSpecial($reqArray["adsg_req"]["payload"]["execdatetime"]);
$endDatetime = convertSpecial($reqArray["adsg_req"]["payload"]["enddatetime"]);
$csId = convertSpecial($reqArray["adsg_req"]["payload"]["cs_id"]);
$csEid = convertSpecial($reqArray["adsg_req"]["payload"]["cs_eid"]);
$cscId = convertSpecial($reqArray["adsg_req"]["payload"]["csc_id"]);
$crId = convertSpecial($reqArray["adsg_req"]["payload"]["cr_id"]);
$crEid = convertSpecial($reqArray["adsg_req"]["payload"]["cr_eid"]);
$crvhId = convertSpecial($reqArray["adsg_req"]["payload"]["crvh_id"]);
$apCat1 = convertSpecial($reqArray["adsg_req"]["payload"]["ap_cat1"]);
$apCat2 = convertSpecial($reqArray["adsg_req"]["payload"]["ap_cat2"]);
$apCat3 = convertSpecial($reqArray["adsg_req"]["payload"]["ap_cat3"]);
$apCat4 = convertSpecial($reqArray["adsg_req"]["payload"]["ap_cat4"]);
$viewMode = convertSpecial($reqArray["adsg_req"]["payload"]["view"]);
$action = convertSpecial($reqArray["adsg_req"]["payload"]["action"]);
$actionMode = convertSpecial($reqArray["adsg_req"]["payload"]["actionmode"]);
$usrIdsParticipants = convertSpecial($reqArray["adsg_req"]["payload"]["participants"]);
$search = convertSpecial($reqArray["adsg_req"]["payload"]["search"]);
$prefix = convertSpecial($reqArray["adsg_req"]["payload"]["prefix"]);
$fromDateRange = convertSpecial($reqArray["adsg_req"]["payload"]["fromdaterange"]);
$toDateRange = convertSpecial($reqArray["adsg_req"]["payload"]["todaterange"]);
$rpId = convertSpecial($reqArray["adsg_req"]["payload"]["rp_id"]);
$rpType = convertSpecial($reqArray["adsg_req"]["payload"]["rp_type"]);
$rpObjType = convertSpecial($reqArray["adsg_req"]["payload"]["rp_obj_type"]);
$rpObjId = convertSpecial($reqArray["adsg_req"]["payload"]["rp_obj_id"]);
$rpConfidential = convertSpecial($reqArray["adsg_req"]["payload"]["rp_confidential"]);
$rpText = convertSpecial($reqArray["adsg_req"]["payload"]["rp_text"]);
// ----------------------------------------------------------------------------------------------
$prsId = convertSpecial($reqArray["adsg_req"]["payload"]["prs_id"]);
$cntrId = convertSpecial($reqArray["adsg_req"]["payload"]["cntr_id"]); // equals $hqId !!!!
$bcId = convertSpecial($reqArray["adsg_req"]["payload"]["bc_id"]);
$bcCode = convertSpecial($reqArray["adsg_req"]["payload"]["bc_code"]);
$bcoPoints = convertSpecial($reqArray["adsg_req"]["payload"]["bco_points"]);
$bctaId = convertSpecial($reqArray["adsg_req"]["payload"]["bcta_id"]);
$bctaValue = convertSpecial($reqArray["adsg_req"]["payload"]["bcta_value"]);
$bctaPoints = convertSpecial($reqArray["adsg_req"]["payload"]["bcta_points"]);
$bctaRemark = convertSpecial($reqArray["adsg_req"]["payload"]["bcta_remark"]);
$shpId = convertSpecial($reqArray["adsg_req"]["payload"]["shp_id"]);
$shpName = convertSpecial($reqArray["adsg_req"]["payload"]["shp_name"]);
$shpBcActive = convertSpecial($reqArray["adsg_req"]["payload"]["shp_bc_active"]);
$shpBcFactor = convertSpecial($reqArray["adsg_req"]["payload"]["shp_bc_factor"]);
$shpBcTaLimit = convertSpecial($reqArray["adsg_req"]["payload"]["shp_bc_ta_limit"]);
$cpnId = convertSpecial($reqArray["adsg_req"]["payload"]["cpn_id"]);
$cpnCode = convertSpecial($reqArray["adsg_req"]["payload"]["cpn_code"]);
$gcpn_id = convertSpecial($reqArray["adsg_req"]["payload"]["gcpn_id"]);
$gcpnCode = convertSpecial($reqArray["adsg_req"]["payload"]["gcpn_code"]);
$gcpnRecipient = convertSpecial($reqArray["adsg_req"]["payload"]["gcpn_recipient"]);
$gcpnValue = convertSpecial($reqArray["adsg_req"]["payload"]["gcpn_value"]);
$gcpnImageName = convertSpecial($reqArray["adsg_req"]["payload"]["gcpn_image_name"]);
$gcpnValid = convertSpecial($reqArray["adsg_req"]["payload"]["gcpn_valid"]);
$gcpnFreetext = convertSpecial($reqArray["adsg_req"]["payload"]["gcpn_freetext"]);
$gcpnPaymentCode = convertSpecial($reqArray["adsg_req"]["payload"]["gcpn_payment_code"]);
// ----------------------------------------------------------------------------------------------
// Check for requested prefix search
$prefix = "%";
if ($prefix == "1" || trim(strtolower($prefix)) == "yes") :
$prefix = "";
endif;
// if ($serviceContext == "metafield") :
// Check setting according to the headquarters dependency
/*
$gHqId = false;
$constFormSingleHQ = getParameterValue("0", "SYSTEM_FORM_SINGLE_HQ", "0");
if ($constFormSingleHQ == "" || $constFormSingleHQ == "0") :
$gHqId = true;
endif;
*/
$gHqId = true;
$constFormSingleHQ = getParameterValue("0", "SYSTEM_FORM_SINGLE_HQ_" . $category, "0");
if ($constFormSingleHQ != "" && $constFormSingleHQ != "0") :
$gHqId = false;
else :
$constFormSingleHQ = getParameterValue("0", "SYSTEM_FORM_SINGLE_HQ", "0");
if ($constFormSingleHQ != "" && $constFormSingleHQ != "0") :
$gHqId = false;
endif;
endif;
// endif;
// if ($serviceContext == "groupware") :
// Headquarters filter
if ($f_hq_id == "") : $f_hq_id = array(); endif;
if (count($f_hq_id) == 0 && $hqId != "" && is_numeric($hqId)) : array_push($f_hq_id, $hqId); endif;
if ($selYear == "") : $selYear = date("Y"); endif;
if ($selMonth == "") : $selMonth = date("m"); endif;
if ($selWeek == "") : $selWeek = date("W"); endif;
if ($selDay == "") : $selDay = date("d"); endif;
// Check ranges of time. All fields have to be set
if ($f_hour == "" || $f_minute == "" || $f_hour_to == "" || $f_minute_to == "") :
$f_hour = "00";
$f_minute = "00";
$f_hour_to = "23";
$f_minute_to = "59";
endif;
$f_hour = pad($f_hour,2);
$f_minute = pad($f_minute,2);
$f_hour_to = pad($f_hour_to,2);
$f_minute_to = pad($f_minute_to,2);
// Time range
if ($fromTimeRange == "" && $f_hour != "" && $f_minute != "") :
$fromTimeRange = " " . $f_hour . ":" . $f_minute . ":00";
endif;
if ($toTimeRange == "" && $f_hour != "" && $f_minute != "") :
$toTimeRange = " " . $f_hour . ":" . $f_minute . ":59";
endif;
// Date range
if ($fromDateRange == "" && $f_year != "" && $f_month != "" && $f_day != "") :
$fromDateRange = $f_year . "-" . pad($f_month,2) . "-" . pad($f_day,2) . $fromTimeRange;
endif;
if ($toDateRange == "" && $f_year_to != "" && $f_month_to != "" && $f_day_to != "") :
$toDateRange = $f_year_to . "-" . pad($f_month_to,2) . "-" . pad($f_day_to,2) . $toTimeRange;
endif;
// endif;
// if ($serviceContext == "customer" || $serviceContext == "groupware") :
if ($csEid != "" && $csId == "") :
$csId = getFieldValueFromId("customer", "cs_eid", $csEid, "cs_id");
endif;
if ($csEid == "" && $csId != "") :
$csEid = getFieldValueFromId("customer", "cs_id", $csId, "cs_eid");
endif;
// endif;
// if ($serviceContext == "courier" || $serviceContext == "groupware") :
if ($crEid != "" && $crId == "") :
$crId = getFieldValueFromId("courier", "cr_eid", $crEid, "cr_id");
endif;
if ($crEid == "" && $crId != "") :
$crEid = getFieldValueFromId("courier", "cr_id", $crId, "cr_eid");
endif;
// endif;
// *************
// * GROUPWARE *
// *************
if ($serviceContext == "groupware") :
// Conversion
$execDatetime = substr($execDatetime, 0, 4) . "-" . substr($execDatetime, 4, 2) . "-" . substr($execDatetime, 6, 2) . " " . substr($execDatetime, 8, 2) . ":" . substr($execDatetime, 10, 2) . ":" . substr($execDatetime, 12, 2);
$endDatetime = substr($endDatetime, 0, 4) . "-" . substr($endDatetime, 4, 2) . "-" . substr($endDatetime, 6, 2) . " " . substr($endDatetime, 8, 2) . ":" . substr($endDatetime, 10, 2) . ":" . substr($endDatetime, 12, 2);
if (!isset($hqId) || $hqId == "") : $hqId = ""; endif; // Empty for default
$f_selUsrId = "0"; // No user selected
if ($usrId != "") :
$f_selUsrId = $usrId;
endif;
if (!isset($rpObjType) || $rpObjType == "") : $rpObjType = "cs"; endif; // "cs" default (for test)
// Mode for output if requested
if ($viewMode == "") : $viewMode = "1"; endif;
// Report
if ($rpObjType == "cs") :
// Customer of the report
if ($csEid != "" && $rpObjId == "") :
$rpObjId = getFieldValueFromId("customer", "cs_eid", $csEid, "cs_id");
endif;
if ($csEid == "" && $rpObjId != "") :
$csEid = getFieldValueFromId("customer", "cs_id", $rpObjId, "cs_eid");
endif;
elseif ($rpObjType == "cr") :
// Customer of the report
if ($crEid != "" && $rpObjId == "") :
$rpObjId = getFieldValueFromId("courier", "cr_eid", $crEid, "cr_id");
endif;
if ($crEid == "" && $rpObjId != "") :
$crEid = getFieldValueFromId("courier", "cr_id", $rpObjId, "cr_eid");
endif;
endif;
// Appointment categories
if ($apCat1 == "") : $apCat1 = "1"; endif; // State: Business (default), private
if ($apCat2 == "") : $apCat2 = "1"; endif; // Visibility: Participants, only author, everybody
if ($apCat3 == "") : $apCat3 = "1"; endif; // Kind: Misc., Meeting, reminder, ...
if ($apCat4 == "") : $apCat4 = "0"; endif; // Deadline monitoring on/off
// Participants
/*
$usrIdsParticipants = array();
if ($usrIdsParticipantsString != "") :
$usrIdsParticipants = spliti(",", $usrIdsParticipantsString);
endif;
*/
endif;
// Decode
$search = mcDecode($search);
$usrName = mcDecode($usrName);
$usrPassword = mcDecode($usrPassword);
$usrPassword2 = mcDecode($usrPassword2);
$appKey = mcDecode($appKey);
if ($objType != "" && $objId != "" && is_numeric($objId)) :
// Do nothing, it´s ok, function can be called!
elseif ($usrId != "" && is_numeric($usrId)) :
$objType = "usr";
$objId = $usrId;
elseif ($cmpId != "" && is_numeric($cmpId)) :
$objType = "cmp";
$objId = $cmpId;
else :
$objType = "";
$objId = "";
endif;
if ($whereClause != "") :
if (substr($whereClause,0,6) != "WHERE ") :
$whereClause = ""; // If empty avoid execution of function with where clause
else :
$whereClause = substr($whereClause,5); // Remove prefix "WHERE"
endif;
endif;
/*
$functionName = "appRegister";
$appKey = "AAAAAAAAAA";
$appId = "1";
*/
/*
$functionName = "login";
$moId = "6";
// $usrIdAuth = "18086";
$usrId = "18086";
$appKey = "AAAAAAAAAA";
$appId = "1";
*/
/*
$functionName = "setTimekeepingEvent";
$usrSession = "495f2fdc997fe9da827107e64218434d";
$moId = "6";
// $usrIdAuth = "18086";
$usrId = "18086";
$ttEvent = "1";
$ttTimestamp = "2014-01-01 10:00:00";
$gpsLong = "53.000001";
$gpsLat = "9.000001";
*/
// ------------------------------------------------------------------------------------------------------
// ********************
// **** XML Output ****
// ********************
$retVal = "";
$xmlOut = "";
$xmlNoErrOut .= "<err_no>0</err_no>\n<err_desc>OK</err_desc>\n";
$xmlErrOut .= "<err_no>100</err_no>\n<err_desc>Request denied.</err_desc>\n";
$xmlDosErrOut .= "<err_no>999</err_no>\n<err_desc>No sir!</err_desc>\n";
$accessBySeesionIdAndPassphrase = false;
if (checkRequestAuthenticationData2($sessionId, $passPhrase)) :
$accessBySeesionIdAndPassphrase = true;
endif;
if ($accessBySeesionIdAndPassphrase || $functionName == "appRegister" || $functionName == "webRegister" || $functionName == "login" || $functionName == "insertUser" || checkAccess($usrSession, $moId, $usrId)) :
// if ($functionName == "appRegister" || $functionName == "webRegister" || $functionName == "login" || $functionName == "insertUser" || (checkAccess($usrSession, $moId, $usrId) && accessRightsUser($moId, $usrId, $appKey, $appId))) :
if ($transactionHandle != "") :
// $xmlOut .= "<transaction_no>" . $transaction_no . "</transaction_no>\n";
endif;
$xmlOut .= "<data>\n";
if ($functionName != "") :
if (function_exists($functionName)) :
// Get requested operational database instance via metaobject for each called service functions
// global $dbname, $dblogin, $dbpassword;
$db_op_conn = "";
if ($moId != "") :
$moValue = getOperationalDatabase($moId);
if ($moValue != "") :
$db_op_conn = getDbConnectionSpecial($moValue, $dbname, $dblogin, $dbpassword);
if ($db_op_conn != "" && is_object($db_op_conn)) : $db = $db_op_conn; endif;
endif;
endif;
if (true || ($db != "" && is_object($db))) :
if ($functionName == "appRegister") :
// Check access trials
$constMaxLoginTrials = getParameterValue("0", "MAXIMUM_LOGIN_TRIALS", "0", "0");
if ($constMaxLoginTrials == "") : $constMaxLoginTrials = $constMaxLoginTrialsDefault; endif;
$loginTrials = checkClientLoginTrials();
if ($loginTrials <= $constMaxLoginTrials) :
$retVal = call_user_func_array($functionName, array($appKey, $appId)); // Register APP and get mo_id, usr_id and hq_id for response
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
updateClientLoginTrials(); // Login-trial failed! Update table "ipsecurity"
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<mo_id>" . $retVal[2] . "</mo_id>\n";
$xmlOut .= "<usr_id>" . $retVal[1] . "</usr_id>\n";
endif;
else :
$xmlOut .= $xmlDosErrOut;
endif;
elseif ($functionName == "webRegister") :
$retVal = call_user_func_array($functionName, array($cmpComp, $usrName, $usrFirstname, $usrEmail, $usrMobile, $usrAccount, $usrPassword)); // Register WEB, generate mandator
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<mo_id>" . $retVal[2] . "</mo_id>\n";
$xmlOut .= "<usr_id>" . $retVal[1] . "</usr_id>\n";
endif;
elseif ($functionName == "login") :
$retVal = call_user_func_array($functionName, array($moId, $usrId, $appKey, $appId)); // Check requested user and APP data
// Check access trials
$constMaxLoginTrials = getParameterValue("0", "MAXIMUM_LOGIN_TRIALS", "0", "0");
if ($constMaxLoginTrials == "") : $constMaxLoginTrials = $constMaxLoginTrialsDefault; endif;
$loginTrials = checkClientLoginTrials();
if ($loginTrials <= $constMaxLoginTrials) :
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
updateClientLoginTrials(); // Login-trial failed! Update table "ipsecurity"
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<session>" . $retVal[4] . "</session>\n";
$xmlOut .= "<mo_id>" . $retVal[3] . "</mo_id>\n";
$xmlOut .= "<hq_id>" . $retVal[2] . "</hq_id>\n";
$xmlOut .= "<hq_name><![CDATA[" . mcEncode($retVal[7]) . "]]></hq_name>\n";
$xmlOut .= "<hqmnemonic>" . $retVal[8] . "</hqmnemonic>\n";
$xmlOut .= "<usr_id>" . $retVal[1] . "</usr_id>\n";
$xmlOut .= "<usr_name><![CDATA[" . mcEncode($retVal[5]) . "]]></usr_name>\n";
$xmlOut .= "<usr_firstname><![CDATA[" . mcEncode($retVal[6]) . "]]></usr_firstname>\n";
endif;
else :
$xmlOut .= $xmlDosErrOut;
endif;
elseif ($functionName == "insertUser") :
$retVal = call_user_func_array($functionName, array($appId, $moId, $usrEmail, $usrMobile, $appusrStatus, $usrAccount, $usrPassword, $usrPassword2, $usrName, $usrFirstname, $adStreet, $adHsno, $adZipcode, $adCity, $adCountry, $cmpComp, $cmpComp2, $hqName, $hqMnemonic));
// Check access trials
$constMaxLoginTrials = getParameterValue("0", "MAXIMUM_LOGIN_TRIALS", "0", "0");
if ($constMaxLoginTrials == "") : $constMaxLoginTrials = $constMaxLoginTrialsDefault; endif;
$loginTrials = checkClientLoginTrials();
if ($loginTrials <= $constMaxLoginTrials) :
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
updateClientLoginTrials(); // Login-trial failed! Update table "ipsecurity"
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<mo_id>" . $retVal[2] . "</mo_id>\n";
$xmlOut .= "<usr_id>" . $retVal[1] . "</usr_id>\n";
$xmlOut .= "<app_key><![CDATA[" . mcEncode($retVal[3]) . "]]></app_key>\n";
$xmlOut .= "<appusr_status>" . $retVal[4] . "</appusr_status>\n";
endif;
else :
$xmlOut .= $xmlDosErrOut;
endif;
elseif ($functionName == "getUser") :
$retVal = call_user_func_array($functionName, array($appId, $moId, $usrId));
// Check access trials
$constMaxLoginTrials = getParameterValue("0", "MAXIMUM_LOGIN_TRIALS", "0", "0");
// if ($constMaxLoginTrials == "") : $constMaxLoginTrials = $constMaxLoginTrialsDefault; endif;
// $loginTrials = checkClientLoginTrials();
// if ($loginTrials <= $constMaxLoginTrials) :
$retVal = call_user_func_array($functionName, array($appKey, $appId)); // Register APP and get mo_id, usr_id and hq_id for response
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
updateClientLoginTrials(); // Login-trial failed! Update table "ipsecurity"
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<mo_id>" . $retVal[2] . "</mo_id>\n";
$xmlOut .= "<usr_id>" . $retVal[1] . "</usr_id>\n";
$xmlOut .= "<app_key><![CDATA[" . mcEncode($retVal[3]) . "]]></app_key>\n";
$xmlOut .= "<appusr_status>" . $retVal[4] . "</appusr_status>\n";
endif;
// else :
// $xmlOut .= $xmlDosErrOut;
// endif;
// *****************
// * TIME TRACKING *
// *****************
elseif ($functionName == "setTimekeepingEvent" || $functionName == "setTimetrackingEvent") :
$retVal = call_user_func_array($functionName, array($moId, $usrId, $ttEvent, $ttTimestamp, $gpsLong, $gpsLat, "", $cscId)); // Set timetracking event
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
// $xmlOut .= "<session>" . $retVal[4] . "</session>\n";
endif;
elseif ($functionName == "getLastTimetrackingEvent") :
$retVal = call_user_func_array($functionName, array($moId, $usrId)); // Get last timetracking event
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<tt_datetime>" . $retVal[1] . "</tt_datetime>\n";
$xmlOut .= "<tt_event>" . $retVal[2] . "</tt_event>\n";
$xmlOut .= "<csc_id>" . $retVal[5] . "</csc_id>\n";
$xmlOut .= "<gps_long>" . $retVal[3] . "</gps_long>\n";
$xmlOut .= "<gps_lat>" . $retVal[4] . "</gps_lat>\n";
$xmlOut .= "<description><![CDATA[" . mcEncode($retVal[5]) . "]]></description>\n";
endif;
// *************
// * GROUPWARE *
// *************
elseif ($functionName == "getApEnvironment") :
if ($retVal[0] != "0") :
$xmlOut .= $xmlNoErrOut;
// Appointment categories
for ($j = 1; $j <= 4; $j++) :
$tmpApCatArray = getColVectorFromDB2ArrayByClause("metatype", "mt_value", "mt_type = 'appointment_category_" . $j . "'", "mt_sort", "mt_sort");
$tmpKeysArray = array_keys($tmpApCatArray);
$tmpKeysArrayLen = count($tmpKeysArray);
$xmlOut .= "<apcat" . $j . "_list>\n";
for ($i = 0; $i < $tmpKeysArrayLen; $i++) :
$xmlOut .= "<apcat" . $j . " id=\"" . $tmpKeysArray[$i] . "\">\n";
$xmlOut .= " <name><![CDATA[" . mcEncode($tmpApCatArray[$tmpKeysArray[$i]]) . "]]></name>\n";
$xmlOut .= "</apcat" . $j . ">\n";
endfor;
$xmlOut .= "</apcat" . $j . "_list>\n";
endfor;
// Participants
if ($hqId != "") :
$sqlquery = "SELECT usr_id, usr_firstname, usr_name FROM user WHERE usr_type = '1' AND hq_id = '" . $hqId . "'";
$result = $db->query($sqlquery);
if (DB::isError($result)) die ("$PHP_SELF: [$sqlquery]" . $result->getMessage());
$xmlOut .= "<possible_participants_list>\n";
while ($row = $result->fetch_assoc()):
$xmlOut .= "<possible_participant id=\"" . $row["usr_id"] . "\">\n";
$xmlOut .= " <usr_firstname><![CDATA[" . mcEncode($row["usr_firstname"]) . "]]></usr_firstname>\n";
$xmlOut .= " <usr_name><![CDATA[" . mcEncode($row["usr_name"]) . "]]></usr_name>\n";
$xmlOut .= "</possible_participant>\n";
endwhile;
$result->free();
$xmlOut .= "</possible_participants_list>\n";
endif;
// Report types
$tmpApCatArray = getColVectorFromDB2ArrayByClause("metatype", "mt_value", "mt_type = 'report_type'", "mt_sort", "mt_sort");
$tmpKeysArray = array_keys($tmpApCatArray);
$tmpKeysArrayLen = count($tmpKeysArray);
$xmlOut .= "<reporttype_list>\n";
for ($i = 0; $i < $tmpKeysArrayLen; $i++) :
$xmlOut .= "<reporttype id=\"" . $tmpKeysArray[$i] . "\">\n";
$xmlOut .= " <name><![CDATA[" . mcEncode($tmpApCatArray[$tmpKeysArray[$i]]) . "]]></name>\n";
$xmlOut .= "</reporttype>\n";
endfor;
$xmlOut .= "</reporttype_list>\n";
endif;
elseif ($functionName == "calLastWeekNumofYear") :
$retVal = call_user_func_array($functionName, array($selYear)); // Gets the last calendar week (number) of a specified year
$xmlOut .= " <val><![CDATA[" . mcEncode($retVal) . "]]></val>\n";
elseif ($functionName == "calFirstWeekNumofMonth") :
$retVal = call_user_func_array($functionName, array($selMonth, $selYear)); // Gets the first calendar week (number) of a specified month and year (calendar week of the 01.01.YYYY)
$xmlOut .= " <val><![CDATA[" . mcEncode($retVal) . "]]></val>\n";
elseif ($functionName == "calFirstDayNumOfMonth") :
$retVal = call_user_func_array($functionName, array($selMonth, $selYear)); // Gets the first day (number) of a specified month and year
$xmlOut .= " <val><![CDATA[" . mcEncode($retVal) . "]]></val>\n";
elseif ($functionName == "calFirstDayNumOfFirstCalendarWeekOfYear") :
$retVal = call_user_func_array($functionName, array($selYear)); // Gets the first day (number) of the first calendar week of a specified year, it has to be a "Monday"
$xmlOut .= " <val><![CDATA[" . mcEncode($retVal) . "]]></val>\n";
elseif ($functionName == "calFirstDayNumOfWeek") :
$retVal = call_user_func_array($functionName, array($selWeek, $selYear)); // Gets the first day (number) of a specified calendar week and year
$xmlOut .= " <val><![CDATA[" . mcEncode($retVal) . "]]></val>\n";
elseif ($functionName == "getDaysWithAppointments") :
$retVal = call_user_func_array($functionName, array($selYear, $selMonth)); // Gets an array with days of a specified month (and year), where there is at least one appointment per day
$xmlOut .= " <val><![CDATA[" . mcEncode($retVal) . "]]></val>\n";
elseif ($functionName == "modifyIntervalAppointments2SingleDayAppointments") :
$retVal = call_user_func_array($functionName, array($apArray, $lowerRangeDate, $upperRangeDate)); // Modifies array according to the appointments starting and ending on different days
$xmlOut .= " <val><![CDATA[" . mcEncode($retVal) . "]]></val>\n";
elseif ($functionName == "getAppointmentsOfOneDay" || $functionName == "getAppointmentsOfOneWeek" || $functionName == "getAppointmentsOfOneMonth" || $functionName == "getAppointmentsOfOneYear") :
if ($functionName == "getAppointmentsOfOneDay") :
$retVal = call_user_func_array($functionName, array($selYear, $selMonth, $selDay, $csId)); // Gets the appointments of one day
elseif ($functionName == "getAppointmentsOfOneWeek") :
$retVal = call_user_func_array($functionName, array($selWeek, $selYear, $selMonth, $selDay, $csId)); // Gets the appointments of one week
elseif ($functionName == "getAppointmentsOfOneMonth") :
$retVal = call_user_func_array($functionName, array($selYear, $selMonth, $csId)); // Gets the appointments of one month
elseif ($functionName == "getAppointmentsOfOneYear") :
$retVal = call_user_func_array($functionName, array($selYear, $csId)); // Gets the appointments of one year
endif;
$retValLen = count($retVal);
if ($retValLen > 0) :
$xmlOut .= "<appointment_list id=\"APL\">\n";
$xmlOut .= "<yeardata>\n";
$tmpRemYear = ""; $tmpRemMonth = ""; $tmpRemDay = "";
$tmpApNewYearBool = false; $tmpApNewMonthBool = false; $tmpApNewDayBool = false;
for ($i = 0; $i < $retValLen; $i++) :
$tmpApYear = substr($retVal[$i][2],0,4);
$tmpApMonth = substr($retVal[$i][2],5,2);
$tmpApDay = substr($retVal[$i][2],8,2);
// Closing TAGs
if ($tmpRemDay != "" && $tmpRemDay != $tmpApDay) :
$xmlOut .= "</appointments>\n";
$xmlOut .= "</daydata>\n";
endif;
if ($tmpRemMonth != "" && $tmpRemMonth != $tmpApMonth) :
$xmlOut .= "</days>\n";
$xmlOut .= "</monthdata>\n";
endif;
// if ($tmpRemYear != "" && $tmpRemYear != $tmpApYear) :
// ...
// endif;
// Opening TAGs
if ($tmpRemYear == "" || $tmpRemYear != $tmpApYear) :
$tmpRemYear = $tmpApYear;
$xmlOut .= "<year>" . $tmpApYear . "</year>\n";
endif;
if ($tmpRemMonth == "" || $tmpRemMonth != $tmpApMonth) :
$tmpRemMonth = $tmpApMonth;
$tmpApNewMonthBool = true;
$xmlOut .= "<monthdata>\n";
$xmlOut .= "<month>" . $tmpApMonth . "</month>\n";
$xmlOut .= "<days>\n";
endif;
if ($tmpRemDay == "" || $tmpRemDay != $tmpApDay) :
$tmpRemDay = $tmpApDay;
$tmpApNewDayBool = true;
$xmlOut .= "<daydata>\n";
$xmlOut .= "<day>" . $tmpApDay . "</day>\n";
$xmlOut .= "<appointments>\n";
endif;
// $xmlOut .= "<appointment id=\"" . $retVal[$i][0] . "\">\n";
$xmlOut .= "<appointment>\n";
$xmlOut .= "<ap_id>" . $retVal[$i][0] . "</ap_id>\n";
$xmlOut .= "<ap_text><![CDATA[" . mcEncode($retVal[$i][1]) . "]]></ap_text>\n";
$xmlOut .= "<ap_execdate>" . $retVal[$i][2] . "</ap_execdate>\n";
$xmlOut .= "<cmp_id>" . $retVal[$i][3] . "</cmp_id>\n";
$xmlOut .= "<cmp_comp><![CDATA[" . mcEncode($retVal[$i][4]) . "]]></cmp_comp>\n";
$xmlOut .= "<cmp_comp2><![CDATA[" . mcEncode($retVal[$i][5]) . "]]></cmp_comp2>\n";
$xmlOut .= "<cs_eid>" . $retVal[$i][7] . "</cs_eid>\n";
$xmlOut .= "<ap_enddate>" . $retVal[$i][8] . "</ap_enddate>\n";
$xmlOut .= "<usr_id>" . $retVal[$i][9] . "</usr_id>\n";
$xmlOut .= "<usr_firstname><![CDATA[" . mcEncode($retVal[$i][10]) . "]]></usr_firstname>\n";
$xmlOut .= "<usr_name><![CDATA[" . mcEncode($retVal[$i][11]) . "]]></usr_name>\n";
if (false) :
$xmlOut .= "<ap_participants>" . $retVal[$i][12] . "</ap_participants>\n";
else :
$tmpParticipantsIDs = $retVal[$i][12];
// Remove commas at the beginning and at the end if do exist
if (substr($tmpParticipantsIDs, 0, 1) == ",") : $tmpParticipantsIDs = substr($tmpParticipantsIDs, 1); endif;
if (substr($tmpParticipantsIDs, -1) == ",") : $tmpParticipantsIDs = substr($tmpParticipantsIDs, 0, strlen($tmpParticipantsIDs)-1); endif;
$xmlOut .= "<ap_participants>\n";
if ($tmpParticipantsIDs != "") :
$tmpParticipantsArray = spliti(",", $tmpParticipantsIDs);
$tmpParticipantsArrayLen = count($tmpParticipantsArray);
for ($j = 0; $j < $tmpParticipantsArrayLen; $j++) :
$usrRealName = getFieldValueFromId("user", "usr_id", $tmpParticipantsArray[$j], "usr_name");
$usrRealFirstname = getFieldValueFromId("user", "usr_id", $tmpParticipantsArray[$j], "usr_firstname");
$xmlOut .= "<ap_participant id=\"" . $tmpParticipantsArray[$j] . "\">\n";
$xmlOut .= " <name><![CDATA[" . mcEncode($usrRealName) . "]]></name>\n";
$xmlOut .= " <firstname><![CDATA[" . mcEncode($usrRealFirstname) . "]]></firstname>\n";
$xmlOut .= "</ap_participant>\n";
endfor;
endif;
$xmlOut .= "</ap_participants>\n";
endif;
$xmlOut .= "<ap_confirmed>" . $retVal[$i][13] . "</ap_confirmed>\n";
$xmlOut .= "<cs_usr_name><![CDATA[" . mcEncode($retVal[$i][14]) . "]]></cs_usr_name>\n";
$xmlOut .= "<cs_usr_firstname><![CDATA[" . mcEncode($retVal[$i][15]) . "]]></cs_usr_firstname>\n";
$xmlOut .= "<cs_usr_phone>" . $retVal[$i][16] . "</cs_usr_phone>\n";
$xmlOut .= "<cs_usr_phone2>" . $retVal[$i][17] . "</cs_usr_phone2>\n";
$xmlOut .= "<ap_category_1>" . $retVal[$i][18] . "</ap_category_1>\n";
$xmlOut .= "<ap_category_2>" . $retVal[$i][19] . "</ap_category_2>\n";
$xmlOut .= "<ap_category_3>" . $retVal[$i][20] . "</ap_category_3>\n";
$xmlOut .= "<ap_category_4>" . $retVal[$i][21] . "</ap_category_4>\n";
$xmlOut .= "</appointment>\n";
endfor;
// Final closing TAGs
if ($tmpApNewDayBool) :
$xmlOut .= "</appointments>\n";
$xmlOut .= "</daydata>\n";
endif;
if ($tmpApNewMonthBool) :
$xmlOut .= "</days>\n";
$xmlOut .= "</monthdata>\n";
endif;
$xmlOut .= "</yeardata>\n";
$xmlOut .= "</appointment_list>\n";
endif;
elseif ($functionName == "getAppointmentHeader") :
$retVal = call_user_func_array($functionName, array($viewMode, $selYear, $selMonth, $selDay, $selWeek)); // Gets the headline with the current day
$xmlOut .= $xmlErrOut;
elseif ($functionName == "getAppointmentTitle") :
$retVal = call_user_func_array($functionName, array($viewMode)); // Gets the title of the output table
$xmlOut .= $xmlErrOut;
elseif ($functionName == "actionAppointment") :
$retVal = call_user_func_array($functionName, array($action, $apId, $apText, $execDatetime, $endDatetime, $hqId, $usrId, $csId, $usrIdsParticipants, $apCat1, $apCat2, $apCat3, $apCat4)); // DB actions for an appointment
$xmlOut .= "<appointments>\n";
$xmlOut .= "<appointment>\n";
$xmlOut .= "<action>" . $action . "</action>\n";
$xmlOut .= "<ap_id>" . $retVal . "</ap_id>\n";
$xmlOut .= "</appointment>\n";
$xmlOut .= "</appointments>\n";
// ******************
// * METAFIELD DATA *
// ******************
elseif ($functionName == "getContactList" || $functionName == "getContactListOfObject") :
$retVal = call_user_func_array($functionName, array($search, $category, $prefix, $objType, $objId)); // Gets the contact list
$retValLen = count($retVal);
if (!is_array($retVal[0])) :
$xmlOut .= $retVal[1] . $retVal[2];
else :
if ($retValLen > 1) :
$xmlOut .= "<contact_header>\n";
$itemLen = count($retVal[0]);
for ($j = 0; $j < $itemLen; $j++) :
$xmlOut .= " <label_" . $j . "><![CDATA[" . mcEncode($retVal[0][$j]) . "]]></label_" . $j . ">\n";
endfor;
$xmlOut .= "</contact_header>\n";
$xmlOut .= "<contact_list>\n";
for ($i = 1; $i < $retValLen; $i++) :
$xmlOut .= "<contact>\n";
$itemLen = count($retVal[$i]);
for ($j = 0; $j < $itemLen; $j++) :
$xmlOut .= " <value_" . $j . "><![CDATA[" . mcEncode($retVal[$i][$j]) . "]]></value_" . $j . ">\n";
endfor;
$xmlOut .= "</contact>\n";
endfor;
$xmlOut .= "</contact_list>\n";
endif;
endif;
// *****************
// * DB TABLE DATA *
// *****************
elseif ($functionName == "getHeadquartersList") :
$retVal = call_user_func_array($functionName, array()); // Gets the headquarters list
$retValLen = count($retVal);
if (!is_array($retVal[0])) :
$xmlOut .= $retVal[1] . $retVal[2];
else :
if ($retValLen > 1) :
/*
$xmlOut .= "<headquarters_header>\n";
$itemLen = count($retVal[0]);
for ($j = 0; $j < $itemLen; $j++) :
$xmlOut .= " <label_" . $j . "><![CDATA[" . $retVal[0][$j] . "]]></label_" . $j . ">\n";
endfor;
$xmlOut .= "</headquarters_header>\n";
*/
$xmlOut .= "<headquarters_list>\n";
for ($i = 1; $i < $retValLen; $i++) :
$xmlOut .= "<headquarters>\n";
$itemLen = count($retVal[$i]);
$xmlOut .= " <hq_id><![CDATA[" . $retVal[$i]["hq_id"] . "]]></hq_id>\n";
$xmlOut .= " <hq_mnemonic><![CDATA[" . mcEncode($retVal[$i]["hq_mnemonic"]) . "]]></hq_mnemonic>\n";
$xmlOut .= " <hq_name><![CDATA[" . mcEncode($retVal[$i]["hq_name"]) . "]]></hq_name>\n";
$xmlOut .= "</headquarters>\n";
endfor;
$xmlOut .= "</headquarters_list>\n";
endif;
endif;
// ************
// * CUSTOMER *
// ************
elseif ($functionName == "getCustomerList") :
$retVal = call_user_func_array($functionName, array($search)); // Gets the customer list
$retValLen = count($retVal);
if (!is_array($retVal[0]) && $retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
// if ($retValLen > 0) :
$xmlOut .= "<customer_list>\n";
for ($i = 0; $i < $retValLen; $i++) :
// $xmlOut .= "<customer id=\"" . $retVal[$i][0] . "\">\n";
$xmlOut .= "<customer>\n";
$xmlOut .= " <cs_id>" . $retVal[$i][0] . "</cs_id>\n";
$xmlOut .= " <cs_eid>" . $retVal[$i][2] . "</cs_eid>\n";
$xmlOut .= " <cmp_type>" . $retVal[$i][1] . "</cmp_type>\n";
$xmlOut .= " <cmp_comp><![CDATA[" . mcEncode($retVal[$i][3]) . "]]></cmp_comp>\n";
$xmlOut .= " <cmp_comp2><![CDATA[" . mcEncode($retVal[$i][4]) . "]]></cmp_comp2>\n";
// $xmlOut .= " <cmp_comp3><![CDATA[" . mcEncode($retVal[$i][13]) . "]]></cmp_comp3>\n";
// $xmlOut .= " <cmp_comp4><![CDATA[" . mcEncode($retVal[$i][14]) . "]]></cmp_comp4>\n";
$xmlOut .= " <usr_name><![CDATA[" . mcEncode($retVal[$i][5]) . "]]></usr_name>\n";
$xmlOut .= " <usr_firstname><![CDATA[" . mcEncode($retVal[$i][6]) . "]]></usr_firstname>\n";
$xmlOut .= " <usr_phone>" . $retVal[$i][7] . "</usr_phone>\n";
$xmlOut .= " <usr_phone2>" . $retVal[$i][8] . "</usr_phone2>\n";
// $xmlOut .= " <ad_street><![CDATA[" . mcEncode($retVal[$i][9]) . "]]></ad_street>\n";
// $xmlOut .= " <ad_houseno>" . $retVal[$i][10] . "</ad_houseno>\n";
// $xmlOut .= " <ad_zipcode>" . $retVal[$i][11] . "</ad_zipcode>\n";
// $xmlOut .= " <ad_city><![CDATA[" . mcEncode($retVal[$i][12]) . "]]></ad_city>\n";
$xmlOut .= "</customer>\n";
endfor;
$xmlOut .= "</customer_list>\n";
// endif;
endif;
elseif ($functionName == "getCustomerSpecial") :
$retVal = call_user_func_array($functionName, array($csId)); // Gets a single customer
$retValLen = count($retVal);
if (!is_array($retVal[0]) && $retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
// if ($retValLen > 0) :
$xmlOut .= "<customer_special>\n";
for ($i = 0; $i < $retValLen; $i++) :
// $xmlOut .= "<customer id=\"" . $retVal[$i][0] . "\">\n";
$xmlOut .= "<customer>\n";
$xmlOut .= " <cs_id>" . $retVal[$i][0] . "</cs_id>\n";
$xmlOut .= " <cs_eid>" . $retVal[$i][2] . "</cs_eid>\n";
$xmlOut .= " <cmp_type>" . $retVal[$i][1] . "</cmp_type>\n";
$xmlOut .= " <cmp_comp><![CDATA[" . mcEncode($retVal[$i][3]) . "]]></cmp_comp>\n";
$xmlOut .= " <cmp_comp2><![CDATA[" . mcEncode($retVal[$i][4]) . "]]></cmp_comp2>\n";
$xmlOut .= " <cmp_comp3><![CDATA[" . mcEncode($retVal[$i][13]) . "]]></cmp_comp3>\n";
$xmlOut .= " <cmp_comp4><![CDATA[" . mcEncode($retVal[$i][14]) . "]]></cmp_comp4>\n";
$xmlOut .= " <usr_name><![CDATA[" . mcEncode($retVal[$i][5]) . "]]></usr_name>\n";
$xmlOut .= " <usr_firstname><![CDATA[" . mcEncode($retVal[$i][6]) . "]]></usr_firstname>\n";
$xmlOut .= " <usr_phone>" . $retVal[$i][7] . "</usr_phone>\n";
$xmlOut .= " <usr_phone2>" . $retVal[$i][8] . "</usr_phone2>\n";
$xmlOut .= " <ad_street><![CDATA[" . mcEncode($retVal[$i][9]) . "]]></ad_street>\n";
$xmlOut .= " <ad_houseno>" . $retVal[$i][10] . "</ad_houseno>\n";
$xmlOut .= " <ad_zipcode>" . $retVal[$i][11] . "</ad_zipcode>\n";
$xmlOut .= " <ad_city><![CDATA[" . mcEncode($retVal[$i][12]) . "]]></ad_city>\n";
$xmlOut .= "</customer>\n";
endfor;
$xmlOut .= "</customer_special>\n";
// endif;
endif;
elseif ($functionName == "getCostcenterListOfCustomer") :
$retVal = call_user_func_array($functionName, array($csId)); // Gets the costcenter list of a special customer
$retValLen = count($retVal);
if (!is_array($retVal[0]) && $retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
// if ($retValLen > 0) :
$xmlOut .= "<costcenter_list>\n";
for ($i = 0; $i < $retValLen; $i++) :
// $xmlOut .= "<customer id=\"" . $retVal[$i][0] . "\">\n";
$xmlOut .= "<costcenter>\n";
$xmlOut .= " <csc_id>" . $retVal[$i][0] . "</csc_id>\n";
$xmlOut .= " <cs_id>" . $retVal[$i][1] . "</cs_id>\n";
$xmlOut .= " <cs_eid>" . $retVal[$i][5] . "</cs_eid>\n";
$xmlOut .= " <csc_name><![CDATA[" . mcEncode($retVal[$i][2]) . "]]></csc_name>\n";
$xmlOut .= " <csc_pre_id>" . $retVal[$i][3] . "</csc_pre_id>\n";
$xmlOut .= " <hq_id>" . $retVal[$i][4] . "</hq_id>\n";
$xmlOut .= "</costcenter>\n";
endfor;
$xmlOut .= "</costcenter_list>\n";
// endif;
endif;
elseif ($functionName == "getCostcenterAddressList") :
$retVal = call_user_func_array($functionName, array($cscId)); // Gets the costcenter list of a special customer
$retValLen = count($retVal);
if (!is_array($retVal[0]) && $retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
// if ($retValLen > 0) :
$xmlOut .= "<costcenteraddress_list>\n";
for ($i = 0; $i < $retValLen; $i++) :
$xmlOut .= "<costcenteraddress>\n";
$xmlOut .= " <csc_id>" . $retVal[$i][0] . "</csc_id>\n";
$xmlOut .= " <cscad_comp>" . $retVal[$i][1] . "</cscad_comp>\n";
$xmlOut .= " <cscad_comp2>" . $retVal[$i][2] . "</cscad_comp2>\n";
$xmlOut .= " <cscad_comp3>" . $retVal[$i][3] . "</cscad_comp3>\n";
$xmlOut .= " <cscad_comp4>" . $retVal[$i][4] . "</cscad_comp4>\n";
// $xmlOut .= " <ad_id>" . $retVal[$i][5] . "</ad_id>\n";
$xmlOut .= " <adt_id>" . $retVal[$i][6] . "</adt_id>\n";
$xmlOut .= " <ad_street><![CDATA[" . mcEncode($retVal[$i][7]) . "]]></ad_street>\n";
$xmlOut .= " <cscad_hsno><![CDATA[" . mcEncode($retVal[$i][8]) . "]]></cscad_hsno>\n";
$xmlOut .= " <ad_zipcode><![CDATA[" . mcEncode($retVal[$i][9]) . "]]></ad_zipcode>\n";
$xmlOut .= " <ad_city><![CDATA[" . mcEncode($retVal[$i][10]) . "]]></ad_city>\n";
$xmlOut .= " <cscad_floor><![CDATA[" . mcEncode($retVal[$i][11]) . "]]></cscad_floor>\n";
$xmlOut .= " <cscad_remark><![CDATA[" . mcEncode($retVal[$i][12]) . "]]></cscad_remark>\n";
$xmlOut .= " <cscad_person><![CDATA[" . mcEncode($retVal[$i][13]) . "]]></cscad_person>\n";
$xmlOut .= " <cscad_phone><![CDATA[" . mcEncode($retVal[$i][14]) . "]]></cscad_phone>\n";
$xmlOut .= " <cscad_email><![CDATA[" . mcEncode($retVal[$i][15]) . "]]></cscad_email>\n";
$xmlOut .= "</costcenteraddress>\n";
endfor;
$xmlOut .= "</costcenteraddress_list>\n";
// endif;
endif;
// ***********
// * REPORTS *
// ***********
elseif ($functionName == "getReportList") :
$retVal = call_user_func_array($functionName, array($fromDateRange, $toDateRange, $rpObjType, $rpObjId, $rpType)); // Gets the report list
$retValLen = count($retVal);
if (!is_array($retVal[0]) && $retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
// if ($retValLen > 0) :
$xmlOut .= "<report_list>\n";
for ($i = 0; $i < $retValLen; $i++) :
// $xmlOut .= "<report id=\"" . $retVal[$i][0] . "\">\n";
$xmlOut .= "<report>\n";
$xmlOut .= " <id>" . $retVal[$i][0] . "</id>\n";
$xmlOut .= " <type>" . $retVal[$i][1] . "</type>\n";
$xmlOut .= " <text><![CDATA[" . mcEncode($retVal[$i][2]) . "]]></text>\n";
$xmlOut .= " <confidential>" . $retVal[$i][3] . "</confidential>\n";
$xmlOut .= " <createtime>" . $retVal[$i][4] . "</createtime>\n";
$xmlOut .= " <usrid>" . $retVal[$i][5] . "</usrid>\n";
$xmlOut .= " <usr_id>" . $retVal[$i][5] . "</usr_id>\n";
$xmlOut .= " <name><![CDATA[" . mcEncode($retVal[$i][6]) . "]]></name>\n";
$xmlOut .= " <firstname><![CDATA[" . mcEncode($retVal[$i][7]) . "]]></firstname>\n";
$xmlOut .= " <phone>" . $retVal[$i][8] . "</phone>\n";
$xmlOut .= " <eid>" . $retVal[$i][9] . "</eid>\n";
$xmlOut .= " <comp><![CDATA[" . mcEncode($retVal[$i][10]) . "]]></comp>\n";
$xmlOut .= " <comp2><![CDATA[" . mcEncode($retVal[$i][11]) . "]]></comp2>\n";
$xmlOut .= " <hq_id>" . $retVal[$i][12] . "</hq_id>\n";
$xmlOut .= " <hq_name><![CDATA[" . mcEncode($retVal[$i][13]) . "]]></hq_name>\n";
$xmlOut .= "</report>\n";
endfor;
$xmlOut .= "</report_list>\n";
// endif;
endif;
elseif ($functionName == "getReport") :
$retVal = call_user_func_array($functionName, array($rpId, $rpObjType)); // Gets the single report
$retValLen = count($retVal);
if (!is_array($retVal[0]) && $retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
// if ($retValLen > 0) :
// $xmlOut .= "<report_list>\n";
for ($i = 0; $i < $retValLen; $i++) :
// $xmlOut .= "<report id=\"" . $retVal[$i][0] . "\">\n";
$xmlOut .= "<report>\n";
$xmlOut .= " <id>" . $retVal[$i][0] . "</id>\n";
$xmlOut .= " <type>" . $retVal[$i][1] . "</type>\n";
$xmlOut .= " <text><![CDATA[" . mcEncode($retVal[$i][2]) . "]]></text>\n";
$xmlOut .= " <confidential>" . $retVal[$i][3] . "</confidential>\n";
$xmlOut .= " <createtime>" . $retVal[$i][4] . "</createtime>\n";
$xmlOut .= " <usrid>" . $retVal[$i][5] . "</usrid>\n";
$xmlOut .= " <usr_id>" . $retVal[$i][5] . "</usr_id>\n";
$xmlOut .= " <name><![CDATA[" . mcEncode($retVal[$i][6]) . "]]></name>\n";
$xmlOut .= " <firstname><![CDATA[" . mcEncode($retVal[$i][7]) . "]]></firstname>\n";
$xmlOut .= " <phone>" . $retVal[$i][8] . "</phone>\n";
$xmlOut .= " <eid>" . $retVal[$i][9] . "</eid>\n";
$xmlOut .= " <comp><![CDATA[" . mcEncode($retVal[$i][10]) . "]]></comp>\n";
$xmlOut .= " <comp2><![CDATA[" . mcEncode($retVal[$i][11]) . "]]></comp2>\n";
$xmlOut .= " <hq_id>" . $retVal[$i][12] . "</hq_id>\n";
$xmlOut .= " <hq_name><![CDATA[" . mcEncode($retVal[$i][13]) . "]]></hq_name>\n";
$xmlOut .= "</report>\n";
endfor;
// $xmlOut .= "</report_list>\n";
// endif;
endif;
elseif ($functionName == "actionReport") :
$retVal = call_user_func_array($functionName, array($action, $rpId, $rpType, $rpObjType, $rpObjId, $rpText, $rpConfidential, $hqId, $usrId)); // DB actions for a report
$retValLen = count($retVal);
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= "<reports>\n";
$xmlOut .= "<report>\n";
$xmlOut .= "<action>" . $action . "</action>\n";
$xmlOut .= "<rp_id>" . $retVal[1] . "</rp_id>\n";
// $xmlOut .= "<state>" . $retVal . "</state>\n";
$xmlOut .= "</report>\n";
$xmlOut .= "</reports>\n";
endif;
elseif ($functionName == "getCsStatistic") :
$retVal = call_user_func_array($functionName, array($csId, $fromDateRange, $toDateRange)); // Special customer statistic: Business volume
$xmlOut .= "<customer_statistic>\n";
$xmlOut .= "<cs_id>" . $csId . "</cs_id>\n";
$xmlOut .= "<cs_eid>" . $csEid . "</cs_eid>\n";
$xmlOut .= "<statistic_value>" . $retVal . "</statistic_value>\n";
$xmlOut .= "</customer_statistic>\n";
// ************
// * COURIERS *
// ************
elseif ($functionName == "getCourierList") :
$retVal = call_user_func_array($functionName, array($search)); // Gets the customer list
$retValLen = count($retVal);
if (!is_array($retVal[0]) && $retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
// if ($retValLen > 0) :
$xmlOut .= "<courier_list>\n";
for ($i = 0; $i < $retValLen; $i++) :
// $xmlOut .= "<courier id=\"" . $retVal[$i][0] . "\">\n";
$xmlOut .= "<courier>\n";
$xmlOut .= " <cr_id>" . $retVal[$i][0] . "</cr_id>\n";
$xmlOut .= " <cr_eid>" . $retVal[$i][2] . "</cr_eid>\n";
$xmlOut .= " <cmp_type>" . $retVal[$i][1] . "</cmp_type>\n";
$xmlOut .= " <cmp_comp><![CDATA[" . mcEncode($retVal[$i][3]) . "]]></cmp_comp>\n";
$xmlOut .= " <cmp_comp2><![CDATA[" . mcEncode($retVal[$i][4]) . "]]></cmp_comp2>\n";
// $xmlOut .= " <cmp_comp3><![CDATA[" . mcEncode($retVal[$i][13]) . "]]></cmp_comp3>\n";
// $xmlOut .= " <cmp_comp4><![CDATA[" . mcEncode($retVal[$i][14]) . "]]></cmp_comp4>\n";
$xmlOut .= " <usr_name><![CDATA[" . mcEncode($retVal[$i][5]) . "]]></usr_name>\n";
$xmlOut .= " <usr_firstname><![CDATA[" . mcEncode($retVal[$i][6]) . "]]></usr_firstname>\n";
$xmlOut .= " <usr_phone>" . $retVal[$i][7] . "</usr_phone>\n";
$xmlOut .= " <usr_phone2>" . $retVal[$i][8] . "</usr_phone2>\n";
// $xmlOut .= " <ad_street><![CDATA[" . mcEncode($retVal[$i][9]) . "]]></ad_street>\n";
// $xmlOut .= " <ad_houseno>" . $retVal[$i][10] . "</ad_houseno>\n";
// $xmlOut .= " <ad_zipcode>" . $retVal[$i][11] . "</ad_zipcode>\n";
// $xmlOut .= " <ad_city><![CDATA[" . mcEncode($retVal[$i][12]) . "]]></ad_city>\n";
$xmlOut .= "</courier>\n";
endfor;
$xmlOut .= "</courier_list>\n";
// endif;
endif;
elseif ($functionName == "getCourierSpecial") :
$retVal = call_user_func_array($functionName, array($crId)); // Gets a single courier
$retValLen = count($retVal);
if (!is_array($retVal[0]) && $retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
// if ($retValLen > 0) :
$xmlOut .= "<courier_special>\n";
for ($i = 0; $i < $retValLen; $i++) :
// $xmlOut .= "<courier id=\"" . $retVal[$i][0] . "\">\n";
$xmlOut .= "<courier>\n";
$xmlOut .= " <cr_id>" . $retVal[$i][0] . "</cr_id>\n";
$xmlOut .= " <cr_eid>" . $retVal[$i][2] . "</cr_eid>\n";
$xmlOut .= " <cmp_type>" . $retVal[$i][1] . "</cmp_type>\n";
$xmlOut .= " <cmp_comp><![CDATA[" . mcEncode($retVal[$i][3]) . "]]></cmp_comp>\n";
$xmlOut .= " <cmp_comp2><![CDATA[" . mcEncode($retVal[$i][4]) . "]]></cmp_comp2>\n";
$xmlOut .= " <cmp_comp3><![CDATA[" . mcEncode($retVal[$i][13]) . "]]></cmp_comp3>\n";
$xmlOut .= " <cmp_comp4><![CDATA[" . mcEncode($retVal[$i][14]) . "]]></cmp_comp4>\n";
$xmlOut .= " <usr_name><![CDATA[" . mcEncode($retVal[$i][5]) . "]]></usr_name>\n";
$xmlOut .= " <usr_firstname><![CDATA[" . mcEncode($retVal[$i][6]) . "]]></usr_firstname>\n";
$xmlOut .= " <usr_phone>" . $retVal[$i][7] . "</usr_phone>\n";
$xmlOut .= " <usr_phone2>" . $retVal[$i][8] . "</usr_phone2>\n";
$xmlOut .= " <ad_street><![CDATA[" . mcEncode($retVal[$i][9]) . "]]></ad_street>\n";
$xmlOut .= " <ad_houseno>" . $retVal[$i][10] . "</ad_houseno>\n";
$xmlOut .= " <ad_zipcode>" . $retVal[$i][11] . "</ad_zipcode>\n";
$xmlOut .= " <ad_city><![CDATA[" . mcEncode($retVal[$i][12]) . "]]></ad_city>\n";
$xmlOut .= "</courier>\n";
endfor;
$xmlOut .= "</courier_special>\n";
// endif;
endif;
// *******************
// * COURIERVEHICLES *
// *******************
elseif ($functionName == "getVehicleList") :
$searchClause = " (crvh.crvh_sid LIKE '%" . $search . "%' OR crvh.crvh_comm_no LIKE '%" . $search . "%' OR "
. " crvh.crvh_vh_sign LIKE '%" . $search . "%' OR crvh.crvh_vh_name LIKE '%" . $search . "%' OR "
. " crvh.crvh_remark LIKE '%" . $search . "%' OR crvh.crvh_freetext_1 LIKE '%" . $search . "%')";
$retVal = call_user_func_array($functionName, array($searchClause, "crvh.crvh_sid")); // Gets the couriervehicle list
$retValLen = count($retVal);
if (!is_array($retVal[0]) && $retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
// if ($retValLen > 0) :
$xmlOut .= "<vehicle_list>\n";
for ($i = 0; $i < $retValLen; $i++) :
// $xmlOut .= "<courier id=\"" . $retVal[$i][0] . "\">\n";
$xmlOut .= "<vehicle>\n";
$xmlOut .= " <crvh_id>" . $retVal[$i][0] . "</crvh_id>\n";
$xmlOut .= " <crvh_sid>" . $retVal[$i][4] . "</crvh_sid>\n";
$xmlOut .= " <cr_id>" . $retVal[$i][2] . "</cr_id>\n";
$xmlOut .= " <crvh_comm_no><![CDATA[" . mcEncode($retVal[$i][5]) . "]]></crvh_comm_no>\n";
$xmlOut .= " <crvh_vh_sign><![CDATA[" . mcEncode($retVal[$i][6]) . "]]></crvh_vh_sign>\n";
$xmlOut .= " <crvh_vh_name><![CDATA[" . mcEncode($retVal[$i][7]) . "]]></crvh_vh_name>\n";
// $xmlOut .= " <crvh_remark><![CDATA[" . mcEncode($retVal[$i][25]) . "]]></crvh_remark>\n";
// $xmlOut .= " <crvh_freetext><![CDATA[" . mcEncode($retVal[$i][26]) . "]]></crvh_freetext>\n";
// $xmlOut .= " <crvh_special><![CDATA[" . mcEncode($retVal[$i][27]) . "]]></crvh_special>\n";
$xmlOut .= "</vehicle>\n";
endfor;
$xmlOut .= "</vehicle_list>\n";
// endif;
endif;
elseif ($functionName == "getVehicle") :
$retVal = getVehicle($crvhId, "", "", "1"); // Gets a single vehicle
$retValLen = count($retVal);
if ($retValLen == 0) :
// $xmlOut .= $retVal[1] . $retVal[2];
else :
// if ($retValLen > 0) :
$xmlOut .= "<vehicle_special>\n";
// for ($i = 0; $i < $retValLen; $i++) :
// $xmlOut .= "<vehicle id=\"" . $retVal[0] . "\">\n";
$xmlOut .= "<vehicle>\n";
$xmlOut .= " <crvh_id>" . $retVal["crvh_id"] . "</crvh_id>\n";
$xmlOut .= " <vht_id>" . $retVal["vht_id"] . "</vht_id>\n";
$xmlOut .= " <crvh_sid>" . $retVal["crvh_sid"] . "</crvh_sid>\n";
$xmlOut .= " <crvh_comm_no><![CDATA[" . mcEncode($retVal["crvh_comm_no"]) . "]]></crvh_comm_no>\n";
$xmlOut .= " <crvh_vh_sign><![CDATA[" . mcEncode($retVal["crvh_vh_sign"]) . "]]></crvh_vh_sign>\n";
$xmlOut .= " <crvh_vh_name><![CDATA[" . mcEncode($retVal["crvh_vh_name"]) . "]]></crvh_vh_name>\n";
$xmlOut .= " <crvh_licence_date>" . $retVal["crvh_licence_date"] . "</crvh_licence_date>\n";
$xmlOut .= " <crvh_prov>" . $retVal["crvh_prov"] . "</crvh_prov>\n";
$xmlOut .= " <crvh_payload>" . $retVal["crvh_payload"] . "</crvh_payload>\n";
$xmlOut .= " <crvh_totalweight>" . $retVal["crvh_totalweight"] . "</crvh_totalweight>\n";
$xmlOut .= " <crvh_length>" . $retVal["crvh_length"] . "</crvh_length>\n";
$xmlOut .= " <crvh_width>" . $retVal["crvh_width"] . "</crvh_width>\n";
$xmlOut .= " <crvh_height>" . $retVal["crvh_height"] . "</crvh_height>\n";
$xmlOut .= " <crvh_position>" . $retVal["crvh_position"] . "</crvh_position>\n";
$xmlOut .= " <crvh_aperture_height_side>" . $retVal["crvh_aperture_height_side"] . "</crvh_aperture_height_side>\n";
$xmlOut .= " <crvh_aperture_height_rear>" . $retVal["crvh_aperture_height_rear"] . "</crvh_aperture_height_rear>\n";
$xmlOut .= "</vehicle>\n";
// endfor;
$xmlOut .= "</vehicle_special>\n";
// endif;
endif;
// *************************
// * SHOPS AND BONUS CARDS *
// *************************
/*
elseif ($functionName == "getBonusCard") :
$retVal = call_user_func_array($functionName, array($bcId, $bcCode));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<bc_id>" . $retVal[1] . "</bc_id>\n";
$xmlOut .= "<bc_code>" . $retVal[2] . "</bc_code>\n";
endif;
elseif ($functionName == "insertBonusCard") :
$retVal = call_user_func_array($functionName, array($bcCode));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<bc_id>" . $retVal[1] . "</bc_id>\n";
$xmlOut .= "<bc_code>" . $retVal[2] . "</bc_code>\n";
endif;
elseif ($functionName == "updateBonusCard") :
$retVal = call_user_func_array($functionName, array($bcId, $bcCode));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<bc_id>" . $retVal[1] . "</bc_id>\n";
$xmlOut .= "<bc_code>" . $retVal[2] . "</bc_code>\n";
endif;
elseif ($functionName == "getBonusCardOwner") :
$retVal = call_user_func_array($functionName, array($bcId, $objType, $objId, $orderByClause));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$tmpArr = $retVal[1];
$tmpArrLen = count($tmpArr);
for ($i = 0; $i < $tmpArrLen; $i++) :
$xmlOut .= "<bco_item>";
$xmlOut .= "<bc_id>" . $tmpArr[$i]["bc_id"] . "</bc_id>\n";
if ($tmpArr[$i]["bco_obj_type"] == "usr") :
$xmlOut .= "<usr_id>" . $tmpArr[$i]["bco_obj_id"] . "</usr_id>\n";
elseif ($tmpArr[$i]["bco_obj_type"] == "cmp") :
$xmlOut .= "<cmp_id>" . $tmpArr[$i]["bco_obj_id"] . "</cmp_id>\n";
endif;
$xmlOut .= "<bco_points>" . $tmpArr[$i]["bco_points"] . "</bco_points>\n";
$xmlOut .= "</bco_item>";
endfor;
endif;
elseif ($functionName == "getBonusCardOwnerByClause") :
if ($whereClause != "") :
$retVal = call_user_func_array($functionName, array($whereClause, $orderByClause));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$tmpArr = $retVal[1];
$tmpArrLen = count($tmpArr);
for ($i = 0; $i < $tmpArrLen; $i++) :
$xmlOut .= "<bco_item>";
$xmlOut .= "<bc_id>" . $tmpArr[$i]["bc_id"] . "</bc_id>\n";
if ($tmpArr[$i]["bco_obj_type"] == "usr") :
$xmlOut .= "<usr_id>" . $tmpArr[$i]["bco_obj_id"] . "</usr_id>\n";
elseif ($tmpArr[$i]["bco_obj_type"] == "cmp") :
$xmlOut .= "<cmp_id>" . $tmpArr[$i]["bco_obj_id"] . "</cmp_id>\n";
endif;
$xmlOut .= "<bco_points>" . $tmpArr[$i]["bco_points"] . "</bco_points>\n";
$xmlOut .= "</bco_item>";
endfor;
endif;
else:
$xmlOut .= "<err_no>109</err_no>\n";
$xmlOut .= "<err_desc>Special database error.</err_desc>\n";
endif;
elseif ($functionName == "setBonusCardOwner") :
$retVal = call_user_func_array($functionName, array($bcId, $objType, $objId, $bcoPoints));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
endif;
elseif ($functionName == "addBonusCardOwnerPoints") :
$retVal = call_user_func_array($functionName, array($bcId, $objType, $objId, $bcoPoints));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
endif;
elseif ($functionName == "getBonusCardSingleTransaction") :
$retVal = call_user_func_array($functionName, array($bctaId));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<bcta_id>" . $retVal[1] . "</bcta_id>\n";
$xmlOut .= "<bc_id>" . $retVal[2] . "</bc_id>\n";
if ($retVal[3] == "usr") :
$xmlOut .= "<usr_id>" . $retVal[4] . "</usr_id>\n";
elseif ($retVal[3] == "cmp") :
$xmlOut .= "<cmp_id>" . $retVal[4] . "</cmp_id>\n";
endif;
$xmlOut .= "<shp_id>" . $retVal[5] . "</shp_id>\n";
$xmlOut .= "<bcta_value>" . $retVal[6] . "</bcta_value>\n";
$xmlOut .= "<bcta_points>" . $retVal[7] . "</bcta_points>\n";
$xmlOut .= "<bcta_createtime>" . $retVal[8] . "</bcta_createtime>\n";
$xmlOut .= "<bcta_remark><![CDATA[" . mcEncode($retVal[9]) . "]]></bcta_remark>\n";
endif;
elseif ($functionName == "getBonusCardTransactionList") :
$retVal = call_user_func_array($functionName, array($dateFrom, $dateTo, $orderByClause, $objType, $objId, $shpId));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$tmpArr = $retVal[1];
$tmpArrLen = count($tmpArr);
for ($i = 0; $i < $tmpArrLen; $i++) :
$xmlOut .= "<bcta_item>";
$xmlOut .= "<bcta_id>" . $tmpArr[$i]["bcta_id"] . "</bcta_id>\n";
$xmlOut .= "<bc_id>" . $tmpArr[$i]["bc_id"] . "</bc_id>\n";
if ($tmpArr[$i]["bcta_obj_type"] == "usr") :
$xmlOut .= "<usr_id>" . $tmpArr[$i]["bcta_obj_id"] . "</usr_id>\n";
elseif ($tmpArr[$i]["bcta_obj_type"] == "cmp") :
$xmlOut .= "<cmp_id>" . $tmpArr[$i]["bcta_obj_id"] . "</cmp_id>\n";
endif;
$xmlOut .= "<shp_id>" . $tmpArr[$i]["shp_id"] . "</shp_id>\n";
$xmlOut .= "<bcta_value>" . $tmpArr[$i]["bcta_value"] . "</bcta_value>\n";
$xmlOut .= "<bcta_points>" . $tmpArr[$i]["bcta_points"] . "</bcta_points>\n";
$xmlOut .= "<bcta_createtime>" . $tmpArr[$i]["bcta_createtime"] . "</bcta_createtime>\n";
$xmlOut .= "<bcta_remark><![CDATA[" . mcEncode($tmpArr[$i]["bcta_remark"]) . "]]></bcta_remark>\n";
$xmlOut .= "</bcta_item>";
endfor;
endif;
elseif ($functionName == "getBonusCardTransactionListByClause") :
if ($whereClause != "") :
$retVal = call_user_func_array($functionName, array($whereClause, $orderByClause));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$tmpArr = $retVal[1];
$tmpArrLen = count($tmpArr);
for ($i = 0; $i < $tmpArrLen; $i++) :
$xmlOut .= "<bcta_item>";
$xmlOut .= "<bcta_id>" . $tmpArr[$i]["bcta_id"] . "</bcta_id>\n";
$xmlOut .= "<bc_id>" . $tmpArr[$i]["bc_id"] . "</bc_id>\n";
if ($tmpArr[$i]["bcta_obj_type"] == "usr") :
$xmlOut .= "<usr_id>" . $tmpArr[$i]["bcta_obj_id"] . "</usr_id>\n";
elseif ($tmpArr[$i]["bcta_obj_type"] == "cmp") :
$xmlOut .= "<cmp_id>" . $tmpArr[$i]["bcta_obj_id"] . "</cmp_id>\n";
endif;
$xmlOut .= "<shp_id>" . $tmpArr[$i]["shp_id"] . "</shp_id>\n";
$xmlOut .= "<bcta_value>" . $tmpArr[$i]["bcta_value"] . "</bcta_value>\n";
$xmlOut .= "<bcta_points>" . $tmpArr[$i]["bcta_points"] . "</bcta_points>\n";
$xmlOut .= "<bcta_createtime>" . $tmpArr[$i]["bcta_createtime"] . "</bcta_createtime>\n";
$xmlOut .= "<bcta_remark><![CDATA[" . mcEncode($tmpArr[$i]["bcta_remark"]) . "]]></bcta_remark>\n";
$xmlOut .= "</bcta_item>";
endfor;
endif;
else:
$xmlOut .= "<err_no>109</err_no>\n";
$xmlOut .= "<err_desc>Special database error.</err_desc>\n";
endif;
elseif ($functionName == "setBonusCardSingleTransaction") :
$retVal = call_user_func_array($functionName, array($bcId, $objType, $objId, $shpId, $bctaValue, $bctaPoints, $bctaRemark));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<bcta_id>" . $retVal[1] . "</bcta_id>\n";
endif;
elseif ($functionName == "getShop") :
$retVal = call_user_func_array($functionName, array($shpId));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<shp_id>" . $retVal[1] . "</shp_id>\n";
$xmlOut .= "<hq_id>" . $retVal[2] . "</hq_id>\n";
$xmlOut .= "<cmp_id>" . $retVal[3] . "</cmp_id>\n";
$xmlOut .= "<shp_bc_active>" . $retVal[4] . "</shp_bc_active>\n";
$xmlOut .= "<shp_bc_factor>" . $retVal[5] . "</shp_bc_factor>\n";
$xmlOut .= "<shp_bc_ta_limit>" . $retVal[6] . "</shp_bc_ta_limit>\n";
endif;
elseif ($functionName == "getShopByClause") :
if ($whereClause != "") :
$retVal = call_user_func_array($functionName, array($whereClause, $orderByClause));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$tmpArr = $retVal[1];
$tmpArrLen = count($tmpArr);
for ($i = 0; $i < $tmpArrLen; $i++) :
$xmlOut .= "<shp_item>";
$xmlOut .= "<shp_id>" . $tmpArr[$i]["shp_id"] . "</shp_id>\n";
$xmlOut .= "<hq_id>" . $tmpArr[$i]["hq_id"] . "</hq_id>\n";
$xmlOut .= "<cmp_id>" . $tmpArr[$i]["cmp_id"] . "</cmp_id>\n";
$xmlOut .= "<shp_bc_active>" . $tmpArr[$i]["shp_bc_active"] . "</shp_bc_active>\n";
$xmlOut .= "<shp_bc_factor>" . $tmpArr[$i]["shp_bc_factor"] . "</shp_bc_factor>\n";
$xmlOut .= "<shp_bc_ta_limit>" . $tmpArr[$i]["shp_bc_ta_limit"] . "</shp_bc_ta_limit>\n";
$xmlOut .= "</shp_item>";
endfor;
endif;
else:
$xmlOut .= "<err_no>109</err_no>\n";
$xmlOut .= "<err_desc>Special database error.</err_desc>\n";
endif;
elseif ($functionName == "insertShop") :
$retVal = call_user_func_array($functionName, array($shpName, $cntrId, $shpBcActive, $shpBcFactor, $shpBcTaLimit));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<shp_id>" . $retVal[1] . "</shp_id>\n";
$xmlOut .= "<cmp_id>" . $retVal[2] . "</cmp_id>\n";
endif;
elseif ($functionName == "updateShop") :
$retVal = call_user_func_array($functionName, array($shp_id, $shpName, $shpBcActive, $shpBcFactor, $shpBcTaLimit));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
endif;
elseif ($functionName == "getCoupon") :
$retVal = call_user_func_array($functionName, array($cpnId, $cpnCode));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<cpn_id>" . $retVal[1] . "</cpn_id>\n";
$xmlOut .= "<cpn_code>" . $retVal[2] . "</cpn_code>\n";
endif;
elseif ($functionName == "insertCoupon") :
$retVal = call_user_func_array($functionName, array($cpnCode));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<cpn_id>" . $retVal[1] . "</cpn_id>\n";
$xmlOut .= "<cpn_code>" . $retVal[2] . "</cpn_code>\n";
endif;
elseif ($functionName == "updateCoupon") :
$retVal = call_user_func_array($functionName, array($cpnId, $cpnCode));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<cpn_id>" . $retVal[1] . "</cpn_id>\n";
$xmlOut .= "<cpn_code>" . $retVal[2] . "</cpn_code>\n";
endif;
elseif ($functionName == "getCouponSingleTransaction") :
$retVal = call_user_func_array($functionName, array($bctaId));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<cpnta_id>" . $retVal[1] . "</cpnta_id>\n";
$xmlOut .= "<cpn_id>" . $retVal[2] . "</cpn_id>\n";
if ($retVal[3] == "usr") :
$xmlOut .= "<usr_id>" . $retVal[4] . "</usr_id>\n";
elseif ($retVal[3] == "cmp") :
$xmlOut .= "<cmp_id>" . $retVal[4] . "</cmp_id>\n";
endif;
$xmlOut .= "<cpnta_createtime>" . $retVal[5] . "</cpnta_createtime>\n";
endif;
elseif ($functionName == "getCouponTransactionList") :
$retVal = call_user_func_array($functionName, array($dateFrom, $dateTo, $orderByClause, $objType, $objId));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$tmpArr = $retVal[1];
$tmpArrLen = count($tmpArr);
for ($i = 0; $i < $tmpArrLen; $i++) :
$xmlOut .= "<cpnta_item>";
$xmlOut .= "<cpnta_id>" . $tmpArr[$i]["cpnta_id"] . "</cpnta_id>\n";
$xmlOut .= "<cpn_id>" . $tmpArr[$i]["cpn_id"] . "</cpn_id>\n";
if ($tmpArr[$i]["cpnta_obj_type"] == "usr") :
$xmlOut .= "<usr_id>" . $tmpArr[$i]["cpnta_obj_id"] . "</usr_id>\n";
elseif ($tmpArr[$i]["cpnta_obj_type"] == "cmp") :
$xmlOut .= "<cmp_id>" . $tmpArr[$i]["cpnta_obj_id"] . "</cmp_id>\n";
endif;
$xmlOut .= "<cpnta_createtime>" . $tmpArr[$i]["cpnta_createtime"] . "</cpnta_createtime>\n";
$xmlOut .= "</cpnta_item>";
endfor;
endif;
elseif ($functionName == "getCouponTransactionListByClause") :
if ($whereClause != "") :
$retVal = call_user_func_array($functionName, array($whereClause, $orderByClause));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$tmpArr = $retVal[1];
$tmpArrLen = count($tmpArr);
for ($i = 0; $i < $tmpArrLen; $i++) :
$xmlOut .= "<cpnta_item>";
$xmlOut .= "<cpnta_id>" . $tmpArr[$i]["cpnta_id"] . "</cpnta_id>\n";
$xmlOut .= "<cpn_id>" . $tmpArr[$i]["cpn_id"] . "</cpn_id>\n";
if ($tmpArr[$i]["cpnta_obj_type"] == "usr") :
$xmlOut .= "<usr_id>" . $tmpArr[$i]["cpnta_obj_id"] . "</usr_id>\n";
elseif ($tmpArr[$i]["cpnta_obj_type"] == "cmp") :
$xmlOut .= "<cmp_id>" . $tmpArr[$i]["cpnta_obj_id"] . "</cmp_id>\n";
endif;
$xmlOut .= "<cpnta_createtime>" . $tmpArr[$i]["cpnta_createtime"] . "</cpnta_createtime>\n";
$xmlOut .= "</cpnta_item>";
endfor;
endif;
else:
$xmlOut .= "<err_no>109</err_no>\n";
$xmlOut .= "<err_desc>Special database error.</err_desc>\n";
endif;
elseif ($functionName == "setCouponSingleTransaction") :
$retVal = call_user_func_array($functionName, array($cpnId, $objType, $objId));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<cpnta_id>" . $retVal[1] . "</cpnta_id>\n";
endif;
elseif ($functionName == "getGiftCoupon") :
$retVal = call_user_func_array($functionName, array($gcpnId, $gcpnCode));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<gcpn_id>" . $retVal[1] . "</gcpn_id>\n";
$xmlOut .= "<gcpn_code>" . $retVal[2] . "</gcpn_code>\n";
$xmlOut .= "<gcpn_recipient>" . $retVal[3] . "</gcpn_recipient>\n";
$xmlOut .= "<gcpn_valid>" . $retVal[4] . "</gcpn_valid>\n";
$xmlOut .= "<gcpn_value>" . $retVal[5] . "</gcpn_value>\n";
$xmlOut .= "<gcpn_freetext>" . $retVal[6] . "</gcpn_freetext>\n";
$xmlOut .= "<gcpn_image_name>" . $retVal[7] . "</gcpn_image_name>\n";
$xmlOut .= "<gcpn_payment_code>" . $retVal[8] . "</gcpn_payment_code>\n";
$xmlOut .= "<gcpn_createtime>" . $retVal[9] . "</gcpn_createtime>\n";
endif;
elseif ($functionName == "getGiftCouponByClause") :
if ($whereClause != "") :
$retVal = call_user_func_array($functionName, array($whereClause, $orderByClause));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$tmpArr = $retVal[1];
$tmpArrLen = count($tmpArr);
for ($i = 0; $i < $tmpArrLen; $i++) :
$xmlOut .= "<gcpn_item>";
$xmlOut .= "<gcpn_id>" . $tmpArr[$i]["gcpn_id"] . "</gcpn_id>\n";
$xmlOut .= "<gcpn_code>" . $tmpArr[$i]["gcpn_code"] . "</gcpn_code>\n";
$xmlOut .= "<gcpn_recipient>" . $tmpArr[$i]["gcpn_recipient"] . "</gcpn_recipient>\n";
$xmlOut .= "<gcpn_valid>" . $tmpArr[$i]["gcpn_valid"] . "</gcpn_valid>\n";
$xmlOut .= "<gcpn_value>" . $tmpArr[$i]["gcpn_value"] . "</gcpn_value>\n";
$xmlOut .= "<gcpn_freetext>" . $tmpArr[$i]["gcpn_freetext"] . "</gcpn_freetext>\n";
$xmlOut .= "<gcpn_image_name>" . $tmpArr[$i]["gcpn_image_name"] . "</gcpn_image_name>\n";
$xmlOut .= "<gcpn_payment_code>" . $tmpArr[$i]["gcpn_payment_code"] . "</gcpn_payment_code>\n";
$xmlOut .= "<gcpn_createtime>" . $tmpArr[$i]["gcpn_createtime"] . "</gcpn_createtime>\n";
$xmlOut .= "</gcpn_item>";
endfor;
endif;
else:
$xmlOut .= "<err_no>109</err_no>\n";
$xmlOut .= "<err_desc>Special database error.</err_desc>\n";
endif;
elseif ($functionName == "insertGiftCoupon") :
$retVal = call_user_func_array($functionName, array($gcpnCode, $gcpnRecipient, $gcpnValue, $gcpnImageName, $gcpnValid, $gcpnFreetext, $gcpnPaymentCode));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
$xmlOut .= "<gcpn_id>" . $retVal[1] . "</gcpn_id>\n";
endif;
elseif ($functionName == "updateGiftCoupon") :
$retVal = call_user_func_array($functionName, array($gcpnId, $gcpnCode, $gcpnRecipient, $gcpnValue, $gcpnImageName, $gcpnValid, $gcpnFreetext, $gcpnPaymentCode));
if ($retVal[0] != "0") :
$xmlOut .= $retVal[1] . $retVal[2];
else :
$xmlOut .= $xmlNoErrOut;
endif;
*/
else :
// ****************
// * GENERIC PART *
// ****************
if ($serviceContext == "____generic____") :
// Get number of arguments of requested function
$fct = new ReflectionFunction($functionName);
$numOfFunctionArguments = $fct->getNumberOfRequiredParameters();
$argumentArray = array();
for ($i = 1; $i <= $numOfFunctionArguments; $i++) :
$parName = "par_" . pad($i, 2);
${($parName)} = getSingleTagContent($messageReq, "<" . $parName . ">", "</" . $parName . ">");
array_push($argumentArray, ${($parName)});
endfor;
// Call function with arguments
$retVal = call_user_func_array($functionName, $argumentArray);
if (!is_array($retValue)) :
$retVal = array($retVal);
endif;
// Generate XML
$xmlOut .= mcArray2Xml($retVal, "");
// $xmlOut .= "<err_no>103</err_no>\n";
// $xmlOut .= "<err_desc>Function does not exist in API.</err_desc>\n";
endif;
endif;
else :
$xmlOut .= "<err_no>103</err_no>\n";
$xmlOut .= "<err_desc>Operational database cannot be connected.</err_desc>\n";
endif;
else :
$xmlOut .= "<err_no>102</err_no>\n";
$xmlOut .= "<err_desc>Specified function does not exist.</err_desc>\n";
endif;
else :
$xmlOut .= "<err_no>101</err_no>\n";
$xmlOut .= "<err_desc>No function specified.</err_desc>\n";
endif;
$xmlOut .= "<req_key>" . $requestKey . "</req_key>\n";
$xmlOut .= "</data>\n";
else :
$xmlOut .= $xmlErrOut;
endif;
echo $xmlOut;
/*
ALLGEMEIN:
Folgend werden nur die positiven Requests beschrieben.
Im Fehlerfall werden die Fehlernummer und die Fehlerbeschreibung zurückgegeben:
<data>
<err_no>001</err_no> // Verifikation Registrierungscode ok, wenn = "0"
<err_desc>....<err_desc> // Fehlermeldung (001 - Registrierung fehlgeschlagen!)
....
</data>
// ************************************************************
// **** [A] Registrierung und Mandantenanlage über das WEB ****
// ************************************************************
....
<id>webRegister</id>
<company>Firma</company>
<usr_name>Nachname</usr_name>
<usr_firstname>Vorname</usr_firstname>
<usr_email>Mailadresse</usr_email>
<usr_mobile>Mobilnummer</usr_mobile>
<account>Nachname</account>
<password>Passwort</password>
....
// ****************************************************************************************************
// **** [B] Ablaufschritte für die Einzelfreischaltung der APP (= "Registrierung" der App-Instanz) ****
// ****************************************************************************************************
1. Schritt:
Die Freischaltungsanfrage bei einer neu heruntergeladenen APP oder bei einer manuellen
Deaktivierung des APP-Schlüssels durch autorisierte Personen sendet den neuen eingegebenen
Freischaltungscode an den Server.
Die APP-ID ist vorerst statisch die "101" (ADSG-APP).
// Request-Bsp.
<adsg_req>
<id>appRegister</id>
<app_key>Rc34rFghZ78tx</app_key> // Registrierungscode
<app_id>101</app_id> // ID der APP
</adsg_req>
// Response-Bsp.
<data>
<err_no>0</err_no> // Verifikation Registrierungscode ok, wenn = "0"
<mo_id>100</mo_id> // Interne Nummer der Datenbank-Instanz, auf die der Server zugreifen muss (z.B "8")
<usr_id>23</usr_id> // Eindeutige ID des Benutzers der korrespondierenden DB-Instanz
</data>
2. Schritt:
Nach der erfolgreichen Freischaltung erfolgt ein sich anschließender Login-Prozess.
// Request-Bsp.
<adsg_req>
<id>login</id>
<mo_id>100</mo_id> // Instanz der DB, auf die zugegriffen werden muss
<usr_id>23</usr_id> // Benutzer-ID
<app_key>Rc34rFghZ78tx</app_key> // Registrierungscode (wird auch wieder mitgegeben zum Abgleich ob serverseitig zurückgesetzt)
<app_id>101</app_id> // ID der APP (wird mitgeführt wg. Check des Registrierungscodes)
</adsg_req>
// Response-Bsp.
<data>
<err_no>0</err_no> // Login ok, wenn = "0"
<session>....hash....</session>
<mo_id>100</mo_id>
<hq_id>....</hq_id>
<hq_name><![CDATA[....]]></hq_name>
<hqmnemonic>....</hqmnemonic>
<usr_id>23</usr_id>
<usr_name><![CDATA[....]]></usr_name>
<usr_firstname><![CDATA[....]]></usr_firstname>
<usr_type><![CDATA[....]]></usr_type>
</data>
3. Schritt:
Requests für operative Daten. Senden des Events mit Koordinaten
// Request-Bsp.
<adsg_req>
<id>setTimekeepingEvent</id>
<session>HASH</session>
<mo_id>100</mo_id>
<usr_id>23</usr_id>
....
</adsg_req>
// Response-Bsp.
<data>
<err_no>0</err_no> // Operation ok, wenn = "0"
....
</data>
// ********************************
// **** [C] Operative Requests ****
// ********************************
// **** Liste der Niederlassungen ****
<adsg_req>
<id>getHeadquartersList</id>
<session>29142dea6c4002cc7bf88714ca4238a0b9531281ac23820dcc509a6f</session>
<mo_id>100</mo_id>
<usr_id>314282</usr_id>
<payload>
</payload>
</adsg_req>
// **** Kontaktliste auf Basis des Suchbegriffs ****
// Request
<adsg_req>
<id>getContactList</id>
<session>HASH</session>
<mo_id>100</mo_id>
<usr_id>23</usr_id>
<payload>
<search>Suchbegriff</search>
<category>1</category>
<hq_id>Niederlassungs-ID</hq_id> // Muss gesetzt sein
<obj_type>cs</obj_type> // cs = customer => (Alle) Kontakte mit einem Kundenbezug
<obj_id>77</obj_d> // z.B. eine konkrete "cs_id" bei Typ "cs" => Kontakte nur dieses Kunden
<prefix>yes</prefix> // Wenn nur eine Präfix-Suche initiert werden soll, dann "YES" oder "1"
</payload>
</adsg_req>
// Response
<data>
<contact_header>
<label_1>Bezeichnung</label_1>
<label_2>Bezeichnung</label_2>
....
</contact_header>
<contact_list>
<contact>
<val_1>Wert</val_1>
<val_2>Wert</val_2>
....
</contact>
<contact>
....
</contact>
....
</contact_list>
</data>
// **** Kundenliste auf Basis des Suchbegriffs ****
// Request
<adsg_req>
<id>getCustomerList</id>
<session>HASH</session>
<mo_id>100</mo_id>
<usr_id>23</usr_id>
<payload>
<search>Suchbegriff</search>
<hq_id>Niederlassungs-ID</hq_id>
</payload>
</adsg_req>
// Response
<data>
<customer_list>
<customer>
<cs_id>ID des Datensatzes</cs_id>
<cs_eid>Kundennummer</cs_eid>
<cmp_type></cmp_type>
<cmp_comp><![CDATA[Firma]]></cmp_comp>
<cmp_comp2><![CDATA[Firma2]]></cmp_comp2>
<usr_name><![CDATA[Nachname]]></usr_name>
<usr_firstname><![CDATA[Vorname]]></usr_firstname>
<usr_phone></usr_phone>
<usr_phone2></usr_phone2>
</customer>
<customer>
....
</customer>
....
</customer_list>
</data>
// **** Daten eines Kunden ****
// Request
<adsg_req>
<id>getCustomerSpecial</id>
<session>HASH</session>
<mo_id>100</mo_id>
<usr_id>23</usr_id>
<payload>
<cs_id>ID des Kundendatensatzes</cs_id> // (Entweder <cs_id> oder <cs_eid> gesetzt)
<cs_eid>Kundennummer (EID)</cs_eid>
<hq_id>Niederlassungs-ID</hq_id>
</payload>
</adsg_req>
// Response
<data>
<customer_special>
<customer>
<cs_id>ID des Datensatzes</cs_id>
<cs_eid>Kundennummer</cs_eid>
<cmp_type></cmp_type>
<cmp_comp><![CDATA[Firma]]></cmp_comp>
<cmp_comp2><![CDATA[Firma2]]></cmp_comp2>
<cmp_comp3><![CDATA[Firma3]]></cmp_comp3>
<cmp_comp4><![CDATA[Firma4]]></cmp_comp4>
<usr_name><![CDATA[Nachname]]></usr_name>
<usr_firstname><![CDATA[Vorname]]></usr_firstname>
<usr_phone></usr_phone>
<usr_phone2></usr_phone2>
<ad_street><![CDATA[Straße]]></ad_street>
<ad_houseno>Hausnummer<ad_houseno>
<ad_zipcode>PLZ<ad_zipcode>
<ad_city><![CDATA[Ort]]></ad_city>
</customer>
</customer_special>
</data>
// **** Kostenstellen eines Kunden ****
// Request
<adsg_req>
<id>getCostcenterListOfCustomer</id>
<session>HASH</session>
<mo_id>100</mo_id>
<usr_id>23</usr_id>
<payload>
<cs_id>ID des Kundendatensatzes</cs_id> // (Entweder <cs_id> oder <cs_eid> gesetzt)
<cs_eid>Kundennummer (EID)</cs_eid>
</payload>
</adsg_req>
// Response
<data>
<costcenter_list>
<costcenter>
<csc_id>Kostenstellen-ID des Datensatzes</csc_id>
<cs_id>ID des zugehörigen Kunden</cs_id>
<cs_eid>Kundennummer</cs_eid>
<csc_name><![CDATA[Kostenstellenname]]></csc_name>
<csc_pre_id>ID der übergeordneten Kostenstelle im Kostenstellenbaum</csc_pre_id>
<hq_id>ID der Niederlassung</hq_id>
</costcenter>
<costcenter>
....
</costcenter>
....
</costcenter_list>
</data>
// **** Kostenstellenadressen einer Kostenstelle ****
// Request
<adsg_req>
<id>getCostcenterAddressList</id>
<session>HASH</session>
<mo_id>100</mo_id>
<usr_id>23</usr_id>
<payload>
<csc_id>ID der Kostenstelle</csc_id>
</payload>
</adsg_req>
// Response
<data>
<costcenteraddress_list>
<costcenteraddress>
<csc_id>Kostenstellen-ID</csc_id>
<cscad_comp>Firma</cscad_comp>
<cscad_comp2>Firma2</cscad_comp2>
<cscad_comp3>Firma3</cscad_comp3>
<cscad_comp4>Firma4</cscad_comp4>
// <ad_id>ID der Adresse</ad_id>
<adt_id>ID des Adresstyps</adt_id> // 1 = Postanschrift, 2 = Rechnungsanschrift, 3 = Rechnungsversandanschrift, 4 = Abhol-/Lieferadresse
<ad_street><![CDATA[Straße]]></ad_street>
<cscad_hsno><![CDATA[Hausnummer]]></cscad_hsno>
<ad_zipcode><![CDATA[PLZ]]></ad_zipcode>
<ad_city><![CDATA[Ort]]></ad_city>
<cscad_floor><![CDATA[Etage]]></cscad_floor>
<cscad_remark><![CDATA[Bemerkung]]></cscad_remark>
<cscad_person><![CDATA[Person]]></cscad_person>
<cscad_phone><![CDATA[Telefon]]></cscad_phone>
<cscad_email><![CDATA[Email-Adresse]]></cscad_email>
</costcenteraddress>
<costcenteraddress>
....
</costcenteraddress>
....
</costcenteraddress_list>
</data>
// **** Transporteursliste auf Basis des Suchbegriffs ****
// Request
<adsg_req>
<id>getCourierList</id>
<session>HASH</session>
<mo_id>100</mo_id>
<usr_id>23</usr_id>
<payload>
<search>Suchbegriff</search>
<hq_id>Niederlassungs-ID</hq_id>
</payload>
</adsg_req>
// Response
<data>
<courier_list>
<courier>
<cr_id>ID des Datensatzes</cr_id>
<cr_eid>Kundennummer</cr_eid>
<cmp_type></cmp_type>
<cmp_comp><![CDATA[Firma]]></cmp_comp>
<cmp_comp2><![CDATA[Firma2]]></cmp_comp2>
<usr_name><![CDATA[Nachname]]></usr_name>
<usr_firstname><![CDATA[Vorname]]></usr_firstname>
<usr_phone></usr_phone>
<usr_phone2></usr_phone2>
</courier>
<courier>
....
</courier>
....
</courier_list>
</data>
// **** Daten eines Transporteurs ****
// Request
<adsg_req>
<id>getCourierSpecial</id>
<session>HASH</session>
<mo_id>100</mo_id>
<usr_id>23</usr_id>
<payload>
<cr_id>ID des Kundendatensatzes</cr_id> // (Entweder <cr_id> oder <cr_eid> gesetzt)
<cr_eid>Kundennummer (EID)</cr_eid>
<hq_id>Niederlassungs-ID</hq_id>
</payload>
</adsg_req>
// Response
<data>
<courier_special>
<courier>
<cs_id>ID des Datensatzes</cs_id>
<cs_eid>Kundennummer</cs_eid>
<cmp_type></cmp_type>
<cmp_comp><![CDATA[Firma]]></cmp_comp>
<cmp_comp2><![CDATA[Firma2]]></cmp_comp2>
<cmp_comp3><![CDATA[Firma3]]></cmp_comp3>
<cmp_comp4><![CDATA[Firma4]]></cmp_comp4>
<usr_name><![CDATA[Nachname]]></usr_name>
<usr_firstname><![CDATA[Vorname]]></usr_firstname>
<usr_phone></usr_phone>
<usr_phone2></usr_phone2>
<ad_street><![CDATA[Straße]]></ad_street>
<ad_houseno>Hausnummer<ad_houseno>
<ad_zipcode>PLZ<ad_zipcode>
<ad_city><![CDATA[Ort]]></ad_city>
</courier>
</courier_special>
</data>
// **** Fahrzeugliste auf Basis des Suchbegriffs ****
// Request
<adsg_req>
<id>getVehicleList</id>
<session>HASH</session>
<mo_id>100</mo_id>
<usr_id>23</usr_id>
<payload>
<search>Suchbegriff</search>
</payload>
</adsg_req>
// Response
<data>
<vehicle_list>
<vehicle>
<crvh_id>(Interne) ID des Datensatzes</crvh_id>
<crvh_sid>(Externe) Fahrzeugnummer</crvh_sid>
<cr_id>(Interne) ID des Fahrers, dem das Fahrzeug zugeordnet ist</cr_id>
<crvh_comm_no><![CDATA[Kommissionsnummer]]></crvh_comm_no>
<crvh_vh_sign><![CDATA[Kennzeichen]]></crvh_vh_sign>
<crvh_vh_name><![CDATA[Fahrzeugbezeichnung]]></crvh_vh_name>
</vehicle>
<vehicle>
....
</vehicle>
....
</vehicle_list>
</data>
// **** Daten eines Fahrzeugs ****
// Request
<adsg_req>
<id>getVehicle</id>
<session>HASH</session>
<mo_id>100</mo_id>
<usr_id>23</usr_id>
<payload>
<crvh_id>(Interne) ID des Fahrzeugdatensatzes</crvh_id>
</payload>
</adsg_req>
// Response
<data>
<vehicle_special>
<vehicle>
<crvh_id>(Interne) ID des Datensatzes</crvh_id>
<vht_id>Nummer des Fahrzeugtypes</vht_id> // Erfordert Mapping !!!!
<crvh_sid>(Externe) Fahrzeugnummer</crvh_sid>
<crvh_comm_no><![CDATA[Firma]]></crvh_comm_no>
<crvh_vh_sign><![CDATA[Kommissionsnummer]]></crvh_vh_sign>
<crvh_vh_name><![CDATA[Fahrzeugbezeichnung]]></crvh_vh_name>
<crvh_licence_date><![CDATA[Datum]]></crvh_licence_date>
<crvh_prov><![CDATA[Provision]]></crvh_prov>
<crvh_payload><![CDATA[Nutzlast]]></crvh_payload>
<crvh_totalweight><![CDATA[Gesamtgewicht]]></crvh_totalweight>
<crvh_length><![CDATA[Länge]]></crvh_length>
<crvh_width><![CDATA[Breite]]></crvh_width>
<crvh_height><![CDATA[Höhe]]></crvh_height>
<crvh_position><![CDATA[Stellplätze]]></crvh_position>
<crvh_aperture_height_side><![CDATA[Ladebreite]]></crvh_aperture_height_side>
<crvh_aperture_height_rear><![CDATA[Ladelänge]]></crvh_aperture_height_rear>
</vehicle>
<vehicle_special>
</data>
// *****************
// **** Termine ****
// *****************
// **** Initial folgend die Termin-Kategorien laden (!) ****
// Request
<adsg_req>
<id>getApEnvironment</id>
<session>HASH</session>
<service_context>groupware</service_context>
<mo_id>100</mo_id>
<usr_id>23</usr_id>
<payload>
<hq_id>NL-ID</hq_id>
</payload>
</adsg_req>
// Response
<data>
<apcat1_list>
<apcat1 id="1">
<name><![CDATA[geschäftlich]></name>
</apcat1 id="1">
<apcat1 id="2">
<name><![CDATA[privat]></name>
<apcat1 id="2">
....
</apcat1_list>
<apcat2_list>
<apcat2 id="1">
<name><![CDATA[nur für Teilnehmer]></name>
</apcat2 id="1">
<apcat2 id="2">
<name><![CDATA[nur für mich]></name>
</apcat2 id="2">
<apcat2 id="3">
<name><![CDATA[für alle]></name>
</apcat2 id="3">
....
</apcat2_list>
<apcat3_list>
<apcat3 id="1">
<name><![CDATA[Verschiedenes]></name>
</apcat3 id="1">
<apcat3 id="2">
<name><![CDATA[Abschluss]></name>
</apcat3 id="2">
<apcat3 id="3">
<name><![CDATA[Angebotserstellung]></name>
</apcat3 id="3">
....
</apcat3_list>
<apcat4_list>
<apcat4 id="1">
<name><![CDATA[Keine Terminüberwachung]></name>
</apcat4 id="1">
<apcat4 id="2">
<name><![CDATA[Terminüberwachung aktiviert]></name>
</apcat4 id="2">
....
</apcat4_list>
....
<possible_participants_list>
<possible_participant id="usr_id">
<usr_firstname><![CDATA[Vorname]]></usr_firstname>
<usr_name><![CDATA[Nachname]]></usr_name>
</possible_participant>
....
</possible_participants_list>
</data>
// **** Termine anfragen (eines Monats, einer Woche, eines Tages) ****
// Request (Monat)
<adsg_req>
<id>getAppointmentsOfOneMonth</id>
<session>HASH</session>
<mo_id>100</mo_id>
<usr_id>23</usr_id>
<service_context>groupware</service_context> // Statischer Text "groupware"
<payload>
<month>4</month>
<year>2017</year>
<hq_id>NL-ID</hq_id>
<usr_id>23</usr_id>
<cs_id>Kunden-ID</cs_id> // (Entweder beides leer (default) oder <cr_id> oder <cr_eid> gesetzt)
<cs_eid>Kundennummer</cs_eid>
</payload>
</adsg_req>
// Request (Tag)
<adsg_req>
<id>getAppointmentsOfOneDay</id>
<session>HASH</session>
<mo_id>100</mo_id>
<usr_id>23</usr_id>
<service_context>groupware</service_context> // Statischer Text "groupware"
<payload>
<day>7</day>
<month>4</month>
<year>2017</year>
.... siehe "getAppointmentsOfOneMonth" ....
</payload>
</adsg_req>
// Request (KW)
<adsg_req>
<id>getAppointmentsOfOneWeek</id>
<session>HASH</session>
<mo_id>100</mo_id>
<usr_id>23</usr_id>
<service_context>groupware</service_context> // Statischer Text "groupware"
<payload>
<week>15</week>
<year>2017</year>
.... siehe "getAppointmentsOfOneMonth" ....
</payload>
</adsg_req>
// Response (für alle Intervalle)
<data>
<appointment_list id=\"APL\">
<yeardata>
<year>2017</year>
<monthdata>
<month>04</month>
<days>
<daydata>
<day>dd</day>
<appointments>
<appointment>
<ap_id>ID des Termins</ap_id>
<ap_text><![CDATA[Termintext]]></ap_text>
<ap_execdate>Terminstart</ap_execdate>
<cmp_id>(Company(!)-)ID des Kunden, der dem Termin zugeordnet ist</cmp_id>
<cmp_comp><![CDATA[Firma]]></cmp_comp>
<cmp_comp2><![CDATA[Firma2]]></cmp_comp2>
<cs_eid>Kundennummer</cs_eid>
<ap_enddate>Terminende</ap_enddate>
<usr_id>ID des Erstellers</usr_id>
<usr_firstname><![CDATA[Vorname des Erstellers]]></usr_firstname>
<usr_name><![CDATA[Nachname des Erstellers]]></usr_name>
<ap_participants>
<ap_participant id=\"" . $tmpParticipantsArray[$j] . "\">
<name><![CDATA[Nachname des Teilnehmers]]></name>
<firstname><![CDATA[Vorname des Teilnehmers]]></firstname>
</ap_participant>
</ap_participants>
<ap_confirmed>Termin bestätigt?</ap_confirmed>
<cs_usr_name><![CDATA[Nachname Kunde]]></cs_usr_name>
<cs_usr_firstname><![CDATA[Vorname Kunde]]></cs_usr_firstname>
<cs_usr_phone>Telefon Kunde</cs_usr_phone>
<cs_usr_phone2>Telefon Kunde</cs_usr_phone2>
<ap_category_1>Zuordnung zur Kategorie 1</ap_category_1>
<ap_category_2>Zuordnung zur Kategorie 2</ap_category_2>
<ap_category_3>Zuordnung zur Kategorie 3</ap_category_3>
<ap_category_4>Zuordnung zur Kategorie 4</ap_category_4>
</appointment>
....
</appointments>
</daydata>
....
</days>
</monthdata>
....
</yeardata>
</appointment_list>
</data>
// **** Termin erzeugen (insert), ändern (update), entfernen (delete) ****
// Request
<adsg_req>
<id>actionAppointment</id>
<session>HASH</session>
<mo_id>DB</mo_id>
<usr_id>USR_ID</usr_id>
<payload>
<action></action> // "insert"|"update"|"delete"
<ap_id></ap_id> // ID Termin, erforderlich bei "update" und "delete"
<execdatetime></execdatetime> // Startzeitpunkt des Termins
<enddatetime></enddatetime> // Endezeitpunkt des Termins
<ap_cat1></ap_cat1> // Wert für Terminkategorie 1 (=> "getApEnvironment")
<ap_cat2></ap_cat2> // Wert für Terminkategorie 2 (=> "getApEnvironment")
<ap_cat3></ap_cat3> // Wert für Terminkategorie 3 (=> "getApEnvironment")
<ap_cat4></ap_cat4> // Wert für Terminkategorie 4 (=> "getApEnvironment")
<hq_id></hq_id>
<cs_id></cs_id> // Termin mit Kunden
<participants></participants> // Teilnehmer (kommaseparierte Liste mit mit "usr_id")
<ap_text><![CDATA[....]]></ap_text> // Berichtstext
</payload>
</adsg_req>
// **** Berichte (eines Kunden oder eines Transporteurs) für einen spezifizierten Zeitraum ****
// Request
<adsg_req>
<id>getReportList</id>
<session>HASH</session>
<mo_id>DB</mo_id>
<usr_id>USR_ID</usr_id>
<service_context>groupware</service_context> // Statischer Text "groupware"
<payload>
<fromdaterange>JJJJ-MM-TT</fromdaterange>
<todaterange>JJJJ-MM-TT</todaterange>
<rp_obj_type>cs</rp_obj_type> // Statisch "cs" wenn Kundenberichte ODER "cr" wenn Transporteursberichte
// => Vorerst Kunden
<rp_obj_id>CS_ID</rp_obj_id> // Interne Kunden-ID (= "cs_id") ODER Interne Transporteurs-ID (= "cr_id")
<rp_type></rp_type> // Optional aus vorher geladenen Termin-Kategorien per "getApEnvironment":
// 1="Verschiedenes", 2="Abschluss", 3="Angebotserstellung", ... 10="Konferenz/Seminar/Urlaub", ...
</payload>
</adsg_req>
// Response
<data>
<report_list>
<report>
<id>Berichts-ID</id>
<type>Berichtstyp (numerisch)</type>
<text>Berichtstext</text>
<confidential></confidential> // Wenn "1", dann "vertraulich"
<usrid>Ersteller-ID</usrid> // DEPRICATED, "<usr_id></usr_id>" nutzen
<usr_id>Ersteller-ID</usr_id>
<name></name> // Name des Erstellers
<firstname></firstname> // Vorname des Erstellers
<phone></phone> // Telefonnr. des Erstellers
<eid></eid> // EID des Kunden oder Transporteurs
<comp></comp> // Firma des Kunden oder Transporteurs
<comp2></comp2> // Firma2 des Kunden oder Transporteurs
<hq_id></hq_id> // Niederlassungs-ID
<hq_name></hq_name> // Name der Niederlassung
</report>
<report>
....
</report>
</report_list>
</data>
// **** Einzelner Bericht (eines Kunden oder eines Transporteurs) ****
// Request
<adsg_req>
<id>getReport</id>
<session>HASH</session>
<mo_id>DB</mo_id>
<usr_id>USR_ID</usr_id>
<service_context>groupware</service_context> // Statischer Text "groupware"
<payload>
<rp_id>Berichts-ID</rp_id> // ID des Berichts (für den spezifizierten Objekttyp)
<rp_obj_type>cs</rp_obj_type> // Statisch "cs" wenn Kundenberichte ODER "cr" wenn Transporteursberichte
// => Vorerst Kunden
</payload>
</adsg_req>
// Response
<data>
<report>
<id>Berichts-ID</id>
<type>Berichtstyp (numerisch)</type>
<text>Berichtstext</text>
<confidential></confidential> // Wenn "1", dann "vertraulich"
<usrid>Ersteller-ID</usrid> // DEPRICATED, "<usr_id></usr_id>" nutzen
<usr_id>Ersteller-ID</usr_id>
<name></name> // Name des Erstellers
<firstname></firstname> // Vorname des Erstellers
<phone></phone> // Telefonnr. des Erstellers
<eid></eid> // EID des Kunden oder Transporteurs
<comp></comp> // Firma des Kunden oder Transporteurs
<comp2></comp2> // Firma2 des Kunden oder Transporteurs
<hq_id></hq_id> // Niederlassungs-ID
<hq_name></hq_name> // Name der Niederlassung
</report>
</data>
// **** Bericht erzeugen (insert), ändern (update), entfernen (delete) ****
// Request
<adsg_req>
<id>actionReport</id>
<session>HASH</session>
<mo_id>DB</mo_id>
<usr_id>USR_ID</usr_id>
<payload>
<action></action> // "insert"|"update"|"delete"
<rp_id></rp_id> // ID Bericht, erforderlich bei "update" und "delete"
<rp_type></rp_type> // Berichtstyp, erforderlich bei "insert", optional bei "update"
<rp_obj_type></rp_obj_type> // "cs"|"cr" (Bericht für Kunde|Transporteur...)
<rp_obj_id></rp_obj_id> // ID Kunde/Transporteur
<rp_text><![CDATA[....]]></rp_text> // Berichtstext
<rp_confidential></rp_confidential> // Kennzeichen für "vertraulich" (= "1")
</payload>
</adsg_req>
BEISPIELE:
- Bsp.: Bericht neu (insert)
<adsg_req>
<id>actionReport</id>
<session>HASH</session>
<mo_id>DB</mo_id>
<usr_id>USR_ID</usr_id>
<payload>
<action>insert</action>
<rp_id></rp_id> // ID Bericht wird automatisch generiert
<rp_type>8</rp_type> // Berichtstyp wird überschrieben (=> Typen wie bei Terminen)
<rp_obj_type>cs</rp_obj_type> // hier Kunde
<rp_obj_id>789</rp_obj_id> // ID Kunde (cs_id)
<rp_text><![CDATA[Blah]]></rp_text> // Berichtstext
<rp_confidential></rp_confidential> // leer, nicht "vertraulich"
</payload>
</adsg_req>
- Bsp.: Bericht ändern (update)
<adsg_req>
<id>actionReport</id>
<session>HASH</session>
<mo_id>DB</mo_id>
<usr_id>USR_ID</usr_id>
<payload>
<action>update</action>
<rp_id>12345</rp_id> // ID Bericht, erforderlich bei "update"
<rp_type>4</rp_type> // Berichtstyp wird überschrieben (=> Typ wie bei Termin)
<rp_obj_type></rp_obj_type> // leer
<rp_obj_id></rp_obj_id> // leer
<rp_text><![CDATA[Blah]]></rp_text> // Berichtstext
<rp_confidential>1</rp_confidential> // hier "vertraulich"
</payload>
</adsg_req>
- Bsp.: Bericht entfernen (delete)
<adsg_req>
<id>actionReport</id>
<session>HASH</session>
<mo_id>DB</mo_id>
<usr_id>USR_ID</usr_id>
<payload>
<action>delete</action>
<rp_id>12345</rp_id> // ID Bericht, erforderlich bei "delete"
</payload>
</adsg_req>
// Response
<data>
<reports>
<report>
<action></action> // Angeforderte Aktion ("insert"|"update"|"delete")
<rp_id></rp_id> // Angeforderte oder erzeugte Berichts-ID
</report>\n";
</reports>\n";
</data>
// **** Statistik eines Kunden für einen spezifizierten Zeitraum ****
// Request
<adsg_req>
<id>getCsStatistic</id>
<session>HASH</session>
<mo_id>DB</mo_id>
<usr_id>USR_ID</usr_id>
<payload>
<cs_id>Kunden-ID</cs_id> // (Entweder beides leer (default) oder <cr_id> oder <cr_eid> gesetzt)
<cs_eid>Kundennummer</cs_eid>
<fromdaterange>JJJJ-MM-TT</fromdaterange>
<todaterange>JJJJ-MM-TT</todaterange>
</payload>
</adsg_req>
// Response
<data>
<customer_statistic>
<cs_id>CS_ID</cs_id>
<cs_eid>CS_EID</cs_eid>
<statistic_value>WERT</statistic_value>
</customer_statistic>
</data>
----------------------------------
actionAppointment
*/
?>