diff --git a/app/Http/Controllers/Finance/JournalEntryController.php b/app/Http/Controllers/Finance/JournalEntryController.php index cd03b184..358f353c 100644 --- a/app/Http/Controllers/Finance/JournalEntryController.php +++ b/app/Http/Controllers/Finance/JournalEntryController.php @@ -378,16 +378,23 @@ public function bankTransactions(Request $request): JsonResponse $accountNum = $request->input('accountNum', ''); // barobill_bank_transactions 테이블에서 직접 조회 - $query = BankTransaction::where('tenant_id', $tenantId) - ->whereBetween('trans_date', [$startDate, $endDate]) - ->orderByDesc('trans_date') - ->orderByDesc('trans_time'); + // 같은 거래가 잔액(balance)만 다르게 중복 저장된 경우 최신 건만 사용 + $dedupQuery = BankTransaction::where('tenant_id', $tenantId) + ->whereBetween('trans_date', [$startDate, $endDate]); if (!empty($accountNum)) { - $query->where('bank_account_num', str_replace('-', '', $accountNum)); + $dedupQuery->where('bank_account_num', str_replace('-', '', $accountNum)); } - $transactions = $query->get(); + $latestIds = $dedupQuery + ->selectRaw('MAX(id) as id') + ->groupBy('bank_account_num', 'trans_dt', 'deposit', 'withdraw') + ->pluck('id'); + + $transactions = BankTransaction::whereIn('id', $latestIds) + ->orderByDesc('trans_date') + ->orderByDesc('trans_time') + ->get(); // 로그 데이터 변환 $logs = $transactions->map(function ($tx) {