From 76d00226add3df55484055275322d9dd2a1e6685 Mon Sep 17 00:00:00 2001 From: Ellin Date: Fri, 16 Feb 2024 17:31:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=87=89=E6=94=B6=E5=B8=B3=E6=AC=BE(=E6=96=B0?= =?UTF-8?q?=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'); +// }