From 83e79cf30d629949e3fa3a1b3a79e99603a17f6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Wed, 11 Feb 2026 13:08:15 +0900 Subject: [PATCH] =?UTF-8?q?fix:=EC=9D=BC=EB=B0=98=EC=A0=84=ED=91=9C=20?= =?UTF-8?q?=EC=9D=80=ED=96=89=EA=B1=B0=EB=9E=98=20=EC=9E=94=EC=95=A1=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95=20(API=20=EB=A0=88?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=9A=B0=EC=84=A0=20=EC=84=A0=ED=83=9D)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 동일 거래가 수동(is_manual=true)과 API(is_manual=false)로 중복 저장된 경우 MAX(id)로 최신 레코드를 선택하면 잔액이 0에서 계산된 수동 레코드가 선택되어 잔액이 잘못 표시되는 문제 수정. API 레코드의 balance가 바로빌에서 제공한 정확한 은행 잔액이므로 우선 선택. Co-Authored-By: Claude Opus 4.6 --- .../Controllers/Finance/JournalEntryController.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Finance/JournalEntryController.php b/app/Http/Controllers/Finance/JournalEntryController.php index 48238735..cc1417e0 100644 --- a/app/Http/Controllers/Finance/JournalEntryController.php +++ b/app/Http/Controllers/Finance/JournalEntryController.php @@ -379,7 +379,8 @@ public function bankTransactions(Request $request): JsonResponse $accountNum = $request->input('accountNum', ''); // barobill_bank_transactions 테이블에서 직접 조회 - // 같은 거래가 잔액(balance)만 다르게 중복 저장된 경우 최신 건만 사용 + // 같은 거래가 수동/API로 중복 저장된 경우 API(is_manual=false) 레코드 우선 사용 + // API 레코드의 balance가 바로빌에서 제공한 정확한 은행 잔액 $dedupQuery = BankTransaction::where('tenant_id', $tenantId) ->whereBetween('trans_date', [$startDate, $endDate]); @@ -388,9 +389,12 @@ public function bankTransactions(Request $request): JsonResponse } $latestIds = $dedupQuery - ->selectRaw('MAX(id) as id') + ->selectRaw('MAX(CASE WHEN COALESCE(is_manual, 0) = 0 THEN id END) as api_id, MAX(id) as fallback_id') ->groupBy('bank_account_num', 'trans_dt', 'deposit', 'withdraw') - ->pluck('id'); + ->get() + ->map(fn($row) => $row->api_id ?? $row->fallback_id) + ->filter() + ->values(); $transactions = BankTransaction::whereIn('id', $latestIds) ->orderByDesc('trans_date')