|
|
@@ -57,6 +57,9 @@ public class TscOrderChangeService {
|
|
|
|
|
|
@Autowired
|
|
|
private TscNaverPayService naverPayService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TscWmsService wmsService;
|
|
|
|
|
|
/**
|
|
|
* 주문변경정보 (상세번호배열, 취소수량배열) 취소 목록으로 변환 (사용안함)
|
|
|
@@ -183,7 +186,7 @@ public class TscOrderChangeService {
|
|
|
int ordNo = map.getInt("ordNo"); // 주문번호
|
|
|
int custNo = map.getInt("custNo"); // 고객번호
|
|
|
String chgReason = map.getString("chgReason"); // 변경사유
|
|
|
- String chgReasonNm = "고객변심"; // 변경사유명
|
|
|
+ String chgReasonNm = map.getString("chgReasonNm"); // 변경사유명
|
|
|
String chgMemo = map.getString("chgMemo"); // 변경메모
|
|
|
String allLastCanYn = map.getString("allLastCanYn"); // 마지막 취소 여부
|
|
|
String ipAddress = map.getString("ipAddress"); // IP주소
|
|
|
@@ -210,6 +213,7 @@ public class TscOrderChangeService {
|
|
|
// 2. 주문상세단품정보등록, 변경 (단품단위)
|
|
|
List<Order> cancelOrderDetailList = new ArrayList<>();
|
|
|
List<Integer> ordDtlNoList = new ArrayList<>();
|
|
|
+ List<Integer> ordCanChgQtyList = new ArrayList<>();
|
|
|
|
|
|
for (Order cancelOrderRefundPo : cancelOrderRefundList) {
|
|
|
cancelOrderRefundPo.setOrdDtlStat(ordDtlStat);
|
|
|
@@ -226,9 +230,11 @@ public class TscOrderChangeService {
|
|
|
|
|
|
// 2-2. 주문상세단위로 데이터 설정
|
|
|
Integer ordDtlNo = cancelOrderRefundPo.getOrdDtlNo();
|
|
|
+ int ordCanChgQty = cancelOrderRefundPo.getOrdCanChgQty();
|
|
|
if (!ordDtlNoList.contains(ordDtlNo)) {
|
|
|
cancelOrderDetailList.add(cancelOrderRefundPo);
|
|
|
ordDtlNoList.add(ordDtlNo);
|
|
|
+ ordCanChgQtyList.add(ordCanChgQty);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -455,6 +461,19 @@ public class TscOrderChangeService {
|
|
|
freegiftOrder.setUpdNo(custNo);
|
|
|
orderChangeDao.updateOrdFreegiftDel(freegiftOrder);
|
|
|
}
|
|
|
+
|
|
|
+ // 5. WMS 취소 처리
|
|
|
+ List<Order> wmsList = new ArrayList<>();
|
|
|
+ for (int i = 0; i < ordDtlNoList.size(); i++) {
|
|
|
+ Order wms = new Order();
|
|
|
+ wms.setOrdNo(ordNo);
|
|
|
+ wms.setOrdDtlNo(ordDtlNoList.get(i));
|
|
|
+ wms.setChgQty(ordCanChgQtyList.get(i));
|
|
|
+
|
|
|
+ wmsList.add(wms);
|
|
|
+ }
|
|
|
+
|
|
|
+ wmsService.updateWmsCancel(wmsList);
|
|
|
}
|
|
|
|
|
|
return map;
|
|
|
@@ -993,11 +1012,13 @@ public class TscOrderChangeService {
|
|
|
orderChangeDao.createDeliveryFee(deliveryFee);
|
|
|
|
|
|
// 추가배송비 등록
|
|
|
- deliveryFee.setDelvFeeGb(TscConstants.DeliveryFeeGb.ORIGIN_DELIVERY_FEE.value());
|
|
|
- deliveryFee.setDelvFee(spanTotDeliveryFee);
|
|
|
- deliveryFee.setRealDelvAmt(spanTotDeliveryFee);
|
|
|
+ if (spanTotDeliveryFee > 0) {
|
|
|
+ deliveryFee.setDelvFeeGb(TscConstants.DeliveryFeeGb.ORIGIN_DELIVERY_FEE.value());
|
|
|
+ deliveryFee.setDelvFee(spanTotDeliveryFee);
|
|
|
+ deliveryFee.setRealDelvAmt(spanTotDeliveryFee);
|
|
|
|
|
|
- orderChangeDao.createDeliveryFee(deliveryFee);
|
|
|
+ orderChangeDao.createDeliveryFee(deliveryFee);
|
|
|
+ }
|
|
|
|
|
|
// 3-4. 주문상세정보 수정
|
|
|
ordChgSq = orderChange.getOrdChgSq();
|
|
|
@@ -1305,7 +1326,6 @@ public class TscOrderChangeService {
|
|
|
@Transactional("shopTxnManager")
|
|
|
public GagaMap exchReq(OrderChange excReq) {
|
|
|
GagaMap result = new GagaMap();
|
|
|
- result.set("status", GagaResponseStatus.FAIL.getCode());
|
|
|
|
|
|
// 교환 기본 정보
|
|
|
int ordNo = excReq.getOrdNo(); // 주문번호
|
|
|
@@ -1323,7 +1343,7 @@ public class TscOrderChangeService {
|
|
|
String orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE.value();
|
|
|
String ordDtlStat = TscConstants.OrderDetailStat.REFUND_CONFIRM_WAIT.value();
|
|
|
|
|
|
- if (addPayCost > 0) { // 프론트 결제 여부 체크 필요
|
|
|
+ if (addPayCost > 0) {
|
|
|
orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE_WAIT.value();
|
|
|
}
|
|
|
|
|
|
@@ -1564,25 +1584,32 @@ public class TscOrderChangeService {
|
|
|
int regNo = orderChange.getRegNo(); // 등록자번호
|
|
|
int updNo = orderChange.getUpdNo(); // 수정자번호
|
|
|
|
|
|
- // 추가배송비 조회
|
|
|
+ // 1. PG 실행 (취소시 추가결제금액 취소처리)
|
|
|
Order payment = orderChangeDao.getAddDeliveryFeePayment(orderChange);
|
|
|
|
|
|
- // 추가배송비 결제취소 처리
|
|
|
+ // 추가배송비 존재 시
|
|
|
if (payment != null && payment.getPayAmt() > 0) {
|
|
|
- payment.setOrdNo(ordNo);
|
|
|
- payment.setOrdChgSq(ordChgSq);
|
|
|
- payment.setPayAmt(payment.getPayAmt() * -1);
|
|
|
- payment.setPayStat(TscConstants.PaymentStat.PAYMENT_WAIT.value());
|
|
|
- payment.setPayGb(TscConstants.PaymentGb.DELIVERY.value());
|
|
|
- payment.setRegNo(regNo);
|
|
|
- payment.setUpdNo(updNo);
|
|
|
- orderChangeDao.createAddDeliveryFeeCancelPayment(payment);
|
|
|
-
|
|
|
- // TODO
|
|
|
- // PG취소처리
|
|
|
+ // 1-1. 추가배송비 결제정보 조회
|
|
|
+ Payment pg = new Payment();
|
|
|
+ pg.setOrdChgSq(ordChgSq);
|
|
|
+ pg = orderChangeDao.getAddPayCostPaymentInfo(pg);
|
|
|
+
|
|
|
+ // 1-2. 추가배송비 취소 정보 설정
|
|
|
+ if (StringUtils.isNotBlank(pg.getPgTid())) {
|
|
|
+ pg.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
+ pg.setPayGb("D");
|
|
|
+ pg.setModType("STSC");
|
|
|
+ pg.setModDesc("가맹점 취소 - 전체 취소");
|
|
|
+ pg.setIpAddress(orderChange.getIpAddress());
|
|
|
+ pg.setRegNo(regNo);
|
|
|
+ pg.setUpdNo(updNo);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 1-3. PG 취소 처리
|
|
|
+ kcpService.kcpCancel(pg);
|
|
|
}
|
|
|
|
|
|
- // 교환철회 처리
|
|
|
+ // 2. 교환철회 처리
|
|
|
Order exchangeCancel = new Order();
|
|
|
exchangeCancel.setOrdNo(ordNo);
|
|
|
exchangeCancel.setOrdChgSq(ordChgSq);
|
|
|
@@ -1592,22 +1619,22 @@ public class TscOrderChangeService {
|
|
|
exchangeCancel.setRegNo(regNo);
|
|
|
exchangeCancel.setUpdNo(updNo);
|
|
|
|
|
|
- // TB_ORDER_DETAIL 상태값 변경
|
|
|
+ // 2-1. TB_ORDER_DETAIL 상태값 변경
|
|
|
orderChangeDao.updateOrderDetailForExchangeCancel(exchangeCancel);
|
|
|
|
|
|
- // TB_ORDER_DETAIL_HST 생성
|
|
|
+ // 2-2. TB_ORDER_DETAIL_HST 생성
|
|
|
orderChangeDao.createOrderDtlHstCancel(exchangeCancel);
|
|
|
|
|
|
- // TB_ORDER_DETAIL_ITEM 상태값 변경
|
|
|
+ // 2-3. TB_ORDER_DETAIL_ITEM 상태값 변경
|
|
|
orderChangeDao.updateOrderDetailItemForExchangeCancel(exchangeCancel);
|
|
|
|
|
|
- // TB_ORDER_DETAIL_ITEM_HST 생성
|
|
|
+ // 2-4. TB_ORDER_DETAIL_ITEM_HST 생성
|
|
|
orderChangeDao.createOrderDetailItemHstForExchangeCancel(exchangeCancel);
|
|
|
|
|
|
- // TB_ORDER_CHANGE_DETAIL 상태값 변경 및 DEL_YN Y로 업데이트
|
|
|
+ // 2-5. TB_ORDER_CHANGE_DETAIL 상태값 변경 및 DEL_YN Y로 업데이트
|
|
|
orderChangeDao.updateOrderChangeDtlCancel(exchangeCancel);
|
|
|
|
|
|
- // 결과값 처리
|
|
|
+ // 3. 결과값 처리
|
|
|
result.set("status", GagaResponseStatus.SUCCESS.getCode());
|
|
|
|
|
|
return result;
|
|
|
@@ -2097,60 +2124,69 @@ public class TscOrderChangeService {
|
|
|
// 주문상세단품정보 수정 및 이력 등록
|
|
|
orderChangeDao.updateOrderDetailItemForAllCancel(orderDetail);
|
|
|
orderChangeDao.createOrderDetailItemHstForAllCancel(orderDetail);
|
|
|
+
|
|
|
+ // 11. WMS 취소 처리
|
|
|
+ List<Order> wmsList = new ArrayList<>();
|
|
|
+ for (int i = 0; i < orderChange.getOrdDtlNoArr().length; i++) {
|
|
|
+ Order wms = new Order();
|
|
|
+ wms.setOrdNo(ordNo);
|
|
|
+ wms.setOrdDtlNo(orderChange.getOrdDtlNoArr()[i]);
|
|
|
+ wms.setChgQty(orderChange.getCnclRtnReqQtyArr()[i]);
|
|
|
+
|
|
|
+ wmsList.add(wms);
|
|
|
+ }
|
|
|
+
|
|
|
+ wmsService.updateWmsCancel(wmsList);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 취소완료 요청
|
|
|
+ *
|
|
|
+ * @param OrderChange
|
|
|
+ * @return GagaMap
|
|
|
+ * @author card007
|
|
|
+ * @since 2021. 04. 21
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
public GagaMap orderCancelPreInfo(OrderChange orderChange) {
|
|
|
GagaMap result = new GagaMap();
|
|
|
|
|
|
- // 2. 환불 사전 정보 조회
|
|
|
+ // 1. 환불 사전 정보 조회
|
|
|
GagaMap refundPreInfo = getRefundPreInfo(orderChange);
|
|
|
List<Order> cnclReqList = (List<Order>)refundPreInfo.get("cnclReqList");
|
|
|
String allCanYn = refundPreInfo.getString("allCanYn");
|
|
|
String allLastCanYn = refundPreInfo.getString("allLastCanYn");
|
|
|
- // String allCanYnBeforePayment = refundPreInfo.getString("allCanYnBeforePayment");
|
|
|
|
|
|
- // 전체취소, 부분취소 구분 처리 진행
|
|
|
+ // 2. 전체취소, 부분취소 구분 처리 진행
|
|
|
if ("Y".equals(allCanYn)) {
|
|
|
orderChange.setChgGb(TscConstants.OrderChangeGb.CANCEL.value());
|
|
|
orderChange.setRegNo(orderChange.getCustNo());
|
|
|
orderChange.setUpdNo(orderChange.getCustNo());
|
|
|
|
|
|
+ // 전체 취소 처리
|
|
|
allCnclComplete(orderChange);
|
|
|
} else {
|
|
|
// 3. 환불금액계산
|
|
|
// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
|
|
|
result = orderRefundService.cnclRtnRefundAmt(cnclReqList);
|
|
|
|
|
|
- // 4. 주문변경 기본정보 설정
|
|
|
+ // 4. 부분취소 처리 정보 설정
|
|
|
result.setInt("ordNo", orderChange.getOrdNo()); // 주문번호
|
|
|
- // result.setInt("ordChgSq", orderChange.getOrdChgSq()); // 주문변경번호
|
|
|
result.setString("chgReason", orderChange.getChgReason()); // 변경사유
|
|
|
+ result.setString("chgReasonNm", orderChange.getChgReasonNm()); // 변경사유명
|
|
|
result.setString("chgMemo", orderChange.getChgMemo()); // 변경메모
|
|
|
-
|
|
|
result.setString("accountNo", orderChange.getAccountNo()); // 환불계좌번호
|
|
|
result.setString("accountNm", orderChange.getAccountNm()); // 환불계좌예금주명
|
|
|
result.setString("bankCd", orderChange.getBankCd()); // 환불계좌은행코드
|
|
|
-
|
|
|
- // result.setString("allCanYnBeforePayment", allCanYnBeforePayment); // 무통장입금전 전체취소 여부
|
|
|
- // result.setString("allCanYn", allCanYn); // 전체취소 여부
|
|
|
result.setString("allLastCanYn", allLastCanYn); // 전체 마지막 취소 여부
|
|
|
- // result.setString("isCustomer", orderChange.getIsCustomer()); // 변경사유 (고객, 회사)
|
|
|
-
|
|
|
- // 5. 주문변경 회수지정보 추가
|
|
|
- // result.setString("chgerNm", orderChange.getChgerNm()); // 변경자명
|
|
|
- // result.setString("chgerEmail", orderChange.getChgerEmail()); // 변경자이메일주소
|
|
|
- // result.setString("chgerPhnno", orderChange.getChgerPhnno()); // 변경자핸드폰번호
|
|
|
- // result.setString("chgerTelno", orderChange.getChgerTelno()); // 변경자전화번호
|
|
|
-
|
|
|
// result.setString("reqGbn", orderChange.getReqGbn()); // 신청구분
|
|
|
result.setString("ipAddress", orderChange.getIpAddress()); // IP주소
|
|
|
- result.setInt("custNo", orderChange.getCustNo()); // 고객번호
|
|
|
+ result.setInt("custNo", orderChange.getCustNo()); // 고객번호
|
|
|
result.setString("pgTid", refundPreInfo.getString("pgTid")); // PG거래ID
|
|
|
result.setString("payMeans", refundPreInfo.getString("payMeans")); // 결제수단
|
|
|
result.setString("pgGb", refundPreInfo.getString("pgGb")); // PG구분
|
|
|
|
|
|
- // 6. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL)
|
|
|
- // coreOrderChangeService.cnclComplete(result, custNo);
|
|
|
+ // 부분취소 처리
|
|
|
partialCancel(result);
|
|
|
}
|
|
|
|