diff --git a/wms/account-receivable-renovate-index.php b/wms/account-receivable-renovate-index.php index 90f18d98..b071e8fe 100644 --- a/wms/account-receivable-renovate-index.php +++ b/wms/account-receivable-renovate-index.php @@ -253,24 +253,13 @@ function get_contract_ratio($facility_no, $contract_budget_billno) return $ratio; } -/* 計算比例 -@param $facility_list array -@param $contract_no string -@param $contract_budget array -return float */ -function get_ratio($facility_list, $contract_no, $contract_budget) +/* 比較應收日期 +@param $a array +@param $b array +return int */ +function comparePlanPayDate($a, $b) { - $ratio = 0; - 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; - } + return strtotime($a['PlanPayDate']) - strtotime($b['PlanPayDate']); } //取作番大日程作番與時程 進arrayData @@ -305,13 +294,15 @@ foreach ($wipwhole_array as $wip) { // 整理arrayData[合約]['PayStage']進 (新增) arrayData[合約]['facility'][作番號][PayStage] $sign_array = ['訂金', '簽約', '合約']; - +// 將所有facility的paystage放入一個array以便計算順序 +$allPayStages = []; foreach ($arrayData as &$value) { 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]]); for ($stage = 1; $stage < (count($value['PayStage']) + 1); $stage++) { $facility['PayStage'][$stage] = $value['PayStage'][$stage]; + $facility['PayStage'][$stage]['facilityno'] = $fakey; //算每個作番的金額 $facility['PayStage'][$stage]['PayAmount'] = $value['PayStage'][$stage]['PayAmount'] * $ratio; //算每個作番每個收款階段的收款時間 @@ -367,46 +358,46 @@ foreach ($arrayData as &$value) { 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'])) ); + $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'])) ); + $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'])) ); + $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'])) ); + $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'])) ); + $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'])) ); + $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'])) ); + $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'])) ); + $facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months", strtotime($wipwhole_status[$fakey]['real_contract_arrival_date']))); } break; default: @@ -416,13 +407,44 @@ foreach ($arrayData as &$value) { 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){ - echo $key."
"; - print_r($value); - echo "
--------------------------
"; +foreach ($allPayStages as $paykey => $pay) { + uasort($allPayStages[$paykey], 'comparePlanPayDate'); +} + +foreach ($allPayStages as &$payStage) { + $sequenceNumber = 1; + foreach($payStage as $tk=> &$pstage){ + $pstage['sequenceNumber'] = $sequenceNumber; + $sequenceNumber+=1; + } +} +// foreach($allPayStages as $key => $payStage) { +// echo $key."
"; +// foreach($payStage as $key2 => $pstage){ +// echo $key2."=>"; +// print_r($pstage); +// echo "
"; +// } +// echo "
-------------
"; +// } + +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 "---------------------
"; } exit(); //=========================================================================================================================================================