Browse Source

應收帳款 修改列印格式與合約最高催收次數

main
Ellin 1 year ago
parent
commit
4ee0aa02f3
  1. 3
      .gitignore
  2. BIN
      wms/account-receivable-contract.xlsx
  3. 88
      wms/account-receivable-excel.php
  4. 162
      wms/account-receivable-maintainance-index.php
  5. 73
      wms/account-receivable-new-index.php
  6. 166
      wms/account-receivable-renovate-index.php
  7. BIN
      wms/account-receivable-renovate.xlsx

3
.gitignore

@ -30,3 +30,6 @@ wms/chinese.php
phpinfo.php
wms/account_receivable_sql_file.sql
wms/account_receivable_maintainance_sql.sql
wms/account-receivable-contract.xlsx
wms/account-receivable-maintainance.xlsx
wms/account_receivable_renovate_sql.sql

BIN
wms/account-receivable-contract.xlsx

Binary file not shown.

88
wms/account-receivable-excel.php

@ -36,7 +36,7 @@ if ($type == 'newContract') {
'尾款催收金額', '尾款催收次數'
];
file_put_contents('account-receivable.txt', json_encode($Bill, JSON_UNESCAPED_UNICODE));
// file_put_contents('account-receivable.txt', json_encode($Bill, JSON_UNESCAPED_UNICODE));
$sheet->fromArray($colomnHeader, NULL, 'A2');
$rowIndex = 3;
foreach ($Bill as $key => $value) {
@ -59,79 +59,61 @@ if ($type == 'newContract') {
}
$writer = new Xlsx($spreadsheet);
$excelFileName = 'account-receivable-contract.xlsx';
$writer->save($excelFileName);
} elseif ($type == 'facility') {
} elseif ($type == 'maintainance') {
$sheet->mergeCells('A1:H1');
$sheet->setTitle('保養催收統整');
$sheet->setCellValue('A1', '保養催收統整');
$sheet->getStyle('A1')->getFont()->setBold(true);
$sheet->getStyle('A1')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('A1')->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
$sheet->getStyle('A1')->getFont()->setSize(14);
$sheet->getRowDimension('1')->setRowHeight(38);
$colomnHeader = [
'T8單據日期', '作番號', '合約號', '部門', '經理', '營業員', '客戶名稱', '統一編號', '聯絡地址', '抬頭',
'訂金名稱', '訂金合約金額', '訂金應收日期', '訂金目前應收金額', '訂金已開金額', '訂金未開金額', '訂金已收金額', '訂金催收金額', '訂金催收次數',
'二次款名稱', '二次款合約金額', '二次款應收日期', '二次款目前應收金額', '二次款已開金額', '二次款未開金額', '二次款已收金額', '二次款催收金額', '二次款催收次數',
'貨抵工地款名稱', '貨抵工地款合約金額', '貨抵工地款應收日期', '貨抵工地款目前應收金額', '貨抵工地款已開金額', '貨抵工地款未開金額', '貨抵工地款已收金額', '貨抵工地款催收金額', '貨抵工地款催收次數',
'安裝款名稱', '安裝款合約金額', '安裝款應收日期', '安裝款目前應收金額', '安裝款已開金額', '安裝款未開金額', '安裝款已收金額', '安裝款催收金額', '安裝款催收次數',
'試車款名稱', '試車款合約金額', '試車款應收日期', '試車款目前應收金額', '試車款已開金額', '試車款未開金額', '試車款已收金額', '試車款催收金額', '試車款催收次數',
'官檢款名稱', '官檢款合約金額', '官檢款應收日期', '官檢款目前應收金額', '官檢款已開金額', '官檢款未開金額', '官檢款已收金額', '官檢款催收金額', '官檢款催收次數',
'交車款名稱', '交車款合約金額', '交車款應收日期', '交車款目前應收金額', '交車款已開金額', '交車款未開金額', '交車款已收金額', '交車款催收金額', '交車款催收次數',
'尾款名稱', '尾款金額', '尾款應收日期', '尾款應收金額', '尾款已開金額', '尾款未開金額', '尾款已收金額', '尾款催收金額', '尾款催收次數',
'作番狀態', '合約-設備金額', '合約-安裝金額', '作番合約總金額', '作番總應收金額'
'合約號','序號','作番號','部門','契約員','客戶','金額','催收次數'
];
$sheet->fromArray($colomnHeader, NULL, 'A1');
$rowIndex = 2;
// file_put_contents('account-receivable.txt', json_encode($Bill, JSON_UNESCAPED_UNICODE));
$sheet->fromArray($colomnHeader, NULL, 'A2');
$rowIndex = 3;
foreach ($Bill as $key => $value) {
$sheet->fromArray($value, NULL, 'A' . $rowIndex);
$column = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ',
'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BK', 'BL', 'BM', 'BN', 'BO', 'BP', 'BQ', 'BR', 'BK'
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'
];
foreach ($column as $col) {
$sheet->getColumnDimension($col)->setAutoSize(true);
}
$rowIndex++;
}
$writer = new Xlsx($spreadsheet);
$excelFileName = 'account-receivable-facility.xlsx';
$writer->save($excelFileName);
} else {
$excelFileName = 'account-receivable-contract.xlsx';
}elseif ($type == 'renovate') {
$sheet->mergeCells('A1:K1');
$sheet->setTitle('汰改催收統整');
$sheet->setCellValue('A1', '汰改催收統整');
$sheet->getStyle('A1')->getFont()->setBold(true);
$sheet->getStyle('A1')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('A1')->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
$sheet->getStyle('A1')->getFont()->setSize(14);
$sheet->getRowDimension('1')->setRowHeight(38);
$colomnHeader = [
'T8單據日期', '合約號', '部門', '經理', '營業員', '客戶名稱', '統一編號', '聯絡地址', '抬頭',
'訂金', '訂金目前應收', '訂金已開票金額', '訂金未開票金額', '訂金已收金額', '訂金催收金額', '訂金最大催收次數', '訂金最小催收次數',
'二次款', '二次款目前應收', '二次款已開票金額', '二次款未開票金額', '二次款已收金額', '二次款催收金額', '二次款最大催收次數', '二次款最小催收次數',
'貨抵工地款', '貨抵工地款目前應收', '貨抵工地款已開票金額', '貨抵工地款未開票金額', '貨抵工地款已收金額', '貨抵工地款催收金額', '貨抵工地款最大催收次數', '貨抵工地款最小催收次數',
'安裝款', '安裝款目前應收', '安裝款已開票金額', '安裝款未開票金額', '安裝款已收金額', '安裝款催收金額', '安裝款最大催收次數', '安裝款最小催收次數',
'試車款', '試車款目前應收', '試車款已開票金額', '試車款未開票金額', '試車款已收金額', '試車款催收金額', '試車款最大催收次數', '試車款最小催收次數',
'官檢款', '官檢款目前應收', '官檢款已開票金額', '官檢款未開票金額', '官檢款已收金額', '官檢款催收金額', '官檢款最大催收次數', '官檢款最小催收次數',
'交車款', '交車款目前應收', '交車款已開票金額', '交車款未開票金額', '交車款已收金額', '交車款催收金額', '交車款最大催收次數', '交車款最小催收次數',
'尾款', '尾款目前應收', '尾款已開票金額', '尾款未開票金額', '尾款已收金額', '尾款催收金額', '尾款最大催收次數', '尾款最小催收次數',
'合約設備金額', '合約安裝金額', '合約總金額', '目前應收', '已開發票金額', '已收金額', '作番總數', '作番狀態'
'合約號','作番號','部門','營業員','客戶','收款階段名稱','應收日期','金額','已收金額','催收金額','催收次數'
];
$sheet->fromArray($colomnHeader, NULL, 'A1');
$rowIndex = 2;
// file_put_contents('account-receivable.txt', json_encode($Bill, JSON_UNESCAPED_UNICODE));
$sheet->fromArray($colomnHeader, NULL, 'A2');
$rowIndex = 3;
foreach ($Bill as $key => $value) {
$sheet->fromArray($value, NULL, 'A' . $rowIndex);
$column = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ',
'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BK', 'BL', 'BM', 'BN', 'BO', 'BP', 'BQ', 'BR', 'BS', 'BT', 'BU', 'BV', 'BW', 'BX', 'BY', 'BZ',
'CA', 'CB', 'CC', 'CD'
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H','I','J','K'
];
foreach ($column as $col) {
if ($col == 'CC') {
$sheet->getColumnDimension('CC')->setWidth(40);
$sheet->getStyle('CC')->getAlignment()->setWrapText(true);
} else {
$sheet->getColumnDimension($col)->setAutoSize(true);
}
}
$rowIndex++;
}
$writer = new Xlsx($spreadsheet);
$excelFileName = 'account-receivable-test.xlsx';
$writer->save($excelFileName);
$excelFileName = 'account-receivable-renovate.xlsx';
}
$writer->save($excelFileName);
echo $excelFileName;
?>
<!-- <script>

162
wms/account-receivable-maintainance-index.php

@ -77,7 +77,10 @@ LEFT JOIN arCheckBill
ON arCheckBill.BillNo = wod.FromBillNo
LEFT JOIN comDepartment AS cd
ON cd.DeptId = arCheckBill.DeptId
WHERE arCheckBill.TypeId = 'RVS'";
LEFT JOIN arWriteOffBill
ON arWriteOffBill.BillNo= wod.BillNo
WHERE arCheckBill.TypeId = 'RVS' AND arWriteOffBill.CreateTime >20240331235959";
// AND arWriteOffBill.CreateTime >20240229225959
$follower = find_follow($user_id);
if ((in_array($user_id, array('M0008', 'M0012'))) || (in_array(accountidToDepartId($user_id), array('220', '210', '501')))) {
@ -117,7 +120,7 @@ ORDER BY
siam.PersonId ASC,
siam.BillNo ASC,
siamd.RowCode ASC";
$sql_writeOff.=" GROUP BY
$sql_writeOff .= " GROUP BY
wod.FromBillNo
,arCheckBill.LAmountWithTax";
@ -125,10 +128,20 @@ $writeoff = array();
$query_T8 = $conn->query($sql);
$rows = $query_T8->fetchAll(PDO::FETCH_ASSOC);
$query_writeoff = $conn->query($sql_writeOff);
foreach($query_writeoff->fetchAll(PDO::FETCH_ASSOC) as $row){
$writeoff[$row['checkBillNo']]= ($row['TotalWriteOffAmount']==$row['LAmountWithTax'])?'V':'X';
foreach ($query_writeoff->fetchAll(PDO::FETCH_ASSOC) as $row) {
$writeoff[$row['checkBillNo']] = ($row['TotalWriteOffAmount'] == $row['LAmountWithTax']) ? 'V' : 'X';
}
$wms_initial = array();
$sql_wms_initial = "SELECT * FROM account-avaible-maintainance WHERE received =1";
$query_wms_initial = mysqli_query($link, $sql_wms_initial);
if (is_iterable($query_wms_initial) > 0) {
foreach ($query_wms_initial as $row) {
$wms_initial[$row['contract_no']][$row['RowCode']] = $row['received'];
}
}
$excel_all = array();
$today = strtotime(date('Ymt'));
$table = "";
for ($i = 0; $i < count($rows); $i++) {
@ -142,11 +155,14 @@ for ($i = 0; $i < count($rows); $i++) {
$data[$tmpname]['invoicedate'] = is_null($row['InvoiceTime']) ? null : date('Y-m-d', strtotime($row['InvoiceTime']));
$invoicedate = $data[$tmpname]['invoicedate'];
$data[$tmpname]['invoice'] = is_null($data[$tmpname]['invoicedate']) ? 0 : 1;
if(!is_null($data[$tmpname]['checkBillNo']) && isset($writeoff[$data[$tmpname]['checkBillNo']])){
if (!is_null($data[$tmpname]['checkBillNo']) && isset($writeoff[$data[$tmpname]['checkBillNo']])) {
$data[$tmpname]['WriteOff'] = $writeoff[$data[$tmpname]['checkBillNo']];
}else{
} else {
$data[$tmpname]['WriteOff'] = '--';
}
if (!is_null($data[$tmpname]['checkBillNo']) && isset($wms_initial[$row['ProjectId']][$row['RowCode']])) {
$data[$tmpname]['WriteOff'] = 'V';
}
$contract_no = $row['ProjectId'];
$facility_no = $row['CU_MaterialId'];
$RowCode = $row['RowCode'];
@ -157,37 +173,40 @@ for ($i = 0; $i < count($rows); $i++) {
$invoiceNo = $row['InvoiceNo'];
$tableinvoice_state = is_null($invoiceNo) ? 0 : 1;
$data[$tmpname]['invoice_budget'] = is_null($row['InvoiceOAmount']) ? 0 : $row['InvoiceOAmount'];
$invoice_budget = (is_null($data[$tmpname]['invoice_budget'])) ? 0 : $data[$tmpname]['invoice_budget'];
$table_writeoff = ($data[$tmpname]['WriteOff'] =='V') ? 1 : 0;
$table1 = "INSERT INTO account_receivable_maintainance(
`contract_no`,
`facility_no`,
`RowCode`,
`BillNo`,
`budget`,
`receivable`,
`invoice_state`,
`invoice_budget`,
`received`
";
$table2 = ") VALUES(
'$contract_no',
'$facility_no',
'$RowCode',
'$BillNo',
$budget,
$datahavetopay,
$tableinvoice_state,
$invoice_budget,
$table_writeoff
";
$table1 .= is_null($receivable_date) ? "" : ",`receivable_date`";
$table2 .= is_null($receivable_date) ? "" : ",'$receivable_date'";
$table1 .= is_null($invoicedate) ? "" : ",`invoice_date`";
$table2 .= is_null($invoicedate) ? "" : ",'$invoicedate'";
$table1 .= is_null($invoiceNo) ? "" : ",`invoice_no`";
$table2 .= is_null($invoiceNo) ? "" : ",'$invoiceNo'";
$table .= $table1 . $table2 . "); \n";
$invoice_budget = (is_null($data[$tmpname]['invoice_budget'])) ? 0 : $data[$tmpname]['invoice_budget'];
if(isset($data[$tmpname]['WriteOff']) && $data[$tmpname]['WriteOff'] !== 'V' && isset($data[$tmpname]['collecttime']) && $data[$tmpname]['collecttime']>0){
$excel_all[$tmpname] = [$data[$tmpname]['ProjectId'], $data[$tmpname]['RowCode'], $data[$tmpname]['CU_MaterialId'], $data[$tmpname]['DeptName'], $data[$tmpname]['PersonName'], $data[$tmpname]['BizPartnerName'], $data[$tmpname]['OAmountWithTax'], $data[$tmpname]['collecttime']];
}
// $table_writeoff = ($data[$tmpname]['WriteOff'] =='V') ? 1 : 0;
// $table1 = "INSERT INTO account_receivable_maintainance(
// `contract_no`,
// `facility_no`,
// `RowCode`,
// `BillNo`,
// `budget`,
// `receivable`,
// `invoice_state`,
// `invoice_budget`,
// `received`
// ";
// $table2 = ") VALUES(
// '$contract_no',
// '$facility_no',
// '$RowCode',
// '$BillNo',
// $budget,
// $datahavetopay,
// $tableinvoice_state,
// $invoice_budget,
// $table_writeoff
// ";
// $table1 .= is_null($receivable_date) ? "" : ",`receivable_date`";
// $table2 .= is_null($receivable_date) ? "" : ",'$receivable_date'";
// $table1 .= is_null($invoicedate) ? "" : ",`invoice_date`";
// $table2 .= is_null($invoicedate) ? "" : ",'$invoicedate'";
// $table1 .= is_null($invoiceNo) ? "" : ",`invoice_no`";
// $table2 .= is_null($invoiceNo) ? "" : ",'$invoiceNo'";
// $table .= $table1 . $table2 . "); \n";
}
// $file_path = 'account_receivable_maintainance_sql.sql';
@ -203,6 +222,8 @@ for ($i = 0; $i < count($rows); $i++) {
// echo "<br>------------<br>";
// }
// exit();
$total_data = json_encode($excel_all);
?>
<style>
table {
@ -250,11 +271,11 @@ for ($i = 0; $i < count($rows); $i++) {
}
</style>
<!-- <div style="width: 98%;margin: 1%;">
<div style="width: 98%;margin: 1%;">
<div class="btn-group btn-group-md " style="padding:10 px; width: 100%;">
<button type="button" style="width: 12%;" onclick="downloadData()" class="btn btn-success">下載 <span class="glyphicon glyphicon-download-alt"></span></button>
</div>
</div> -->
</div>
<div class="container">
<div class="text-center" style="margin-bottom: 20px;">
<h3><strong>應收帳款(保養)</strong></h3>
@ -347,17 +368,17 @@ include "./footer.php";
<thead>
<tr>
<th style='text-align:center;vertical-align: middle;width:100px'>合約號</th>
<th style='text-align:center;vertical-align: middle;'>序號</th>
<th style='text-align:center;vertical-align: middle;width:100px'>作番號</th>
<th style='text-align:center;vertical-align: middle;width:110px'>部門</th>
<th style='text-align:center;vertical-align: middle;width:80px'>序號</th>
<th style='text-align:center;vertical-align: middle;width:150px'>作番號</th>
<th style='text-align:center;vertical-align: middle;width:150px'>部門</th>
<!-- <th style='text-align:center;vertical-align: middle;'>主管</th> -->
<th style='text-align:center;vertical-align: middle;'>契約員</th>
<th style='text-align:center;vertical-align: middle;width:120px'>客戶名稱</th>
<th style='text-align:center;vertical-align: middle;width:180px'>客戶名稱</th>
<th style='text-align:center;vertical-align: middle;'>應收日期</th>
<th style='text-align:center;vertical-align: middle;'>是否應收</th>
<th style='text-align:center;vertical-align: middle;'>款別金額</th>
<th style='text-align:center;vertical-align: middle;'>是否收齊</th>
<th style='text-align:center;vertical-align: middle;width:100px'>是否收齊</th>
<th style='text-align:center;vertical-align: middle;'>催收次數</th>
</tr>
@ -372,13 +393,13 @@ include "./footer.php";
<!-- <td class="manager"><?= $row['LeaderId'] . "<br>" . $row['LeaderName']; ?></td> -->
<td class="personId"><?= $row['PersonId'] . "<br>" . $row['PersonName']; ?></td>
<td class="customerid"><?= $row['BizPartnerId'] . "<br>" . $row['BizPartnerName']; ?></td>
<td><?= $row['CU_EstPayDate']; ?></td>
<td><?= $row['havetopay']; ?></td>
<td class="CBudget"><?= number_format(round($row['OAmountWithTax'])); ?></td>
<td><?= $row['WriteOff']; ?></td>
<td class="collect"><?= (($row['havetopay'] == "V") && ($row['WriteOff'] !== 'V'))? $row['collecttime']:0; ?></td>
<td class="collect"><?= (($row['havetopay'] == "V") && ($row['WriteOff'] !== 'V')) ? $row['collecttime'] : 0; ?></td>
</tr>
<?php } ?>
</tbody>
@ -400,29 +421,6 @@ include "./footer.php";
}
}
}
// function downloadData() {
// var xhr = new XMLHttpRequest();
// var url = window.location.origin + "/wms/account-receivable-renovate-excel.php?type=all&<?= $token_link ?>";
// xhr.open('POST', url, true);
// xhr.setRequestHeader('Content-Type', 'application/json');
// xhr.onreadystatechange = function() {
// if (xhr.readyState === 4 && xhr.status === 200) {
// var file_path = xhr.responseText;
// var link = document.createElement('a');
// var name = "汰改應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx";
// link.setAttribute('href', window.location.origin + "/wms/account-receivable-renovate.xlsx");
// link.setAttribute('download', name);
// link.style.display = 'none';
// document.body.appendChild(link);
// link.click();
// document.body.removeChild(link);
// }
// }
// xhr.send(JSON.stringify({
// Bill:
// }));
// }
function searchFront(area) {
var term = 'search_' + area;
@ -510,8 +508,28 @@ include "./footer.php";
}
}
function check(searchname) {
console.log(searchname);
function downloadData() {
var BillData = <?= $total_data ?>;
var filename = "保養催收帳款" + "<?= date('Ymd-Hm') ?>" + ".xlsx";
var xhr = new XMLHttpRequest();
var url = window.location.origin + "/wms/account-receivable-excel.php?type=maintainance&<?= $token_link ?>";
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var link = document.createElement('a');
link.setAttribute('href', window.location.origin + "/wms/account-receivable-contract.xlsx");
link.setAttribute('download', filename);
link.style.display = 'none';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}
xhr.send(JSON.stringify({
Bill: BillData
}));
}
</script>

73
wms/account-receivable-new-index.php

@ -794,7 +794,6 @@ foreach ($final_paystage as $key => &$value) {
}
}
//合約資料填回arrayData
foreach ($final_paystage as $key => $value) {
for ($sequence = 1; $sequence <= count($value); $sequence++) {
@ -811,9 +810,6 @@ foreach ($final_paystage as $key => $value) {
$arvalue['receivable_budget'] += $value[$sequence]['PlanPayAmt'];
$arrayData[$key]['receivable_budget'] += $value[$sequence]['PlanPayAmt'];
}
// else {
// $arvalue['receivable_budget'] = 0;
// }
if ($arvalue['collect_month'] < $value[$sequence]['collect_month']) {
$arvalue['collect_month'] = $value[$sequence]['collect_month'];
}
@ -837,7 +833,7 @@ foreach ($final_paystage as $key => $value) {
$sum_received_budget += $value[$sequence]['received_budget'];
$sum_invoice_budget += $value[$sequence]['invoice_budget'];
}
if ($value[$sequence]['collect_month'] > $arrayData[$key]['collect_month']) {
if ((round($arvalue['receivable_budget'] - $arvalue['received_budget']) >2)&&($value[$sequence]['collect_month'] > $arrayData[$key]['collect_month'])) {
$arrayData[$key]['collect_month'] = $value[$sequence]['collect_month'];
}
}
@ -914,34 +910,34 @@ foreach ($arrayData as $key => &$value) {
$excel_contract_all_array[$key][5] = $excel_contract_array[$key][19];
$excel_contract_all_array[$key][6] = $excel_contract_array[$key][20];
$excel_contract_all_array[$key][7] = $excel_contract_array[$key][17];
$total_collect_budget += $excel_contract_all_array[$key][6];
$total_collect_facility += $excel_contract_all_array[$key][4];
$total_collect_budget += $excel_contract_all_array[$key][7];
$total_collect_facility += $excel_contract_all_array[$key][5];
$isBoga = 0;
if (stristr($value['PayStage'][1]['PayStage'], '寶佳')) {
$isBoga = 1;
$excel_contract_boga_array[$key] = array_fill(0, 24, '');
$excel_contract_boga_array[$key][0] = $excel_contract_array[$key][0];
$excel_contract_boga_array[$key][1] = $excel_contract_array[$key][3];
$excel_contract_boga_array[$key][2] = $excel_contract_array[$key][8];
$excel_contract_boga_array[$key][3] = $excel_contract_array[$key][11];
$excel_contract_boga_array[$key][4] = $excel_contract_array[$key][19];
$excel_contract_boga_array[$key][5] = $excel_contract_array[$key][20];
$excel_contract_boga_array[$key][6] = $excel_contract_array[$key][17];
$excel_contract_boga_array[$key][7] = $excel_contract_array[$key][18];
$boga_collect_budget += $excel_contract_boga_array[$key][6];
$boga_collect_facility += $excel_contract_boga_array[$key][4];
$excel_contract_boga_array[$key][2] = $excel_contract_array[$key][6];
$excel_contract_boga_array[$key][3] = $excel_contract_array[$key][8];
$excel_contract_boga_array[$key][4] = $excel_contract_array[$key][11];
$excel_contract_boga_array[$key][5] = $excel_contract_array[$key][19];
$excel_contract_boga_array[$key][6] = $excel_contract_array[$key][20];
$excel_contract_boga_array[$key][7] = $excel_contract_array[$key][17];
$boga_collect_budget += $excel_contract_boga_array[$key][7];
$boga_collect_facility += $excel_contract_boga_array[$key][5];
} else {
$excel_contract_noboga_array[$key] = array_fill(0, 24, '');
$excel_contract_noboga_array[$key][0] = $excel_contract_array[$key][0];
$excel_contract_noboga_array[$key][1] = $excel_contract_array[$key][3];
$excel_contract_noboga_array[$key][2] = $excel_contract_array[$key][8];
$excel_contract_noboga_array[$key][3] = $excel_contract_array[$key][11];
$excel_contract_noboga_array[$key][4] = $excel_contract_array[$key][19];
$excel_contract_noboga_array[$key][5] = $excel_contract_array[$key][20];
$excel_contract_noboga_array[$key][6] = $excel_contract_array[$key][17];
$excel_contract_noboga_array[$key][7] = $excel_contract_array[$key][18];
$noboga_collect_budget += $excel_contract_noboga_array[$key][6];
$noboga_collect_facility += $excel_contract_noboga_array[$key][4];
$excel_contract_noboga_array[$key][2] = $excel_contract_array[$key][6];
$excel_contract_noboga_array[$key][3] = $excel_contract_array[$key][8];
$excel_contract_noboga_array[$key][4] = $excel_contract_array[$key][11];
$excel_contract_noboga_array[$key][5] = $excel_contract_array[$key][19];
$excel_contract_noboga_array[$key][6] = $excel_contract_array[$key][20];
$excel_contract_noboga_array[$key][7] = $excel_contract_array[$key][17];
$noboga_collect_budget += $excel_contract_noboga_array[$key][7];
$noboga_collect_facility += $excel_contract_noboga_array[$key][5];
}
}
@ -1138,9 +1134,9 @@ foreach ($arrayData as $key => &$value) {
}
}
// $excel_contract_all_array['last']= $excel_contract_boga_array['last'] = $excel_contract_noboga_array['last'] = array_fill(0, 23, '');
$excel_contract_all_array['last']= ['合計', '', '', '', $total_collect_facility, '', $total_collect_budget, '', $total_sign_collect_budget, '', $total_second_collect_budget, '', $total_arrival_collect_budget, '', $total_install_collect_budget, '', $total_tryrun_collect_budget, '', $total_check_collect_budget, '', $total_delivery_collect_budget, '', $total_final_collect_budget, ''];
$excel_contract_boga_array['last']= ['合計', '', '', '', $boga_collect_facility, '', $boga_collect_budget, '', $boga_sign_collect_budget, '', $boga_second_collect_budget, '', $boga_arrival_collect_budget, '', $boga_install_collect_budget, '', $boga_tryrun_collect_budget, '', $boga_check_collect_budget, '', $boga_delivery_collect_budget, '', $boga_final_collect_budget, ''];
$excel_contract_noboga_array['last']= ['合計', '', '', '', $noboga_collect_facility, '', $noboga_collect_budget, '', $noboga_sign_collect_budget, '', $noboga_second_collect_budget, '', $noboga_arrival_collect_budget, '', $noboga_install_collect_budget, '', $noboga_tryrun_collect_budget, '', $noboga_check_collect_budget, '', $noboga_delivery_collect_budget, '', $noboga_final_collect_budget, ''];
$excel_contract_all_array['last']= ['合計', '', '', '','', $total_collect_facility, '', $total_collect_budget, $total_sign_collect_budget, '', $total_second_collect_budget, '', $total_arrival_collect_budget, '', $total_install_collect_budget, '', $total_tryrun_collect_budget, '', $total_check_collect_budget, '', $total_delivery_collect_budget, '', $total_final_collect_budget, ''];
$excel_contract_boga_array['last']= ['合計', '', '', '','', $boga_collect_facility, '', $boga_collect_budget, $boga_sign_collect_budget, '', $boga_second_collect_budget, '', $boga_arrival_collect_budget, '', $boga_install_collect_budget, '', $boga_tryrun_collect_budget, '', $boga_check_collect_budget, '', $boga_delivery_collect_budget, '', $boga_final_collect_budget, ''];
$excel_contract_noboga_array['last']= ['合計', '', '', '','', $noboga_collect_facility, '', $noboga_collect_budget, $noboga_sign_collect_budget, '', $noboga_second_collect_budget, '', $noboga_arrival_collect_budget, '', $noboga_install_collect_budget, '', $noboga_tryrun_collect_budget, '', $noboga_check_collect_budget, '', $noboga_delivery_collect_budget, '', $noboga_final_collect_budget, ''];
// print_r($excel_contract_array['M230064']);
// echo "<br>---------------------------------------------------------<br>";
@ -1342,7 +1338,7 @@ $testtotal = 0;
</div>
<div class="col-md-3">
<label for="average_contract_facility">平均台數 (台/合約)</label>
<input type="text" class="form-control" id="average_contract_facility" name="average_contract_facility" value="<?= number_format($average_contract_facility) ?>" disabled>
<input type="text" class="form-control" id="average_contract_facility" name="average_contract_facility" value="<?= round($average_contract_facility,2) ?>" disabled>
</div>
</div>
</form>
@ -1362,9 +1358,9 @@ $testtotal = 0;
<tr>
<th class="text-center" style="vertical-align: middle;">合約催收次數</th>
<td colspan="2">
<input type="text" class='form-control' id='search_collectstart' name='collect_time_start' style='width:10%;display:inline;' oninput="searchFront('collectstart')">
<input type="text" class='form-control' id='search_collectstart' name='collect_time_start' style='width:40%;display:inline;' oninput="searchFront('collectstart')">
≤ 催收次數 ≤
<input type="text" class='form-control' id='search_collectend' name='collect_time_end' style='width:10%;display:inline;' oninput="searchFront('collectend')">
<input type="text" class='form-control' id='search_collectend' name='collect_time_end' style='width:40%;display:inline;' oninput="searchFront('collectend')">
<!-- <button type="submit" class="btn btn-primary btn-sm">搜尋</button> -->
</td>
</tr>
@ -1416,7 +1412,10 @@ $testtotal = 0;
<?php
include "./footer.php";
?>
<div style="width: 20%;float:right;margin-right:5%; ">
<label>查詢條件</label>
<input type="text" id="search" name="search" class="form-control" placeholder="請輸入查詢條件" oninput="searchData()">
</div>
<div style="width:98%;margin:1% ;overflow-x: auto;">
<table class="table table-striped table-bordered" style="width:100%;">
@ -1603,6 +1602,20 @@ include "./footer.php";
<script>
function searchData() {
var searchTerm = document.getElementById('search').value.toLowerCase();
var rows = document.getElementsByClassName('data-row');
for (var i = 0; i < rows.length; i++) {
var rowText = rows[i].textContent.toLowerCase();
// var rowText = rows[i].id.toLowerCase();
if (rowText.includes(searchTerm)) {
console.log(rowText);
rows[i].style.display = '';
} else {
rows[i].style.display = 'none';
}
}
}
function searchFront(area) {
var term = 'search_' + area;

166
wms/account-receivable-renovate-index.php

@ -101,29 +101,16 @@ CheckAll.FromSalSalesOrder AS BillNo
SELECT CheckDetail.BillNo, CheckDetail.FromSalSalesOrder, CheckDetail.RowNo
FROM arCheckBillDetail AS CheckDetail )
AS CheckAll ON CheckAll.BillNo= Detail.FromBillNo AND Detail.FromRowCode = CheckAll.RowNo
WHERE Main.InvoiceState!=2";
WHERE Main.InvoiceState!=2 AND Main.InvoiceDate>20240229 ";
// T8核銷
$sql_received = "SELECT
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_received = "SELECT Detail.OrderBillNo,
Detail.CurrWriteOffLAmount,
Main.BillDate
FROM arWriteOffBillDetail AS Detail
LEFT JOIN arWriteOffBill AS Main
ON Detail.BillNo=Main.BillNo
WHERE LEN(Detail.OrderBillNo)>0 AND Main.BillDate>20240229 ";
$contractNumbers = array();
@ -294,6 +281,7 @@ foreach ($contract as $cont) {
$arrayData[$BillNo]['PayStage'][$RowNo]['type'] = "C";
}
}
// $received_array = $conn->query($sql_received);
$received_array = $conn->query($sql_received);
$invoice_data = $conn->query($sql_invoice);
$contract_budget_data = $conn->query($sql_contract_budget);
@ -647,6 +635,52 @@ foreach ($allPayStages as $key => &$payStage) {
}
}
// 將WMS內期初資料整理進arrayData
$sql_initial = "SELECT * FROM account_receivable_renovate";
$result_initial = mysqli_query($link, $sql_initial);
foreach($result_initial as $value){
$billno = $value['contract_no'];
switch ($value['contract_no']) {
case 'M220104':
$billNo = 'SO20230701001';
break;
case 'M230098':
$billNo = 'SO20230701002';
break;
case 'M230159':
$billNo = 'SO20230701003';
break;
case 'M230992':
$billNo = 'SO20230901001';
break;
case 'M230492':
$billNo = 'SO20231110001';
break;
case 'M230557':
$billNo = 'SO20231110002';
break;
case 'M230496':
$billNo = 'SO20231110003';
break;
case 'M230683':
$billNo = 'SP20240108001';
break;
case 'B230726':
$billNo = 'SP20240116004';
break;
case 'M220035':
$billNo = 'T220035';
break;
case 'M230098':
$billNo = 'T230098';
break;
}
if(isset($arrayData[$billNo])){
$arrayData[$billNo]['invoice_budget'] += intval($value['invoice_budget']);
$arrayData[$billNo]['received_budget'] += intval($value['received_budget']);
}
}
// [invoice][發票號碼][0 發票日期, 1 發票金額, 2 發票狀態, 3 收款日期, 4 收款金額, 5 手續費, 6 核銷單號]
foreach ($invoice_data as $invoice) {
if (isset($invoice['BillNo']) && isset($arrayData[$invoice['BillNo']])) {
@ -659,25 +693,10 @@ foreach ($invoice_data as $invoice) {
foreach ($received_array as $received) {
$BillNo = $received['OrderBillNo'];
if (isset($arrayData[$BillNo])) {
// if (isset($received['InvoiceNo']) && isset($arrayData[$BillNo]['invoice'][$received['InvoiceNo']])) {
$arrayData[$BillNo]['received_budget'] += $received['CurrStandOffOAmount'];
// array_push($arrayData[$BillNo]['invoice'][$received['InvoiceNo']], date($received['ReceivedDate']), $received['PayWriteOffOAmount'], $received['Fee'], $received['BillNo']);
// }
}
}
//未在T8的收款資料
$sql_wms = "SELECT * FROM account_received WHERE type='T' ";
$query_wms = mysqli_query($link, $sql_wms);
foreach ($query_wms as $wms) {
if (isset($arrayData[$wms['BillNo']]) && isset($arrayData[$wms['BillNo']]['invoice_budget'])) {
$arrayData[$wms['BillNo']]['invoice_budget'] += $wms['invoice_budget'];
$arrayData[$wms['BillNo']]['invoice'][$wms['invoice_no']] = [date("Y-m-d", strtotime($wms['invoice_date'])), $wms['invoice_budget'], 1];
}
if (isset($arrayData[$wms['BillNo']]) && isset($arrayData[$wms['BillNo']]['received_budget'])) {
$arrayData[$wms['BillNo']]['received_budget'] += $wms['received_budget'];
$arrayData[$BillNo]['received_budget'] += $received['CurrWriteOffLAmount'];
}
}
// $final_paystage ['type'] ['PlanPayDate'] ['PayAmount'] ['facilityno'] ['sequenceNumber'] ['name'] ['InvoiceAmount'] ['receivedAmount']
foreach ($final_paystage as $key => &$payStage) {
if (isset($arrayData[$key]['invoice_budget']) && isset($arrayData[$key]['received_budget'])) {
@ -766,14 +785,13 @@ foreach ($arrayData as $key => $value) {
} else {
$thisplanpaydate = $thisPayStage['PlanPayDate'];
}
if ($havetopay == "V" && $unReceivedAmount > 1) {
if ($havetopay == "V" && ($unReceivedAmount > 10) && ($final_paystage[$key][$sequence]['collect_month'] >0)) {
$print_array[$keyname] = [
$value[10], $thisPayStage['facilityno'], $value[0], $value[1], $value[11], $value['ManagerName'], $value[3], $value[4], $value[5], $value[6], $value[7], $value[8],
$thisPayStage['name'], $thisplanpaydate, $havetopay,
number_format(round($final_paystage[$key][$sequence]['PayAmount'])),
number_format(round($final_paystage[$key][$sequence]['InvoiceAmount'])), number_format(round($unInvoiceAmount)),
number_format(round($final_paystage[$key][$sequence]['receivedAmount'])), number_format(round($unReceivedAmount)),
number_format(round($final_paystage[$key][$sequence]['collect_month']))
$value[10], $thisPayStage['facilityno'], $value[1],$value[4], $value[5],
$thisPayStage['name'], $thisplanpaydate,
round($final_paystage[$key][$sequence]['PayAmount']),
round($final_paystage[$key][$sequence]['receivedAmount']), round($unReceivedAmount),
round($final_paystage[$key][$sequence]['collect_month'])
];
}
@ -793,41 +811,41 @@ foreach ($arrayData as $key => $value) {
} else {
$invoice_state = 0;
}
$table1 = "INSERT INTO account_receivable_renovate(
`contract_no`,
`facility_no`,
`stagename`,
`budget`,
`receivable`,
`invoice_state`,
`invoice_budget`,
`received_budget`
";
$table2 = ") VALUES (
'$value[10]',
'$thisPayStage[facilityno]',
'$thisPayStage[name]',
$table_budget,
$table_hadtopay,
$invoice_state,
$table_invoice_budget,
$table_received_budget
";
// $table1 = "INSERT INTO account_receivable_renovate(
// `contract_no`,
// `facility_no`,
// `stagename`,
// `budget`,
// `receivable`,
// `invoice_state`,
// `invoice_budget`,
// `received_budget`
// ";
// $table2 = ") VALUES (
// '$value[10]',
// '$thisPayStage[facilityno]',
// '$thisPayStage[name]',
// $table_budget,
// $table_hadtopay,
// $invoice_state,
// $table_invoice_budget,
// $table_received_budget
// ";
if (!is_null($final_paystage[$key][$sequence]['PlanPayDate']) && !empty($final_paystage[$key][$sequence]['PlanPayDate'])) {
$table1 .= ",`receivable_date`";
$receivable_date = date('Y-m-d', strtotime($final_paystage[$key][$sequence]['PlanPayDate']));
$table2 .= ",'$receivable_date' \n";
}
$table .= $table1 . $table2 . "); \n";
// if (!is_null($final_paystage[$key][$sequence]['PlanPayDate']) && !empty($final_paystage[$key][$sequence]['PlanPayDate'])) {
// $table1 .= ",`receivable_date`";
// $receivable_date = date('Y-m-d', strtotime($final_paystage[$key][$sequence]['PlanPayDate']));
// $table2 .= ",'$receivable_date' \n";
// }
// $table .= $table1 . $table2 . "); \n";
}
}
}
// $file_path = 'account_receivable_renovate_sql.sql';
// if (file_put_contents($file_path, $table) !== false) {
// // echo "SQL文件已成功生成:{$file_path}";
// echo "SQL文件已成功生成:{$file_path}";
// } else {
// // echo "生成SQL文件时出现错误。";
// echo "生成SQL文件时出现错误。";
// }
$total_data = json_encode($print_array);
$average_budget = $sum_total_budget / $sum_facility;
@ -1089,7 +1107,7 @@ include "./footer.php";
function downloadData() {
var xhr = new XMLHttpRequest();
var url = window.location.origin + "/wms/account-receivable-renovate-excel.php?type=all&<?= $token_link ?>";
var url = window.location.origin + "/wms/account-receivable-excel.php?type=renovate&<?= $token_link ?>";
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function() {

BIN
wms/account-receivable-renovate.xlsx

Binary file not shown.
Loading…
Cancel
Save