PIT3000 결제/수납/할인 데이터 구조
핵심 테이블 관계
SALE_MAIN (판매)
└── SL_NO_order (PK, 주문번호)
│
├── SALE_SUB (품목 상세) — SL_NO_order로 조인
│
└── CD_SUNAB (수납/결제) — CD_SUNAB.PRESERIAL = SALE_MAIN.SL_NO_order
주의: CD_SUNAB.PRESERIAL은 SALE_MAIN.SL_NO_order(주문번호)와 매칭됨.
SALE_MAIN.PRESERIAL(처방번호)과는 다른 키임.
SALE_MAIN 금액 컬럼
| 컬럼 |
설명 |
예시 |
SL_MY_total |
원가 (할인 전) |
60,000 |
SL_MY_discount |
할인 금액 |
6,000 |
SL_MY_sale |
실판매가 (= total - discount) |
54,000 |
SL_MY_recive |
수납금액 (부가세 제외 추정) |
49,091 |
SL_MY_credit |
외상 금액 |
0 |
SL_MY_dis_ratio |
할인율 |
0 (미사용) |
금액 관계
SL_MY_sale = SL_MY_total - SL_MY_discount
SL_MY_recive ≈ SL_MY_sale / 1.1 (부가세 제외 금액 추정)
할인 빈도
- 대부분의 거래: discount = 0 (할인 없음)
- 할인 적용 건: 하루 2~5건 정도 (직원 할인, 대량 구매 등)
- 할인 규모: 1,000원 ~ 수십만원까지 다양
CD_SUNAB 결제수단 컬럼
금액 기반 결제수단 구분
단일 구분 컬럼이 없음. 금액이 0보다 크면 해당 결제수단 사용.
| 구분 |
카드 |
현금 |
외상 |
| 조제(ETC, 전문의약품) |
ETC_CARD |
ETC_CASH |
ETC_PAPER |
| OTC(일반의약품) |
OTC_CARD |
OTC_CASH |
OTC_PAPER |
결제수단 판별 로직
card_total = ETC_CARD + OTC_CARD
cash_total = ETC_CASH + OTC_CASH
if card_total > 0 and cash_total > 0:
결제수단 = "카드+현금"
elif card_total > 0:
결제수단 = "카드"
elif cash_total > 0:
결제수단 = "현금"
else:
결제수단 = "-" (미수납 또는 외상)
카드 상세 정보
| 컬럼 |
설명 |
예시 |
pMCHDATA |
카드사 이름 |
비씨카드사, NH농협카드 |
PCardName |
카드사 이름 (별도) |
KB국민카드 |
pAPPROVAL_NUM |
카드 승인번호 |
72139919 |
pCARDINMODE |
카드 입력 방식 |
1 (IC칩) |
pTRDTYPE |
거래 유형 |
D1 (일반승인) |
Appr_Gubun |
승인 구분 |
9 (정상승인) |
pCANCEL_NUM |
취소 승인번호 |
(취소 시) |
현금 상세 정보
| 컬럼 |
설명 |
예시 |
nCASHINMODE |
현금영수증 입력 방식 |
1, 2 (빈값=미발행) |
nAPPROVAL_NUM |
현금영수증 승인번호 |
|
nCHK_GUBUN |
현금 체크 구분 |
TASA |
GUI 표시 방식
결제 컬럼
- 카드: 파란색 (#1976D2)
- 현금: 주황색 (#E65100)
- 카드+현금: 보라색 (#7B1FA2)
- -: 회색 (수납 정보 없음)
수납 컬럼
- ✓: 녹색 (card + cash > 0)
- -: 회색 (미수납)
할인 표시
- 할인 없는 건:
12,000원 (기본)
- 할인 있는 건:
54,000원 (-6,000) 주황색 볼드
- 마우스 툴팁: 원가 / 할인 / 결제 상세
SQL 쿼리 (GUI에서 사용)
SELECT
M.SL_NO_order,
M.InsertTime,
M.SL_MY_sale,
ISNULL(M.SL_NM_custom, '[비고객]') AS customer_name,
ISNULL(S.card_total, 0) AS card_total,
ISNULL(S.cash_total, 0) AS cash_total,
ISNULL(M.SL_MY_total, 0) AS total_amount,
ISNULL(M.SL_MY_discount, 0) AS discount
FROM SALE_MAIN M
OUTER APPLY (
SELECT TOP 1
ISNULL(ETC_CARD, 0) + ISNULL(OTC_CARD, 0) AS card_total,
ISNULL(ETC_CASH, 0) + ISNULL(OTC_CASH, 0) AS cash_total
FROM CD_SUNAB
WHERE PRESERIAL = M.SL_NO_order
) S
WHERE M.SL_DT_appl = ?
ORDER BY M.InsertTime DESC
카드사 분포 (전체 데이터 기준)
| 카드사 |
건수 |
| KB국민카드 |
6,106 |
| NH농협카드 |
5,172 |
| 비씨카드사 |
4,900 |
| 하나카드 |
4,880 |
| 신한카드 |
3,210 |
| 삼성카드사 |
2,100 |
| 현대카드사 |
1,960 |
| 우리카드 |
1,285 |
| 롯데카드사 |
837 |
| 카카오페이 |
57 |
| 모바일상품권 |
11 |