fix:카드사용내역 엑셀 다운로드 개선
- 카드번호 문자형 출력 (="번호" 형식으로 과학적 표기 방지) - 사업자번호, 가맹점명 열 추가 - 합계금액/공급가액/세액 3열로 분리 (화면과 동일) - 분개 행도 공급가액/세액 분리 출력 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1042,10 +1042,13 @@ public function exportExcel(Request $request): StreamedResponse|JsonResponse
|
||||
'카드번호',
|
||||
'카드사',
|
||||
'공제여부',
|
||||
'사업자번호',
|
||||
'가맹점명',
|
||||
'증빙/판매자상호',
|
||||
'내역',
|
||||
'승인금액',
|
||||
'부가세',
|
||||
'합계금액',
|
||||
'공급가액',
|
||||
'세액',
|
||||
'승인번호',
|
||||
'계정과목코드',
|
||||
'계정과목명',
|
||||
@@ -1058,8 +1061,13 @@ public function exportExcel(Request $request): StreamedResponse|JsonResponse
|
||||
$cardNum = $log['cardNum'] ?? '';
|
||||
$cardBrand = $log['cardBrand'] ?? '';
|
||||
$approvalNum = $log['approvalNum'] ?? '';
|
||||
$approvalAmount = $log['approvalAmount'] ?? 0;
|
||||
$tax = $log['tax'] ?? 0;
|
||||
$approvalAmount = floatval($log['approvalAmount'] ?? 0);
|
||||
$tax = floatval($log['effectiveTax'] ?? $log['tax'] ?? 0);
|
||||
$supplyAmount = floatval($log['effectiveSupplyAmount'] ?? ($approvalAmount - $tax));
|
||||
$totalAmount = $supplyAmount + $tax;
|
||||
|
||||
// 카드번호를 문자형으로 강제 (엑셀 과학적 표기 방지)
|
||||
$cardNumText = $cardNum ? "=\"{$cardNum}\"" : '';
|
||||
|
||||
// 고유키로 분개 데이터 확인
|
||||
$uniqueKey = $log['uniqueKey'] ?? implode('|', [
|
||||
@@ -1076,8 +1084,12 @@ public function exportExcel(Request $request): StreamedResponse|JsonResponse
|
||||
$deductionType = $log['deductionType'] ?? ($log['merchantBizNum'] ? 'deductible' : 'non_deductible');
|
||||
$deductionText = ($deductionType === 'non_deductible') ? '불공' : '공제';
|
||||
|
||||
// 사업자번호, 가맹점명
|
||||
$merchantBizNum = $log['merchantBizNum'] ?? '';
|
||||
$merchantName = $log['merchantName'] ?? '';
|
||||
|
||||
// 증빙/판매자상호, 내역
|
||||
$evidenceName = $log['evidenceName'] ?? $log['merchantName'] ?? '';
|
||||
$evidenceName = $log['evidenceName'] ?? $merchantName;
|
||||
$description = $log['description'] ?? $log['merchantBizType'] ?? '';
|
||||
|
||||
if ($hasSplits) {
|
||||
@@ -1085,15 +1097,18 @@ public function exportExcel(Request $request): StreamedResponse|JsonResponse
|
||||
fputcsv($handle, [
|
||||
'원본',
|
||||
$dateTime,
|
||||
$cardNum,
|
||||
$cardNumText,
|
||||
$cardBrand,
|
||||
'-', // 분개된 경우 공제여부는 각 분개에서 표시
|
||||
'-',
|
||||
$merchantBizNum,
|
||||
$merchantName,
|
||||
$evidenceName,
|
||||
$description,
|
||||
number_format($approvalAmount),
|
||||
number_format($totalAmount),
|
||||
number_format($supplyAmount),
|
||||
number_format($tax),
|
||||
$approvalNum,
|
||||
'-', // 분개된 경우 계정과목은 각 분개에서 표시
|
||||
'-',
|
||||
'분개됨 (' . count($splits) . '건)',
|
||||
''
|
||||
]);
|
||||
@@ -1102,11 +1117,9 @@ public function exportExcel(Request $request): StreamedResponse|JsonResponse
|
||||
foreach ($splits as $index => $split) {
|
||||
$splitDeductionType = $split['deduction_type'] ?? $split['deductionType'] ?? 'deductible';
|
||||
$splitDeductionText = ($splitDeductionType === 'non_deductible') ? '불공' : '공제';
|
||||
$splitSupplyAmount = $split['split_supply_amount'] ?? $split['supplyAmount'] ?? null;
|
||||
$splitTax = $split['split_tax'] ?? $split['tax'] ?? null;
|
||||
$splitAmount = ($splitSupplyAmount !== null && $splitTax !== null)
|
||||
? floatval($splitSupplyAmount) + floatval($splitTax)
|
||||
: ($split['split_amount'] ?? $split['amount'] ?? 0);
|
||||
$splitSupplyAmount = floatval($split['split_supply_amount'] ?? $split['supplyAmount'] ?? 0);
|
||||
$splitTax = floatval($split['split_tax'] ?? $split['tax'] ?? 0);
|
||||
$splitTotal = $splitSupplyAmount + $splitTax;
|
||||
$splitEvidenceName = $split['evidence_name'] ?? $split['evidenceName'] ?? '';
|
||||
$splitDescription = $split['description'] ?? '';
|
||||
$splitAccountCode = $split['account_code'] ?? $split['accountCode'] ?? '';
|
||||
@@ -1115,15 +1128,18 @@ public function exportExcel(Request $request): StreamedResponse|JsonResponse
|
||||
|
||||
fputcsv($handle, [
|
||||
'└ 분개 #' . ($index + 1),
|
||||
'', // 사용일시 (원본과 동일하므로 생략)
|
||||
'', // 카드번호
|
||||
'', // 카드사
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
$splitDeductionText,
|
||||
'',
|
||||
'',
|
||||
$splitEvidenceName,
|
||||
$splitDescription,
|
||||
number_format($splitAmount),
|
||||
$splitTax !== null ? number_format(floatval($splitTax)) : '',
|
||||
'', // 승인번호
|
||||
number_format($splitTotal),
|
||||
number_format($splitSupplyAmount),
|
||||
number_format($splitTax),
|
||||
'',
|
||||
$splitAccountCode,
|
||||
$splitAccountName,
|
||||
$splitMemo
|
||||
@@ -1134,12 +1150,15 @@ public function exportExcel(Request $request): StreamedResponse|JsonResponse
|
||||
fputcsv($handle, [
|
||||
'일반',
|
||||
$dateTime,
|
||||
$cardNum,
|
||||
$cardNumText,
|
||||
$cardBrand,
|
||||
$deductionText,
|
||||
$merchantBizNum,
|
||||
$merchantName,
|
||||
$evidenceName,
|
||||
$description,
|
||||
number_format($approvalAmount),
|
||||
number_format($totalAmount),
|
||||
number_format($supplyAmount),
|
||||
number_format($tax),
|
||||
$approvalNum,
|
||||
$log['accountCode'] ?? '',
|
||||
|
||||
Reference in New Issue
Block a user