Browse Source

應收帳款(汰改)收款時間計算完畢

gary
Ellin 1 year ago
parent
commit
d716a2c3c7
  1. 141
      wms/account-receivable-renovate-index.php

141
wms/account-receivable-renovate-index.php

@ -124,8 +124,7 @@ SELECT DISTINCT
FROM department
) AS d
ON d.department_id = tmp2.department_id
WHERE contractno IN $str_numbers ";
ON d.department_id = tmp2.department_id";
//T8 銷售訂單 階段收款計畫
$sql_contract = "SELECT a.BillNo,s.BillDate, a.RowNo, a.PayStage, a.PlanPayAmt, a.PlanPayDate,s.BizPartnerId,c.BizPartnerName, s.PersonId,
@ -179,7 +178,7 @@ foreach ($contract as $cont) {
$arrayData[$BillNo]['PayStage'][$RowNo]['PlanPayDate'] = $PlanPayDate;
$arrayData[$BillNo]['PayStage'][$RowNo]['PayAmount'] = $PayAmount;
// 判斷type
$wipStage = ['簽約', '訂金', '貨抵工地', '完工', '試車', '安裝', '驗收', '完工', '交車', '尾款'];
$wipStage = ['簽約', '訂金', '貨抵工地', '完工', '試車', '安裝', '驗收', '完工', '交車', '尾款', '合約'];
foreach ($wipStage as $wipstage) {
if (strpos($PayStage, $wipstage) !== false) {
$arrayData[$BillNo]['PayStage'][$RowNo]['type'] = "A";
@ -235,25 +234,24 @@ foreach ($contract_budget_data as $cont) {
$contract_budget[$cont['BillNo']]['facility'][$cont['CU_MaterialId']]['A40010'] = 0;
$contract_budget[$cont['BillNo']]['facility'][$cont['CU_MaterialId']][$cont['MaterialId']] = $cont['OAmountWithTax'];
};
}
/*計算作番佔合約的金額比例
@param $facility_no string => 作番號
@param $contract_budget_billno array => $contract_budget[合約號]
return float */
function get_contract_ratio($facility_no,$contract_budget_billno){
function get_contract_ratio($facility_no, $contract_budget_billno)
{
$ratio = 0;
if (isset($contract_budget_billno['facility'][$facility_no])) {
if (empty($contract_budget_billno['total'])) {
return 0;
} else {
$ratio += $contract_budget_billno['facility'][$facility_no]['total'] / $contract_budget_billno['total'];
return $ratio;
}
}
return $ratio;
}
/* 計算比例
@param $facility_list array
@ -304,22 +302,127 @@ foreach ($wipwhole_array as $wip) {
}
$wipwhole_status[$wip['facilityno']] = $wip;
}
//~!~~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~~!~!~!~!~!~!~!~!~~!!~!~!~!~!~!~!~!~!~!~!~!~!~!!~!~!!~!~!~!~!!~!~!~!!~!~!~!~!~!!~!~!~!~!!~!~!~!~!~!~!!~
// 整理arrayData[合約]['PayStage']進 (新增) arrayData[合約]['facility'][作番號][PayStage]
$sign_array = ['訂金', '簽約', '合約'];
foreach ($arrayData as &$value) {
if (is_iterable($value['facility'])) {
print_r($value['facility']);
echo "<br>------<br>";
echo $value[10]." , ".$value['total_facility_num']."<br>";
foreach ($value['facility'] as $fakey => $facility) {
$ratio = get_contract_ratio($fakey, $contract_budget[$value[10]]);
for ($stage = 1; $stage < (count($value['PayStage']) + 1); $stage++) {
$facility['PayStage'][$stage] = $value['PayStage'][$stage];
//算每個作番的金額
$facility['PayStage'][$stage]['PayAmount'] = $value['PayStage'][$stage]['PayAmount'] * $ratio;
//算每個作番每個收款階段的收款時間
switch ($facility['PayStage'][$stage]['type']) {
case "A":
switch ($facility['PayStage'][$stage]['name']) {
case (stristr($facility['PayStage'][$stage]['name'], '試車')):
if (isset($wipwhole_status[$fakey]['tryrun_end_date']) && $wipwhole_status[$fakey]['tryrun_end_date'] !== NULL && !empty($wipwhole_status[$fakey]['tryrun_end_date'])) {
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime($wipwhole_status[$fakey]['tryrun_end_date']));
}
break;
case (stristr($facility['PayStage'][$stage]['name'], '完工')):
if (isset($wipwhole_status[$fakey]['delivery_date']) && $wipwhole_status[$fakey]['delivery_date'] !== NULL && !empty($wipwhole_status[$fakey]['delivery_date'])) {
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime($wipwhole_status[$fakey]['delivery_date']));
}
break;
case (stristr($facility['PayStage'][$stage]['name'], '尾款')):
if (isset($wipwhole_status[$fakey]['delivery_date']) && $wipwhole_status[$fakey]['delivery_date'] !== NULL && !empty($wipwhole_status[$fakey]['delivery_date'])) {
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime($wipwhole_status[$fakey]['delivery_date']));
}
break;
case (stristr($facility['PayStage'][$stage]['name'], '交車')):
if (isset($wipwhole_status[$fakey]['delivery_date']) && $wipwhole_status[$fakey]['delivery_date'] !== NULL && !empty($wipwhole_status[$fakey]['delivery_date'])) {
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime($wipwhole_status[$fakey]['delivery_date']));
}
break;
case (stristr($facility['PayStage'][$stage]['name'], '驗收')):
if (isset($wipwhole_status[$fakey]['delivery_date']) && $wipwhole_status[$fakey]['delivery_date'] !== NULL && !empty($wipwhole_status[$fakey]['delivery_date'])) {
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime($wipwhole_status[$fakey]['delivery_date']));
}
break;
case (stristr($facility['PayStage'][$stage]['name'], '安裝')):
if (isset($wipwhole_status[$fakey]['install_end_date']) && $wipwhole_status[$fakey]['install_end_date'] !== NULL && !empty($wipwhole_status[$fakey]['install_end_date'])) {
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime($wipwhole_status[$fakey]['install_end_date']));
}
break;
case (stristr($facility['PayStage'][$stage]['name'], '貨抵工地')):
if (isset($wipwhole_status[$fakey]['real_arrival_date']) && $wipwhole_status[$fakey]['real_arrival_date'] !== NULL && !empty($wipwhole_status[$fakey]['real_arrival_date'])) {
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime($wipwhole_status[$fakey]['real_arrival_date']));
} elseif (isset($wipwhole_status[$fakey]['real_contract_arrival_date']) && $wipwhole_status[$fakey]['real_contract_arrival_date'] !== NULL && !empty($wipwhole_status[$fakey]['real_contract_arrival_date'])) {
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime($wipwhole_status[$fakey]['real_contract_arrival_date']));
}
break;
default:
break;
};
case "B":
break;
case "C":
switch ($facility['PayStage'][$stage]['name']) {
case (stristr($facility['PayStage'][$stage]['name'], '試車')):
if (isset($wipwhole_status[$fakey]['tryrun_end_date']) && $wipwhole_status[$fakey]['tryrun_end_date'] !== NULL && !empty($wipwhole_status[$fakey]['tryrun_end_date'])) {
$haveNumber = (int) filter_var(str_replace('-', '', $facility['PayStage'][$stage]['name']), FILTER_SANITIZE_NUMBER_INT);
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months",strtotime($wipwhole_status[$fakey]['tryrun_end_date'])) );
}
break;
case (stristr($facility['PayStage'][$stage]['name'], '完工')):
if (isset($wipwhole_status[$fakey]['delivery_date']) && $wipwhole_status[$fakey]['delivery_date'] !== NULL && !empty($wipwhole_status[$fakey]['delivery_date'])) {
$haveNumber = (int) filter_var(str_replace('-', '', $facility['PayStage'][$stage]['name']), FILTER_SANITIZE_NUMBER_INT);
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months",strtotime($wipwhole_status[$fakey]['delivery_date'])) );
}
break;
case (stristr($facility['PayStage'][$stage]['name'], '尾款')):
if (isset($wipwhole_status[$fakey]['delivery_date']) && $wipwhole_status[$fakey]['delivery_date'] !== NULL && !empty($wipwhole_status[$fakey]['delivery_date'])) {
$haveNumber = (int) filter_var(str_replace('-', '', $facility['PayStage'][$stage]['name']), FILTER_SANITIZE_NUMBER_INT);
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months",strtotime($wipwhole_status[$fakey]['delivery_date'])) );
}
break;
case (stristr($facility['PayStage'][$stage]['name'], '交車')):
if (isset($wipwhole_status[$fakey]['delivery_date']) && $wipwhole_status[$fakey]['delivery_date'] !== NULL && !empty($wipwhole_status[$fakey]['delivery_date'])) {
$haveNumber = (int) filter_var(str_replace('-', '', $facility['PayStage'][$stage]['name']), FILTER_SANITIZE_NUMBER_INT);
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months",strtotime($wipwhole_status[$fakey]['delivery_date'])) );
}
break;
case (stristr($facility['PayStage'][$stage]['name'], '驗收')):
if (isset($wipwhole_status[$fakey]['delivery_date']) && $wipwhole_status[$fakey]['delivery_date'] !== NULL && !empty($wipwhole_status[$fakey]['delivery_date'])) {
$haveNumber = (int) filter_var(str_replace('-', '', $facility['PayStage'][$stage]['name']), FILTER_SANITIZE_NUMBER_INT);
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months",strtotime($wipwhole_status[$fakey]['delivery_date'])) );
}
break;
case (stristr($facility['PayStage'][$stage]['name'], '安裝')):
if (isset($wipwhole_status[$fakey]['install_end_date']) && $wipwhole_status[$fakey]['install_end_date'] !== NULL && !empty($wipwhole_status[$fakey]['install_end_date'])) {
$haveNumber = (int) filter_var(str_replace('-', '', $facility['PayStage'][$stage]['name']), FILTER_SANITIZE_NUMBER_INT);
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months",strtotime($wipwhole_status[$fakey]['install_end_date'])) );
}
break;
case (stristr($facility['PayStage'][$stage]['name'], '貨抵工地')):
if (isset($wipwhole_status[$fakey]['real_arrival_date']) && $wipwhole_status[$fakey]['real_arrival_date'] !== NULL && !empty($wipwhole_status[$fakey]['real_arrival_date'])) {
$haveNumber = (int) filter_var(str_replace('-', '', $facility['PayStage'][$stage]['name']), FILTER_SANITIZE_NUMBER_INT);
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months",strtotime($wipwhole_status[$fakey]['real_arrival_date'])) );
} elseif (isset($wipwhole_status[$fakey]['real_contract_arrival_date']) && $wipwhole_status[$fakey]['real_contract_arrival_date'] !== NULL && !empty($wipwhole_status[$fakey]['real_contract_arrival_date'])) {
$haveNumber = (int) filter_var(str_replace('-', '', $facility['PayStage'][$stage]['name']), FILTER_SANITIZE_NUMBER_INT);
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months",strtotime($wipwhole_status[$fakey]['real_contract_arrival_date'])) );
}
break;
default:
break;
};
default:
break;
}
for($stage=1; $stage< (count($value['PayStage'])+1); $stage++){
// echo $value[10]." /";
// print_r($value['PayStage'][$stage]);
// echo "<br>";
}
echo "<br>";
}
}
}
foreach($arrayData as $key => $value){
echo $key."<br>";
print_r($value);
echo "<br>--------------------------<br>";
}
exit();
//=========================================================================================================================================================

Loading…
Cancel
Save