@ -27,27 +27,36 @@ $contractNumbers = array();
return int */
function comparePlanPayDate($a, $b)
{
return strtotime($a['PlanPayDate']) - strtotime($b['PlanPayDate']);
// return strtotime($a['PlanPayDate']) - strtotime($b['PlanPayDate']);
$aDate = strtotime($a['PlanPayDate']);
$bDate = strtotime($b['PlanPayDate']);
if ($aDate === false & & $bDate === false) {
return 0; // 兩個日期都無效,視為相等
} elseif ($aDate === false) {
return 1; // $aDate 無效,認為 $aDate 較大
} elseif ($bDate === false) {
return -1; // $bDate 無效,認為 $bDate 較大
}
return $aDate - $bDate;
}
/* 計算比例
@param $facility_list array
@param $contract_no string
@param $contract_budget array
@param $facilityno string
@param $contractno string
@param $arrayData array
return float */
function get_ratio($facility_list, $contract_no, $contract_budget)
function get_ratio($facilityno, $contractno, $arrayData )
{
$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'];
}
if (isset($arrayData[$contractno])) {
$this_total = $arrayData[$contractno]['total_budget'];
if (isset($arrayData[$contractno]['facility'][$facilityno]['total_budget'])) {
$this_facility = $arrayData[$contractno]['facility'][$facilityno]['total_budget'];
$ratio = $this_facility / $this_total;
}
return $ratio;
}
return $ratio;
}
// 查WMS 員工與對應主管
@ -129,6 +138,7 @@ if (is_iterable($query_all_contract)) {
$arrayData[$contract_numbers['BillNo']]['collect_budget'] = 0;
$arrayData[$contract_numbers['BillNo']]['A40001'] = 0;
$arrayData[$contract_numbers['BillNo']]['A40008'] = 0;
$arrayData[$contract_numbers['BillNo']]['facility_status'] = "";
$arrayData[$contract_numbers['BillNo']]['facility'] = array();
$arrayData[$contract_numbers['BillNo']]['total_budget'] = $contract_numbers['OAmountWithTax'];
$sum_total_budget += $contract_numbers['OAmountWithTax'];
@ -155,6 +165,7 @@ foreach ($query_contract_budget as $contract_budget) {
} else {
$arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']]['total_budget'] = $contract_budget['OAmountWithTax'];
$arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']][$contract_budget['MaterialId']] = $contract_budget['OAmountWithTax'];
$arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']]['status'] = "";
}
}
}
@ -184,9 +195,10 @@ foreach ($query_PayStage as $PayStage) {
$arrayData[$PayStage['BillNo']]['PayStage'][$PayStage['RowNo']]['PlanPayAmt'] = $PayStage['PlanPayAmt'];
$arrayData[$PayStage['BillNo']]['PayStage'][$PayStage['RowNo']]['PlanPayDate'] = $PayStage['PlanPayDate'];
if (isset($arrayData[$PayStage['BillNo']]['facility']) & & is_iterable($arrayData[$PayStage['BillNo']]['facility'])) {
foreach ($arrayData[$PayStage['BillNo']]['facility'] as $key => $value) {
foreach ($arrayData[$PayStage['BillNo']]['facility'] as $key => & $value) {
$tmpkey = $key . $PayStage['RowNo'];
$arrayData[$PayStage['BillNo']]['facility'][$key]['PayStage'][$tmpkey] = $arrayData[$PayStage['BillNo']]['PayStage'][$PayStage['RowNo']];
$arrayData[$PayStage['BillNo']]['facility'][$key]['PayStage'][$tmpkey]['PlanPayAmt'] = $arrayData[$PayStage['BillNo']]['facility'][$key]['PayStage'][$tmpkey]['PlanPayAmt'] * get_ratio($key, $PayStage['BillNo'], $arrayData);
$arrayData[$PayStage['BillNo']]['facility'][$key]['PayStage'][$tmpkey]['facilityno'] = $key;
if (isset($PayStage_array[$PayStage['BillNo']])) {
$PayStage_array[$PayStage['BillNo']] = array_merge($PayStage_array[$PayStage['BillNo']], $arrayData[$PayStage['BillNo']]['facility'][$key]['PayStage']);
@ -238,7 +250,7 @@ ON d.department_id = tmp2.department_id ";
// 將作番大日程新梯資料存入array中方便查詢
// 作番號 -> estimated_shipping_date 預計出港日; real_contract_arrival_date 預計出貨日; real_arrival_date 實際出貨日;
// install_end_date 安裝完畢日; tryrun_end_date 試車完畢日; official_check_date 官檢日; delivery_date 配送 完畢日
// install_end_date 安裝完畢日; tryrun_end_date 試車完畢日; official_check_date 官檢日; delivery_date 移交 完畢日
$wip_array = array();
$query_wip = mysqli_query($link, $sql_wip);
foreach ($query_wip as $wip) {
@ -249,138 +261,338 @@ foreach ($query_wip as $wip) {
$wip_array[$wip['facilityno']]['tryrun_end_date'] = $wip['tryrun_end_date'];
$wip_array[$wip['facilityno']]['official_check_date'] = $wip['official_check_date'];
$wip_array[$wip['facilityno']]['delivery_date'] = $wip['delivery_date'];
if (isset($arrayData[$wip['contractno']]) & & isset($arrayData[$wip['contractno']]['facility'][$wip['facilityno']])) {
if ($wip['delivery_date'] != NULL & & $wip['delivery_date'] !== '1970-01-01' & & $wip['delivery_date'] !== '1970-01-11' & & !empty($wip['delivery_date'])) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['delivery_date'] . "已移交";
$arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交) ";
} elseif ($wip['official_check_date'] != NULL & & $wip['official_check_date'] != '1970-01-01' & & $wip['delivery_date'] !== '1970-01-11' & & !empty($wip['official_check_date'])) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['official_check_date'] . "官檢完畢";
$arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢) ";
} elseif ($wip['tryrun_end_date'] != NULL & & $wip['tryrun_end_date'] !== '1970-01-01' & & $wip['delivery_date'] !== '1970-01-11' & & !empty($wip['tryrun_end_date'])) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['tryrun_end_date'] . "試車完畢";
$arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢) ";
} elseif ($wip['install_end_date'] != NULL & & $wip['install_end_date'] !== '1970-01-01' & & $wip['delivery_date'] !== '1970-01-11' & & !empty($wip['install_end_date'])) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['install_end_date'] . "安裝完畢";
$arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢) ";
} elseif ($wip['real_arrival_date'] != NULL & & $wip['real_arrival_date'] !== '1970-01-01' & & $wip['delivery_date'] !== '1970-01-11' & & !empty($wip['real_arrival_date'])) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['real_arrival_date'] . "貨抵工地";
$arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地) ";
} elseif ($wip['real_contract_arrival_date'] != NULL & & $wip['real_contract_arrival_date'] !== '1970-01-01' & & $wip['delivery_date'] !== '1970-01-11' & & !empty($wip['real_contract_arrival_date'])) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['real_contract_arrival_date'] . "預計出貨";
$arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['real_contract_arrival_date'] . "預計出貨) ";
} elseif ($wip['estimated_shipping_date'] != NULL & & $wip['estimated_shipping_date'] !== '1970-01-01' & & $wip['delivery_date'] !== '1970-01-11' & & !empty($wip['estimated_shipping_date'])) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['estimated_shipping_date'] . "預計出港";
$arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['estimated_shipping_date'] . "預計出港) ";
}
}
}
// 合約收款階段內容分類
$sign60 = array('簽訂後60天', '簽約60日', '簽約後60天', '簽訂後60日內', '訂金支付後60天');
$sign90 = array('簽約後90天', '簽約後90日', '簽訂後90天');
$sign120 = array('簽約後120天', '簽約後120日', '簽訂後120天');
$sign120 = array('簽約後120天', '簽約後120日', '簽訂後120天', '合約簽訂後120天');
$sign0 = array('簽約', '簽訂', '合約簽訂', '訂金');
$arrival = array('貨抵工地', '貨底工地', '工地動工');
$final6 = array('核可函取得後6個月', '得合格函後6個月');
foreach ($PayStage_array as $key => & $value) {
echo $key . "< br > ";
foreach ($value as $paykey => $payvalue) {
echo $paykey . "< br > ";
print_r($payvalue);
switch ($payvalue['PayStage']) {
case '寶佳出貨前30天':
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] != null) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time - (30 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} elseif ($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] != null) {
$estimate_time = strtotime($wip['real_contract_arrival_date']);
$signtime = $estimate_time - (30 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = null;
}
break;
case '寶佳出貨後10天':
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] != null) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time + (10 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = null;
}
break;
case (stristr($payvalue['PayStage'], '出貨前30')):
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] != null) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time - (30 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} elseif ($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] != null) {
$estimate_time = strtotime($wip['real_contract_arrival_date']);
$signtime = $estimate_time - (30 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = null;
}
break;
foreach ($value as $paykey => & $payvalue) {
if (isset($wip_array[$payvalue['facilityno']])) {
switch ($payvalue['PayStage']) {
case '寶佳出貨前30天':
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time - (30 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} elseif ($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['real_contract_arrival_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'])) {
$estimate_time = strtotime($wip['real_contract_arrival_date']);
$signtime = $estimate_time - (30 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case '寶佳出貨後10天':
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time + (10 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case '貨抵工地後90天':
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time + (90 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case '安裝試車後90天':
if ($wip_array[$payvalue['facilityno']]['tryrun_end_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['tryrun_end_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['tryrun_end_date'])) {
$estimate_time = strtotime($wip['tryrun_end_date']);
$signtime = $estimate_time + (90 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case '交車後270天':
if ($wip_array[$payvalue['facilityno']]['delivery_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['delivery_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['delivery_date'])) {
$estimate_time = strtotime($wip['delivery_date']);
$signtime = $estimate_time + (270 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (in_array($payvalue['PayStage'], $arrival)):
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time + (10 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case '二次款':
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) {
$estimate_time = strtotime($wip['real_arrival_date']);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
} elseif ($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['real_contract_arrival_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'])) {
$estimate_time = strtotime($wip['real_contract_arrival_date']);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (stristr($payvalue['PayStage'], '出貨前30') || stristr($payvalue['PayStage'], '簽約(出貨前30天)')):
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time - (30 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} elseif ($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['real_contract_arrival_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'])) {
$estimate_time = strtotime($wip['real_contract_arrival_date']);
$signtime = $estimate_time - (30 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (stristr($payvalue['PayStage'], '出貨前60')):
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] != null) {
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['real_arrival_date']) ) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time - (60 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} elseif ($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] != null) {
} elseif ($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['real_contract_arrival_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['real_contract_arrival_date']) ) {
$estimate_time = strtotime($wip['real_contract_arrival_date']);
$signtime = $estimate_time - (60 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = null;
$payvalue['PlanPayDate'] = NULL ;
}
break;
case (stristr($payvalue['PayStage'], '出貨前90')):
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] != null) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time - (90 * 86400);
case (stristr($payvalue['PayStage'], '出貨前90')):
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time - (90 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} elseif ($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['real_contract_arrival_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'])) {
$estimate_time = strtotime($wip['real_contract_arrival_date']);
$signtime = $estimate_time - (90 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (stristr($payvalue['PayStage'], '出貨前120')):
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time - (120 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} elseif ($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['real_contract_arrival_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'])) {
$estimate_time = strtotime($wip['real_contract_arrival_date']);
$signtime = $estimate_time - (120 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (in_array($payvalue['PayStage'], $sign60)):
$estimate_time = strtotime($arrayData[$key]['PayStage'][1]['PlanPayDate']);
$signtime = $estimate_time + (60 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} elseif ($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] != null) {
$estimate_time = strtotime($wip['real_contract_arrival_date']);
$signtime = $estimate_time - (90 * 86400);
break;
case (in_array($payvalue['PayStage'], $sign90)):
$estimate_time = strtotime($arrayData[$key]['PayStage'][1]['PlanPayDate']);
$signtime = $estimate_time + (90 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = null;
}
break;
case (stristr($payvalue['PayStage'], '出貨前120')):
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] != null) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time - (120 * 86400);
break;
case (in_array($payvalue['PayStage'], $sign120)):
$estimate_time = strtotime($arrayData[$key]['PayStage'][1]['PlanPayDate']);
$signtime = $estimate_time + (120 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} elseif ($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] != null) {
$estimate_time = strtotime($wip['real_contract_arrival_date']);
$signtime = $estimate_time - (120 * 86400);
break;
case (stristr($payvalue['PayStage'], '簽訂後30')):
$estimate_time = strtotime($arrayData[$key]['PayStage'][1]['PlanPayDate']);
$signtime = $estimate_time + (30 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = null;
}
break;
case (in_array($payvalue['PayStage'], $sign60)):
$estimate_time = strtotime($arrayData[$key]['PayStage'][1]['PlanPayDate']);
$signtime = $estimate_time + (60 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
break;
case (in_array($payvalue['PayStage'], $sign90)):
$estimate_time = strtotime($arrayData[$key]['PayStage'][1]['PlanPayDate']);
$signtime = $estimate_time + (90 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
break;
case (in_array($payvalue['PayStage'], $sign120)):
$estimate_time = strtotime($arrayData[$key]['PayStage'][1]['PlanPayDate']);
$signtime = $estimate_time + (120 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
break;
case (stristr($payvalue['PayStage'], '簽訂後30')):
$estimate_time = strtotime($arrayData[$key]['PayStage'][1]['PlanPayDate']);
$signtime = $estimate_time + (30 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
break;
default:
echo "其他";
break;
}
if ($payvalue['PayStage'] == '寶佳出貨前30天') {
break;
case (in_array($payvalue['PayStage'], $sign0)):
$estimate_time = strtotime($arrayData[$key]['PayStage'][1]['PlanPayDate']);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
break;
case (stristr($payvalue['PayStage'], '試車')):
if ($wip_array[$payvalue['facilityno']]['tryrun_end_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['tryrun_end_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['tryrun_end_date'])) {
$estimate_time = strtotime($wip['tryrun_end_date']);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (stristr($payvalue['PayStage'], '安裝') || stristr($payvalue['PayStage'], '貨抵工地且完工')):
if ($wip_array[$payvalue['facilityno']]['install_end_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['install_end_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['install_end_date'])) {
$estimate_time = strtotime($wip['install_end_date']);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (in_array($payvalue['PayStage'], $final6)):
if ($wip_array[$payvalue['facilityno']]['delivery_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['delivery_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['delivery_date'])) {
$estimate_time = strtotime($wip['delivery_date']);
$estimate_time = $estimate_time + (180 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (stristr($payvalue['PayStage'], '合格') || stristr($payvalue['PayStage'], '驗收') || stristr($payvalue['PayStage'], '驗收')):
if ($wip_array[$payvalue['facilityno']]['official_check_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['official_check_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['official_check_date'])) {
$estimate_time = strtotime($wip['official_check_date']);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (stristr($payvalue['PayStage'], '交車') || stristr($payvalue['PayStage'], '移交') || stristr($payvalue['PayStage'], '完工') || stristr($payvalue['PayStage'], '許可') || stristr($payvalue['PayStage'], '核可')):
if ($wip_array[$payvalue['facilityno']]['delivery_date'] !== null & & strtotime($wip_array[$payvalue['facilityno']]['delivery_date']) > 975686400 & & !empty($wip_array[$payvalue['facilityno']]['delivery_date'])) {
$estimate_time = strtotime($wip['delivery_date']);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
default:
$payvalue['PlanPayDate'] = NULL;
break;
}
if (strtotime($payvalue['PlanPayDate']) < 975686400 ) {
$payvalue['PlanPayDate'] = NULL;
}
}
}
}
echo "< br > ";
if (isset($wip_array[$payvalue['facilityno']])) {
echo $wip_array[$payvalue['facilityno']]['estimated_shipping_date'] . "< br > ";
echo $wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] . "< br > ";
echo $wip_array[$payvalue['facilityno']]['real_arrival_date'] . "< br > ";
echo $wip_array[$payvalue['facilityno']]['install_end_date'] . "< br > ";
echo $wip_array[$payvalue['facilityno']]['tryrun_end_date'] . "< br > ";
echo $wip_array[$payvalue['facilityno']]['official_check_date'] . "< br > ";
echo $wip_array[$payvalue['facilityno']]['delivery_date'] . "< br > ";
// 在$PayStage_array中排序
foreach ($PayStage_array as $key => $value) {
uasort($PayStage_array[$key], 'comparePlanPayDate');
}
// 加入序號
foreach ($PayStage_array as & $payStage) {
$sequenceNumber = 1;
foreach ($payStage as $tk => & $pstage) {
$pstage['sequenceNumber'] = $sequenceNumber;
$sequenceNumber += 1;
}
}
// 整理好的收款階段放入 $final_paystage
$final_paystage = array();
foreach ($PayStage_array as $key => & $payStage) {
if (is_iterable($payStage)) {
foreach ($payStage as $key2 => $pstage) {
$final_paystage[$key][$pstage['sequenceNumber']] = $pstage;
}
}
echo "< br > --------------------< br > ";
}
// 發票資訊
$sql_invoice = "SELECT
Detail.BillNo AS InvoiceBillNo,
Detail.MaterialId,
Detail.LAmountWithTax,
Main.InvoiceNo,
Main.InvoiceDate,
Main.InvoiceState,
CheckAll.FromSalSalesOrder AS BillNo
FROM arSellInvoiceMaterial AS Detail
LEFT JOIN arSellInvoice AS Main ON Detail.BillNo=Main.BillNo
LEFT JOIN (
SELECT CheckDetail.BillNo, CheckDetail.FromSalSalesOrder, CheckDetail.RowNo
FROM arCheckBillDetail AS CheckDetail )
AS CheckAll ON CheckAll.BillNo= Detail.FromBillNo AND Detail.FromRowCode = CheckAll.RowNo
WHERE Main.InvoiceState!=2 AND LEN(CheckAll.FromSalSalesOrder)>0";
$query_invoice = $conn->query($sql_invoice);
//發票資訊回填到arrayData
foreach($query_invoice as $invoice) {
if(isset($arrayData[$invoice['BillNo']])) {
$arrayData[$invoice['BillNo']]['invoice_budget'] += $invoice['LAmountWithTax'];
}
}
// 核銷資訊
$sql_received = "SELECT
CheckDetail.OrderBillNo,
arWriteOffBillDetail.FromBillNo AS CheckBillNo,
arWriteOffBillDetail.FromRowCode AS CheckRowCode,
arWriteOffBillDetail.CurrStandOffOAmount,
CheckDetail.TypeId
FROM arWriteOffBillDetail
LEFT JOIN
(SELECT
arCheckBillDetail.BillNo,
arCheckBillDetail.RowCode,
arCheckBillDetail.FromSalSalesOrder AS OrderBillNo,
salSalesOrder.TypeId,
salSalesOrder.ModeId
FROM arCheckBillDetail
LEFT JOIN salSalesOrder
ON salSalesOrder.BillNo =arCheckBillDetail.FromSalSalesOrder )
AS CheckDetail
ON CheckDetail.BillNo=arWriteOffBillDetail.FromBillNo AND arWriteOffBillDetail.FromRowCode = CheckDetail.RowCode
WHERE CheckDetail.ModeId = 'M'";
$query_received = $conn->query($sql_received);
// 核銷資訊回填到arrayData
foreach($query_received as $received) {
if(isset($arrayData[$received['OrderBillNo']])) {
$arrayData[$received['OrderBillNo']]['received_budget'] += $received['CurrStandOffOAmount'];
}
}
//在$PayStage_array中排序
// foreach($PayStage_array as $key => $value) {
// uasort($PayStage_array[$key], 'comparePlanPayDate');
// }
// 將發票與核銷資訊 分別計算作番收款階段金額
foreach ($final_paystage as $key => & $value) {
$tmpinvoice = $arrayData[$key]['invoice_budget'];
$tmpreceived = $arrayData[$key]['received_budget'];
for($sequenceNumber = 1; $sequenceNumber < = count($value); $sequenceNumber++) {
if($tmpinvoice >= $value[$sequenceNumber]['PlanPayAmt']){
$value[$sequenceNumber]['invoice_budget'] = $value[$sequenceNumber]['PlanPayAmt'];
$tmpinvoice = $tmpinvoice - $value[$sequenceNumber]['invoice_budget'];
}else{
$value[$sequenceNumber]['invoice_budget'] = $tmpinvoice;
$tmpinvoice = 0;
}
if($tmpreceived > $value[$sequenceNumber]['PlanPayAmt']){
$value[$sequenceNumber]['received_budget'] = $value[$sequenceNumber]['PlanPayAmt'];
$tmpinvoice = $tmpreceived - $value[$sequenceNumber]['received_budget'];
}else{
$value[$sequenceNumber]['received_budget'] = $tmpreceived;
$tmpreceived = 0;
}
}
}