|
|
@@ -2033,7 +2033,7 @@ public class TscOrderChangeService {
|
|
|
orderChangeDao.createOrderDtlHstCancel(exchangeCancel);
|
|
|
|
|
|
// 3-3. TB_ORDER_DETAIL_ITEM 상태값 변경
|
|
|
- orderChangeDao.updateOrderDetailItemForExchangeCancel(exchangeCancel);
|
|
|
+ // orderChangeDao.updateOrderDetailItemForExchangeCancel(exchangeCancel);
|
|
|
|
|
|
// 3-4. TB_ORDER_DETAIL_ITEM_HST 생성
|
|
|
orderChangeDao.createOrderDetailItemHstForExchangeCancel(exchangeCancel);
|
|
|
@@ -3050,7 +3050,7 @@ public class TscOrderChangeService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 환불 컨펌
|
|
|
+ * 환불 컨펌 환불 정보
|
|
|
*
|
|
|
* @param OrderChange (ordChgSq, userNo)
|
|
|
* @return GagaMap
|
|
|
@@ -3099,242 +3099,12 @@ public class TscOrderChangeService {
|
|
|
orderChange.setCnclRtnReqQtyArr(cnclRtnReqQtyArr);
|
|
|
|
|
|
// 환불 사전 정보 조회
|
|
|
- GagaMap refundPreInfo = getRefundPreInfo(orderChange);
|
|
|
+ GagaMap refundPreInfo = getRefundPreInfo2(orderChange);
|
|
|
List<Order> cnclReqList = (List<Order>)refundPreInfo.get("cnclReqList");
|
|
|
|
|
|
- result = orderRefundService.cnclRtnRefundAmt(cnclReqList);
|
|
|
- String allCanYn = refundPreInfo.getString("allCanYn");
|
|
|
- // String allLastCanYn = refundPreInfo.getString("allLastCanYn");
|
|
|
+ result = orderRefundService.cnclRtnRefundAmt2(cnclReqList);
|
|
|
|
|
|
- if ("Y".equals(allCanYn)) {
|
|
|
- allRefund(orderChange);
|
|
|
- } else {
|
|
|
- // 환불금액계산
|
|
|
- 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.setString("cashAuthNo", refundPreInfo.getString("cashAuthNo")); // 현금영수증 승인번호
|
|
|
- // result.setString("batchYn", orderChange.getBatchYn());
|
|
|
- // 부분환불 처리
|
|
|
- partialRefund(result, userNo);
|
|
|
- }
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
-
|
|
|
- /**
|
|
|
- * 전체 환불 처리
|
|
|
- *
|
|
|
- * @param OrderChange (ordChgSq, userNo)
|
|
|
- * @author card007
|
|
|
- * @since 2021. 05. 24
|
|
|
- */
|
|
|
- public void allRefund(OrderChange orderChange) {
|
|
|
- Integer ordNo = orderChange.getOrdNo(); // 주문번호
|
|
|
- String chgGb = orderChange.getChgGb(); // 변경구분
|
|
|
- String chgReasonNm = orderChange.getChgReasonNm(); // 변경사유명
|
|
|
- String accountNo = orderChange.getAccountNo(); // 환불계좌번호
|
|
|
- String accountNm = orderChange.getAccountNm(); // 환불계좌주명
|
|
|
- String bankCd = orderChange.getBankCd(); // 환불은행
|
|
|
- Integer ordChgSq = orderChange.getOrdChgSq(); // 주문변경일련번호
|
|
|
- int regNo = orderChange.getUserNo(); // 등록자번호
|
|
|
- int updNo = orderChange.getUserNo(); // 수정자번호
|
|
|
-
|
|
|
- // 상태값 설정
|
|
|
- String ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_AFTER_CANCEL.value();
|
|
|
- String chgStat = "";
|
|
|
- if (TscConstants.OrderChangeGb.RETURN.value().equals(chgGb)) {
|
|
|
- chgStat = TscConstants.OrderChangeStat.RETURN_COMPLETE.value();
|
|
|
- } else if (TscConstants.OrderChangeGb.EXCHANGE.value().equals(chgGb)) {
|
|
|
- chgStat = TscConstants.OrderChangeStat.EXCHANGE_COMPLETE.value();
|
|
|
- }
|
|
|
-
|
|
|
- // 1. 주문변경상세 수정
|
|
|
- orderChange.setChgStat(chgStat);
|
|
|
- orderChangeDao.updateOrderChangeDtl(orderChange);
|
|
|
- orderChangeDao.createOrderChangeDetailHstForAllCancel(orderChange);
|
|
|
-
|
|
|
- // 반품일때 환불처리
|
|
|
- if (TscConstants.OrderChangeGb.RETURN.value().equals(chgGb)) {
|
|
|
- // 원주문 결제정보 조회
|
|
|
- Payment payment = new Payment();
|
|
|
- payment.setOrdNo(ordNo);
|
|
|
- payment = orderChangeDao.getPaymentInfo(payment);
|
|
|
-
|
|
|
- // 환불금액 설정
|
|
|
- int refundAmt = payment.getPayAmt();
|
|
|
-
|
|
|
- // 주문 전체취소 상태값 처리
|
|
|
- String modType;
|
|
|
- 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 무통장입금 전체취소
|
|
|
- } else {
|
|
|
- modType = "STSC"; // KCP 전체취소
|
|
|
- }
|
|
|
-
|
|
|
- // 2. 사용포인트원복
|
|
|
- Order vo = new Order();
|
|
|
- vo.setOrdNo(ordNo);
|
|
|
- vo.setOccurGb(TscConstants.PointOccurGb.ORD_USE_POINT.value());
|
|
|
- vo.setUpdNo(updNo);
|
|
|
-
|
|
|
- for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
- point.setOccurGb(TscConstants.PointOccurGb.ORD_USE_POINT_CANCEL.value());
|
|
|
- point.setPntUploadStat(TscConstants.PntUploadStat.APPLY_COMPLETE.value());
|
|
|
- point.setOccurDtlDesc("포인트사용취소");
|
|
|
- point.setPntAmt(point.getPntAmt() * -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.setPntUploadStat(TscConstants.PntUploadStat.APPLY_EXPECT.value());
|
|
|
- point.setOccurDtlDesc("예정포인트적립취소");
|
|
|
- point.setPntAmt(point.getPntAmt() * -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(ordChgSq);
|
|
|
- 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);
|
|
|
-
|
|
|
- // 9. 주문상세 및 주문상세단품 정보 설정
|
|
|
- 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);
|
|
|
-
|
|
|
- // 11. PG 연동
|
|
|
- Payment pg = new Payment();
|
|
|
- pg.setOrdNo(ordNo);
|
|
|
- pg.setPayGb("O");
|
|
|
- pg.setPgTid(payment.getPgTid());
|
|
|
- pg.setPayAmt(refundAmt);
|
|
|
- pg.setLeftAmt(refundAmt);
|
|
|
- pg.setRegNo(regNo);
|
|
|
- pg.setUpdNo(updNo);
|
|
|
- pg.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
-
|
|
|
- // 상품권으로만 결제 시 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.setAccountNm(accountNm);
|
|
|
- pg.setAccountNo(accountNo);
|
|
|
- pg.setBankCd(bankCd);
|
|
|
- pg.setBatchYn(orderChange.getBatchYn());
|
|
|
-
|
|
|
- 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)) {
|
|
|
- pg.setPayMeans(payment.getPayMeans());
|
|
|
- kakaoPayService.cancelKakaoPayment(pg);
|
|
|
- }
|
|
|
-
|
|
|
- // 11. 환불금액 정보 수정
|
|
|
- Order refundOrder = new Order();
|
|
|
- refundOrder.setPaySq(pg.getPaySq());
|
|
|
-
|
|
|
- orderChangeDao.updateRefundInfo(refundOrder);
|
|
|
- }
|
|
|
-
|
|
|
- // 13. 상품권 현금영수증 취소 처리
|
|
|
- GiftCard giftCardCashReceipts = orderDao.getGiftCardReceiptInfo(ordNo);
|
|
|
-
|
|
|
- if (giftCardCashReceipts != null && StringUtils.isNotBlank(giftCardCashReceipts.getTradeNo())) {
|
|
|
- giftCardCashReceipts.setModType("STSC");
|
|
|
- giftCardCashReceipts.setUsGfcdAmt(giftCardCashReceipts.getAmt());
|
|
|
-
|
|
|
- kcpService.kcpCashReceiptCancel(giftCardCashReceipts);
|
|
|
- }
|
|
|
- } else {
|
|
|
- // TODO
|
|
|
- // 교환 처리
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 부분 환불 처리
|
|
|
- *
|
|
|
- * @param GagaMap, Integer
|
|
|
- * @author card007
|
|
|
- * @since 2021. 05. 24
|
|
|
- */
|
|
|
- public void partialRefund(GagaMap map, Integer userNo) {
|
|
|
-
|
|
|
- }
|
|
|
}
|