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, 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 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(accountidToDepartId($user_id), array('220', '210')))) { $sql_contract .= "AND (s.PersonId = '$user_id'"; // $sql_received .= " AND (PersonId = '$user_id'"; $sql_opening .= " OR person_id = '$user_id'"; $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 .= ")"; }; }else{ $sql .= " ORDER BY contractno"; $sql_contract_budget .= "ORDER BY BillNo, CU_MaterialId"; } $contract = $conn->query($sql_contract); $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); $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']] += $cont['OAmountWithTax']; }else{ $contract_budget[$cont['BillNo']][$cont['CU_MaterialId']] = $cont['OAmountWithTax']; }; } // 合約收款階段內容分類 $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']; }; $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 通訊地址 $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]['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_facility_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, '簽約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; // [合約號]['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; // [合約號][作番號][款別] ['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; } // 補上寶佳 (出貨前) 收款時間 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 實際出貨日=實際到貨日=實際貨抵工地 //----------------------------------------寶佳的另外處理--------------------------------------------------- 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; $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; $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; $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; $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 { $signtime = strtotime($arrayData[$wip['contractno']]['sign'][2]); $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; $arrayData[$wip['contractno']]['install_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1; if ($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; } $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; $arrayData[$wip['contractno']]['check_num'] += 1; $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; $arrayData[$wip['contractno']]['tryrun_num'] += 1; $arrayData[$wip['contractno']]['install_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1; 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; $arrayData[$wip['contractno']]['install_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1; 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; $arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1; 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; $arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1; 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; $arrayData[$wip['contractno']]['sign_num'] += 1; } else { $arrayData[$wip['contractno']]['sign_num'] += 1; 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'] . " (預計出港日待確認)
"; } } } } } print_r($contract_budget['D23070082']); echo "
"; exit(); // 計算每個合約的應收款、作番總數 $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) { $value['receivable_budget'] = $value['sign'][1] * ($contract_budget[$value[10]]['total'] / $contract_budget[$value[10]]['total']) + ($value['second'][1] * ($value['second_num'] / $value['total_facility_num'])) + ($value['arrive'][1] * ($value['arrive_num'] / $value['total_facility_num'])) + ($value['install'][1] * ($value['install_num'] / $value['total_facility_num'])) + ($value['tryrun'][1] * ($value['tryrun_num'] / $value['total_facility_num'])) + ($value['check'][1] * ($value['check_num'] / $value['total_facility_num'])) + (($value['delivery'][1] + $value['final'][1]) * ($value['delivery_num'] / $value['total_facility_num'])); $value['sign'][3] = $value['sign'][1] * ($value['sign_num'] / $value['total_facility_num']); $value['second'][3] = $value['second'][1] * ($value['second_num'] / $value['total_facility_num']); $value['arrive'][3] = $value['arrive'][1] * ($value['arrive_num'] / $value['total_facility_num']); $value['install'][3] = $value['install'][1] * ($value['install_num'] / $value['total_facility_num']); $value['tryrun'][3] = $value['tryrun'][1] * ($value['tryrun_num'] / $value['total_facility_num']); $value['check'][3] = $value['check'][1] * ($value['check_num'] / $value['total_facility_num']); $value['delivery'][3] = $value['delivery'][1] * ($value['delivery_num'] / $value['total_facility_num']); $value['final'][3] = $value['final'][1] * ($value['delivery_num'] / $value['total_facility_num']); } // 計算每台作番金額與各階段應收金額 foreach ($value['facility'] as &$val) { foreach ($contractstage as $stage) { if (isset($value[$stage][0]) && !empty($value[$stage][0])) { $val[$stage][0] = $value[$stage][0]; $val[$stage][1] = $value[$stage][1] / $value['total_facility_num']; $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']); } } } //產生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) { $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; $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']; }; if ($value['sign'][0] == "寶佳出貨前30天") { $boga_array[$key] = [ $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $value['sign'][1], $value['sign'][3], $value['sign']['max'], $value['sign']['min'], $value['second'][1], $value['second'][3], $value['second']['max'], $value['second']['min'], $value['arrive'][1], $value['arrive'][3], $value['arrive']['max'], $value['arrive']['min'], $value['install'][1], $value['install'][3], $value['install']['max'], $value['install']['min'], $value['tryrun'][1], $value['tryrun'][3], $value['tryrun']['max'], $value['tryrun']['min'], $value['check'][1], $value['check'][3], $value['check']['max'], $value['check']['min'], $value['delivery'][1], $value['delivery'][3], $value['delivery']['max'], $value['delivery']['min'], $value['final'][1], $value['final'][3], $value['final']['max'], $value['final']['min'], $value['total_budget'], $value['receivable_budget'], $value['invoice_budget'], $value['received_budget'], $value['total_facility_num'], str_replace('
', '; ', $value['facilities']) ]; } else { $exclude_boga_array[$key] = [ $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $value['sign'][1], $value['sign'][3], $value['sign']['max'], $value['sign']['min'], $value['second'][1], $value['second'][3], $value['second']['max'], $value['second']['min'], $value['arrive'][1], $value['arrive'][3], $value['arrive']['max'], $value['arrive']['min'], $value['install'][1], $value['install'][3], $value['install']['max'], $value['install']['min'], $value['tryrun'][1], $value['tryrun'][3], $value['tryrun']['max'], $value['tryrun']['min'], $value['check'][1], $value['check'][3], $value['check']['max'], $value['check']['min'], $value['delivery'][1], $value['delivery'][3], $value['delivery']['max'], $value['delivery']['min'], $value['final'][1], $value['final'][3], $value['final']['max'], $value['final']['min'], $value['total_budget'], $value['receivable_budget'], $value['invoice_budget'], $value['received_budget'], $value['total_facility_num'], str_replace('
', '; ', $value['facilities']) ]; } $excel_aray[$key] = [ $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $value['sign'][1], $value['sign'][3], $value['sign']['max'], $value['sign']['min'], $value['second'][1], $value['second'][3], $value['second']['max'], $value['second']['min'], $value['arrive'][1], $value['arrive'][3], $value['arrive']['max'], $value['arrive']['min'], $value['install'][1], $value['install'][3], $value['install']['max'], $value['install']['min'], $value['tryrun'][1], $value['tryrun'][3], $value['tryrun']['max'], $value['tryrun']['min'], $value['check'][1], $value['check'][3], $value['check']['max'], $value['check']['min'], $value['delivery'][1], $value['delivery'][3], $value['delivery']['max'], $value['delivery']['min'], $value['final'][1], $value['final'][3], $value['final']['max'], $value['final']['min'], $value['total_budget'], $value['receivable_budget'], $value['invoice_budget'], $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 催收次數 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]; $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]; } $facility_array[$valkey] = [ $valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $val['sign'][0], $val['sign'][1], $val['sign'][2], $val['sign'][3], $val['sign'][4], $val['sign'][5], $val['sign'][6], $val['second'][0], $val['second'][1], $val['second'][2], $val['second'][3], $val['second'][4], $val['second'][5], $val['second'][6], $val['arrive'][0], $val['arrive'][1], $val['arrive'][2], $val['arrive'][3], $val['arrive'][4], $val['arrive'][5], $val['arrive'][6], $val['install'][0], $val['install'][1], $val['install'][2], $val['install'][3], $val['install'][4], $val['install'][5], $val['install'][6], $val['tryrun'][0], $val['tryrun'][1], $val['tryrun'][2], $val['tryrun'][3], $val['tryrun'][4], $val['tryrun'][5], $val['tryrun'][6], $val['check'][0], $val['check'][1], $val['check'][2], $val['check'][3], $val['check'][4], $val['check'][5], $val['check'][6], $val['delivery'][0], $val['delivery'][1], $val['delivery'][2], $val['delivery'][3], $val['delivery'][4], $val['delivery'][5], $val['delivery'][6], $val['final'][0], $val['final'][1], $val['final'][2], $val['final'][3], $val['final'][4], $val['final'][5], $val['final'][6], str_replace('
', '; ', $val['status']), $val['total_budget'], $val['receivable_budget'] ]; if ($value['sign'][0] == "寶佳出貨前30天") { $facility_boga_array[$valkey] = [ $valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $val['sign'][0], $val['sign'][1], $val['sign'][2], $val['sign'][3], $val['sign'][4], $val['sign'][5], $val['sign'][6], $val['second'][0], $val['second'][1], $val['second'][2], $val['second'][3], $val['second'][4], $val['second'][5], $val['second'][6], $val['arrive'][0], $val['arrive'][1], $val['arrive'][2], $val['arrive'][3], $val['arrive'][4], $val['arrive'][5], $val['arrive'][6], $val['install'][0], $val['install'][1], $val['install'][2], $val['install'][3], $val['install'][4], $val['install'][5], $val['install'][6], $val['tryrun'][0], $val['tryrun'][1], $val['tryrun'][2], $val['tryrun'][3], $val['tryrun'][4], $val['tryrun'][5], $val['tryrun'][6], $val['check'][0], $val['check'][1], $val['check'][2], $val['check'][3], $val['check'][4], $val['check'][5], $val['check'][6], $val['delivery'][0], $val['delivery'][1], $val['delivery'][2], $val['delivery'][3], $val['delivery'][4], $val['delivery'][5], $val['delivery'][6], $val['final'][0], $val['final'][1], $val['final'][2], $val['final'][3], $val['final'][4], $val['final'][5], $val['final'][6], str_replace('
', '; ', $val['status']), $val['total_budget'], $val['receivable_budget'] ]; } else { $facility_exclude_boga_array[$valkey] = [ $valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $val['sign'][0], $val['sign'][1], $val['sign'][2], $val['sign'][3], $val['sign'][4], $val['sign'][5], $val['sign'][6], $val['second'][0], $val['second'][1], $val['second'][2], $val['second'][3], $val['second'][4], $val['second'][5], $val['second'][6], $val['arrive'][0], $val['arrive'][1], $val['arrive'][2], $val['arrive'][3], $val['arrive'][4], $val['arrive'][5], $val['arrive'][6], $val['install'][0], $val['install'][1], $val['install'][2], $val['install'][3], $val['install'][4], $val['install'][5], $val['install'][6], $val['tryrun'][0], $val['tryrun'][1], $val['tryrun'][2], $val['tryrun'][3], $val['tryrun'][4], $val['tryrun'][5], $val['tryrun'][6], $val['check'][0], $val['check'][1], $val['check'][2], $val['check'][3], $val['check'][4], $val['check'][5], $val['check'][6], $val['delivery'][0], $val['delivery'][1], $val['delivery'][2], $val['delivery'][3], $val['delivery'][4], $val['delivery'][5], $val['delivery'][6], $val['final'][0], $val['final'][1], $val['final'][2], $val['final'][3], $val['final'][4], $val['final'][5], $val['final'][6], str_replace('
', '; ', $val['status']), $val['total_budget'], $val['receivable_budget'] ]; } } } $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) { ?>
合約號 部門 經理 營業員 客戶名稱 簽約款 應收簽約金額 簽約最小催收次數 簽約最大催收次數 二次款 應收二次金額 二次最小催收次數 二次最大催收次數 貨抵工地款 應收貨抵工地金額 貨抵工地最小催收次數 貨抵工地最大催收次數 安裝款 應收安裝金額 安裝最小催收次數 安裝最大催收次數 試車款 應收試車金額 試車最小催收次數 試車最大催收次數 官檢款 應收官檢金額 官檢最小催收次數 官檢最大催收次數 移交款 應收移交金額 移交最小催收次數 移交最大催收次數 尾款 應收尾款金額 尾款最小催收次數 尾款最大催收次數 合約總金額 目前應收 已開發票金額 已收金額 收款狀態
$table = ""; //[stage] 0 款名 1金額 2 應收款日期 //['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數 // 0 部門id 1 部門名稱 2 經理名稱 3 營業員id 4 營業員名稱 5 客戶名稱 6 抬頭 7 統編 8 通訊地址 // [合約號]['facility'][作番號]['no'] //['receivable_budget'] / ['total_facility_num'] / ['total_budget'] //('sign', 'second', 'arrive', 'install', 'tryrun', 'check', 'delivery', 'final'); foreach ($arrayData as $key => $value) { foreach($value['facility'] as $fakey => $facility) { foreach ($contractstage as $stage) { switch ($stage) { case 'sign':$stageno = 0;break; case 'second':$stageno=1;break; case 'arrive':$stageno=2;break; case 'install':$stageno=3;break; case 'tryrun':$stageno=4;break; case 'check':$stageno=5;break; case 'delivery':$stageno=6;break; case 'final':$stageno=7;break; } if (isset($value[$stage]) && isset($value[$stage][0]) && !empty($value[$stage][0])) { if($value[$stage][3] >0){ $stage3 = 1; }else{ $stage3 = 0; } $budget = $value[$stage][1]; $receivable_date = $value[$stage][2]; $table .= "INSERT INTO account_receivable ( `contract_no`, `facility_no`, `stage`, `budget`, `receivable_date`, `receivable`) VALUES ('$key','$fakey',$stageno,$budget,$receivable_date,$stage3); \n"; } } } } $file_path = 'account_receivable_sql_file.sql'; if (file_put_contents($file_path, $table) !== false) { echo "SQL文件已成功生成:{$file_path}"; } else { echo "生成SQL文件时出现错误。"; } // echo $table;