getOne("SELECT par_value FROM parameter WHERE par_key = 'FTP_SERVER' AND hq_id = 1020");
$ftp_user_name = $db->getOne("SELECT par_value FROM parameter WHERE par_key = 'FTP_USER' AND hq_id = 1020");
$ftp_user_pass = $db->getOne("SELECT par_value FROM parameter WHERE par_key = 'FTP_PASSWORD' AND hq_id = 1020");
$remotePath = "/stadtbote/";
define ("VAT", 0.19);
$temp_csv_folder = "../temp/edifact/";
if ($test)
$export_dir = $temp_csv_folder;
else
$export_dir = "../export/download/";
$export_filenames = array(); // "201504011256.144.abr"
$export_filenames_count = 0;
$serviceAust = $db->getOne("SELECT mt_sort FROM metatype WHERE mt_type = 'service' AND mt_mapped_value = 'AT'");
$to___date_sql = date("Y-m-d 23:59:59", mktime(0, 0, 0, date("m"), date("d") - 2 - (date("w") - 1), date("Y")));
$to___date_sql_next = date("Y-m-d 23:59:59", mktime(0, 0, 0, date("m"), date("d") - 2 - (date("w") - 1) + 7, date("Y")));
//echo $to___date_sql . "
\n";
//echo $to___date_sql_next . "
\n";
//echo "((((" . substr($to___date_sql, 5, 2) . " != " . substr($to___date_sql_next, 5, 2) . ") && (" . substr($to___date_sql, 5, 2) . " != " . date("m") . ") && " . substr($to___date_sql, 8, 2) . " != '01' && " . date('D') . " != 'Mon') || " . substr($to___date_sql, 8, 2) . " == '01'))" . "
\n";
if ((((substr($to___date_sql, 5, 2) != substr($to___date_sql_next, 5, 2)) && (substr($to___date_sql, 5, 2) != date("m")) && substr($to___date_sql, 8, 2) != "01" && date("D") != "Mon") || substr($to___date_sql, 8, 2) == "01") /* letzter Sonnabend war der 01. des Monats */)
{
// wenn ein Monatswechsel stattgefunden hat, dann nur bis zum letzten Tag des vorigen Monats abrechnen
$to___date_sql = date("Y-m-d 23:59:59", mktime(0, 0, 0, date("m"), 0, date("Y")));
}
//echo $to___date_sql . "\n"; die();
$log_file_name = $temp_csv_folder . "_cron_export.centiro_" . $hq_name . "_" . substr($to___date_sql, 0, 10) . ".log";
write_file($log_file_name, "", 'w');
$no_export_file_name = $temp_csv_folder . "Kein_Export_" . $hq_name . "_" . substr($to___date_sql, 0, 10) . ".csv";
write_file($no_export_file_name, "Auftrag;Typ;Order-Nr;Eingang;Kunde;Termin;Fahrer;Nettopreis;Nettofuhrlohn;Bemerkung\n", 'w');
$no_cr_price_file_name = $temp_csv_folder . "Kein_Fuhrlohn_" . $hq_name . "_" . substr($to___date_sql, 0, 10) . ".csv";
write_file($no_cr_price_file_name, "Auftrag;Typ;Order-Nr;Eingang;Kunde;Termin;Fahrer;Nettopreis;Nettofuhrlohn;Bemerkung\n", 'w');
if ($hq_id == 1111):
for ($i = 0; $i < 6; $i++) {
// Start filenames starting from 20 minutes minimum (i.e. not from 0) in order no to interfere with the filenames from the fuhrlohn-export (see do_cron_export_HTM);
// fuhrlohn-export-files always start from 0 minutes!
$export_filenames[] = date("YmdHi", mktime(date("H"), date("i") + (date("i") < 20 ? 20 : 0) + $i, 0, date("m"), date("d"), date("Y"))) . ".144.abr";
}
$csv_txtArrArrArr['WAST10224'] = do_LCD_OS(3512);
$csv_txtArrArrArr['WAST10225'] = do_LCD_OS(3506);
else:
for ($i = 0; $i < 9; $i++) {
$export_filenames[] = date("YmdHi", mktime(date("H"), date("i") + (date("i") < 20 ? 20 : 0) + $i, 0, date("m"), date("d"), date("Y"))) . ".101.abr";
}
// $csv_txtArrArrArr['HTHH71146'] = do_LCD_OS("1"); /*nur Einzelabrechnung*/
// $csv_txtArrArrArr['HTHH71325'] = do_LCD_OS("2"); /*nur Einzelabrechnung*/
// $csv_txtArrArrArr['HTHH71245'] = do_LCD_OS("17051"); /*nur Einzelabrechnung*/
// $csv_txtArrArrArr['HTHH72289'] = do_LCD_OS("250226"); /*nur Einzelabrechnung*/
if ($hq_name == "HH")
$csv_txtArrArrArr['HTHH71245'] = do_LCD_OS("1,2,17051"); /*nur Gesamtabrechnung*/
if ($hq_name == "HL")
$csv_txtArrArrArr['HTHH72289'] = do_LCD_OS("250226"); /*Einzelabrechnung Lübeck*/
endif;
//print_r($csv_txtArrArrArr);
$content = "";
$last_jbpc_id = 0;
foreach($csv_txtArrArrArr as $debitor => $csv_txtArrArr) { // Ludwigsburg, Sindelfingen
foreach($csv_txtArrArr as $csv_type => $csv_txtArr) {
if ($csv_type != "Inkasso" && $csv_type != "InkassoSpezial" && $csv_type != "Subvention") {
$jbpc_id = do_export($debitor, $csv_txtArr[2], $csv_txtArr[3], $csv_txtArr[4], $csv_txtArr[5]);
$jbpc_ids .= $jbpc_id . ",";
$last_jbpc_id = $jbpc_id;
myWriteLog($csv_txtArr[4] . $csv_txtArr[5]);
// wenn OS happy, jbpc_id in Inkasso-Liste eintragen
if ($csv_txtArr[4] . $csv_txtArr[5] == 'OSHappy') {
$csv_txtArrArr["Inkasso"][1] =
str_replace('|jbpc_id|', $jbpc_id, $csv_txtArrArr["Inkasso"][1]);
// $csv_txtArrArrArr[$debitor]["Inkasso"][1] = $csv_txtArrArr["Inkasso"][1];
myWriteLog("writing " . $csv_txtArrArr["Inkasso"][0]);
write_file($csv_txtArrArr["Inkasso"][0], $csv_txtArrArr["Inkasso"][1], 'w');
$csv_txtArrArr["InkassoSpezial"][1] =
str_replace('|jbpc_id|', $jbpc_id, $csv_txtArrArr["InkassoSpezial"][1]);
// $csv_txtArrArrArr[$debitor]["InkassoSpezial"][1] = $csv_txtArrArr["InkassoSpezial"][1];
myWriteLog("writing " . $csv_txtArrArr["InkassoSpezial"][0]);
write_file($csv_txtArrArr["InkassoSpezial"][0], $csv_txtArrArr["InkassoSpezial"][1], 'w');
myWriteLog("writing " . $csv_txtArrArr["Subvention"][0]);
write_file($csv_txtArrArr["Subvention"][0], $csv_txtArrArr["Subvention"][1], 'w');
if (!$test) {
// für den Fuhrlohnexport wieder die originale Zahlart einsetzen
// (wg. Kennzeichen "BZ" und Inkasso-Betrag)
// mode = 19 (OSsad) nicht updaten, weil SAMSe
$sql_query =
"UPDATE jobpayment SET jbp_mode = jbp_tan, jbp_tan = '18' WHERE jbp_mode = 18 AND jbpc_id = " . $jbpc_id;
mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
}
}
foreach($csv_txtArr[1] as $key => $txt) {
$txt = str_replace('|jbpc_id|', $jbpc_id, $txt);
myWriteLog("writing " . str_replace($temp_csv_folder, $temp_csv_folder . $key . "_", $csv_txtArr[0]));
write_file(str_replace($temp_csv_folder, $temp_csv_folder . $key . "_", $csv_txtArr[0]), $txt, 'w');
}
// myWriteLog("writing " . $csv_txtArr[0]);
// write_file($csv_txtArr[0], $csv_txtArr[1], 'w');
// Die Rechnung lautet zwar nur auf eine Kundennummer, aber die Märkte sollen in einzelnen Tabellen aufgeteilt sein
// exec("grep \";146 ;\" " . $csv_txtArr[0] . " > " . str_replace($temp_csv_folder, $temp_csv_folder . "146_", $csv_txtArr[0]));
// exec("grep \";325 ;\" " . $csv_txtArr[0] . " > " . str_replace($temp_csv_folder, $temp_csv_folder . "325_", $csv_txtArr[0]));
// exec("grep \";245 ;\" " . $csv_txtArr[0] . " > " . str_replace($temp_csv_folder, $temp_csv_folder . "245_", $csv_txtArr[0]));
}
$csv_txtArr[1] = /* $csv_txtArr[0] . */ "
\n| " .
str_replace(" | | ", " | ", str_replace("\n", "
\n| ", str_replace(";", " | ", $csv_txtArr[1]))) .
"\n |
\n";
$csv_txtArr[1] = str_replace("| \n", "", str_replace(" | | ", " | ", $csv_txtArr[1]));
$content .= $csv_txtArr[1];
// $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))))))));
}
//print_r($csv_txtArrArr);
$xls_file_name = substr($csv_txtArrArr["Inkasso"][0], 0, -4) . ".xls";
$cmd = "../tools/mycsv2xls.pl " . $csv_txtArrArr["Inkasso"][0] . " 'inkasso' " . $xls_file_name . " >> " . $log_file_name . " 2>&1 &";
myWriteLog($cmd);
@unlink($xls_file_name);
$ausgabe = exec($cmd);
do {
$output = array();
//myWriteLog("ps -fA | grep $xls_file_name");
exec("ps -fA | grep $xls_file_name", $output);
for ($i = 0; $i < count($output); $i++):
//myWriteLog($output[$i]);
$pos = strpos ($output[$i], "mycsv2xls.pl");
if (!($pos === false))
break;
endfor;
usleep(100000);
} while (!($pos === false) && count($output) > 0);
@unlink($csv_txtArrArr["Inkasso"][0]);
send_mail("Abrechnung " . $hq_id, "[" . date("Y-m-d H:i:s") . "] " . "Abrechnung ist durch\n");
}
if (!$test) {
if ($hq_id != 1111) {
$jbpc_ids = substr($jbpc_ids, 0, -1);
$sum_ht = array(
1 => 0,
2 => 0,
17051 => 0,
250226 => 0
);
$sql_query =
"SELECT jbpc_id, csc_id_related, gdc_context" .
" FROM genericdatacontainer, job, jobpayment" .
" WHERE gdc_gen_fieldname = 'price_ht' AND LEFT(gdc_context, 6) =" .
" job.jb_id AND job.jb_id = jobpayment.jb_id" .
" AND jbpc_id IN (". $jbpc_ids . ")";
myWriteLog($sql_query . "\n");
myWriteLog("jbpc_id\tcsc_id_related\tgdc_context[2]");
$res = mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)):
$tmpArr = explode("|", $row["gdc_context"]);
myWriteLog($row["jbpc_id"] . "\t" . $row["csc_id_related"] . "\t" . $tmpArr[2]);
$sum_ht[$row["csc_id_related"]] += $tmpArr[2];
endwhile;
$sql_query =
"SELECT jbpc_id AS Sammelnummer, csc_id_related AS csc_id_related_real," .
" (CASE csc_id_related WHEN 1 THEN 'Schnelsen' WHEN 2 THEN 'Moorfleet' WHEN 17051 THEN 'Altona' WHEN 250226 THEN 'Lübeck' ELSE 'undefiniert' END) AS Markt," .
" SUM(ROUND(jb_totalprice, 2)) AS Rechnungssumme, CONCAT(REPLACE(SUM(ROUND(jb_cr_price, 2)), '.', ','), ' €') AS Fuhrlohnsumme" .
" FROM job, jobpayment" .
" WHERE job.jb_id = jobpayment.jb_id AND jbpc_id IN (" . $jbpc_ids . ")" .
" GROUP BY jbpc_id, csc_id_related";
myWriteLog($sql_query . "\n");
$jbpc_ids_file = $temp_csv_folder . "Gesamtaufstellung_" . $hq_name . "_" . substr($to___date_sql, 0, 10) . ".csv";
write_file($jbpc_ids_file, "Sammelnummer;Markt;Rechnungssumme;Fuhrlohnsumme\n", 'w');
$res = mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
$tmp_cnt = 1;
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)):
$sum_ht_tmp = 0;
if ($row["Sammelnummer"] == $last_jbpc_id)
$sum_ht_tmp = $sum_ht[$row["csc_id_related_real"]];
write_file($jbpc_ids_file, $row["Sammelnummer"] . ";" . $row["Markt"] . ";" . str_replace(".", ",", sprintf("%01.2f", ($row["Rechnungssumme"] + $sum_ht_tmp))) . " €;" . $row["Fuhrlohnsumme"] . "\n", "a");
endwhile;
} else {
echo "honk1\n";
exec("/root/votian_admin/do_cron_export_HTM");
echo "honk2\n";
exec("/root/votian_admin/do_cron_FTP_upload_HTM");
}
}
function do_export($debitor, $jb_ids, $sum_total, $lcd_or_os, $happy_or_sad)
{
global $db, $test, $no_web, $export_dir, $export_filenames, $export_filenames_count, $to___date_sql,
$ftp_server, $ftp_user_name, $ftp_user_pass, $remotePath;
// $store_no = array( /*nur Einzelabrechnung*/
// "WAST10224" => "224", // SiFi /*nur Einzelabrechnung*/
// "WAST10225" => "225", // LuBu /*nur Einzelabrechnung*/
// "HTHH71146" => "146", //– Schnelsen /*nur Einzelabrechnung*/
// "HTHH71325" => "325", //– Moorfleet /*nur Einzelabrechnung*/
// "HTHH71245" => "245", //– Hamburg Altona /*nur Einzelabrechnung*/
// "HTHH72289" => "289" // Lübeck /*nur Einzelabrechnung*/
// ); /*nur Einzelabrechnung*/
$ht_no = array(
"WAST10224" => "144",
"WAST10225" => "144", // LuBu
"HTHH71146" => "101", //– Schnelsen
"HTHH71325" => "101", //– Moorfleet
"HTHH71245" => "101", //– Hamburg Altona
"HTHH72289" => "101", //– Lübeck
"HTHH71245" => "101" /*nur Gesamtabrechnung*/
);
$rz = array(
"WAST10224" => "RZ",
"WAST10225" => "RZ",
"HTHH71146" => " ",
"HTHH71325" => " ",
"HTHH71245" => " ",
"HTHH72289" => " ",
"HTHH71245" => " " /*nur Gesamtabrechnung*/
);
$payment_types = array(
"LCD" => array(
"Happy" => $db->getOne("SELECT mt_sort FROM metatype WHERE mt_type = 'payment_type' AND mt_value = 'LCD happy'"),
"Sad" => $db->getOne("SELECT mt_sort FROM metatype WHERE mt_type = 'payment_type' AND mt_value = 'LCD sad'")),
"OS" => array(
"Happy" => $db->getOne("SELECT mt_sort FROM metatype WHERE mt_type = 'payment_type' AND mt_value = 'OS happy'"),
"Sad" => $db->getOne("SELECT mt_sort FROM metatype WHERE mt_type = 'payment_type' AND mt_value = 'OS happy'")
)
);
if (!$test) {
// $sql_query = "SHOW TABLE STATUS LIKE 'jobpaymentcollection'";
// $res = mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
// $row = mysql_fetch_array($res);
// $jbpc_id = $row['Auto_increment'];
// mysql_free_result($res);
// $sql_query = "ALTER TABLE jobpaymentcollection AUTO_INCREMENT=" . ($jbpc_id + 1);
// mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
$cs_id = $db->getOne("SELECT cs_id FROM customer WHERE cs_eid = '" . $debitor . "'");
$sql_query =
"INSERT INTO jobpaymentcollection (cs_id, jbpc_mode, jbpc_price, jbpc_bookingdate, jbpc_export_time, jbpc_invtext)" .
" VALUES (" . $cs_id . ", " . $payment_types[$lcd_or_os][$happy_or_sad] . ", " . $sum_total . ", '" . substr($to___date_sql, 0, 10) . "', '" . date("Y-m-d H:i:s") . "', '')";
mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
$jbpc_id = mysql_insert_id();
$sql_query = "UPDATE jobpayment SET jbpc_id = " . $jbpc_id . ", jbp_export_time = '" . date("Y-m-d H:i:s") . "' WHERE jb_id IN (" . substr($jb_ids, 1) . ")";
mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
} else {
$jbpc_id = "test";
}
if ($no_web):
$add_text_start = ($lcd_or_os == "LCD" && $happy_or_sad == "Happy" ? "Andrei Disterhof" : "Andrei Disterhof"); //29.06.2017 Andrea Seegräber wurde bei den LCDs durch Andrei Disterhof ersetzt
myWriteLog($export_dir . $export_filenames[$export_filenames_count] . ", \$jbpc_id = " . $jbpc_id . ", \$jb_ids = " . substr($jb_ids, 1));
write_file($export_dir . $export_filenames[$export_filenames_count],
$ht_no[$debitor] .
" |M3|0000099999| 666|IKEA Abr|" .
str_replace('-', '', substr($to___date_sql, 0, 10)) .
"|00:00|" .
str_replace('-', '', substr($to___date_sql, 0, 10)) .
"|00:00| 666|0" .
$jbpc_id .
"|000| | |FP||| |" . $rz[$debitor] . "|ER||||" .
str_pad($sum_total * 100, 10, "0", STR_PAD_LEFT) .
// str_pad($db->getOne("SELECT ROUND(SUM(ROUND(jbp_price, 2) * 100)) FROM jobpayment WHERE jb_id IN (" . substr($jb_ids, 1) . ")"), 10, "0", STR_PAD_LEFT) .
"|0000000|0000000|0000000|0000000|0000000|0000000000|0000000000|0000000000|0000000000|0000000000||||||00000|00000|||||||0000|0000|00|0000|00000000|00000000|00000000|00000000|00000000||||||0" .
$debitor .
"|00000000000000|0" .
$debitor .
($lcd_or_os != "OS" ?
"|||" . $add_text_start . "|Wir berechnen Ihnen für die " . $lcd_or_os . " Aufträge im " . $happy_or_sad . " Flow gemäß|beiliegender Anlage bis einschließlich " . formDate($to___date_sql)
:
// "|||" . $add_text_start . "|Wir berechnen Ihnen für die OS Aufträge EH " . $store_no[$debitor] . " gemäß|beiliegender Anlage bis einschließlich " . formDate($to___date_sql) /*nur Einzelabrechnung*/
"|||" . $add_text_start . "|Wir berechnen Ihnen für die OS Aufträge gemäß beiliegender|Anlage bis einschließlich " . formDate($to___date_sql) /*nur Gesamtabrechnung*/
) .
"||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||0000|0000000|0000|0000000|0000000|0000|0000000||0000|0000000||0000|0000000||0000|0000000||0000|0000000|\n",
"w");
if (!$test) {
$opArray = ftpUpload($export_filenames[$export_filenames_count], $export_filenames[$export_filenames_count], $ftp_server, $ftp_user_name, $ftp_user_pass, $export_dir, $remotePath, "0");
myWriteLog("result of uploading '" . $export_filenames[$export_filenames_count] . "': errNo '" . $opArray[0] . "', errDesc = '" . $opArray[1] . "'");
}
$export_filenames_count++;
endif;
return $jbpc_id;
}
function do_LCD_OS($csc_id_related)
{
global $db, $temp_csv_folder, $to___date_sql, $test, $hq_id, $hq_name, $no_export_file_name, $no_cr_price_file_name;
/*
Tobedone:
- manual events berücksichtigen
- Zusatzmontagen berücksichtigen in der Extra-Liste (jb_id_addmont)
- REMOVAL_WHITEGOODS fehlen noch
//UPDATE jobpayment SET jbp_mode = jbp_tan, jbp_tan = '16' WHERE jbp_mode = '16' AND jbp_tan != '' AND jbp_export_time IS NULL;
//UPDATE jobpayment SET jbp_mode = jbp_tan, jbp_tan = '17' WHERE jbp_mode = '17' AND jbp_tan != '' AND jbp_export_time IS NULL;
UPDATE jobpayment SET jbp_mode = jbp_tan, jbp_tan = '18' WHERE jbpc_id IN (81002462,81002466)
//UPDATE jobpayment SET jbp_mode = jbp_tan, jbp_tan = '19' WHERE jbp_mode = '19' AND jbp_tan != '' AND jbp_export_time IS NULL;
Zu klären:
Doppelte Order-nr. für Lieferung und Abholung wenn Austausch
Fallnummer bei Montagen ist wahrscheinlich trat_serialno in tourarticle, könne aber mehrer pro Auftrag sein
Sofamontage ist bei Montage nicht bei Lieferungen
Zweitanlieferung
*/
// LCD Happy: erfolgreiche Lieferungen
// LCD Sad: SAMS-LCDs und gescheiterte Lieferungen wenn "FAIL IKEA"
// OS Happy: erfolgreiche SAMS-OS's und Möbel-/Küchenmontagen
// OS Sad: SAMS-Nachmontagen
//Lieferungen + Montagen für HF und SF -> Lubu = WAST10225
//Lieferungen + Montagen für HF und SF -> Sifi = WAST10224
$accounting_cs_eids = array(
"3512" => "WAST10224", // SiFi
"3506" => "WAST10225", // LuBu
"1" => "HTHH71146",
"2" => "HTHH71325",
"17051" => "HTHH71245",
"250226" => "HTHH72289",
"1,2,17051" => "HTHH71245" /*nur Gesamtabrechnung*/
);
$store_no = array(
"3512" => "224",
"3506" => "225",
"1" => "146",
"2" => "325",
"17051" => "245",
"250226" => "289",
"1,2,17051" => "" /*nur Gesamtabrechnung*/
);
$ht_no = array(
"3512" => "144",
"3506" => "144", // LuBu
"1" => "101", //– Schnelsen
"2" => "101", //– Moorfleet
"17051" => "101", //– Hamburg Altona
"250226" => "101", //- Lübeck
"1,2,17051" => "101" /*nur Gesamtabrechnung*/
);
$lsc_no = array(
3512 => "",
3506 => "",
1 => chr(160) . "053",
2 => chr(160) . "053",
17051 => chr(160) . "053",
250226 => chr(160) . "053"
);
$inkasso_file_name = $temp_csv_folder . "Inkasso_IKEA_" . $hq_name . "_" . substr($to___date_sql, 0, 10) . ".csv";
$inkassospezial_file_name = $temp_csv_folder . "Inkasso_IKEA_" . $hq_name . "_" . substr($to___date_sql, 0, 10) . "(1).csv";
$subventions_file_name = $temp_csv_folder . "Subventionen_Küche_" . $hq_name . "_" . substr($to___date_sql, 0, 10) . ".csv";
if ($hq_id == 1020)
$subventions_file_name = $temp_csv_folder . "Rückvergütungen_Küche_" . $hq_name . "_" . substr($to___date_sql, 0, 10) . ".csv";
$lcd_or_osArr = array("LCD", "OS");
$happy_or_sadArr = array("Happy", "Sad");
$areas = array(
"Core" => "1",
"Outside" => "4",
"Potential-NO" => "3",
"Potential-NW" => "3",
"Potential-SO" => "3",
"Potential-SW" => "3",
// "Core" => "1",
"Outside I" => "4",
"Outside II" => "4",
"Outside III" => "4",
"Outside IV" => "4",
"Insel Sylt" => "4"
);
$zones = array(
"Core" => "1",
"Outside" => "2",
"Potential-NO" => "3",
"Potential-NW" => "4",
"Potential-SO" => "5",
"Potential-SW" => "6",
// "Core" => "1",
"Outside I" => "2",
"Outside II" => "3",
"Outside III" => "4",
"Outside IV" => "5",
"Insel Sylt" => "6"
);
// $serviceLief = pow(2, $db->getOne("SELECT mt_sort FROM metatype WHERE mt_type = 'service' AND mt_mapped_value = 'LI'"));
$serviceMont = pow(2, $db->getOne("SELECT mt_sort FROM metatype WHERE mt_type = 'service' AND mt_mapped_value = 'MO'"));
// $serviceNeuMont = pow(2, $db->getOne("SELECT mt_sort FROM metatype WHERE mt_type = 'service' AND mt_mapped_value = 'NM'"));
// $serviceKueMont = pow(2, $db->getOne("SELECT mt_sort FROM metatype WHERE mt_type = 'service' AND mt_mapped_value = 'KU'"));
$serviceAbhol = pow(2, $db->getOne("SELECT mt_sort FROM metatype WHERE mt_type = 'service' AND mt_mapped_value = 'AB'"));
$serviceAust = pow(2, $db->getOne("SELECT mt_sort FROM metatype WHERE mt_type = 'service' AND mt_mapped_value = 'AT'"));
define ("FUNCPAR_LAGERK", "0003:par_01"); // "Lagerungskosten"
define ("FUNCPAR_POLST", "0006:par_01:1000"); // "IKEA: Polster pro Sitzfläche"
define ("FUNCPAR_MATR", "0006:par_01:1005"); // "IKEA: Matratze pro Stück"
define ("FUNCPAR_SOFA", "ident_0027:par_01"); // "Sofa-Montage"
// define ("FUNCPAR_SOEDER", "ident_0012:par_01"); // "Montage Söderhamn"
define ("FUNCPAR_MONT", "0004:par_01"); // Warenwertabhängiger "Montagepreis"
define ("FUNCPAR_MONTGRUND", "ident_0009:par_01"); // "Grundpauschale Montage"
define ("FUNCPAR_KUELFDMET", "0010:par_01"); // "lfd. Meter"
define ("FUNCPAR_KUEELEKTR", "ident_0005:par_01"); // "Elektroanschluss"
// define ("FUNCPAR_KUEWASSER", "ident_0006:par_01"); // "Wasseranschluss"
define ("FUNCPAR_INSTTV", "ident_0019:par_01"); // "Installation TV-Gerät"
define ("FUNCPAR_INSTLAUT", "ident_0020:par_01"); // "Installation Lautsprecher"
define ("FUNCPAR_WASSER", "ident_0011:par_01"); // "Wasseranschluss Bad"
define ("FUNCPAR_ENTSELEK", "ident_0021:par_01"); // "Entsorgung Elektrogerät"
define ("FUNCPAR_SONDER", "0000:par_01"); // Sondertransport (CARRY_HELP)
define ("FUNCPAR_ENTSMOEB", "0000:par_02"); // Altmöbelrückgabe
define ("FUNCPAR_SPLITTER", "0000:par_03"); // Splitterbox
define ("FUNCPAR_QUALITY", "0000:par_04"); // Begutachtung
$csv_text = array();
// $csv_text_end = array();
$to___date_timestamp = strtotime($to___date_sql);
$kw = (int)date('W', $to___date_timestamp);
$monat = date('n / Y', $to___date_timestamp);
$csv_text[$lcd_or_osArr[0]][$happy_or_sadArr[0]]["146"] =
";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n" .
" Anlage zur Rechnung IKEA;;;;;;Store;;;KW;;;Leistungsmonat;;;;;Rechnung;Rechnungsdatum;;;;;;;;;;;;;;;;\n" .
";;;;;;LCD;;;" . $kw . ";;;" . $monat . ";;;;; " . $ht_no[$csc_id_related] . "|jbpc_id|;" . formDate($to___date_sql) . ";;;;;;;;;;;;;;;;\n" .
";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n" .
"Buchungsvorgabe;;;;;;;;;;;;5731 / 4071;5714 / 4071;;;5732 / 4071;5732 / 4071;5731 / 4071;;5732 / 4071;;5732 / 4071;;5731 / 4071;;;;;;;;;;\n" .
";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n" .
"Basisdaten der Sendungen;;;;;;;;;;;;Basic Price;;;;Additional Service;;Zweitanl;;AV m. LV;;AV o. LV;;Lagergeld;;Sonderfahrten;;;;;GS Claims;;;\n" .
"S;DC;LSC;iSell Nr;MHS-Ordernr;Lieferdat;EH;Area;Zone;Flow;Warenwert;Gewicht;Hinsend;Shuttle;Same Day;Samstag;Abholung;Austausch;Anz;EUR;Anz;EUR;Anz;EUR;Tg;EUR;Anz;PLZ;Km;EUR;TR;Eur;Wert;KST;Wert ohne Shuttle\n";
$csv_text[$lcd_or_osArr[0]][$happy_or_sadArr[0]]["325"] = $csv_text[$lcd_or_osArr[0]][$happy_or_sadArr[0]]["146"];
$csv_text[$lcd_or_osArr[0]][$happy_or_sadArr[0]]["245"] = $csv_text[$lcd_or_osArr[0]][$happy_or_sadArr[0]]["146"];
$csv_text[$lcd_or_osArr[0]][$happy_or_sadArr[0]]["289"] = $csv_text[$lcd_or_osArr[0]][$happy_or_sadArr[0]]["146"];
// $csv_text_end[$lcd_or_osArr[0]][$happy_or_sadArr[0]] =
// ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n" .
// ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n" .
// ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n" .
// " Summen gesamt;;;;;;;;;;;;0,00 ;0,00 ;0,00 ;0,00 ;0,00 ;0,00 ;0;0;0;0;0;0;0;0;0;0;0;0;;0,00;;;;;\n" .
// ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n" .
// ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n" .
// " Gruppensumme LCD;;;;Hinsendungen;;;;;direct;;;=;0,00 ;0,00 ;0,00 ;0,00 ;0,00 ;;;;;;;;;0 ;;;0,00 ;;;;;;;\n" .
// " Gruppensumme LCD;;;;Hinsendungen;;;;;indirect;;;;;0,00 ;0,00 ;0,00 ;0,00 ;;;;;;;;;0 ;;;0,00 ;;;;;;;\n" .
// " Gruppensumme LCD;;;;Abholungen;0 ;;;;indirect;;0,00;0,00 ;0,00 ;0,00 ;0,00 ;0,00 ;0,00 ;0;0,00 ;0;0,00 ;0;0,00 ;0;0,00 ;0 ;;;0,00 ;;;;;;;\n" .
// " Gruppensumme LCD;;;;Austausch;0 ;;;;indirect;;0,00;0,00 ;0,00 ;0,00 ;0,00 ;0,00 ;0,00 ;0;0,00 ;0;0,00 ;0;0,00 ;0;0,00 ;0 ;;;0,00 ;;;;;;;\n";
$csv_text[$lcd_or_osArr[0]][$happy_or_sadArr[1]]["146"] =
";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n" .
" Anlage zur Rechnung IKEA;;;;;;Store;;;KW;;Leistungsmonat;;;;;Rechnung;;;;;;;Rechnungsdatum;;;;;;;Seite;;;;\n" .
" Detail: Versandkosten Sad Flow;;;;;;" . $store_no[$csc_id_related] . ";;;" . $kw . ";;" . $monat . ";;;;; " . $ht_no[$csc_id_related] . "|jbpc_id|;;;;;;;" . formDate($to___date_sql) . ";;;;;;;;;;;\n" .
";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n" .
"Buchungsvorgabe;;;;;;;;;;;5731 / 4071;5714 / 4071;;;5732 / 4071;5732 / 4071;;;5731 / 4071;;;;5731 / 4071;;5732 / 4071;;5732 / 4071;;5731 / 4071;;;;;\n" .
";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n" .
"Basisdaten der Sendungen;;;;;;;;;;;Basic Price;;Additional Service;;NN-Geb;;Polstermont;;Nachlieferung;;Zweitanl;;AV m. LV;;AV o. LV;;Lagergeld;;Sonderfahrten;;;;TrRaum;GS Claims\n" .
"S;DC;LSC;iSell Nr;MHS-Ordernr;Lieferdat;EH;Area;Zone;Flow;Gewicht;Hinsend;Shuttle;Abholung;Austausch;Anz;EUR;Anz;EUR;Anz;EUR;Anz;EUR;Anz;EUR;Anz;EUR;Tg;EUR;Anz;PLZ;Km;EUR;EUR;EUR\n";
$csv_text[$lcd_or_osArr[0]][$happy_or_sadArr[1]]["325"] = $csv_text[$lcd_or_osArr[0]][$happy_or_sadArr[1]]["146"];
$csv_text[$lcd_or_osArr[0]][$happy_or_sadArr[1]]["245"] = $csv_text[$lcd_or_osArr[0]][$happy_or_sadArr[1]]["146"];
$csv_text[$lcd_or_osArr[0]][$happy_or_sadArr[1]]["289"] = $csv_text[$lcd_or_osArr[0]][$happy_or_sadArr[1]]["146"];
// $csv_text_end[$lcd_or_osArr[0]][$happy_or_sadArr[1]] =
// " Summen gesamt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;";
$csv_text[$lcd_or_osArr[1]][$happy_or_sadArr[0]]["146"] =
// /*nur Einzelabrechnung*/
// ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n" .
// " Anlage zur Rechnung IKEA;;;;;;;;;;;;;;;Store;;;;KW;;;;Leistungsmonat;;;;;Rechnung;;;;;;;Rechnungsdatum;;;;;;;;;;;Seite ;;;;;;;;;;;;;;;;\n" .
// " Detail: Other Services;;;;;;;;;;;;;;;" . $store_no[$csc_id_related] . ";;;;" . $kw . ";;;;" . $monat . ";;;;; " . $ht_no[$csc_id_related] . "|jbpc_id|;;;;;;;" . formDate($to___date_sql) . ";;;;;;;;;;;;;;;;;;;;;;;;;;;\n" .
// ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n" .
// "Buchungsvorgabe;;;;;;;;;Forderung / 3511;;;;Forderung / 3511;;;Forderung / 3511;;;;Forderung / 3511;;Forderung / 3511;;Forderung / 3511;;;Forderung / 3511;;Forderung / 3511;;;;;;;;;;;;;;;3512 / 6150;;;;;;;;;;;;Forderung / 3511;;;;;;Forderung / 3511\n" .
// ";;;;;;;;;3512 / Forderung;;;;3512 / Forderung;;;3512 / Forderung;;;;3512 / Forderung;;3512 / Forderung;;3512 / Forderung;;;3512 / Forderung;;3512 / Forderung;;;;;;;;;;;;;;;;;;;;;;;;;;;3512 / Forderung;;;;;;3512 / Forderung\n" .
// ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n" .
// "Basisdaten der Sendungen;;;;;;;;Ink.;Montage Möbel;;;;;Anschluß UPPLEVA;;;Küchen Komplettmont;;;;Bad (Wasser);;Anschl. E-Geräte;;Demontage;;;Aufmaß;;Arbeiten nach Stunden;;;;;Montage APL Holz;;;;;Montage APL Stein;;;;;Nachmontagen;;;;;Entsorgung;;;;;;;Polstermontage;;;;;Altmöbelrückgabe\n" .
// "S;;;;iSell Nr;;Lieferdat;EH;EUR;Fall;;WW15%;Kst EUR ;TV ;Sound;Kst EUR ;Fall;lfm ;Std;Kst EUR ;Fall;Kst EUR ;Fall;Kst EUR ;Fall;lfm ;Kst EUR ;Fall;Kst EUR ;Fall;MA;Std;Anf;Kst EUR ;Fall;MA;GP;Std;Kst EUR ;Fall;MA;GP;Std;Kst EUR ;Fall;MA;Std;Anf;Kst EUR ;Fall;AG ;Ma ;Po ;AG EUR;Ma EUR;Po EUR;C&C m L;C&C o L;SA m L;SA o L;DDS;Kst EUR;Kst EUR\n";
// $csv_text[$lcd_or_osArr[1]][$happy_or_sadArr[1]] = $csv_text[$lcd_or_osArr[1]][$happy_or_sadArr[0]];
/*nur Gesamtabrechnung*/
"";
$csv_text[$lcd_or_osArr[1]][$happy_or_sadArr[0]]["325"] = $csv_text[$lcd_or_osArr[1]][$happy_or_sadArr[0]]["146"];
$csv_text[$lcd_or_osArr[1]][$happy_or_sadArr[0]]["245"] = $csv_text[$lcd_or_osArr[1]][$happy_or_sadArr[0]]["146"];
$csv_text[$lcd_or_osArr[1]][$happy_or_sadArr[0]]["289"] = $csv_text[$lcd_or_osArr[1]][$happy_or_sadArr[0]]["146"];
// $csv_text_end[$lcd_or_osArr[1]][$happy_or_sadArr[0]] = $csv_text_end[$lcd_or_osArr[1]][$happy_or_sadArr[1]] = "";
$csv_text["Inkasso"] =
"Inkasso- Gutschrift IKEA;;;Kd.-Nr.;" . $accounting_cs_eids[$csc_id_related] . ";;;;;\n" .
";;;Sa-Auftrag;|jbpc_id|;;;;;\n" .
";;;;;;;;;\n" .
"IK-Nr.;Auftr.-Dat.;Durchf.-Dat.;Kunde;Bezahlart;Inkassobetrag;Kred.-Nr.;Fahrzg.". ";;Differenz IKEA\n";
$csv_text["InkassoSpezial"] = $csv_text["Inkasso"];
$sum_inkasso = 0.0;
$sumdiff_inkasso = 0.0;
$csv_text["Subvention"] =
"Order-Nr.;Auftragsnr.;Eingang;Ausführung;Kunde;lfd. Meter;Subvention\n";
if ($hq_id == 1020)
$csv_text["Subvention"] =
"Order-Nr.;Auftragsnr.;Eingang;Ausführung;Kunde;lfd. Meter;Rückvergütung;Differenz\n";
$sum_subv = 0.0;
$sumdiff_subv = 0.0;
$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"
);
$services = array(
"100" => array("ANSTD", "SA00000509", 0, 27), // Montage aller Art/Montagezusatzkosten,ADDITIONAL_INSTALL_SERVICE
"101" => array("MM", "SA60000525", 0, 12), // Möbelmontage,FURNITURE_ASSEMBLY
"102" => array("POM", "SA50000205", 0, 13), // Polstermöbelmontage,LEGS_FURNITURE_ASSEMBLY
// "103" => array("", "", 0), // Möbelmontage/Monteur vor Ort,FURNITURE_ASSEMBLY_EXPRESS
"104" => array("NM-MM", "SA50000502", 0, 4), // KuSe Möbelnachmontage,AFTER_SALES_FURNITURE_ASSEMBLY
"105" => array("MM-GRA", "SA50000578", 1, 25), // Großauftrag/Möbelmontage,FURNITURE_ASSEMBLY_SPECIAL
"106" => array("BADMM", "SA40000526", 0, 14), // Badmöbelmontage,BATHROOM_FURNITURE_INSTALL
"107" => array("NM-BADMM", "SA50000516", 0, 5), // KuSe Badmöbelnachmontage,AFTER_SALES_BATHROOM_FURNITURE_INSTALL
"108" => array("E-Ansch", "SA00000514", 0, 20), // Anschluss von IKEA E-Geräten,ELECTRIC_INSTALL_SERVICE
"109" => array("Uppleva TV", "SA40000550", 1, 21), // UPPLEVA TV Installation,INSTALLATION_TV
"110" => array("Uppleva Sound", "SA20000551", 1, 22), // UPPLEVA SOUND SYSTEM Installation,INSTALLATION_SOUND
"111" => array("Uppleva Fremd", "SA00000552", 1, 23), // UPPLEVA Anschluss Fremdgeräte,CONNECTION_TV
"112" => array("Uppleva Sound NM", "SA60000554", 1, 6), // KuSe UPPLEVA SOUND SYSTEM Installation,AFTER_SALES_SOUND
"113" => array("Uppleva TV NM", "SA80000553", 1, 7), // KuSe UPPLEVA TV Installation,AFTER_SALES_TV
"114" => array("NM-E-Ansch", "SA60000506", 0, 8), // Kuse E-Geräte Anschluss ,AFTER_SALES_ELECTRIC_INSTALL_SERVICE
// "115" => array("", "", 0), // Lagerkosten,STORAGE_HOME_DELIVERY
// "116" => array("", "", 0), // Verpackungskosten ,PACKING_IN_STORE
// "117" => array("", "", 0), // Einkaufservice,PICKING_IN_STORE_CUST
"118" => array("NM-KKM", "SA70000501", 0, 1), // KuSe Küchen-Nachmontage,AFTER_SALES_KITCHEN_INSTALL
"119" => array("NM-APLSTEIN", "SA70000520", 0, 2), // KuSe Nachmontage Steinarbeitsplatten,AFTER_SALES_KITCHEN_INSTALL_WORKTOP_CUSTOM_MADE
"120" => array("APLSTEIN", "SA20000495", 0, 10), // Montage Steinarbeitsplatte,KITCHEN_INSTALL_WORKTOP_CUSTOM_MADE
"121" => array("APLHOLZ", "SA00000533", 0, 11), // Montage Arbeitsplatten nach Maß,KITCHEN_INSTALL_WORKTOP
"122" => array("NM-APLHOLZ", "SA70000515", 0, 3), // KuSe Nachmontage Arbeitsplatten nach Maß,AFTER_SALES_KITCHEN_INSTALL_WORKTOP
"123" => array("KKM-GRA", "SA30000579", 1, 24), // Großauftrag/Küchen-Komplettmontage,KITCHEN_INSTALL_SPECIAL
"124" => array("KKM", "SA40000531", 0, 9), // Küchen-Komplettmontage,COMPLETE_KITCHEN_INSTALL
"125" => array("Aufmaß", "SA60000200", 0, 26), // Raumaufmaß,MEASURE_BEFORE_PLANNING
// "126" => array("", "", 0), // Arbeitsplattenaufmaß,WORKTOP_MEASURE
// "127" => array("", "", 0), // Einrichtungsberatung,HOME_PLANNING
// "128" => array("", "", 0), // Küchenplanungsservice,KITCHEN_PLANNING
"129" => array("BADWA", "SA00000496", 0, 15), // Wasseranschluss von Badmöbeln,BATHROOM_PLUMBING
// "130" => array("", "", 0), // KuSe Wasseranschluss von Badmöbeln,AFTER_SALES_PLUMBING
"131" => array("E-AG", "SA30000503", 0, 16), // Entsorgung und Abholung E-Geräte,REMOVAL_WHITE_GOODS
"132" => array("KDM", "SA50000210", 0, 17), // Altküchendemontage,DEASSEMBLY_KITCHEN
"133" => array("E-PO", "SA30000560", 0, 18), // Entsorgung und Abholung Sofas,REMOVAL_SOFA
"134" => array("E-MA", "SA30000517", 0, 19), // Altmatratzenrücknahme,REMOVAL_MATRESSES
// "135" => array("", "", 0), // Sondertransport,CARRY_HELP
// "136" => array("", "", 0), // Mietanhänger,RENT_A_TRAILER
// "137" => array("", "", 0), // Mietwagen,RENT_A_VAN
"138" => array("BEG", "SA60000511", 0, 28), // Begutachtung,QUALITY_APPRAISAL
// Splitterbox array("SPBOX", "SA50000521", 0) fehlt
// Arbeitsplattenzuschnitt("APLZUSCH", "SA80000119", 1) fehlt
// Entsorgung und Abholung von Altmöbeln ("E-ALTM", "SA30000522", 1) fehlt
);
/*------------------------------------------------------------------------------------------------------------------------------------------------*/
// Abrechnung
$sql_query =
"SELECT job.jb_id, jb_totalprice, jb_cr_price, jb_status, jb_incomplete, jb_service, cr_sid, LEFT(jb_ordertime, 10) AS ordertime, jb_mediationarea_name, LEFT(jb_createtime, 10) AS createtime, jb_finishtime, csc_id_related AS csc_id_related_real, tr_commission_no, tr_comp, jbp_price, jbp_mode, jbp_tan, gdc2.gdc_content AS info_0" .
" FROM genericdatacontainer AS gdc1, tour LEFT JOIN jobpayment ON tour.jb_id = jobpayment.jb_id, job 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" .
" WHERE job.jb_id = gdc1.gdc_obj_id AND gdc1.gdc_gen_fieldname = 'acquisitiontime'" .
" AND (jb_storno IS NULL OR jb_storno = 0) AND csc_id_related IN ($csc_id_related)" .
" AND (jobpayment.jbpc_id IS NULL OR jobpayment.jbpc_id = 0)" .
// " AND jbpc_id IN (81003843)" .
" AND job.jb_id = tour.jb_id AND tour.tr_sort = 2 " .
" AND (jb_ordertime <= '" . $to___date_sql . "' AND NOT (job.jb_id IN (315462, 322139, 321777, 319985, 320185, 320946, 316291, 321335, 317036, 323325, 320208, 493099)))" . // 366316, 372264, 372265, 373658, 374814, 373108, 377627, 383578, 384570
" ORDER by ordertime ASC, info_0 ASC, jb_service ASC";
// $jb_ids = array("LCD" => array("Happy" => array(), "Sad" => array()), "OS" => array("Happy" => array(), "Sad" => array()));
// $sum = array("LCD" => array("Happy" => 0.0, "Sad" => 0.0), "OS" => array("Happy" => 0.0, "Sad" => 0.0));
//echo $sql_query; die();
myWriteLog($sql_query);
$cnt = array(
$lcd_or_osArr[0] => array(
$happy_or_sadArr[0] => 0,
$happy_or_sadArr[1] => 0),
$lcd_or_osArr[1] => array(
$happy_or_sadArr[0] => 0,
$happy_or_sadArr[1] => 0
)
);
$jb_ids = array(
$lcd_or_osArr[0] => array(
$happy_or_sadArr[0] => "",
$happy_or_sadArr[1] => ""),
$lcd_or_osArr[1] => array(
$happy_or_sadArr[0] => "",
$happy_or_sadArr[1] => ""
)
);
$sum_total = array(
$lcd_or_osArr[0] => array(
$happy_or_sadArr[0] => 0.0,
$happy_or_sadArr[1] => 0.0),
$lcd_or_osArr[1] => array(
$happy_or_sadArr[0] => 0.0,
$happy_or_sadArr[1] => 0.0
)
);
$sum_trat_price_lief_prev = 0;
$jb_total_price_prev = 0;
$func_lagerkCnt_prev = "";
$func_lagerk_rounded_prev = "";
$jb_id_prev = 0;
$tmp_csv_txt_prev = "";
$tr_sort = 2;
$res = mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)):
$man_event = $db->getOne("SELECT gdc_content FROM genericdatacontainer WHERE gdc_obj_type = 'jb' AND gdc_gen_fieldname = 'jb_events' AND gdc_content LIKE '%Failed Delivery IKEA%' AND gdc_obj_id = " . $row["jb_id"]);
$man_event_prev = "";
if ($man_event == "") {
//echo "SELECT gdc2.gdc_obj_id FROM genericdatacontainer AS gdc1, genericdatacontainer AS gdc2 WHERE gdc1.gdc_obj_type = 'jb' AND gdc1.gdc_gen_fieldname = 'jb_storno' AND gdc1.gdc_content = gdc2.gdc_obj_id AND gdc2.gdc_content LIKE '%Failed Delivery IKEA%' AND gdc1.gdc_obj_id = " . $row["jb_id"] . "\n";
$man_event_prev = $db->getOne("SELECT gdc2.gdc_obj_id FROM genericdatacontainer AS gdc1, genericdatacontainer AS gdc2 WHERE gdc1.gdc_obj_type = 'jb' AND gdc1.gdc_gen_fieldname = 'jb_storno' AND gdc1.gdc_content = gdc2.gdc_obj_id AND gdc2.gdc_content LIKE '%Failed Delivery IKEA%' AND gdc1.gdc_obj_id = " . $row["jb_id"]);
}
// $order_no = $db->getOne("SELECT gdc_content FROM genericdatacontainer WHERE gdc_obj_type = 'jb' AND gdc_gen_fieldname = 'info_0' AND gdc_obj_id = " . $row["jb_id"]);
$order_no = $row["info_0"];
$csc_id_related_real = $row["csc_id_related_real"];
$jb_id_addmont = $db->getOne("SELECT gdc_content FROM genericdatacontainer WHERE gdc_obj_id = " . $row["jb_id"] . " AND gdc_gen_fieldname = 'jb_id_addmont'");
$jbp_tan_addmont = "";
if ($jb_id_addmont != "")
$jbp_tan_addmont = $db->getOne("SELECT jbp_tan FROM jobpayment WHERE jb_id = " . $jb_id_addmont);
// if ($db->getOne("SELECT jbpc_id FROM jobpayment WHERE jb_id = " . $jb_id_addmont) != "0")
// $jb_id_addmont = "";
// jb_id_addmont berücksichtigen
// $jb_id_clause = "jb_id = " . $row["jb_id"];
// if ($jb_id_addmont != "") {
// $jb_id_clause = "(jb_id = " . $row["jb_id"] . " OR jb_id = " . $jb_id_addmont . ")";
// }
// LCD oder OS
$lcd_or_os = $lcd_or_osArr[0];
if (($row["jb_service"] & $serviceMont) == $serviceMont) {
$lcd_or_os = $lcd_or_osArr[1];
$order_no = $row["tr_commission_no"];
}
// Happy oder Sad
$is_service_job = $db->getOne("SELECT gdc_content FROM genericdatacontainer WHERE gdc_obj_type = 'jb' AND gdc_obj_id = " . $row["jb_id"] . " AND gdc_gen_fieldname = 'jb_service_job'") == '1';
$sams_nr = $db->getOne("SELECT gdc_context FROM genericdatacontainer WHERE gdc_obj_type = 'jb' AND gdc_obj_id = " . $row["jb_id"] . " AND gdc_gen_fieldname = 'jb_service_job'");
if ($sams_nr == "nicht verfügbar") {
$sams_nr = "";
}
// $bo_obj_data = $db->getOne("SELECT bo_obj_data FROM phoenix_log.b2b_objects WHERE bo_type = 300 AND (bo_obj_data LIKE '" . $row["tr_commission_no"] . "|301%' OR bo_obj_data LIKE '" . $row["tr_commission_no"] . "|304%')");
// list ($dummy, $event_no) = explode("|", $bo_obj_data);
$happy_or_sad = $happy_or_sadArr[0];
if (/*$event_no == "304" || */ $is_service_job && $lcd_or_os == $lcd_or_osArr[0]) {
$happy_or_sad = $happy_or_sadArr[1];
// if ($event_no == "304" && $lcd_or_os == $lcd_or_osArr[1] && !$test) {
// $sql_query = "DELETE FROM jobpayment WHERE " . $jb_id_clause . " AND tr_sort = " . $tr_sort;
// mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
// }
}
// $jb_ids[$lcd_or_os][$happy_or_sad][] = $row["jb_id"];
// $sum[$lcd_or_os][$happy_or_sad] += $row["jb_totalprice"];
myWriteLog("");
myWriteLog($row["jb_id"] . ": " . $lcd_or_os . $happy_or_sad . ", Order-Nr.: " . $order_no . " vom " . formDate($row["createtime"]) . ", Kunde: " . $row["tr_comp"] . ", ausgeführt am " . formDate($row["ordertime"]) . " von " . $row["cr_sid"] . ", Nettopreis: " . formSum($row["jb_totalprice"]) . ", Nettofuhrlohn: " . formSum($row["jb_cr_price"]));
if ($man_event != "")
myWriteLog("Manuelles Event: " . $man_event);
if ($man_event_prev != "")
myWriteLog("Zweitanlieferung (vorheriger Auftrag 'failed IKEA': " . $man_event_prev . ")");
if ($is_service_job)
myWriteLog("SAMS-Nr.: " . $db->getOne("SELECT gdc_context FROM genericdatacontainer WHERE gdc_obj_type = 'jb' AND gdc_obj_id = " . $row["jb_id"] . " AND gdc_gen_fieldname = 'jb_service_job'"));
// myWriteLog("Scan-Event: " . $bo_obj_data);
// myWriteLog("Events: " . $db->getOne("SELECT gdc_content FROM genericdatacontainer WHERE gdc_obj_type = 'jb' AND gdc_obj_id = " . $row["jb_id"] . " AND gdc_gen_fieldname = 'jb_events'"));
// if (!$test) {
// // Überprüfen, ob jobpayment überhaupt existiert; wenn nicht, dann als bar einfügen
//// $jbp_price = $db->getOne("SELECT jbp_price FROM jobpayment WHERE jb_id = " . $row["jb_id"] . " AND tr_sort = " . $tr_sort);
// if ($row["jbp_price"] == "" && !($event_no == "304" && $lcd_or_os == $lcd_or_osArr[1])) {
// $sql_query =
// "INSERT INTO jobpayment (jb_id, tr_sort, csc_id, jbp_mode, jbp_price, jbp_bookingtime, jbp_counter, jbpc_id) VALUES " .
// "(" . $row["jb_id"] . ", " . $tr_sort . ", " . $accounting_csc_ids[$csc_id_related] . ", 0, " . $row["jb_totalprice"] . ", '" . $to___date_sql . "', 0, 0)";
// mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
// myWriteLog("\$jobpayment = hinzugefügt");
// }
//
// // jbp_mode in jbp_tan sichern, damit nachvollzogen werden kann, welcher Ursprungs-Mode vorhanden war
// $sql_query =
// "UPDATE jobpayment SET jbp_tan = CONCAT(jbp_mode) WHERE jbp_tan = '' AND " . $jb_id_clause . " AND tr_sort = " . $tr_sort;
// mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
// Jetzt den payment_type für die Abrechnung eintragen
// $sql_query =
// "UPDATE jobpayment SET csc_id = " . $accounting_csc_ids[$csc_id_related] . ", jbp_mode = " . $payment_types[$lcd_or_os][$happy_or_sad] . " WHERE " . $jb_id_clause . " AND tr_sort = " . $tr_sort . " AND jbpc_id = 0";
// mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
// }
//// Nach dem Umsatz-Export für den Fuhrlohn-Export ändern: jbp_mode = 0
// Prüfung, ob der Auftrag abgerechnet werden kann
$csv_log_entry = $row["jb_id"] . ";" . $lcd_or_os . $happy_or_sad . ";" . $order_no . ";" . formDate($row["createtime"]) . ";" . str_replace(";", "", $row["tr_comp"]) . ";" . formDate($row["ordertime"]) . ";" . $row["cr_sid"] . ";" . formSum($row["jb_totalprice"]) . ";" . formSum($row["jb_cr_price"]);
if ($lcd_or_os == $lcd_or_osArr[1] && trim($row["cr_sid"]) == "") {
myWriteLog("Kein Export: Fahrer fehlt in OS-Auftrag");
write_file($no_export_file_name, $csv_log_entry . ";Fahrer fehlt in OS Auftrag\n", "a");
} elseif ((in_array($row["jbp_tan"], array("0", "1", "10", "20")) || ($is_service_job && $lcd_or_os == $lcd_or_osArr[1])) AND ($row["jb_incomplete"] != "0" || $row["jb_status"] != "2")) {
myWriteLog("Kein Export: OS-Auftrag mit nicht erledigtem/unfertigen Auftrag, Zahlart: " . $modeArr[$row["jbp_tan"]]);
write_file($no_export_file_name, $csv_log_entry . ";Inkasso oder Nachmontage mit nicht erledigtem/unfertigen Auftrag\n", "a");
} elseif (
$db->getOne("SELECT gdc_gen_fieldname FROM genericdatacontainer WHERE gdc_obj_type = 'jb' AND gdc_obj_id = " . $row["jb_id"] . " AND gdc_gen_fieldname = 'jb_addmont'") == "jb_addmont"
&& $db->getOne("SELECT gdc_content FROM genericdatacontainer WHERE gdc_obj_id = " . $row["jb_id"] . " AND gdc_gen_fieldname = 'jb_addmont'") == "") {
myWriteLog("Kein Export: Montagestunden fehlen");
write_file($no_export_file_name, $csv_log_entry . ";Montagestunden fehlen\n", "a");
} elseif ($row["jb_finishtime"] == "0000-00-00 00:00:00" AND ($row["jb_incomplete"] == "0" && $row["jb_status"] == "2")) {
myWriteLog("Kein Export: Erledigungszeit des exportierbaren Auftrages ist '0000-00-00 00:00:00'");
write_file($no_export_file_name, $csv_log_entry . ";Erledigungszeit des exportierbaren Auftrages ist '0000-00-00 00:00:00'\n", "a");
} elseif ($row["jb_totalprice"] == 0 && ($row["jb_service"] & $serviceAust) != $serviceAust
&& $db->getOne("SELECT gdc_content FROM genericdatacontainer WHERE gdc_obj_type = 'jb' AND gdc_obj_id = " . $row["jb_id"] . " AND gdc_gen_fieldname = 'jb_service_job'") != '1') {
myWriteLog("Kein Export: Kein Preis verfügbar");
write_file($no_export_file_name, $csv_log_entry . ";Kein Preis verfügbar\n", "a");
} else {
/*------------------------------------------------------------------------------------------------------------------------------------------------*/
// Auftrag wird abgerechnet
if ($row["jb_incomplete"] != "0" || $row["jb_status"] != "2") {
myWriteLog("Abrechnung an IKEA aber kein Fuhrlohnexport: nicht erledigter/unfertiger Auftrag");
write_file($no_cr_price_file_name, $csv_log_entry . ";nicht erledigter/unfertiger Auftrag\n", "a");
}
if ($db->getOne(
"SELECT jbc2.jb_id FROM jobcalculator AS jbc1, jobcalculator AS jbc2, job" .
" WHERE jbc1.srvt_name = IN (" . FUNCPAR_POLST . ", " . FUNCPAR_MATR . ", " . FUNCPAR_ENTSELEK . ") AND jbc1.jb_id = jbc2.jb_id AND jbc2.jb_id = job.jb_id AND jb_id_parent = 0 AND jb_storno IS NULL AND jbc2.jb_id = " . $row["jb_id"] .
" GROUP BY jbc2.jb_id HAVING COUNT(*) = 1") == $row["jb_id"]
&& $db->getOne("SELECT gdc_content FROM genericdatacontainer WHERE gdc_gen_fieldname = 'info_0' AND gdc_content = '" . $order_no . "'") != $order_no) {
myWriteLog("Abrechnung einer Entsorgung ohne Lieferung/Montage");
write_file($no_cr_price_file_name, $csv_log_entry . ";Entsorgung ohne Lieferung/Montage\n", "a");
}
// Ab hier geht's los
$sum_trat_price_lief = $db->getOne("SELECT SUM(trat_price) FROM tourarticle WHERE jb_id = " . $row["jb_id"]);
// $sum_trat_price_mont = $db->getOne("SELECT SUM(trat_price * " . (1 + VAT) . ") FROM tourarticle WHERE jb_id = " . $row["jb_id"]);
$func_sofaCnt = $db->getOne("SELECT jbc_amount FROM jobcalculator WHERE srvt_name = '" . FUNCPAR_SOFA . "' AND jb_id = " . $row["jb_id"]);
$func_sofa = $db->getOne("SELECT jbc_totalprice FROM jobcalculator WHERE srvt_name = '" . FUNCPAR_SOFA . "' AND jb_id = " . $row["jb_id"]);
if ($func_sofa == "0") {
$func_sofa = "";
}
/*------------------------------------------------------------------------------------------------------------------------------------------------*/
// LCD-Aufträge
if ($lcd_or_os == $lcd_or_osArr[0]) {
$trat_sum_weight = $db->getOne("SELECT gdc_content FROM tour, genericdatacontainer " .
" WHERE gdc_obj_type = 'tr' AND tr_id = gdc_obj_id AND gdc_gen_fieldname = 'trat_sum_weight' AND jb_id = " . $row["jb_id"] . " AND tr_sort = " . $tr_sort);
$func_lagerkCnt = $db->getOne("SELECT jbc_amount FROM jobcalculator WHERE srvt_name = '" . FUNCPAR_LAGERK . "' AND jb_id = " . $row["jb_id"]);
$func_lagerk = $db->getOne("SELECT jbc_totalprice FROM jobcalculator WHERE srvt_name = '" . FUNCPAR_LAGERK . "' AND jb_id = " . $row["jb_id"]);
// Wenn Lagerkosten vorhanden, dann Lagerkosten anhand der Scan-Events neu berechnen
// Für die Abrechnung soll der grundetete netto-Wert als Basis dienen
$func_lagerk_rounded = "";
if ($func_lagerkCnt != "") {
$row["jb_totalprice"] -= $func_lagerk; // Die alten Lagerkosten aus dem Endpreis herausrechnen
$func_lagerkCnt = "";
// Lagertage werden gezählt zwischen "Received at HUB" (201) und "Loaded on delivery truck" (202)
$received_date = $db->getOne("SELECT bo_createtime FROM phoenix_log.b2b_objects WHERE bo_type = 300 AND (bo_obj_data LIKE '" . $row["tr_commission_no"] . "|201%')");
$loaded_date = $db->getOne("SELECT bo_createtime FROM phoenix_log.b2b_objects WHERE bo_type = 300 AND (bo_obj_data LIKE '" . $row["tr_commission_no"] . "|202%')");
if ($received_date != "" && $loaded_date != "") {
$diffdays = ceil((strtotime($loaded_date) - strtotime ($received_date)) / (3600 * 24)) - 10;
if ($diffdays > 0) {
$func_lagerkSingle = $db->getOne("SELECT jbc_price FROM jobcalculator WHERE srvt_name = '" . FUNCPAR_LAGERK . "' AND jb_id = " . $row["jb_id"]);
$func_lagerk_rounded = $diffdays * $func_lagerkSingle;
$func_lagerkCnt = "" . (int) $diffdays;
}
}
myWriteLog("Received at HUB: '$received_date', Loaded on delivery truck: '$loaded_date', Lagertage: $func_lagerkCnt");
if (!$test) {
// Neu berechnete Werte schreiben
$sql_query =
"UPDATE jobcalculator SET jbc_amount = " . ($func_lagerkCnt == "" ? "0" : $func_lagerkCnt) . ", jbc_totalprice = " . ($func_lagerk_rounded == "" ? "0" : $func_lagerk_rounded) . ", jbc_modify = NOW() WHERE srvt_name = '" . FUNCPAR_LAGERK . "' AND jb_id = " . $row["jb_id"];
myWriteLog($sql_query);
mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
$jb_totalprice_new = $db->getOne("SELECT SUM(jbc_totalprice) FROM jobcalculator WHERE jb_id = " . $row["jb_id"]);
$sql_query = "UPDATE job SET jb_totalprice = " . $jb_totalprice_new . " WHERE jb_id = " . $row["jb_id"];
myWriteLog($sql_query);
mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
$sql_query = "UPDATE jobpayment SET jbp_price = " . $jb_totalprice_new . " WHERE jb_id = " . $row["jb_id"];
myWriteLog($sql_query);
mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
$sql_query = "UPDATE tourservice SET trs_price = " . $jb_totalprice_new . " WHERE jb_id = " . $row["jb_id"];
myWriteLog($sql_query);
mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
}
}
// fehlgeschlagener Versuch?
// 12.01.2016: Ein fehlgeschlagener Versuch wird wieder ganz normal als "Hinsend" aufgeführt
$AVmLV = "";
// if ($man_event != "")
// $AVmLV = "1";
// Zweitanlieferung nach fehlgeschlagenem Versuch?
$Zweitanl = "";
if ($man_event_prev != "")
$Zweitanl = "1";
// Abholung und/oder Austausch?
$Abholung = "";
if (($row["jb_service"] & $serviceAbhol) == $serviceAbhol) {
$Abholung = "1";
}
$Austausch = "";
if (($row["jb_service"] & $serviceAust) == $serviceAust) {
$Austausch = "1";
}
// Überprüfen, ob ein vorheriger Austausch-Lieferauftrag jetzt vom zugehörigen Austausch-Abholauftrag gefolgt wird
if ($jb_id_prev != 0 && !($Austausch == "1" && $Abholung == "1")) {
myWriteLog("ACHTUNG: Austausch-Lieferauftrag " . $jb_id_prev . " hat keinen nachfolgenden Austausch-Abholauftrag");
$csv_text["LCD"]["Sad"][$store_no[$csc_id_related_real]] .= $tmp_csv_txt;
$sum_total["LCD"]["Sad"] += netSum($jb_total_price_prev) + netSum($func_lagerk_rounded_prev);
$sum_trat_price_lief_prev = 0;
$jb_total_price_prev = 0;
$func_lagerkCnt_prev = "";
$func_lagerk_rounded_prev = "";
$jb_id_prev = 0;
$tmp_csv_txt_prev = "";
}
// Im Falle des Austausches müssen die beiden Aufträge zu einem zusammengefasst werden
if ($Austausch == "1") {
if ($Abholung == "1") {
// Warenwert und Preis des vorhergehenden Austausch-Lieferauftrages werden zum nächsten hinzuaddiert
if ($jb_id_prev == 0)
myWriteLog("ACHTUNG: Austausch-Abholung hat keinen vorhergehenden Austausch-Lieferauftrag");
else
myWriteLog("Austausch Abholung: Werte des vorhergehenden Austausch-Lieferauftrages " . $jb_id_prev . " wurden hinzuaddiert");
$sum_trat_price_lief += $sum_trat_price_lief_prev;
$row["jb_totalprice"] += $jb_total_price_prev;
$func_lagerkCnt = $func_lagerkCnt_prev;
$func_lagerk_rounded = $func_lagerk_rounded_prev;
$sum_trat_price_lief_prev = 0;
$jb_total_price_prev = 0;
$func_lagerkCnt_prev = "";
$func_lagerk_rounded_prev = "";
$jb_id_prev = 0;
$tmp_csv_txt_prev = "";
} else {
// der erste der beiden ist immer die Lieferung, dieser Auftrag muss "zurückgehalten" werden
$sum_trat_price_lief_prev = $sum_trat_price_lief;
$jb_total_price_prev = $row["jb_totalprice"];
$func_lagerkCnt_prev = $func_lagerkCnt;
$func_lagerk_rounded_prev = $func_lagerk_rounded;
$jb_id_prev = $row["jb_id"];
myWriteLog("Austausch Lieferung: Auftrag " . $row["jb_id"] . " wird im nachfolgenden Auftrag ausgegeben");
}
}
$shuttle_fee = 0;
if ($happy_or_sad == $happy_or_sadArr[0]) {
// if ($hq_name == "HL" && $row["createtime"] != $row["ordertime"]) {
// $shuttle_fee = 20;
// if (!$test) {
// $sql_query =
// "UPDATE job SET jb_cr_price = jb_cr_subprice + 20 WHERE jb_id = " . $row["jb_id"];
// mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
// myWriteLog($row["jb_id"] . ": Shuttle fee von " . $shuttle_fee . " € wurde dem Fuhrlohn hinzugerechnet");
// }
// }
$tmp_csv_txt =
";LCD;" . $lsc_no[$csc_id_related_real] . ";" . $order_no . ";" . $sams_nr . ";" . formDate($row["ordertime"]) . ";" . $store_no[$csc_id_related_real] . " ;" .
$areas[trim($row["jb_mediationarea_name"])] . ";" . $zones[trim($row["jb_mediationarea_name"])] . ";" . ($row["createtime"] == $row["ordertime"] ? "Direkt" : "Indirekt") . ";" .
formSum($sum_trat_price_lief) . ";" . formSum($trat_sum_weight, 3) . ";" .
($AVmLV == "" && $Zweitanl == "" ? formSum($row["jb_totalprice"]) : "") . ";" . formSum($shuttle_fee) . ";" .
($row["createtime"] == $row["ordertime"] ? "1" : "") . ";;" . $Abholung . ";" . $Austausch . ";" .
$Zweitanl . ";" . ($Zweitanl != "" ? formSum($row["jb_totalprice"]) : "") . ";" .
$AVmLV . ";" . ($AVmLV != "" ? formSum($row["jb_totalprice"]) : "") . ";;;" . formCntEmpty($func_lagerkCnt) . ";" . formSumEmpty($func_lagerk_rounded) . ";;;;;;;;;\n";
} else {
$tmp_csv_txt =
";LCD;" . $lsc_no[$csc_id_related_real] . ";" . $order_no . ";" . $sams_nr . ";" . formDate($row["ordertime"]) . ";" . $store_no[$csc_id_related_real] . " ;" .
$areas[trim($row["jb_mediationarea_name"])] . ";" . $zones[trim($row["jb_mediationarea_name"])] . ";" . ($row["createtime"] == $row["ordertime"] ? "Direkt" : "Indirekt") . ";" .
formSum($sum_trat_price_lief) . ";" .
($AVmLV == "" && $Zweitanl == "" ? formSum($row["jb_totalprice"]) : "") . ";0,00;" . $Abholung . ";" . $Austausch . ";;;" . formCntEmpty($func_sofaCnt) . ";" . formSumEmpty($func_sofa) . ";;;" .
$Zweitanl . ";" . ($Zweitanl != "" ? formSum($row["jb_totalprice"]) : "") . ";" .
$AVmLV . ";" . ($AVmLV != "" ? formSum($row["jb_totalprice"]) : "") . ";;;" . formCntEmpty($func_lagerkCnt) . ";" . formSumEmpty($func_lagerk_rounded) . ";;;;;;\n";
}
if (!($Austausch == "1" && $Abholung == "")) {
$csv_text[$lcd_or_os][$happy_or_sad][$store_no[$csc_id_related_real]] .= $tmp_csv_txt;
$sum_total[$lcd_or_os][$happy_or_sad] += netSum($row["jb_totalprice"]) + netSum($func_sofa) + netSum($func_lagerk_rounded) + $shuttle_fee;
} else { // Austausch-Lieferauftrag zurückhalten
$tmp_csv_txt_prev = $tmp_csv_txt;
}
}
/*------------------------------------------------------------------------------------------------------------------------------------------------*/
// OS-Aufträge
if (/*$event_no != "304" && */ $lcd_or_os == $lcd_or_osArr[1]) {
$jbAddedServiceInfosArray = array_filter(explode(',', $db->getOne("SELECT gdc_content FROM genericdatacontainer WHERE gdc_obj_type = 'jb' AND gdc_gen_fieldname = 'jb_add_service_info' AND gdc_obj_id = " . $row["jb_id"])));
$SA_Bezeichnung = "";
foreach($jbAddedServiceInfosArray as $jbAddedServiceInfo) {
if ($SA_Bezeichnung == "" || $services[$jbAddedServiceInfo][3] < $services[$SA_Bezeichnung_code][3]) {
$SA_Bezeichnung_code = $jbAddedServiceInfo;
$SA_Bezeichnung = $services[$SA_Bezeichnung_code][0];
}
}
myWriteLog("unique jb_add_service_info: " . json_encode(array_unique($jbAddedServiceInfosArray)));
myWriteLog("\$SA_Bezeichnung_code = " . $SA_Bezeichnung_code . ", \$SA_Bezeichnung = " . $SA_Bezeichnung);
// Rechnungsposten _mit_ hinterlegter Preisfunktion aus jobcalculator holen
$funcparArr = array();
foreach(array(FUNCPAR_POLST, FUNCPAR_MATR, FUNCPAR_MONTGRUND, FUNCPAR_MONT, FUNCPAR_KUELFDMET, FUNCPAR_KUEELEKTR, FUNCPAR_INSTTV, FUNCPAR_INSTLAUT, FUNCPAR_WASSER, FUNCPAR_ENTSELEK, FUNCPAR_SONDER, FUNCPAR_ENTSMOEB, FUNCPAR_SPLITTER, FUNCPAR_QUALITY) as $funcpar) {
$funcparArr[$funcpar][0] = $db->getOne("SELECT jbc_amount FROM jobcalculator WHERE srvt_name = '" . $funcpar . "' AND jb_id = " . $row["jb_id"]);
$funcparArr[$funcpar][1] = $db->getOne("SELECT jbc_totalprice FROM jobcalculator WHERE srvt_name = '" . $funcpar . "' AND jb_id = " . $row["jb_id"]);
// if ($funcpar == FUNCPAR_MONT && $row["jb_id"] == 312722) {
// $funcparArr[FUNCPAR_MONT][1] = 116.8487;
// }
if ($funcpar == FUNCPAR_SONDER && $funcparArr[FUNCPAR_SONDER][1] != "") { // Sondertransporte werden als Montagekosten abgerechnet
$funcparArr[FUNCPAR_MONTGRUND][1] += $funcparArr[FUNCPAR_SONDER][1];
}
}
// Rechnungsposten _ohne_ hinterlegte Preisfunktion aus jobcalculator holen
foreach(array("UPPLEVA Base Charge", "UPPLEVA Anschluss Fremdgeräte", "Subvention pro Küche < 4,30m", "Altküchendemontage") as $funcpar) {
$funcparArr[$funcpar][0] = $db->getOne("SELECT jbc_amount FROM jobcalculator WHERE srv_name = '" . $funcpar . "' AND jb_id = " . $row["jb_id"]);
$funcparArr[$funcpar][1] = $db->getOne("SELECT jbc_totalprice FROM jobcalculator WHERE srv_name = '" . $funcpar . "' AND jb_id = " . $row["jb_id"]);
}
// Anpassungen der einzelnen Posten für die Ausgabe
if ($funcparArr["UPPLEVA Base Charge"][1] != "") {
$uppleva_price = $funcparArr["UPPLEVA Base Charge"][1] + $funcparArr[FUNCPAR_INSTTV][1] + $funcparArr[FUNCPAR_INSTLAUT][1] + $funcparArr["UPPLEVA Anschluss Fremdgeräte"][1];
}
// Entsorgung Elektrogeräte: Abgerechneter Preis ist höher als Endkundenpreis
$inkasso_diff = 0;
if (formCntEmpty($funcparArr[FUNCPAR_ENTSELEK][0]) != "") {
$real_price_ENTSELEK = (30 / (1 + VAT)); // Endpreis in Süd und Nord
$funcparArrFUNCPAR_ENTSELEK_old = $funcparArr[FUNCPAR_ENTSELEK][0] * $funcparArr[FUNCPAR_ENTSELEK][1];
$funcparArr[FUNCPAR_ENTSELEK][1] = $funcparArr[FUNCPAR_ENTSELEK][0] * $real_price_ENTSELEK;
// if (!$test) {
// $sql_query =
// "UPDATE jobpayment SET jbp_price = " . ($row["jb_totalprice"] + $funcparArr[FUNCPAR_ENTSELEK][1] - $funcparArrFUNCPAR_ENTSELEK_old) . " WHERE jb_id = " . $row["jb_id"] . " AND tr_sort = " . $tr_sort;
// mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
// }
// $inkasso_diff += round(($funcparArr[FUNCPAR_ENTSELEK][1] - $funcparArrFUNCPAR_ENTSELEK_old) * (1 + VAT), 2);
if (!$test) {
$inkasso_diff_tmp = round($funcparArr[FUNCPAR_ENTSELEK][1] - $funcparArrFUNCPAR_ENTSELEK_old, 4);
$sql_query = "INSERT INTO genericdatacontainer (gdc_obj_type, gdc_obj_id, gdc_gen_fieldname, gdc_content, gdc_context)" .
" VALUES ('order_no', " . $order_no . ", 'price_ht', '" . round($row["jb_totalprice"] + $inkasso_diff_tmp, 4) . "', '" . $row["jb_id"] . "|" . round($row["jb_totalprice"], 4) . "|" . round($inkasso_diff_tmp, 4) . "')";
mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
myWriteLog($sql_query);
}
}
// ZUKÜNFTIG AUCH BEI KÜCHEN: 191,00 pro lfm AN IKEA!!!!
myWriteLog(formSumEmpty($funcparArr[FUNCPAR_KUELFDMET][0]));
if (formSumEmpty($funcparArr[FUNCPAR_KUELFDMET][0]) != "") {
$real_price_KUELFDMET = 199; // Endpreis in Nord // ab Abrechnung nach dem 01.04.2016 wieder 199,00 (vorher 179,00)
if ($hq_id == 1111) $real_price_KUELFDMET = 191; // Endpreis in Süd
myWriteLog($funcparArr[FUNCPAR_KUELFDMET][1]);
$funcparArrFUNCPAR_KUELFDMET_old = $funcparArr[FUNCPAR_KUELFDMET][1];
$funcparArr[FUNCPAR_KUELFDMET][1] = $funcparArr[FUNCPAR_KUELFDMET][0] * ($real_price_KUELFDMET / (1 + VAT));
myWriteLog($funcparArr[FUNCPAR_KUELFDMET][1]);
// if (!$test) {
// $sql_query =
// "UPDATE jobpayment SET jbp_price = " . ($row["jb_totalprice"] + $funcparArr[FUNCPAR_KUELFDMET][1] - $funcparArrFUNCPAR_KUELFDMET_old) . " WHERE jb_id = " . $row["jb_id"] . " AND tr_sort = " . $tr_sort;
// mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
// }
$inkasso_diff += round(($funcparArr[FUNCPAR_KUELFDMET][1] - $funcparArrFUNCPAR_KUELFDMET_old) * (1 + VAT), 2);
}
// Preisänderung für Endkunden am 31.11. (Grundgebühr Montage von 79,00€ auf 49,00€ und Montagegebür won WW15 auf WW20)
// Die Abrechnung an IKEA bleibt jedoch gleich, daher hier die Anpassung nötig
if (round(($funcparArr[FUNCPAR_MONTGRUND][1]) * (1 + VAT), 0) == 49) {
$price_ev = round($funcparArr[FUNCPAR_MONTGRUND][1] * (1 + VAT), 2) + round($funcparArr[FUNCPAR_MONT][1] * (1 + VAT), 2);
$funcparArrFUNCPAR_MONTGRUND_old = $funcparArr[FUNCPAR_MONTGRUND][1];
$funcparArrFUNCPAR_MONT_old = $funcparArr[FUNCPAR_MONT][1];
myWriteLog("Montagepreis Kunde = " . $price_ev);
$price_ht_MONTGRUND = 79 / (1 + VAT);
$price_ht_MONT = 15;
$funcparArr[FUNCPAR_MONTGRUND][1] = $price_ht_MONTGRUND;
$funcparArr[FUNCPAR_MONT][1] = ($funcparArr[FUNCPAR_MONT][1] * (1 + VAT) / 20 * $price_ht_MONT) / (1 + VAT);
$price_ikea = round($funcparArr[FUNCPAR_MONTGRUND][1] * (1 + VAT), 2) + round($funcparArr[FUNCPAR_MONT][1] * (1 + VAT), 2);
myWriteLog("Montagepreis IKEA = " . $price_ikea);
$inkasso_diff += $price_ikea - $price_ev;
myWriteLog("Inkasso-Differenz = " . $inkasso_diff);
}
if ($inkasso_diff == 0) {
$inkasso_diff = "";
}
// myWriteLog(var_export ($funcparArr, true));
// Montagestunden ermitteln und zuordnen (Montage oder SAMS)
$inkasso_price = 0;
if (in_array($row["jbp_tan"], array("0", "1", "10"))) {
$inkasso_price = $row["jbp_price"];
if ($is_service_job) {
$inkasso_price = $funcparArr[FUNCPAR_MONTGRUND][1];
}
}
$working_hours_sams = "";
$working_hours_price_sams = "";
if ($is_service_job) {
$working_hours_price_sams = $row["jbp_price"];
}
$working_hours = "";
$working_hours_price = "";
if ($jb_id_addmont != "") {
$working_hours = $db->getOne("SELECT gdc_content FROM genericdatacontainer WHERE gdc_obj_id = " . $row["jb_id"] . " AND gdc_gen_fieldname = 'jb_addmont'");
$working_hours_price = $db->getOne("SELECT jb_totalprice FROM job WHERE jb_id = " . $jb_id_addmont);
$working_hours_inkasso = $db->getOne("SELECT jbp_price FROM jobpayment WHERE jb_id = " . $jb_id_addmont);
if (!$is_service_job) {
if (in_array($jbp_tan_addmont, array("0", "1", "10"))) {
$inkasso_price += $working_hours_inkasso;
}
} else {
$working_hours_sams = $working_hours;
$working_hours_price_sams += $working_hours_price;
$working_hours = "";
$working_hours_price = "";
}
myWriteLog("\$jb_id_addmont = $jb_id_addmont");
}
myWriteLog("\$inkasso_price = $inkasso_price");
if ($inkasso_price == 0)
$inkasso_price = "";
// Aufstellung der Rechnungsposten
$mont_gesamt = $funcparArr[FUNCPAR_MONTGRUND][1] + $funcparArr[FUNCPAR_MONT][1];
if ($mont_gesamt == 0)
$mont_gesamt = "";
// Tobedone: Unterschiedliche Zahlarten bzgl. Inkasso berücksichtigen (z.B. Auftrag bar, Montagestunden aber per EC)
// Derzeit darf nur eine Zahlung pro Auftrag existieren, da er sonst doppelt abgerechnet werden würde...
// In der Spalte "Inkasso" in der Excel-Tabelle für IKEA muss auch jbp_id statt jb_totalprice ausgewiesen werden
// Fuhrlohnexport haut für gesplitte Zahlung (bar/Inkasso IKEA) nicht hin, statt bar-Betrag wird der volle Betrag als abr exportiert
$csv_text[$lcd_or_os][$happy_or_sad][$store_no[$csc_id_related_real]] .=
/*nur Gesamtabrechnung*/
// ACHTUNG:
// - $SA_Bezeichnung enthält immer den übermittelten Service, also auch wenn mehrere übermittelt wurden
// - Wenn mehrere Services übermittelt werden, versuche ich in der SA-Bezeichnung eine sinnvolle Auswahl zu treffen (Bsp. Möbelmontage und Polstermöbelmontage zusammen ergibt Möbelmontage)
// - die Liste der SA-Bezeichnungen ist nicht vollständig ("CARRY_HELP fehlt 785558158,789316738 , Aufträge ohne Service 787579279 fehlen REMOVAL_WHITEGOODS")
// - Badmöbelmontage werden nicht extra ausgiewesen, da berechnet wie normale Möbelmontagen
// - In der letzten Spalte Sonstiges (Uppleva, Möbelmontage vor Ort, Großauftrag Küche und Möbelmontage, Arbeitsplattenaufmaß) werden Möbelmontage vor Ort, Großauftrag Küche und Möbelmontage nicht aufgeführt,
// weil zuvor ganz normal abgerechnet; Arbeitsplattenaufmaß haben wir nicht
// - wenn Uppleva und eine Möbelentsorgung zusammen vorkommen, dann crasht es weil die letzte Spalte "Sonstiges" nur eine Zeile aufnehmen kann
// UPPLEVA derzeit noch nicht berücksichtigt! Kontrolle durch Nachberechnen der csv-Summen durchführen!
";;" . $lsc_no[$csc_id_related_real] . ";" . $sams_nr . ";" . $order_no . ";" . $SA_Bezeichnung . ";" . formDate($row["ordertime"]) . ";" . $store_no[$csc_id_related_real] . " ;" . grossSumEmpty($inkasso_price) . ";" .
formCntEmpty($funcparArr[FUNCPAR_MONT][0]) . ";" . formSumEmpty($funcparArr[FUNCPAR_MONT][1]) . ";" . (!$is_service_job ? formSumEmpty($mont_gesamt) : "") . ";" .
($funcparArr[FUNCPAR_KUELFDMET][0] != "" ? "1" : "") . ";" . formSumEmpty($funcparArr[FUNCPAR_KUELFDMET][0]) . ";" . formSumEmpty($funcparArr[FUNCPAR_KUELFDMET][1]) . ";" .
($funcparArr[FUNCPAR_SPLITTER][0] != "" ? "1" : "") . ";" . formSumEmpty($funcparArr[FUNCPAR_SPLITTER][1]) . ";" .
formCntEmpty($funcparArr[FUNCPAR_WASSER][0]) . ";" . formSumEmpty($funcparArr[FUNCPAR_WASSER][1]) . ";" .
/*Badmöbelmontage1*/ ";" . /*Badmöbelmontage1*/ ";" .
formCntEmpty($funcparArr[FUNCPAR_KUEELEKTR][0]) . ";" . formSumEmpty($funcparArr[FUNCPAR_KUEELEKTR][1]) . ";" .
($funcparArr["Altküchendemontage"][0] != "" ? "1" : "") . ";" . formCntEmpty($funcparArr["Altküchendemontage"][0]) . ";" . formSumEmpty($funcparArr["Altküchendemontage"][1]) . ";" .
/*Aufmaß1*/ ";" . /*Aufmaß2*/ ";" .
($working_hours != "" ? "1" : "") . ";" . /*MA*/ ";" . formSumEmpty($working_hours) . ";" . /*Anf*/ ";" . formSumEmpty($working_hours_price) . ";" .
/*Montage_APL_Holz1*/ ";" . /*Montage_APL_Holz2*/ ";" . /*Montage_APL_Holz3*/ ";" . /*Montage_APL_Holz4*/ ";" . /*Montage_APL_Holz5*/ ";" .
/*Montage_APL_Stein1*/ ";" . /*Montage_APL_Stein2*/ ";" . /*Montage_APL_Stein3*/ ";" . /*Montage_APL_Stein4*/ ";" . /*Montage_APL_Stein5*/ ";" .
($SA_Bezeichnung_code == "104" ? ($working_hours_sams != "" ? "1" : "") . ";" . /*MA*/ ";" . formSumEmpty($working_hours_sams) . ";" . /*Anf*/ ";" . formSumEmpty($working_hours_price_sams) . ";" : ";;;;;") .
($SA_Bezeichnung_code == "118" ? ($working_hours_sams != "" ? "1" : "") . ";" . /*MA*/ ";" . formSumEmpty($working_hours_sams) . ";" . /*Anf*/ ";" . formSumEmpty($working_hours_price_sams) . ";" : ";;;;;") .
($SA_Bezeichnung_code == "114" ? ($working_hours_sams != "" ? "1" : "") . ";" . /*MA*/ ";" . formSumEmpty($working_hours_sams) . ";" . /*Anf*/ ";" . formSumEmpty($working_hours_price_sams) . ";" : ";;;;;") .
($SA_Bezeichnung_code == "119" ? ($working_hours_sams != "" ? "1" : "") . ";" . /*MA*/ ";" . formSumEmpty($working_hours_sams) . ";" . /*Anf*/ ";" . formSumEmpty($working_hours_price_sams) . ";" : ";;;;;") .
($SA_Bezeichnung_code == "122" ? ($working_hours_sams != "" ? "1" : "") . ";" . /*MA*/ ";" . formSumEmpty($working_hours_sams) . ";" . /*Anf*/ ";" . formSumEmpty($working_hours_price_sams) . ";" : ";;;;;") .
($SA_Bezeichnung_code == "107" ? ($working_hours_sams != "" ? "1" : "") . ";" . /*MA*/ ";" . formSumEmpty($working_hours_sams) . ";" . /*Anf*/ ";" . formSumEmpty($working_hours_price_sams) . ";" : ";;;;;") .
($funcparArr[FUNCPAR_ENTSELEK][0] != "" || $funcparArr[FUNCPAR_MATR][0] != "" || $funcparArr[FUNCPAR_POLST][0] != "" ? "1" : "") .
";" . formCntEmpty($funcparArr[FUNCPAR_ENTSELEK][0]) . ";" . formCntEmpty($funcparArr[FUNCPAR_MATR][0]) . ";" . formCntEmpty($funcparArr[FUNCPAR_POLST][0]) . ";" . formSumEmpty($funcparArr[FUNCPAR_ENTSELEK][1]) . ";" . formSumEmpty($funcparArr[FUNCPAR_MATR][1]) . ";" . formSumEmpty($funcparArr[FUNCPAR_POLST][1]) . ";" .
/*CCmL*/ ";" /*CCoL*/ . ";" /*SoCCmL*/ . ";" /*SoCCoL*/ . ";" . ($func_sofa != "" ? "1" : "") . ";" . formSumEmpty($func_sofa) . ";" .
($funcparArr[FUNCPAR_ENTSMOEB][0] != "" ? "1;E-ALTM;SA30000522;" . formSumEmpty($funcparArr[FUNCPAR_ENTSMOEB][1]) :
($funcparArr[FUNCPAR_QUALITY][0] != "" ? "1;BEG;SA60000511;" . formSumEmpty($funcparArr[FUNCPAR_QUALITY][1]) : ";;;")) . "\n";
/*nur Einzelabrechnung*/
// ";;;;" . $order_no . ";;" . formDate($row["ordertime"]) . ";" . $store_no[$csc_id_related_real] . " ;" . (!$is_service_job && $row["jbp_tan"] != "15" /* triftt nur auf nur 'verwaiste' Montagestunden zu */ && $row["jbp_tan"] != "20" ? grossSumEmpty($inkasso_price) : "") . ";" . formCntEmpty($funcparArr[FUNCPAR_MONT][0]) .
// ";;" . formSumEmpty($funcparArr[FUNCPAR_MONT][1]) . ";" . (!$is_service_job ? formSumEmpty($mont_gesamt) : "") . ";" . formCntEmpty($funcparArr[FUNCPAR_INSTTV][0]) . ";" .
// formCntEmpty($funcparArr[FUNCPAR_INSTLAUT][0]) . ";" . $uppleva_price . ";" . ($funcparArr[FUNCPAR_KUELFDMET][0] != "" ? "1" : "") . ";" . formSumEmpty($funcparArr[FUNCPAR_KUELFDMET][0]) . ";;" .
// formSumEmpty($funcparArr[FUNCPAR_KUELFDMET][1]) . ";" . formCntEmpty($funcparArr[FUNCPAR_WASSER][0]) . ";" . formSumEmpty($funcparArr[FUNCPAR_WASSER][1]) . ";" . formCntEmpty($funcparArr[FUNCPAR_KUEELEKTR][0]) .
// ";" . formSumEmpty($funcparArr[FUNCPAR_KUEELEKTR][1]) . ";" . formCntEmpty($funcparArr["Altküchendemontage"][0]) . ";;" . formSumEmpty($funcparArr["Altküchendemontage"][1]) . ";;;;;" .
// formSumEmpty($working_hours) . ";;" . formSumEmpty($working_hours_price) . ";;;;;;;;;;;;;" . formSumEmpty($working_hours_sams) . ";;" . formSumEmpty($working_hours_price_sams) . ";;" . formCntEmpty($funcparArr[FUNCPAR_ENTSELEK][0]) . ";" .
// formCntEmpty($funcparArr[FUNCPAR_MATR][0]) . ";" . formCntEmpty($funcparArr[FUNCPAR_POLST][0]) . ";" . formSumEmpty($funcparArr[FUNCPAR_ENTSELEK][1]) . ";" . formSumEmpty($funcparArr[FUNCPAR_MATR][1]) . ";" . formSumEmpty($funcparArr[FUNCPAR_POLST][1]) . ";;;;;;" . formSumEmpty($func_sofa) . ";" . formSumEmpty($funcparArr[FUNCPAR_ENTSMOEB][1]) . "\n";
$sum_total[$lcd_or_os][$happy_or_sad] +=
(!$is_service_job ? netSum($mont_gesamt) : 0) + $uppleva_price + netSum($funcparArr[FUNCPAR_KUELFDMET][1]) + netSum($funcparArr[FUNCPAR_WASSER][1]) + netSum($funcparArr[FUNCPAR_KUEELEKTR][1]) +
netSum($funcparArr["Altküchendemontage"][1]) + netSum($working_hours_price) + netSum($working_hours_price_sams) +
netSum($funcparArr[FUNCPAR_ENTSELEK][1]) + netSum($funcparArr[FUNCPAR_MATR][1]) + netSum($funcparArr[FUNCPAR_POLST][1]) + netSum($func_sofa) + netSum($funcparArr[FUNCPAR_ENTSMOEB][1]) + netSum($funcparArr[FUNCPAR_SPLITTER][1]) + netSum($funcparArr[FUNCPAR_QUALITY][1]);
// Kassierte Beträge in Inkasso-Liste aufnehmen (nicht wenn SAMS)
if (!$is_service_job) {
if (trim($row["cr_sid"]) == "") {
$row["cr_sid"] = "WAST666";
}
foreach (array($row["jb_id"] => $row["jbp_price"], $jb_id_addmont => $working_hours_inkasso) as $ink_jb_id => $totalprice) {
$tmp_jbp_tan = $row["jbp_tan"];
// $tmp_jbp_tan = $row["jbp_mode"];
if ($ink_jb_id == $jb_id_addmont) {
$tmp_jbp_tan = $jbp_tan_addmont;
$inkasso_diff = "";
}
$jbp_mode_str = "";
if ($tmp_jbp_tan == "0")
$jbp_mode_str = "bar";
if ($tmp_jbp_tan == "1")
$jbp_mode_str = "EC";
if ($tmp_jbp_tan == "10")
$jbp_mode_str = "Family";
// bei $tmp_jbp_tan == "20" passiert nix /* "Inkasso IKEA" */
//myWriteLog("\$ink_jb_id = $ink_jb_id, \$tmp_jbp_tan = $tmp_jbp_tan, \$jbp_mode_str = $jbp_mode_str");
if ($ink_jb_id != "" && $jbp_mode_str != "" /* wg. "Inkasso IKEA" */) {
if ($inkasso_diff != "") {
$sumdiff_inkasso += $inkasso_diff;
myWriteLog("\$sumdiff_inkasso = $sumdiff_inkasso");
}
$csv_text["Inkasso"] .=
$ink_jb_id . ";" . formDate($row["createtime"]) . ";" . formDate($row["ordertime"]) . ";" . str_replace(";", "", $row["tr_comp"]) . ";" . $jbp_mode_str . ";" . str_replace(",", ".", grossSum($totalprice)) . ";" .
$db->getOne("SELECT cr1.cr_eid FROM courier AS cr1, courier As cr2 WHERE cr1.cr_id = cr2.cr_id_parent AND cr2.cr_sid = '" . $row["cr_sid"] . "'") . ";" . substr($row["cr_sid"], -3) . ";;" . $inkasso_diff . "\n";
$csv_text["InkassoSpezial"] .=
$ink_jb_id . ";" . formDate($row["createtime"]) . ";" . formDate($row["ordertime"]) . ";" . str_replace(";", "", $row["tr_comp"]) . ";" . $jbp_mode_str . ";" . str_replace(",", ".", grossSum($totalprice)) . ";" .
$db->getOne("SELECT cr1.cr_eid FROM courier AS cr1, courier As cr2 WHERE cr1.cr_id = cr2.cr_id_parent AND cr2.cr_sid = '" . $row["cr_sid"] . "'") . ";" . substr($row["cr_sid"], -3) . ";;" . $order_no . "\n";
$sum_inkasso += round($totalprice * (1 + VAT), 2);
if ($row["jb_cr_price"] == 0 && !$test) {
$sql_query =
"UPDATE job SET jb_cr_price = 0.01 WHERE jb_id = " . $ink_jb_id;
mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
myWriteLog($ink_jb_id . ": Fuhrlohn auf 0.01 EUR gesetzt");
}
}
if ($inkasso_diff != "" && !$test) {
$sql_query = "INSERT INTO genericdatacontainer (gdc_obj_type, gdc_obj_id, gdc_gen_fieldname, gdc_content, gdc_context)" .
" VALUES ('order_no', " . $order_no . ", 'price_ht', '" . round($totalprice + ($inkasso_diff / 1.19), 2) . "', '" . $ink_jb_id . "|" . round($totalprice, 4) . "|" . round($inkasso_diff / 1.19, 4) . "')";
mysql_query($sql_query) or die ($sql_query . ": " . mysql_error());
myWriteLog($sql_query);
}
}
} elseif ($row["jbp_tan"] == "20") { // Rechnung an IKEA
myWriteLog($row["jb_id"] . ": Kein Inkasso erforderlich");
}
// Küchen-Subventions- (Süd) bzw. Rückvergütungsliste (Nord)
if (($funcparArr[FUNCPAR_KUELFDMET][0] < 4.30 || $hq_id == 1020 || $test) && trim($funcparArr[FUNCPAR_KUELFDMET][0]) != "") {
$csv_text["Subvention"] .=
$order_no . ";" . $row["jb_id"] . ";" . formDate($row["createtime"]) . ";" . formDate($row["ordertime"]) . ";" . $row["tr_comp"] . ";" . formSum($funcparArr[FUNCPAR_KUELFDMET][0]) . ";" .
($hq_id == 1111 ? "24,00" : formSum(netSum($funcparArr[FUNCPAR_KUELFDMET][1]) * 0.1) . ";" . formSum($funcparArr[FUNCPAR_KUELFDMET][0] * 20 / 1.19)) . "\n";
// im Falle von Hamburg kommt eine Spalte hinzu; hier wird die Differenz zwischen Preis pro lfd. Meter und dem entsprechenden Fuhrlohn ausgewiesen, aktuell brutto 20,00 € (199,00 € - 179,00 €) pro lfd. Meter
$sum_subv += ($hq_id == 1111 ? 24 : netSum($funcparArr[FUNCPAR_KUELFDMET][1]) * 0.1);
$sumdiff_subv += ($hq_id == 1111 ? 0 : netSum($funcparArr[FUNCPAR_KUELFDMET][0]) * 20 / 1.19);
}
}
/*------------------------------------------------------------------------------------------------------------------------------------------------*/
// OS- und LCD-Aufträge
$cnt[$lcd_or_os][$happy_or_sad]++;
$jb_ids[$lcd_or_os][$happy_or_sad] .= "," . $row["jb_id"];
if ($jb_id_addmont != "") {
$jb_ids[$lcd_or_os][$happy_or_sad] .= "," . $jb_id_addmont;
}
}
endwhile;
mysql_free_result($res);
if ($jb_id_prev != 0 && !($Austausch == "1" && $Abholung == "1")) {
myWriteLog("ACHTUNG: Auftrag " . $jb_id_prev . " hat keinen nachfolgenden Austausch-Abholauftrag");
$csv_text["LCD"]["Sad"][$store_no[$csc_id_related_real]] .= $tmp_csv_txt;
$sum_total["LCD"]["Sad"] += netSum($jb_total_price_prev) + netSum($func_lagerk_rounded_prev);
$sum_trat_price_lief_prev = 0;
$jb_total_price_prev = 0;
$func_lagerk_rounded_prev = 0;
$jb_id_prev = 0;
$tmp_csv_txt_prev = "";
}
$csv_text["Inkasso"] .=
";;;;;;;;;\n" . "Summe;;;;;" . str_replace(",", ".", formSum($sum_inkasso)) . ";;;;" . formSumEmpty($sumdiff_inkasso) . "\n";
$csv_text["InkassoSpezial"] .=
";;;;;;;;;\n" . "Summe;;;;;" . str_replace(",", ".", formSum($sum_inkasso)) . ";;;;\n";
$csv_text["Subvention"] .=
";;;;;;". formSum($sum_subv) . ($hq_id == 1111 ? "" : ";" . formSum($sumdiff_subv)) . "\n";
$returnArr = array();
foreach ($lcd_or_osArr as $lcd_or_os) {
foreach ($happy_or_sadArr as $happy_or_sad) {
if ($cnt[$lcd_or_os][$happy_or_sad] > 0) {
$returnArr[$lcd_or_os . $happy_or_sad] = array(
$temp_csv_folder . $lcd_or_os . "_" . $happy_or_sad . "flow_" . substr($to___date_sql, 0, 10) . ".csv",
$csv_text[$lcd_or_os][$happy_or_sad], $jb_ids[$lcd_or_os][$happy_or_sad], $sum_total[$lcd_or_os][$happy_or_sad], $lcd_or_os, $happy_or_sad);
}
}
}
$returnArr["Inkasso"] = array($inkasso_file_name, $csv_text["Inkasso"]);
$returnArr["InkassoSpezial"] = array($inkassospezial_file_name, $csv_text["InkassoSpezial"]);
$returnArr["Subvention"] = array($subventions_file_name, $csv_text["Subvention"]);
return $returnArr;
}
function formDate($sqlDate)
{
if (trim($sqlDate) == "")
return "";
return substr($sqlDate, 8, 2) . "." . substr($sqlDate, 5, 2) . "." . substr($sqlDate, 0, 4);
}
function formSum($sum, $digits = 2)
{
return str_replace(".", ",", round($sum, $digits));
}
function formSumEmpty($sum, $digits = 2)
{
if (trim($sum) == "")
return "";
return formSum($sum, $digits);
}
function grossSum($sum)
{
return (formSum($sum * (1 + VAT), 2));
}
function netSum($sum, $digits = 2)
{
return round($sum, $digits);
}
function grossSumEmpty($sum)
{
if (trim($sum) == "")
return "";
return grossSum($sum);
}
function formCntEmpty($sum)
{
if (trim($sum) == "")
return "";
return floor($sum);
}
function myWriteLog($log_text, $file_name = "") {
global $log_file_name, $temp_csv_folder;
if ($file_name == ""):
$file_name = $log_file_name;
write_file($file_name, "[" . date("Y-m-d H:i:s") . "] " . $log_text . "\n");
else:
write_file($temp_csv_folder . $file_name, $log_text . "\n");
endif;
}
function write_file($file_name, $text_to_write, $write_mode = "a") {
$fileHandle = @fopen($file_name, $write_mode);
@fwrite($fileHandle, $text_to_write);
@fclose($fileHandle);
return;
}
function send_mail($subj, $mail_text, $from = "auto-mailer@assecutor.de", $to = "admin@assecutor.de", $bcc = "", $atta = "") {
include_once("../include/email/htmlMimeMail.php");
$mailObj = new htmlMimeMail();
$mailObj->setFrom($from);
if ($bcc != "")
$mailObj->setBcc($bcc);
$mailObj->setSubject($subj);
$mailObj->setText($mail_text);
if ($atta != ""):
$attachment = $mailObj->getFile($atta);
$filenameArr = explode("/", $atta);
$mailObj->addAttachment($attachment, $filenameArr[count($filenameArr)-1]);
endif;
$mailResult = $mailObj->send(array($to), 'smtp');
return $mailResult;
}
if ($no_web) {
exit();
}
?>
Übersicht der Rechnungen