80 lines
4.2 KiB
Markdown
80 lines
4.2 KiB
Markdown
# 분리 카드거래 분개 매칭 및 개별 행 표시 수정
|
|
|
|
**날짜:** 2026-03-19
|
|
**작업자:** Claude Code
|
|
|
|
## 변경 개요
|
|
|
|
카드사용내역에서 1건의 카드거래를 공제/불공제로 분리(split)한 후 각각 분개하면, 일반전표입력 화면에서 두 가지 문제가 있었다:
|
|
|
|
1. 분리 분개를 인식하지 못해 **미분개**로 표시
|
|
2. 분리 거래가 1행으로만 표시되어 개별 분리 항목의 금액/계정/공제구분이 누락
|
|
|
|
**원인**: 분리 분개의 `source_key`는 `uniqueKey|split:{id}` 형식인데, 원본 `uniqueKey`로만 매칭했고, 카드거래 목록이 원본 단위로만 반환되어 분리 항목이 확장되지 않았음.
|
|
|
|
## 수정된 파일
|
|
|
|
| 파일 | 변경 내용 |
|
|
|------|----------|
|
|
| `app/Http/Controllers/Finance/JournalEntryController.php` | `cardTransactions()`: 분리 항목을 `CardTransactionSplit`에서 조회하여 개별 행으로 확장, 분리 키 기반 분개 매칭 |
|
|
| `app/Http/Controllers/Finance/AccountLedgerController.php` | 분리 키 매핑 + 유효 split ID 필터 + 원본/고아 전표 중복 제외 |
|
|
| `app/Models/Barobill/CardTransactionSplit.php` | `saveSplits()`: 재분리 시 이전 split의 분개 전표도 삭제 |
|
|
| `resources/views/finance/journal-entries.blade.php` | 분리 행별 `분리#N` 배지 추가, 각 분리 행이 자체 분개 내역 표시 |
|
|
|
|
## 상세 변경 사항
|
|
|
|
### 1. JournalEntryController — 분리 항목 확장
|
|
|
|
- `barobill_card_transaction_splits` 테이블에서 기간 내 분리 데이터 조회
|
|
- 분리가 있는 카드거래: 원본 1행 → 분리 항목별 N행으로 확장
|
|
- 각 분리 행: 자체 `uniqueKey`(`원본|split:{id}`), 금액, 공제구분, 계정과목
|
|
- `isSplit`, `splitIndex`, `splitTotal` 필드 추가
|
|
- 분리가 없는 카드거래: 기존과 동일하게 1행 유지
|
|
- 확장된 키로 `journal_entries` 매칭 → 각 분리 행이 자체 분개 상태 보유
|
|
|
|
### 2. AccountLedgerController — 분리 키 매핑
|
|
|
|
- source_key 파싱 시 `|split:N` 접미사를 제거하여 원본 4-part 키 추출
|
|
- 분리 키도 원본 카드거래 데이터(카드번호, 카드사, 가맹점 등)로 매핑
|
|
|
|
### 3. AccountLedgerController — 원본 전표 중복 제외
|
|
|
|
- 분리 전표(`source_key`에 `|split:` 포함)가 존재하는 카드거래의 원본 전표를 자동 필터링
|
|
- 분리 전표의 base key를 수집하여, 동일 base key의 non-split 전표 라인을 제외
|
|
- 분리되지 않은 일반 카드거래와 비카드 전표는 영향 없음
|
|
|
|
### 4. CardTransactionSplit::saveSplits — 재분리 시 이전 분개 삭제
|
|
|
|
- 분리 재설정 시 이전 split ID의 분개 전표(`journal_entries`)도 함께 삭제
|
|
- 이전에는 splits만 삭제하고 분개 전표는 남겨두어 고아 전표가 잔존하는 버그 있었음
|
|
- 운영 DB 고아 전표 2건(JE-20251127-002/003, split:20/21) soft delete 완료
|
|
|
|
### 5. journal-entries.blade.php — 분리 행 표시
|
|
|
|
- `분리#N` 보라색 배지로 분리 항목 구분
|
|
- 각 분리 행이 독립적으로 분개 내역/차변/대변 표시
|
|
- 카드사용내역의 분리 구조와 동일하게 표현
|
|
|
|
## 표시 예시
|
|
|
|
카드사용내역에서 120,260원을 2건 분리한 경우:
|
|
|
|
| 행 | 적요 | 출금 | 분개 |
|
|
|----|------|------|------|
|
|
| 분리#1 | 사무실 명글선반 **불공제** | 52,890 | 차 사무용품비 52,890 / 대 미지급비용 52,890 |
|
|
| 분리#2 | 팬트리정리함 구입 **공제** | 67,370 | 차 사무용품비 61,245 / 차 부가세대급금 6,125 / 대 미지급비용 67,370 |
|
|
|
|
## 테스트 체크리스트
|
|
|
|
- [ ] 분리 거래가 일반전표에서 개별 행으로 표시 (분리#1, 분리#2)
|
|
- [ ] 각 분리 행에 자체 분개 내역/금액/공제구분 표시
|
|
- [ ] 분리 분개 완료 시 각 행에 자물쇠 아이콘
|
|
- [ ] 분리되지 않은 일반 카드거래의 표시가 기존과 동일 (회귀 없음)
|
|
- [ ] 계정별원장에서 분리 카드거래 행에 카드 배지/가맹점 정보 표시
|
|
- [ ] 계정별원장에서 분리 전표와 원본 전표가 중복 표시되지 않음
|
|
- [ ] 분리 재설정 후 이전 분개가 잔존하지 않음 (고아 전표 방지)
|
|
|
|
## 관련 문서
|
|
|
|
- `changes/20260319_card_transaction_display_unification.md` — 카드거래 표시 포맷 3개 화면 통일
|