|
@ -253,24 +253,13 @@ function get_contract_ratio($facility_no, $contract_budget_billno) |
|
|
return $ratio; |
|
|
return $ratio; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/* 計算比例 |
|
|
/* 比較應收日期 |
|
|
@param $facility_list array |
|
|
@param $a array |
|
|
@param $contract_no string |
|
|
@param $b array |
|
|
@param $contract_budget array |
|
|
return int */ |
|
|
return float */ |
|
|
function comparePlanPayDate($a, $b) |
|
|
function get_ratio($facility_list, $contract_no, $contract_budget) |
|
|
|
|
|
{ |
|
|
{ |
|
|
$ratio = 0; |
|
|
return strtotime($a['PlanPayDate']) - strtotime($b['PlanPayDate']); |
|
|
if (empty($facility_list)) { |
|
|
|
|
|
return 0; |
|
|
|
|
|
} else { |
|
|
|
|
|
foreach ($facility_list as $every) { |
|
|
|
|
|
if (isset($contract_budget[$contract_no][$every]['total']) && isset($contract_budget[$contract_no]['total'])) { |
|
|
|
|
|
$ratio += $contract_budget[$contract_no][$every]['total'] / $contract_budget[$contract_no]['total']; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return $ratio; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//取作番大日程作番與時程 進arrayData |
|
|
//取作番大日程作番與時程 進arrayData |
|
@ -305,13 +294,15 @@ foreach ($wipwhole_array as $wip) { |
|
|
|
|
|
|
|
|
// 整理arrayData[合約]['PayStage']進 (新增) arrayData[合約]['facility'][作番號][PayStage] |
|
|
// 整理arrayData[合約]['PayStage']進 (新增) arrayData[合約]['facility'][作番號][PayStage] |
|
|
$sign_array = ['訂金', '簽約', '合約']; |
|
|
$sign_array = ['訂金', '簽約', '合約']; |
|
|
|
|
|
// 將所有facility的paystage放入一個array以便計算順序 |
|
|
|
|
|
$allPayStages = []; |
|
|
foreach ($arrayData as &$value) { |
|
|
foreach ($arrayData as &$value) { |
|
|
if (is_iterable($value['facility'])) { |
|
|
if (is_iterable($value['facility'])) { |
|
|
foreach ($value['facility'] as $fakey => $facility) { |
|
|
foreach ($value['facility'] as $fakey => &$facility) { |
|
|
$ratio = get_contract_ratio($fakey, $contract_budget[$value[10]]); |
|
|
$ratio = get_contract_ratio($fakey, $contract_budget[$value[10]]); |
|
|
for ($stage = 1; $stage < (count($value['PayStage']) + 1); $stage++) { |
|
|
for ($stage = 1; $stage < (count($value['PayStage']) + 1); $stage++) { |
|
|
$facility['PayStage'][$stage] = $value['PayStage'][$stage]; |
|
|
$facility['PayStage'][$stage] = $value['PayStage'][$stage]; |
|
|
|
|
|
$facility['PayStage'][$stage]['facilityno'] = $fakey; |
|
|
//算每個作番的金額 |
|
|
//算每個作番的金額 |
|
|
$facility['PayStage'][$stage]['PayAmount'] = $value['PayStage'][$stage]['PayAmount'] * $ratio; |
|
|
$facility['PayStage'][$stage]['PayAmount'] = $value['PayStage'][$stage]['PayAmount'] * $ratio; |
|
|
//算每個作番每個收款階段的收款時間 |
|
|
//算每個作番每個收款階段的收款時間 |
|
@ -367,46 +358,46 @@ foreach ($arrayData as &$value) { |
|
|
case (stristr($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'])) { |
|
|
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); |
|
|
$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'])) ); |
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months", strtotime($wipwhole_status[$fakey]['tryrun_end_date']))); |
|
|
} |
|
|
} |
|
|
break; |
|
|
break; |
|
|
case (stristr($facility['PayStage'][$stage]['name'], '完工')): |
|
|
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'])) { |
|
|
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); |
|
|
$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'])) ); |
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months", strtotime($wipwhole_status[$fakey]['delivery_date']))); |
|
|
} |
|
|
} |
|
|
break; |
|
|
break; |
|
|
case (stristr($facility['PayStage'][$stage]['name'], '尾款')): |
|
|
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'])) { |
|
|
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); |
|
|
$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'])) ); |
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months", strtotime($wipwhole_status[$fakey]['delivery_date']))); |
|
|
} |
|
|
} |
|
|
break; |
|
|
break; |
|
|
case (stristr($facility['PayStage'][$stage]['name'], '交車')): |
|
|
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'])) { |
|
|
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); |
|
|
$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'])) ); |
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months", strtotime($wipwhole_status[$fakey]['delivery_date']))); |
|
|
} |
|
|
} |
|
|
break; |
|
|
break; |
|
|
case (stristr($facility['PayStage'][$stage]['name'], '驗收')): |
|
|
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'])) { |
|
|
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); |
|
|
$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'])) ); |
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months", strtotime($wipwhole_status[$fakey]['delivery_date']))); |
|
|
} |
|
|
} |
|
|
break; |
|
|
break; |
|
|
case (stristr($facility['PayStage'][$stage]['name'], '安裝')): |
|
|
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'])) { |
|
|
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); |
|
|
$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'])) ); |
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months", strtotime($wipwhole_status[$fakey]['install_end_date']))); |
|
|
} |
|
|
} |
|
|
break; |
|
|
break; |
|
|
case (stristr($facility['PayStage'][$stage]['name'], '貨抵工地')): |
|
|
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'])) { |
|
|
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); |
|
|
$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'])) ); |
|
|
$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'])) { |
|
|
} 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); |
|
|
$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'])) ); |
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months", strtotime($wipwhole_status[$fakey]['real_contract_arrival_date']))); |
|
|
} |
|
|
} |
|
|
break; |
|
|
break; |
|
|
default: |
|
|
default: |
|
@ -416,13 +407,44 @@ foreach ($arrayData as &$value) { |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
if (isset($allPayStages[$value[10]])) { |
|
|
|
|
|
$allPayStages[$value[10]] = array_merge($allPayStages[$value[10]], $facility['PayStage']); |
|
|
|
|
|
} else { |
|
|
|
|
|
$allPayStages[$value[10]] = $facility['PayStage']; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
foreach($arrayData as $key => $value){ |
|
|
foreach ($allPayStages as $paykey => $pay) { |
|
|
echo $key."<br>"; |
|
|
uasort($allPayStages[$paykey], 'comparePlanPayDate'); |
|
|
print_r($value); |
|
|
} |
|
|
echo "<br>--------------------------<br>"; |
|
|
|
|
|
|
|
|
foreach ($allPayStages as &$payStage) { |
|
|
|
|
|
$sequenceNumber = 1; |
|
|
|
|
|
foreach($payStage as $tk=> &$pstage){ |
|
|
|
|
|
$pstage['sequenceNumber'] = $sequenceNumber; |
|
|
|
|
|
$sequenceNumber+=1; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
// foreach($allPayStages as $key => $payStage) { |
|
|
|
|
|
// echo $key."<br>"; |
|
|
|
|
|
// foreach($payStage as $key2 => $pstage){ |
|
|
|
|
|
// echo $key2."=>"; |
|
|
|
|
|
// print_r($pstage); |
|
|
|
|
|
// echo "<br>"; |
|
|
|
|
|
// } |
|
|
|
|
|
// echo "<br>-------------<br>"; |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
foreach ($arrayData as &$value) { |
|
|
|
|
|
if (is_iterable($value['facility'])) { |
|
|
|
|
|
foreach ($value['facility'] as $fakey => &$facility) { |
|
|
|
|
|
foreach ($facility['PayStage'] as $index => &$payStage) { |
|
|
|
|
|
$payStage['sequenceNumber'] = $allPayStages[$value[10]][$index]['sequenceNumber']; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
echo "---------------------<br>"; |
|
|
} |
|
|
} |
|
|
exit(); |
|
|
exit(); |
|
|
//========================================================================================================================================================= |
|
|
//========================================================================================================================================================= |
|
|