You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
10 KiB
131 lines
10 KiB
<?php
|
|
include "./header.php";
|
|
|
|
require_once dirname(__DIR__) . '/common/composer/vendor/autoload.php';
|
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
|
|
|
header('Content-Type: application/json');
|
|
$type = $_GET['type'];
|
|
$array_data = array();
|
|
$Bill = json_decode(file_get_contents("php://input"), true);
|
|
$spreadsheet = new Spreadsheet();
|
|
$sheet = $spreadsheet->getActiveSheet();
|
|
// file_put_contents('account-receivable.txt', json_encode($Bill));
|
|
if ($type == 'newContract') {
|
|
$colomnHeader = [
|
|
'合約號', '單據日期', '客戶編號', '客戶名稱', '客戶地址', '部門代碼', '部門名稱', '營業員工號', '營業員名稱', '部門主管工號', '部門主管名稱',
|
|
'合約總金額', '設備金額', '安裝金額', '目前應收金額', '已開發票金額', '已收金額', '催收金額', '催收次數', '作番總數 ', '作番狀態',
|
|
'訂金名稱', '訂金金額', '訂金應收金額', '訂金已開發票金額', '訂金已收金額', '訂金催收金額', '訂金催收次數',
|
|
'二次款名稱', '二次款金額', '二次款應收金額', '二次款已開發票金額', '二次款已收金額', '二次款催收金額', '二次款催收次數',
|
|
'貨抵工地款名稱', '貨抵工地款金額', '貨抵工地款應收金額', '貨抵工地款已開發票金額', '貨抵工地款已收金額', '貨抵工地款催收金額', '貨抵工地款催收次數',
|
|
'安裝款名稱', '安裝款金額', '安裝款應收金額', '安裝款已開發票金額', '安裝款已收金額', '安裝款催收金額', '安裝款催收次數',
|
|
'試車款名稱', '試車款金額', '試車款應收金額', '試車款已開發票金額', '試車款已收金額', '試車款催收金額', '試車款催收次數',
|
|
'官檢驗收款名稱', '官檢驗收款金額', '官檢驗收款應收金額', '官檢驗收款已開發票金額', '官檢驗收款已收金額', '官檢驗收款催收金額', '官檢驗收款催收次數',
|
|
'移交款名稱', '移交款金額', '移交款應收金額', '移交款已開發票金額', '移交款已收金額', '移交款催收金額', '移交款催收次數',
|
|
'尾款名稱', '尾款金額', '尾款應收金額', '尾款已開發票金額', '尾款已收金額', '尾款催收金額', '尾款催收次數'
|
|
];
|
|
$sheet->fromArray($colomnHeader, NULL, 'A1');
|
|
$rowIndex = 2;
|
|
foreach ($Bill as $item) {
|
|
$sheet->fromArray($item, 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', 'BS', 'BT', 'BU', 'BV', 'BW', 'BX', 'BY', 'BZ',
|
|
'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'CG', 'CH', 'CI', 'CJ', 'CK', 'CL', 'CM', 'CN', 'CO', 'CP', 'CQ', 'CR', 'CS', 'CT', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ',
|
|
'DA', 'DB', 'DC', 'DD', 'DE', 'DF', 'DG', 'DH', 'DI', 'DJ', 'DK', 'DL', 'DM', 'DN', 'DO', 'DP', 'DQ', 'DR', 'DS', 'DT', 'DU', 'DV', 'DW', 'DX', 'DY', 'DZ',
|
|
'EA', 'EB', 'EC', 'ED', 'EE', 'EF', 'EG', 'EH', 'EI', 'EJ', 'EK', 'EL', 'EM', 'EN', 'EO', 'EP', 'EQ', 'ER', 'ES', 'ET', 'EU', 'EV', 'EW', 'EX', 'EY', 'EZ',
|
|
|
|
];
|
|
foreach ($column as $col) {
|
|
if ($col == 'U') {
|
|
$sheet->getColumnDimension('U')->setWidth(35);
|
|
$sheet->getStyle('U')->getAlignment()->setWrapText(true);
|
|
} else {
|
|
$sheet->getColumnDimension($col)->setAutoSize(true);
|
|
}
|
|
}
|
|
$rowIndex++;
|
|
}
|
|
$writer = new Xlsx($spreadsheet);
|
|
$excelFileName = 'account-receivable-contract.xlsx';
|
|
$writer->save($excelFileName);
|
|
} elseif ($type == 'facility') {
|
|
$colomnHeader = [
|
|
'T8單據日期', '作番號', '合約號', '部門', '經理', '營業員', '客戶名稱', '統一編號', '聯絡地址', '抬頭',
|
|
'訂金名稱', '訂金合約金額', '訂金應收日期', '訂金目前應收金額', '訂金已開金額', '訂金未開金額', '訂金已收金額', '訂金催收金額', '訂金催收次數',
|
|
'二次款名稱', '二次款合約金額', '二次款應收日期', '二次款目前應收金額', '二次款已開金額', '二次款未開金額', '二次款已收金額', '二次款催收金額', '二次款催收次數',
|
|
'貨抵工地款名稱', '貨抵工地款合約金額', '貨抵工地款應收日期', '貨抵工地款目前應收金額', '貨抵工地款已開金額', '貨抵工地款未開金額', '貨抵工地款已收金額', '貨抵工地款催收金額', '貨抵工地款催收次數',
|
|
'安裝款名稱', '安裝款合約金額', '安裝款應收日期', '安裝款目前應收金額', '安裝款已開金額', '安裝款未開金額', '安裝款已收金額', '安裝款催收金額', '安裝款催收次數',
|
|
'試車款名稱', '試車款合約金額', '試車款應收日期', '試車款目前應收金額', '試車款已開金額', '試車款未開金額', '試車款已收金額', '試車款催收金額', '試車款催收次數',
|
|
'官檢款名稱', '官檢款合約金額', '官檢款應收日期', '官檢款目前應收金額', '官檢款已開金額', '官檢款未開金額', '官檢款已收金額', '官檢款催收金額', '官檢款催收次數',
|
|
'交車款名稱', '交車款合約金額', '交車款應收日期', '交車款目前應收金額', '交車款已開金額', '交車款未開金額', '交車款已收金額', '交車款催收金額', '交車款催收次數',
|
|
'尾款名稱', '尾款金額', '尾款應收日期', '尾款應收金額', '尾款已開金額', '尾款未開金額', '尾款已收金額', '尾款催收金額', '尾款催收次數',
|
|
'作番狀態', '合約-設備金額', '合約-安裝金額', '作番合約總金額', '作番總應收金額'
|
|
];
|
|
$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', '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'
|
|
];
|
|
foreach ($column as $col) {
|
|
$sheet->getColumnDimension($col)->setAutoSize(true);
|
|
}
|
|
|
|
$rowIndex++;
|
|
}
|
|
$writer = new Xlsx($spreadsheet);
|
|
$excelFileName = 'account-receivable-facility.xlsx';
|
|
$writer->save($excelFileName);
|
|
} else {
|
|
$colomnHeader = [
|
|
'T8單據日期', '合約號', '部門', '經理', '營業員', '客戶名稱', '統一編號', '聯絡地址', '抬頭',
|
|
'訂金', '訂金目前應收', '訂金已開票金額', '訂金未開票金額', '訂金已收金額', '訂金催收金額', '訂金最大催收次數', '訂金最小催收次數',
|
|
'二次款', '二次款目前應收', '二次款已開票金額', '二次款未開票金額', '二次款已收金額', '二次款催收金額', '二次款最大催收次數', '二次款最小催收次數',
|
|
'貨抵工地款', '貨抵工地款目前應收', '貨抵工地款已開票金額', '貨抵工地款未開票金額', '貨抵工地款已收金額', '貨抵工地款催收金額', '貨抵工地款最大催收次數', '貨抵工地款最小催收次數',
|
|
'安裝款', '安裝款目前應收', '安裝款已開票金額', '安裝款未開票金額', '安裝款已收金額', '安裝款催收金額', '安裝款最大催收次數', '安裝款最小催收次數',
|
|
'試車款', '試車款目前應收', '試車款已開票金額', '試車款未開票金額', '試車款已收金額', '試車款催收金額', '試車款最大催收次數', '試車款最小催收次數',
|
|
'官檢款', '官檢款目前應收', '官檢款已開票金額', '官檢款未開票金額', '官檢款已收金額', '官檢款催收金額', '官檢款最大催收次數', '官檢款最小催收次數',
|
|
'交車款', '交車款目前應收', '交車款已開票金額', '交車款未開票金額', '交車款已收金額', '交車款催收金額', '交車款最大催收次數', '交車款最小催收次數',
|
|
'尾款', '尾款目前應收', '尾款已開票金額', '尾款未開票金額', '尾款已收金額', '尾款催收金額', '尾款最大催收次數', '尾款最小催收次數',
|
|
'合約設備金額', '合約安裝金額', '合約總金額', '目前應收', '已開發票金額', '已收金額', '作番總數', '作番狀態'
|
|
];
|
|
|
|
$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', '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'
|
|
];
|
|
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);
|
|
}
|
|
echo $excelFileName;
|
|
?>
|
|
<!-- <script>
|
|
window.location.href = "account-receivable-index.php?<?= $token_link ?>";
|
|
</script> -->
|