From 53b54593cb8bcab4294d883fde2e8a875f3d0fac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Thu, 19 Mar 2026 22:43:16 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20[finance]=20=EA=B3=84=EC=A0=95=EB=B3=84?= =?UTF-8?q?=EC=9B=90=EC=9E=A5=20=EB=B6=84=EB=A6=AC=20=EC=B9=B4=EB=93=9C?= =?UTF-8?q?=EA=B1=B0=EB=9E=98=20=EC=9B=90=EB=B3=B8=20=EC=A0=84=ED=91=9C=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=20=EC=A0=9C=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Finance/AccountLedgerController.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/Http/Controllers/Finance/AccountLedgerController.php b/app/Http/Controllers/Finance/AccountLedgerController.php index bbbd0595..a3e9513b 100644 --- a/app/Http/Controllers/Finance/AccountLedgerController.php +++ b/app/Http/Controllers/Finance/AccountLedgerController.php @@ -76,6 +76,24 @@ public function list(Request $request): JsonResponse ->orderBy('je.entry_date') ->get(); + // 분리 전표가 있는 원본 카드 전표 제외 (중복 방지) + $splitBaseKeys = $allLines + ->filter(fn ($l) => $l->source_type === 'ecard_transaction' && $l->source_key && str_contains($l->source_key, '|split:')) + ->map(fn ($l) => explode('|split:', $l->source_key)[0]) + ->unique() + ->all(); + + if (! empty($splitBaseKeys)) { + $allLines = $allLines->filter(function ($l) use ($splitBaseKeys) { + if ($l->source_type !== 'ecard_transaction' || ! $l->source_key) { + return true; + } + + // 분리 전표가 존재하면 원본(non-split) 전표는 제외 + return str_contains($l->source_key, '|split:') || ! in_array($l->source_key, $splitBaseKeys); + })->values(); + } + // 카드거래 상세 조회 $cardTxMap = $this->fetchCardTransactions($tenantId, $allLines);