|
|
@ -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(); |
|
|
|
//========================================================================================================================================================= |
|
|
|