= "7.0"): // require_once("../PEAR/HTML/Template/IT.php"); //else: // require_once("HTML/IT.php"); //endif; if ($usr_type != 1 && $usr_type != 0): reportDie ("$PHP_SELF: Ungültiger 'usr_type': '$usr_type'", false); endif; //if ($phpVersion >= "7.0"): // $tpl = new HTML_Template_IT(); //else: // $tpl = new IntegratedTemplate(); //endif; $output = file_get_contents("jb_special.tpl.htm"); $output = str_replace("{_css_file_}", "../css/phoenix.css.php", $output); //$tpl->loadTemplatefile("jb_special.tpl.htm", true, true); //$tpl->setCurrentBlock("css_file"); //$tpl->setVariable("_css_file_", "../css/phoenix.css.php"); ////$tpl->setVariable("_css_file_", "../css/phoenix-print.css"); //$tpl->parseCurrentBlock("css_file"); list ($cs_id, $csc_id, $action, $sort, $deljobs) = getHttpVars(array("cs_id", "csc_id", "action", "sort", "deljobs")); getSecHttpVars("1", array("cs_id", "csc_id")); if ($deljobs != "") { $sqlquery = "SELECT jb_id, jb_tourname FROM job WHERE jb_id IN (" . $deljobs . ")"; $res = $db->query($sqlquery); if (DB::isError($res)) reportDie ("$PHP_SELF: '$sqlquery': " . $res->getMessage()); $jb_tournames = array(); while ($row = $res->fetch_assoc()): $jb_tournames[$row["jb_id"]] = $row["jb_tourname"]; endwhile; $res->free(); $sqlquery = "UPDATE job SET jb_tourname = '' WHERE jb_id IN (" . $deljobs . ")"; writeLog_("../log/job_options_", $sqlquery . " " . json_encode($jb_tournames)); $res = $db->query($sqlquery); if (DB::isError($res)) reportDie ("$PHP_SELF: '$sqlquery': " . $res->getMessage()); header("Location: ../jobs/jb_special.php?csc_id=" . ec($csc_id) . "&cs_id=" . ec($cs_id) . "&action=" . $action . "&sort=" . $sort); exit; } if ($csc_id == ""): if ($cs_id != "" && $cs_id != "0"): // BARZAHLER $CS_ID ABFANGEN!!! if ($db->getOne("SELECT cs_id FROM costcenter WHERE csc_id = " . CSC_ID_PAYER_CASH) == $cs_id): $csc_id_list_sql = CSC_ID_PAYER_CASH; else: $sqlquery = "SELECT csc_id FROM costcenter WHERE cs_id = " . $cs_id . " AND csc_visible = 1"; $res = $db->query($sqlquery); if (DB::isError($res)) reportDie ("$PHP_SELF: '$sqlquery': " . $res->getMessage()); $csc_id_list_sql = ""; while ($row = $res->fetch_assoc()): if ($csc_id_list_sql != "") $csc_id_list_sql .= ","; $csc_id_list_sql .= $row["csc_id"]; endwhile; $res->free(); endif; else: // reportDie ("$PHP_SELF: Parameter 'cs_id' fehlt", false); endif; else: $csc_id_list_sql = $csc_id; endif; $hq_id = $HTTP_SESSION_VARS['hq_id']; $sqlStmt = "SELECT jb.jb_id, jb.jb_ordertime, jb.jb_tourname, jb.jb_totalprice, jb.jb_permanent, jb.jb_permanent2, jb.jp_permenddat, csc_name, " . "tr.tr_comp, ad.ad_zipcode, ad2.ad_zipcode AS ad2_zipcode, CONCAT(ad.ad_street,' ',tr.tr_hsno) AS streethsno, " . "vht.mt_sort AS vht_sort, vht.mt_value AS vht_value " . "FROM tour AS tr, address AS ad, metatype AS vht, costcenter AS csc, job AS jb LEFT JOIN tour AS tr2 ON tr2.jb_id = jb.jb_id AND tr2.tr_sort = '2' LEFT JOIN address AS ad2 ON ad2.ad_id = tr2.ad_id " . "WHERE jb.vht_id = vht.mt_sort AND vht.mt_type = 'vehicletype' AND jb.jb_id = tr.jb_id AND tr.tr_sort = 1 AND tr.ad_id = ad.ad_id"; // gespeicherte Tournamen der übergebenen Kostenstelle holen // wenn Kostenstelle Barzahler, dann nur Touren, in denen kein Zahler (in csc_id_payer_cash) eingetragen ist! if ($action == "") $action = 1; switch ($action) { case 2: case 3: // Wenn alle Daueraufträge der Zentrale (wenn $csc_id/$cs_id leer), dann Datum aus DB nehmen (auf diese Weise können alte Dumps analysiert werden) $today = getdate(); if ($csc_id_list_sql != ""): $today_date = $today['year'] . "-" . sprintf("%02d", $today['mon']) . "-" . sprintf("%02d", $today['mday']); else: list($tmpJahr, $tmpMonat, $tmpTag, $dummy1, $dummy2) = getValsFromDate($db->getOne("SELECT MAX(ka_lastexecutiontime) FROM keepalive")); $today_date = $tmpJahr . "-" . $tmpMonat . "-" . $tmpTag; endif; // Daueraufträge holen $sqlStmt .= " AND (jb.jb_ordertime >= '$today_date" . " 00:00:00')" . " AND ((jb.jb_storno != 3 AND jb.jb_storno != 4) OR jb.jb_storno IS NULL) " . " AND jb.jb_status != 2 AND (jb.jb_permanent IN (4, 5, 6, 7, 8, 9) OR (jb.jb_permanent IN (1, 2, 3) AND jb.jb_permanent2 != '0000000'))" . " AND (jb.jb_id_copy_permanent IS NULL OR jb.jb_id_copy_permanent = 0) " . " AND (jb.jp_permenddat >= '$today_date" . " 00:00:00' OR jb.jp_permenddat IS NULL OR jb.jp_permenddat = '00.00.0000 00:00:00')"; $actionStr = "Daueraufträge"; $actionStrAlt2 = "Gespeicherte Touren"; $actionAlt2 = "1"; $actionStrAlt1 = ($action == 2 ? "ein" : "aus"); $actionAlt1 = ($action == 2 ? 3 : 2); // Dauerauftragsrhythmus-Typen holen $sqlquery = "SELECT mt_sort, mt_value FROM metatype WHERE mt_type = 'permanent' ORDER BY mt_sort"; $res = $db->query($sqlquery); if (DB::isError($res)) reportDie ("$PHP_SELF: '$sqlquery': " . $res->getMessage()); $permanent_types = array(); while ($row = $res->fetch_assoc()): $permanent_types[$row['mt_sort']] = $row['mt_value']; endwhile; $res->free(); // alle Vorgänger-Daueraufträge (bis Anfang des letzten Jahres) für die Darstellung der Historie holen $sqlquery = "SELECT jb_id, jb_id_copy_permanent, jb_ordertime FROM job WHERE NOT (jb_id_copy_permanent IS NULL) AND jb_ordertime > " . ($today['year'] - 1) . "-01-01 AND (csc_id_payer IN (" . $csc_id_list_sql . ") OR csc_id_payer_cash IN (" . $csc_id_list_sql . ")) ORDER BY jb_id ASC"; $res = $db2->query($sqlquery); if (DB::isError($res)) reportDie ("$PHP_SELF: '$sqlquery': " . $res->getMessage()); $permanent_jobs = array(); while ($row = $res->fetch_assoc()): $permanent_jobs[$row['jb_id_copy_permanent']] = array($row['jb_id'], $row['jb_ordertime']); endwhile; $res->free(); break; default: // Konserven holen $sqlStmt .= " AND LENGTH(jb.jb_tourname) > 0"; $actionStr = "Gespeicherte Touren"; $actionStrAlt2 = "Daueraufträge"; $actionAlt2 = "2"; $actionStrAlt1 = "undefined"; $actionAlt1 = "undefined"; } switch ($sort) { case 1: $sqlSortField = "jb_id"; break; case 2: $sqlSortField = "jb_totalprice"; break; case 3: $sqlSortField = "csc_name"; break; case 4: $sqlSortField = "jb_tourname"; break; case 5: $sqlSortField = "tr_comp"; break; case 6: $sqlSortField = "streethsno"; break; case 7: $sqlSortField = "ad_zipcode"; break; case 8: $sqlSortField = "ad2_zipcode"; break; case 9: $sqlSortField = "vht_value"; break; case 10: $sqlSortField = "jb_ordertime"; break; default: $sqlSortField = "jb_tourname"; } //if ($csc_id_list_sql == CSC_ID_PAYER_CASH): // $sqlStmt .= // " AND (jb.csc_id_payer = '$csc_id_list_sql' AND jb.csc_id_payer_cash != 0)"; if ($csc_id_list_sql != ""): $sqlStmt = "(" . $sqlStmt . " AND (csc.csc_id = jb.csc_id_payer)" . " AND jb.csc_id_payer IN ($csc_id_list_sql)" . ") UNION (" . $sqlStmt . " AND (csc.csc_id = jb.csc_id_payer_cash)" . " AND (jb.csc_id_payer_cash IN ($csc_id_list_sql) AND jb.csc_id_payer_cash != '0')" . ")"; endif; $sqlStmt .= " ORDER BY $sqlSortField"; if ($csc_id != ""): // wenn Root-Kostenstelle, dann Name aus company nehmen if (trim($db->getOne("SELECT csc_pre_id FROM costcenter WHERE csc_id = '" . $csc_id . "'")) == ""): $csc_name = $db->getOne( "SELECT company.cmp_comp FROM company, customer, costcenter" . " WHERE customer.cs_id = costcenter.cs_id AND company.cmp_id = customer.cmp_id " . " AND costcenter.csc_id = '" . $csc_id . "'"); else: // wenn Unterkostenstelle, dann Kostenstellennamen $csc_name = $db->getOne("SELECT csc_name FROM costcenter WHERE csc_id = '" . $csc_id . "'"); endif; elseif ($cs_id != ""): $csc_name = $db->getOne( "SELECT company.cmp_comp FROM company, customer" . " WHERE customer.cs_id = $cs_id AND company.cmp_id = customer.cmp_id"); else: $cmp_id = getFieldValueFromId("headquarters", "hq_id", "$hq_id", "cmp_id"); $cmp_comp = getFieldValueFromId("company", "cmp_id", "$cmp_id", "cmp_comp"); $csc_name = getFieldValueFromId("company", "cmp_id", "$cmp_id", "cmp_comp2"); endif; $tableHeader_output = " " . "" . "  
 
" . "$csc_name: $actionStr" . "" . ($actionStrAlt1 == "undefined" ? "" : "   " . "" ) . "

" . "" . "" . ""; //$tpl->setCurrentBlock("tableHeader"); //$tpl->setVariable("_tableHeader_", // " " . // "" . // "  
 
" . // "$csc_name: $actionStr" . "" . // ($actionStrAlt1 == "undefined" ? "" : // "   " . // "" // ) . // "

" . // "" . // "" . // "" //); //$tpl->parseCurrentBlock("tableHeader"); $sortLinkStart = ""; $sortLinkEnd = ""; $tableHeader_output .= "Lfd. Nr." . "" . $sortLinkStart . "1" . $sortLinkMid . "Auftr.-Nr." . $sortLinkEnd . "" . $sortLinkStart . "2" . $sortLinkMid . "Preis" . $sortLinkEnd . "" . $sortLinkStart . "3" . $sortLinkMid . "Kostenstelle" . $sortLinkEnd . "" . $sortLinkStart . "4" . $sortLinkMid . "Tourenname" . $sortLinkEnd . "" . $sortLinkStart . "5" . $sortLinkMid . "Firma" . $sortLinkEnd . "" . $sortLinkStart . "6" . $sortLinkMid . "Startadresse" . $sortLinkEnd . "" . $sortLinkStart . "7" . $sortLinkMid . "S.PLZ" . $sortLinkEnd . "" . $sortLinkStart . "8" . $sortLinkMid . "Z.PLZ" . $sortLinkEnd . "" . $sortLinkStart . "9" . $sortLinkMid . "Fahrz." . $sortLinkEnd . "" . $sortLinkStart . "10" . $sortLinkMid . "Auftragszeit" . $sortLinkEnd . "Bearb." . ($action == 1 ? " / " : "") . ""; $output = str_replace("{_tableHeader_}", $tableHeader_output, $output); //$tpl->setCurrentBlock("tableHeader"); //$tpl->setVariable("_tableHeader_", // "Lfd. Nr." . // "" . $sortLinkStart . "1" . $sortLinkMid . "Auftr.-Nr." . $sortLinkEnd . // "" . $sortLinkStart . "2" . $sortLinkMid . "Preis" . $sortLinkEnd . // "" . $sortLinkStart . "3" . $sortLinkMid . "Kostenstelle" . $sortLinkEnd . // "" . $sortLinkStart . "4" . $sortLinkMid . "Tourenname" . $sortLinkEnd . // "" . $sortLinkStart . "5" . $sortLinkMid . "Firma" . $sortLinkEnd . // "" . $sortLinkStart . "6" . $sortLinkMid . "Startadresse" . $sortLinkEnd . // "" . $sortLinkStart . "7" . $sortLinkMid . "S.PLZ" . $sortLinkEnd . // "" . $sortLinkStart . "8" . $sortLinkMid . "Z.PLZ" . $sortLinkEnd . // "" . $sortLinkStart . "9" . $sortLinkMid . "Fahrz." . $sortLinkEnd . // "" . $sortLinkStart . "10" . $sortLinkMid . "Auftragszeit" . $sortLinkEnd . // "Bearb." . ($action == 1 ? " / " : "") . // "" //); //$tpl->parseCurrentBlock("tableHeader"); // Jetzt die Daueraufträge bzw. Konserven holen // echo "[$sqlStmt]"; $result = $db2->query($sqlStmt); if (DB::isError($result)) reportDie ("$PHP_SELF:
$sqlStmt
" . $result->getMessage()); $ph = getPublicHolidays(getDateTime("year"), "1", "0"); $js_dates_list = "var specialDates=[\n"; $i = 1; $jobentry_output = ""; while ($row = $result->fetch_assoc()): // $tpl->setCurrentBlock("jobentry"); if ($i % 2 == 0) : $cellColor = "DDDDDD"; $cellColor2 = "EEEEEE"; endif; if ($i % 2 == 1) : $cellColor = "BBBBFF"; $cellColor2 = "CCCCFF"; endif; $firstLineFiller = ""; if ($action == 3) $firstLineFiller = " 
"; $jb_idLink = $firstLineFiller . "" . $row['jb_id'] . ""; $jb_tournameLink = ""; if (trim($row['jb_tourname']) != "") $jb_tournameLink = "" . $row['jb_tourname'] . ""; $jb_ordertimeLink = my_datum_zeit_format_datetime($row['jb_ordertime'], " "); if ($action == 2 || $action == 3) { $jb_permanent2_str = ""; if ($row['jb_permanent'] == 1 || $row['jb_permanent'] == 2 || $row['jb_permanent'] == 3) { if (substr($row['jb_permanent2'], 0, 1) == "1") $jb_permanent2_str .= ", Mo"; if (substr($row['jb_permanent2'], 1, 1) == "1") $jb_permanent2_str .= ", Di"; if (substr($row['jb_permanent2'], 2, 1) == "1") $jb_permanent2_str .= ", Mi"; if (substr($row['jb_permanent2'], 3, 1) == "1") $jb_permanent2_str .= ", Do"; if (substr($row['jb_permanent2'], 4, 1) == "1") $jb_permanent2_str .= ", Fr"; if (substr($row['jb_permanent2'], 5, 1) == "1") $jb_permanent2_str .= ", Sa"; if (substr($row['jb_permanent2'], 6, 1) == "1") $jb_permanent2_str .= ", So"; if ($jb_permanent2_str != "") $jb_permanent2_str = ": " . substr($jb_permanent2_str, 2); } // Daueraufträge: Link zu einem Extra-Fenster mit den Ausführungsdaten $jb_ordertimeLink = "[" . $permanent_types[$row['jb_permanent']] . $jb_permanent2_str . "]
" . "" . my_datum_zeit_format_datetime($row['jb_ordertime'], " ") . "
"; // Zu dem aktuellen Dauerauftrag alle ordertimes der Vorgängeraufträge holen if ($j > 1) $js_dates_list .= ",\n"; $js_dates_list .= "["; $j = 0; $jb_id_prev = $row["jb_id"]; do { list($jahr, $monat, $tag, $stunde, $minute) = getValsFromDate($permanent_jobs[$jb_id_prev][1]); // jb_ordertime des Vorgängers if ($j > 0) $js_dates_list .= ",\n"; $js_dates_list .= "\"" . $jahr . sprintf("%02d", $monat) . sprintf("%02d", $tag) . "\""; if ($action == 3) { $jb_idLink .= "
" . $permanent_jobs[$jb_id_prev][0] . ""; $jb_ordertimeLink .= my_datum_zeit_format_datetime($permanent_jobs[$jb_id_prev][1], " ") . "
"; } $jb_id_prev = $permanent_jobs[$jb_id_prev][0]; // jb_id des Vorgängers $j++; } while(array_key_exists($jb_id_prev, $permanent_jobs)); // solange bis der Vorgänger selbst keinen weiteren Vorgänger hat if (trim($row['jp_permenddat']) != "") $jb_ordertimeLink .= "Enddatum: " . my_datum_zeit_format_datetime($row['jp_permenddat'], " ") . "
"; // Zu dem aktuellen Dauerauftrag alle Ausführungsdaten berechnen, damit sie im Extra-Fenster angezeigt werden können list($jahr, $monat, $tag, $stunde, $minute) = getValsFromDate($row['jb_ordertime']); $tempDate = array($jahr, sprintf("%d", $monat), sprintf("%d", $tag)); while($tempDate[0] <= $jahr + 1) { if ($j > 0) $js_dates_list .= ",\n"; $js_dates_list .= "\"" . $tempDate[0] . sprintf("%02d", $tempDate[1]) . sprintf("%02d", $tempDate[2]) . "\""; $tempDate = getNextOrderDate($tempDate[0], $tempDate[1], $tempDate[2], $row['jb_permanent'], $row['jb_permanent2'], false); list($endejahr, $endemonat, $endetag, $dummy1, $dummy2) = getValsFromDate($row['jp_permenddat']); if (!(mktime(0, 0, 0, $tempDate[1], $tempDate[2], $tempDate[0]) < mktime(0, 0, 0, $endemonat, $endetag, $endejahr) || trim($row['jp_permenddat']) == "")) break; $j++; } $js_dates_list .= "]\n"; } if ($action == 1) $delBox = " "; $jobentry_output .= ($jobentry_output == "" ? "" : "") . "" . $i . "" . $jb_idLink . "" . str_replace(".", ",", sprintf("%01.2f", $row['jb_totalprice'])) . "" . $row['csc_name'] . "" . $jb_tournameLink . "" . $row['tr_comp'] . "" . $row['streethsno'] . "" . $row['ad_zipcode'] . "" . $row['ad2_zipcode'] . "" . $row['vht_value'] . "" . $jb_ordertimeLink . "" . $firstLineFiller . "" . $row['jb_id'] . "" . $delBox . ""; // $tpl->setVariable("_jobentry_", // "" . $i . // "" . $jb_idLink . // "" . str_replace(".", ",", sprintf("%01.2f", $row['jb_totalprice'])) . // "" . $row['csc_name'] . // "" . $jb_tournameLink . // "" . $row['tr_comp'] . // "" . $row['streethsno'] . // "" . $row['ad_zipcode'] . // "" . $row['ad2_zipcode'] . // "" . $row['vht_value'] . // "" . $jb_ordertimeLink . // "" . $firstLineFiller . // "" . $row['jb_id'] . "" . $delBox . // "" // ); $i++; // $tpl->parseCurrentBlock("jobentry"); endwhile; $result->free(); $js_dates_list .= "];\n"; $javascript = $js_dates_list . "\n" . "function finishPage(no)\n" . "{\n" . ($actionStrAlt1 == "undefined" ? "" : " document.getElementsByName(\"actionButton1\")[0].disabled = true;\n" ) . " document.getElementsByName(\"actionButton2\")[0].disabled = true;\n" . " if (no == 1)\n" . " self.location.href=\"../jobs/jb_special.php?csc_id=" . ec($csc_id) . "&cs_id=" . ec($cs_id) . "&action=$actionAlt1&sort=$sort\";\n" . " if (no == 2)\n" . " self.location.href=\"../jobs/jb_special.php?csc_id=" . ec($csc_id) . "&cs_id=" . ec($cs_id). "&action=$actionAlt2&sort=$sort\";\n" . "}\n" . "\n" . "var curloc = \"../jobs/jb_special.php?csc_id=" . ec($csc_id) . "&cs_id=" . ec($cs_id) . "&action=" . $action . "&sort=" . $sort ."\"\n;" . "\n"; $output = str_replace("{_jobentry_}", $jobentry_output, $output); $output = str_replace("{_javascript_}", $javascript, $output); echo $output; //$tpl->setCurrentBlock("javascript"); //$tpl->setVariable("_javascript_", $javascript); //$tpl->parseCurrentBlock("javascript"); //$tpl->show(); ?>