diff --git a/app/Http/Controllers/Barobill/EaccountController.php b/app/Http/Controllers/Barobill/EaccountController.php index a7ddf6cc..a4c0bd47 100644 --- a/app/Http/Controllers/Barobill/EaccountController.php +++ b/app/Http/Controllers/Barobill/EaccountController.php @@ -642,10 +642,12 @@ private function parseTransactionLogs($resultData, string $defaultBankName = '', // 원본 적요/내용 (remark2를 합산하지 않음 - 상대계좌예금주명 컬럼에서 별도 표시) $originalSummary = $cleanSummary; $originalCast = $savedItem?->cast ?? $remark2; + $originalTransOffice = $log->TransOffice ?? ''; // 오버라이드 적용 (수정된 값이 있으면 사용) $displaySummary = $override?->modified_summary ?? $originalSummary; $displayCast = $override?->modified_cast ?? $originalCast; + $displayTransOffice = $override?->modified_trans_office ?? $originalTransOffice; $logItem = [ 'transDate' => $transDate, @@ -664,7 +666,8 @@ private function parseTransactionLogs($resultData, string $defaultBankName = '', 'cast' => $displayCast, 'originalCast' => $originalCast, 'memo' => $log->Memo ?? '', - 'transOffice' => $log->TransOffice ?? '', + 'transOffice' => $displayTransOffice, + 'originalTransOffice' => $originalTransOffice, // 저장된 계정과목 정보 병합 'accountCode' => $savedItem?->account_code ?? '', 'accountName' => $savedItem?->account_name ?? '', @@ -1505,13 +1508,15 @@ public function saveOverride(Request $request): JsonResponse 'uniqueKey' => 'required|string|max:100', 'modifiedSummary' => 'nullable|string|max:200', 'modifiedCast' => 'nullable|string|max:200', + 'modifiedTransOffice' => 'nullable|string|max:200', ]); $result = BankTransactionOverride::saveOverride( $tenantId, $validated['uniqueKey'], $validated['modifiedSummary'] ?? null, - $validated['modifiedCast'] ?? null + $validated['modifiedCast'] ?? null, + $validated['modifiedTransOffice'] ?? null ); if ($result === null) { @@ -1529,6 +1534,7 @@ public function saveOverride(Request $request): JsonResponse 'id' => $result->id, 'modifiedSummary' => $result->modified_summary, 'modifiedCast' => $result->modified_cast, + 'modifiedTransOffice' => $result->modified_trans_office, ], ]); } catch (\Throwable $e) { diff --git a/app/Models/Barobill/BankTransactionOverride.php b/app/Models/Barobill/BankTransactionOverride.php index 2dd49a01..2f998197 100644 --- a/app/Models/Barobill/BankTransactionOverride.php +++ b/app/Models/Barobill/BankTransactionOverride.php @@ -17,6 +17,7 @@ class BankTransactionOverride extends Model 'unique_key', 'modified_summary', 'modified_cast', + 'modified_trans_office', ]; /** @@ -76,10 +77,11 @@ public static function saveOverride( int $tenantId, string $uniqueKey, ?string $modifiedSummary, - ?string $modifiedCast + ?string $modifiedCast, + ?string $modifiedTransOffice = null ): ?self { - // 둘 다 null이거나 빈 문자열이면 기존 레코드 삭제 - if (empty($modifiedSummary) && empty($modifiedCast)) { + // 모두 null이거나 빈 문자열이면 기존 레코드 삭제 + if (empty($modifiedSummary) && empty($modifiedCast) && empty($modifiedTransOffice)) { static::forTenant($tenantId)->byUniqueKey($uniqueKey)->delete(); return null; @@ -93,6 +95,7 @@ public static function saveOverride( [ 'modified_summary' => $modifiedSummary ?: null, 'modified_cast' => $modifiedCast ?: null, + 'modified_trans_office' => $modifiedTransOffice ?: null, ] ); } diff --git a/resources/views/barobill/eaccount/index.blade.php b/resources/views/barobill/eaccount/index.blade.php index ff062d08..00b00244 100644 --- a/resources/views/barobill/eaccount/index.blade.php +++ b/resources/views/barobill/eaccount/index.blade.php @@ -744,6 +744,7 @@ className="px-6 py-2 bg-stone-600 text-white rounded-lg hover:bg-stone-700 font- const TransactionEditModal = ({ isOpen, onClose, log, onSave }) => { const [modifiedSummary, setModifiedSummary] = useState(''); const [modifiedCast, setModifiedCast] = useState(''); + const [modifiedTransOffice, setModifiedTransOffice] = useState(''); const [saving, setSaving] = useState(false); useEffect(() => { @@ -751,6 +752,7 @@ className="px-6 py-2 bg-stone-600 text-white rounded-lg hover:bg-stone-700 font- // 현재 표시되는 값으로 초기화 (수정된 값이 있으면 그 값, 없으면 원본) setModifiedSummary(log.summary || ''); setModifiedCast(log.cast || ''); + setModifiedTransOffice(log.transOffice || ''); } }, [isOpen, log]); @@ -772,13 +774,14 @@ className="px-6 py-2 bg-stone-600 text-white rounded-lg hover:bg-stone-700 font- uniqueKey: log.uniqueKey, modifiedSummary: modifiedSummary !== log.originalSummary ? modifiedSummary : null, modifiedCast: modifiedCast !== log.originalCast ? modifiedCast : null, + modifiedTransOffice: modifiedTransOffice !== log.originalTransOffice ? modifiedTransOffice : null, }), }); const data = await res.json(); if (data.success) { notify(data.message, 'success'); - onSave(modifiedSummary, modifiedCast); + onSave(modifiedSummary, modifiedCast, modifiedTransOffice); onClose(); } else { notify(data.error || '저장 실패', 'error'); @@ -805,13 +808,14 @@ className="px-6 py-2 bg-stone-600 text-white rounded-lg hover:bg-stone-700 font- uniqueKey: log.uniqueKey, modifiedSummary: null, modifiedCast: null, + modifiedTransOffice: null, }), }); const data = await res.json(); if (data.success) { notify('원본으로 복원되었습니다.', 'success'); - onSave(log.originalSummary, log.originalCast); + onSave(log.originalSummary, log.originalCast, log.originalTransOffice); onClose(); } else { notify(data.error || '복원 실패', 'error'); @@ -895,6 +899,25 @@ className="w-full px-3 py-2 border border-stone-200 rounded-lg text-sm focus:rin
원본: {log.originalCast}
)} + +원본: {log.originalTransOffice}
+ )} +