= $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('M0008', 'M0012'))) || (in_array(accountidToDepartId($user_id), array('220', '210', '501')))) { } 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 .= ")"; }; } $contractNumbers = array(); $query_contract_number = $conn->query($sql_contractNumber); if (is_iterable($query_contract_number)) { foreach ($query_contract_number as $contract_numbers) { array_push($contractNumbers, $contract_numbers['BillNo']); $arrayData[$contract_numbers['BillNo']]['BillNo'] = isset($contract_numbers['BillNo']) ? $contract_numbers['BillNo'] : '--'; $arrayData[$contract_numbers['BillNo']]['BillDate'] = isset($contract_numbers['BillDate']) ? $contract_numbers['BillDate'] : '--'; $arrayData[$contract_numbers['BillNo']]['CustomerId'] = isset($contract_numbers['BizPartnerId']) ? $contract_numbers['BizPartnerId'] : '--'; $arrayData[$contract_numbers['BillNo']]['CustomerName'] = isset($contract_numbers['BizPartnerName']) ? $contract_numbers['BizPartnerName'] : '--'; $arrayData[$contract_numbers['BillNo']]['CustomerAddress'] = isset($contract_numbers['ContactAddress']) ? $contract_numbers['ContactAddress'] : '--'; $arrayData[$contract_numbers['BillNo']]['OAmountWithTax'] = isset($contract_numbers['OAmountWithTax']) ? $contract_numbers['OAmountWithTax'] : 0; $arrayData[$contract_numbers['BillNo']]['PersonId'] = isset($contract_numbers['PersonId']) ? $contract_numbers['PersonId'] : '--'; $arrayData[$contract_numbers['BillNo']]['DeptId'] = isset($contract_numbers['DeptId']) ? $contract_numbers['DeptId'] : '--'; $arrayData[$contract_numbers['BillNo']]['PersonName'] = isset($contract_numbers['PersonName']) ? $contract_numbers['PersonName'] : '--'; $arrayData[$contract_numbers['BillNo']]['DeptName'] = isset($contract_numbers['DeptName']) ? $contract_numbers['DeptName'] : '--'; $arrayData[$contract_numbers['BillNo']]['ShortName'] = isset($contract_numbers['ShortName']) ? $contract_numbers['ShortName'] : '--'; $arrayData[$contract_numbers['BillNo']]['ManagerId'] = !empty($find_manager[$contract_numbers['PersonId']]['manager']) ? $find_manager[$contract_numbers['PersonId']]['manager'] : '--'; $arrayData[$contract_numbers['BillNo']]['ManagerName'] = !empty($find_manager[$contract_numbers['PersonId']]['manager_name']) ? $find_manager[$contract_numbers['PersonId']]['manager_name'] : '--'; $arrayData[$contract_numbers['BillNo']]['invoice_budget'] = 0; $arrayData[$contract_numbers['BillNo']]['received_budget'] = 0; $arrayData[$contract_numbers['BillNo']]['receivable_budget'] = 0; $arrayData[$contract_numbers['BillNo']]['detail'] = ""; $sum_total_budget += $contract_numbers['OAmountWithTax']; } $str_numbers = "('" . implode("','", $contractNumbers) . "')"; } // T8發票 $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 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 WHERE CheckDetail.TypeId = 'SP'"; //T8 銷售訂單 階段收款計畫 $sql_paystage = "SELECT * from salOrderStagePay"; if (isset($str_numbers)) { $sql_paystage .= " WHERE BillNo IN $str_numbers "; $sql_invoice .= " AND CheckAll.FromSalSalesOrder IN $str_numbers "; } // T8 銷售訂單 表身 $sql_detail ="SELECT A.BillNo, A.MaterialId, salSalesOrder.TypeId, CASE WHEN A.ItemType = 0 THEN B.MaterialName WHEN A.ItemType = 1 THEN C.FeeTypeName ELSE 'Unknown' END AS ItemName, E.ProjectId, E.ProjectName, D.MaterialId AS CU_MaterialId, D.MaterialName AS CU_MaterialName FROM salSalesOrderDetail A LEFT JOIN comMaterialGroup B ON A.MaterialId = B.MaterialId AND A.ItemType = 0 LEFT JOIN comFeeType C ON A.MaterialId = C.FeeTypeId AND A.ItemType = 1 LEFT JOIN comProject E ON A.ProjectId = E.ProjectId LEFT JOIN comMaterialGroup D ON A.CU_MaterialId = D.MaterialId LEFT JOIN salSalesOrder ON A.BillNo = salSalesOrder.BillNo WHERE salSalesOrder.TypeId = 'SP'"; $PayStage = $conn->query($sql_paystage); $received_array = $conn->query($sql_received); $invoice_data = $conn->query($sql_invoice); $detail_data = $conn->query($sql_detail); // 將合約表身明細填入arrayData foreach ($detail_data as $detail) { if(isset($arrayData[$detail['BillNo']])) { $memo = $detail['MaterialId'].' '.$detail['ItemName'].' 【'.$detail['ProjectId'].$detail['ProjectName'].'】'.'['.$detail['CU_MaterialId'].' '.$detail['CU_MaterialName'].'] ;
'; $arrayData[$detail['BillNo']]['detail'] .= $memo; } } $allPayStages = array(); foreach ($PayStage as $stage) { $allPayStages[$stage['BillNo']][$stage['PayStage']]['PlanPayAmt'] = $stage['PlanPayAmt']; $allPayStages[$stage['BillNo']][$stage['PayStage']]['PlanPayDate'] = $stage['PlanPayDate']; $month = collect_month(strtotime($stage['PlanPayDate'])); if (strtotime($stage['PlanPayDate']) > strtotime(date('Y-m-t', strtotime('now')))) { $allPayStages[$stage['BillNo']][$stage['PayStage']]['receivable_ornot'] = '--'; } else { $allPayStages[$stage['BillNo']][$stage['PayStage']]['receivable_ornot'] = 'Y'; } $allPayStages[$stage['BillNo']][$stage['PayStage']]['month'] = $month; $allPayStages[$stage['BillNo']][$stage['PayStage']]['received'] = 0; $allPayStages[$stage['BillNo']][$stage['PayStage']]['invoice'] = 0; } foreach ($allPayStages as $paykey => $pay) { uasort($allPayStages[$paykey], 'comparePlanPayDate'); } foreach ($allPayStages as &$payStage) { $sequenceNumber = 1; foreach ($payStage as $tk => &$pstage) { $pstage['sequenceNumber'] = $sequenceNumber; $sequenceNumber += 1; } } // 整理好的收款階段 $final_paystage = array(); foreach ($allPayStages as $key => &$payStage) { if (is_iterable($payStage)) { foreach ($payStage as $key2 => $pstage) { if (isset($arrayData[$key])) { $arrayData[$key]['PayStage'][$pstage['sequenceNumber']] = $pstage; if (isset($pstage['receivable_ornot']) && $pstage['receivable_ornot'] == 'Y') { $arrayData[$key]['receivable_budget'] += $pstage['PlanPayAmt']; } } } } } foreach ($invoice_data as $inv) { if (isset($arrayData[$inv['BillNo']])) { $arrayData[$inv['BillNo']]['invoice_budget'] += $inv['LAmountWithTax']; if (isset($arrayData[$inv['BillNo']]['invoice'][$inv['InvoiceNo']])) { $arrayData[$inv['BillNo']]['invoice'][$inv['InvoiceNo']] += $inv['LAmountWithTax']; } else { $arrayData[$inv['BillNo']]['invoice'][$inv['InvoiceNo']] = $inv['LAmountWithTax']; } } } foreach ($received_array as $received) { if (isset($arrayData[$received['OrderBillNo']]) && isset($received['CurrStandOffOAmount']) && $received['CurrStandOffOAmount'] > 0) { $arrayData[$received['OrderBillNo']]['received_budget'] += $received['CurrStandOffOAmount']; } } //未在T8的收款資料 $sql_wms = "SELECT * FROM account_received WHERE type='Z' "; $query_wms = mysqli_query($link, $sql_wms); foreach ($query_wms as $wms) { if (isset($arrayData[$wms['BillNo']]) && isset($wms['invoice_budget']) && isset($wms['invoice_no']) && isset($arrayData[$wms['BillNo']]['invoice_budget'])) { $arrayData[$wms['BillNo']]['invoice_budget'] += $wms['invoice_budget']; if (isset($arrayData[$wms['BillNo']]['invoice'][$wms['invoice_no']])) { $arrayData[$wms['BillNo']]['invoice'][$wms['invoice_no']] += $wms['invoice_budget']; } } if (isset($arrayData[$wms['BillNo']]) && isset($wms['received_budget']) && isset($arrayData[$wms['BillNo']]['received_budget'])) { $arrayData[$wms['BillNo']]['received_budget'] += $wms['received_budget']; } } foreach ($arrayData as $key => &$value) { if (!isset($value['PayStage'])) { $value['receivable_budget'] = $value['OAmountWithTax']; } else { $tmpReceived = $value['received_budget']; $tmpInvoice = $value['invoice_budget']; if (is_iterable($value['PayStage'])) { for ($sequence = 1; $sequence <= count($value['PayStage']); $sequence++) { if ($value['PayStage'][$sequence]['PlanPayAmt'] > $tmpInvoice) { $value['PayStage'][$sequence]['invoice'] = $tmpInvoice; $tmpInvoice = 0; } else { $value['PayStage'][$sequence]['invoice'] = $value['PayStage'][$sequence]['PlanPayAmt']; $tmpInvoice -= $value['PayStage'][$sequence]['PlanPayAmt']; } if ($value['PayStage'][$sequence]['PlanPayAmt'] > $tmpReceived) { $value['PayStage'][$sequence]['received'] = $tmpReceived; $tmpReceived = 0; } else { $value['PayStage'][$sequence]['received'] = $value['PayStage'][$sequence]['PlanPayAmt']; $tmpReceived -= $value['PayStage'][$sequence]['PlanPayAmt']; } } } $value['received_budget'] = $tmpReceived; } if ($value['receivable_budget'] > 0 && $value['received_budget'] < $value['receivable_budget']) { $value['month'] = collect_month(strtotime($value['BillDate'])); } else { $value['month'] = 0; } } $excel_aray = array(); $print_array = array(); foreach ($arrayData as $key => $value) { $uninvoice_budget = $value['OAmountWithTax'] - $value['invoice_budget']; $unreceive_budget = $value['receivable_budget'] - $value['received_budget']; $collect_month = $value['month']==0? '0':$value['month']; $excel_aray[$key] = [ $value['BillNo'], date('Y-m-d', strtotime($value['BillDate'])), $value['CustomerId'], $value['CustomerName'], $value['DeptName'], $value['PersonId'], $value['PersonName'], $value['ManagerId'], $value['ManagerName'], number_format(round($value['OAmountWithTax'])), number_format(round($value['receivable_budget'])), number_format(round($value['invoice_budget'])), number_format(round($uninvoice_budget)), number_format(round($value['received_budget'])), $unreceive_budget, $collect_month, $value['detail'] ]; if ($excel_aray[$key][14] > 1) { $print_array[$key] = [ $value['BillNo'], date('Y-m-d', strtotime($value['BillDate'])), $value['CustomerId'], $value['CustomerName'], $value['DeptName'], $value['PersonId'], $value['PersonName'], $value['ManagerId'], $value['ManagerName'], number_format(round($value['OAmountWithTax'])), number_format(round($value['receivable_budget'])), number_format(round($value['invoice_budget'])), number_format(round($uninvoice_budget)), number_format(round($value['received_budget'])), $unreceive_budget, $collect_month, $value['detail'] ]; } } $total_data = json_encode($print_array); ?>

零件 & 維修 應收帳款

合約日期
合約總金額

$row) { ?>
合約號 合約日期 部門 主管 保養員 客戶 總金額 應收金額 已收金額 催收金額 催收次數 內容
產品 【專案】[作番號]
" . $row[8]; ?> " . $row[6]; ?> ".$row[3] ?>