Explorar el Código

Merge remote-tracking branch 'origin/style' into ST24PRJ-426(회원CI오류)

# Conflicts:
#	src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html
jsh77b@naver.com hace 4 años
padre
commit
412a68a720

+ 225 - 109
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -724,17 +724,20 @@ public class TsfCartService {
 		param.setFrontGb(TsfSession.getFrontGb());
 		Collection<Order> cartGoodsList = coreOrderService.getCartGoodsList(param);
 		String cartYn = "N";
+		
 		if (!StringUtils.isEmpty(param.getCartYn())) {
 			cartYn = param.getCartYn();
 		}
 
 		if (param.getCustNo() > 0 || "Y".equals(cartYn)) {
+			
 			// 장바구니 내 수량 다다익선 적용 가능 리스트 조회 (등록된 기본,적용 상품 정보 전체 조회)
 			Collection<Order> tmtbApplyList = cartDao.selectMoreBetterApplyCartList(param);
 
 			// 장바구니 등록 다다익선 일련번호 지정
 			List<Integer> applySq = new ArrayList<Integer>();
-
+			
+			// 다다익선 적용상품 여부 확인
 			for (Order tmtbApply : tmtbApplyList) {
 				if (TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getQtyGoodsGb()) || TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getAmtGoodsGb())) {
 					if (TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getQtyGoodsGb())) {
@@ -750,40 +753,44 @@ public class TsfCartService {
 			// 섹션 정보 조회 후 할인 여부 판단
 			Collection<Order> tmtbSectionList = cartDao.selectTmtbSectionValList(applySq);
 
-			for (Order applyInfo : tmtbApplyList) {													// 기준 상품 및 다다익선 정보 조회
+			for (Order applyInfo : tmtbApplyList) {													  // 기준 상품 및 다다익선 정보 조회
 				// 다다익선 할인 조건 조회
 				for (Order section : tmtbSectionList) {
-					if (applyInfo.getQtyTmtbSq() == section.getTmtbSq()) {
-						// 수량 적용 다다익선
-						if (section.getSectionVal() <= applyInfo.getQtyTmtbSumQty()) {             // 장바구니 수량 할인 기준 달성시
-							if (applyInfo.getQtySectionVal() <= section.getSectionVal()) {            // 기존 달성된 기준치보다 할인폭이 클 경우 기준할인 수정
-								applyInfo.setQtySectionVal(section.getSectionVal());
-								applyInfo.setApplyQtySectionYn("Y");
-								applyInfo.setQtyDcWay(section.getDcWay());
-								applyInfo.setQtyDcVal(section.getDcVal());
-							}
-						} else {
-							if (applyInfo.getQtySectionVal() < 1 && applyInfo.getQtyGoodsGb().equals(TscConstants.GoodsGb.BASE.value())) {
-								applyInfo.setApplyQtySectionYn("N");
+					
+					// 2021.11.10 적용상품만 할인 적용
+					//if (TscConstants.GoodsGb.APPLY.value().equals(applyInfo.getQtyGoodsGb()) || TscConstants.GoodsGb.APPLY.value().equals(applyInfo.getAmtGoodsGb())) {
+						if (applyInfo.getQtyTmtbSq() == section.getTmtbSq()) {
+							// 수량 적용 다다익선
+							if (section.getSectionVal() <= applyInfo.getQtyTmtbSumQty()) {                // 장바구니 수량 할인 기준 달성시
+								if (applyInfo.getQtySectionVal() <= section.getSectionVal()) {            // 기존 달성된 기준치보다 할인폭이 클 경우 기준할인 수정
+									applyInfo.setQtySectionVal(section.getSectionVal());
+									applyInfo.setApplyQtySectionYn("Y");
+									applyInfo.setQtyDcWay(section.getDcWay());
+									applyInfo.setQtyDcVal(section.getDcVal());
+								}
+							} else {
+								if (applyInfo.getQtySectionVal() < 1 && applyInfo.getQtyGoodsGb().equals(TscConstants.GoodsGb.BASE.value())) {
+									applyInfo.setApplyQtySectionYn("N");
+								}
 							}
 						}
-					}
-
-					if (applyInfo.getAmtTmtbSq() == section.getTmtbSq()) {
-						// 금액 적용 다다익선
-						if (section.getSectionVal() <= applyInfo.getAmtTmtbSumAmt()) {			// 장바구니 수량 할인 기준 달성시
-							if (applyInfo.getAmtSectionVal() <= section.getSectionVal()) {			// 기존 달성된 기준치보다 할인폭이 클 경우 기준할인 수정
-								applyInfo.setAmtSectionVal(section.getSectionVal());
-								applyInfo.setApplyAmtSectionYn("Y");
-								applyInfo.setAmtDcWay(section.getDcWay());
-								applyInfo.setAmtDcVal(section.getDcVal());
-							}
-						} else {
-							if (applyInfo.getAmtSectionVal() < 1 && applyInfo.getAmtGoodsGb().equals(TscConstants.GoodsGb.BASE.value())) {
-								applyInfo.setApplyAmtSectionYn("N");
+	
+						if (applyInfo.getAmtTmtbSq() == section.getTmtbSq()) {
+							// 금액 적용 다다익선
+							if (section.getSectionVal() <= applyInfo.getAmtTmtbSumAmt()) {			    // 장바구니 수량 할인 기준 달성시
+								if (applyInfo.getAmtSectionVal() <= section.getSectionVal()) {			// 기존 달성된 기준치보다 할인폭이 클 경우 기준할인 수정
+									applyInfo.setAmtSectionVal(section.getSectionVal());
+									applyInfo.setApplyAmtSectionYn("Y");
+									applyInfo.setAmtDcWay(section.getDcWay());
+									applyInfo.setAmtDcVal(section.getDcVal());
+								}
+							} else {
+								if (applyInfo.getAmtSectionVal() < 1 && applyInfo.getAmtGoodsGb().equals(TscConstants.GoodsGb.BASE.value())) {
+									applyInfo.setApplyAmtSectionYn("N");
+								}
 							}
 						}
-					}
+					//}
 				}
 			}
 
@@ -801,40 +808,44 @@ public class TsfCartService {
 
 			for (Order resultAmt : tmtbApplyList) {
 				int tempAmt = 0;
-
-				if ("Y".equals(resultAmt.getApplyQtySectionYn()) && resultAmt.getQtyTmtbSq() > 0) {
-					if (TscConstants.DcWay.AMT.value().equals(resultAmt.getQtyDcWay())) {        // 할인 방식 금액일경우
-						i++;
-						tempAmt = resultAmt.getCurrPrice();
-
-						if (i == 1) {
-							leftAmt = resultAmt.getQtyDcVal();
-						}
-
-						if (i == resultAmt.getQtyTmtbCnt()) {
-							resultAmt.setTmtbDcAmt(tempAmt - leftAmt);
-							resultAmt.setTmtb1DcAmt(leftAmt); // tmtb1 할인금액
-							leftAmt = 0;
-							i = 0;
-						} else {
-							double tempDcAmt = resultAmt.getQtyDcVal() * ((tempAmt) / (double)resultAmt.getQtyTmtbSumAmt());
-							leftAmt -= (int)tempDcAmt;
-							resultAmt.setTmtbDcAmt(tempAmt - (int)tempDcAmt);
-
-							resultAmt.setTmtb1DcAmt((int)tempDcAmt); // tmtb1 할인금액
+				
+				// 2021.11.10 적용상품만 할인 적용
+				if (TscConstants.GoodsGb.APPLY.value().equals(resultAmt.getQtyGoodsGb()) || TscConstants.GoodsGb.APPLY.value().equals(resultAmt.getAmtGoodsGb())) {
+					
+					if ("Y".equals(resultAmt.getApplyQtySectionYn()) && resultAmt.getQtyTmtbSq() > 0) {
+						if (TscConstants.DcWay.AMT.value().equals(resultAmt.getQtyDcWay())) {        // 할인 방식 금액일경우
+							i++;
+							tempAmt = resultAmt.getCurrPrice();
+	
+							if (i == 1) {
+								leftAmt = resultAmt.getQtyDcVal();
+							}
+	
+							if (i == resultAmt.getQtyTmtbCnt()) {
+								resultAmt.setTmtbDcAmt(tempAmt - leftAmt);
+								resultAmt.setTmtb1DcAmt(leftAmt); // tmtb1 할인금액
+								leftAmt = 0;
+								i = 0;
+							} else {
+								double tempDcAmt = resultAmt.getQtyDcVal() * ((tempAmt) / (double)resultAmt.getQtyTmtbSumAmt());
+								leftAmt -= (int)tempDcAmt;
+								resultAmt.setTmtbDcAmt(tempAmt - (int)tempDcAmt);
+	
+								resultAmt.setTmtb1DcAmt((int)tempDcAmt); // tmtb1 할인금액
+							}
+						} else {                                                                // 할인 방식 할인율일 경우
+							tempAmt = resultAmt.getCurrPrice();
+							tempAmt = (tempAmt - (int)(tempAmt * (resultAmt.getQtyDcVal() / 100.0)));
+							resultAmt.setTmtbDcAmt(tempAmt);
+	
+							// 2021.04.29 다다익선할인금액수정
+							resultAmt.setTmtb1DcAmt((int)(resultAmt.getCurrPrice() * (resultAmt.getQtyDcVal() / 100.0))); // tmtb1 할인금액
 						}
-					} else {                                                                // 할인 방식 할인율일 경우
-						tempAmt = resultAmt.getCurrPrice();
-						tempAmt = (tempAmt - (int)(tempAmt * (resultAmt.getQtyDcVal() / 100.0)));
-						resultAmt.setTmtbDcAmt(tempAmt);
-
-						// 2021.04.29 다다익선할인금액수정
-						resultAmt.setTmtb1DcAmt((int)(resultAmt.getCurrPrice() * (resultAmt.getQtyDcVal() / 100.0))); // tmtb1 할인금액
 					}
-				}
-
-				if (resultAmt.getTmtbDcAmt() > 0) {
-					resultAmt.setCurrPrice(resultAmt.getTmtbDcAmt());
+	
+					if (resultAmt.getTmtbDcAmt() > 0) {
+						resultAmt.setCurrPrice(resultAmt.getTmtbDcAmt());
+					}
 				}
 			}
 
@@ -847,63 +858,168 @@ public class TsfCartService {
 			});
 
 			// 금액 다다익선 할인 계산
-			leftAmt = 0;
-			i = 0;
+			leftAmt 	= 0;
+			i 			= 0;
+			
 			for (Order resultAmt : tmtbApplyList) {
 				int tempAmt = 0;
-
-				if ("Y".equals(resultAmt.getApplyAmtSectionYn()) && resultAmt.getAmtTmtbSq() > 0) {
-					if (TscConstants.DcWay.AMT.value().equals(resultAmt.getAmtDcWay())) {        // 할인 방식 금액일경우
-						i++;
-						tempAmt = resultAmt.getCurrPrice();
-						if (i == 1) {
-							leftAmt = resultAmt.getAmtDcVal();
-						}
-
-						if (i == resultAmt.getAmtTmtbCnt()) {
-							resultAmt.setTmtbDcAmt(tempAmt - leftAmt);
-							resultAmt.setTmtb2DcAmt(leftAmt); // tmtb1 할인금액
-
-							leftAmt = 0;
-							i = 0;
-						} else {
-							double tempDcAmt = resultAmt.getAmtDcVal() * ((tempAmt) / (double)resultAmt.getAmtTmtbSumAmt());
-							leftAmt -= (int)tempDcAmt;
-							resultAmt.setTmtbDcAmt(tempAmt - (int)tempDcAmt);
-
-							resultAmt.setTmtb2DcAmt((int)tempDcAmt); // tmtb1 할인금액
+				
+				// 2021.11.10 적용상품만 할인 적용
+				if (TscConstants.GoodsGb.APPLY.value().equals(resultAmt.getQtyGoodsGb()) || TscConstants.GoodsGb.APPLY.value().equals(resultAmt.getAmtGoodsGb())) {
+					if ("Y".equals(resultAmt.getApplyAmtSectionYn()) && resultAmt.getAmtTmtbSq() > 0) {
+						// 할인 방식 금액일경우
+						if (TscConstants.DcWay.AMT.value().equals(resultAmt.getAmtDcWay())) {
+							i++;
+							tempAmt = resultAmt.getCurrPrice();
+							
+							if (i == 1) {
+								leftAmt = resultAmt.getAmtDcVal();
+							}
+	
+							if (i == resultAmt.getAmtTmtbCnt()) {
+								resultAmt.setTmtbDcAmt(tempAmt - leftAmt);
+								resultAmt.setTmtb2DcAmt(leftAmt); // tmtb1 할인금액
+	
+								leftAmt = 0;
+								i = 0;
+							} else {
+								double tempDcAmt = resultAmt.getAmtDcVal() * ((tempAmt) / (double)resultAmt.getAmtTmtbSumAmt());
+								leftAmt -= (int)tempDcAmt;
+								resultAmt.setTmtbDcAmt(tempAmt - (int)tempDcAmt);
+	
+								resultAmt.setTmtb2DcAmt((int)tempDcAmt); // tmtb1 할인금액
+							}
+						} 
+						// 할인 방식 할인율일 경우
+						else {
+							tempAmt = resultAmt.getCurrPrice();
+							tempAmt = (tempAmt - (int)(tempAmt * (resultAmt.getAmtDcVal() / 100.0)));
+							resultAmt.setTmtbDcAmt(tempAmt);
+	
+							// 2021.04.29 다다익선할인금액수정
+							resultAmt.setTmtb2DcAmt((int)(resultAmt.getCurrPrice() * (resultAmt.getAmtDcVal() / 100.0))); // tmtb2 할인금액
 						}
-					} else {                                                                // 할인 방식 할인율일 경우
-						tempAmt = resultAmt.getCurrPrice();
-						tempAmt = (tempAmt - (int)(tempAmt * (resultAmt.getAmtDcVal() / 100.0)));
-						resultAmt.setTmtbDcAmt(tempAmt);
-
-						// 2021.04.29 다다익선할인금액수정
-						resultAmt.setTmtb2DcAmt((int)(resultAmt.getCurrPrice() * (resultAmt.getAmtDcVal() / 100.0))); // tmtb2 할인금액
 					}
 				}
 			}
-
+			
+			//
+			List<Order> tmtbSqList = new ArrayList<Order>();
+			List<Order> applyCartList = new ArrayList<Order>();
+			
 			// 장바구니 정보에 수량 다다익선 정보 입력
 			for (Order cart : cartGoodsList) {
 				for (Order apply : tmtbApplyList) {
-					if (cart.getCartSq().equals(apply.getCartSq())) {
-						// 2021.02.24 jsh77b
-						cart.setTmtb1DcAmt(apply.getTmtb1DcAmt());
-						cart.setTmtb2DcAmt(apply.getTmtb2DcAmt());
-
-						cart.setTmtbDcAmt(apply.getTmtbDcAmt());
-
-						log.info("cart.getTmtb1DcAmt() ::: {}", cart.getTmtb1DcAmt());
-						log.info("cart.getTmtb2DcAmt() ::: {}", cart.getTmtb2DcAmt());
-						log.info("cart.getTmtbDcAmt() ::: {}", cart.getTmtbDcAmt());
-
-						cart.setApplyQtySectionYn(apply.getApplyQtySectionYn());
-						cart.setQtyTmtbNm(apply.getQtyTmtbNm());
-						cart.setQtyTmtbSq(apply.getQtyTmtbSq());
-						cart.setApplyAmtSectionYn(apply.getApplyAmtSectionYn());
-						cart.setAmtTmtbNm(apply.getAmtTmtbNm());
-						cart.setAmtTmtbSq(apply.getAmtTmtbSq());
+					
+					// 2021.11.10 적용상품만 할인 적용
+					if (TscConstants.GoodsGb.APPLY.value().equals(apply.getQtyGoodsGb()) || TscConstants.GoodsGb.APPLY.value().equals(apply.getAmtGoodsGb())) {
+						if (cart.getCartSq().equals(apply.getCartSq())) {
+							// 2021.02.24 jsh77b
+							cart.setTmtb1DcAmt(apply.getTmtb1DcAmt());
+							cart.setTmtb2DcAmt(apply.getTmtb2DcAmt());
+							cart.setTmtbDcAmt(apply.getTmtbDcAmt());
+							
+							// 2021.11.11 추가 
+							if ("Y".equals(apply.getApplyQtySectionYn())) {
+								cart.setApplyQtySectionYn(apply.getApplyQtySectionYn());
+								cart.setQtyTmtbNm(apply.getQtyTmtbNm());
+								cart.setQtyTmtbSq(apply.getQtyTmtbSq());
+								
+								tmtbSqList.add(cart);
+								applyCartList.add(cart);
+							}
+							
+							// 2021.11.11 추가 
+							if ("Y".equals(apply.getApplyAmtSectionYn())) {
+								cart.setApplyAmtSectionYn(apply.getApplyAmtSectionYn());
+								cart.setAmtTmtbNm(apply.getAmtTmtbNm());
+								cart.setAmtTmtbSq(apply.getAmtTmtbSq());
+								
+								tmtbSqList.add(cart);
+								applyCartList.add(cart);
+							}
+							
+							cart.setQtyGoodsGb(apply.getQtyGoodsGb());
+							cart.setAmtGoodsGb(apply.getAmtGoodsGb());
+						}
+					} 
+					else if (TscConstants.GoodsGb.BASE.value().equals(apply.getQtyGoodsGb()) || TscConstants.GoodsGb.BASE.value().equals(apply.getAmtGoodsGb())) {
+						
+						// 2022.01.05 적용상품에 있으면 기본상품이 적용되는 정보를 적용하지 않음 
+						Boolean temp1 = true;
+						Boolean temp2 = true;
+						
+						for (Order applyTemp : tmtbApplyList) {
+							if (TscConstants.GoodsGb.APPLY.value().equals(applyTemp.getQtyGoodsGb()) || TscConstants.GoodsGb.APPLY.value().equals(applyTemp.getAmtGoodsGb())) {
+								if (apply.getCartSq().equals(applyTemp.getCartSq())) {
+									
+									// 2021.11.11 추가 
+									if ("Y".equals(applyTemp.getApplyQtySectionYn())) {
+										temp1 = false;
+									}
+									
+									// 2021.11.11 추가 
+									if ("Y".equals(applyTemp.getApplyAmtSectionYn())) {
+										temp2 = false;
+									}
+								}
+							}
+						}
+							
+						if (cart.getCartSq().equals(apply.getCartSq())) {
+							
+							// 수량 기본상품의 정보만 유일하게 존재
+							if (temp1) {
+								// 2021.02.24 jsh77b
+								if ("N".equals(apply.getApplyQtySectionYn())) {
+									cart.setApplyQtySectionYn(apply.getApplyQtySectionYn());
+									cart.setQtyTmtbNm(apply.getQtyTmtbNm());
+									cart.setQtyTmtbSq(apply.getQtyTmtbSq());
+								}
+								cart.setQtyGoodsGb(apply.getQtyGoodsGb());
+							}
+							
+							// 금액 기본상품의 정보만 유일하게 존재
+							if (temp2) {
+								// 2021.11.11 추가 
+								if ("N".equals(apply.getApplyAmtSectionYn())) {
+									cart.setApplyAmtSectionYn(apply.getApplyAmtSectionYn());
+									cart.setAmtTmtbNm(apply.getAmtTmtbNm());
+									cart.setAmtTmtbSq(apply.getAmtTmtbSq());
+								}
+								cart.setAmtGoodsGb(apply.getAmtGoodsGb());
+							}
+						}
+						
+					}
+				}
+			}
+			
+			// 2021.11.11 다다익선 할인 적용된 상품 상품보기 숨김 처리 로직 추가
+			if (tmtbSqList != null && tmtbSqList.size() > 0) {
+				// 장바구니상품목록수정
+				for (Order cart : cartGoodsList) {					
+					// 기본상품일때 
+					if (TscConstants.GoodsGb.BASE.value().equals(cart.getQtyGoodsGb()) || TscConstants.GoodsGb.BASE.value().equals(cart.getAmtGoodsGb())) {
+						for (Order tmtbSq : tmtbSqList) {
+							// 다다익선의 적용상품에 없을때 기본상품 적용상품보기 팝업 미노출 처리
+							Boolean temp = true;
+							for (Order applyCart : applyCartList) {
+								if (cart.getCartSq() == applyCart.getCartSq()) {
+									temp = false;
+								}
+							}
+							
+							if (temp) {
+								if (cart.getAmtTmtbSq() == tmtbSq.getAmtTmtbSq()) {
+									cart.setApplyAmtSectionYn("");
+								}
+								
+								if (cart.getQtyTmtbSq() == tmtbSq.getQtyTmtbSq()) {
+									cart.setApplyQtySectionYn("");
+								}
+							}
+						}
 					}
 				}
 			}

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

@@ -264,8 +264,8 @@
 	</insert>
 
 	<!-- 다다익선 기본 상품 조회 -->
-	<select id="selectMoreBetterApplyCartList" parameterType="Order" resultType="Order">
-		/* TsfCart.selectMoreBetterApplyCartList : 다다익선 기본 상품 조회 */
+	<select id="selectMoreBetterApplyCartListBack" parameterType="Order" resultType="Order">
+		/* TsfCart.selectMoreBetterApplyCartListBack : 다다익선 기본 상품 조회 */
 		SELECT A.CART_SQ
 			 , MAX(A.QTY_TMTB_SQ) AS QTY_TMTB_SQ
 			 , MAX(A.AMT_TMTB_SQ) AS AMT_TMTB_SQ
@@ -393,6 +393,190 @@
 			 , A.OPT_ADD_PRICE
 		ORDER BY A.CART_SQ
 	</select>
+	
+	<!-- 다다익선 기본 상품 조회 -->
+	<select id="selectMoreBetterApplyCartList" parameterType="Order" resultType="Order">
+		/* TsfCart.selectMoreBetterApplyCartList : 다다익선 기본 상품 조회 */
+		SELECT A.CART_SQ
+			 , MAX(A.QTY_TMTB_SQ) AS QTY_TMTB_SQ
+			 , MAX(A.AMT_TMTB_SQ) AS AMT_TMTB_SQ
+			 , MAX(A.QTY_TMTB_NM) AS QTY_TMTB_NM
+			 , MAX(A.AMT_TMTB_NM) AS AMT_TMTB_NM
+			 , MAX(A.QTY_GOODS_GB) AS QTY_GOODS_GB
+			 , MAX(A.AMT_GOODS_GB) AS AMT_GOODS_GB
+			 , MAX(A.QTY_TMTB_SUM_QTY) AS QTY_TMTB_SUM_QTY
+			 , MAX(A.QTY_TMTB_SUM_AMT) AS QTY_TMTB_SUM_AMT
+			 , MAX(A.AMT_TMTB_SUM_QTY) AS AMT_TMTB_SUM_QTY
+			 , MAX(A.AMT_TMTB_SUM_AMT) AS AMT_TMTB_SUM_AMT
+			 , MAX(A.AMT_TMTB_CNT) AS AMT_TMTB_CNT
+			 , MAX(A.QTY_TMTB_CNT) AS QTY_TMTB_CNT
+			 , A.GOODS_CD
+			 , A.GOODS_QTY
+			 , (A.CURR_PRICE + A.OPT_ADD_PRICE) * A.GOODS_QTY AS CURR_PRICE
+		FROM   (
+		    SELECT C.CART_SQ
+			     , CASE WHEN T.APPLY_GB = 'G810_10' THEN T.TMTB_SQ END QTY_TMTB_SQ
+			     , CASE WHEN T.APPLY_GB = 'G810_11' THEN T.TMTB_SQ END AMT_TMTB_SQ
+			     , CASE WHEN T.APPLY_GB = 'G810_10' THEN T.TMTB_NM END QTY_TMTB_NM
+			     , CASE WHEN T.APPLY_GB = 'G810_11' THEN T.TMTB_NM END AMT_TMTB_NM
+			     , CASE WHEN T.APPLY_GB = 'G810_10' THEN TAG.GOODS_GB END QTY_GOODS_GB
+			     , CASE WHEN T.APPLY_GB = 'G810_11' THEN TAG.GOODS_GB END AMT_GOODS_GB
+			     , CASE WHEN T.APPLY_GB = 'G810_10' 
+			            THEN CASE WHEN TAG.GOODS_GB IN ('G800_10')
+			                      THEN 0
+			                      ELSE SUM_DATA.TMTB_SUM_QTY
+			                      END
+			            END QTY_TMTB_SUM_QTY
+			     , CASE WHEN T.APPLY_GB = 'G810_10' 
+			            THEN CASE WHEN TAG.GOODS_GB IN ('G800_10')
+			                      THEN 0
+			                      ELSE SUM_DATA.TMTB_SUM_AMT
+			                      END
+			            END QTY_TMTB_SUM_AMT
+			     , CASE WHEN T.APPLY_GB = 'G810_11' 
+			            THEN CASE WHEN TAG.GOODS_GB IN ('G800_10')
+			                      THEN 0
+			                      ELSE SUM_DATA.TMTB_SUM_QTY
+			                      END
+			            END AMT_TMTB_SUM_QTY
+			     , CASE WHEN T.APPLY_GB = 'G810_11' 
+			            THEN CASE WHEN TAG.GOODS_GB IN ('G800_10')
+			                      THEN 0
+			                      ELSE SUM_DATA.TMTB_SUM_AMT
+			                      END
+			            END AMT_TMTB_SUM_AMT
+			     , CASE WHEN T.APPLY_GB = 'G810_10' THEN TAG2.TMTB_CNT END QTY_TMTB_CNT
+			     , CASE WHEN T.APPLY_GB = 'G810_11' THEN TAG2.TMTB_CNT END AMT_TMTB_CNT
+			     , TAG.GOODS_CD
+			     , CASE WHEN TAG.GOODS_GB IN ('G800_10')
+			            THEN 0
+			            ELSE C.GOODS_QTY
+			            END  GOODS_QTY
+			     , CASE WHEN TAG.GOODS_GB IN ('G800_10')
+			            THEN 0
+			            ELSE FN_GET_APPLY_CPN1_PRICE(C.GOODS_CD, #{frontGb})
+			            END  CURR_PRICE
+			     , CASE WHEN TAG.GOODS_GB IN ('G800_10')
+			            THEN 0
+			            ELSE IFNULL(OP.ADD_PRICE, 0)
+			            END  OPT_ADD_PRICE
+		    FROM   TB_CART C
+		    INNER  JOIN TB_TMTB_APPLY_GOODS TAG
+		    ON	   C.GOODS_CD = TAG.GOODS_CD
+		    AND	   TAG.DEL_YN = 'N'
+		    INNER  JOIN (
+		        SELECT A.TMTB_SQ
+		             , SUM(TMTB_CNT) AS TMTB_CNT
+		        FROM (
+			        SELECT TAG.TMTB_SQ
+						 , CASE WHEN TAG.GOODS_GB IN ('G800_10')
+						        THEN 0
+						        ELSE 1 
+			                    END  TMTB_CNT
+			        FROM   TB_TMTB_APPLY_GOODS TAG
+			        INNER  JOIN TB_CART C
+			        ON	   TAG.GOODS_CD = C.GOODS_CD
+			        WHERE  TAG.DEL_YN = 'N'
+					<if test="cartSqArr != null and cartSqArr.length > 0">
+					AND	   C.CART_SQ IN
+						<foreach collection="cartSqArr" item="item" index="index"  open="(" close=")" separator=",">
+			                   #{item}
+						</foreach>
+					</if> 
+		        ) A
+		        GROUP  BY A.TMTB_SQ
+		    ) AS TAG2
+		    ON	 TAG.TMTB_SQ = TAG2.TMTB_SQ
+		    INNER  JOIN TB_TMTB T
+		    ON	   T.TMTB_SQ = TAG.TMTB_SQ
+		    AND	   T.TMTB_STAT = 'G232_11' /*진행*/
+		    INNER  JOIN TB_GOODS G
+		    ON	   C.GOODS_CD = G.GOODS_CD
+		    INNER  JOIN TB_CART_DETAIL CD
+		    ON	 C.CART_SQ = CD.CART_SQ
+		    INNER  JOIN (
+		        SELECT A.TMTB_SQ
+		             , SUM(CURR_PRICE) AS TMTB_SUM_AMT
+		             , SUM(GOODS_QTY) AS TMTB_SUM_QTY
+		        FROM (
+			        SELECT TAG.TMTB_SQ
+			             , CASE WHEN TAG.GOODS_GB IN ('G800_10')
+				            THEN 0
+				            ELSE FN_GET_APPLY_CPN1_PRICE(C.GOODS_CD,  #{frontGb}) + IFNULL(OP.ADD_PRICE, 0) * C.GOODS_QTY
+				            END  CURR_PRICE
+			             , CASE WHEN TAG.GOODS_GB IN ('G800_10')
+				            THEN 0
+				            ELSE C.GOODS_QTY
+				            END  GOODS_QTY
+			        FROM   TB_TMTB_APPLY_GOODS TAG
+			        INNER  JOIN TB_CART C
+					ON	   TAG.GOODS_CD = C.GOODS_CD
+			        INNER  JOIN TB_GOODS G
+			        ON	   C.GOODS_CD = G.GOODS_CD
+			        INNER  JOIN TB_TMTB T
+			        ON	   TAG.TMTB_SQ = T.TMTB_SQ
+			        LEFT   OUTER JOIN TB_TMTB_APPLY_GOODS NOT_APPLY
+			        ON	   TAG.GOODS_CD = NOT_APPLY.GOODS_CD
+			        AND	   TAG.TMTB_SQ = NOT_APPLY.TMTB_SQ
+			        AND	   NOT_APPLY.GOODS_GB = 'G800_30'   /* 제외상품 */
+			        LEFT   OUTER JOIN (
+			            SELECT OP.ADD_PRICE
+			                 , C.CART_SQ
+			            FROM   TB_CART C
+			            INNER  JOIN TB_CART_DETAIL CD
+			            ON	   C.CART_SQ = CD.CART_SQ
+			            INNER  JOIN TB_OPTION OP
+			            ON	   C.GOODS_CD = OP.GOODS_CD
+			            AND	   CD.OPT_CD = OP.OPT_CD
+			            WHERE  1=1
+			        ) OP
+			        ON	   C.CART_SQ = OP.CART_SQ
+			        WHERE  1=1
+			        AND	   NOT_APPLY.TMTB_SQ IS NULL
+			        AND	   T.DEL_YN = 'N'
+			        AND	   TAG.DEL_YN = 'N'
+			        AND	   G.GOODS_STAT = 'G008_90'
+			        AND	   G.SELF_MALL_YN = 'Y'
+					<if test="cartSqArr != null and cartSqArr.length > 0">
+			        AND	   C.CART_SQ IN
+						<foreach collection="cartSqArr" item="item" index="index"  open="(" close=")" separator=",">
+			                   #{item}
+						</foreach>
+					</if>  
+		        ) A
+		        GROUP  BY A.TMTB_SQ
+		    ) SUM_DATA
+		    ON	   T.TMTB_SQ = SUM_DATA.TMTB_SQ
+		    LEFT   JOIN TB_OPTION OP
+		    ON	   CD.ITEM_CD = OP.GOODS_CD
+		    AND	   CD.OPT_CD = OP.OPT_CD
+		    LEFT   OUTER JOIN TB_TMTB_APPLY_GOODS NOT_APPLY
+		    ON	   T.TMTB_SQ = NOT_APPLY.TMTB_SQ
+		    AND	   C.GOODS_CD = NOT_APPLY.GOODS_CD
+		    AND	   NOT_APPLY.GOODS_GB = 'G800_30'   /* 제외상품 */
+		    AND	   NOT_APPLY.DEL_YN = 'N'
+		    WHERE  1=1
+		    AND	   NOT_APPLY.TMTB_SQ IS NULL
+		    AND	   T.DEL_YN = 'N'
+		    AND	   T.TMTB_ST_DT <![CDATA[<=]]> NOW()
+		    AND	   T.TMTB_ED_DT >= NOW()
+		    AND	   G.GOODS_STAT = 'G008_90'
+		    AND	   G.SELF_MALL_YN = 'Y'
+			<if test="cartSqArr != null and cartSqArr.length > 0">
+		    AND	   C.CART_SQ IN
+				<foreach collection="cartSqArr" item="item" index="index"  open="(" close=")" separator=",">
+		               #{item}
+				</foreach>
+			</if>  
+		) A
+		WHERE  1=1
+		GROUP  BY A.CART_SQ
+			 , A.GOODS_CD
+			 , A.GOODS_QTY
+			 , A.CURR_PRICE
+			 , A.OPT_ADD_PRICE
+		ORDER BY A.CART_SQ
+	</select>
 
 	<!-- 다다익선 적용 상품 SUM DATA 조회 -->
 	<select id="selectApplyMoreBetterCartInfoList" parameterType="Order" resultType="Order">

+ 35 - 22
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -858,12 +858,16 @@
 	<select id="getTmtbSqList" parameterType="Goods" resultType="Tmtb">
 		/* TsfGoods.getTmtbSqList */
 		SELECT A.TMTB_SQ
-		FROM TB_TMTB_APPLY_GOODS A
-		LEFT JOIN TB_TMTB_APPLY_GOODS B ON A.GOODS_CD = B.GOODS_CD
-		                                AND B.DEL_YN = 'N' AND B.GOODS_GB = 'G800_30' -- 제외상품
-		                                AND B.GOODS_CD =  #{goodsCd}
-		WHERE A.GOODS_CD = #{goodsCd}  AND A.DEL_YN = 'N' AND A.GOODS_GB IN ( 'G800_10', 'G800_20')  -- 기본과 적용상품
+		FROM   TB_TMTB_APPLY_GOODS A
+		LEFT   JOIN TB_TMTB_APPLY_GOODS B ON A.GOODS_CD = B.GOODS_CD
+		                                 AND B.DEL_YN = 'N' AND B.GOODS_GB = 'G800_30' -- 제외상품
+		                                 AND B.GOODS_CD =  #{goodsCd}
+		                                 AND A.TMTB_SQ = B.TMTB_SQ
+		WHERE A.GOODS_CD = #{goodsCd}  
+		AND A.DEL_YN = 'N' 
+		AND A.GOODS_GB IN ( 'G800_10', 'G800_20')  -- 기본과 적용상품
 		AND B.TMTB_SQ IS NULL
+		GROUP BY A.TMTB_SQ
 		ORDER BY A.TMTB_SQ DESC -- 최근 다다익선
 	</select>	
 	
@@ -890,7 +894,7 @@
 		    FROM TB_TMTB A
 		    INNER JOIN TB_TMTB_APPLY_GOODS B ON A.TMTB_SQ  = B.TMTB_SQ
 		                                     AND B.DEL_YN = 'N'
-		                                     AND B.GOODS_GB IN ( 'G800_10', 'G800_20')  -- 기본과 적용상품
+		                                     AND B.GOODS_GB IN ('G800_20')  -- 기본과 적용상품
 		    LEFT OUTER JOIN TB_TMTB_APPLY_GOODS BB ON B.TMTB_SQ  = BB.TMTB_SQ
 		                                     AND BB.DEL_YN = 'N'
 		                                     AND B.GOODS_CD = BB.GOODS_CD
@@ -1208,13 +1212,13 @@
 		           , C.SECTION_VAL -- 구간설정값/구간할인시작(수량이상,금액이상)
 		           , D.DC_WAY      -- 할인방식(G240_10:할인금액,G240_11:할인율)
 		           , D.DC_VAL      -- 할인값
-		      FROM TB_TMTB A
-		      INNER JOIN TB_TMTB_SECTION C ON A.TMTB_SQ = C.TMTB_SQ 
-		                                      AND C.DEL_YN  = 'N'
-		      INNER JOIN TB_TMTB_VAL D ON C.TMTB_SQ = D.TMTB_SQ
+		      FROM   TB_TMTB A
+		      INNER  JOIN TB_TMTB_SECTION C ON A.TMTB_SQ = C.TMTB_SQ 
+		                                   AND C.DEL_YN  = 'N'
+		      INNER  JOIN TB_TMTB_VAL D ON C.TMTB_SQ = D.TMTB_SQ
 		                               AND C.TMTB_SECTION_SQ  = D.TMTB_SECTION_SQ  
 		                               AND D.DEL_YN  = 'N'
-		      INNER JOIN TB_TMTB_APPLY_GOODS B ON A.TMTB_SQ = B.TMTB_SQ
+		      INNER  JOIN TB_TMTB_APPLY_GOODS B ON A.TMTB_SQ = B.TMTB_SQ
 		                                       <choose>
 		                                           <when test="arrGoodsCd != null and arrGoodsCd != ''">
 		                                       AND B.GOODS_CD IN
@@ -1227,26 +1231,35 @@
 		                                           </otherwise>
 		                                       </choose>
 		                                       AND B.DEL_YN = 'N'
-		                                       AND B.GOODS_GB IN ( 'G800_10', 'G800_20')  -- 기본과 적용상품
-		      LEFT OUTER JOIN TB_TMTB_APPLY_GOODS E ON A.TMTB_SQ = E.TMTB_SQ
+		                                       AND B.GOODS_GB IN ('G800_10', 'G800_20')  -- 기본과 적용상품
+		      LEFT   OUTER JOIN TB_TMTB_APPLY_GOODS E ON A.TMTB_SQ = E.TMTB_SQ
 		                                            <choose>
 		                                                <when test="arrGoodsCd != null and arrGoodsCd != ''">
-		                                            AND E.GOODS_CD IN
+		                                             AND E.GOODS_CD IN
 		                                                <foreach collection="arrGoodsCd" item="item" index="index"  open="(" close=")" separator=",">
 		                                                UPPER(#{item})
 		                                                </foreach>
 		                                                </when>
 		                                                <otherwise>
-		                                            AND E.GOODS_CD =  #{goodsCd}
+		                                             AND E.GOODS_CD =  #{goodsCd}
 		                                                </otherwise>
 		                                            </choose>
-		                                            AND E.DEL_YN = 'N'
-		                                            AND E.GOODS_GB = 'G800_30'  -- 제외상품 
-		      WHERE NOW() BETWEEN A.TMTB_ST_DT AND A.TMTB_ED_DT
-		      AND A.TMTB_STAT ='G232_11'  -- 진행중
-		      AND A.DEL_YN = 'N'
-		      AND E.GOODS_CD IS NULL                                      -- 제외상품이 아닌 다다익선 
-		      ORDER BY A.TMTB_SQ , C.TMTB_SECTION_SQ , D.TMTB_VAL_SQ 
+		                                             AND E.DEL_YN = 'N'
+		                                             AND E.GOODS_GB = 'G800_30'  -- 제외상품 
+		      WHERE  NOW() BETWEEN A.TMTB_ST_DT AND A.TMTB_ED_DT
+		      AND    A.TMTB_STAT ='G232_11'  -- 진행중
+		      AND    A.DEL_YN = 'N'
+		      AND    E.GOODS_CD IS NULL                                      -- 제외상품이 아닌 다다익선
+		      GROUP  BY A.TMTB_SQ 
+		           , C.TMTB_SECTION_SQ 
+		           , D.TMTB_VAL_SQ 
+		           , C.SECTION_GB
+		           , C.SECTION_VAL
+		           , D.DC_WAY
+		           , D.DC_VAL 
+		      ORDER  BY A.TMTB_SQ 
+		           , C.TMTB_SECTION_SQ 
+		           , D.TMTB_VAL_SQ 
 		) Z
 		WHERE 1 = 1
 		<if test="maxRownum != null and maxRownum > 0">