getOne("SELECT " . $sqlField . " FROM jobbatch WHERE cs_id = '" . $g_cs_id . "' AND jbb_sort = '" . $f_jbb_sort . "'");
endif;
return $retVal;
}
$f_jbb_id = getJbbData("jbb_id");
// echo "g_cs_id: " . $g_cs_id . "
g_cs_eid: " . $g_cs_eid . "
f_jbb_id: " . $f_jbb_id . "
f_jbb_sort: " . $f_jbb_sort . "
";
// Check for absolute customer discount (ATTENTION: Parameter means DISABLED !!!) and check for markup
$csDiscountAbsolute = "0";
$csMarkupFlag = "0";
if ($g_cs_id != "") :
// Discount
$csDiscountAbsolute = getFieldValueFromId("customer", "cs_id", $g_cs_id, "cs_discount");
$useDicountDisabled = getParameterValue("0", "JB_EDITBATCH_DISCOUNT_DISABLED");
if ($useDicountDisabled == "1") :
$csDiscountAbsolute = "0";
endif;
// Markup
$csMarkupFlag = getFieldValueFromId("customer", "cs_id", $g_cs_id, "cs_markup");
endif;
// Store new jobs
if ($f_act == "storeJobs") :
if ($g_cs_id != "") :
// Get data for storing the job
$currentTime = getDateTime("0");
$usrId = getFieldValueFromId("employee", "emp_id", $emp_id, "usr_id");
/* Moved upside
$csDiscountAbsolute = getFieldValueFromId("customer", "cs_id", $g_cs_id, "cs_discount");
$useDicountDisabled = getParameterValue("0", "JB_EDITBATCH_DISCOUNT_DISABLED");
if ($useDicountDisabled == "1") :
$csDiscountAbsolute = 0;
endif;
*/
// Check for customer provision, amount to be stored in "jb_cr_price"
$csProv = 0;
$useCsProvEnabled = getParameterValue("0", "JB_EDITBATCH_CS_PROV_ENABLED", "0");
if ($useCsProvEnabled == "1") :
$csProv = getFieldValueFromId("customer", "cs_id", $g_cs_id, "cs_prov");
if ($csProv == "" || $csProv == 0) :
$csProv = getParameterValue("0", "MASK_CS_PROV_DEFAULT", $hq_id);
$csProv = str_replace (",", ".", $csProv);
if ($csProv == "") :
$csProv = 0;
endif;
endif;
endif;
// Default value of the type of job to be stored (e.g. "0" = "K" = "Kurier" / "2" = "G" = "Gütertaxi" / ...)
$constJbType = getParameterValue("0", "JB_EDITBATCH_JBTYPE");
if (!is_numeric($constJbType)) : $constJbType = "0"; endif;
$rowComplete = array();
$vhtId = array(); $crId = array(); $crSid = array(); $cscIdPayer = array(); $jbFinishtime = array(); $price = array(); $price2 = array();
$cmpId = array(); $cmpPostage = array(); $csInvmode = array(); $jbFreetext1 = array(); $txId = array(); $txValue = array();
$txSign = array(); $cmpAdId = array(); $cmpHsno = array(); $cmpComp = array(); $cmpComp2 = array(); $jbType = array();
$csDiscount = array(); $csMarkup = array(); $jbKM = array();
// [1.] Iterate all fields and check the row to be complete
for ($i = 1; $i <= $numOfEditRows; $i++) :
$rowComplete[$i] = FALSE;
$vhtId[$i] = getFieldValueFromId("couriervehicle", "crvh_sid", ${("f_field_" . $i . "_10")}, "vht_id");
$crId[$i] = getFieldValueFromId("couriervehicle", "crvh_sid", ${("f_field_" . $i . "_10")}, "cr_id");
$crSid[$i] = ${("f_field_" . $i . "_10")};
// Check for courier authenticated
if ($crSid[$i] != "" && $crId[$i] != "") :
$crCmpId = getFieldValueFromId("courier", "cr_id", $crId[$i], "cmp_id");
$crCmpAuthenticated = getFieldValueFromId("company", "cmp_id", $crCmpId, "cmp_authenticated");
if ($crCmpAuthenticated != "1") :
$statusMessage .= "INFO: Der Transporteur des eingetragenen Fahrzeugs " . $crSid[$i] . " ist GESPERRT! ";
endif;
endif;
// If paying costcenter does not exist then get the root costcenter
if ($g_csc_id == "") :
$cscIdPayer[$i] = getFieldValueFromId("customer", "cs_id", $g_cs_id, "csc_id");
else :
$cscIdPayer[$i] = $g_csc_id;
endif;
if (${("f_field_" . $i . "_4")} == "") : ${("f_field_" . $i . "_4")} = $currentYear; endif;
if (${("f_field_" . $i . "_5")} == "") : ${("f_field_" . $i . "_5")} = $timeToEditHourDefault; endif;
if (${("f_field_" . $i . "_6")} == "") : ${("f_field_" . $i . "_6")} = $timeToEditMinuteDefault; endif;
$jbFinishtime[$i] = ${("f_field_" . $i . "_4")} . "-" . pad(${("f_field_" . $i . "_3")},2) . "-" . pad(${("f_field_" . $i . "_2")},2) . " " .
pad(${("f_field_" . $i . "_5")},2) . ":" . pad(${("f_field_" . $i . "_6")},2) . ":00";
$lfd[$i] = ${("f_field_" . $i . "_1")};
if (!is_numeric($lfd[$i])) : $lfd[$i] = ""; endif;
$price[$i] = str_replace (",", ".", ${("f_field_" . $i . "_9")});
$price2[$i] = str_replace (",", ".", ${("f_field_" . $i . "_13")});
$jbKM[$i] = str_replace (",", ".", ${("f_field_" . $i . "_14")});
$cmpId[$i] = getFieldValueFromId("customer", "cs_id", $g_cs_id, "cmp_id");
$cmpPostage[$i] = getFieldValueFromId("company", "cmp_id", $cmpId[$i], "cmp_postage");
$csInvmode[$i] = getFieldValueFromId("customer", "cs_id", $g_cs_id, "cs_invmode");
$trCommissionNo[$i] = my_str_check_js(${("f_field_" . $i . "_8")});
$jbInvoiceText[$i] = my_str_check_js(${("f_field_" . $i . "_7")});
$jbFreetext1[$i] = $jbInvoiceText[$i]; // . " " . $trCommissionNo[$i];
$txId[$i] = getFieldValueFromId("company", "cmp_id", $cmpId[$i], "tx_id");
$txValue[$i] = getFieldValueFromId("tax", "tx_id", $txId[$i], "tx_value");
$txSign[$i] = getFieldValueFromId("tax", "tx_id", $txId[$i], "tx_sign");
$cmpAdId[$i] = getFieldValueFromId("company", "cmp_id", $cmpId[$i], "ad_id");
$cmpHsno[$i] = getFieldValueFromId("company", "cmp_id", $cmpId[$i], "cmp_hsno");
$cmpComp[$i] = getFieldValueFromId("company", "cmp_id", $cmpId[$i], "cmp_comp");
$cmpComp2[$i] = getFieldValueFromId("company", "cmp_id", $cmpId[$i], "cmp_comp2");
$jbType[$i] = $constJbType;
$csDiscount[$i] = "0";
if ($csDiscountAbsolute != "0" && ${("f_field_" . $i . "_11")} == "1") :
$csDiscount[$i] = $csDiscountAbsolute;
endif;
$csMarkup[$i] = "0";
if ($csMarkupFlag == "1" && ${("f_field_" . $i . "_12")} == "1") :
$csMarkup[$i] = "1";
endif;
if ($vhtId[$i] != "" && $crId[$i] != "" && $crSid[$i] != "" && $cscIdPayer[$i] != "" && $jbFinishtime[$i] != "" &&
($price[$i] != "" || $price2[$i] != "") && is_numeric($price[$i]) && $cmpId[$i] != "" && $jbFreetext1[$i] != "" && $cmpAdId[$i] != "" &&
$cmpComp[$i] != "" && $csDiscount[$i] != "" && $csMarkup[$i] != "") : // && $jbKM[$i] != ""
$rowComplete[$i] = TRUE;
endif;
endfor;
// Transaction control starts here
TA("B");
// [2.] Generate a new list ($f_jbb_id == "") with current timestamp or use an old one
// and check if at least one job has to be stored
if ($f_jbb_sort == "") :
$atLeastOneJobOk = FALSE;
$atLeastOneJobNotOk = FALSE;
for ($i = 1; $i <= $numOfEditRows; $i++) :
if ($rowComplete[$i]) :
$atLeastOneJobOk = TRUE;
else :
$atLeastOneJobNotOk = TRUE;
endif;
endfor;
if ($atLeastOneJobOk) :
// Get maximum list number of the special customer from jbb_sort
$f_jbb_sort = getMaxOfField("jobbatch", "jbb_sort", "cs_id = '" . $g_cs_id . "'");
if (is_numeric($f_jbb_sort)) :
++$f_jbb_sort; // Increment because of the next free number
else :
$f_jbb_sort = "1";
endif;
insertStmt("jobbatch", array("cs_id", $g_cs_id, "jbb_sort", $f_jbb_sort, "jbb_createtime", $currentTime));
$f_jbb_id = getLastInsertId(); // IMPORTANT to use parameter $f_jbb_id because of loop and following search below... !!!
endif;
endif;
// [3.] Iterate all jobs and insert
for ($i = 1; $i <= $numOfEditRows; $i++) :
if ($rowComplete[$i]) :
// Check prices because one of them has to be set only (!!!)
if ($price[$i] == "") : $price[$i] = 0; endif;
if ($price2[$i] == "") : $price2[$i] = 0; endif;
if ($jbKM[$i] == "") : $jbKM[$i] = 0; endif;
// Fixprice without markup and without customer discount
$fixPrice = $price[$i];
// Service price
$servicePrice = $price2[$i];
// Compute markup
// $constMarkupMode = getParameterValue("0", "MASK_MARKUP_MODE", $hq_id);
$subTotalPrice = $price[$i]; // Price without markup
$tmpSrvt = $db->getOne("SELECT mt_value FROM metatype WHERE mt_sort = '$vhtId[$i]' AND mt_type= 'vehicletype'");
$final_markup = getFuelMarkup($tmpSrvt, $g_cs_id, $hq_id, $jbFinishtime[$i]);
if ($csMarkup[$i] == "0" && $final_markup > 0) :
$final_markup = "0";
endif;
// New price containing markup
if ($final_markup > 0) :
$price[$i] *= (1 + ($final_markup / 100));
endif;
// Price with markup but without customer discount
$trsPrice = $price[$i];
// Check for absolute customer discount
if ($csDiscountAbsolute > 0) :
$price[$i] = ($price[$i] * ((100 - $csDiscount[$i]) / 100));
$subTotalPrice = ($subTotalPrice * ((100 - $csDiscount[$i]) / 100));
endif;
// Total price and subtotal price containing the service price
$subTotalPrice = $subTotalPrice + $servicePrice;
$totalPrice = $price[$i] + $servicePrice;
// Courier price
$jbCrPrice = 0;
/*
if (is_numeric($csProv) && $csProv > 0) :
$jbCrPrice = ($price[$i] * ((100 - $csProv) / 100));
endif;
*/
$parCrPriceMode = getParameterValue("0", "MASK_CR_PRICE_MODE", $hq_id);
if ($parCrPriceMode == "1") :
// list($jbCrPrice, $jbCrPriceRate) = getCr_price_global($totalPrice, $hq_id, $g_cs_id, $jbFinishtime[$i], "", $vhtId[$i]);
list($jbCrPrice, $jbCrPriceRate) = getCr_price_global($subTotalPrice, $hq_id, $g_cs_id, $jbFinishtime[$i], "", $vhtId[$i]);
if ($jbCrPrice == "" || !is_numeric($jbCrPrice)) : $jbCrPrice = 0; endif;
$jbCrSubprice = $jbCrPrice;
$final_cr_markup = getFuelMarkupCr($tmpSrvt, $g_cs_id, $hq_id, $jbFinishtime[$i]);
if ($csMarkup[$i] == "0" && $final_cr_markup > 0) :
$final_cr_markup = "0";
endif;
if ($final_cr_markup > 0) :
$jbCrPrice *= (1 + ($final_cr_markup / 100));
endif;
list($tmp1, $tmp2) = getCr_price_global($servicePrice, $hq_id, $g_cs_id, $jbFinishtime[$i], "", $vhtId[$i]);
if ($tmp1 == "" || !is_numeric($tmp1)) : $tmp1 = 0; endif;
$jbCrPrice += $tmp1;
endif;
$jbHqIdExec = $hq_id;
if ($crId[$i] != "" && $crId[$i] > "0") :
$jbHqIdExec = getFieldValueFromId("courier", "cr_id", $crId[$i], "hq_id");
endif;
$jbHqIdSales = $hq_id;
if ($cscIdPayer[$i] != "" && $cscIdPayer[$i] > "0") :
$tmpCsId = getFieldValueFromId("costcenter", "csc_id", $cscIdPayer[$i], "cs_id");
if ($tmpCsId != "" && $tmpCsId > "0") :
$jbHqIdSales = getFieldValueFromId("customer", "cs_id", $tmpCsId, "hq_id");
endif;
endif;
insertStmt("job", array("hq_id", $hq_id, "hq_id_exec", $jbHqIdExec, "hq_id_dispo", $hq_id, "hq_id_sales", $jbHqIdSales, "vht_id", $vhtId[$i], "vht_id_real", $vhtId[$i], "csc_id_payer", $cscIdPayer[$i], "jb_payment", "0",
"jb_ordertime", $jbFinishtime[$i], "cr_id", $crId[$i], "cr_sid", $crSid[$i], "cr_id_order", $crId[$i],
"jb_taketime", $jbFinishtime[$i], "jb_status", "2", "jb_autoranking", "0", "jb_type", $jbType[$i],
"jb_finishtime", $jbFinishtime[$i], "emp_id", $usrId, "jb_fixprice", $fixPrice, "jb_serviceprice", $servicePrice, "jb_totalprice", $totalPrice, "jb_cr_price", $jbCrPrice,
"jb_subtotalprice", $subTotalPrice, "jb_markup", $final_markup, "jb_postage", $cmpPostage[$i], "jb_invmode", $csInvmode[$i], "jb_freetext_1", $jbFreetext1[$i],
"jb_sales_tax_rate", $txValue[$i], "jb_sales_tax_rate_sign", $txSign[$i], "jb_origin", "7", "jb_orderer", "Listenbuchung", "jb_createtime", $currentTime,
"jb_automailsent", "997", "jb_service ", "1", "jb_booktime", $currentTime));
$jbIdNew = getLastInsertId();
insertStmt("tour", array("jb_id", $jbIdNew, "ad_id", $cmpAdId[$i], "tr_sort", "1", "tr_comp", my_str_check($cmpComp[$i]), "tr_comp2", my_str_check($cmpComp2[$i]),
"tr_hsno", $cmpHsno[$i], "csc_id", $cscIdPayer[$i], "tr_status", "1", "tr_signname", "Listenbuchung",
"tr_finishtime", $jbFinishtime[$i], "tr_commission_no", $trCommissionNo[$i], "tr_cs_freetext", ""));
if ($trsPrice != 0) :
insertStmt("tourservice", array("jb_id", $jbIdNew, "csc_id", $cscIdPayer[$i], "tr_sort", "0",
"srv_id", "0", "trs_srv_name", "Fixpreis", "srvt_id", "0", "trs_srvt_name", "",
"trs_price", $trsPrice, "trs_discount", $csDiscount[$i]));
endif;
if ($servicePrice != 0) :
insertStmt("tourservice", array("jb_id", $jbIdNew, "csc_id", $cscIdPayer[$i], "tr_sort", "0",
"srv_id", "0", "trs_srv_name", "Servicepreis", "srvt_id", "0", "trs_srvt_name", "",
"trs_price", $servicePrice, "trs_discount", "0"));
endif;
insertStmt("jobprice", array("jb_id", $jbIdNew, "mt_sort", "1", "jbprc_price", $final_cr_markup));
insertStmt("jobprice", array("jb_id", $jbIdNew, "mt_sort", "3", "jbprc_price", $tmp1));
insertStmt("jobprice", array("jb_id", $jbIdNew, "mt_sort", "10", "jbprc_price", $jbCrSubprice));
insertStmt("jobprice", array("jb_id", $jbIdNew, "mt_sort", "11", "jbprc_price", $jbKM[$i], "jbprc_remark", "jbb"));
// Insert into GDC regarding "jb_origin = 6"
// insertStmt("genericdatacontainer", array("gdc_obj_type", "jb", "gdc_obj_id", $jbIdNew, "gdc_gen_fieldname", "jb_origin_other", "gdc_content", "Listenbuchung", "gdc_context", ""));
check_cr_agio($jbIdNew);
// Write logdata into log database
writeToLogDB("1",$hq_id,$jbIdNew,$usrId,$crId[$i],$crSid[$i],"","");
// Take lfd of the input field and get maximum of the lfd of the special list if necessary
$jbblLfdMaxval = $lfd[$i];
if ($jbblLfdMaxval == "" || existsEntry("jobbatchlist", array("jbb_id", $f_jbb_id, "jbbl_lfd", $jbblLfdMaxval))) :
$jbblLfdMaxval = getMaxOfField("jobbatchlist", "jbbl_lfd", "jbb_id = '" . $f_jbb_id . "'");
if (is_numeric($jbblLfdMaxval)) :
++$jbblLfdMaxval; // Increment because of the next free number
else :
$jbblLfdMaxval = "1";
endif;
endif;
insertStmt("jobbatchlist", array("jbb_id", $f_jbb_id, "jbbl_lfd", $jbblLfdMaxval, "jb_id", $jbIdNew));
// Generate invoice text
mk_jb_invtext($jbIdNew, false);
// Reset input fields of the row stored correctly
for ($j = 1; $j <= $numOfInputFieldsPerRows; $j++) :
if (!($presetDateFields == "checked" && ($j == "2" || $j == "3"))) :
${("f_field_" . $i . "_" . $j)} = '';
endif;
endfor;
endif;
endfor;
TA("C");
TA("E");
if (isset($sendMailFutureDate) && $sendMailFutureDate == "1") :
$mailTo = getParameterValue("0", "JB_EDITBATCH_MAIL_JOBDATE", $hq_id);
if ($mailTo == "") : $mailTo = getParameterValue("0", "JB_EDITBATCH_MAIL_JOBDATE", "0"); endif;
if ($mailTo != "") :
$csEid = getFieldValueFromId("customer","cs_id",$g_cs_id,"cs_eid");
$mailSubject = "LISTENERFASSUNG :: Mindestens ein Datum liegt in der Zukunft!";
$mailText = "Kunde: " . $csEid . " => Listennummer: " . $f_jbb_sort;
sendExternalMail($mailText, $mailSubject, $mailTo);
$sendMailFutureDate = "0";
endif;
endif;
$f_act = "loadSpecialListOfCustomer";
else :
$statusMessage = "Sie haben noch keinen Kunden ausgewählt!";
endif;
endif;
// Show all lists of the customer
$outStoredBatchListsOfCustomer = "";
if ($f_act == "getListsOfCustomer") :
if ($g_cs_id != "") :
// Only for output get length of the max jbb_sort value for pad()
$jbbSortPadlLength = strlen(getMaxOfField("jobbatch", "jbb_sort", "cs_id = '" . $g_cs_id . "'"));
if ($jbbSortPadlLength == "0") : $jbbSortPadlLength = "1"; endif;
// Get lists of the customer
$sqlquery = "SELECT jbb.jbb_id, jbb.cs_id, jbb.jbb_sort, jbb.jbb_createtime " .
" FROM jobbatch AS jbb" .
" WHERE jbb.cs_id = '" . $g_cs_id . "' " .
" ORDER BY jbb.jbb_createtime DESC";
$result = $db->query($sqlquery);
if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage());
while ($row = $result->fetch_assoc()):
$outStoredBatchListsOfCustomer .= "