Forráskód Böngészése

교환 TO 취소 개발중

tsit14 4 éve
szülő
commit
8a8b32b60d

+ 20 - 0
src/main/java/com/style24/core/biz/dao/TscOrderChangeDao.java

@@ -842,4 +842,24 @@ public interface TscOrderChangeDao {
 	 * @since 2021. 06. 14
 	 */	
 	int updateChgOrderDetailItemTemp(Order order);	
+	
+	/**
+	 * 교환배송실패 변경요청단위 전체취소 여부
+	 *
+	 * @param Order - 주문 정보
+	 * @return
+	 * @author card007
+	 * @since 2021. 01. 28
+	 */
+	int getExchangeDelvFailQty(OrderChange orderChange);
+	
+	/**
+	 * 추가배송비 취소 처리 (부분취소)
+	 *
+	 * @param OrderChange
+	 * @return int
+	 * @author jsh77b
+	 * @since 2021. 06. 21
+	 */
+	int createAddDeliveryFeeCancelPart(OrderChange orderChange);
 }

+ 89 - 16
src/main/java/com/style24/core/biz/service/TscOrderChangeService.java

@@ -146,6 +146,7 @@ public class TscOrderChangeService {
 	@SuppressWarnings("unchecked")
 	@Transactional("shopTxnManager")
 	public GagaMap partialCancel(GagaMap map, Integer userNo) {
+		
 		// 1. 취소요청목록 및 정보 설정
 		List<Order> cancelOrderRefundList 	= (List<Order>) map.get("cancelOrderRefundList");				// 취소환불금액 목록 (주문상세단품 단위)
 		List<Order> cancelDelvRefundList 	= (List<Order>) map.get("cancelDelvRefundList");				// 취소환불배송금액 목록 (DELV_FEE_CD 단위)
@@ -181,6 +182,12 @@ public class TscOrderChangeService {
 				modType = "STPC";																			// KCP 부분취소
 			}
 		}
+		
+		// 2021.06.21 교환출고 재고부족 취소실행
+		Order exchangeDelvFailCnclVo = new Order();
+		exchangeDelvFailCnclVo.setUpdNo(userNo);
+		exchangeDelvFailCnclVo.setOrdChgSq(ordChgSq);
+		orderChangeDao.updateExchangeDelvFailCnclYn(exchangeDelvFailCnclVo);
 
 		// 3. 주문변경정보, 주문정보, 환불정보 (배송정책코드 별)
 		List<Payment> pgList = new ArrayList<>();
@@ -316,9 +323,6 @@ public class TscOrderChangeService {
 
 							index++;
 						}
-						
-						// 2021.06.15 교환출고 재고부족 취소실행
-						orderChangeDao.updateExchangeDelvFailCnclYn(vo);
 
 						// 3-2-4. 사용포인트원복
 						int pntDcAmt = vo.getPntDcAmt();
@@ -546,19 +550,21 @@ public class TscOrderChangeService {
 
 		// 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);
+			// 2021.06.21  교환완료가 아닌상태의 변경신청값일때 실행
+			if (!TscConstants.OrderChangeStat.EXCHANGE_CANCEL.value().equals(chgStat)) {
+				// 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);
+			}
 		}
 
 		// 5. WMS 취소 처리
@@ -3853,4 +3859,71 @@ public class TscOrderChangeService {
 
 		return sb.toString();
 	}
+	
+	/**
+	 * 교환추가배송비 취소처리
+	 *
+	 * @param OrderChange (ordChgSq, userNo)
+	 * @author jsh77b
+	 * @since 2021. 06. 21
+	 */
+	public void addPayCostCncl(OrderChange orderChange) {
+		
+		// 2021.06.21
+		int ordQty = orderChangeDao.getExchangeDelvFailQty(orderChange);
+				
+		if (ordQty < 1) {
+			// PG 실행 (취소시 추가결제금액 취소처리)
+			Collection<Order> paymentList = orderChangeDao.getAddDeliveryFeePayment(orderChange);
+			
+			// 추가배송비 존재 시
+			if (paymentList != null && paymentList.size() > 0) {
+				
+				// 추가배송비 결제정보 조회
+				Payment pg = new Payment();
+				pg.setOrdChgSq(orderChange.getOrdChgSq());
+				pg = orderChangeDao.getAddPayCostPaymentInfo(pg);
+				
+				// 2021.06.21 추가배송비 취소 처리
+				// 회수구분 회수일때는 부분취소 (W)
+				if ("W".equals(orderChange.getWdGb())) {
+					orderChangeDao.createAddDeliveryFeeCancelPart(orderChange);
+
+					// 추가배송비 취소 정보 설정
+					if (StringUtils.isNotBlank(pg.getPgTid())) {
+						pg.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
+						pg.setPayGb(TscConstants.PaymentGb.DELIVERY.value());
+						pg.setModType("STSC");
+						pg.setModDesc("가맹점 취소 - 부분 취소");
+						pg.setIpAddress(orderChange.getIpAddress());
+						pg.setRegNo(orderChange.getUserNo());
+						pg.setUpdNo(orderChange.getUserNo());
+						
+						int leftAmt = orderChange.getAddPayCost() / 2;
+						
+						pg.setLeftAmt(leftAmt);
+						pg.setPartCancelAmt(leftAmt);
+					}
+				}
+				// 회수구분 직접일때는 전체취소 (D)
+				else {
+					orderChangeDao.createAddDeliveryFeeCancel(orderChange);
+					
+					// 추가배송비 취소 정보 설정
+					if (StringUtils.isNotBlank(pg.getPgTid())) {
+						pg.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
+						pg.setPayGb(TscConstants.PaymentGb.DELIVERY.value());
+						pg.setModType("STSC");
+						pg.setModDesc("가맹점 취소 - 전체 취소");
+						pg.setIpAddress(orderChange.getIpAddress());
+						pg.setRegNo(orderChange.getUserNo());
+						pg.setUpdNo(orderChange.getUserNo());
+					}
+				}
+				
+				// KCP 취소 처리
+				kcpService.kcpCancel(pg);
+			}
+		}
+	}
 }

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

@@ -226,6 +226,9 @@
 		         , A.DELV_FEE_CD
 		         , A.ORD_CAN_CHG_QTY
 		         , A.CHG_STAT
+		         , A.WD_GB
+		         , A.ADD_PAY_COST
+		         , A.DELV_FAIL_REASON
 		    FROM (
 		        SELECT OD.ORD_NO
 		             , OD.ORD_DTL_NO
@@ -287,6 +290,9 @@
 		                    THEN X.CHG_STAT
 		                    ELSE Y.CHG_STAT
 		                    END CHG_STAT
+		             , Y.WD_GB
+		             , Y.ADD_PAY_COST
+		             , Y.DELV_FAIL_REASON
 		        FROM   TB_ORDER_DETAIL OD
 		        INNER  JOIN TB_GOODS G1
 		        ON     OD.GOODS_CD = G1.GOODS_CD
@@ -335,9 +341,14 @@
 		            SELECT EDF.ORD_DTL_NO
 		                 , EDF.CNCL_RTN_QTY
 		                 , OCD.CHG_STAT
+		                 , OC.WD_GB
+		                 , OC.ADD_PAY_COST
+		                 , EDF.DELV_FAIL_REASON
 		              FROM TB_EXCHANGE_DELV_FAIL EDF
 		             INNER JOIN TB_ORDER_CHANGE_DETAIL OCD
 		                ON EDF.ORD_DTL_NO = OCD.CHG_ORD_DTL_NO
+		             INNER JOIN TB_ORDER_CHANGE OC
+		                ON OC.ORD_CHG_SQ = OCD.ORD_CHG_SQ
 		             WHERE OCD.DEL_YN = 'N'
 		               AND OCD.ORD_CHG_SQ = #{ordChgSq}
 		               AND EDF.DELV_CNCL_YN = 'N'
@@ -398,6 +409,9 @@
 		         , A.DELV_FEE_CD
 		         , A.ORD_CAN_CHG_QTY
 		         , A.CHG_STAT
+		         , A.WD_GB
+		         , A.ADD_PAY_COST
+		         , A.DELV_FAIL_REASON
 		) Z
 		INNER  JOIN (
 		    SELECT X.DELV_FEE_CD
@@ -4493,7 +4507,7 @@
 		     , UPD_NO = #{updNo}
 		     , UPD_DT = NOW()
 		WHERE  1=1
-		AND    ORD_DTL_NO = #{ordDtlNo}
+		AND    ORD_CHG_SQ = #{ordChgSq}
 		AND    DELV_CNCL_YN = 'N'
 	</update>
 	
@@ -4545,7 +4559,67 @@
 		 WHERE ORD_NO = #{ordNo}
 		   AND ORD_DTL_NO = #{ordDtlNo}
 		   AND ORD_DTL_ITEM_SQ = #{ordDtlItemSq}
-	</update>		
+	</update>
+	
+	<!-- 교환배송실패 변경요청단위 전체취소 여부 -->
+	<select id="getExchangeDelvFailQty" parameterType="Payment" resultType="int">
+		/* OrderChange.getExchangeDelvFailQty */
+		SELECT SUM(A.QTY) AS QTY
+		FROM (
+			SELECT OD.ORD_QTY - OD.CNCL_RTN_QTY AS QTY
+			FROM   TB_ORDER_DETAIL OD
+			INNER  JOIN TB_ORDER_CHANGE_DETAIL OCD
+			ON     OD.ORD_DTL_NO = OCD.CHG_ORD_DTL_NO 
+			WHERE  1=1
+			AND    OCD.ORD_CHG_SQ = #{ordChgSq}
+		) A
+	</select>
+	
+	<!-- 추가배송비 취소 처리 (부분취소)ㄴ -->
+	<insert id="createAddDeliveryFeeCancelPart" parameterType="OrderChange">
+		/* TscOrderChange.createAddDeliveryFeeCancelPart */
+		INSERT INTO TB_DELIVERY_FEE (
+		       PAY_SQ
+		     , ORD_NO
+		     , DELV_FEE_GB
+		     , DELV_FEE_CD
+		     , DELV_FEE
+		     , DELV_CPN_SQ
+		     , DELV_CPN_DC_AMT
+		     , REAL_DELV_AMT
+		     , ORD_CHG_SQ
+		     , SUPPLY_COMP_CD
+		     , DELV_USAC_YN
+		     , DELV_USAC_DT
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		SELECT NULL                            AS PAY_SQ
+		     , DF.ORD_NO
+		     , DF.DELV_FEE_GB
+		     , DF.DELV_FEE_CD
+		     , (DF.DELV_FEE / 2) * -1          AS DELV_FEE
+		     , NULL                            AS DELV_CPN_SQ
+		     , 0                               AS DELV_CPN_DC_AMT
+		     , (DF.REAL_DELV_AMT / 2) * -1     AS REAL_DELV_AMT
+		     , DF.ORD_CHG_SQ
+		     , DF.SUPPLY_COMP_CD
+		     , 'N'
+		     , NULL
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		  FROM TB_DELIVERY_FEE DF
+		 INNER JOIN TB_PAYMENT P
+		    ON P.ORD_CHG_SQ = DF.ORD_CHG_SQ
+		   AND P.PAY_STAT = 'G016_30'
+		   AND P.PAY_GB = 'D'
+		 WHERE DF.ORD_CHG_SQ = #{ordChgSq}
+	</insert>
+	
 </mapper>