" . getLngt("IMPORTDATEI:") . " " . $filename . "
";
// Mapping "tour id" to "vehicle SID"
/*
$tourVehicleArray = array();
$tourVehicleArray["294501"] = "E501";
$tourVehicleArray["294502"] = "E502";
$tourVehicleArray["294503"] = "E503";
$tourVehicleArray["294504"] = "E504";
$tourVehicleArray["294505"] = "E505";
$tourVehicleArray["294506"] = "E506";
$tourVehicleArray["294507"] = "E507";
$tourVehicleArray["294508"] = "E508";
$tourVehicleArray["294509"] = "E509";
$tourVehicleArray["294510"] = "E510";
$tourVehicleArray["294511"] = "E511";
$tourVehicleArray["294512"] = "E512";
$tourVehicleArray["294590"] = "E590";
*/
$tourCourierArray = array();
/*
$tourCourierArray["294501"] = "e8020201";
$tourCourierArray["294502"] = "e8020202";
$tourCourierArray["294503"] = "e8020203";
$tourCourierArray["294504"] = "e8020204";
$tourCourierArray["294505"] = "e8020205";
$tourCourierArray["294506"] = "e8020206";
$tourCourierArray["294507"] = "e8020207";
$tourCourierArray["294508"] = "e8020208";
$tourCourierArray["294509"] = "e8020209";
$tourCourierArray["294510"] = "e8020210";
$tourCourierArray["294511"] = "e8020211";
$tourCourierArray["294512"] = "e8020212";
$tourCourierArray["294590"] = "e8020213";
*/
function mcStrWrap($aStr)
{
$aStr = str_replace("'", "", $aStr);
// $aStr = mcDecode($aStr);
$aStr = removeFieldSigns($aStr);
// $aStr = str_replace("'", "\'", $aStr);
$aStr = str_replace("\"", '', $aStr);
$aStr = str_replace("ß", "ß", $aStr);
$aStr = str_replace("ä", "ä", $aStr);
$aStr = str_replace("ö", "ö", $aStr);
$aStr = str_replace("ü", "ü", $aStr);
$aStr = str_replace("Ä", "Ä", $aStr);
$aStr = str_replace("Ö", "Ö", $aStr);
$aStr = str_replace("Ü", "Ü", $aStr);
return $aStr;
}
echo "importFile: " . $importFile . "
";
echo "hqId: " . $hqId . "
";
echo "csId: " . $csId . "
";
if ($importFile != "" && $hqId != "" && is_numeric($hqId) && $csId != "" && is_numeric($csId)) :
if (file_exists($importFile)) :
$currentTime = getDateTime("0");
// The filename contains the execution day !!!!
// $tmpJbOrdertime = substr($filename,-12,8);
// $jbOrdertime = substr($tmpJbOrdertime,0,4) . "-" . substr($tmpJbOrdertime,4,2) . "-" . substr($tmpJbOrdertime,6,2) . " 08:00:00";
// echo $jbOrdertime . "
";
// $jbOrdertime = checkDateTimeFormat($jbOrdertime); // DISABLED BECAUSE OF PHP VERSION ONLY !!! ACTIVATE AFTER MIGRATION !!!
// $checkGmtdatetimeIsValid = strtotime($jbOrdertime);
// echo $checkGmtdatetimeIsValid . "
";
// if ($checkGmtdatetimeIsValid != "" && is_int($checkGmtdatetimeIsValid)):
if (true):
// ***********************
// * IMPORT FILE article *
// ***********************
if (!(strpos($filename, $csEid . "_import_BAUHAUS_") === false)) :
$executionCount = 0;
$insertCount = 0;
$updateCount = 0;
$failedCount = 0;
$remTourNo = "";
$f_tour_no = 1;
$remIsPickup = true;
$jbIdNew = 0;
$trSort = 0; // Init for 1st station
$tratSort = 1; // Init all serial numbers !!!!
$rowToImport = array();
$parImportFieldsGroup == "";
if ($groupId != "") :
$parImportFieldsGroup = getParameterValue("0", "IMPORT_BAUHAUS_JOB_FIELDS", "0");
endif;
if ($parImportFieldsGroup != "") :
$rowToImport = spliti(",", $parImportFieldsGroup);
else :
/*
Station;Datum;Avisiertes Zeitfenster;Auftragsnr.;Name;Straße;Hausnr.;Plz;Ort;Telefonnr.;Kunde;Bemerkungen (Warenart; KG; Stpl.; Zone; Inkasso; Besonderheiten
*/
$rowToImport[0] = "f_lfd"; // A : Nur fortlaufende Nummer
$rowToImport[1] = "f_orderdate"; // B : Tag des Auftragsbeginns
$rowToImport[2] = "f_time_window"; // C : Auftragsstartzeit und gewünschte Auftragsendezeit
$rowToImport[3] = "f_tr_commission_no"; // D : Kundenauftragsnummer
$rowToImport[4] = "f_tr_comp"; // E : Kunde / Firma
$rowToImport[5] = "f_ad_street"; // F : Straße
$rowToImport[6] = "f_tr_hsno"; // G : Hausnummer
$rowToImport[7] = "f_ad_zipcode"; // H : PLZ
$rowToImport[8] = "f_ad_city"; // I : Ort
$rowToImport[9] = "f_tr_phone"; // J : Telefon
$rowToImport[10] = "f_tr_remark"; // K : Bemerkung
$rowToImport[11] = "f_dummy_01"; // L : ?
endif;
$rowToImportLen = count($rowToImport);
// Read file to import
$data = importCSV($importFile, $delimiter, "1");
$dataLen = count($data);
echo "Datensätze: " . ($dataLen - 1) . "
";
// print_r($data);
// Loop all rows (EXCEPT header row [$j = 1])
for ($j = 0; $j < $dataLen; $j++) {
// Loop for all fields of $fields of the row
for ($i = 0; $i < $rowToImportLen; $i++) {
${$rowToImport[$i]} = $data[$j][$i];
}
// Check for existing headline
if ($j > 0) :
$f_lfd = mcStrWrap($f_lfd);
$f_orderdate = mcStrWrap($f_orderdate);
$f_time_window = mcStrWrap($f_time_window);
$f_tr_commission_no = mcStrWrap($f_tr_commission_no);
$f_tr_comp = mcStrWrap($f_tr_comp);
$f_ad_street = mcStrWrap($f_ad_street);
$f_tr_hsno = mcStrWrap($f_tr_hsno);
$f_ad_zipcode = mcStrWrap($f_ad_zipcode);
$f_ad_city = mcStrWrap($f_ad_city);
$f_tr_phone = mcStrWrap($f_tr_phone);
$f_tr_remark = mcStrWrap($f_tr_remark);
// Ordertime by order date and time window
$f_ordertime = substr($f_orderdate,6,4) . "-" . substr($f_orderdate,3,2) . "-" . substr($f_orderdate,0,2);
$f_warningtime = $f_ordertime;
if ($f_time_window != "") :
$orderClockTime = " " . substr($f_time_window,0,2) . ":" . substr($f_time_window,3,2) . ":00";
$warningClockTime = " " . substr($f_time_window,8,2) . ":" . substr($f_time_window,11,2) . ":00";
else :
$orderClockTime = " 08:00:00";
$warningClockTime = " 08:00:00";
endif;
// Special static handling per headquarters
if ($hqId == "111") :
$orderClockTime = " 07:30:00";
$warningClockTime = " 07:30:00";
endif;
$f_ordertime .= $orderClockTime;
$f_warningtime .= $warningClockTime;
$f_tr_person = $f_tr_comp;
// Set vehicle and courier
$crId = "";
$jbStatus = "9";
$jbTaketime = "";
if ($crId != "" && is_numeric($crId)) :
$jbStatus = "1";
$jbTaketime = $currentTime;
endif;
$jbType = "2"; // Init with job type "G"
$jbFinishtime = "";
$jbRemark = "";
$vhtId = "";
$jbCrFilter = "";
$sum_totalprice = 0;
$f_jb_cr_price = 0;
$jbCrvhWeight = 0;
$jbCrvhLength = 0;
$jbCrvhWidth = 0;
$jbCrvhHeight = 0;
$jbCrvhPosition = 0;
echo "------------------------------------------------------
";
echo "f_tour_no: " . $f_tour_no . "
";
echo "f_lfd: " . $f_lfd . "
";
echo "f_orderdate: " . $f_orderdate . "
";
echo "f_time_window: " . $f_time_window . "
";
echo "f_ordertime: " . $f_ordertime . "
";
echo "f_warningtime: " . $f_warningtime . "
";
echo "f_tr_commission_no: " . $f_tr_commission_no . "
";
echo "f_tr_comp: " . $f_tr_comp . "
";
echo "f_tr_person: " . $f_tr_person . "
";
echo "f_ad_street: " . $f_ad_street . "
";
echo "f_tr_hsno: " . $f_tr_hsno . "
";
echo "f_ad_zipcode: " . $f_ad_zipcode . "
";
echo "f_ad_city: " . $f_ad_city . "
";
echo "f_tr_phone: " . $f_tr_phone . "
";
echo "f_tr_remark: " . $f_tr_remark . "
";
// Check for existence of the imported "tour name" AND "station number" (unique for station)
$gdcEntryExists = false;
if (existsEntry("genericdatacontainer",array("gdc_obj_type","tr","gdc_gen_fieldname","check_exist","gdc_content",$f_orderdate . " " . $f_tr_commission_no,"gdc_context","BAUHAUS"))) :
$gdcEntryExists = true;
endif;
// Do NOT import if BAUHAUS number does exist !!!!
if (!$gdcEntryExists) :
// Insert new article
if ($executeImportProcess == "1") :
TA("B");
if ($cscIdPayer == "") :
// Get root costcenter
$cscIdPayer = getFieldValueFromClause("costcenter", "csc_id", "cs_id = '" . $csId . "' AND (isnull(csc_pre_id) OR csc_pre_id = '')");
endif;
/*
$crId = "";
$crSid = "";
if ($crvhId != "") :
$crId = getFieldValueFromId("couriervehicle","crvh_id",$crvhId,"cr_id");
if ($crId != "") :
$crSid = $vhtPrefix . $f_crvh_sid;
endif;
endif;
*/
$txValue = "4";
$txSign = "V";
$noValidationOfAddress = true;
if ($remTourNo == "" || $remTourNo == $f_tour_no) :
if ($jbTourdataZipcode != "") : $jbTourdataZipcode .= ";"; endif;
$jbTourdataZipcode .= $f_ad_zipcode;
if ($jbTourdataCity != "") : $jbTourdataCity .= ";"; endif;
$jbTourdataCity .= $f_ad_city;
if ($jbTourdataCountry != "") : $jbTourdataCountry .= ";"; endif;
$jbTourdataCountry .= "DE";
endif;
// Insert address
if ($f_ad_street == "" || $f_ad_zipcode == "" || $f_ad_city == "") :
$noValidationOfAddress = "1";
endif;
if ($f_ad_zipcode != "" && $f_ad_city != "") :
$tmpArray = insertAddress($f_ad_street, $f_ad_zipcode, $f_ad_city, "", $f_ad_country, $noValidationOfAddress);
$ad_id_new = $tmpArray[0];
$isPickup = false;
else :
$ad_id_new = $address["id"];
$f_tr_hsno = $address["hsno"];
$isPickup = true;
endif;
// $outText .= "AD_ID : " . $ad_id_new . " | ";
// If current station IS "pickup" AND the station before was NOT "pickup" then start next tour
// Check last stations
if ($j < 1 || $j >= ($dataLen - 2)) :
$remIsPickup = true;
endif;
echo "isPickup : " . ($isPickup ? "YES" : "NO") . " remIsPickup : " . ($remIsPickup ? "YES" : "NO") . "
";
if ($isPickup && !$remIsPickup) :
$f_tour_no++;
$remIsPickup = $isPickup;
endif;
// Tourname
$f_jb_tourname = $f_tr_comp . " " . $f_orderdate . " " . $f_tour_no;
if ($fire) :
// Insert new job because new cartage note does begin
if ($remTourNo == "" || $remTourNo != $f_tour_no) :
// Finalize currently imported job
// Write "jb_tourdata" of the job currently imported
if ($remTourNo != "" && $jbIdNew != "" && is_numeric($jbIdNew)) :
$jbTourdata = $jbTourdataZipcode . "|" . $jbTourdataCity . "|" . $jbTourdataCountry;
updateStmt("job","jb_id",$jbIdNew,array("jb_tourdata",$jbTourdata));
endif;
// Remove existing tourname
updateStmt("job","jb_tourname",$f_jb_tourname,array("jb_tourname",""), "jb_tourname = '" . $f_jb_tourname . "'");
// Tour data
/*
if ($jbIdNew != "" && is_numeric($jbIdNew)) :
// updateStmt("job","jb_id",$jbIdNew,array("jb_tourdata",$jbTourdata));
endif;
*/
$jbIdNew = ""; // Init
// Insert job
insertStmt("job", array("hq_id", $hqId, "csc_id", "", "vht_id", $vhtId, "csc_id_payer", $cscIdPayer, "csc_id_related", "0", "jb_payment", "0",
"jb_ordertime", $f_ordertime, "jb_reserv", "1", "cr_id", $crId, "cr_sid", $crSid, "cr_id_order", $crId,
"jb_cr_filter", $jbCrFilter, "jb_cr_filter_opt", "", "jb_waitstorno", "0",
"jb_taketime", $jbTaketime, "jb_status", $jbStatus, "jb_autoranking", "0", "jb_type", $jbType,
"jb_incomplete", "0", "jb_globaljob", "0", "jb_tourname", $f_jb_tourname,
"jb_finishtime", $jbFinishtime, "emp_id", $usr_id,
"jb_serviceprice", "0", "jb_fixprice", $sum_totalprice, "jb_totalprice", $sum_totalprice, "jb_subtotalprice", $sum_totalprice,
"jb_cr_price", $f_jb_cr_price, "jb_cr_subprice", $f_jb_cr_price,
"jb_postage", "0", "jb_freetext_1", $jbRemark,
"jb_weight", $jbCrvhWeight, "jb_crvh_length", $jbCrvhLength, "jb_crvh_width", $jbCrvhWidth,
"jb_crvh_height", $jbCrvhHeight, "jb_crvh_position", $jbCrvhPosition,
"jb_tourdata", $jbTourdata, "jb_lockuser", "0", "jb_id_parent", "0", "jb_dispoinfo", "",
"jb_sales_tax_rate", $txValue, "jb_sales_tax_rate_sign", $txSign, "jb_timeunits", "0",
"jb_service", "", "jb_booktime", "", "jb_warningtime", $f_warningtime, "jb_createtime", $currentTime));
$jbIdNew = getLastInsertId();
$trSort = 0;
$remTourNo = $f_tour_no;
$remIsPickup = true;
// Init for the next job to be imported
$jbTourdata = "";
// Init with current values
$jbTourdataZipcode = $f_ad_zipcode;
$jbTourdataCity = $f_ad_city;
$jbTourdataCountry = "DE";
endif;
// Check for inserted job
if ($jbIdNew != "") :
$trSort++;
insertStmt("tour", array("jb_id", $jbIdNew, "ad_id", $ad_id_new, "tr_sort", $trSort, "tr_comp", $f_tr_comp, "tr_comp2", "",
"tr_hsno", $f_tr_hsno, "csc_id", $cscIdPayerExtern, "tr_status", "0",
"tr_commission_no", $f_tr_commission_no, "tr_ware_from_to", "",
"tr_person", $f_tr_person, "tr_phone", $f_tr_phone, "tr_remark", $f_tr_remark, "tr_cs_freetext", $f_tr_cs_freetext));
$trIdNew = getLastInsertID();
// Insert tourservice data
insertStmt("tourservice", array("tr_id", $trIdNew, "jb_id", $jbIdNew, "csc_id", $cscIdPayer, "tr_sort", $trSort,
"srv_id", "0", "trs_srv_name", "Fixpreis", "srvt_id", "0", "trs_srvt_name", "",
"trs_price", $sum_totalprice));
// Generate invoice text
// mk_jb_invtext($jbIdNew, false);
// Tourname
// insertStmt("genericdatacontainer", array("gdc_obj_type", "tr", "gdc_obj_id", $trIdNew, "gdc_gen_fieldname", "check_exist", "gdc_content", $f_orderdate . " " . $f_tr_commission_no, "gdc_context", "BAUHAUS"));
// Insert tourarticle data (delivery stations)
/*
insertStmt("tourarticle", array("tr_id", $trIdNew, "jb_id", $jbIdNew, "tr_sort", $trSort, "trat_sort", "1", "at_id", "", "trat_quantity", "0",
"trat_weight", $f_trat_weight, "trat_price", "0", "trat_packingpieces", $f_trat_packingpieces, "trat_serialno", $f_tr_commission_no,
"trat_remark", $f_trat_remark, "trat_createtime", $currentTime));
*/
// Insert tourarticle data (pick up station only)
// ATTENTION: Execution only if pick-up station is NOT finished by default
/*
if (!$pickUpStationFinishedByDefault) :
insertStmt("tourarticle", array("tr_id", $trIdPickUpNew, "jb_id", $jbIdNew, "tr_sort", "1", "trat_sort", $tratSort, "at_id", "", "trat_quantity", "0",
"trat_weight", $f_trat_weight, "trat_price", "0", "trat_packingpieces", $f_trat_packingpieces, "trat_serialno", $f_tr_commission_no,
"trat_remark", $f_trat_remark, "trat_createtime", $currentTime));
$tratSort++;
endif;
*/
$executionCount++;
endif;
TA("C");
TA("E");
endif;
endif;
else :
$outText .= getLngt("Der Datensatz existiert schon! Es erfolgte kein Import!") . " [" . $f_order_id . "]
";
endif;
endif; // Check for headline
}
// If at least onne imported job does exist ($jbIdNew > 0) then finalize last imported job
// Write "jb_tourdata" of the job currently imported
if ($jbIdNew != "" && is_numeric($jbIdNew)) :
$jbTourdata = $jbTourdataZipcode . "|" . $jbTourdataCity . "|" . $jbTourdataCountry;
updateStmt("job","jb_id",$jbIdNew,array("jb_tourdata",$jbTourdata));
endif;
$outText .= getLngt("Einträge in der Importdatei: " . $dataLen . "
");
$outText .= getLngt("Verarbeitete Einträge: " . $executionCount . "
");
else :
$statusMessage .= getLngt("Die angegebene Datei scheint nicht kompatibel zur angeforderten Importfunktionalität!");
endif;
else :
$statusMessage .= getLngt("Das Datum für den Ausführungstag im Dateinamen scheint nicht korrekt! Bitte folgendes Format für den Dateinamen verwenden: import_BAUHAUS_YYYYMMDD.csv");
endif;
else :
$statusMessage .= getLngt("Die angegebene Datei existiert nicht!");
endif;
else :
$statusMessage .= getLngt("Es wurde keine Datei spezifiziert!");
endif;
?>