未轉應收確認單"; } else { return "已轉應收確認單"; } } else { return "時間未到"; } } function arSellInvoiceMaterial($row) { $CU_EstPayDate = $row['CU_EstPayDate']; $InvoiceName = $row['InvoiceName']; if (substr($CU_EstPayDate, 0, 6) <= date("Ym")) { if (empty($InvoiceName)) { return "未開發票"; } else { return "已開發票"; } } else { return "時間未到"; } } function checkCollectMonth($row) { $CU_EstPayDate = $row['CU_EstPayDate']; if (collect_month(strtotime($CU_EstPayDate)) >= 3) { return "" . collect_month(strtotime($CU_EstPayDate)) . ""; } else { return "" . collect_month(strtotime($CU_EstPayDate)) . ""; } } function checkArWriteOffBill($conn, $row) { $BillNo = $row['BillNo2']; $sql = " SELECT * 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 c.checkBillNo = '$BillNo' "; $del = $conn->query($sql); $i = 0; foreach ($del as $row) $i++; if (empty($i)) { return "未收款"; } else { return "已收款"; } } function getAllCount($conn, $sql) { $result = $conn->query($sql); $count = 0; foreach ($result as $row) { $count++; } return $count; } // 設置一個空陣列來放資料 $data = array(); $columns = array( 'PersonId', 'DeptName', 'BillNo', 'RowNo', 'CU_MaterialId', 'BizPartnerName', 'CU_EstPayDate', // 'checkCollectMonth', // 'checkArCheckBillStatus', 'UnTransCheckBLAmtWTax', 'HadTransCheckBLAmtWTax', 'BillNo2', 'arSellInvoiceMaterial', 'RowCode2', 'BillNo3', 'InvoiceName', 'OAmountWithTax', 'InvoiceNo', 'checkArWriteOffBill' ); $user_id = empty($_POST['user_id']) ? null : $_POST['user_id']; $department_id = accountidToDepartId($user_id); $contractno = empty($_POST['contractno']) ? '' : getContractnoDetails($link, $user_id, $department_id, $_POST['contractno']); $draw = $_POST['draw']; $start = $_POST['start']; $length = $_POST['length']; $order_column = $_POST['order'][0]['column']; $order_dir = $_POST['order'][0]['dir']; $sql = " SELECT siam.PersonId, cd.DeptName, cbp.BizPartnerName, siamd.RowNo, siamd.RowCode, siam.BillNo, siamd.CU_EstPayDate, siamd.UnTransCheckBLAmtWTax , siamd.HadTransCheckBLAmtWTax, siamd.CU_MaterialId, acb_tmp.BillNo2, acb_tmp.RowCode2, asim.BillNo AS BillNo3, asim.InvoiceName, asim.OAmountWithTax, asi.InvoiceNo FROM salIncomeApplyMaster AS siam -- 收入申請單 LEFT JOIN salIncomeApplyDetail AS siamd -- 收入申請單明細 ON siam.BillNo = siamd.BillNo LEFT JOIN comPerson AS cp -- 員工主檔 ON siam.PersonId = cp.PersonId LEFT JOIN comDepartment AS cd -- 部門主檔 ON cp.DeptId = cd.DeptId LEFT JOIN ( SELECT acbd.FromRowCode, acb.FromBillNo, acbd.BillNo AS BillNo2, acbd.RowCode AS RowCode2 FROM arCheckBill AS acb -- 應收確認單 LEFT JOIN arCheckBillDetail AS acbd -- 應收確認單明細 ON acb.BillNo = acbd.BillNo WHERE 1 = 1 AND acb.TypeId = 'RVS' "; $sql .= !empty($contractno) ? " AND acb.FromBillNo IN ($contractno) " : ""; $sql .= " ) AS acb_tmp ON siamd.RowNo = acb_tmp.FromRowCode AND siamd.BillNo = acb_tmp.FromBillNo LEFT JOIN arSellInvoiceMaterial AS asim -- 買賣發票明細 ON asim.FromBillNo = acb_tmp.BillNo2 AND asim.RowCode = acb_tmp.RowCode2 LEFT JOIN arSellInvoice AS asi ON asim.BillNo = asi.BillNo LEFT JOIN comBusinessPartner AS cbp ON siam.BizPartnerId = cbp.BizPartnerId WHERE 1 = 1 "; $sql .= !empty($contractno) ? " AND siam.BillNo IN ($contractno)" : ""; if (!empty($_POST['search']['value'])) { $sql .= " AND ( siam.PersonId LIKE '%" . $_POST['search']['value'] . "%' OR cd.DeptName LIKE '%" . $_POST['search']['value'] . "%' OR cbp.BizPartnerName LIKE '%" . $_POST['search']['value'] . "%' OR siam.BillNo LIKE '%" . $_POST['search']['value'] . "%' OR siamd.CU_MaterialId LIKE '%" . $_POST['search']['value'] . "%' OR asi.InvoiceNo LIKE '%" . $_POST['search']['value'] . "%' OR asim.InvoiceName LIKE '%" . $_POST['search']['value'] . "%' OR siamd.CU_EstPayDate LIKE '%" . $_POST['search']['value'] . "%' OR siamd.UnTransCheckBLAmtWTax LIKE '%" . $_POST['search']['value'] . "%' OR siamd.HadTransCheckBLAmtWTax LIKE '%" . $_POST['search']['value'] . "%' OR acb_tmp.BillNo2 LIKE '%" . $_POST['search']['value'] . "%' OR asim.OAmountWithTax LIKE '%" . $_POST['search']['value'] . "%' OR siamd.RowNo LIKE '%" . $_POST['search']['value'] . "%' OR siamd.RowCode LIKE '%" . $_POST['search']['value'] . "%' OR acb_tmp.RowCode2 LIKE '%" . $_POST['search']['value'] . "%' ) "; } $count = getAllCount($conn, $sql); $sql .= " ORDER BY " . $columns[$order_column] . " " . $order_dir; $sql .= " OFFSET $start ROWS FETCH NEXT $length ROWS ONLY "; $result = $conn->query($sql); $data = []; foreach ($result as $row) { $tmp = []; $tmp['PersonId'] = $row['PersonId'] . "
" . accountidToName($row['PersonId']); $tmp['DeptName'] = $row['DeptName']; $tmp['BillNo'] = $row['BillNo']; $tmp['RowNo'] = $row['RowNo']; $tmp['CU_MaterialId'] = $row['CU_MaterialId']; $tmp['BizPartnerName'] = $row['BizPartnerName']; $tmp['CU_EstPayDate'] = date('Y/m/d', strtotime($row['CU_EstPayDate'])); $tmp['checkCollectMonth'] = checkCollectMonth($row); $tmp['checkArCheckBillStatus'] = checkArCheckBillStatus($row); $tmp['UnTransCheckBLAmtWTax'] = number_format(intval($row['UnTransCheckBLAmtWTax']), 0, '', ','); $tmp['HadTransCheckBLAmtWTax'] = number_format(intval($row['HadTransCheckBLAmtWTax']), 0, '', ','); $tmp['BillNo2'] = $row['BillNo2']; $tmp['arSellInvoiceMaterial'] = arSellInvoiceMaterial($row); $tmp['RowCode2'] = $row['RowCode2']; $tmp['BillNo3'] = $row['BillNo3']; $tmp['InvoiceName'] = $row['InvoiceName']; $tmp['OAmountWithTax'] = number_format(intval($row['OAmountWithTax']), 0, '', ','); $tmp['InvoiceNo'] = $row['InvoiceNo']; $tmp['checkArWriteOffBill'] = checkArWriteOffBill($conn, $row); array_push($data, $tmp); } echo json_encode(array( "draw" => intval($draw), "recordsTotal" => $count, "recordsFiltered" => $count, "data" => $data ), JSON_UNESCAPED_UNICODE);