0] or headquarter [csc_id = 0]) $job_csc_id = getFieldValueFromId($dbh_jb, "jb_id", $job_id, "csc_id"); if ($job_csc_id == "") : $job_csc_id = "0"; endif; $fieldClause = getDBFields("job") . "," . getDBFields("vehicletype") . "," . getDBFields("vehicletype_real") . "," . getDBFields("jobstatus") . "," . getDBFields("jb_latesttaketime"); $fieldClause .= ", jbprc_11.jbprc_price AS jbprc_km, jbprc_12.jbprc_price AS jbprc_co2"; $fieldClause .= ", CONCAT(jb.jb_crvh_length,' x ',jb.jb_crvh_width,' x ',jb.jb_crvh_height,' x ',jb.jb_crvh_position) AS jb_crvh_measures"; $fieldClause .= ", srvpt.srvpt_traveltime, gdc_jb_search.gdc_content AS gdc_jb_search "; if ($globalParUseRelatedCustomer == 1) : $fieldClause .= ", gdc_jb_man_service_no.gdc_content AS gdc_jb_man_service_no "; endif; // Check for existing costcenter if ($job_csc_id != "0") : $fieldClause .= "," . getDBFields("costcenter"); endif; // $fromClause = $dbh_jb . " AS jb, metatype AS vht, metatype AS jbs "; $fromClause = "metatype AS vht, metatype AS jbs "; if ($job_csc_id != "0") : $fromClause .= ", costcenter AS csc "; endif; $fromClause .= ", " . $dbh_jb . " AS jb "; // Additional joins e.g. for traveltime to startaddress, GDC values, etc. $fromClause .= " LEFT JOIN genericdatacontainer AS gdc_jb_search ON gdc_jb_search.gdc_obj_id = jb.jb_id AND gdc_jb_search.gdc_obj_type = 'jb' AND gdc_jb_search.gdc_gen_fieldname = 'jb_search' "; if ($globalParUseRelatedCustomer == 1) : $fromClause .= " LEFT JOIN genericdatacontainer AS gdc_jb_man_service_no ON gdc_jb_man_service_no.gdc_obj_id = jb.jb_id AND gdc_jb_man_service_no.gdc_obj_type = 'jb' AND gdc_jb_man_service_no.gdc_gen_fieldname = 'man_sams' "; endif; $fromClause .= " LEFT JOIN jobprice AS jbprc_11 ON jbprc_11.jb_id = jb.jb_id AND jbprc_11.mt_sort = '11' "; $fromClause .= " LEFT JOIN jobprice AS jbprc_12 ON jbprc_12.jb_id = jb.jb_id AND jbprc_12.mt_sort = '12' "; $fromClause .= " LEFT JOIN " . $dbh_tr . " AS tr ON jb.jb_id = tr.jb_id AND tr.tr_sort = '1' "; $fromClause .= " LEFT JOIN address AS ad ON tr.ad_id = ad.ad_id "; $fromClause .= " LEFT JOIN serviceplz AS srvp ON ad.ad_zipcode = srvp.srvp_plz "; $fromClause .= " LEFT JOIN serviceplztraveltime AS srvpt ON srvp.srvp_id = srvpt.srvp_id AND srvpt.hq_id = jb.hq_id "; $fromClause .= " LEFT JOIN metatype AS vht_real ON jb.vht_id_real = vht_real.mt_sort AND vht_real.mt_type = 'vehicletype' "; $whereClause = "jb.jb_id = " . $job_id . " AND "; if ($job_csc_id != "0") : $whereClause .= "(jb.csc_id = csc.csc_id) AND "; endif; $whereClause .= "(jb.vht_id = vht.mt_sort AND vht.mt_type = 'vehicletype') AND "; $whereClause .= "(jb.jb_status = jbs.mt_sort AND jbs.mt_type = 'job_status') "; // Changes only because of jb_status='9' within the SAME list as jb_status='0'! Look in "jb_list.php" // $whereClause .= "((jb.jb_status = jbs.mt_sort OR jb.jb_status-9 = jbs.mt_sort) AND jbs.mt_type = 'job_status') "; $orderByClause = ""; if ($userTypeName == "cs") : $fieldClause = getDBFields("job") . "," . getDBFields("vehicletype") . "," . getDBFields("jobstatus") . "," . getDBFields("costcenter") . "," . getDBFields("jb_latesttaketime"); $fromClause = $dbh_jb . " AS jb, costcenter AS csc, metatype AS vht, metatype AS jbs "; $whereClause = "jb.hq_id = " . $currentHqId . " AND "; $whereClause .= "jb.jb_id = " . $job_id . " AND "; $whereClause .= "(jb.csc_id_payer = csc.csc_id) AND "; $whereClause .= "(jb.vht_id = vht.mt_sort AND vht.mt_type = 'vehicletype') AND "; $whereClause .= "(jb.jb_status = jbs.mt_sort AND jbs.mt_type = 'job_status') "; // Changes only because of jb_status='9' within the SAME list as jb_status='0'! Look in "jb_list.php" // $whereClause .= "((jb.jb_status = jbs.mt_sort OR jb.jb_status-9 = jbs.mt_sort) AND jbs.mt_type = 'job_status') "; $orderByClause = ""; endif; // Excludes filters for output only $constMaskExcludedFilterStr = getParameterValue("0", "MASK_MANDATORY_FILTERS", $currentHqId); $constMaskExcludedFilterArr = explode(",", $constMaskExcludedFilterStr); $constMaskExcludedFilterArrLen = count($constMaskExcludedFilterArr); $sqlqueryJob = generateStatement($fieldClause,$fromClause,$whereClause,$orderByClause); // echo $sqlqueryJob . "

"; // The JOB statement has to be executed every time because of some global parameters used for following statements if (true || $execSQLStmts == "1") : // Send request to database $result = $db->query($sqlqueryJob); if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage() . ": " . $sqlqueryJob); // Handling of type "datetime" output of the current day (today) => "H:i (d.m)" or only "H:i" (default) $constMaskJbDatetimeTodayFormat = getParameterValue("0", "MASK_JB_DATETIME_TODAY_FORMAT", $currentHqId); // Job-data $jobentry = ""; $rawJobData = ""; // (= "[JOB]"); $jobCourierId = ""; $job_usr_id = ""; $job_status = ""; $job_cr_sid = ""; $job_longhaul = ""; $job_orderer = ""; mcIsSet($jbprc_km); mcIsSet($jbprc_co2); $rowCounter = 0; while ($row = $result->fetch_assoc()): $rowCounter++; for ($i = 0; $i < $fieldsLength; $i++) : $showCol = true; if ($i % 2 == 0) : $cellColor = "#BBBBFF"; $cellColor2 = "#DDDDDD"; endif; if ($i % 2 == 1) : $cellColor = "#CCCCFF"; $cellColor2 = "#EEEEEE"; endif; if (mcArrTrim($titlesArray, $i) == "") : $titlesArray[$i] = " "; endif; $jobentry .= ""; $jobentry .= "" . $titlesArray[$i] . ""; $tmpVarName = mcArrIsSet($fieldsArray, $i); $row[$tmpVarName] = mcArrIsSet($row, $tmpVarName); ${$tmpVarName} = $row[$tmpVarName]; // Some parameters (e.g. for mail, booking, changing tourname, etc.) $job_status = $row["jb_status"]; $job_tourname = $row["jb_tourname"]; $job_export_time = $row["jb_export_time"]; $job_reserv = $row["jb_reserv"]; $job_incomplete = $row["jb_incomplete"]; $job_cr_sid = $row["cr_sid"]; $job_longhaul = $row["jb_longhaul"]; $job_orderer = $row["jb_orderer"]; $job_id_parent = $row["jb_id_parent"]; $job_subtotalprice = $row["jb_subtotalprice"]; $job_markup = $row["jb_markup"]; $jbprc_markup = $db->getOne("SELECT jbprc_price FROM jobprice WHERE jb_id = " . $job_id . " AND mt_sort = 8"); if ($jbprc_markup != "") : $job_markup = sprintf("%01.2f", $jbprc_markup); endif; if ($jbprc_km != "") : $jbprc_km = str_replace(".", ",", $jbprc_km); endif; if ($jbprc_co2 != "") : $jbprc_co2 = str_replace(".", ",", $jbprc_co2); endif; if ($userTypeName == "hq" && $f_act != "mailsend" && $f_act != "printjob" && $f_act != "export") : if ($tmpVarName == "jbprc_km") : $jbprc_km = '' . $jbprc_km . '  ' . '' . '' . '
' . defineButtonType08("Speichern", "action_km_save", "saveKM(" . $job_id . ", document.forms[0].kmValNew); containerAction('kmEdit', 'hide');", "90", "left", "0") . defineButtonType08("Schließen", "action_km_close", "containerAction('kmEdit', 'hide');", "90", "", "") . '
' . '
'; endif; if ($tmpVarName == "jbprc_co2") : $jbprc_co2 = '' . $jbprc_co2 . '  ' . '' . '' . '
' . defineButtonType08("Speichern", "action_co2_save", "saveCO2(" . $job_id . ", document.forms[0].co2ValNew); containerAction('co2Edit', 'hide');", "90", "left", "0") . defineButtonType08("Schließen", "action_co2_close", "containerAction('co2Edit', 'hide');", "90", "", "") . '
' . '
'; endif; endif; $job_ordertime = $row["jb_ordertime"]; // Get the current courier-ID of the job // if ($tmpVarName == "cr_id") : $jobCourierId = $row["cr_id"]; endif; $jobCourierId = $row["cr_id"]; // Get the payer of the job $cscIdPayer = getFieldValueFromId($dbh_jb, "jb_id", $job_id, "csc_id_payer"); $csIdPayer = getFieldValueFromId("costcenter", "csc_id", $cscIdPayer, "cs_id"); // Get the related customer of the job $cscIdRelated = getFieldValueFromId($dbh_jb, "jb_id", $job_id, "csc_id_related"); // If automailer is running check job for having subjobs to change // courier data to courier data of the subjob to get the real driver if ($automailer == "1" || $f_act == "mailsend" || $f_act == "export") : if ($job_id_parent == "-1") : // $tmpJobIdParent = getFieldValueFromId($dbh_jb,"jb_id_parent",$job_id,"jb_id"); $tmpJobIdParent = getFieldValueFromClause($dbh_jb,"jb_id"," jb_id_parent = '" . $job_id . "' ORDER BY jb_id DESC "); $jobCourierId = getFieldValueFromId($dbh_jb,"jb_id",$tmpJobIdParent,"cr_id"); $job_cr_sid = getFieldValueFromId($dbh_jb,"jb_id",$tmpJobIdParent,"cr_sid"); endif; endif; // Get the current employee (user-id !!!) of the job // HAS TO BE IN THE field-list TO GET HERE !!!!!!!!!! // if ($tmpVarName == "emp_id") : $job_usr_id = $row["emp_id"]; endif; // Special job-data if ($tmpVarName == "jb_latesttaketime") : if ($row["jb_waittime"] != "") : ${$tmpVarName} = $row["jb_waittime"]; else : $tmp = ${$tmpVarName}; if ($row["jb_reserv"] == 1) : // mktime(hour,minute,second,month,day,year) $latestTakeTime = LATEST_TAKETIME_IN_MINUTES; if (is_numeric($row["srvpt_traveltime"]) && $row["srvpt_traveltime"] > 0) : $latestTakeTime = $row["srvpt_traveltime"]; endif; ${$tmpVarName} = date("Y-m-d H:i:s", mktime(substr($tmp,11,2),substr($tmp,14,2)-($latestTakeTime),substr($tmp,17,2),substr($tmp,5,2),substr($tmp,8,2),substr($tmp,2,2))); else : ${$tmpVarName} = date("Y-m-d H:i:s", mktime(substr($tmp,11,2),substr($tmp,14,2)+5,substr($tmp,17,2),substr($tmp,5,2),substr($tmp,8,2),substr($tmp,2,2))); endif; endif; if ((date("Y-m-d H:i:s") > ${$tmpVarName}) && ($row["jb_status"] == 0)) : if ($i % 2 == 0) : $cellColor = "#FF2222"; $cellColor2 = "#FF4444"; endif; if ($i % 2 == 1) : $cellColor = "#FF3333"; $cellColor2 = "#FF5555"; endif; endif; endif; // Do not show excluded filters, remove them by parameter for output only if ($tmpVarName == "jb_cr_filter" && ${$tmpVarName} != "" && $constMaskExcludedFilterStr != "") : ${$tmpVarName} = removeItemsFromString(${$tmpVarName}, $constMaskExcludedFilterStr); endif; if ($showCol) : mcArrIsSet($outputFormatField, $tmpVarName); if ($outputFormatField[$tmpVarName] == "datetime" && ($constMaskJbDatetimeTodayFormat == "1" || $tmpVarName == "jb_export_time")) : $out = formatOutput(${$tmpVarName},$outputFormatField[$tmpVarName],"13"); // "H:i (d.m)" else : $out = formatOutput(${$tmpVarName},$outputFormatField[$tmpVarName]); endif; if ($tmpVarName == "jb_storno") : if (${$tmpVarName} != "0" && ${$tmpVarName} != "") : if ($rowCounter % 2 == 0 && $i % 2 == 0) : $cellColor = "#FF2222"; endif; if ($rowCounter % 2 == 0 && $i % 2 == 1) : $cellColor = "#FF3333"; endif; if ($rowCounter % 2 == 1 && $i % 2 == 0) : $cellColor = "#FF4444"; endif; if ($rowCounter % 2 == 1 && $i % 2 == 1) : $cellColor = "#FF5555"; endif; if (${$tmpVarName} == "1") : $out = getLngt("St.m.K."); elseif (${$tmpVarName} == "2") : $out = getLngt("St.o.K."); endif; endif; endif; if ($tmpVarName == "csc_name" && $job_csc_id == "0") : $out = getLngt("Zentrale"); endif; $jobentry .= "" . $out . ""; if ($tmpVarName == "jb_reserv") : $rawJobData .= "jb_" . $tmpVarName . "=" . $row["jb_reserv"] . "|"; // elseif ($tmpVarName == "jb_permanent") : // $rawJobData .= "jb_" . $tmpVarName . "=" . $row["jb_permanent"] . "|"; else : if ($out == " ") : $out = ""; endif; $rawJobData .= "jb_" . $tmpVarName . "=" . $out . "|"; endif; endif; $jobentry .= ""; endfor; // Link to copy the job and link to history if ($f_act != "mailsend" && $f_act != "printjob" && $f_act != "export") : // Check for access to map view $mapViewLink = ""; $showMapView = false; if ($userTypeName == "hq" && authCheckEmployeeRights($emp_id, "19")) : $showMapView = true; endif; if ($userTypeName == "cs") : $constCsShowMapView = getParameterValue("0", "MASK_JB_MAP_VIEW_ENABLED_" . $csIdPayer, "0"); if ($constCsShowMapView == "1") : $showMapView = true; endif; endif; if ($showMapView && (($jobIsAllowedToBeModified && $jobIsNotExported) || $userTypeName == "cs")) : $mapViewLink = "

" . getLngt("Kartendarstellung") . "
"; endif; if ($userTypeName == "cs") : $jobentry .= "
"; $jobentry .= $mapViewLink; // Defined above $jobentry .= ""; else : // Get some informations for the following links $tmpCmpIdPayer = getFieldValueFromId("customer", "cs_id", $csIdPayer, "cmp_id"); $tmpCmpPayerFields = getFieldsValueFromId("company", "cmp_id", $tmpCmpIdPayer, array("cmp_authenticated","cmp_visible")); $jobentry .= "
"; if ($jbAccessModeArr["1"]) : if ($globalParUseRelatedCustomer == 1) : if ($jobIsAllowedToBeModified && $jobIsNotExported) : $jobentry .= "" . getLngt("Termin vergeben") . "
"; endif; else : $jobentry .= "" . getLngt("Auftrag kopieren") . "
"; endif; endif; if ($tmpCmpPayerFields[0] == "0" || $tmpCmpPayerFields[1] == "0") : $jobentry .= "(" . getLngt("ACHTUNG") . ": " . getLngt("Der Bezahler ist") . " "; if ($tmpCmpPayerFields[0] == "0") : $jobentry .= getLngt("gesperrt"); endif; if ($tmpCmpPayerFields[0] == "0" && $tmpCmpPayerFields[1] == "0") : $jobentry .= getLngt(" und "); endif; if ($tmpCmpPayerFields[1] == "0") : $jobentry .= getLngt("ausgeblendet"); endif; $jobentry .= "!)
"; endif; $jobentry .= "
" . getLngt("Auftragshistorie") . ""; // $jobentry .= "" . getLngt("Auftragshistorie") . ""; // $jobentry .= "

" . getLngt("Kartendarstellung") . ""; $jobentry .= $mapViewLink; // Defined above $jobentry .= ""; endif; endif; endwhile; $result->free(); endif; // --- TOUR ------------------ // Parameter for displaying station number $constMaskStationsStationNumber = getObjectBasedParameterValue("JOBDETAILS_STATIONS_STATION_NUMBER", $csIdPayer, $currentHqId); // Parameter for displaying photos $jbMailEmbeddedImages = array(); $constMaskStationsPodPhoto = getParameterValue("0", "MASK_JOBDETAILS_STATIONS_POD_PHOTOS", $hq_id); if ($constMaskStationsPodPhoto == "") : $constMaskStationsPodPhoto = getParameterValue("0", "MASK_JOBDETAILS_STATIONS_POD_PHOTOS", "0"); endif; // Check for overriding parameter for station photo(s) by job configuration $trPhotos = array(); if ($constMaskStationsPodPhoto != "1") : $jbTrIds = getColVectorFromDB2ArrayByClause("tour", "tr_id", "jb_id = '" . $job_id . "'", "", "", ""); if (count($jbTrIds) > 0) : // Get required photo configuration for each station of the job into associative array // ($trPhotos[$trId] = "min|max" [e.g. $trPhotos[1234567] = "1|2" <=> at least 1 an max. 2 photos for station 1234567]) $trPhotos = getColVectorFromDB2ArrayByClause("genericdatacontainer", "gdc_content", "gdc_obj_type = 'tr' AND gdc_obj_id IN (" . implode(",", $jbTrIds) . ") AND gdc_gen_fieldname = 'tr_photo'", "gdc_obj_id", "", ""); endif; // if (count($trPhotos) > 0) : // Disabled because of optional photo is possible $constMaskStationsPodPhoto = "1"; // endif; endif; // Parameter for displaying scan events $constMaskStationsPodScanEvents = getParameterValue("0", "MASK_JOBDETAILS_STATIONS_POD_SCAN_EVENTS", $hq_id); if ($constMaskStationsPodScanEvents == "") : $constMaskStationsPodScanEvents = getParameterValue("0", "MASK_JOBDETAILS_STATIONS_POD_SCAN_EVENTS", "0"); endif; // Parameter for displaying number of scanned packages $constMaskStationsPodNumOfScannedPackages = getObjectBasedParameterValue("MASK_JOBDETAILS_STATIONS_POD_NUM_SCANNED_PACKAGES", $csIdPayer, $currentHqId); // Parameter for displaying delivery codes with names $deliveryCodeArray = array("Ok","1 NA,nicht angetroffen","2 NA,Betriebsferien,Streik","3 AV,Ware gefällt nicht","4 Kd Verursacher,sonst.Gründe", "5 Adressklärung,Anl.nicht möglich","6 AV,Bestelldaten sind falsch","7 AV,Auftrag doppelt erfasst","8 Sonstige Gründe", "9 FP,Fehlpaket","10 AV,Richtiger Artikel auf LS","11 Paket im Lager beschädigt","12 Verspätete Abf.Nachtsprung LKW", "13 Pakete im falschen RDC gelandet","14 Nachtspr.LKW verspätet im RDC","15 Besch.Pak.durch Nachtsprung","16 Pakete im RDC vertauscht", "17 Aus Zeitgründen nicht ausgel.","18 Besch.Pak.durch Fahrer/RDC","19 Sonstiges,Fehler Versandteam","20 Autobahnvollsp.,höh.Gewalt","21 Sonstiges"); $deliveryCodes = getObjectBasedParameterValue("JOBDETAILS_STATIONS_DELIVERY_CODES", $csIdPayer, $currentHqId); if ($deliveryCodes != "") : // $deliveryCodes = str_replace("|", "-,-", $deliveryCodes); // $deliveryCodeArray = spliti("-,-", $deliveryCodes); $deliveryCodeArray = getKeyValueArrayFromString($deliveryCodes); endif; $deliveryCodeArrayLen = count($deliveryCodeArray); // Parameter for displaying survey $constMaskStationsSurvey = getParameterValue("0", "MASK_JOBDETAILS_STATIONS_SURVEY", $hq_id); if ($constMaskStationsSurvey == "") : $constMaskStationsSurvey = getParameterValue("0", "MASK_JOBDETAILS_STATIONS_SURVEY", "0"); endif; // Parameter for NOT displaying costcenters in mails $parTrCostcenterDisabled = getObjectBasedParameterValue("JOB_MAIL_STATION_COSTCENTER_DISABLED", $csIdPayer, $currentHqId); // Check for displaying the arrival time in mails $trCostcenterField = "csc_name,"; $trCostcenterText = getLngt("Kostenstelle") . ","; if ($parTrCostcenterDisabled == "1") : $trCostcenterField = ""; $trCostcenterText = ""; endif; // Check for displaying the arrival time in mails or customer login $parTrArrivalTime = getObjectBasedParameterValue("JOB_MAIL_STATION_ARRIVAL_TIME", $csIdPayer, $currentHqId); // Check for displaying the arrival time in mails $trArrivalTimeField = ""; $trArrivalText = ""; if ($parTrArrivalTime == "1") : $trArrivalTimeField = "gdc_arr_tour_content,"; $trArrivalText = getLngt("Ankunftszeit") . ","; endif; // Check for tracking being enabled for the customer $csTracking = getFieldValueFromId("customer","cs_id",$csIdPayer,"cs_tracking"); // Initialize if ($f_act == "mailsend" || $f_act == "printjob" || $f_act == "export") : // Parameter for displaying field "tr_remark" $constMaskStationsPrintRemarkEnabled = ""; if ($f_act == "printjob") : $constMaskStationsPrintRemarkEnabled = getParameterValue("0", "MASK_JOBDETAILS_STATIONS_PRINT_REMARK_ENABLED", $hq_id); if ($constMaskStationsPrintRemarkEnabled == "") : $constMaskStationsPrintRemarkEnabled = getParameterValue("0", "MASK_JOBDETAILS_STATIONS_PRINT_REMARK_ENABLED", "0"); endif; endif; $tmpTitlePart = ""; $tmpFieldPart = ""; $csJbstatusmailFields = getFieldValueFromId("customer","cs_id",$csIdPayer,"cs_jbstatusmail_fields"); if (substr($csJbstatusmailFields, 0, 1) == "1" || $constMaskStationsPrintRemarkEnabled == "1") : $tmpTitlePart = getLngt("Bemerkung") . ","; $tmpFieldPart = "tr_remark,"; endif; // Define fields and titles $titles = ($constMaskStationsStationNumber == "1" ? getLngt("Station") . "," : "") . getLngt("Firma") . "," . "" . "," . getLngt("Person") . "," . getLngt("Straße + Hausnr.") . "," . getLngt("PLZ + Ort") . "," . getLngt("EID") . "," . $trCostcenterText . getLngt("Tel.") . "," . $tmpTitlePart . getLngt("Kommissionsnummer") . "," . $trArrivalText . getLngt("Erledigungszeit") . "," . getLngt("Quittungsgeber") . "," . getLngt("Unterschrift"); $fields = ($constMaskStationsStationNumber == "1" ? "tr_sort," : "") . "tr_comp,tr_comp2,tr_person,ad_street_hsno,ad_zipcode_city,cs_eid," . $trCostcenterField . "tr_phone," . $tmpFieldPart . "tr_commission_no," . $trArrivalTimeField . "tr_finishtime,tr_signname,tr_sign"; // Check for overriding parameter for station photo(s) by customer configuration for this job /* if ($constMaskStationsPodPhoto != "1" && substr($csJbstatusmailFields, 5, 1) == "1") : $constMaskStationsPodPhoto = "1"; $titles .= "," . getLngt("Abliefernachweis Foto"); $fields .= ",tr_pod_photo"; endif; */ if ($constMaskStationsPodPhoto == "1") : $titles .= "," . getLngt("Abliefernachweis Foto"); $fields .= ",tr_pod_photo"; endif; if ($constMaskStationsPodScanEvents == "1" && substr($csJbstatusmailFields, 8, 1) == "1") : $titles .= "," . getLngt("Bemerkung Kurier") . " "; $fields .= ",tr_pod_scan_events"; endif; if ($maskJobInternalRemarkItems == "1" && substr($csJbstatusmailFields, 9, 1) == "1") : $titles .= "," . getLngt("Bemerkung Innendienst") . " "; $fields .= ",tr_id_int_rem"; endif; if (false) : // TEST ONLY $titles .= "," . getLngt("TEST ONLY :: Auftrag-Fertig-Zeit"); $fields .= ",gdc_tr_fin_work_content"; endif; elseif ($userTypeName == "cs") : $tmpTitlePart = ""; $tmpFieldPart = ""; $csJbstatusmailFields = getFieldValueFromId("customer","cs_id",$csIdPayer,"cs_jbstatusmail_fields"); // Display station remark if job is a cash payer job and job had been created by customer // if (substr($csJbstatusmailFields, 0, 1) == "1" || ($currentCashPayerId == $cscIdPayer && $job_csc_id != "0")) : if (false) : $tmpTitlePart = getLngt("Bemerkung") . ","; $tmpFieldPart = "tr_remark,"; endif; $titles = ($constMaskStationsStationNumber == "1" ? getLngt("Station") . "," : "") . getLngt("Firma") . "," . "" . "," . getLngt("Person") . "," . getLngt("Straße + Hausnr.") . "," . getLngt("PLZ + Ort") . "," . getLngt("Email (Endkunde)") . "," . getLngt("EID") . "," . $trCostcenterText . getLngt("Tel.") . "," . $tmpTitlePart . getLngt("Kommissionsnummer") . "," . $trArrivalText . getLngt("Erledigungszeit") . "," . getLngt("Quittungsgeber") . "," . getLngt("Unterschrift"); $fields = ($constMaskStationsStationNumber == "1" ? "tr_sort," : "") . "tr_comp,tr_comp2,tr_person,ad_street_hsno,ad_zipcode_city,gdc_tracking_content,cs_eid," . $trCostcenterField . "tr_phone," . $tmpFieldPart . "tr_commission_no," . $trArrivalTimeField . "tr_finishtime,tr_signname,tr_sign"; if ($constMaskStationsPodPhoto == "1") : $titles .= "," . getLngt("Abliefernachweis Foto"); $fields .= ",tr_pod_photo"; endif; if ($constMaskStationsPodScanEvents == "1") : $titles .= "," . getLngt("Bemerkung Kundenmail Kurier") . " "; $fields .= ",tr_pod_scan_events"; endif; if ($constMaskStationsPodNumOfScannedPackages == "1") : $titles .= "," . getLngt("Anzahl gescannter Pakete"); $fields .= ",tr_pod_num_scanned_packages"; endif; if (false) : // TEST ONLY $titles .= "," . getLngt("TEST ONLY :: Auftrag-Fertig-Zeit"); $fields .= ",gdc_tr_fin_work_content"; endif; else : $titles = ($constMaskStationsStationNumber == "1" ? getLngt("Station") . "," : "") . getLngt("Firma") . "," . "" . "," . getLngt("Person") . "," . getLngt("Straße + Hausnr.") . "," . getLngt("PLZ + Ort") . "," . getLngt("Tel. (Kunde)") . "," . getLngt("Email (Kunde)") . "," . getLngt("Email (Endkunde)") . "," . getLngt("EID") . "," . getLngt("Kostenstelle") . "," . getLngt("Tel.") . "," . getLngt("Abholung/Anlieferung") . "," . getLngt("Bemerkung") . "," . getLngt("Kommissionsnummer") . "," . getLngt("Ankunftszeit") . "," . getLngt("Arbeitsbeendigungszeit") . "," . getLngt("Erledigungszeit") . "," . getLngt("Status") . "," . getLngt("Quittungsgeber") . "," . getLngt("Unterschrift"); $fields = ($constMaskStationsStationNumber == "1" ? "tr_sort," : "") . "tr_comp,tr_comp2,tr_person,ad_street_hsno,ad_zipcode_city,usr_phone,usr_email,gdc_tracking_content,cs_eid,csc_name,tr_phone,tr_ware_from_to,tr_remark,tr_commission_no,gdc_arr_tour_content,gdc_fin_work_content,tr_finishtime,tr_status,tr_signname,tr_sign"; if ($constMaskStationsPodPhoto == "1") : $titles .= "," . getLngt("Abliefernachweis Foto"); $fields .= ",tr_pod_photo"; endif; if ($constMaskStationsPodScanEvents == "1") : $titles .= "," . getLngt("Bemerkung Kundenmail Kurier") . " "; $fields .= ",tr_pod_scan_events"; endif; if ($constMaskStationsPodNumOfScannedPackages == "1") : $titles .= "," . getLngt("Anzahl gescannter Pakete"); $fields .= ",tr_pod_num_scanned_packages"; endif; if ($constMaskStationsSurvey == "1") : $titles .= "," . getLngt("Kundenbewertung"); $fields .= ",gdc_survey_1_content"; endif; if ($maskJobInternalRemarkItems == "1") : $titles .= "," . getLngt("Bemerkung Kundenmail Innendienst"); $fields .= ",tr_id_int_rem"; endif; if (false) : // TEST ONLY $titles .= "," . getLngt("TEST ONLY :: Auftrag-Fertig-Zeit"); $fields .= ",gdc_tr_fin_work_content"; endif; endif; $titlesArray = spliti(",",$titles); $titlesLength = count($titlesArray); $fieldsArray = spliti(",",$fields); $fieldsLength = count($fieldsArray); $fieldClause = getDBFields("tour") . "," . getDBFields("address") . "," . getDBFields("costcenter"); $fieldClause .= ", CONCAT(ad_street,' ',tr_hsno) AS ad_street_hsno, CONCAT(ad_zipcode,' ',ad_city) AS ad_zipcode_city "; if (true) : // Check for customer display the photos $fieldClause .= ", '' AS tr_pod_photo, '' AS tr_pod_scan_events"; // Proof of delivery photo endif; if ($maskJobInternalRemarkItems == "1") : $fieldClause .= ", tr_id AS tr_id_int_rem"; endif; if ($userTypeName == "hq") : $fieldClause .= ", gdc_arr_tour.gdc_content AS gdc_arr_tour_content"; // Arrival timestamp and coordinates $fieldClause .= ", gdc_fin_work.gdc_content AS gdc_fin_work_content"; // Finish work timestamp and coordinates else : $fieldClause .= ", LEFT(gdc_arr_tour.gdc_content,14) AS gdc_arr_tour_content"; // Arrival timestamp of the courier per station endif; $fieldClause .= ", gdc_tracking.gdc_content AS gdc_tracking_content, gdc_tracking.gdc_context AS gdc_tracking_context"; // End customer data for tracking $fieldClause .= ", gdc_survey_1.gdc_content AS gdc_survey_1_content"; // Customer survey $fromClause = $dbh_tr . " AS tr "; $fromClause .= "LEFT JOIN genericdatacontainer AS gdc_arr_tour ON gdc_arr_tour.gdc_obj_id = tr.tr_id AND gdc_arr_tour.gdc_obj_type = 'tr' AND gdc_arr_tour.gdc_gen_fieldname = 'arr_tour' "; if ($userTypeName == "hq") : $fromClause .= "LEFT JOIN genericdatacontainer AS gdc_fin_work ON gdc_fin_work.gdc_obj_id = tr.tr_id AND gdc_fin_work.gdc_obj_type = 'tr' AND gdc_fin_work.gdc_gen_fieldname = 'fin_work' "; endif; $fromClause .= "LEFT JOIN genericdatacontainer AS gdc_tracking ON gdc_tracking.gdc_obj_id = tr.tr_id AND gdc_tracking.gdc_obj_type = 'tr' AND gdc_tracking.gdc_gen_fieldname = 'tr_tracking' "; $fromClause .= "LEFT JOIN genericdatacontainer AS gdc_survey_1 ON gdc_survey_1.gdc_obj_id = tr.tr_id AND gdc_survey_1.gdc_obj_type = 'tr' AND gdc_survey_1.gdc_gen_fieldname = 'survey' AND gdc_survey_1.gdc_context = '1' "; $fromClause .= ", address AS ad, costcenter AS csc "; $whereClause = "tr.jb_id = " . $job_id . " AND tr.ad_id = ad.ad_id AND tr.csc_id = csc.csc_id"; $orderByClause = "tr.tr_sort"; // Additional customer informations (phone, name, ...) $fieldClause .= " , cs.cs_eid, usr.usr_phone, usr.usr_email "; $fromClause .= " LEFT JOIN customer AS cs ON cs.cs_id = csc.cs_id "; $fromClause .= " LEFT JOIN employee AS emp ON emp.emp_id = cs.cs_admin "; $fromClause .= " LEFT JOIN user AS usr ON usr.usr_id = emp.usr_id "; if ($userTypeName == "cs") : $fieldClause = getDBFields("tour") . "," . getDBFields("address") . "," . getDBFields("costcenter") . " "; $fieldClause .= ", CONCAT(ad_street,' ',tr_hsno) AS ad_street_hsno, CONCAT(ad_zipcode,' ',ad_city) AS ad_zipcode_city "; $fieldClause .= ", LEFT(gdc_arr_tour.gdc_content,14) AS gdc_arr_tour_content"; // Arrival timestamp of the courier per station $fromClause = $dbh_tr . " AS tr "; $fromClause .= "LEFT JOIN genericdatacontainer AS gdc_arr_tour ON gdc_arr_tour.gdc_obj_id = tr.tr_id AND gdc_arr_tour.gdc_obj_type = 'tr' AND gdc_arr_tour.gdc_gen_fieldname = 'arr_tour' "; $fromClause .= ", address AS ad, costcenter AS csc "; $whereClause = "tr.jb_id = " . $job_id . " AND tr.ad_id = ad.ad_id AND tr.csc_id = csc.csc_id"; $orderByClause = "tr.tr_sort"; endif; $sqlqueryTour = generateStatement($fieldClause,$fromClause,$whereClause,$orderByClause); // echo $sqlqueryTour . "

"; if ($execSQLStmts == "1") : // Send request to database $result = $db->query($sqlqueryTour); if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage() . ": " . $sqlqueryTour); // Get path for proof of delivery photo $parPodPath = getParameterValue("0", "JOB_DETAILS_PATH_POD_PHOTO", $currentHqId); if ($parPodPath == "") : $parPodPath = getParameterValue("0", "JOB_DETAILS_PATH_POD_PHOTO", "0"); endif; // Tour-data $tourentryArray = array(); $tourentry = ""; // $rawJobData .= "[TOUR]"; $rowCounter = 0; $imgFilenames = array(); while ($row = $result->fetch_assoc()): $rowCounter++; $tourentry .= ""; for ($i = 0; $i < $fieldsLength; $i++) : if ($i % 2 == 0) : $cellColor = "#BBBBFF"; $cellColor2 = "#DDDDDD"; endif; if ($i % 2 == 1) : $cellColor = "#CCCCFF"; $cellColor2 = "#EEEEEE"; endif; if (mcArrTrim($titlesArray, $i) == "") : $titlesArray[$i] = " "; endif; $tourentry .= ""; if ($rowCounter == 1) : $tourentry .= ""; $tourentryArray[$i][0] = ""; // elseif ($i == floor($fieldsLength / 2)) : elseif ($i == 0) : $tourentry .= ""; else : $tourentry .= ""; endif; $tmpVarName = mcArrIsSet($fieldsArray, $i); ${$tmpVarName} = $row[$tmpVarName]; mcArrIsSet($outputFormatField, $tmpVarName); if ($outputFormatField[$tmpVarName] == "datetime") : $out = formatOutput(${$tmpVarName},$outputFormatField[$tmpVarName],"13"); // "H:i (d.m)" elseif ($outputFormatField[$tmpVarName] == "timestamp_classic") : $out = formatOutput(${$tmpVarName},$outputFormatField[$tmpVarName],"2"); // "H:i (d.m)" else : $out = formatOutput(${$tmpVarName},$outputFormatField[$tmpVarName],$specialOutputFormat); endif; if ($tmpVarName == "gdc_arr_tour_content") : // Arrival time $tmpArrivalTime = substr(${$tmpVarName}, 0, 13); $out = formatOutput($tmpArrivalTime,$outputFormatField[$tmpVarName],"2"); // "H:i (d.m)" // Coordinates $tmpCoords = trim(substr(${$tmpVarName}, 15)); if ($tmpCoords != "") : $tmpArrCoords = explode("|", $tmpCoords); $tmpCoords = "/" . $tmpArrCoords[1] . "," . $tmpArrCoords[0]; $tmpCoordsTxt = "(" . $tmpArrCoords[1] . ", " . $tmpArrCoords[0] . ")"; $out .= "
" . $tmpCoordsTxt . ""; endif; endif; // For HQ only (!!!!) if ($tmpVarName == "gdc_fin_work_content" && $userTypeName == "hq") : // Finish work time $tmpFinishWorkTime = substr(${$tmpVarName}, 0, 13); $out = formatOutput($tmpFinishWorkTime,$outputFormatField[$tmpVarName],"2"); // "H:i (d.m)" // Coordinates $tmpCoords = trim(substr(${$tmpVarName}, 15)); if ($tmpCoords != "") : $tmpArrCoords = explode("|", $tmpCoords); $tmpCoords = "/" . $tmpArrCoords[1] . "," . $tmpArrCoords[0]; $tmpCoordsTxt = "(" . $tmpArrCoords[1] . ", " . $tmpArrCoords[0] . ")"; $out .= "
" . $tmpCoordsTxt . ""; endif; endif; // Customer-sign if ($tmpVarName == "tr_sign") : if ($row["tr_sign"] != "") : $rawCoord = splitRawCoordinates ($row["tr_sign"]); $maxCoord = checkMaxCoordinates($rawCoord); if ($f_act == "mailsend" || $f_act == "export") : $tmpSignPath = "../temp/signs/"; if (SIGNS_PATH != "") : $tmpSignPath = SIGNS_PATH; endif; $imgFilename = $tmpSignPath . $job_id . "_" . $row["tr_sort"] . ".png"; $imgFilenames[] = $imgFilename; if ($f_act == "mailsend") : $im = createSignImage($rawCoord); imagepng ($im, $imgFilename); endif; $out = ""; else : $out = "" . "" . ""; endif; endif; endif; // Proof of delivery by photo if ($tmpVarName == "tr_pod_photo") : if ($constMaskStationsPodPhoto == "1") : // Number of required photos mcArrIsSet($trPhotos, $row["tr_id"]); $numOfRequiredPhotos = substr($trPhotos[$row["tr_id"]], 0, strrpos($trPhotos[$row["tr_id"]],"|")); $numOfMaxPhotos = substr($trPhotos[$row["tr_id"]], strrpos($trPhotos[$row["tr_id"]],"|") + 1); if (trim($numOfRequiredPhotos) == "") : $numOfRequiredPhotos = "0"; endif; if (trim($numOfMaxPhotos) == "") : $numOfMaxPhotos = "1"; endif; $tmpColorOut = "black"; if ($job_status != "2" && $numOfRequiredPhotos > "0") : $tmpColorOut = "red"; endif; $out = ""; if ($f_act != "mailsend") : if ($numOfRequiredPhotos == "0" && $numOfMaxPhotos == "1"): $out = "" . getLngt("Anzahl") . ": " . getLngt("Ein optionales Foto") . "
"; else : $out = "" . getLngt("Anzahl") . ": " . getLngt("Mindestens") . " " . $numOfRequiredPhotos . " | " . getLngt("Maximal") . " " . $numOfMaxPhotos . "
"; endif; endif; // Photo output if ($parPodPath != "") : if ($f_act != "export") : global $jbMailAttachements; if (!isset($jbMailAttachements) || !is_array($jbMailAttachements)) : $jbMailAttachements = array(); endif; $jbMailAttachementsLen = count($jbMailAttachements); // Check existence of the photo in filesystem // $podPhotoFilename = $job_id . "_" . $row["tr_sort"] . "_pod.JPG"; /* $podPhotoFilename = getImageFromB2bObjects($row["tr_id"], $parPodPath); if ($podPhotoFilename != "") : if (file_exists($parPodPath . $podPhotoFilename)) : $out .= ""; endif; endif; */ // Check existence in "pic" $podPhotoFilenames = getImagesFromPic($row["tr_id"], $parPodPath); $podPhotoFilenamesLen = count($podPhotoFilenames); if ($podPhotoFilenamesLen == 0) : // Check existence in "b2b_objects" $podPhotoFilenames = getImagesFromB2bObjects($row["tr_id"], $parPodPath); $podPhotoFilenamesLen = count($podPhotoFilenames); endif; for ($p = 0; $p < $podPhotoFilenamesLen; $p++) : if ($podPhotoFilenames[$p] != "") : if (file_exists($parPodPath . $podPhotoFilenames[$p])) : if ($f_act == "mailsend") : // $out .= " "; if (file_exists($parPodPath . "pht_" . $podPhotoFilenames[$p])) : unlink($parPodPath . "pht_" . $podPhotoFilenames[$p]); endif; $im = imagecreatefromjpeg($parPodPath . $podPhotoFilenames[$p]); if ($im) : if (imagejpeg($im, $parPodPath . "pht_" . $podPhotoFilenames[$p])) : $out .= " "; endif; endif; /* $jbMailEmbeddedImages[$p][0] = $parPodPath . $podPhotoFilenames[$p]; $jbMailEmbeddedImages[$p][1] = $podPhotoFilenames[$p]; $out .= " "; */ // Attach each photo to the mail (!!!!) $jbMailAttachements[($p + $jbMailAttachementsLen)][0] = $parPodPath . $podPhotoFilenames[$p]; $jbMailAttachements[($p + $jbMailAttachementsLen)][1] = $podPhotoFilenames[$p]; else : $out .= " "; endif; endif; endif; endfor; endif; endif; endif; endif; // Proof of delivery by scan events if ($constMaskStationsPodScanEvents == "1") : if ($tmpVarName == "tr_pod_scan_events") : // if ($f_act != "mailsend" || $f_act != "export") : // Get scan event state $tmpOut = ""; // Get state (del_code) $tmpEventState = getFieldValueFromClause("genericdatacontainer", "gdc_content", "gdc_obj_type = 'tr' AND gdc_obj_id = '" . $row["tr_id"] . "' AND gdc_gen_fieldname = 'del_code'"); if ($tmpEventState != "" && is_numeric($tmpEventState)) : // $tmpOut .= getLngt("Status") . ":
" . $deliveryCodeArray[$tmpEventState] . "

"; if ($tmpEventState == "1") : if ($row["tr_ware_from_to"] == "1") : $tmpOut .= "" . getLngt("Status") . ": " . getLngt("Abgeholt") . "

"; elseif ($row["tr_ware_from_to"] == "2" || $row["tr_ware_from_to"] == "3") : $tmpOut .= "" . getLngt("Status") . ": " . getLngt("Abgeliefert") . "

"; endif; else : $tmpOut .= "" . getLngt("Status") . ":
" . $deliveryCodeArray[$tmpEventState] . "

"; endif; endif; // Get state reason (del_rem) $tmpEventRemark = getFieldValueFromClause("genericdatacontainer", "gdc_content", "gdc_obj_type = 'tr' AND gdc_obj_id = '" . $row["tr_id"] . "' AND gdc_gen_fieldname = 'del_rem'"); if ($tmpEventRemark != "") : $tmpOut .= "" . getLngt("Statusgrund") . ":
" . $tmpEventRemark . "

"; endif; // Get state reason (tr_hint) if ($userTypeName == "hq") : $tmpStationRemark = getFieldValueFromClause("genericdatacontainer", "gdc_content", "gdc_obj_type = 'tr' AND gdc_obj_id = '" . $row["tr_id"] . "' AND gdc_gen_fieldname = 'tr_hint'"); if ($tmpStationRemark != "") : $tmpOut .= "" . getLngt("Notiz des Transporteurs zur Station") . ":
" . $tmpStationRemark . "

"; endif; endif; // Output scan barcodes $out = $tmpOut . getOutputJobTratArticleData($job_id, "1", "", "1", "1", $row["tr_sort"]); // endif; endif; endif; // Number of scanned packages (SPECIAL CUSTOMER SOLUTION !!!!) if ($constMaskStationsPodNumOfScannedPackages == "1") : if ($tmpVarName == "tr_pod_num_scanned_packages") : if ($f_act != "mailsend" || $f_act != "export") : // Get number of scanned packages $tmpOut = ""; $tmpTratId = getFieldValueFromId("tourarticle","tr_id",$row["tr_id"],"trat_id"); if ($tmpTratId != "" && is_numeric($tmpTratId)) : $tmpNumOfScannedPackages = getFieldValueFromClause("tourarticleprocess", "tratp_remark", "trat_id = '" . $tmpTratId . "' AND tratp_remark LIKE 'cnt=%'"); if ($tmpNumOfScannedPackages == "") : $tmpNumOfScannedPackages = "0"; else : $tmpNumOfScannedPackages = substr($tmpNumOfScannedPackages,4); endif; $tmpOut .= $tmpNumOfScannedPackages; $tmpTratPackingpieces = getFieldValueFromId("tourarticle","trat_id",$tmpTratId,"trat_packingpieces"); if ($tmpTratPackingpieces != "") : $tmpOut .= " / " . $tmpTratPackingpieces; endif; endif; // Output scan barcodes if ($tmpOut != "") : $out = $tmpOut; endif; endif; endif; endif; // End customer tracking if ($csTracking == "1") : if ($tmpVarName == "gdc_tracking_content") : if ($f_act != "mailsend" || $f_act != "export") : $tmpGdcTrackingArr = explode("|", $row["gdc_tracking_content"]); $tmpGdcTrackingEndCustomerEmail = $tmpGdcTrackingArr[0]; $tmpTrackingColor = "black"; if ($row["gdc_tracking_context"] != "") : if ($row["gdc_tracking_context"] == "SENT_OK") : $tmpTrackingColor = "green"; elseif ($row["gdc_tracking_context"] == "SENT_NOK") : $tmpTrackingColor = "red"; elseif (is_numeric($row["gdc_tracking_context"])) : $tmpTrackingColor = "blue"; endif; endif; $out = "" . $tmpGdcTrackingEndCustomerEmail . ""; endif; endif; endif; // Survey if ($constMaskStationsSurvey == "1") : if ($tmpVarName == "gdc_survey_1_content") : if ($f_act != "mailsend" || $f_act != "export") : switch($out) { case "0" : $out = getLngt("Keine Angabe"); break; case "1" : $out = "" . getLngt("Unzufrieden") . ""; break; case "2" : $out = "" . getLngt("Neutral") . ""; break; case "3" : $out = "" . getLngt("Zufrieden") . ""; break; }; endif; endif; endif; // Iternal remark items if ($maskJobInternalRemarkItems == "1") : if ($tmpVarName == "tr_id_int_rem") : if ($f_act != "mailsend" || $f_act != "export") : if ($f_act != "mailsend" && ($job_export_time == "" || $job_export_time == "0000-00-00 00:00:00")) : $out = "  "; $out .= ""; $out .= getJobInternalRemarkItems($job_id, "2", $row["tr_id"]); $out .= ""; else : $out = getJobInternalRemarkItems($job_id, "2", $row["tr_id"]); endif; endif; endif; endif; if ($tmpVarName == "tr_ware_from_to") : $tmpColorOut = "black"; if ($job_status != "2") : $tmpColorOut = "red"; endif; switch($out) { case "0" : $out = getLngt("Keine Angabe"); break; case "1" : $out = "" . getLngt("Abholung") . ""; break; case "2" : $out = "" . getLngt("Anlieferung") . ""; break; case "3" : $out = "" . getLngt("Abholung und Anlieferung") . ""; break; }; endif; if ($tmpVarName == "tr_remark") : // Remove some internal annotations fron station remark if ($userTypeName == "cs" || $f_act == "mailsend") : if (!(strpos($out, "[[") === false)) : $jb_cr_priceStr = strstr($out, "[["); if ($jb_cr_priceStr != "" && !(strpos($jb_cr_priceStr, "]]") === false)) : $jb_cr_priceStr = substr($jb_cr_priceStr, 0, strpos($jb_cr_priceStr, "]]", 2) + 2); $out = str_replace($jb_cr_priceStr, "", $out); endif; endif; endif; $out = nl2br($out); endif; // Email if ($tmpVarName == "usr_email") : if ($job_status == "2") : $out = "" . $out . ""; endif; endif; // Special formatting for tour-fields if ($tmpVarName == "tr_status") : switch($out) { case "0" : $out = getLngt("offen"); break; case "1" : $out = getLngt("erledigt"); break; }; endif; // Finishtime of the station if ($tmpVarName == "tr_finishtime") : if (substr($tr_finishtime,0,4) == "1970") : $out = ""; endif; endif; // wrap finishtime (ONLY for corrupted data) if ($userTypeName == "cs") : if ($tmpVarName == "tr_finishtime" && ($row["tr_finishtime"] == "" || $row["tr_finishtime"] < "2004-10-01 00:00:00")) : $out = ""; endif; endif; // Do not show customer data if external costcenter if ($tmpVarName == "usr_phone" || $tmpVarName == "usr_email" || $tmpVarName == "cs_eid") : if (!(strpos(strtoupper($row["csc_path"]), "//EXTERN//") === FALSE)) : $out = ""; endif; endif; // Station number if ($tmpVarName == "tr_sort") : $out = "[ # " . $out . " ]"; $out = "" . $out . ""; endif; $tourentry .= ""; $tourentry .= ""; $cellColorMatrix = getListColorGeneric($i, $rowCounter, "#AAAAFF", "#BBBBFF", "#CCCCFF", "#DDDDFF"); $tourentryArray[$i][$rowCounter] = ""; if ($tmpVarName == "usr_email") : $rawJobData .= "tr_" . $row["tr_sort"] . "_" . $tmpVarName . "=" . $row["usr_email"] . "|"; elseif ($tmpVarName == "tr_sign") : $rawJobData .= "tr_" . $row["tr_sort"] . "_" . $tmpVarName . "=" . $row["tr_sign"] . "|"; else : if ($out == " ") : $out = ""; endif; $rawJobData .= "tr_" . $row["tr_sort"] . "_" . $tmpVarName . "=" . $out . "|"; endif; endfor; $tourentry .= "
" . $titlesArray[$i] . "" . $titlesArray[$i] . " " . $out . "
" . $out . "
"; if ($f_act == "printjob") : $constNumOfStationsPerLineToPrint = getParameterValue("0", "MASK_JB_STATIONS_PRINT_FORMAT", $currentHqId); if ($constNumOfStationsPerLineToPrint == "" || !is_numeric($constNumOfStationsPerLineToPrint)) : $constNumOfStationsPerLineToPrint = 5; endif; if (($rowCounter % $constNumOfStationsPerLineToPrint) == 0) : $tourentry .= "
"; endif; endif; endwhile; $result->free(); $tr_numberofstations = $rowCounter; // Overwrite with new structure if ($tourDisplayClassicMode != "1") : $tourentry = convertMatrixToTable($tourentryArray, "1"); endif; endif; // --- COURIER ------------------ // Initialize for template-output $courierentry = ""; // $rawJobData .= "[COURIER]"; if ($jobCourierId != "") : // initialize if ($f_act == "mailsend" || $f_act == "printjob" || $f_act == "export") : $tmpTitlePart = ""; $tmpFieldPart = ""; $csJbstatusmailFields = getFieldValueFromId("customer","cs_id",$csIdPayer,"cs_jbstatusmail_fields"); if (substr($csJbstatusmailFields, 1, 1) == "1") : $tmpTitlePart .= "," . getLngt("Mobil-Nr."); $tmpFieldPart .= ",usr_phone"; endif; if (substr($csJbstatusmailFields, 6, 1) == "1" && $job_cr_sid != "") : $tmpTitlePart .= "," . getLngt("Kennzeichen"); $tmpFieldPart .= ",crvh_vh_sign"; endif; // $titles = getLngt("Name") . "," . getLngt("Vorname") . "," . getLngt("SID") . $tmpTitlePart; // $fields = "usr_name,usr_firstname,cr_sid" . $tmpFieldPart; $titles = getLngt("SID") . $tmpTitlePart; $fields = "cr_sid" . $tmpFieldPart; else : $titles = getLngt("Firma") . "," . "" . "," . getLngt("Name") . "," . getLngt("Vorname") . "," . getLngt("Tel.") . "," . getLngt("Tel.2") . "," . getLngt("Tel.PDA/VPA") . "," . getLngt("SID") . "," . getLngt("ExtID") . "," . getLngt("Kennz.") . "," . getLngt("Online") . "," . getLngt("Nutzlast") . "," . getLngt("L x B x H x S") . "," . getLngt("Transporteursfilter") . "," . getLngt("Fahrzeugfilter"); $fields = "cmp_comp,cmp_comp2,usr_name,usr_firstname,usr_phone,usr_phone2,cr_mobile_pda,cr_sid,cr_eid" . ($job_cr_sid != "" ? ",crvh_vh_sign" : "") . ",cr_available" . ($job_cr_sid != "" ? ",crvh_payload" : "") . ($job_cr_sid != "" ? ",crvh_measures" : "") . ",cr_filter" . ($job_cr_sid != "" ? ",crvh_filter" : ""); endif; $titlesArray = spliti(",",$titles); $titlesLength = count($titlesArray); $fieldsArray = spliti(",",$fields); $fieldsLength = count($fieldsArray); $fieldClause = getDBFields("courier") . "," . getDBFields("company") . "," . getDBFields("user") . " "; $fromClause = "courier AS cr, company AS cmp, user AS usr "; $whereClause = "cr.cr_id = " . $jobCourierId . " AND cmp.cmp_id = cr.cmp_id AND usr.usr_id = cr.usr_id"; $orderByClause = ""; if ($job_cr_sid != "") : $fieldClause .= ", crvh.crvh_id, crvh.crvh_vh_sign, crvh.crvh_payload, CONCAT(crvh.crvh_length,' x ',crvh.crvh_width,' x ',crvh.crvh_height,' x ',crvh.crvh_position) AS crvh_measures, crvh.crvh_filter "; // $fromClause = "courier AS cr LEFT JOIN couriervehicle AS crvh ON cr.cr_id = crvh.cr_id AND crvh.crvh_sid = '" . $job_cr_sid . "', company AS cmp, user AS usr "; $fromClause = "courier AS cr LEFT JOIN couriervehicle AS crvh ON crvh.crvh_sid = '" . $job_cr_sid . "', company AS cmp, user AS usr "; endif; $orderByClause = ""; $sqlqueryCourier = generateStatement($fieldClause,$fromClause,$whereClause,$orderByClause); // echo $sqlqueryCourier . "

"; if ($execSQLStmts == "1") : // Send request to database $result = $db->query($sqlqueryCourier); if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage() . ": " . $sqlqueryCourier); // Courier-data while ($row = $result->fetch_assoc()): // $courierentry .= ""; endwhile; $result->free(); endif; endif; // Check for global mediation if ($f_act != "mailsend" && $f_act != "printjob" && $f_act != "export") : if ($job_longhaul == "1" && !authCheckEmployeeRights($emp_id, "10")) : $courierentry = ""; endif; endif; // ATTENTION: Overwrite all courier data in $courierentry if it is a customer call !!! if ($userTypeName == "cs") : // Get "cr_sid" from table "job" $courierentry = ""; if ($jobCourierId != "") : $parMaskCsShowUserData = getParameterValue("0", "CUSTOMER_MASK_SHOW_USER_DATA", $currentHqId); if ($parMaskCsShowUserData == "") : $parMaskCsShowUserData = getParameterValue("0", "CUSTOMER_MASK_SHOW_USER_DATA", "0"); endif; if ($parMaskCsShowUserData == "1") : $tmpUsrId = getFieldValueFromId("courier", "cr_id", $jobCourierId, "usr_id"); if ($tmpUsrId != "") : $courierentry .= ""; $courierentry .= ""; endif; endif; endif; $courierentry .= ""; endif; // --- USER (EMPLOYEE) ------------------ // Initialize for template-output $employeeentry = ""; // $rawJobData .= "[EMPLOYEE]"; // Display only the creator of the job or display the history of employees if (MASK_JOBDETAILS_USER_HISTORY == "" || MASK_JOBDETAILS_USER_HISTORY == "0") : // Get the user (employee) of the current job $job_usr_id = getFieldValueFromId($dbh_jb,"jb_id",$job_id,"emp_id"); if ($job_usr_id != "") : // initialize $titles = getLngt("Name") . "," . getLngt("Vorname") . "," . getLngt("Telefon") . "," . getLngt("E-Mail"); $titlesArray = spliti(",",$titles); $titlesLength = count($titlesArray); $fields = "usr_name,usr_firstname,usr_phone,usr_email"; $fieldsArray = spliti(",",$fields); $fieldsLength = count($fieldsArray); $fieldClause = getDBFields("user") . " "; $fromClause = "user AS usr "; $whereClause = "usr.usr_id = " . $job_usr_id; $orderByClause = ""; $sqlqueryUser = generateStatement($fieldClause,$fromClause,$whereClause,$orderByClause); // echo $sqlqueryUser . "

"; if ($execSQLStmts == "1") : // Send request to database $result = $db->query($sqlqueryUser); if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage() . ": " . $sqlqueryUser); // Employee-data $employeeentry .= ""; while ($row = $result->fetch_assoc()): // $employeeentry .= ""; endwhile; $result->free(); endif; endif; else : // Display history of employees if ($job_id != "" && is_numeric($job_id) && $job_id > "0") : if (FALSE) : // From table "jobemployee" $fieldClause = getDBFields("jobemployee") . "," . getDBFields("user") . " "; $fromClause = "jobemployee AS jbemp, user AS usr "; $whereClause = "jbemp.jb_id = '" . $job_id . "' AND jbemp.usr_id = usr.usr_id"; $orderByClause = "jbemp.jbemp_modifytime"; else : // From table "log" $fieldClause = getDBFields("logoperation") . "," . getDBFields("log") . "," . getDBFields("user") . " "; $fromClause = " phoenix_log.logoperation AS logo, phoenix_log.log AS log " . " LEFT JOIN phoenix.user AS usr ON log.usr_id = usr.usr_id "; $whereClause = " log.jb_id = '" . $job_id . "' AND log.logo_id = logo.logo_id AND "; if ($userTypeName == "cs") : $whereClause .= "logo.logo_id IN (1,10)"; else : $whereClause .= "logo.logo_id IN (1,2,5,10,13,14,15,16,17,18,19,20,21,22,23,25,26,32,102,149,161,162,163)"; endif; $orderByClause = "log.log_createtime"; endif; $sqlqueryUser = generateStatement($fieldClause,$fromClause,$whereClause,$orderByClause); if ($execSQLStmts == "1") : // Send request to database $result = $db->query($sqlqueryUser); if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage() . ": " . $sqlqueryUser); // Generate list with header $titleArray = array(getLngt("Vorgang "),getLngt("Zeitpunkt "),getLngt("Name "),getLngt("Vorname "),getLngt("Telefon ")); if (FALSE) : // From table "jobemployee" $fieldArray = array("jbemp_description","jbemp_modifytime","usr_name","usr_firstname","usr_phone"); else : // From table "log" $fieldArray = array("logo_op_shortname","log_createtime","usr_name","usr_firstname","usr_phone"); endif; $aligns = "l,l,l,l,l,l"; $alignArray = spliti(",",$aligns); $alignTitles = "left"; $widths = "50,150,50,50,50"; $widthArray = spliti(",",$widths); $summationField = ""; $mode = "1"; // Output from DB-RESULT $sortDBField = ""; // Used in following include-file for sorting per column; include ("../include/inc_list_defineoutput.inc.php"); // $employeeentry .= ""; $employeeentry .= $tableHeader . $tableBody; if ($automailer == "0" && $job_status == 1) { $employeeentry .= "" . "" . ""; } $result->free(); endif; endif; endif; // OLD: Overwrite all employee data in $employeeentry if it is a customer call // Since 2018-11-19 :: Activate output for customers but for some log operations only !!!! if ($userTypeName == "cs") : // $employeeentry = ""; endif; // --- JOB-COSTS ------------------ $jobcosts = ""; /* $jobcosts = ""; $jobcosts .= ""; */ // $rawJobData .= "[COSTS]"; // Get the persistent tourservice data $fieldString = getDBFields("tourservice"); $whereClauseCosts = ""; if ($automailer == "1" || $f_act == "mailsend" || $userTypeName == "cs") : $whereClauseCosts = " AND NOT (trs_srvt_name = 'z' AND trs_price = '0') "; endif; $sqlqueryCosts = "SELECT " . $fieldString . ",csc.csc_name, CONCAT(cscad.cscad_phone,'
',usr.usr_email) AS cscad_phone, cs.cs_eid," . " CONCAT(cmp.cmp_comp,'
',cmp.cmp_comp2) AS cmp_comp, (trs.trs_price * ((100 - trs.trs_discount) / 100)) AS business_volume," . " ((trs.trs_price * ((100 - trs.trs_discount) / 100)) * " . $taxFactor . ") AS business_volume_gross" . " FROM " . $dbh_trs . " AS trs LEFT JOIN costcenter AS csc ON trs.csc_id = csc.csc_id" . " LEFT JOIN costcenteraddress AS cscad ON csc.csc_id = cscad.csc_id AND cscad.adt_id = '4'" . " LEFT JOIN customer AS cs ON csc.cs_id = cs.cs_id" . " LEFT JOIN company AS cmp ON cs.cmp_id = cmp.cmp_id" . " LEFT JOIN employee AS emp ON cs.cs_admin = emp.emp_id" . " LEFT JOIN user AS usr ON emp.usr_id = usr.usr_id" . " WHERE trs.jb_id = '" . $job_id . "'" . $whereClauseCosts . " ORDER BY trs.csc_id, trs.tr_sort"; if ($userTypeName == "cs") : $sqlquery = "SELECT " . $fieldString . ",csc.csc_name, (trs.trs_price * ((100 - trs.trs_discount) / 100)) AS business_volume, ((trs.trs_price * ((100 - trs.trs_discount) / 100)) * " . $taxFactor . ") AS business_volume_gross" . " FROM " . $dbh_trs . " AS trs LEFT JOIN costcenter AS csc ON trs.csc_id = csc.csc_id" . " WHERE trs.jb_id = '" . $job_id . "'" . " ORDER BY trs.csc_id, trs.tr_sort"; endif; // echo $sqlqueryCosts . "

"; if ($execSQLStmts == "1") : $result = $db->query($sqlqueryCosts); if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage() . ": " . $sqlqueryCosts); // Generate list with header $titleArray = array(getLngt("Kostenstelle "),getLngt("Tel. / Email"),getLngt("EID "),getLngt("Kunde"),getLngt("Leistung "),getLngt("Betrag")); $businessVolumeField = "business_volume"; if ($globalParUseRelatedCustomer == 1) : $businessVolumeField = "business_volume_gross"; endif; $fieldArray = array("csc_name","cscad_phone","cs_eid","cmp_comp","trs_srv_name",$businessVolumeField); $aligns = "l,l,l,l,l,r"; $widths = "150,120,50,150,150,70"; if ($userTypeName == "cs") : $titleArray = array(getLngt("Kostenstelle "),getLngt("Leistung "),getLngt("Betrag")); $fieldArray = array("csc_name","trs_srv_name",$businessVolumeField); $aligns = "l,l,r"; $widths = "150,150,0"; endif; $alignArray = spliti(",",$aligns); $alignTitles = "left"; $widthArray = spliti(",",$widths); $summationField = $businessVolumeField; $mode = "1"; // Output from DB-RESULT $sortDBField = ""; // Used in following include-file for sorting per column; include ("../include/inc_list_defineoutput.inc.php"); // Add toll if does exist $jbToll = getFieldValueFromClause("genericdatacontainer","gdc_content","gdc_obj_type = 'jb' AND gdc_gen_fieldname = 'jb_toll' AND gdc_obj_id = '" . $job_id . "'"); $jbToll = trim($jbToll); $jobCostsToll = ""; $outSummationText = getLngt("KUNDENPREIS"); $jbTotalSumWithToll = $sumOfSummationField; // Init if ($jbToll != "") : $outSummationText = getLngt("ZWISCHENSUMME"); $jbTotalSumWithToll = $sumOfSummationField + $jbToll; endif; if ($userTypeName != "cs") : // ONLY headquarters and automailer // $jobcosts = "\n"; $jobcosts .= $tableHeader . $tableBody; // $jobcosts .= $jobCostsToll; // Toll $jobcosts .= "\n"; $rawJobData .= "costs_" . "sum=" . number_format(round($sumOfSummationField,2), 2, ",", ".") . "|"; $self_service_discount = $db->getOne("SELECT jbprc_price FROM jobprice WHERE jb_id = " . $job_id . " AND mt_sort = 13"); if ($self_service_discount == "") $self_service_discount = 0; if ($self_service_discount != 0) : $gross_price = $db->getOne("SELECT jbprc_remark FROM jobprice WHERE jb_id = " . $job_id . " AND mt_sort = 13"); if ($gross_price == "") : $gross_price = 0; endif; $jobcosts .= "\n"; endif; if ($job_markup != 0) : // $jobcosts .= ""; $jobcosts .= "\n"; $rawJobData .= "costs_" . "sum_withoutmarkup=" . number_format(round($job_subtotalprice,2), 2, ",", ".") . "|"; endif; if (($automailer == "1" || $f_act == "mailsend") && $job_status == "2") : $csJbstatusmailFields = getFieldValueFromId("customer","cs_id",$csIdPayer,"cs_jbstatusmail_fields"); if (substr($csJbstatusmailFields, 2, 1) == "1") : // Show invoice text in mail $jbInvoiceText = getFieldValueFromId("job", "jb_id", $job_id, "jb_invtext"); $jbInvoiceText = nl2br(trim($jbInvoiceText)); $jobcosts .= ""; $jobcosts .= "\n"; endif; endif; else : $jobcosts = ""; $jobcosts .= $tableHeader . $tableBody; $jobcosts .= ""; endif; if ($jbToll != "") : $rawJobData .= "costs_" . "toll=" . $jbToll . "|"; $rowArray = array(); $rowArray[0]["col1"] = ""; $rowArray[0]["col2"] = ""; $rowArray[0]["col3"] = ""; $rowArray[0]["col4"] = ""; $rowArray[0]["jb_toll_text"] = getLngt("Maut "); $rowArray[0]["jb_toll_value"] = str_replace(".", ",", $jbToll); $fieldArray = array("col1","col2","col3","col4","jb_toll_text","jb_toll_value"); $mode = "2"; // Output from MATRIX $sortDBField = ""; // Used in following include-file for sorting per column; include ("../include/inc_list_defineoutput.inc.php"); $jobcosts .= "" . $tableBody; $jobcosts .= "\n"; endif; if ($userTypeName != "cs") : // ONLY headquarters and automailer // Add cartage in headquarters view if ($userTypeName == "hq" && $automailer == "0" && $f_act != "mailsend") : // Check for finished jobs only $parCrPriceMode = getParameterValue("0", "MASK_CR_PRICE_MODE", $currentHqId); if ($parCrPriceMode == "1") : $tmpJbFinishtime = getFieldValueFromId("job","jb_id",$job_id,"jb_finishtime"); $tmpJbVhtId = getFieldValueFromId("job","jb_id",$job_id,"vht_id"); list($jbCrPrice, $jbCrPriceRate) = getCr_price_global($sumOfSummationField, $currentHqId, $csIdPayer, $tmpJbFinishtime, "", $tmpJbVhtId); if ($jbCrPrice == "" || !is_numeric($jbCrPrice)) : $jbCrPrice = 0; endif; $jbCrPrice = getFieldValueFromId("job","jb_id",$job_id,"jb_cr_price"); $jb_cr_serviceprice = $db->getOne("SELECT jbprc_price FROM jobprice WHERE jb_id = " . $job_id . " AND mt_sort = 3"); if (!is_numeric($jb_cr_serviceprice)) $jb_cr_serviceprice = 0; $jbCrPrice_without_service = $jbCrPrice; if ($jb_cr_serviceprice != ""): $jbCrPrice_without_service = $jbCrPrice - $jb_cr_serviceprice; $jb_cr_serviceprice = sprintf("%01.2f", $jb_cr_serviceprice); endif; $jbprc_cr_subtotal = $db->getOne("SELECT jbprc_price FROM jobprice WHERE jb_id = " . $job_id . " AND mt_sort = 10"); if (!is_numeric($jbprc_cr_subtotal)) $jbprc_cr_subtotal = 0; $jbprc_cr_subtotal_inkl_agio = $jbprc_cr_subtotal - $jb_cr_serviceprice; if ($jbprc_cr_subtotal != "") $jbprc_cr_subtotal = sprintf("%01.2f", $jbprc_cr_subtotal); $jbCrAgio = $db->getOne("SELECT jbprc_price FROM jobprice WHERE jb_id = " . $job_id . " AND mt_sort = 7"); $jbCrAgioText = ""; if ($jbCrAgio != ""): // $jbprc_cr_subtotal_inkl_agio = $jbprc_cr_subtotal * (1 + ($jbCrAgio / 100)); // $jbCrAgio = sprintf("%01.2f", $jbCrAgio); $jb_cr_price_rate = $db->getOne("SELECT jbprc_price FROM jobprice WHERE jb_id = " . $jb_id . " AND mt_sort = 5"); $jb_cr_price_rate_real = 0; if ($jb_cr_price_rate > 0) $jbCrAgioText = "Der Frachtvergütungsabschlag beträgt " . sprintf("%01.2f", $jb_cr_price_rate) . "% - " . sprintf("%01.2f", $jbCrAgio) . "% = " . sprintf("%01.2f", $jb_cr_price_rate - $jbCrAgio) . "%"; endif; $jbprc_cr_markup = $db->getOne("SELECT jbprc_price FROM jobprice WHERE jb_id = " . $job_id . " AND mt_sort IN (1,9)"); $jbprc_cr_subtotal_inkl_agio_and_markup = $jbprc_cr_subtotal_inkl_agio; if ($jbprc_cr_markup != ""): $jbprc_cr_subtotal_inkl_agio_and_markup = $jbprc_cr_subtotal_inkl_agio * (1 + ($jbprc_cr_markup / 100)); $jbprc_cr_markup = sprintf("%01.2f", $jbprc_cr_markup); endif; $jobcosts .= "\n"; if ($jb_cr_serviceprice != "" && $jb_cr_serviceprice > 0): $jobcosts .= "\n"; endif; if ($jbprc_cr_markup != "" && $jbprc_cr_markup > 0): $jobcosts .= "\n"; endif; // if ($jbCrAgio != "" && $jbCrAgio > 0): // $jobcosts .= "\n"; if ($jbCrAgioText != ""): $jobcosts .= "\n"; endif; if ($db->getOne("SELECT jb_id FROM job AS jb, genericdatacontainer AS gdc WHERE jb_id = " . $jb_id . " AND jb_id = gdc_obj_id AND gdc_obj_type = 'jb' AND gdc_gen_fieldname = 'jb_cr_price_retour' AND gdc_context = ''") == $jb_id): $jb_cr_price_retour = $db->getOne("SELECT gdc_content FROM job AS jb, genericdatacontainer AS gdc WHERE jb_id = " . $jb_id . " AND jb_id = gdc_obj_id AND gdc_obj_type = 'jb' AND gdc_gen_fieldname = 'jb_cr_price_retour' AND gdc_context = ''"); $jb_cr_price_retourArr = explode("|", $jb_cr_price_retour); $jobcosts .= "\n"; $jobcosts .= "\n"; endif; if ($db->getOne("SELECT jb_id FROM tourservice WHERE jb_id = " . $jb_id . " AND trs_srvt_name = 'z'") == $jb_id && $db->getOne("SELECT jb_id FROM phoenix_log.route WHERE jb_id = " . $jb_id) == $jb_id): $jobcosts .= "\n"; endif; endif; endif; endif; endif; // Store number of stations of the tour $rawJobData .= "tr_numberofstations=" . mcIsSet($tr_numberofstations, 0); $jbParState = "job_status=".$job_status."|"."job_tourname=".$job_tourname."|"."job_export_time=".$job_export_time."|" . "job_reserv=".$job_reserv."|"."job_incomplete=".$job_incomplete."|"."job_cr_sid=".$job_cr_sid."|" . "job_longhaul=".$job_longhaul."|"."job_id_parent=".$job_id_parent."|"."job_subtotalprice=".$job_subtotalprice."|" . "job_markup=".$job_markup."|"."job_ordertime=".$job_ordertime."|"."jobCourierId=".$jobCourierId."|" . "cscIdPayer=".$cscIdPayer."|"."csIdPayer=".$csIdPayer."|"."jobCourierId=".$jobCourierId."|" . "job_cr_sid=".$job_cr_sid; if ($retMode == "1") : $retVal = array($rawJobData, $jbParState); else : $retVal = $jbParState; endif; return $retVal; } // If job ($job_id) is exported, then look for existing content in DB field "jb_history_data" function checkForTakingRealOrHistoricJobData ($mode = "") { global $db, $dbhostJob2History, $job_id, $hq_id, $userTypeName, $outputFormatField, $f_act, $automailer; global $historicJobParameterState, $jobentry, $tourentry, $jobcosts, $courierentry, $employeeentry; $takeRealJobData = true; $jbHistoryData = ""; $jbHistoryRawData = ""; if (true) : $jbExportTime = getFieldValueFromId("job", "jb_id", $job_id, "jb_export_time"); if ($jbExportTime != "" && $jbExportTime != "0000-00-00 00:00:00") : $db_conn = $db; $job2Name = "job2"; $jbExportTimeYear = substr($jbExportTime, 0, 4); $currentYear = getDateTime("year"); if ($jbExportTimeYear >= "2010" && $jbExportTimeYear < $currentYear) : $job2Name = "job2_" . $jbExportTimeYear; // Check existence in separate "job2" table of the requested year, otherwise reset name // $db_conn = $db; if ($dbhostJob2History != "") : global $dbname, $dblogin, $dbpassword; $db_conn = getDbConnectionSpecial($dbhostJob2History, $dbname, $dblogin, $dbpassword); // if ($db_conn == "ERR_DB") : $db_conn = $db; endif; if (!is_object($db_conn) || $db_conn == "") : $db_conn = $db; endif; endif; $jb2Exist = $db_conn->getOne("SELECT jb_id FROM " . $job2Name . " WHERE jb_id = '" . $job_id . "'"); if ($jb2Exist == "" || $jb2Exist == "NULL") : $job2Name = "job2"; $db_conn = $db; endif; endif; // Take historic job data if ($mode == "0") : $jbHistoryRawData = getFieldValueFromId($job2Name, "jb_id", $job_id, "jb2_history_rawdata", $db_conn); elseif ($mode == "1") : if ($f_act == "mailsend") : $jbHistoryData = getFieldValueFromId($job2Name, "jb_id", $job_id, "jb2_history_mail", $db_conn); else : $jbHistoryData = getFieldValueFromId($job2Name, "jb_id", $job_id, "jb2_history_hq", $db_conn); endif; elseif ($mode == "2") : $jbHistoryData = getFieldValueFromId($job2Name, "jb_id", $job_id, "jb2_history_cs", $db_conn); else : $jbHistoryData = getFieldValueFromId($job2Name, "jb_id", $job_id, "jb2_history_hq", $db_conn); endif; // Uncompress historic data // $jbHistoryRawData = uncompress($jbHistoryRawData, $uncompressRawFunc); // $jbHistoryData = uncompress($jbHistoryData, $uncompressFunc); if ($mode == "0") : if (substr(phpversion(), 0, 1) >= "5") : // $jbHistoryRawData = gzuncompress($jbHistoryRawData); $jbHistoryRawData = gzinflate($jbHistoryRawData); else : // $jbHistoryRawData = gzuncompress(substr($jbHistoryRawData,4)); $jbHistoryRawData = getFieldValueFromId($job2Name, "jb_id", $job_id, "UNCOMPRESS(jb2_history_rawdata)", $db_conn); endif; else : if ($jbHistoryData != "") : $jbHistoryData = gzinflate($jbHistoryData); endif; endif; // Get historic html data from the job according to the mode if (trim($jbHistoryData) != "") : $jbHistoryData = str_replace("SIGNS_PATH", "../temp/signs/", $jbHistoryData); $jbHistoryData = str_replace("\'", "'", $jbHistoryData); $jbHistoryDataArray = spliti("-;-", $jbHistoryData); if (count($jbHistoryDataArray) > 0) : $historicJobParameterState = $jbHistoryDataArray[0]; $jobentry = $jbHistoryDataArray[1]; $tourentry = $jbHistoryDataArray[2]; $jobcosts = $jbHistoryDataArray[3]; $courierentry = $jbHistoryDataArray[4]; $employeeentry = $jbHistoryDataArray[5]; $takeRealJobData = false; $historicJobParameterState = str_replace("|", "-,-", $historicJobParameterState); $historicJobParameterArray = spliti("-,-", $historicJobParameterState); $historicJobParameterArrayLen = count($historicJobParameterArray); for ($l = 0; $l < $historicJobParameterArrayLen; $l++) : $singleJobParameterArray = spliti("=", $historicJobParameterArray[$l]); global ${$singleJobParameterArray[0]}; ${$singleJobParameterArray[0]} = trim($singleJobParameterArray[1]); endfor; endif; endif; // Get historic raw data from the job if (trim($jbHistoryRawData) != "") : $takeRealJobData = false; // Parse raw job data and set all global parameters $jbHistoryRawData = str_replace("|", "-,-", $jbHistoryRawData); $jbHistoryRawDataArray = spliti("-,-", $jbHistoryRawData); $jbHistoryRawDataArrayLen = count($jbHistoryRawDataArray); for ($l = 0; $l < $jbHistoryRawDataArrayLen; $l++) : $singleJobParameterArray = spliti("=", $jbHistoryRawDataArray[$l]); global ${$singleJobParameterArray[0]}; ${$singleJobParameterArray[0]} = trim($singleJobParameterArray[1]); endfor; endif; endif; endif; return $takeRealJobData; } ?>
"; for ($i = 0; $i < $fieldsLength; $i++) : if ($i % 2 == 0) : $cellColor = "#BBBBFF"; $cellColor2 = "#DDDDDD"; endif; if ($i % 2 == 1) : $cellColor = "#CCCCFF"; $cellColor2 = "#EEEEEE"; endif; if (mcArrTrim($titlesArray, $i) == "") : $titlesArray[$i] = " "; endif; $courierentry .= ""; $courierentry .= ""; $tmpVarName = mcArrIsSet($fieldsArray, $i); ${$tmpVarName} = $row[$tmpVarName]; mcArrIsSet($outputFormatField, $tmpVarName); // Do not show excluded filters, remove them by parameter for output only if (($tmpVarName == "cr_filter" || $tmpVarName == "crvh_filter") && ${$tmpVarName} != "" && $constMaskExcludedFilterStr != "") : for ($e = 0; $e < $constMaskExcludedFilterArrLen; $e++) : ${$tmpVarName} = removeItemFromFilterstringWithCommata(${$tmpVarName}, $constMaskExcludedFilterArr[$e]); endfor; endif; $out = formatOutput(${$tmpVarName},$outputFormatField[$tmpVarName],$specialOutputFormat); // Take cr_sid from job because (1:n)-relation "courier:vehicle" if ($tmpVarName == "cr_sid") : $out = $job_cr_sid; endif; // special formatting for tour-fields if ($tmpVarName == "cr_available") : switch($out) { case "0" : $out = getLngt("nicht online"); break; case "1" : $out = getLngt("online"); break; }; endif; if ($tmpVarName == "cr_filter") : $tmpFilterStr = $out; if ($out == " ") : $out = ""; else : $out = substr($out, 1, -1); $out = my_str_replace ($out, ",", "
", "5"); $out .= "
"; endif; // $out .= "
" . $job_cr_sid . ""; $out .= "" . getLngt("Übersicht") . ""; endif; if ($tmpVarName == "crvh_filter") : $tmpFilterStr = $out; if ($out == " ") : $out = ""; else : $out = substr($out, 1, -1); $out = my_str_replace ($out, ",", "
", "5"); $out .= "
"; endif; // $out .= "
" . $job_cr_sid . ""; $out .= "" . getLngt("Übersicht") . ""; endif; $courierentry .= ""; $courierentry .= ""; if ($out == " ") : $out = ""; endif; $rawJobData .= "cr_" . $tmpVarName . "=" . $out . "|"; endfor; // Link to copy the job and link to history if ($f_act != "mailsend" && $f_act != "printjob" && $f_act != "export") : $courierentry .= ""; endif; // $courierentry .= "
" . $titlesArray[$i] . "" . $out . "

"; $courierentry .= "" . getLngt("Kurierhistorie") . ""; $courierentry .= "
" . getLngt("FERNTOUR") . "
" . getLngt("KURIER") . ":
" . getLngt("Name") . ": " . getFieldValueFromId("user", "usr_id", $tmpUsrId, "usr_name") . "
" . getLngt("Vorname") . ": " . getFieldValueFromId("user", "usr_id", $tmpUsrId, "usr_firstname") . "
" . getLngt("Fahrzeug") . ": " . getFieldValueFromId($dbh_jb, "jb_id", $job_id, "cr_sid") . "
" . getLngt("MITARBEITER:") . "
"; for ($i = 0; $i < $fieldsLength; $i++) : if ($i % 2 == 0) : $cellColor = "#BBBBFF"; $cellColor2 = "#DDDDDD"; endif; if ($i % 2 == 1) : $cellColor = "#CCCCFF"; $cellColor2 = "#EEEEEE"; endif; if (mcArrTrim($titlesArray, $i) == "") : $titlesArray[$i] = " "; endif; $employeeentry .= ""; $employeeentry .= ""; $tmpVarName = mcArrIsSet($fieldsArray, $i); ${$tmpVarName} = $row[$tmpVarName]; mcArrIsSet($outputFormatField, $tmpVarName); $out = formatOutput(${$tmpVarName},$outputFormatField[$tmpVarName],$specialOutputFormat); $employeeentry .= ""; $employeeentry .= ""; if ($out == " ") : $out = ""; endif; $rawJobData .= "emp_" . $tmpVarName . "=" . $out . "|"; endfor; // $employeeentry .= "
" . $titlesArray[$i] . "" . $out . "
" . getLngt("MITARBEITER:") . "
 

Aktuelle Route in Google Maps:
" . showInGoogleMaps($job_id) . "
" . getLngt("KOSTEN") . ":
"; $jobCostArr = getJobCostsByID($job_id); foreach ($jobCostArr as $costArr) { $jobcosts .= "Zahler: " . $costArr[0] . "
"; for ($j = 0; $j < (count($costArr[1]) - 1); $j++): $jobcosts .= $costArr[1][$j][0] . ": " . number_format($costArr[1][$j][1], 2, ',', '.') . "
"; endfor; $jobcosts .= "" . $costArr[1][$j][0] . ": "; $jobcosts .= "" . number_format($costArr[1][$j][1], 2, ',', '.') . "" . "
"; } $jobcosts .= "
" . getLngt("KOSTEN:") . "
" . $outSummationText . ":" . number_format(round($sumOfSummationField,2), 2, ",", ".") . "  
[" . getLngt("Selbsterfasserrabatt") . " (" . sprintf("%01.2f", $self_service_discount) . "% auf " . number_format(round($gross_price,2), 2, ",", ".") . "):" . number_format($gross_price - round($gross_price * ((100-$self_service_discount)/100), 2), 2, ",", ".") . "]
  
[" . getLngt("Ohne Aufschlag") . " (" . $job_markup . "%):" . number_format(round($job_subtotalprice,2), 2, ",", ".") . "]
" . getLngt("Rechnungstext:") . "" . $jbInvoiceText . "
" . getLngt("KOSTEN") . ":
" . $outSummationText . ": " . number_format(round($sumOfSummationField,2), 2, ",", ".") . "  
 
" . getLngt("KUNDENPREIS") . ":" . number_format(round($jbTotalSumWithToll,2), 2, ",", ".") . "  
" . getLngt("FRACHTVERGÜTUNG") . ":" . number_format($jbCrPrice, 2, ",", ".") . "  
[" . getLngt("Ohne Service") . " (" . $jb_cr_serviceprice . " EUR):" . number_format(round($jbprc_cr_subtotal_inkl_agio_and_markup,2), 2, ",", ".") . "]
[" . getLngt("Ohne Aufschlag") . " (" . $jbprc_cr_markup . "%):" . number_format(round($jbprc_cr_subtotal_inkl_agio,2), 2, ",", ".") . "]
[" . getLngt("Ohne Kundenaufschlag") . " (" . $jbCrAgio . "%):" . number_format($jbprc_cr_subtotal, 2, ",", ".") . "]
[" . $jbCrAgioText . "]
" . getLngt("Frachtvergütung bei BWV-Anschluss") . ":" . number_format($jb_cr_price_retourArr[0], 2, ",", ".") . "  
[" . getLngt("Ohne Aufschlag") . " (" . $jbprc_cr_markup . "%):" . number_format($jb_cr_price_retourArr[1], 2, ",", ".") . "]

" . getLngt("Route der PZM-Preisberechnung") . "