다크모드
계산식과 불변식
이 문서는 화면, API, 보조원장, 총계정원장이 함께 지켜야 할 계산 계약을 정의한다.
1. 부과와 채권
text
당기 부과액
= 과세 공급가액
+ 면세 공급가액
+ 영세율 공급가액
+ 비매출부채 부과액
+ 부가세text
미수관리비 발생액 = E2 대변 구성 합계- 부과액은 0보다 작을 수 없다.
- E2 차변 미수관리비와 대변 구성 합계는 같아야 한다.
- 세금구분과 회계 성격을 합계 과정에서 잃지 않는다.
2. 청구액
청구 확정 시점:
text
총 미수채권
= 당기 미수관리비
+ 전기이월 미수
+ 인식된 연체료text
청구액 = max(0, 총 미수채권 - 선수금 충당액)- 청구액은 음수가 될 수 없다.
- 청구액과 선수금 충당액은 청구 문서 버전에 고정한다.
- 청구 후 수납으로 청구액을 소급 변경하지 않는다.
- 청구액을 실시간 미수잔액의 별칭으로 사용하지 않는다.
3. 선수금
text
선수금 기말잔액
= 선수금 기초잔액
+ 신규 적립액
- 충당액
- 환급액- 선수금 잔액은 음수가 될 수 없다.
- 선수금 충당액은 충당 직전 가용 선수금과 대상 미수잔액을 초과할 수 없다.
- 선수금 충당은 현금 이동을 만들지 않는다.
- 표시상 차감과 원장 E5 충당을 중복 적용하지 않는다.
4. 수납
식별 입금:
text
입금액 = 원금 충당액 + 연체료 충당액 + 선수금 적립액- 미수 충당액은 충당 직전 미수잔액을 초과할 수 없다.
- 초과액은 미수잔액을 음수로 만들지 않고 선수금으로 적립한다.
- 취소된 입금은 활성 수납액과 전표 집계에서 제외한다.
- 수납 취소는 원 충당과 선수금 적립을 역산해 직전 상태로 복원한다.
5. 미수잔액
text
현재 미수잔액
= 기초 미수잔액
+ 신규 미수관리비 발생액
+ 인식된 연체료
- 선수금 충당액
- 수납 충당액
- 채권 감액 조정
- 확정 대손액- 미수잔액은 계약·차수·구성요소별 원장의 합과 일치해야 한다.
- 목록의 월 합계는 페이지에 보이는 행만 더한 값이 아니라 필터 전체 집계여야 한다.
- 원 청구액과 현재 미수잔액은 별도 필드와 별도 시점을 가진다.
6. 가수금
text
가수금 기말잔액
= 미식별 입금 누계
- 식별 재분류 누계
- 반환·정리 누계- 가수금은 납부자·계약별 수납액에 포함하지 않는다.
- 재분류 시 현금을 다시 인식하지 않는다.
- 마감 시 미식별 가수금 잔액을 경고하거나 정책에 따라 마감을 차단한다.
7. 전표
모든 전표:
text
Σ 차변 = Σ 대변추가 불변식:
- 하나의 원천 사건은 같은 장부에 한 번만 전기한다.
- 전기 완료·마감 후 원 사건을 덮어쓰지 않는다.
- 취소·정정은 원 전표 참조가 있는 역분개 또는 조정 전표로 기록한다.
- 화면의 분개 미리보기와 실제 전기는 같은 계산 소스를 사용한다.
8. 청구 문서와 실시간 원장
| 값 | 시점 | 변경 방식 |
|---|---|---|
| 부과액 | 부과 확정 | 취소·재확정 |
| 청구액 | 청구 문서 확정 | 취소·재발행 또는 새 버전 |
| 수납액 | 입금 확정 | 수납·취소 사건 누적 |
| 미수잔액 | 조회 시점 | 원장 사건에서 실시간 파생 |
청구 문서와 실시간 원장을 같은 필드로 공유하지 않는다.
9. 대표 회귀 시나리오
선수금이 있는 최초 청구
text
부과액 10,000
선수금 충당액 1,000
청구액 9,000
청구 직후 미수잔액 9,000일부 수납
text
원 청구액 9,000
수납액 4,000
현재 미수잔액 5,000과오납
text
충당 전 미수잔액 5,000
입금액 7,000
미수 충당액 5,000
선수금 적립액 2,000
현재 미수잔액 0이 세 시나리오는 프론트엔드 표시, API 집계, 보조원장, GL 전표 테스트에서 함께 고정한다.