|
|
@@ -164,6 +164,11 @@ public class TscOrderChangeService {
|
|
|
List<Order> cancelOrderRefundList = (List<Order>) map.get("cancelOrderRefundList"); // 취소환불금액 목록 (주문상세단품 단위)
|
|
|
List<Order> cancelDelvRefundList = (List<Order>) map.get("cancelDelvRefundList"); // 취소환불배송금액 목록 (DELV_FEE_CD 단위)
|
|
|
|
|
|
+ // 2021.12.21 card007 취소 가능 수량 체크 로직 추가
|
|
|
+ if (!getClaimCanQtyYn(cancelOrderRefundList, "cancel")) {
|
|
|
+ throw new IllegalStateException("취소 가능 수량이 부족합니다.");
|
|
|
+ }
|
|
|
+
|
|
|
int ordNo = map.getInt("ordNo"); // 주문번호
|
|
|
Integer custNo = map.getInt("custNo"); // 고객번호
|
|
|
int ordChgSq = map.getInt("ordChgSq"); // 주문변경일련번호
|
|
|
@@ -816,6 +821,11 @@ public class TscOrderChangeService {
|
|
|
// 1. 변경정보목록 및 정보 설정
|
|
|
List<Order> cancelOrderRefundList = (List<Order>) map.get("cancelOrderRefundList"); // 취소환불금액 목록 (주문상세단품 단위)
|
|
|
List<Order> cancelDelvRefundList = (List<Order>) map.get("cancelDelvRefundList"); // 취소환불배송금액 목록 (DELV_FEE_CD 단위)
|
|
|
+
|
|
|
+ // 2021.12.21 card007 취소 가능 수량 체크 로직 추가
|
|
|
+ if (!getClaimCanQtyYn(cancelOrderRefundList, "return")) {
|
|
|
+ throw new IllegalStateException("반품 가능 수량이 부족합니다.");
|
|
|
+ }
|
|
|
|
|
|
int ordNo = map.getInt("ordNo"); // 주문번호
|
|
|
int custNo = map.getInt("custNo"); // 고객번호
|
|
|
@@ -1164,6 +1174,11 @@ public class TscOrderChangeService {
|
|
|
// 교환신청 목록 설정
|
|
|
Collection<Order> excReqList = excReq.getCancelReqList();
|
|
|
|
|
|
+ // 2021.12.21 card007 취소 가능 수량 체크 로직 추가
|
|
|
+ if (!getClaimCanQtyYn(excReqList, "exchange")) {
|
|
|
+ throw new IllegalStateException("교환 가능 수량이 부족합니다.");
|
|
|
+ }
|
|
|
+
|
|
|
// 추가배송비 관련 상태값 설정
|
|
|
String orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE.value();
|
|
|
String ordDtlStat = TscConstants.OrderDetailStat.REFUND_CONFIRM_WAIT.value();
|
|
|
@@ -2158,6 +2173,11 @@ public class TscOrderChangeService {
|
|
|
String pgStat = orderChange.getPgStat(); // PG점프 여부
|
|
|
int depositAmt = orderChange.getDepositAmt(); // PG점프 입금액
|
|
|
|
|
|
+ // 2021.12.21 card007 취소 가능 수량 체크 로직 추가
|
|
|
+ if (!getAllCancelCanQtyYn(orderChange)) {
|
|
|
+ throw new IllegalStateException("취소 가능 수량이 부족합니다.");
|
|
|
+ }
|
|
|
+
|
|
|
// 원주문 결제정보 조회
|
|
|
Payment payment = new Payment();
|
|
|
payment.setOrdNo(ordNo);
|
|
|
@@ -5660,4 +5680,67 @@ public class TscOrderChangeService {
|
|
|
public Collection<Order> getAddDeliveryFeePayment (OrderChange orderChange) {
|
|
|
return orderChangeDao.getAddDeliveryFeePayment(orderChange);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 취/반/교 가능 수량 조회
|
|
|
+ *
|
|
|
+ * @param Collection<Order>, String
|
|
|
+ * @return Boolean
|
|
|
+ * @author card007
|
|
|
+ * @since 2021. 12. 21
|
|
|
+ */
|
|
|
+ public Boolean getClaimCanQtyYn(Collection<Order> dataList, String claim) {
|
|
|
+ Boolean result = true;
|
|
|
+
|
|
|
+ for (Order order : dataList) {
|
|
|
+ // 클레임진행수량 조회
|
|
|
+ OrderChange orderChange = orderChangeDao.getClaimCanQty(order);
|
|
|
+ int ordQty = orderChange.getOrdQty(); // 주문수량
|
|
|
+ int cnclRtnQty = orderChange.getCnclRtnQty(); // 취소수량
|
|
|
+ int ordReqChgQty = orderChange.getOrdReqChgQty(); // 클레임진행수량
|
|
|
+ int claimCanQty = ordQty - cnclRtnQty - ordReqChgQty; // 클레임가능수량
|
|
|
+ int chgQty = order.getOrdCanChgQty(); // 클레임요청수량
|
|
|
+ if ("exchange".equals(claim)) {
|
|
|
+ chgQty = order.getChgQty();
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("ordQty >>> {}", ordQty);
|
|
|
+ log.info("cnclRtnQty >>> {}", cnclRtnQty);
|
|
|
+ log.info("ordReqChgQty >>> {}", ordReqChgQty);
|
|
|
+ log.info("claimCanQty >>> {}", claimCanQty);
|
|
|
+ log.info("chgQty >>> {}", chgQty);
|
|
|
+
|
|
|
+ if (claimCanQty < chgQty) {
|
|
|
+ result = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 전체취소 가능 수량 조회
|
|
|
+ *
|
|
|
+ * @param OrderChange
|
|
|
+ * @return Boolean
|
|
|
+ * @author card007
|
|
|
+ * @since 2021. 12. 22
|
|
|
+ */
|
|
|
+ public Boolean getAllCancelCanQtyYn(OrderChange orderChange) {
|
|
|
+ Boolean result = true;
|
|
|
+
|
|
|
+ for (OrderChange data : orderChangeDao.getAllCancelCanQty(orderChange)) {
|
|
|
+ int cnclRtnQty = data.getCnclRtnQty();
|
|
|
+ int ordReqChgQty = data.getOrdReqChgQty();
|
|
|
+
|
|
|
+ log.info("cnclRtnQty >>> {}", cnclRtnQty);
|
|
|
+ log.info("ordReqChgQty >>> {}", ordReqChgQty);
|
|
|
+
|
|
|
+ if (cnclRtnQty > 0 || ordReqChgQty > 0) {
|
|
|
+ result = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
}
|