diff --git a/INDEX.md b/INDEX.md index 37aa906..0413d43 100644 --- a/INDEX.md +++ b/INDEX.md @@ -288,7 +288,7 @@ DB 도메인별: | [20260319_db_codebridge_migration_and_fixes.md](changes/20260319_db_codebridge_migration_and_fixes.md) | MNG 전용 테이블 codebridge DB 이관 + 손익계산서 매출액/월별 세부내역 수정 | | [20260319_attendance_leave_sync_fix.md](changes/20260319_attendance_leave_sync_fix.md) | 근태현황 승인된 휴가 누락 attendance 레코드 자동 보정 | | [20260319_card_transaction_display_unification.md](changes/20260319_card_transaction_display_unification.md) | 카드거래 표시 포맷 3개 화면 통일 (계정별원장·일반전표·카드사용내역) | -| [20260319_split_card_journal_matching_fix.md](changes/20260319_split_card_journal_matching_fix.md) | 분리 카드거래 분개 매칭 누락 수정 (split source_key 패턴 매칭) | +| [20260319_split_card_journal_matching_fix.md](changes/20260319_split_card_journal_matching_fix.md) | 분리 카드거래 분개 매칭 + 개별 행 확장 표시 수정 | --- diff --git a/changes/20260319_split_card_journal_matching_fix.md b/changes/20260319_split_card_journal_matching_fix.md index f8488bf..a6c6a0b 100644 --- a/changes/20260319_split_card_journal_matching_fix.md +++ b/changes/20260319_split_card_journal_matching_fix.md @@ -1,47 +1,62 @@ -# 분리 카드거래 분개 매칭 누락 수정 +# 분리 카드거래 분개 매칭 및 개별 행 표시 수정 **날짜:** 2026-03-19 **작업자:** Claude Code ## 변경 개요 -카드사용내역에서 1건의 카드거래를 공제/불공제로 분리(split)한 후 각각 분개하면, 일반전표입력 화면에서 해당 거래가 **미분개**로 표시되는 버그를 수정했다. +카드사용내역에서 1건의 카드거래를 공제/불공제로 분리(split)한 후 각각 분개하면, 일반전표입력 화면에서 두 가지 문제가 있었다: -**원인**: 분리 분개의 `source_key`는 `uniqueKey|split:{id}` 형식인데, 일반전표입력과 계정별원장에서는 원본 `uniqueKey`로만 매칭하여 분리 분개를 인식하지 못했음. +1. 분리 분개를 인식하지 못해 **미분개**로 표시 +2. 분리 거래가 1행으로만 표시되어 개별 분리 항목의 금액/계정/공제구분이 누락 + +**원인**: 분리 분개의 `source_key`는 `uniqueKey|split:{id}` 형식인데, 원본 `uniqueKey`로만 매칭했고, 카드거래 목록이 원본 단위로만 반환되어 분리 항목이 확장되지 않았음. ## 수정된 파일 | 파일 | 변경 내용 | |------|----------| -| `app/Http/Controllers/Finance/JournalEntryController.php` | `cardTransactions()` 메서드에 분리 source_key LIKE 매칭 + 분리 건수 비교 로직 추가 | -| `app/Http/Controllers/Finance/AccountLedgerController.php` | `fetchCardTransactions()`에서 분리 키(`uniqueKey\|split:N`)도 원본 카드 데이터로 매핑 | -| `resources/views/finance/journal-entries.blade.php` | 카드거래 행 빌드 시 복수 분리 분개 journal을 합산하여 1행 표시 | +| `app/Http/Controllers/Finance/JournalEntryController.php` | `cardTransactions()`: 분리 항목을 `CardTransactionSplit`에서 조회하여 개별 행으로 확장, 분리 키 기반 분개 매칭 | +| `app/Http/Controllers/Finance/AccountLedgerController.php` | `fetchCardTransactions()`: 분리 키(`uniqueKey\|split:N`) 파싱하여 원본 카드 데이터로 매핑 | +| `resources/views/finance/journal-entries.blade.php` | 분리 행별 `분리#N` 배지 추가, 각 분리 행이 자체 분개 내역 표시 | ## 상세 변경 사항 -### 1. JournalEntryController — 분리 분개 감지 +### 1. JournalEntryController — 분리 항목 확장 -- `source_key LIKE 'uniqueKey|split:%'` 패턴으로 분리 분개 journal_entries 조회 -- `barobill_card_transaction_splits` 테이블에서 분리 건수 조회 -- 분리 건수 == 분리 분개 수이면 `hasJournal = true` -- `splitJournalIds` 배열을 프론트엔드에 전달 +- `barobill_card_transaction_splits` 테이블에서 기간 내 분리 데이터 조회 +- 분리가 있는 카드거래: 원본 1행 → 분리 항목별 N행으로 확장 + - 각 분리 행: 자체 `uniqueKey`(`원본|split:{id}`), 금액, 공제구분, 계정과목 + - `isSplit`, `splitIndex`, `splitTotal` 필드 추가 +- 분리가 없는 카드거래: 기존과 동일하게 1행 유지 +- 확장된 키로 `journal_entries` 매칭 → 각 분리 행이 자체 분개 상태 보유 ### 2. AccountLedgerController — 분리 키 매핑 -- source_key 파싱 시 `|split:N` 접미사 제거하여 원본 4-part 키 추출 +- source_key 파싱 시 `|split:N` 접미사를 제거하여 원본 4-part 키 추출 - 분리 키도 원본 카드거래 데이터(카드번호, 카드사, 가맹점 등)로 매핑 -### 3. journal-entries.blade.php — 복수 분개 합산 +### 3. journal-entries.blade.php — 분리 행 표시 -- `splitJournalIds`가 있으면 모든 journal의 lines를 합산 -- `linkedJournalIds`에 모든 분리 journal ID 등록 (중복 행 방지) -- 차변/대변 합계도 복수 journal 합산 +- `분리#N` 보라색 배지로 분리 항목 구분 +- 각 분리 행이 독립적으로 분개 내역/차변/대변 표시 +- 카드사용내역의 분리 구조와 동일하게 표현 + +## 표시 예시 + +카드사용내역에서 120,260원을 2건 분리한 경우: + +| 행 | 적요 | 출금 | 분개 | +|----|------|------|------| +| 분리#1 | 사무실 명글선반 **불공제** | 52,890 | 차 사무용품비 52,890 / 대 미지급비용 52,890 | +| 분리#2 | 팬트리정리함 구입 **공제** | 67,370 | 차 사무용품비 61,245 / 차 부가세대급금 6,125 / 대 미지급비용 67,370 | ## 테스트 체크리스트 -- [ ] 분리 거래(2건 이상 분리)가 일반전표에서 자물쇠 아이콘으로 표시 -- [ ] 분리 분개의 모든 라인(불공제+공제)이 분개 내역 컬럼에 합산 표시 -- [ ] 분리되지 않은 일반 카드거래의 분개 표시가 기존과 동일 (회귀 없음) +- [ ] 분리 거래가 일반전표에서 개별 행으로 표시 (분리#1, 분리#2) +- [ ] 각 분리 행에 자체 분개 내역/금액/공제구분 표시 +- [ ] 분리 분개 완료 시 각 행에 자물쇠 아이콘 +- [ ] 분리되지 않은 일반 카드거래의 표시가 기존과 동일 (회귀 없음) - [ ] 계정별원장에서 분리 카드거래 행에 카드 배지/가맹점 정보 표시 ## 관련 문서