feat:분개 모달 공급가액/부가세 필드 추가

- SplitModal: 금액 단일필드 → 공급가액+부가세 2필드로 변경
- 행별 합계금액 자동계산 표시
- 분개 리스트 행에 공급가액/부가세 개별 표시
- 분개 기반 요약 재계산 로직 추가 (recalculateSummary)
- 모델: split_supply_amount, split_tax 필드 추가
- 컨트롤러: 분개 합계 검증 및 CSV 내보내기 반영
- 레거시 데이터(supply/tax 없는 기존 분개) 호환성 유지

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
김보곤
2026-02-05 15:42:42 +09:00
parent befa4273a8
commit fbfedf03d7
3 changed files with 172 additions and 32 deletions

View File

@@ -1076,7 +1076,11 @@ public function exportExcel(Request $request): StreamedResponse|JsonResponse
foreach ($splits as $index => $split) {
$splitDeductionType = $split['deduction_type'] ?? $split['deductionType'] ?? 'deductible';
$splitDeductionText = ($splitDeductionType === 'non_deductible') ? '불공' : '공제';
$splitAmount = $split['split_amount'] ?? $split['amount'] ?? 0;
$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);
$splitEvidenceName = $split['evidence_name'] ?? $split['evidenceName'] ?? '';
$splitDescription = $split['description'] ?? '';
$splitAccountCode = $split['account_code'] ?? $split['accountCode'] ?? '';
@@ -1092,7 +1096,7 @@ public function exportExcel(Request $request): StreamedResponse|JsonResponse
$splitEvidenceName,
$splitDescription,
number_format($splitAmount),
'', // 부가세 (분개에서는 생략)
$splitTax !== null ? number_format(floatval($splitTax)) : '',
'', // 승인번호
$splitAccountCode,
$splitAccountName,
@@ -1176,9 +1180,14 @@ public function saveSplits(Request $request): JsonResponse
]);
}
// 분개 금액 합계 검증
// 분개 금액 합계 검증 (공급가액 + 부가세 합계)
$originalAmount = floatval($originalData['originalAmount'] ?? 0);
$splitTotal = array_sum(array_map(fn($s) => floatval($s['amount'] ?? 0), $splits));
$splitTotal = array_sum(array_map(function ($s) {
if (isset($s['supplyAmount']) && isset($s['tax'])) {
return floatval($s['supplyAmount']) + floatval($s['tax']);
}
return floatval($s['amount'] ?? 0);
}, $splits));
if (abs($originalAmount - $splitTotal) > 0.01) {
return response()->json([