판매 확정은 주문과 출고 결과를 기준으로 매출 인식 대상 데이터를 확정하는 과정입니다. 주문이 접수되었다고 바로 매출이 되는 것은 아니며, 결제 상태, 출고확정, 배송 완료, 취소·반품 가능성을 함께 봐야 합니다.
왜 필요한가
유통 시스템에서 판매 확정은 정산과 회계의 기준이 됩니다. 매출이 너무 빨리 확정되면 취소와 반품 처리에서 보정이 많아지고, 너무 늦게 확정되면 일매출과 월마감 데이터가 늦어집니다.
실제 업무 흐름
화면/기능 관점
판매 확정 화면은 확정 대상, 제외 대상, 보류 대상을 분리해 보여줘야 합니다.
| 구분 | 화면 표시 기준 |
|---|
| 확정 대상 | 결제와 출고가 완료되고 취소 요청이 없는 주문 |
| 보류 대상 | 배송 중, 결제 대사 미완료, 외부몰 취소 확인 대기 |
| 제외 대상 | 취소 완료, 반품 접수, 출고 취소 |
API 관점
| API | 역할 |
|---|
GET /api/sales-confirmations/candidates | 판매 확정 후보 조회 |
POST /api/sales-confirmations | 판매 확정 실행 |
POST /api/sales-confirmations/{id}/cancel | 확정 취소 또는 보정 요청 |
GET /api/sales-confirmations/{id}/history | 확정 이력 조회 |
DB 관점
| 테이블 | 역할 |
|---|
sales_confirmations | 판매 확정 헤더 |
sales_confirmation_lines | 주문 라인별 확정 수량과 금액 |
sales_adjustments | 취소, 반품, 보정 금액 |
settlement_targets | 정산 대상 데이터 |
interface_messages | ERP 매출 전송 이력 |
상태값 예시
| 상태 | 설명 |
|---|
CANDIDATE | 판매 확정 후보 |
CONFIRMED | 판매 확정 완료 |
EXCLUDED | 취소, 반품 등으로 확정 제외 |
ADJUSTED | 확정 이후 보정 발생 |
SENT_TO_ERP | ERP 매출 전송 완료 |
예외 상황
| 예외 | 처리 방향 |
|---|
| 부분 출고 | 출고확정 수량만 매출 확정 후보로 만든다. |
| 배송 중 취소 | 판매 확정에서 제외하고 반품 또는 회수 흐름으로 전환한다. |
| 확정 후 반품 | 원매출 삭제가 아니라 반품 정산 또는 매출 차감으로 처리한다. |
| ERP 전송 실패 | 판매 확정 상태는 유지하고 연동 상태만 실패로 남겨 재처리한다. |
주문 수량 10개 중 출고확정 수량이 8개라면 판매 확정 대상은 8개입니다. 남은 2개는 미출고, 취소, 재출고 대기 상태로 분리합니다.
관련 문서 링크