배송예정일 계산
배송예정일은 여러 로직에서 다시 계산해 업데이트해 줍니다. 주문이 발주단계로 넘어갈 때 마지막으로 업데이트됩니다. (최종)
DB 함수
배송예정일은 DB 함수를 이용해서 계산합니다. 아래는 배송예정일 계산할 때 사용하는 주요 함수입니다.
함수명 | 설명 |
---|---|
[dbo].[DS_ConfirmDeliveryReserveDate] | 배송예정일 계산 시작 |
[dbo].[DS_확정시작일] | 배송예정일 계산에 사용할 주문의 확정 시작일을 계산 |
[dbo].[DS_입금파일입고기준_확정시작일] | 파일 입고 시간과 입금 시간을 기준으로 주문의 확정 시작일을 계산 |
[dbo].[DS_요일지정배송예정일] | 요일 지정 방식으로 배송예정일 계산 |
[dbo].[DS_영업일배송예정일] | 영업일 방식으로 배송예정일 계산 |
[dbo].[DS_날짜지정배송예정일] | 날짜별로 배송예정일이 지정되어있는 경우 |
[dbo].[DS_IsHoliday] | 해당 날짜가 영업일인지 아닌지 계산 |
[dbo].[DS_다음영업일] | 배송예정일 계산할 때 다음 영업일을 계산 |
계산 프로세스
DB 함수를 보면 더 복잡하지만 가장 일반적인 상황만 정리하겠습니다. TBLORDERITEM을 기준으로 배송예정일을 각각 계산하고 MAX 값을 주문의 최종 배송예정일로 설정합니다. [dbo].[DS_ConfirmDeliveryReserveDate] > 주문의 확정 시작일 계산 > 주문 마감 시간을 확인해서 배송예정일 계산 시작일 계산 > 배송예정일 계산
-
[dbo].[DS_ConfirmDeliveryReserveDate] 함수 호출로 배송예정일 계산 시작
-
[dbo].[DS_확정시작일] 함수 호출로 주문의 확정 시작일을 구합니다.
-
배송예정일 계산을 할 때 기준이 됩니다.
-
주로 [dbo].[DS_입금파일입고기준_확정시작일]로 구합니다.
-
[dbo].[DS_입금파일입고기준_확정시작일]은 tblOrderItem의 파일 입고 시간(datFileRegDate)과 입금 시간(tblMoneyLog의 datRegDate)의 MAX 값을 RETURN합니다. 즉, 입고 시간과 입금 시간 중 나중 시간이 확정 시작일이 됩니다.
-
-
배송예정일 계산방식은 요일 지정, 영업일, 날짜 지정 세 가지가 있습니다.
-
tblOrderItem의 상품(tblGoods)의
transportType
이DELIVERYWEEKDAY
면 [dbo].[DS_요일지정배송예정일] 함수로 배송예정일을 계산합니다.-
[dbo].[DS_요일지정_마감시간적용시작일] 함수로 배송예정일 계산 시작일을 구합니다.
-
요일 지정 배송은 시작일의 요일에 따라 배송예정일이 정해지는 것입니다.
-
예를 들면 시작일이 월요일인 주문이면 다음 주 수요일이 배송예정일, 화요일인 주문이면 이번 주 금요일이 배송예정일. 이런 식으로 설정하는 것입니다.
-
요일에 따라 어떻게 배송예정일을 설정했는지는 DeliveryWeekDay, DelvieryWeek 테이블에서 확인할 수 있습니다.
-
시작일을 기준으로 [dbo].[DS_지정요일계산일] 함수로 배송예정일을 구합니다.
-
-
4번의 상황이 아니면 [dbo].[DS_영업일배송예정일] 함수로 배송예정일을 계산합니다.
-
[dbo].[DS_영업일_마감시간적용시작일], [dbo].[DS_다음영업일] 함수로 배송예정일 계산 시작일을 구합니다.
-
시작일을 기준으로 [dbo].[DS_영업일계산일] 함수로 배송예정일을 구합니다.
-
예를 들어 주문한 상품이 3영업일 상품이고 시작일이 8/17(화) 이라고 하면 화요일을 기준을 3영업일을 더해 8/20(금)이 배송에정일이 됩니다. (공휴일 x)
-
예를 들어 주문한 상품이 3영업일 상품이고 시작일이 8/18(화) 이라고 하면 수요일을 기준을 3영업일을 더해 주말이 있기 때문에 8/23(월)이 배송예정일이 됩니다.
-
-
4번, 5번의 배송예정일 계산 시작일을 기준으로 배송예정일이 지정되어있으면 [dbo].[DS_날짜지정배송예정일] 함수로 배송예정일을 계산합니다.
-
시작일이 A인 주문은 배송예정일이 B다. 이렇게 시작일에 따라 배송예정일을 지정해두는 방식입니다.
-
날짜 지정 방식을 사용하는지는 [dbo].[DS_날짜지정여부] 함수로 확인할 수 있습니다. (1일 때 날짜지정)
-
배송예정일 날짜 지정은 파트너 > 사이트 > 휴일관리, admin2 > 상품 > 휴일 탭에서 할 수 있습니다.
-
자주 발생하는 이슈
배송예정일 계산이 틀렸을 경우
- 주로 휴일 설정이 잘못된 것이다.
- 특히 배송예정일이 주말이나 공휴일로 지정된 오류일 경우 거의 90%
- 주로 휴일인데 [dbo].[DS_IsHoliday] 가 0이 나와서 발생하는 오류입니다.
- WorkCalendar나 tblHolidy를 확인하면 도움이 됩니다.