Skip to content

계산식과 불변식

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