Browse Source

應收帳款(汰改)計算收款順序

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

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

@ -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;
//算每個作番每個收款階段的收款時間 //算每個作番每個收款階段的收款時間
@ -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();
//========================================================================================================================================================= //=========================================================================================================================================================

Loading…
Cancel
Save