query("SELECT DISTINCT csc_id_payer FROM $dbh_jb WHERE jb_status = 2 AND hq_id = '$hq_id'"); //// TOBEDONE: consider date in query!!! // if (DB::isError($res)) // reportDie ("$PHP_SELF: 'SELECT DISTINCT csc_id_payer FROM $dbh_jb WHERE jb_status = 2 AND hq_id = $hq_id': " . $res->getMessage()); // $i = 0; // $csc_id_list_sql_arr = array(); // while ($row = $res->fetch_assoc()): // $csc_id_list_sql_arr[] = $row["csc_id_payer"]; // endwhile; // $res->free(); // $csc_id_list_sql = implode(",", array_unique($csc_id_list_sql_arr)); // $sqlQuery = // "SELECT costcenter.csc_id, costcenter.csc_name, costcenter.csc_pre_id, costcenter.csc_path" . // " FROM costcenter, customer" . // " WHERE customer.cs_id = costcenter.cs_id AND customer.hq_id = '$hq_id' AND " . // " costcenter.csc_id IN ($csc_id_list_sql)"; $sqlQuery = "SELECT DISTINCT costcenter.csc_id, costcenter.csc_name, costcenter.csc_pre_id, costcenter.csc_path, customer.cs_eid, company.cmp_comp" . " FROM company, customer, costcenter, $dbh_jb" . " WHERE customer.cs_id = costcenter.cs_id AND company.cmp_id = customer.cmp_id " . " AND $dbh_jb.csc_id_payer = costcenter.csc_id AND $dbh_jb.jb_status = 2 AND $dbh_jb.hq_id = '$hq_id'"; if ($cs_eid != "" || $cmp_name != ""): if ($cs_eid != ""): $sqlQuery .= " AND customer.cs_eid LIKE '%$cs_eid%'"; endif; if ($cmp_name != ""): $sqlQuery .= " AND (company.cmp_comp LIKE '%$cmp_name%' OR company.cmp_match LIKE '%$cmp_name%')"; endif; $sqlQuery .= " AND costcenter.csc_is_extern = 0"; endif; // " WHERE costcenter.csc_id IN ($csc_id_list_sql)"; //"SELECT cs.cs_eid from customer AS cs, costcenter AS csc" . // " WHERE cs.cs_id = csc.cs_id AND csc.csc_id = '" . $$dbh_jb["csc_id_payer"] . "'" //die( $sqlQuery); endif; else: reportDie ("$PHP_SELF: Ungültiger Wert für Parameter 'mode' : '$mode'"); endif; endif; if ($usr_type == 2) // customer (employee) gets all its own costcenters $sqlQuery .= " AND customer.cs_id = '$cs_id'"; // given cs_eid overrules date selection // if ($cs_eid == "" && $cmp_name == "") $sqlQuery .= $dateSelectionStmt; $sqlQuery .= " ORDER BY csc_name"; // select costcenters //echo $sqlQuery . "
"; //include_once("../include/caglobal.inc.php"); mkCsc_id_customer_list_complete_with_csc_pre_id($sqlQuery); //print_r ($csc_id_customer_list_complete); // global $all_csc_ids; // print_r ($all_csc_ids); usort ($csc_id_customer_list_complete, "cmp_csc_id_customer_list_complete"); //print_r($csc_id_customer_list_complete); //echo count($csc_id_customer_list_complete) . "
"; } function mkCsc_id_customer_list_complete_with_csc_pre_id($sqlQuery) { global $db2, $csc_id_customer_list_complete, $all_csc_ids; $tmp_csc_ids = array(); $res = $db2->query($sqlQuery); if (DB::isError($res)) reportDie ("$PHP_SELF: '$sqlQuery' : " . $res->getMessage()); $i = count($csc_id_customer_list_complete); while ($row = $res->fetch_assoc()): if (!in_array ($row["csc_id"], $all_csc_ids)): $all_csc_ids[] = $row["csc_id"]; $csc_id_customer_list_complete[$i]["csc_id"] = $row["csc_id"]; $csc_id_customer_list_complete[$i]["csc_pre_id"] = $row["csc_pre_id"]; if ($row["csc_pre_id"] != ""): $csc_id_customer_list_complete[$i]["csc_name"] = $row["csc_name"] . " (". $row["cs_eid"] . ")"; if (!in_array ($row["csc_pre_id"], $all_csc_ids)): if (!in_array ($row["csc_pre_id"], $tmp_csc_ids)): $tmp_csc_ids[] = $row["csc_pre_id"]; endif; endif; else: $csc_id_customer_list_complete[$i]["csc_name"] = $row["cmp_comp"] . " (". $row["cs_eid"] . ")"; endif; $csc_id_customer_list_complete[$i++]["csc_path"] = $row["csc_path"]; endif; endwhile; $res->free(); if (count($tmp_csc_ids) > 0): $tmp_csc_ids_sql = implode(",", array_unique($tmp_csc_ids)); $sqlQuery = "SELECT DISTINCT costcenter.csc_id, costcenter.csc_name, costcenter.csc_pre_id, costcenter.csc_path, customer.cs_eid, 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 IN ($tmp_csc_ids_sql)"; mkCsc_id_customer_list_complete_with_csc_pre_id($sqlQuery); endif; } function cmp_csc_id_customer_list_complete ($a, $b) { if ($a["csc_name"] == $b["csc_name"]) return 0; return ($a["csc_name"] < $b["csc_name"]) ? -1 : 1; } function mkCsc_id_customer_list() { global $cs_id, $csc_id, $csc_id_root, $csc_id_customer_list, $usr_type, $csc_id_usr, $csc_id_customer_list_complete; if ($usr_type == 2 || $usr_type == 1): // get identification of external costcenters // external costcenters cannot be invoiced, // private costcenters are not to be seen for anybody in the customer's company $csc_id_root = getFieldValueFromId("customer", "cs_id", "$cs_id", "csc_id"); $csc_name_root = getFieldValueFromId("costcenter", "csc_id", "$csc_id_root", "csc_name"); $csc_path_extern = "//" . $csc_name_root . "//EXTERN//"; $csc_path_private = "//" . $csc_name_root . "//PRIVAT//"; // write all costcenters for the current user // except external ones in array $j = 0; //echo count($csc_id_customer_list_complete); for ($i = 0; $i < count($csc_id_customer_list_complete); $i++): //echo "'" . strtoupper(substr($csc_id_customer_list_complete[$i]["csc_path"], 0, // strlen($csc_path_extern))) . "' == '" . strtoupper($csc_path_extern) . "'
"; if ((strtoupper(substr($csc_id_customer_list_complete[$i]["csc_path"], 0, strlen($csc_path_extern))) != strtoupper($csc_path_extern)) && (strtoupper(substr($csc_id_customer_list_complete[$i]["csc_path"], 0, strlen($csc_path_private))) != strtoupper($csc_path_private)) && (strtoupper($csc_id_customer_list_complete[$i]["csc_name"]) != "EXTERN") && ((strtoupper($csc_id_customer_list_complete[$i]["csc_name"]) != "PRIVAT" || $usr_type == 1)) ): // if (substr($csc_id_customer_list_complete[$i]["csc_path"], 0, strlen($csc_path_start)) // != $csc_path_extern): //echo "'" . $csc_id_usr . "' '" . $csc_id_customer_list_complete[$i]["csc_id"] . "'
"; if ($usr_type == 1): // Only if the costcenter of the user currently logged in // is parent of the current costcenter, then take it $csc_id_customer_list[$j]["csc_id"] = $csc_id_customer_list_complete[$i]["csc_id"]; $csc_id_customer_list[$j]["csc_name"] = $csc_id_customer_list_complete[$i]["csc_name"]; $csc_id_customer_list[$j++]["csc_pre_id"] = $csc_id_customer_list_complete[$i]["csc_pre_id"]; else: if (costcenterIsParent($csc_id_usr, $csc_id_customer_list_complete[$i]["csc_id"])): $csc_id_customer_list[$j]["csc_id"] = $csc_id_customer_list_complete[$i]["csc_id"]; $csc_id_customer_list[$j]["csc_name"] = $csc_id_customer_list_complete[$i]["csc_name"]; $csc_id_customer_list[$j++]["csc_pre_id"] = $csc_id_customer_list_complete[$i]["csc_pre_id"]; endif; endif; endif; endfor; else: // usr_type 0 for ($i = 0; $i < count($csc_id_customer_list_complete); $i++): $csc_id_customer_list[$i]["csc_id"] = $csc_id_customer_list_complete[$i]["csc_id"]; $csc_id_customer_list[$i]["csc_name"] = $csc_id_customer_list_complete[$i]["csc_name"]; $csc_id_customer_list[$i]["csc_pre_id"] = $csc_id_customer_list_complete[$i]["csc_pre_id"]; endfor; endif; //print_r($csc_id_customer_list); } function costcenterIsParent($csc_id_parent, $csc_id_child) { global $csc_id_customer_list_complete; //echo $csc_id_child . "
"; if ($csc_id_parent == $csc_id_child) return true; for($i = 0; $i < count($csc_id_customer_list_complete); $i++): if ($csc_id_customer_list_complete[$i]["csc_id"] == $csc_id_child): if ($csc_id_customer_list_complete[$i]["csc_pre_id"] == $csc_id_parent): return true; else: if ($csc_id_child == "") return false; else return costcenterIsParent($csc_id_parent, $csc_id_customer_list_complete[$i]["csc_pre_id"]); endif; endif; endfor; } function check_daterange() { global $dateSelectionStmt, $day_from, $month_from, $year_from, $day_to, $month_to, $year_to, $jb_costcenter, $fromDateRange, $toDateRange, $dbh_jb, $price_title; list ($day_from, $month_from, $year_from, $day_to, $month_to, $year_to, $jb_costcenter) = getHttpVars(array("day_from", "month_from", "year_from", "day_to", "month_to", "year_to", "jb_costcenter")); // check daterange $dateSelectionStmt = ""; if ($day_from != "" && $month_from != "" && $year_from != "" || $day_to != "" && $month_to != "" && $year_to != ""): // dates are given else: // dates are not given // include_once("../include/calendar.inc.php"); $day_to = date("d"); $day_from = 1; $month_to = date("m"); $month_from = $month_to; $year_to = date("Y"); $year_from = $year_to; // list($year_from, $month_from) = addMonths($year_to, $month_to, -1); // $day_from = $day_to + 1; // if (daysPerMonth($year_from, $month_from) < $day_from) // $day_from = daysPerMonth($year_from, $month_from); endif; $fromDateRange = $year_from . "-" . pad($month_from,2) . "-" . pad($day_from,2) . " 00:00:00"; $toDateRange = $year_to . "-" . pad($month_to,2) . "-" . pad($day_to,2) . " 23:59:59"; $dateSelectionStmt = " AND ($dbh_jb.jb_finishtime BETWEEN '$fromDateRange' AND '$toDateRange')"; if (MASK_CR_PRICE_MODE == "1") { $price_title = "Vergütung"; if (strtotime(MASK_CR_PRICE_MODE_DATE) > strtotime($fromDateRange)) $price_title .= " (bis " . substr(MASK_CR_PRICE_MODE_DATE, 8, 2) . "." . substr(MASK_CR_PRICE_MODE_DATE, 5, 2) . "." . substr(MASK_CR_PRICE_MODE_DATE, 0, 4) . " Auftragspreis)"; } } ?>