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

590 lines
29 KiB
PHP

<?php
/*=======================================================================
*
* statistic_request.php
*
* Autor: Marc Vollmann
*
=======================================================================*/
include_once ("../include/mcglobal.inc.php");
include_once ("../include/inc_parseXML.inc.php");
// include_once ("../include/inc_parseXML_MC.inc.php"); // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// include_once ("../include/inc_mtf_func.inc.php");
include_once ("../include/html.inc.php");
include_once ("../include/inc_dbinspector.inc.php");
include_once ("../include/inc_category_dbfields.inc.php");
include_once ("../include/inc_dbfields2array.inc.php");
include_once ("../include/inc_group.inc.php");
include_once ("../statistic/statistic_sql.inc.php");
// include_once ("../statistic/statistic_sql_MC.inc.php"); // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Write logdata into log file
$currentTime = getDateTime("0");
$currentDate = getDateTime("3");
$debug = false;
$debugOut = "";
$lineFeed = "\n";
// $statisticReq = file_get_contents('php://input');
// Check HTTP-Parameters
getSecHttpVars("1",array("f_act", "statisticReq", "selectedLanguage"));
if ($statisticReq == "") :
if (isset($argv[1])) :
$statisticReq = $argv[1];
endif;
endif;
function statisticRequestLogFile ($msg, $logLevel = 0) {
XMLRequestLogFile($msg, $logLevel, $logFile = "statisticReq.log");
}
function statisticSetGlobalParameterArray () {
global $aligns, $f_statusMode, $f_dateMode, $f_showDateAndTime, $f_crvh_sid, $f_direction_sort;
global $f_filter, $f_filter2, $f_filter3, $f_filter4, $f_filter5, $f_filter6, $f_filter7, $f_filter8, $f_filter9, $f_filter10;
global $f_price_formular, $f_filter_a, $f_filter_interval, $g_crvh_filter, $f_mode_statistic, $f_filter_calc, $f_service, $f_servicetype, $f_jb_service, $f_split_jb_services, $f_jb_specifics;
global $f_cs_meta, $f_cr_meta, $f_cr_parent, $f_cr_pda_actions, $f_show_invoice_address, $f_show_delivery_address, $summationField, $summationField2, $uniqueSearchFields;
global $hour_from, $minute_from, $hour_to, $minute_to, $fromTimeRange, $toTimeRange, $f_cmp_new_date, $f_cs_become_cs_date, $f_net_gross;
global $f_group, $f_groupLen, $f_staticGroup, $f_staticGroupLen;
$globalParArray = array($aligns, $f_statusMode, $f_dateMode, $f_showDateAndTime, $f_crvh_sid, $f_direction_sort,
$f_filter, $f_filter2, $f_filter3, $f_filter4, $f_filter5, $f_filter6, $f_filter7, $f_filter8, $f_filter9, $f_filter10,
$f_price_formular, $f_filter_a, $f_filter_interval, $g_crvh_filter, $f_mode_statistic, $f_filter_calc, $f_service, $f_servicetype, $f_jb_service, $f_split_jb_services, $f_jb_specifics,
$f_cs_meta, $f_cr_meta, $f_cr_parent, $f_cr_pda_actions, $f_show_invoice_address, $f_show_delivery_address, $summationField, $summationField2, $uniqueSearchFields,
$hour_from, $minute_from, $hour_to, $minute_to, $fromTimeRange, $toTimeRange, $f_cmp_new_date, $f_cs_become_cs_date, $f_net_gross,
$f_group, $f_groupLen, $f_staticGroup, $f_staticGroupLen);
return $globalParArray;
}
// Calling client IP
$currentClientIP = trim($_SERVER['REMOTE_ADDR']);
$statisticReq = urldecode($statisticReq);
$statisticReq = str_replace("'", "", $statisticReq);
$statisticReq = mcEncode($statisticReq);
$statisticReq = str_replace("'", "", $statisticReq);
// echo $statisticReq . "<br><br>";
statisticRequestLogFile($currentTime . " - " . $currentClientIP);
statisticRequestLogFile($statisticReq);
if ($selectedLanguage == "" || !is_numeric($selectedLanguage)) : $selectedLanguage = "1"; endif; // Default in English
$languageSelected = $selectedLanguage;
getLanguage(__FILE__);
getCurrentScript(__FILE__);
$err = array();
$outResponse = "";
// ---------------------------------------------------------------------------
// GLOBAL MODE OF USAGE
$globalParUseRelatedCustomer = getParameterValue("0", "GLOBAL_USE_RELATED_CUSTOMER", "0");
// *** Parse request ***
$statisticArray = xml2array($statisticReq);
// *** Convert result array to usable parameters ***
// * Authentication data *
// Generic fields for multiple types
$authType = strtolower(convertSpecial($statisticArray["xml"]["statistic"]["auth"]["auth_type"]));
if ($authType == "") : $authType = "cs"; endif;
$authId = convertSpecial($statisticArray["xml"]["statistic"]["auth"]["auth_id"]);
$authEid = convertSpecial($statisticArray["xml"]["statistic"]["auth"]["auth_eid"]);
if ($authEid == "" && $authId != "") :
if ($authType == "cr") :
$authEid = getFieldValueFromId("courier","cr_id",$authId,"cr_eid");
else :
$authEid = getFieldValueFromId("customer","cs_id",$authId,"cs_eid");
endif;
endif;
if ($authId == "") :
if ($authType == "cr") :
$authId = getFieldValueFromId("courier","cr_eid",$authEid,"cr_id");
else :
$authId = getFieldValueFromId("customer","cs_eid",$authEid,"cs_id");
endif;
endif;
$usrAccount = convertSpecial($statisticArray["xml"]["statistic"]["auth"]["account"]);
$usrPassword = convertSpecial($statisticArray["xml"]["statistic"]["auth"]["password"]);
$sessionId = convertSpecial($statisticArray["xml"]["statistic"]["auth"]["session_id"]);
// Optional customer group data (needed to find e.g. an article price automatically). Has to be set explicitly, because a customer could belong to more groups !!!!
$groupId = convertSpecial($statisticArray["xml"]["statistic"]["auth"]["group_no"]);
$groupName = convertSpecial($statisticArray["xml"]["statistic"]["auth"]["group_name"]);
if ($groupId != "" && is_numeric($groupId)) :
$groupName = getFieldValueFromId("groups","grp_id",$groupId,"grp_name");
elseif ($groupName != "") :
$groupId = getFieldValueFromId("groups","grp_name",$groupName,"grp_id");
endif;
// Reset customer group data if it could not be identified
if ($groupId == "" || $groupName == "") :
$groupId = "";
$groupName = "";
endif;
// Get optional authentication data for session with passphrase (!!!!)
// $sessionId = convertSpecial($statisticArray["xml"]["statistic"]["auth"]["session_id"]);
$passPhrase = convertSpecial($statisticArray["xml"]["statistic"]["auth"]["passphrase"]);
// Get data of the customer you will get the statistic response for.
// If NOT authentication type "2" (session and passphrase) is requested, map $objXXXX to special requested customer or contractor (!!!!)
$objType = convertSpecial($statisticArray["xml"]["statistic"]["obj_type"]);
$objId = convertSpecial($statisticArray["xml"]["statistic"]["obj_id"]);
$objEid = convertSpecial($statisticArray["xml"]["statistic"]["obj_eid"]);
if ($objType == "") : $objType = "cs"; endif;
if ($objType == "cs") :
if ($objId != "" && $objEid == "") :
$objEid = getFieldValueFromId("customer","cs_id",$objId,"cs_eid");
elseif ($objEid != "" && $objId == "") :
$objId = getFieldValueFromId("customer","cs_eid",$objEid,"cs_id");
endif;
elseif ($objType == "cr") :
if ($objId != "" && $objEid == "") :
$objEid = getFieldValueFromId("courier","cr_id",$objId,"cr_eid");
elseif ($objEid != "" && $objId == "") :
$objId = getFieldValueFromId("courier","cr_eid",$objEid,"cr_id");
endif;
endif;
$debugOut .= "authType: " . $authType . "<br>\n";
$debugOut .= "authId: " . $authId . "<br>\n";
$debugOut .= "authEid: " . $authEid . "<br>\n";
$debugOut .= "usrAccount: " . $usrAccount . "<br>\n";
$debugOut .= "usrPassword: " . $usrPassword . "<br>\n";
$debugOut .= "sessionId: " . $sessionId . "<br>\n";
$debugOut .= "passPhrase: " . $passPhrase . "<br>\n";
$debugOut .= "objType: " . $objType . "<br>\n";
$debugOut .= "objId: " . $objId . "<br>\n";
$debugOut .= "objEid: " . $objEid . "<br>\n";
// ******************
// * AUTHENTICATION *
// ******************
// If authentication type "2" is requested (session and passphrase), check user data of a special "general" object (customer, contractor) defined in the database
$authCheckState = "0";
if ($passPhrase != "" && checkRequestAuthenticationData2($sessionId, $passPhrase)) :
// Authentication mode "2" is ok, but check for "general" customer to have access to request for data of another object (!!!!)
// !!!! ACHTUNG: DAS "true" rausnehmen !!!!!!!!!!!!!!!!!!!!!!!!!!!
if (true || checkRequestAuthenticationData($usrAccount, $usrPassword, $sessionId, $authId, $authType)) :
$authCheckState = "2";
endif;
endif;
// If authentication type "1" is requested (user, password, session), the requested object in $objXXXX has to be the same as in authentication data
if ($authCheckState == "0") :
// The $objXXXX has to be the same object requested for. It has to be the same in authentication data
$objType = $authType;
$objId = $authId;
$objEid = $authEid;
if ($authCheckState == "0" && checkRequestAuthenticationData($usrAccount, $usrPassword, $sessionId, $authId, $authType)) :
$authCheckState = "1";
endif;
endif;
// One of both authentication types has to grant access
if ($authCheckState == "1" || $authCheckState == "2") :
$debugOut .= "Authentication OKAY!<br>\n";
$debugOut .= "Authentication type: " . $authCheckState . "<br><br>\n";
$debugOn = convertSpecial($statisticArray["xml"]["statistic"]["debug_on"]);
if (strtoupper($debugOn) == "YES" || strtoupper($debugOn) == "ON") :
$debug = true;
endif;
if ($debug) :
print_r($statisticArray); echo "<br><br><br>\n\n\n";
endif;
if ($objType == "cs") :
$csId = $objId;
$csEid = $objEid;
elseif ($objType == "cr") :
$crId = $objId;
$crEid = $objEid;
endif;
// Get current global number of THIS database instance
$constGlobalDbInstNo = getParameterValue("0", "GLOBAL_UNIQUE_DB_INSTANCE_NO", "0", "0");
// Date range and optional time range
$day_from = convertSpecial($statisticArray["xml"]["statistic"]["day_from"]);
$month_from = convertSpecial($statisticArray["xml"]["statistic"]["month_from"]);
$year_from = convertSpecial($statisticArray["xml"]["statistic"]["year_from"]);
$day_to = convertSpecial($statisticArray["xml"]["statistic"]["day_to"]);
$month_to = convertSpecial($statisticArray["xml"]["statistic"]["month_to"]);
$year_to = convertSpecial($statisticArray["xml"]["statistic"]["year_to"]);
$hour_from = convertSpecial($statisticArray["xml"]["statistic"]["hour_from"]);
$minute_from = convertSpecial($statisticArray["xml"]["statistic"]["minute_from"]);
$hour_to = convertSpecial($statisticArray["xml"]["statistic"]["hour_to"]);
$minute_to = convertSpecial($statisticArray["xml"]["statistic"]["minute_to"]);
$debugOut .= "csId: " . $csId . "<br>\n"; $debugOut .= "csEid: " . $csEid . "<br>\n"; $debugOut .= "crId: " . $crId . "<br>\n"; $debugOut .= "crEid: " . $crEid . "<br>\n";
$debugOut .= "day_from: " . $day_from . "<br>\n"; $debugOut .= "month_from: " . $month_from . "<br>\n"; $debugOut .= "year_from: " . $year_from . "<br>\n";
$debugOut .= "day_to: " . $day_to . "<br>\n"; $debugOut .= "month_to: " . $month_to . "<br>\n"; $debugOut .= "year_to: " . $year_to . "<br>\n";
$debugOut .= "hour_from: " . $hour_from . "<br>\n"; $debugOut .= "minute_from: " . $minute_from . "<br>\n"; $debugOut .= "hour_to: " . $hour_to . "<br>\n"; $debugOut .= "minute_to: " . $minute_to . "<br>\n";
// If day time has NO restriction then init (00:00:00 - 23:59:59)
$f_showDateAndTime = convertSpecial($statisticArray["xml"]["statistic"]["day_time_restriction"]);
if ($f_showDateAndTime == "") :
$f_showDateAndTime = "0";
endif;
// Check ranges of time. All fields have to be set
if ($f_showDateAndTime == "0" || $hour_from == "" || $minute_from == "" || $hour_to == "" || $minute_to == "") :
$hour_from = "00";
$minute_from = "00";
$hour_to = "23";
$minute_to = "59";
$f_showDateAndTime == "0";
endif;
$hour_from = pad($hour_from,2);
$minute_from = pad($minute_from,2);
$hour_to = pad($hour_to,2);
$minute_to = pad($minute_to,2);
// Time range
$fromTimeRange = " " . $hour_from . ":" . $minute_from . ":00";
$toTimeRange = " " . $hour_to . ":" . $minute_to . ":59";
// Check ranges of date. All fields have to be set
if ($day_from == "" || $month_from == "" || $year_from == "" ||
$day_to == "" || $month_to == "" || $year_to == "") :
// Initialize date-ranges to the current date
$fromDateRange = getDateTime("3") . $fromTimeRange;
$toDateRange = getDateTime("3") . $toTimeRange;
$day_from = getDateTime("day");
$month_from = getDateTime("month");
$year_from = getDateTime("year");
$day_to = getDateTime("day");
$month_to = getDateTime("month");
$year_to = getDateTime("year");
else :
$fromDateRange = $year_from . "-" . pad($month_from,2) . "-" . pad($day_from,2) . $fromTimeRange;
$toDateRange = $year_to . "-" . pad($month_to,2) . "-" . pad($day_to,2) . $toTimeRange;
endif;
$debugOut .= "fromDateRange: " . $fromDateRange . "<br>\n";
$debugOut .= "toDateRange: " . $toDateRange . "<br>\n";
// Decimal for ROUND()
$roundDec = convertSpecial($statisticArray["xml"]["statistic"]["round_dec"]);
if ($roundDec == "" || !is_numeric($roundDec)) :
$roundDec = 2;
endif;
if ($objId != "" && $objEid != "") :
// ................
endif;
// echo $debugOut . "<br>\n<br>\n";
// -----------------------------------------------------------------------------------------------------------------------------------
// Get current requested headquarters from call
$currHqId = trim($argv[2]);
if ($currHqId == "" || !is_numeric($currHqId)) :
if ($csId != "" && is_numeric($csId)) :
$currHqId = getFieldValueFromId("customer","cs_id",$csId,"hq_id");
elseif ($crId != "" && is_numeric($crId)) :
$currHqId = getFieldValueFromId("courier","cr_id",$crId,"hq_id");
endif;
endif;
$debugOut .= "currHqId: " . $currHqId . "<br>\n";
// Init system parameter
$path = "../temp/download/";
// $f_secretFileName = "NL_" . str_replace("-","",getDateTime("date_yesterday_currentmonth_currentyear")) . ".csv";
$f_secretFileName = "STAT_" . $authId . "_" . $currentTime . ".csv";
$aligns = convertSpecial($statisticArray["xml"]["statistic"]["aligns"]);
$f_statistic = convertSpecial($statisticArray["xml"]["statistic"]["statistic_format"]); // Statistic format [30 = Anzahl und Nettoumsätze | 10 = Anzahl und Nettoumsätze pro Transporteur | 60 = Anzahl und Nettoumsätze pro Kunde]
$f_statusMode = convertSpecial($statisticArray["xml"]["statistic"]["status_mode"]); // All jobs, finished jobs only, exported jobs only
if ($f_statusMode == "") : $f_statusMode = "1"; endif;
$f_dateMode = convertSpecial($statisticArray["xml"]["statistic"]["date_mode"]); // "creating date", "booking date", "finish date" [default], "export date", "order_date"
if ($f_dateMode == "") : $f_dateMode = "2"; endif;
$f_crvh_sid = convertSpecial($statisticArray["xml"]["statistic"]["crvh_sid"]); // Filter for special vehicle SID
$f_direction_sort = convertSpecial($statisticArray["xml"]["statistic"]["direction_sort"]); // ORDER BY ASC or DESC"
if ($f_direction_sort == "") : $f_direction_sort = "0"; endif;
$f_filter = convertSpecial($statisticArray["xml"]["statistic"]["filter"]); // Filter (Split for vehicletype, start zipcode, etc.)
if ($f_filter == "") : $f_filter = "0"; endif;
$f_filter2 = convertSpecial($statisticArray["xml"]["statistic"]["filter2"]); // Filter (Split for "Aufträge und Gutschriften") (0 = none)
if ($f_filter2 == "") : $f_filter2 = "0"; endif;
$f_filter3 = convertSpecial($statisticArray["xml"]["statistic"]["filter3"]); // Filter (Split for "Fahrzeugkategorie" ["jb_type"]) (0 = none)
if ($f_filter3 == "") : $f_filter3 = "0"; endif;
$f_filter4 = convertSpecial($statisticArray["xml"]["statistic"]["filter4"]); // Filter (Split for headquarters) (0 = none)
if ($f_filter4 == "") : $f_filter4 = "0"; endif;
$f_filter5 = convertSpecial($statisticArray["xml"]["statistic"]["filter5"]); // Filter (Split for branches) (0 = none)
if ($f_filter5 == "") : $f_filter5 = "0"; endif;
$f_filter6 = convertSpecial($statisticArray["xml"]["statistic"]["filter6"]); // Filter (Split for carriers [ONLY customer statistics]) (0 = none)
if ($f_filter6 == "") : $f_filter6 = "0"; endif;
$f_filter7 = convertSpecial($statisticArray["xml"]["statistic"]["filter7"]); // Filter (Split for vehicles) (0 = none)
if ($f_filter7 == "") : $f_filter7 = "0"; endif;
$f_filter8 = convertSpecial($statisticArray["xml"]["statistic"]["filter8"]); // Filter (Split for employees) (0 = none)
if ($f_filter8 == "") : $f_filter8 = "0"; endif;
$f_filter9 = convertSpecial($statisticArray["xml"]["statistic"]["filter9"]); // Filter (Split for job types ["jb_type"]) (0 = none)
if ($f_filter9 == "") : $f_filter9 = "0"; endif;
$f_filter10 = convertSpecial($statisticArray["xml"]["statistic"]["filter10"]); // Filter (Split for costcenter ["csc_id_payer" / "csc_id_related"]) (0 = none)
if ($f_filter10 == "") : $f_filter10 = "0"; endif;
$f_price_formular = convertSpecial($statisticArray["xml"]["statistic"]["price_formular"]); // Computation of the price (0 = jb_totalprice)
if ($f_price_formular == "") : $f_price_formular = "0"; endif;
$f_filter_a = convertSpecial($statisticArray["xml"]["statistic"]["filter_a"]); // Subfilter to $f_filter (Kind of vehicletype [Requested or real]) (0 = none)
if ($f_filter_a == "") : $f_filter_a = "0"; endif;
$f_filter_interval = convertSpecial($statisticArray["xml"]["statistic"]["filter_interval"]); // Filter (Split for time intervals) (0 = none)
if ($f_filter_interval == "") : $f_filter_interval = "0"; endif;
$g_crvh_filter = convertSpecial($statisticArray["xml"]["statistic"]["crvh_filter"]); // Vehicle filter ("" = default)
$f_mode_statistic = convertSpecial($statisticArray["xml"]["statistic"]["mode_statistic"]); // Normal statistic (0 = default, 1 = calculator)
if ($f_mode_statistic == "") : $f_mode_statistic = "0"; endif;
$f_filter_calc = convertSpecial($statisticArray["xml"]["statistic"]["filter_calc"]); // (0 = none)
if ($f_filter_calc == "") : $f_filter_calc = "0"; endif;
$f_service = convertSpecial($statisticArray["xml"]["statistic"]["service"]); // Service for "service statistic" (0 = none)
if ($f_service == "") : $f_service = "0"; endif;
$f_servicetype = convertSpecial($statisticArray["xml"]["statistic"]["servicetype"]); // Servicetype for "service statistic" (0 = none)
if ($f_servicetype == "") : $f_servicetype = "0"; endif;
$f_jb_service_str = convertSpecial($statisticArray["xml"]["statistic"]["jb_service"]); // Job service array as filter (empty array = default)
$f_jb_service = "";
if ($f_jb_service_str != "") :
$f_jb_service = explode(",", $f_jb_service_str);
endif;
$f_split_jb_services = convertSpecial($statisticArray["xml"]["statistic"]["split_jb_services"]); // Filter (Split for job services) (0 = none)
if ($f_split_jb_services == "") : $f_split_jb_services = "0"; endif;
$f_jb_specifics_str = convertSpecial($statisticArray["xml"]["statistic"]["jb_specifics"]); // Job specifics used as filter (empty array = default)
$f_jb_specifics = "";
if ($f_jb_specifics_str != "") :
$f_jb_specifics = explode(",", $f_jb_specifics_str);
endif;
$f_cs_meta = convertSpecial($statisticArray["xml"]["statistic"]["cs_meta"]); // Filter (Split for sub customers ["meta-customer"]) (0 = none)
if ($f_cs_meta == "") : $f_cs_meta = "0"; endif;
$f_cr_meta = convertSpecial($statisticArray["xml"]["statistic"]["cr_meta"]); // Filter (Split for driver) (0 = none)
if ($f_cr_meta == "") : $f_cr_meta = "0"; endif;
$f_cr_parent = convertSpecial($statisticArray["xml"]["statistic"]["cr_parent"]); // Every courier or driver OR cumulation by parent ("" = default)
$f_cr_pda_actions = convertSpecial($statisticArray["xml"]["statistic"]["cr_pda_actions"]); // Filter for courier action statistics (absolute/relative per job) (0 = none)
if ($f_cr_pda_actions == "") : $f_cr_pda_actions = "0"; endif;
$f_show_invoice_address = convertSpecial($statisticArray["xml"]["statistic"]["show_invoice_address"]);
if ($f_show_invoice_address == "") : $f_show_invoice_address = "0"; endif;
$f_show_delivery_address = convertSpecial($statisticArray["xml"]["statistic"]["show_delivery_address"]);
if ($f_show_delivery_address == "") : $f_show_delivery_address = "0"; endif;
$summationField = "stat.count_jobs";
$summationField2 = "stat.business_volume";
$uniqueSearchFields = array();
$f_cmp_new_date = convertSpecial($statisticArray["xml"]["statistic"]["cmp_new_date"]); // Filter (Only new data set since date)
$f_cs_become_cs_date = convertSpecial($statisticArray["xml"]["statistic"]["cs_become_cs_date"]); // Filter (Only new customers since date)
$f_net_gross = "0";
$f_group = array();
$f_groupLen = 0;
$f_staticGroup = array();
$f_staticGroupLen = 0;
$debugOut .= "f_statistic: " . $f_statistic . "<br>\n";
// Init "Local" parameters
$hqName = "GESAMT";
$hqMnemonic = "GESAMT";
if ($currHqId != "" && is_numeric($currHqId)) :
$hqMnemonic = getFieldValueFromId("headquarters","hq_id",$currHqId,"hq_mnemonic");
$hqName = getFieldValueFromId("headquarters","hq_id",$currHqId,"hq_name");
if ($hqMnemonic == "" && $hqName == "") :
$currHqId = "";
endif;
endif;
if ($currHqId == "") :
$f_hq_id = getColVectorFromDB2ArrayByClause("headquarters", "hq_id", "", "", "", "");
else :
$f_hq_id = array($currHqId);
endif;
$orderByClause = "";
// **** Current month of last year ****
$xmlStatistic = "";
$globalParArray = statisticSetGlobalParameterArray();
// !!!!
// ATTENTION:
// For auth by contractor the customer statistic has to be called WITH value in $crEid AND
// for auth by customer the contractor statistic has to be called WITH value in $csEid !!!!
// !!!!
$f_category = "3"; // [1 = Auftrag | 2 = Transporteure | 3 = Kunden]
if ($objType == "cs") :
$f_category = "3";
if ($f_statistic == "") :
$f_statistic = "60";
endif;
elseif ($objType == "cr") :
$f_category = "2";
if ($f_statistic == "") :
$f_statistic = "10";
endif;
endif;
$idArrayLen = getCategoryDBFields($f_statistic);
$statOut = getStatistic($globalParArray, $f_statistic, $fromDateRange . " 00:00:00", $toDateRange . " 23:59:59", $csEid, $crEid, $orderByClause);
// Output
$statisticXML = mcArray2Xml($statOut[0], "", $lineFeed);
// $xmlStatistic .= "<count_jobs>" . number_format($statOut[0][0]["count_jobs"], 0, ",", ".") . "</count_jobs>";
// $xmlStatistic .= "<business_volume>" . number_format($statOut[0][0]["business_volume"], $roundDec, ",", ".") . "</business_volume>";
// $xmlStatistic .= number_format(round(($statOut[0][0]["business_volume"] / $yesterdayCurrentMonthLastYear[0][0]["count_jobs"]),$roundDec), $roundDec, ",", ".");
// if (file_exists($path . $f_secretFileName)) :
// unlink($path . $f_secretFileName);
// endif;
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);
// Output
$statisticResponse .= "<xml>";
if ($errLen > 0) :
statisticRequestLogFile("ERRORS", 1);
$statisticResponse .= "<state>NOT OK</state>";
$statisticResponse .= "<errors>";
for ($i = 0; $i < $errLen; $i++) :
$statisticResponse .= "<error>";
$statisticResponse .= "<err_no>" . $err[$i][0] . "</err_no>";
$statisticResponse .= "<err_desc><![CDATA[" . mcEncode($err[$i][1]) . "]]></err_desc>";
$statisticResponse .= "</error>";
if ($debug) :
$statisticResponse .= "<debug>" . $debugOut . "</debug>";
endif;
statisticRequestLogFile($err[$i][0] . " : " . mcEncode($err[$i][1]), 1);
endfor;
$statisticResponse .= "</errors>";
else :
$statisticResponse .= "<state>OK</state><statistic>" . $xmlStatistic . "</statistic>";
if ($debug) :
$statisticResponse .= "<debug>" . $debugOut . "</debug>";
endif;
$statisticResponse .= $statisticXML;
endif;
$statisticResponse .= "</xml>";
// Log entries
statisticRequestLogFile($statisticResponse); // Write response into log
statisticRequestLogFile("___________________________________________________________________________________");
// Return output
echo $statisticResponse;
/*
// REQUEST
<xml>
<statistic> // Statistic request.
<auth> // Identifikation des Objektes (Kunde, Unternehmer, etc.)
<auth_type>....</auth_type> // Object type ("cs" [or "empty"] = customer, "cr" = contractor, etc.).
<auth_id>....</auth_id> // Object ID (Internal ID) regarding the type
<auth_eid>....</auth_eid> // Object EID (Unique) regarding the type
<account>....</account> // Eingetragener Benutzer für den Kunden => cs.cs_admin => emp.emp_id => emp.usr_id => usr.usr_id => usr.usr_account
<password>....</password> // Passwort für den Benutzer => usr.usr_password
<session_id>....</session_id> // Zusätzliche Session-ID, die mit dem Kunden ausgehandelt wurde [mandatory]
<costcenter_name>....</costcenter_name> // Kostenstellenname {"abcd", "efgh", ...} => Mapping csc_id [optional]
<group_no>....</group_no> // Nummer der Kundengruppe (Bei einer automatischen Preisfindung muss entweder <group_no> oder <group_name> gesetzt sein)
<group_name>....</group_name> // Name der Kundengruppe (Bei einer automatischen Preisfindung muss entweder <group_name> oder <group_no> gesetzt sein)
</auth>
<debug_on>....</debug_on> // Activates debug output ("ON" or "YES")
<operation>GENERATE</operation> // Operation (GETs auth header if object does exist or GENERATEs auth header, default is "GET" if emty tag)
<obj_type>....</obj_type> // Type of the object ("cs" = empty = default = customer, "cr" = contractor, etc.)
<obj_id>....</obj_id> // ID of the object (Either ID or EID has to exist)
<obj_eid>....</obj_eid> // EID of the object (Either ID or EID has to exist)
<day_from>....</day_from>
<month_from>....</month_from>
<year_from>....</year_from>
<day_to>....</day_to>
<month_to>....</month_to>
<year_to>....</year_to>
<hour_from>....</hour_from>
<minute_from>....</minute_from>
<hour_to>....</hour_to>
<minute_to>....</minute_to>
<day_time_restriction>....</day_time_restriction>
<round_dec>....</round_dec>
<aligns>....</aligns>
<status_mode>....</status_mode>
<date_mode>....</date_mode>
<crvh_sid>....</crvh_sid>
<direction_sort>....</direction_sort>
<filter>....</filter>
<filter2>....</filter2>
<filter3>....</filter3>
<filter4>....</filter4>
<filter5>....</filter5>
<filter6>....</filter6>
<filter7>....</filter7>
<filter8>....</filter8>
<filter9>....</filter9>
<filter10>....</filter10>
<price_formular>....</price_formular>
<filter_a>....</filter_a>
<filter_interval>....</filter_interval>
<crvh_filter>....</crvh_filter>
<mode_statistic>....</mode_statistic>
<filter_calc>....</filter_calc>
<service>....</service>
<servicetype>....</servicetype>
<jb_service>....</jb_service>
<split_jb_services>....</split_jb_services>
<jb_specifics>....</jb_specifics>
<cs_meta>....</cs_meta>
<cr_meta>....</cr_meta>
<cr_parent>....</cr_parent>
<cr_pda_actions>....</cr_pda_actions>
<show_invoice_address>....</show_invoice_address>
<show_delivery_address>....</show_delivery_address>
<cmp_new_date>....</cmp_new_date>
<cs_become_cs_date>....</cs_become_cs_date>
</statistic>
</xml>
// RESPONSE (GENERATE and GET)
<xml>
<state>OK</state>
<statistic>
<auth>
<customer>....</customer> // EID of the customer
<account>....</account> // Account
<password>....</password> // Password
<session_id>....</session_id> // Session ID
<costcenter_name>....</costcenter_name> // Costcenter name
</auth>
</statistic>
</xml>
*/
?>