Browse Source

增加作番個別資訊(應收日期與次數)在account-receivable-index-ing.php

main
Ellin 1 year ago
parent
commit
1af4168cee
  1. 97
      wms/account-receivable-excel.php
  2. 910
      wms/account-receivable-index-ing.php
  3. 35
      wms/account-receivable-index.php
  4. BIN
      wms/account-receivable-test.xlsx
  5. 24
      wms/fun_global.php

97
wms/account-receivable-excel.php

@ -6,92 +6,46 @@ require_once dirname(__DIR__) . '/common/composer/vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
header('Content-Type: application/json');
// $Bill = file_get_contents('php://input');
// $Bill = $_POST['Bill'];
$array_data = array();
$Bill = json_decode(file_get_contents("php://input"), true);
// $Bill = json_decode($Bill, true);
// 檢查是否有 POST 資料
// if ($_SERVER["REQUEST_METHOD"] == "POST") {
// // 獲取 POST 資料
// // $postData = $_POST['Bill'];
// // 指定儲存資料的檔案路徑
// $filePath = 'Bill.txt';
// // 寫入檔案
// // 使用 FILE_APPEND 選項,以便將資料附加到檔案的末尾而不是覆寫檔案
// file_put_contents($filePath, $Bill . PHP_EOL, FILE_APPEND);
// echo '資料已成功寫入檔案。';
// } else {
// echo '請透過正確的方式訪問此頁面。';
// }
// exit();
// print_r($Bill);
// foreach ($Bill 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;
// $array_data[$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'], str_replace('<br>', '; ', $value['facilities'])
// ];
// $array_data[$key] = [
// $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6],
// $value['sign'][1], $value['second'][1], $value['arrive'][1], $value['install'][1], $value['tryrun'][1], $value['check'][1], $value['delivery'][1], $value['final'][1],
// $value['sign'][3], $value['second'][3], $value['arrive'][3], $value['install'][3], $value['tryrun'][3], $value['check'][3], $value['delivery'][3], $value['final'][3],
// $value['total_budget'], $value['receivable_budget'], $value['invoice_budget'], $value['received_budget'], str_replace('<br>', '; ', $value['facilities'])
// ];
// }
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$colomnHeader = [
'合約號', '部門', '經理', '營業員', '客戶名稱', '統一編號', '聯絡地址', '抬頭',
'簽約款', '簽約款目前應收', '簽約最大催收次數', '簽約最小應收次數',
'二次款', '二次款目前應收', '二次最大催收次數', '二次最小應收次數',
'貨抵工地款', '貨抵工地款目前應收', '貨抵工地最小催收次數', '貨抵工地最小應收次數',
'安裝款', '安裝款目前應收', '安裝最大催收次數', '安裝最小應收次數',
'試車款', '試車款目前應收', '試車最大催收次數', '試車最小應收次數',
'官檢款', '官檢款目前應收', '官檢最大催收次數', '官檢最小應收次數',
'交車款', '交車款目前應收', '交車最大催收次數', '交車最小應收次數',
'尾款', '尾款目前應收', '尾款最大催收次數', '尾款最小應收次數',
'合約總金額', '目前應收', '已開發票金額', '已收金額', '作番狀態'
'合約號','作番號', '部門', '經理', '營業員', '客戶名稱', '統一編號', '聯絡地址', '抬頭',
'訂金', '訂金目前應收', '訂金已收','訂金催收','訂金符合收款條件日期','訂金催收次數',
'二次款', '二次款目前應收', '二次款已收', '二次款催收','二次款符合收款條件日期','二次款催收次數',
'貨抵工地款', '貨抵工地款目前應收', '貨抵工地款已收', '貨抵工地款催收','貨抵工地款符合收款條件日期','貨抵工地款催收次數',
'安裝款', '安裝款目前應收', '安裝款已收', '安裝款催收','安裝款符合收款條件日期','安裝款催收次數',
'試車款', '試車款目前應收', '試車款已收', '試車款催收','試車款符合收款條件日期','試車款催收次數',
'官檢款', '官檢款目前應收', '官檢款已收', '官檢款催收','官檢款符合收款條件日期','官檢款催收次數',
'交車款', '交車款目前應收', '交車款已收', '交車款催收','交車款符合收款條件日期','交車款催收次數',
'尾款', '尾款目前應收', '尾款已收', '尾款催收','尾款符合收款條件日期','尾款催收次數',
'合約總金額', '目前應收', '已開發票金額', '已收金額'
];
// $colomnHeader = [
// '合約號', '部門', '經理', '營業員', '客戶名稱', '統一編號', '聯絡地址', '抬頭',
// '簽約款', '二次款', '貨抵工地款', '安裝款', '試車款', '官檢款', '交車款', '尾款',
// '目前應收簽約款', '目前應收二次款', '目前應收貨抵工地款', '目前應收安裝款', '目前應收試車款', '目前應收官檢款', '目前應收交車款', '目前應收尾款',
// '合約總金額', '目前應收', '已開發票金額', '已收金額', '作番狀態'
// '訂金', '訂金目前應收', '簽約最大催收次數', '簽約最小應收次數',
// '二次款', '二次款目前應收', '二次款最大催收次數', '二次款最小催收次數',
// '貨抵工地款', '貨抵工地款目前應收', '貨抵工地最小催收次數', '貨抵工地最小催收次數',
// '安裝款', '安裝款目前應收', '安裝最大催收次數', '安裝最小催收次數',
// '試車款', '試車款目前應收', '試車最大催收次數', '試車最小催收次數',
// '官檢款', '官檢款目前應收', '官檢最大催收次數', '官檢最小催收次數',
// '交車款', '交車款目前應收', '交車最大催收次數', '交車最小催收次數',
// '尾款', '尾款目前應收', '尾款最大催收次數', '尾款最小催收次數',
// '合約總金額', '目前應收', '已開發票金額', '已收金額','作番總數', '作番狀態'
// ];
$sheet->fromArray($colomnHeader, NULL, 'A1');
$rowIndex = 2;
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'
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS','AT'
];
foreach ($column as $col) {
if ($col == 'AS') {
$sheet->getStyle('AS' . $rowIndex)->getAlignment()->setWrapText(true);
if ($col == 'AT') {
$sheet->getStyle('AT' . $rowIndex)->getAlignment()->setWrapText(true);
} else {
$sheet->getColumnDimension($col)->setAutoSize(true);
}
@ -103,7 +57,4 @@ $writer = new Xlsx($spreadsheet);
$excelFileName = 'account-receivable-test.xlsx';
$writer->save($excelFileName);
echo $excelFileName;
?>
<!-- <script>
window.location.href = "account-receivable-index.php?<?= $token_link ?>";
</script> -->
?>

910
wms/account-receivable-index-ing.php

File diff suppressed because it is too large

35
wms/account-receivable-index.php

@ -91,6 +91,7 @@ foreach ($contract as $cont) {
$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];
@ -284,6 +285,16 @@ foreach ($wipwhole_array as $wip) {
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) {
@ -311,6 +322,7 @@ foreach ($wipwhole_array as $wip) {
// if ($arrayData[$wip['contractno']]['sign'][2])
$today = strtotime(date('Ymd'));
$contractday = strtotime($arrayData[$wip['contractno']]['sign'][2]);
$month = collect_month($contractday);
if ($today > $contractday) {
$arrayData[$wip['contractno']]['sign_num'] += 1;
$facility_status = $wip['facilityno'] . " (出貨前30天" . $arrayData[$wip['contractno']]['sign'][2] . "已過) <br>";
@ -700,11 +712,10 @@ foreach ($arrayData as $key => $value) {
$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']) || !isset($value[$i]['max'])) ? 0 : $value[$i]['max'];
$value[$i]['min'] = (empty($value[$i]['min']) || !isset($value[$i]['min'])) ? 0 : $value[$i]['min'];
$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],
@ -716,9 +727,9 @@ foreach ($arrayData as $key => $value) {
$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'], str_replace('<br>', '; ', $value['facilities'])
$value['total_budget'], $value['receivable_budget'], $value['invoice_budget'], $value['received_budget'], $value['total_facility_num'], str_replace('<br>', '; ', $value['facilities'])
];
}else{
} 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'],
@ -729,7 +740,7 @@ foreach ($arrayData as $key => $value) {
$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'], str_replace('<br>', '; ', $value['facilities'])
$value['total_budget'], $value['receivable_budget'], $value['invoice_budget'], $value['received_budget'], $value['total_facility_num'], str_replace('<br>', '; ', $value['facilities'])
];
}
@ -745,7 +756,7 @@ foreach ($arrayData as $key => $value) {
$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'], str_replace('<br>', '; ', $value['facilities'])
$value['total_budget'], $value['receivable_budget'], $value['invoice_budget'], $value['received_budget'], $value['total_facility_num'], str_replace('<br>', '; ', $value['facilities'])
];
}
@ -909,7 +920,7 @@ if (in_array(accountidToDepartId($user_id), array('220', '210')) || $user_id ==
</div>
<script>
function showContract(BillNo) {
window.open('account-receivable-contract.php?BillNo=' + BillNo+'&<?= $token_link ?>', '發票範例', config = 'height=600, width=1200');
window.open('account-receivable-contract.php?BillNo=' + BillNo + '&<?= $token_link ?>', '發票範例', config = 'height=600, width=1200');
console.log(BillNo);
}
@ -937,7 +948,7 @@ if (in_array(accountidToDepartId($user_id), array('220', '210')) || $user_id ==
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";
var name = "全部應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx";
link.setAttribute('href', window.location.origin + "/wms/account-receivable-test.xlsx");
link.setAttribute('download', name);
link.style.display = 'none';
@ -966,7 +977,7 @@ if (in_array(accountidToDepartId($user_id), array('220', '210')) || $user_id ==
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";
var name = "寶佳應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx";
link.setAttribute('href', window.location.origin + "/wms/account-receivable-test.xlsx");
link.setAttribute('download', name);
link.style.display = 'none';
@ -981,7 +992,7 @@ if (in_array(accountidToDepartId($user_id), array('220', '210')) || $user_id ==
}
function exclude_bogaData() {
var xhr = new XMLHttpRequest();
var url = window.location.origin + "/wms/account-receivable-excel.php?<?= $token_link ?>";
@ -991,7 +1002,7 @@ if (in_array(accountidToDepartId($user_id), array('220', '210')) || $user_id ==
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";
var name = "不含寶佳應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx";
link.setAttribute('href', window.location.origin + "/wms/account-receivable-test.xlsx");
link.setAttribute('download', name);
link.style.display = 'none';

BIN
wms/account-receivable-test.xlsx

Binary file not shown.

24
wms/fun_global.php

@ -599,3 +599,27 @@ function getAccounttype($link, $user_id)
$row = mysqli_fetch_array($data, MYSQLI_ASSOC);
return $row['accounttype'];
}
/**
* 算催收月份
* @param int $contractday
* @return int $month
*/
function collect_month($contractday)
{
$today_date = new DateTime(date('Y-m-d', strtotime('-1 month', strtotime(date('Y-m-d')))));
$latest_timestamp = $contractday;
$latest_date = new DateTime();
$latest_date->setTimestamp($latest_timestamp);
if($latest_timestamp < $today_date->getTimestamp()) {
$interval = $latest_date->diff($today_date);
$interval2 = $latest_date->diff($today_date);
$year = $interval2->format('%y');
$month = $interval->format('%m');
$total_month = $year * 12 + $month;
return $total_month;
}else{
return 0;
}
}

Loading…
Cancel
Save