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')