|
|
@@ -18,6 +18,7 @@ import com.style24.core.biz.dao.TscOrderDao;
|
|
|
import com.style24.core.support.env.TscConstants;
|
|
|
import com.style24.core.support.message.TscMessageByLocale;
|
|
|
import com.style24.persistence.domain.DeliveryFee;
|
|
|
+import com.style24.persistence.domain.GiftCard;
|
|
|
import com.style24.persistence.domain.Order;
|
|
|
import com.style24.persistence.domain.OrderChange;
|
|
|
import com.style24.persistence.domain.Payment;
|
|
|
@@ -201,6 +202,7 @@ public class TscOrderChangeService {
|
|
|
String pgTid = map.getString("pgTid"); // PG거래ID
|
|
|
String payMeans = map.getString("payMeans"); // 결제수단
|
|
|
String pgGb = map.getString("pgGb"); // PG구분
|
|
|
+ String cashAuthNo = map.getString("cashAuthNo"); // 현금영수증 승인번호
|
|
|
String accountNo = map.getString("accountNo"); // 환불계좌번호
|
|
|
String accountNm = map.getString("accountNm"); // 환불계좌주명
|
|
|
String bankCd = map.getString("bankCd"); // 환불계좌은행코드
|
|
|
@@ -250,6 +252,7 @@ public class TscOrderChangeService {
|
|
|
|
|
|
// 3. 주문변경정보, 주문정보, 환불정보 (배송정책코드 별)
|
|
|
List<Payment> pgList = new ArrayList<>();
|
|
|
+ List<GiftCard> cashReceiptsList = new ArrayList<>();
|
|
|
for (Order obj : cancelDelvRefundList) {
|
|
|
// 취소금액 있을 시 처리
|
|
|
if (obj.getCnclRtnAmt() > 0) {
|
|
|
@@ -363,7 +366,18 @@ public class TscOrderChangeService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 3-2-7. 주문변경상세정보 및 이력 등록
|
|
|
+ // 3-2-7. 상품권 현금영수증 PG 취소 정보 설정
|
|
|
+ GiftCard giftCardCashReceipts = orderDao.getGiftCardReceiptInfo(ordNo);
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(giftCardCashReceipts.getTradeNo())) {
|
|
|
+ giftCardCashReceipts.setModType("STPC");
|
|
|
+ giftCardCashReceipts.setCashReceiptsGb("giftCard");
|
|
|
+ giftCardCashReceipts.setUsGfcdAmt(gfcdUseAmt);
|
|
|
+
|
|
|
+ cashReceiptsList.add(giftCardCashReceipts);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3-2-8. 주문변경상세정보 및 이력 등록
|
|
|
OrderChange changeDetailPo = new OrderChange();
|
|
|
changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
changeDetailPo.setOrdDtlNo(vo.getOrdDtlNo());
|
|
|
@@ -491,6 +505,16 @@ public class TscOrderChangeService {
|
|
|
|
|
|
orderChangeDao.createDeliveryFee(delvFeeOrder);
|
|
|
}
|
|
|
+
|
|
|
+ // 3-7. 주문 현금영수증 취소 정보 설정 (무통장입금 결제완료, 실시간계좌이체)
|
|
|
+ GiftCard orderCashReceipts = orderDao.getOrderCashReceiptsInfo(ordNo);
|
|
|
+ if (StringUtils.isNotBlank(orderCashReceipts.getTradeNo())) {
|
|
|
+ orderCashReceipts.setModType("STPC");
|
|
|
+ orderCashReceipts.setCashReceiptsGb("payment");
|
|
|
+ orderCashReceipts.setUsGfcdAmt(pg.getPartCancelAmt());
|
|
|
+
|
|
|
+ cashReceiptsList.add(orderCashReceipts);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -551,6 +575,7 @@ public class TscOrderChangeService {
|
|
|
kakaoPayService.cancelKakaoPayment(pg);
|
|
|
}
|
|
|
|
|
|
+ // 7. 환불정보 수정
|
|
|
Order refundOrder = new Order();
|
|
|
refundOrder.setOrdNo(ordNo);
|
|
|
refundOrder.setPaySq(pg.getPaySq());
|
|
|
@@ -559,6 +584,11 @@ public class TscOrderChangeService {
|
|
|
|
|
|
orderChangeDao.updateRefundInfo(refundOrder);
|
|
|
}
|
|
|
+
|
|
|
+ // 7. 현금영수증 취소 처리
|
|
|
+ for (GiftCard cashReceipts : cashReceiptsList) {
|
|
|
+ kcpService.kcpCashReceiptCancel(cashReceipts);
|
|
|
+ }
|
|
|
|
|
|
return map;
|
|
|
}
|
|
|
@@ -1874,20 +1904,21 @@ public class TscOrderChangeService {
|
|
|
result = orderRefundService.cnclRtnRefundAmt(cnclReqList);
|
|
|
|
|
|
// 4. 부분취소 처리 정보 설정
|
|
|
- result.setInt("ordNo", orderChange.getOrdNo()); // 주문번호
|
|
|
- result.setString("chgReason", orderChange.getChgReason()); // 변경사유
|
|
|
- result.setString("chgReasonNm", orderChange.getChgReasonNm()); // 변경사유명
|
|
|
- result.setString("chgMemo", orderChange.getChgMemo()); // 변경메모
|
|
|
- result.setString("accountNo", orderChange.getAccountNo()); // 환불계좌번호
|
|
|
- result.setString("accountNm", orderChange.getAccountNm()); // 환불계좌예금주명
|
|
|
- result.setString("bankCd", orderChange.getBankCd()); // 환불계좌은행코드
|
|
|
- result.setString("allLastCanYn", allLastCanYn); // 전체 마지막 취소 여부
|
|
|
- result.setString("reqGbn", orderChange.getReqGbn()); // 신청구분
|
|
|
- result.setString("ipAddress", orderChange.getIpAddress()); // IP주소
|
|
|
- result.setInt("custNo", orderChange.getCustNo()); // 고객번호
|
|
|
- result.setString("pgTid", refundPreInfo.getString("pgTid")); // PG거래ID
|
|
|
- result.setString("payMeans", refundPreInfo.getString("payMeans")); // 결제수단
|
|
|
- result.setString("pgGb", refundPreInfo.getString("pgGb")); // PG구분
|
|
|
+ result.setInt("ordNo", orderChange.getOrdNo()); // 주문번호
|
|
|
+ result.setString("chgReason", orderChange.getChgReason()); // 변경사유
|
|
|
+ result.setString("chgReasonNm", orderChange.getChgReasonNm()); // 변경사유명
|
|
|
+ result.setString("chgMemo", orderChange.getChgMemo()); // 변경메모
|
|
|
+ result.setString("accountNo", orderChange.getAccountNo()); // 환불계좌번호
|
|
|
+ result.setString("accountNm", orderChange.getAccountNm()); // 환불계좌예금주명
|
|
|
+ result.setString("bankCd", orderChange.getBankCd()); // 환불계좌은행코드
|
|
|
+ result.setString("allLastCanYn", allLastCanYn); // 전체 마지막 취소 여부
|
|
|
+ result.setString("reqGbn", orderChange.getReqGbn()); // 신청구분
|
|
|
+ result.setString("ipAddress", orderChange.getIpAddress()); // IP주소
|
|
|
+ result.setInt("custNo", orderChange.getCustNo()); // 고객번호
|
|
|
+ result.setString("pgTid", refundPreInfo.getString("pgTid")); // PG거래ID
|
|
|
+ result.setString("payMeans", refundPreInfo.getString("payMeans")); // 결제수단
|
|
|
+ result.setString("pgGb", refundPreInfo.getString("pgGb")); // PG구분
|
|
|
+ result.setString("cashAuthNo", refundPreInfo.getString("cashAuthNo")); // 현금영수증 승인번호
|
|
|
|
|
|
// 부분취소 처리
|
|
|
partialCancel(result, userNo);
|
|
|
@@ -2148,7 +2179,7 @@ public class TscOrderChangeService {
|
|
|
@SuppressWarnings("unchecked")
|
|
|
@Transactional("shopTxnManager")
|
|
|
public void allCnclComplete(OrderChange orderChange) {
|
|
|
- int ordNo = orderChange.getOrdNo();
|
|
|
+ Integer ordNo = orderChange.getOrdNo(); // 주문번호
|
|
|
String chgReason = orderChange.getChgReason(); // G686_10:고객변심, G686_20:관리자취소, G686_30:품절취소
|
|
|
String chgReasonNm = orderChange.getChgReasonNm(); // 고객변심, 관리자취소, 품절취소
|
|
|
String chgGb = TscConstants.OrderChangeGb.CANCEL.value(); // 변경구분
|
|
|
@@ -2189,6 +2220,7 @@ public class TscOrderChangeService {
|
|
|
}
|
|
|
|
|
|
// 1. 주문변경 및 변경상세 정보 설정
|
|
|
+ List<GiftCard> cashReceiptsList = new ArrayList<>();
|
|
|
OrderChange orderChangeDetail = new OrderChange();
|
|
|
orderChangeDetail.setOrdNo(ordNo);
|
|
|
orderChangeDetail.setChgGb(chgGb);
|
|
|
@@ -2272,7 +2304,18 @@ public class TscOrderChangeService {
|
|
|
orderChangeDao.updateCustGiftCardRollback(giftCard);
|
|
|
}
|
|
|
|
|
|
- // 5. 상품재고원복 (품절취소가 아닐 경우)
|
|
|
+ // 5. 상품권 현금영수증 PG 취소 정보 설정
|
|
|
+ GiftCard giftCardCashReceipts = orderDao.getGiftCardReceiptInfo(ordNo);
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(giftCardCashReceipts.getTradeNo())) {
|
|
|
+ giftCardCashReceipts.setModType("STSC");
|
|
|
+ giftCardCashReceipts.setCashReceiptsGb("giftCard");
|
|
|
+ giftCardCashReceipts.setUsGfcdAmt(giftCardCashReceipts.getAmt());
|
|
|
+
|
|
|
+ cashReceiptsList.add(giftCardCashReceipts);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 6. 상품재고원복 (품절취소가 아닐 경우)
|
|
|
if(!TscConstants.OrderCancelReason.SOLDOUT_CANCEL.value().equals(chgReason)) {
|
|
|
OrderChange sellQty = new OrderChange();
|
|
|
sellQty.setOrdChgSq(orderChangeDetail.getOrdChgSq());
|
|
|
@@ -2281,7 +2324,7 @@ public class TscOrderChangeService {
|
|
|
orderChangeDao.createSellQty(sellQty);
|
|
|
}
|
|
|
|
|
|
- // 6. 쿠폰 원복처리
|
|
|
+ // 7. 쿠폰 원복처리
|
|
|
Order coupon = new Order();
|
|
|
coupon.setOrdNo(ordNo);
|
|
|
coupon.setUpdNo(updNo);
|
|
|
@@ -2289,13 +2332,13 @@ public class TscOrderChangeService {
|
|
|
orderChangeDao.updateCartCpnRollback(coupon);
|
|
|
orderChangeDao.updateDeliveryCpnRollback(coupon);
|
|
|
|
|
|
- // 7. 사은품 전체 취소 (전체취소시 적용) 추후 사은품 관련 취소 로직 개발 예정
|
|
|
+ // 8. 사은품 전체 취소 (전체취소시 적용) 추후 사은품 관련 취소 로직 개발 예정
|
|
|
Order freegiftOrder = new Order();
|
|
|
freegiftOrder.setOrdNo(ordNo);
|
|
|
freegiftOrder.setUpdNo(updNo);
|
|
|
orderChangeDao.updateOrdFreegiftDel(freegiftOrder);
|
|
|
|
|
|
- // 8. 주문상세 및 주문상세단품 정보 설정
|
|
|
+ // 9. 주문상세 및 주문상세단품 정보 설정
|
|
|
OrderChange orderDetail = new OrderChange();
|
|
|
orderDetail.setOrdNo(ordNo);
|
|
|
orderDetail.setOrdDtlStat(ordDtlStat);
|
|
|
@@ -2310,7 +2353,7 @@ public class TscOrderChangeService {
|
|
|
orderChangeDao.updateOrderDetailItemForAllCancel(orderDetail);
|
|
|
orderChangeDao.createOrderDetailItemHstForAllCancel(orderDetail);
|
|
|
|
|
|
- // 9. WMS 취소 처리
|
|
|
+ // 10. WMS 취소 처리
|
|
|
List<Order> wmsList = new ArrayList<>();
|
|
|
if(orderChange.getOrdDtlNoArr() != null && orderChange.getOrdDtlNoArr().length > 0) {
|
|
|
for (int i = 0; i < orderChange.getOrdDtlNoArr().length; i++) {
|
|
|
@@ -2327,7 +2370,7 @@ public class TscOrderChangeService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 10. 환불금액 등록
|
|
|
+ // 11. 환불금액 등록
|
|
|
Order refundOrder = orderChangeDao.getRefundInfoForAllCancel(vo);
|
|
|
refundOrder.setOrdNo(ordNo);
|
|
|
refundOrder.setPaySq(0);
|
|
|
@@ -2341,7 +2384,18 @@ public class TscOrderChangeService {
|
|
|
|
|
|
orderChangeDao.createRefund(refundOrder);
|
|
|
|
|
|
- // 11. PG 연동
|
|
|
+ // 12. 주문 현금영수증 취소 정보 설정 (무통장입금 결제완료, 실시간계좌이체)
|
|
|
+ GiftCard orderCashReceipts = orderDao.getOrderCashReceiptsInfo(ordNo);
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(orderCashReceipts.getTradeNo())) {
|
|
|
+ orderCashReceipts.setModType("STSC");
|
|
|
+ orderCashReceipts.setCashReceiptsGb("payment");
|
|
|
+ orderCashReceipts.setUsGfcdAmt(orderCashReceipts.getAmt());
|
|
|
+
|
|
|
+ cashReceiptsList.add(orderCashReceipts);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 13. PG 연동
|
|
|
Payment pg = new Payment();
|
|
|
pg.setOrdNo(ordNo);
|
|
|
pg.setPayGb("O");
|
|
|
@@ -2383,6 +2437,19 @@ public class TscOrderChangeService {
|
|
|
|
|
|
orderChangeDao.updateRefundInfo(refundOrder);
|
|
|
}
|
|
|
+
|
|
|
+ // 14. 보증보험 취소 처리 (무통장입금 전 전체취소 시 처리)
|
|
|
+ if (TscConstants.OrderChangeStat.PAYMENT_BEFORE_CANCEL.value().equals(chgStat)) {
|
|
|
+ Order guarantee = new Order();
|
|
|
+ guarantee.setOrdNo(ordNo);
|
|
|
+
|
|
|
+ orderService.uSafeGuaranteePayedBeforeCancel(guarantee);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 15. 현금영수증 취소 처리
|
|
|
+ for (GiftCard cashReceipts : cashReceiptsList) {
|
|
|
+ kcpService.kcpCashReceiptCancel(cashReceipts);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -2420,20 +2487,21 @@ public class TscOrderChangeService {
|
|
|
result = orderRefundService.cnclRtnRefundAmt(cnclReqList);
|
|
|
|
|
|
// 4. 부분취소 처리 정보 설정
|
|
|
- result.setInt("ordNo", orderChange.getOrdNo()); // 주문번호
|
|
|
- result.setString("chgReason", orderChange.getChgReason()); // 변경사유
|
|
|
- result.setString("chgReasonNm", orderChange.getChgReasonNm()); // 변경사유명
|
|
|
- result.setString("chgMemo", orderChange.getChgMemo()); // 변경메모
|
|
|
- result.setString("accountNo", orderChange.getAccountNo()); // 환불계좌번호
|
|
|
- result.setString("accountNm", orderChange.getAccountNm()); // 환불계좌예금주명
|
|
|
- result.setString("bankCd", orderChange.getBankCd()); // 환불계좌은행코드
|
|
|
- result.setString("allLastCanYn", allLastCanYn); // 전체 마지막 취소 여부
|
|
|
- result.setString("reqGbn", orderChange.getReqGbn()); // 신청구분
|
|
|
- result.setString("ipAddress", orderChange.getIpAddress()); // IP주소
|
|
|
- result.setInt("custNo", orderChange.getCustNo()); // 고객번호
|
|
|
- result.setString("pgTid", refundPreInfo.getString("pgTid")); // PG거래ID
|
|
|
- result.setString("payMeans", refundPreInfo.getString("payMeans")); // 결제수단
|
|
|
- result.setString("pgGb", refundPreInfo.getString("pgGb")); // PG구분
|
|
|
+ result.setInt("ordNo", orderChange.getOrdNo()); // 주문번호
|
|
|
+ result.setString("chgReason", orderChange.getChgReason()); // 변경사유
|
|
|
+ result.setString("chgReasonNm", orderChange.getChgReasonNm()); // 변경사유명
|
|
|
+ result.setString("chgMemo", orderChange.getChgMemo()); // 변경메모
|
|
|
+ result.setString("accountNo", orderChange.getAccountNo()); // 환불계좌번호
|
|
|
+ result.setString("accountNm", orderChange.getAccountNm()); // 환불계좌예금주명
|
|
|
+ result.setString("bankCd", orderChange.getBankCd()); // 환불계좌은행코드
|
|
|
+ result.setString("allLastCanYn", allLastCanYn); // 전체 마지막 취소 여부
|
|
|
+ result.setString("reqGbn", orderChange.getReqGbn()); // 신청구분
|
|
|
+ result.setString("ipAddress", orderChange.getIpAddress()); // IP주소
|
|
|
+ result.setInt("custNo", orderChange.getCustNo()); // 고객번호
|
|
|
+ result.setString("pgTid", refundPreInfo.getString("pgTid")); // PG거래ID
|
|
|
+ result.setString("payMeans", refundPreInfo.getString("payMeans")); // 결제수단
|
|
|
+ result.setString("pgGb", refundPreInfo.getString("pgGb")); // PG구분
|
|
|
+ result.setString("cashAuthNo", refundPreInfo.getString("cashAuthNo")); // 현금영수증 승인번호
|
|
|
|
|
|
// 부분취소 처리
|
|
|
partialCancel(result, userNo);
|
|
|
@@ -2535,6 +2603,7 @@ public class TscOrderChangeService {
|
|
|
result.setString("pgTid", cnclRtn.getPgTid()); // PG거래ID
|
|
|
result.setString("payMeans", cnclRtn.getPayMeans()); // 결제수단
|
|
|
result.setString("pgGb", cnclRtn.getPgGb()); // PG구분
|
|
|
+ result.setString("cashAuthNo", cnclRtn.getCashAuthNo()); // 현금영수증 승인번호
|
|
|
result.set("cnclReqList", cnclReqList); // 취소신청목록
|
|
|
|
|
|
return result;
|