From 76d00226add3df55484055275322d9dd2a1e6685 Mon Sep 17 00:00:00 2001 From: Ellin Date: Fri, 16 Feb 2024 17:31:16 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=87=89=E6=94=B6=E5=B8=B3=E6=AC=BE(?= =?UTF-8?q?=E6=96=B0=E6=A2=AF)new=20=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wms/account-receivable-index.php | 5 +- wms/account-receivable-new-index.php | 386 +++++++++++++++++++++++++++ 2 files changed, 387 insertions(+), 4 deletions(-) create mode 100644 wms/account-receivable-new-index.php diff --git a/wms/account-receivable-index.php b/wms/account-receivable-index.php index ce7725df..20162a22 100644 --- a/wms/account-receivable-index.php +++ b/wms/account-receivable-index.php @@ -110,7 +110,6 @@ if ((in_array($user_id, array('M0060', 'M0175'))) || (in_array(accountidToDepart $sql_contract_budget .= "ORDER BY BillNo, CU_MaterialId"; } else { $sql_contract .= "AND (s.PersonId = '$user_id'"; - // $sql_received .= " AND (PersonId = '$user_id'"; $sql_opening .= " OR person_id = '$user_id'"; $sql .= " WHERE salesid = '$user_id'"; $sql_contract_budget .= " AND (PersonId = '$user_id'"; @@ -118,14 +117,12 @@ if ((in_array($user_id, array('M0060', 'M0175'))) || (in_array(accountidToDepart $column_str = "('$user_id'" . ",'"; $column_str .= implode("','", $follower); $column_str .= "')"; - $sql_contract .= " OR s.PersonId IN $column_str)"; - // $sql_received .= " OR PersonId IN $column_str)"; + $sql_contract .= " OR s.PersonId IN $column_str)";; $sql_opening .= " OR person_id IN $column_str)"; $sql .= " OR salesid IN $column_str ORDER BY contractno"; $sql_contract_budget .= " OR PersonId IN $column_str )ORDER BY BillNo, CU_MaterialId"; } else { $sql_contract .= ")"; - // $sql_received .= ")"; $sql_opening .= ")"; $sql .= " ORDER BY contractno"; $sql_contract_budget .= ")"; diff --git a/wms/account-receivable-new-index.php b/wms/account-receivable-new-index.php new file mode 100644 index 00000000..e621fbb2 --- /dev/null +++ b/wms/account-receivable-new-index.php @@ -0,0 +1,386 @@ += $start_date "; +} +if (!is_null($end_date)) { + $end_date = (int)date('Ymd', strtotime($end_date)); + $sql_all_contract .= " AND MainAll.BillDate <= $end_date "; +} +if ((in_array($user_id, array('M0060', 'M0175'))) || (in_array(accountidToDepartId($user_id), array('220', '210', '321')))) { +} else { + $sql_all_contract .= " AND (MainAll.PersonId = '$user_id'"; + if (count($follower) > 0) { + $column_str = "('$user_id'" . ",'"; + $column_str .= implode("','", $follower); + $column_str .= "')"; + $sql_all_contract .= " OR MainAll.PersonId IN $column_str)"; + } else { + $sql_all_contract .= ")"; + }; +} +$str_numbers = ""; +$query_all_contract = $conn->query($sql_all_contract); +if (is_iterable($query_all_contract)) { + foreach ($query_all_contract as $contract_numbers) { + if (!in_array($contract_numbers['BillNo'], $contractNumbers)) { + array_push($contractNumbers, $contract_numbers['BillNo']); + $arrayData[$contract_numbers['BillNo']]['BillNo'] = isset($contract_numbers['BillNo']) ? $contract_numbers['BillNo'] : '--'; + $arrayData[$contract_numbers['BillNo']]['BillDate'] = isset($contract_numbers['BillDate']) ? $contract_numbers['BillDate'] : '--'; + $arrayData[$contract_numbers['BillNo']]['CustomerId'] = isset($contract_numbers['BizPartnerId']) ? $contract_numbers['BizPartnerId'] : '--'; + $arrayData[$contract_numbers['BillNo']]['CustomerName'] = isset($contract_numbers['BizPartnerName']) ? $contract_numbers['BizPartnerName'] : '--'; + $arrayData[$contract_numbers['BillNo']]['CustomerAddress'] = isset($contract_numbers['ContactAddress']) ? $contract_numbers['ContactAddress'] : '--'; + $arrayData[$contract_numbers['BillNo']]['OAmountWithTax'] = isset($contract_numbers['OAmountWithTax']) ? $contract_numbers['OAmountWithTax'] : 0; + $arrayData[$contract_numbers['BillNo']]['PersonId'] = isset($contract_numbers['PersonId']) ? $contract_numbers['PersonId'] : '--'; + $arrayData[$contract_numbers['BillNo']]['DeptId'] = isset($contract_numbers['DeptId']) ? $contract_numbers['DeptId'] : '--'; + $arrayData[$contract_numbers['BillNo']]['PersonName'] = isset($contract_numbers['PersonName']) ? $contract_numbers['PersonName'] : '--'; + $arrayData[$contract_numbers['BillNo']]['DeptName'] = isset($contract_numbers['DeptName']) ? $contract_numbers['DeptName'] : '--'; + $arrayData[$contract_numbers['BillNo']]['ShortName'] = isset($contract_numbers['ShortName']) ? $contract_numbers['ShortName'] : '--'; + $arrayData[$contract_numbers['BillNo']]['ManagerId'] = !empty($find_manager[$contract_numbers['PersonId']]['manager']) ? $find_manager[$contract_numbers['PersonId']]['manager'] : '--'; + $arrayData[$contract_numbers['BillNo']]['ManagerName'] = !empty($find_manager[$contract_numbers['PersonId']]['manager_name']) ? $find_manager[$contract_numbers['PersonId']]['manager_name'] : '--'; + $arrayData[$contract_numbers['BillNo']]['invoice_budget'] = 0; + $arrayData[$contract_numbers['BillNo']]['received_budget'] = 0; + $arrayData[$contract_numbers['BillNo']]['receivable_budget'] = 0; + $arrayData[$contract_numbers['BillNo']]['collect_budget'] = 0; + $arrayData[$contract_numbers['BillNo']]['A40001'] = 0; + $arrayData[$contract_numbers['BillNo']]['A40008'] = 0; + $arrayData[$contract_numbers['BillNo']]['facility'] = array(); + $arrayData[$contract_numbers['BillNo']]['total_budget'] = $contract_numbers['OAmountWithTax']; + $sum_total_budget += $contract_numbers['OAmountWithTax']; + } + } + $str_numbers .= "('" . implode("','", $contractNumbers) . "')"; +} + +// T8 銷售訂單 作番總金額、作番A40001金額、作番A40008金額、合約A40001金額、合約A40008金額 +$sql_contract_budget = "SELECT A.BillNo, A.OAmountWithTax,A.CU_MaterialId, A.MaterialId FROM salSalesOrderDetail AS A +LEFT JOIN salSalesOrder AS B ON A.BillNo=B.BillNo +WHERE B.ModeId='M' AND A.ItemType=1 "; +$query_contract_budget = $conn->query($sql_contract_budget); +foreach ($query_contract_budget as $contract_budget) { + if (isset($arrayData[$contract_budget['BillNo']])) { + $arrayData[$contract_budget['BillNo']][$contract_budget['MaterialId']] += $contract_budget['OAmountWithTax']; + if (isset($arrayData[$contract_budget['BillNo']]['facility']) && isset($arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']])) { + $arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']]['total_budget'] += $contract_budget['OAmountWithTax']; + if (isset($arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']][$contract_budget['MaterialId']])) { + $arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']][$contract_budget['MaterialId']] += $contract_budget['OAmountWithTax']; + } else { + $arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']][$contract_budget['MaterialId']] = $contract_budget['OAmountWithTax']; + } + } 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']; + } + } +} + +//T8 銷售訂單 階段收款計畫 +$sql_PayStage = "SELECT +a.RowNo, +a.BillNo, +s.BillDate, +a.PayStage, +a.PlanPayAmt, +a.PlanPayDate, +s.BizPartnerId, +s.PersonId + FROM salOrderStagePay AS a + LEFT JOIN salSalesOrder AS s on a.BillNo = s.BillNo + WHERE s.ModeId = 'M' AND (s.CurrentState=2 OR s.CurrentState=4) "; +if (!empty($str_numbers)) { + $sql_PayStage .= " AND s.BillNo IN " . $str_numbers; +} + +$query_PayStage = $conn->query($sql_PayStage); +// 把階段收款計畫放進arrayData內 +foreach ($query_PayStage as $PayStage) { + if (isset($arrayData[$PayStage['BillNo']])) { + $arrayData[$PayStage['BillNo']]['PayStage'][$PayStage['RowNo']]['PayStage'] = $PayStage['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) { + $tmpkey = $key . $PayStage['RowNo']; + $arrayData[$PayStage['BillNo']]['facility'][$key]['PayStage'][$tmpkey] = $arrayData[$PayStage['BillNo']]['PayStage'][$PayStage['RowNo']]; + $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']); + } else { + $PayStage_array[$PayStage['BillNo']] = $arrayData[$PayStage['BillNo']]['facility'][$key]['PayStage']; + } + } + } + } +} + + +//作番大日程 +$sql_wip = "SELECT +tmp2.*, +d.name AS depart_name +FROM( +SELECT + a.manager, + a2.name as manager_name, + a.name, + a.department_id, + w.salesid, + w.contractno, + w.facilityno, + w.estimated_shipping_date, + w.real_contract_arrival_date, +w.actual_tofactory_date, + w.real_arrival_date, + w.install_end_date, + w.tryrun_end_date, + w.official_check_date, + w.delivery_date +from wipwholestatus AS w +left join account AS a +ON w.salesid = a.accountid +left join account AS a2 +ON a2.accountid = a.manager +where w.status = '1' AND w.contract_type='A' +)AS tmp2 +left join ( +SELECT DISTINCT + department_id, + name +FROM department + +) AS d +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 配送完畢日 +$wip_array = array(); +$query_wip = mysqli_query($link, $sql_wip); +foreach ($query_wip as $wip) { + $wip_array[$wip['facilityno']]['estimated_shipping_date'] = $wip['estimated_shipping_date']; + $wip_array[$wip['facilityno']]['real_contract_arrival_date'] = $wip['real_contract_arrival_date']; + $wip_array[$wip['facilityno']]['real_arrival_date'] = $wip['real_arrival_date']; + $wip_array[$wip['facilityno']]['install_end_date'] = $wip['install_end_date']; + $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']; +} +// 合約收款階段內容分類 +$sign60 = array('簽訂後60天', '簽約60日', '簽約後60天', '簽訂後60日內', '訂金支付後60天'); +$sign90 = array('簽約後90天', '簽約後90日', '簽訂後90天'); +$sign120 = array('簽約後120天', '簽約後120日', '簽訂後120天'); + + +foreach ($PayStage_array as $key => &$value) { + echo $key . "
"; + foreach ($value as $paykey => $payvalue) { + echo $paykey . "
"; + 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; + case (stristr($payvalue['PayStage'], '出貨前60')): + if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] != null) { + $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) { + $estimate_time = strtotime($wip['real_contract_arrival_date']); + $signtime = $estimate_time - (60 * 86400); + $payvalue['PlanPayDate'] = date('Y-m-d', $signtime); + } else { + $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); + $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); + $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); + $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); + $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天') { + } + + + echo "
"; + if (isset($wip_array[$payvalue['facilityno']])) { + echo $wip_array[$payvalue['facilityno']]['estimated_shipping_date'] . "
"; + echo $wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] . "
"; + echo $wip_array[$payvalue['facilityno']]['real_arrival_date'] . "
"; + echo $wip_array[$payvalue['facilityno']]['install_end_date'] . "
"; + echo $wip_array[$payvalue['facilityno']]['tryrun_end_date'] . "
"; + echo $wip_array[$payvalue['facilityno']]['official_check_date'] . "
"; + echo $wip_array[$payvalue['facilityno']]['delivery_date'] . "
"; + } + } + echo "
--------------------
"; +} + + + +//在$PayStage_array中排序 +// foreach($PayStage_array as $key => $value) { +// uasort($PayStage_array[$key], 'comparePlanPayDate'); +// } From 86dfb729ed30a33bf771ace7663a2f8d8e7f9dcd Mon Sep 17 00:00:00 2001 From: Ellin Date: Sat, 17 Feb 2024 17:35:02 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=87=89=E6=94=B6=E5=B8=B3=E6=AC=BE(?= =?UTF-8?q?=E4=BF=AE=E7=90=86)=E8=88=87=E6=B1=B0=E6=94=B9=20=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=BE=8C=E4=B8=8A=E7=B7=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wms/account-receivable-new-index.php | 452 ++++++++++++++++------ wms/account-receivable-renovate-index.php | 184 +++++---- wms/account-receivable-repair-index.php | 4 +- wms/account-receivable-test.php | 113 +++--- 4 files changed, 505 insertions(+), 248 deletions(-) diff --git a/wms/account-receivable-new-index.php b/wms/account-receivable-new-index.php index e621fbb2..0c18ac06 100644 --- a/wms/account-receivable-new-index.php +++ b/wms/account-receivable-new-index.php @@ -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 . "
"; - foreach ($value as $paykey => $payvalue) { - echo $paykey . "
"; - 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 "
"; - if (isset($wip_array[$payvalue['facilityno']])) { - echo $wip_array[$payvalue['facilityno']]['estimated_shipping_date'] . "
"; - echo $wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] . "
"; - echo $wip_array[$payvalue['facilityno']]['real_arrival_date'] . "
"; - echo $wip_array[$payvalue['facilityno']]['install_end_date'] . "
"; - echo $wip_array[$payvalue['facilityno']]['tryrun_end_date'] . "
"; - echo $wip_array[$payvalue['facilityno']]['official_check_date'] . "
"; - echo $wip_array[$payvalue['facilityno']]['delivery_date'] . "
"; +// 在$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 "
--------------------
"; } +// 發票資訊 +$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; + } + } +} diff --git a/wms/account-receivable-renovate-index.php b/wms/account-receivable-renovate-index.php index 09240ac2..49093379 100644 --- a/wms/account-receivable-renovate-index.php +++ b/wms/account-receivable-renovate-index.php @@ -82,6 +82,8 @@ 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 @@ -89,7 +91,7 @@ CheckAll.FromSalSalesOrder AS BillNo SELECT CheckDetail.BillNo, CheckDetail.FromSalSalesOrder, CheckDetail.RowNo FROM arCheckBillDetail AS CheckDetail ) AS CheckAll ON CheckAll.BillNo= Detail.FromBillNo AND Detail.FromRowCode = CheckAll.RowNo - WHERE Detail.ItemType=0 AND Main.InvoiceState!=2"; + WHERE Main.InvoiceState!=2"; // T8核銷 $sql_received = "SELECT @@ -123,41 +125,41 @@ $contractNumbers = array(); $query_contract_number = $conn->query($sql_contractNumber); foreach ($query_contract_number as $contract_numbers) { $billNo = $contract_numbers['BillNo']; - switch ($contract_numbers['BillNo']) { - case 'SO20230701001': - $billNo = 'M220104'; - break; - case 'SO20230701002': - $billNo = 'M230098'; - break; - case 'SO20230701003': - $billNo = 'M230159'; - break; - case 'SO20230901001': - $billNo = 'M230992'; - break; - case 'SO20231110001': - $billNo = 'M230492'; - break; - case 'SO20231110002': - $billNo = 'M230557'; - break; - case 'SO20231110003': - $billNo = 'M230496'; - break; - case 'SP20240108001': - $billNo = 'M230683'; - break; - case 'SP20240116004': - $billNo = 'B230726'; - break; - case 'T220035': - $billNo = 'M220035'; - break; - case 'T230098': - $billNo = 'M230098'; - break; - } + // switch ($contract_numbers['BillNo']) { + // case 'SO20230701001': + // $billNo = 'M220104'; + // break; + // case 'SO20230701002': + // $billNo = 'M230098'; + // break; + // case 'SO20230701003': + // $billNo = 'M230159'; + // break; + // case 'SO20230901001': + // $billNo = 'M230992'; + // break; + // case 'SO20231110001': + // $billNo = 'M230492'; + // break; + // case 'SO20231110002': + // $billNo = 'M230557'; + // break; + // case 'SO20231110003': + // $billNo = 'M230496'; + // break; + // case 'SP20240108001': + // $billNo = 'M230683'; + // break; + // case 'SP20240116004': + // $billNo = 'B230726'; + // break; + // case 'T220035': + // $billNo = 'M220035'; + // break; + // case 'T230098': + // $billNo = 'M230098'; + // break; + // } array_push($contractNumbers, $billNo); $str_numbers = "('" . implode("','", $contractNumbers) . "')"; } @@ -203,18 +205,18 @@ $sql_contract = "SELECT a.BillNo,s.BillDate, a.RowNo, a.PayStage, a.PlanPayAmt, c.EnterpriseName, c.TaxNo, c.ContactAddress FROM salOrderStagePay AS a LEFT JOIN (SELECT O.*, DE.DeptName FROM salSalesOrder AS O LEFT JOIN comDepartment AS DE ON O.DeptId=DE.DeptId) AS s on a.BillNo = s.BillNo LEFT JOIN comBusinessPartner AS c ON s.BizPartnerId=c.BizPartnerId "; -if (isset($str_numbers)) { - $sql_contract .= "WHERE s.BillNo IN $str_numbers "; -} +// if (isset($str_numbers)) { +// $sql_contract .= "WHERE s.BillNo IN $str_numbers "; +// } // T8 銷售訂單 作番金額 $sql_contract_budget = "SELECT A.BillNo,A.MaterialId, A.OAmountWithTax,A.CU_MaterialId FROM salSalesOrderDetail AS A LEFT JOIN salSalesOrder AS B ON A.BillNo=B.BillNo WHERE B.ModeId='T' AND A.ItemType=1 "; -if (isset($str_numbers)) { - $sql_contract_budget .= "AND A.BillNo IN $str_numbers "; -} +// if (isset($str_numbers)) { +// $sql_contract_budget .= "AND A.BillNo IN $str_numbers "; +// } $contract = $conn->query($sql_contract); $contract_data = array(); $manager_list = array(); @@ -370,26 +372,62 @@ $today = strtotime(date('Ymd')); $wipwhole_array = mysqli_query($link, $sql); $wipwhole_status = array(); foreach ($wipwhole_array as $wip) { + $billno = $wip['contractno']; + switch ($wip['contractno']) { + case 'M220104': + $billNo = 'SO20230701001'; + break; + case 'M230098': + $billNo = 'SO20230701002'; + break; + case 'M230159': + $billNo = 'SO20230701003'; + break; + case 'M230992': + $billNo = 'SO20230901001'; + break; + case 'M230492': + $billNo = 'SO20231110001'; + break; + case 'M230557': + $billNo = 'SO20231110002'; + break; + case 'M230496': + $billNo = 'SO20231110003'; + break; + case 'M230683': + $billNo = 'SP20240108001'; + break; + case 'B230726': + $billNo = 'SP20240116004'; + break; + case 'M220035': + $billNo = 'T220035'; + break; + case 'M230098': + $billNo = 'T230098'; + break; + } //[合約號]['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數 - if (isset($arrayData[$wip['contractno']])) { + if (isset($arrayData[$billno])) { // 整理合約資料 // $arrayData[$wip['contractno']][0] = $wip['department_id'];; // $arrayData[$wip['contractno']][1] = $wip['depart_name']; // $arrayData[$wip['contractno']][2] = $wip['manager_name']; // $arrayData[$wip['contractno']][3] = $wip['salesid']; // $arrayData[$wip['contractno']][4] = $wip['name']; - $arrayData[$wip['contractno']][10] = $wip['contractno']; - $arrayData[$wip['contractno']]['A40001'] = (isset($contract_budget[$wip['contractno']]['A40001']) && !is_null($contract_budget[$wip['contractno']]['A40001'])) ? $contract_budget[$wip['contractno']]['A40001'] : 0; - $arrayData[$wip['contractno']]['A40008'] = (isset($contract_budget[$wip['contractno']]['A40008']) && !is_null($contract_budget[$wip['contractno']]['A40008'])) ? $contract_budget[$wip['contractno']]['A40008'] : 0; + $arrayData[$billno][10] = $wip['contractno']; + $arrayData[$billno]['A40001'] = (isset($contract_budget[$billno]['A40001']) && !is_null($contract_budget[$billno]['A40001'])) ? $contract_budget[$billno]['A40001'] : 0; + $arrayData[$billno]['A40008'] = (isset($contract_budget[$billno]['A40008']) && !is_null($contract_budget[$billno]['A40008'])) ? $contract_budget[$billno]['A40008'] : 0; // [合約號]['facility'][作番號]['no'] - $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['no'] = $wip['facilityno']; - $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = ""; - $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['total_budget'] = 0; - $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['receivable_budget'] = 0; - $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['collect_budget'] = 0; - $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['A40002'] = (isset($contract_budget[$wip['contractno']][$wip['facilityno']]['A40002']) && !is_null($contract_budget[$wip['contractno']][$wip['facilityno']]['A40002'])) ? $contract_budget[$wip['contractno']][$wip['facilityno']]['A40002'] : 0; - $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['A40008'] = (isset($contract_budget[$wip['contractno']][$wip['facilityno']]['A40008']) && !is_null($contract_budget[$wip['contractno']][$wip['facilityno']]['A40008'])) ? $contract_budget[$wip['contractno']][$wip['facilityno']]['A40008'] : 0; - $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['A40010'] = (isset($contract_budget[$wip['contractno']][$wip['facilityno']]['A40010']) && !is_null($contract_budget[$wip['contractno']][$wip['facilityno']]['A40010'])) ? $contract_budget[$wip['contractno']][$wip['facilityno']]['A40010'] : 0; + $arrayData[$billno]['facility'][$wip['facilityno']]['no'] = $wip['facilityno']; + $arrayData[$billno]['facility'][$wip['facilityno']]['status'] = ""; + $arrayData[$billno]['facility'][$wip['facilityno']]['total_budget'] = 0; + $arrayData[$billno]['facility'][$wip['facilityno']]['receivable_budget'] = 0; + $arrayData[$billno]['facility'][$wip['facilityno']]['collect_budget'] = 0; + $arrayData[$billno]['facility'][$wip['facilityno']]['A40002'] = (isset($contract_budget[$billno][$wip['facilityno']]['A40002']) && !is_null($contract_budget[$billno][$wip['facilityno']]['A40002'])) ? $contract_budget[$billno][$wip['facilityno']]['A40002'] : 0; + $arrayData[$billno]['facility'][$wip['facilityno']]['A40008'] = (isset($contract_budget[$billno][$wip['facilityno']]['A40008']) && !is_null($contract_budget[$billno][$wip['facilityno']]['A40008'])) ? $contract_budget[$billno][$wip['facilityno']]['A40008'] : 0; + $arrayData[$billno]['facility'][$wip['facilityno']]['A40010'] = (isset($contract_budget[$billno][$wip['facilityno']]['A40010']) && !is_null($contract_budget[$billno][$wip['facilityno']]['A40010'])) ? $contract_budget[$billno][$wip['facilityno']]['A40010'] : 0; } $wipwhole_status[$wip['facilityno']] = $wip; } @@ -542,9 +580,9 @@ foreach ($allPayStages as $key => &$payStage) { // [invoice][發票號碼][0 發票日期, 1 發票金額, 2 發票狀態, 3 收款日期, 4 收款金額, 5 手續費, 6 核銷單號] foreach ($invoice_data as $invoice) { - if (isset($invoice['FromSalSalesOrder']) && isset($arrayData[$invoice['FromSalSalesOrder']])) { - $arrayData[$invoice['FromSalSalesOrder']]['invoice_budget'] += intval($invoice['OAmountWithTax']); - $arrayData[$invoice['FromSalSalesOrder']]['invoice'][$invoice['InvoiceNo']] = [date("Ymd", strtotime($invoice['InvoiceTime'])), $invoice['OAmountWithTax'], $invoice['InvoiceState']]; + if (isset($invoice['BillNo']) && isset($arrayData[$invoice['BillNo']])) { + $arrayData[$invoice['BillNo']]['invoice_budget'] += intval($invoice['LAmountWithTax']); + $arrayData[$invoice['BillNo']]['invoice'][$invoice['InvoiceNo']] = [date("Y-m-d", strtotime($invoice['InvoiceDate'])), $invoice['LAmountWithTax'], $invoice['InvoiceState']]; } } @@ -552,10 +590,10 @@ foreach ($invoice_data as $invoice) { foreach ($received_array as $received) { $BillNo = $received['OrderBillNo']; if (isset($arrayData[$BillNo])) { - if (isset($received['InvoiceNo']) && isset($arrayData[$BillNo]['invoice'][$received['InvoiceNo']])) { - $arrayData[$BillNo]['received_budget'] += $received['PayWriteOffOAmount']; - array_push($arrayData[$BillNo]['invoice'][$received['InvoiceNo']], date($received['ReceivedDate']), $received['PayWriteOffOAmount'], $received['Fee'], $received['BillNo']); - } + // if (isset($received['InvoiceNo']) && isset($arrayData[$BillNo]['invoice'][$received['InvoiceNo']])) { + $arrayData[$BillNo]['received_budget'] += $received['CurrStandOffOAmount']; + // array_push($arrayData[$BillNo]['invoice'][$received['InvoiceNo']], date($received['ReceivedDate']), $received['PayWriteOffOAmount'], $received['Fee'], $received['BillNo']); + // } } } // $final_paystage ['type'] ['PlanPayDate'] ['PayAmount'] ['facilityno'] ['sequenceNumber'] ['name'] ['InvoiceAmount'] ['receivedAmount'] @@ -609,12 +647,12 @@ foreach ($arrayData as $key => $value) { $value[11] = (isset($value[11]) && !empty($value[11])) ? $value[11] : '--'; $value[12] = (isset($value[12]) && !empty($value[12])) ? date('Y/m/d', strtotime($value[12])) : '--'; $thisPayStage = $final_paystage[$key][$sequence]; - $keyname = $key . "/" . $final_paystage[$key][$sequence]['facilityno'] . "/" . $value[5]; - $havetopay = ($today >= strtotime($thisPayStage['PlanPayDate'])) ? "V" : "--"; + $keyname = $key . "_" . $final_paystage[$key][$sequence]['facilityno'] . "_" . $sequence; + $havetopay = ($today >= strtotime($final_paystage[$key][$sequence]['PlanPayDate'])) ? "V" : "--"; switch ($havetopay) { case "V": - $unInvoiceAmount = $thisPayStage['PayAmount'] - $thisPayStage['InvoiceAmount']; - $unReceivedAmount = $thisPayStage['PayAmount'] - $thisPayStage['receivedAmount']; + $unInvoiceAmount = $final_paystage[$key][$sequence]['PayAmount'] - $final_paystage[$key][$sequence]['InvoiceAmount']; + $unReceivedAmount = $final_paystage[$key][$sequence]['PayAmount'] - $final_paystage[$key][$sequence]['receivedAmount']; break; default: $unInvoiceAmount = 0; @@ -624,10 +662,10 @@ foreach ($arrayData as $key => $value) { $excel_aray[$keyname] = [ $value[10], $thisPayStage['facilityno'], $value[0], $value[1], $value[11], $value[2], $value[3], $value[4], $value[5], $value[6], $value[7], $value[8], $thisPayStage['name'], $thisPayStage['PlanPayDate'], $havetopay, - number_format(round($thisPayStage['PayAmount'])), - number_format(round($thisPayStage['InvoiceAmount'])), number_format(round($unInvoiceAmount)), - number_format(round($thisPayStage['receivedAmount'])), number_format(round($unReceivedAmount)), - number_format(round($thisPayStage['collect_month'])) + number_format(round($final_paystage[$key][$sequence]['PayAmount'])), + number_format(round($final_paystage[$key][$sequence]['InvoiceAmount'])), number_format(round($unInvoiceAmount)), + number_format(round($final_paystage[$key][$sequence]['receivedAmount'])), number_format(round($unReceivedAmount)), + number_format(round($final_paystage[$key][$sequence]['collect_month'])) ]; } @@ -703,15 +741,16 @@ include "./footer.php"; - - + + - + + @@ -733,6 +772,7 @@ include "./footer.php"; + diff --git a/wms/account-receivable-repair-index.php b/wms/account-receivable-repair-index.php index 5e22c234..f02835ca 100644 --- a/wms/account-receivable-repair-index.php +++ b/wms/account-receivable-repair-index.php @@ -363,14 +363,14 @@ $total_data = json_encode($excel_aray); -
+
20231031 OR salDispatchListMaster.BillDate IS NULL"; -$query = $conn->query($sql); -foreach ($query as $key => $value) { - $mode = ''; - switch ($value['ModeId']) { - case 'B': - $mode = '保養'; - break; - case 'T': - $mode = '汰改'; - break; - case 'M': - $mode = '新梯'; - break; - case 'Z': - $mode = '維修'; - break; - } - echo $value['BillNo'] . ";" . $mode . ";" . $value['BizPartnerId'] .";".$value['BizPartnerName'].";".$value['ProjectId']. ";".$value['CU_MaterialId']. ";".$value['DispBillNo'].";" . $value['DispBillDate'] ."
"; -} +// $sql = "SELECT Main.*, comBusinessPartner.BizPartnerName, salDispatchListMaster.BillNo AS DispBillNo , salDispatchListMaster.BillDate AS DispBillDate FROM +// (SELECT DISTINCT salSalesOrder.BillNo,salSalesOrder.BizPartnerId, salSalesOrder.TypeId, salSalesOrder.ModeId, salSalesOrderDetail.ProjectId, salSalesOrderDetail.CU_MaterialId FROM salSalesOrderDetail +// LEFT JOIN salSalesOrder ON salSalesOrder.BillNo= salSalesOrderDetail.BillNo +// WHERE (LEN(salSalesOrderDetail.ProjectId)=0 AND salSalesOrderDetail.ItemType=0) OR LEN(salSalesOrderDetail.CU_MaterialId)=0 ) AS Main +// LEFT JOIN comBusinessPartner ON comBusinessPartner.BizPartnerId = Main.BizPartnerId +// LEFT JOIN salDispatchListMaster ON salDispatchListMaster.FromBillNo= Main.BillNo +// WHERE salDispatchListMaster.BillDate >20231031 OR salDispatchListMaster.BillDate IS NULL"; +// $query = $conn->query($sql); +// foreach ($query as $key => $value) { +// $mode = ''; +// switch ($value['ModeId']) { +// case 'B': +// $mode = '保養'; +// break; +// case 'T': +// $mode = '汰改'; +// break; +// case 'M': +// $mode = '新梯'; +// break; +// case 'Z': +// $mode = '維修'; +// break; +// } +// echo $value['BillNo'] . ";" . $mode . ";" . $value['BizPartnerId'] .";".$value['BizPartnerName'].";".$value['ProjectId']. ";".$value['CU_MaterialId']. ";".$value['DispBillNo'].";" . $value['DispBillDate'] ."
"; +// } + + +$TIME = strtotime('2000-12-02'); + +echo $TIME; \ No newline at end of file
合約號作番號合約號作番號 部門 主管 契約員客戶名稱客戶名稱 收款階段 應收日期 是否應收合約金額 應收金額 已開金額 未開金額 0){echo $row[15];}else{echo '0';} ?>