|
|
@@ -2468,78 +2468,89 @@ public class TscOrderService {
|
|
|
* @since 2021. 04. 21
|
|
|
*/
|
|
|
@Transactional("shopTxnManager")
|
|
|
- public Collection<OrderChange> updateSellerDelvStartAndPartCancel(Collection<Order> params, int userNo) {
|
|
|
+ public Collection<OrderChange> getCancelDataList(Collection<Order> params, int userNo) {
|
|
|
|
|
|
// 주문번호별 상세번호, 취소수량 및 주문정보 세팅
|
|
|
List<OrderChange> cancelDataList = new ArrayList<OrderChange>();
|
|
|
|
|
|
- // 배송중 주문 목록 (알림톡 송부 위함)
|
|
|
- List<Order> delvStartList = new ArrayList<Order>();
|
|
|
-
|
|
|
- // 네이버페이 주문형 일반 배송중 주문 목록
|
|
|
- List<Order> delvStartDtlList = new ArrayList<Order>();
|
|
|
-
|
|
|
- try {
|
|
|
+ for(Order param : params) {
|
|
|
|
|
|
- for(Order param : params) {
|
|
|
+ log.info("param.getCancelQty() ::: {} ", param.getCancelQty());
|
|
|
+ log.info("param.getDelvFeeCd() ::: {} ", param.getDelvFeeCd());
|
|
|
+ log.info("param.getOrdChgSq() ::: {} ", param.getOrdChgSq());
|
|
|
+
|
|
|
+ // 품절취소 수량이 존재하면 취소대상목록에 추가등록
|
|
|
+ if (param.getCancelQty() > 0) {
|
|
|
|
|
|
- log.info("param.getCancelQty() ::: {} ", param.getCancelQty());
|
|
|
- log.info("param.getDelvFeeCd() ::: {} ", param.getDelvFeeCd());
|
|
|
- log.info("param.getOrdChgSq() ::: {} ", param.getOrdChgSq());
|
|
|
+ boolean chkOrd = true;
|
|
|
|
|
|
- // 품절취소 수량이 존재하면 취소대상목록에 추가등록
|
|
|
- if (param.getCancelQty() > 0) {
|
|
|
-
|
|
|
- boolean chkOrd = true;
|
|
|
-
|
|
|
- // TODO 2021.07.14 교환일때 교환변경번호가 한번에 출고되는 상황인지 체크
|
|
|
- // 취소대상목록에 주문번호 존재하면 취소상세번호, 취소수량만 배열에 추가
|
|
|
- for(OrderChange cancelData : cancelDataList) {
|
|
|
- // 2021.07.15 정책단위 체크
|
|
|
- // 2021.09.06 결제건은일반출고
|
|
|
- if (cancelData.getOrdChgSq() != null && cancelData.getOrdChgSq() > 0) {
|
|
|
- if (param.getOrdNo().equals(cancelData.getOrdNo()) && param.getDelvFeeCd().equals(cancelData.getDelvFeeCd())
|
|
|
- && param.getOrdChgSq().equals(cancelData.getOrdChgSq())) {
|
|
|
- chkOrd = false;
|
|
|
- cancelData.getOrdDtlNoList().add(param.getOrdDtlNo());
|
|
|
- cancelData.getCnclRtnReqQtyList().add(param.getCancelQty());
|
|
|
- }
|
|
|
+ // TODO 2021.07.14 교환일때 교환변경번호가 한번에 출고되는 상황인지 체크
|
|
|
+ // 취소대상목록에 주문번호 존재하면 취소상세번호, 취소수량만 배열에 추가
|
|
|
+ for(OrderChange cancelData : cancelDataList) {
|
|
|
+ // 2021.07.15 정책단위 체크
|
|
|
+ // 2021.09.06 결제건은일반출고
|
|
|
+ if (cancelData.getOrdChgSq() != null && cancelData.getOrdChgSq() > 0) {
|
|
|
+ if (param.getOrdNo().equals(cancelData.getOrdNo()) && param.getDelvFeeCd().equals(cancelData.getDelvFeeCd())
|
|
|
+ && param.getOrdChgSq().equals(cancelData.getOrdChgSq())) {
|
|
|
+ chkOrd = false;
|
|
|
+ cancelData.getOrdDtlNoList().add(param.getOrdDtlNo());
|
|
|
+ cancelData.getCnclRtnReqQtyList().add(param.getCancelQty());
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- // 취소대상목록에 존재하지 않으면 신규등록
|
|
|
- if (chkOrd) {
|
|
|
- OrderChange change = new OrderChange();
|
|
|
- change.setOrdNo(param.getOrdNo());
|
|
|
- change.setCustNo(param.getCustNo());
|
|
|
- change.setOrderNm(param.getOrdNm());
|
|
|
- change.setOrdNm(param.getOrdNm());
|
|
|
- change.setOrdPhnno(param.getOrdPhnno());
|
|
|
- change.setUserNo(userNo);
|
|
|
- change.setPgGb(param.getPgGb());
|
|
|
- change.setPayMeans(param.getPayMeans());
|
|
|
- change.setBankCd(param.getBankCd());
|
|
|
- change.setAccountNm(param.getAccountNm());
|
|
|
- change.setAccountNo(CryptoUtils.decryptAES(param.getAccountNo()));
|
|
|
- change.getOrdDtlNoList().add(param.getOrdDtlNo());
|
|
|
- change.getCnclRtnReqQtyList().add(param.getCancelQty());
|
|
|
- change.setChgReason(TscConstants.OrderCancelReason.SOLDOUT_CANCEL.value());
|
|
|
- change.setChgReasonNm("품절취소");
|
|
|
- change.setDelvFeeCd(param.getDelvFeeCd());
|
|
|
- change.setOrdChgSq(param.getOrdChgSq());
|
|
|
- cancelDataList.add(change);
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 취소대상목록에 존재하지 않으면 신규등록
|
|
|
+ if (chkOrd) {
|
|
|
+ OrderChange change = new OrderChange();
|
|
|
+ change.setOrdNo(param.getOrdNo());
|
|
|
+ change.setCustNo(param.getCustNo());
|
|
|
+ change.setOrderNm(param.getOrdNm());
|
|
|
+ change.setOrdNm(param.getOrdNm());
|
|
|
+ change.setOrdPhnno(param.getOrdPhnno());
|
|
|
+ change.setUserNo(userNo);
|
|
|
+ change.setPgGb(param.getPgGb());
|
|
|
+ change.setPayMeans(param.getPayMeans());
|
|
|
+ change.setBankCd(param.getBankCd());
|
|
|
+ change.setAccountNm(param.getAccountNm());
|
|
|
+ change.setAccountNo(CryptoUtils.decryptAES(param.getAccountNo()));
|
|
|
+ change.getOrdDtlNoList().add(param.getOrdDtlNo());
|
|
|
+ change.getCnclRtnReqQtyList().add(param.getCancelQty());
|
|
|
+ change.setChgReason(TscConstants.OrderCancelReason.SOLDOUT_CANCEL.value());
|
|
|
+ change.setChgReasonNm("품절취소");
|
|
|
+ change.setDelvFeeCd(param.getDelvFeeCd());
|
|
|
+ change.setOrdChgSq(param.getOrdChgSq());
|
|
|
+ cancelDataList.add(change);
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return cancelDataList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 입점 발주 최종 처리
|
|
|
+ * @param Order
|
|
|
+ * @return List<Order>
|
|
|
+ * @author xodud1202
|
|
|
+ * @since 2021. 04. 21
|
|
|
+ */
|
|
|
+ public void updateSellerDelvStart(Collection<Order> params, Collection<OrderChange> cancelDataList, int userNo) {
|
|
|
+ // 배송중 주문 목록 (알림톡 송부 위함)
|
|
|
+ List<Order> delvStartList = new ArrayList<Order>();
|
|
|
|
|
|
- int exchangeDelvFailCnt = 0;
|
|
|
+ // 네이버페이 주문형 일반 배송중 주문 목록
|
|
|
+ List<Order> delvStartDtlList = new ArrayList<Order>();
|
|
|
|
|
|
+ int exchangeDelvFailCnt = 0;
|
|
|
+
|
|
|
+ try {
|
|
|
// 결품 취소 후 수량이 남은 경우 배송중처리
|
|
|
for(Order param : params) {
|
|
|
-
|
|
|
+
|
|
|
// TODO 2021.07.14 교환일때 교환변경번호가 한번에 출고되는 상황인지 체크
|
|
|
Boolean temp = true;
|
|
|
-
|
|
|
+
|
|
|
// 2021.07.15 교환출고중에 혹시 ORD_CHG_SQ 번호로 묶인 상품중 품절취소건이 있으면 출고 대기
|
|
|
if (param.getOrdChgSq() != null && param.getOrdChgSq() > 0) {
|
|
|
for(OrderChange cancelData : cancelDataList) {
|
|
|
@@ -2548,29 +2559,29 @@ public class TscOrderService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 결품 취소 후 수량이 남은 경우 배송중 변경 처리
|
|
|
if (temp) {
|
|
|
-
|
|
|
+
|
|
|
// 변경번호 ORD_CHG_SQ 로 출고대상목록 조회 후 한번에 출고되는지 체크
|
|
|
// 한번에 출고되지 않으면 결제완료로 변경
|
|
|
if (param.getOrdQty() - param.getCnclRtnQty() - param.getCancelQty() > 0) {
|
|
|
-
|
|
|
+
|
|
|
// 주문 상세 (TB_ORDER_DETAIL) 배송중으로 변경
|
|
|
param.setOrdDtlStat(TscConstants.OrderDetailStat.SHIPPING.value());
|
|
|
param.setRegNo(userNo);
|
|
|
param.setUpdNo(userNo);
|
|
|
orderDao.changedOrdDtlStatDelvStart(param);
|
|
|
-
|
|
|
+
|
|
|
// 주문 상품 상세 (TB_ORDER_DETAIL_ITEM) 배송중으로 변경
|
|
|
scmDao.updateOrderDetailItemStat(param);
|
|
|
-
|
|
|
+
|
|
|
// 주문 상세 송장번호 등록
|
|
|
scmDao.createOrderDetailInvoice(param);
|
|
|
-
|
|
|
+
|
|
|
// 주문 변경 이력 저장
|
|
|
orderDao.createOrderDetailHst(param);
|
|
|
-
|
|
|
+
|
|
|
// 주문 상세 아이템 이력 저장
|
|
|
// 2021.08.06 card007 TB_ORDER_DETAIL_ITEM_HST.ORD_DTL_STAT G013 -> G720으로 변경
|
|
|
// 뒷로직에서 G013으로 사용하는지 확인 후 안쓰면 하기 G013으로 변경 로직 제거 필요
|
|
|
@@ -2578,7 +2589,7 @@ public class TscOrderService {
|
|
|
param.setOrdDtlStat(TscConstants.OrdDtlItemStat.SALE_SHIPPING.value());
|
|
|
orderDao.createOrderDetailItemHstFromDtlNo(param);
|
|
|
param.setOrdDtlStat(ordDtlStat);
|
|
|
-
|
|
|
+
|
|
|
Order tmp = naverPayDao.getOrderDetailInfoFromOrdDtlNo(param);
|
|
|
if(TscConstants.PgGb.NAVER_ORDER.value().equals(tmp.getPgGb())) {
|
|
|
if ("E".equals(tmp.getOrdExchGb())) {
|
|
|
@@ -2637,38 +2648,36 @@ public class TscOrderService {
|
|
|
delvFailVo.setOrdQty(param.getOrdQty() - param.getCnclRtnQty());
|
|
|
delvFailVo.setChgQty(param.getCancelQty());
|
|
|
delvFailVo.setRegNo(userNo);
|
|
|
-
|
|
|
+
|
|
|
// 교환상품 출고예외등록
|
|
|
orderChangeDao.insertTbExchangeDelvFail(delvFailVo);
|
|
|
-
|
|
|
+
|
|
|
exchangeDelvFailCnt++;
|
|
|
}
|
|
|
}
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new IllegalArgumentException(e);
|
|
|
+ }
|
|
|
|
|
|
- log.info("exchangeDelvFailCnt ::: {}", exchangeDelvFailCnt);
|
|
|
+ log.info("exchangeDelvFailCnt ::: {}", exchangeDelvFailCnt);
|
|
|
|
|
|
- try {
|
|
|
- // 2021.06.08 알림톡전송 배송중 주문 알림톡 송부
|
|
|
- for(Order kakaoSend : delvStartList) {
|
|
|
- if (StringUtils.isNotBlank(kakaoSend.getOrdPhnno())) {
|
|
|
- try {
|
|
|
- kakaotalkService.sendDeliveryStart(kakaoSend, userNo);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- // Do nothing
|
|
|
- }
|
|
|
+ try {
|
|
|
+ // 2021.06.08 알림톡전송 배송중 주문 알림톡 송부
|
|
|
+ for(Order kakaoSend : delvStartList) {
|
|
|
+ if (StringUtils.isNotBlank(kakaoSend.getOrdPhnno())) {
|
|
|
+ try {
|
|
|
+ kakaotalkService.sendDeliveryStart(kakaoSend, userNo);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ // Do nothing
|
|
|
}
|
|
|
}
|
|
|
- } catch (Exception e) {
|
|
|
- // 카카오 발송 에러시에는 그냥 진행되어야함
|
|
|
- e.printStackTrace();
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
+ // 카카오 발송 에러시에는 그냥 진행되어야함
|
|
|
e.printStackTrace();
|
|
|
- throw new IllegalArgumentException(e);
|
|
|
}
|
|
|
-
|
|
|
- return cancelDataList;
|
|
|
}
|
|
|
|
|
|
/**
|