Преглед изворни кода

마이페이지 전체취소 임시 커밋

card007 пре 5 година
родитељ
комит
a98f4b0f69

+ 54 - 4
src/main/java/com/style24/core/biz/dao/TscOrderChangeDao.java

@@ -330,22 +330,42 @@ public interface TscOrderChangeDao {
 	/**
 	 * 전체취소 주문상세단품정보 수정
 	 *
-	 * @param Order
+	 * @param OrderChange
 	 * @return int
 	 * @author card007
 	 * @since 2021. 04. 15
 	 */
-	int updateOrderDetailItemForAllCancel(Order order);
+	int updateOrderDetailItemForAllCancel(OrderChange orderChange);
 
 	/**
 	 * 전체취소 주문상세단품이력정보 등록
 	 *
-	 * @param Order
+	 * @param OrderChange
 	 * @return int
 	 * @author card007
 	 * @since 2021. 04. 15
 	 */
-	int createOrderDetailItemHstForAllCancel(Order order);
+	int createOrderDetailItemHstForAllCancel(OrderChange orderChange);
+
+	/**
+	 * 전체취소 주문상세단품정보 수정
+	 *
+	 * @param OrderChange
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 16
+	 */
+	int updateOrderDetailForAllCancel(OrderChange orderChange);
+
+	/**
+	 * 전체취소 주문상세단품이력정보 등록
+	 *
+	 * @param OrderChange
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 16
+	 */
+	int createOrderDetailHstForAllCancel(OrderChange orderChange);
 
 	/**
 	 * 마이페이지 포인트 원복 사용포인트 조회
@@ -446,4 +466,34 @@ public interface TscOrderChangeDao {
 	 * @since 2021. 04. 15
 	 */
 	Payment getPaymentInfo(Payment payment);
+
+	/**
+	 * 마이페이지 전체취소 주문변경상세 등록
+	 * 
+	 * @param OrderChange
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 16
+	 */
+	int createOrderChangeDetailForAllCancel(OrderChange orderChange);
+
+	/**
+	 * 마이페이지 전체취소 주문변경상세 이력 등록
+	 * 
+	 * @param OrderChange
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 16
+	 */
+	int createOrderChangeDetailHstForAllCancel(OrderChange orderChange);
+
+	/**
+	 * 마이페이지 전체취소 환불정보 조회
+	 *
+	 * @param Order
+	 * @return Order
+	 * @author card007
+	 * @since 2021. 04. 16
+	 */
+	Order getRefundInfoForAllCancel(Order order);
 }

+ 2 - 3
src/main/java/com/style24/core/biz/service/TscKakaoPayService.java

@@ -220,11 +220,10 @@ public class TscKakaoPayService {
 			payment.setOrdNo(Integer.parseInt(kakaoPay.getPartner_order_id()));
 			payment.setCustNo(Integer.parseInt(kakaoPay.getPartner_user_id()));
 			payment.setKakaoMethodType(kakaoPay.getPayment_method_type());
-			payment.setPayAmt(kakaoPay.getApproved_cancel_amount().getTotal());
-			payment.setNpayPntAmt(kakaoPay.getApproved_cancel_amount().getPoint());
+			payment.setPayAmt(kakaoPay.getApproved_cancel_amount().getTotal() * -1);
+			payment.setNpayPntAmt(kakaoPay.getApproved_cancel_amount().getPoint() * -1);
 			payment.setResCd(String.valueOf(statusCode));
 			payment.setResMsg(message.getMessage("SUCC_0004"));
-			// 
 
 			orderDao.insertPayment(payment);
 		} else {

+ 1 - 0
src/main/java/com/style24/core/biz/service/TscKcpService.java

@@ -302,6 +302,7 @@ public class TscKcpService {
 					payment.setPayGb(param.getPayGb());
 					payment.setPayStat(param.getPayStat());
 					orderDao.insertPaymentCancel(payment);
+					param.setPaySq(payment.getPaySq());
 				}
 			} catch (Exception e) {
 				e.printStackTrace();

+ 4 - 4
src/main/java/com/style24/core/biz/service/TscNaverPayService.java

@@ -213,13 +213,13 @@ public class TscNaverPayService {
 
 		// 승인 성공일때 200
 		if (statusCode == 200) {
-			payment.setPgTradeNo(naverPay.getBody().getPayHistId());
+			payment.setNpayPntAmt(naverPay.getBody().getNpointCancelAmount() * -1);
 			payment.setPgTid(naverPay.getBody().getPaymentId());
-			payment.setOrdNo(payment.getOrdNo());
+			payment.setPgTradeNo(naverPay.getBody().getPayHistId());
 			payment.setCustNo(payment.getCustNo());
 			payment.setNaverMethodType(naverPay.getBody().getPrimaryPayMeans());
-			payment.setPayAmt(naverPay.getBody().getPrimaryPayCancelAmount() + naverPay.getBody().getNpointCancelAmount());
-			payment.setNpayPntAmt(naverPay.getBody().getNpointCancelAmount());
+			
+			
 			payment.setResCd(naverPay.getCode());
 			payment.setResMsg(naverPay.getMessage());
 

+ 235 - 18
src/main/java/com/style24/core/biz/service/TscOrderChangeService.java

@@ -1260,6 +1260,202 @@ public class TscOrderChangeService {
 		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. 취소 완료 알림톡 발송 에정
+	}
+
 	/**
 	 * 전체취소 요청
 	 * 
@@ -1270,7 +1466,7 @@ public class TscOrderChangeService {
 	 */
 	@SuppressWarnings("unchecked")
 	@Transactional("shopTxnManager")
-	public GagaMap allCnclComplete(GagaMap map, int userNo) {
+	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 단위)
@@ -1303,7 +1499,7 @@ public class TscOrderChangeService {
 		}
 
 		// 3. 주문상세단품정보등록, 변경 (단품단위)
-		Order orderDetailItem = new Order();
+		OrderChange orderDetailItem = new OrderChange();
 		orderDetailItem.setOrdNo(ordNo);
 		orderDetailItem.setOrdDtlStat(ordDtlStat);
 		orderDetailItem.setRegNo(userNo);
@@ -1496,23 +1692,44 @@ public class TscOrderChangeService {
 
 		// PG 별 취소 처리
 		String pgGb = payment.getPgGb();
-		if (TscConstants.PgGb.KCP.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("TODO");
-			kcp.setPayAmt(pgCancelAmt);
-			kcp.setRegNo(userNo);
-			kcp.setUpdNo(userNo);
-			kcpService.kcpCancel(kcp);
-			
-		}
-		
-		
 		
+		// 상품권으로만 결제 시 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. 취소 완료 알림톡 발송 에정

+ 3 - 4
src/main/java/com/style24/core/support/env/TscConstants.java

@@ -344,12 +344,11 @@ public class TscConstants {
 
 	// PG 구분
 	public enum PgGb {
-		INICIS("INICIS"),					// 이니시스
-		KAKAO("KAKAO"),						// 카카오페이
 		KCP("KCP"),							// KCP
+		KAKAO("KAKAO"),						// 카카오페이
 		NAVER("NAVER"),						// NAVERPAY
-		NICE("NICE"),						// NICEPAY
-		PAYCO("PAYCO");						// PAYCO
+		PAYCO("PAYCO"),						// PAYCO
+		ISTYLE("ISTYLE");					// 아이스타일 (상품권으로만결제시)
 
 		private String value;
 

+ 1 - 0
src/main/java/com/style24/persistence/domain/Order.java

@@ -320,6 +320,7 @@ public class Order extends TscBaseDomain {
 	private Integer custCpnSq;
 	
 	// 주문포인트
+	private Integer pntHstSq;
 	private int pntPrate;
 	private int pntMrate;
 	private int pntAmt;

+ 3 - 0
src/main/java/com/style24/persistence/domain/OrderChange.java

@@ -25,6 +25,7 @@ public class OrderChange extends TscBaseDomain {
 	private Integer ordChgSq;
 	private String chgGb;
 	private String chgReason;
+	private String chgReasonNm;
 	private String chgMemo;
 	private String chgerNm;
 	private String chgerPhnno;
@@ -103,6 +104,8 @@ public class OrderChange extends TscBaseDomain {
 	private String[] soldoutYnArr;
 	private int[] ordChgSqArr;
 
+	private String ipAddress;
+
 	// 교환 옵션 변경
 	private List<ChgOption> chgOptionList;
 

+ 2 - 2
src/main/java/com/style24/persistence/mybatis/shop/TscOrder.xml

@@ -2298,7 +2298,7 @@
 	</select>
 
 	<!-- 결제 취소 정보 생성 -->
-	<insert id="insertPaymentCancel" parameterType="Payment">
+	<insert id="insertPaymentCancel" parameterType="Payment" keyProperty="paySq">
 		/* TscOrder.insertPaymentCancel : 결제 취소 정보 생성 */
 		INSERT INTO TB_PAYMENT (
 			  ORD_NO
@@ -2360,7 +2360,7 @@
 	</insert>
 
 	<!-- PAYMENT INSERT -->
-	<insert id="insertPayment" parameterType="Payment">
+	<insert id="insertPayment" parameterType="Payment" keyProperty="paySq">
 		/* TscOrder.insertPayment : PAYMENT INSERT */
 		INSERT INTO TB_PAYMENT (
 			  ORD_NO

+ 292 - 15
src/main/java/com/style24/persistence/mybatis/shop/TscOrderChange.xml

@@ -836,22 +836,25 @@
 	<update id="updateOrdFreegiftDel" parameterType="Order">
 		/* OrderChange.updateOrdFreegiftDel */
 		UPDATE TB_ORD_FREEGIFT_VAL
-		   SET DEL_YN= 'N'
+		   SET DEL_YN= 'Y'
 			 , UPD_NO = #{updNo}
 			 , UPD_DT = NOW()
 		 WHERE FREEGIFT_VAL_SQ IN (
-			 SELECT OFRV.FREEGIFT_VAL_SQ
-			   FROM TB_ORD_FREEGIFT OFR
-			   INNER JOIN TB_ORD_FREEGIFT_VAL OFRV
-			   ON OFR.ORD_FREEGIFT_SQ = OFRV.ORD_FREEGIFT_SQ
-			  WHERE 1 = 1
-				AND OFR.ORD_NO = (SELECT CASE WHEN SUM(X.ORD_QTY) > SUM(X.CNCL_RTN_QTY)
-												  THEN 0
-											  ELSE X.ORD_NO
-										 END
-									FROM TB_ORDER_DETAIL X
-								   WHERE 1 = 1
-									 AND X.ORD_NO = #{ordNo})
+			 SELECT Z.FREEGIFT_VAL_SQ
+			   FROM (
+				   SELECT OFRV.FREEGIFT_VAL_SQ
+					 FROM TB_ORD_FREEGIFT OFR
+					 INNER JOIN TB_ORD_FREEGIFT_VAL OFRV
+					 ON OFR.ORD_FREEGIFT_SQ = OFRV.ORD_FREEGIFT_SQ
+					WHERE 1 = 1
+					  AND OFR.ORD_NO = (SELECT CASE WHEN SUM(X.ORD_QTY) > SUM(X.CNCL_RTN_QTY)
+														THEN 0
+													ELSE X.ORD_NO
+											   END
+										  FROM TB_ORDER_DETAIL X
+										 WHERE 1 = 1
+										   AND X.ORD_NO = #{ordNo})
+			   ) Z
 		 )
 	</update>
 
@@ -1742,7 +1745,7 @@
 	<update id="updateOrderDetailItemForExchangeCancel" parameterType="Order">
 		/* OrderChange.updateOrderDetailItemForExchangeCancel */
 		UPDATE TB_ORDER_DETAIL_ITEM ODI
-			INNER JOIN TB_ORDER_CHANGE_DETAIL OCD
+		 INNER JOIN TB_ORDER_CHANGE_DETAIL OCD
 			ON ODI.ORD_DTL_NO = OCD.CHG_ORD_DTL_NO
 		   SET ODI.ORD_DTL_STAT = #{ordDtlStat}
 			 , ODI.UPD_NO = #{updNo}
@@ -1825,6 +1828,182 @@
 		   AND ODI.ORD_NO = #{ordNo}
 	</insert>
 
+	<!-- 전체취소 주문상세단품정보 수정 -->
+	<update id="updateOrderDetailForAllCancel" parameterType="Order">
+		/* TscOrderChange.updateOrderDetailForAllCancel */
+		UPDATE TB_ORDER_DETAIL
+		   SET ORD_DTL_STAT = #{ordDtlStat}
+			 , CNCL_RTN_AMT = ORD_AMT
+			 , CPN1_DC_AMT = 0
+			 , TMTB1_DC_AMT = 0
+			 , TMTB2_DC_AMT = 0
+			 , GOODS_CPN_DC_AMT = 0
+			 , CART_CPN_DC_AMT = 0
+			 , PNT_DC_AMT = 0
+			 , PRE_PNT_DC_AMT = 0
+			 , SAVE_PNT_AMT = 0
+			 , REAL_ORD_AMT = 0
+			 , GFCD_USE_AMT = 0
+			 , UPD_NO = #{updNo}
+			 , UPD_DT = NOW()
+		 WHERE ORD_NO = #{ordNo}
+	</update>
+
+	<!-- 전체취소 주문상세단품이력정보 등록 -->
+	<insert id="createOrderDetailHstForAllCancel" parameterType="Order">
+		/* TscOrderChange.createOrderDetailHstForAllCancel */
+		INSERT INTO TB_ORDER_DETAIL_HST (
+		       ORD_DTL_NO
+		     , ORD_NO
+		     , ORD_EXCH_GB
+		     , ORD_DTL_STAT
+		     , ORG_ORD_DTL_NO
+		     , SUPPLY_COMP_CD
+		     , GOODS_CD
+		     , DEAL_GOODS_CD
+		     , FORMAL_GB
+		     , GOODS_TYPE
+		     , LIST_PRICE
+		     , CURR_PRICE
+		     , DC_RATE
+		     , OPT_ADD_PRICE
+		     , ORD_QTY
+		     , ORD_AMT
+		     , CNCL_RTN_QTY
+		     , CNCL_RTN_AMT
+		     , CPN1_CPN_SQ
+		     , CPN1_DC_AMT
+		     , TMTB1_SQ
+		     , TMTB1_DC_AMT
+		     , TMTB2_SQ
+		     , TMTB2_DC_AMT
+		     , GOODS_CPN_SQ
+		     , GOODS_CPN_DC_AMT
+		     , CART_CPN_SQ
+		     , CART_CPN_DC_AMT
+		     , BURDEN_RATE
+		     , PNT_DC_AMT
+		     , PRE_PNT_DC_AMT
+		     , SAVE_PNT_AMT
+		     , REAL_ORD_AMT
+		     , GFCD_USE_AMT
+		     , VENDOR_ID
+		     , EXTMALL_ID
+		     , AGENT_ORDER_ID
+		     , EXTMALL_ORDER_ID
+		     , CHANGEABLE_YN
+		     , CHANGE_FEE_FREE_YN
+		     , RETURNABLE_YN
+		     , RETURN_FEE_FREE_YN
+		     , SOLDOUT_YN
+		     , SOLDOUT_MEMO
+		     , SOLDOUT_REG_NO
+		     , SOLDOUT_REG_DT
+		     , DELV_ADDR_SQ
+		     , DELV_FEE_CD
+		     , SHOT_DELV_YN
+		     , GIFT_PACK_YN
+		     , GIFT_ADDR_INP_YN
+		     , MAKE_GOODS_YN
+		     , ENTRY_NO
+		     , DELV_LOC_CD
+		     , DELV_ASSIGN_DT
+		     , DELV_ASSIGN_STAT
+		     , DSTRBT_NOTE
+		     , DELV_STDT
+		     , DELV_EDDT
+		     , SHIP_COMP_CD
+		     , INVOICE_NO
+		     , INVOICE_SEND_YN
+		     , SELL_STORE_CD
+		     , SELL_FEE_RATE
+		     , AF_LINK_CD
+		     , ITHR_CD
+		     , CONTENTS_LOC
+		     , PLAN_DTL_SQ
+		     , SOCIAL_SQ
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		SELECT ORD_DTL_NO
+			 , ORD_NO
+			 , ORD_EXCH_GB
+			 , #{ordDtlStat}
+			 , ORG_ORD_DTL_NO
+			 , SUPPLY_COMP_CD
+			 , GOODS_CD
+			 , DEAL_GOODS_CD
+			 , FORMAL_GB
+			 , GOODS_TYPE
+			 , LIST_PRICE
+			 , CURR_PRICE
+			 , DC_RATE
+			 , OPT_ADD_PRICE
+			 , ORD_QTY
+			 , ORD_AMT
+			 , ORD_QTY
+			 , ORD_AMT
+			 , CPN1_CPN_SQ
+			 , 0
+			 , TMTB1_SQ
+			 , 0
+			 , TMTB2_SQ
+			 , 0
+			 , GOODS_CPN_SQ
+			 , 0
+			 , CART_CPN_SQ
+			 , 0
+			 , BURDEN_RATE
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , VENDOR_ID
+			 , EXTMALL_ID
+			 , AGENT_ORDER_ID
+			 , EXTMALL_ORDER_ID
+			 , CHANGEABLE_YN
+			 , CHANGE_FEE_FREE_YN
+			 , RETURNABLE_YN
+			 , RETURN_FEE_FREE_YN
+			 , SOLDOUT_YN
+			 , SOLDOUT_MEMO
+			 , SOLDOUT_REG_NO
+			 , SOLDOUT_REG_DT
+			 , DELV_ADDR_SQ
+			 , DELV_FEE_CD
+			 , SHOT_DELV_YN
+			 , GIFT_PACK_YN
+			 , GIFT_ADDR_INP_YN
+			 , MAKE_GOODS_YN
+			 , ENTRY_NO
+			 , DELV_LOC_CD
+			 , DELV_ASSIGN_DT
+			 , DELV_ASSIGN_STAT
+			 , DSTRBT_NOTE
+			 , DELV_STDT
+			 , DELV_EDDT
+			 , SHIP_COMP_CD
+			 , INVOICE_NO
+			 , INVOICE_SEND_YN
+			 , SELL_STORE_CD
+			 , SELL_FEE_RATE
+			 , AF_LINK_CD
+			 , ITHR_CD
+			 , CONTENTS_LOC
+			 , PLAN_DTL_SQ
+			 , SOCIAL_SQ
+			 , #{regNo}
+			 , NOW()
+			 , #{updNo}
+			 , NOW()
+		  FROM TB_ORDER_DETAIL
+		 WHERE ORD_NO = #{ordNo}
+	</insert>
+
 	<!-- 전체취소 주문상세단품정보 수정 -->
 	<update id="updateOrderDetailItemForAllCancel" parameterType="Order">
 		/* TscOrderChange.updateOrderDetailItemForAllCancel */
@@ -1938,7 +2117,9 @@
 		     , UPD_DT
 		  FROM TB_CUST_POINT_HST
 		 WHERE ORD_NO = #{ordNo}
+		<if test="ordDtlNo != null and ordDtlNo != ''">
 		   AND ORD_DTL_NO = #{ordDtlNo}
+		</if>
 		   AND OCCUR_GB = #{occurGb}
 		 ORDER BY CUST_PNT_SQ
 	</select>
@@ -1982,7 +2163,7 @@
 		 WHERE PNT_HST_SQ = #{pntHstSq}
 	</insert>
 	
-	<!-- 마이페이지 전체취소 사용포인트 원복 수정  -->
+	<!-- 마이페이지 사용포인트 원복 수정  -->
 	<update id="updateCustPointRollback" parameterType="Order">
 		/* TscOrderChange.createCustPointHstRollback */
 		UPDATE TB_CUST_POINT
@@ -2003,7 +2184,9 @@
 		     , CC.UPD_NO = #{updNo}
 		     , CC.UPD_DT = NOW()
 		 WHERE OD.ORD_NO = #{ordNo}
+		<if test="ordDtlNo != null and ordDtlNo != ''">
 		   AND OD.ORD_DTL_NO = #{ordDtlNo}
+		</if>
 	</update>
 
 	<!-- 마이페이지 장바구니쿠폰 원복 수정 -->
@@ -2054,7 +2237,9 @@
 		     , UPD_DT
 		  FROM TB_CUST_GIFTCARD_HST
 		 WHERE ORD_NO = #{ordNo}
+		<if test="ordDtlNo != null and ordDtlNo != ''">
 		   AND ORD_DTL_NO = #{ordDtlNo}
+		</if>
 		 ORDER BY CUST_GFCD_SQ
 	</select>
 
@@ -2141,6 +2326,98 @@
 		   AND PAY_GB = 'O'
 		   AND PAY_STAT IN ('G016_30', 'G016_00')
 	</select>
+	
+	<!-- 마이페이지 전체취소 주문변경상세 등록 -->
+	<insert id="createOrderChangeDetailForAllCancel" parameterType="OrderChange">
+		/* TscOrder.createOrderChangeDetailForAllCancel */
+		INSERT INTO TB_ORDER_CHANGE_DETAIL (
+		       ORD_CHG_SQ
+		     , ORD_DTL_NO
+		     , CHG_QTY
+		     , CHG_STAT
+		     , CHG_ORD_DTL_NO
+		     , WH_MEMO
+		     , COMPLETE_DT
+		     , DEL_YN
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		SELECT #{ordChgSq}
+		     , ORD_DTL_NO
+		     , ORD_QTY
+		     , #{chgStat}
+		     , NULL
+		     , NULL
+		     , NOW()
+		     , 'N'
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		  FROM TB_ORDER_DETAIL
+		 WHERE ORD_NO = #{ordNo}
+	</insert>
+
+	<!-- 마이페이지 전체취소 주문변경상세 이력 등록-->
+	<insert id="createOrderChangeDetailHstForAllCancel" parameterType="OrderChange">
+		/* OrderChange.createOrderChangeDetailHstForAllCancel */
+		INSERT INTO TB_ORDER_CHANGE_DETAIL_HST (
+		       ORD_CHG_SQ
+		     , ORD_DTL_NO
+		     , CHG_QTY
+		     , CHG_STAT
+		     , CHG_ORD_DTL_NO
+		     , WH_MEMO
+		     , COMPLETE_DT
+		     , DEL_YN
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		SELECT ORD_CHG_SQ
+			 , ORD_DTL_NO
+			 , CHG_QTY
+			 , #{chgStat}
+			 , CHG_ORD_DTL_NO
+			 , WH_MEMO
+			 , COMPLETE_DT
+			 , DEL_YN
+			 , #{regNo}
+			 , NOW()
+			 , #{updNo}
+			 , NOW()
+		  FROM TB_ORDER_CHANGE_DETAIL
+		 WHERE ORD_CHG_SQ = #{ordChgSq}
+	</insert>
+	
+	<!-- 마이페이지 전체취소 환불정보 조회 -->
+	<select id="getRefundInfoForAllCancel" parameterType="Order" resultType="Order">
+		/* TscOrderChange.getRefundInfoForAllCancel */
+		SELECT OD.ORD_NO
+			 , SUM(OD.ORD_AMT)          AS RF_CNCL_AMT
+			 , SUM(OD.CPN1_DC_AMT)      AS RF_CPN1_AMT
+			 , SUM(OD.TMTB1_DC_AMT)     AS RF_TMTB1_AMT
+			 , SUM(OD.TMTB2_DC_AMT)     AS RF_TMTB2_AMT
+			 , SUM(OD.GOODS_CPN_DC_AMT) AS RF_GOODS_CPN_AMT
+			 , SUM(OD.CART_CPN_DC_AMT)  AS RF_CART_CPN_AMT
+			 , SUM(OD.PNT_DC_AMT)       AS RF_PNT_AMT
+			 , SUM(OD.PRE_PNT_DC_AMT)   AS RF_PRE_PNT_AMT
+			 , SUM(OD.GFCD_USE_AMT)     AS RF_GFCD_USE_AMT
+			 , SUM(DF.DELV_FEE)         AS RF_DELIVERY_FEE
+			 , SUM(OD.REAL_ORD_AMT)     AS REAL_ORD_AMT
+		  FROM TB_ORDER_DETAIL OD
+		 INNER JOIN (SELECT ORD_NO
+		                  , SUM(DELV_FEE) AS DELV_FEE
+		               FROM TB_DELIVERY_FEE
+		              WHERE DELV_FEE_GB = 'G018_10'
+		              GROUP BY ORD_NO) DF
+		    ON OD.ORD_NO = DF.ORD_NO
+		 WHERE OD.ORD_NO = #{ordNo}
+		 GROUP BY OD.ORD_NO
+	</select>
 </mapper>