Просмотр исходного кода

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.batch into develop

swkim 4 лет назад
Родитель
Сommit
c22f983c6b

+ 3 - 2
src/main/java/com/style24/batch/biz/job/delivery/TsbDeliveryOrderJob.java

@@ -315,12 +315,13 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 							} else {
 								for (Delivery wmsOrdDtlData : ordDtlNoList) {
 									// log.info("라스트  N   DTL_NO"+ wmsOrdDtlData.getOrdDtlNo());
-
+									
 									wmsOrdDtlData.setDelvLocCd(TscConstants.WMS_DELV_LOC_CD);
 									// 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
 									wmsOrdDtlData.setDelvArGb("N"); // 거절
 									wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty());
-									deliveryService.saveDeliveryAssign(wmsOrdDtlData);
+									// 출고거부 프로세스  중지(품절대상 일까지 출고처 지정  취소상품 있을경우 출고처 지정될수 있게)
+									//deliveryService.saveDeliveryAssign(wmsOrdDtlData);
 								}
 							}
 						}

+ 14 - 12
src/main/java/com/style24/batch/biz/job/delivery/TsbDeliveryOrderRsltJob.java

@@ -104,18 +104,20 @@ public class TsbDeliveryOrderRsltJob extends TsbAbstractJob<Delivery, Delivery,
 		for(Delivery ordNo : ordNolist) {
 			
 			Delivery info = deliveryService.getDeliveryStart(ordNo);
-			
-			Order order = new Order();
-			order.setOrdNo(info.getOrdNo());
-			order.setCustNo(info.getCustNo());
-			order.setOrdPhnno(info.getOrdPhnno());
-			order.setOrdNm(info.getOrdNm());
-			order.setGoodsCnt(info.getGoodsCnt()+"");
-			order.setGoodsNm(info.getGoodsNm());
-			try {
-				kakaotalkService.sendDeliveryStart(order, TsbConstants.REG_NO);
-			} catch(Exception e) {
-				log.debug("kakaotalkService Exception OrdNo:"+info.getOrdNo());
+			// 자사몰 주문일경우 알림톡 발송 
+			if(TscConstants.MallGb.SELFMALL.value().equals(info.getMallGb())) {
+				Order order = new Order();
+				order.setOrdNo(info.getOrdNo());
+				order.setCustNo(info.getCustNo());
+				order.setOrdPhnno(info.getOrdPhnno());
+				order.setOrdNm(info.getOrdNm());
+				order.setGoodsCnt(info.getGoodsCnt()+"");
+				order.setGoodsNm(info.getGoodsNm());
+				try {
+					kakaotalkService.sendDeliveryStart(order, TsbConstants.REG_NO);
+				} catch(Exception e) {
+					log.debug("kakaotalkService Exception OrdNo:"+info.getOrdNo());
+				}
 			}
 		}
 		

+ 15 - 18
src/main/java/com/style24/batch/biz/job/delivery/TsbSoldoutCancelJob.java

@@ -41,49 +41,46 @@ public class TsbSoldoutCancelJob extends TsbAbstractJob<Delivery, Delivery, Deli
 	@Override
 	public Delivery process(Delivery delivery) throws Exception {
 		succCnt = 0;
-		failCnt = 1;
+		failCnt = 0;
 
 		/**
 		 * 1. (일반,예약) 품절취소대상 주문번호 목록 조회, 주문번호 단위  주문상세목록 조회 , 주문번호 단위 core 취소 서비스호출  
 		 * 2. (출고예외 -- 재고부족)               품절 대상 조회     core 취소 서비스호출  처리완료 업데이트 
 		 * 3. (회수예외 -- 확정전 품절, 확정전 불량 )   품절 대상 조회    core 취소 서비스호출  처리완료 업데이트 
 		 * */
-		
+
 		// 1. (일반,예약) 품절취소대상 주문번호 목록 조회, 주문번호 단위  주문상세목록 조회 , 주문번호 단위 core 취소 서비스호출  
-		
 		Collection<Delivery> ordnoList = deliveryService.getSoldoutOrderNoList();
-		try {
-			for(Delivery data : ordnoList) {
+		for(Delivery data : ordnoList) {
+			try {
 				deliveryService.SoldoutCancel(data,"N");
 				succCnt++;
+			}catch(Exception E) {
+					failCnt++;
 			}
-		}catch(Exception E) {
-			failCnt++;
 		}
 		
-		
 		// 2. (출고예외 -- 재고부족)               품절 대상 조회     core 취소 서비스호출  처리완료 업데이트 
 		
 		Collection<Delivery> excOrdnoList = deliveryService.getSoldoutOrderExcNoList();
-		try {
-			for(Delivery data2 : excOrdnoList) {
+		for(Delivery data2 : excOrdnoList) {
+			try {
 				deliveryService.SoldoutCancel(data2,"E");
 				succCnt++;
+			} catch(Exception E) {
+				failCnt++;
 			}
-		} catch(Exception E) {
-			failCnt++;
 		}
-		
-		
+
 		// 3. (회수예외 -- 확정전 품절, 확정전 불량 )   품절 대상 조회    core 취소 서비스호출   처리완료 업데이트 
 		Collection<Delivery> recallOrdnoList = deliveryService.getSoldoutOrderRecallNoList();
-		try {
-			for(Delivery data3 : recallOrdnoList) {
+		for(Delivery data3 : recallOrdnoList) {
+			try {
 				deliveryService.SoldoutCancel(data3,"R");
 				succCnt++;
+			} catch(Exception E) {
+				failCnt++;
 			}
-		} catch(Exception E) {
-			failCnt++;
 		}
 
 		 return delivery;

+ 2 - 0
src/main/java/com/style24/batch/biz/job/marketing/TsbReviewGuideJob.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 
 import com.style24.batch.biz.job.TsbAbstractJob;
 import com.style24.batch.biz.service.TsbReviewService;
+import com.style24.batch.support.env.TsbConstants;
 import com.style24.core.biz.service.TscEnvsetService;
 import com.style24.core.biz.thirdparty.SsgKakaoSender;
 import com.style24.core.support.env.TscConstants;
@@ -76,6 +77,7 @@ public class TsbReviewGuideJob extends TsbAbstractJob<String, String, String> {
 				kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.REVIEW_WRITE.value(), dm, replaceInfo);
 
 				// 5.상품평등록안내발송완료 처리
+				reviewGuide.setUpdNo(TsbConstants.REG_NO);
 				reviewService.updateReviewGuideSendComplete(reviewGuide);
 			}
 		}

+ 11 - 12
src/main/java/com/style24/batch/biz/service/TsbDeliveryService.java

@@ -1202,7 +1202,6 @@ public class TsbDeliveryService {
 	 * @author moon
 	 * @since  2021. 04. 26
 	 */
-	@Transactional("shopTxnManager")
 	public void SoldoutCancel(Delivery data, String gubun) {
 		Integer userNo = TsbConstants.REG_NO;
 		Collection<Delivery> list = null;
@@ -1216,6 +1215,9 @@ public class TsbDeliveryService {
 
 		try {
 			if(list != null) {
+				Delivery chk = list.iterator().next();
+				
+				//if(!TscConstants.PayMeans.CELL_PHONE.value().equals(chk.getPayMeans()) && !TscConstants.PayMeans.BANK_DEPOSIT.value().equals(chk.getPayMeans())) {
 				Collection<Order> ordSoldoutList = new ArrayList<Order>();
 				for (Delivery item : list) {
 	
@@ -1238,6 +1240,7 @@ public class TsbDeliveryService {
 
 				// 네이버페이 주문형 처리
 				int i = 0;
+				
 				for(Order order : ordSoldoutList) {
 					order = orderDao.getOrdDtlInfo(order);
 					if("O".equals(order.getOrdExchGb())) {
@@ -1261,17 +1264,8 @@ public class TsbDeliveryService {
 
 					i++;
 				}
-	
-				// TB_ORDER_DETAIL 결품여부 Y
+			
 				
-				/*
-				for(Delivery delv : list) {
-					delv.setUpdNo(userNo);
-					delv.setSoldoutMemo("자동 품절처리");
-					deliveryDao.updateSoldOut(delv);
-				}
-				*/
-	
 				if ("E".equals(gubun)) {
 					// 처리완료 업데이트
 					data.setUpdNo(userNo);
@@ -1279,10 +1273,15 @@ public class TsbDeliveryService {
 				} else if ("R".equals(gubun)) {
 					// 처리완료 업데이트
 					deliveryDao.updateTbRecallException(data);
+				} else {
+					log.info("일반");
 				}
+				//}
 			}
 		} catch(Exception e) {
-			throw new IllegalStateException(e.getMessage(), e);
+			//throw new IllegalStateException(e.getMessage(), e);
+			log.info("Exception data {}"+data);
+			e.printStackTrace();
 		}
 	}
 

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

@@ -158,6 +158,7 @@ public class Delivery extends TscBaseDomain {
 	private String goodsCd;
 	private String goodsNm;
 	private String chgerBaseAddr;
+	private String mallGb;
 	
 	private String cjOrdChgSq;
 	private String cjOrdNo;

+ 13 - 5
src/main/java/com/style24/persistence/mybatis/shop/TsbDelivery.xml

@@ -1021,15 +1021,15 @@
 			, E.RECIP_ZIPCODE                     AS DeliveryPostalCode
 			, E.RECIP_BASE_ADDR                   AS DeliveryAddr1
 			, E.RECIP_DTL_ADDR                    AS DeliveryAddr2
-			, CASE WHEN B.SHOT_DELV_YN ='Y' THEN '14' ELSE '05' END                               AS LogisticsNo
-			, CASE WHEN B.SHOT_DELV_YN ='Y' THEN '디디로직스'  ELSE 'CJ 대한통운' END                  AS LogisticsName
+			, CASE WHEN B.ORD_EXCH_GB = 'O' AND B.SHOT_DELV_YN ='Y' THEN '14' ELSE '05' END               AS LogisticsNo
+			, CASE WHEN B.ORD_EXCH_GB = 'O' AND B.SHOT_DELV_YN ='Y' THEN '디디로직스'  ELSE 'CJ 대한통운' END   AS LogisticsName
 			, E.DELV_MEMO                         AS DeliveryMemo
 			, CASE WHEN (SELECT COUNT(*) -1 FROM TB_ORDER_DETAIL WHERE ORD_NO = A.ORD_NO) > 0 THEN CONCAT(F.GOODS_NM,' 외  ', (SELECT COUNT(*) -1 FROM TB_ORDER_DETAIL WHERE ORD_NO = A.ORD_NO) , '건') ELSE F.GOODS_NM END   AS ProductSummary
 			,  0                                  AS IsCancel
 			,  0                                  AS IsChangeAddress
 			,  0                                  AS IsReOrder
 			, CASE WHEN A.MALL_GB = 'G011_20' THEN B.EXTMALL_ID ELSE 'APISHOP_0054' END                  AS OrderPath -- 주문경로 (확인필요!)
-			, CASE WHEN B.SHOT_DELV_YN ='Y' THEN '20' ELSE '10' END                                 	 AS DeliveryClassCd 
+			, CASE WHEN B.ORD_EXCH_GB = 'O' AND B.SHOT_DELV_YN ='Y' THEN '20' ELSE '10' END              AS DeliveryClassCd 
 			, CASE WHEN B.ORD_EXCH_GB ='O'  THEN '10' ELSE '20' END                                 	 AS ShippingTypeCd
 			, B.GIFT_PACK_YN                      AS IsBeautyDelivery
 			, ''                                                                                         AS DeliveryAddrNew  -- 도로명 주소 (확인필요!)
@@ -1415,7 +1415,7 @@
 			   AND A.INVOICE_NO != ''
 			   AND A.ORD_DTL_STAT  = 'G013_50'--  배송중
 			   AND NOT EXISTS (SELECT 1 FROM TB_ORDER_DETAIL_INVOICE B WHERE A.ORD_NO = B.ORD_NO AND A.ORD_DTL_NO = B.ORD_DTL_NO AND A.INVOICE_NO = B.INVOICE_NO AND B.SWT_TRC_SEND_YN ='Y')
-			   AND A.REG_DT >= DATE_ADD(STR_TO_DATE(REPLACE( '2021-09-01','-',''), '%Y%m%d%H%i%s'), INTERVAL 0 DAY)
+			   AND A.REG_DT >= '2021-08-31 16:00:00'
 			 GROUP BY A.INVOICE_NO, A.SHIP_COMP_CD
 			   
 			UNION ALL 
@@ -1488,7 +1488,8 @@
 			   AND B.ORD_EXCH_GB = 'O'
 			   AND 2 <= FN_GET_BIZDAYS(DATE_FORMAT(A.ORD_DT, '%Y%m%d') , DATE_FORMAT(DATE_ADD(NOW(),INTERVAL -1 DAY ), '%Y%m%d'))
 			   AND A.ORD_DT >= DATE_ADD(DATE_FORMAT('20210831160000','%Y%m%d%H%i%S') , INTERVAL 0 DAY)   -- 오픈 시점 날짜 세팅 후 주석풀기
-	
+			   AND NOT EXISTS (SELECT 1 FROM TB_ORDER_CHANGE_DETAIL OCD WHERE OCD.ORD_DTL_NO = B.ORD_DTL_NO AND OCD.CHG_STAT ='G685_10')
+		
 			UNION ALL  
 			 
 			SELECT A.ORD_NO 
@@ -1503,6 +1504,7 @@
 			   AND D.DELV_RES_DT  < NOW()
 			   AND 2 <= FN_GET_BIZDAYS(DATE_FORMAT(CASE WHEN  A.ORD_DT < D.DELV_RES_DT THEN D.DELV_RES_DT ELSE A.ORD_DT END, '%Y%m%d') , DATE_FORMAT(DATE_ADD(NOW(),INTERVAL -1 DAY ), '%Y%m%d'))
 			   AND CASE WHEN  A.ORD_DT < D.DELV_RES_DT THEN D.DELV_RES_DT ELSE A.ORD_DT END  >= DATE_ADD(DATE_FORMAT('20210831160000','%Y%m%d%H%i%S') , INTERVAL 0 DAY)   -- 오픈 시점 날짜 세팅 후 주석풀기 
+			   AND NOT EXISTS (SELECT 1 FROM TB_ORDER_CHANGE_DETAIL OCD WHERE OCD.ORD_DTL_NO = B.ORD_DTL_NO AND OCD.CHG_STAT ='G685_10')
 		) A 
 		GROUP BY A.ORD_NO
 		ORDER BY ORD_NO
@@ -1550,6 +1552,7 @@
 		 WHERE A.COMPLTED_YN = 'N'
 		   AND B.GIFT_YN     = 'N'
 		   AND A.REG_DT >= DATE_ADD(DATE_FORMAT('20210901','%Y%m%d%H%i%S') , INTERVAL 0 DAY)
+		   AND EXISTS (SELECT 1 FROM TB_ORDER_DETAIL OD WHERE OD.ORD_DTL_NO = B.ORD_DTL_NO AND OD.ORD_DTL_STAT != 'G013_99')
 		 GROUP BY A.ORD_NO 
 		 ]]>
 	</select>
@@ -1578,6 +1581,8 @@
 		   AND B.GIFT_YN      = 'N'
 		   AND A.ORD_NO       = #{ordNo}
 		   AND NOT EXISTS (SELECT 1 FROM TB_EXCHANGE_DELV_FAIL WHERE ORD_NO = A.ORD_NO AND ORD_DTL_NO= B.ORD_DTL_NO) 
+		   AND EXISTS (SELECT 1 FROM TB_ORDER_DETAIL OD WHERE OD.ORD_DTL_NO = B.ORD_DTL_NO AND OD.ORD_DTL_STAT != 'G013_99')
+		   AND NOT EXISTS (SELECT 1 FROM TB_ORDER_DETAIL OD WHERE OD.ORD_DTL_NO = B.ORD_DTL_NO AND OD.CNCL_RTN_QTY = b.EXCEPTION_QTY)
 		  GROUP BY A.ORD_NO, B.ORD_DTL_NO, C.CUST_NO, C.ORD_NM, D.PG_GB, D.PAY_MEANS, E.BANK_CD, E.ACCOUNT_NM, E.ACCOUNT_NO, B.EXCEPTION_QTY 
 	</select>	
 	
@@ -1617,6 +1622,7 @@
 		 WHERE B.REASON_CODE IN ('08','10')
 		   AND A.RECALL_STAT ='P'
 		   AND NOT EXISTS (SELECT 1 FROM TB_EXCHANGE_DELV_FAIL WHERE ORD_NO = A.ORDER_NO AND ORD_DTL_NO= B.ORDER_DTL_NO) 
+		   AND NOT EXISTS (SELECT 1 FROM TB_ORDER_DETAIL OD WHERE OD.ORD_DTL_NO = B.ORDER_DTL_NO AND OD.CNCL_RTN_QTY = b.EXCEPTION_QTY)
 		   AND A.ORDER_NO = #{ordNo}
 	</select>
 	
@@ -1799,6 +1805,7 @@
 			, A.ORD_NM 
 			, (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD= MAX(B.GOODS_CD))  AS GOODS_NM
 			, COUNT(B.GOODS_CD) -1 AS GOODS_CNT
+			, A.MALL_GB
 		  FROM TB_ORDER A
 		  JOIN TB_ORDER_DETAIL B ON A.ORD_NO = B.ORD_NO 
 		 WHERE A.ORD_NO = #{orderno}
@@ -1818,6 +1825,7 @@
 			, CONCAT(A.CHGER_BASE_ADDR ,' ',A.CHGER_DTL_ADDR)                  AS CHGER_BASE_ADDR 
 			, (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD= MAX(C.GOODS_CD))  AS GOODS_NM
 			, COUNT(C.GOODS_CD) -1                                             AS GOODS_CNT
+			, A.MALL_GB
 		  FROM TB_ORDER_CHANGE A
 		  JOIN TB_ORDER_CHANGE_DETAIL B ON A.ORD_CHG_SQ = B.ORD_CHG_SQ 
 		  JOIN TB_ORDER_DETAIL C        ON B.ORD_DTL_NO = C.ORD_DTL_NO 

+ 94 - 241
src/main/java/com/style24/persistence/mybatis/shop/TsbGoods.xml

@@ -488,31 +488,43 @@
 	<!-- 상품 혜택가 목록 -->
 	<sql id="getGoodsBenefitList_sql">
 		WITH CTE AS (
-		SELECT CPN_REFVAL_SQ
-		FROM TB_COUPON CP
-		INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_ID=CPR.CPN_ID
-		WHERE  CP.SITE_CD = 'G000_10'
-		AND    CP.CPN_STAT = 'G232_11'   -- 쿠폰인 진행중인 쿠폰만
-		AND    NOW() BETWEEN CP.AVAIL_STDT AND CP.AVAIL_EDDT
-		AND    CP.CPN_TYPE = 'G230_10' /*즉시할인쿠폰*/
-		AND    CP.DC_CD_GB = 'G233_00'		         -- 일반유형(할인쿠폰구분)
-		AND    CP.APPLY_SCOPE = 'I'
-		AND 	CPR.DEL_YN = 'N'
+		    SELECT CPN_REFVAL_SQ
+		         , CP.CPN_ID
+		    FROM   TB_COUPON CP
+		    INNER  JOIN TB_COUPON_REFVAL CPR 
+		    ON     CP.CPN_ID = CPR.CPN_ID
+		    WHERE  1=1
+		    AND    CP.SITE_CD = 'G000_10'
+		    AND    CP.CPN_STAT = 'G232_11'   -- 쿠폰인 진행중인 쿠폰만
+		    AND    NOW() BETWEEN CP.AVAIL_STDT AND CP.AVAIL_EDDT
+		    AND    CP.CPN_TYPE = 'G230_10' /*즉시할인쿠폰*/
+		    AND    CP.DC_CD_GB = 'G233_00'		         -- 일반유형(할인쿠폰구분)
+		    AND    CP.APPLY_SCOPE = 'I'
+		    AND    CPR.DEL_YN = 'N'
 		)
 		, CTE_DETAIL AS (
-		        SELECT CP.CPN_REFVAL_SQ, CPR.CPN_ID, CPR.REF_VAL, G.GOODS_CD GKEY, G.GOODS_CD
-		        FROM CTE CP
-		        INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_REFVAL_SQ=CPR.CPN_REFVAL_SQ
-		        INNER JOIN TB_GOODS G ON CPR.REF_VAL=G.GOODS_CD
-		        WHERE CPR.CPN_TARGET = 'G260_10'
-
+		        SELECT CP.CPN_REFVAL_SQ
+		             , CPR.CPN_ID
+		             , CPR.REF_VAL
+		             , G.GOODS_CD GKEY
+		             , G.GOODS_CD
+		        FROM   CTE CP
+		        INNER  JOIN TB_COUPON_REFVAL CPR 
+		        ON     CP.CPN_REFVAL_SQ = CPR.CPN_REFVAL_SQ
+		        INNER  JOIN TB_GOODS G 
+		        ON     CPR.REF_VAL = G.GOODS_CD
+		        WHERE  CPR.CPN_TARGET = 'G260_10' -- 적용상품
 		        UNION
-
 		        /* 적용대상:카테고리*/
-		        SELECT CP.CPN_REFVAL_SQ, CPR.CPN_ID, CPR.REF_VAL, G.GOODS_CD GKEY, G.GOODS_CD
-		        FROM  CTE CP
-		        INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_REFVAL_SQ=CPR.CPN_REFVAL_SQ
-		        INNER JOIN
+		        SELECT CP.CPN_REFVAL_SQ
+		             , CPR.CPN_ID
+		             , CPR.REF_VAL
+		             , G.GOODS_CD GKEY
+		             , G.GOODS_CD
+		        FROM   CTE CP
+		        INNER  JOIN TB_COUPON_REFVAL CPR 
+		        ON     CP.CPN_REFVAL_SQ = CPR.CPN_REFVAL_SQ
+		        INNER  JOIN
 		                    (SELECT LEAF_CATE_NO
 		                          , CATE_LVL
 		                          , CATE_NO
@@ -539,7 +551,7 @@
 		                                         , CATE5_NO
 		                                    FROM  TB_CATE_4SRCH
 		                                    WHERE SITE_CD = 'G000_10'
-		                                    AND CATE_TYPE = 'G031_10') A, -- 상품타입
+		                                    AND   CATE_TYPE = 'G031_10') A, -- 상품타입
 		                                  (SELECT 1 AS X		-- UNPIVOT 컬럼 수 만큼 선언
 		                                   UNION ALL SELECT 2 AS X
 		                                   UNION ALL SELECT 3 AS X
@@ -556,51 +568,54 @@
 		        WHERE CPR.CPN_TARGET =  'G260_11'
 		        AND IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
 		        AND IFNULL(REF_BRAND_CD,G.BRAND_CD) = G.BRAND_CD
-
-		        UNION
-
-		        /* 적용대상:브랜드*/
-		        SELECT CP.CPN_REFVAL_SQ, CPR.CPN_ID, CPR.REF_VAL, G.BRAND_CD GKEY, G.GOODS_CD
-		        FROM  CTE CP
-		        INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_REFVAL_SQ=CPR.CPN_REFVAL_SQ
-		        INNER JOIN TB_GOODS G ON CPR.REF_VAL=G.BRAND_CD
-		        WHERE CPR.CPN_TARGET = 'G260_12'
-		        AND   IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
-
 		        UNION
-
-		        /* 적용대상:공급업체*/
-		        SELECT CP.CPN_REFVAL_SQ, CPR.CPN_ID, CPR.REF_VAL, G.SUPPLY_COMP_CD GKEY, G.GOODS_CD
-		        FROM CTE CP
-		        INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_REFVAL_SQ=CPR.CPN_REFVAL_SQ
-		        INNER JOIN TB_GOODS G ON CPR.REF_VAL=G.SUPPLY_COMP_CD
-		        WHERE CPR.CPN_TARGET = 'G260_13'
+		        /* 적용대상:브랜드, 공급업체 */
+		        SELECT CP.CPN_REFVAL_SQ
+				     , CPR1.CPN_ID
+				     , CPR1.REF_VAL
+				     , G1.BRAND_CD GKEY
+				     , G1.GOODS_CD
+				FROM   CTE CP
+				INNER  JOIN TB_COUPON_REFVAL CPR1 
+				ON     CP.CPN_ID = CPR1.CPN_ID
+				INNER  JOIN TB_GOODS G1 
+				ON     CPR1.REF_VAL = G1.BRAND_CD
+				AND    CPR1.CPN_TARGET = 'G260_12'
+				INNER  JOIN TB_COUPON_REFVAL CPR2 
+				ON     CP.CPN_ID = CPR2.CPN_ID
+				INNER  JOIN TB_GOODS G2
+				ON     CPR2.REF_VAL = G2.SUPPLY_COMP_CD
+				AND    CPR2.CPN_TARGET = 'G260_13'
+				WHERE  1=1
+				AND    IFNULL(CPR1.REF_FORMAL_GB, G1.FORMAL_GB) = G1.FORMAL_GB
+				AND    CPR1.CPN_ID = CPR2.CPN_ID
+				AND    G1.GOODS_CD = G2.GOODS_CD
 		 )
 		SELECT GOODS_CD
-		    , 'G100_00' AS CUST_GB
-		    , CURR_PRICE
-		    , MIN(
+		     , 'G100_00' AS CUST_GB
+		     , CURR_PRICE
+		     , MIN(
 		          ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(CURR_PRICE - DC_PVAL ,0)
 		                 ELSE CURR_PRICE - (FLOOR((CURR_PRICE * DC_PVAL / 100) / 1) * 1)
 		                 END) ) AS PC_CURR_PRICE
-		    , MIN(
+		     , MIN(
 		          ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(CURR_PRICE - DC_MVAL ,0)
 		                 ELSE CURR_PRICE - (FLOOR((CURR_PRICE * DC_MVAL / 100) / 1) * 1)
 		            END) )AS MO_CURR_PRICE
-		    , MIN(
+		     , MIN(
 		          ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(CURR_PRICE - DC_AVAL ,0)
 		                 ELSE CURR_PRICE - (FLOOR((CURR_PRICE * DC_AVAL / 100) / 1) * 1)
 		            END) )AS MO_CURR_PRICE
-		    , STAFF_CURR_PRICE
-		    , MIN(
+		     , STAFF_CURR_PRICE
+		     , MIN(
 		         ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(STAFF_CURR_PRICE - DC_PVAL ,0)
 		                ELSE CURR_PRICE - (FLOOR((STAFF_CURR_PRICE * DC_PVAL / 100) / 1) * 1)
 		           END) )AS STAFF_PC_CURR_PRICE
-		    , MIN(
+		     , MIN(
 		          ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(STAFF_CURR_PRICE - DC_MVAL ,0)
 		                 ELSE CURR_PRICE - (FLOOR((STAFF_CURR_PRICE * DC_MVAL / 100) / 1) * 1)
 		            END) )AS STAFF_MO_CURR_PRICE
-		    , MIN(
+		     , MIN(
 		          ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(STAFF_CURR_PRICE - DC_AVAL ,0)
 		                 ELSE CURR_PRICE - (FLOOR((STAFF_CURR_PRICE * DC_AVAL / 100) / 1) * 1)
 		            END) )AS STAFF_APP_CURR_PRICE
@@ -644,178 +659,10 @@
 		                           )
 		          ) CP
 		) Y
-		GROUP BY GOODS_CD ,CURR_PRICE, STAFF_CURR_PRICE, CUST_GB
-	</sql>
-
-	<!-- 상품 혜택가 목록 -->
-	<sql id="getGoodsBenefitList_sql_org">
-		SELECT GOODS_CD
-		       , 'G100_00' AS CUST_GB
-		       , CURR_PRICE
-		       , MIN(
-		           ( CASE WHEN DC_WAY = 'G240_10' THEN
-		                 GREATEST(CURR_PRICE - DC_PVAL ,0)
-		            ELSE
-		                 CURR_PRICE - (FLOOR((CURR_PRICE * DC_PVAL / 100) / #{pointUnit}) * #{pointUnit})
-		            END) )AS PC_CURR_PRICE
-		       , MIN(
-		           ( CASE WHEN DC_WAY = 'G240_10' THEN
-		                 GREATEST(CURR_PRICE - DC_MVAL ,0)
-		            ELSE
-		                 CURR_PRICE - (FLOOR((CURR_PRICE * DC_MVAL / 100) / #{pointUnit}) * #{pointUnit})
-		            END) )AS MO_CURR_PRICE
-		       , MIN(
-		           ( CASE WHEN DC_WAY = 'G240_10' THEN
-		                 GREATEST(CURR_PRICE - DC_AVAL ,0)
-		            ELSE
-		                 CURR_PRICE - (FLOOR((CURR_PRICE * DC_AVAL / 100) / #{pointUnit}) * #{pointUnit})
-		            END) )AS MO_CURR_PRICE
-		       , STAFF_CURR_PRICE
-		       , MIN(
-		           ( CASE WHEN DC_WAY = 'G240_10' THEN
-		                 GREATEST(STAFF_CURR_PRICE - DC_PVAL ,0)
-		            ELSE
-		                 CURR_PRICE - (FLOOR((STAFF_CURR_PRICE * DC_PVAL / 100) / #{pointUnit}) * #{pointUnit})
-		            END) )AS STAFF_PC_CURR_PRICE
-		       , MIN(
-		           ( CASE WHEN DC_WAY = 'G240_10' THEN
-		                 GREATEST(STAFF_CURR_PRICE - DC_MVAL ,0)
-		            ELSE
-		                 CURR_PRICE - (FLOOR((STAFF_CURR_PRICE * DC_MVAL / 100) / #{pointUnit}) * #{pointUnit})
-		            END) )AS STAFF_MO_CURR_PRICE
-		       , MIN(
-		           ( CASE WHEN DC_WAY = 'G240_10' THEN
-		                 GREATEST(STAFF_CURR_PRICE - DC_AVAL ,0)
-		            ELSE
-		                 CURR_PRICE - (FLOOR((STAFF_CURR_PRICE * DC_AVAL / 100) / #{pointUnit}) * #{pointUnit})
-		            END) )AS STAFF_APP_CURR_PRICE
-		FROM   (
-		        SELECT CP.CPN_ID
-		             , CP.CPN_NM
-		             , CP.DC_WAY                                              /*할인방식*/
-		             , CP.DC_PVAL                                             /*PC 할인값*/
-		             , CP.DC_MVAL                                             /*MO 할인값*/
-		             , CP.DC_AVAL                                             /*APP 할인값*/
-		             , CP.CURR_PRICE                                          /*전체 판매가*/
-		             , CP.STAFF_CURR_PRICE                                    /*임직원판매가*/
-		             , CP.GOODS_CD
-		        FROM   (
-		                SELECT CP.CPN_ID    /*쿠폰ID*/
-		                     , CP.CPN_NM    /*쿠폰명*/
-		                     , CP.DC_WAY    /*할인방식*/
-		                     , CP.DC_PVAL   /*PC할인값*/
-		                     , CP.DC_MVAL   /*모바일할인값*/
-		                     , CP.DC_AVAL   /*APP할인값*/
-		                     , G.CURR_PRICE  /*현재판매가*/
-		                     , G.CURR_PRICE AS STAFF_CURR_PRICE  /*현재판매가*/
-		                     , G.GOODS_CD
-		                FROM   TB_GOODS G
-		                     , TB_COUPON CP
-		                WHERE  CP.SITE_CD = 'G000_10'
-		                AND    CP.CPN_STAT = 'G232_11'   -- 쿠폰인 진행중인 쿠폰만
-		                AND    NOW() BETWEEN CP.AVAIL_STDT AND CP.AVAIL_EDDT
-		                AND    CP.CPN_TYPE = 'G230_10' /*즉시할인쿠폰*/
-		                AND    CP.DC_CD_GB = 'G233_00'                         -- 일반유형(할인쿠폰구분)
-		                AND   (
-		                        (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
-		                                                   WHERE CPN_ID = CP.CPN_ID
-		                                                   AND CPN_TARGET = 'G260_10'
-		                                                   AND DEL_YN = 'N'
-		                                                   AND REF_VAL = G.GOODS_CD
-		                                                   ) > 0
-		                        )
-		                        OR /* 적용대상:카테고리*/
-		                        (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
-		                                                   WHERE CPN_ID = CP.CPN_ID
-		                                                   AND CPN_TARGET = 'G260_11'
-		                                                   AND DEL_YN = 'N'
-		                                                   AND IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
-		                                                   AND IFNULL(REF_BRAND_CD,G.BRAND_CD) = G.BRAND_CD
-		                                                   AND REF_VAL IN (SELECT DISTINCT X.CATE_NO
-		                                                                   FROM
-		                                                                        (SELECT LEAF_CATE_NO
-		                                                                              , CATE_LVL
-		                                                                              , CATE_NO
-		                                                                         FROM (
-		                                                                               SELECT LEAF_CATE_NO ,
-		                                                                                      CASE WHEN X = 1 THEN 'CATE1_NO'  -- 컬럼과 매핑(컬럼명)
-		                                                                                           WHEN X = 2 THEN 'CATE2_NO'
-		                                                                                           WHEN X = 3 THEN 'CATE3_NO'
-		                                                                                           WHEN X = 4 THEN 'CATE4_NO'
-		                                                                                           ELSE  'CATE5_NO'
-		                                                                                      END CATE_LVL,
-		                                                                                      CASE WHEN X = 1 THEN CATE1_NO  -- 컬럼과 매핑(컬럼 데이터)
-		                                                                                           WHEN X = 2 THEN CATE2_NO
-		                                                                                           WHEN X = 3 THEN CATE3_NO
-		                                                                                           WHEN X = 4 THEN CATE4_NO
-		                                                                                           ELSE  CATE5_NO
-		                                                                                      END CATE_NO
-		                                                                               FROM (
-		                                                                                      ( SELECT LEAF_CATE_NO
-		                                                                                             , CATE1_NO
-		                                                                                             , CATE2_NO
-		                                                                                             , CATE3_NO
-		                                                                                             , CATE4_NO
-		                                                                                             , CATE5_NO
-		                                                                                        FROM  TB_CATE_4SRCH
-		                                                                                        WHERE SITE_CD = 'G000_10'
-		                                                                                        AND CATE_TYPE = 'G031_10') A, -- 상품타입
-		                                                                                      (SELECT 1 AS X                -- UNPIVOT 컬럼 수 만큼 선언
-		                                                                                       UNION ALL SELECT 2 AS X
-		                                                                                       UNION ALL SELECT 3 AS X
-		                                                                                       UNION ALL SELECT 4 AS X
-		                                                                                       UNION ALL SELECT 5 AS X
-		                                                                                     ) B
-		                                                                                    )
-		                                                                               ORDER BY LEAF_CATE_NO, CATE_LVL
-		                                                                              ) K
-		                                                                              WHERE CATE_NO IS NOT NULL
-		                                                                        ) X,
-		                                                                        (
-		                                                                         SELECT A.CATE_NO, A.GOODS_CD
-		                                                                         FROM TB_CATE_GOODS A
-		                                                                         WHERE GOODS_CD = G.GOODS_CD
-		                                                                        ) Y
-		                                                                        WHERE X.LEAF_CATE_NO = Y.CATE_NO
-		                                                                  )
-		                                                  ) >0
-		                        )
-		                        OR /* 적용대상:브랜드*/
-		                        (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
-		                                                   WHERE CPN_ID = CP.CPN_ID
-		                                                   AND CPN_TARGET = 'G260_12'
-		                                                   AND DEL_YN = 'N'
-		                                                   AND REF_VAL = G.BRAND_CD
-		                                                   AND IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
-		                                                  ) >0
-		                        )
-		                        OR /* 적용대상:공급업체*/
-		                        (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
-		                                                   WHERE CPN_ID = CP.CPN_ID
-		                                                   AND CPN_TARGET = 'G260_13'
-		                                                   AND DEL_YN = 'N'
-		                                                   AND REF_VAL = G.SUPPLY_COMP_CD
-		                                                   /*AND IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB*/
-		                                                  ) >0
-		                        )
-		                      )
-		                AND NOT EXISTS (
-		                                SELECT 1
-		                                FROM   TB_COUPON_REFVAL SCPR
-		                                WHERE  SCPR.CPN_ID = CP.CPN_ID
-		                                AND    SCPR.REF_VAL = G.GOODS_CD
-		                                AND    SCPR.DEL_YN = 'N' /*삭제안된넘*/
-		                                AND    SCPR.CPN_TARGET = 'G260_14' /* 제외상품*/
-		                               )
-		                AND NOT EXISTS (
-		                                 SELECT 1
-		                                FROM TB_COUPON_BAN_GOODS
-		                                WHERE GOODS_CD = G.GOODS_CD
-		                                AND DEL_YN = 'N'
-		                               )
-		               ) CP
-		       ) Y
-		GROUP BY GOODS_CD ,CURR_PRICE, STAFF_CURR_PRICE, CUST_GB
+		GROUP BY GOODS_CD 
+		    , CURR_PRICE
+		    , STAFF_CURR_PRICE
+		    , CUST_GB
 	</sql>
 
 	<!-- 상품혜택가 temp 테이블 삭제 -->
@@ -824,7 +671,6 @@
 		DELETE FROM  TB_GOODS_BENEFIT_PRICE_TMP
 	</delete>
 
-
 	<!-- 상품혜택가 temp 적용 등록 -->
 	<insert id="crteateGoodsBenefitPriceTemp"  parameterType="Coupon"  timeout="600">
 		/* TsbGoods.crteateGoodsBenefitPriceTemp */
@@ -2672,7 +2518,9 @@
 		     , BENEFIT_GB
 		)
 		WITH CTE AS (
-		    SELECT CP.CPN_ID , CP.BUY_LIMIT_AMT, CPR.CPN_REFVAL_SQ
+		    SELECT CP.CPN_ID 
+		         , CP.BUY_LIMIT_AMT
+		         , CPR.CPN_REFVAL_SQ
 		    FROM TB_COUPON CP
 		    INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_ID=CPR.CPN_ID
 		    WHERE  CP.SITE_CD = 'G000_10' /*전시사이트*/
@@ -2752,25 +2600,30 @@
 		        WHERE CPR.CPN_TARGET =  'G260_11'
 		        AND IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
 		        AND IFNULL(REF_BRAND_CD,G.BRAND_CD) = G.BRAND_CD
-
-		        UNION
-
-		        /* 적용대상:브랜드*/
-		        SELECT CP.CPN_REFVAL_SQ, CPR.CPN_ID, CPR.REF_VAL, G.BRAND_CD GKEY, G.GOODS_CD
-		        FROM  CTE CP
-		        INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_REFVAL_SQ=CPR.CPN_REFVAL_SQ
-		        INNER JOIN TB_GOODS G ON CPR.REF_VAL=G.BRAND_CD AND CP.BUY_LIMIT_AMT <![CDATA[<=]]> G.CURR_PRICE  /*최소주문금액*/
-		        WHERE CPR.CPN_TARGET = 'G260_12'
-		        AND   IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
-
 		        UNION
-
-		        /* 적용대상:공급업체*/
-		        SELECT CP.CPN_REFVAL_SQ, CPR.CPN_ID, CPR.REF_VAL, G.SUPPLY_COMP_CD GKEY, G.GOODS_CD
-		        FROM CTE CP
-		        INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_REFVAL_SQ=CPR.CPN_REFVAL_SQ
-		        INNER JOIN TB_GOODS G ON CPR.REF_VAL=G.SUPPLY_COMP_CD AND CP.BUY_LIMIT_AMT <![CDATA[<=]]> G.CURR_PRICE  /*최소주문금액*/
-		        WHERE CPR.CPN_TARGET = 'G260_13'
+		        /* 적용대상:브랜드, 공급업체 */
+		        SELECT CP.CPN_REFVAL_SQ
+				     , CPR1.CPN_ID
+				     , CPR1.REF_VAL
+				     , G1.BRAND_CD GKEY
+				     , G1.GOODS_CD
+				FROM   CTE CP
+				INNER  JOIN TB_COUPON_REFVAL CPR1 
+				ON     CP.CPN_ID = CPR1.CPN_ID
+				INNER  JOIN TB_GOODS G1 
+				ON     CPR1.REF_VAL = G1.BRAND_CD
+				AND    CPR1.CPN_TARGET = 'G260_12'
+				AND    CP.BUY_LIMIT_AMT <![CDATA[<=]]> G1.CURR_PRICE  /*최소주문금액*/
+				INNER  JOIN TB_COUPON_REFVAL CPR2 
+				ON     CP.CPN_ID = CPR2.CPN_ID
+				INNER  JOIN TB_GOODS G2
+				ON     CPR2.REF_VAL = G2.SUPPLY_COMP_CD
+				AND    CPR2.CPN_TARGET = 'G260_13'
+				AND    CP.BUY_LIMIT_AMT <![CDATA[<=]]> G2.CURR_PRICE  /*최소주문금액*/
+				WHERE  1=1
+				AND    IFNULL(CPR1.REF_FORMAL_GB, G1.FORMAL_GB) = G1.FORMAL_GB
+				AND    CPR1.CPN_ID = CPR2.CPN_ID
+				AND    G1.GOODS_CD = G2.GOODS_CD
 		)
 		SELECT G.GOODS_CD
 		     , '10'       AS BENEFIT_GB /*쿠폰할인*/

+ 1 - 5
src/main/java/com/style24/persistence/mybatis/shop/TsbReview.xml

@@ -22,7 +22,7 @@
 		FROM   TB_ORDER O
 		     , TB_ORDER_DETAIL OD
 		WHERE  O.ORD_NO = OD.ORD_NO
-		AND    O.MALL_GB = 'G011_10' --자사몰만 안내처리 2021-09-10 금
+		AND    O.MALL_GB = 'G011_10' /* 자사몰만 안내처리 2021-09-10 금 */
 		AND    O.PAY_DT <![CDATA[>=]]> DATE_ADD(NOW(), INTERVAL -1 * #{expireDays} DAY) /*구매일로부터 90일 이내*/
 		AND    O.PAY_DT <![CDATA[>=]]> STR_TO_DATE('20210831','%Y%m%d') /*오픈일로부터 구매한 건만*/
 		AND    OD.ORD_DTL_STAT = 'G013_70' /*구매확정*/
@@ -41,8 +41,6 @@
 		SELECT DISTINCT
 		       RG.CUST_NO
 		     , RG.ORD_NO
-		     -- , RG.ORD_DTL_NO
-		     -- , RG.GOODS_CD
 		     , C.CUST_NM
 		     , C.CELL_PHNNO
 		FROM   TB_REVIEW_GUIDE RG
@@ -58,8 +56,6 @@
 		SET    SEND_YN = 'Y'
 		WHERE  CUST_NO = #{custNo}
 		AND    ORD_NO = #{ordNo}
-		AND    ORD_DTL_NO = #{ordDtlNo}
-		AND    GOODS_CD = #{goodsCd}
 	</update>
 
 </mapper>

+ 1 - 1
src/main/resources/config/application-locp.yml

@@ -14,7 +14,7 @@ spring:
         password: 
 
 logging:
-    config: classpath:log/logback-locp.xml
+    config: classpath:log/logback-locd.xml
 
 domain:
     admin: https://lpadmin.style24.com

+ 24 - 0
src/main/resources/i18n/messages/message_ko_KR.properties

@@ -1,6 +1,30 @@
 ## -----------------------------------------------------------------------------
 ## Message properties
 ## -----------------------------------------------------------------------------
+SUCC_0001=\uC131\uACF5\uC801\uC73C\uB85C \uC800\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SUCC_0002=\uC131\uACF5\uC801\uC73C\uB85C \uC218\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SUCC_0003=\uC131\uACF5\uC801\uC73C\uB85C \uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SUCC_0004=\uC131\uACF5\uC801\uC73C\uB85C \uCC98\uB9AC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SUCC_0005=\uC131\uACF5\uC801\uC73C\uB85C \uBC1C\uC1A1\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SUCC_0006=\uC131\uACF5\uC801\uC73C\uB85C \uBC1C\uD589\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SUCC_0007=\uC131\uACF5\uC801\uC73C\uB85C \uC5C5\uB85C\uB4DC \uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+#SUCC_0008=\uC131\uACF5\uC801\uC73C\uB85C \uB4F1\uB85D\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SUCC_0009=\uC131\uACF5\uC801\uC73C\uB85C \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SUCC_0010=\uC131\uACF5\uC801\uC73C\uB85C \uAC31\uC2E0\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+
+FAIL_0001=\uC624\uB958\uB85C \uC778\uD574 \uC800\uC7A5\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+FAIL_0002=\uC624\uB958\uB85C \uC778\uD574 \uC218\uC815\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+FAIL_0003=\uC624\uB958\uB85C \uC778\uD574 \uC0AD\uC81C\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+FAIL_0004=\uC624\uB958\uB85C \uC778\uD574 \uCC98\uB9AC\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+FAIL_0005=\uC624\uB958\uB85C \uC778\uD574 \uBC1C\uC1A1\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+FAIL_0006=\uC624\uB958\uB85C \uC778\uD574 \uBC1C\uD589\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+FAIL_0007=\uC624\uB958\uB85C \uC778\uD574 \uC5C5\uB85C\uB4DC \uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+#FAIL_0008=\uC624\uB958\uB85C \uC778\uD574 \uB4F1\uB85D\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+FAIL_0009=\uC624\uB958\uB85C \uC778\uD574 \uBCC0\uACBD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+FAIL_1001=\uC800\uC7A5\uD560 \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
+FAIL_1002=\uC804\uC1A1\uD560 \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
+FAIL_1003=\uC5D1\uC140\uB2E4\uC6B4\uB85C\uB4DC\uD560 \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
+FAIL_1004=\uC0AD\uC81C\uD560 \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
 
 #\uAD50\uD658
 EXCHANGE_0001=\uAD50\uD658 \uC2E0\uCCAD\uC774 \uC811\uC218\uB418\uC5C8\uC2B5\uB2C8\uB2E4.