From 4b91ed03d6cc81a414f849257a4311bd40f5d82e Mon Sep 17 00:00:00 2001 From: Ellin Date: Thu, 15 Feb 2024 17:53:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=87=89=E6=94=B6=E5=B8=B3?= =?UTF-8?q?=E6=AC=BE(=E6=B1=B0=E6=94=B9)=E7=99=BC=E7=A5=A8=E8=88=87?= =?UTF-8?q?=E6=A0=B8=E9=8A=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wms/account-receivable-.xlsx | Bin 59406 -> 0 bytes wms/account-receivable-check.php | 201 -- wms/account-receivable-contract.php | 2817 ++++++++++++++++++-- wms/account-receivable-index.php | 70 +- wms/account-receivable-invoice.php | 1 - wms/account-receivable-received-create.php | 124 - wms/account-receivable-received-edit.php | 142 - wms/account-receivable-received-submit.php | 96 - wms/account-receivable-renovate-index.php | 172 +- wms/account-receivable-repair-index.php | 6 +- wms/account-receivable-test.php | 64 +- 11 files changed, 2878 insertions(+), 815 deletions(-) delete mode 100644 wms/account-receivable-.xlsx delete mode 100644 wms/account-receivable-check.php delete mode 100644 wms/account-receivable-invoice.php delete mode 100644 wms/account-receivable-received-create.php delete mode 100644 wms/account-receivable-received-edit.php delete mode 100644 wms/account-receivable-received-submit.php diff --git a/wms/account-receivable-.xlsx b/wms/account-receivable-.xlsx deleted file mode 100644 index d52740262b01efcfa976f4c16daf1e528695852d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59406 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 diff --git a/wms/account-receivable-check.php b/wms/account-receivable-check.php deleted file mode 100644 index 4ed786aa..00000000 --- a/wms/account-receivable-check.php +++ /dev/null @@ -1,201 +0,0 @@ - - -
- -
- - - -
- -
-
-
-

-
-
-
-
- - -
-
- - -
-
- - -
-
- - -
- -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
-
- - - - - - - - - - - - - - - - - - - - - -
目前應收已開發票金額未開發票金額已收金額未收金額
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - -
簽約款二次款貨抵工地款安裝款試車款官檢款交車款
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - -
發票日期發票金額收款日期收款金額說明功能
- - - - - -
-
- \ No newline at end of file diff --git a/wms/account-receivable-contract.php b/wms/account-receivable-contract.php index dc849699..dbdf791d 100644 --- a/wms/account-receivable-contract.php +++ b/wms/account-receivable-contract.php @@ -1,239 +1,2615 @@ "; -$sql_contract = "SELECT a.BillNo, a.PayStage, a.PlanPayAmt,s.BizPartnerId,c.BizPartnerName -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.BillNo = '$BillNo'"; +$sum_facility = 0; +$sum_A40001 = 0; +$sum_A40008 = 0; +$sum_total_budget = 0; +$average_budget = 0; +$average_A40001 = 0; +$average_A40008 = 0; + -// T8發票 -//M220478 -$sql_invoice = "SELECT DISTINCT +$follower = find_follow($user_id); +$arrayData = []; +$receivable_array = []; +// 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 b.ProjectId='$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"; + +//T8 銷售訂單 階段收款計畫 +$sql_contract = "SELECT a.BillNo,s.BillDate, 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) "; + +// T8 銷售訂單 作番金額 +$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 "; + +//作番大日程 +$sql = "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 "; + +//ORDER BY contractno + +// 期初收款資訊 +$sql_opening = " +SELECT * FROM account_received "; +// 設定權限:看到自己的/下屬的,資訊處跟財會處可以看全部的 +if ((in_array($user_id, array('M0060', 'M0175'))) || (in_array(accountidToDepartId($user_id), array('220', '210')))) { + $sql .= " ORDER BY contractno"; + $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'"; + 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)"; + $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 .= ")"; + }; +} $contract = $conn->query($sql_contract); -$invoices = $conn->query($sql_invoice); +$received_array = $conn->query($sql_received); +$opening_data = mysqli_query($link, $sql_opening); +$invoice_data = $conn->query($sql_invoice); +$contract_budget_data = $conn->query($sql_contract_budget); -// foreach($contract as $con){ -// print_r($con); -// echo "
"; -// } +$contract_budget = array(); +foreach ($contract_budget_data as $cont) { + if (isset($contract_budget[$cont['BillNo']])) { + $contract_budget[$cont['BillNo']]['total'] += $cont['OAmountWithTax']; + } else { + $contract_budget[$cont['BillNo']]['total'] = $cont['OAmountWithTax']; + } + if (isset($contract_budget[$cont['BillNo']][$cont['CU_MaterialId']])) { + $contract_budget[$cont['BillNo']][$cont['CU_MaterialId']]['total'] += $cont['OAmountWithTax']; + } else { + $contract_budget[$cont['BillNo']][$cont['CU_MaterialId']]['total'] = $cont['OAmountWithTax']; + $contract_budget[$cont['BillNo']][$cont['CU_MaterialId']]['A40001'] = 0; + $contract_budget[$cont['BillNo']][$cont['CU_MaterialId']]['A40008'] = 0; + }; + if (isset($contract_budget[$cont['BillNo']][$cont['MaterialId']])) { + $contract_budget[$cont['BillNo']][$cont['MaterialId']] += $cont['OAmountWithTax']; + } else { + $contract_budget[$cont['BillNo']][$cont['MaterialId']] = $cont['OAmountWithTax']; + } + $contract_budget[$cont['BillNo']][$cont['CU_MaterialId']][$cont['MaterialId']] = $cont['OAmountWithTax']; +} +/* 計算比例 +@param $facility_list array +@param $contract_no string +@param $contract_budget array +return float */ +function get_ratio($facility_list, $contract_no, $contract_budget) +{ + $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']; + } + } + return $ratio; + } +} +// 合約收款階段內容分類 +$sign60 = array('簽訂後60天', '簽約60日', '簽約後60天', '簽訂後60日內', '訂金支付後60天'); +$sign90 = array('簽約後90天', '簽約後90日', '簽訂後90天'); +$sign120 = array('簽約後120天', '簽約後120日', '簽訂後120天'); +// 將T8合約收款階段資料依據款別分類放進arraData裡 +foreach ($contract as $cont) { + if ($cont['BillNo'] == 'SO20230801001') { + $BillNo = 'M230947'; + } elseif ($cont['BillNo'] == 'SO20230801002') { + $BillNo = 'M231067'; + } else { + $BillNo = $cont['BillNo']; + }; + $BillDate = $cont['BillDate']; + $PayStage = $cont['PayStage']; + $PlanPayDate = $cont['PlanPayDate']; + $PayAmount = $cont['PlanPayAmt']; + $partnerName = $cont['BizPartnerName']; + $EnterpriseName = $cont['EnterpriseName']; + $TaxNo = $cont['TaxNo']; + $ContactAddress = $cont['ContactAddress']; + //['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 尾款收款日期 + //['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數 + if (!(isset($arrayData[$BillNo]))) { + // 0 部門id 1 部門名稱 2 經理名稱 3 營業員id 4 營業員名稱 5 客戶名稱 6 抬頭 7 統編 8 通訊地址 9 T8單據日期 + $arrayData[$BillNo] = [0, 0, 0, 0, 0, 0, 0, 0, 0]; + $arrayData[$BillNo][5] = $partnerName; + $arrayData[$BillNo][6] = $EnterpriseName; + $arrayData[$BillNo][7] = $TaxNo; + $arrayData[$BillNo][8] = $ContactAddress; + $arrayData[$BillNo][9] = $BillDate; + $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]['sign_num'] = $arrayData[$BillNo]['receivable_budget'] = 0; + $arrayData[$BillNo]['total_list'] = $arrayData[$BillNo]['sign_list'] = $arrayData[$BillNo]['second_list'] = $arrayData[$BillNo]['arrive_list'] = $arrayData[$BillNo]['install_list'] = $arrayData[$BillNo]['tryrun_list'] = $arrayData[$BillNo]['check_list'] = $arrayData[$BillNo]['delivery_list'] = $arrayData[$BillNo]['final_list'] = []; + } + if (stristr($PayStage, '二次款') || (stristr($PayStage, '出貨前') && $PayStage != "寶佳出貨前30天") || stristr($PayStage, '簽約後') || stristr($PayStage, '訂金支付後') || stristr($PayStage, '簽訂後') || stristr($PayStage, '建照核發時') || stristr($PayStage, '簽約60') || stristr($PayStage, '寶佳出貨後10天')) { + $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)) { + $secondtime = $signtime + (60 * 86400); + $secondtime = date('Ymd', $secondtime); + $arrayData[$BillNo]['second'][2] = strval($secondtime); + } elseif (in_array($PayStage, $sign90)) { + $secondtime = $signtime + (90 * 86400); + $secondtime = date('Ymd', $secondtime); + $arrayData[$BillNo]['second'][2] = strval($secondtime); + } elseif (in_array($PayStage, $sign120)) { + $secondtime = $signtime + (120 * 86400); + $secondtime = date('Ymd', $secondtime); + $arrayData[$BillNo]['second'][2] = strval($secondtime); + } elseif (stristr($PayStage, '簽訂後30天')) { + $secondtime = $signtime + (30 * 86400); + $secondtime = date('Ymd', $secondtime); + $arrayData[$BillNo]['second'][2] = strval($secondtime); + } + } + } elseif ($PayStage == '簽約' || stristr($PayStage, '簽定') || stristr($PayStage, '簽訂') || stristr($PayStage, '訂金') || stristr($PayStage, '工地動工') || $PayStage == '寶佳出貨前30天') { + $arrayData[$BillNo]['sign'][0] = $PayStage; + $arrayData[$BillNo]['sign'][1] = $PayAmount; + $arrayData[$BillNo]['sign'][2] = $PlanPayDate; + $arrayData[$BillNo]['total_budget'] += $PayAmount; + $arrayData[$BillNo]['receivable_budget'] += $PayAmount; + if (isset($PlanPayDate) && !empty($PlanPayDate) && $PayStage != "寶佳出貨前30天") { + array_push($arrayData[$BillNo]['sign']['min'], strtotime(strval($PlanPayDate))); + array_push($arrayData[$BillNo]['sign']['max'], strtotime(strval($PlanPayDate))); + } + } 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; + } +} +//取作番大日程作番與時程 +// real_contract_arrival_date 預計出貨日 +// real_arrival_date 實際出貨日 +$wipwhole_array = mysqli_query($link, $sql); +foreach ($wipwhole_array as $wip) { + $today = strtotime(date('Ymd')); + //[合約號]['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數 + if (isset($arrayData[$wip['contractno']])) { + // 整理合約資料 + $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']]['total_facility_num'] += 1; + $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; + // [合約號]['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']]['A40001'] = (isset($contract_budget[$wip['contractno']][$wip['facilityno']]['A40001']) && !is_null($contract_budget[$wip['contractno']][$wip['facilityno']]['A40001'])) ? $contract_budget[$wip['contractno']][$wip['facilityno']]['A40001'] : 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; -// foreach ($contract as $cont) { -// if ($cont['BillNo'] == 'SO20230801002') { -// $BillNo = 'M231067'; -// }else{ -// $BillNo = $cont['BillNo']; -// }; -// $PayStage = $cont['PayStage']; -// $PayAmount = $cont['PlanPayAmt']; -// $partnerName = $cont['BizPartnerName']; -// if(isset($arrayData[$BillNo])){ -// array_push($arrayData[$BillNo], $PayStage); -// array_push($arrayData[$BillNo], $PayAmount); + // [合約號][作番號][款別] ['con'] [金額]/[合約預計收款日期] + // [合約號][作番號][款別] ['inv'] [金額]/[發票開立日期] + // [合約號][作番號][款別] ['rec'] [金額]/[實際收款日期] + $contractstage = array('sign', 'second', 'arrive', 'install', 'tryrun', 'check', 'delivery', 'final'); + foreach ($contractstage as $i) { + $arrayData[$wip['contractno']][$wip['facilityno']][$i] = ['', 0, '', 0, 0, 0, 0]; + $arrayData[$wip['contractno']][$wip['facilityno']][$i]['inv']['date'] = ""; + $arrayData[$wip['contractno']][$wip['facilityno']][$i]['inv']['budget'] = 0; + $arrayData[$wip['contractno']][$wip['facilityno']][$i]['rec']['date'] = ""; + $arrayData[$wip['contractno']][$wip['facilityno']][$i]['rec']['budget'] = 0; + $arrayData[$wip['contractno']][$wip['facilityno']][$i]['con']['date'] = (isset($arrayData[$wip['contractno']][$i][2])) ? $arrayData[$wip['contractno']][$i][2] : ""; + $arrayData[$wip['contractno']][$wip['facilityno']][$i]['con']['budget'] = 0; + } + // 補上寶佳 (出貨前) 收款時間 -// }else{ -// $arrayData[$BillNo][0] = $BillNo; -// $arrayData[$BillNo][1] = $partnerName; -// array_push($arrayData[$BillNo], $PayStage); -// array_push($arrayData[$BillNo], $PayAmount); + if (isset($arrayData[$wip['contractno']]['sign'][0]) && $arrayData[$wip['contractno']]['sign'][0] == '寶佳出貨前30天') { + if ($wip['real_arrival_date'] != NULL) { + $estimate_delivery_time = strtotime($wip['real_arrival_date']); + $signtime = $estimate_delivery_time - (30 * 86400); + $signtime = date('Ymd', $signtime); + $arrayData[$wip['contractno']]['sign'][2] = strval($signtime); + array_push($arrayData[$wip['contractno']]['sign']['max'], strtotime(strval($signtime))); + array_push($arrayData[$wip['contractno']]['sign']['min'], strtotime(strval($signtime))); + } elseif ($wip['real_contract_arrival_date'] != NULL) { + $estimate_delivery_time = strtotime($wip['real_contract_arrival_date']); + $signtime = $estimate_delivery_time - (30 * 86400); + $signtime = date('Ymd', $signtime); + $arrayData[$wip['contractno']]['sign'][2] = strval($signtime); + array_push($arrayData[$wip['contractno']]['sign']['max'], strtotime(strval($signtime))); + array_push($arrayData[$wip['contractno']]['sign']['min'], strtotime(strval($signtime))); + } + } + // 補上二次款 (出貨前) 收款時間,條件不是"出貨前"就pass + if (isset($arrayData[$wip['contractno']]['second'][0]) && stristr($arrayData[$wip['contractno']]['second'][0], '出貨前30天')) { + if (empty($wip['real_contract_arrival_date'])) { + } else { + $estimate_delivery_time = strtotime($wip['real_contract_arrival_date']); + $secondtime = $estimate_delivery_time - (30 * 86400); + $secondtime = date('Ymd', $secondtime); + $arrayData[$wip['contractno']]['second'][2] = strval($secondtime); + array_push($arrayData[$wip['contractno']]['second']['max'], strtotime(strval($secondtime))); + array_push($arrayData[$wip['contractno']]['second']['min'], strtotime(strval($secondtime))); + } + } elseif (isset($arrayData[$wip['contractno']]['second'][0]) && stristr($arrayData[$wip['contractno']]['second'][0], '出貨前90天')) { + if (empty($wip['real_contract_arrival_date'])) { + } else { + $estimate_delivery_time = strtotime($wip['real_contract_arrival_date']); + $secondtime = $estimate_delivery_time - (90 * 86400); + $secondtime = date('Ymd', $secondtime); + $arrayData[$wip['contractno']]['second'][2] = strval($secondtime); + array_push($arrayData[$wip['contractno']]['second']['max'], strtotime(strval($secondtime))); + array_push($arrayData[$wip['contractno']]['second']['min'], strtotime(strval($secondtime))); + } + } elseif (isset($arrayData[$wip['contractno']]['second'][0]) && stristr($arrayData[$wip['contractno']]['second'][0], '出貨前120天')) { + if (empty($wip['real_contract_arrival_date'])) { + } else { + $estimate_delivery_time = strtotime($wip['real_contract_arrival_date']); + $secondtime = $estimate_delivery_time - (120 * 86400); + $secondtime = date('Ymd', $secondtime); + $arrayData[$wip['contractno']]['second'][2] = strval($secondtime); + array_push($arrayData[$wip['contractno']]['second']['max'], strtotime(strval($secondtime))); + array_push($arrayData[$wip['contractno']]['second']['min'], strtotime(strval($secondtime))); + } + } elseif (isset($arrayData[$wip['contractno']]['second'][0]) && $arrayData[$wip['contractno']]['second'][0] == '寶佳出貨後10天') { + + if ($wip['real_arrival_date'] != NULL) { + $estimate_delivery_time = strtotime($wip['real_arrival_date']); + $secondtime = $estimate_delivery_time + (10 * 86400); + $secondtime = date('Ymd', $secondtime); + $arrayData[$wip['contractno']]['second'][2] = strval($secondtime); + array_push($arrayData[$wip['contractno']]['second']['max'], strtotime(strval($secondtime))); + array_push($arrayData[$wip['contractno']]['second']['min'], strtotime(strval($secondtime))); + } else { + $estimate_delivery_time = strtotime($wip['real_contract_arrival_date']); + $secondtime = $estimate_delivery_time + (10 * 86400); + $secondtime = date('Ymd', $secondtime); + $arrayData[$wip['contractno']]['second'][2] = strval($secondtime); + array_push($arrayData[$wip['contractno']]['second']['max'], strtotime($secondtime)); + array_push($arrayData[$wip['contractno']]['second']['min'], strtotime(strval($secondtime))); + } + } + //根據作番狀態填入facilities,計算各階段數量、一個合約有幾個作番,增加作番資料 + // real_contract_arrival_date 預計出貨日=預計到貨日=預計貨抵工地 + // real_arrival_date 實際出貨日=實際到貨日=實際貨抵工地 + //----------------------------------------寶佳的另外處理--------------------------------------------------- + $sign_status_tmp = !empty($arrayData[$wip['contractno']]['sign'][0]) ? $arrayData[$wip['contractno']]['sign'][0] : null; + if ($sign_status_tmp == "寶佳出貨前30天") { + // if ($arrayData[$wip['contractno']]['sign'][0] == "寶佳出貨前30天") { + $facility_status = ""; + array_push($arrayData[$wip['contractno']]['total_list'], $wip['facilityno']); + $today = strtotime(date('Ymd')); + $contractday = strtotime($arrayData[$wip['contractno']]['sign'][2]); + $month = collect_month($contractday); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['sign'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['sign'][2] = $arrayData[$wip['contractno']]['sign'][2]; + if ($today > $contractday) { + $arrayData[$wip['contractno']]['sign_num'] += 1; + array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']); + $facility_status = $wip['facilityno'] . " (出貨前30天" . $arrayData[$wip['contractno']]['sign'][2] . "已過)
"; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status; + //二次款 + $contractday = strtotime($arrayData[$wip['contractno']]['second'][2]); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['second'][2] = $arrayData[$wip['contractno']]['second'][2]; + $month = collect_month($contractday); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['second'][6] = $month; + if ($today > $contractday) { + $arrayData[$wip['contractno']]['second_num'] += 1; + array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']); + $facility_status = $wip['facilityno'] . " (出貨後10天" . $arrayData[$wip['contractno']]['second'][2] . "已過)
"; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status; + //貨抵工地款 + if ($wip['real_arrival_date'] != NULL) { + $estimate_time = strtotime($wip['real_arrival_date']); + $contractday = $estimate_time + (90 * 86400); + $month = collect_month($contractday); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][2] = strval(date('Ymd', $contractday)); + if ($today > $contractday) { + $arrayData[$wip['contractno']]['arrive_num'] += 1; + array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['arrive'][2] = strval(date('Y-m-d', $contractday)); + $facility_status = $wip['facilityno'] . " (貨抵工地後90天" . $arrayData[$wip['contractno']]['arrive'][2] . "已過)
"; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status; + //試車款 + if ($wip['tryrun_end_date'] != NULL) { + $estimate_time = strtotime($wip['tryrun_end_date']); + $contractday = $estimate_time + (90 * 86400); + $month = collect_month($contractday); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['tryrun'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['tryrun'][2] = strval(date('Ymd', $contractday)); + if ($today > $contractday) { + $arrayData[$wip['contractno']]['tryrun_num'] += 1; + array_push($arrayData[$wip['contractno']]['tryrun_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['tryrun'][2] = strval(date('Y-m-d', $contractday)); + $facility_status = $wip['facilityno'] . " (試車後90天" . $arrayData[$wip['contractno']]['tryrun'][2] . "已過)
"; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status; + //交車款 + if ($wip['delivery_date'] != NULL) { + $estimate_time = strtotime($wip['delivery_date']); + $contractday = $estimate_time + (270 * 86400); + $month = collect_month($contractday); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][2] = strval(date('Ymd', $contractday)); + if ($today > $contractday) { + $arrayData[$wip['contractno']]['delivery_num'] += 1; + array_push($arrayData[$wip['contractno']]['delivery_list'], $wip['facilityno']); + array_push($arrayData[$wip['contractno']]['final_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['delivery'][2] = strval(date('Y-m-d', $contractday)); + $facility_status = $wip['facilityno'] . " (交車後270天" . $arrayData[$wip['contractno']]['delivery'][2] . "已過)
"; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status; + } + } + } + } + } + } + } + } else { + $facility_status = $wip['facilityno'] . " (出貨前30天" . $arrayData[$wip['contractno']]['sign'][2] . "未到)
"; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status; + } + $arrayData[$wip['contractno']]['facilities'] .= $facility_status; + } else { + $sign_tmp = !empty($arrayData[$wip['contractno']]['sign'][2]) ? $arrayData[$wip['contractno']]['sign'][2] : ''; + $signtime = strtotime($sign_tmp); + // $signtime = strtotime($arrayData[$wip['contractno']]['sign'][2]); + array_push($arrayData[$wip['contractno']]['total_list'], $wip['facilityno']); + $month = collect_month($signtime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['sign'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['sign'][2] = strval(date('Ymd', $signtime)); + if (isset($arrayData[$wip['contractno']]['second'][2]) && ($arrayData[$wip['contractno']]['second'][2] !== NULL)) { + $secondtime = strtotime($arrayData[$wip['contractno']]['second'][2]); + $month = collect_month($secondtime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['second'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['second'][2] = strval(date('Ymd', $secondtime)); + } + if ($wip['delivery_date'] != NULL) { + $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交)
"; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交)
"; + $arrayData[$wip['contractno']]['tryrun_num'] += 1; + array_push($arrayData[$wip['contractno']]['tryrun_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['install_num'] += 1; + array_push($arrayData[$wip['contractno']]['install_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['arrive_num'] += 1; + array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['second_num'] += 1; + array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['sign_num'] += 1; + array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']); + + if (isset($arrayData[$wip['contractno']]['delivery'][0]) && $arrayData[$wip['contractno']]['delivery'][0] == "交車後270天") { + $estimate_delivery_time = strtotime($wip['delivery_date']); + $arrivetime = $estimate_delivery_time + (90 * 86400); + $month = collect_month($arrivetime); + if ($today > $arrivetime) { + $arrayData[$wip['contractno']]['delivery_num'] += 1; + array_push($arrayData[$wip['contractno']]['delivery_list'], $wip['facilityno']); + array_push($arrayData[$wip['contractno']]['final_list'], $wip['facilityno']); + } + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][2] = strval(date('Ymd', $arrivetime)); + $arrivetime = date('Ymd', $arrivetime); + $arrayData[$wip['contractno']]['delivery'][2] = strval($secondtime); + array_push($arrayData[$wip['contractno']]['delivery']['min'], strtotime(strval($arrivetime))); + array_push($arrayData[$wip['contractno']]['delivery']['max'], strtotime(strval($arrivetime))); + } else { + $arrayData[$wip['contractno']]['delivery_num'] += 1; + array_push($arrayData[$wip['contractno']]['delivery_list'], $wip['facilityno']); + array_push($arrayData[$wip['contractno']]['final_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['check_num'] += 1; + array_push($arrayData[$wip['contractno']]['check_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['delivery'][2] = strval($wip['delivery_date']); + $deliverytime = strtotime($wip['delivery_date']); + $month = collect_month($deliverytime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][2] = strval(date('Ymd', $deliverytime)); + array_push($arrayData[$wip['contractno']]['delivery']['min'], strtotime(strval($wip['delivery_date']))); + array_push($arrayData[$wip['contractno']]['delivery']['max'], strtotime(strval($wip['delivery_date']))); + } + if (!empty($wip['official_check_date']) && $wip['official_check_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['check']['min'], strtotime(strval($wip['official_check_date']))); + array_push($arrayData[$wip['contractno']]['check']['max'], strtotime(strval($wip['official_check_date']))); + $checktime = strtotime($wip['official_check_date']); + $month = collect_month($checktime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['check'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['check'][2] = strval(date('Ymd', $checktime)); + } + if (!empty($wip['tryrun_end_date']) && $wip['tryrun_end_date'] != NULL) { + if ($arrayData[$wip['contractno']]['tryrun'][0] == "安裝試車後90天") { + $estimate_delivery_time = strtotime($wip['tryrun_end_date']); + $tryruntime = $estimate_delivery_time + (90 * 86400); + $tryruntime = date('Ymd', $secondtime); + $arrayData[$wip['contractno']]['tryrun'][2] = strval($secondtime); + array_push($arrayData[$wip['contractno']]['tryrun']['min'], strtotime(strval($tryruntime))); + array_push($arrayData[$wip['contractno']]['tryrun']['max'], strtotime(strval($tryruntime))); + $month = collect_month($tryruntime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['tryrun'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['tryrun'][2] = strval(date('Ymd', $tryruntime)); + } else { + $arrayData[$wip['contractno']]['tryrun'][2] = strval($wip['tryrun_end_date']); + array_push($arrayData[$wip['contractno']]['tryrun']['min'], strtotime(strval($wip['tryrun_end_date']))); + array_push($arrayData[$wip['contractno']]['tryrun']['max'], strtotime(strval($wip['tryrun_end_date']))); + $tryruntime = strtotime($wip['tryrun_end_date']); + $month = collect_month($tryruntime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['tryrun'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['tryrun'][2] = strval(date('Ymd', $tryruntime)); + } + } + if (!empty($wip['install_end_date']) && $wip['install_end_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['install']['min'], strtotime(strval($wip['install_end_date']))); + array_push($arrayData[$wip['contractno']]['install']['max'], strtotime(strval($wip['install_end_date']))); + $installtime = strtotime($wip['install_end_date']); + $month = collect_month($installtime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['install'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['install'][2] = strval(date('Ymd', $installtime)); + } + if (!empty($wip['real_arrival_date']) && $wip['real_arrival_date'] != NULL) { + if ($arrayData[$wip['contractno']]['arrive'][0] == "貨抵工地後90天") { + $estimate_delivery_time = strtotime($wip['real_arrival_date']); + $arrivetime = $estimate_delivery_time + (90 * 86400); + $month = collect_month($arrivetime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][2] = strval(date('Ymd', $arrivetime)); + $arrivetime = date('Ymd', $secondtime); + $arrayData[$wip['contractno']]['arrive'][2] = strval($secondtime); + array_push($arrayData[$wip['contractno']]['arrive']['min'], strtotime(strval($arrivetime))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], strtotime(strval($arrivetime))); + } else { + $arrivetime = strtotime($wip['real_arrival_date']); + $month = collect_month($arrivetime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][2] = strval(date('Ymd', $arrivetime)); + $arrayData[$wip['contractno']]['arrive'][2] = strval($wip['real_arrival_date']); + array_push($arrayData[$wip['contractno']]['arrive']['min'], strtotime(strval($wip['real_arrival_date']))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], strtotime(strval($wip['real_arrival_date']))); + } + } + } elseif ($wip['official_check_date'] != NULL) { + $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢)
"; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢)
"; + $arrayData[$wip['contractno']]['check_num'] += 1; + array_push($arrayData[$wip['contractno']]['check_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['tryrun_num'] += 1; + array_push($arrayData[$wip['contractno']]['tryrun_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['install_num'] += 1; + array_push($arrayData[$wip['contractno']]['install_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['arrive_num'] += 1; + array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['second_num'] += 1; + array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['sign_num'] += 1; + array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']); + if (!empty($wip['official_check_date']) && $wip['official_check_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['check']['min'], strtotime(strval($wip['official_check_date']))); + array_push($arrayData[$wip['contractno']]['check']['max'], strtotime(strval($wip['official_check_date']))); + $checktime = strtotime($wip['official_check_date']); + $month = collect_month($checktime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['check'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['check'][2] = strval(date('Ymd', $checktime)); + } + + if (!empty($wip['tryrun_end_date']) && $wip['tryrun_end_date'] != NULL) { + if (isset($arrayData[$wip['contractno']]['tryrun'][0]) && $arrayData[$wip['contractno']]['tryrun'][0] == "安裝試車後90天") { + $estimate_delivery_time = strtotime($wip['tryrun_end_date']); + $tryruntime = $estimate_delivery_time + (90 * 86400); + $month = collect_month($tryruntime); + $tryruntime = date('Ymd', $tryruntime); + $arrayData[$wip['contractno']]['tryrun'][2] = strval($secondtime); + array_push($arrayData[$wip['contractno']]['tryrun']['min'], strtotime(strval($tryruntime))); + array_push($arrayData[$wip['contractno']]['tryrun']['max'], strtotime(strval($tryruntime))); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['tryrun'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['tryrun'][2] = strval($tryruntime); + } else { + $tryruntime = strtotime($wip['tryrun_end_date']); + $month = collect_month($tryruntime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['tryrun'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['tryrun'][2] = strval(date('Ymd', $tryruntime)); + $arrayData[$wip['contractno']]['tryrun'][2] = strval($wip['tryrun_end_date']); + array_push($arrayData[$wip['contractno']]['tryrun']['min'], strtotime(strval($wip['tryrun_end_date']))); + array_push($arrayData[$wip['contractno']]['tryrun']['max'], strtotime(strval($wip['tryrun_end_date']))); + } + } + if (!empty($wip['install_end_date']) && $wip['install_end_date'] != NULL) { + $installtime = strtotime($wip['install_end_date']); + $month = collect_month($installtime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['install'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['install'][2] = strval(date('Ymd', $installtime)); + array_push($arrayData[$wip['contractno']]['install']['min'], strtotime(strval($wip['install_end_date']))); + array_push($arrayData[$wip['contractno']]['install']['max'], strtotime(strval($wip['install_end_date']))); + } + if (!empty($wip['real_arrival_date']) && $wip['real_arrival_date'] != NULL) { + if (isset($arrayData[$wip['contractno']]['arrive'][0]) && $arrayData[$wip['contractno']]['arrive'][0] == "貨抵工地後90天") { + $estimate_delivery_time = strtotime($wip['real_arrival_date']); + $arrivetime = $estimate_delivery_time + (90 * 86400); + $month = collect_month($arrivetime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][2] = strval(date('Ymd', $arrivetime)); + $arrivetime = date('Ymd', $secondtime); + $arrayData[$wip['contractno']]['arrive'][2] = strval($secondtime); + array_push($arrayData[$wip['contractno']]['arrive']['min'], strtotime(strval($arrivetime))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], strtotime(strval($arrivetime))); + } else { + $arrayData[$wip['contractno']]['arrive'][2] = strval($wip['real_arrival_date']); + array_push($arrayData[$wip['contractno']]['arrive']['min'], strtotime(strval($wip['real_arrival_date']))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], strtotime(strval($wip['real_arrival_date']))); + $arrivetime = strtotime($wip['real_arrival_date']); + $month = collect_month($arrivetime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][2] = strval(date('Ymd', $arrivetime)); + } + } else { + if ($arrayData[$wip['contractno']]['arrive'][0] == "貨抵工地後90天") { + $estimate_delivery_time = strtotime($wip['real_contract_arrival_date']); + $arrivetime = $estimate_delivery_time + (90 * 86400); + $arrivetime = date('Ymd', $secondtime); + $arrayData[$wip['contractno']]['arrive'][2] = strval($secondtime); + array_push($arrayData[$wip['contractno']]['arrive']['min'], strtotime(strval($arrivetime))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], strtotime(strval($arrivetime))); + } else { + $arrayData[$wip['contractno']]['arrive'][2] = strval($wip['real_contract_arrival_date']); + array_push($arrayData[$wip['contractno']]['arrive']['min'], strtotime(strval($wip['real_contract_arrival_date']))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], strtotime(strval($wip['real_contract_arrival_date']))); + } + } + } elseif ($wip['tryrun_end_date'] != NULL) { + $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢)
"; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢)
"; + $arrayData[$wip['contractno']]['tryrun_num'] += 1; + array_push($arrayData[$wip['contractno']]['tryrun_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['install_num'] += 1; + array_push($arrayData[$wip['contractno']]['install_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['arrive_num'] += 1; + array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['second_num'] += 1; + array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['sign_num'] += 1; + array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']); + if (!empty($wip['tryrun_end_date']) && $wip['tryrun_end_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['tryrun']['min'], strtotime(strval($wip['tryrun_end_date']))); + array_push($arrayData[$wip['contractno']]['tryrun']['max'], strtotime(strval($wip['tryrun_end_date']))); + $tryruntime = strtotime($wip['tryrun_end_date']); + $month = collect_month($tryruntime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['tryrun'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['tryrun'][2] = strval(date('Ymd', $tryruntime)); + } + if (!empty($wip['install_end_date']) && $wip['install_end_date'] != NULL) { + array_push($arrayData[$wip['contractno']]['install']['min'], strtotime(strval($wip['install_end_date']))); + array_push($arrayData[$wip['contractno']]['install']['max'], strtotime(strval($wip['install_end_date']))); + $installtime = strtotime($wip['install_end_date']); + $month = collect_month($installtime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['install'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['install'][2] = strval(date('Ymd', $installtime)); + } + if (!empty($wip['real_arrival_date']) && $wip['real_arrival_date'] != NULL) { + if ($arrayData[$wip['contractno']]['arrive'][0] == "貨抵工地後90天") { + $estimate_delivery_time = strtotime($wip['real_arrival_date']); + $arrivetime = $estimate_delivery_time + (90 * 86400); + $month = collect_month($arrivetime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][2] = strval(date('Ymd', $arrivetime)); + $arrivetime = date('Ymd', $arrivetime); + $arrayData[$wip['contractno']]['arrive'][2] = strval($arrivetime); + array_push($arrayData[$wip['contractno']]['arrive']['min'], strtotime(strval($arrivetime))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], strtotime(strval($arrivetime))); + } else { + $arrivetime = strtotime($wip['real_arrival_date']); + $month = collect_month($arrivetime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][2] = strval(date('Ymd', $arrivetime)); + $arrayData[$wip['contractno']]['arrive'][2] = strval($wip['real_arrival_date']); + array_push($arrayData[$wip['contractno']]['arrive']['min'], strtotime(strval($wip['real_arrival_date']))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], strtotime(strval($wip['real_arrival_date']))); + } + } else { + if ($arrayData[$wip['contractno']]['arrive'][0] == "貨抵工地後90天") { + $estimate_delivery_time = strtotime($wip['real_contract_arrival_date']); + $arrivetime = $estimate_delivery_time + (90 * 86400); + $arrivetime = date('Ymd', $arrivetime); + $arrayData[$wip['contractno']]['arrive'][2] = strval($arrivetime); + array_push($arrayData[$wip['contractno']]['arrive']['min'], strtotime(strval($arrivetime))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], strtotime(strval($arrivetime))); + } else { + $arrayData[$wip['contractno']]['arrive'][2] = strval($wip['real_contract_arrival_date']); + array_push($arrayData[$wip['contractno']]['arrive']['min'], strtotime(strval($wip['real_contract_arrival_date']))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], strtotime(strval($wip['real_contract_arrival_date']))); + } + } + } elseif ($wip['install_end_date'] != NULL) { + $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢)
"; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢)
"; + $arrayData[$wip['contractno']]['install_num'] += 1; + array_push($arrayData[$wip['contractno']]['install_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['arrive_num'] += 1; + array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['second_num'] += 1; + array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['sign_num'] += 1; + array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']); + if (!empty($wip['install_end_date']) && $wip['install_end_date'] != NULL) { + $installtime = strtotime($wip['install_end_date']); + $month = collect_month($installtime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['install'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['install'][2] = strval(date('Ymd', $installtime)); + array_push($arrayData[$wip['contractno']]['install']['min'], strtotime(strval($wip['install_end_date']))); + array_push($arrayData[$wip['contractno']]['install']['max'], strtotime(strtotime(strval($wip['install_end_date'])))); + } + if (!empty($wip['real_arrival_date']) && $wip['real_arrival_date'] != NULL) { + if ($arrayData[$wip['contractno']]['arrive'][0] == "貨抵工地後90天") { + $estimate_delivery_time = strtotime($wip['real_arrival_date']); + $arrivetime = $estimate_delivery_time + (90 * 86400); + $month = collect_month($arrivetime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][2] = strval(date('Ymd', $arrivetime)); + $arrivetime = date('Ymd', $arrivetime); + $arrayData[$wip['contractno']]['arrive'][2] = strval($arrivetime); + array_push($arrayData[$wip['contractno']]['arrive']['min'], strtotime(strval($arrivetime))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], strtotime(strval($arrivetime))); + } else { + $arrivetime = strtotime($wip['real_arrival_date']); + $month = collect_month($arrivetime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][2] = strval(date('Ymd', $arrivetime)); + $arrayData[$wip['contractno']]['arrive'][2] = strval($wip['real_arrival_date']); + array_push($arrayData[$wip['contractno']]['arrive']['min'], strtotime(strval($wip['real_arrival_date']))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], strtotime(strval($wip['real_arrival_date']))); + } + } else { + if ($arrayData[$wip['contractno']]['arrive'][0] == "貨抵工地後90天") { + $estimate_delivery_time = strtotime($wip['real_contract_arrival_date']); + $arrivetime = $estimate_delivery_time + (90 * 86400); + $arrivetime = date('Ymd', $secondtime); + $arrayData[$wip['contractno']]['arrive'][2] = strval($secondtime); + array_push($arrayData[$wip['contractno']]['arrive']['min'], strtotime(strval($arrivetime))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], strtotime(strval($arrivetime))); + } else { + $arrayData[$wip['contractno']]['arrive'][2] = strval($wip['real_contract_arrival_date']); + array_push($arrayData[$wip['contractno']]['arrive']['min'], strtotime(strval($wip['real_contract_arrival_date']))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], strtotime(strval($wip['real_contract_arrival_date']))); + } + } + } elseif ($wip['real_arrival_date'] != NULL) { + $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地)
"; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地)
"; + $arrayData[$wip['contractno']]['arrive_num'] += 1; + array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['second_num'] += 1; + array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['sign_num'] += 1; + array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']); + + if ($arrayData[$wip['contractno']]['arrive'][0] == "貨抵工地後90天") { + $estimate_delivery_time = strtotime($wip['real_arrival_date']); + $arrivetime = $estimate_delivery_time + (90 * 86400); + $month = collect_month($arrivetime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][2] = strval(date('Ymd', $arrivetime)); + $arrivetime = date('Ymd', $arrivetime); + $arrayData[$wip['contractno']]['arrive'][2] = strval($arrivetime); + array_push($arrayData[$wip['contractno']]['arrive']['min'], strtotime(strval($arrivetime))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], strtotime(strval($arrivetime))); + } else { + $arrivetime = strtotime($wip['real_arrival_date']); + $month = collect_month($arrivetime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][2] = strval(date('Ymd', $arrivetime)); + $arrayData[$wip['contractno']]['arrive'][2] = strval($wip['real_arrival_date']); + array_push($arrayData[$wip['contractno']]['arrive']['min'], strtotime(strval($wip['real_arrival_date']))); + array_push($arrayData[$wip['contractno']]['arrive']['max'], strtotime(strval($wip['real_arrival_date']))); + } + } elseif (($arrayData[$wip['contractno']]['second'] != NULL) && (isset($arrayData[$wip['contractno']]['second'][2])) && ($arrayData[$wip['contractno']]['second'][2] <= date('Ymd'))) { + $secondtime = strtotime($arrayData[$wip['contractno']]['second'][2]); + $month = collect_month($secondtime); + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['second'][6] = $month; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['second'][2] = strval(date('Ymd', $secondtime)); + $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (已達二次款收款條件)
"; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (已達二次款收款條件)
"; + $arrayData[$wip['contractno']]['second_num'] += 1; + array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']); + $arrayData[$wip['contractno']]['sign_num'] += 1; + array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']); + } else { + $arrayData[$wip['contractno']]['sign_num'] += 1; + array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']); + if ($wip['real_contract_arrival_date'] != NULL) { + $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['real_contract_arrival_date'] . "預計出貨日)
"; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['real_contract_arrival_date'] . "預計出貨日)
"; + } elseif ($wip['estimated_shipping_date'] != NULL) { + $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['estimated_shipping_date'] . "預計出港日)
"; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['estimated_shipping_date'] . "預計出港日)
"; + } else { + $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (預計出港日待確認)
"; + $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (預計出港日待確認)
"; + } + } + } + } +} +// foreach ($arrayData as $key => $value) { +// echo $key."
"; +// print_r($value['total_list']); +// echo " / 總 "; +// print_r($value['sign_list']); +// echo " / 訂金
"; +// print_r($value['arrive_list']); +// echo " / 貨抵 "; +// print_r($value['install_list']); +// echo " / 安裝
"; +// print_r($value['tryrun_list']); +// echo " / 試車 "; +// print_r($value['check_list']); +// echo " / 官檢
"; +// print_r($value['delivery_list']); +// echo " / 移交 "; +// print_r($value['final_list']); +// echo " / 結案
"; +// echo "---------------------------
"; +// foreach($value['sign_list'] as $fac){ +// echo $fac."========="; // } -// }; -// foreach($arrayData as $data){ -// foreach($data as $value){ -// echo $value.";"; -// } -// echo "
"; // } +// 計算每個合約的應收款、作番總數 +$today_date = new DateTime(date('Y-m-d', strtotime('-1 month', strtotime(date('Y-m-d'))))); +$contractstage = array('sign', 'second', 'arrive', 'install', 'tryrun', 'check', 'delivery', 'final'); +foreach ($arrayData as &$value) { + if ($value['total_facility_num'] > 0) { + $sign_ratio = get_ratio($value['sign_list'], $value[10], $contract_budget); + $value['sign'][3] = $value['sign'][1] * $sign_ratio; + $second_ratio = get_ratio($value['second_list'], $value[10], $contract_budget); + $value['second'][3] = $value['second'][1] * $second_ratio; + $arrive_ratio = get_ratio($value['arrive_list'], $value[10], $contract_budget); + $value['arrive'][3] = $value['arrive'][1] * $arrive_ratio; + $install_ratio = get_ratio($value['install_list'], $value[10], $contract_budget); + $value['install'][3] = $value['install'][1] * $install_ratio; + $tryrun_ratio = get_ratio($value['tryrun_list'], $value[10], $contract_budget); + $value['tryrun'][3] = $value['tryrun'][1] * $tryrun_ratio; + $check_ratio = get_ratio($value['check_list'], $value[10], $contract_budget); + $value['check'][3] = $value['check'][1] * $check_ratio; + $delivery_ratio = get_ratio($value['delivery_list'], $value[10], $contract_budget); + $value['delivery'][3] = $value['delivery'][1] * $delivery_ratio; + $final_ratio = get_ratio($value['final_list'], $value[10], $contract_budget); + $value['final'][3] = $value['final'][1] * $final_ratio; + $value['receivable_budget'] = $value['sign'][3] + $value['second'][3] + $value['arrive'][3] + $value['install'][3] + $value['tryrun'][3] + $value['check'][3] + $value['delivery'][3] + $value['final'][3]; + } + //['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數 + // 計算每台作番金額與各階段應收金額 + if (isset($value['facility'])) { + foreach ($value['facility'] as &$val) { + foreach ($contractstage as $stage) { + if (isset($value[$stage][0]) && !empty($value[$stage][0])) { + $val[$stage][0] = $value[$stage][0]; + if (isset($contract_budget[$value[10]]['total']) && isset($contract_budget[$value[10]][$val['no']]['total'])) { + $ratio = $contract_budget[$value[10]][$val['no']]['total'] / $contract_budget[$value[10]]['total']; + } else { + $ratio = 0; + } + $val[$stage][1] = $value[$stage][1] * $ratio; + $val[$stage][3] = (!(isset($val[$stage][6])) || $val[$stage][6] == 0) ? 0 : $val[$stage][1]; + $val['total_budget'] += $val[$stage][1]; + $val['receivable_budget'] += $val[$stage][3]; + } + } + } + } + + + + // 計算最大催收次數與最小催收次數 + foreach ($contractstage as $i) { + if (!empty($value[$i]['min']) && count($value[$i]['min']) > 0) { + $latest_timestamp = max($value[$i]['min']); + $latest_date = new DateTime(); + $latest_date->setTimestamp($latest_timestamp); + if ($latest_date < $today_date) { + $interval = $latest_date->diff($today_date); + $month = $interval->format('%m'); + $value[$i]['min'] = $month; + } else { + $value[$i]['min'] = 0; + } + } else { + $value[$i]['min'] = 0; + }; + if (!empty($value[$i]['max']) && count($value[$i]['max']) > 0) { + $latest_timestamp = min($value[$i]['max']); + $latest_date = new DateTime(); + $latest_date->setTimestamp($latest_timestamp); + if ($latest_date < $today_date) { + $interval = $latest_date->diff($today_date); + $month = $interval->format('%m'); + $value[$i]['max'] = $month; + } else { + $value[$i]['max'] = 0; + } + } else { + $value[$i]['max'] = 0; + }; + } +} + +// [合約號][作番號][款別] ['con'] [金額]/[合約預計收款日期] +// [合約號][作番號][款別] ['inv'] [金額]/[發票開立日期] +// [合約號][作番號][款別] ['rec'] [金額]/[實際收款日期] +foreach ($wipwhole_array as $wip) { + if (isset($arrayData[$wip['contractno']]) && isset($arrayData[$wip['contractno']][$wip['facilityno']]) && !empty($arrayData[$wip['contractno']]['total_facility_num'])) { + $stagearray = array('sign', 'second', 'arrive', 'install', 'tryrun', 'check', 'delivery', 'final'); + foreach ($stagearray as $stage) { + $arrayData[$wip['contractno']][$wip['facilityno']][$stage]['con'] = $arrayData[$wip['contractno']][$stage][1] / $arrayData[$wip['contractno']]['total_facility_num']; + } + } +} +// [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']); + } + } +} + +//['sign'] 0 款項名稱 1 簽約金額 2 簽約日期 3 應收金額 4 已收金額 5 催收金額 6 已開發票金額 7 未開發票金額 min 最早應收月份 max 最晚應收月份 +foreach ($arrayData as $key => &$data) { + //['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數 7 已開發票金額 8 未開發票金額 + //作番 + $facilities = array(); + if (isset($data['facility'])) { + foreach ($data['facility'] as $fakey => $val) { + array_push($facilities, $fakey); + } + } + + $tmp_data = $data['received_budget']; + $tmp_invoice = $data['invoice_budget']; + if (isset($data['sign'][3]) && $data['sign'][3] > 0) { + if ($tmp_data > 0) { + if (($tmp_data - $data['sign'][3]) >= 0) { + $data['sign'][4] = $data['sign'][3]; + $tmp_data -= $data['sign'][3]; + $tmp_facility_received = $data['sign'][4]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['sign'][3]) && $data['facility'][$this_facility]['sign'][3] > 0) { + if ($tmp_facility_received > 0) { + if ($tmp_facility_received >= $data['facility'][$this_facility]['sign'][3]) { + $data['facility'][$this_facility]['sign'][4] = $data['facility'][$this_facility]['sign'][3]; + $data['facility'][$this_facility]['sign'][5] = 0; + $tmp_facility_received -= $data['facility'][$this_facility]['sign'][3]; + } else { + $data['facility'][$this_facility]['sign'][4] = $tmp_facility_received; + $data['facility'][$this_facility]['sign'][5] = $data['facility'][$this_facility]['sign'][3] - $data['facility'][$this_facility]['sign'][4]; + $tmp_facility_received = 0; + } + } else { + $data['facility'][$this_facility]['sign'][4] = 0; + $data['facility'][$this_facility]['sign'][5] = $data['facility'][$this_facility]['sign'][3]; + } + } else { + $data['facility'][$this_facility]['sign'][4] = 0; + $data['facility'][$this_facility]['sign'][5] = 0; + } + if ($data['facility'][$this_facility]['sign'][5] == 0) { + $data['facility'][$this_facility]['sign'][6] = 0; + } + } + } else { + $data['sign'][4] = $tmp_data; + $tmp_data = 0; + $tmp_facility_received = $data['sign'][4]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['sign'][3]) && $data['facility'][$this_facility]['sign'][3] > 0) { + if ($tmp_facility_received > 0) { + if ($tmp_facility_received >= $data['facility'][$this_facility]['sign'][3]) { + $data['facility'][$this_facility]['sign'][4] = $data['facility'][$this_facility]['sign'][3]; + $data['facility'][$this_facility]['sign'][5] = 0; + $tmp_facility_received -= $data['facility'][$this_facility]['sign'][3]; + } else { + $data['facility'][$this_facility]['sign'][4] = $tmp_facility_received; + $data['facility'][$this_facility]['sign'][5] = $data['facility'][$this_facility]['sign'][3] - $data['facility'][$this_facility]['sign'][4]; + $tmp_facility_received = 0; + } + } else { + $data['facility'][$this_facility]['sign'][4] = 0; + $data['facility'][$this_facility]['sign'][5] = $data['facility'][$this_facility]['sign'][3]; + } + } else { + $data['facility'][$this_facility]['sign'][4] = 0; + $data['facility'][$this_facility]['sign'][5] = 0; + } + if ($data['facility'][$this_facility]['sign'][5] == 0) { + $data['facility'][$this_facility]['sign'][6] = 0; + } + } + } + $data['sign'][5] = $data['sign'][3] - $data['sign'][4]; + } else { + $data['sign'][4] = 0; + $data['sign'][5] = $data['sign'][3]; + foreach ($facilities as $this_facility) { + $data['facility'][$this_facility]['sign'][4] = 0; + $data['facility'][$this_facility]['sign'][5] = $data['facility'][$this_facility]['sign'][3]; + if ($data['facility'][$this_facility]['sign'][5] == 0) { + $data['facility'][$this_facility]['sign'][6] = 0; + } + } + } + if ($tmp_invoice > 0) { + if (($tmp_invoice - $data['sign'][3]) >= 0) { + $data['sign'][6] = $data['sign'][3]; + $tmp_invoice -= $data['sign'][3]; + $tmp_facility_invoice = $data['sign'][6]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['sign'][3]) && $data['facility'][$this_facility]['sign'][3] > 0) { + if ($tmp_facility_invoice > 0) { + if ($tmp_facility_invoice >= $data['facility'][$this_facility]['sign'][3]) { + $data['facility'][$this_facility]['sign'][7] = $data['facility'][$this_facility]['sign'][3]; + $data['facility'][$this_facility]['sign'][8] = 0; + $tmp_facility_invoice -= $data['facility'][$this_facility]['sign'][3]; + } else { + $data['facility'][$this_facility]['sign'][7] = $tmp_facility_invoice; + $data['facility'][$this_facility]['sign'][8] = $data['facility'][$this_facility]['sign'][3] - $data['facility'][$this_facility]['sign'][7]; + $tmp_facility_invoice = 0; + } + } else { + $data['facility'][$this_facility]['sign'][7] = 0; + $data['facility'][$this_facility]['sign'][8] = $data['facility'][$this_facility]['sign'][3]; + } + } else { + $data['facility'][$this_facility]['sign'][7] = 0; + $data['facility'][$this_facility]['sign'][8] = 0; + } + + } + } else { + $data['sign'][6] = $tmp_invoice; + $tmp_invoice = 0; + $tmp_facility_invoice = $data['sign'][6]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['sign'][3]) && $data['facility'][$this_facility]['sign'][3] > 0) { + if ($tmp_facility_invoice > 0) { + if ($tmp_facility_invoice >= $data['facility'][$this_facility]['sign'][3]) { + $data['facility'][$this_facility]['sign'][7] = $data['facility'][$this_facility]['sign'][3]; + $data['facility'][$this_facility]['sign'][8] = 0; + $tmp_facility_invoice -= $data['facility'][$this_facility]['sign'][3]; + } else { + $data['facility'][$this_facility]['sign'][7] = $tmp_facility_invoice; + $data['facility'][$this_facility]['sign'][8] = $data['facility'][$this_facility]['sign'][3] - $data['facility'][$this_facility]['sign'][7]; + $tmp_facility_invoice = 0; + } + } else { + $data['facility'][$this_facility]['sign'][7] = 0; + $data['facility'][$this_facility]['sign'][8] = $data['facility'][$this_facility]['sign'][3]; + } + } else { + $data['facility'][$this_facility]['sign'][7] = 0; + $data['facility'][$this_facility]['sign'][8] = 0; + } + } + } + $data['sign'][7] = $data['sign'][3] - $data['sign'][6]; + } else { + $data['sign'][6] = 0; + $data['sign'][7] = $data['sign'][3]; + foreach ($facilities as $this_facility) { + $data['facility'][$this_facility]['sign'][7] = 0; + $data['facility'][$this_facility]['sign'][8] = $data['facility'][$this_facility]['sign'][3]; + } + } + } else { + $data['sign'][4] = 0; + $data['sign'][5] = 0; + $data['sign'][6] = 0; + $data['sign'][7] = 0; + } + if (isset($data['second'][3]) && $data['second'][3] > 0) { + if ($tmp_data > 0) { + if (($tmp_data - $data['second'][3]) >= 0) { + $data['second'][4] = $data['second'][3]; + $tmp_data -= $data['second'][3]; + $tmp_facility_received = $data['second'][4]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['second'][3]) && $data['facility'][$this_facility]['second'][3] > 0) { + if ($tmp_facility_received > 0) { + if ($tmp_facility_received >= $data['facility'][$this_facility]['second'][3]) { + $data['facility'][$this_facility]['second'][4] = $data['facility'][$this_facility]['second'][3]; + $data['facility'][$this_facility]['second'][5] = 0; + $tmp_facility_received -= $data['facility'][$this_facility]['second'][3]; + } else { + $data['facility'][$this_facility]['second'][4] = $tmp_facility_received; + $data['facility'][$this_facility]['second'][5] = $data['facility'][$this_facility]['second'][3] - $data['facility'][$this_facility]['second'][4]; + $tmp_facility_received = 0; + } + } else { + $data['facility'][$this_facility]['second'][4] = 0; + $data['facility'][$this_facility]['second'][5] = $data['facility'][$this_facility]['second'][3]; + } + } else { + $data['facility'][$this_facility]['second'][4] = 0; + $data['facility'][$this_facility]['second'][5] = 0; + $data['facility'][$this_facility]['second'][6] = 0; + } + if ($data['facility'][$this_facility]['second'][5] == 0) { + $data['facility'][$this_facility]['second'][6] = 0; + } + } + } else { + $data['second'][4] = $tmp_data; + $tmp_data = 0; + $tmp_facility_received = $data['second'][4]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['second'][3]) && $data['facility'][$this_facility]['second'][3] > 0) { + if ($tmp_facility_received > 0) { + if ($tmp_facility_received >= $data['facility'][$this_facility]['second'][3]) { + $data['facility'][$this_facility]['second'][4] = $data['facility'][$this_facility]['second'][3]; + $data['facility'][$this_facility]['second'][5] = 0; + $tmp_facility_received -= $data['facility'][$this_facility]['second'][3]; + } else { + $data['facility'][$this_facility]['second'][4] = $tmp_facility_received; + $data['facility'][$this_facility]['second'][5] = $data['facility'][$this_facility]['second'][3] - $data['facility'][$this_facility]['second'][4]; + $tmp_facility_received = 0; + } + } else { + $data['facility'][$this_facility]['second'][4] = 0; + $data['facility'][$this_facility]['second'][5] = $data['facility'][$this_facility]['second'][3]; + } + } else { + $data['facility'][$this_facility]['second'][4] = 0; + $data['facility'][$this_facility]['second'][5] = 0; + $data['facility'][$this_facility]['second'][6] = 0; + } + if ($data['facility'][$this_facility]['second'][5] == 0) { + $data['facility'][$this_facility]['second'][6] = 0; + } + } + } + $data['second'][5] = $data['second'][3] - $data['second'][4]; + } else { + $data['second'][4] = 0; + $data['second'][5] = $data['second'][3]; + foreach ($facilities as $this_facility) { + $data['facility'][$this_facility]['second'][4] = 0; + $data['facility'][$this_facility]['second'][5] = $data['facility'][$this_facility]['second'][3]; + if ($data['facility'][$this_facility]['second'][5] == 0) { + $data['facility'][$this_facility]['second'][6] = 0; + } + } + } + if ($tmp_invoice > 0) { + if (($tmp_invoice - $data['second'][3]) >= 0) { + $data['second'][6] = $data['second'][3]; + $tmp_invoice -= $data['second'][3]; + $tmp_facility_invoice = $data['second'][6]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['second'][3]) && $data['facility'][$this_facility]['second'][3] > 0) { + if ($tmp_facility_invoice > 0) { + if ($tmp_facility_invoice >= $data['facility'][$this_facility]['second'][3]) { + $data['facility'][$this_facility]['second'][7] = $data['facility'][$this_facility]['second'][3]; + $data['facility'][$this_facility]['second'][8] = 0; + $tmp_facility_invoice -= $data['facility'][$this_facility]['second'][3]; + } else { + $data['facility'][$this_facility]['second'][7] = $tmp_facility_invoice; + $data['facility'][$this_facility]['second'][8] = $data['facility'][$this_facility]['second'][3] - $data['facility'][$this_facility]['second'][7]; + $tmp_facility_invoice = 0; + } + } else { + $data['facility'][$this_facility]['second'][7] = 0; + $data['facility'][$this_facility]['second'][8] = $data['facility'][$this_facility]['second'][3]; + } + } else { + $data['facility'][$this_facility]['second'][7] = 0; + $data['facility'][$this_facility]['second'][8] = 0; + } + + } + } else { + $data['second'][6] = $tmp_invoice; + $tmp_invoice = 0; + $tmp_facility_invoice = $data['second'][6]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['second'][3]) && $data['facility'][$this_facility]['second'][3] > 0) { + if ($tmp_facility_invoice > 0) { + if ($tmp_facility_invoice >= $data['facility'][$this_facility]['second'][3]) { + $data['facility'][$this_facility]['second'][7] = $data['facility'][$this_facility]['second'][3]; + $data['facility'][$this_facility]['second'][8] = 0; + $tmp_facility_invoice -= $data['facility'][$this_facility]['second'][3]; + } else { + $data['facility'][$this_facility]['second'][7] = $tmp_facility_invoice; + $data['facility'][$this_facility]['second'][8] = $data['facility'][$this_facility]['second'][3] - $data['facility'][$this_facility]['second'][7]; + $tmp_facility_invoice = 0; + } + } else { + $data['facility'][$this_facility]['second'][7] = 0; + $data['facility'][$this_facility]['second'][8] = $data['facility'][$this_facility]['second'][3]; + } + } else { + $data['facility'][$this_facility]['second'][7] = 0; + $data['facility'][$this_facility]['second'][8] = 0; + } + } + } + $data['second'][7] = $data['second'][3] - $data['second'][6]; + } else { + $data['second'][6] = 0; + $data['second'][7] = $data['second'][3]; + foreach ($facilities as $this_facility) { + $data['facility'][$this_facility]['second'][7] = 0; + $data['facility'][$this_facility]['second'][8] = $data['facility'][$this_facility]['second'][3]; + } + } + } else { + $data['second'][4] = 0; + $data['second'][5] = 0; + $data['second'][6] = 0; + $data['second'][7] = 0; + } + + if (isset($data['arrive'][3]) && $data['arrive'][3] > 0) { + + if ($tmp_data > 0) { + if (($tmp_data - $data['arrive'][1]) >= 0) { + $data['arrive'][4] = $data['arrive'][3]; + $tmp_data -= $data['arrive'][3]; + $tmp_facility_received = $data['arrive'][4]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['arrive'][3]) && $data['facility'][$this_facility]['arrive'][3] > 0) { + if ($tmp_facility_received > 0) { + if ($tmp_facility_received >= $data['facility'][$this_facility]['arrive'][3]) { + $data['facility'][$this_facility]['arrive'][4] = $data['facility'][$this_facility]['arrive'][3]; + $data['facility'][$this_facility]['arrive'][5] = 0; + $tmp_facility_received -= $data['facility'][$this_facility]['arrive'][3]; + } else { + $data['facility'][$this_facility]['arrive'][4] = $tmp_facility_received; + $data['facility'][$this_facility]['arrive'][5] = $data['facility'][$this_facility]['arrive'][3] - $data['facility'][$this_facility]['arrive'][4]; + $tmp_facility_received = 0; + } + } else { + $data['facility'][$this_facility]['arrive'][4] = 0; + $data['facility'][$this_facility]['arrive'][5] = $data['facility'][$this_facility]['arrive'][3]; + } + } else { + $data['facility'][$this_facility]['arrive'][4] = 0; + $data['facility'][$this_facility]['arrive'][5] = 0; + $data['facility'][$this_facility]['arrive'][6] = 0; + } + if ($data['facility'][$this_facility]['arrive'][5] == 0) { + $data['facility'][$this_facility]['arrive'][6] = 0; + } + } + } else { + $data['arrive'][4] = $tmp_data; + $tmp_data = 0; + $tmp_facility_received = $data['arrive'][4]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['arrive'][3]) && $data['facility'][$this_facility]['arrive'][3] > 0) { + if ($tmp_facility_received > 0) { + if ($tmp_facility_received >= $data['facility'][$this_facility]['arrive'][3]) { + $data['facility'][$this_facility]['arrive'][4] = $data['facility'][$this_facility]['arrive'][3]; + $data['facility'][$this_facility]['arrive'][5] = 0; + $tmp_facility_received -= $data['facility'][$this_facility]['arrive'][3]; + } else { + $data['facility'][$this_facility]['arrive'][4] = $tmp_facility_received; + $data['facility'][$this_facility]['arrive'][5] = $data['facility'][$this_facility]['arrive'][3] - $data['facility'][$this_facility]['arrive'][4]; + $tmp_facility_received = 0; + } + } else { + $data['facility'][$this_facility]['arrive'][4] = 0; + $data['facility'][$this_facility]['arrive'][5] = $data['facility'][$this_facility]['arrive'][3]; + } + } else { + $data['facility'][$this_facility]['arrive'][4] = 0; + $data['facility'][$this_facility]['arrive'][5] = 0; + $data['facility'][$this_facility]['arrive'][6] = 0; + } + if ($data['facility'][$this_facility]['arrive'][5] == 0) { + $data['facility'][$this_facility]['arrive'][6] = 0; + } + } + } + $data['arrive'][5] = $data['arrive'][3] - $data['arrive'][4]; + } else { + $data['arrive'][4] = 0; + $data['arrive'][5] = $data['arrive'][3]; + foreach ($facilities as $this_facility) { + $data['facility'][$this_facility]['arrive'][4] = 0; + $data['facility'][$this_facility]['arrive'][5] = $data['facility'][$this_facility]['arrive'][3]; + if ($data['facility'][$this_facility]['arrive'][5] == 0) { + $data['facility'][$this_facility]['arrive'][6] = 0; + } + } + } + if ($tmp_invoice > 0) { + if (($tmp_invoice - $data['arrive'][3]) >= 0) { + $data['arrive'][6] = $data['arrive'][3]; + $tmp_invoice -= $data['arrive'][3]; + $tmp_facility_invoice = $data['arrive'][6]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['arrive'][3]) && $data['facility'][$this_facility]['arrive'][3] > 0) { + if ($tmp_facility_invoice > 0) { + if ($tmp_facility_invoice >= $data['facility'][$this_facility]['arrive'][3]) { + $data['facility'][$this_facility]['arrive'][7] = $data['facility'][$this_facility]['arrive'][3]; + $data['facility'][$this_facility]['arrive'][8] = 0; + $tmp_facility_invoice -= $data['facility'][$this_facility]['sign'][3]; + } else { + $data['facility'][$this_facility]['arrive'][7] = $tmp_facility_invoice; + $data['facility'][$this_facility]['arrive'][8] = $data['facility'][$this_facility]['arrive'][3] - $data['facility'][$this_facility]['arrive'][7]; + $tmp_facility_invoice = 0; + } + } else { + $data['facility'][$this_facility]['arrive'][7] = 0; + $data['facility'][$this_facility]['arrive'][8] = $data['facility'][$this_facility]['arrive'][3]; + } + } else { + $data['facility'][$this_facility]['arrive'][7] = 0; + $data['facility'][$this_facility]['arrive'][8] = 0; + } + + } + } else { + $data['arrive'][6] = $tmp_invoice; + $tmp_invoice = 0; + $tmp_facility_invoice = $data['arrive'][6]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['arrive'][3]) && $data['facility'][$this_facility]['arrive'][3] > 0) { + if ($tmp_facility_invoice > 0) { + if ($tmp_facility_invoice >= $data['facility'][$this_facility]['arrive'][3]) { + $data['facility'][$this_facility]['arrive'][7] = $data['facility'][$this_facility]['arrive'][3]; + $data['facility'][$this_facility]['arrive'][8] = 0; + $tmp_facility_invoice -= $data['facility'][$this_facility]['arrive'][3]; + } else { + $data['facility'][$this_facility]['arrive'][7] = $tmp_facility_invoice; + $data['facility'][$this_facility]['arrive'][8] = $data['facility'][$this_facility]['arrive'][3] - $data['facility'][$this_facility]['arrive'][7]; + $tmp_facility_invoice = 0; + } + } else { + $data['facility'][$this_facility]['arrive'][7] = 0; + $data['facility'][$this_facility]['arrive'][8] = $data['facility'][$this_facility]['arrive'][3]; + } + } else { + $data['facility'][$this_facility]['arrive'][7] = 0; + $data['facility'][$this_facility]['arrive'][8] = 0; + } + } + } + $data['arrive'][7] = $data['arrive'][3] - $data['arrive'][6]; + } else { + $data['arrive'][6] = 0; + $data['arrive'][7] = $data['arrive'][3]; + foreach ($facilities as $this_facility) { + $data['facility'][$this_facility]['arrive'][7] = 0; + $data['facility'][$this_facility]['arrive'][8] = $data['facility'][$this_facility]['arrive'][3]; + } + } + } else { + $data['arrive'][4] = 0; + $data['arrive'][5] = 0; + $data['arrive'][6] = 0; + $data['arrive'][7] = 0; + } + + if (isset($data['install'][3]) && $data['install'][3] > 0) { + + if ($tmp_data > 0) { + if (($tmp_data - $data['install'][1]) >= 0) { + $data['install'][4] = $data['install'][3]; + $tmp_data -= $data['install'][3]; + $tmp_facility_received = $data['install'][4]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['install'][3]) && $data['facility'][$this_facility]['install'][3] > 0) { + if ($tmp_facility_received > 0) { + if ($tmp_facility_received >= $data['facility'][$this_facility]['install'][3]) { + $data['facility'][$this_facility]['install'][4] = $data['facility'][$this_facility]['install'][3]; + $data['facility'][$this_facility]['install'][5] = 0; + $tmp_facility_received -= $data['facility'][$this_facility]['install'][3]; + } else { + $data['facility'][$this_facility]['install'][4] = $tmp_facility_received; + $data['facility'][$this_facility]['install'][5] = $data['facility'][$this_facility]['install'][3] - $data['facility'][$this_facility]['install'][4]; + $tmp_facility_received = 0; + } + } else { + $data['facility'][$this_facility]['install'][4] = 0; + $data['facility'][$this_facility]['install'][5] = $data['facility'][$this_facility]['install'][3]; + } + } else { + $data['facility'][$this_facility]['install'][4] = 0; + $data['facility'][$this_facility]['install'][5] = 0; + $data['facility'][$this_facility]['install'][6] = 0; + } + if ($data['facility'][$this_facility]['install'][5] == 0) { + $data['facility'][$this_facility]['install'][6] = 0; + } + } + } else { + $data['install'][4] = $tmp_data; + $tmp_data = 0; + $tmp_facility_received = $data['install'][4]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['install'][3]) && $data['facility'][$this_facility]['install'][3] > 0) { + if ($tmp_facility_received > 0) { + if ($tmp_facility_received >= $data['facility'][$this_facility]['install'][3]) { + $data['facility'][$this_facility]['install'][4] = $data['facility'][$this_facility]['install'][3]; + $data['facility'][$this_facility]['install'][5] = 0; + $tmp_facility_received -= $data['facility'][$this_facility]['install'][3]; + } else { + $data['facility'][$this_facility]['install'][4] = $tmp_facility_received; + $data['facility'][$this_facility]['install'][5] = $data['facility'][$this_facility]['install'][3] - $data['facility'][$this_facility]['install'][4]; + $tmp_facility_received = 0; + } + } else { + $data['facility'][$this_facility]['install'][4] = 0; + $data['facility'][$this_facility]['install'][5] = $data['facility'][$this_facility]['install'][3]; + } + } else { + $data['facility'][$this_facility]['install'][4] = 0; + $data['facility'][$this_facility]['install'][5] = 0; + $data['facility'][$this_facility]['install'][6] = 0; + } + if ($data['facility'][$this_facility]['install'][5] == 0) { + $data['facility'][$this_facility]['install'][6] = 0; + } + } + } + $data['install'][5] = $data['install'][3] - $data['install'][4]; + } else { + $data['install'][4] = 0; + $data['install'][5] = $data['install'][3]; + foreach ($facilities as $this_facility) { + $data['facility'][$this_facility]['install'][4] = 0; + $data['facility'][$this_facility]['install'][5] = $data['facility'][$this_facility]['install'][3]; + if ($data['facility'][$this_facility]['install'][5] == 0) { + $data['facility'][$this_facility]['install'][6] = 0; + } + } + } + if ($tmp_invoice > 0) { + if (($tmp_invoice - $data['install'][3]) >= 0) { + $data['install'][6] = $data['install'][3]; + $tmp_invoice -= $data['install'][3]; + $tmp_facility_invoice = $data['install'][6]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['install'][3]) && $data['facility'][$this_facility]['install'][3] > 0) { + if ($tmp_facility_invoice > 0) { + if ($tmp_facility_invoice >= $data['facility'][$this_facility]['install'][3]) { + $data['facility'][$this_facility]['install'][7] = $data['facility'][$this_facility]['install'][3]; + $data['facility'][$this_facility]['install'][8] = 0; + $tmp_facility_invoice -= $data['facility'][$this_facility]['install'][3]; + } else { + $data['facility'][$this_facility]['install'][7] = $tmp_facility_invoice; + $data['facility'][$this_facility]['install'][8] = $data['facility'][$this_facility]['install'][3] - $data['facility'][$this_facility]['install'][7]; + $tmp_facility_invoice = 0; + } + } else { + $data['facility'][$this_facility]['install'][7] = 0; + $data['facility'][$this_facility]['install'][8] = $data['facility'][$this_facility]['install'][3]; + } + } else { + $data['facility'][$this_facility]['install'][7] = 0; + $data['facility'][$this_facility]['install'][8] = 0; + } + + } + } else { + $data['install'][6] = $tmp_invoice; + $tmp_invoice = 0; + $tmp_facility_invoice = $data['install'][6]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['install'][3]) && $data['facility'][$this_facility]['install'][3] > 0) { + if ($tmp_facility_invoice > 0) { + if ($tmp_facility_invoice >= $data['facility'][$this_facility]['install'][3]) { + $data['facility'][$this_facility]['install'][7] = $data['facility'][$this_facility]['install'][3]; + $data['facility'][$this_facility]['install'][8] = 0; + $tmp_facility_invoice -= $data['facility'][$this_facility]['install'][3]; + } else { + $data['facility'][$this_facility]['install'][7] = $tmp_facility_invoice; + $data['facility'][$this_facility]['install'][8] = $data['facility'][$this_facility]['install'][3] - $data['facility'][$this_facility]['install'][7]; + $tmp_facility_invoice = 0; + } + } else { + $data['facility'][$this_facility]['install'][7] = 0; + $data['facility'][$this_facility]['install'][8] = $data['facility'][$this_facility]['install'][3]; + } + } else { + $data['facility'][$this_facility]['install'][7] = 0; + $data['facility'][$this_facility]['install'][8] = 0; + } + } + } + $data['install'][7] = $data['install'][3] - $data['install'][6]; + } else { + $data['install'][6] = 0; + $data['install'][7] = $data['install'][3]; + foreach ($facilities as $this_facility) { + $data['facility'][$this_facility]['install'][7] = 0; + $data['facility'][$this_facility]['install'][8] = $data['facility'][$this_facility]['install'][3]; + } + } + } else { + $data['install'][4] = 0; + $data['install'][5] = 0; + $data['install'][6] = 0; + $data['install'][7] = 0; + } + + + if (isset($data['tryrun'][3]) && $data['tryrun'][3] > 0) { + if ($tmp_data > 0) { + if (($tmp_data - $data['tryrun'][1]) >= 0) { + $data['tryrun'][4] = $data['tryrun'][3]; + $tmp_data -= $data['tryrun'][3]; + $tmp_facility_received = $data['tryrun'][4]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['tryrun'][3]) && $data['facility'][$this_facility]['tryrun'][3] > 0) { + if ($tmp_facility_received > 0) { + if ($tmp_facility_received >= $data['facility'][$this_facility]['tryrun'][3]) { + $data['facility'][$this_facility]['tryrun'][4] = $data['facility'][$this_facility]['tryrun'][3]; + $data['facility'][$this_facility]['tryrun'][5] = 0; + $tmp_facility_received -= $data['facility'][$this_facility]['tryrun'][3]; + } else { + $data['facility'][$this_facility]['tryrun'][4] = $tmp_facility_received; + $data['facility'][$this_facility]['tryrun'][5] = $data['facility'][$this_facility]['tryrun'][3] - $data['facility'][$this_facility]['tryrun'][4]; + $tmp_facility_received = 0; + } + } else { + $data['facility'][$this_facility]['tryrun'][4] = 0; + $data['facility'][$this_facility]['tryrun'][5] = $data['facility'][$this_facility]['tryrun'][3]; + } + } else { + $data['facility'][$this_facility]['tryrun'][4] = 0; + $data['facility'][$this_facility]['tryrun'][5] = 0; + $data['facility'][$this_facility]['tryrun'][6] = 0; + } + if ($data['facility'][$this_facility]['tryrun'][5] == 0) { + $data['facility'][$this_facility]['tryrun'][6] = 0; + } + } + } else { + $data['tryrun'][4] = $tmp_data; + $tmp_data = 0; + $tmp_facility_received = $data['tryrun'][4]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['tryrun'][3]) && $data['facility'][$this_facility]['tryrun'][3] > 0) { + if ($tmp_facility_received > 0) { + if ($tmp_facility_received >= $data['facility'][$this_facility]['tryrun'][3]) { + $data['facility'][$this_facility]['tryrun'][4] = $data['facility'][$this_facility]['tryrun'][3]; + $data['facility'][$this_facility]['tryrun'][5] = 0; + $tmp_facility_received -= $data['facility'][$this_facility]['tryrun'][3]; + } else { + $data['facility'][$this_facility]['tryrun'][4] = $tmp_facility_received; + $data['facility'][$this_facility]['tryrun'][5] = $data['facility'][$this_facility]['tryrun'][3] - $data['facility'][$this_facility]['tryrun'][4]; + $tmp_facility_received = 0; + } + } else { + $data['facility'][$this_facility]['tryrun'][4] = 0; + $data['facility'][$this_facility]['tryrun'][5] = $data['facility'][$this_facility]['tryrun'][3]; + } + } else { + $data['facility'][$this_facility]['tryrun'][4] = 0; + $data['facility'][$this_facility]['tryrun'][5] = 0; + $data['facility'][$this_facility]['tryrun'][6] = 0; + } + if ($data['facility'][$this_facility]['tryrun'][5] == 0) { + $data['facility'][$this_facility]['tryrun'][6] = 0; + } + } + } + $data['tryrun'][5] = $data['tryrun'][3] - $data['tryrun'][4]; + } else { + $data['tryrun'][4] = 0; + $data['tryrun'][5] = $data['tryrun'][3]; + foreach ($facilities as $this_facility) { + $data['facility'][$this_facility]['tryrun'][4] = 0; + $data['facility'][$this_facility]['tryrun'][5] = $data['facility'][$this_facility]['tryrun'][3]; + if ($data['facility'][$this_facility]['tryrun'][5] == 0) { + $data['facility'][$this_facility]['tryrun'][6] = 0; + } + } + } + if ($tmp_invoice > 0) { + if (($tmp_invoice - $data['tryrun'][3]) >= 0) { + $data['tryrun'][6] = $data['tryrun'][3]; + $tmp_invoice -= $data['tryrun'][3]; + $tmp_facility_invoice = $data['tryrun'][6]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['tryrun'][3]) && $data['facility'][$this_facility]['tryrun'][3] > 0) { + if ($tmp_facility_invoice > 0) { + if ($tmp_facility_invoice >= $data['facility'][$this_facility]['tryrun'][3]) { + $data['facility'][$this_facility]['tryrun'][7] = $data['facility'][$this_facility]['tryrun'][3]; + $data['facility'][$this_facility]['tryrun'][8] = 0; + $tmp_facility_invoice -= $data['facility'][$this_facility]['tryrun'][3]; + } else { + $data['facility'][$this_facility]['tryrun'][7] = $tmp_facility_invoice; + $data['facility'][$this_facility]['tryrun'][8] = $data['facility'][$this_facility]['tryrun'][3] - $data['facility'][$this_facility]['tryrun'][7]; + $tmp_facility_invoice = 0; + } + } else { + $data['facility'][$this_facility]['tryrun'][7] = 0; + $data['facility'][$this_facility]['tryrun'][8] = $data['facility'][$this_facility]['tryrun'][3]; + } + } else { + $data['facility'][$this_facility]['tryrun'][7] = 0; + $data['facility'][$this_facility]['tryrun'][8] = 0; + } + + } + } else { + $data['tryrun'][6] = $tmp_invoice; + $tmp_invoice = 0; + $tmp_facility_invoice = $data['tryrun'][6]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['tryrun'][3]) && $data['facility'][$this_facility]['tryrun'][3] > 0) { + if ($tmp_facility_invoice > 0) { + if ($tmp_facility_invoice >= $data['facility'][$this_facility]['tryrun'][3]) { + $data['facility'][$this_facility]['tryrun'][7] = $data['facility'][$this_facility]['tryrun'][3]; + $data['facility'][$this_facility]['tryrun'][8] = 0; + $tmp_facility_invoice -= $data['facility'][$this_facility]['tryrun'][3]; + } else { + $data['facility'][$this_facility]['tryrun'][7] = $tmp_facility_invoice; + $data['facility'][$this_facility]['tryrun'][8] = $data['facility'][$this_facility]['tryrun'][3] - $data['facility'][$this_facility]['tryrun'][7]; + $tmp_facility_invoice = 0; + } + } else { + $data['facility'][$this_facility]['tryrun'][7] = 0; + $data['facility'][$this_facility]['tryrun'][8] = $data['facility'][$this_facility]['tryrun'][3]; + } + } else { + $data['facility'][$this_facility]['tryrun'][7] = 0; + $data['facility'][$this_facility]['tryrun'][8] = 0; + } + } + } + $data['tryrun'][7] = $data['tryrun'][3] - $data['tryrun'][6]; + } else { + $data['tryrun'][6] = 0; + $data['tryrun'][7] = $data['tryrun'][3]; + foreach ($facilities as $this_facility) { + $data['facility'][$this_facility]['tryrun'][7] = 0; + $data['facility'][$this_facility]['tryrun'][8] = $data['facility'][$this_facility]['tryrun'][3]; + } + } + } else { + $data['tryrun'][4] = 0; + $data['tryrun'][5] = 0; + $data['tryrun'][6] = 0; + $data['tryrun'][7] = 0; + } + + if (isset($data['check'][3]) && $data['check'][3] > 0) { + if ($tmp_data > 0) { + if (($tmp_data - $data['check'][1]) >= 0) { + $data['check'][4] = $data['check'][3]; + $tmp_data -= $data['check'][3]; + $tmp_facility_received = $data['check'][4]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['check'][3]) && $data['facility'][$this_facility]['check'][3] > 0) { + if ($tmp_facility_received > 0) { + if ($tmp_facility_received >= $data['facility'][$this_facility]['check'][3]) { + $data['facility'][$this_facility]['check'][4] = $data['facility'][$this_facility]['check'][3]; + $data['facility'][$this_facility]['check'][5] = 0; + $tmp_facility_received -= $data['facility'][$this_facility]['check'][3]; + } else { + $data['facility'][$this_facility]['check'][4] = $tmp_facility_received; + $data['facility'][$this_facility]['check'][5] = $data['facility'][$this_facility]['check'][3] - $data['facility'][$this_facility]['check'][4]; + $tmp_facility_received = 0; + } + } else { + $data['facility'][$this_facility]['check'][4] = 0; + $data['facility'][$this_facility]['check'][5] = $data['facility'][$this_facility]['check'][3]; + } + } else { + $data['facility'][$this_facility]['check'][4] = 0; + $data['facility'][$this_facility]['check'][5] = 0; + $data['facility'][$this_facility]['check'][6] = 0; + } + if ($data['facility'][$this_facility]['check'][5] == 0) { + $data['facility'][$this_facility]['check'][6] = 0; + } + } + } else { + $data['check'][4] = $tmp_data; + $tmp_data = 0; + $tmp_facility_received = $data['check'][4]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['check'][3]) && $data['facility'][$this_facility]['check'][3] > 0) { + if ($tmp_facility_received > 0) { + if ($tmp_facility_received >= $data['facility'][$this_facility]['check'][3]) { + $data['facility'][$this_facility]['check'][4] = $data['facility'][$this_facility]['check'][3]; + $data['facility'][$this_facility]['check'][5] = 0; + $tmp_facility_received -= $data['facility'][$this_facility]['check'][3]; + } else { + $data['facility'][$this_facility]['check'][4] = $tmp_facility_received; + $data['facility'][$this_facility]['check'][5] = $data['facility'][$this_facility]['check'][3] - $data['facility'][$this_facility]['check'][4]; + $tmp_facility_received = 0; + } + } else { + $data['facility'][$this_facility]['check'][4] = 0; + $data['facility'][$this_facility]['check'][5] = $data['facility'][$this_facility]['check'][3]; + } + } else { + $data['facility'][$this_facility]['check'][4] = 0; + $data['facility'][$this_facility]['check'][5] = 0; + $data['facility'][$this_facility]['check'][6] = 0; + } + if ($data['facility'][$this_facility]['check'][5] == 0) { + $data['facility'][$this_facility]['check'][6] = 0; + } + } + } + $data['check'][5] = $data['check'][3] - $data['check'][4]; + } else { + $data['check'][4] = 0; + $data['check'][5] = $data['check'][3]; + foreach ($facilities as $this_facility) { + $data['facility'][$this_facility]['check'][4] = 0; + $data['facility'][$this_facility]['check'][5] = $data['facility'][$this_facility]['check'][3]; + if ($data['facility'][$this_facility]['check'][5] == 0) { + $data['facility'][$this_facility]['check'][6] = 0; + } + } + } + if ($tmp_invoice > 0) { + if (($tmp_invoice - $data['check'][3]) >= 0) { + $data['check'][6] = $data['check'][3]; + $tmp_invoice -= $data['check'][3]; + $tmp_facility_invoice = $data['check'][6]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['check'][3]) && $data['facility'][$this_facility]['check'][3] > 0) { + if ($tmp_facility_invoice > 0) { + if ($tmp_facility_invoice >= $data['facility'][$this_facility]['check'][3]) { + $data['facility'][$this_facility]['check'][7] = $data['facility'][$this_facility]['check'][3]; + $data['facility'][$this_facility]['check'][8] = 0; + $tmp_facility_invoice -= $data['facility'][$this_facility]['check'][3]; + } else { + $data['facility'][$this_facility]['check'][7] = $tmp_facility_invoice; + $data['facility'][$this_facility]['check'][8] = $data['facility'][$this_facility]['check'][3] - $data['facility'][$this_facility]['check'][7]; + $tmp_facility_invoice = 0; + } + } else { + $data['facility'][$this_facility]['check'][7] = 0; + $data['facility'][$this_facility]['check'][8] = $data['facility'][$this_facility]['check'][3]; + } + } else { + $data['facility'][$this_facility]['check'][7] = 0; + $data['facility'][$this_facility]['check'][8] = 0; + } + + } + } else { + $data['check'][6] = $tmp_invoice; + $tmp_invoice = 0; + $tmp_facility_invoice = $data['check'][6]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['check'][3]) && $data['facility'][$this_facility]['check'][3] > 0) { + if ($tmp_facility_invoice > 0) { + if ($tmp_facility_invoice >= $data['facility'][$this_facility]['check'][3]) { + $data['facility'][$this_facility]['check'][7] = $data['facility'][$this_facility]['check'][3]; + $data['facility'][$this_facility]['check'][8] = 0; + $tmp_facility_invoice -= $data['facility'][$this_facility]['check'][3]; + } else { + $data['facility'][$this_facility]['check'][7] = $tmp_facility_invoice; + $data['facility'][$this_facility]['check'][8] = $data['facility'][$this_facility]['check'][3] - $data['facility'][$this_facility]['check'][7]; + $tmp_facility_invoice = 0; + } + } else { + $data['facility'][$this_facility]['check'][7] = 0; + $data['facility'][$this_facility]['check'][8] = $data['facility'][$this_facility]['check'][3]; + } + } else { + $data['facility'][$this_facility]['check'][7] = 0; + $data['facility'][$this_facility]['check'][8] = 0; + } + } + } + $data['check'][7] = $data['check'][3] - $data['check'][6]; + } else { + $data['check'][6] = 0; + $data['check'][7] = $data['check'][3]; + foreach ($facilities as $this_facility) { + $data['facility'][$this_facility]['check'][7] = 0; + $data['facility'][$this_facility]['check'][8] = $data['facility'][$this_facility]['check'][3]; + } + } + } else { + $data['check'][4] = 0; + $data['check'][5] = 0; + $data['check'][6] = 0; + $data['check'][7] = 0; + } + if (isset($data['delivery'][3]) && $data['delivery'][3] > 0) { + if ($tmp_data > 0) { + if (($tmp_data - $data['delivery'][1]) >= 0) { + $data['delivery'][4] = $data['delivery'][3]; + $tmp_data -= $data['delivery'][3]; + $tmp_facility_received = $data['delivery'][4]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['delivery'][3]) && $data['facility'][$this_facility]['delivery'][3] > 0) { + if ($tmp_facility_received > 0) { + if ($tmp_facility_received >= $data['facility'][$this_facility]['delivery'][3]) { + $data['facility'][$this_facility]['delivery'][4] = $data['facility'][$this_facility]['delivery'][3]; + $data['facility'][$this_facility]['delivery'][5] = 0; + $tmp_facility_received -= $data['facility'][$this_facility]['delivery'][3]; + } else { + $data['facility'][$this_facility]['delivery'][4] = $tmp_facility_received; + $data['facility'][$this_facility]['delivery'][5] = $data['facility'][$this_facility]['delivery'][3] - $data['facility'][$this_facility]['delivery'][4]; + $tmp_facility_received = 0; + } + } else { + $data['facility'][$this_facility]['delivery'][4] = 0; + $data['facility'][$this_facility]['delivery'][5] = $data['facility'][$this_facility]['delivery'][3]; + } + } else { + $data['facility'][$this_facility]['delivery'][4] = 0; + $data['facility'][$this_facility]['delivery'][5] = 0; + $data['facility'][$this_facility]['delivery'][6] = 0; + } + if ($data['facility'][$this_facility]['delivery'][5] == 0) { + $data['facility'][$this_facility]['delivery'][6] = 0; + } + } + } else { + $data['delivery'][4] = $tmp_data; + $tmp_data = 0; + $tmp_facility_received = $data['delivery'][4]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['delivery'][3]) && $data['facility'][$this_facility]['delivery'][3] > 0) { + if ($tmp_facility_received > 0) { + if ($tmp_facility_received >= $data['facility'][$this_facility]['delivery'][3]) { + $data['facility'][$this_facility]['delivery'][4] = $data['facility'][$this_facility]['delivery'][3]; + $data['facility'][$this_facility]['delivery'][5] = 0; + $tmp_facility_received -= $data['facility'][$this_facility]['delivery'][3]; + } else { + $data['facility'][$this_facility]['delivery'][4] = $tmp_facility_received; + $data['facility'][$this_facility]['delivery'][5] = $data['facility'][$this_facility]['delivery'][3] - $data['facility'][$this_facility]['delivery'][4]; + $tmp_facility_received = 0; + } + } else { + $data['facility'][$this_facility]['delivery'][4] = 0; + $data['facility'][$this_facility]['delivery'][5] = $data['facility'][$this_facility]['delivery'][3]; + } + } else { + $data['facility'][$this_facility]['delivery'][4] = 0; + $data['facility'][$this_facility]['delivery'][5] = 0; + $data['facility'][$this_facility]['delivery'][6] = 0; + } + if ($data['facility'][$this_facility]['delivery'][5] == 0) { + $data['facility'][$this_facility]['delivery'][6] = 0; + } + } + } + $data['delivery'][5] = $data['delivery'][3] - $data['delivery'][4]; + } else { + $data['delivery'][4] = 0; + $data['delivery'][5] = $data['delivery'][3]; + foreach ($facilities as $this_facility) { + $data['facility'][$this_facility]['delivery'][4] = 0; + $data['facility'][$this_facility]['delivery'][5] = $data['facility'][$this_facility]['delivery'][3]; + if ($data['facility'][$this_facility]['sign'][5] == 0) { + $data['facility'][$this_facility]['sign'][6] = 0; + } + } + } + if ($tmp_invoice > 0) { + if (($tmp_invoice - $data['delivery'][3]) >= 0) { + $data['delivery'][6] = $data['delivery'][3]; + $tmp_invoice -= $data['delivery'][3]; + $tmp_facility_invoice = $data['delivery'][6]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['delivery'][3]) && $data['facility'][$this_facility]['delivery'][3] > 0) { + if ($tmp_facility_invoice > 0) { + if ($tmp_facility_invoice >= $data['facility'][$this_facility]['delivery'][3]) { + $data['facility'][$this_facility]['delivery'][7] = $data['facility'][$this_facility]['delivery'][3]; + $data['facility'][$this_facility]['delivery'][8] = 0; + $tmp_facility_invoice -= $data['facility'][$this_facility]['sign'][3]; + } else { + $data['facility'][$this_facility]['delivery'][7] = $tmp_facility_invoice; + $data['facility'][$this_facility]['delivery'][8] = $data['facility'][$this_facility]['delivery'][3] - $data['facility'][$this_facility]['delivery'][7]; + $tmp_facility_invoice = 0; + } + } else { + $data['facility'][$this_facility]['delivery'][7] = 0; + $data['facility'][$this_facility]['delivery'][8] = $data['facility'][$this_facility]['delivery'][3]; + } + } else { + $data['facility'][$this_facility]['delivery'][7] = 0; + $data['facility'][$this_facility]['delivery'][8] = 0; + } + + } + } else { + $data['delivery'][6] = $tmp_invoice; + $tmp_invoice = 0; + $tmp_facility_invoice = $data['delivery'][6]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['delivery'][3]) && $data['facility'][$this_facility]['delivery'][3] > 0) { + if ($tmp_facility_invoice > 0) { + if ($tmp_facility_invoice >= $data['facility'][$this_facility]['delivery'][3]) { + $data['facility'][$this_facility]['delivery'][7] = $data['facility'][$this_facility]['delivery'][3]; + $data['facility'][$this_facility]['delivery'][8] = 0; + $tmp_facility_invoice -= $data['facility'][$this_facility]['delivery'][3]; + } else { + $data['facility'][$this_facility]['delivery'][7] = $tmp_facility_invoice; + $data['facility'][$this_facility]['delivery'][8] = $data['facility'][$this_facility]['delivery'][3] - $data['facility'][$this_facility]['delivery'][7]; + $tmp_facility_invoice = 0; + } + } else { + $data['facility'][$this_facility]['delivery'][7] = 0; + $data['facility'][$this_facility]['delivery'][8] = $data['facility'][$this_facility]['delivery'][3]; + } + } else { + $data['facility'][$this_facility]['delivery'][7] = 0; + $data['facility'][$this_facility]['delivery'][8] = 0; + } + } + } + $data['delivery'][7] = $data['delivery'][3] - $data['delivery'][6]; + } else { + $data['delivery'][6] = 0; + $data['delivery'][7] = $data['delivery'][3]; + foreach ($facilities as $this_facility) { + $data['facility'][$this_facility]['delivery'][7] = 0; + $data['facility'][$this_facility]['delivery'][8] = $data['facility'][$this_facility]['delivery'][3]; + } + } + } else { + $data['delivery'][4] = 0; + $data['delivery'][5] = 0; + $data['delivery'][6] = 0; + $data['delivery'][7] = 0; + } + + if (isset($data['final'][3]) && $data['final'][3] > 0) { + if ($tmp_data > 0) { + if (($tmp_data - $data['final'][1]) >= 0) { + $data['final'][4] = $data['final'][3]; + $tmp_data -= $data['final'][3]; + $tmp_facility_received = $data['final'][4]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['final'][3]) && $data['facility'][$this_facility]['final'][3] > 0) { + if ($tmp_facility_received > 0) { + if ($tmp_facility_received >= $data['facility'][$this_facility]['final'][3]) { + $data['facility'][$this_facility]['final'][4] = $data['facility'][$this_facility]['final'][3]; + $data['facility'][$this_facility]['final'][5] = 0; + $tmp_facility_received -= $data['facility'][$this_facility]['final'][3]; + } else { + $data['facility'][$this_facility]['final'][4] = $tmp_facility_received; + $data['facility'][$this_facility]['final'][5] = $data['facility'][$this_facility]['final'][3] - $data['facility'][$this_facility]['final'][4]; + $tmp_facility_received = 0; + } + } else { + $data['facility'][$this_facility]['final'][4] = 0; + $data['facility'][$this_facility]['final'][5] = $data['facility'][$this_facility]['final'][3]; + } + } else { + $data['facility'][$this_facility]['final'][4] = 0; + $data['facility'][$this_facility]['final'][5] = 0; + $data['facility'][$this_facility]['final'][6] = 0; + } + if ($data['facility'][$this_facility]['final'][5] == 0) { + $data['facility'][$this_facility]['final'][6] = 0; + } + } + } else { + $data['final'][4] = $tmp_data; + $tmp_data = 0; + $tmp_facility_received = $data['final'][4]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['final'][3]) && $data['facility'][$this_facility]['final'][3] > 0) { + if ($tmp_facility_received > 0) { + if ($tmp_facility_received >= $data['facility'][$this_facility]['final'][3]) { + $data['facility'][$this_facility]['final'][4] = $data['facility'][$this_facility]['final'][3]; + $data['facility'][$this_facility]['final'][5] = 0; + $tmp_facility_received -= $data['facility'][$this_facility]['final'][3]; + } else { + $data['facility'][$this_facility]['final'][4] = $tmp_facility_received; + $data['facility'][$this_facility]['final'][5] = $data['facility'][$this_facility]['final'][3] - $data['facility'][$this_facility]['final'][4]; + $tmp_facility_received = 0; + } + } else { + $data['facility'][$this_facility]['final'][4] = 0; + $data['facility'][$this_facility]['final'][5] = $data['facility'][$this_facility]['final'][3]; + } + } else { + $data['facility'][$this_facility]['final'][4] = 0; + $data['facility'][$this_facility]['final'][5] = 0; + $data['facility'][$this_facility]['final'][6] = 0; + } + if ($data['facility'][$this_facility]['final'][5] == 0) { + $data['facility'][$this_facility]['final'][6] = 0; + } + } + } + $data['final'][5] = $data['final'][3] - $data['final'][4]; + } else { + $data['final'][4] = 0; + $data['final'][5] = $data['final'][3]; + foreach ($facilities as $this_facility) { + $data['facility'][$this_facility]['final'][4] = 0; + $data['facility'][$this_facility]['final'][5] = $data['facility'][$this_facility]['final'][3]; + } + if ($data['facility'][$this_facility]['final'][5] == 0) { + $data['facility'][$this_facility]['final'][6] = 0; + } + } + if ($tmp_invoice > 0) { + if (($tmp_invoice - $data['final'][3]) >= 0) { + $data['final'][6] = $data['final'][3]; + $tmp_invoice -= $data['final'][3]; + $tmp_facility_invoice = $data['final'][6]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['final'][3]) && $data['facility'][$this_facility]['final'][3] > 0) { + if ($tmp_facility_invoice > 0) { + if ($tmp_facility_invoice >= $data['facility'][$this_facility]['final'][3]) { + $data['facility'][$this_facility]['final'][7] = $data['facility'][$this_facility]['final'][3]; + $data['facility'][$this_facility]['final'][8] = 0; + $tmp_facility_invoice -= $data['facility'][$this_facility]['final'][3]; + } else { + $data['facility'][$this_facility]['final'][7] = $tmp_facility_invoice; + $data['facility'][$this_facility]['final'][8] = $data['facility'][$this_facility]['final'][3] - $data['facility'][$this_facility]['final'][7]; + $tmp_facility_invoice = 0; + } + } else { + $data['facility'][$this_facility]['final'][7] = 0; + $data['facility'][$this_facility]['final'][8] = $data['facility'][$this_facility]['final'][3]; + } + } else { + $data['facility'][$this_facility]['final'][7] = 0; + $data['facility'][$this_facility]['final'][8] = 0; + } + + } + } else { + $data['final'][6] = $tmp_invoice; + $tmp_invoice = 0; + $tmp_facility_invoice = $data['final'][6]; + foreach ($facilities as $this_facility) { + if (isset($data['facility'][$this_facility]['final'][3]) && $data['facility'][$this_facility]['final'][3] > 0) { + if ($tmp_facility_invoice > 0) { + if ($tmp_facility_invoice >= $data['facility'][$this_facility]['final'][3]) { + $data['facility'][$this_facility]['final'][7] = $data['facility'][$this_facility]['final'][3]; + $data['facility'][$this_facility]['final'][8] = 0; + $tmp_facility_invoice -= $data['facility'][$this_facility]['final'][3]; + } else { + $data['facility'][$this_facility]['final'][7] = $tmp_facility_invoice; + $data['facility'][$this_facility]['final'][8] = $data['facility'][$this_facility]['final'][3] - $data['facility'][$this_facility]['final'][7]; + $tmp_facility_invoice = 0; + } + } else { + $data['facility'][$this_facility]['final'][7] = 0; + $data['facility'][$this_facility]['final'][8] = $data['facility'][$this_facility]['final'][3]; + } + } else { + $data['facility'][$this_facility]['final'][7] = 0; + $data['facility'][$this_facility]['final'][8] = 0; + } + } + } + $data['final'][7] = $data['final'][3] - $data['final'][6]; + } else { + $data['final'][6] = 0; + $data['final'][7] = $data['final'][3]; + foreach ($facilities as $this_facility) { + $data['facility'][$this_facility]['final'][7] = 0; + $data['facility'][$this_facility]['final'][8] = $data['facility'][$this_facility]['final'][3]; + } + } + } else { + $data['final'][4] = 0; + $data['final'][5] = 0; + $data['final'][6] = 0; + $data['final'][7] = 0; + } +} + + +//產生excel的array +$excel_aray = array(); +$boga_array = array(); +$exclude_boga_array = array(); +$facility_array = array(); +$facility_boga_array = array(); +$facility_exclude_boga_array = array(); +foreach ($arrayData as $key => $value) { + $sum_A40001 += isset($value['A40001']) ? $value['A40001'] : 0; + $sum_A40008 += isset($value['A40008']) ? $value['A40008'] : 0; + $sum_total_budget += $value['total_budget']; + $sum_facility += $value['total_facility_num']; + $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; + $value[9] = (isset($value[9])) ? Date('Ymd', strtotime($value[9])) : 0; + $contractstage = array('sign', 'second', 'arrive', 'install', 'tryrun', 'check', 'delivery', 'final'); + foreach ($contractstage as $i) { + $value[$i]['max'] = (empty($value[$i]['max']) || is_null($value[$i]['max'])) ? 0 : $value[$i]['max']; + $value[$i]['min'] = (empty($value[$i]['min']) || is_null($value[$i]['min'])) ? 0 : $value[$i]['min']; + $value[$i][4] = (isset($value[$i][4])) ? $value[$i][4] : 0; + $value[$i][5] = (isset($value[$i][5])) ? $value[$i][5] : 0; + $value['A40001'] = (isset($value['A40001'])) ? $value['A40001'] : 0; + $value['A40008'] = (isset($value['A40008'])) ? $value['A40008'] : 0; + }; + + if (isset($value['sign'][0]) && $value['sign'][0] == "寶佳出貨前30天") { + $boga_array[$key] = [ + $value[9], $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], + number_format(round($value['sign'][1])), number_format(round($value['sign'][3])), number_format(round($value['sign'][6])), number_format(round($value['sign'][7])), number_format(round($value['sign'][4])), number_format(round($value['sign'][5])), $value['sign']['max'], $value['sign']['min'], + number_format(round($value['second'][1])), number_format(round($value['second'][3])), number_format(round($value['second'][6])), number_format(round($value['second'][7])), number_format(round($value['second'][4])), number_format(round($value['second'][5])), $value['second']['max'], $value['second']['min'], + number_format(round($value['arrive'][1])), number_format(round($value['arrive'][3])), number_format(round($value['arrive'][6])), number_format(round($value['arrive'][7])), number_format(round($value['arrive'][4])), number_format(round($value['arrive'][5])), $value['arrive']['max'], $value['arrive']['min'], + number_format(round($value['install'][1])), number_format(round($value['install'][3])), number_format(round($value['install'][6])), number_format(round($value['install'][7])), number_format(round($value['install'][4])), number_format(round($value['install'][5])), $value['install']['max'], $value['install']['min'], + number_format(round($value['tryrun'][1])), number_format(round($value['tryrun'][3])), number_format(round($value['tryrun'][6])), number_format(round($value['tryrun'][7])), number_format(round($value['tryrun'][4])), number_format(round($value['tryrun'][5])), $value['tryrun']['max'], $value['tryrun']['min'], + number_format(round($value['check'][1])), number_format(round($value['check'][3])), number_format(round($value['check'][6])), number_format(round($value['check'][7])), number_format(round($value['check'][4])), number_format(round($value['check'][5])), $value['check']['max'], $value['check']['min'], + number_format(round($value['delivery'][1])), number_format(round($value['delivery'][3])), number_format(round($value['delivery'][6])), number_format(round($value['delivery'][7])), number_format(round($value['delivery'][4])), number_format(round($value['delivery'][5])), $value['delivery']['max'], $value['delivery']['min'], + number_format(round($value['final'][1])), number_format(round($value['final'][3])), number_format(round($value['final'][6])), number_format(round($value['final'][7])), number_format(round($value['final'][4])), number_format(round($value['final'][5])), $value['final']['max'], $value['final']['min'], + number_format(round($value['A40001'])), number_format(round($value['A40008'])), number_format(round($value['total_budget'])), number_format(round($value['receivable_budget'])), number_format(round($value['invoice_budget'])), number_format(round($value['received_budget'])), $value['total_facility_num'], str_replace('
', '; ', $value['facilities']) + ]; + } else { + $exclude_boga_array[$key] = [ + $value[9], $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], + number_format(round($value['sign'][1])), number_format(round($value['sign'][3])), number_format(round($value['sign'][6])), number_format(round($value['sign'][7])), number_format(round($value['sign'][4])), number_format(round($value['sign'][5])), $value['sign']['max'], $value['sign']['min'], + number_format(round($value['second'][1])), number_format(round($value['second'][3])), number_format(round($value['second'][6])), number_format(round($value['second'][7])), number_format(round($value['second'][4])), number_format(round($value['second'][5])), $value['second']['max'], $value['second']['min'], + number_format(round($value['arrive'][1])), number_format(round($value['arrive'][3])), number_format(round($value['arrive'][6])), number_format(round($value['arrive'][7])), number_format(round($value['arrive'][4])), number_format(round($value['arrive'][5])), $value['arrive']['max'], $value['arrive']['min'], + number_format(round($value['install'][1])), number_format(round($value['install'][3])), number_format(round($value['install'][6])), number_format(round($value['install'][7])), number_format(round($value['install'][4])), number_format(round($value['install'][5])), $value['install']['max'], $value['install']['min'], + number_format(round($value['tryrun'][1])), number_format(round($value['tryrun'][3])), number_format(round($value['tryrun'][6])), number_format(round($value['tryrun'][7])), number_format(round($value['tryrun'][4])), number_format(round($value['tryrun'][5])), $value['tryrun']['max'], $value['tryrun']['min'], + number_format(round($value['check'][1])), number_format(round($value['check'][3])), number_format(round($value['check'][6])), number_format(round($value['check'][7])), number_format(round($value['check'][4])), number_format(round($value['check'][5])), $value['check']['max'], $value['check']['min'], + number_format(round($value['delivery'][1])), number_format(round($value['delivery'][3])), number_format(round($value['delivery'][6])), number_format(round($value['delivery'][7])), number_format(round($value['delivery'][4])), number_format(round($value['delivery'][5])), $value['delivery']['max'], $value['delivery']['min'], + number_format(round($value['final'][1])), number_format(round($value['final'][3])), number_format(round($value['final'][6])), number_format(round($value['final'][7])), number_format(round($value['final'][4])), number_format(round($value['final'][5])), $value['final']['max'], $value['final']['min'], + number_format(round($value['A40001'])), number_format(round($value['A40008'])), number_format(round($value['total_budget'])), number_format(round($value['receivable_budget'])), number_format(round($value['invoice_budget'])), number_format(round($value['received_budget'])), $value['total_facility_num'], str_replace('
', '; ', $value['facilities']) + ]; + } + + $excel_aray[$key] = [ + $value[9], $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], + number_format(round($value['sign'][1])), number_format(round($value['sign'][3])), number_format(round($value['sign'][6])), number_format(round($value['sign'][7])), number_format(round($value['sign'][4])), number_format(round($value['sign'][5])), $value['sign']['max'], $value['sign']['min'], + number_format(round($value['second'][1])), number_format(round($value['second'][3])), number_format(round($value['second'][6])), number_format(round($value['second'][7])), number_format(round($value['second'][4])), number_format(round($value['second'][5])), $value['second']['max'], $value['second']['min'], + number_format(round($value['arrive'][1])), number_format(round($value['arrive'][3])), number_format(round($value['arrive'][6])), number_format(round($value['arrive'][7])), number_format(round($value['arrive'][4])), number_format(round($value['arrive'][5])), $value['arrive']['max'], $value['arrive']['min'], + number_format(round($value['install'][1])), number_format(round($value['install'][3])), number_format(round($value['install'][6])), number_format(round($value['install'][7])), number_format(round($value['install'][4])), number_format(round($value['install'][5])), $value['install']['max'], $value['install']['min'], + number_format(round($value['tryrun'][1])), number_format(round($value['tryrun'][3])), number_format(round($value['tryrun'][6])), number_format(round($value['tryrun'][7])), number_format(round($value['tryrun'][4])), number_format(round($value['tryrun'][5])), $value['tryrun']['max'], $value['tryrun']['min'], + number_format(round($value['check'][1])), number_format(round($value['check'][3])), number_format(round($value['check'][6])), number_format(round($value['check'][7])), number_format(round($value['check'][4])), number_format(round($value['check'][5])), $value['check']['max'], $value['check']['min'], + number_format(round($value['delivery'][1])), number_format(round($value['delivery'][3])), number_format(round($value['delivery'][6])), number_format(round($value['delivery'][7])), number_format(round($value['delivery'][4])), number_format(round($value['delivery'][5])), $value['delivery']['max'], $value['delivery']['min'], + number_format(round($value['final'][1])), number_format(round($value['final'][3])), number_format(round($value['final'][6])), number_format(round($value['final'][7])), number_format(round($value['final'][4])), number_format(round($value['final'][5])), $value['final']['max'], $value['final']['min'], + number_format(round($value['A40001'])), number_format(round($value['A40008'])), number_format(round($value['total_budget'])), number_format(round($value['receivable_budget'])), number_format(round($value['invoice_budget'])), number_format(round($value['received_budget'])), $value['total_facility_num'], str_replace('
', '; ', $value['facilities']) + ]; + + //['sign'] 0 款項名稱 1 簽約金額 2 簽約日期 3 應收金額 min 最早應收月份 max 最晚應收月份 + //[合約號]['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數 7 已開發票金額 8 未開發票金額 + if (isset($value['facility'])) { + foreach ($value['facility'] as $valkey => $val) { + foreach ($contractstage as $stage) { + $val[$stage][0] = (!(isset($val[$stage][0])) || is_null($val[$stage][0])) ? "-" : $val[$stage][0]; + $val[$stage][1] = (!(isset($val[$stage][1])) || is_null($val[$stage][1])) ? 0 : $val[$stage][1]; + $val[$stage][2] = (!(isset($val[$stage][2])) || is_null($val[$stage][2])) ? "-" : ($val[$stage][2] =="19700101"?"-":$val[$stage][2]); + $val[$stage][3] = (!(isset($val[$stage][3])) || is_null($val[$stage][3])) ? 0 : $val[$stage][3]; + $val[$stage][4] = (!(isset($val[$stage][4])) || is_null($val[$stage][4])) ? 0 : $val[$stage][4]; + $val[$stage][5] = (!(isset($val[$stage][5])) || is_null($val[$stage][5])) ? 0 : $val[$stage][5]; + $val[$stage][6] = (!(isset($val[$stage][6])) || is_null($val[$stage][6])) ? 0 : $val[$stage][6]; + $val[$stage][7] = (!(isset($val[$stage][7])) || is_null($val[$stage][7])) ? 0 : $val[$stage][7]; + $val[$stage][8] = (!(isset($val[$stage][8])) || is_null($val[$stage][8])) ? 0 : $val[$stage][8]; + } + $facility_array[$valkey] = [ + $value[9], $valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], + $val['sign'][0], number_format(round($val['sign'][1])), $val['sign'][2], number_format(round($val['sign'][3])), number_format(round($val['sign'][7])), number_format(round($val['sign'][8])), number_format(round($val['sign'][4])),number_format(round($val['sign'][5])),number_format(round($val['sign'][6])), + $val['second'][0], number_format(round($val['second'][1])), $val['second'][2], number_format(round($val['second'][3])), number_format(round($val['second'][7])), number_format(round($val['second'][8])), number_format(round($val['second'][4])),number_format(round($val['second'][5])), number_format(round($val['second'][6])), + $val['arrive'][0], number_format(round($val['arrive'][1])), $val['arrive'][2], number_format(round($val['arrive'][3])), number_format(round($val['arrive'][7])), number_format(round($val['arrive'][8])), number_format(round($val['arrive'][4])),number_format(round($val['arrive'][5])), number_format(round($val['arrive'][6])), + $val['install'][0], number_format(round($val['install'][1])), $val['install'][2], number_format(round($val['install'][3])), number_format(round($val['install'][7])), number_format(round($val['install'][8])), number_format(round($val['install'][4])),number_format(round($val['install'][5])), number_format(round($val['install'][6])), + $val['tryrun'][0], number_format(round($val['tryrun'][1])), $val['tryrun'][2], number_format(round($val['tryrun'][3])), number_format(round($val['tryrun'][7])), number_format(round($val['tryrun'][8])), number_format(round($val['tryrun'][4])),number_format(round($val['tryrun'][5])), number_format(round($val['tryrun'][6])), + $val['check'][0], number_format(round($val['check'][1])), $val['check'][2], number_format(round($val['check'][3])), number_format(round($val['check'][7])), number_format(round($val['check'][8])), number_format(round($val['check'][4])),number_format(round($val['check'][5])), number_format(round($val['check'][6])), + $val['delivery'][0], number_format(round($val['delivery'][1])), $val['delivery'][2], number_format(round($val['delivery'][3])), number_format(round($val['delivery'][7])), number_format(round($val['delivery'][8])), number_format(round($val['delivery'][4])),number_format(round($val['delivery'][5])), number_format(round($val['delivery'][6])), + $val['final'][0], number_format(round($val['final'][1])), $val['final'][2], number_format(round($val['final'][3])), number_format(round($val['final'][7])), number_format(round($val['final'][8])), number_format(round($val['final'][4])),number_format(round($val['final'][5])), number_format(round($val['final'][6])), + str_replace('
', '; ', $val['status']), number_format(round($val['A40001'])), number_format(round($val['A40008'])), number_format(round($val['total_budget'])), number_format(round($val['receivable_budget'])) + ]; + $sign_status_tmp = !empty($value['sign'][0]) ? $value['sign'][0] : null; + if ($sign_status_tmp == "寶佳出貨前30天") { + // if ($value['sign'][0] == "寶佳出貨前30天") { + $facility_boga_array[$valkey] = [ + $value[9], $valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], + $val['sign'][0], number_format(round($val['sign'][1])), $val['sign'][2], number_format(round($val['sign'][3])), number_format(round($val['sign'][7])), number_format(round($val['sign'][8])), number_format(round($val['sign'][4])),number_format(round($val['sign'][5])),number_format(round($val['sign'][6])), + $val['second'][0], number_format(round($val['second'][1])), $val['second'][2], number_format(round($val['second'][3])), number_format(round($val['second'][7])), number_format(round($val['second'][8])), number_format(round($val['second'][4])),number_format(round($val['second'][5])), number_format(round($val['second'][6])), + $val['arrive'][0], number_format(round($val['arrive'][1])), $val['arrive'][2], number_format(round($val['arrive'][3])), number_format(round($val['arrive'][7])), number_format(round($val['arrive'][8])), number_format(round($val['arrive'][4])),number_format(round($val['arrive'][5])), number_format(round($val['arrive'][6])), + $val['install'][0], number_format(round($val['install'][1])), $val['install'][2], number_format(round($val['install'][3])), number_format(round($val['install'][7])), number_format(round($val['install'][8])), number_format(round($val['install'][4])),number_format(round($val['install'][5])), number_format(round($val['install'][6])), + $val['tryrun'][0], number_format(round($val['tryrun'][1])), $val['tryrun'][2], number_format(round($val['tryrun'][3])), number_format(round($val['tryrun'][7])), number_format(round($val['tryrun'][8])), number_format(round($val['tryrun'][4])),number_format(round($val['tryrun'][5])), number_format(round($val['tryrun'][6])), + $val['check'][0], number_format(round($val['check'][1])), $val['check'][2], number_format(round($val['check'][3])), number_format(round($val['check'][7])), number_format(round($val['check'][8])), number_format(round($val['check'][4])),number_format(round($val['check'][5])), number_format(round($val['check'][6])), + $val['delivery'][0], number_format(round($val['delivery'][1])), $val['delivery'][2], number_format(round($val['delivery'][3])), number_format(round($val['delivery'][7])), number_format(round($val['delivery'][8])), number_format(round($val['delivery'][4])),number_format(round($val['delivery'][5])), number_format(round($val['delivery'][6])), + $val['final'][0], number_format(round($val['final'][1])), $val['final'][2], number_format(round($val['final'][3])), number_format(round($val['final'][7])), number_format(round($val['final'][8])), number_format(round($val['final'][4])),number_format(round($val['final'][5])), number_format(round($val['final'][6])), + str_replace('
', '; ', $val['status']), number_format(round($val['A40001'])), number_format(round($val['A40008'])), number_format(round($val['total_budget'])), number_format(round($val['receivable_budget'])) + ]; + } else { + $facility_exclude_boga_array[$valkey] = [ + $value[9], $valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], + $val['sign'][0], number_format(round($val['sign'][1])), $val['sign'][2], number_format(round($val['sign'][3])), number_format(round($val['sign'][7])), number_format(round($val['sign'][8])), number_format(round($val['sign'][4])),number_format(round($val['sign'][5])),number_format(round($val['sign'][6])), + $val['second'][0], number_format(round($val['second'][1])), $val['second'][2], number_format(round($val['second'][3])), number_format(round($val['second'][7])), number_format(round($val['second'][8])), number_format(round($val['second'][4])),number_format(round($val['second'][5])), number_format(round($val['second'][6])), + $val['arrive'][0], number_format(round($val['arrive'][1])), $val['arrive'][2], number_format(round($val['arrive'][3])), number_format(round($val['arrive'][7])), number_format(round($val['arrive'][8])), number_format(round($val['arrive'][4])),number_format(round($val['arrive'][5])), number_format(round($val['arrive'][6])), + $val['install'][0], number_format(round($val['install'][1])), $val['install'][2], number_format(round($val['install'][3])), number_format(round($val['install'][7])), number_format(round($val['install'][8])), number_format(round($val['install'][4])),number_format(round($val['install'][5])), number_format(round($val['install'][6])), + $val['tryrun'][0], number_format(round($val['tryrun'][1])), $val['tryrun'][2], number_format(round($val['tryrun'][3])), number_format(round($val['tryrun'][7])), number_format(round($val['tryrun'][8])), number_format(round($val['tryrun'][4])),number_format(round($val['tryrun'][5])), number_format(round($val['tryrun'][6])), + $val['check'][0], number_format(round($val['check'][1])), $val['check'][2], number_format(round($val['check'][3])), number_format(round($val['check'][7])), number_format(round($val['check'][8])), number_format(round($val['check'][4])),number_format(round($val['check'][5])), number_format(round($val['check'][6])), + $val['delivery'][0], number_format(round($val['delivery'][1])), $val['delivery'][2], number_format(round($val['delivery'][3])), number_format(round($val['delivery'][7])), number_format(round($val['delivery'][8])), number_format(round($val['delivery'][4])),number_format(round($val['delivery'][5])), number_format(round($val['delivery'][6])), + $val['final'][0], number_format(round($val['final'][1])), $val['final'][2], number_format(round($val['final'][3])), number_format(round($val['final'][7])), number_format(round($val['final'][8])), number_format(round($val['final'][4])),number_format(round($val['final'][5])), number_format(round($val['final'][6])), + str_replace('
', '; ', $val['status']), number_format(round($val['A40001'])), number_format(round($val['A40008'])), number_format(round($val['total_budget'])), number_format(round($val['receivable_budget'])) + ]; + } + } + } +} +$average_A40001 = round($sum_A40001 / $sum_facility, 2); +$average_A40008 = round($sum_A40008 / $sum_facility, 2); +$average_budget = round($sum_total_budget / $sum_facility, 2); + +$total_data = json_encode($excel_aray); +$boga_data = json_encode($boga_array); +$exclude_boga_data = json_encode($exclude_boga_array); +$facility_data = json_encode($facility_array); +$facility_boga_data = json_encode($facility_boga_array); +$facility_exclude_boga_data = json_encode($facility_exclude_boga_array); ?> + +
+
+ + + +
+
+
+
+ + + + +
+
+
-

+

合約 (新梯)統整資訊

- - + +
- - + +
- - + +
- - + +
-
- - + +
- - + +
-
- - +
+ +
-
- - -
-
- - - - - - - - + - - - - - - - - - + - - -
目前應收已開發票金額未開發票金額已收金額未收金額
-
+
+ + + + + + + + + -
-
作番號合約號部門經理營業員客戶名稱
- - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - -
簽約款二次款貨抵工地款安裝款試車款官檢款交車款作番狀態合約-設備金額合約-安裝金額作番總金額作番目前應收訂金
名稱
訂金
合約金額
訂金
應收日期
訂金
應收金額
訂金
已開金額
訂金
未開金額
訂金
已收金額
訂金
催收金額
訂金
催收次數
二次款
名稱
二次款
合約金額
二次款
應收日期
二次款
應收金額
二次款
已開金額
二次款
未開金額
二次款
已收金額
二次款
催收金額
二次款
催收次數
貨抵工地款
名稱
貨抵工地款
合約金額
貨抵工地款
應收日期
貨抵工地款
應收金額
貨抵工地款
已開金額
貨抵工地款
未開金額
貨抵工地款
已收金額
貨抵工地款
催收金額
貨抵工地款
催收次數
安裝款
名稱
安裝款
合約金額
安裝款
應收日期
安裝款
應收金額
安裝款
已開金額
安裝款
未開金額
安裝款
已收金額
安裝款
催收金額
安裝款
催收次數
試車款
名稱
試車款
合約金額
試車款
應收日期
試車款
應收金額
試車款
已開金額
試車款
未開金額
試車款
已收金額
試車款
催收金額
試車款
催收次數
官檢款
名稱
官檢款
合約金額
官檢款
應收日期
官檢款
應收金額
官檢款
已開金額
官檢款
未開金額
官檢款
已收金額
官檢款
催收金額
官檢款
催收次數
交車款
名稱
交車款
合約金額
交車款
應收日期
交車款
應收金額
交車款
已開金額
交車款
未開金額
交車款
已收金額
交車款
催收金額
交車款
催收次數
尾款
名稱
尾款
合約金額
尾款
應收日期
尾款
應收金額
尾款
已開金額
尾款
未開金額
尾款
已收金額
尾款
催收金額
尾款
催收次數
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - + $value) { + ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
發票號碼發票日期發票金額收款日期收款金額說明功能
- - - - - -
\ No newline at end of file diff --git a/wms/account-receivable-index.php b/wms/account-receivable-index.php index 87f59c7b..ce7725df 100644 --- a/wms/account-receivable-index.php +++ b/wms/account-receivable-index.php @@ -17,32 +17,38 @@ $follower = find_follow($user_id); $arrayData = []; $receivable_array = []; // 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"; +$sql_invoice = "SELECT +Detail.BillNo AS InvoiceBillNo, +Detail.MaterialId, +Detail.LAmountWithTax, +Main.InvoiceNo, +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 Detail.ItemType=0 AND Main.InvoiceState!=2"; // 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"; +CheckDetail.OrderBillNo, +arWriteOffBillDetail.FromBillNo AS CheckBillNo, +arWriteOffBillDetail.FromRowCode AS CheckRowCode, +arWriteOffBillDetail.CurrStandOffOAmount +FROM arWriteOffBillDetail + LEFT JOIN + (SELECT + arCheckBillDetail.BillNo, + arCheckBillDetail.RowCode, + arCheckBillDetail.FromSalSalesOrder AS OrderBillNo, + salSalesOrder.TypeId + FROM arCheckBillDetail + LEFT JOIN salSalesOrder + ON salSalesOrder.BillNo =arCheckBillDetail.FromSalSalesOrder ) + AS CheckDetail + ON CheckDetail.BillNo=arWriteOffBillDetail.FromBillNo AND arWriteOffBillDetail.FromRowCode = CheckDetail.RowCode"; //T8 銷售訂單 階段收款計畫 $sql_contract = "SELECT a.BillNo,s.BillDate, a.PayStage, a.PlanPayAmt, a.PlanPayDate,s.BizPartnerId,c.BizPartnerName, s.PersonId, @@ -508,7 +514,7 @@ foreach ($wipwhole_array as $wip) { $arrayData[$wip['contractno']]['sign_num'] += 1; array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']); - if ($arrayData[$wip['contractno']]['delivery'][0] == "交車後270天") { + if (isset($arrayData[$wip['contractno']]['delivery'][0]) && $arrayData[$wip['contractno']]['delivery'][0] == "交車後270天") { $estimate_delivery_time = strtotime($wip['delivery_date']); $arrivetime = $estimate_delivery_time + (90 * 86400); $month = collect_month($arrivetime); @@ -972,9 +978,9 @@ foreach ($wipwhole_array as $wip) { } // [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']]; + if (isset($arrayData[$invoice['BillNo']])) { + $arrayData[$invoice['BillNo']]['invoice_budget'] += intval($invoice['OAmountWithTax']); + $arrayData[$invoice['BillNo']]['invoice'][$invoice['InvoiceNo']] = [date("Ymd", strtotime($invoice['InvoiceTime'])), $invoice['OAmountWithTax'], $invoice['InvoiceState']]; } } @@ -987,11 +993,13 @@ foreach ($received_array as $received) { } 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']); - } + $arrayData[$BillNo]['received_budget'] += $received['CurrStandOffOAmount']; + // 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']); + // } } } diff --git a/wms/account-receivable-invoice.php b/wms/account-receivable-invoice.php deleted file mode 100644 index b3d9bbc7..00000000 --- a/wms/account-receivable-invoice.php +++ /dev/null @@ -1 +0,0 @@ - -
- -
- -
-
-
-
-

-

新增收款資訊

-
-
-
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
- - -
-
- - - - - - -
-
-
-
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/wms/account-receivable-received-edit.php b/wms/account-receivable-received-edit.php deleted file mode 100644 index 5f0e95a2..00000000 --- a/wms/account-receivable-received-edit.php +++ /dev/null @@ -1,142 +0,0 @@ -"; -// print_r($BillData); -$sql_pay = "SELECT * from account_received where pay_id = '$pay_id'"; -$pay = mysqli_query($link, $sql_pay); -$pay = mysqli_fetch_assoc($pay); - -?> -
- -
- -
-
- - -
-
-

-

編輯收款資訊

-
-
-
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
- - - - -
-
-
-
-
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/wms/account-receivable-received-submit.php b/wms/account-receivable-received-submit.php deleted file mode 100644 index b9b18f0f..00000000 --- a/wms/account-receivable-received-submit.php +++ /dev/null @@ -1,96 +0,0 @@ - - \ No newline at end of file diff --git a/wms/account-receivable-renovate-index.php b/wms/account-receivable-renovate-index.php index a4f2f82e..09240ac2 100644 --- a/wms/account-receivable-renovate-index.php +++ b/wms/account-receivable-renovate-index.php @@ -14,69 +14,151 @@ $average_budget = 0; $average_A40002 = 0; $average_A40009 = 0; $average_A40010 = 0; +$start_date = empty($_POST['date_start']) ? null : $_POST['date_start']; +$end_date = empty($_POST['date_end']) ? null : $_POST['date_end']; +// 查WMS 契約員主管 +$sql_manager = "SELECT A.accountid, A.name, A.manager, B.name AS manager_name FROM account AS A +LEFT JOIN account AS B ON A.manager = B.accountid "; +$managers = mysqli_query($link, $sql_manager); +$find_manager = array(); +if (is_iterable($managers)) { + foreach ($managers as $manager) { + $find_manager[$manager['accountid']] = $manager; + } +} $follower = find_follow($user_id); $arrayData = []; $receivable_array = []; // T8所有合約號 -$sql_contractNumber = "SELECT Distinct BillNo FROM salSalesOrder WHERE ModeId = 'T' AND (CurrentState=2 OR CurrentState=4) "; +$sql_contractNumber = "SELECT MainAll.* , +Person.PersonName, +Dept.DeptName FROM + (SELECT +Main.BillNo, +Main.BillDate, +Main.BizPartnerId, +Biz.ShortName, +Biz.BizPartnerName, +Biz.ContactAddress, +Main.OAmountWithTax, +Main.PersonId, +Main.DeptId, +Main.TypeId, +Main.ModeId, +Main.CurrentState + FROM salSalesOrder AS Main + LEFT JOIN comBusinessPartner AS Biz ON Biz.BizPartnerId = Main.BizPartnerId) AS MainAll + LEFT JOIN comGroupPerson AS Person ON MainAll.PersonId= Person.PersonId + LEFT JOIN comDepartment AS Dept ON MainAll.DeptId= Dept.DeptId + WHERE MainAll.ModeId = 'T' AND (MainAll.CurrentState=2 OR MainAll.CurrentState=4) "; + +if (!is_null($start_date)) { + $start_date = (int)date('Ymd', strtotime($start_date)); + $sql_contractNumber .= " AND MainAll.BillDate >= $start_date "; +} +if (!is_null($end_date)) { + $end_date = (int)date('Ymd', strtotime($end_date)); + $sql_contractNumber .= " AND MainAll.BillDate <= $end_date "; +} +if ((in_array($user_id, array('M0060', 'M0175'))) || (in_array(accountidToDepartId($user_id), array('220', '210', '321')))) { +} else { + $sql_contractNumber .= " AND (MainAll.PersonId = '$user_id'"; + if (count($follower) > 0) { + $column_str = "('$user_id'" . ",'"; + $column_str .= implode("','", $follower); + $column_str .= "')"; + $sql_contractNumber .= " OR MainAll.PersonId IN $column_str)"; + } else { + $sql_contractNumber .= ")"; + }; +} + // T8發票 (有專案的發票) -$sql_invoice = "SELECT DISTINCT -a.InvoiceNo, a.InvoiceTime,a.OAmountWithTax,a.InvoiceState, -b.FromSalSalesOrder -FROM arSellInvoice as a -LEFT JOIN (SELECT CH.FromSalSalesOrder, SE.* FROM arSellInvoiceMaterial AS SE -LEFT JOIN arCheckBillDetail AS CH ON SE.FromBillNo=CH.BillNo) as b -ON a.BillNo=b.BillNo -WHERE DATALENGTH(b.FromSalSalesOrder)>0 -ORDER BY InvoiceTime ASC"; +$sql_invoice = "SELECT +Detail.BillNo AS InvoiceBillNo, +Detail.MaterialId, +Detail.LAmountWithTax, +Main.InvoiceNo, +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 Detail.ItemType=0 AND Main.InvoiceState!=2"; // 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"; +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 = 'T'"; // 期初收款資訊 $sql_opening = " SELECT * FROM account_received "; -// 設定權限:看到自己的/下屬的,資訊處跟財會處可以看全部的 -if ((in_array($user_id, array('M0060', 'M0175'))) || (in_array(accountidToDepartId($user_id), array('220', '210')))) { -} else { - $sql_opening .= " OR person_id = '$user_id'"; - $sql_contractNumber .= " AND (PersonId = '$user_id'"; - if (count($follower) > 0) { - $column_str = "('$user_id'" . ",'"; - $column_str .= implode("','", $follower); - $column_str .= "')"; - $sql_contractNumber .= " OR PersonId IN $column_str)"; - $sql_opening .= " OR person_id IN $column_str)"; - } else { - $sql_opening .= ")"; - $sql_contractNumber .= ")"; - }; -} + $contractNumbers = array(); $query_contract_number = $conn->query($sql_contractNumber); foreach ($query_contract_number as $contract_numbers) { - array_push($contractNumbers, $contract_numbers['BillNo']); + $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; + } + array_push($contractNumbers, $billNo); $str_numbers = "('" . implode("','", $contractNumbers) . "')"; } //作番大日程 @@ -460,7 +542,7 @@ foreach ($allPayStages as $key => &$payStage) { // [invoice][發票號碼][0 發票日期, 1 發票金額, 2 發票狀態, 3 收款日期, 4 收款金額, 5 手續費, 6 核銷單號] foreach ($invoice_data as $invoice) { - if (isset($arrayData[$invoice['FromSalSalesOrder']])) { + 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']]; } @@ -470,7 +552,7 @@ foreach ($invoice_data as $invoice) { foreach ($received_array as $received) { $BillNo = $received['OrderBillNo']; if (isset($arrayData[$BillNo])) { - if (isset($arrayData[$BillNo]['invoice'][$received['InvoiceNo']])) { + 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']); } diff --git a/wms/account-receivable-repair-index.php b/wms/account-receivable-repair-index.php index bd1d7acc..5e22c234 100644 --- a/wms/account-receivable-repair-index.php +++ b/wms/account-receivable-repair-index.php @@ -23,8 +23,10 @@ LEFT JOIN account AS B ON A.manager = B.accountid "; $managers = mysqli_query($link, $sql_manager); $find_manager = array(); -foreach ($managers as $manager) { - $find_manager[$manager['accountid']] = $manager; +if (is_iterable($managers)) { + foreach ($managers as $manager) { + $find_manager[$manager['accountid']] = $manager; + } } $follower = find_follow($user_id); $arrayData = array(); diff --git a/wms/account-receivable-test.php b/wms/account-receivable-test.php index 52c6056c..f143dbec 100644 --- a/wms/account-receivable-test.php +++ b/wms/account-receivable-test.php @@ -381,10 +381,62 @@ $P_all = " // echo $value['PayStage'] .";".$value['BillNo']. "
"; // } -$sql = "SELECT A.BillNo,B.CU_MaterialId, B.ProjectId FROM salSalesOrder AS A -LEFT JOIN salSalesOrderDetail AS B ON A.BillNo=B.BillNo -WHERE A.ModeId='T' AND B.ItemType=0 AND A.BillNo != B.ProjectId AND A.CurrentState=4"; +// $sql = "SELECT A.BillNo,B.CU_MaterialId, B.ProjectId FROM salSalesOrder AS A +// LEFT JOIN salSalesOrderDetail AS B ON A.BillNo=B.BillNo +// WHERE A.ModeId='T' AND B.ItemType=0 AND A.BillNo != B.ProjectId AND A.CurrentState=4"; +// $query = $conn->query($sql); +// foreach($query as $key => $value) { +// echo $value['BillNo'] .";".$value['CU_MaterialId'].";".$value['ProjectId']. "
"; +// } + + +// 發貨單 沒有ProjectId的資料 +// $sql = "SELECT DISTINCT salDispatchListMaster.BillNo, salDispatchListMaster.ModeId,salDispatchListMaster.BillDate FROM salDispatchListDetail +// LEFT JOIN salDispatchListMaster ON salDispatchListMaster.BillNo=salDispatchListDetail.BillNo +// WHERE salDispatchListDetail.ItemType=0 AND LEN(salDispatchListDetail.ProjectId)=0"; +// $query = $conn->query($sql); +// foreach($query as $key => $value) { +// switch($value['ModeId']) { +// case 'B': +// $mode = '保養'; +// break; +// case 'T': +// $mode = '汰改'; +// break; +// case 'M': +// $mode = '新梯'; +// break; +// case 'Z': +// $mode = '維修'; +// break; +// } +// echo $value['BillNo'] .";".$mode.";".$value['BillDate']. "
"; +// } + +// 銷售訂單 沒有ProjectId的資料 +$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) { - echo $value['BillNo'] .";".$value['CU_MaterialId'].";".$value['ProjectId']. "
"; -} \ No newline at end of file +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'] ."
"; +}