POS 판매와 결제 처리
/pos/shop은 품목 판매와 의료 청구 정산을 함께 처리하는 POS 작업 화면입니다. 좌측에서 판매 대상을 고르고, 우측 장바구니에서 결제를 준비한 뒤, 결제 모달에서 실제 수납과 출력까지 마무리합니다.
화면 구성
상단 헤더
Transactions: 영수증 화면(/pos/receipt)으로 이동Debt Bills: 미수금 청구 확인Top Up: 예치금 충전 모달
좌측 선택 영역
- 판매 탭 전환
- 검색 바
- 카테고리 선택
- 품목 선택
- 미결 청구 선택
현재 판매 탭은 구현 기준으로 아래와 같이 나뉩니다.
MEDICAL_ORDERMEDICALEXTENDEDMEDICINEPRODUCT
지점에서 Hotel, Grooming, Pet Taxi가 모두 비활성화돼 있으면 EXTENDED 탭은 숨겨질 수 있습니다.
우측 장바구니
- 선택 품목
- 선택된 청구서
- 합계 및 할인 반영
- 결제 진입
어떤 대상을 POS에서 선택하나
일반 판매 품목
카테고리를 먼저 선택한 뒤 품목을 추가합니다.
의료/서비스 청구
탭이 MEDICAL_ORDER일 때는 일반 상품 대신 미결 청구(ISSUED) 목록을 선택합니다. 이 목록은 보호자별로 묶여 표시되며, 이미 선택한 청구와 다른 보호자의 청구를 고르면 기존 선택이 정리됩니다.
즉, POS는 여러 보호자의 청구를 섞어 한 장바구니로 결제하지 않도록 강하게 유도합니다.
미결 청구 선택 흐름
Step 1. 검색으로 청구 찾기
검색창은 미결 청구 조회에도 연결됩니다.
Step 2. 보호자 단위로 묶인 카드 확인
청구는 보호자별 그룹으로 보이고, 카드 안에서 아래 정보를 확인할 수 있습니다.
- Bill ID
- 서비스 유형
- Hotel
- Grooming
- Pet Taxi
- Medical
- 생성 시각
- 금액
Step 3. 선택된 보호자 문맥 유지
이미 선택한 청구와 다른 보호자 청구를 고르면 선택 문맥이 바뀝니다. 접수자는 여기서 보호자 혼선을 가장 많이 줄일 수 있습니다.
결제 모달에서 할 수 있는 일
결제는 PaymentModal에서 처리됩니다. 현재 구현 기준으로 아래 기능이 중요합니다.
- 단일 Bill 결제
- 다중 Bill 결제
- 분할 결제(
Split Payment) - 미수금 포함 결제(
Include Debt) - 예치금 사용 반영
- 예치금 충전과 연결
- 특수 할인(Special Discount)
- 메모 추가/삭제
- 일반 영수증 출력
- Medical Bill 출력
- Full Tax 변환 후 Tax Invoice 출력
여러 Bill을 동시에 고르면 결제 모달은 합산 금액, 합산 VAT, 합산 할인, 예치금 사용액을 다시 계산해 단일 결제처럼 보여줍니다.
분할 결제와 다중 Bill 결제
여러 Bill을 한 번에 고르면 결제 모달은 선택된 Bill을 합산해 보여줍니다. 이때 합계, VAT, 할인, 예치금 사용액도 합산 기준으로 다시 계산됩니다.
분할 결제는 결제 수단을 나눠 받는 운영에 적합합니다. 예를 들어 현금과 카드, QR과 예치금을 한 건에 함께 적용할 수 있습니다.
미수금 포함 결제
Include Debt를 켜면 현재 선택 Bill 외에 unpaid bill 항목을 함께 합산합니다. 이 동작은 총액, 할인, VAT, 잔액 계산에 모두 영향을 줍니다.
⚠️ Warning: 미수금 포함 결제는 현재 건의 수납만 바꾸는 것이 아니라 기존 unpaid bill 정산에도 영향을 줍니다. 보호자와 정산 범위를 먼저 합의한 뒤 사용해야 합니다.
예치금 운영
Top Up
상단 버튼으로 예치금 충전 모달을 열 수 있습니다.
결제 시 예치금 반영
결제 모달은 Bill에 연결된 예치금 사용액을 계산에 반영합니다. 잔액보다 예치금이 많아도 표시는 0 미만으로 내려가지 않도록 조정됩니다.
할인과 메모
Special Discount
Bill 레벨 할인 또는 항목 할인 정리가 필요한 경우 결제 모달에서 특수 할인을 다룹니다.
Note
정산 메모를 넣거나 제거할 수 있습니다. 접수 메모, 분쟁 대응 메모, 보호자 요청사항 기록에 유용합니다.
결제 후 출력
결제 성공 후에는 아래 출력 흐름으로 이어질 수 있습니다.
- 일반 Bill
- Medical Bill
- Tax Invoice
Tax Invoice는 필요 시 full tax 변환이 먼저 실행될 수 있습니다.
영수증 재확인과 Void는 문서 기준으로 /pos/receipt에서 이어집니다.
운영 팁
- 일반 판매와 의료 청구를 섞을 때는 장바구니 오른쪽 합계가 무엇을 포함하는지 먼저 읽어야 합니다.
- 보호자 단위가 바뀌면 선택된 미결 청구가 재정렬될 수 있으므로, POS 작업 중 보호자 이름을 계속 확인해야 합니다.
- 미수금 포함과 예치금 사용을 동시에 쓰는 경우 총액 검증을 한 번 더 하는 편이 좋습니다.