From c18e1e26def7ff6094545b7e2739e01bb21da538 Mon Sep 17 00:00:00 2001 From: "gary_chen\\gary_chen" Date: Thu, 14 Dec 2023 08:52:12 +0800 Subject: [PATCH 1/2] =?UTF-8?q?1.header=20=E9=87=8D=E6=96=B0=E4=B8=8A?= =?UTF-8?q?=E6=9D=BF(=E6=AD=A3=E7=A2=BA=E7=89=88=E6=9C=AC)=202.app=20env?= =?UTF-8?q?=E8=B7=AF=E5=BE=91=E4=BF=AE=E6=AD=A3=203.gitignore=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=BF=BD=E7=95=A5=20app=20=E7=99=BB=E5=85=A5=E7=94=A2?= =?UTF-8?q?=E7=94=9F=E7=9A=84=20.log=204.app=20=E9=87=9D=E5=B0=8D=E5=90=88?= =?UTF-8?q?=E7=B4=84=E8=99=9F=20M220104=20=E4=BD=9C=E5=81=87=E8=B3=87?= =?UTF-8?q?=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + app/app-wipproduction-log.php | 133 ++++++++++++++++++++++++++++++---- app/db/database.php | 2 +- wms/header.php | 9 ++- 4 files changed, 127 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index ad45ae2c..3faa3b7a 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ wms/excel/estimated_shipping_date_report.xlsx wms/mkt/WriteOffRepair.xlsx wms/contract/images/contracts wms/test.php +app/account_log/ diff --git a/app/app-wipproduction-log.php b/app/app-wipproduction-log.php index 6f95a3d4..0fe9a30c 100644 --- a/app/app-wipproduction-log.php +++ b/app/app-wipproduction-log.php @@ -23,7 +23,107 @@ $data = array(); # 設置一個空陣列來放資料is if ($user_id == 'A000000001') { $sql = "SELECT * FROM wipproduction where (facilityno = '$facilityno') order by id desc"; # sql語法存在變數中 } else { - $sql = " + + if (in_array($facilityno, [ + '3JX01701', '3JX01702', '3JX01703', '3JX01704', '3JX01705', '3JX01706', '3JX01707', '3JX01708', '3JX01709', '3JX01710', '3JX01711' + ])) { + + $sql = " + SELECT + '0' AS id, + facilityno, + '2024-06-30' AS issue_time, + '生產中' AS 'process', + 'bg-success' AS 'light_color', + '' AS memo, + creater, + create_at + FROM wipwholestatus + WHERE facilityno = '$facilityno' + + UNION + + SELECT + '1' AS id, + facilityno, + SUBSTR(estimated_shipping_date,1,10) AS issue_time, + '生產完成' AS 'process', + 'bg-success' AS 'light_color', + '' AS memo, + creater, + create_at + FROM wipwholestatus + WHERE facilityno = '$facilityno' + AND estimated_shipping_date != '' + AND estimated_shipping_date IS NOT NULL + + UNION + + SELECT + '2' AS id, + facilityno, + SUBSTR(estimated_shipping_schedule_date,1,10) AS issue_time, + '預計攬收' AS 'process', + 'bg-success' AS 'light_color', + '' AS memo, + creater, + create_at + FROM wipwholestatus + WHERE facilityno = '$facilityno' + AND estimated_shipping_schedule_date != '' + AND estimated_shipping_schedule_date IS NOT NULL + + UNION + + SELECT + '3' AS id, + facilityno, + SUBSTR(actual_tofactory_date,1,10) AS issue_time, + '攬收成功(桃園)' AS 'process', + 'bg-success' AS 'light_color', + '' AS memo, + creater, + create_at + FROM wipwholestatus + WHERE facilityno = '$facilityno' + AND actual_tofactory_date != '' + AND actual_tofactory_date IS NOT NULL + + UNION + + SELECT + '4' AS id, + facilityno, + '2023-05-10' AS issue_time, + '預計出貨日' AS 'process', + 'bg-success' AS 'light_color', + '' AS memo, + creater, + create_at + FROM wipwholestatus + WHERE facilityno = '$facilityno' + AND real_contract_arrival_date != '' + AND real_contract_arrival_date IS NOT NULL + + UNION + + SELECT + '5' AS id, + facilityno, + SUBSTR(real_arrival_date,1,10) AS issue_time, + '出貨' AS 'process', + 'bg-success' AS 'light_color', + '' AS memo, + creater, + create_at + FROM wipwholestatus + WHERE facilityno = '$facilityno' + AND real_arrival_date != '' + AND real_arrival_date IS NOT NULL + ORDER BY id DESC + "; + } else { + $sql = " SELECT '0' AS id, facilityno, @@ -206,6 +306,7 @@ if ($user_id == 'A000000001') { ORDER BY id DESC "; + } } $data = mysqli_query($link, $sql); # 用mysqli_query方法執行(sql語法)將結果存在變數中 @@ -249,22 +350,22 @@ include "include-header.php"; $j = $j + 1; // if (!empty($data['issue_time'])) { ?> -
- -
"; - // } else { - // echo "
"; - // } - ?> -
-
-

-
-
+
+ +
"; + // } else { + // echo "
"; + // } + ?> +
+
+

+
- - - - - - - - - - - - - - - -
- - - + @@ -137,6 +84,7 @@ $data = json_encode($Bill); + @@ -145,10 +93,47 @@ $data = json_encode($Bill); - + + + + + + + + + + +
簽約款 二次款 貨抵工地款
合約金額
目前應收
+
+ + + + + + + + + + + + + + + + + + + + + +
目前應收已開發票金額未開發票金額已收金額未收金額
+
+ + +
- + @@ -167,29 +152,42 @@ if ((accountidToDepartId($user_id) == '220') || ($user_id == "M0209")) { + + + - - - - - - + + - + $invoice) { ?> - - - - - - + + + + + + + + + - - - + ?> --> + + } + ?>
發票號碼 發票日期發票狀態 發票金額發票號碼 收款日期 收款金額備註狀態功能內含手續費
diff --git a/wms/account-receivable-excel.php b/wms/account-receivable-excel.php index 2d362c31..c6ac37d9 100644 --- a/wms/account-receivable-excel.php +++ b/wms/account-receivable-excel.php @@ -1,51 +1,58 @@ $value){ +foreach ($Bill as $key => $value) { // for ($i = 0; $i < 17; $i++) { // $value[$i] = (isset($value[$i])) ? $value[$i] : 0; // } - $array_data[$key][0] = $key; - $array_data[$key][1] = $value[1]; - $array_data[$key][2] = $value[2]; - $array_data[$key][3] = $value[4]; - $array_data[$key][4] = $value[5]; - $array_data[$key][5] = $value[7]; - $array_data[$key][6] = $value[8]; - $array_data[$key][7] = $value[6]; - $array_data[$key][8] = $value['sign'][1]; - $array_data[$key][9] = $value['second'][1]; - $array_data[$key][10] = $value['arrive'][1]; - $array_data[$key][11] = $value['install'][1]; - $array_data[$key][12] = $value['tryrun'][1]; - $array_data[$key][13] = $value['check'][1]; - $array_data[$key][14] = $value['delivery'][1]; - $array_data[$key][15] = $value['final'][1]; - $array_data[$key][16] = $value['receivable_budget']; - $array_data[$key][17] = str_replace('
','; ',$value['facilities']); + $value['sign'][3] = (isset($value['sign'][3])) ? $value['sign'][3] : 0; + $value['second'][3] = (isset($value['second'][3])) ? $value['second'][3] : 0; + $value['arrive'][3] = (isset($value['arrive'][3])) ? $value['arrive'][3] : 0; + $value['install'][3] = (isset($value['install'][3])) ? $value['install'][3] : 0; + $value['tryrun'][3] = (isset($value['tryrun'][3])) ? $value['tryrun'][3] : 0; + $value['check'][3] = (isset($value['check'][3])) ? $value['check'][3] : 0; + $value['delivery'][3] = (isset($value['delivery'][3])) ? $value['delivery'][3] : 0; + $value['final'][3] = (isset($value['final'][3])) ? $value['final'][3] : 0; + + $array_data[$key] = [ + $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], + $value['sign'][1], $value['second'][1], $value['arrive'][1], $value['install'][1], $value['tryrun'][1], $value['check'][1], $value['delivery'][1], $value['final'][1], + $value['sign'][3], $value['second'][3], $value['arrive'][3], $value['install'][3], $value['tryrun'][3], $value['check'][3], $value['delivery'][3], $value['final'][3], + $value['receivable_budget'], $value['invoice_budget'], $value['received_budget'], str_replace('
', '; ', $value['facilities']) + ]; } $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); -$colomnHeader = ['合約號','部門','經理','營業員','客戶名稱','統一編號','聯絡地址','抬頭','簽約款', -'二次款','貨抵工地款','安裝款','試車款','官檢款','交車款','尾款','目前應收','作番狀態']; -$sheet->fromArray($colomnHeader,NULL,'A1'); +$colomnHeader = [ + '合約號', '部門', '經理', '營業員', '客戶名稱', '統一編號', '聯絡地址', '抬頭', + '簽約款', '二次款', '貨抵工地款', '安裝款', '試車款', '官檢款', '交車款', '尾款', + '目前應收簽約款', '目前應收二次款', '目前應收貨抵工地款', '目前應收安裝款', '目前應收試車款', '目前應收官檢款', '目前應收交車款', '目前應收尾款', + '目前應收', '已開發票金額', '已收金額', '作番狀態' +]; +$sheet->fromArray($colomnHeader, NULL, 'A1'); $rowIndex = 2; -foreach($array_data as $key => $value){ +foreach ($array_data as $key => $value) { $sheet->fromArray([$value], NULL, 'A' . $rowIndex); - $sheet->getStyle('R' . $rowIndex)->getAlignment()->setWrapText(true); + $sheet->getStyle('AB' . $rowIndex)->getAlignment()->setWrapText(true); + $column = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA']; + foreach($column as $col) { + $sheet->getColumnDimension($col)->setAutoSize(true); + } $rowIndex++; } $writer = new Xlsx($spreadsheet); -$excelFileName = 'account-receivable.xlsx'; +$excelFileName = 'account-receivable-test.xlsx'; $writer->save($excelFileName); - +echo $excelFileName; ?> - --> \ No newline at end of file diff --git a/wms/account-receivable-index.php b/wms/account-receivable-index.php index 4ac2afa7..762335a9 100644 --- a/wms/account-receivable-index.php +++ b/wms/account-receivable-index.php @@ -4,56 +4,73 @@ include "header.php"; $follower = find_follow($user_id); $arrayData = []; $receivable_array = []; -$sql_received = "SELECT * FROM arWriteOffBillDetail WHERE (DATALENGTH(OrderBillNo) >0)"; +// T8發票 (有專案的發票) +$sql_invoice = "SELECT DISTINCT +a.InvoiceNo, a.InvoiceTime,a.OAmountWithTax,a.InvoiceState, +b.ProjectId +FROM arSellInvoice as a +LEFT JOIN arSellInvoiceMaterial as b +ON a.BillNo=b.BillNo +WHERE DATALENGTH(b.ProjectId)>0"; + +// T8核銷 +$sql_received = "SELECT +a.BillNo, a.WriteOffBizPartnerId,a.PayWriteOffOAmount, +b.FromBillDate AS ReceivedDate,b.CurrWOFeeOAmt AS Fee, +c.OrderBillNo, c.checkBillNo, c.InvoiceNo, c.BillDate AS CheckBillDate +FROM arWriteOffBill AS a +LEFT JOIN arWriteOffBillRec AS b ON a.BillNo=b.BillNo +LEFT JOIN + (SELECT temp1.*,arWriteOffBillDetail.* FROM arWriteOffBillDetail + LEFT JOIN + (SELECT + arCheckBill.BillNo AS checkBillNo, arCheckBill.BillDate,arCheckBillInvInfo.InvoiceNo + FROM arCheckBill + LEFT JOIN arCheckBillInvInfo + ON arCheckBill.InvoiceBillNo=arCheckBillInvInfo.InvoiceBillNo) AS temp1 + ON temp1.checkBillNo = arWriteOffBillDetail.FromBillNo) AS c +ON a.BillNo=c.BillNo +WHERE DATALENGTH(c.OrderBillNo) >0"; $sql_contract = "SELECT a.BillNo, a.PayStage, a.PlanPayAmt, a.PlanPayDate,s.BizPartnerId,c.BizPartnerName, s.PersonId, c.EnterpriseName, c.TaxNo, c.ContactAddress FROM salOrderStagePay AS a LEFT JOIN salSalesOrder AS s on a.BillNo = s.BillNo LEFT JOIN comBusinessPartner AS c ON s.BizPartnerId=c.BizPartnerId WHERE s.ModeId = 'M' AND (s.CurrentState=2 OR s.CurrentState=4) "; + +// 期初收款資訊 +$sql_opening = " +SELECT * FROM account_received "; + +// 設定權限:看到自己的/下屬的,資訊處跟財會處可以看全部的 if (!(in_array(accountidToDepartId($user_id), array('220', '210')))) { $sql_contract .= "AND (s.PersonId = '$user_id'"; $sql_received .= " AND (PersonId = '$user_id'"; + $sql_opening .= " OR person_id = '$user_id'"; if (count($follower) > 0) { $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_opening .= " OR person_id IN $column_str)"; } else { $sql_contract .= ")"; $sql_received .= ")"; + $sql_opening .= ")"; }; } -$sign60 = array('簽訂後60天', '簽約60日', '簽約後60天', '簽訂後60日內', '訂金支付後60天'); -$sign90 = array('簽約後90天', '簽約後90日', '簽訂後90天'); -$sign120 = array('簽約後120天', '簽約後120日', '簽訂後120天'); + $contract = $conn->query($sql_contract); $received_array = $conn->query($sql_received); +$opening_data = mysqli_query($link, $sql_opening); +$invoice_data = $conn->query($sql_invoice); + -// 取收款資料 account_received -// $received_data = mysqli_query($link, $sql_received); -// foreach ($received_data as $received) { -// if ($received['BillNo'] == 'SO20230801001') { -// $BillNo = 'M230947'; -// } elseif ($received['BillNo'] == 'SO20230801002') { -// $BillNo = 'M231067'; -// } else { -// $BillNo = $received['BillNo']; -// }; -// if (isset($received_array[$BillNo])) { -// $received_array[$BillNo][0] += $received['invoice_amount']; -// $received_array[$BillNo][1] += $received['received_amount']; -// $received['status'] = (intval($received['status']) < 4) ? intval($received['status']) : 0; -// if ($received_array[$BillNo][2] < intval($received['status'])) { -// $received_array[$BillNo][2] = intval($received['status']); -// } -// } else { -// $received_array[$BillNo][0] = $received['invoice_amount']; -// $received_array[$BillNo][1] = $received['received_amount']; -// $received_array[$BillNo][2] = (intval($received['status']) < 4) ? intval($received['status']) : 0; -// } -// } +// 合約收款階段內容分類 +$sign60 = array('簽訂後60天', '簽約60日', '簽約後60天', '簽訂後60日內', '訂金支付後60天'); +$sign90 = array('簽約後90天', '簽約後90日', '簽訂後90天'); +$sign120 = array('簽約後120天', '簽約後120日', '簽訂後120天'); // 將T8合約收款階段資料依據款別分類放進arraData裡 foreach ($contract as $cont) { @@ -71,7 +88,7 @@ foreach ($contract as $cont) { $EnterpriseName = $cont['EnterpriseName']; $TaxNo = $cont['TaxNo']; $ContactAddress = $cont['ContactAddress']; - //['sign'] 0 款項名稱 1 簽約金額 2 簽約日期 ['second'] 0 二次款名 1 二次款金額 2 收款日期 ['arrive'] 0 貨抵工地款名稱 1 貨抵工地款金額 2 貨抵工地收款日期 ['install'] 0 安裝款名 1 安裝金額 2 安裝收款日期 + //['sign'] 0 款項名稱 1 簽約金額 2 簽約日期 3 應收金額 min 最早應收月份 max 最晚應收月份 ['second'] 0 二次款名 1 二次款金額 2 收款日期 ['arrive'] 0 貨抵工地款名稱 1 貨抵工地款金額 2 貨抵工地收款日期 ['install'] 0 安裝款名 1 安裝金額 2 安裝收款日期 //['tryrun'] 0 試車款名 1試車金額 2 試車收款日期 ['check'] 0 官檢款名 1 官檢金額 2 官檢收款日期 ['delivery'] 0 交車款名 1 交車金額 2 交車收款日期 ['final'] 0 尾款名 1 尾款金額 2 尾款收款日期 if (!(isset($arrayData[$BillNo]))) { // 0 部門id 1 部門名稱 2 經理名稱 3 營業員id 4 營業員名稱 5 客戶名稱 6 抬頭 7 統編 8 通訊地址 @@ -80,8 +97,13 @@ foreach ($contract as $cont) { $arrayData[$BillNo][6] = $EnterpriseName; $arrayData[$BillNo][7] = $TaxNo; $arrayData[$BillNo][8] = $ContactAddress; - $arrayData[$BillNo]['received']= array(); + $arrayData[$BillNo]['total_budget'] = 0; + $arrayData[$BillNo]['invoice'] = array(); + $arrayData[$BillNo]['received_budget'] = 0; + $arrayData[$BillNo]['invoice_budget'] = 0; $arrayData[$BillNo]['sign'][1] = $arrayData[$BillNo]['second'][1] = $arrayData[$BillNo]['arrive'][1] = $arrayData[$BillNo]['install'][1] = $arrayData[$BillNo]['tryrun'][1] = $arrayData[$BillNo]['check'][1] = $arrayData[$BillNo]['delivery'][1] = $arrayData[$BillNo]['final'][1] = 0; + $arrayData[$BillNo]['sign']['min'] = $arrayData[$BillNo]['second']['min'] = $arrayData[$BillNo]['arrive']['min'] = $arrayData[$BillNo]['install']['min'] = $arrayData[$BillNo]['tryrun']['min'] = $arrayData[$BillNo]['check']['min'] = $arrayData[$BillNo]['delivery']['min'] = $arrayData[$BillNo]['final']['min'] = array(); + $arrayData[$BillNo]['sign']['max'] = $arrayData[$BillNo]['second']['max'] = $arrayData[$BillNo]['arrive']['max'] = $arrayData[$BillNo]['install']['max'] = $arrayData[$BillNo]['tryrun']['max'] = $arrayData[$BillNo]['check']['max'] = $arrayData[$BillNo]['delivery']['max'] = $arrayData[$BillNo]['final']['max'] = array(); $arrayData[$BillNo]['facilities'] = ""; $arrayData[$BillNo]['total_facility_num'] = $arrayData[$BillNo]['delivery_num'] = $arrayData[$BillNo]['check_num'] = $arrayData[$BillNo]['tryrun_num'] = $arrayData[$BillNo]['install_num'] = $arrayData[$BillNo]['arrive_num'] = $arrayData[$BillNo]['second_num'] = $arrayData[$BillNo]['receivable_budget'] = 0; } @@ -89,6 +111,7 @@ foreach ($contract as $cont) { $arrayData[$BillNo]['second'][0] = $PayStage; $arrayData[$BillNo]['second'][1] = $PayAmount; $arrayData[$BillNo]['second'][2] = $PlanPayDate; + $arrayData[$BillNo]['total_budget'] += $PayAmount; if (isset($arrayData[$BillNo]['sign'][2]) && !is_null($arrayData[$BillNo]['sign'][2])) { $signtime = strtotime(strval($arrayData[$BillNo]['sign'][2])); if (in_array($PayStage, $sign60)) { @@ -113,33 +136,43 @@ foreach ($contract as $cont) { $arrayData[$BillNo]['sign'][0] = $PayStage; $arrayData[$BillNo]['sign'][1] = $PayAmount; $arrayData[$BillNo]['sign'][2] = $PlanPayDate; + $arrayData[$BillNo]['total_budget'] += $PayAmount; + array_push($arrayData[$BillNo]['sign']['min'], intval(substr($PlanPayDate, 4, 2))); + array_push($arrayData[$BillNo]['sign']['max'], intval(substr($PlanPayDate, 4, 2))); } elseif (stristr($PayStage, '試車')) { $arrayData[$BillNo]['tryrun'][0] = $PayStage; $arrayData[$BillNo]['tryrun'][1] = $PayAmount; $arrayData[$BillNo]['tryrun'][2] = $PlanPayDate; + $arrayData[$BillNo]['total_budget'] += $PayAmount; } elseif (stristr($PayStage, '安裝') || stristr($PayStage, '貨抵工地且完工')) { $arrayData[$BillNo]['install'][0] = $PayStage; $arrayData[$BillNo]['install'][1] = $PayAmount; $arrayData[$BillNo]['install'][2] = $PlanPayDate; + $arrayData[$BillNo]['total_budget'] += $PayAmount; } elseif (stristr($PayStage, '貨抵工地') || stristr($PayStage, '貨底工地')) { $arrayData[$BillNo]['arrive'][0] = $PayStage; $arrayData[$BillNo]['arrive'][1] = $PayAmount; $arrayData[$BillNo]['arrive'][2] = $PlanPayDate; + $arrayData[$BillNo]['total_budget'] += $PayAmount; } elseif (stristr($PayStage, '得合格函後6個月') || stristr($PayStage, '核可函取得後6個月') || stristr($PayStage, '交車')) { $arrayData[$BillNo]['delivery'][0] = $PayStage; $arrayData[$BillNo]['delivery'][1] = $PayAmount; $arrayData[$BillNo]['delivery'][2] = $PlanPayDate; + $arrayData[$BillNo]['total_budget'] += $PayAmount; } elseif (stristr($PayStage, '合格') || stristr($PayStage, '驗收') || stristr($PayStage, '許可') || stristr($PayStage, '核可')) { $arrayData[$BillNo]['check'][0] = $PayStage; $arrayData[$BillNo]['check'][1] = $PayAmount; $arrayData[$BillNo]['check'][2] = $PlanPayDate; + $arrayData[$BillNo]['total_budget'] += $PayAmount; } elseif (stristr($PayStage, '驗收完成')) { $arrayData[$BillNo]['final'][0] = $PayStage; $arrayData[$BillNo]['final'][1] = $PayAmount; $arrayData[$BillNo]['final'][2] = $PlanPayDate; + $arrayData[$BillNo]['total_budget'] += $PayAmount; } else { $arrayData[$BillNo]['other'][1] = $PayAmount; $arrayData[$BillNo]['other'][2] = $PlanPayDate; + $arrayData[$BillNo]['total_budget'] += $PayAmount; } } $sql = "SELECT @@ -189,12 +222,24 @@ foreach ($wipwhole_array as $wip) { $estimate_delivery_time = strtotime($wip['estimated_shipping_date']); $secondtime = $estimate_delivery_time - (30 * 86400); $secondtime = date('Ymd', $secondtime); + if (empty($wip['estimated_shipping_date'])) { + $arrayData[$wip['contractno']]['second']['min'] = 0; + } else { + array_push($arrayData[$wip['contractno']]['second']['max'], intval(substr($wip['estimated_shipping_date'], 5, 2))); + array_push($arrayData[$wip['contractno']]['second']['min'], intval(substr($wip['estimated_shipping_date'], 5, 2))); + } $arrayData[$wip['contractno']]['second'][2] = intval($secondtime); } elseif (isset($arrayData[$wip['contractno']]['second'][0]) && stristr($arrayData[$wip['contractno']]['second'][0], '出貨前90天')) { $estimate_delivery_time = strtotime($wip['estimated_shipping_date']); $secondtime = $estimate_delivery_time - (90 * 86400); $secondtime = date('Ymd', $secondtime); $arrayData[$wip['contractno']]['second'][2] = intval($secondtime); + if (empty($wip['estimated_shipping_date'])) { + $arrayData[$wip['contractno']]['second']['min'] = 0; + } else { + array_push($arrayData[$wip['contractno']]['second']['max'], intval(substr($wip['estimated_shipping_date'], 5, 2))); + array_push($arrayData[$wip['contractno']]['second']['min'], intval(substr($wip['estimated_shipping_date'], 5, 2))); + } } if ($wip['delivery_date'] != NULL) { $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交)
"; @@ -205,6 +250,24 @@ foreach ($wipwhole_array as $wip) { $arrayData[$wip['contractno']]['install_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1; + array_push($arrayData[$wip['contractno']]['delivery']['min'], intval(substr($wip['delivery_date'], 5, 2))); + array_push($arrayData[$wip['contractno']]['delivery']['max'], intval(substr($wip['delivery_date'], 5, 2))); + if (!empty($wip['official_check_date']) && $wip['official_check_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['check']['min'], intval(substr($wip['official_check_date'], 5, 2))); + array_push($arrayData[$wip['contractno']]['check']['max'], intval(substr($wip['official_check_date'], 5, 2))); + } + if (!empty($wip['tryrun_end_date']) && $wip['tryrun_end_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['tryrun']['min'], intval(substr($wip['tryrun_end_date'], 5, 2))); + array_push($arrayData[$wip['contractno']]['tryrun']['max'], intval(substr($wip['tryrun_end_date'], 5, 2))); + } + if (!empty($wip['install_end_date']) && $wip['install_end_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['install']['min'], intval(substr($wip['install_end_date'], 5, 2))); + array_push($arrayData[$wip['contractno']]['install']['max'], intval(substr($wip['install_end_date'], 5, 2))); + } + if (!empty($wip['real_arrival_date']) && $wip['real_arrival_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['arrive']['min'], intval(substr($wip['real_arrival_date'], 5, 2))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], intval(substr($wip['real_arrival_date'], 5, 2))); + } } elseif ($wip['official_check_date'] != NULL) { $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢)
"; $arrayData[$wip['contractno']]['total_facility_num'] += 1; @@ -213,6 +276,20 @@ foreach ($wipwhole_array as $wip) { $arrayData[$wip['contractno']]['install_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1; + array_push($arrayData[$wip['contractno']]['check']['min'], intval(substr($wip['official_check_date'], 5, 2))); + array_push($arrayData[$wip['contractno']]['check']['max'], intval(substr($wip['official_check_date'], 5, 2))); + if (!empty($wip['tryrun_end_date']) && $wip['tryrun_end_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['tryrun']['min'], intval(substr($wip['tryrun_end_date'], 5, 2))); + array_push($arrayData[$wip['contractno']]['tryrun']['max'], intval(substr($wip['tryrun_end_date'], 5, 2))); + } + if (!empty($wip['install_end_date']) && $wip['install_end_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['install']['min'], intval(substr($wip['install_end_date'], 5, 2))); + array_push($arrayData[$wip['contractno']]['install']['max'], intval(substr($wip['install_end_date'], 5, 2))); + } + if (!empty($wip['real_arrival_date']) && $wip['real_arrival_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['arrive']['min'], intval(substr($wip['real_arrival_date'], 5, 2))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], intval(substr($wip['real_arrival_date'], 5, 2))); + } } elseif ($wip['tryrun_end_date'] != NULL) { $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢)
"; $arrayData[$wip['contractno']]['total_facility_num'] += 1; @@ -220,17 +297,41 @@ foreach ($wipwhole_array as $wip) { $arrayData[$wip['contractno']]['install_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1; + if (!empty($wip['tryrun_end_date']) && $wip['tryrun_end_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['tryrun']['min'], intval(substr($wip['tryrun_end_date'], 5, 2))); + array_push($arrayData[$wip['contractno']]['tryrun']['max'], intval(substr($wip['tryrun_end_date'], 5, 2))); + } + if (!empty($wip['install_end_date']) && $wip['install_end_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['install']['min'], intval(substr($wip['install_end_date'], 5, 2))); + array_push($arrayData[$wip['contractno']]['install']['max'], intval(substr($wip['install_end_date'], 5, 2))); + } + if (!empty($wip['real_arrival_date']) && $wip['real_arrival_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['arrive']['min'], intval(substr($wip['real_arrival_date'], 5, 2))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], intval(substr($wip['real_arrival_date'], 5, 2))); + } } elseif ($wip['install_end_date'] != NULL) { $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢)
"; $arrayData[$wip['contractno']]['total_facility_num'] += 1; $arrayData[$wip['contractno']]['install_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1; + if (!empty($wip['install_end_date']) && $wip['install_end_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['install']['min'], intval(substr($wip['install_end_date'], 5, 2))); + array_push($arrayData[$wip['contractno']]['install']['max'], intval(substr($wip['install_end_date'], 5, 2))); + } + if (!empty($wip['real_arrival_date']) && $wip['real_arrival_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['arrive']['min'], intval(substr($wip['real_arrival_date'], 5, 2))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], intval(substr($wip['real_arrival_date'], 5, 2))); + } } elseif ($wip['real_arrival_date'] != NULL) { $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地)
"; $arrayData[$wip['contractno']]['total_facility_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1; + if (!empty($wip['real_arrival_date']) && $wip['real_arrival_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['arrive']['min'], intval(substr($wip['real_arrival_date'], 5, 2))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], intval(substr($wip['real_arrival_date'], 5, 2))); + } } elseif (($arrayData[$wip['contractno']]['second'] != NULL) && (isset($arrayData[$wip['contractno']]['second'][2])) && ($arrayData[$wip['contractno']]['second'][2] <= date('Ymd'))) { if ($wip['estimated_shipping_date'] != NULL) { $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['estimated_shipping_date'] . "預計出貨日)
"; @@ -258,20 +359,60 @@ foreach ($wipwhole_array as $wip) { foreach ($arrayData as &$value) { if ($value['total_facility_num'] > 0) { + $month = 11; $value['receivable_budget'] = $value['sign'][1] + ($value['second'][1] * ($value['second_num'] / $value['total_facility_num'])) + ($value['arrive'][1] * ($value['arrive_num'] / $value['total_facility_num'])) + ($value['install'][1] * ($value['install_num'] / $value['total_facility_num'])) + ($value['tryrun'][1] * ($value['tryrun_num'] / $value['total_facility_num'])) + ($value['check'][1] * ($value['check_num'] / $value['total_facility_num'])) + (($value['delivery'][1] + $value['final'][1]) * ($value['delivery_num'] / $value['total_facility_num'])); + $value['sign'][3] = $value['sign'][1]; + $value['second'][3] = $value['second'][1] * ($value['second_num'] / $value['total_facility_num']); + $value['arrive'][3] = $value['arrive'][1] * ($value['arrive_num'] / $value['total_facility_num']); + $value['install'][3] = $value['install'][1] * ($value['install_num'] / $value['total_facility_num']); + $value['tryrun'][3] = $value['tryrun'][1] * ($value['tryrun_num'] / $value['total_facility_num']); + $value['check'][3] = $value['check'][1] * ($value['check_num'] / $value['total_facility_num']); + $value['delivery'][3] = $value['delivery'][1] * ($value['delivery_num'] / $value['total_facility_num']); + $value['final'][3] = $value['final'][1] * ($value['delivery_num'] / $value['total_facility_num']); } + $value['sign']['max'] = empty($value['sign']['max']) ? 0 : (($month - max($value['sign']['max'])) < 0 ? 0 : ($month - max($value['sign']['max']))); + $value['sign']['min'] = empty($value['sign']['min']) ? 0 : (($month - min($value['sign']['min'])) < 0 ? 0 : ($month - min($value['sign']['min']))); + $value['second']['max'] = empty($value['second']['max']) ? 0 : (($month - max($value['second']['max'])) < 0 ? 0 : ($month - max($value['second']['max']))); + $value['second']['min'] = empty($value['second']['min']) ? 0 : (($month - min($value['second']['min'])) < 0 ? 0 : ($month - min($value['second']['min']))); + $value['arrive']['max'] = empty($value['arrive']['max']) ? 0 : (($month - max($value['arrive']['max'])) < 0 ? 0 : ($month - max($value['arrive']['max']))); + $value['arrive']['min'] = empty($value['arrive']['min']) ? 0 : (($month - min($value['arrive']['min'])) < 0 ? 0 : ($month - min($value['arrive']['min']))); + $value['install']['max'] = empty($value['install']['max']) ? 0 : (($month - max($value['install']['max'])) < 0 ? 0 : ($month - max($value['install']['max']))); + $value['install']['min'] = empty($value['install']['min']) ? 0 : (($month - min($value['install']['min'])) < 0 ? 0 : ($month - min($value['install']['min']))); + $value['tryrun']['max'] = empty($value['tryrun']['max']) ? 0 : (($month - max($value['tryrun']['max'])) < 0 ? 0 : ($month - max($value['tryrun']['max']))); + $value['tryrun']['min'] = empty($value['tryrun']['min']) ? 0 : (($month - min($value['tryrun']['min'])) < 0 ? 0 : ($month - min($value['tryrun']['min']))); + $value['check']['max'] = empty($value['check']['max']) ? 0 : (($month - max($value['check']['max'])) < 0 ? 0 : ($month - max($value['check']['max']))); + $value['check']['min'] = empty($value['check']['min']) ? 0 : (($month - min($value['check']['min'])) < 0 ? 0 : ($month - min($value['check']['min']))); + $value['delivery']['max'] = empty($value['delivery']['max']) ? 0 : (($month - max($value['delivery']['max'])) < 0 ? 0 : ($month - max($value['delivery']['max']))); + $value['delivery']['min'] = empty($value['delivery']['min']) ? 0 : (($month - min($value['delivery']['min'])) < 0 ? 0 : ($month - min($value['delivery']['min']))); + $value['final']['max'] = empty($value['final']['max']) ? 0 : (($month - max($value['final']['max'])) < 0 ? 0 : ($month - max($value['final']['max']))); + $value['final']['min'] = empty($value['final']['min']) ? 0 : (($month - min($value['final']['min'])) < 0 ? 0 : ($month - min($value['final']['min']))); } -// array_push($arrayData[$wip['contractno']]['received'], ['assaaa',123124,'sdrfrqa']); - -foreach($received_array as $received){ - - if(isset($arrayData[$received['OrderBillNo']])){ - array_push($arrayData[$received['OrderBillNo']]['received'], [$received['BillNo'],$received['WriteOffBizPartnerId'],$received['OrderBillNo'],]); - +// [invoice][發票號碼][0 發票日期, 1 發票金額, 2 發票狀態, 3 收款日期, 4 收款金額, 5 手續費, 6 核銷單號] +foreach ($invoice_data as $invoice) { + if (isset($arrayData[$invoice['ProjectId']])) { + $arrayData[$invoice['ProjectId']]['invoice_budget'] += intval($invoice['OAmountWithTax']); + $arrayData[$invoice['ProjectId']]['invoice'][$invoice['InvoiceNo']] = [date("Ymd", strtotime($invoice['InvoiceTime'])), $invoice['OAmountWithTax'], $invoice['InvoiceState']]; + } } + +// 把核銷單的內容補到發票資料中 +foreach ($received_array as $received) { + if ($received['OrderBillNo'] == 'SO20230801001') { + $BillNo = 'M230947'; + } elseif ($received['OrderBillNo'] == 'SO20230801002') { + $BillNo = 'M231067'; + } else { + $BillNo = $received['OrderBillNo']; + }; + if (isset($arrayData[$BillNo])) { + if (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']); + } + } } $data = json_encode($arrayData); @@ -315,35 +456,59 @@ $data = json_encode($arrayData); } - -
+
- - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + $value) { + foreach ($arrayData as $key => $value) { ?> @@ -351,19 +516,45 @@ $data = json_encode($arrayData); - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
合約號 部門經理營業員客戶名稱目前應收作番狀態經理營業員客戶名稱簽約款應收簽約金額簽約最大催收次數簽約最小催收次數二次款應收二次金額二次最大催收次數二次最小催收次數貨抵工地款應收貨抵工地金額貨抵工地最大催收次數貨抵工地最小催收次數安裝款應收安裝金額安裝最大催收次數安裝最小催收次數試車款應收試車金額試車最大催收次數試車最小催收次數官檢款應收官檢金額官檢最大催收次數官檢最小催收次數移交款應收移交金額移交最大催收次數移交最小催收次數尾款應收尾款金額尾款最大催收次數尾款最小催收次數合約總金額目前應收已開發票金額已收金額 操作