|
|
@@ -22,7 +22,7 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
/**
|
|
|
* 취소, 반품, 교환 Service
|
|
|
- *
|
|
|
+ *
|
|
|
* @author jsh77b
|
|
|
* @since 2021. 01. 18
|
|
|
*/
|
|
|
@@ -44,7 +44,7 @@ public class TscOrderChangeService {
|
|
|
|
|
|
@Autowired
|
|
|
private TscNaverPayService naverPayService;
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 주문변경정보 (상세번호배열, 취소수량배열) 취소 목록으로 변환 (사용안함)
|
|
|
* @param Order
|
|
|
@@ -53,19 +53,19 @@ public class TscOrderChangeService {
|
|
|
* @since 2020. 12. 16
|
|
|
*/
|
|
|
public List<Order> getCnclReqList(OrderChange cnclReq, String chgGbn) {
|
|
|
-
|
|
|
+
|
|
|
// 1. 주문번호설정
|
|
|
Order order = new Order();
|
|
|
order.setOrdNo(cnclReq.getOrdNo());
|
|
|
-
|
|
|
+
|
|
|
// 2. 취소가능 주문상세상태값 설정
|
|
|
if (chgGbn == null) {
|
|
|
chgGbn = "";
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 2.1 신청구분으로
|
|
|
String[] ordDtlStatArr;
|
|
|
-
|
|
|
+
|
|
|
// 취소가능 주문상세 상태값 설정
|
|
|
if (TscConstants.OrderChangeStat.CANCEL.value().equals(chgGbn)) {
|
|
|
ordDtlStatArr = new String[4];
|
|
|
@@ -73,7 +73,7 @@ public class TscOrderChangeService {
|
|
|
ordDtlStatArr[1] = TscConstants.OrderDetailStat.PAYMENT_COMPLETE.value();
|
|
|
ordDtlStatArr[2] = TscConstants.OrderDetailStat.GOODS_PREPARE.value();
|
|
|
ordDtlStatArr[3] = TscConstants.OrderDetailStat.DELIVERY_PREPARE.value();
|
|
|
- }
|
|
|
+ }
|
|
|
// 반품, 교환가능 주문상세 상태값 설정
|
|
|
else {
|
|
|
ordDtlStatArr = new String[3];
|
|
|
@@ -81,26 +81,26 @@ public class TscOrderChangeService {
|
|
|
ordDtlStatArr[1] = TscConstants.OrderDetailStat.SHIP_COMPLETE.value();
|
|
|
ordDtlStatArr[2] = TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
order.setOrdDtlStatArr(ordDtlStatArr);
|
|
|
-
|
|
|
+
|
|
|
// 3. 취소,교환,반품 가능 주문목록 조회 후 취소/교환/반품 신청수량을 셋팅
|
|
|
List<Order> cnclReqList = getCancelRequestTargetList(order);
|
|
|
int[] ordDtlNoArr = cnclReq.getOrdDtlNoArr();
|
|
|
int[] cnclRtnReqQtyArr = cnclReq.getCnclRtnReqQtyArr();
|
|
|
-
|
|
|
+
|
|
|
for (int i=0 ; i<cnclReqList.size() ; i++) {
|
|
|
Order vo = cnclReqList.get(i);
|
|
|
-
|
|
|
+
|
|
|
if (ordDtlNoArr[i] == vo.getOrdDtlNo()) {
|
|
|
vo.setOrdCanChgQty(cnclRtnReqQtyArr[i]);
|
|
|
}
|
|
|
cnclReqList.add(vo);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return cnclReqList;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 주문변경 대상목록 조회 (취소, 반품, 교환)
|
|
|
* @param Order
|
|
|
@@ -111,7 +111,7 @@ public class TscOrderChangeService {
|
|
|
public List<Order> getCancelRequestTargetList(Order order) {
|
|
|
return orderChangeDao.getCancelRequestTargetList(order);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 주문변경신청목록 조회 (취소, 반품, 교환)
|
|
|
* @param Order
|
|
|
@@ -132,7 +132,7 @@ public class TscOrderChangeService {
|
|
|
*/
|
|
|
@Transactional("shopTxnManager")
|
|
|
public GagaMap cnclReqCancel(GagaMap mav, int userNo) {
|
|
|
-
|
|
|
+
|
|
|
Order order = new Order();
|
|
|
order.setOrdNo(mav.getInt("ordNo"));
|
|
|
order.setOrdChgSq(mav.getInt("ordChgSq"));
|
|
|
@@ -140,22 +140,22 @@ public class TscOrderChangeService {
|
|
|
order.setRegNo(userNo);
|
|
|
order.setUpdNo(userNo);
|
|
|
order.setDelYn("Y");
|
|
|
-
|
|
|
+
|
|
|
// 1. 주문변경정보 (TB_ORDER_CHANGE_DTL(수정))
|
|
|
orderChangeDao.updateOrderChangeDtlCancel(order);
|
|
|
-
|
|
|
+
|
|
|
// 2. 주문정보 이력 등록 (TB_ORDER_DETAIL_HST(등록))
|
|
|
orderChangeDao.createOrderDtlHstCancel(order);
|
|
|
-
|
|
|
+
|
|
|
// TODO
|
|
|
// 3. PG 실행 (취소시 추가결제금액 취소처리)
|
|
|
-
|
|
|
+
|
|
|
return mav;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 마이페이지 부분취소 처리
|
|
|
- *
|
|
|
+ *
|
|
|
* @param GagaMap
|
|
|
* @return GagaMap
|
|
|
* @author card007
|
|
|
@@ -184,7 +184,7 @@ public class TscOrderChangeService {
|
|
|
String ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_AFTER_CANCEL.value(); // 주문상세상태
|
|
|
String chgStat = TscConstants.OrderChangeStat.PAYMENT_AFTER_CANCEL.value(); // 주문변경상태
|
|
|
int pgCancelAmt = 0; // PG취소금액
|
|
|
-
|
|
|
+
|
|
|
// 2. 주문상세단품정보등록, 변경 (단품단위)
|
|
|
List<Order> cancelOrderDetailList = new ArrayList<>();
|
|
|
List<Integer> ordDtlNoList = new ArrayList<>();
|
|
|
@@ -193,7 +193,7 @@ public class TscOrderChangeService {
|
|
|
cancelOrderRefundPo.setOrdDtlStat(ordDtlStat);
|
|
|
cancelOrderRefundPo.setRegNo(custNo);
|
|
|
cancelOrderRefundPo.setUpdNo(custNo);
|
|
|
-
|
|
|
+
|
|
|
// 2-1. 취소수량이 존재하면 주문상세단품정보 수정 및 주문상세단품 이력 등록
|
|
|
if (cancelOrderRefundPo.getOrdCanChgQty() > 0) {
|
|
|
// 2-1-1. 주문상세단품정보 수정
|
|
|
@@ -209,7 +209,7 @@ public class TscOrderChangeService {
|
|
|
ordDtlNoList.add(ordDtlNo);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 3. 주문변경정보, 주문정보, 환불정보 (배송정책코드 별)
|
|
|
for (Order obj : cancelDelvRefundList) {
|
|
|
// 취소금액 있을 시 처리
|
|
|
@@ -226,17 +226,17 @@ public class TscOrderChangeService {
|
|
|
orderChange.setUpdNo(custNo);
|
|
|
|
|
|
orderChangeDao.createOrderChange(orderChange);
|
|
|
-
|
|
|
+
|
|
|
// 3-2. 주문상세정보 수정
|
|
|
for (Order vo : cancelOrderDetailList) {
|
|
|
// 배송정책코드 별 주문상세 처리
|
|
|
if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd())) {
|
|
|
// 주문상세 별 전체취소여부 설정
|
|
|
int leftQty = vo.getOrdQty() - vo.getCnclRtnQty() - vo.getOrdCanChgQty();
|
|
|
-
|
|
|
+
|
|
|
// 3-2-1. 주문상세 이력 등록
|
|
|
orderChangeDao.createOrderDetailHstCnclRtn(vo);
|
|
|
-
|
|
|
+
|
|
|
// 3-2-2. 주문상세정보 수정
|
|
|
orderChangeDao.updateOrderDetail(vo);
|
|
|
|
|
|
@@ -306,7 +306,7 @@ public class TscOrderChangeService {
|
|
|
orderChangeDao.updateCustGiftCardRollback(giftCard);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 3-2-7. 주문변경상세정보 및 이력 등록
|
|
|
OrderChange changeDetailPo = new OrderChange();
|
|
|
changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
@@ -320,16 +320,16 @@ public class TscOrderChangeService {
|
|
|
orderChangeDao.createOrderChangeDetailHst(changeDetailPo);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 3-3. 상품재고원복
|
|
|
orderChange.setSellGb(TscConstants.SellGb.ORDER_CANCEL.value());
|
|
|
orderChangeDao.createSellQty(orderChange);
|
|
|
-
|
|
|
+
|
|
|
// 3-4. 환불결제정보 등록 (배송정책 별)
|
|
|
- int spanRealCnclRtnAmt = obj.getRealOrdAmt(); // 취소금액합계
|
|
|
- int sumDeliveryFee = obj.getDelvFee(); // 배송비합계
|
|
|
- int spanRefundAmt = spanRealCnclRtnAmt + sumDeliveryFee;
|
|
|
-
|
|
|
+ int spanRealCnclRtnAmt = obj.getRealOrdAmt(); // 취소금액합계
|
|
|
+ int sumDeliveryFee = obj.getDelvFee(); // 배송비합계
|
|
|
+ int spanRefundAmt = spanRealCnclRtnAmt + sumDeliveryFee;
|
|
|
+
|
|
|
Order paymentOrder = new Order();
|
|
|
paymentOrder.setOrdNo(ordNo);
|
|
|
paymentOrder.setPayAmt(spanRefundAmt * -1);
|
|
|
@@ -339,7 +339,7 @@ public class TscOrderChangeService {
|
|
|
paymentOrder.setUpdNo(custNo);
|
|
|
|
|
|
orderChangeDao.createPayment(paymentOrder);
|
|
|
-
|
|
|
+
|
|
|
// 3-5. 환불정보 등록
|
|
|
Order refundOrder = new Order();
|
|
|
refundOrder.setOrdNo(ordNo);
|
|
|
@@ -400,8 +400,6 @@ public class TscOrderChangeService {
|
|
|
orderChangeDao.updateOrdFreegiftDel(freegiftOrder);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
// 5. PG 결제 취소 처리 (상품권으로만 결제 시 PG점프)
|
|
|
if (!TscConstants.PgGb.ISTYLE.value().equals(pgGb)) {
|
|
|
if (TscConstants.PgGb.KCP.value().equals(pgGb) || TscConstants.PgGb.PAYCO.value().equals(pgGb)) {
|
|
|
@@ -438,1697 +436,1697 @@ public class TscOrderChangeService {
|
|
|
|
|
|
kakaoPayService.cancelKakaoPayment(kakaoPay);
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return map;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- return map;
|
|
|
- }
|
|
|
|
|
|
-
|
|
|
- /**
|
|
|
- * 취소완료 (admin, front, batch(soldout), batch(gift), batch(napy), batch(extmall))
|
|
|
- * @param Order
|
|
|
- * @return Order
|
|
|
- * @author jsh77b
|
|
|
- * @since 2021. 01. 19
|
|
|
- */
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- @Transactional("shopTxnManager")
|
|
|
- public GagaMap cnclComplete(GagaMap mav, int userNo) {
|
|
|
-
|
|
|
- // 1. 세션회원조회
|
|
|
- //userNo = userNo;
|
|
|
-
|
|
|
- // 2. 취소요정정보목록
|
|
|
- List<Order> cancelReqList = (List<Order>) mav.get("cnclRtnList"); // 취소요청 목록
|
|
|
- List<Order> cancelOrderRefundList = (List<Order>) mav.get("cancelOrderRefundList"); // 취소환불금액 목록 (주문상세단품 단위)
|
|
|
- List<Order> cancelDelvRefundList = (List<Order>) mav.get("cancelDelvRefundList"); // 취소환불배송금액 목록 (DELV_FEE_CD 단위)
|
|
|
-
|
|
|
- // 3. 취소신청정보
|
|
|
- int ordNo = Integer.parseInt(mav.getString("ordNo")); // 주문번호
|
|
|
- String chgReason = mav.getString("chgReason"); // 변경사유
|
|
|
- String chgMemo = mav.getString("chgMemo"); // 변경메모
|
|
|
- String allLastCanYn = mav.getString("allLastCanYn"); // 마지막 취소 여부
|
|
|
- String isCustomer = mav.getString("isCustomer"); // 귀책사유 (고객, 회사)
|
|
|
- String chgGb = TscConstants.OrderChangeGb.CANCEL.value(); // 취소요청 (공톹코드:G680)
|
|
|
- String reqGbn = mav.getString("reqGbn"); // 신청구분
|
|
|
- String ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_AFTER_CANCEL.value(); // 주문상세상태
|
|
|
- String chgStat = TscConstants.OrderChangeStat.PAYMENT_AFTER_CANCEL.value(); // 주문변경상태
|
|
|
- String ipAddress = mav.getString("ipAddress"); // IP주소
|
|
|
- String pgTid = mav.getString("pgTid"); // PG거래ID
|
|
|
- String payMeans = mav.getString("payMeans"); // 결제수단
|
|
|
- String pgGb = mav.getString("pgGb"); // PG구분
|
|
|
- int pgCancelAmt = 0; // PG취소금액
|
|
|
-
|
|
|
- // 4. 주문상세단품정보등록,변경 (단품단위)
|
|
|
- List<Order> cancelOrderDetailList = new ArrayList<>();
|
|
|
-
|
|
|
- for (int i=0 ; i<cancelOrderRefundList.size() ; i++) {
|
|
|
- Order cancelOrderRefundPo = cancelOrderRefundList.get(i);
|
|
|
- cancelOrderRefundPo.setRegNo(userNo);
|
|
|
- cancelOrderRefundPo.setUpdNo(userNo);
|
|
|
-
|
|
|
- // 2020.01.05 추후 무통장입금전 전체 취소시 분기 로직 추가 예정
|
|
|
- // 2021.01.26 취소완료, 취소신청완료(취소승인) 일때실행
|
|
|
- if ("cnclComplete".equals(reqGbn) || "cnclReqComplete".equals(reqGbn)) {
|
|
|
- cancelOrderRefundPo.setOrdDtlStat(ordDtlStat);
|
|
|
- }
|
|
|
|
|
|
- // 4.1 취소수량이 존재하면 주문상세단품정보 수정 및 주문상세단품이력정보 등록
|
|
|
- if (cancelOrderRefundPo.getOrdCanChgQty() > 0) {
|
|
|
-
|
|
|
+ /**
|
|
|
+ * 취소완료 (admin, front, batch(soldout), batch(gift), batch(napy), batch(extmall))
|
|
|
+ * @param Order
|
|
|
+ * @return Order
|
|
|
+ * @author jsh77b
|
|
|
+ * @since 2021. 01. 19
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
+ public GagaMap cnclComplete(GagaMap mav, int userNo) {
|
|
|
+
|
|
|
+ // 1. 세션회원조회
|
|
|
+ //userNo = userNo;
|
|
|
+
|
|
|
+ // 2. 취소요정정보목록
|
|
|
+ List<Order> cancelReqList = (List<Order>) mav.get("cnclRtnList"); // 취소요청 목록
|
|
|
+ List<Order> cancelOrderRefundList = (List<Order>) mav.get("cancelOrderRefundList"); // 취소환불금액 목록 (주문상세단품 단위)
|
|
|
+ List<Order> cancelDelvRefundList = (List<Order>) mav.get("cancelDelvRefundList"); // 취소환불배송금액 목록 (DELV_FEE_CD 단위)
|
|
|
+
|
|
|
+ // 3. 취소신청정보
|
|
|
+ int ordNo = Integer.parseInt(mav.getString("ordNo")); // 주문번호
|
|
|
+ String chgReason = mav.getString("chgReason"); // 변경사유
|
|
|
+ String chgMemo = mav.getString("chgMemo"); // 변경메모
|
|
|
+ String allLastCanYn = mav.getString("allLastCanYn"); // 마지막 취소 여부
|
|
|
+ String isCustomer = mav.getString("isCustomer"); // 귀책사유 (고객, 회사)
|
|
|
+ String chgGb = TscConstants.OrderChangeGb.CANCEL.value(); // 취소요청 (공톹코드:G680)
|
|
|
+ String reqGbn = mav.getString("reqGbn"); // 신청구분
|
|
|
+ String ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_AFTER_CANCEL.value(); // 주문상세상태
|
|
|
+ String chgStat = TscConstants.OrderChangeStat.PAYMENT_AFTER_CANCEL.value(); // 주문변경상태
|
|
|
+ String ipAddress = mav.getString("ipAddress"); // IP주소
|
|
|
+ String pgTid = mav.getString("pgTid"); // PG거래ID
|
|
|
+ String payMeans = mav.getString("payMeans"); // 결제수단
|
|
|
+ String pgGb = mav.getString("pgGb"); // PG구분
|
|
|
+ int pgCancelAmt = 0; // PG취소금액
|
|
|
+
|
|
|
+ // 4. 주문상세단품정보등록,변경 (단품단위)
|
|
|
+ List<Order> cancelOrderDetailList = new ArrayList<>();
|
|
|
+
|
|
|
+ for (int i=0 ; i<cancelOrderRefundList.size() ; i++) {
|
|
|
+ Order cancelOrderRefundPo = cancelOrderRefundList.get(i);
|
|
|
+ cancelOrderRefundPo.setRegNo(userNo);
|
|
|
+ cancelOrderRefundPo.setUpdNo(userNo);
|
|
|
+
|
|
|
+ // 2020.01.05 추후 무통장입금전 전체 취소시 분기 로직 추가 예정
|
|
|
// 2021.01.26 취소완료, 취소신청완료(취소승인) 일때실행
|
|
|
- // 4.2 주문상세단품정보수정 (TB_ORDER_DETAIL_ITEM)
|
|
|
if ("cnclComplete".equals(reqGbn) || "cnclReqComplete".equals(reqGbn)) {
|
|
|
- orderChangeDao.updateOrderDetailItem(cancelOrderRefundPo);
|
|
|
-
|
|
|
-
|
|
|
- // 4.3 주문상세단품정보이력등록 (TB_ORDER_DETAIL_ITEM_HST)
|
|
|
- orderChangeDao.createOrderDetailItemHst(cancelOrderRefundPo);
|
|
|
+ cancelOrderRefundPo.setOrdDtlStat(ordDtlStat);
|
|
|
}
|
|
|
-
|
|
|
- // 4.4 주문변경 상세 단위로 데이타 등록 (ORD_DTL_NO)
|
|
|
- Boolean temp = false;
|
|
|
- if (cancelOrderDetailList.size() > 0) {
|
|
|
- for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
|
|
|
- if (cancelOrderRefundPo.getOrdDtlNo() == cancelOrderDetailList.get(j).getOrdDtlNo()) {
|
|
|
- temp = true;
|
|
|
+
|
|
|
+ // 4.1 취소수량이 존재하면 주문상세단품정보 수정 및 주문상세단품이력정보 등록
|
|
|
+ if (cancelOrderRefundPo.getOrdCanChgQty() > 0) {
|
|
|
+
|
|
|
+ // 2021.01.26 취소완료, 취소신청완료(취소승인) 일때실행
|
|
|
+ // 4.2 주문상세단품정보수정 (TB_ORDER_DETAIL_ITEM)
|
|
|
+ if ("cnclComplete".equals(reqGbn) || "cnclReqComplete".equals(reqGbn)) {
|
|
|
+ orderChangeDao.updateOrderDetailItem(cancelOrderRefundPo);
|
|
|
+
|
|
|
+
|
|
|
+ // 4.3 주문상세단품정보이력등록 (TB_ORDER_DETAIL_ITEM_HST)
|
|
|
+ orderChangeDao.createOrderDetailItemHst(cancelOrderRefundPo);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4.4 주문변경 상세 단위로 데이타 등록 (ORD_DTL_NO)
|
|
|
+ Boolean temp = false;
|
|
|
+ if (cancelOrderDetailList.size() > 0) {
|
|
|
+ for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
|
|
|
+ if (cancelOrderRefundPo.getOrdDtlNo() == cancelOrderDetailList.get(j).getOrdDtlNo()) {
|
|
|
+ temp = true;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- // 4.5 주문상세단위 데이타 저장(주문상세 단위)
|
|
|
- if (!temp) {
|
|
|
- cancelOrderDetailList.add(cancelOrderRefundPo);
|
|
|
+
|
|
|
+ // 4.5 주문상세단위 데이타 저장(주문상세 단위)
|
|
|
+ if (!temp) {
|
|
|
+ cancelOrderDetailList.add(cancelOrderRefundPo);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- // 2021.01.21 DELV_FEE 배송번호 단위로 TB_ORDER_CHANGE 생성
|
|
|
- // 5. 주문변경정보, 주문정보, 환불정보 (업체코드 & 배송정책코드)
|
|
|
- for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
|
|
|
-
|
|
|
- Order obj = cancelDelvRefundList.get(i);
|
|
|
-
|
|
|
- // 취소금액이 있을때 처리
|
|
|
- if (obj.getCnclRtnAmt() > 0) {
|
|
|
-
|
|
|
- // 5.1 주문변경 기본정보 등록
|
|
|
- OrderChange orderChange = new OrderChange();
|
|
|
- orderChange.setOrdNo(ordNo);
|
|
|
- orderChange.setChgGb(chgGb);
|
|
|
- orderChange.setChgReason(chgReason);
|
|
|
- orderChange.setChgMemo(chgMemo);
|
|
|
- orderChange.setAddPayCost(0);
|
|
|
- orderChange.setAddPayAmt(0);
|
|
|
- orderChange.setRegNo(userNo);
|
|
|
- orderChange.setUpdNo(userNo);
|
|
|
-
|
|
|
- // 5.2 주문변경 추가정보 등록
|
|
|
- String chgerNm = mav.getString("chgerNm"); // 변경자
|
|
|
- String chgerPhnno = mav.getString("chgerPhnno"); // 변경핸드폰번호
|
|
|
- String chgerTelno = mav.getString("chgerTelno"); // 변경전화번호
|
|
|
- String chgerEmail = mav.getString("chgerEmail"); // 변경이메일
|
|
|
-
|
|
|
- orderChange.setChgerNm(chgerNm);
|
|
|
- orderChange.setChgerPhnno(chgerPhnno);
|
|
|
- orderChange.setChgerTelno(chgerTelno);
|
|
|
- orderChange.setChgerEmail(chgerEmail);
|
|
|
- orderChange.setChgerRtnMemo("");
|
|
|
-
|
|
|
- // 2021.01.26 취소완료, 취소신청 일때실행
|
|
|
- if ("cnclComplete".equals(reqGbn) || "cnclReq".equals(reqGbn)) {
|
|
|
- orderChangeDao.createOrderChange(orderChange);
|
|
|
- }
|
|
|
-
|
|
|
- // 5.3 주문상세단위 취소정보
|
|
|
- for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
|
|
|
- Order vo = cancelOrderRefundList.get(j);
|
|
|
- vo.setRegNo(userNo);
|
|
|
- vo.setUpdNo(userNo);
|
|
|
- int leftQty = vo.getOrdQty() - vo.getCnclRtnQty() - vo.getOrdCanChgQty();
|
|
|
-
|
|
|
- // 5.3.0 DEVL_FEE_CD 단위로 주문상세 정보 처리
|
|
|
- if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd())) {
|
|
|
-
|
|
|
- // 2021.01.26 취소완료, 취소신청완료 일때실행
|
|
|
- // 2020.01.05 추후 무통장입금전 전체 취소시 분기로직 추가 예정
|
|
|
- if ("cnclComplete".equals(reqGbn) || "cnclReqComplete".equals(reqGbn)) {
|
|
|
- vo.setOrdDtlStat(ordDtlStat);
|
|
|
- } else {
|
|
|
- vo.setOrdDtlStat(TscConstants.OrderChangeStat.CANCEL.value()); // 취소신청
|
|
|
- }
|
|
|
-
|
|
|
- // 5.3.1 주문변경상세정보 이력등록
|
|
|
- orderChangeDao.createOrderDetailHstCnclRtn(vo);
|
|
|
-
|
|
|
- // 2021.01.26 취소완료, 취소신청완료 일때실행
|
|
|
- // 5.3.2 주문변경상세정보 수정
|
|
|
- if ("cnclComplete".equals(reqGbn) || "cnclReqComplete".equals(reqGbn)) {
|
|
|
- orderChangeDao.updateOrderDetail(vo);
|
|
|
- }
|
|
|
|
|
|
- // 5.3.3 사용포인트원복
|
|
|
- int pntDcAmt = vo.getPntDcAmt();
|
|
|
- vo.setOccurGb(TscConstants.PointOccurGb.USE_POINT.value());
|
|
|
|
|
|
- for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
- while (pntDcAmt > 0) {
|
|
|
- if (pntDcAmt < point.getPntAmt()) {
|
|
|
- point.setPntAmt(pntDcAmt);
|
|
|
- pntDcAmt -= pntDcAmt;
|
|
|
- } else {
|
|
|
- pntDcAmt -= point.getPntAmt();
|
|
|
+ // 2021.01.21 DELV_FEE 배송번호 단위로 TB_ORDER_CHANGE 생성
|
|
|
+ // 5. 주문변경정보, 주문정보, 환불정보 (업체코드 & 배송정책코드)
|
|
|
+ for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
|
|
|
+
|
|
|
+ Order obj = cancelDelvRefundList.get(i);
|
|
|
+
|
|
|
+ // 취소금액이 있을때 처리
|
|
|
+ if (obj.getCnclRtnAmt() > 0) {
|
|
|
+
|
|
|
+ // 5.1 주문변경 기본정보 등록
|
|
|
+ OrderChange orderChange = new OrderChange();
|
|
|
+ orderChange.setOrdNo(ordNo);
|
|
|
+ orderChange.setChgGb(chgGb);
|
|
|
+ orderChange.setChgReason(chgReason);
|
|
|
+ orderChange.setChgMemo(chgMemo);
|
|
|
+ orderChange.setAddPayCost(0);
|
|
|
+ orderChange.setAddPayAmt(0);
|
|
|
+ orderChange.setRegNo(userNo);
|
|
|
+ orderChange.setUpdNo(userNo);
|
|
|
+
|
|
|
+ // 5.2 주문변경 추가정보 등록
|
|
|
+ String chgerNm = mav.getString("chgerNm"); // 변경자
|
|
|
+ String chgerPhnno = mav.getString("chgerPhnno"); // 변경핸드폰번호
|
|
|
+ String chgerTelno = mav.getString("chgerTelno"); // 변경전화번호
|
|
|
+ String chgerEmail = mav.getString("chgerEmail"); // 변경이메일
|
|
|
+
|
|
|
+ orderChange.setChgerNm(chgerNm);
|
|
|
+ orderChange.setChgerPhnno(chgerPhnno);
|
|
|
+ orderChange.setChgerTelno(chgerTelno);
|
|
|
+ orderChange.setChgerEmail(chgerEmail);
|
|
|
+ orderChange.setChgerRtnMemo("");
|
|
|
+
|
|
|
+ // 2021.01.26 취소완료, 취소신청 일때실행
|
|
|
+ if ("cnclComplete".equals(reqGbn) || "cnclReq".equals(reqGbn)) {
|
|
|
+ orderChangeDao.createOrderChange(orderChange);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 5.3 주문상세단위 취소정보
|
|
|
+ for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
|
|
|
+ Order vo = cancelOrderRefundList.get(j);
|
|
|
+ vo.setRegNo(userNo);
|
|
|
+ vo.setUpdNo(userNo);
|
|
|
+ int leftQty = vo.getOrdQty() - vo.getCnclRtnQty() - vo.getOrdCanChgQty();
|
|
|
+
|
|
|
+ // 5.3.0 DEVL_FEE_CD 단위로 주문상세 정보 처리
|
|
|
+ if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd())) {
|
|
|
+
|
|
|
+ // 2021.01.26 취소완료, 취소신청완료 일때실행
|
|
|
+ // 2020.01.05 추후 무통장입금전 전체 취소시 분기로직 추가 예정
|
|
|
+ if ("cnclComplete".equals(reqGbn) || "cnclReqComplete".equals(reqGbn)) {
|
|
|
+ vo.setOrdDtlStat(ordDtlStat);
|
|
|
+ } else {
|
|
|
+ vo.setOrdDtlStat(TscConstants.OrderChangeStat.CANCEL.value()); // 취소신청
|
|
|
+ }
|
|
|
+
|
|
|
+ // 5.3.1 주문변경상세정보 이력등록
|
|
|
+ orderChangeDao.createOrderDetailHstCnclRtn(vo);
|
|
|
+
|
|
|
+ // 2021.01.26 취소완료, 취소신청완료 일때실행
|
|
|
+ // 5.3.2 주문변경상세정보 수정
|
|
|
+ if ("cnclComplete".equals(reqGbn) || "cnclReqComplete".equals(reqGbn)) {
|
|
|
+ orderChangeDao.updateOrderDetail(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 5.3.3 사용포인트원복
|
|
|
+ int pntDcAmt = vo.getPntDcAmt();
|
|
|
+ vo.setOccurGb(TscConstants.PointOccurGb.USE_POINT.value());
|
|
|
+
|
|
|
+ for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
+ while (pntDcAmt > 0) {
|
|
|
+ if (pntDcAmt < point.getPntAmt()) {
|
|
|
+ point.setPntAmt(pntDcAmt);
|
|
|
+ pntDcAmt -= pntDcAmt;
|
|
|
+ } else {
|
|
|
+ pntDcAmt -= point.getPntAmt();
|
|
|
+ }
|
|
|
+
|
|
|
+ point.setOccurGb(TscConstants.PointOccurGb.USE_POINT_CANCEL.value());
|
|
|
+ point.setOccurDtlDesc("포인트사용취소");
|
|
|
+ point.setRegNo(userNo);
|
|
|
+ point.setUpdNo(userNo);
|
|
|
+
|
|
|
+ // 포인트 사용 취소 이력 생성 및 포인트 수정
|
|
|
+ orderChangeDao.createCustPointHstRollback(point);
|
|
|
+ orderChangeDao.updateCustPointRollback(point);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- point.setOccurGb(TscConstants.PointOccurGb.USE_POINT_CANCEL.value());
|
|
|
- point.setOccurDtlDesc("포인트사용취소");
|
|
|
+ // 5.3.4 적립예정포인트 수정
|
|
|
+ int savePntAmt = vo.getSavePntAmt();
|
|
|
+ vo.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT.value());
|
|
|
+
|
|
|
+ for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
+ point.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT_CANCEL.value());
|
|
|
+ point.setOccurDtlDesc("예정포인트적립취소");
|
|
|
+ point.setPayAmt(savePntAmt * -1);
|
|
|
point.setRegNo(userNo);
|
|
|
point.setUpdNo(userNo);
|
|
|
|
|
|
- // 포인트 사용 취소 이력 생성 및 포인트 수정
|
|
|
+ // 적립예정포인트 취소 이력 생성
|
|
|
orderChangeDao.createCustPointHstRollback(point);
|
|
|
- orderChangeDao.updateCustPointRollback(point);
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- // 5.3.4 적립예정포인트 수정
|
|
|
- int savePntAmt = vo.getSavePntAmt();
|
|
|
- vo.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT.value());
|
|
|
+ // 5.3.5 상품쿠폰원복
|
|
|
+ if (leftQty == 0) {
|
|
|
+ orderChangeDao.updateGoodsCpnRollback(vo);
|
|
|
+ }
|
|
|
|
|
|
- for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
- point.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT_CANCEL.value());
|
|
|
- point.setOccurDtlDesc("예정포인트적립취소");
|
|
|
- point.setPayAmt(savePntAmt * -1);
|
|
|
- point.setRegNo(userNo);
|
|
|
- point.setUpdNo(userNo);
|
|
|
+ // 5.3.6 사용상품권 원복
|
|
|
+ int gfcdUseAmt = vo.getGfcdUseAmt();
|
|
|
+
|
|
|
+ for (Order giftCard : orderChangeDao.getCustGiftCardHst(vo)) {
|
|
|
+ while (gfcdUseAmt > 0) {
|
|
|
+ if (gfcdUseAmt < giftCard.getGfcdAmt()) {
|
|
|
+ giftCard.setGfcdAmt(gfcdUseAmt);
|
|
|
+ gfcdUseAmt -= gfcdUseAmt;
|
|
|
+ } else {
|
|
|
+ gfcdUseAmt -= giftCard.getGfcdAmt();
|
|
|
+ }
|
|
|
+
|
|
|
+ giftCard.setOccurGb(TscConstants.GiftCardOccurGb.USE_GIFTCARD_CANCEL.value());
|
|
|
+ giftCard.setOccurDtlDesc("상품권사용취소");
|
|
|
+ giftCard.setRegNo(userNo);
|
|
|
+ giftCard.setUpdNo(userNo);
|
|
|
+
|
|
|
+ // 포인트 사용 취소 이력 생성 및 포인트 수정
|
|
|
+ orderChangeDao.createCustGiftCardHstRollback(giftCard);
|
|
|
+ orderChangeDao.updateCustGiftCardRollback(giftCard);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- // 적립예정포인트 취소 이력 생성
|
|
|
- orderChangeDao.createCustPointHstRollback(point);
|
|
|
+ // * 주문상세단위가 아닌 주문상세단품단위로 데이타가 처리되고 있었음 주문상세단위로 수정
|
|
|
+ // 5.3 주문변경상세정보 등록
|
|
|
+ OrderChange changeDetailPo = new OrderChange();
|
|
|
+ changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
+ changeDetailPo.setOrdDtlNo(vo.getOrdDtlNo());
|
|
|
+ changeDetailPo.setChgQty(vo.getOrdCanChgQty());
|
|
|
+ changeDetailPo.setRegNo(userNo);
|
|
|
+ changeDetailPo.setUpdNo(userNo);
|
|
|
+
|
|
|
+ // 2021.01.26 취소완료일때실행
|
|
|
+ if ("cnclComplete".equals(reqGbn)) {
|
|
|
+ changeDetailPo.setChgStat(chgStat);
|
|
|
+
|
|
|
+ orderChangeDao.createOrderChangeDetail(changeDetailPo);
|
|
|
+ orderChangeDao.createOrderChangeDetailHst(changeDetailPo);
|
|
|
+ }
|
|
|
+ // 2021.01.26 취소신청완료일때실행
|
|
|
+ else if ("cnclReqComplete".equals(reqGbn)) {
|
|
|
+ Order order = new Order();
|
|
|
+ order.setOrdNo(mav.getInt("ordNo"));
|
|
|
+ order.setOrdChgSq(mav.getInt("ordChgSq"));
|
|
|
+ order.setChgStat(chgStat);
|
|
|
+ order.setUpdNo(userNo);
|
|
|
+ order.setDelYn("N");
|
|
|
+
|
|
|
+ orderChangeDao.updateOrderChangeDtlCancel(order);
|
|
|
+ orderChangeDao.createOrderChangeDetailHst(changeDetailPo);
|
|
|
+ }
|
|
|
+ // 2021.01.26 취소신청일때실행
|
|
|
+ else {
|
|
|
+ changeDetailPo.setChgStat(TscConstants.OrderChangeStat.CANCEL.value()); // 취소신청
|
|
|
+ orderChangeDao.createOrderChangeDetail(changeDetailPo);
|
|
|
+ }
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- // 5.3.5 상품쿠폰원복
|
|
|
- if (leftQty == 0) {
|
|
|
- orderChangeDao.updateGoodsCpnRollback(vo);
|
|
|
- }
|
|
|
+ // 2021.01.26 취소완료, 취소신청완료 일때실행
|
|
|
+ // 5.31 상품재고원복 (TB_SELL_QTY 등록(취소,반품))
|
|
|
+ orderChange.setSellGb("11");
|
|
|
+ if ("cnclComplete".equals(reqGbn)) {
|
|
|
+ orderChangeDao.createSellQty(orderChange);
|
|
|
+ } else if ("cnclReqComplete".equals(reqGbn)) {
|
|
|
+ orderChange.setOrdNo(mav.getInt("ordNo"));
|
|
|
+ orderChange.setOrdChgSq(mav.getInt("ordChgSq"));
|
|
|
+ orderChangeDao.createSellQty(orderChange);
|
|
|
+ }
|
|
|
|
|
|
- // 5.3.6 사용상품권 원복
|
|
|
- int gfcdUseAmt = vo.getGfcdUseAmt();
|
|
|
+ // 5.4 환불결제정보 등록 (업체별 & 배송정책별) 단위
|
|
|
+ // 취소, 반품 사유에 따른 추가배송비, 반품배송비를 환불금액에서 추가, 제외 할 수 있다.
|
|
|
+ //int spanRealCnclRtnAmt = obj.getCnclRtnAmt(); // 취소금액합계
|
|
|
+ // 2021.04.12 취소,반품 환불금액 계산 칼럼 오류 수정 jsh77b
|
|
|
+ int spanRealCnclRtnAmt = obj.getRealOrdAmt(); // 취소금액합계
|
|
|
+ int sumDeliveryFee = obj.getDelvFee(); // 배송비합계
|
|
|
+ int spanTotDeliveryFee = obj.getAddDelvFee(); // 추가배송비합계
|
|
|
+ int spanTotRtnDelvFee = obj.getRtnDelvFee(); // 반품배송비합계
|
|
|
+ int spanRefundAmt = 0;
|
|
|
+
|
|
|
+ // 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
|
|
|
+ if ("true".equals(isCustomer)) {
|
|
|
+ spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee) - spanTotDeliveryFee - spanTotRtnDelvFee;
|
|
|
+ }
|
|
|
+ // 회사사유 : 환불금액계산 = (취소금액 + 배송비)
|
|
|
+ else {
|
|
|
+ spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee);
|
|
|
+ }
|
|
|
|
|
|
- for (Order giftCard : orderChangeDao.getCustGiftCardHst(vo)) {
|
|
|
- while (gfcdUseAmt > 0) {
|
|
|
- if (gfcdUseAmt < giftCard.getGfcdAmt()) {
|
|
|
- giftCard.setGfcdAmt(gfcdUseAmt);
|
|
|
- gfcdUseAmt -= gfcdUseAmt;
|
|
|
- } else {
|
|
|
- gfcdUseAmt -= giftCard.getGfcdAmt();
|
|
|
- }
|
|
|
+ Order paymentOrder = new Order();
|
|
|
+ paymentOrder.setOrdNo(ordNo);
|
|
|
+ paymentOrder.setPayAmt(spanRefundAmt * -1);
|
|
|
+ paymentOrder.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
+ paymentOrder.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
+ paymentOrder.setRegNo(userNo);
|
|
|
+ paymentOrder.setUpdNo(userNo);
|
|
|
|
|
|
- giftCard.setOccurGb(TscConstants.GiftCardOccurGb.USE_GIFTCARD_CANCEL.value());
|
|
|
- giftCard.setOccurDtlDesc("상품권사용취소");
|
|
|
- giftCard.setRegNo(userNo);
|
|
|
- giftCard.setUpdNo(userNo);
|
|
|
+ // 2021.01.26 취소완료, 취소신청완료 일때실행
|
|
|
+ if ("cnclComplete".equals(reqGbn) || "cnclReqComplete".equals(reqGbn)) {
|
|
|
+ orderChangeDao.createPayment(paymentOrder);
|
|
|
+ }
|
|
|
|
|
|
- // 포인트 사용 취소 이력 생성 및 포인트 수정
|
|
|
- orderChangeDao.createCustGiftCardHstRollback(giftCard);
|
|
|
- orderChangeDao.updateCustGiftCardRollback(giftCard);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // * 주문상세단위가 아닌 주문상세단품단위로 데이타가 처리되고 있었음 주문상세단위로 수정
|
|
|
- // 5.3 주문변경상세정보 등록
|
|
|
- OrderChange changeDetailPo = new OrderChange();
|
|
|
- changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
- changeDetailPo.setOrdDtlNo(vo.getOrdDtlNo());
|
|
|
- changeDetailPo.setChgQty(vo.getOrdCanChgQty());
|
|
|
- changeDetailPo.setRegNo(userNo);
|
|
|
- changeDetailPo.setUpdNo(userNo);
|
|
|
-
|
|
|
- // 2021.01.26 취소완료일때실행
|
|
|
- if ("cnclComplete".equals(reqGbn)) {
|
|
|
- changeDetailPo.setChgStat(chgStat);
|
|
|
+ // 5.5 환불금액 등록
|
|
|
+ Order refundOrder = new Order();
|
|
|
+ refundOrder.setOrdNo(ordNo);
|
|
|
+ refundOrder.setPaySq(paymentOrder.getPaySq());
|
|
|
+ refundOrder.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
+ refundOrder.setRegNo(userNo);
|
|
|
+
|
|
|
+ // 2021.01.25 TB_REFUND 정보 등록을 위해서 분리 작업
|
|
|
+ refundOrder.setRefundAmt(spanRefundAmt);
|
|
|
+ refundOrder.setRfCpn1Amt(obj.getCpn1DcAmt());
|
|
|
+ refundOrder.setRfTmtb1Amt(obj.getTmtb1DcAmt());
|
|
|
+ refundOrder.setRfTmtb2Amt(obj.getTmtb2DcAmt());
|
|
|
+ refundOrder.setRfGoodsCpnAmt(obj.getGoodsCpnDcAmt());
|
|
|
+ refundOrder.setRfCartCpnAmt(obj.getCartCpnDcAmt());
|
|
|
+ refundOrder.setRfPntAmt(obj.getPntAmt());
|
|
|
+ refundOrder.setRfPrePntAmt(obj.getPrePntDcAmt());
|
|
|
+ refundOrder.setRfGfcdUseAmt(obj.getGfcdUseAmt());
|
|
|
+
|
|
|
+ refundOrder.setRaNo(mav.get("accountNo").toString());
|
|
|
+ refundOrder.setRaNm(mav.get("accountNm").toString());
|
|
|
+ refundOrder.setRaBank(mav.get("bankCd").toString());
|
|
|
+
|
|
|
+ // 2021.01.26 취소완료, 취소신청 일때실행
|
|
|
+ if ("cnclComplete".equals(reqGbn) || "cnclReq".equals(reqGbn)) {
|
|
|
+ orderChangeDao.createRefund(refundOrder);
|
|
|
+ }
|
|
|
|
|
|
- orderChangeDao.createOrderChangeDetail(changeDetailPo);
|
|
|
- orderChangeDao.createOrderChangeDetailHst(changeDetailPo);
|
|
|
- }
|
|
|
- // 2021.01.26 취소신청완료일때실행
|
|
|
- else if ("cnclReqComplete".equals(reqGbn)) {
|
|
|
- Order order = new Order();
|
|
|
- order.setOrdNo(mav.getInt("ordNo"));
|
|
|
- order.setOrdChgSq(mav.getInt("ordChgSq"));
|
|
|
- order.setChgStat(chgStat);
|
|
|
- order.setUpdNo(userNo);
|
|
|
- order.setDelYn("N");
|
|
|
-
|
|
|
- orderChangeDao.updateOrderChangeDtlCancel(order);
|
|
|
- orderChangeDao.createOrderChangeDetailHst(changeDetailPo);
|
|
|
- }
|
|
|
- // 2021.01.26 취소신청일때실행
|
|
|
- else {
|
|
|
- changeDetailPo.setChgStat(TscConstants.OrderChangeStat.CANCEL.value()); // 취소신청
|
|
|
- orderChangeDao.createOrderChangeDetail(changeDetailPo);
|
|
|
+ // 5.6 결제금액이 무료배송금액보다 작으면 배송비 신규 등록
|
|
|
+ if (obj.getAddDelvFee() > 0) {
|
|
|
+ Order delvFeeOrder = new Order();
|
|
|
+
|
|
|
+ delvFeeOrder.setPaySq(paymentOrder.getPaySq());
|
|
|
+ delvFeeOrder.setOrdNo(ordNo);
|
|
|
+ delvFeeOrder.setDelvFeeGb("G018_10");
|
|
|
+ delvFeeOrder.setDelvFeeCd(obj.getDelvFeeCd());
|
|
|
+ delvFeeOrder.setDelvFee(obj.getAddDelvFee());
|
|
|
+ delvFeeOrder.setRealDelvAmt(obj.getDelvFee());
|
|
|
+ delvFeeOrder.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
+ delvFeeOrder.setSupplyCompCd(obj.getSupplyCompCd());
|
|
|
+ delvFeeOrder.setRegNo(userNo);
|
|
|
+ delvFeeOrder.setUpdNo(userNo);
|
|
|
+
|
|
|
+ // 2021.01.26 취소완료, 취소신청완료일때실행
|
|
|
+ if ("cnclComplete".equals(reqGbn) || "cnclReqComplete".equals(reqGbn)) {
|
|
|
+ orderChangeDao.createDeliveryFee(delvFeeOrder);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ pgCancelAmt += spanRefundAmt;
|
|
|
}
|
|
|
-
|
|
|
- // 2021.01.26 취소완료, 취소신청완료 일때실행
|
|
|
- // 5.31 상품재고원복 (TB_SELL_QTY 등록(취소,반품))
|
|
|
- orderChange.setSellGb("11");
|
|
|
- if ("cnclComplete".equals(reqGbn)) {
|
|
|
- orderChangeDao.createSellQty(orderChange);
|
|
|
- } else if ("cnclReqComplete".equals(reqGbn)) {
|
|
|
- orderChange.setOrdNo(mav.getInt("ordNo"));
|
|
|
- orderChange.setOrdChgSq(mav.getInt("ordChgSq"));
|
|
|
- orderChangeDao.createSellQty(orderChange);
|
|
|
- }
|
|
|
-
|
|
|
- // 5.4 환불결제정보 등록 (업체별 & 배송정책별) 단위
|
|
|
- // 취소, 반품 사유에 따른 추가배송비, 반품배송비를 환불금액에서 추가, 제외 할 수 있다.
|
|
|
- //int spanRealCnclRtnAmt = obj.getCnclRtnAmt(); // 취소금액합계
|
|
|
- // 2021.04.12 취소,반품 환불금액 계산 칼럼 오류 수정 jsh77b
|
|
|
- int spanRealCnclRtnAmt = obj.getRealOrdAmt(); // 취소금액합계
|
|
|
- int sumDeliveryFee = obj.getDelvFee(); // 배송비합계
|
|
|
- int spanTotDeliveryFee = obj.getAddDelvFee(); // 추가배송비합계
|
|
|
- int spanTotRtnDelvFee = obj.getRtnDelvFee(); // 반품배송비합계
|
|
|
- int spanRefundAmt = 0;
|
|
|
-
|
|
|
- // 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
|
|
|
- if ("true".equals(isCustomer)) {
|
|
|
- spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee) - spanTotDeliveryFee - spanTotRtnDelvFee;
|
|
|
- }
|
|
|
- // 회사사유 : 환불금액계산 = (취소금액 + 배송비)
|
|
|
- else {
|
|
|
- spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee);
|
|
|
- }
|
|
|
-
|
|
|
- Order paymentOrder = new Order();
|
|
|
- paymentOrder.setOrdNo(ordNo);
|
|
|
- paymentOrder.setPayAmt(spanRefundAmt * -1);
|
|
|
- paymentOrder.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
- paymentOrder.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
- paymentOrder.setRegNo(userNo);
|
|
|
- paymentOrder.setUpdNo(userNo);
|
|
|
-
|
|
|
- // 2021.01.26 취소완료, 취소신청완료 일때실행
|
|
|
- if ("cnclComplete".equals(reqGbn) || "cnclReqComplete".equals(reqGbn)) {
|
|
|
- orderChangeDao.createPayment(paymentOrder);
|
|
|
- }
|
|
|
-
|
|
|
- // 5.5 환불금액 등록
|
|
|
- Order refundOrder = new Order();
|
|
|
- refundOrder.setOrdNo(ordNo);
|
|
|
- refundOrder.setPaySq(paymentOrder.getPaySq());
|
|
|
- refundOrder.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
- refundOrder.setRegNo(userNo);
|
|
|
-
|
|
|
- // 2021.01.25 TB_REFUND 정보 등록을 위해서 분리 작업
|
|
|
- refundOrder.setRefundAmt(spanRefundAmt);
|
|
|
- refundOrder.setRfCpn1Amt(obj.getCpn1DcAmt());
|
|
|
- refundOrder.setRfTmtb1Amt(obj.getTmtb1DcAmt());
|
|
|
- refundOrder.setRfTmtb2Amt(obj.getTmtb2DcAmt());
|
|
|
- refundOrder.setRfGoodsCpnAmt(obj.getGoodsCpnDcAmt());
|
|
|
- refundOrder.setRfCartCpnAmt(obj.getCartCpnDcAmt());
|
|
|
- refundOrder.setRfPntAmt(obj.getPntAmt());
|
|
|
- refundOrder.setRfPrePntAmt(obj.getPrePntDcAmt());
|
|
|
- refundOrder.setRfGfcdUseAmt(obj.getGfcdUseAmt());
|
|
|
-
|
|
|
- refundOrder.setRaNo(mav.get("accountNo").toString());
|
|
|
- refundOrder.setRaNm(mav.get("accountNm").toString());
|
|
|
- refundOrder.setRaBank(mav.get("bankCd").toString());
|
|
|
-
|
|
|
- // 2021.01.26 취소완료, 취소신청 일때실행
|
|
|
- if ("cnclComplete".equals(reqGbn) || "cnclReq".equals(reqGbn)) {
|
|
|
- orderChangeDao.createRefund(refundOrder);
|
|
|
- }
|
|
|
-
|
|
|
- // 5.6 결제금액이 무료배송금액보다 작으면 배송비 신규 등록
|
|
|
- if (obj.getAddDelvFee() > 0) {
|
|
|
- Order delvFeeOrder = new Order();
|
|
|
-
|
|
|
- delvFeeOrder.setPaySq(paymentOrder.getPaySq());
|
|
|
- delvFeeOrder.setOrdNo(ordNo);
|
|
|
- delvFeeOrder.setDelvFeeGb("G018_10");
|
|
|
- delvFeeOrder.setDelvFeeCd(obj.getDelvFeeCd());
|
|
|
- delvFeeOrder.setDelvFee(obj.getAddDelvFee());
|
|
|
- delvFeeOrder.setRealDelvAmt(obj.getDelvFee());
|
|
|
- delvFeeOrder.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
- delvFeeOrder.setSupplyCompCd(obj.getSupplyCompCd());
|
|
|
- delvFeeOrder.setRegNo(userNo);
|
|
|
- delvFeeOrder.setUpdNo(userNo);
|
|
|
-
|
|
|
- // 2021.01.26 취소완료, 취소신청완료일때실행
|
|
|
- if ("cnclComplete".equals(reqGbn) || "cnclReqComplete".equals(reqGbn)) {
|
|
|
- orderChangeDao.createDeliveryFee(delvFeeOrder);
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- pgCancelAmt += spanRefundAmt;
|
|
|
+ // 마지막 취소 시
|
|
|
+ if ("Y".equals(allLastCanYn)) {
|
|
|
+ // 장바구니, 배송비 쿠폰 원복처리
|
|
|
+ Order coupon = new Order();
|
|
|
+ coupon.setOrdNo(ordNo);
|
|
|
+ coupon.setUpdNo(userNo);
|
|
|
+ orderChangeDao.updateCartCpnRollback(coupon);
|
|
|
+ orderChangeDao.updateDeliveryCpnRollback(coupon);
|
|
|
+
|
|
|
+ // 12. 사은품 전체 취소 (전체취소시 적용) 추후 사은품 관련 취소 로직 개발 예정
|
|
|
+ Order freegiftOrder = new Order();
|
|
|
+ freegiftOrder.setOrdNo(ordNo);
|
|
|
+ freegiftOrder.setUpdNo(userNo);
|
|
|
+ orderChangeDao.updateOrdFreegiftDel(freegiftOrder);
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- // 마지막 취소 시
|
|
|
- if ("Y".equals(allLastCanYn)) {
|
|
|
- // 장바구니, 배송비 쿠폰 원복처리
|
|
|
- Order coupon = new Order();
|
|
|
- coupon.setOrdNo(ordNo);
|
|
|
- coupon.setUpdNo(userNo);
|
|
|
- orderChangeDao.updateCartCpnRollback(coupon);
|
|
|
- orderChangeDao.updateDeliveryCpnRollback(coupon);
|
|
|
|
|
|
- // 12. 사은품 전체 취소 (전체취소시 적용) 추후 사은품 관련 취소 로직 개발 예정
|
|
|
- Order freegiftOrder = new Order();
|
|
|
- freegiftOrder.setOrdNo(ordNo);
|
|
|
- freegiftOrder.setUpdNo(userNo);
|
|
|
- orderChangeDao.updateOrdFreegiftDel(freegiftOrder);
|
|
|
- }
|
|
|
|
|
|
+ // 상품권으로만 결제 시 PG점프
|
|
|
+ if (!TscConstants.PgGb.ISTYLE.value().equals(pgGb)) {
|
|
|
+ if (TscConstants.PgGb.KCP.value().equals(pgGb) || TscConstants.PgGb.PAYCO.value().equals(pgGb)) {
|
|
|
+ Payment kcp = new Payment();
|
|
|
+ kcp.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
+ kcp.setPayGb("O");
|
|
|
+ kcp.setModType("STSC");
|
|
|
+ kcp.setModDesc("가맹점 취소 - 전체 취소");
|
|
|
+ kcp.setIpAddress(ipAddress);
|
|
|
+ kcp.setPgTid(pgTid);
|
|
|
+ kcp.setPayAmt(pgCancelAmt);
|
|
|
+ kcp.setRegNo(userNo);
|
|
|
+ kcp.setUpdNo(userNo);
|
|
|
+ kcpService.kcpCancel(kcp);
|
|
|
+ } else if (TscConstants.PgGb.NAVER.value().equals(pgGb)) {
|
|
|
+ Payment naverPay = new Payment();
|
|
|
+ naverPay.setOrdNo(ordNo);
|
|
|
+ naverPay.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
+ naverPay.setPayGb("O");
|
|
|
+ naverPay.setPayMeans(payMeans);
|
|
|
+ naverPay.setChgReasonNm(chgReason);
|
|
|
+ naverPay.setPgTid(pgTid);
|
|
|
+ naverPay.setPayAmt(pgCancelAmt);
|
|
|
+ naverPay.setRegNo(userNo);
|
|
|
+ naverPay.setUpdNo(userNo);
|
|
|
|
|
|
+ naverPayService.cancelNaverPayment(naverPay);
|
|
|
+ } else if (TscConstants.PgGb.KAKAO.value().equals(pgGb)) {
|
|
|
+ Payment kakaoPay = new Payment();
|
|
|
+ kakaoPay.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
+ kakaoPay.setPayGb("O");
|
|
|
+ kakaoPay.setPgTid(pgTid);
|
|
|
+ kakaoPay.setPayAmt(pgCancelAmt);
|
|
|
|
|
|
- // 상품권으로만 결제 시 PG점프
|
|
|
- if (!TscConstants.PgGb.ISTYLE.value().equals(pgGb)) {
|
|
|
- if (TscConstants.PgGb.KCP.value().equals(pgGb) || TscConstants.PgGb.PAYCO.value().equals(pgGb)) {
|
|
|
- Payment kcp = new Payment();
|
|
|
- kcp.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
- kcp.setPayGb("O");
|
|
|
- kcp.setModType("STSC");
|
|
|
- kcp.setModDesc("가맹점 취소 - 전체 취소");
|
|
|
- kcp.setIpAddress(ipAddress);
|
|
|
- kcp.setPgTid(pgTid);
|
|
|
- kcp.setPayAmt(pgCancelAmt);
|
|
|
- kcp.setRegNo(userNo);
|
|
|
- kcp.setUpdNo(userNo);
|
|
|
- kcpService.kcpCancel(kcp);
|
|
|
- } else if (TscConstants.PgGb.NAVER.value().equals(pgGb)) {
|
|
|
- Payment naverPay = new Payment();
|
|
|
- naverPay.setOrdNo(ordNo);
|
|
|
- naverPay.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
- naverPay.setPayGb("O");
|
|
|
- naverPay.setPayMeans(payMeans);
|
|
|
- naverPay.setChgReasonNm(chgReason);
|
|
|
- naverPay.setPgTid(pgTid);
|
|
|
- naverPay.setPayAmt(pgCancelAmt);
|
|
|
- naverPay.setRegNo(userNo);
|
|
|
- naverPay.setUpdNo(userNo);
|
|
|
-
|
|
|
- naverPayService.cancelNaverPayment(naverPay);
|
|
|
- } else if (TscConstants.PgGb.KAKAO.value().equals(pgGb)) {
|
|
|
- Payment kakaoPay = new Payment();
|
|
|
- kakaoPay.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
- kakaoPay.setPayGb("O");
|
|
|
- kakaoPay.setPgTid(pgTid);
|
|
|
- kakaoPay.setPayAmt(pgCancelAmt);
|
|
|
-
|
|
|
- kakaoPayService.cancelKakaoPayment(kakaoPay);
|
|
|
- }
|
|
|
+ kakaoPayService.cancelKakaoPayment(kakaoPay);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // TODO
|
|
|
+ // 14. 취소 완료 알림톡 발송 에정
|
|
|
+
|
|
|
+ //int a = 100/0;
|
|
|
+
|
|
|
+
|
|
|
+ return mav;
|
|
|
}
|
|
|
-
|
|
|
- // TODO
|
|
|
- // 14. 취소 완료 알림톡 발송 에정
|
|
|
-
|
|
|
- //int a = 100/0;
|
|
|
-
|
|
|
-
|
|
|
- return mav;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 반품신청 (ADMIN, FRONT, NPAY, EXTMALL)
|
|
|
- * @param Order
|
|
|
- * @return Order
|
|
|
- * @author jsh77b
|
|
|
- * @since 2021. 01. 19
|
|
|
- */
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- @Transactional("shopTxnManager")
|
|
|
- public GagaMap rtnReq(GagaMap mav, int userNo) {
|
|
|
-
|
|
|
- // 1. 세션회원조회
|
|
|
- //userNo = userNo;
|
|
|
-
|
|
|
- // 2. 변경요정정보목록
|
|
|
- List<Order> cancelReqList = (List<Order>) mav.get("cnclRtnList"); // 변경요청 목록
|
|
|
- List<Order> cancelOrderRefundList = (List<Order>) mav.get("cancelOrderRefundList"); // 변경환불금액 목록 (주문상세단품 단위)
|
|
|
- List<Order> cancelDelvRefundList = (List<Order>) mav.get("cancelDelvRefundList"); // 변경환불배송금액 목록 (DELV_FEE_CD 단위)
|
|
|
-
|
|
|
- // 3. 변경신청정보
|
|
|
- int ordNo = Integer.parseInt(mav.getString("ordNo")); // 주문번호
|
|
|
- int ordChgSq = Integer.parseInt(mav.getString("ordChgSq")); // 주문변경번호
|
|
|
- String chgReason = mav.getString("chgReason"); // 변경사유
|
|
|
- String chgMemo = mav.getString("chgMemo"); // 변경메모
|
|
|
- String allCanYn = mav.getString("allCanYn"); // 무통장입금전 전체취소 여부
|
|
|
- String isCustomer = mav.getString("isCustomer"); // 귀책사유 (고객, 회사)
|
|
|
- String chgGb = TscConstants.OrderChangeGb.RETURN.value(); // 반품요청
|
|
|
- String wdGb = mav.getString("wdGb"); // 회수방법
|
|
|
- String wdInvoiceNo = mav.getString("wdInvoiceNo"); // 회수송장번호
|
|
|
-
|
|
|
- // 4. 주문상세단품정보등록,변경 (단품단위)
|
|
|
- List<Order> cancelOrderDetailList = new ArrayList<>();
|
|
|
-
|
|
|
- for (int i=0 ; i<cancelOrderRefundList.size() ; i++) {
|
|
|
- Order cancelOrderRefundPo = cancelOrderRefundList.get(i);
|
|
|
- cancelOrderRefundPo.setRegNo(userNo);
|
|
|
- cancelOrderRefundPo.setUpdNo(userNo);
|
|
|
|
|
|
- // 4.1 취소수량이 존재하면 주문상세단품정보 수정 및 주문상세단품이력정보 등록
|
|
|
- if (cancelOrderRefundPo.getOrdCanChgQty() > 0) {
|
|
|
- // 4.4 주문변경 상세 단위로 데이타 등록 (ORD_DTL_NO)
|
|
|
- Boolean temp = false;
|
|
|
- if (cancelOrderDetailList.size() > 0) {
|
|
|
- for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
|
|
|
- if (cancelOrderRefundPo.getOrdDtlNo() == cancelOrderDetailList.get(j).getOrdDtlNo()) {
|
|
|
- temp = true;
|
|
|
+ /**
|
|
|
+ * 반품신청 (ADMIN, FRONT, NPAY, EXTMALL)
|
|
|
+ * @param Order
|
|
|
+ * @return Order
|
|
|
+ * @author jsh77b
|
|
|
+ * @since 2021. 01. 19
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
+ public GagaMap rtnReq(GagaMap mav, int userNo) {
|
|
|
+
|
|
|
+ // 1. 세션회원조회
|
|
|
+ //userNo = userNo;
|
|
|
+
|
|
|
+ // 2. 변경요정정보목록
|
|
|
+ List<Order> cancelReqList = (List<Order>) mav.get("cnclRtnList"); // 변경요청 목록
|
|
|
+ List<Order> cancelOrderRefundList = (List<Order>) mav.get("cancelOrderRefundList"); // 변경환불금액 목록 (주문상세단품 단위)
|
|
|
+ List<Order> cancelDelvRefundList = (List<Order>) mav.get("cancelDelvRefundList"); // 변경환불배송금액 목록 (DELV_FEE_CD 단위)
|
|
|
+
|
|
|
+ // 3. 변경신청정보
|
|
|
+ int ordNo = Integer.parseInt(mav.getString("ordNo")); // 주문번호
|
|
|
+ int ordChgSq = Integer.parseInt(mav.getString("ordChgSq")); // 주문변경번호
|
|
|
+ String chgReason = mav.getString("chgReason"); // 변경사유
|
|
|
+ String chgMemo = mav.getString("chgMemo"); // 변경메모
|
|
|
+ String allCanYn = mav.getString("allCanYn"); // 무통장입금전 전체취소 여부
|
|
|
+ String isCustomer = mav.getString("isCustomer"); // 귀책사유 (고객, 회사)
|
|
|
+ String chgGb = TscConstants.OrderChangeGb.RETURN.value(); // 반품요청
|
|
|
+ String wdGb = mav.getString("wdGb"); // 회수방법
|
|
|
+ String wdInvoiceNo = mav.getString("wdInvoiceNo"); // 회수송장번호
|
|
|
+
|
|
|
+ // 4. 주문상세단품정보등록,변경 (단품단위)
|
|
|
+ List<Order> cancelOrderDetailList = new ArrayList<>();
|
|
|
+
|
|
|
+ for (int i=0 ; i<cancelOrderRefundList.size() ; i++) {
|
|
|
+ Order cancelOrderRefundPo = cancelOrderRefundList.get(i);
|
|
|
+ cancelOrderRefundPo.setRegNo(userNo);
|
|
|
+ cancelOrderRefundPo.setUpdNo(userNo);
|
|
|
+
|
|
|
+ // 4.1 취소수량이 존재하면 주문상세단품정보 수정 및 주문상세단품이력정보 등록
|
|
|
+ if (cancelOrderRefundPo.getOrdCanChgQty() > 0) {
|
|
|
+ // 4.4 주문변경 상세 단위로 데이타 등록 (ORD_DTL_NO)
|
|
|
+ Boolean temp = false;
|
|
|
+ if (cancelOrderDetailList.size() > 0) {
|
|
|
+ for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
|
|
|
+ if (cancelOrderRefundPo.getOrdDtlNo() == cancelOrderDetailList.get(j).getOrdDtlNo()) {
|
|
|
+ temp = true;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- // 4.5 주문상세단위 데이타 저장(주문상세 단위)
|
|
|
- if (!temp) {
|
|
|
- cancelOrderDetailList.add(cancelOrderRefundPo);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- // 2021.01.21 DELV_FEE 배송번호 단위로 TB_ORDER_CHANGE 생성
|
|
|
- // 4. 주문변경정보, 주문정보, 환불정보 (업체코드 & 배송정책코드)
|
|
|
- for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
|
|
|
-
|
|
|
- Order obj = cancelDelvRefundList.get(i);
|
|
|
-
|
|
|
- // 취소금액이 있을때 처리
|
|
|
- if (obj.getCnclRtnAmt() > 0) {
|
|
|
-
|
|
|
- // 5.1 주문변경 기본정보 등록
|
|
|
- OrderChange orderChange = new OrderChange();
|
|
|
- orderChange.setOrdNo(ordNo);
|
|
|
- orderChange.setChgGb(chgGb);
|
|
|
- orderChange.setChgReason(chgReason);
|
|
|
- orderChange.setChgMemo(chgMemo);
|
|
|
- orderChange.setAddPayCost(0);
|
|
|
- orderChange.setAddPayAmt(0);
|
|
|
- orderChange.setWdGb(wdGb);
|
|
|
- orderChange.setWdInvoiceNo(wdInvoiceNo);
|
|
|
- orderChange.setRegNo(userNo);
|
|
|
- orderChange.setUpdNo(userNo);
|
|
|
-
|
|
|
- // 5.2 주문변경 추가정보 등록
|
|
|
- String chgerNm = mav.getString("chgerNm"); // 변경자
|
|
|
- String chgerPhnno = mav.getString("chgerPhnno"); // 변경핸드폰번호
|
|
|
- String chgerTelno = mav.getString("chgerTelno"); // 변경전화번호
|
|
|
- String chgerEmail = mav.getString("chgerEmail"); // 변경이메일
|
|
|
- String chgerZipcode = mav.getString("chgerZipcode"); // 변경우편번호
|
|
|
- String chgerBaseAddr = mav.getString("chgerBaseAddr"); // 변경기본주소
|
|
|
- String chgerDtlAddr = mav.getString("chgerDtlAddr"); // 변경상세주소
|
|
|
- String chgerRtnMemo = mav.getString("chgerRtnMemo"); // 반품메모
|
|
|
-
|
|
|
- orderChange.setChgerNm(chgerNm);
|
|
|
- orderChange.setChgerPhnno(chgerPhnno);
|
|
|
- orderChange.setChgerTelno(chgerTelno);
|
|
|
- orderChange.setChgerEmail(chgerEmail);
|
|
|
- orderChange.setChgerRtnMemo(chgerRtnMemo);
|
|
|
- orderChange.setChgerZipcode(chgerZipcode);
|
|
|
- orderChange.setChgerBaseAddr(chgerBaseAddr);
|
|
|
- orderChange.setChgerDtlAddr(chgerDtlAddr);
|
|
|
-
|
|
|
- orderChangeDao.createOrderChange(orderChange);
|
|
|
-
|
|
|
- // 5.3 주문상세단위 취소정보
|
|
|
- for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
|
|
|
- Order vo = cancelOrderRefundList.get(j);
|
|
|
- vo.setRegNo(userNo);
|
|
|
- vo.setUpdNo(userNo);
|
|
|
- vo.setOrdDtlStat(TscConstants.OrderChangeStat.RETURN.value()); // 반품신청
|
|
|
-
|
|
|
- // 5.3.0 DEVL_FEE_CD 단위로 주문상세 정보 처리
|
|
|
- if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd())) {
|
|
|
-
|
|
|
- // 5.3.1 주문변경상세정보 이력등록
|
|
|
- orderChangeDao.createOrderDetailHstCnclRtn(vo);
|
|
|
-
|
|
|
- // * 주문상세단위가 아닌 주문상세단품단위로 데이타가 처리되고 있었음 주문상세단위로 수정
|
|
|
- // 5.3 주문변경상세정보 등록
|
|
|
- OrderChange changeDetailPo = new OrderChange();
|
|
|
- changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
- changeDetailPo.setOrdDtlNo(vo.getOrdDtlNo());
|
|
|
- changeDetailPo.setChgQty(vo.getOrdCanChgQty());
|
|
|
- changeDetailPo.setChgStat(TscConstants.OrderChangeStat.RETURN.value()); // 반품신청
|
|
|
- changeDetailPo.setRegNo(userNo);
|
|
|
- changeDetailPo.setUpdNo(userNo);
|
|
|
-
|
|
|
- orderChangeDao.createOrderChangeDetail(changeDetailPo);
|
|
|
+ // 4.5 주문상세단위 데이타 저장(주문상세 단위)
|
|
|
+ if (!temp) {
|
|
|
+ cancelOrderDetailList.add(cancelOrderRefundPo);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- // 5.4 환불결제정보 등록 (업체별 & 배송정책별) 단위
|
|
|
- // 취소, 반품 사유에 따른 추가배송비, 반품배송비를 환불금액에서 추가, 제외 할 수 있다.
|
|
|
- int spanRealCnclRtnAmt = obj.getCnclRtnAmt(); // 취소금액합계
|
|
|
- int sumDeliveryFee = obj.getDelvFee(); // 배송비합계
|
|
|
- int spanTotDeliveryFee = obj.getAddDelvFee(); // 추가배송비합계
|
|
|
- int spanTotRtnDelvFee = obj.getRtnDelvFee(); // 반품배송비합계
|
|
|
- int spanRefundAmt = 0;
|
|
|
-
|
|
|
- // 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
|
|
|
- if ("true".equals(isCustomer)) {
|
|
|
- spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee) - spanTotDeliveryFee - spanTotRtnDelvFee;
|
|
|
- }
|
|
|
- // 회사사유 : 환불금액계산 = (취소금액 + 배송비)
|
|
|
- else {
|
|
|
- spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee);
|
|
|
- }
|
|
|
-
|
|
|
- // 5.4 환불금액 등록
|
|
|
- Order refundOrder = new Order();
|
|
|
- refundOrder.setOrdNo(ordNo);
|
|
|
- refundOrder.setPaySq(0);
|
|
|
- refundOrder.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
- refundOrder.setRegNo(userNo);
|
|
|
-
|
|
|
- // 2021.01.25 TB_REFUND 정보 등록을 위해서 분리 작업
|
|
|
- refundOrder.setRefundAmt(spanRefundAmt);
|
|
|
- refundOrder.setRfCpn1Amt(obj.getCpn1DcAmt());
|
|
|
- refundOrder.setRfTmtb1Amt(obj.getTmtb1DcAmt());
|
|
|
- refundOrder.setRfTmtb2Amt(obj.getTmtb2DcAmt());
|
|
|
- refundOrder.setRfGoodsCpnAmt(obj.getGoodsCpnDcAmt());
|
|
|
- refundOrder.setRfCartCpnAmt(obj.getCartCpnDcAmt());
|
|
|
- refundOrder.setRfPntAmt(obj.getPntAmt());
|
|
|
- refundOrder.setRfPrePntAmt(obj.getPrePntDcAmt());
|
|
|
- refundOrder.setRfGfcdUseAmt(obj.getGfcdUseAmt());
|
|
|
-
|
|
|
- refundOrder.setRaNo(mav.get("accountNo").toString());
|
|
|
- refundOrder.setRaNm(mav.get("accountNm").toString());
|
|
|
- refundOrder.setRaBank(mav.get("bankCd").toString());
|
|
|
-
|
|
|
- orderChangeDao.createRefund(refundOrder);
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- return mav;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 반품신청철회 (admin)
|
|
|
- * @param Order
|
|
|
- * @return Order
|
|
|
- * @author jsh77b
|
|
|
- * @since 2021. 01. 19
|
|
|
- */
|
|
|
- @Transactional("shopTxnManager")
|
|
|
- public GagaMap rtnReqCancel(GagaMap mav, int userNo) {
|
|
|
-
|
|
|
- Order order = new Order();
|
|
|
- order.setOrdNo(mav.getInt("ordNo"));
|
|
|
- order.setOrdChgSq(mav.getInt("ordChgSq"));
|
|
|
- order.setChgStat(TscConstants.OrderChangeStat.RETURN_CANCEL.value());
|
|
|
- order.setRegNo(userNo);
|
|
|
- order.setUpdNo(userNo);
|
|
|
- order.setDelYn("Y");
|
|
|
-
|
|
|
- // 1. 주문변경정보 (TB_ORDER_CHANGE_DTL(수정))
|
|
|
- orderChangeDao.updateOrderChangeDtlCancel(order);
|
|
|
-
|
|
|
- // 2. 주문정보 이력 등록 (TB_ORDER_DETAIL_HST(등록))
|
|
|
- orderChangeDao.createOrderDtlHstCancel(order);
|
|
|
-
|
|
|
- // TODO
|
|
|
- // 3. PG 실행 (취소시 추가결제금액 취소처리)
|
|
|
-
|
|
|
- return mav;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 반품완료
|
|
|
- * @param Order
|
|
|
- * @return Order
|
|
|
- * @author jsh77b
|
|
|
- * @since 2021. 01. 19
|
|
|
- */
|
|
|
- public GagaMap rtnComplete(List<Order> cnclRtnList) {
|
|
|
- GagaMap mav = new GagaMap();
|
|
|
-
|
|
|
-
|
|
|
- return mav;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 교환신청
|
|
|
- *
|
|
|
- * @param Order
|
|
|
- * @return Order
|
|
|
- * @author jsh77b
|
|
|
- * @since 2021. 01. 19
|
|
|
- */
|
|
|
- @Transactional("shopTxnManager")
|
|
|
- public GagaMap exchReq(OrderChange excReq) {
|
|
|
- GagaMap result = new GagaMap();
|
|
|
- result.set("status", GagaResponseStatus.FAIL.getCode());
|
|
|
-
|
|
|
- // 교환 기본 정보
|
|
|
- int addPayCost = excReq.getAddPayCost(); // 추가배송비
|
|
|
- String wdGb = excReq.getWdGb(); // 회수구분
|
|
|
- String wdInvoiceNo = excReq.getWdInvoiceNo(); // 회수송장번호
|
|
|
- Integer regNo = excReq.getRegNo(); // 등록자번호
|
|
|
- Integer updNo = excReq.getUpdNo(); // 수정자번호
|
|
|
-
|
|
|
- // 교환신청 목록 설정
|
|
|
- Collection<Order> excReqList = excReq.getCancelReqList();
|
|
|
-
|
|
|
- // 추가배송비 관련 상태값 설정
|
|
|
- String orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE.value();
|
|
|
- String ordDtlStat = TscConstants.OrderDetailStat.REFUND_CONFIRM_WAIT.value();
|
|
|
-
|
|
|
- if (addPayCost > 0) { // 프론트 결제 여부 체크 필요
|
|
|
- orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE_WAIT.value();
|
|
|
- ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_WAIT.value();
|
|
|
- }
|
|
|
-
|
|
|
- // 1. 재고 체크 (세트아이템 포함)
|
|
|
-
|
|
|
-
|
|
|
- // 2. TB_DELIVERY_ADDR 등록
|
|
|
- Order deliveryAddr = new Order();
|
|
|
- deliveryAddr.setRecipNm(excReq.getRecipNm());
|
|
|
- deliveryAddr.setRecipPhnno(excReq.getRecipPhnno());
|
|
|
- deliveryAddr.setRecipTelno(excReq.getRecipTelno());
|
|
|
- deliveryAddr.setRecipZipcode(excReq.getRecipZipcode());
|
|
|
- deliveryAddr.setRecipBaseAddr(excReq.getRecipBaseAddr());
|
|
|
- deliveryAddr.setRecipDtlAddr(excReq.getRecipDtlAddr());
|
|
|
- deliveryAddr.setDelvMemo(excReq.getDelvMemo());
|
|
|
- deliveryAddr.setRegNo(regNo);
|
|
|
- deliveryAddr.setUpdNo(updNo);
|
|
|
-
|
|
|
- orderChangeDao.createDeliveryAddr(deliveryAddr);
|
|
|
-
|
|
|
- // 생성된 delvAddrSq 등록
|
|
|
- int delvAddrSq = deliveryAddr.getDelvAddrSq();
|
|
|
-
|
|
|
- // 교환대상 정보 등록
|
|
|
- int preOrdDtlNo = 0;
|
|
|
- String preDelvFeeCd = "";
|
|
|
- int ordChgSq = 0;
|
|
|
- int exchangeOrdDtlNo = 0;
|
|
|
-
|
|
|
- for (Order order : excReqList) {
|
|
|
- String delvFeeCd = order.getDelvFeeCd();
|
|
|
- int chgQty = order.getChgQty();
|
|
|
- String ordChgOpt = order.getOrdChgOpt();
|
|
|
- int ordDtlNo = order.getOrdDtlNo();
|
|
|
-
|
|
|
- if (!preDelvFeeCd.equals(delvFeeCd)) {
|
|
|
- // 3. TB_ORDER_CHANGE 등록
|
|
|
- OrderChange orderChange = new OrderChange();
|
|
|
- orderChange.setChgGb(TscConstants.OrderChangeGb.EXCHANGE.value());
|
|
|
- orderChange.setChgReason(excReq.getChgReason());
|
|
|
- orderChange.setChgMemo(excReq.getChgMemo());
|
|
|
- orderChange.setWdGb(wdGb);
|
|
|
- orderChange.setWdInvoiceNo(wdInvoiceNo);
|
|
|
- orderChange.setChgerNm(excReq.getChgerNm());
|
|
|
- orderChange.setChgerPhnno(excReq.getChgerPhnno());
|
|
|
- orderChange.setChgerTelno(excReq.getChgerTelno());
|
|
|
- orderChange.setChgerEmail(excReq.getChgerEmail());
|
|
|
- orderChange.setChgerZipcode(excReq.getChgerZipcode());
|
|
|
- orderChange.setChgerBaseAddr(excReq.getChgerBaseAddr());
|
|
|
- orderChange.setChgerDtlAddr(excReq.getChgerDtlAddr());
|
|
|
- orderChange.setChgerRtnMemo(excReq.getChgerRtnMemo());
|
|
|
- orderChange.setAddPayCost(addPayCost);
|
|
|
- orderChange.setAddPayAmt(excReq.getAddPayAmt());
|
|
|
- orderChange.setRegNo(regNo);
|
|
|
- orderChange.setUpdNo(updNo);
|
|
|
|
|
|
- orderChangeDao.createOrderChange(orderChange);
|
|
|
-
|
|
|
- preDelvFeeCd = delvFeeCd;
|
|
|
-
|
|
|
- // 생성된 ordChgSq 설정
|
|
|
- ordChgSq = orderChange.getOrdChgSq();
|
|
|
-
|
|
|
- log.info("############# ordChgSq >>> {} ##############", ordChgSq);
|
|
|
-
|
|
|
- // 4. TB_DELIVERY_FEE 추가배송비 등록
|
|
|
- int delvFee = 0;
|
|
|
-
|
|
|
- if ("true".equals(excReq.getIsCustomer())) {
|
|
|
- delvFee = "W".equals(wdGb) ? order.getExcDelvFee() : order.getRtnDelvFee();
|
|
|
- }
|
|
|
-
|
|
|
- Order deliveryFee = new Order();
|
|
|
- deliveryFee.setOrdNo(excReq.getOrdNo());
|
|
|
- deliveryFee.setDelvFeeGb(TscConstants.DeliveryFeeGb.EXCHANGE_DELIVERY_FEE.value());
|
|
|
- deliveryFee.setDelvFeeCd(delvFeeCd);
|
|
|
- deliveryFee.setDelvFee(delvFee);
|
|
|
- deliveryFee.setRealDelvAmt(delvFee);
|
|
|
- deliveryFee.setOrdChgSq(ordChgSq);
|
|
|
- deliveryFee.setSupplyCompCd(order.getSupplyCompCd());
|
|
|
- deliveryFee.setRegNo(regNo);
|
|
|
- deliveryFee.setUpdNo(updNo);
|
|
|
-
|
|
|
- orderChangeDao.createDeliveryFee(deliveryFee);
|
|
|
-
|
|
|
- // TODO
|
|
|
- // 추가배송비 결제 여부 확인 후 TB_PAYMENT 생성
|
|
|
- }
|
|
|
-
|
|
|
- if (preOrdDtlNo != ordDtlNo) {
|
|
|
- // 5. TB_ORDER_DETAIL 등록
|
|
|
- Order ordDtl = new Order();
|
|
|
- ordDtl.setOrdDtlNo(ordDtlNo);
|
|
|
- ordDtl.setOrdDtlStat(ordDtlStat);
|
|
|
- ordDtl.setOptCd2(ordChgOpt);
|
|
|
- ordDtl.setChgQty(chgQty);
|
|
|
- ordDtl.setDelvAddrSq(delvAddrSq);
|
|
|
- ordDtl.setRegNo(regNo);
|
|
|
- ordDtl.setUpdNo(updNo);
|
|
|
-
|
|
|
- orderChangeDao.createOrderDetailForExchange(ordDtl);
|
|
|
-
|
|
|
- // 생성된 ordDtlNo 설정
|
|
|
- exchangeOrdDtlNo = ordDtl.getExchangeOrdDtlNo();
|
|
|
-
|
|
|
- log.info("############# exchangeOrdDtlNo >>> {} ##############", exchangeOrdDtlNo);
|
|
|
-
|
|
|
- // 6. TB_ORDER_DETAIL_HST 등록
|
|
|
- orderChangeDao.createOrderDetailHstForExchange(ordDtl);
|
|
|
-
|
|
|
- // 7. TB_ORDER_CHANGE_DETAIL 등록
|
|
|
- OrderChange orderChangeDetail = new OrderChange();
|
|
|
- orderChangeDetail.setOrdChgSq(ordChgSq);
|
|
|
- orderChangeDetail.setOrdDtlNo(ordDtlNo);
|
|
|
- orderChangeDetail.setChgQty(chgQty);
|
|
|
- orderChangeDetail.setChgStat(orderChangeStat);
|
|
|
- orderChangeDetail.setChgOrdDtlNo(exchangeOrdDtlNo);
|
|
|
- orderChangeDetail.setRegNo(regNo);
|
|
|
- orderChangeDetail.setUpdNo(updNo);
|
|
|
-
|
|
|
- orderChangeDao.createOrderChangeDetail(orderChangeDetail);
|
|
|
-
|
|
|
- preOrdDtlNo = ordDtlNo;
|
|
|
- }
|
|
|
+ // 2021.01.21 DELV_FEE 배송번호 단위로 TB_ORDER_CHANGE 생성
|
|
|
+ // 4. 주문변경정보, 주문정보, 환불정보 (업체코드 & 배송정책코드)
|
|
|
+ for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
|
|
|
+
|
|
|
+ Order obj = cancelDelvRefundList.get(i);
|
|
|
+
|
|
|
+ // 취소금액이 있을때 처리
|
|
|
+ if (obj.getCnclRtnAmt() > 0) {
|
|
|
+
|
|
|
+ // 5.1 주문변경 기본정보 등록
|
|
|
+ OrderChange orderChange = new OrderChange();
|
|
|
+ orderChange.setOrdNo(ordNo);
|
|
|
+ orderChange.setChgGb(chgGb);
|
|
|
+ orderChange.setChgReason(chgReason);
|
|
|
+ orderChange.setChgMemo(chgMemo);
|
|
|
+ orderChange.setAddPayCost(0);
|
|
|
+ orderChange.setAddPayAmt(0);
|
|
|
+ orderChange.setWdGb(wdGb);
|
|
|
+ orderChange.setWdInvoiceNo(wdInvoiceNo);
|
|
|
+ orderChange.setRegNo(userNo);
|
|
|
+ orderChange.setUpdNo(userNo);
|
|
|
+
|
|
|
+ // 5.2 주문변경 추가정보 등록
|
|
|
+ String chgerNm = mav.getString("chgerNm"); // 변경자
|
|
|
+ String chgerPhnno = mav.getString("chgerPhnno"); // 변경핸드폰번호
|
|
|
+ String chgerTelno = mav.getString("chgerTelno"); // 변경전화번호
|
|
|
+ String chgerEmail = mav.getString("chgerEmail"); // 변경이메일
|
|
|
+ String chgerZipcode = mav.getString("chgerZipcode"); // 변경우편번호
|
|
|
+ String chgerBaseAddr = mav.getString("chgerBaseAddr"); // 변경기본주소
|
|
|
+ String chgerDtlAddr = mav.getString("chgerDtlAddr"); // 변경상세주소
|
|
|
+ String chgerRtnMemo = mav.getString("chgerRtnMemo"); // 반품메모
|
|
|
+
|
|
|
+ orderChange.setChgerNm(chgerNm);
|
|
|
+ orderChange.setChgerPhnno(chgerPhnno);
|
|
|
+ orderChange.setChgerTelno(chgerTelno);
|
|
|
+ orderChange.setChgerEmail(chgerEmail);
|
|
|
+ orderChange.setChgerRtnMemo(chgerRtnMemo);
|
|
|
+ orderChange.setChgerZipcode(chgerZipcode);
|
|
|
+ orderChange.setChgerBaseAddr(chgerBaseAddr);
|
|
|
+ orderChange.setChgerDtlAddr(chgerDtlAddr);
|
|
|
|
|
|
- // 8. TB_ORDER_DETAIL_ITEM 등록
|
|
|
- Order ordDtlItem = new Order();
|
|
|
- ordDtlItem.setOrdDtlItemSq(order.getOrdDtlItemSq());
|
|
|
- ordDtlItem.setOrdDtlNo(exchangeOrdDtlNo);
|
|
|
- ordDtlItem.setOrdDtlStat(ordDtlStat);
|
|
|
- ordDtlItem.setOrdChgOpt(ordChgOpt);
|
|
|
- ordDtlItem.setRegNo(regNo);
|
|
|
- ordDtlItem.setUpdNo(updNo);
|
|
|
+ orderChangeDao.createOrderChange(orderChange);
|
|
|
|
|
|
- orderChangeDao.createOrderDetailItemForExchange(ordDtlItem);
|
|
|
+ // 5.3 주문상세단위 취소정보
|
|
|
+ for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
|
|
|
+ Order vo = cancelOrderRefundList.get(j);
|
|
|
+ vo.setRegNo(userNo);
|
|
|
+ vo.setUpdNo(userNo);
|
|
|
+ vo.setOrdDtlStat(TscConstants.OrderChangeStat.RETURN.value()); // 반품신청
|
|
|
|
|
|
- // 9. TB_ORDER_DETAIL_ITEM_HST 등록
|
|
|
- orderChangeDao.createOrderDetailItemHstForExchange(ordDtlItem);
|
|
|
- }
|
|
|
+ // 5.3.0 DEVL_FEE_CD 단위로 주문상세 정보 처리
|
|
|
+ if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd())) {
|
|
|
|
|
|
- // 10. TB_SELL_QTY 등록
|
|
|
- OrderChange sellQty = new OrderChange();
|
|
|
- sellQty.setSellGb(TscConstants.SellGb.EXCHANGE.value());
|
|
|
- sellQty.setRegNo(regNo);
|
|
|
- sellQty.setOrdChgSq(ordChgSq);
|
|
|
-
|
|
|
- orderChangeDao.createSellQtyForExchange(sellQty);
|
|
|
-
|
|
|
- result.set("status", GagaResponseStatus.SUCCESS.getCode());
|
|
|
-
|
|
|
- return result;
|
|
|
- }
|
|
|
+ // 5.3.1 주문변경상세정보 이력등록
|
|
|
+ orderChangeDao.createOrderDetailHstCnclRtn(vo);
|
|
|
|
|
|
- /**
|
|
|
- * 교환 추가배송비 조회
|
|
|
- *
|
|
|
- * @param Collection<Order>
|
|
|
- * @return Collection<DeliveryFee>
|
|
|
- * @author card007
|
|
|
- * @since 2021. 01. 26
|
|
|
- */
|
|
|
- public GagaMap getAddDeliveryFeeListForExchange(OrderChange orderChange) {
|
|
|
- GagaMap result = new GagaMap();
|
|
|
- Collection<DeliveryFee> deliveryFeeList = new ArrayList<>();
|
|
|
- List<String> delvFeeCdList = new ArrayList<>();
|
|
|
- int totalDelvFee = 0;
|
|
|
-
|
|
|
- String wdGb = orderChange.getWdGb();
|
|
|
- Collection<Order> excReqList = orderChange.getCancelReqList();
|
|
|
-
|
|
|
- for (Order order : excReqList) {
|
|
|
- String delvFeeCd = order.getDelvFeeCd();
|
|
|
-
|
|
|
- if (!delvFeeCdList.contains(delvFeeCd)) {
|
|
|
- int delvFee = 0;
|
|
|
-
|
|
|
- if ("true".equals(orderChange.getIsCustomer())) {
|
|
|
- delvFee = "W".equals(wdGb) ? order.getExcDelvFee() : order.getRtnDelvFee();
|
|
|
+ // * 주문상세단위가 아닌 주문상세단품단위로 데이타가 처리되고 있었음 주문상세단위로 수정
|
|
|
+ // 5.3 주문변경상세정보 등록
|
|
|
+ OrderChange changeDetailPo = new OrderChange();
|
|
|
+ changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
+ changeDetailPo.setOrdDtlNo(vo.getOrdDtlNo());
|
|
|
+ changeDetailPo.setChgQty(vo.getOrdCanChgQty());
|
|
|
+ changeDetailPo.setChgStat(TscConstants.OrderChangeStat.RETURN.value()); // 반품신청
|
|
|
+ changeDetailPo.setRegNo(userNo);
|
|
|
+ changeDetailPo.setUpdNo(userNo);
|
|
|
+
|
|
|
+ orderChangeDao.createOrderChangeDetail(changeDetailPo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 5.4 환불결제정보 등록 (업체별 & 배송정책별) 단위
|
|
|
+ // 취소, 반품 사유에 따른 추가배송비, 반품배송비를 환불금액에서 추가, 제외 할 수 있다.
|
|
|
+ int spanRealCnclRtnAmt = obj.getCnclRtnAmt(); // 취소금액합계
|
|
|
+ int sumDeliveryFee = obj.getDelvFee(); // 배송비합계
|
|
|
+ int spanTotDeliveryFee = obj.getAddDelvFee(); // 추가배송비합계
|
|
|
+ int spanTotRtnDelvFee = obj.getRtnDelvFee(); // 반품배송비합계
|
|
|
+ int spanRefundAmt = 0;
|
|
|
+
|
|
|
+ // 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
|
|
|
+ if ("true".equals(isCustomer)) {
|
|
|
+ spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee) - spanTotDeliveryFee - spanTotRtnDelvFee;
|
|
|
+ }
|
|
|
+ // 회사사유 : 환불금액계산 = (취소금액 + 배송비)
|
|
|
+ else {
|
|
|
+ spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 5.4 환불금액 등록
|
|
|
+ Order refundOrder = new Order();
|
|
|
+ refundOrder.setOrdNo(ordNo);
|
|
|
+ refundOrder.setPaySq(0);
|
|
|
+ refundOrder.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
+ refundOrder.setRegNo(userNo);
|
|
|
+
|
|
|
+ // 2021.01.25 TB_REFUND 정보 등록을 위해서 분리 작업
|
|
|
+ refundOrder.setRefundAmt(spanRefundAmt);
|
|
|
+ refundOrder.setRfCpn1Amt(obj.getCpn1DcAmt());
|
|
|
+ refundOrder.setRfTmtb1Amt(obj.getTmtb1DcAmt());
|
|
|
+ refundOrder.setRfTmtb2Amt(obj.getTmtb2DcAmt());
|
|
|
+ refundOrder.setRfGoodsCpnAmt(obj.getGoodsCpnDcAmt());
|
|
|
+ refundOrder.setRfCartCpnAmt(obj.getCartCpnDcAmt());
|
|
|
+ refundOrder.setRfPntAmt(obj.getPntAmt());
|
|
|
+ refundOrder.setRfPrePntAmt(obj.getPrePntDcAmt());
|
|
|
+ refundOrder.setRfGfcdUseAmt(obj.getGfcdUseAmt());
|
|
|
+
|
|
|
+ refundOrder.setRaNo(mav.get("accountNo").toString());
|
|
|
+ refundOrder.setRaNm(mav.get("accountNm").toString());
|
|
|
+ refundOrder.setRaBank(mav.get("bankCd").toString());
|
|
|
+
|
|
|
+ orderChangeDao.createRefund(refundOrder);
|
|
|
}
|
|
|
-
|
|
|
- DeliveryFee deliveryFee = new DeliveryFee();
|
|
|
- deliveryFee.setOrdNo(orderChange.getOrdNo());
|
|
|
- deliveryFee.setDelvFeeGb(TscConstants.DeliveryFeeGb.EXCHANGE_DELIVERY_FEE.value());
|
|
|
- deliveryFee.setDelvFeeCd(delvFeeCd);
|
|
|
- deliveryFee.setDelvFee(delvFee);
|
|
|
- deliveryFee.setRealDelvAmt(delvFee);
|
|
|
- deliveryFee.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
- deliveryFee.setSupplyCompCd(order.getSupplyCompCd());
|
|
|
-
|
|
|
- deliveryFeeList.add(deliveryFee);
|
|
|
- totalDelvFee += delvFee;
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- result.set("totalDelvFee", totalDelvFee);
|
|
|
- result.set("deliveryFeeList", deliveryFeeList);
|
|
|
-
|
|
|
- return result;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 교환철회
|
|
|
- *
|
|
|
- * @param OrderChange
|
|
|
- * @return GagaMap
|
|
|
- * @author card007
|
|
|
- * @since 2021. 02. 01
|
|
|
- */
|
|
|
- @Transactional("shopTxnManager")
|
|
|
- public GagaMap exchangeCancel(OrderChange orderChange) {
|
|
|
- GagaMap result = new GagaMap();
|
|
|
|
|
|
- int ordNo = orderChange.getOrdNo(); // 주문번호
|
|
|
- int ordChgSq = orderChange.getOrdChgSq(); // 주문변경번호
|
|
|
- int regNo = orderChange.getRegNo(); // 등록자번호
|
|
|
- int updNo = orderChange.getUpdNo(); // 수정자번호
|
|
|
+ return mav;
|
|
|
+ }
|
|
|
|
|
|
- // 추가배송비 조회
|
|
|
- Order payment = orderChangeDao.getAddDeliveryFeePayment(orderChange);
|
|
|
+ /**
|
|
|
+ * 반품신청철회 (admin)
|
|
|
+ * @param Order
|
|
|
+ * @return Order
|
|
|
+ * @author jsh77b
|
|
|
+ * @since 2021. 01. 19
|
|
|
+ */
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
+ public GagaMap rtnReqCancel(GagaMap mav, int userNo) {
|
|
|
+
|
|
|
+ Order order = new Order();
|
|
|
+ order.setOrdNo(mav.getInt("ordNo"));
|
|
|
+ order.setOrdChgSq(mav.getInt("ordChgSq"));
|
|
|
+ order.setChgStat(TscConstants.OrderChangeStat.RETURN_CANCEL.value());
|
|
|
+ order.setRegNo(userNo);
|
|
|
+ order.setUpdNo(userNo);
|
|
|
+ order.setDelYn("Y");
|
|
|
+
|
|
|
+ // 1. 주문변경정보 (TB_ORDER_CHANGE_DTL(수정))
|
|
|
+ orderChangeDao.updateOrderChangeDtlCancel(order);
|
|
|
+
|
|
|
+ // 2. 주문정보 이력 등록 (TB_ORDER_DETAIL_HST(등록))
|
|
|
+ orderChangeDao.createOrderDtlHstCancel(order);
|
|
|
|
|
|
- // 추가배송비 결제취소 처리
|
|
|
- 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취소처리
|
|
|
+ // 3. PG 실행 (취소시 추가결제금액 취소처리)
|
|
|
+
|
|
|
+ return mav;
|
|
|
}
|
|
|
|
|
|
- // 교환철회 처리
|
|
|
- Order exchangeCancel = new Order();
|
|
|
- exchangeCancel.setOrdNo(ordNo);
|
|
|
- exchangeCancel.setOrdChgSq(ordChgSq);
|
|
|
- exchangeCancel.setOrdDtlStat(TscConstants.OrderDetailStat.EXCHANGE_CANCEL.value());
|
|
|
- exchangeCancel.setChgStat(TscConstants.OrderChangeStat.EXCHANGE_CANCEL.value());
|
|
|
- exchangeCancel.setDelYn("Y");
|
|
|
- exchangeCancel.setRegNo(regNo);
|
|
|
- exchangeCancel.setUpdNo(updNo);
|
|
|
+ /**
|
|
|
+ * 반품완료
|
|
|
+ * @param Order
|
|
|
+ * @return Order
|
|
|
+ * @author jsh77b
|
|
|
+ * @since 2021. 01. 19
|
|
|
+ */
|
|
|
+ public GagaMap rtnComplete(List<Order> cnclRtnList) {
|
|
|
+ GagaMap mav = new GagaMap();
|
|
|
|
|
|
- // TB_ORDER_DETAIL 상태값 변경
|
|
|
- orderChangeDao.updateOrderDetailForExchangeCancel(exchangeCancel);
|
|
|
|
|
|
- // TB_ORDER_DETAIL_HST 생성
|
|
|
- orderChangeDao.createOrderDtlHstCancel(exchangeCancel);
|
|
|
+ return mav;
|
|
|
+ }
|
|
|
|
|
|
- // TB_ORDER_DETAIL_ITEM 상태값 변경
|
|
|
- orderChangeDao.updateOrderDetailItemForExchangeCancel(exchangeCancel);
|
|
|
+ /**
|
|
|
+ * 교환신청
|
|
|
+ *
|
|
|
+ * @param Order
|
|
|
+ * @return Order
|
|
|
+ * @author jsh77b
|
|
|
+ * @since 2021. 01. 19
|
|
|
+ */
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
+ public GagaMap exchReq(OrderChange excReq) {
|
|
|
+ GagaMap result = new GagaMap();
|
|
|
+ result.set("status", GagaResponseStatus.FAIL.getCode());
|
|
|
+
|
|
|
+ // 교환 기본 정보
|
|
|
+ int addPayCost = excReq.getAddPayCost(); // 추가배송비
|
|
|
+ String wdGb = excReq.getWdGb(); // 회수구분
|
|
|
+ String wdInvoiceNo = excReq.getWdInvoiceNo(); // 회수송장번호
|
|
|
+ Integer regNo = excReq.getRegNo(); // 등록자번호
|
|
|
+ Integer updNo = excReq.getUpdNo(); // 수정자번호
|
|
|
+
|
|
|
+ // 교환신청 목록 설정
|
|
|
+ Collection<Order> excReqList = excReq.getCancelReqList();
|
|
|
+
|
|
|
+ // 추가배송비 관련 상태값 설정
|
|
|
+ String orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE.value();
|
|
|
+ String ordDtlStat = TscConstants.OrderDetailStat.REFUND_CONFIRM_WAIT.value();
|
|
|
+
|
|
|
+ if (addPayCost > 0) { // 프론트 결제 여부 체크 필요
|
|
|
+ orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE_WAIT.value();
|
|
|
+ ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_WAIT.value();
|
|
|
+ }
|
|
|
|
|
|
- // TB_ORDER_DETAIL_ITEM_HST 생성
|
|
|
- orderChangeDao.createOrderDetailItemHstForExchangeCancel(exchangeCancel);
|
|
|
+ // 1. 재고 체크 (세트아이템 포함)
|
|
|
+
|
|
|
+
|
|
|
+ // 2. TB_DELIVERY_ADDR 등록
|
|
|
+ Order deliveryAddr = new Order();
|
|
|
+ deliveryAddr.setRecipNm(excReq.getRecipNm());
|
|
|
+ deliveryAddr.setRecipPhnno(excReq.getRecipPhnno());
|
|
|
+ deliveryAddr.setRecipTelno(excReq.getRecipTelno());
|
|
|
+ deliveryAddr.setRecipZipcode(excReq.getRecipZipcode());
|
|
|
+ deliveryAddr.setRecipBaseAddr(excReq.getRecipBaseAddr());
|
|
|
+ deliveryAddr.setRecipDtlAddr(excReq.getRecipDtlAddr());
|
|
|
+ deliveryAddr.setDelvMemo(excReq.getDelvMemo());
|
|
|
+ deliveryAddr.setRegNo(regNo);
|
|
|
+ deliveryAddr.setUpdNo(updNo);
|
|
|
+
|
|
|
+ orderChangeDao.createDeliveryAddr(deliveryAddr);
|
|
|
+
|
|
|
+ // 생성된 delvAddrSq 등록
|
|
|
+ int delvAddrSq = deliveryAddr.getDelvAddrSq();
|
|
|
+
|
|
|
+ // 교환대상 정보 등록
|
|
|
+ int preOrdDtlNo = 0;
|
|
|
+ String preDelvFeeCd = "";
|
|
|
+ int ordChgSq = 0;
|
|
|
+ int exchangeOrdDtlNo = 0;
|
|
|
+
|
|
|
+ for (Order order : excReqList) {
|
|
|
+ String delvFeeCd = order.getDelvFeeCd();
|
|
|
+ int chgQty = order.getChgQty();
|
|
|
+ String ordChgOpt = order.getOrdChgOpt();
|
|
|
+ int ordDtlNo = order.getOrdDtlNo();
|
|
|
+
|
|
|
+ if (!preDelvFeeCd.equals(delvFeeCd)) {
|
|
|
+ // 3. TB_ORDER_CHANGE 등록
|
|
|
+ OrderChange orderChange = new OrderChange();
|
|
|
+ orderChange.setChgGb(TscConstants.OrderChangeGb.EXCHANGE.value());
|
|
|
+ orderChange.setChgReason(excReq.getChgReason());
|
|
|
+ orderChange.setChgMemo(excReq.getChgMemo());
|
|
|
+ orderChange.setWdGb(wdGb);
|
|
|
+ orderChange.setWdInvoiceNo(wdInvoiceNo);
|
|
|
+ orderChange.setChgerNm(excReq.getChgerNm());
|
|
|
+ orderChange.setChgerPhnno(excReq.getChgerPhnno());
|
|
|
+ orderChange.setChgerTelno(excReq.getChgerTelno());
|
|
|
+ orderChange.setChgerEmail(excReq.getChgerEmail());
|
|
|
+ orderChange.setChgerZipcode(excReq.getChgerZipcode());
|
|
|
+ orderChange.setChgerBaseAddr(excReq.getChgerBaseAddr());
|
|
|
+ orderChange.setChgerDtlAddr(excReq.getChgerDtlAddr());
|
|
|
+ orderChange.setChgerRtnMemo(excReq.getChgerRtnMemo());
|
|
|
+ orderChange.setAddPayCost(addPayCost);
|
|
|
+ orderChange.setAddPayAmt(excReq.getAddPayAmt());
|
|
|
+ orderChange.setRegNo(regNo);
|
|
|
+ orderChange.setUpdNo(updNo);
|
|
|
|
|
|
- // TB_ORDER_CHANGE_DETAIL 상태값 변경 및 DEL_YN Y로 업데이트
|
|
|
- orderChangeDao.updateOrderChangeDtlCancel(exchangeCancel);
|
|
|
+ orderChangeDao.createOrderChange(orderChange);
|
|
|
|
|
|
- // 결과값 처리
|
|
|
- result.set("status", GagaResponseStatus.SUCCESS.getCode());
|
|
|
+ preDelvFeeCd = delvFeeCd;
|
|
|
|
|
|
- return result;
|
|
|
- }
|
|
|
+ // 생성된 ordChgSq 설정
|
|
|
+ ordChgSq = orderChange.getOrdChgSq();
|
|
|
|
|
|
- /**
|
|
|
- * 교환회수
|
|
|
- * @param Order
|
|
|
- * @return Order
|
|
|
- * @author jsh77b
|
|
|
- * @since 2021. 01. 19
|
|
|
- */
|
|
|
- public GagaMap exchRtn(List<Order> cnclRtnList) {
|
|
|
- GagaMap mav = new GagaMap();
|
|
|
-
|
|
|
-
|
|
|
- return mav;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 교환발송완료
|
|
|
- * @param Order
|
|
|
- * @return Order
|
|
|
- * @author jsh77b
|
|
|
- * @since 2021. 01. 19
|
|
|
- */
|
|
|
- public GagaMap exchComplete(List<Order> cnclRtnList) {
|
|
|
- GagaMap mav = new GagaMap();
|
|
|
-
|
|
|
-
|
|
|
- return mav;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 취소신청 (admin, npay, extmall) (사용안함)
|
|
|
- * @param Order
|
|
|
- * @return Order
|
|
|
- * @author jsh77b
|
|
|
- * @since 2021. 01. 19
|
|
|
- */
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- @Transactional("shopTxnManager")
|
|
|
- public GagaMap cnclReq(GagaMap mav, int userNo) {
|
|
|
-
|
|
|
- // 1. 세션회원조회
|
|
|
- //userNo = userNo;
|
|
|
-
|
|
|
- // 2. 변경요정정보목록
|
|
|
- List<Order> cancelReqList = (List<Order>) mav.get("cnclRtnList"); // 변경요청 목록
|
|
|
- List<Order> cancelOrderRefundList = (List<Order>) mav.get("cancelOrderRefundList"); // 변경환불금액 목록 (주문상세단품 단위)
|
|
|
- List<Order> cancelDelvRefundList = (List<Order>) mav.get("cancelDelvRefundList"); // 변경환불배송금액 목록 (DELV_FEE_CD 단위)
|
|
|
-
|
|
|
- // 3. 변경신청정보
|
|
|
- int ordNo = Integer.parseInt(mav.getString("ordNo").toString()); // 주문번호
|
|
|
- String chgReason = mav.getString("chgReason").toString(); // 변경사유
|
|
|
- String chgMemo = mav.getString("chgMemo").toString(); // 변경메모
|
|
|
- String allCanYn = mav.getString("allCanYn").toString(); // 무통장입금전 전체취소 여부
|
|
|
- String isCustomer = mav.getString("isCustomer").toString(); // 귀책사유 (고객, 회사)
|
|
|
- String chgGb = TscConstants.OrderChangeGb.CANCEL.value(); // 취소요청
|
|
|
- String reqGbn = mav.get("reqGbn").toString(); // 신청구분
|
|
|
-
|
|
|
- // 4. 주문상세단품정보등록,변경 (단품단위)
|
|
|
- List<Order> cancelOrderDetailList = new ArrayList<Order>();
|
|
|
-
|
|
|
- for (int i=0 ; i<cancelOrderRefundList.size() ; i++) {
|
|
|
- Order cancelOrderRefundPo = cancelOrderRefundList.get(i);
|
|
|
- cancelOrderRefundPo.setRegNo(userNo);
|
|
|
- cancelOrderRefundPo.setUpdNo(userNo);
|
|
|
-
|
|
|
- // 4.1 취소수량이 존재하면 주문상세단품정보 수정 및 주문상세단품이력정보 등록
|
|
|
- if (cancelOrderRefundPo.getOrdCanChgQty() > 0) {
|
|
|
- // 4.4 주문변경 상세 단위로 데이타 등록 (ORD_DTL_NO)
|
|
|
- Boolean temp = false;
|
|
|
- if (cancelOrderDetailList.size() > 0) {
|
|
|
- for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
|
|
|
- if (cancelOrderRefundPo.getOrdDtlNo() == cancelOrderDetailList.get(j).getOrdDtlNo()) {
|
|
|
- temp = true;
|
|
|
- }
|
|
|
+ log.info("############# ordChgSq >>> {} ##############", ordChgSq);
|
|
|
+
|
|
|
+ // 4. TB_DELIVERY_FEE 추가배송비 등록
|
|
|
+ int delvFee = 0;
|
|
|
+
|
|
|
+ if ("true".equals(excReq.getIsCustomer())) {
|
|
|
+ delvFee = "W".equals(wdGb) ? order.getExcDelvFee() : order.getRtnDelvFee();
|
|
|
}
|
|
|
+
|
|
|
+ Order deliveryFee = new Order();
|
|
|
+ deliveryFee.setOrdNo(excReq.getOrdNo());
|
|
|
+ deliveryFee.setDelvFeeGb(TscConstants.DeliveryFeeGb.EXCHANGE_DELIVERY_FEE.value());
|
|
|
+ deliveryFee.setDelvFeeCd(delvFeeCd);
|
|
|
+ deliveryFee.setDelvFee(delvFee);
|
|
|
+ deliveryFee.setRealDelvAmt(delvFee);
|
|
|
+ deliveryFee.setOrdChgSq(ordChgSq);
|
|
|
+ deliveryFee.setSupplyCompCd(order.getSupplyCompCd());
|
|
|
+ deliveryFee.setRegNo(regNo);
|
|
|
+ deliveryFee.setUpdNo(updNo);
|
|
|
+
|
|
|
+ orderChangeDao.createDeliveryFee(deliveryFee);
|
|
|
+
|
|
|
+ // TODO
|
|
|
+ // 추가배송비 결제 여부 확인 후 TB_PAYMENT 생성
|
|
|
}
|
|
|
-
|
|
|
- // 4.5 주문상세단위 데이타 저장(주문상세 단위)
|
|
|
- if (!temp) {
|
|
|
- cancelOrderDetailList.add(cancelOrderRefundPo);
|
|
|
+
|
|
|
+ if (preOrdDtlNo != ordDtlNo) {
|
|
|
+ // 5. TB_ORDER_DETAIL 등록
|
|
|
+ Order ordDtl = new Order();
|
|
|
+ ordDtl.setOrdDtlNo(ordDtlNo);
|
|
|
+ ordDtl.setOrdDtlStat(ordDtlStat);
|
|
|
+ ordDtl.setOptCd2(ordChgOpt);
|
|
|
+ ordDtl.setChgQty(chgQty);
|
|
|
+ ordDtl.setDelvAddrSq(delvAddrSq);
|
|
|
+ ordDtl.setRegNo(regNo);
|
|
|
+ ordDtl.setUpdNo(updNo);
|
|
|
+
|
|
|
+ orderChangeDao.createOrderDetailForExchange(ordDtl);
|
|
|
+
|
|
|
+ // 생성된 ordDtlNo 설정
|
|
|
+ exchangeOrdDtlNo = ordDtl.getExchangeOrdDtlNo();
|
|
|
+
|
|
|
+ log.info("############# exchangeOrdDtlNo >>> {} ##############", exchangeOrdDtlNo);
|
|
|
+
|
|
|
+ // 6. TB_ORDER_DETAIL_HST 등록
|
|
|
+ orderChangeDao.createOrderDetailHstForExchange(ordDtl);
|
|
|
+
|
|
|
+ // 7. TB_ORDER_CHANGE_DETAIL 등록
|
|
|
+ OrderChange orderChangeDetail = new OrderChange();
|
|
|
+ orderChangeDetail.setOrdChgSq(ordChgSq);
|
|
|
+ orderChangeDetail.setOrdDtlNo(ordDtlNo);
|
|
|
+ orderChangeDetail.setChgQty(chgQty);
|
|
|
+ orderChangeDetail.setChgStat(orderChangeStat);
|
|
|
+ orderChangeDetail.setChgOrdDtlNo(exchangeOrdDtlNo);
|
|
|
+ orderChangeDetail.setRegNo(regNo);
|
|
|
+ orderChangeDetail.setUpdNo(updNo);
|
|
|
+
|
|
|
+ orderChangeDao.createOrderChangeDetail(orderChangeDetail);
|
|
|
+
|
|
|
+ preOrdDtlNo = ordDtlNo;
|
|
|
}
|
|
|
+
|
|
|
+ // 8. TB_ORDER_DETAIL_ITEM 등록
|
|
|
+ Order ordDtlItem = new Order();
|
|
|
+ ordDtlItem.setOrdDtlItemSq(order.getOrdDtlItemSq());
|
|
|
+ ordDtlItem.setOrdDtlNo(exchangeOrdDtlNo);
|
|
|
+ ordDtlItem.setOrdDtlStat(ordDtlStat);
|
|
|
+ ordDtlItem.setOrdChgOpt(ordChgOpt);
|
|
|
+ ordDtlItem.setRegNo(regNo);
|
|
|
+ ordDtlItem.setUpdNo(updNo);
|
|
|
+
|
|
|
+ orderChangeDao.createOrderDetailItemForExchange(ordDtlItem);
|
|
|
+
|
|
|
+ // 9. TB_ORDER_DETAIL_ITEM_HST 등록
|
|
|
+ orderChangeDao.createOrderDetailItemHstForExchange(ordDtlItem);
|
|
|
}
|
|
|
+
|
|
|
+ // 10. TB_SELL_QTY 등록
|
|
|
+ OrderChange sellQty = new OrderChange();
|
|
|
+ sellQty.setSellGb(TscConstants.SellGb.EXCHANGE.value());
|
|
|
+ sellQty.setRegNo(regNo);
|
|
|
+ sellQty.setOrdChgSq(ordChgSq);
|
|
|
+
|
|
|
+ orderChangeDao.createSellQtyForExchange(sellQty);
|
|
|
+
|
|
|
+ result.set("status", GagaResponseStatus.SUCCESS.getCode());
|
|
|
+
|
|
|
+ return result;
|
|
|
}
|
|
|
-
|
|
|
- // 2021.01.21 DELV_FEE 배송번호 단위로 TB_ORDER_CHANGE 생성
|
|
|
- // 4. 주문변경정보, 주문정보, 환불정보 (업체코드 & 배송정책코드)
|
|
|
- for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
|
|
|
-
|
|
|
- Order obj = cancelDelvRefundList.get(i);
|
|
|
-
|
|
|
- // 취소금액이 있을때 처리
|
|
|
- if (obj.getCnclRtnAmt() > 0) {
|
|
|
-
|
|
|
- // 5.1 주문변경 기본정보 등록
|
|
|
- OrderChange orderChange = new OrderChange();
|
|
|
- orderChange.setOrdNo(ordNo);
|
|
|
- orderChange.setChgGb(chgGb);
|
|
|
- orderChange.setChgReason(chgReason);
|
|
|
- orderChange.setChgMemo(chgMemo);
|
|
|
- orderChange.setAddPayCost(0);
|
|
|
- orderChange.setAddPayAmt(0);
|
|
|
- orderChange.setRegNo(userNo);
|
|
|
- orderChange.setUpdNo(userNo);
|
|
|
-
|
|
|
- // 5.2 주문변경 추가정보 등록
|
|
|
- String chgerNm = mav.getString("chgerNm").toString(); // 변경자
|
|
|
- String chgerPhnno = mav.getString("chgerPhnno").toString(); // 변경핸드폰번호
|
|
|
- String chgerTelno = mav.getString("chgerTelno").toString(); // 변경전화번호
|
|
|
- String chgerEmail = mav.getString("chgerEmail").toString(); // 변경이메일
|
|
|
-
|
|
|
- orderChange.setChgerNm(chgerNm);
|
|
|
- orderChange.setChgerPhnno(chgerPhnno);
|
|
|
- orderChange.setChgerTelno(chgerTelno);
|
|
|
- orderChange.setChgerEmail(chgerEmail);
|
|
|
- orderChange.setChgerRtnMemo("");
|
|
|
-
|
|
|
- orderChangeDao.createOrderChange(orderChange);
|
|
|
-
|
|
|
- // 5.3 주문상세단위 취소정보
|
|
|
- for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
|
|
|
- Order vo = cancelOrderRefundList.get(j);
|
|
|
- vo.setRegNo(userNo);
|
|
|
- vo.setUpdNo(userNo);
|
|
|
- vo.setOrdDtlStat(TscConstants.OrderChangeStat.CANCEL.value()); // 취소신청
|
|
|
-
|
|
|
- // 5.3.0 DEVL_FEE_CD 단위로 주문상세 정보 처리
|
|
|
- if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd())) {
|
|
|
-
|
|
|
- // 5.3.1 주문변경상세정보 이력등록
|
|
|
- orderChangeDao.createOrderDetailHstCnclRtn(vo);
|
|
|
-
|
|
|
- // * 주문상세단위가 아닌 주문상세단품단위로 데이타가 처리되고 있었음 주문상세단위로 수정
|
|
|
- // 5.3 주문변경상세정보 등록
|
|
|
- OrderChange changeDetailPo = new OrderChange();
|
|
|
- changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
- changeDetailPo.setOrdDtlNo(vo.getOrdDtlNo());
|
|
|
- changeDetailPo.setChgQty(vo.getOrdCanChgQty());
|
|
|
- changeDetailPo.setChgStat(TscConstants.OrderChangeStat.CANCEL.value()); // 취소신청
|
|
|
- changeDetailPo.setRegNo(userNo);
|
|
|
- changeDetailPo.setUpdNo(userNo);
|
|
|
-
|
|
|
- orderChangeDao.createOrderChangeDetail(changeDetailPo);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 교환 추가배송비 조회
|
|
|
+ *
|
|
|
+ * @param Collection<Order>
|
|
|
+ * @return Collection<DeliveryFee>
|
|
|
+ * @author card007
|
|
|
+ * @since 2021. 01. 26
|
|
|
+ */
|
|
|
+ public GagaMap getAddDeliveryFeeListForExchange(OrderChange orderChange) {
|
|
|
+ GagaMap result = new GagaMap();
|
|
|
+ Collection<DeliveryFee> deliveryFeeList = new ArrayList<>();
|
|
|
+ List<String> delvFeeCdList = new ArrayList<>();
|
|
|
+ int totalDelvFee = 0;
|
|
|
+
|
|
|
+ String wdGb = orderChange.getWdGb();
|
|
|
+ Collection<Order> excReqList = orderChange.getCancelReqList();
|
|
|
+
|
|
|
+ for (Order order : excReqList) {
|
|
|
+ String delvFeeCd = order.getDelvFeeCd();
|
|
|
+
|
|
|
+ if (!delvFeeCdList.contains(delvFeeCd)) {
|
|
|
+ int delvFee = 0;
|
|
|
+
|
|
|
+ if ("true".equals(orderChange.getIsCustomer())) {
|
|
|
+ delvFee = "W".equals(wdGb) ? order.getExcDelvFee() : order.getRtnDelvFee();
|
|
|
}
|
|
|
+
|
|
|
+ DeliveryFee deliveryFee = new DeliveryFee();
|
|
|
+ deliveryFee.setOrdNo(orderChange.getOrdNo());
|
|
|
+ deliveryFee.setDelvFeeGb(TscConstants.DeliveryFeeGb.EXCHANGE_DELIVERY_FEE.value());
|
|
|
+ deliveryFee.setDelvFeeCd(delvFeeCd);
|
|
|
+ deliveryFee.setDelvFee(delvFee);
|
|
|
+ deliveryFee.setRealDelvAmt(delvFee);
|
|
|
+ deliveryFee.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
+ deliveryFee.setSupplyCompCd(order.getSupplyCompCd());
|
|
|
+
|
|
|
+ deliveryFeeList.add(deliveryFee);
|
|
|
+ totalDelvFee += delvFee;
|
|
|
}
|
|
|
- // 5.4 환불결제정보 등록 (업체별 & 배송정책별) 단위
|
|
|
- // 취소, 반품 사유에 따른 추가배송비, 반품배송비를 환불금액에서 추가, 제외 할 수 있다.
|
|
|
- int spanRealCnclRtnAmt = obj.getCnclRtnAmt(); // 취소금액합계
|
|
|
- int sumDeliveryFee = obj.getDelvFee(); // 배송비합계
|
|
|
- int spanTotDeliveryFee = obj.getAddDelvFee(); // 추가배송비합계
|
|
|
- int spanTotRtnDelvFee = obj.getRtnDelvFee(); // 반품배송비합계
|
|
|
- int spanRefundAmt = 0;
|
|
|
-
|
|
|
- // 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
|
|
|
- if ("true".equals(isCustomer)) {
|
|
|
- spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee) - spanTotDeliveryFee - spanTotRtnDelvFee;
|
|
|
- }
|
|
|
- // 회사사유 : 환불금액계산 = (취소금액 + 배송비)
|
|
|
- else {
|
|
|
- spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee);
|
|
|
- }
|
|
|
-
|
|
|
- // 5.4 환불금액 등록
|
|
|
- Order refundOrder = new Order();
|
|
|
- refundOrder.setOrdNo(ordNo);
|
|
|
- refundOrder.setPaySq(0);
|
|
|
- refundOrder.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
- refundOrder.setRegNo(userNo);
|
|
|
-
|
|
|
- // 2021.01.25 TB_REFUND 정보 등록을 위해서 분리 작업
|
|
|
- refundOrder.setRefundAmt(spanRefundAmt);
|
|
|
- refundOrder.setRfCpn1Amt(obj.getCpn1DcAmt());
|
|
|
- refundOrder.setRfTmtb1Amt(obj.getTmtb1DcAmt());
|
|
|
- refundOrder.setRfTmtb2Amt(obj.getTmtb2DcAmt());
|
|
|
- refundOrder.setRfGoodsCpnAmt(obj.getGoodsCpnDcAmt());
|
|
|
- refundOrder.setRfCartCpnAmt(obj.getCartCpnDcAmt());
|
|
|
- refundOrder.setRfPntAmt(obj.getPntAmt());
|
|
|
- refundOrder.setRfPrePntAmt(obj.getPrePntDcAmt());
|
|
|
- refundOrder.setRfGfcdUseAmt(obj.getGfcdUseAmt());
|
|
|
-
|
|
|
- refundOrder.setRaNo(mav.get("accountNo").toString());
|
|
|
- refundOrder.setRaNm(mav.get("accountNm").toString());
|
|
|
- refundOrder.setRaBank(mav.get("bankCd").toString());
|
|
|
-
|
|
|
- orderChangeDao.createRefund(refundOrder);
|
|
|
}
|
|
|
+
|
|
|
+ result.set("totalDelvFee", totalDelvFee);
|
|
|
+ result.set("deliveryFeeList", deliveryFeeList);
|
|
|
+
|
|
|
+ return result;
|
|
|
}
|
|
|
-
|
|
|
- return mav;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 취소신청승인 (admin) (사용안함)
|
|
|
- * @param Order
|
|
|
- * @return Order
|
|
|
- * @author jsh77b
|
|
|
- * @since 2021. 01. 19
|
|
|
- */
|
|
|
- @Transactional("shopTxnManager")
|
|
|
- public GagaMap cnclcnclComplete(GagaMap mav, int userNo) {
|
|
|
-
|
|
|
- // 1. 환불금액계산
|
|
|
-
|
|
|
- // 2. 사용포인트원복 (TB_CUST_POINT(수정), TB_CUST_POINT_HST(등록))
|
|
|
-
|
|
|
- // 3. 사용쿠폰원복 (TB_CUST_COUPON(수정))
|
|
|
-
|
|
|
- // 4. 상품권금액원복 (TB_CUST_GIFTCARD(수정), TB_CUST_GIFTCARD_HST(등록))
|
|
|
-
|
|
|
- // 5. 사은품취소 (TB_ORD_FREEGIFT(수정), TB_ORD_FREEGIFT(등록), TB_ORD_FREEGIFT_VAL(수정))
|
|
|
-
|
|
|
- // 6. 주문정보 수정 (TB_ORDER_DETAIL(수정), TB_ORDER_DETAIL_HST(등록), TB_ORDER_DETAIL_ITEM(수정), TB_ORDER_DETAIL_ITEM_HST(등록))
|
|
|
-
|
|
|
- // 7. 재고정보 (TB_SELL_QTY(등록))
|
|
|
-
|
|
|
- // 8. 주문변경정보 (TB_ORDER_CHANGE(수정), TB_ORDER_CHANGE_DTL(수정), TB_REFUND(수정))
|
|
|
-
|
|
|
- // PG 결제 금액 체크
|
|
|
- // 9. PG 실행
|
|
|
-
|
|
|
- // 10. 결제정보 (TB_PAYMENT(등록))
|
|
|
-
|
|
|
- // 11. 추가배송비발생 (TB_PAYMENT(등록))
|
|
|
-
|
|
|
- return mav;
|
|
|
- }
|
|
|
|
|
|
- /**
|
|
|
- * 주문 환불계좌
|
|
|
- *
|
|
|
- * @param order - 주문정보
|
|
|
- * @return Order
|
|
|
- * @author jsh77b
|
|
|
- * @since 2021. 01. 04.
|
|
|
- */
|
|
|
- public Collection<Order> getRefundAccount(Order order) {
|
|
|
- return orderChangeDao.getRefundAccount(order);
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 교환철회
|
|
|
+ *
|
|
|
+ * @param OrderChange
|
|
|
+ * @return GagaMap
|
|
|
+ * @author card007
|
|
|
+ * @since 2021. 02. 01
|
|
|
+ */
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
+ public GagaMap exchangeCancel(OrderChange orderChange) {
|
|
|
+ GagaMap result = new GagaMap();
|
|
|
+
|
|
|
+ int ordNo = orderChange.getOrdNo(); // 주문번호
|
|
|
+ int ordChgSq = orderChange.getOrdChgSq(); // 주문변경번호
|
|
|
+ int regNo = orderChange.getRegNo(); // 등록자번호
|
|
|
+ int updNo = orderChange.getUpdNo(); // 수정자번호
|
|
|
+
|
|
|
+ // 추가배송비 조회
|
|
|
+ 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);
|
|
|
|
|
|
- /**
|
|
|
- * 환불계좌 저장
|
|
|
- *
|
|
|
- * @param order - 주문정보
|
|
|
- * @return TsaOrder
|
|
|
- * @author jsh77b
|
|
|
- * @since 2021. 01. 05.
|
|
|
- */
|
|
|
- public int saveRefundAccount(Order order) {
|
|
|
+ // TODO
|
|
|
+ // PG취소처리
|
|
|
+ }
|
|
|
|
|
|
- // 환불계좌 유무 체크 후 등록
|
|
|
- if (orderChangeDao.getRefundAccountCheck(order) < 1) {
|
|
|
- orderChangeDao.saveRefundAccount(order);
|
|
|
- }
|
|
|
+ // 교환철회 처리
|
|
|
+ Order exchangeCancel = new Order();
|
|
|
+ exchangeCancel.setOrdNo(ordNo);
|
|
|
+ exchangeCancel.setOrdChgSq(ordChgSq);
|
|
|
+ exchangeCancel.setOrdDtlStat(TscConstants.OrderDetailStat.EXCHANGE_CANCEL.value());
|
|
|
+ exchangeCancel.setChgStat(TscConstants.OrderChangeStat.EXCHANGE_CANCEL.value());
|
|
|
+ exchangeCancel.setDelYn("Y");
|
|
|
+ exchangeCancel.setRegNo(regNo);
|
|
|
+ exchangeCancel.setUpdNo(updNo);
|
|
|
|
|
|
- return 1;
|
|
|
- }
|
|
|
+ // TB_ORDER_DETAIL 상태값 변경
|
|
|
+ orderChangeDao.updateOrderDetailForExchangeCancel(exchangeCancel);
|
|
|
|
|
|
- /**
|
|
|
- * 교환 정보 조회
|
|
|
- *
|
|
|
- * @param OrderChange - 주문 변경 정보
|
|
|
- * @return Collection<OrderChange>
|
|
|
- * @author card007
|
|
|
- * @since 2021. 02. 01
|
|
|
- */
|
|
|
- public Collection<Order> getExchangeInfo(Order order) {
|
|
|
- return orderChangeDao.getExchangeInfo(order);
|
|
|
- }
|
|
|
+ // TB_ORDER_DETAIL_HST 생성
|
|
|
+ orderChangeDao.createOrderDtlHstCancel(exchangeCancel);
|
|
|
|
|
|
- /**
|
|
|
- * 전체취소 요청
|
|
|
- *
|
|
|
- * @param GagaMap, int
|
|
|
- * @return GagaMap
|
|
|
- * @author card007
|
|
|
- * @since 2021. 04. 15
|
|
|
- */
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- @Transactional("shopTxnManager")
|
|
|
- public void allCnclComplete(OrderChange orderChange) {
|
|
|
- int ordNo = orderChange.getOrdNo();
|
|
|
- String chgReason = orderChange.getChgReason(); // G686_10:고객변심, G686_20:관리자취소, G686_30:품절취소
|
|
|
- String chgReasonNm = orderChange.getChgReasonNm(); // 고객변심, 관리자취소, 품절취소
|
|
|
- String chgGb = TscConstants.OrderChangeGb.CANCEL.value(); // 변경구분
|
|
|
- String accountNo = orderChange.getAccountNo(); // 환불계좌번호
|
|
|
- String accountNm = orderChange.getAccountNm(); // 환불계좌주명
|
|
|
- String bankCd = orderChange.getBankCd(); // 환불은행
|
|
|
- String ipAddress = orderChange.getIpAddress(); // IP주소
|
|
|
- int regNo = orderChange.getRegNo(); // 등록자번호
|
|
|
- int updNo = orderChange.getUpdNo(); // 등록자번호
|
|
|
-
|
|
|
- // 원주문 결제정보 조회
|
|
|
- Payment payment = new Payment();
|
|
|
- payment.setOrdNo(ordNo);
|
|
|
- payment = orderChangeDao.getPaymentInfo(payment);
|
|
|
-
|
|
|
- // 환불금액 설정
|
|
|
- int refundAmt = payment.getPayAmt();
|
|
|
-
|
|
|
- // 상태값 설정
|
|
|
- String ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_AFTER_CANCEL.value(); // 주문상세상태
|
|
|
- String chgStat = TscConstants.OrderChangeStat.PAYMENT_AFTER_CANCEL.value(); // 주문변경상태
|
|
|
- String modType = "STSC"; // KCP 전체취소
|
|
|
-
|
|
|
- // 무통장입금 결제 주문 전체취소 상태값 처리
|
|
|
- if (TscConstants.PgGb.KCP.value().equals(payment.getPgGb())
|
|
|
- && TscConstants.PayMeans.BANK_DEPOSIT.value().equals(payment.getPayMeans())
|
|
|
- && TscConstants.PaymentStat.PAYMENT_WAIT.value().equals(payment.getPayStat())) {
|
|
|
-
|
|
|
- ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_BEFORE_CANCEL.value();
|
|
|
- chgStat = TscConstants.OrderChangeStat.PAYMENT_BEFORE_CANCEL.value();
|
|
|
- } else if (TscConstants.PgGb.KCP.value().equals(payment.getPgGb())
|
|
|
- && TscConstants.PayMeans.BANK_DEPOSIT.value().equals(payment.getPayMeans())
|
|
|
- && TscConstants.PaymentStat.PAYMENT_COMPLETE.value().equals(payment.getPayStat())){
|
|
|
-
|
|
|
- modType = "STHD"; // KCP 무통장입금 전체취소
|
|
|
- }
|
|
|
+ // TB_ORDER_DETAIL_ITEM 상태값 변경
|
|
|
+ orderChangeDao.updateOrderDetailItemForExchangeCancel(exchangeCancel);
|
|
|
|
|
|
- // 1. 주문변경 및 변경상세 정보 설정
|
|
|
- OrderChange orderChangeDetail = new OrderChange();
|
|
|
- orderChangeDetail.setOrdNo(ordNo);
|
|
|
- orderChangeDetail.setChgGb(chgGb);
|
|
|
- orderChangeDetail.setChgReason(chgReason);
|
|
|
- orderChangeDetail.setChgStat(chgStat);
|
|
|
- orderChangeDetail.setRegNo(regNo);
|
|
|
- orderChangeDetail.setUpdNo(updNo);
|
|
|
-
|
|
|
- // 주문변경정보 등록
|
|
|
- orderChangeDao.createOrderChange(orderChangeDetail);
|
|
|
-
|
|
|
- // 주문변경상세 및 이력정보 등록
|
|
|
- orderChangeDao.createOrderChangeDetailForAllCancel(orderChangeDetail);
|
|
|
- orderChangeDao.createOrderChangeDetailHstForAllCancel(orderChangeDetail);
|
|
|
-
|
|
|
- // 2. 사용포인트원복
|
|
|
- Order vo = new Order();
|
|
|
- vo.setOrdNo(ordNo);
|
|
|
- vo.setOccurGb(TscConstants.PointOccurGb.USE_POINT.value());
|
|
|
- vo.setUpdNo(updNo);
|
|
|
-
|
|
|
- for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
- point.setOccurGb(TscConstants.PointOccurGb.USE_POINT_CANCEL.value());
|
|
|
- point.setOccurDtlDesc("포인트사용취소");
|
|
|
- point.setPayAmt(point.getPayAmt() * -1);
|
|
|
- point.setRegNo(regNo);
|
|
|
- point.setUpdNo(updNo);
|
|
|
-
|
|
|
- // 포인트 사용 취소 이력 생성 및 포인트 수정
|
|
|
- orderChangeDao.createCustPointHstRollback(point);
|
|
|
- orderChangeDao.updateCustPointRollback(point);
|
|
|
- }
|
|
|
+ // TB_ORDER_DETAIL_ITEM_HST 생성
|
|
|
+ orderChangeDao.createOrderDetailItemHstForExchangeCancel(exchangeCancel);
|
|
|
|
|
|
- // 3. 적립예정포인트 취소
|
|
|
- vo.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT.value());
|
|
|
+ // TB_ORDER_CHANGE_DETAIL 상태값 변경 및 DEL_YN Y로 업데이트
|
|
|
+ orderChangeDao.updateOrderChangeDtlCancel(exchangeCancel);
|
|
|
|
|
|
- for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
- point.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT_CANCEL.value());
|
|
|
- point.setOccurDtlDesc("예정포인트적립취소");
|
|
|
- point.setPayAmt(point.getPayAmt() * -1);
|
|
|
- point.setRegNo(regNo);
|
|
|
- point.setUpdNo(updNo);
|
|
|
+ // 결과값 처리
|
|
|
+ result.set("status", GagaResponseStatus.SUCCESS.getCode());
|
|
|
|
|
|
- // 적립예정포인트 취소 이력 생성
|
|
|
- orderChangeDao.createCustPointHstRollback(point);
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
- // 4. 사용상품권 원복
|
|
|
- for (Order giftCard : orderChangeDao.getCustGiftCardHst(vo)) {
|
|
|
- giftCard.setOccurGb(TscConstants.GiftCardOccurGb.USE_GIFTCARD_CANCEL.value());
|
|
|
- giftCard.setOccurDtlDesc("상품권사용취소");
|
|
|
- giftCard.setGfcdAmt(giftCard.getGfcdAmt() * -1);
|
|
|
- giftCard.setRegNo(regNo);
|
|
|
- giftCard.setUpdNo(updNo);
|
|
|
-
|
|
|
- // 포인트 사용 취소 이력 생성 및 포인트 수정
|
|
|
- orderChangeDao.createCustGiftCardHstRollback(giftCard);
|
|
|
- orderChangeDao.updateCustGiftCardRollback(giftCard);
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 교환회수
|
|
|
+ * @param Order
|
|
|
+ * @return Order
|
|
|
+ * @author jsh77b
|
|
|
+ * @since 2021. 01. 19
|
|
|
+ */
|
|
|
+ public GagaMap exchRtn(List<Order> cnclRtnList) {
|
|
|
+ GagaMap mav = new GagaMap();
|
|
|
|
|
|
- // 5. 상품재고원복
|
|
|
- OrderChange sellQty = new OrderChange();
|
|
|
- sellQty.setOrdChgSq(orderChangeDetail.getOrdChgSq());
|
|
|
- sellQty.setSellGb("11");
|
|
|
- sellQty.setRegNo(regNo);
|
|
|
- orderChangeDao.createSellQty(sellQty);
|
|
|
-
|
|
|
- // 6. 쿠폰 원복처리
|
|
|
- Order coupon = new Order();
|
|
|
- coupon.setOrdNo(ordNo);
|
|
|
- coupon.setUpdNo(updNo);
|
|
|
- orderChangeDao.updateGoodsCpnRollback(coupon);
|
|
|
- orderChangeDao.updateCartCpnRollback(coupon);
|
|
|
- orderChangeDao.updateDeliveryCpnRollback(coupon);
|
|
|
-
|
|
|
- // 7. 사은품 전체 취소 (전체취소시 적용) 추후 사은품 관련 취소 로직 개발 예정
|
|
|
- Order freegiftOrder = new Order();
|
|
|
- freegiftOrder.setOrdNo(ordNo);
|
|
|
- freegiftOrder.setUpdNo(updNo);
|
|
|
- orderChangeDao.updateOrdFreegiftDel(freegiftOrder);
|
|
|
-
|
|
|
- // 8. PG 연동
|
|
|
- Payment pg = new Payment();
|
|
|
- pg.setOrdNo(ordNo);
|
|
|
- pg.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
- pg.setPayGb("O");
|
|
|
- pg.setPgTid(payment.getPgTid());
|
|
|
- pg.setPayAmt(refundAmt);
|
|
|
- pg.setRegNo(regNo);
|
|
|
- pg.setUpdNo(updNo);
|
|
|
-
|
|
|
- // 상품권으로만 결제 시 PG점프
|
|
|
- String pgGb = payment.getPgGb();
|
|
|
- if (!TscConstants.PgGb.ISTYLE.value().equals(pgGb)) {
|
|
|
- if (TscConstants.PgGb.KCP.value().equals(pgGb) || TscConstants.PgGb.PAYCO.value().equals(pgGb)) {
|
|
|
- pg.setModType(modType);
|
|
|
- pg.setModDesc("가맹점 취소 - 전체 취소");
|
|
|
- pg.setIpAddress(ipAddress);
|
|
|
- pg.setAccountNm(accountNm);
|
|
|
- pg.setAccountNo(accountNo);
|
|
|
- pg.setBankCd(bankCd);
|
|
|
-
|
|
|
- kcpService.kcpCancel(pg);
|
|
|
- } else if (TscConstants.PgGb.NAVER.value().equals(pgGb)) {
|
|
|
- pg.setPayMeans(payment.getPayMeans());
|
|
|
- pg.setChgReasonNm(chgReasonNm);
|
|
|
-
|
|
|
- naverPayService.cancelNaverPayment(pg);
|
|
|
- } else if (TscConstants.PgGb.KAKAO.value().equals(pgGb)) {
|
|
|
- kakaoPayService.cancelKakaoPayment(pg);
|
|
|
- }
|
|
|
+
|
|
|
+ return mav;
|
|
|
}
|
|
|
|
|
|
- // 9. 환불금액 등록
|
|
|
- Order refundOrder = orderChangeDao.getRefundInfoForAllCancel(vo);
|
|
|
- refundOrder.setOrdNo(ordNo);
|
|
|
- refundOrder.setPaySq(pg.getPaySq());
|
|
|
- refundOrder.setOrdChgSq(orderChangeDetail.getOrdChgSq());
|
|
|
- refundOrder.setRefundAmt(refundAmt);
|
|
|
- refundOrder.setRfRealCnclAmt(refundOrder.getRealOrdAmt() - refundOrder.getRfDeliveryFee());
|
|
|
- refundOrder.setRaNo(accountNo);
|
|
|
- refundOrder.setRaNm(accountNm);
|
|
|
- refundOrder.setRaBank(bankCd);
|
|
|
- refundOrder.setRegNo(regNo);
|
|
|
-
|
|
|
- orderChangeDao.createRefund(refundOrder);
|
|
|
-
|
|
|
- // 10. 주문상세 및 주문상세단품 정보 설정
|
|
|
- OrderChange orderDetail = new OrderChange();
|
|
|
- orderDetail.setOrdNo(ordNo);
|
|
|
- orderDetail.setOrdDtlStat(ordDtlStat);
|
|
|
- orderDetail.setRegNo(regNo);
|
|
|
- orderDetail.setUpdNo(updNo);
|
|
|
-
|
|
|
- // 주문상세정보 수정 및 이력 등록
|
|
|
- orderChangeDao.updateOrderDetailForAllCancel(orderDetail);
|
|
|
- orderChangeDao.createOrderDetailHstForAllCancel(orderDetail);
|
|
|
-
|
|
|
- // 주문상세단품정보 수정 및 이력 등록
|
|
|
- orderChangeDao.updateOrderDetailItemForAllCancel(orderDetail);
|
|
|
- orderChangeDao.createOrderDetailItemHstForAllCancel(orderDetail);
|
|
|
+ /**
|
|
|
+ * 교환발송완료
|
|
|
+ * @param Order
|
|
|
+ * @return Order
|
|
|
+ * @author jsh77b
|
|
|
+ * @since 2021. 01. 19
|
|
|
+ */
|
|
|
+ public GagaMap exchComplete(List<Order> cnclRtnList) {
|
|
|
+ GagaMap mav = new GagaMap();
|
|
|
|
|
|
- // TODO
|
|
|
- // 11. 취소 완료 알림톡 발송 에정
|
|
|
- }
|
|
|
|
|
|
- /**
|
|
|
- * 전체취소 요청
|
|
|
- *
|
|
|
- * @param GagaMap, int
|
|
|
- * @return GagaMap
|
|
|
- * @author card007
|
|
|
- * @since 2021. 04. 15
|
|
|
- */
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- @Transactional("shopTxnManager")
|
|
|
- public GagaMap allCnclCompleteBak(GagaMap map, int userNo) {
|
|
|
- // 1. 취소요청정보목록
|
|
|
- List<Order> cancelOrderRefundList = (List<Order>) map.get("cancelOrderRefundList"); // 취소환불금액 목록 (주문상세단품 단위)
|
|
|
- List<Order> cancelDelvRefundList = (List<Order>) map.get("cancelDelvRefundList"); // 취소환불배송금액 목록 (DELV_FEE_CD 단위)
|
|
|
-
|
|
|
- // 2. 취소신청정보
|
|
|
- int ordNo = Integer.parseInt(map.getString("ordNo")); // 주문번호
|
|
|
- String chgReason = map.getString("chgReason"); // 변경사유
|
|
|
- String chgMemo = map.getString("chgMemo"); // 변경메모
|
|
|
- String allCanYnBeforePayment = map.getString("allCanYnBeforePayment"); // 무통장입금전 전체취소 여부
|
|
|
- String chgGb = TscConstants.OrderChangeGb.CANCEL.value(); // 취소요청 (공톹코드:G680)
|
|
|
- String accountNo = map.getString("accountNo"); // 환불계좌번호
|
|
|
- String accountNm = map.getString("accountNm"); // 환불계좌주명
|
|
|
- String bankCd = map.getString("bankCd"); // 환불은행
|
|
|
- String ipAddress = map.getString("ipAddress"); // IP주소
|
|
|
- String isCustomer = map.getString("isCustomer"); // 귀책사유 (고객, 회사)
|
|
|
- String reqGbn = map.getString("reqGbn"); // 신청구분
|
|
|
- // String chgerNm = map.getString("chgerNm"); // 변경자
|
|
|
- // String chgerPhnno = map.getString("chgerPhnno"); // 변경핸드폰번호
|
|
|
- // String chgerTelno = map.getString("chgerTelno"); // 변경전화번호
|
|
|
- // String chgerEmail = map.getString("chgerEmail"); // 변경이메일
|
|
|
- String ordDtlStat; // 주문상세상태
|
|
|
- String chgStat; // 주문변경상태
|
|
|
-
|
|
|
- if ("Y".equals(allCanYnBeforePayment)) {
|
|
|
- ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_BEFORE_CANCEL.value();
|
|
|
- chgStat = TscConstants.OrderChangeStat.PAYMENT_BEFORE_CANCEL.value();
|
|
|
- } else {
|
|
|
- ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_AFTER_CANCEL.value();
|
|
|
- chgStat = TscConstants.OrderChangeStat.PAYMENT_AFTER_CANCEL.value();
|
|
|
+ return mav;
|
|
|
}
|
|
|
|
|
|
- // 3. 주문상세단품정보등록, 변경 (단품단위)
|
|
|
- OrderChange orderDetailItem = new OrderChange();
|
|
|
- orderDetailItem.setOrdNo(ordNo);
|
|
|
- orderDetailItem.setOrdDtlStat(ordDtlStat);
|
|
|
- orderDetailItem.setRegNo(userNo);
|
|
|
- orderDetailItem.setUpdNo(userNo);
|
|
|
|
|
|
- orderChangeDao.updateOrderDetailItemForAllCancel(orderDetailItem);
|
|
|
- orderChangeDao.createOrderDetailItemHstForAllCancel(orderDetailItem);
|
|
|
|
|
|
- // 4. 주문변경정보, 주문정보, 환불정보 (배송정책코드별)
|
|
|
- int pgCancelAmt = 0;
|
|
|
- for (Order obj : cancelDelvRefundList) {
|
|
|
- if (obj.getCnclRtnAmt() > 0) {
|
|
|
- // 4-1. 주문변경 기본정보 설정
|
|
|
- OrderChange orderChange = new OrderChange();
|
|
|
- orderChange.setOrdNo(ordNo);
|
|
|
- orderChange.setChgGb(chgGb);
|
|
|
- orderChange.setChgReason(chgReason);
|
|
|
- orderChange.setChgMemo(chgMemo);
|
|
|
- orderChange.setAddPayCost(0);
|
|
|
- orderChange.setAddPayAmt(0);
|
|
|
- // 취소에 필요한 값인지 확인 필요
|
|
|
- // orderChange.setChgerNm(chgerNm);
|
|
|
- // orderChange.setChgerPhnno(chgerPhnno);
|
|
|
- // orderChange.setChgerTelno(chgerTelno);
|
|
|
- // orderChange.setChgerEmail(chgerEmail);
|
|
|
- // orderChange.setChgerRtnMemo("");
|
|
|
- orderChange.setRegNo(userNo);
|
|
|
- orderChange.setUpdNo(userNo);
|
|
|
-
|
|
|
- // 4-2. 주문변경 생성
|
|
|
- orderChangeDao.createOrderChange(orderChange);
|
|
|
-
|
|
|
- // 4-3. 주문상세단위 취소정보
|
|
|
- for (Order vo : cancelOrderRefundList) {
|
|
|
- if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd())) {
|
|
|
- vo.setOrdDtlStat(ordDtlStat);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 취소신청 (admin, npay, extmall) (사용안함)
|
|
|
+ * @param Order
|
|
|
+ * @return Order
|
|
|
+ * @author jsh77b
|
|
|
+ * @since 2021. 01. 19
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
+ public GagaMap cnclReq(GagaMap mav, int userNo) {
|
|
|
+
|
|
|
+ // 1. 세션회원조회
|
|
|
+ //userNo = userNo;
|
|
|
+
|
|
|
+ // 2. 변경요정정보목록
|
|
|
+ List<Order> cancelReqList = (List<Order>) mav.get("cnclRtnList"); // 변경요청 목록
|
|
|
+ List<Order> cancelOrderRefundList = (List<Order>) mav.get("cancelOrderRefundList"); // 변경환불금액 목록 (주문상세단품 단위)
|
|
|
+ List<Order> cancelDelvRefundList = (List<Order>) mav.get("cancelDelvRefundList"); // 변경환불배송금액 목록 (DELV_FEE_CD 단위)
|
|
|
+
|
|
|
+ // 3. 변경신청정보
|
|
|
+ int ordNo = Integer.parseInt(mav.getString("ordNo").toString()); // 주문번호
|
|
|
+ String chgReason = mav.getString("chgReason").toString(); // 변경사유
|
|
|
+ String chgMemo = mav.getString("chgMemo").toString(); // 변경메모
|
|
|
+ String allCanYn = mav.getString("allCanYn").toString(); // 무통장입금전 전체취소 여부
|
|
|
+ String isCustomer = mav.getString("isCustomer").toString(); // 귀책사유 (고객, 회사)
|
|
|
+ String chgGb = TscConstants.OrderChangeGb.CANCEL.value(); // 취소요청
|
|
|
+ String reqGbn = mav.get("reqGbn").toString(); // 신청구분
|
|
|
+
|
|
|
+ // 4. 주문상세단품정보등록,변경 (단품단위)
|
|
|
+ List<Order> cancelOrderDetailList = new ArrayList<Order>();
|
|
|
+
|
|
|
+ for (int i=0 ; i<cancelOrderRefundList.size() ; i++) {
|
|
|
+ Order cancelOrderRefundPo = cancelOrderRefundList.get(i);
|
|
|
+ cancelOrderRefundPo.setRegNo(userNo);
|
|
|
+ cancelOrderRefundPo.setUpdNo(userNo);
|
|
|
+
|
|
|
+ // 4.1 취소수량이 존재하면 주문상세단품정보 수정 및 주문상세단품이력정보 등록
|
|
|
+ if (cancelOrderRefundPo.getOrdCanChgQty() > 0) {
|
|
|
+ // 4.4 주문변경 상세 단위로 데이타 등록 (ORD_DTL_NO)
|
|
|
+ Boolean temp = false;
|
|
|
+ if (cancelOrderDetailList.size() > 0) {
|
|
|
+ for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
|
|
|
+ if (cancelOrderRefundPo.getOrdDtlNo() == cancelOrderDetailList.get(j).getOrdDtlNo()) {
|
|
|
+ temp = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4.5 주문상세단위 데이타 저장(주문상세 단위)
|
|
|
+ if (!temp) {
|
|
|
+ cancelOrderDetailList.add(cancelOrderRefundPo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2021.01.21 DELV_FEE 배송번호 단위로 TB_ORDER_CHANGE 생성
|
|
|
+ // 4. 주문변경정보, 주문정보, 환불정보 (업체코드 & 배송정책코드)
|
|
|
+ for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
|
|
|
+
|
|
|
+ Order obj = cancelDelvRefundList.get(i);
|
|
|
+
|
|
|
+ // 취소금액이 있을때 처리
|
|
|
+ if (obj.getCnclRtnAmt() > 0) {
|
|
|
+
|
|
|
+ // 5.1 주문변경 기본정보 등록
|
|
|
+ OrderChange orderChange = new OrderChange();
|
|
|
+ orderChange.setOrdNo(ordNo);
|
|
|
+ orderChange.setChgGb(chgGb);
|
|
|
+ orderChange.setChgReason(chgReason);
|
|
|
+ orderChange.setChgMemo(chgMemo);
|
|
|
+ orderChange.setAddPayCost(0);
|
|
|
+ orderChange.setAddPayAmt(0);
|
|
|
+ orderChange.setRegNo(userNo);
|
|
|
+ orderChange.setUpdNo(userNo);
|
|
|
+
|
|
|
+ // 5.2 주문변경 추가정보 등록
|
|
|
+ String chgerNm = mav.getString("chgerNm").toString(); // 변경자
|
|
|
+ String chgerPhnno = mav.getString("chgerPhnno").toString(); // 변경핸드폰번호
|
|
|
+ String chgerTelno = mav.getString("chgerTelno").toString(); // 변경전화번호
|
|
|
+ String chgerEmail = mav.getString("chgerEmail").toString(); // 변경이메일
|
|
|
+
|
|
|
+ orderChange.setChgerNm(chgerNm);
|
|
|
+ orderChange.setChgerPhnno(chgerPhnno);
|
|
|
+ orderChange.setChgerTelno(chgerTelno);
|
|
|
+ orderChange.setChgerEmail(chgerEmail);
|
|
|
+ orderChange.setChgerRtnMemo("");
|
|
|
+
|
|
|
+ orderChangeDao.createOrderChange(orderChange);
|
|
|
+
|
|
|
+ // 5.3 주문상세단위 취소정보
|
|
|
+ for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
|
|
|
+ Order vo = cancelOrderRefundList.get(j);
|
|
|
vo.setRegNo(userNo);
|
|
|
vo.setUpdNo(userNo);
|
|
|
-
|
|
|
- // 4-3-1. 주문상세정보 수정 및 주문상세이력정보 등록
|
|
|
- orderChangeDao.updateOrderDetail(vo);
|
|
|
- orderChangeDao.createOrderDetailHstCnclRtn(vo);
|
|
|
-
|
|
|
- // 4-3-3. 주문변경상세 및 이력정보 등록
|
|
|
- OrderChange changeDetailPo = new OrderChange();
|
|
|
- changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
- changeDetailPo.setOrdDtlNo(vo.getOrdDtlNo());
|
|
|
- changeDetailPo.setChgQty(vo.getOrdCanChgQty());
|
|
|
- changeDetailPo.setChgStat(chgStat);
|
|
|
- changeDetailPo.setRegNo(userNo);
|
|
|
- changeDetailPo.setUpdNo(userNo);
|
|
|
+ vo.setOrdDtlStat(TscConstants.OrderChangeStat.CANCEL.value()); // 취소신청
|
|
|
|
|
|
- orderChangeDao.createOrderChangeDetail(changeDetailPo);
|
|
|
- orderChangeDao.createOrderChangeDetailHst(changeDetailPo);
|
|
|
+ // 5.3.0 DEVL_FEE_CD 단위로 주문상세 정보 처리
|
|
|
+ if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd())) {
|
|
|
|
|
|
- // 4-3-4. 사용포인트원복
|
|
|
- int pntDcAmt = vo.getPntDcAmt();
|
|
|
- vo.setOccurGb(TscConstants.PointOccurGb.USE_POINT.value());
|
|
|
+ // 5.3.1 주문변경상세정보 이력등록
|
|
|
+ orderChangeDao.createOrderDetailHstCnclRtn(vo);
|
|
|
|
|
|
- for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
- while (pntDcAmt > 0) {
|
|
|
- if (pntDcAmt < point.getPntAmt()) {
|
|
|
- point.setPntAmt(pntDcAmt);
|
|
|
- pntDcAmt -= pntDcAmt;
|
|
|
- } else {
|
|
|
- pntDcAmt -= point.getPntAmt();
|
|
|
+ // * 주문상세단위가 아닌 주문상세단품단위로 데이타가 처리되고 있었음 주문상세단위로 수정
|
|
|
+ // 5.3 주문변경상세정보 등록
|
|
|
+ OrderChange changeDetailPo = new OrderChange();
|
|
|
+ changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
+ changeDetailPo.setOrdDtlNo(vo.getOrdDtlNo());
|
|
|
+ changeDetailPo.setChgQty(vo.getOrdCanChgQty());
|
|
|
+ changeDetailPo.setChgStat(TscConstants.OrderChangeStat.CANCEL.value()); // 취소신청
|
|
|
+ changeDetailPo.setRegNo(userNo);
|
|
|
+ changeDetailPo.setUpdNo(userNo);
|
|
|
+
|
|
|
+ orderChangeDao.createOrderChangeDetail(changeDetailPo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 5.4 환불결제정보 등록 (업체별 & 배송정책별) 단위
|
|
|
+ // 취소, 반품 사유에 따른 추가배송비, 반품배송비를 환불금액에서 추가, 제외 할 수 있다.
|
|
|
+ int spanRealCnclRtnAmt = obj.getCnclRtnAmt(); // 취소금액합계
|
|
|
+ int sumDeliveryFee = obj.getDelvFee(); // 배송비합계
|
|
|
+ int spanTotDeliveryFee = obj.getAddDelvFee(); // 추가배송비합계
|
|
|
+ int spanTotRtnDelvFee = obj.getRtnDelvFee(); // 반품배송비합계
|
|
|
+ int spanRefundAmt = 0;
|
|
|
+
|
|
|
+ // 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
|
|
|
+ if ("true".equals(isCustomer)) {
|
|
|
+ spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee) - spanTotDeliveryFee - spanTotRtnDelvFee;
|
|
|
+ }
|
|
|
+ // 회사사유 : 환불금액계산 = (취소금액 + 배송비)
|
|
|
+ else {
|
|
|
+ spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 5.4 환불금액 등록
|
|
|
+ Order refundOrder = new Order();
|
|
|
+ refundOrder.setOrdNo(ordNo);
|
|
|
+ refundOrder.setPaySq(0);
|
|
|
+ refundOrder.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
+ refundOrder.setRegNo(userNo);
|
|
|
+
|
|
|
+ // 2021.01.25 TB_REFUND 정보 등록을 위해서 분리 작업
|
|
|
+ refundOrder.setRefundAmt(spanRefundAmt);
|
|
|
+ refundOrder.setRfCpn1Amt(obj.getCpn1DcAmt());
|
|
|
+ refundOrder.setRfTmtb1Amt(obj.getTmtb1DcAmt());
|
|
|
+ refundOrder.setRfTmtb2Amt(obj.getTmtb2DcAmt());
|
|
|
+ refundOrder.setRfGoodsCpnAmt(obj.getGoodsCpnDcAmt());
|
|
|
+ refundOrder.setRfCartCpnAmt(obj.getCartCpnDcAmt());
|
|
|
+ refundOrder.setRfPntAmt(obj.getPntAmt());
|
|
|
+ refundOrder.setRfPrePntAmt(obj.getPrePntDcAmt());
|
|
|
+ refundOrder.setRfGfcdUseAmt(obj.getGfcdUseAmt());
|
|
|
+
|
|
|
+ refundOrder.setRaNo(mav.get("accountNo").toString());
|
|
|
+ refundOrder.setRaNm(mav.get("accountNm").toString());
|
|
|
+ refundOrder.setRaBank(mav.get("bankCd").toString());
|
|
|
+
|
|
|
+ orderChangeDao.createRefund(refundOrder);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return mav;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 취소신청승인 (admin) (사용안함)
|
|
|
+ * @param Order
|
|
|
+ * @return Order
|
|
|
+ * @author jsh77b
|
|
|
+ * @since 2021. 01. 19
|
|
|
+ */
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
+ public GagaMap cnclcnclComplete(GagaMap mav, int userNo) {
|
|
|
+
|
|
|
+ // 1. 환불금액계산
|
|
|
+
|
|
|
+ // 2. 사용포인트원복 (TB_CUST_POINT(수정), TB_CUST_POINT_HST(등록))
|
|
|
+
|
|
|
+ // 3. 사용쿠폰원복 (TB_CUST_COUPON(수정))
|
|
|
+
|
|
|
+ // 4. 상품권금액원복 (TB_CUST_GIFTCARD(수정), TB_CUST_GIFTCARD_HST(등록))
|
|
|
+
|
|
|
+ // 5. 사은품취소 (TB_ORD_FREEGIFT(수정), TB_ORD_FREEGIFT(등록), TB_ORD_FREEGIFT_VAL(수정))
|
|
|
+
|
|
|
+ // 6. 주문정보 수정 (TB_ORDER_DETAIL(수정), TB_ORDER_DETAIL_HST(등록), TB_ORDER_DETAIL_ITEM(수정), TB_ORDER_DETAIL_ITEM_HST(등록))
|
|
|
+
|
|
|
+ // 7. 재고정보 (TB_SELL_QTY(등록))
|
|
|
+
|
|
|
+ // 8. 주문변경정보 (TB_ORDER_CHANGE(수정), TB_ORDER_CHANGE_DTL(수정), TB_REFUND(수정))
|
|
|
+
|
|
|
+ // PG 결제 금액 체크
|
|
|
+ // 9. PG 실행
|
|
|
+
|
|
|
+ // 10. 결제정보 (TB_PAYMENT(등록))
|
|
|
+
|
|
|
+ // 11. 추가배송비발생 (TB_PAYMENT(등록))
|
|
|
+
|
|
|
+ return mav;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 주문 환불계좌
|
|
|
+ *
|
|
|
+ * @param order - 주문정보
|
|
|
+ * @return Order
|
|
|
+ * @author jsh77b
|
|
|
+ * @since 2021. 01. 04.
|
|
|
+ */
|
|
|
+ public Collection<Order> getRefundAccount(Order order) {
|
|
|
+ return orderChangeDao.getRefundAccount(order);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 환불계좌 저장
|
|
|
+ *
|
|
|
+ * @param order - 주문정보
|
|
|
+ * @return TsaOrder
|
|
|
+ * @author jsh77b
|
|
|
+ * @since 2021. 01. 05.
|
|
|
+ */
|
|
|
+ public int saveRefundAccount(Order order) {
|
|
|
+
|
|
|
+ // 환불계좌 유무 체크 후 등록
|
|
|
+ if (orderChangeDao.getRefundAccountCheck(order) < 1) {
|
|
|
+ orderChangeDao.saveRefundAccount(order);
|
|
|
+ }
|
|
|
+
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 교환 정보 조회
|
|
|
+ *
|
|
|
+ * @param OrderChange - 주문 변경 정보
|
|
|
+ * @return Collection<OrderChange>
|
|
|
+ * @author card007
|
|
|
+ * @since 2021. 02. 01
|
|
|
+ */
|
|
|
+ public Collection<Order> getExchangeInfo(Order order) {
|
|
|
+ return orderChangeDao.getExchangeInfo(order);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 전체취소 요청
|
|
|
+ *
|
|
|
+ * @param GagaMap, int
|
|
|
+ * @return GagaMap
|
|
|
+ * @author card007
|
|
|
+ * @since 2021. 04. 15
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
+ public void allCnclComplete(OrderChange orderChange) {
|
|
|
+ int ordNo = orderChange.getOrdNo();
|
|
|
+ String chgReason = orderChange.getChgReason(); // G686_10:고객변심, G686_20:관리자취소, G686_30:품절취소
|
|
|
+ String chgReasonNm = orderChange.getChgReasonNm(); // 고객변심, 관리자취소, 품절취소
|
|
|
+ String chgGb = TscConstants.OrderChangeGb.CANCEL.value(); // 변경구분
|
|
|
+ String accountNo = orderChange.getAccountNo(); // 환불계좌번호
|
|
|
+ String accountNm = orderChange.getAccountNm(); // 환불계좌주명
|
|
|
+ String bankCd = orderChange.getBankCd(); // 환불은행
|
|
|
+ String ipAddress = orderChange.getIpAddress(); // IP주소
|
|
|
+ int regNo = orderChange.getRegNo(); // 등록자번호
|
|
|
+ int updNo = orderChange.getUpdNo(); // 등록자번호
|
|
|
+
|
|
|
+ // 원주문 결제정보 조회
|
|
|
+ Payment payment = new Payment();
|
|
|
+ payment.setOrdNo(ordNo);
|
|
|
+ payment = orderChangeDao.getPaymentInfo(payment);
|
|
|
+
|
|
|
+ // 환불금액 설정
|
|
|
+ int refundAmt = payment.getPayAmt();
|
|
|
+
|
|
|
+ // 상태값 설정
|
|
|
+ String ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_AFTER_CANCEL.value(); // 주문상세상태
|
|
|
+ String chgStat = TscConstants.OrderChangeStat.PAYMENT_AFTER_CANCEL.value(); // 주문변경상태
|
|
|
+ String modType = "STSC"; // KCP 전체취소
|
|
|
+
|
|
|
+ // 무통장입금 결제 주문 전체취소 상태값 처리
|
|
|
+ if (TscConstants.PgGb.KCP.value().equals(payment.getPgGb())
|
|
|
+ && TscConstants.PayMeans.BANK_DEPOSIT.value().equals(payment.getPayMeans())
|
|
|
+ && TscConstants.PaymentStat.PAYMENT_WAIT.value().equals(payment.getPayStat())) {
|
|
|
+
|
|
|
+ ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_BEFORE_CANCEL.value();
|
|
|
+ chgStat = TscConstants.OrderChangeStat.PAYMENT_BEFORE_CANCEL.value();
|
|
|
+ } else if (TscConstants.PgGb.KCP.value().equals(payment.getPgGb())
|
|
|
+ && TscConstants.PayMeans.BANK_DEPOSIT.value().equals(payment.getPayMeans())
|
|
|
+ && TscConstants.PaymentStat.PAYMENT_COMPLETE.value().equals(payment.getPayStat())){
|
|
|
+
|
|
|
+ modType = "STHD"; // KCP 무통장입금 전체취소
|
|
|
+ }
|
|
|
+
|
|
|
+ // 1. 주문변경 및 변경상세 정보 설정
|
|
|
+ OrderChange orderChangeDetail = new OrderChange();
|
|
|
+ orderChangeDetail.setOrdNo(ordNo);
|
|
|
+ orderChangeDetail.setChgGb(chgGb);
|
|
|
+ orderChangeDetail.setChgReason(chgReason);
|
|
|
+ orderChangeDetail.setChgStat(chgStat);
|
|
|
+ orderChangeDetail.setRegNo(regNo);
|
|
|
+ orderChangeDetail.setUpdNo(updNo);
|
|
|
+
|
|
|
+ // 주문변경정보 등록
|
|
|
+ orderChangeDao.createOrderChange(orderChangeDetail);
|
|
|
+
|
|
|
+ // 주문변경상세 및 이력정보 등록
|
|
|
+ orderChangeDao.createOrderChangeDetailForAllCancel(orderChangeDetail);
|
|
|
+ orderChangeDao.createOrderChangeDetailHstForAllCancel(orderChangeDetail);
|
|
|
+
|
|
|
+ // 2. 사용포인트원복
|
|
|
+ Order vo = new Order();
|
|
|
+ vo.setOrdNo(ordNo);
|
|
|
+ vo.setOccurGb(TscConstants.PointOccurGb.USE_POINT.value());
|
|
|
+ vo.setUpdNo(updNo);
|
|
|
+
|
|
|
+ for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
+ point.setOccurGb(TscConstants.PointOccurGb.USE_POINT_CANCEL.value());
|
|
|
+ point.setOccurDtlDesc("포인트사용취소");
|
|
|
+ point.setPayAmt(point.getPayAmt() * -1);
|
|
|
+ point.setRegNo(regNo);
|
|
|
+ point.setUpdNo(updNo);
|
|
|
+
|
|
|
+ // 포인트 사용 취소 이력 생성 및 포인트 수정
|
|
|
+ orderChangeDao.createCustPointHstRollback(point);
|
|
|
+ orderChangeDao.updateCustPointRollback(point);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. 적립예정포인트 취소
|
|
|
+ vo.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT.value());
|
|
|
+
|
|
|
+ for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
+ point.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT_CANCEL.value());
|
|
|
+ point.setOccurDtlDesc("예정포인트적립취소");
|
|
|
+ point.setPayAmt(point.getPayAmt() * -1);
|
|
|
+ point.setRegNo(regNo);
|
|
|
+ point.setUpdNo(updNo);
|
|
|
+
|
|
|
+ // 적립예정포인트 취소 이력 생성
|
|
|
+ orderChangeDao.createCustPointHstRollback(point);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4. 사용상품권 원복
|
|
|
+ for (Order giftCard : orderChangeDao.getCustGiftCardHst(vo)) {
|
|
|
+ giftCard.setOccurGb(TscConstants.GiftCardOccurGb.USE_GIFTCARD_CANCEL.value());
|
|
|
+ giftCard.setOccurDtlDesc("상품권사용취소");
|
|
|
+ giftCard.setGfcdAmt(giftCard.getGfcdAmt() * -1);
|
|
|
+ giftCard.setRegNo(regNo);
|
|
|
+ giftCard.setUpdNo(updNo);
|
|
|
+
|
|
|
+ // 포인트 사용 취소 이력 생성 및 포인트 수정
|
|
|
+ orderChangeDao.createCustGiftCardHstRollback(giftCard);
|
|
|
+ orderChangeDao.updateCustGiftCardRollback(giftCard);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 5. 상품재고원복
|
|
|
+ OrderChange sellQty = new OrderChange();
|
|
|
+ sellQty.setOrdChgSq(orderChangeDetail.getOrdChgSq());
|
|
|
+ sellQty.setSellGb("11");
|
|
|
+ sellQty.setRegNo(regNo);
|
|
|
+ orderChangeDao.createSellQty(sellQty);
|
|
|
+
|
|
|
+ // 6. 쿠폰 원복처리
|
|
|
+ Order coupon = new Order();
|
|
|
+ coupon.setOrdNo(ordNo);
|
|
|
+ coupon.setUpdNo(updNo);
|
|
|
+ orderChangeDao.updateGoodsCpnRollback(coupon);
|
|
|
+ orderChangeDao.updateCartCpnRollback(coupon);
|
|
|
+ orderChangeDao.updateDeliveryCpnRollback(coupon);
|
|
|
+
|
|
|
+ // 7. 사은품 전체 취소 (전체취소시 적용) 추후 사은품 관련 취소 로직 개발 예정
|
|
|
+ Order freegiftOrder = new Order();
|
|
|
+ freegiftOrder.setOrdNo(ordNo);
|
|
|
+ freegiftOrder.setUpdNo(updNo);
|
|
|
+ orderChangeDao.updateOrdFreegiftDel(freegiftOrder);
|
|
|
+
|
|
|
+ // 8. PG 연동
|
|
|
+ Payment pg = new Payment();
|
|
|
+ pg.setOrdNo(ordNo);
|
|
|
+ pg.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
+ pg.setPayGb("O");
|
|
|
+ pg.setPgTid(payment.getPgTid());
|
|
|
+ pg.setPayAmt(refundAmt);
|
|
|
+ pg.setRegNo(regNo);
|
|
|
+ pg.setUpdNo(updNo);
|
|
|
+
|
|
|
+ // 상품권으로만 결제 시 PG점프
|
|
|
+ String pgGb = payment.getPgGb();
|
|
|
+ if (!TscConstants.PgGb.ISTYLE.value().equals(pgGb)) {
|
|
|
+ if (TscConstants.PgGb.KCP.value().equals(pgGb) || TscConstants.PgGb.PAYCO.value().equals(pgGb)) {
|
|
|
+ pg.setModType(modType);
|
|
|
+ pg.setModDesc("가맹점 취소 - 전체 취소");
|
|
|
+ pg.setIpAddress(ipAddress);
|
|
|
+ pg.setAccountNm(accountNm);
|
|
|
+ pg.setAccountNo(accountNo);
|
|
|
+ pg.setBankCd(bankCd);
|
|
|
+
|
|
|
+ kcpService.kcpCancel(pg);
|
|
|
+ } else if (TscConstants.PgGb.NAVER.value().equals(pgGb)) {
|
|
|
+ pg.setPayMeans(payment.getPayMeans());
|
|
|
+ pg.setChgReasonNm(chgReasonNm);
|
|
|
+
|
|
|
+ naverPayService.cancelNaverPayment(pg);
|
|
|
+ } else if (TscConstants.PgGb.KAKAO.value().equals(pgGb)) {
|
|
|
+ kakaoPayService.cancelKakaoPayment(pg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 9. 환불금액 등록
|
|
|
+ Order refundOrder = orderChangeDao.getRefundInfoForAllCancel(vo);
|
|
|
+ refundOrder.setOrdNo(ordNo);
|
|
|
+ refundOrder.setPaySq(pg.getPaySq());
|
|
|
+ refundOrder.setOrdChgSq(orderChangeDetail.getOrdChgSq());
|
|
|
+ refundOrder.setRefundAmt(refundAmt);
|
|
|
+ refundOrder.setRfRealCnclAmt(refundOrder.getRealOrdAmt() - refundOrder.getRfDeliveryFee());
|
|
|
+ refundOrder.setRaNo(accountNo);
|
|
|
+ refundOrder.setRaNm(accountNm);
|
|
|
+ refundOrder.setRaBank(bankCd);
|
|
|
+ refundOrder.setRegNo(regNo);
|
|
|
+
|
|
|
+ orderChangeDao.createRefund(refundOrder);
|
|
|
+
|
|
|
+ // 10. 주문상세 및 주문상세단품 정보 설정
|
|
|
+ OrderChange orderDetail = new OrderChange();
|
|
|
+ orderDetail.setOrdNo(ordNo);
|
|
|
+ orderDetail.setOrdDtlStat(ordDtlStat);
|
|
|
+ orderDetail.setRegNo(regNo);
|
|
|
+ orderDetail.setUpdNo(updNo);
|
|
|
+
|
|
|
+ // 주문상세정보 수정 및 이력 등록
|
|
|
+ orderChangeDao.updateOrderDetailForAllCancel(orderDetail);
|
|
|
+ orderChangeDao.createOrderDetailHstForAllCancel(orderDetail);
|
|
|
+
|
|
|
+ // 주문상세단품정보 수정 및 이력 등록
|
|
|
+ orderChangeDao.updateOrderDetailItemForAllCancel(orderDetail);
|
|
|
+ orderChangeDao.createOrderDetailItemHstForAllCancel(orderDetail);
|
|
|
+
|
|
|
+ // TODO
|
|
|
+ // 11. 취소 완료 알림톡 발송 에정
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 전체취소 요청
|
|
|
+ *
|
|
|
+ * @param GagaMap, int
|
|
|
+ * @return GagaMap
|
|
|
+ * @author card007
|
|
|
+ * @since 2021. 04. 15
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
+ public GagaMap allCnclCompleteBak(GagaMap map, int userNo) {
|
|
|
+ // 1. 취소요청정보목록
|
|
|
+ List<Order> cancelOrderRefundList = (List<Order>) map.get("cancelOrderRefundList"); // 취소환불금액 목록 (주문상세단품 단위)
|
|
|
+ List<Order> cancelDelvRefundList = (List<Order>) map.get("cancelDelvRefundList"); // 취소환불배송금액 목록 (DELV_FEE_CD 단위)
|
|
|
+
|
|
|
+ // 2. 취소신청정보
|
|
|
+ int ordNo = Integer.parseInt(map.getString("ordNo")); // 주문번호
|
|
|
+ String chgReason = map.getString("chgReason"); // 변경사유
|
|
|
+ String chgMemo = map.getString("chgMemo"); // 변경메모
|
|
|
+ String allCanYnBeforePayment = map.getString("allCanYnBeforePayment"); // 무통장입금전 전체취소 여부
|
|
|
+ String chgGb = TscConstants.OrderChangeGb.CANCEL.value(); // 취소요청 (공톹코드:G680)
|
|
|
+ String accountNo = map.getString("accountNo"); // 환불계좌번호
|
|
|
+ String accountNm = map.getString("accountNm"); // 환불계좌주명
|
|
|
+ String bankCd = map.getString("bankCd"); // 환불은행
|
|
|
+ String ipAddress = map.getString("ipAddress"); // IP주소
|
|
|
+ String isCustomer = map.getString("isCustomer"); // 귀책사유 (고객, 회사)
|
|
|
+ String reqGbn = map.getString("reqGbn"); // 신청구분
|
|
|
+ // String chgerNm = map.getString("chgerNm"); // 변경자
|
|
|
+ // String chgerPhnno = map.getString("chgerPhnno"); // 변경핸드폰번호
|
|
|
+ // String chgerTelno = map.getString("chgerTelno"); // 변경전화번호
|
|
|
+ // String chgerEmail = map.getString("chgerEmail"); // 변경이메일
|
|
|
+ String ordDtlStat; // 주문상세상태
|
|
|
+ String chgStat; // 주문변경상태
|
|
|
+
|
|
|
+ if ("Y".equals(allCanYnBeforePayment)) {
|
|
|
+ ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_BEFORE_CANCEL.value();
|
|
|
+ chgStat = TscConstants.OrderChangeStat.PAYMENT_BEFORE_CANCEL.value();
|
|
|
+ } else {
|
|
|
+ ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_AFTER_CANCEL.value();
|
|
|
+ chgStat = TscConstants.OrderChangeStat.PAYMENT_AFTER_CANCEL.value();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. 주문상세단품정보등록, 변경 (단품단위)
|
|
|
+ OrderChange orderDetailItem = new OrderChange();
|
|
|
+ orderDetailItem.setOrdNo(ordNo);
|
|
|
+ orderDetailItem.setOrdDtlStat(ordDtlStat);
|
|
|
+ orderDetailItem.setRegNo(userNo);
|
|
|
+ orderDetailItem.setUpdNo(userNo);
|
|
|
+
|
|
|
+ orderChangeDao.updateOrderDetailItemForAllCancel(orderDetailItem);
|
|
|
+ orderChangeDao.createOrderDetailItemHstForAllCancel(orderDetailItem);
|
|
|
+
|
|
|
+ // 4. 주문변경정보, 주문정보, 환불정보 (배송정책코드별)
|
|
|
+ int pgCancelAmt = 0;
|
|
|
+ for (Order obj : cancelDelvRefundList) {
|
|
|
+ if (obj.getCnclRtnAmt() > 0) {
|
|
|
+ // 4-1. 주문변경 기본정보 설정
|
|
|
+ OrderChange orderChange = new OrderChange();
|
|
|
+ orderChange.setOrdNo(ordNo);
|
|
|
+ orderChange.setChgGb(chgGb);
|
|
|
+ orderChange.setChgReason(chgReason);
|
|
|
+ orderChange.setChgMemo(chgMemo);
|
|
|
+ orderChange.setAddPayCost(0);
|
|
|
+ orderChange.setAddPayAmt(0);
|
|
|
+ // 취소에 필요한 값인지 확인 필요
|
|
|
+ // orderChange.setChgerNm(chgerNm);
|
|
|
+ // orderChange.setChgerPhnno(chgerPhnno);
|
|
|
+ // orderChange.setChgerTelno(chgerTelno);
|
|
|
+ // orderChange.setChgerEmail(chgerEmail);
|
|
|
+ // orderChange.setChgerRtnMemo("");
|
|
|
+ orderChange.setRegNo(userNo);
|
|
|
+ orderChange.setUpdNo(userNo);
|
|
|
+
|
|
|
+ // 4-2. 주문변경 생성
|
|
|
+ orderChangeDao.createOrderChange(orderChange);
|
|
|
+
|
|
|
+ // 4-3. 주문상세단위 취소정보
|
|
|
+ for (Order vo : cancelOrderRefundList) {
|
|
|
+ if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd())) {
|
|
|
+ vo.setOrdDtlStat(ordDtlStat);
|
|
|
+ vo.setRegNo(userNo);
|
|
|
+ vo.setUpdNo(userNo);
|
|
|
+
|
|
|
+ // 4-3-1. 주문상세정보 수정 및 주문상세이력정보 등록
|
|
|
+ orderChangeDao.updateOrderDetail(vo);
|
|
|
+ orderChangeDao.createOrderDetailHstCnclRtn(vo);
|
|
|
+
|
|
|
+ // 4-3-3. 주문변경상세 및 이력정보 등록
|
|
|
+ OrderChange changeDetailPo = new OrderChange();
|
|
|
+ changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
+ changeDetailPo.setOrdDtlNo(vo.getOrdDtlNo());
|
|
|
+ changeDetailPo.setChgQty(vo.getOrdCanChgQty());
|
|
|
+ changeDetailPo.setChgStat(chgStat);
|
|
|
+ changeDetailPo.setRegNo(userNo);
|
|
|
+ changeDetailPo.setUpdNo(userNo);
|
|
|
+
|
|
|
+ orderChangeDao.createOrderChangeDetail(changeDetailPo);
|
|
|
+ orderChangeDao.createOrderChangeDetailHst(changeDetailPo);
|
|
|
+
|
|
|
+ // 4-3-4. 사용포인트원복
|
|
|
+ int pntDcAmt = vo.getPntDcAmt();
|
|
|
+ vo.setOccurGb(TscConstants.PointOccurGb.USE_POINT.value());
|
|
|
+
|
|
|
+ for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
+ while (pntDcAmt > 0) {
|
|
|
+ if (pntDcAmt < point.getPntAmt()) {
|
|
|
+ point.setPntAmt(pntDcAmt);
|
|
|
+ pntDcAmt -= pntDcAmt;
|
|
|
+ } else {
|
|
|
+ pntDcAmt -= point.getPntAmt();
|
|
|
+ }
|
|
|
+
|
|
|
+ point.setOccurGb(TscConstants.PointOccurGb.USE_POINT_CANCEL.value());
|
|
|
+ point.setOccurDtlDesc("포인트사용취소");
|
|
|
+ point.setRegNo(userNo);
|
|
|
+ point.setUpdNo(userNo);
|
|
|
+
|
|
|
+ // 포인트 사용 취소 이력 생성 및 포인트 수정
|
|
|
+ orderChangeDao.createCustPointHstRollback(point);
|
|
|
+ orderChangeDao.updateCustPointRollback(point);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- point.setOccurGb(TscConstants.PointOccurGb.USE_POINT_CANCEL.value());
|
|
|
- point.setOccurDtlDesc("포인트사용취소");
|
|
|
+ // 4-3-5. 적립예정포인트 수정
|
|
|
+ int savePntAmt = vo.getSavePntAmt();
|
|
|
+ vo.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT.value());
|
|
|
+
|
|
|
+ for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
+ point.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT_CANCEL.value());
|
|
|
+ point.setOccurDtlDesc("예정포인트적립취소");
|
|
|
+ point.setPayAmt(savePntAmt * -1);
|
|
|
point.setRegNo(userNo);
|
|
|
point.setUpdNo(userNo);
|
|
|
|
|
|
- // 포인트 사용 취소 이력 생성 및 포인트 수정
|
|
|
+ // 적립예정포인트 취소 이력 생성
|
|
|
orderChangeDao.createCustPointHstRollback(point);
|
|
|
- orderChangeDao.updateCustPointRollback(point);
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- // 4-3-5. 적립예정포인트 수정
|
|
|
- int savePntAmt = vo.getSavePntAmt();
|
|
|
- vo.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT.value());
|
|
|
|
|
|
- for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
- point.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT_CANCEL.value());
|
|
|
- point.setOccurDtlDesc("예정포인트적립취소");
|
|
|
- point.setPayAmt(savePntAmt * -1);
|
|
|
- point.setRegNo(userNo);
|
|
|
- point.setUpdNo(userNo);
|
|
|
+ // 4-3-6. 상품쿠폰원복
|
|
|
+ orderChangeDao.updateGoodsCpnRollback(vo);
|
|
|
|
|
|
- // 적립예정포인트 취소 이력 생성
|
|
|
- orderChangeDao.createCustPointHstRollback(point);
|
|
|
+ // 4-3-7. 사용상품권 원복
|
|
|
+ int gfcdUseAmt = vo.getGfcdUseAmt();
|
|
|
+
|
|
|
+ for (Order giftCard : orderChangeDao.getCustGiftCardHst(vo)) {
|
|
|
+ while (gfcdUseAmt > 0) {
|
|
|
+ if (gfcdUseAmt < giftCard.getGfcdAmt()) {
|
|
|
+ giftCard.setGfcdAmt(gfcdUseAmt);
|
|
|
+ gfcdUseAmt -= gfcdUseAmt;
|
|
|
+ } else {
|
|
|
+ gfcdUseAmt -= giftCard.getGfcdAmt();
|
|
|
+ }
|
|
|
+
|
|
|
+ giftCard.setOccurGb(TscConstants.GiftCardOccurGb.USE_GIFTCARD_CANCEL.value());
|
|
|
+ giftCard.setOccurDtlDesc("상품권사용취소");
|
|
|
+ giftCard.setRegNo(userNo);
|
|
|
+ giftCard.setUpdNo(userNo);
|
|
|
+
|
|
|
+ // 포인트 사용 취소 이력 생성 및 포인트 수정
|
|
|
+ orderChangeDao.createCustGiftCardHstRollback(giftCard);
|
|
|
+ orderChangeDao.updateCustGiftCardRollback(giftCard);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- // 4-3-6. 상품쿠폰원복
|
|
|
- orderChangeDao.updateGoodsCpnRollback(vo);
|
|
|
+ // 4-4. 상품재고원복
|
|
|
+ orderChange.setSellGb("11");
|
|
|
+ orderChangeDao.createSellQty(orderChange);
|
|
|
|
|
|
- // 4-3-7. 사용상품권 원복
|
|
|
- int gfcdUseAmt = vo.getGfcdUseAmt();
|
|
|
+ // 4-5. 환불결제정보 등록 (배송정책별)
|
|
|
+ int spanRefundAmt = obj.getRealOrdAmt() + obj.getDelvFee();
|
|
|
|
|
|
- for (Order giftCard : orderChangeDao.getCustGiftCardHst(vo)) {
|
|
|
- while (gfcdUseAmt > 0) {
|
|
|
- if (gfcdUseAmt < giftCard.getGfcdAmt()) {
|
|
|
- giftCard.setGfcdAmt(gfcdUseAmt);
|
|
|
- gfcdUseAmt -= gfcdUseAmt;
|
|
|
- } else {
|
|
|
- gfcdUseAmt -= giftCard.getGfcdAmt();
|
|
|
- }
|
|
|
+ Order paymentOrder = new Order();
|
|
|
+ paymentOrder.setOrdNo(ordNo);
|
|
|
+ paymentOrder.setPayAmt(spanRefundAmt * -1);
|
|
|
+ paymentOrder.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
+ paymentOrder.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
+ paymentOrder.setRegNo(userNo);
|
|
|
+ paymentOrder.setUpdNo(userNo);
|
|
|
|
|
|
- giftCard.setOccurGb(TscConstants.GiftCardOccurGb.USE_GIFTCARD_CANCEL.value());
|
|
|
- giftCard.setOccurDtlDesc("상품권사용취소");
|
|
|
- giftCard.setRegNo(userNo);
|
|
|
- giftCard.setUpdNo(userNo);
|
|
|
+ orderChangeDao.createPayment(paymentOrder);
|
|
|
|
|
|
- // 포인트 사용 취소 이력 생성 및 포인트 수정
|
|
|
- orderChangeDao.createCustGiftCardHstRollback(giftCard);
|
|
|
- orderChangeDao.updateCustGiftCardRollback(giftCard);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ // 4-6. 환불금액 등록
|
|
|
+ Order refundOrder = new Order();
|
|
|
+ refundOrder.setOrdNo(ordNo);
|
|
|
+ refundOrder.setPaySq(paymentOrder.getPaySq());
|
|
|
+ refundOrder.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
+ refundOrder.setRefundAmt(spanRefundAmt);
|
|
|
+ refundOrder.setRfCpn1Amt(obj.getCpn1DcAmt());
|
|
|
+ refundOrder.setRfTmtb1Amt(obj.getTmtb1DcAmt());
|
|
|
+ refundOrder.setRfTmtb2Amt(obj.getTmtb2DcAmt());
|
|
|
+ refundOrder.setRfGoodsCpnAmt(obj.getGoodsCpnDcAmt());
|
|
|
+ refundOrder.setRfCartCpnAmt(obj.getCartCpnDcAmt());
|
|
|
+ refundOrder.setRfPntAmt(obj.getPntAmt());
|
|
|
+ refundOrder.setRfPrePntAmt(obj.getPrePntDcAmt());
|
|
|
+ refundOrder.setRfGfcdUseAmt(obj.getGfcdUseAmt());
|
|
|
+ refundOrder.setRfDeliveryFee(obj.getRfDeliveryFee());
|
|
|
+ refundOrder.setRfCnclAmt(obj.getRfCnclAmt());
|
|
|
+ refundOrder.setRfRealCnclAmt(obj.getRfRealCnclAmt());
|
|
|
+ refundOrder.setRaNo(accountNo);
|
|
|
+ refundOrder.setRaNm(accountNm);
|
|
|
+ refundOrder.setRaBank(bankCd);
|
|
|
+ refundOrder.setRegNo(userNo);
|
|
|
+
|
|
|
+ orderChangeDao.createRefund(refundOrder);
|
|
|
+
|
|
|
+ pgCancelAmt += spanRefundAmt;
|
|
|
}
|
|
|
-
|
|
|
- // 4-4. 상품재고원복
|
|
|
- orderChange.setSellGb("11");
|
|
|
- orderChangeDao.createSellQty(orderChange);
|
|
|
-
|
|
|
- // 4-5. 환불결제정보 등록 (배송정책별)
|
|
|
- int spanRefundAmt = obj.getRealOrdAmt() + obj.getDelvFee();
|
|
|
-
|
|
|
- Order paymentOrder = new Order();
|
|
|
- paymentOrder.setOrdNo(ordNo);
|
|
|
- paymentOrder.setPayAmt(spanRefundAmt * -1);
|
|
|
- paymentOrder.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
- paymentOrder.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
- paymentOrder.setRegNo(userNo);
|
|
|
- paymentOrder.setUpdNo(userNo);
|
|
|
+ }
|
|
|
|
|
|
- orderChangeDao.createPayment(paymentOrder);
|
|
|
-
|
|
|
- // 4-6. 환불금액 등록
|
|
|
- Order refundOrder = new Order();
|
|
|
- refundOrder.setOrdNo(ordNo);
|
|
|
- refundOrder.setPaySq(paymentOrder.getPaySq());
|
|
|
- refundOrder.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
- refundOrder.setRefundAmt(spanRefundAmt);
|
|
|
- refundOrder.setRfCpn1Amt(obj.getCpn1DcAmt());
|
|
|
- refundOrder.setRfTmtb1Amt(obj.getTmtb1DcAmt());
|
|
|
- refundOrder.setRfTmtb2Amt(obj.getTmtb2DcAmt());
|
|
|
- refundOrder.setRfGoodsCpnAmt(obj.getGoodsCpnDcAmt());
|
|
|
- refundOrder.setRfCartCpnAmt(obj.getCartCpnDcAmt());
|
|
|
- refundOrder.setRfPntAmt(obj.getPntAmt());
|
|
|
- refundOrder.setRfPrePntAmt(obj.getPrePntDcAmt());
|
|
|
- refundOrder.setRfGfcdUseAmt(obj.getGfcdUseAmt());
|
|
|
- refundOrder.setRfDeliveryFee(obj.getRfDeliveryFee());
|
|
|
- refundOrder.setRfCnclAmt(obj.getRfCnclAmt());
|
|
|
- refundOrder.setRfRealCnclAmt(obj.getRfRealCnclAmt());
|
|
|
- refundOrder.setRaNo(accountNo);
|
|
|
- refundOrder.setRaNm(accountNm);
|
|
|
- refundOrder.setRaBank(bankCd);
|
|
|
- refundOrder.setRegNo(userNo);
|
|
|
+ // 장바구니, 배송비 쿠폰 원복처리
|
|
|
+ Order coupon = new Order();
|
|
|
+ coupon.setOrdNo(ordNo);
|
|
|
+ coupon.setUpdNo(userNo);
|
|
|
+ orderChangeDao.updateCartCpnRollback(coupon);
|
|
|
+ orderChangeDao.updateDeliveryCpnRollback(coupon);
|
|
|
|
|
|
- orderChangeDao.createRefund(refundOrder);
|
|
|
+ // 12. 사은품 전체 취소 (전체취소시 적용) 추후 사은품 관련 취소 로직 개발 예정
|
|
|
+ Order freegiftOrder = new Order();
|
|
|
+ freegiftOrder.setOrdNo(ordNo);
|
|
|
+ freegiftOrder.setUpdNo(userNo);
|
|
|
+ orderChangeDao.updateOrdFreegiftDel(freegiftOrder);
|
|
|
|
|
|
- pgCancelAmt += spanRefundAmt;
|
|
|
- }
|
|
|
- }
|
|
|
+ // TODO
|
|
|
+ // 13. PG 연동
|
|
|
+ // 네이버페이, 카카오페이 취소 시 취소 포인트 금액 TB_PAYMENT에 업데이트 처야함
|
|
|
+ // 상품권 100% 결제 시 PG 점프 해야 됨
|
|
|
|
|
|
- // 장바구니, 배송비 쿠폰 원복처리
|
|
|
- Order coupon = new Order();
|
|
|
- coupon.setOrdNo(ordNo);
|
|
|
- coupon.setUpdNo(userNo);
|
|
|
- orderChangeDao.updateCartCpnRollback(coupon);
|
|
|
- orderChangeDao.updateDeliveryCpnRollback(coupon);
|
|
|
-
|
|
|
- // 12. 사은품 전체 취소 (전체취소시 적용) 추후 사은품 관련 취소 로직 개발 예정
|
|
|
- Order freegiftOrder = new Order();
|
|
|
- freegiftOrder.setOrdNo(ordNo);
|
|
|
- freegiftOrder.setUpdNo(userNo);
|
|
|
- orderChangeDao.updateOrdFreegiftDel(freegiftOrder);
|
|
|
+ // 원주문 결제 정보 조회
|
|
|
+ Payment payment = new Payment();
|
|
|
+ payment.setOrdNo(ordNo);
|
|
|
+ payment = orderChangeDao.getPaymentInfo(payment);
|
|
|
|
|
|
- // TODO
|
|
|
- // 13. PG 연동
|
|
|
- // 네이버페이, 카카오페이 취소 시 취소 포인트 금액 TB_PAYMENT에 업데이트 처야함
|
|
|
- // 상품권 100% 결제 시 PG 점프 해야 됨
|
|
|
-
|
|
|
- // 원주문 결제 정보 조회
|
|
|
- Payment payment = new Payment();
|
|
|
- payment.setOrdNo(ordNo);
|
|
|
- payment = orderChangeDao.getPaymentInfo(payment);
|
|
|
-
|
|
|
- // PG 별 취소 처리
|
|
|
- String pgGb = payment.getPgGb();
|
|
|
-
|
|
|
- // 상품권으로만 결제 시 PG점프
|
|
|
- if (!TscConstants.PgGb.ISTYLE.value().equals(pgGb)) {
|
|
|
- if (TscConstants.PgGb.KCP.value().equals(pgGb) || TscConstants.PgGb.PAYCO.value().equals(pgGb)) {
|
|
|
- Payment kcp = new Payment();
|
|
|
- kcp.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
- kcp.setPayGb("O");
|
|
|
- kcp.setModType("STSC");
|
|
|
- kcp.setModDesc("가맹점 취소 - 전체 취소");
|
|
|
- kcp.setIpAddress(ipAddress);
|
|
|
- kcp.setPgTid(payment.getPgTid());
|
|
|
- kcp.setPayAmt(pgCancelAmt);
|
|
|
- kcp.setRegNo(userNo);
|
|
|
- kcp.setUpdNo(userNo);
|
|
|
- kcpService.kcpCancel(kcp);
|
|
|
- } else if (TscConstants.PgGb.NAVER.value().equals(pgGb)) {
|
|
|
- Payment naverPay = new Payment();
|
|
|
- naverPay.setOrdNo(ordNo);
|
|
|
- naverPay.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
- naverPay.setPayGb("O");
|
|
|
- naverPay.setPayMeans(payment.getPayMeans());
|
|
|
- naverPay.setChgReasonNm(chgReason);
|
|
|
- naverPay.setPgTid(payment.getPgTid());
|
|
|
- naverPay.setPayAmt(pgCancelAmt);
|
|
|
- naverPay.setRegNo(userNo);
|
|
|
- naverPay.setUpdNo(userNo);
|
|
|
-
|
|
|
- naverPayService.cancelNaverPayment(naverPay);
|
|
|
- } else if (TscConstants.PgGb.KAKAO.value().equals(pgGb)) {
|
|
|
- Payment kakaoPay = new Payment();
|
|
|
- kakaoPay.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
- kakaoPay.setPayGb("O");
|
|
|
- kakaoPay.setPgTid(payment.getPgTid());
|
|
|
- kakaoPay.setPayAmt(pgCancelAmt);
|
|
|
-
|
|
|
- kakaoPayService.cancelKakaoPayment(kakaoPay);
|
|
|
+ // PG 별 취소 처리
|
|
|
+ String pgGb = payment.getPgGb();
|
|
|
+
|
|
|
+ // 상품권으로만 결제 시 PG점프
|
|
|
+ if (!TscConstants.PgGb.ISTYLE.value().equals(pgGb)) {
|
|
|
+ if (TscConstants.PgGb.KCP.value().equals(pgGb) || TscConstants.PgGb.PAYCO.value().equals(pgGb)) {
|
|
|
+ Payment kcp = new Payment();
|
|
|
+ kcp.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
+ kcp.setPayGb("O");
|
|
|
+ kcp.setModType("STSC");
|
|
|
+ kcp.setModDesc("가맹점 취소 - 전체 취소");
|
|
|
+ kcp.setIpAddress(ipAddress);
|
|
|
+ kcp.setPgTid(payment.getPgTid());
|
|
|
+ kcp.setPayAmt(pgCancelAmt);
|
|
|
+ kcp.setRegNo(userNo);
|
|
|
+ kcp.setUpdNo(userNo);
|
|
|
+ kcpService.kcpCancel(kcp);
|
|
|
+ } else if (TscConstants.PgGb.NAVER.value().equals(pgGb)) {
|
|
|
+ Payment naverPay = new Payment();
|
|
|
+ naverPay.setOrdNo(ordNo);
|
|
|
+ naverPay.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
+ naverPay.setPayGb("O");
|
|
|
+ naverPay.setPayMeans(payment.getPayMeans());
|
|
|
+ naverPay.setChgReasonNm(chgReason);
|
|
|
+ naverPay.setPgTid(payment.getPgTid());
|
|
|
+ naverPay.setPayAmt(pgCancelAmt);
|
|
|
+ naverPay.setRegNo(userNo);
|
|
|
+ naverPay.setUpdNo(userNo);
|
|
|
+
|
|
|
+ naverPayService.cancelNaverPayment(naverPay);
|
|
|
+ } else if (TscConstants.PgGb.KAKAO.value().equals(pgGb)) {
|
|
|
+ Payment kakaoPay = new Payment();
|
|
|
+ kakaoPay.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
+ kakaoPay.setPayGb("O");
|
|
|
+ kakaoPay.setPgTid(payment.getPgTid());
|
|
|
+ kakaoPay.setPayAmt(pgCancelAmt);
|
|
|
+
|
|
|
+ kakaoPayService.cancelKakaoPayment(kakaoPay);
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- // TODO
|
|
|
- // 14. 취소 완료 알림톡 발송 에정
|
|
|
-
|
|
|
- return map;
|
|
|
+ // TODO
|
|
|
+ // 14. 취소 완료 알림톡 발송 에정
|
|
|
+
|
|
|
+ return map;
|
|
|
+ }
|
|
|
}
|
|
|
-}
|