Skip to content

청구·수납 상세 역할 분리 — FE 메인테이너 매뉴얼

독자: FE 메인테이너/AI. 빌링 콘솔 상세 시트 IA(청구=문서/수납=원장)·소스·라우팅. 정본 spec: docs/superpowers/specs/2026-06-28-invoicing-collecting-role-split.md. as-built 2026-06-28.

1. 두 시트 (역할 분리)

청구 상세수납 상세
컴포넌트invoicing/overlays/SheetInvoicingDetailArt.vuecollecting/detail/blocks/SheetCollectingDetailArt.vue
idsheet-invoicing-detail-artsheet-collecting-detail-art
선택 상태selectedBillingselectedCollecting
소스useInvoicingDetail(detailFor + itemsFor)useCollectingDetail(useCollectingActions)
역할문서: 부과 명세·세금구분·청구액·고지서원장: 차수충당·수납내역·선수금·수납처리

2. 진입 (라우팅)

  • 청구탭(invoicing unit/contract/member DynamicTableOrg): 이름클릭 → selectedBilling 세팅 + sheet-invoicing-detail-art. (총청구금 클릭도 동일 시트.)
  • 수납탭(collecting unit/contract/member): 이름클릭 캐논 → goDetail(selectedCollecting + sheet-collecting-detail-art) / 비캐논 → openBillingRead(동일 수납 시트, key 없으면 빈 상세).
  • ⚠ 메가시트 SheetReadBillingArt 폐기(2026-06-28): 청구·수납을 섞던 시트 삭제. 청구→청구 상세, 수납→수납 상세로 완전 분리.

3. 청구 상세 본문 (SheetInvoicingDetailArt)

  • 청구액 헤드라인(payable) — useCollectingDetail.totals.payable 재사용(정본·재계산 금지). 수납 상세와 동일 bridge. (부과 합계 grandTotal과 라벨 구분 — payable은 연체 포함·선수금 차감.)
  • 부과 항목 명세useInvoicingDetail.itemsFor(selection): charge별 배분(부과원금) + 세금구분·부과기준·단가·VAT·부과액. READ 전용(단가/조정 편집은 항목설정/어셈블 소관).
  • 부과 요약(당기/이월/합계·세금구분 sections) · 분개 미리보기 · 가상계좌 · [고지서].

4. itemsFor 도출 (신규)

useInvoicingDetail.itemsFor: charges × allocationBreakdown(charge, axis, key) 조인. 불변식 Σ(부과원금)===current.supplyTotal · Σ(과세VAT)===current.vat. 테스트 __tests__/invoicingItems.spec.js.

5. 확장 포인트

  • 부과항목 컬럼 추가/편집 모드는 항목설정 화면. 청구 상세는 READ 유지.
  • 비캐논(lease/sales) 수납 상세 실데이터는 후속(현재 빈 상세 폴백).

6. 테스트

  • invoicingItems.spec.js — itemsFor 불변식.
  • collecting *.noncanon.spec.js — 비캐논 이름클릭 → selectedCollecting + sheet-collecting-detail-art.
  • Playwright: 청구탭→청구 상세(부과항목·고지서, 수납콘텐츠0) / 수납탭→수납 상세(충당·수납내역, 부과항목0) / 메가시트 DOM 0.