| ", str_replace(";", " | ", $csv_txt)) .
"\n\n";
$content .= str_replace(">#aa", " bgcolor=\"#DDDDDD\">", str_replace(">#ab", " bgcolor=\"#EEEEEE\">", str_replace(">#ba", " bgcolor=\"#BBBBFF\">", str_replace(">#bb", " bgcolor=\"#CCCCFF\">",
str_replace(">#cc", " bgcolor=\"#DDBBBB\">", str_replace(">#cd", " bgcolor=\"#DDCCCC\">", str_replace(">#dc", " bgcolor=\"#FF9999\">", str_replace(">#dd", " bgcolor=\"#FFAAAA\">",
$csv_txt))))))));
function get_payments($jbpc_id, $jb_export_time, $f_payment_select, $f_min_date, $f_max_date, /* $cs_ids_related, */ $csc_ids_related) {
global $db, $f_datetype;
$modeArr = array(
0 => "bar",
1 => "EC-PIN",
2 => "EC-Last",
10 => "Family",
11 => "Business",
15 => "Service",
16 => "LCD happy",
17 => "LCD sad",
18 => "OS happy",
19 => "OS sad",
20 => "Rechnung an IKEA"
);
$cs_id_relatedArr = array(
"3534" => "LuBu",
"3540" => "SiFi",
"38252" => "LuBu",
"38253" => "SiFi",
"1" => "Schnelsen",
"2" => "Moorfleet",
"17093" => "Altona",
"72470" => "Schnelsen",
"72471" => "Moorfleet",
"72185" => "Altona"
);
$csc_id_relatedArr = array(
"3506" => "LuBu",
"3512" => "SiFi",
// "38172" => "LuBu/SiFi",
"1" => "Schnelsen",
"2" => "Moorfleet",
"17051" => "Altona"
);
$cC = "#dc"; $cC2 = "#dd";
// if ($colCnt % 2 == 0) : $cC = "#cc"; $cC2 = "#cd"; endif;
// if ($colCnt++ % 2 == 1) : $cC = "#dc"; $cC2 = "#dd"; endif;
$ret_val = $cC . ($f_payment_select == "1" || $jbpc_id != "" ? "Sammelnr." : "Bemerkung") . ";$cC2" . "Abrechnung" . ";$cC" . "Export" . ";$cC2" . "Zahlart" . ";$cC" . "Markt" . ";$cC2" . "Ordernummer" . ";$cC" . "Auftragsnr." . ";$cC2" . "Zusatz zu" . ";$cC" . "Dispo-Info" . ";$cC2" . "Preis" . ";$cC" . "Lagerk." . ";$cC2" . "Ausführung" . ";$cC" . "Erledigung" . ";$cC2" . "Status" . ";$cC" . "unfertig" . ";$cC2" . "Storno" . ";$cC" . "Fahrer" . ";$cC2" . "Fuhrlohn" . ";$cC" . "Export" . ";$cC2" . "BSG" . " \n";
$where_clause2 = "";
$from_clause = "";
$field_clause = "";
// Parameter-Auswertung
if ($jbpc_id != "") {
// Sammelnummer: Alle unter dieser Sammelnummer abgerechneten Aufträge finden
$where_clause = "jbpc_id = $jbpc_id";
} elseif ($jb_export_time != "") {
// Exportzeitstempel gesetzt: Alle Aufträge mit diesem Fuhrlohnexport-Zeitstempel finden
$jbpc_ids = "";
$sql_query = "SELECT DISTINCT jbpc_id FROM jobpayment, job WHERE jobpayment.jb_id = job.jb_id AND LEFT(jb_export_time, 10) = '" . substr($jb_export_time, 0, 10) . "' AND csc_id_related IN ($csc_ids_related)";
$res1 = mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
while ($row1 = mysql_fetch_array($res1, MYSQL_ASSOC)):
$jbpc_ids .= "," . $row1["jbpc_id"];
endwhile;
mysql_free_result($res1);
if ($jbpc_ids != "") {
$where_clause = "jbpc_id IN (" . substr($jbpc_ids, 1) . ")";
$where_clause2 = " AND LEFT(jb_export_time, 10) = '" . substr($jb_export_time, 0, 10) . "'";
}
} elseif ($f_payment_select == "2" || $f_payment_select == "3" || $f_payment_select == "4" || $f_payment_select == "5") {
$where_clause = "jbpc_id = 0";
$jbpc_id = "0";
// Sammelnummer "0": Alle noch abzurechnenden Aufträge finden
$from_clause = ", genericdatacontainer AS gdc1";
$where_clause2 =
" AND job.jb_id = gdc1.gdc_obj_id AND gdc1.gdc_gen_fieldname = 'acquisitiontime'" .
" AND (jb_storno IS NULL OR jb_storno = 0) " .
" AND (jobpayment.jbpc_id IS NULL OR jobpayment.jbpc_id = 0)" .
" AND (jb_ordertime >= '" . $f_min_date . "' AND jb_ordertime <= '" . $f_max_date . "' AND NOT (job.jb_id IN (315462, 322139, 321777, 319985, 320185, 320946, 316291, 321335, 317036, 323325, 320208)))" .
" AND csc_id_related IN ($csc_ids_related)";
$field_clause = ", jb_service, jbp_tan";
$serviceMont = pow(2, $db->getOne("SELECT mt_sort FROM metatype WHERE mt_type = 'service' AND mt_mapped_value = 'MO'"));
$serviceAust = pow(2, $db->getOne("SELECT mt_sort FROM metatype WHERE mt_type = 'service' AND mt_mapped_value = 'AT'"));
if ($f_datetype == "2")
$f_datetype = "1";
} elseif ($f_payment_select == "1") {
// Die Sammelnummern aller abgerechneten Aufträge ohne möglichen Fuhrlohnexport finden
$jbpc_ids = "";
$sql_query =
"SELECT DISTINCT jbpc_id FROM genericdatacontainer, jobpayment, job" .
" WHERE gdc_gen_fieldname = 'acquisitiontime' AND gdc_obj_id = jobpayment.jb_id AND csc_id_related IN ($csc_ids_related)" .
" AND jobpayment.jb_id = job.jb_id AND jbpc_id != 0 AND (jb_status != 2 OR jb_incomplete = 1) AND jb_cr_price > 0 AND jb_export_time IS NULL";
if ($f_datetype == "1")
$sql_query .=
" AND (jb_ordertime >= '" . $f_min_date . "' AND jb_ordertime <= '" . $f_max_date . "')";
$res1 = mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
while ($row1 = mysql_fetch_array($res1, MYSQL_ASSOC)):
$jbpc_ids .= "," . $row1["jbpc_id"];
endwhile;
mysql_free_result($res1);
if ($jbpc_ids != "") {
$where_clause = "jbpc_id IN (" . substr($jbpc_ids, 1) . ")";
if ($f_datetype == "2")
$where_clause .= " AND jbpc_bookingdate >= '" . $f_min_date . "' AND jbpc_bookingdate <= '" . $f_max_date . "'";
$where_clause2 = " AND (jb_status != 2 OR jb_incomplete = 1) AND jb_cr_price > 0 AND jb_export_time IS NULL";
}
}
if ($where_clause != "") {
// Die betreffenden jbpc_ids werden aus der jobpaymentcollection geholt (im Falle von jbpc_id = 0 nur Dummy)
$sql_query = "SELECT jbpc_id, cs_id, jbpc_mode, jbpc_price, jbpc_bookingdate, jbpc_export_time FROM jobpaymentcollection" .
" WHERE $where_clause";
$res = mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
while (($row = mysql_fetch_array($res, MYSQL_ASSOC)) || $jbpc_id == "0"):
if ($jbpc_id == "0") {
$row = array();
$row["jbpc_id"] = 0;
}
$jb_cr_price_sum = 0;
$bsg_sum = 0;
// $sql_query = "SELECT SUM(jb_cr_price) FROM jobpayment, job WHERE jbpc_id = '" . $row["jbpc_id"] . "' AND jobpayment.jb_id = job.jb_id AND NOT (jb_export_time IS NULL)";
$sql_query = "SELECT SUM(jb_cr_price) FROM (SELECT DISTINCT job.jb_id, jb_cr_price FROM jobpayment, job WHERE jbpc_id = '" . $row["jbpc_id"] . "' AND jobpayment.jb_id = job.jb_id AND NOT (jb_export_time IS NULL) AND jb_export_time != '9999-12-31 23:59:59') AS honk";
$res1 = mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
if ($row1 = mysql_fetch_row($res1)):
$jb_cr_price_sum = $row1[0];
$bsg_sum = $row["jbpc_price"] - $jb_cr_price_sum;
endif;
mysql_free_result($res1);
$cC = "#dc"; $cC2 = "#dd";
// if ($colCnt % 2 == 0) : $cC = "#cc"; $cC2 = "#cd"; endif;
// if ($colCnt++ % 2 == 1) : $cC = "#dc"; $cC2 = "#dd"; endif;
if ($ret_val != "")
$ret_val .= " \n";
if ($jbpc_id != "0")
$ret_val .= $cC . $row["jbpc_id"] . ";$cC2" . formDate($row["jbpc_bookingdate"]) . ";$cC" . formDate($row["jbpc_export_time"]) . ";$cC2" . $modeArr[$row["jbpc_mode"]] . ";$cC" . $cs_id_relatedArr[$row["cs_id"]] . ";$cC2" . " " . ";$cC" . " " . ";$cC2" . " " . ";$cC" . " " . ";$cC2" . formCur($row["jbpc_price"]) . ";$cC" . "" . ";$cC2" . "" . ";$cC" . " " . ";$cC2" . " " . ";$cC" . " " . ";$cC2" . " " . ";$cC" . "" . ";$cC2" . formCur($jb_cr_price_sum) . ";$cC" . "" . ";$cC2" . formCur($bsg_sum) . " \n";
// Die tatsächlich abgerechneten Preise ergeben sich aus jobcalculator (exkl. Lagerkosten),
// die werden hier vorab schon mal geholt, da das schlecht in die Hauptabfrage passt
$sql_query =
"SELECT job.jb_id, SUM(ROUND(jbc_totalprice, 2)) AS jbc_totalprice_sum" .
" FROM job, jobcalculator, jobpayment" .
" WHERE jobcalculator.jb_id = job.jb_id AND job.jb_id = jobpayment.jb_id AND srvt_name != '0003:par_01' AND jobpayment.jbpc_id" .
" IN (" . $row["jbpc_id"] . ") GROUP BY job.jb_id";
$res1 = mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
$jbc_totalprices = array();
while ($row1 = mysql_fetch_array($res1, MYSQL_ASSOC)):
$jbc_totalprices[$row1["jb_id"]] = $row1["jbc_totalprice_sum"];
endwhile;
mysql_free_result($res1);
// Lagerkosten extra ausweisen
$sql_query =
"SELECT job.jb_id, ROUND(jbc_totalprice, 2) AS totalprice" .
" FROM job, jobcalculator, jobpayment" .
" WHERE jobcalculator.jb_id = job.jb_id AND job.jb_id = jobpayment.jb_id AND srvt_name = '0003:par_01' AND jobpayment.jbpc_id" .
" IN (" . $row["jbpc_id"] . ")";
$res1 = mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
$jbc_lagerk = array();
while ($row1 = mysql_fetch_array($res1, MYSQL_ASSOC)):
$jbc_lagerk[$row1["jb_id"]] = formCur($row1["totalprice"]);
if ($jbc_lagerk[$row1["jb_id"]] == "0,00")
$jbc_lagerk[$row1["jb_id"]] = "";
endwhile;
mysql_free_result($res1);
// Lfd. Meter für f_payment_select == "4" merken
if ($f_payment_select == "4") {
$sql_query =
"SELECT job.jb_id, jbc_amount, ROUND(jbc_price, 2) AS price" .
" FROM job, jobcalculator, jobpayment" .
" WHERE jobcalculator.jb_id = job.jb_id AND jb_storno IS NULL AND job.jb_id = jobpayment.jb_id AND srvt_name = '0010:par_01' AND jobpayment.jbpc_id" .
" IN (" . $row["jbpc_id"] . ")";
$res1 = mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
$jbc_lfm = array();
while ($row1 = mysql_fetch_array($res1, MYSQL_ASSOC)):
$jbc_lfm[$row1["jb_id"]] = array(formCur($row1["price"] * 1.19), formCur($row1["jbc_amount"]));
endwhile;
mysql_free_result($res1);
}
$sql_query =
// "SELECT jobpayment.jb_id, jbpc_id, jobpayment.csc_id, jbp_mode, jbp_price, jbp_bookingtime, jbp_counter, jbp_export_time, jb_cr_price, jb_ordertime, jb_export_time FROM jobpayment LEFT JOIN job ON jobpayment.jb_id = job.jb_id" .
// " WHERE jobpayment.jb_id IN (SELECT jb_id FROM jobpayment WHERE jbpc_id = '" . $row["jbpc_id"] . "') AND jbp_price != 0 ORDER BY jobpayment.jb_id";
"SELECT job.jb_id, IFNULL(gdc3.gdc_obj_id, '') AS addmont_parent, ROUND(jb_totalprice, 2) AS totalprice, jbpc_id, cr_sid, ROUND(jb_cr_price, 2) AS cr_price," .
" jb_export_time, (CASE jb_status WHEN 1 THEN 'angenommen' WHEN 2 THEN 'erledigt' WHEN 9 THEN 'Disposition' WHEN 0 THEN 'UN-Dispo' ELSE 'undefiniert' END) AS status," .
" IF(jb_incomplete=1, 'unfertig', '') AS incomplete, IF(jb_storno=1 OR jb_storno=2, 'storniert', '') AS storno, jb_ordertime, jb_finishtime," .
" csc_id_related, jbp_mode, jbp_export_time, gdc2.gdc_content AS info_0, tr_commission_no, jb_dispoinfo" .
$field_clause .
" FROM job, jobpayment, tour" .
$from_clause .
" LEFT JOIN genericdatacontainer AS gdc2 ON gdc2.gdc_obj_type = 'jb' AND gdc2.gdc_gen_fieldname = 'info_0' AND gdc2.gdc_obj_id = job.jb_id" .
" LEFT JOIN genericdatacontainer AS gdc3 ON gdc3.gdc_obj_type = 'jb' AND gdc3.gdc_gen_fieldname = 'jb_id_addmont' AND gdc3.gdc_content = job.jb_id" .
" WHERE job.jb_id = tour.jb_id AND tour.tr_sort = 2 AND job.jb_id = jobpayment.jb_id AND jobpayment.jbpc_id IN (" . $row["jbpc_id"] . ")" .
$where_clause2 .
" ORDER BY jbpc_id, LEFT(jb_ordertime, 10), tr_commission_no, jb_id";
echo $sql_query . "\n";
$res1 = mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
$prev_row = array();
$bsg = 0;
$num_row = 0;
$colCnt = 0;
$cC = "#aa"; $cC2 = "#ab";
while (($row1 = mysql_fetch_array($res1, MYSQL_ASSOC)) || $num_row <= mysql_num_rows($res1)):
if ($row1["addmont_parent"] == "")
$row1["totalprice"] = $jbc_totalprices[$row1["jb_id"]];
if (++$num_row > 1):
// $bsg += $prev_row["price"];
$bsg = $prev_row["totalprice"];
$prev_row_jb_cr_price = "";
$prev_row_jb_export_time = "";
$prev_row_bsg = "";
if (($prev_row["jb_id"] != $row1["jb_id"] || $num_row == (mysql_num_rows($res1)) + 1)):
$order_no = $prev_row["info_0"];
if ($order_no == "")
$order_no = str_replace(";", "", $prev_row["tr_commission_no"]);
$prev_row_jb_cr_price = ($prev_row["jb_export_time"] == "9999-12-31 23:59:59" ? formCur("0") : formCur($prev_row["cr_price"]));
// $prev_row_bsg = formCur($bsg - $prev_row["cr_price"]);
$prev_row_jb_export_time = ($prev_row["jb_export_time"] == "9999-12-31 23:59:59" ? "Zu L. Sped." : formDate($prev_row["jb_export_time"]));
$prev_row_bsg = ($prev_row["jb_export_time"] == "9999-12-31 23:59:59" ? formCur($bsg - 0) : formCur($bsg - $prev_row["cr_price"]));
$bsg = 0;
endif;
$billing_error = "";
$export_error = "";
if ($jbpc_id == "0") {
if (($prev_row["jb_service"] & $serviceMont) == $serviceMont && trim($prev_row["cr_sid"]) == "") {
$export_error = "Fahrer fehlt in OS Auftrag";
} elseif ($prev_row["jbp_tan"] == "0" AND ($prev_row["incomplete"] != "" || $prev_row["status"] != "erledigt")) {
$export_error = "Barzahlung mit nicht erledigtem/unfertigem Auftrag";
} elseif (
$db->getOne("SELECT gdc_gen_fieldname FROM genericdatacontainer WHERE gdc_obj_type = 'jb' AND gdc_obj_id = " . $prev_row["jb_id"] . " AND gdc_gen_fieldname = 'jb_addmont'") == "jb_addmont"
&& $db->getOne("SELECT gdc_content FROM genericdatacontainer WHERE gdc_obj_id = " . $prev_row["jb_id"] . " AND gdc_gen_fieldname = 'jb_addmont'") == "") {
$export_error = "Montagestunden fehlen";
} elseif ($prev_row["jb_finishtime"] == "0000-00-00 00:00:00" AND ($prev_row["incomplete"] == "" && $prev_row["status"] == "erledigt")) {
$export_error = "Erledigungszeit des exportierbaren Auftrages ist '0000-00-00 00:00:00'";
} elseif ($prev_row["cr_price"] > 0 && ($prev_row["incomplete"] != "" || $prev_row["status"] != "erledigt")) {
$billing_error = "Kein Fuhrlohnexport (Auftrag nicht erledigt/unfertig)";
}
$the_error = "";
if ($f_payment_select == "2" || $f_payment_select == "4" || $f_payment_select == "5")
$the_error = $export_error;
if ($f_payment_select == "3")
$the_error = $billing_error;
if ($f_payment_select == "4") {
if ($the_error == "" && $jbc_lfm[$prev_row["jb_id"]] != "") {
$the_error = $jbc_lfm[$prev_row["jb_id"]][1] . " lfd. Meter zu " . $jbc_lfm[$prev_row["jb_id"]][0] . " (brutto)";
} else {
$the_error = "";
}
}
if ($f_payment_select == "5") {
if ($the_error == "" && $prev_row["totalprice"] == 0 && ($prev_row["jb_service"] & $serviceAust) != $serviceAust
&& $db->getOne("SELECT gdc_content FROM genericdatacontainer WHERE gdc_obj_type = 'jb' AND gdc_obj_id = " . $prev_row["jb_id"] . " AND gdc_gen_fieldname = 'jb_service_job'") != '1') {
$the_error = "Kein Preis verfügbar";
} else {
$the_error = "";
}
}
}
//echo $prev_row["jb_id"] . ", " . $jbc_lfm[$prev_row["jb_id"]] . "\n";
if ($jbpc_id != "0" || $the_error != "") {
$ret_val .= $cC .
($prev_row["jbpc_id"] != "0" ? "" . $prev_row["jbpc_id"] . "" : $the_error) .
";$cC2" . formDate($row["jbpc_bookingdate"]) . ";$cC" . formDate($prev_row["jbp_export_time"]) . ";$cC2" . $modeArr[$prev_row["jbp_mode"]] .
";$cC" . $csc_id_relatedArr[$prev_row["csc_id_related"]] . ";$cC2" . $order_no . ";$cC" .
"" . $prev_row["jb_id"] . "" .
";$cC2" . $prev_row["addmont_parent"] . ";$cC" . $prev_row["jb_dispoinfo"] . ";$cC2" . formCur($prev_row["totalprice"]) . ";$cC" . $jbc_lagerk[$prev_row["jb_id"]] . ";$cC2" . formDate($prev_row["jb_ordertime"]) . ";$cC" . formDate($prev_row["jb_finishtime"]) .
";$cC2" . $prev_row["status"] . ";$cC" . $prev_row["incomplete"] . ";$cC2" . $prev_row["storno"] . ";$cC" . $prev_row["cr_sid"] . ";$cC2" . $prev_row_jb_cr_price .
";$cC" .
"" . $prev_row_jb_export_time . "" .
";$cC2" . $prev_row_bsg . " \n";
if ($prev_row_jb_cr_price != ""):
if ($colCnt % 2 == 0) : $cC = "#ba"; $cC2 = "#bb"; endif;
if ($colCnt++ % 2 == 1) : $cC = "#aa"; $cC2 = "#ab"; endif;
endif;
}
endif;
$prev_row = $row1;
endwhile;
mysql_free_result($res1);
if ($jbpc_id == "0")
$jbpc_id = "-1";
endwhile;
if ($jbpc_id != "-1")
mysql_free_result($res);
}
return $ret_val;
}
function formCur($amount) {
return str_replace(".", ",", sprintf("%01.2f", round($amount, 2)));
// return str_replace(".", ",", sprintf("%01.2f", round($amount, 2)));
}
function formDate($sqlDate) {
if (trim($sqlDate) == "" || trim($sqlDate) == "0000-00-00 00:00:00")
return "";
return substr($sqlDate, 8, 2) . "." . substr($sqlDate, 5, 2) . "." . substr($sqlDate, 0, 4);
}
function sqlDate($germanDate) {
if (trim($germanDate) == "")
return "";
return substr($germanDate, 6, 4) . "-" . substr($germanDate, 3, 2) . "-" . substr($germanDate, 0, 2);
}
/**************************************************************************************************************************************************/
// HTML-Output
?>
Abrechnungs-Übersicht
|