|
|
@ -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> --> |
|
|
|
?> |