Bezahler der Tour) geöffnet. Unten auf der linken Hälfte kann über den Button "Durchsuchen" die (lokale) CSV-Datei ausgewählt und über den Button "Upload" anschließend hochgeladen werden. Der Dateiname erscheint im Anschluss (nach dem Reload) auf der linken Seite. ACHTUNG: Der Dateiname wurde vorne um die Kundennummer (EID) automatisch erweitert! Auf der rechten Seite wählt man den Eintrag "TOURS" (analog zum Dateinamensbestandteil der CSV-Datei) aus. Auf der linken Seite wird entsprechend der Dateiname dann als Link dargestellt. Wird dieser betätigt, wird eine weitere Seite für den Import geöffnet. Diese schreibt den Dateiinhalt auf den Schirm, gefolgt von Datensatzstruktur "import_TOURS_xxxx.csv" Die folgende Aufstellung definiert die Reihenfolge der Felder (Spalten) der CSV-Datei: - Lfd : Numerisch fortlaufend (1..n) - Tourname/Tourkennung ggfs. mit Präfix (z.B. "T01_") und IMMER mit Datumssemantik, also z.B. für den 01. Juni 2019 (z.B.) IMMER im Format "01062019" (TTMMJJJ) in den hinteren 8 Zeichen. Das Format ist zwingend und die letzten 8 Zeichen ebenfalls. Nachfolgende Stationen MÜSSEN dann identisch sein und denselben Tourennamen aufweisen! Folgt eine Änderung in diesem Feld bei einem folgenden Datensatz (z.B."T02_01062019"), dann beginnt ein neuer Auftrag, wobei dann für diesen die nachfolgenden Zellen der wieder identisch sein müssen. Möchte man also nur einen Auftrag in der csv-Datei, definiert man alle Zellen der 2. Spalte Datensatzes mit z.B. "Txx_01062019". WICHTIG: Das angegebene Datum im Tourenname ist wichtig für den Ausführungstag! Per default wird vorerst die Uhrzeit 09:00 Uhr eingetragen. Diese kann in der Erfassung nach wunsch geändert werden. - Optionale Kommissionsnummer der Station Sollte dieses Feld leer gelasssen werden, würden zwei ";"-Zeichen in der Datei direkt hintereinanderstehen. Beispiel MIT : xxxx;KOM_01;yyyy Beispiel OHNE: xxxx;;yyyy - Firma/Kunde der Station - Bemerkung (Fahrer) für die Station - Kennung für Station, kann z.B. für jede Tour durchnummeriert werden ("Auftrags-Lfd.") Wenn z.B. nur ein Auftrag, also nur eine Tour in der datei, dann entspräche z.B. diese "Auftrags-Lfd." der Lfd. in der 1. Spalte. - PLZ der Station - Stadt der Station - Strasse der Station - Hausnr. der Station Wenn diese leer ist, also z.B. in de Str. mit übergeben wird, dann wird automatisch ein Punkt (".") hier eingetragen - Erwartete Abfahrtszeit von der Station Wird hier eine Zeit eingetragen, wird diese in die Stationsbemerkung geschrieben - Beispiele: [1] -- DATEIANFANG -- 1;T01_03062019;KOM_100000;Firma_1;Bemerkung_1;1;22525;Hamburg;Ottensener Str.;8; 2;T01_03062019;KOM_100001;Firma_2;Bemerkung_2;2;22525;Hamburg;Schnackenburgallee;157; 3;T02_04062019;KOM_100003;Firma_A;Bemerkung_A;1;22525;Hamburg;Schnackenburgallee;157; 4;T02_04062019;KOM_100004;Firma_B;Bemerkung_B;2;22525;Hamburg;Ottensener Str.;8; -- DATEIENDE -- [2] -- DATEIANFANG -- 1;T01_03062019;KOM_100000;Firma_1;Bemerkung_1;1;22525;Hamburg;Ottensener Str.;8; 2;T01_03062019;KOM_100001;Firma_2;Bemerkung_2;2;22525;Hamburg;Schnackenburgallee;157; 3;T01_03062019;KOM_100002;Firma_3;Bemerkung_3;3;.... .... 8;T02_04062019;KOM_100009;Firma_A;Bemerkung_1;1;22525;Hamburg;Ottensener Str.;8; 9;T02_04062019;KOM_100009;Firma_B;Bemerkung_2;2;22525;Hamburg;Schnackenburgallee;157; 10;T02_04062019;KOM_100010;Firma_C;Bemerkung_3;3;.... .... -- DATEIENDE -- */ // $doNotIncludeGeocode = true; include_once ("../import/import.php"); include_once ("../include/inc_vehicle.inc.php"); include_once ("../include/inc_job.inc.php"); // Execution-Time for script set_time_limit(0); // Check HTTP-Parameters getSecHttpVars("1",array("f_act", "statusMessage", "importFile", "executeImportProcess", "deactivateMenu", "objType", "objId")); getLanguage(__FILE__); $deactivateMenuStatic = "1"; $pageTitel = getLngt("IMPORT AUFTRÄGE"); include_once ("../admin/menu.php"); include_once ("../include/html.inc.php"); getCurrentScript(__FILE__); // Check for authentication access $usrAccessArray["hq"] = "1"; authCheckForAccess($hq_id, $usr_id, $emp_id, "1", $customerId, $cscIdRoot, $cscIdActual); if (!(authCheckEmployeeRights($emp_id, "22"))) : gotoReferer("1"); endif; $empHasAdminRights = false; $empIdRootAdmin = getEmpIdOfRootAdmin($userTypeName); if ($empIdRootAdmin != "" && $emp_id == $empIdRootAdmin) : $empHasAdminRights = true; endif; $debug = false; if ($empIdRootAdmin == $emp_id) : $debug = false; endif; if ($f_act != "executeImport" || $executeImportProcess != "1") : $executeImportProcess = ""; endif; // Execute import after check run $showExecutionProcessButton = true; $outText = ""; $closeWindow = "0"; $delimiter = ";"; $fire = true; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! $currentDate = getDateTime(3); $objType = strtolower($objType); // Import for special customer ONLY !!!! $csEid = ""; $cscIdPayer = ""; if ($objType == "cs" && $objId != "" && is_numeric($objId)) : $csId = $objId; endif; if ($objType == "csc" && $objId != "" && is_numeric($objId)) : $cscIdPayer = $objId; $csId = getFieldValueFromClause("costcenter", "cs_id", "csc_id = '" . $cscIdPayer . "'"); endif; if ($csId != "") : $hqId = getFieldValueFromClause("customer", "hq_id", "cs_id = '" . $csId . "'"); $csEid = getFieldValueFromClause("customer", "cs_eid", "cs_id = '" . $csId . "'"); endif; if ($hqId == "") : $hqId = $hq_id; endif; $cscIdPayerExtern = getParameterValue("0", "CSC_ID_PAYER_EXTERN", $hqId); // Init $jbIdNew = ""; $jbTourdata = ""; $jbTourdataZipcode = ""; $jbTourdataCity = ""; $jbTourdataCountry = ""; $pickUpStationFinishedByDefault = true; // Current file to be imported $importFile = urldecode($importFile); $posLastSlash = strrpos($importFile, "/"); $posLastSlash++; $pathname = substr($importFile, 0, $posLastSlash); $filename = substr($importFile, $posLastSlash); $outText = "" . 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 = removeFieldSigns($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"); // *********************** // * IMPORT FILE article * // *********************** if (!(strpos($filename, $csEid . "_import_TOURS_") === false)) : $executionCount = 0; $insertCount = 0; $updateCount = 0; $failedCount = 0; $remTourNo = ""; $jbIdNew = 0; $trSort = 0; // Init for 1st station $tratSort = 1; // Init all serial numbers !!!! $rowToImport = array(); $parImportFieldsGroup == ""; if ($groupId != "") : $parImportFieldsGroup = getParameterValue("0", "IMPORT_TOURS_JOB_FIELDS", "0"); endif; if ($parImportFieldsGroup != "") : $rowToImport = spliti(",", $parImportFieldsGroup); else : $rowToImport[0] = "f_no_row"; // A : (Laufende) Nr. (Datensatz) $rowToImport[1] = "f_jb_tourname"; // B : Auftrag Bezeichnung (Tourname) $rowToImport[2] = "f_tr_commission_no"; // C : Station Kommissionsnummer $rowToImport[3] = "f_tr_comp"; // D : Station Bezeichnung $rowToImport[4] = "f_tr_remark"; // E : Station Bemerkung $rowToImport[5] = "f_tr_sort"; // F : Station Position in Tour $rowToImport[6] = "f_ad_zipcode"; // G : Station PLZ $rowToImport[7] = "f_ad_city"; // H : Station Ort $rowToImport[8] = "f_ad_street"; // I : Station Straße $rowToImport[9] = "f_tr_hsno"; // J : Station Hausnummer $rowToImport[10] = "f_tr_arrival_time"; // K : Station Ankunft $rowToImport[11] = "f_tr_departure_time"; // L : Station Abfahrt $rowToImport[12] = "f_tr_point2point_time"; // M : Station Strecke $rowToImport[13] = "f_tr_point2point_min"; // N : Auftrag Fixe Dauer $rowToImport[14] = "f_dummy_01"; // O : ? endif; $rowToImportLen = count($rowToImport); // Read file to import $data = importCSV($importFile, $delimiter, "1"); $dataLen = count($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]; } $f_no_row = mcStrWrap($f_no_row); $f_jb_tourname = mcStrWrap($f_jb_tourname); $f_tr_commission_no = mcStrWrap($f_tr_commission_no); $f_tr_comp = mcStrWrap($f_tr_comp); $f_tr_remark = mcStrWrap($f_tr_remark); $f_tr_sort = mcStrWrap($f_tr_sort); $f_ad_zipcode = mcStrWrap($f_ad_zipcode); $f_ad_city = mcStrWrap($f_ad_city); $f_ad_street = mcStrWrap($f_ad_street); $f_tr_hsno = mcStrWrap($f_tr_hsno); $f_tr_arrival_time = mcStrWrap($f_tr_arrival_time); $f_tr_departure_time = mcStrWrap($f_tr_departure_time); $f_tr_point2point_time = mcStrWrap($f_tr_point2point_time); $f_tr_point2point_min = mcStrWrap($f_tr_point2point_min); // Check for existing headline if ($j > 0 || ($f_no_row != "" && is_numeric($f_no_row))) : $tmpArray = spliti("_", $f_tr_comp); $f_tr_person = $tmpArray[0]; $tmpArray = spliti("_", $f_tr_remark); $f_tr_phone = $tmpArray[2]; $f_tr_phone = str_replace ("Tel:", "", $f_tr_phone); $f_tr_phone = eregPhoneNo($f_tr_phone); if ($f_tr_hsno == "") : $f_tr_hsno = "."; endif; if ($f_tr_arrival_time != "") : $f_tr_remark .= "\n\nAnkunft: " . $f_tr_arrival_time; endif; if ($f_tr_departure_time != "") : $f_tr_remark .= "\n\nAbfahrt" . $f_tr_departure_time; endif; // $f_tr_remark .= $f_tr_point2point_time // $f_tr_remark .= $f_tr_point2point_min // Clock time depends on headquarters $clockTime = "09:00:00"; /* if ($hqId == "3") : $clockTime = "12:45:00"; endif; */ if ($f_jb_tourname != "") : $f_jb_orderdate = substr($f_jb_tourname, -8); $f_jb_ordertime = "20" . substr($f_jb_orderdate,6,2) . "-" . substr($f_jb_orderdate,2,2) . "-" . substr($f_jb_orderdate,0,2) . " " . $clockTime; endif; // The first row of the tour contains the tour name. The following rows of the same tour are empty for $f_jb_tourname !!!! if ($f_jb_tourname == "") : $f_jb_tourname = $remTourNo; endif; // Set vehicle and courier $crId = ""; /* $crSid = $tourVehicleArray[$f_jb_tourname]; if ($crSid != "") : $crId = getFieldValueFromId("courier","cr_sid",$crSid,"cr_id"); endif; */ $crEid = $tourCourierArray[$f_jb_tourname]; if ($crEid != "") : $crId = getFieldValueFromId("courier","cr_eid",$crEid,"cr_id"); endif; $jbStatus = "9"; $jbTaketime = ""; if ($crId != "" && is_numeric($crId)) : $jbStatus = "1"; $jbTaketime = $currentTime; endif; $jbType = ""; $jbFinishtime = ""; $jbRemark = ""; $vhtId = ""; $jbCrFilter = ""; $sum_totalprice = 0; $f_jb_cr_price = 0; $jbCrvhWeight = 0; $jbCrvhLength = 0; $jbCrvhWidth = 0; $jbCrvhHeight = 0; $jbCrvhPosition = 0; echo $f_no_row . ";" . $f_jb_tourname . ";" . $f_tr_comp . ";" . $f_tr_remark . ";" . $f_tr_sort . ";" . $f_ad_zipcode . ";"; echo $f_ad_city . ";" . $f_ad_street . ";" . $f_tr_hsno . ";" . $f_tr_arrival_time . ";" . $f_tr_departure_time . ";" . $f_tr_point2point_time . ";"; echo $f_tr_point2point_min . ";" . $f_tr_person . ";" . $f_tr_phone . ";" . $f_jb_ordertime; echo "
"; // 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_jb_tourname . " " . $f_tr_sort,"gdc_context","TOURS"))) : $gdcEntryExists = true; endif; // Do NOT import if TOURS 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_jb_tourname) : 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 $tmpArray = insertAddress($f_ad_street, $f_ad_zipcode, $f_ad_city, "", $f_ad_country, $noValidationOfAddress); $ad_id_new = $tmpArray[0]; $outText .= "AD_ID : " . $ad_id_new . " | "; if ($fire) : // Insert new job because new cartage note does begin if ($remTourNo == "" || $remTourNo != $f_jb_tourname) : // 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_jb_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", "")); $jbIdNew = getLastInsertId(); $trSort = 0; // Init for 1st station $tratSort = 1; // Init all serial numbers !!!! $remTourNo = $f_jb_tourname; // 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)); */ insertStmt("tourservice", array("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", "info_0", "gdc_content", $f_jb_tourname . " " . $f_tr_sort, "gdc_context", "TOURS")); insertStmt("genericdatacontainer", array("gdc_obj_type", "tr", "gdc_obj_id", $trIdNew, "gdc_gen_fieldname", "check_exist", "gdc_content", $f_jb_tourname . " " . $f_tr_sort, "gdc_context", "TOURS")); // 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_jb_tourname . " " . $f_tr_sort . "]
"; 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("Die angegebene Datei existiert nicht!"); endif; else : $statusMessage .= getLngt("Es wurde keine Datei spezifiziert!"); endif; ?> <?php echo $pageTitel ?>