|
|
@@ -21,6 +21,7 @@ import com.gagaframework.web.rest.server.GagaResponseStatus;
|
|
|
import com.style24.core.biz.dao.TscNaverPayDao;
|
|
|
import com.style24.core.biz.dao.TscOrderChangeDao;
|
|
|
import com.style24.core.biz.dao.TscOrderDao;
|
|
|
+import com.style24.core.biz.dao.TscPointDao;
|
|
|
import com.style24.core.support.env.TscConstants;
|
|
|
import com.style24.core.support.message.TscMessageByLocale;
|
|
|
import com.style24.core.support.util.CryptoUtils;
|
|
|
@@ -29,6 +30,7 @@ import com.style24.persistence.domain.GiftCard;
|
|
|
import com.style24.persistence.domain.Order;
|
|
|
import com.style24.persistence.domain.OrderChange;
|
|
|
import com.style24.persistence.domain.Payment;
|
|
|
+import com.style24.persistence.domain.Point;
|
|
|
import com.style24.persistence.domain.WmsDelivery;
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -77,6 +79,9 @@ public class TscOrderChangeService {
|
|
|
|
|
|
@Autowired
|
|
|
private TscDeliveryService deliveryService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TscPointDao pointDao;
|
|
|
|
|
|
/**
|
|
|
* 주문변경 대상목록 조회 (취소, 반품, 교환)
|
|
|
@@ -357,8 +362,29 @@ public class TscOrderChangeService {
|
|
|
index++;
|
|
|
}
|
|
|
|
|
|
- // 5-2-4. 사용포인트원복
|
|
|
+ // 5-2-4. 적립예정포인트 수정
|
|
|
+ // 2021.11.19 card007 적립예정포인트는 교환상품의 ORD_DTL_NO로 처리한다.
|
|
|
+ int savePntAmt = vo.getSavePntAmt();
|
|
|
+ vo.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT.value());
|
|
|
+ vo.setFirstOrdDtlNo(vo.getOrdDtlNo());
|
|
|
+
|
|
|
+ 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(savePntAmt * -1);
|
|
|
+ point.setRegNo(userNo);
|
|
|
+ point.setUpdNo(userNo);
|
|
|
+
|
|
|
+ // 적립예정포인트 취소 이력 생성
|
|
|
+ orderChangeDao.createCustPointHstRollback(point);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 5-2-5. 사용포인트원복
|
|
|
+ // 2021.11.18 card007 사용포인트 및 원복은 최초주문상세번호로 처리
|
|
|
int pntDcAmt = vo.getPntDcAmt();
|
|
|
+ int firstOrdDtlNo = orderChangeDao.getFirstOrdDtlNo(vo);
|
|
|
+ vo.setFirstOrdDtlNo(firstOrdDtlNo);
|
|
|
vo.setOccurGb(TscConstants.PointOccurGb.ORD_USE_POINT.value());
|
|
|
|
|
|
for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
@@ -385,25 +411,13 @@ public class TscOrderChangeService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 5-2-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.setPntUploadStat(TscConstants.PntUploadStat.APPLY_EXPECT.value());
|
|
|
- point.setOccurDtlDesc("예정포인트적립취소");
|
|
|
- point.setPntAmt(savePntAmt * -1);
|
|
|
- point.setRegNo(userNo);
|
|
|
- point.setUpdNo(userNo);
|
|
|
-
|
|
|
- // 적립예정포인트 취소 이력 생성
|
|
|
- orderChangeDao.createCustPointHstRollback(point);
|
|
|
- }
|
|
|
-
|
|
|
// 5-2-6. 상품쿠폰원복
|
|
|
if (leftQty == 0) {
|
|
|
- orderChangeDao.updateGoodsCpnRollback(vo);
|
|
|
+ // 2021.11.19 card007 FIRST_ORD_DTL_NO 조회해서 GOODS_CPN_AMT = 0이면 원복 해줌
|
|
|
+ int goodsCpnDcAmt = orderChangeDao.getGoodsCpnDcAmt(vo);
|
|
|
+ if (goodsCpnDcAmt == 0) {
|
|
|
+ orderChangeDao.updateGoodsCpnRollback(vo);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 5-2-7. 사용상품권 원복
|
|
|
@@ -1360,6 +1374,8 @@ public class TscOrderChangeService {
|
|
|
}
|
|
|
|
|
|
if (preOrdDtlNo != ordDtlNo) {
|
|
|
+ Integer custNo = 0;
|
|
|
+
|
|
|
// 5. TB_ORDER_DETAIL 등록
|
|
|
Order ordDtl = new Order();
|
|
|
ordDtl.setOrdNo(ordNo);
|
|
|
@@ -1431,6 +1447,26 @@ public class TscOrderChangeService {
|
|
|
orderChangeDao.updateOrderDetail(ordDtl);
|
|
|
orderChangeDao.createOrderDetailHstCnclRtn(ordDtl);
|
|
|
|
|
|
+ // 2021.11.19 card007 적립예정포인트 차감 후 신규 로우 생성
|
|
|
+ if (ordDtlSavePntAmt > 0) {
|
|
|
+ ordDtl.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT.value());
|
|
|
+ ordDtl.setFirstOrdDtlNo(ordDtl.getOrdDtlNo());
|
|
|
+
|
|
|
+ for (Order point : orderChangeDao.getCustPointHst(ordDtl)) {
|
|
|
+ point.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT_CANCEL.value());
|
|
|
+ point.setPntUploadStat(TscConstants.PntUploadStat.APPLY_EXPECT.value());
|
|
|
+ point.setOccurDtlDesc("예정포인트적립취소");
|
|
|
+ point.setPntAmt(ordDtlSavePntAmt * -1);
|
|
|
+ point.setRegNo(regNo);
|
|
|
+ point.setUpdNo(updNo);
|
|
|
+
|
|
|
+ // 적립예정포인트 차감
|
|
|
+ orderChangeDao.createCustPointHstRollback(point);
|
|
|
+
|
|
|
+ custNo = point.getCustNo();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// 선발송 결제완료 상태값 설정
|
|
|
ordDtl.setOrdDtlStat(TscConstants.OrderDetailStat.PAYMENT_COMPLETE.value());
|
|
|
} else {
|
|
|
@@ -1472,6 +1508,24 @@ public class TscOrderChangeService {
|
|
|
orderChangeDao.createOrderChangeDetail(orderChangeDetail);
|
|
|
orderChangeDao.createOrderChangeDetailHst(orderChangeDetail);
|
|
|
|
|
|
+ // 2021.11.19 card007 적립예정포인트 차감 후 신규 로우 생성
|
|
|
+ if ("Y".equals(wdBfSendYn) && custNo > 0 && ordDtlSavePntAmt > 0) {
|
|
|
+ // 적립예정포인트 신규 로우 생성
|
|
|
+ Point point = new Point();
|
|
|
+ point.setCustNo(custNo);
|
|
|
+ point.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT.value());
|
|
|
+ point.setOccurDtlDesc("예정포인트적립");
|
|
|
+ point.setPntAmt(ordDtlSavePntAmt);
|
|
|
+ point.setCustPntSq(0);
|
|
|
+ point.setOrdNo(ordNo);
|
|
|
+ point.setOrdDtlNo(exchangeOrdDtlNo);
|
|
|
+ point.setReviewSq(0);
|
|
|
+ point.setPntUploadStat(TscConstants.PntUploadStat.APPLY_EXPECT.value());
|
|
|
+ point.setRegNo(regNo);
|
|
|
+ point.setUpdNo(updNo);
|
|
|
+ pointDao.createCustomerPointHst(point);
|
|
|
+ }
|
|
|
+
|
|
|
preOrdDtlNo = ordDtlNo;
|
|
|
}
|
|
|
|
|
|
@@ -2887,8 +2941,29 @@ public class TscOrderChangeService {
|
|
|
index++;
|
|
|
}
|
|
|
|
|
|
- // 4-2-4. 사용포인트원복
|
|
|
+ // 4-2-4. 적립예정포인트 수정
|
|
|
+ // 2021.11.19 card007 적립예정포인트는 교환상품의 ORD_DTL_NO로 처리한다.
|
|
|
+ int savePntAmt = vo.getSavePntAmt();
|
|
|
+ vo.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT.value());
|
|
|
+ vo.setFirstOrdDtlNo(vo.getOrdDtlNo());
|
|
|
+
|
|
|
+ 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(savePntAmt * -1);
|
|
|
+ point.setRegNo(userNo);
|
|
|
+ point.setUpdNo(userNo);
|
|
|
+
|
|
|
+ // 적립예정포인트 취소 이력 생성
|
|
|
+ orderChangeDao.createCustPointHstRollback(point);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4-2-5. 사용포인트원복
|
|
|
+ // 2021.11.18 card007 사용포인트 원복은 최초주문상세번호로 처리
|
|
|
int pntDcAmt = vo.getPntDcAmt();
|
|
|
+ int firstOrdDtlNo = orderChangeDao.getFirstOrdDtlNo(vo);
|
|
|
+ vo.setFirstOrdDtlNo(firstOrdDtlNo);
|
|
|
vo.setOccurGb(TscConstants.PointOccurGb.ORD_USE_POINT.value());
|
|
|
|
|
|
for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
@@ -2915,25 +2990,13 @@ public class TscOrderChangeService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 4-2-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.setPntUploadStat(TscConstants.PntUploadStat.APPLY_EXPECT.value());
|
|
|
- point.setOccurDtlDesc("예정포인트적립취소");
|
|
|
- point.setPntAmt(savePntAmt * -1);
|
|
|
- point.setRegNo(userNo);
|
|
|
- point.setUpdNo(userNo);
|
|
|
-
|
|
|
- // 적립예정포인트 취소 이력 생성
|
|
|
- orderChangeDao.createCustPointHstRollback(point);
|
|
|
- }
|
|
|
-
|
|
|
// 4-2-6. 상품쿠폰원복
|
|
|
if (leftQty == 0) {
|
|
|
- orderChangeDao.updateGoodsCpnRollback(vo);
|
|
|
+ // 2021.11.19 card007 FIRST_ORD_DTL_NO 조회해서 GOODS_CPN_AMT = 0이면 원복 해줌
|
|
|
+ int goodsCpnDcAmt = orderChangeDao.getGoodsCpnDcAmt(vo);
|
|
|
+ if (goodsCpnDcAmt == 0) {
|
|
|
+ orderChangeDao.updateGoodsCpnRollback(vo);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 4-2-7. 사용상품권 원복
|
|
|
@@ -3304,640 +3367,100 @@ public class TscOrderChangeService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 마이페이지 부분취소 처리
|
|
|
+ * 전체 환불 처리
|
|
|
*
|
|
|
- * @param GagaMap
|
|
|
- * @return GagaMap
|
|
|
+ * @param GagaMap, Integer
|
|
|
* @author card007
|
|
|
- * @since 2021. 05. 24
|
|
|
+ * @since 2021. 08. 12
|
|
|
*/
|
|
|
@SuppressWarnings("unchecked")
|
|
|
- @Transactional("shopTxnManager")
|
|
|
- public GagaMap partialRefundBak(GagaMap map, Integer userNo) {
|
|
|
-
|
|
|
- // 1. 취소요청목록 및 정보 설정
|
|
|
- List<Order> cancelOrderRefundList = (List<Order>) map.get("cancelOrderRefundList"); // 취소환불금액 목록 (주문상세단품 단위)
|
|
|
- List<Order> cancelDelvRefundList = (List<Order>) map.get("cancelDelvRefundList"); // 취소환불배송금액 목록 (DELV_FEE_CD 단위)
|
|
|
-
|
|
|
- int ordNo = map.getInt("ordNo"); // 주문번호
|
|
|
- int ordChgSq = map.getInt("ordChgSq"); // 주문변경일련번호
|
|
|
- String chgReason = map.getString("chgReason"); // 변경사유
|
|
|
- String chgReasonNm = map.getString("chgReasonNm"); // 변경사유명
|
|
|
- String chgMemo = map.getString("chgMemo"); // 변경메모
|
|
|
- String allLastCanYn = map.getString("allLastCanYn"); // 마지막 취소 여부
|
|
|
- String ipAddress = map.getString("ipAddress"); // IP주소
|
|
|
- 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"); // 환불계좌은행코드
|
|
|
- String reqGbn = map.getString("reqGbn"); // 신청구분
|
|
|
- String chgGb = TscConstants.OrderChangeGb.CANCEL.value(); // 취소요청 (공톹코드:G680)
|
|
|
- String ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_AFTER_CANCEL.value(); // 주문상세상태
|
|
|
- String chgStat = TscConstants.OrderChangeStat.RETURN_COMPLETE.value(); // 주문변경상태
|
|
|
- String modType = "";
|
|
|
- String batchYn = map.getString("batchYn"); // 배치여부
|
|
|
- String delvExpnYn = map.getString("delvExpnYn"); // 출고예외여부
|
|
|
- String mallGb = map.getString("mallGb"); // 몰구분
|
|
|
- String pgStat = map.getString("pgStat"); // PG 점프
|
|
|
- int codFee = map.getInt("codFee"); // 착불비
|
|
|
- String codFeeYn = map.getString("codFeeYn"); // 착불비여부
|
|
|
- String enCloseFeeYn = map.getString("enCloseFeeYn"); // 동봉비여부
|
|
|
- int enCloseFee = map.getInt("enCloseFee"); // 동봉비
|
|
|
- String wdInvoiceNo = map.getString("codFeeYn"); // 회수송장번호
|
|
|
- String wdGb = map.getString("wdGb"); // 회수구분
|
|
|
- int addPayCost = map.getInt("addPayCost"); // 추갸배송비
|
|
|
+ public void allRefund(GagaMap map, Integer userNo) {
|
|
|
+ // 1. 변수 설정
|
|
|
+ Integer ordNo = map.getInt("ordNo"); // 주문번호
|
|
|
+ Integer custNo = map.getInt("custNo"); // 고객번호
|
|
|
+ String chgReasonNm = map.getString("chgReasonNm"); // 변경사유명
|
|
|
+ String chgGb = TscConstants.OrderChangeGb.RETURN.value(); // 변경구분
|
|
|
+ String accountNo = map.getString("accountNo"); // 환불계좌번호
|
|
|
+ String accountNm = map.getString("accountNm"); // 환불계좌주명
|
|
|
+ String bankCd = map.getString("bankCd"); // 환불은행
|
|
|
+ Integer ordChgSq = map.getInt("ordChgSq"); // 주문변경일련번호
|
|
|
+ int regNo = userNo; // 등록자번호
|
|
|
+ int updNo = userNo; // 수정자번호
|
|
|
+ String pgStat = map.getString("pgStat"); // PG 점프
|
|
|
+ int depositAmt = map.getInt("depositAmt"); // PG 점프 입금액
|
|
|
+ String codFeeYn = map.getString("codFeeYn"); // 착불비여부
|
|
|
+ int codFee = map.getInt("codFee"); // 착불비
|
|
|
+ String enCloseFeeYn = map.getString("enCloseFeeYn"); // 동봉비여부
|
|
|
+ int enCloseFee = map.getInt("enCloseFee"); // 동봉비
|
|
|
+ String wdInvoiceNo = map.getString("wdInvoiceNo"); // 회수송장번호
|
|
|
+ String delvFeeCd = map.getString("delvFeeCd"); // 배송비정책코드
|
|
|
+ String supplyCompCd = "";
|
|
|
|
|
|
- // 무통장입금 결제 주문 전체취소 상태값 처리
|
|
|
- // 2021.09.09 페이코 조건 누락 추가
|
|
|
- if (TscConstants.PgGb.KCP.value().equals(pgGb) || TscConstants.PgGb.PAYCO.value().equals(pgGb)) {
|
|
|
- if (TscConstants.PayMeans.BANK_DEPOSIT.value().equals(payMeans)) {
|
|
|
- modType = "STPD"; // KCP 무통장입금 부분취소
|
|
|
- } else {
|
|
|
- modType = "STPC"; // KCP 부분취소
|
|
|
- }
|
|
|
+ List<Order> cancelDelvRefundList = (List<Order>) map.get("cancelDelvRefundList"); // 취소환불배송금액 목록 (DELV_FEE_CD 단위)
|
|
|
+ if (cancelDelvRefundList != null && cancelDelvRefundList.size() > 0) {
|
|
|
+ supplyCompCd = cancelDelvRefundList.iterator().next().getSupplyCompCd();
|
|
|
}
|
|
|
|
|
|
- log.info("cancelDelvRefundList {}", cancelDelvRefundList.iterator().next());
|
|
|
- log.info("cancelOrderRefundList {}",cancelOrderRefundList.iterator().next());
|
|
|
-
|
|
|
- // 3. 주문변경정보, 주문정보, 환불정보 (배송정책코드 별)
|
|
|
- List<Payment> pgList = new ArrayList<>();
|
|
|
- List<GiftCard> cashReceiptsList = new ArrayList<>();
|
|
|
- for (Order obj : cancelDelvRefundList) {
|
|
|
+ // 2. 상태값 설정
|
|
|
+ String ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_AFTER_CANCEL.value();
|
|
|
+ String chgStat = TscConstants.OrderChangeStat.RETURN_COMPLETE.value();
|
|
|
+ map.setString("chgGb", chgGb);
|
|
|
|
|
|
- // 취소금액 있을 시 처리
|
|
|
- if (obj.getCnclRtnAmt() > 0) {
|
|
|
- // 3-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);
|
|
|
- orderChange.setOrdChgSq(ordChgSq);
|
|
|
+ // 3. 주문변경상세 수정
|
|
|
+ OrderChange orderChange = new OrderChange();
|
|
|
+ orderChange.setOrdChgSq(ordChgSq);
|
|
|
+ orderChange.setChgStat(chgStat);
|
|
|
+ orderChange.setRegNo(regNo);
|
|
|
+ orderChange.setUpdNo(updNo);
|
|
|
+ orderChangeDao.updateOrderChangeDtl(orderChange);
|
|
|
+ orderChangeDao.createOrderChangeDetailHstForAllCancel(orderChange);
|
|
|
|
|
|
- // 3-2. 주문상세정보 수정
|
|
|
- for (Order vo : cancelOrderRefundList) {
|
|
|
- vo.setRegNo(userNo);
|
|
|
- vo.setUpdNo(userNo);
|
|
|
- vo.setOrdDtlStat(ordDtlStat);
|
|
|
+ // 4. 원주문 결제정보 조회
|
|
|
+ Payment payment = new Payment();
|
|
|
+ payment.setOrdNo(ordNo);
|
|
|
+ payment = orderChangeDao.getPaymentInfo(payment);
|
|
|
|
|
|
- // 배송정책코드 별 주문상세 처리
|
|
|
- if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd()) && vo.getOrdCanChgQty() > 0) {
|
|
|
- // 주문상세 별 전체취소여부 설정
|
|
|
- int leftQty = vo.getOrdQty() - vo.getCnclRtnQty() - vo.getOrdCanChgQty();
|
|
|
+ // 5. 환불금액 설정
|
|
|
+ Order returnOrderInfo = new Order();
|
|
|
+ returnOrderInfo.setOrdNo(ordNo);
|
|
|
+ returnOrderInfo.setDelvFeeCd(delvFeeCd);
|
|
|
+ map.set("returnOrderInfo", this.getReturnOrderInfo(returnOrderInfo));
|
|
|
+ OrderChange refundInfo = this.calculateRefundAmt(map);
|
|
|
+ int refundAmt = refundInfo.getRefundAmt();
|
|
|
|
|
|
- // 3-2-1. 주문상세정보 수정
|
|
|
- orderChangeDao.updateOrderDetail(vo);
|
|
|
+ // 6. 주문 전체취소 상태값 설정
|
|
|
+ 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())) {
|
|
|
|
|
|
- // 3-2-2. 주문상세 이력 등록
|
|
|
- orderChangeDao.createOrderDetailHstCnclRtn(vo);
|
|
|
+ modType = "STHD"; // KCP 무통장입금 전체취소
|
|
|
+ } else {
|
|
|
+ modType = "STSC"; // KCP 전체취소
|
|
|
+ }
|
|
|
|
|
|
- // 3-2-3. 주문상세단품정보 수정 및 주문상세단품이력 등록
|
|
|
- // 주문상세단품정보조회
|
|
|
- Collection<Order> orderDetailItemList = orderChangeDao.getOrderDetailItemForCnclRtn(vo);
|
|
|
- int ordDtlOrdAmt = orderDetailItemList.iterator().next().getOrdAmt();
|
|
|
- int ordDtlCnclRtnAmt = orderDetailItemList.iterator().next().getCnclRtnAmt();
|
|
|
- int ordDtlCpn1DcAmt = orderDetailItemList.iterator().next().getCpn1DcAmt();
|
|
|
- int ordDtlTmtb1DcAmt = orderDetailItemList.iterator().next().getTmtb1DcAmt();
|
|
|
- int ordDtlTmtb2DcAmt = orderDetailItemList.iterator().next().getTmtb2DcAmt();
|
|
|
- int ordDtlGoodsCpnDcAmt = orderDetailItemList.iterator().next().getGoodsCpnDcAmt();
|
|
|
- int ordDtlCartCpnDcAmt = orderDetailItemList.iterator().next().getCartCpnDcAmt();
|
|
|
- int ordDtlPntDcAmt = orderDetailItemList.iterator().next().getPntDcAmt();
|
|
|
- int ordDtlPrePntDcAmt = orderDetailItemList.iterator().next().getPrePntDcAmt();
|
|
|
- int ordDtlSavePntAmt = orderDetailItemList.iterator().next().getSavePntAmt();
|
|
|
- int ordDtlRealOrdAmt = orderDetailItemList.iterator().next().getRealOrdAmt();
|
|
|
- int ordDtlGfcdUseAmt = orderDetailItemList.iterator().next().getGfcdUseAmt();
|
|
|
+ // 7. 사용포인트원복
|
|
|
+ Order vo = new Order();
|
|
|
+ vo.setOrdNo(ordNo);
|
|
|
+ vo.setCustNo(custNo);
|
|
|
+ vo.setOccurGb(TscConstants.PointOccurGb.ORD_USE_POINT.value());
|
|
|
+ vo.setUpdNo(updNo);
|
|
|
|
|
|
- // 주문상세단품단위 금액 등록
|
|
|
- int length = orderDetailItemList.size();
|
|
|
- int index = 1;
|
|
|
- int leftOrdAmt = ordDtlOrdAmt;
|
|
|
- int leftCnclRtnAmt = ordDtlCnclRtnAmt;
|
|
|
- int leftCpn1DcAmt = ordDtlCpn1DcAmt;
|
|
|
- int leftTmtb1DcAmt = ordDtlTmtb1DcAmt;
|
|
|
- int leftTmtb2DcAmt = ordDtlTmtb2DcAmt;
|
|
|
- int leftGoodsCpnDcAmt = ordDtlGoodsCpnDcAmt;
|
|
|
- int leftCartCpnDcAmt = ordDtlCartCpnDcAmt;
|
|
|
- int leftPntDcAmt = ordDtlPntDcAmt;
|
|
|
- int leftPrePntDcAmt = ordDtlPrePntDcAmt;
|
|
|
- int leftSavePntAmt = ordDtlSavePntAmt;
|
|
|
- int leftRealOrdAmt = ordDtlRealOrdAmt;
|
|
|
- int leftGfcdUseAmt = ordDtlGfcdUseAmt;
|
|
|
+ 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);
|
|
|
|
|
|
- for (Order orderDetailItem : orderDetailItemList) {
|
|
|
- double dtlOrdAmt = orderDetailItem.getDtlOrdAmt();
|
|
|
- double dtlItemOrdAmt = orderDetailItem.getDtlItemOrdAmt();
|
|
|
- double tempDivD = (dtlItemOrdAmt / dtlOrdAmt) * 100;
|
|
|
+ // 포인트 사용 취소 이력 생성 및 포인트 수정
|
|
|
+ orderChangeDao.createCustPointHstRollback(point);
|
|
|
+ orderChangeDao.updateCustPointRollback(point);
|
|
|
+ }
|
|
|
|
|
|
- int tempDiv = Integer.parseInt(String.valueOf(Math.round(tempDivD)));
|
|
|
-
|
|
|
- if (index == length) {
|
|
|
- orderDetailItem.setCnclRtnAmt(leftCnclRtnAmt);
|
|
|
- orderDetailItem.setCpn1DcAmt(leftCpn1DcAmt);
|
|
|
- orderDetailItem.setTmtb1DcAmt(leftTmtb1DcAmt);
|
|
|
- orderDetailItem.setTmtb2DcAmt(leftTmtb2DcAmt);
|
|
|
- orderDetailItem.setGoodsCpnDcAmt(leftGoodsCpnDcAmt);
|
|
|
- orderDetailItem.setCartCpnDcAmt(leftCartCpnDcAmt);
|
|
|
- orderDetailItem.setPrePntDcAmt(leftPrePntDcAmt);
|
|
|
- orderDetailItem.setPntDcAmt(leftPntDcAmt);
|
|
|
- orderDetailItem.setGfcdUseAmt(leftGfcdUseAmt);
|
|
|
- orderDetailItem.setRealOrdAmt(leftRealOrdAmt);
|
|
|
- orderDetailItem.setSavePntAmt(leftSavePntAmt);
|
|
|
-
|
|
|
- } else {
|
|
|
- orderDetailItem.setCnclRtnAmt((ordDtlCnclRtnAmt * tempDiv) / 100);
|
|
|
- orderDetailItem.setCpn1DcAmt((ordDtlCpn1DcAmt * tempDiv) / 100);
|
|
|
- orderDetailItem.setTmtb1DcAmt((ordDtlTmtb1DcAmt * tempDiv) / 100);
|
|
|
- orderDetailItem.setTmtb2DcAmt((ordDtlTmtb2DcAmt * tempDiv) / 100);
|
|
|
- orderDetailItem.setGoodsCpnDcAmt((ordDtlGoodsCpnDcAmt * tempDiv) / 100);
|
|
|
- orderDetailItem.setCartCpnDcAmt((ordDtlCartCpnDcAmt * tempDiv) / 100);
|
|
|
- orderDetailItem.setPrePntDcAmt((ordDtlPrePntDcAmt * tempDiv) / 100);
|
|
|
- orderDetailItem.setPntDcAmt((ordDtlPntDcAmt * tempDiv) / 100);
|
|
|
- orderDetailItem.setGfcdUseAmt((ordDtlGfcdUseAmt * tempDiv) / 100);
|
|
|
- orderDetailItem.setRealOrdAmt((ordDtlRealOrdAmt * tempDiv) / 100);
|
|
|
- orderDetailItem.setSavePntAmt((ordDtlSavePntAmt * tempDiv) / 100);
|
|
|
-
|
|
|
- leftCnclRtnAmt -= ((ordDtlCnclRtnAmt * tempDiv) / 100);
|
|
|
- leftCpn1DcAmt -= ((ordDtlCpn1DcAmt * tempDiv) / 100);
|
|
|
- leftTmtb1DcAmt -= ((ordDtlTmtb1DcAmt * tempDiv) / 100);
|
|
|
- leftTmtb2DcAmt -= ((ordDtlTmtb2DcAmt * tempDiv) / 100);
|
|
|
- leftGoodsCpnDcAmt -= ((ordDtlGoodsCpnDcAmt * tempDiv) / 100);
|
|
|
- leftCartCpnDcAmt -= ((ordDtlCartCpnDcAmt * tempDiv) / 100);
|
|
|
- leftPrePntDcAmt -= ((ordDtlPrePntDcAmt * tempDiv) / 100);
|
|
|
- leftPntDcAmt -= ((ordDtlPntDcAmt * tempDiv) / 100);
|
|
|
- leftGfcdUseAmt -= ((ordDtlGfcdUseAmt * tempDiv) / 100);
|
|
|
- leftRealOrdAmt -= ((ordDtlRealOrdAmt * tempDiv) / 100);
|
|
|
- leftSavePntAmt -= ((ordDtlSavePntAmt * tempDiv) / 100);
|
|
|
- }
|
|
|
-
|
|
|
- orderDetailItem.setRegNo(userNo);
|
|
|
- orderDetailItem.setUpdNo(userNo);
|
|
|
- orderDetailItem.setOrdDtlStat(ordDtlStat);
|
|
|
-
|
|
|
- // 2021.06.25 환불컨펌 (반품완료) (정산구분값추가)
|
|
|
- // TODO 환불컨펌시 확정후반품 처리 체크 로직 추가 (TB_ORDER_DETAIL_ITEM_HST 배송중 일때 반품완료, 결제완료일때 취소완료)
|
|
|
- // 2021.07.07 확정후반품 로직 추가
|
|
|
- int cnt = orderChangeDao.getOrderDetailItem20Cnt(orderDetailItem);
|
|
|
- if (cnt > 0) {
|
|
|
- orderDetailItem.setOrdDtlStat(TscConstants.OrdDtlItemStat.SALE_RETURN_RETURN_COMPLETE.value());
|
|
|
- } else {
|
|
|
- orderDetailItem.setOrdDtlStat(TscConstants.OrdDtlItemStat.SALE_RETURN_SOLDOUT_CANCEL.value());
|
|
|
- }
|
|
|
-
|
|
|
- orderDetailItem.setCnclRtnQty(vo.getOrdCanChgQty());
|
|
|
- orderDetailItem.setOrdChgSq(ordChgSq);
|
|
|
- orderChangeDao.createOrderDetailItemHst(orderDetailItem);
|
|
|
-
|
|
|
- orderChangeDao.updateOrderDetailItem(orderDetailItem);
|
|
|
-
|
|
|
- index++;
|
|
|
- }
|
|
|
-
|
|
|
- // 3-2-4. 사용포인트원복
|
|
|
- int pntDcAmt = vo.getPntDcAmt();
|
|
|
- vo.setOccurGb(TscConstants.PointOccurGb.ORD_USE_POINT.value());
|
|
|
-
|
|
|
- for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
- if (pntDcAmt > 0) {
|
|
|
- int pntAmt = point.getPntAmt() * -1;
|
|
|
-
|
|
|
- if (pntDcAmt < pntAmt) {
|
|
|
- point.setPntAmt(pntDcAmt);
|
|
|
- pntDcAmt -= pntDcAmt;
|
|
|
- } else {
|
|
|
- point.setPntAmt(pntAmt);
|
|
|
- pntDcAmt -= pntAmt;
|
|
|
- }
|
|
|
-
|
|
|
- point.setOccurGb(TscConstants.PointOccurGb.ORD_USE_POINT_CANCEL.value());
|
|
|
- point.setPntUploadStat(TscConstants.PntUploadStat.APPLY_COMPLETE.value());
|
|
|
- point.setOccurDtlDesc("포인트사용취소");
|
|
|
- point.setRegNo(userNo);
|
|
|
- point.setUpdNo(userNo);
|
|
|
-
|
|
|
- // 포인트 사용 취소 이력 생성 및 포인트 수정
|
|
|
- orderChangeDao.createCustPointHstRollback(point);
|
|
|
- orderChangeDao.updateCustPointRollback(point);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 3-2-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.setPntUploadStat(TscConstants.PntUploadStat.APPLY_EXPECT.value());
|
|
|
- point.setOccurDtlDesc("예정포인트적립취소");
|
|
|
- point.setPntAmt(savePntAmt * -1);
|
|
|
- point.setRegNo(userNo);
|
|
|
- point.setUpdNo(userNo);
|
|
|
-
|
|
|
- // 적립예정포인트 취소 이력 생성
|
|
|
- orderChangeDao.createCustPointHstRollback(point);
|
|
|
- }
|
|
|
-
|
|
|
- // 3-2-6. 상품쿠폰원복
|
|
|
- if (leftQty == 0) {
|
|
|
- orderChangeDao.updateGoodsCpnRollback(vo);
|
|
|
- }
|
|
|
-
|
|
|
- // 3-2-7. 사용상품권 원복
|
|
|
- int gfcdUseAmt = vo.getGfcdUseAmt();
|
|
|
-
|
|
|
- for (Order giftCard : orderChangeDao.getCustGiftCardHst(vo)) {
|
|
|
- if (gfcdUseAmt > 0) {
|
|
|
- int gfcdAmt = giftCard.getGfcdAmt() * -1;
|
|
|
-
|
|
|
- if (gfcdUseAmt < gfcdAmt) {
|
|
|
- giftCard.setGfcdAmt(gfcdUseAmt);
|
|
|
- gfcdUseAmt -= gfcdUseAmt;
|
|
|
- } else {
|
|
|
- giftCard.setGfcdAmt(gfcdAmt);
|
|
|
- gfcdUseAmt -= gfcdAmt;
|
|
|
- }
|
|
|
-
|
|
|
- giftCard.setOccurGb(TscConstants.GiftCardOccurGb.USE_GIFTCARD_CANCEL.value());
|
|
|
- giftCard.setOccurDtlDesc("상품권사용취소");
|
|
|
- giftCard.setRegNo(userNo);
|
|
|
- giftCard.setUpdNo(userNo);
|
|
|
-
|
|
|
- // 포인트 사용 취소 이력 생성 및 포인트 수정
|
|
|
- orderChangeDao.createCustGiftCardHstRollback(giftCard);
|
|
|
- orderChangeDao.updateCustGiftCardRollback(giftCard);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 3-2-8. 상품권 현금영수증 PG 취소 정보 설정
|
|
|
- GiftCard giftCardCashReceipts = orderDao.getGiftCardReceiptInfo(ordNo);
|
|
|
-
|
|
|
- if (giftCardCashReceipts != null && StringUtils.isNotBlank(giftCardCashReceipts.getTradeNo())) {
|
|
|
- giftCardCashReceipts.setModType("STPC");
|
|
|
- giftCardCashReceipts.setUsGfcdAmt(vo.getGfcdUseAmt());
|
|
|
-
|
|
|
- cashReceiptsList.add(giftCardCashReceipts);
|
|
|
- }
|
|
|
-
|
|
|
- // 3-2-9. 주문변경상세정보 및 이력 등록
|
|
|
- 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);
|
|
|
-
|
|
|
- // 신청구분 처리
|
|
|
-
|
|
|
- // 취소접수승인 시 주문변경상세 정보 수정
|
|
|
- OrderChange orChange = new OrderChange();
|
|
|
- orChange.setOrdNo(ordNo);
|
|
|
- orChange.setOrdChgSq(ordChgSq);
|
|
|
- orChange.setChgStat(chgStat);
|
|
|
- orChange.setUpdNo(userNo);
|
|
|
- orderChangeDao.updateOrderChangeDtl(orChange);
|
|
|
-
|
|
|
- orderChangeDao.createOrderChangeDetailHst(changeDetailPo);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 3-3. 상품재고원복
|
|
|
- /* 삭제 !!!
|
|
|
- if(!TscConstants.OrderCancelReason.SOLDOUT_CANCEL.value().equals(chgReason)) {
|
|
|
- orderChange.setSellGb(TscConstants.SellGb.ORDER_CANCEL.value());
|
|
|
- orderChangeDao.createSellQty(orderChange);
|
|
|
- }
|
|
|
- */
|
|
|
-
|
|
|
- // 3-4. PG 결제 취소 정보 설정 (상품권으로만 결제 시 PG점프)
|
|
|
- int spanRealCnclRtnAmt = obj.getRealOrdAmt(); // 취소금액합계
|
|
|
- int sumDeliveryFee = obj.getDelvFee(); // 배송비합계
|
|
|
- int spanDelvCpnDcAmt = obj.getDelvCpnDcAmt(); // 배송비쿠폰금액
|
|
|
- int spanTotDeliveryFee = obj.getAddDelvFee(); // 추가배송비합계
|
|
|
- int spanTotRtnDelvFee = obj.getRtnDelvFee(); // 반품배송비합계
|
|
|
- int spanRefundAmt = 0; // 환불금액
|
|
|
- int delvFee = (sumDeliveryFee - spanDelvCpnDcAmt); // 배송비
|
|
|
-
|
|
|
- // codFee // 착불비
|
|
|
- // enCloseFee // 동봉비
|
|
|
-
|
|
|
- // 마지막 취소일때 배송비 추가
|
|
|
- if ("Y".equals(obj.getLastCanYn())) {
|
|
|
- // 귀책사유고객
|
|
|
- if ("G688_10".equals(chgReason)) {
|
|
|
- // 회수요청
|
|
|
- if ("W".equals(wdGb)) {
|
|
|
- // 환불비용 = (취소상품실결제금액 + 동봉비 + 추가결제비) - 반품배송비 - 착불비
|
|
|
- spanRefundAmt = (spanRealCnclRtnAmt + enCloseFee + addPayCost) - spanTotRtnDelvFee - codFee;
|
|
|
- }
|
|
|
- // 직접배송
|
|
|
- else {
|
|
|
- // 환불비용 = (취소상품실결제금액 + 동봉비 + 추가결제비) - 착불비
|
|
|
- spanRefundAmt = (spanRealCnclRtnAmt + enCloseFee + addPayCost) - codFee;
|
|
|
- }
|
|
|
- }
|
|
|
- // 귀책사유회사
|
|
|
- else {
|
|
|
- // 환불비용 = (취소상품실결제금액) + (원주문배송비- 배송비쿠폰할인금액)
|
|
|
- spanRefundAmt = spanRealCnclRtnAmt + (sumDeliveryFee - spanDelvCpnDcAmt);
|
|
|
- }
|
|
|
- }
|
|
|
- // 부분취소
|
|
|
- else {
|
|
|
- // 귀책사유고객
|
|
|
- if ("G688_10".equals(chgReason)) {
|
|
|
- // 회수요청
|
|
|
- if ("W".equals(wdGb)) {
|
|
|
- // 환불금액 = (취소상품실결제금액 + 동봉비 + 추가결제비) - (추가배송비 + 반품배송비)
|
|
|
- spanRefundAmt = (spanRealCnclRtnAmt + enCloseFee + addPayCost) - (spanTotDeliveryFee + spanTotRtnDelvFee);
|
|
|
- }
|
|
|
- // 직접배송
|
|
|
- else {
|
|
|
- // 환불금액 = (취소상품실결제금액 + 동봉비 + 추가결제비) - (추가배송비)
|
|
|
- spanRefundAmt = (spanRealCnclRtnAmt + enCloseFee + addPayCost) - (spanTotDeliveryFee);
|
|
|
- }
|
|
|
- }
|
|
|
- // 귀책사유회사
|
|
|
- else {
|
|
|
- // 환불금액 = 취소상품실결제금액
|
|
|
- spanRefundAmt = spanRealCnclRtnAmt;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 전체취소일때 TB_DELIVERY_FEE 배송비 취소 처리
|
|
|
- if ("Y".equals(obj.getLastCanYn())) {
|
|
|
- Order cancelDelvFee = new Order();
|
|
|
- cancelDelvFee.setOrdNo(ordNo);
|
|
|
- cancelDelvFee.setDelvFeeGb(TscConstants.DeliveryFeeGb.ORIGIN_DELIVERY_FEE.value());
|
|
|
- cancelDelvFee.setDelvFeeCd(obj.getDelvFeeCd());
|
|
|
- cancelDelvFee.setDelvFee(sumDeliveryFee * -1);
|
|
|
- cancelDelvFee.setDelvCpnSq(0);
|
|
|
- cancelDelvFee.setDelvCpnDcAmt(spanDelvCpnDcAmt);
|
|
|
- cancelDelvFee.setRealDelvAmt(delvFee * -1);
|
|
|
- cancelDelvFee.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
- cancelDelvFee.setSupplyCompCd(obj.getSupplyCompCd());
|
|
|
- cancelDelvFee.setRegNo(userNo);
|
|
|
- cancelDelvFee.setUpdNo(userNo);
|
|
|
-
|
|
|
- orderChangeDao.createDeliveryFee(cancelDelvFee);
|
|
|
- }
|
|
|
-
|
|
|
- // 환불
|
|
|
- OrderChange chgRefund = new OrderChange();
|
|
|
-
|
|
|
- // 3-6. 결제금액이 무료배송금액보다 작으면 배송비 신규 등록 (배송비허들무너짐)
|
|
|
- if (spanTotDeliveryFee > 0) {
|
|
|
- Order delvFeeOrder = new Order();
|
|
|
- delvFeeOrder.setOrdNo(ordNo);
|
|
|
- delvFeeOrder.setDelvFeeGb(TscConstants.DeliveryFeeGb.ORIGIN_DELIVERY_FEE.value());
|
|
|
- delvFeeOrder.setDelvFeeCd(obj.getDelvFeeCd());
|
|
|
- delvFeeOrder.setDelvFee(spanTotDeliveryFee);
|
|
|
- delvFeeOrder.setRealDelvAmt(spanTotDeliveryFee);
|
|
|
- delvFeeOrder.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
- delvFeeOrder.setSupplyCompCd(obj.getSupplyCompCd());
|
|
|
- delvFeeOrder.setRegNo(userNo);
|
|
|
- delvFeeOrder.setUpdNo(userNo);
|
|
|
-
|
|
|
- orderChangeDao.createDeliveryFee(delvFeeOrder);
|
|
|
- }
|
|
|
-
|
|
|
- // 착불비 처리
|
|
|
- if("Y".equals(codFeeYn)) {
|
|
|
- // 10. 배송비
|
|
|
- OrderChange ordDelvFee = new OrderChange();
|
|
|
- ordDelvFee.setOrdNo(ordNo);
|
|
|
- ordDelvFee.setRegNo(userNo);
|
|
|
- ordDelvFee.setCodFee(codFee);
|
|
|
- ordDelvFee.setOrdChgSq(ordChgSq);
|
|
|
- orderChangeDao.insertTbDeliveryFeeCodFee(ordDelvFee);
|
|
|
-
|
|
|
- // 10-1. 환불
|
|
|
- chgRefund.setRfDeliveryFee(codFee*-1);
|
|
|
- }
|
|
|
-
|
|
|
- // 동봉비 처리
|
|
|
- if("Y".equals(enCloseFeeYn)) {
|
|
|
- // 배송비
|
|
|
- OrderChange ordDelvFee = new OrderChange();
|
|
|
- ordDelvFee.setOrdNo(ordNo);
|
|
|
- ordDelvFee.setRegNo(userNo);
|
|
|
- ordDelvFee.setCodFee(enCloseFee*-1);
|
|
|
- ordDelvFee.setOrdChgSq(ordChgSq);
|
|
|
- orderChangeDao.insertTbDeliveryFeeCodFee(ordDelvFee);
|
|
|
-
|
|
|
- // 환불
|
|
|
- chgRefund.setRfDeliveryFee(enCloseFee);
|
|
|
- chgRefund.setEnCloseFeeYn(enCloseFeeYn);
|
|
|
- }
|
|
|
-
|
|
|
- chgRefund.setRefundAmt(spanRefundAmt);
|
|
|
- chgRefund.setOrdNo(ordNo);
|
|
|
- chgRefund.setOrdChgSq(ordChgSq);
|
|
|
- orderChangeDao.updateRefundChange(chgRefund);
|
|
|
-
|
|
|
- // tb_withdraw 업데이트 (동봉비 착불비)
|
|
|
- OrderChange chgFee = new OrderChange();
|
|
|
- chgFee.setWdInvoiceNo(wdInvoiceNo);
|
|
|
- chgFee.setOrdChgSq(ordChgSq);
|
|
|
- chgFee.setCodFee(codFee);
|
|
|
- chgFee.setEncloseFee(enCloseFee);
|
|
|
- chgFee.setUpdNo(userNo);
|
|
|
- orderChangeDao.updateWithdrawFee(chgFee);
|
|
|
-
|
|
|
- // 환불금액이 추가배송비 보다 적을 시
|
|
|
- if (spanRefundAmt < 0) {
|
|
|
- throw new IllegalStateException(message.getMessage("CANCEL_0002"));
|
|
|
- }
|
|
|
-
|
|
|
- Payment pg = new Payment();
|
|
|
-
|
|
|
- pg.setOrdNo(ordNo);
|
|
|
- pg.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
- pg.setPayGb("O");
|
|
|
- pg.setPgTid(pgTid);
|
|
|
- pg.setPayMeans(payMeans);
|
|
|
- pg.setPartCancelAmt(spanRefundAmt);
|
|
|
- pg.setOrdChgSq(ordChgSq);
|
|
|
- pg.setRegNo(userNo);
|
|
|
- pg.setUpdNo(userNo);
|
|
|
-
|
|
|
- // 2021.07.07 payAmt 금액 TB_PAYMENT.PAY_AMT 수정
|
|
|
- int payAmt = orderChangeDao.getPaymentPayamt(pg);
|
|
|
- pg.setLeftAmt(payAmt);
|
|
|
-
|
|
|
- log.info("cancelAmt >>> {}", pg.getPartCancelAmt());
|
|
|
- log.info("leftAmt >>> {}", pg.getLeftAmt());
|
|
|
-
|
|
|
- if (spanRefundAmt > 0) {
|
|
|
- pgList.add(pg);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 4. 장바구니, 배송비 쿠폰 원복 및 사은품 전체 취소 처리 (마지막 취소 시)
|
|
|
- if ("Y".equals(allLastCanYn)) {
|
|
|
- // 4-1. 장바구니, 배송비 쿠폰 원복처리
|
|
|
- Order coupon = new Order();
|
|
|
- coupon.setOrdNo(ordNo);
|
|
|
- coupon.setUpdNo(userNo);
|
|
|
- orderChangeDao.updateCartCpnRollback(coupon);
|
|
|
- orderChangeDao.updateDeliveryCpnRollback(coupon);
|
|
|
-
|
|
|
- // 4-2. 사은품 전체 취소 (전체취소시 적용) 추후 사은품 관련 취소 로직 개발 예정
|
|
|
-
|
|
|
- /*
|
|
|
- * Order freegiftOrder = new Order(); freegiftOrder.setOrdNo(ordNo);
|
|
|
- * freegiftOrder.setUpdNo(userNo);
|
|
|
- * orderChangeDao.updateOrdFreegiftDel(freegiftOrder);
|
|
|
- */
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- if("G011_10".equals(mallGb)) {
|
|
|
- if("N".equals(pgStat)) {
|
|
|
- // 6. PG 취소 처리
|
|
|
- for (Payment pg : pgList) {
|
|
|
- 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);
|
|
|
- pg.setBatchYn(batchYn);
|
|
|
- kcpService.kcpCancel(pg);
|
|
|
- } else if (TscConstants.PgGb.NAVER.value().equals(pgGb)) {
|
|
|
- pg.setPayAmt(pg.getPartCancelAmt());
|
|
|
- pg.setPayMeans(payMeans);
|
|
|
- pg.setChgReasonNm(chgReasonNm);
|
|
|
-
|
|
|
- naverPayService.cancelNaverPayment(pg);
|
|
|
- } else if (TscConstants.PgGb.KAKAO.value().equals(pgGb)) {
|
|
|
- pg.setPayAmt(pg.getPartCancelAmt());
|
|
|
- kakaoPayService.cancelKakaoPayment(pg);
|
|
|
- }
|
|
|
-
|
|
|
- // 7. 환불정보 수정
|
|
|
- Order refundOrder = new Order();
|
|
|
- refundOrder.setOrdNo(ordNo);
|
|
|
- refundOrder.setPaySq(pg.getPaySq());
|
|
|
- refundOrder.setOrdChgSq(ordChgSq);
|
|
|
- refundOrder.setUpdNo(userNo);
|
|
|
-
|
|
|
- orderChangeDao.updateRefundInfo(refundOrder);
|
|
|
- }
|
|
|
-
|
|
|
- // 8. 현금영수증 취소 처리
|
|
|
- for (GiftCard cashReceipts : cashReceiptsList) {
|
|
|
- kcpService.kcpCashReceiptCancel(cashReceipts);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return map;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 전체 환불 처리
|
|
|
- *
|
|
|
- * @param GagaMap, Integer
|
|
|
- * @author card007
|
|
|
- * @since 2021. 08. 12
|
|
|
- */
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- public void allRefund(GagaMap map, Integer userNo) {
|
|
|
- // 1. 변수 설정
|
|
|
- Integer ordNo = map.getInt("ordNo"); // 주문번호
|
|
|
- Integer custNo = map.getInt("custNo"); // 고객번호
|
|
|
- String chgReasonNm = map.getString("chgReasonNm"); // 변경사유명
|
|
|
- String chgGb = TscConstants.OrderChangeGb.RETURN.value(); // 변경구분
|
|
|
- String accountNo = map.getString("accountNo"); // 환불계좌번호
|
|
|
- String accountNm = map.getString("accountNm"); // 환불계좌주명
|
|
|
- String bankCd = map.getString("bankCd"); // 환불은행
|
|
|
- Integer ordChgSq = map.getInt("ordChgSq"); // 주문변경일련번호
|
|
|
- int regNo = userNo; // 등록자번호
|
|
|
- int updNo = userNo; // 수정자번호
|
|
|
- String pgStat = map.getString("pgStat"); // PG 점프
|
|
|
- int depositAmt = map.getInt("depositAmt"); // PG 점프 입금액
|
|
|
- String codFeeYn = map.getString("codFeeYn"); // 착불비여부
|
|
|
- int codFee = map.getInt("codFee"); // 착불비
|
|
|
- String enCloseFeeYn = map.getString("enCloseFeeYn"); // 동봉비여부
|
|
|
- int enCloseFee = map.getInt("enCloseFee"); // 동봉비
|
|
|
- String wdInvoiceNo = map.getString("wdInvoiceNo"); // 회수송장번호
|
|
|
- String delvFeeCd = map.getString("delvFeeCd"); // 배송비정책코드
|
|
|
- String supplyCompCd = "";
|
|
|
-
|
|
|
- List<Order> cancelDelvRefundList = (List<Order>) map.get("cancelDelvRefundList"); // 취소환불배송금액 목록 (DELV_FEE_CD 단위)
|
|
|
- if (cancelDelvRefundList != null && cancelDelvRefundList.size() > 0) {
|
|
|
- supplyCompCd = cancelDelvRefundList.iterator().next().getSupplyCompCd();
|
|
|
- }
|
|
|
-
|
|
|
- // 2. 상태값 설정
|
|
|
- String ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_AFTER_CANCEL.value();
|
|
|
- String chgStat = TscConstants.OrderChangeStat.RETURN_COMPLETE.value();
|
|
|
- map.setString("chgGb", chgGb);
|
|
|
-
|
|
|
- // 3. 주문변경상세 수정
|
|
|
- OrderChange orderChange = new OrderChange();
|
|
|
- orderChange.setOrdChgSq(ordChgSq);
|
|
|
- orderChange.setChgStat(chgStat);
|
|
|
- orderChange.setRegNo(regNo);
|
|
|
- orderChange.setUpdNo(updNo);
|
|
|
- orderChangeDao.updateOrderChangeDtl(orderChange);
|
|
|
- orderChangeDao.createOrderChangeDetailHstForAllCancel(orderChange);
|
|
|
-
|
|
|
- // 4. 원주문 결제정보 조회
|
|
|
- Payment payment = new Payment();
|
|
|
- payment.setOrdNo(ordNo);
|
|
|
- payment = orderChangeDao.getPaymentInfo(payment);
|
|
|
-
|
|
|
- // 5. 환불금액 설정
|
|
|
- Order returnOrderInfo = new Order();
|
|
|
- returnOrderInfo.setOrdNo(ordNo);
|
|
|
- returnOrderInfo.setDelvFeeCd(delvFeeCd);
|
|
|
- map.set("returnOrderInfo", this.getReturnOrderInfo(returnOrderInfo));
|
|
|
- OrderChange refundInfo = this.calculateRefundAmt(map);
|
|
|
- int refundAmt = refundInfo.getRefundAmt();
|
|
|
-
|
|
|
- // 6. 주문 전체취소 상태값 설정
|
|
|
- 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 전체취소
|
|
|
- }
|
|
|
-
|
|
|
- // 7. 사용포인트원복
|
|
|
- Order vo = new Order();
|
|
|
- vo.setOrdNo(ordNo);
|
|
|
- vo.setCustNo(custNo);
|
|
|
- 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);
|
|
|
- }
|
|
|
-
|
|
|
- // 8. 적립예정포인트 취소
|
|
|
- vo.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT.value());
|
|
|
+ // 8. 적립예정포인트 취소
|
|
|
+ vo.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT.value());
|
|
|
|
|
|
for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
point.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT_CANCEL.value());
|
|
|
@@ -4305,307 +3828,6 @@ public class TscOrderChangeService {
|
|
|
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 전체 환불 처리
|
|
|
- *
|
|
|
- * @param OrderChange (ordChgSq, userNo)
|
|
|
- * @author card007
|
|
|
- * @since 2021. 05. 24
|
|
|
- */
|
|
|
- public void allRefundBak(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(); // 수정자번호
|
|
|
- Integer delvAddrSq = orderChange.getDelvAddrSq();
|
|
|
- String addDeliveryFeeYn = orderChange.getAddDeliveryFeeYn(); // 배송비추가 환불여부
|
|
|
- int addDeliveryFee = orderChange.getAddDeliveryFee(); // 배송비추가 환불금액
|
|
|
- int spanRefundAmt = orderChange.getSpanRefundAmt();
|
|
|
- String mallGb = orderChange.getMallGb(); // 몰구분
|
|
|
- String pgStat = orderChange.getPgStat(); // PG 점프
|
|
|
- String codFeeYn = orderChange.getCodFeeYn(); // 착불비여부
|
|
|
- int codFee = orderChange.getCodFee(); // 착불비
|
|
|
- String enCloseFeeYn = orderChange.getEnCloseFeeYn(); // 동봉비여부
|
|
|
- int enCloseFee = orderChange.getEncloseFee(); // 동봉비
|
|
|
- String wdInvoiceNo = orderChange.getWdInvoiceNo(); // 회수송장번호
|
|
|
-
|
|
|
- // 상태값 설정
|
|
|
- String ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_AFTER_CANCEL.value();
|
|
|
- String chgStat = TscConstants.OrderChangeStat.RETURN_COMPLETE.value();
|
|
|
- String ordDtlItemStat = TscConstants.OrdDtlItemStat.SALE_RETURN_RETURN_COMPLETE.value(); // G720_50 환입-반품완료
|
|
|
-
|
|
|
- // 1. 주문변경상세 수정
|
|
|
- orderChange.setChgStat(chgStat);
|
|
|
- orderChangeDao.updateOrderChangeDtl(orderChange);
|
|
|
- orderChangeDao.createOrderChangeDetailHstForAllCancel(orderChange);
|
|
|
-
|
|
|
- // 반품일때 환불처리
|
|
|
- // 원주문 결제정보 조회
|
|
|
- Payment payment = new Payment();
|
|
|
- payment.setOrdNo(ordNo);
|
|
|
- payment = orderChangeDao.getPaymentInfo(payment);
|
|
|
-
|
|
|
- // 환불금액 설정
|
|
|
- int refundAmt = payment.getPayAmt();
|
|
|
- refundAmt = spanRefundAmt;
|
|
|
-
|
|
|
- // 주문 전체취소 상태값 처리
|
|
|
- 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);
|
|
|
- }
|
|
|
-
|
|
|
- // 4-2. 배송비 사용 상품권 원복
|
|
|
- for (Order giftCard : orderChangeDao.getCustGiftCardDelvHst(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. 사은품 전체 취소 (전체취소시 적용) 추후 사은품 관련 취소 로직 개발 예정
|
|
|
- //TODO: skip
|
|
|
- // 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);
|
|
|
-
|
|
|
- // 주문상세단품정보 수정 및 이력 등록
|
|
|
- // 2021.06.25 환불컨펌 (반품완료) (정산구분값추가)
|
|
|
- // TODO 환불컨펌시 확정후반품 처리 체크 로직 추가 (TB_ORDER_DETAIL_ITEM_HST 배송중 일때 반품완료, 결제완료일때 취소완료)
|
|
|
- // 2021.07.07 확정후반품 로직 추가
|
|
|
- int cnt = orderChangeDao.getOrderDetailItem20CntAll(orderDetail);
|
|
|
- if (cnt > 0) {
|
|
|
- orderDetail.setOrdDtlStat(TscConstants.OrdDtlItemStat.SALE_RETURN_RETURN_COMPLETE.value());
|
|
|
- } else {
|
|
|
- orderDetail.setOrdDtlStat(TscConstants.OrdDtlItemStat.SALE_RETURN_SOLDOUT_CANCEL.value());
|
|
|
- }
|
|
|
-
|
|
|
- orderChangeDao.updateOrderDetailItemForAllCancel(orderDetail);
|
|
|
- orderChangeDao.createOrderDetailItemHstForAllCancel(orderDetail);
|
|
|
-
|
|
|
- // 10. 배송비 환불
|
|
|
- Order refundOrder = orderChangeDao.getRefundInfoForAllCancel(vo);
|
|
|
- OrderChange chgRefund = new OrderChange();
|
|
|
- chgRefund.setOrdNo(ordNo);
|
|
|
- chgRefund.setOrdChgSq(ordChgSq);
|
|
|
- chgRefund.setRfDelvGfcdUseAmt(refundOrder.getRfDelvGfcdUseAmt());
|
|
|
-
|
|
|
- if("Y".equals(addDeliveryFeeYn)) {
|
|
|
- // 배송비
|
|
|
- OrderChange ordDelvFee = new OrderChange();
|
|
|
- ordDelvFee.setOrdNo(ordNo);
|
|
|
- ordDelvFee.setOrdChgSq(ordChgSq);
|
|
|
- ordDelvFee.setRegNo(regNo);
|
|
|
- ordDelvFee.setUpdNo(updNo);
|
|
|
- // orderChangeDao.insertTbDeliveryFeeMinus(ordDelvFee);
|
|
|
- orderChangeDao.createDeliveryFeeForAllCancel(ordDelvFee);
|
|
|
-
|
|
|
- // 환불
|
|
|
- chgRefund.setRefundAmt(refundAmt);
|
|
|
- chgRefund.setRfDeliveryFee(addDeliveryFee);
|
|
|
- chgRefund.setRfRealCnclAmt(refundAmt - addDeliveryFee);
|
|
|
- orderChangeDao.updateRefundChange(chgRefund);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- // 10-1. 착불비 처리
|
|
|
- if("Y".equals(codFeeYn)) {
|
|
|
- // 배송비
|
|
|
- OrderChange ordDelvFee = new OrderChange();
|
|
|
- ordDelvFee.setOrdNo(ordNo);
|
|
|
- ordDelvFee.setRegNo(regNo);
|
|
|
- ordDelvFee.setCodFee(codFee);
|
|
|
- ordDelvFee.setOrdChgSq(ordChgSq);
|
|
|
- orderChangeDao.insertTbDeliveryFeeCodFee(ordDelvFee);
|
|
|
-
|
|
|
- // 환불
|
|
|
- chgRefund.setRefundAmt(refundAmt);
|
|
|
- chgRefund.setRfDeliveryFee(codFee*-1);
|
|
|
- chgRefund.setRfRealCnclAmt(refundAmt - (codFee*-1));
|
|
|
- orderChangeDao.updateRefundChange(chgRefund);
|
|
|
- }
|
|
|
-
|
|
|
- // 10-2. 동봉비 처리
|
|
|
- if("Y".equals(enCloseFeeYn)) {
|
|
|
- // 배송비
|
|
|
- OrderChange ordDelvFee = new OrderChange();
|
|
|
- ordDelvFee.setOrdNo(ordNo);
|
|
|
- ordDelvFee.setRegNo(regNo);
|
|
|
- ordDelvFee.setCodFee(enCloseFee*-1);
|
|
|
- ordDelvFee.setOrdChgSq(ordChgSq);
|
|
|
- orderChangeDao.insertTbDeliveryFeeCodFee(ordDelvFee);
|
|
|
-
|
|
|
- // 환불
|
|
|
- chgRefund.setRefundAmt(refundAmt);
|
|
|
- chgRefund.setRfDeliveryFee(enCloseFee);
|
|
|
- chgRefund.setEnCloseFeeYn(enCloseFeeYn);
|
|
|
- chgRefund.setRfRealCnclAmt(refundAmt - enCloseFee);
|
|
|
- orderChangeDao.updateRefundChange(chgRefund);
|
|
|
- }
|
|
|
-
|
|
|
- // 10-3. tb_withdraw 업데이트 (동봉비 착불비)
|
|
|
- OrderChange chgFee = new OrderChange();
|
|
|
- chgFee.setWdInvoiceNo(wdInvoiceNo);
|
|
|
- chgFee.setOrdChgSq(ordChgSq);
|
|
|
- chgFee.setCodFee(codFee);
|
|
|
- chgFee.setEncloseFee(enCloseFee);
|
|
|
- chgFee.setUpdNo(regNo);
|
|
|
- orderChangeDao.updateWithdrawFee(chgFee);
|
|
|
-
|
|
|
- // 11. PG 연동
|
|
|
- String pgGb = payment.getPgGb();
|
|
|
- String payMeans = payment.getPayMeans();
|
|
|
-
|
|
|
- Payment pg = new Payment();
|
|
|
- pg.setOrdNo(ordNo);
|
|
|
- pg.setOrdChgSq(ordChgSq);
|
|
|
- pg.setPayMeans(payMeans);
|
|
|
- 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());
|
|
|
-
|
|
|
- // 2021.09.02 (PAY_STAT = 'G016_30' AND PG_TID IS NULL AND PG_GB <> 'ISTYLE') 체크 후 없으면 제휴몰로 판단 로직
|
|
|
- if (orderDao.getExtmallOrderChk(pg) > 0) {
|
|
|
- payMeans = TscConstants.PayMeans.EXTMALL.value();
|
|
|
- }
|
|
|
-
|
|
|
- // 상품권으로만 결제 시 PG점프
|
|
|
- if (TscConstants.PgGb.NAVER_ORDER.value().equals(pgGb) || TscConstants.PayMeans.EXTMALL.value().equals(payMeans) || "Y".equals(pgStat) || refundAmt == 0) {
|
|
|
- // 상품권 100%, 제휴몰, PG점프처리, 네이버페이주문은 PG점프 처리
|
|
|
- // 2021.10.15 card007 PG점프는 추후 데이터 구분을 위해 pgTid, pgTradeNo 없앰
|
|
|
- pg.setPayAmt(pg.getPayAmt() * -1);
|
|
|
- pg.setPgTid("");
|
|
|
- pg.setPgTradeNo("");
|
|
|
- orderDao.insertPaymentCancel(pg);
|
|
|
- } else 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. 환불금액 정보 수정
|
|
|
- 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);
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 취소 알림톡 정보 조회
|
|
|
*
|