1. Import
This commit is contained in:
344
html/service/price_request.php
Normal file
344
html/service/price_request.php
Normal file
@@ -0,0 +1,344 @@
|
||||
<?php
|
||||
/*=======================================================================
|
||||
*
|
||||
* price_request.php
|
||||
*
|
||||
* Autor: Marc Vollmann
|
||||
*
|
||||
=======================================================================*/
|
||||
|
||||
|
||||
include_once ("../include/mcglobal.inc.php");
|
||||
include_once ("../include/caglobal.inc.php"); // For pricing and invoice-text only
|
||||
// include_once ('../include/email/htmlMimeMail.php');
|
||||
include_once ("../include/services_func.inc.php");
|
||||
include_once ("../include/inc_parseXML.inc.php");
|
||||
// include_once ("../include/inc_mtf_func.inc.php");
|
||||
// include_once ("../include/inc_customer.inc.php");
|
||||
// include_once ("../include/inc_job.inc.php");
|
||||
// include_once ("../include/inc_vehicle.inc.php");
|
||||
// include_once ("../include/inc_disposition.inc.php");
|
||||
// include_once ("../include/inc_disposition_DEV.inc.php");
|
||||
// include_once ("../geo/geocode.inc.php");
|
||||
|
||||
|
||||
// Write logdata into log file
|
||||
$currentTime = getDateTime("0");
|
||||
$currentDate = getDateTime("3");
|
||||
|
||||
$debug = false;
|
||||
$debugOut = "";
|
||||
|
||||
// $priceReq = file_get_contents('php://input');
|
||||
|
||||
// Check HTTP-Parameters
|
||||
getSecHttpVars("1",array("f_act", "priceReq", "selectedLanguage"));
|
||||
|
||||
if ($priceReq == "") :
|
||||
if (isset($argv[1])) :
|
||||
$priceReq = $argv[1];
|
||||
endif;
|
||||
endif;
|
||||
|
||||
function priceRequestLogFile ($msg, $logLevel = 0) {
|
||||
XMLRequestLogFile($msg, $logLevel, $logFile = "priceReq.log");
|
||||
}
|
||||
|
||||
function getPrice_MC($zipcode1, $zipcode2, $cs_invmode = -1, $fuel_markup, $vht_id, $jb_ordertime, $hq_id) {
|
||||
global $db;
|
||||
|
||||
if (strlen($zipcode1) == 5 && strlen($zipcode2) == 5 && is_numeric($zipcode1) && is_numeric($zipcode2)):
|
||||
if ($cs_invmode > -1):
|
||||
$cs_id = $cs_invmode * -1;
|
||||
else:
|
||||
$cs_id = 0;
|
||||
endif;
|
||||
// $cs_id decides about invmode
|
||||
// if 0, then default invmode from hq_id is taken
|
||||
// for Berlin, $cs_id directly takes invmode in negative form (in order to distinguish from ordinary cs_id, that always are postive)
|
||||
// Grundpreis
|
||||
// Servicetype-Name (Fahrrad etc.)
|
||||
$srvt_name = $db->getOne(
|
||||
"SELECT mt_value FROM metatype WHERE mt_sort = '$vht_id' AND mt_type = 'vehicletype'");
|
||||
list ($grundpreis, $fd, $fpm, $customer_specific) =
|
||||
saveServiceCosts("Grundpreis", $srvt_name, $hq_id, $cs_id, 0 /* $jb_id */, 0, $jb_ordertime, 0 /* count */, 1 /* $costsplit_count */, 1 /* $getPriceOnly */, false /* $jb_cash */, "0" /* $csc_id_payer */, 0 /* $jb_storno */, false /* zipcode1 */, false /* zipcode2 */, false, $fuel_markup, $vht_id);
|
||||
//$fullPrice += $fp * ((100-$fd)/100);
|
||||
//$discount_sign = ($fd > 0 || $customer_specific || $discount_sign == "*" ? "*" : "");
|
||||
// PLZ-Preis
|
||||
list ($plzpreis, $fd, $fpm, $customer_specific) =
|
||||
saveServiceCosts($zipcode1, $zipcode2, $hq_id, $cs_id, 0 /* $jb_id */, 0, $jb_ordertime, 0 /* count */, 1 /* $costsplit_count */, 1 /* $getPriceOnly */, false /* $jb_cash */, "0" /* $csc_id_payer */, 0 /* $jb_storno */, false /* zipcode1 */, false /* zipcode2 */, true, $fuel_markup, $vht_id);
|
||||
//$fullPrice += $fp * ((100-$fd)/100);
|
||||
//$discount_sign = ($fd > 0 || $customer_specific || $discount_sign == "*" ? "*" : "");
|
||||
else:
|
||||
$zipcode1 = "";
|
||||
$zipcode2 = "";
|
||||
$grundpreis = 0;
|
||||
$plzpreis = 0;
|
||||
endif;
|
||||
|
||||
return array($grundpreis, $plzpreis);
|
||||
}
|
||||
|
||||
|
||||
$priceReq = urldecode($priceReq);
|
||||
$priceReq = str_replace("'", "", $priceReq);
|
||||
$priceReq = mcEncode($priceReq);
|
||||
$priceReq = str_replace("'", "", $priceReq);
|
||||
// echo $priceReq . "<br><br>";
|
||||
|
||||
priceRequestLogFile($currentTime);
|
||||
priceRequestLogFile($priceReq);
|
||||
|
||||
|
||||
if ($selectedLanguage == "" || !is_numeric($selectedLanguage)) : $selectedLanguage = "1"; endif; // Default in English
|
||||
$languageSelected = $selectedLanguage;
|
||||
|
||||
getLanguage(__FILE__);
|
||||
getCurrentScript(__FILE__);
|
||||
|
||||
$err = array();
|
||||
$priceResponse = "";
|
||||
$xmlPrice = "";
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
// GLOBAL MODE OF USAGE
|
||||
$globalParUseRelatedCustomer = getParameterValue("0", "GLOBAL_USE_RELATED_CUSTOMER", "0");
|
||||
|
||||
// *** Parse request ***
|
||||
$priceArray = xml2array($priceReq);
|
||||
if ($debug) :
|
||||
print_r($priceArray); echo "<br><br><br>";
|
||||
endif;
|
||||
|
||||
|
||||
// *** Convert result array to usable parameters ***
|
||||
// Authentication data
|
||||
$csEid = convertSpecial($priceArray["xml"]["costs"]["auth"]["customer"]);
|
||||
$csId = getFieldValueFromId("customer","cs_eid",$csEid,"cs_id");
|
||||
$usrAccount = convertSpecial($priceArray["xml"]["costs"]["auth"]["account"]);
|
||||
$usrPassword = convertSpecial($priceArray["xml"]["costs"]["auth"]["password"]);
|
||||
$sessionId = convertSpecial($priceArray["xml"]["costs"]["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 !!!!
|
||||
$csGroupId = convertSpecial($priceArray["xml"]["costs"]["auth"]["group_no"]);
|
||||
$csGroupName = convertSpecial($priceArray["xml"]["costs"]["auth"]["group_name"]);
|
||||
if ($csGroupId != "" && is_numeric($csGroupId)) :
|
||||
$csGroupName = getFieldValueFromId("groups","grp_id",$csGroupId,"grp_name");
|
||||
elseif ($csGroupName != "") :
|
||||
$csGroupId = getFieldValueFromId("groups","grp_name",$csGroupName,"grp_id");
|
||||
endif;
|
||||
// Reset customer group data if it could not be identified
|
||||
if ($csGroupId == "" || $csGroupName == "") :
|
||||
$csGroupId = "";
|
||||
$csGroupName = "";
|
||||
endif;
|
||||
|
||||
$debugOut .= "usrAccount: " . $usrAccount . "<br>\n";
|
||||
$debugOut .= "usrPassword: " . $usrPassword . "<br>\n";
|
||||
$debugOut .= "sessionId: " . $sessionId . "<br>\n";
|
||||
|
||||
if (checkRequestAuthenticationData($usrAccount, $usrPassword, $sessionId, $csId)) :
|
||||
$debugOut .= "Authentication okay!<br><br>\n";
|
||||
|
||||
// Data
|
||||
$hqId = getFieldValueFromId("customer","cs_id",$csId,"hq_id");
|
||||
$cscName = convertSpecial($priceArray["xml"]["costs"]["auth"]["costcenter_name"]);
|
||||
$cscId = "";
|
||||
if ($cscName != "") :
|
||||
$cscId = getFieldValueFromClause("costcenter","csc_id","cs_id = '" . $csId . "' AND csc_name = '" . $cscName . "'");
|
||||
endif;
|
||||
if ($cscId == "" || !is_numeric($cscId)) :
|
||||
$cscId = getFieldValueFromClause("costcenter","csc_id","cs_id = '" . $csId . "' AND isnull(csc_pre_id)"); // Root costcenter
|
||||
endif;
|
||||
|
||||
|
||||
// Get job or costs data
|
||||
$operation = convertSpecial($priceArray["xml"]["costs"]["operation"]);
|
||||
$serviceFunction = convertSpecial($priceArray["xml"]["costs"]["service_function"]);
|
||||
$debugOn = convertSpecial($priceArray["xml"]["costs"]["debug_on"]);
|
||||
$vhtId = convertSpecial($priceArray["xml"]["costs"]["vehicle_type_id"]);
|
||||
$zipcodeFrom = convertSpecial($priceArray["xml"]["costs"]["zipcode_from"]);
|
||||
$zipcodeTo = convertSpecial($priceArray["xml"]["costs"]["zipcode_to"]);
|
||||
$day = convertSpecial($priceArray["xml"]["costs"]["day"]);
|
||||
$month = convertSpecial($priceArray["xml"]["costs"]["month"]);
|
||||
$year = convertSpecial($priceArray["xml"]["costs"]["year"]);
|
||||
$priceMode = convertSpecial($priceArray["xml"]["costs"]["price_mode"]);
|
||||
|
||||
|
||||
$debugOut .= "operation: " . $operation . "<br>\n";
|
||||
$debugOut .= "serviceFunction: " . $serviceFunction . "<br>\n";
|
||||
$debugOut .= "vhtId: " . $vhtId . "<br>\n";
|
||||
$debugOut .= "zipcodeFrom: " . $zipcodeFrom . "<br>\n";
|
||||
$debugOut .= "zipcodeTo: " . $zipcodeTo . "<br>\n";
|
||||
$debugOut .= "day: " . $day . "<br>\n";
|
||||
$debugOut .= "month: " . $month . "<br>\n";
|
||||
$debugOut .= "year: " . $year . "<br>\n";
|
||||
$debugOut .= "priceMode: " . $priceMode . "<br>\n";
|
||||
|
||||
|
||||
// Init
|
||||
$currentTimestamp = getDateTime("0");
|
||||
$currentDay = getDateTime("3"); // "Y-m-d"
|
||||
$currentTime = getDateTime("4"); // Current time ("H:i:s")
|
||||
$currYear = getDateTime("year"); // Current year
|
||||
|
||||
// Check <day>, <month> and <year> here
|
||||
// ...
|
||||
$cDateTime = $currentTimestamp;
|
||||
|
||||
$retVal = 0;
|
||||
$retVal_1 = 0;
|
||||
$retVal_2 = 0;
|
||||
if ($serviceFunction == "") : $serviceFunction = "default"; endif;
|
||||
$zipcodeFrom = pad($zipcodeFrom, 5);
|
||||
$zipcodeTo = pad($zipcodeTo, 5);
|
||||
if ($priceMode == "") : $priceMode = "1"; endif;
|
||||
|
||||
if (!$debug && $debugOn == "ON" || $debugOn == "YES") :
|
||||
$debug = true;
|
||||
endif;
|
||||
|
||||
if ($operation == "SET") :
|
||||
|
||||
// TO BE DONE!
|
||||
|
||||
else :
|
||||
|
||||
if ($serviceFunction == "default" || $serviceFunction == "zipcode") :
|
||||
|
||||
// Get IDs from zipcodes
|
||||
// $srvpIdFrom = getFieldValueFromId("phoenix.serviceplz", "srvp_plz", $zipcodeFrom, "srvp_id");
|
||||
// $srvpIdTo = getFieldValueFromId("phoenix.serviceplz", "srvp_plz", $zipcodeTo, "srvp_id");
|
||||
// $retVal_1 = getZipcodeServiceValues($srvpIdFrom, $srvpIdTo, $csId, $hqId, $cDateTime, $priceMode, $vhtId);
|
||||
$csInvMode = getFieldValueFromId("phoenix.customer", "cs_id", $csId, "cs_invmode");
|
||||
$fuelMarkup = 0;
|
||||
|
||||
// if ($srvpIdFrom != "" && $srvpIdTo != "") :
|
||||
if ($zipcodeFrom != "" && $zipcodeTo != "") :
|
||||
$mode = "1";
|
||||
$retArr = getPrice_MC($zipcodeFrom, $zipcodeTo, $csInvMode, $fuelMarkup, $vhtId, $cDateTime, $hqId);
|
||||
$retVal_1 = $retArr[0];
|
||||
$retVal_2 = $retArr[1];
|
||||
if (is_numeric($retVal_1) && is_numeric($retVal_2)):
|
||||
$retVal = $retVal_1 + $retVal_2;
|
||||
endif;
|
||||
/*
|
||||
$retVal = getZipCodeServiceValuesWrapper($srvpIdFrom, $srvpIdTo, $csId, $hqId, $cDateTime, $mode, $vhtId);
|
||||
if ($retVal == "0") :
|
||||
$retVal = getZipCodeServiceValuesWrapper($srvpIdFrom, $srvpIdTo, $csId, $hqId, $cDateTime, $mode);
|
||||
if ($retVal == "0") :
|
||||
$retVal = getZipCodeServiceValuesWrapper($srvpIdFrom, $srvpIdTo, "0", $hqId, $cDateTime, $mode, $vhtId);
|
||||
if ($retVal == "0") :
|
||||
$retVal = getZipCodeServiceValuesWrapper($srvpIdFrom, $srvpIdTo, "0", $hqId, $cDateTime, $mode);
|
||||
endif;
|
||||
endif;
|
||||
endif;
|
||||
*/
|
||||
endif;
|
||||
endif;
|
||||
|
||||
// Check for ERRORS
|
||||
if ($retVal != "") :
|
||||
$xmlPrice .= "<costs>";
|
||||
$xmlPrice .= "<date>" . substr($cDateTime, 0, 10) . "</date>";
|
||||
$xmlPrice .= "<vehicle_type_id>" . $vhtId . "</vehicle_type_id>";
|
||||
$xmlPrice .= "<zipcode_from>" . $zipcodeFrom . "</zipcode_from>";
|
||||
$xmlPrice .= "<zipcode_to>" . $zipcodeTo . "</zipcode_to>";
|
||||
$xmlPrice .= "<price_mode>" . $priceMode . "</price_mode>";
|
||||
$xmlPrice .= "<price_value_1>" . $retVal_1 . "</price_value_1>";
|
||||
$xmlPrice .= "<price_value_2>" . $retVal_2 . "</price_value_2>";
|
||||
$xmlPrice .= "<price_value_sum>" . $retVal . "</price_value_sum>";
|
||||
$xmlPrice .= "</costs>";
|
||||
else :
|
||||
$err[] = array("103", getLngt("Kein Preis!"));
|
||||
endif;
|
||||
$debugOut .= "<br><br>xmlPrice: " . $xmlPrice . "<br>\n";
|
||||
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
|
||||
$priceResponse .= "<xml>";
|
||||
if ($errLen > 0) :
|
||||
priceRequestLogFile("ERRORS", 1);
|
||||
$priceResponse .= "<state>NOT OK</state>";
|
||||
$priceResponse .= "<errors>";
|
||||
for ($i = 0; $i < $errLen; $i++) :
|
||||
$priceResponse .= "<error>";
|
||||
$priceResponse .= "<err_no>" . $err[$i][0] . "</err_no>";
|
||||
$priceResponse .= "<err_desc><![CDATA[" . mcEncode($err[$i][1]) . "]]></err_desc>";
|
||||
$priceResponse .= "</error>";
|
||||
if ($debug) :
|
||||
$priceResponse .= "<debug>" . $debugOut . "</debug>";
|
||||
endif;
|
||||
priceRequestLogFile($err[$i][0] . " : " . mcEncode($err[$i][1]), 1);
|
||||
endfor;
|
||||
$priceResponse .= "</errors>";
|
||||
else :
|
||||
$priceResponse .= "<state>OK</state>" . $xmlPrice;
|
||||
if ($debug) :
|
||||
$priceResponse .= "<debug>" . $debugOut . "</debug>";
|
||||
endif;
|
||||
endif;
|
||||
$priceResponse .= "</xml>";
|
||||
|
||||
// Log entries
|
||||
priceRequestLogFile($priceResponse); // Write response into log
|
||||
priceRequestLogFile("___________________________________________________________________________________");
|
||||
|
||||
// Return output
|
||||
echo $priceResponse;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
// REQUEST
|
||||
<xml>
|
||||
<costs> // Preisanfrage
|
||||
<auth> // Identifikation des Kunden
|
||||
<customer>...</customer> // Kundennummer (EID) {"STBxxxxxx", ...} => csc_id_payer
|
||||
<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>GET|SET</operation> // Operation (GET or SET costs(s), default is "GET" if emty tag)
|
||||
<service_function>...</service_function> // Leer <=> Preisermittlung nach Kundeneinstellungen | "zipcode" <=> PLZ-Preis | ....
|
||||
<vehicle_type_id>...</vehicle_type_id> // ID des Fahrzeugtyps
|
||||
<zipcode_from>...</zipcode_from> // Start-PLZ
|
||||
<zipcode_to>...</zipcode_to> // Ziel-PLZ
|
||||
<day>...</day> // Tag
|
||||
<month>...</month> // Monat
|
||||
<year>...</year> // Jahr
|
||||
<price_mode>...</price_mode> // Preismodus (Leer oder "1" = Preis | "0" = Rabatt)
|
||||
</costs>
|
||||
</xml>
|
||||
|
||||
|
||||
// RESPONSE for GET
|
||||
<xml>
|
||||
<state>OK</state>
|
||||
<costs>
|
||||
<date>....</date> // Angefordeter Tag
|
||||
<vehicle_type_id>....</vehicle_type_id> // ID des Fahrzeugtyps
|
||||
<zipcode_from>....</zipcode_from> // Start-PLZ
|
||||
<zipcode_to>....</zipcode_to> // Ziel-PLZ
|
||||
<price_mode>....</price_mode> // Preismodus (Leer oder "1" = Preis | "0" = Rabatt)
|
||||
<price_value>....</price_value> // Preis
|
||||
</costs>
|
||||
</xml>
|
||||
*/
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user