본문으로 건너뛰기

계산식과 불변식 ​

이 문서는 화면, 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 전표 테스트에서 함께 고정한다.