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

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

eskim 5 лет назад
Родитель
Сommit
9ad22eb01f
23 измененных файлов с 691 добавлено и 191 удалено
  1. 6 0
      src/main/java/com/style24/front/biz/service/TsfCartService.java
  2. 51 2
      src/main/java/com/style24/front/biz/web/TsfCartController.java
  3. 6 1
      src/main/java/com/style24/persistence/domain/Goods.java
  4. 15 8
      src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml
  5. 9 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  6. 21 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml
  7. 31 17
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml
  8. 141 102
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  9. 5 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html
  10. 3 3
      src/main/webapp/WEB-INF/views/mob/order/OrderDeliveryAddrInfoMob.html
  11. 58 5
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  12. 3 3
      src/main/webapp/WEB-INF/views/mob/order/OrderFreegiftInfoMob.html
  13. 0 2
      src/main/webapp/WEB-INF/views/web/cart/CartDelvFeeSaveGoodsPopupWeb.html
  14. 6 3
      src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html
  15. 37 7
      src/main/webapp/WEB-INF/views/web/cart/CartListFormWeb.html
  16. 210 0
      src/main/webapp/WEB-INF/views/web/cart/CartTmtbSalesGoodsPopupWeb.html
  17. 8 8
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderDetailFormWeb.html
  18. 8 8
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html
  19. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html
  20. 4 4
      src/main/webapp/WEB-INF/views/web/order/OrderDeliveryAddrInfoWeb.html
  21. 58 11
      src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html
  22. 3 3
      src/main/webapp/WEB-INF/views/web/order/OrderFreegiftInfoWeb.html
  23. 7 0
      src/main/webapp/ux/style24_link.js

+ 6 - 0
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -1,6 +1,7 @@
 package com.style24.front.biz.service;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
@@ -1287,4 +1288,9 @@ public class TsfCartService {
 		order.setChgQty(cartDao.updateCartGoodsQty(param));
 		return order;
 	}
+
+	public Collection<Order> selectTmtbSalesValueList(Goods param) {
+		List<Integer> arr = Arrays.asList(param.getArrTmtbSq());
+		return cartDao.selectTmtbSectionValList(arr);
+	}
 }

+ 51 - 2
src/main/java/com/style24/front/biz/web/TsfCartController.java

@@ -6,11 +6,13 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
+import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -25,11 +27,13 @@ import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.front.biz.service.TsfCartService;
 import com.style24.front.biz.service.TsfCouponService;
+import com.style24.front.biz.service.TsfGoodsService;
 import com.style24.front.biz.service.TsfOrderService;
 import com.style24.front.support.controller.TsfBaseController;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Cart;
 import com.style24.persistence.domain.Coupon;
+import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.Login;
 import com.style24.persistence.domain.Order;
 
@@ -52,6 +56,9 @@ public class TsfCartController extends TsfBaseController {
 	@Autowired
 	private TsfCartService cartService;
 
+	@Autowired
+	private TsfGoodsService goodsService;
+
 	@Autowired
 	private TsfCouponService couponService;
 
@@ -152,10 +159,52 @@ public class TsfCartController extends TsfBaseController {
 	}
 
 	@PostMapping("/delv/fee/save/goods/list")
-	public ModelAndView selectCartAddGoodsList(Order param, Model model) {
+	public ModelAndView selectCartAddGoodsList(Order param) {
 		ModelAndView mav = new ModelAndView();
 		mav.addObject("goodsList", cartService.getDelvFeeSaveGoodsList(param));
-		mav.setViewName(super.getDeviceViewName("cart/CartAddGoodsPopup"));
+		mav.setViewName(super.getDeviceViewName("cart/CartDelvFeeSaveGoodsPopup"));
+		return mav;
+	}
+
+	@PostMapping("/tmtb/sales/goods/list")
+	public ModelAndView selectTmtbSalesGoodsList(@RequestBody Goods param) {
+		log.info("CHECK PARAM :::: {}", param.getArrTmtbSq()[0]);
+		ModelAndView mav = new ModelAndView();
+		param.setFrontGb(TsfSession.getFrontGb());
+		param.setSiteCd(TscConstants.Site.STYLE24.value());
+		param.setMaxRownum(20);
+
+		// 회원 구분
+		if (TsfSession.getInfo() != null) {
+			param.setCustGb(TsfSession.getInfo().getCustGb());
+			param.setCustNo(TsfSession.getInfo().getCustNo());
+		} else {
+			param.setCustGb(TsfSession.getCustGb());
+			param.setCustNo(0);
+		}
+
+		// 수량 및 금액 다다익선 최소 조건 조회
+		List<Order> tmtbSalesValueList = (ArrayList<Order>) cartService.selectTmtbSalesValueList(param);
+		// 조건 멘트 적용
+		StringBuilder tmtbDcDesc = new StringBuilder();
+		for(Order tmtbDcValue : tmtbSalesValueList) {
+			if(!StringUtils.isEmpty(tmtbDcValue.getDefaultYn()) && "Y".equals(tmtbDcValue.getDefaultYn())) {
+				if(TscConstants.ApplyGb.QTY.value().equals(tmtbDcValue.getSectionGb())) {
+					tmtbDcDesc.append(tmtbDcValue.getSectionVal()).append("개 이상 구매시 ");
+				} else if (TscConstants.ApplyGb.AMT.value().equals(tmtbDcValue.getSectionGb())) {
+					tmtbDcDesc.append(tmtbDcValue.getSectionVal()).append("원 이상 구매시 ");
+				}
+
+				if(TscConstants.DcWay.AMT.value().equals(tmtbDcValue.getDcWay())) {
+					tmtbDcDesc.append(tmtbDcValue.getDcVal()).append("원 할인");
+				}
+			}
+		}
+
+		// 다다익선 상품 조회 (수량, 금액 섞어서)
+		mav.addObject("goodsList", goodsService.getTmtbGoodsList(param));
+
+		mav.setViewName(super.getDeviceViewName("cart/CartTmtbSalesGoodsPopup"));
 		return mav;
 	}
 

+ 6 - 1
src/main/java/com/style24/persistence/domain/Goods.java

@@ -1,5 +1,7 @@
 package com.style24.persistence.domain;
 
+import java.util.List;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.style24.persistence.TscBaseDomain;
 
@@ -194,7 +196,10 @@ public class Goods extends TscBaseDomain {
 	private int[] arrCpnId;				// 쿠폰
 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] arrGoodsCd;			// 상품코드
+	private String[] arrGoodsCd;		// 상품코드
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private Integer[] arrTmtbSq;			// 다다익선 번호
 
 	private String goodsSql;	// 오늘본상품SQL
 

+ 15 - 8
src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml

@@ -451,18 +451,25 @@
 	<select id="selectTmtbSectionValList" parameterType="int" resultType="Order">
 		/* TsfCart.selectTmtbSectionValList : 다다익선 SECTION 적용 조건 조회 */
 		SELECT TC.SECTION_GB
-			 , TC.SECTION_VAL
-			 , TC.TMTB_SQ
-			 , TV.DC_WAY
-			 , TV.DC_VAL
+		     , TC.SECTION_VAL
+		     , TC.TMTB_SQ
+		     , TV.DC_WAY
+		     , TV.DC_VAL
+		     , CASE WHEN TS.TMTB_SQ IS NULL THEN 'N' ELSE 'Y' END AS DEFAULT_YN
 		FROM   TB_TMTB_SECTION TC
 		INNER  JOIN TB_TMTB_VAL TV
-		ON	 TC.TMTB_SECTION_SQ = TV.TMTB_SECTION_SQ
+		ON     TC.TMTB_SECTION_SQ = TV.TMTB_SECTION_SQ
+		LEFT   OUTER JOIN (SELECT TS.TMTB_SQ
+		                        , MIN(TS.SECTION_VAL) AS SECTION_VAL
+		                   FROM   TB_TMTB_SECTION TS
+		                   WHERE  TS.DEL_YN = 'N'
+		                   GROUP  BY TS.TMTB_SQ) TS
+		ON TC.TMTB_SQ = TS.TMTB_SQ
 		WHERE  1=1
-		AND	TC.DEL_YN = 'N'
-		AND	TV.DEL_YN = 'N'
+		AND	   TC.DEL_YN = 'N'
+		AND	   TV.DEL_YN = 'N'
 		<if test="list != null and list.size() > 0">
-		AND	TC.TMTB_SQ IN
+		AND	   TC.TMTB_SQ IN
 			<foreach collection="list" item="item" index="index"  open="(" close=")" separator=",">
 				#{item}
 			</foreach>

+ 9 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -1459,7 +1459,7 @@
 		     , G.LIST_PRICE
 		     , G.GOODS_NM
 		     , A.OPT_CD
-		     , (SELECT BRAND_ENM FROM TB_BRAND WHERE BRAND_CD = G.BRAND_CD) AS BRAND_NM
+		     , A.BRAND_NM
 		     , FN_GET_APPLY_CPN1_PRICE(G.GOODS_CD,  #{frontGb}) AS PRICE
 		     , CASE WHEN G.LIST_PRICE <![CDATA[ < ]]> G.CURR_PRICE THEN G.LIST_PRICE ELSE G.CURR_PRICE END AS CURR_PRICE
 		     , ROUND((((FN_GET_APPLY_CPN1_PRICE(G.GOODS_CD,  #{frontGb}) / G.LIST_PRICE) - 1) * 100) * - 1, 0) AS DC_RATE
@@ -1468,7 +1468,12 @@
 		FROM   TB_GOODS G
 		INNER  JOIN (SELECT G.GOODS_CD
 		                  , MIN(VS.OPT_CD) AS OPT_CD
+		                  , MIN(BR.BRAND_ENM) AS BRAND_NM
 		             FROM   TB_GOODS G
+		             INNER  JOIN TB_BRAND BR
+		             ON     G.BRAND_CD = BR.BRAND_CD
+		             INNER  JOIN TB_SUPPLY_COMPANY CM
+		             ON     G.SUPPLY_COMP_CD = CM.SUPPLY_COMP_CD
 		             INNER  JOIN VW_STOCK VS
 		             ON     G.GOODS_CD = VS.GOODS_CD
 		             WHERE  1=1
@@ -1477,8 +1482,11 @@
 		             AND    G.SELF_MALL_YN = 'Y'
 		             AND    G.MIN_ORD_QTY = 1
 		             AND    G.CURR_PRICE BETWEEN ${price} AND ${price} + 10000
+		             AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT
 		             AND    VS.SOLDOUT_YN = 'N'
 		             AND    VS.CURR_STOCK_QTY > 0
+		             AND    BR.USE_YN = 'Y'
+		             AND    CM.USE_YN = 'Y'
 		             <if test="delvFeeCd != null and delvFeeCd != ''">
 		             AND G.DELV_FEE_CD = #{delvFeeCd}
 		             </if>

+ 21 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml

@@ -112,7 +112,9 @@
 					 , OD.CHANGEABLE_YN
 					 , OD.RETURNABLE_YN
 					 , G.SELF_GOODS_YN
-					 , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)							AS BRAND_NM
+		             , CASE BG.DISP_NM_LANG WHEN 'EN' THEN BG.BRAND_GROUP_ENM
+		                                    ELSE BG.BRAND_GROUP_KNM
+		                END                                                             AS BRAND_NM
 					 , FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT)							AS ORD_DTL_STAT_NM
 					 , R.REVIEW_SQ
 					 , IF(NOW() <![CDATA[<]]> O.ORD_DT + INTERVAL 90 DAY, 'Y', 'N')		AS REVIEWABLE_YN
@@ -137,6 +139,10 @@
 				    ON OD.GOODS_CD = G.GOODS_CD
 				 INNER JOIN TB_BRAND B
 				    ON B.BRAND_CD = G.BRAND_CD
+				   AND B.USE_YN = 'Y'
+				 INNER JOIN TB_BRAND_GROUP BG
+				    ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+				   AND BG.USE_YN = 'Y'
 				 INNER JOIN TB_PAYMENT P
 				    ON O.ORD_NO = P.ORD_NO
 				   AND P.PAY_GB = 'O'
@@ -196,7 +202,14 @@
 				</foreach>
 			</if>
 			<if test="ordDtlStat != null and ordDtlStat != ''">
+				<choose>
+					<when test="ordDtlStat == 'G013_00'">
+		   AND OD.ORD_DTL_STAT = 'G013_10'
+					</when>
+					<otherwise>
 		   AND OD.ORD_DTL_STAT = #{ordDtlStat}
+					</otherwise>
+				</choose>
 			</if>
 		   AND O.DISP_YN = 'Y'
 		   AND OD.ORD_DTL_STAT <![CDATA[<>]]> 'G013_25'
@@ -265,7 +278,14 @@
 		   AND O.ORD_DT BETWEEN CONCAT(#{stDate}, ' 00:00:00') AND CONCAT(#{edDate}, ' 23:59:59')
 		</if>
 		<if test="ordDtlStat != null and ordDtlStat != ''">
+			<choose>
+				<when test="ordDtlStat == 'G013_00'">
+		   AND OD.ORD_DTL_STAT = 'G013_10'
+				</when>
+				<otherwise>
 		   AND OD.ORD_DTL_STAT = #{ordDtlStat}
+				</otherwise>
+			</choose>
 		</if>
 		<choose>
 			<when test="custNo > 0">

+ 31 - 17
src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml

@@ -452,11 +452,13 @@
 		             , OD.ORD_NO
 		             , OCD.ORD_DTL_NO
 		             , G1.GOODS_CD
-		             , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)                            AS BRAND_NM
+		             , CASE BG.DISP_NM_LANG WHEN 'EN' THEN BG.BRAND_GROUP_ENM
+		                                    ELSE BG.BRAND_GROUP_KNM
+		                END                                                             AS BRAND_NM
 		             , OD.SHOT_DELV_YN
 		             , G1.SELF_GOODS_YN
 		             , G1.GOODS_NM
-		             , IFNULL(C.COLOR_KNM, ODI.OPT_CD1)                                 AS COLOR_NM
+		             , IFNULL((SELECT COLOR_KNM FROM TB_COLOR C WHERE COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G1.MAIN_COLOR_CD ) AND USE_YN  = 'Y'), ODI.OPT_CD1) AS COLOR_NM
 		             , G2.GOODS_NM                                                      AS ITEM_NM
 		             , G1.GOODS_TYPE
 		             , ODI.ORD_DTL_ITEM_SQ
@@ -504,9 +506,10 @@
 		            ON ODI.ITEM_CD = G2.GOODS_CD
 		         INNER JOIN TB_BRAND B
 		            ON G1.BRAND_CD = B.BRAND_CD
-		          LEFT OUTER JOIN TB_COLOR C
-		            ON C.COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G1.MAIN_COLOR_CD)
-		           AND C.USE_YN = 'Y'
+		           AND B.USE_YN = 'Y'
+		         INNER JOIN TB_BRAND_GROUP BG
+		            ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		           AND BG.USE_YN = 'Y'
 		          LEFT OUTER JOIN TB_REFUND R
 		            ON R.ORD_CHG_SQ = OC.ORD_CHG_SQ
 		         WHERE OCD.DEL_YN = 'N'
@@ -603,6 +606,7 @@
 		            ON ODI.ITEM_CD = G2.GOODS_CD
 		         INNER JOIN TB_BRAND B
 		            ON G1.BRAND_CD = B.BRAND_CD
+		           AND B.USE_YN = 'Y'
 		         WHERE O.CUST_NO = #{custNo}
 		           AND O.DISP_YN = 'Y'
 		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
@@ -675,6 +679,7 @@
 		    ON ODI.ITEM_CD = G2.GOODS_CD
 		 INNER JOIN TB_BRAND B
 		    ON G1.BRAND_CD = B.BRAND_CD
+		   AND B.USE_YN = 'Y'
 		 WHERE O.CUST_NO = #{custNo}
 		   AND O.DISP_YN = 'Y'
 		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
@@ -836,7 +841,9 @@
 		             , OD.GFCD_USE_AMT
 		             , OCD.ORD_DTL_NO
 		             , G1.GOODS_CD
-		             , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)                            AS BRAND_NM
+		             , CASE BG.DISP_NM_LANG WHEN 'EN' THEN BG.BRAND_GROUP_ENM
+		                                    ELSE BG.BRAND_GROUP_KNM
+		                END                                                             AS BRAND_NM
 		             , OD.SHOT_DELV_YN
 		             , G1.SELF_GOODS_YN
 		             , G1.GOODS_NM
@@ -893,9 +900,10 @@
 		            ON ODI.ITEM_CD = G2.GOODS_CD
 		         INNER JOIN TB_BRAND B
 		            ON G1.BRAND_CD = B.BRAND_CD
-		          LEFT OUTER JOIN TB_COLOR C
-		            ON C.COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G1.MAIN_COLOR_CD)
-		           AND C.USE_YN = 'Y'
+		           AND B.USE_YN = 'Y'
+		         INNER JOIN TB_BRAND_GROUP BG
+		            ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		           AND BG.USE_YN = 'Y'
 		          LEFT OUTER JOIN TB_REFUND R
 		            ON R.ORD_CHG_SQ = OC.ORD_CHG_SQ
 		         INNER JOIN TB_PAYMENT P
@@ -1009,7 +1017,9 @@
 		             , OD.GFCD_USE_AMT
 		             , OCD.ORD_DTL_NO
 		             , G1.GOODS_CD
-		             , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)                            AS BRAND_NM
+		             , CASE BG.DISP_NM_LANG WHEN 'EN' THEN BG.BRAND_GROUP_ENM
+		                                    ELSE BG.BRAND_GROUP_KNM
+		                END                                                             AS BRAND_NM
 		             , OD.SHOT_DELV_YN
 		             , G1.SELF_GOODS_YN
 		             , G1.GOODS_NM
@@ -1073,9 +1083,10 @@
 		            ON ODI.ITEM_CD = G2.GOODS_CD
 		         INNER JOIN TB_BRAND B
 		            ON G1.BRAND_CD = B.BRAND_CD
-		          LEFT OUTER JOIN TB_COLOR C
-		            ON C.COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G1.MAIN_COLOR_CD)
-		           AND C.USE_YN = 'Y'
+		           AND B.USE_YN = 'Y'
+		         INNER JOIN TB_BRAND_GROUP BG
+		            ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		           AND BG.USE_YN = 'Y'
 		          LEFT OUTER JOIN TB_REFUND R
 		            ON R.ORD_CHG_SQ = OC.ORD_CHG_SQ
 		         INNER JOIN TB_PAYMENT P
@@ -1183,7 +1194,9 @@
 		             , OD.GFCD_USE_AMT
 		             , OCD.ORD_DTL_NO
 		             , G1.GOODS_CD
-		             , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)                            AS BRAND_NM
+		             , CASE BG.DISP_NM_LANG WHEN 'EN' THEN BG.BRAND_GROUP_ENM
+		                                    ELSE BG.BRAND_GROUP_KNM
+		                END                                                             AS BRAND_NM
 		             , OD.SHOT_DELV_YN
 		             , G1.SELF_GOODS_YN
 		             , G1.GOODS_NM
@@ -1245,9 +1258,10 @@
 		            ON ODI.ITEM_CD = G2.GOODS_CD
 		         INNER JOIN TB_BRAND B
 		            ON G1.BRAND_CD = B.BRAND_CD
-		          LEFT OUTER JOIN TB_COLOR C
-		            ON C.COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G1.MAIN_COLOR_CD)
-		           AND C.USE_YN = 'Y'
+		           AND B.USE_YN = 'Y'
+		         INNER JOIN TB_BRAND_GROUP BG
+		            ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		           AND BG.USE_YN = 'Y'
 		          LEFT OUTER JOIN TB_PAYMENT P
 		            ON P.ORD_CHG_SQ = OC.ORD_CHG_SQ
 		           AND P.PAY_GB = 'D'

+ 141 - 102
src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml

@@ -929,111 +929,150 @@
 		ORDER BY PD.DISP_ORD 
 	</select>
 	
-	<!-- 기획전 상세 상품 목록 -->
+	<!-- 기획전코너상품 목록 -->
 	<select id="getPlanningCornerGoodsList" parameterType="Plan" resultType="Plan">
 		/* TsfPlanning.getPlanningCornerGoodsList */
 		SELECT Z.*
-		      ,100 - ROUND((Z.CURR_PRICE / Z.LIST_PRICE) * 100 ,0) AS DC_RATE 
-		FROM
-		(
-		WITH TAB_PLAN_GOODS AS (
-		    SELECT P.PLAN_SQ                                                /*기획전번호*/
-		         , PD.CORNER_NM                                             /*코너명*/
-		         , PG.DISP_ORD                                              /*상품노출순서*/
-		         , CASE WHEN BG.DISP_NM_LANG = 'EN' THEN
-		                    BG.BRAND_GROUP_ENM
-		                ELSE
-		                    BG.BRAND_GROUP_KNM
-		           END                                    AS BRAND_GROUP_NM /*브랜드그룹명*/
-		         , G.GOODS_CD                                               /*상품코드*/
-		         , G.GOODS_NM                                               /*상품명*/
-		         , G.GOODS_GB                                               /*상품구분*/
-		         , G.FOREIGN_BUY_YN                                         /*해외구매대행여부*/
-		         , G.PARALLEL_IMPORT_YN                                     /*병행수입여부*/
-		         , G.ORDER_MADE_YN                                          /*주문제작여부*/
-		         , G.GOODS_TNM                                              /*상품타이틀명*/
-		         , G.MAIN_COLOR_CD                                          /*대표색상코드*/
-		         , G.LIST_PRICE                                             /*정상가(최초판매가)*/
-		         , G.CURR_PRICE                                             /*현재판매가*/
-		         , RANK() OVER(PARTITION BY P.PLAN_SQ
-		                       ORDER BY PG.DISP_ORD
-		                              , PG.GOODS_CD)      AS NUMB
-		    FROM   TB_PLAN P
-		         , TB_PLAN_DETAIL PD
-		         , TB_PLAN_GOODS PG
-		         , TB_GOODS G
-		         , TB_GOODS_STOCK GS
-		         , TB_BRAND B
-		         , TB_BRAND_GROUP BG
-		    WHERE  P.PLAN_SQ = PD.PLAN_SQ
-		    AND    PD.PLAN_DTL_SQ = PG.PLAN_DTL_SQ
-		    AND    PG.GOODS_CD = G.GOODS_CD
-		    AND    G.GOODS_CD = GS.GOODS_CD
-		    AND    G.BRAND_CD = B.BRAND_CD
-		    AND    B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
-		    AND    P.PLAN_SQ = #{planSq}
-		    -- AND    P.PLAN_GB = 'P' /*기획전*/
-		    AND    P.SITE_CD = #{siteCd}
-		    <if test="frontGb != null and frontGb != ''">
-		    AND    P.FRONT_GB LIKE CONCAT('%',#{frontGb},'%')
-		    </if>
-		    AND    NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT
-		    AND    P.DEL_YN = 'N' /*삭제안된 기획전*/
-		    AND    P.OPEN_YN = 'Y' /*오픈된 기획전*/
-		    AND    NOW() BETWEEN PD.DISP_STDT AND PD.DISP_EDDT
-		    AND    PD.DISP_YN = 'Y' /*전시하는코너*/
-		    AND    PG.DEL_YN = 'N' /*삭제안된상품*/
-		    AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
-		    AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
-		    AND    GS.STOCK_QTY <![CDATA[>]]> 0 /*재고있는상품*/
-		    AND    B.USE_YN = 'Y'
-		    AND    BG.USE_YN = 'Y'
-		    AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT
-		)
-		, TAB_GOODS_IMG AS (
-		    /* 상품의 이미지 */
-		    SELECT PG.GOODS_CD
-		         , MAX(CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END)   AS SYS_IMG_NM
-		         , MAX(CASE WHEN GI.MOUSEOVER_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END) AS SYS_IMG_NM2
-		    FROM   TAB_PLAN_GOODS PG
-		         , TB_GOODS_IMG GI
-		    WHERE  PG.GOODS_CD = GI.GOODS_CD
-		    AND    PG.MAIN_COLOR_CD = GI.COLOR_CD
-		    AND    (GI.DEFAULT_IMG_YN = 'Y' OR GI.MOUSEOVER_IMG_YN = 'Y')
-		    GROUP  BY PG.GOODS_CD
-		)
-		SELECT PG.PLAN_SQ
-		     , PG.CORNER_NM
-		     , PG.DISP_ORD
-		     , PG.BRAND_GROUP_NM
-		     , PG.GOODS_CD
-		     , FN_GET_GOODS_NM(PG.GOODS_NM,PG.GOODS_GB,PG.FOREIGN_BUY_YN,PG.PARALLEL_IMPORT_YN,PG.ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/
-		     , PG.GOODS_NM
-		     , PG.GOODS_TNM
-		     , PG.MAIN_COLOR_CD
-		     , PG.LIST_PRICE
-		     , FN_GET_BENEFIT_PRICE(#{frontGb},PG.GOODS_CD,PG.CURR_PRICE,#{custGb})                              AS CURR_PRICE    /*현재판매가*/
-		     , GI.SYS_IMG_NM
-		     , GI.SYS_IMG_NM2
-		     <choose>
-		         <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
-		     , IF(W.GOODS_CD IS NULL,'','likeit')                                                                AS LIKE_IT       /*위시리스트담긴상품*/
-		         </when>
-		         <otherwise>
-		     , ''                                                                                                AS LIKE_IT       /*위시리스트담긴상품*/
-		         </otherwise>
-		     </choose>
-		     
-		FROM   TAB_PLAN_GOODS PG
-		INNER JOIN TAB_GOODS_IMG GI ON PG.GOODS_CD = GI.GOODS_CD
-		<if test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
-		LEFT OUTER JOIN TB_WISHLIST W ON PG.GOODS_CD = W.GOODS_CD
-		                             AND W.CUST_NO = #{custNo}
-		</if>
-		<if test="maxRow != null and maxRow > 0">
-		WHERE  PG.NUMB <![CDATA[<=]]> #{maxRow}
-		</if>
-		)Z
+		     , 100 - ROUND((Z.CURR_PRICE / Z.LIST_PRICE) * 100 ,0) AS DC_RATE
+		FROM   (
+		        WITH TAB_PLAN_GOODS AS (
+		            SELECT P.PLAN_SQ                                                /*기획전번호*/
+		                 , PD.CORNER_NM                                             /*코너명*/
+		                 , PG.DISP_ORD                                              /*상품노출순서*/
+		                 , CASE WHEN BG.DISP_NM_LANG = 'EN' THEN
+		                            BG.BRAND_GROUP_ENM
+		                        ELSE
+		                            BG.BRAND_GROUP_KNM
+		                   END                                    AS BRAND_GROUP_NM /*브랜드그룹명*/
+		                 , G.GOODS_CD                                               /*상품코드*/
+		                 , G.GOODS_NM                                               /*상품명*/
+		                 , G.GOODS_GB                                               /*상품구분*/
+		                 , G.FOREIGN_BUY_YN                                         /*해외구매대행여부*/
+		                 , G.PARALLEL_IMPORT_YN                                     /*병행수입여부*/
+		                 , G.ORDER_MADE_YN                                          /*주문제작여부*/
+		                 , G.GOODS_TNM                                              /*상품타이틀명*/
+		                 , G.MAIN_COLOR_CD                                          /*대표색상코드*/
+		                 , G.LIST_PRICE                                             /*정상가(최초판매가)*/
+		                 , G.CURR_PRICE                                             /*현재판매가*/
+		                 , RANK() OVER(PARTITION BY P.PLAN_SQ
+		                               ORDER BY PG.DISP_ORD
+		                                      , PG.GOODS_CD)      AS NUMB
+		            FROM   TB_PLAN P
+		                 , TB_PLAN_DETAIL PD
+		                 , TB_PLAN_GOODS PG
+		                 , TB_GOODS G
+		                 , TB_GOODS_STOCK GS
+		                 , TB_BRAND B
+		                 , TB_BRAND_GROUP BG
+		            WHERE  P.PLAN_SQ = PD.PLAN_SQ
+		            AND    PD.PLAN_DTL_SQ = PG.PLAN_DTL_SQ
+		            AND    PG.GOODS_CD = G.GOODS_CD
+		            AND    PG.GOODS_CD = GS.GOODS_CD
+		            AND    G.BRAND_CD = B.BRAND_CD
+		            AND    B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		            AND    P.PLAN_SQ = #{planSq}
+		            -- AND    P.PLAN_GB = 'P' /*기획전*/
+		            AND    P.SITE_CD = #{siteCd}
+		            <if test="frontGb != null and frontGb != ''">
+		            AND    P.FRONT_GB LIKE CONCAT('%',#{frontGb},'%')
+		            </if>
+		            AND    NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT /*현재 전시되는 기획전*/
+		            AND    P.DEL_YN = 'N' /*삭제안된 기획전*/
+		            AND    P.OPEN_YN = 'Y' /*오픈된 기획전*/
+		            AND    NOW() BETWEEN PD.DISP_STDT AND PD.DISP_EDDT /*현재 전시되는 코너*/
+		            AND    PD.DISP_YN = 'Y' /*전시하는코너*/
+		            AND    PG.DEL_YN = 'N' /*삭제안된상품*/
+		            AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		            AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
+		            AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*현재 판매되는 상품*/
+		            AND    GS.STOCK_QTY <![CDATA[>]]> 0 /*재고있는상품*/
+		            AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
+		            AND    BG.USE_YN = 'Y' /*사용하는 브랜드그룹*/
+		        )
+		        , TAB_GOODS_IMG AS (
+		            /* 상품의 이미지 */
+		            SELECT PG.GOODS_CD
+		                 , MAX(CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END)   AS SYS_IMG_NM
+		                 , MAX(CASE WHEN GI.MOUSEOVER_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END) AS SYS_IMG_NM2
+		            FROM   TAB_PLAN_GOODS PG
+		                 , TB_GOODS_IMG GI
+		            WHERE  PG.GOODS_CD = GI.GOODS_CD
+		            AND    PG.MAIN_COLOR_CD = GI.COLOR_CD
+		            AND    (GI.DEFAULT_IMG_YN = 'Y' OR GI.MOUSEOVER_IMG_YN = 'Y')
+		            GROUP  BY PG.GOODS_CD
+		        )
+		        , TAB_COLORCHIP AS (
+		            /* 상품 컬러칩 */
+		            SELECT PG.GOODS_CD
+		                 , GROUP_CONCAT(DISTINCT CONCAT(C.COLOR_CD,':',CC.CD_DESC) ORDER BY CC.DISP_ORD SEPARATOR ',') AS COLOR_CHIPS
+		            FROM   TAB_PLAN_GOODS PG
+		                 , TB_OPTION O
+		                 , TB_COLOR C
+		                 , TB_COMMON_CODE CC
+		            WHERE  PG.GOODS_CD = O.GOODS_CD
+		            AND    O.OPT_CD1 = C.COLOR_CD
+		            AND    C.COLOR_GRP_CD = CC.CD
+		            AND    O.DISP_YN = 'Y'
+		            AND    C.USE_YN = 'Y'
+		            AND    CC.USE_YN = 'Y'
+		            GROUP  BY PG.GOODS_CD
+		        )
+		        , TAB_GOODS_BENEFIT AS (
+		            /* 상품혜택 */
+		            SELECT GOODS_CD
+		                 , GROUP_CONCAT(CONCAT(BENEFIT_GB,':',BENEFIT_NM) ORDER BY NUMB SEPARATOR ',') AS ICON
+		            FROM   (
+		                    SELECT PG.GOODS_CD
+		                         , GB.BENEFIT_GB
+		                         , CASE WHEN GB.BENEFIT_GB = '10' THEN '쿠폰할인'
+		                                WHEN GB.BENEFIT_GB = '20' THEN '무료배송'
+		                                WHEN GB.BENEFIT_GB = '30' THEN '사은품'
+		                                ELSE '신상'
+		                           END                               AS BENEFIT_NM
+		                         , RANK() OVER(PARTITION BY PG.GOODS_CD
+		                                       ORDER BY GB.BENEFIT_GB
+		                                              , GB.GOODS_CD) AS NUMB
+		                    FROM   TAB_PLAN_GOODS PG
+		                         , TB_GOODS_BENEFIT GB
+		                    WHERE  PG.GOODS_CD = GB.GOODS_CD
+		                   ) Z
+		            GROUP  BY GOODS_CD
+		        )
+		        SELECT PG.PLAN_SQ
+		             , PG.CORNER_NM
+		             , PG.DISP_ORD
+		             , PG.BRAND_GROUP_NM
+		             , PG.GOODS_CD
+		             , FN_GET_GOODS_NM(PG.GOODS_NM,PG.GOODS_GB,PG.FOREIGN_BUY_YN,PG.PARALLEL_IMPORT_YN,PG.ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/
+		             , PG.GOODS_NM
+		             , PG.GOODS_TNM
+		             , PG.MAIN_COLOR_CD
+		             , PG.LIST_PRICE
+		             , FN_GET_BENEFIT_PRICE(#{frontGb},PG.GOODS_CD,PG.CURR_PRICE,#{custGb})                              AS CURR_PRICE    /*현재판매가*/
+		             , GI.SYS_IMG_NM
+		             , GI.SYS_IMG_NM2
+		             , C.COLOR_CHIPS                                                                                                      /*컬러칩*/
+		             , GB.ICON                                                                                                            /*혜택아이콘*/
+		             <choose>
+		                 <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+		             , IF(W.GOODS_CD IS NULL,'','likeit')                                                                AS LIKE_IT       /*위시리스트담긴상품*/
+		                 </when>
+		                 <otherwise>
+		             , ''                                                                                                AS LIKE_IT       /*위시리스트담긴상품*/
+		                 </otherwise>
+		             </choose>
+		        FROM   TAB_PLAN_GOODS PG
+		        LEFT OUTER JOIN TAB_GOODS_IMG GI ON PG.GOODS_CD = GI.GOODS_CD
+		        LEFT OUTER JOIN TAB_COLORCHIP C ON PG.GOODS_CD = C.GOODS_CD
+		        LEFT OUTER JOIN TAB_GOODS_BENEFIT GB ON PG.GOODS_CD = GB.GOODS_CD
+		        <if test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+		        LEFT OUTER JOIN TB_WISHLIST W ON PG.GOODS_CD = W.GOODS_CD
+		                                     AND W.CUST_NO = #{custNo}
+		        </if>
+		        <if test="maxRow != null and maxRow > 0">
+		        WHERE  PG.NUMB <![CDATA[<=]]> #{maxRow}
+		        </if>
+		       ) Z
 	</select>
 	
 	<!-- 총알배송 html 소스  -->

+ 5 - 1
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html

@@ -247,7 +247,11 @@
 								
 								<!-- 배송지등록후(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10' or ${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
-									<div><button type="button" class="btn btn_default btn_cncl_complete"><span>주문 취소</span></button></div>
+									<div>
+										<button type="button" class="btn btn_default btn_cncl_complete" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');">
+											<span>주문 취소</span>
+										</button>
+									</div>
 								</th:block>
 								<!-- //배송지등록후(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
 								

+ 3 - 3
src/main/webapp/WEB-INF/views/mob/order/OrderDeliveryAddrInfoMob.html

@@ -116,8 +116,8 @@
 <!-- //배송지정보 -->
 
 <script th:inline="javascript">
-var dispYn = [[${order.dispYn}]]; // 노출여부
-var delvMemo = [[${deliveryAddrInfo.delvMemo}]]; // 노출여부
+var dispYn 		= [[${order.dispYn}]]; // 노출여부
+var delvMemo 	= [[${deliveryAddrInfo.delvMemo}]]; // 노출여부
 
 //화면노출
 var deliveryAddrInfoDispYn = function(temp) {
@@ -133,7 +133,7 @@ var deliveryAddrInfoDispYn = function(temp) {
 //컨텐츠 호출
 $(document).ready( function() {
 	// 화면펼침
-	deliveryAddrInfoDispYn(dispYn);
+	deliveryAddrInfoDispYn("Y");
 	
 	var delvMemoArr = ["문 앞", "직접 받고 부재 시 문 앞", "경비실", "택배함"];
 	var tempMemo = true;

+ 58 - 5
src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html

@@ -816,6 +816,17 @@ var freegiftInfoSet = function() {
 				$("#freegiftInfo").html(result);
 				var total_gift 		= 0;
 				var total_deduct 	= 0;
+				
+				// 2021.04.29 무료사은품 기본선택
+				$("#orderForm .freegiftRdo").each(function(index) {
+					var usepoint = parseInt($(this).attr("usepoint"));
+					var usepoint = parseInt($(this).attr("count"));
+					
+					// 첫번째 무료 선택 
+					if (usepoint == 0 && count == 1) {
+						$(this).trigger("click");
+					}
+				});
 
 				// 2.2 사은품선택 라디오 버튼 기능
 				$("#orderForm .freegiftRdo").on("click", function() {
@@ -852,6 +863,17 @@ var freegiftInfoSet = function() {
 					pntDcAmtReset();
 				});
 				
+				// 2021.04.29 무료사은품 기본선택
+				$("#orderForm .freegiftRdo").each(function(){
+					var usepoint 	= parseInt($(this).attr("usepoint"));
+					var count 		= parseInt($(this).attr("count"));
+					
+					// 첫번째 무료 선택 
+					if (usepoint == 0 && count == 1) {
+						$(this).trigger("click");
+					}
+				});
+
 				total_gift = 0;
 				
 				// 사은품테이블 그리기
@@ -867,6 +889,13 @@ var freegiftInfoSet = function() {
 						$("#orderForm .total_gift").text(total_gift);						// 사은품총선택개수
 					});
 				});
+				
+				// 2021.04.29 사은품동의 체크 기능
+				$("#orderForm #chk-agree_gift").on("click", function(){
+					if ($(this).is(":checked") == false) {
+						mcxDialog.alert("미동의시 사은품 지급이 되지 않습니다.");
+					}
+				});
 			}
 			
 			// 1.8 결제타입로드
@@ -982,6 +1011,15 @@ var paymentInfoSet = function() {
 							
 							orgEntryNo = $("#orderForm input[name=entryNo]").val();
 							
+							if (orgEntryNo.substr(0,1) != "P") {
+								mcxDialog.alert("개인통관고유부호가 유효하지 않습니다.");
+								$('#orderForm input[name=entryNo]').focus();
+								
+								// 배송정보화면노출
+								deliveryAddrInfoDispYn("Y");
+								return false;
+							}
+							
 							if (orgEntryNo.length < 13) {
 								mcxDialog.alert("개인통관고유부호가 유효하지 않습니다.");
 								$('#orderForm input[name=entryNo]').focus();
@@ -1004,7 +1042,7 @@ var paymentInfoSet = function() {
 					// 주문제작상품일때 주문제작정보동의
 					if (orderMadeYn == "Y") {
 						if (!$("#orderForm #chk-custom-agr1").is(":checked")) {
-							mcxDialog.alert("주문제작상품 정보 동의를 체크해주세요.");
+							mcxDialog.alert("주문제작상품에 대한 동의를 하지 않으실 경우 해당 상품을 쇼핑백에서 제외하신 후 다시 결제를 시도해주세요.");
 							
 							// 배송정보화면노출
 							madeInfoDispYn("Y");
@@ -1013,6 +1051,7 @@ var paymentInfoSet = function() {
 					}
 					
 					// 사은품지급할 경우 체크
+					/*
 					if ($("#orderAmtForm .freegiftValArr").text().length > 0) {
 						if (!$("#orderForm #chk-agree_gift").is(":checked")) {
 							mcxDialog.alert("사은품 지급 정보 동의를 체크해주세요.");
@@ -1022,6 +1061,7 @@ var paymentInfoSet = function() {
 							return false;
 						}
 					}
+					*/
 					
 					// 결재수단
 					if (gagajf.isNull(paynormal)) {
@@ -1106,6 +1146,19 @@ var paymentInfoSet = function() {
 						delvFeeCdList.push(delvFeeCdData);
 					});
 					
+					// 2021.04.29 상픈품 체크박스 미동의시 사은품 미지급
+					var freegiftValArr 			= $("#orderAmtForm .freegiftValArr").text().split(",");
+					var freegiftSqArr 			= $("#orderAmtForm .freegiftSqArr").text().split(",");
+					var freegiftGoodsArr 		= $("#orderAmtForm .freegiftGoodsArr").text().split(",");
+					var freegiftUsePointArr 	= $("#orderAmtForm .freegiftUsePointArr").text().split(",");
+					
+					if (!$("#orderForm #chk-agree_gift").is(":checked") == false) {
+						freegiftValArr 			= "";
+						freegiftSqArr 			= "";
+						freegiftGoodsArr 		= "";
+						freegiftUsePointArr 	= "";
+					}
+					
 					// 주문데이타 생성
 					var orderData = {
 						"custNm"				: $("#orderAmtForm .custNm").text()
@@ -1131,10 +1184,10 @@ var paymentInfoSet = function() {
 						,"ordPhnno"				: $("#orderAmtForm .cellPhnno").text()
 						,"goodsNm"				: $("#orderAmtForm .goodsNm").eq(0).text()
 						,"ordGoodsQty"			: ordGoodsQty
-						,"freegiftValArr"		: $("#orderAmtForm .freegiftValArr").text().split(",")
-						,"freegiftSqArr"		: $("#orderAmtForm .freegiftSqArr").text().split(",")
-						,"freegiftGoodsArr"		: $("#orderAmtForm .freegiftGoodsArr").text().split(",")
-						,"freegiftUsePointArr"	: $("#orderAmtForm .freegiftUsePointArr").text().split(",")
+						,"freegiftValArr"		: freegiftValArr
+						,"freegiftSqArr"		: freegiftSqArr
+						,"freegiftGoodsArr"		: freegiftGoodsArr
+						,"freegiftUsePointArr"	: freegiftUsePointArr
 						,"giftMsg"				: giftMsg
 					};
 					

+ 3 - 3
src/main/webapp/WEB-INF/views/mob/order/OrderFreegiftInfoMob.html

@@ -79,7 +79,7 @@
 									<th:block th:each="freegiftGoods, k : ${freegiftGoodsList}">
 										<th:block th:if="${freegift.freegiftSq} == ${freegiftGoods.freegiftSq}">
 											<div class="gift">
-												<input type="radio" th:name="'rdi-gift'+${i.count}" th:id="'rdi-gift'+${i.count}+${k.count}" class="chk_img freegiftRdo" th:value="${freegiftGoods.freegiftValSq}" th:usepoint="${freegiftGoods.usePoint}" allYn="N">
+												<input type="radio" th:name="'rdi-gift'+${i.count}" th:id="'rdi-gift'+${i.count}+${k.count}" class="chk_img freegiftRdo" th:value="${freegiftGoods.freegiftValSq}" th:usepoint="${freegiftGoods.usePoint}" allYn="N" th:count="${i.count}">
 												<label th:for="'rdi-gift'+${i.count}+${k.count}">
 													<span class="thumb"><img src="/images/pc/thumb/tmp_gift1.jpg" width="" alt=""></span>
 													<span class="name" th:text="${freegiftGoods.goodsNm}"></span> 
@@ -90,7 +90,7 @@
 										</th:block>
 									</th:block>
 									<div class="gift">
-										<input type="radio" th:name="'rdi-gift'+${i.count}" th:id="${i.count}+'0'" class="chk_img freegiftRdo" value="noSel" usepoint="0" allYn="N" checked> 
+										<input type="radio" th:name="'rdi-gift'+${i.count}" th:id="${i.count}+'0'" class="chk_img freegiftRdo" value="noSel" usepoint="0" allYn="N" count="100"> 
 										<label th:for="${i.count}+'0'">
 											<span class="thumb"><img src="/images/pc/thumb/tmp_gift_empty.jpg" width="" alt=""></span>
 											<span class="name">사은품 수령안함</span> <span class="deduct">수령거부</span>
@@ -105,7 +105,7 @@
 					<div class="form_field">
 						<div class="agree_gift">
 							<p>
-								<input id="chk-agree_gift" type="checkbox">
+								<input id="chk-agree_gift" type="checkbox" checked>
 								<label for="chk-agree_gift"><span>동의합니다</span></label>
 							</p>
 							<p class="txt">사은품 지금에 대한 내용을 확인하였으며, 이에 동의합니다.</p>

+ 0 - 2
src/main/webapp/WEB-INF/views/web/cart/CartAddGoodsPopupWeb.html → src/main/webapp/WEB-INF/views/web/cart/CartDelvFeeSaveGoodsPopupWeb.html

@@ -27,8 +27,6 @@
 													</th:block>
 												</p>
 											</a>
-											<input type="text" th:value="${goods.goodsCd}">
-											<input type="text" th:value="${goods.optCd}">
 											<button type="button" class="btn btn_default btn_sm" th:onclick="fnAddCartDelvFeeSaveGoods([[${goods.goodsCd}]], [[${goods.optCd}]])"><span>쇼핑백 담기</span></button>
 										</div>
 									</div>

+ 6 - 3
src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html

@@ -94,6 +94,7 @@
 										<input type="hidden" name="soldoutYn" th:value="${cart.soldoutYn}" />
 										<input type="hidden" name="ordCanYn" th:value="${cart.ordCanYn}" />
 										<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
+										<input type="hidden" name="goodsCd" th:value="${cart.goodsCd}" />
 
 										<div class="order_desc">
 											<div class="form_box">
@@ -141,7 +142,7 @@
 												<div class="gd_exinfo">
 													<p th:if="${!#strings.isEmpty(cart.delvResDt)}"><span class="tag primary_line">총알배송</span><span th:text="|${cart.delvResDt} 배송예정|"></span></p>
 													<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y')}" class="applyTmtb"><span class="tag primary">SALE</span>다다익선 할인 적용</p>
-													<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" class="notApplyTmtb"><a href="" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
+													<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" class="notApplyTmtb"><a href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
 													<p th:if="${cart.soldoutYn.equals('Y') and cart.ordCanYn.equals('Y')}">품절된 상품입니다.</p>
 													<p th:if="${cart.ordCanYn.equals('N')}">해당 상품은 구매 불가능한 상품입니다.</p>
 													<p th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty < cart.minOrdQty}" th:text="|해당 상품은 최소 ${cart.minOrdQty}개부터 구매 가능합니다.|"></p>
@@ -209,6 +210,7 @@
 										<input type="hidden" name="soldoutYn" th:value="${cart.soldoutYn}" />
 										<input type="hidden" name="ordCanYn" th:value="${cart.ordCanYn}" />
 										<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
+										<input type="hidden" name="goodsCd" th:value="${cart.goodsCd}" />
 
 										<div class="order_desc">
 											<div class="form_box">
@@ -249,7 +251,7 @@
 													<div class="gd_exinfo">
 														<p th:if="${!#strings.isEmpty(cart.delvResDt)}" th:text="|${cart.delvResDt} 배송예정|"></p>
 														<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y')}" class="applyTmtb"><span class="tag primary">SALE</span>다다익선 할인 적용</p>
-														<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" class="notApplyTmtb"><a href="" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
+														<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" class="notApplyTmtb"><a href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
 														<p th:if="${cart.soldoutYn.equals('Y') and cart.ordCanYn.equals('Y')}">품절된 상품입니다.</p>
 														<p th:if="${cart.ordCanYn.equals('N')}">해당 상품은 구매 불가능한 상품입니다.</p>
 														<p th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty < cart.minOrdQty}" th:text="|해당 상품은 최소 ${cart.minOrdQty}개부터 구매 가능합니다.|"></p>
@@ -328,6 +330,7 @@
 										<input type="hidden" name="ordCanYn" th:value="${cart.ordCanYn}" />
 										<input type="hidden" name="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
 										<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
+										<input type="hidden" name="goodsCd" th:value="${cart.goodsCd}" />
 
 										<div class="order_desc">
 											<div class="form_box">
@@ -367,7 +370,7 @@
 												<div class="gd_exinfo">
 													<p th:if="${!#strings.isEmpty(cart.delvResDt)}" th:text="|${cart.delvResDt} 배송예정|"></p>
 													<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y')}" class="applyTmtb"><span class="tag primary">SALE</span>다다익선 할인 적용</p>
-													<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" class="notApplyTmtb"><a href="" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
+													<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" class="notApplyTmtb"><a href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
 													<p th:if="${cart.soldoutYn.equals('Y') and cart.ordCanYn.equals('Y')}">품절된 상품입니다.</p>
 													<p th:if="${cart.ordCanYn.equals('N')}">해당 상품은 구매 불가능한 상품입니다.</p>
 													<p th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty < cart.minOrdQty}" th:text="|해당 상품은 최소 ${cart.minOrdQty}개부터 구매 가능합니다.|"></p>

+ 37 - 7
src/main/webapp/WEB-INF/views/web/cart/CartListFormWeb.html

@@ -260,6 +260,8 @@
 	<!-- 장바구니 배송비 SAVE 상품보기 팝업 -->
 	<div class="modal fade dlvrSave_pop" id="dlvrSavePop" tabindex="-1" role="dialog" aria-labelledby="dlvrSaveLabel" aria-hidden="true" style="display:none;"></div>
 
+	<div class="modal fade moresale_pop" id="moresalePop" tabindex="-1" role="dialog" aria-labelledby="moresaleLabel" aria-hidden="true" style="display:none;"></div>
+
 <script src="/ux/pc/js/swiper.min.js"></script>
 <link rel="stylesheet" type="text/css" href="/ux/pc/css/swiper.min.css" />
 
@@ -301,18 +303,46 @@
 	});
 
 	//팝업 - 다다익선 상품보기
-	$(document).on('click','#btn_moresale_pop',function(e){
-		$("#moresalePop .modal-content").load("popup_moresale.html");
-		// $("#moresalePop").modal("show");
-		return false;
-	});
+	function fnGetTmtbSalesGoods(obj) {
+		// 파라미터
+		let tmtbSqList = new Array();
+		let param = new Object();
+
+		// 다다익선 정보
+		let qtyTmtbSq = $(obj).parent().parent().parent().parent().parent().parent().find("input[name=qtyTmtbSq]").val();
+		let amtTmtbSq = $(obj).parent().parent().parent().parent().parent().parent().find("input[name=qtyTmtbSq]").val();
+		let qtyTmtbYn = $(obj).parent().parent().parent().parent().parent().parent().find("input[name=applyQtySectionYn]").val();
+		let amtTmtbYn = $(obj).parent().parent().parent().parent().parent().parent().find("input[name=applyAmtSectionYn]").val();
+		let goodsCd = $(obj).parent().parent().parent().parent().parent().parent().find("input[name=goodsCd]").val();
+
+		if(qtyTmtbYn == "N") {tmtbSqList.push(Number(qtyTmtbSq));}
+		if(amtTmtbYn == "N") {tmtbSqList.push(Number(amtTmtbSq));}
+		if(tmtbSqList.length < 1) {mcxDialog.alert("적용가능한 다다익선이 없습니다."); return false;}
+
+		let tmtb = JSON.stringify({goodsCd : goodsCd, arrTmtbSq : tmtbSqList});
+
+		$.ajax( {
+			type		: "POST",
+			url 		: '/cart/tmtb/sales/goods/list',
+			data		: tmtb,
+			dataType 	: 'html',
+			beforeSend : function(xhr, settings) {
+				xhr.setRequestHeader("AJAX"			, "true");
+				xhr.setRequestHeader('Accept'		, 'application/json');
+				xhr.setRequestHeader('Content-Type'	, 'application/json');
+			},
+			success 	: function(result) {
+				$("#moresalePop").html(result);
+			}
+		});
+	}
 	$("#moresalePop_close").click(function() {
-		$("#moresalePop > #dlvrSavePop").modal("hide");
+		$("#moresalePop").modal("hide");
 	});
 
 	//팝업 - 배송비 SAVE 상품보기
 	function fnGetDelvFeeSaveGoods(delvFeeCd, delvFeeSaveGoodsAmt) {
-		var param = new Object();
+		let param = new Object();
 		param.delvFeeCd = delvFeeCd;
 		param.delvFeeSaveGoodsAmt = delvFeeSaveGoodsAmt;
 

+ 210 - 0
src/main/webapp/WEB-INF/views/web/cart/CartTmtbSalesGoodsPopupWeb.html

@@ -0,0 +1,210 @@
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org">
+<!-- 배송비 SAVE 상품보기, 다다익선 할인 상품 보기 -->
+<div class="modal-dialog" role="document">
+	<div class="modal-content"><div class="modal-header">
+		<h5 class="modal-title" id="moresaleLabel">다다익선 상품</h5>
+	</div>
+		<div class="modal-body">
+			<div class="pop_cont">
+				<div class="area_benefit">
+					<span class="tag primary">SALE</span>
+					<p>
+						<span>5개 이상 구매 시 1만원 할인</span>
+						<span>10만원 이상 구매 시 1만원 할인</span>
+					</p>
+				</div>
+				<!-- -->
+				<div class="area_slider">
+					<div class="swiper-container swiper-container-initialized swiper-container-horizontal">
+						<div class="swiper-wrapper" style="transform: translate3d(0px, 0px, 0px);">
+							<div class="swiper-slide swiper-slide-active" style="width: 150px; margin-right: 20px;">
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
+											</div>
+											<p class="itemBrand">BRAND NAME1</p>
+											<div class="itemName">남성 로고 자카드 방풍 패딩</div>
+											<p class="itemPrice">80,100
+												<span class="itemPrice_original">89,000</span>
+												<span class=" itemPercent">10%</span>
+											</p>
+										</a>
+										<button type="button" class="btn btn_default btn_sm"><span>쇼핑백 담기</span></button>
+									</div>
+								</div>
+							</div>
+							<div class="swiper-slide swiper-slide-next" style="width: 150px; margin-right: 20px;">
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
+											</div>
+											<p class="itemBrand">BRAND NAME1</p>
+											<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+											<p class="itemPrice">80,100
+												<span class="itemPrice_original">89,000</span>
+												<span class=" itemPercent">10%</span>
+											</p>
+										</a>
+										<button type="button" class="btn btn_default btn_sm"><span>쇼핑백 담기</span></button>
+									</div>
+								</div>
+							</div>
+							<div class="swiper-slide" style="width: 150px; margin-right: 20px;">
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
+											</div>
+											<p class="itemBrand">BRAND NAME1</p>
+											<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+											<p class="itemPrice">80,100
+												<span class="itemPrice_original">89,000</span>
+												<span class=" itemPercent">10%</span>
+											</p>
+										</a>
+										<button type="button" class="btn btn_default btn_sm"><span>쇼핑백 담기</span></button>
+									</div>
+								</div>
+							</div>
+							<div class="swiper-slide" style="width: 150px; margin-right: 20px;">
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
+											</div>
+											<p class="itemBrand">BRAND NAME1</p>
+											<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+											<p class="itemPrice">80,100
+												<span class="itemPrice_original">89,000</span>
+											</p>
+										</a>
+										<button type="button" class="btn btn_default btn_sm"><span>쇼핑백 담기</span></button>
+									</div>
+								</div>
+							</div>
+							<div class="swiper-slide" style="width: 150px; margin-right: 20px;">
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
+											</div>
+											<p class="itemBrand">BRAND NAME1</p>
+											<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+											<p class="itemPrice">80,100
+												<span class="itemPrice_original">89,000</span>
+											</p>
+										</a>
+										<button type="button" class="btn btn_default btn_sm"><span>쇼핑백 담기</span></button>
+									</div>
+								</div>
+							</div>
+							<div class="swiper-slide" style="width: 150px; margin-right: 20px;">
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
+											</div>
+											<p class="itemBrand">BRAND NAME1</p>
+											<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+											<p class="itemPrice">80,100
+												<span class="itemPrice_original">89,000</span>
+											</p>
+										</a>
+										<button type="button" class="btn btn_default btn_sm"><span>쇼핑백 담기</span></button>
+									</div>
+								</div>
+							</div>
+							<div class="swiper-slide" style="width: 150px; margin-right: 20px;">
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
+											</div>
+											<p class="itemBrand">BRAND NAME1</p>
+											<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+											<p class="itemPrice">80,100
+												<span class="itemPrice_original">89,000</span>
+											</p>
+										</a>
+										<button type="button" class="btn btn_default btn_sm"><span>쇼핑백 담기</span></button>
+									</div>
+								</div>
+							</div>
+							<div class="swiper-slide" style="width: 150px; margin-right: 20px;">
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
+											</div>
+											<p class="itemBrand">BRAND NAME1</p>
+											<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+											<p class="itemPrice">80,100
+												<span class="itemPrice_original">89,000</span>
+											</p>
+										</a>
+										<button type="button" class="btn btn_default btn_sm"><span>쇼핑백 담기</span></button>
+									</div>
+								</div>
+							</div>
+						</div>
+						<!-- Add Scrollbar -->
+						<div class="swiper-scrollbar" style="opacity: 0; transition-duration: 400ms;"><div class="swiper-scrollbar-drag" style="width: 514.104px; transform: translate3d(0px, 0px, 0px);"></div></div>
+						<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span></div>
+				</div>
+				<!-- -->
+			</div>
+		</div>
+
+		<script>
+			//팝업 - 다다익선 상품보기 > 슬라이드
+			var moreSaleSwiper = new Swiper('.moresale_pop .swiper-container', {
+				observer:true,
+				observeParents: true,
+				slidesPerView: 5,
+				spaceBetween: 20,
+				scrollbar: {
+					el: '.moresale_pop .swiper-scrollbar',
+					hide: true,
+				},
+			});
+		</script></div>
+</div>
+<a href="#close-modal" rel="modal:close" id="moresalePop_close" class="close-modal">Close</a>
+
+<script th:inline="javascript">
+	$(document).ready(function() {
+		var goodsListCnt = [[${goodsList.size()}]];
+		if(goodsListCnt < 1) {
+			mcxDialog.alert("다다익선 적용 가능한 다른 상품이 없습니다.");
+			$("#moresalePop_close").trigger("click");
+		} else {
+			$("#moresalePop").modal("show");
+		}
+	});
+
+	function fnAddCartDelvFeeSaveGoods(goodsCd, optCd) {
+		let compsList = [];
+		let temp 			= new Object;
+		temp.goodsCd 		= goodsCd;
+		temp.optCd 			= optCd;
+		temp.goodsQty 		= 1;
+		temp.goodsType 		= "G056_N";
+		temp.cartGb 		= "C";
+		temp.popupYn		= "Y";
+		compsList.push(temp);
+
+		cfnAddCart(compsList);
+	};
+</script>
+</html>

+ 8 - 8
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderDetailFormWeb.html

@@ -114,8 +114,8 @@
 															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}" onclick="fnReSendSms(this);"><span>SMS 재발송</span></button></p>
 														</th:block>
 
-														<!-- 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
-														<th:block th:if="${ordDtl.ordDtlStat == 'G013_10' or ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35' or ordDtl.ordDtlStat == 'G013_40'}">
+														<!-- 주문취소 버튼(결제완료, 상품준비중, 출고처지정) -->
+														<th:block th:if="${ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35'}">
 															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></p>
 														</th:block>
 														
@@ -131,8 +131,8 @@
 													</th:block>
 													<!-- 주문 -->
 													<th:block th:unless="${order.giftPackYn == 'Y'}">
-														<!-- 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
-														<th:block th:if="${ordDtl.payStat != 'G016_00' && (ordDtl.ordDtlStat == 'G013_10' or ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35' or ordDtl.ordDtlStat == 'G013_40')}">
+														<!-- 주문취소 버튼(결제완료, 상품준비중, 출고처지정) -->
+														<th:block th:if="${ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35'}">
 															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></p>
 														</th:block>
 														
@@ -177,13 +177,13 @@
 															<p><button type="button" class="btn btn_primary_line btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>
 														</th:block>
 	
-														<!-- 쇼핑백담기 버튼(구매확정) -->
-														<th:block th:if="${ordDtl.ordDtlStat == 'G013_70'}">
+														<!-- 쇼핑백담기 버튼(입금대기, 배송준비중, 구매확정) -->
+														<th:block th:if="${ordDtl.ordDtlStat == 'G013_10' or ordDtl.ordDtlStat == 'G013_40' or ordDtl.ordDtlStat == 'G013_70'}">
 															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></p>
 														</th:block>
 	
-														<!-- 1:1문의 버튼(구매확정) -->
-														<th:block th:if="${ordDtl.ordDtlStat == 'G013_70' and (ordDtl.reviewableYn == 'N' or ordDtl.reviewSq > 0)}">
+														<!-- 1:1문의 버튼(입금대기, 배송준비중, 구매확정) -->
+														<th:block th:if="${ordDtl.ordDtlStat == 'G013_10' or ordDtl.ordDtlStat == 'G013_40' or (ordDtl.ordDtlStat == 'G013_70' and (ordDtl.reviewableYn == 'N' or ordDtl.reviewSq > 0))}">
 															<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></p>
 														</th:block>
 													</th:block>

+ 8 - 8
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html

@@ -387,7 +387,7 @@
 		let jsonData = JSON.stringify(data);
 		
 		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-			$('#orderReceiptCount').text(result.orderCount.orderReceiptCount);
+			$('#orderReceiptCount').text(result.orderCount.depositWaitingCount);
 			$('#paymentCompleteCount').text(result.orderCount.paymentCompleteCount);
 			$('#goodsPrepareCount').text(result.orderCount.goodsPrepareCount);
 			$('#shipPrepareCount').text(result.orderCount.shipPrepareCount);
@@ -497,8 +497,8 @@
 							tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" onclick="fnReSendSms(this);"><span>SMS 재발송</span></button></p>\n';
 						}
 
-						// 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중)
-						if (ordDtl.ordDtlStat == 'G013_10' || ordDtl.ordDtlStat == 'G013_20' || ordDtl.ordDtlStat == 'G013_30' || ordDtl.ordDtlStat == 'G013_35' || ordDtl.ordDtlStat == 'G013_40') {
+						// 주문취소 버튼(결제완료, 상품준비중, 출고처지정)
+						if (ordDtl.ordDtlStat == 'G013_20' || ordDtl.ordDtlStat == 'G013_30' || ordDtl.ordDtlStat == 'G013_35') {
 							tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" delvFeeCd="' + ordDtl.delvFeeCd + '" onclick="fnCreateChange(this, \'cancel\');"><span>주문 취소</span></button></p>\n';
 						}
 
@@ -512,8 +512,8 @@
 							tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></p>\n';
 						}
 					} else {
-						// 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중)
-						if (ordDtl.payStat != 'G016_00' && (ordDtl.ordDtlStat == 'G013_10' || ordDtl.ordDtlStat == 'G013_20' || ordDtl.ordDtlStat == 'G013_30' || ordDtl.ordDtlStat == 'G013_35' || ordDtl.ordDtlStat == 'G013_40')) {
+						// 주문취소 버튼(결제완료, 상품준비중, 출고처지정)
+						if (ordDtl.ordDtlStat == 'G013_20' || ordDtl.ordDtlStat == 'G013_30' || ordDtl.ordDtlStat == 'G013_35') {
 							tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" delvFeeCd="' + ordDtl.delvFeeCd + '" onclick="fnCreateChange(this, \'cancel\');"><span>주문 취소</span></button></p>\n';
 						}
 
@@ -555,13 +555,13 @@
 							tag += '											<p><button type="button" class="btn btn_primary_line btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" goodsCd="' + ordDtl.goodsCd + '" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>\n';
 						}
 
-						// 쇼핑백담기 버튼(구매확정)
-						if (ordDtl.ordDtlStat == 'G013_70') {
+						// 쇼핑백담기 버튼(입금대기, 배송준비중, 구매확정)
+						if (ordDtl.ordDtlStat == 'G013_10' || ordDtl.ordDtlStat == 'G013_40' || ordDtl.ordDtlStat == 'G013_70') {
 							tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></p>\n';
 						}
 
 						// 1:1문의 버튼(구매확정)
-						if (ordDtl.ordDtlStat == 'G013_70' && (ordDtl.reviewableYn == 'N' || ordDtl.reviewSq > 0)) {
+						if (ordDtl.ordDtlStat == 'G013_10' || ordDtl.ordDtlStat == 'G013_40' || (ordDtl.ordDtlStat == 'G013_70' && (ordDtl.reviewableYn == 'N' || ordDtl.reviewSq > 0))) {
 							tag += '											<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></p>\n';
 						}
 					}

+ 1 - 1
src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html

@@ -437,7 +437,7 @@
 
 		// 추가배송비 PG 처리
 		let addPayCost = $('#returnForm input[name=addPayCost]').val();
-		alert(addPayCost);
+
 		let data = {};
 		data.ordNo = oneData.ordNo;
 		data.ordChgSq = 0;

+ 4 - 4
src/main/webapp/WEB-INF/views/web/order/OrderDeliveryAddrInfoWeb.html

@@ -134,14 +134,14 @@
 					<dd>
 						<div class="form_field">
 							<div>
-								<input type="radio" name="rdi-overseas" id="rdi-overs1" value="Y"> 
+								<input type="radio" name="rdi-overseas" id="rdi-overs1" value="Y" checked> 
 								<label for="rdi-overs1"><span>받는사람 개인통관고유부호</span></label>
 							</div>
 							<div>
-								<input type="radio" name="rdi-overseas" id="rdi-overs2" value="N" checked> 
+								<input type="radio" name="rdi-overseas" id="rdi-overs2" value="N"> 
 								<label for="rdi-overs2"><span>입력 안 함</span></label>
 							</div>
-							<div class="info_box overs1" style="display:none;">
+							<div class="info_box overs1">
 								<div class="input_wrap">
 									<input type="text" name="entryNo" class="form_control" maxlength="13" placeholder="P로 시작하는 13자리">
 									<!-- 유효하지 않은 개인통관고유부호 일때 class명 'err' 추가 -->
@@ -214,7 +214,7 @@ var deliveryAddrInfoDispYn = function(temp) {
 //컨텐츠 호출
 $(document).ready( function() {
 	// 화면펼침
-	deliveryAddrInfoDispYn(dispYn);
+	deliveryAddrInfoDispYn("Y");
 });
 
 // 개인통관부호 유효성체크

+ 58 - 11
src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html

@@ -478,7 +478,11 @@
 			<div class="modal-body">
 				<div class="pop_cont">
 					<div class="cont_box">
-						사은품지급안내 내용입니다. 사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다. 사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다. 사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다. 사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다. 사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.
+						<ul>
+							<li>스타일포인트 차감 사은품을 선택하신 경우, 결제 시 고객님의 누적 포인트에서 차감됩니다.</li>
+							<li>보유한 포인트의 금액을 넘어선 사은품은 신청이 불가합니다.</li>
+							<li>사은품 신청 시 해외배송은 불가합니다. <br> <span class="t_info">(적립포인트 사은품 및 온라인 사은품 제외)</span></li>
+						</ul>
 					</div>
 				</div>
 			</div>
@@ -567,7 +571,7 @@ $(document).ready( function() {
 	custemerInfoSet();
 	
 	// 999. 개발화면정보설정
-	var devTemp = false;
+	var devTemp = true;
 	var arr = []
 	arr[0] = "orderInfo";
 	arr[1] = "freegiftInfo";
@@ -866,6 +870,17 @@ var freegiftInfoSet = function() {
 					pntDcAmtReset();
 				});
 				
+				// 2021.04.29 무료사은품 기본선택
+				$("#orderForm .freegiftRdo").each(function(){
+					var usepoint 	= parseInt($(this).attr("usepoint"));
+					var count 		= parseInt($(this).attr("count"));
+					
+					// 첫번째 무료 선택 
+					if (usepoint == 0 && count == 1) {
+						$(this).trigger("click");
+					}
+				});
+				
 				// 사은품테이블 그리기
 				$("#orderForm .gift_box").each(function(){
 					$(this).find(".freegiftRdo").each(function(){
@@ -875,6 +890,13 @@ var freegiftInfoSet = function() {
 						$("#orderForm .total_gift").text(total_gift);						// 사은품총선택개수
 					});
 				});
+				
+				// 2021.04.29 사은품동의 체크 기능
+				$("#orderForm #chk-agree_gift").on("click", function(){
+					if ($(this).is(":checked") == false) {
+						mcxDialog.alert("미동의시 사은품 지급이 되지 않습니다.");
+					}
+				});
 			}
 			
 			// 1.6 결제타입로드
@@ -957,6 +979,15 @@ var paymentInfoSet = function() {
 							
 							orgEntryNo = $("#orderForm input[name=entryNo]").val();
 							
+							if (orgEntryNo.substr(0,1) != "P") {
+								mcxDialog.alert("개인통관고유부호가 유효하지 않습니다.");
+								$('#orderForm input[name=entryNo]').focus();
+								
+								// 배송정보화면노출
+								deliveryAddrInfoDispYn("Y");
+								return false;
+							}
+							
 							if (orgEntryNo.length < 13) {
 								mcxDialog.alert("개인통관고유부호가 유효하지 않습니다.");
 								$('#orderForm input[name=entryNo]').focus();
@@ -979,7 +1010,7 @@ var paymentInfoSet = function() {
 					// 주문제작상품일때 주문제작정보동의
 					if (orderMadeYn == "Y") {
 						if (!$("#orderForm #chk-custom-agr1").is(":checked")) {
-							mcxDialog.alert("주문제작상품 정보 동의를 체크해주세요.");
+							mcxDialog.alert("주문제작상품에 대한 동의를 하지 않으실 경우 해당 상품을 쇼핑백에서 제외하신 후 다시 결제를 시도해주세요.");
 							
 							// 배송정보화면노출
 							deliveryAddrInfoDispYn("Y");
@@ -987,7 +1018,8 @@ var paymentInfoSet = function() {
 						}
 					}
 					
-					// 사은품지급할 경우 체크
+					// 사은품지급할 경우 체크 2020.04.29 사은품지급이 필수가 아닙니다.
+					/*
 					if ($("#orderAmtForm .freegiftValArr").text().length > 0) {
 						if (!$("#orderForm #chk-agree_gift").is(":checked")) {
 							mcxDialog.alert("사은품 지급 정보 동의를 체크해주세요.");
@@ -997,6 +1029,7 @@ var paymentInfoSet = function() {
 							return false;
 						}
 					}
+					*/
 					
 					// 결재수단
 					if (gagajf.isNull(paynormal)) {
@@ -1083,6 +1116,19 @@ var paymentInfoSet = function() {
 						delvFeeCdList.push(delvFeeCdData);
 					});
 					
+					// 2021.04.29 상픈품 체크박스 미동의시 사은품 미지급
+					var freegiftValArr 			= $("#orderAmtForm .freegiftValArr").text().split(",");
+					var freegiftSqArr 			= $("#orderAmtForm .freegiftSqArr").text().split(",");
+					var freegiftGoodsArr 		= $("#orderAmtForm .freegiftGoodsArr").text().split(",");
+					var freegiftUsePointArr 	= $("#orderAmtForm .freegiftUsePointArr").text().split(",");
+					
+					if (!$("#orderForm #chk-agree_gift").is(":checked") == false) {
+						freegiftValArr 			= "";
+						freegiftSqArr 			= "";
+						freegiftGoodsArr 		= "";
+						freegiftUsePointArr 	= "";
+					}
+					
 					// 주문데이타 생성
 					var orderData = {
 						"custNm"				: $("#orderAmtForm .custNm").text()
@@ -1108,10 +1154,10 @@ var paymentInfoSet = function() {
 						,"ordPhnno"				: $("#orderAmtForm .cellPhnno").text()
 						,"goodsNm"				: $("#orderAmtForm .goodsNm").eq(0).text()
 						,"ordGoodsQty"			: ordGoodsQty
-						,"freegiftValArr"		: $("#orderAmtForm .freegiftValArr").text().split(",")
-						,"freegiftSqArr"		: $("#orderAmtForm .freegiftSqArr").text().split(",")
-						,"freegiftGoodsArr"		: $("#orderAmtForm .freegiftGoodsArr").text().split(",")
-						,"freegiftUsePointArr"	: $("#orderAmtForm .freegiftUsePointArr").text().split(",")
+						,"freegiftValArr"		: freegiftValArr
+						,"freegiftSqArr"		: freegiftSqArr
+						,"freegiftGoodsArr"		: freegiftGoodsArr
+						,"freegiftUsePointArr"	: freegiftUsePointArr
 						,"giftMsg"				: ""
 					};
 					
@@ -1222,7 +1268,7 @@ var dcAmtInfoSet = function() {
 					success 	: function(result) {
 						$("#couponModifyPop").html(result);
 						
-						// 1.8.1 선포인트기능초기
+						// 1.8.1 선포인트기능초기
 						prePntDcAmtReset();
 						
 						// 1.8.2 쿠폰적용초기화(할인율최고)(상품,장바구니)
@@ -1905,7 +1951,8 @@ var prePntDcAmtReset = function() {
 	var rmPrePntAmt = 0;
 	
 	if ($("#orderForm input[name='rmPrePntAmt']") != null) {
-		parseInt($("#orderForm input[name='rmPrePntAmt']").val());
+		rmPrePntAmt = parseInt($("#orderForm input[name='rmPrePntAmt']").val());
+		$("#orderForm input[name='prePntDcAmt']").val(rmPrePntAmt);
 	}
 	
 	$("#orderForm input[name='prePntDcAmt']").val(rmPrePntAmt);
@@ -2099,7 +2146,7 @@ var custCpnSumAmtCal = function() {
 	});
 	
 	realOrdSumAmt = realOrdSumAmt + delvSumAmt;
-	
+		
 	$("#orderAmtForm .orgGoodsSumAmt").text(orgGoodsSumAmt);
 	$("#orderAmtForm .cpn1DcSumAmt").text(cpn1DcSumAmt);
 	$("#orderAmtForm .ordSumAmt").text(ordSumAmt);

+ 3 - 3
src/main/webapp/WEB-INF/views/web/order/OrderFreegiftInfoWeb.html

@@ -64,7 +64,7 @@
 						<th:block th:each="freegiftGoods, k : ${freegiftGoodsList}">
 							<th:block th:if="${freegift.freegiftSq} == ${freegiftGoods.freegiftSq}">
 								<div class="gift">
-									<input type="radio" th:name="'rdi-gift'+${i.count}" th:id="'rdi-gift'+${i.count}+${k.count}" class="chk_img freegiftRdo" th:value="${freegiftGoods.freegiftValSq}" th:usepoint="${freegiftGoods.usePoint}"  allYn="N"> 
+									<input type="radio" th:name="'rdi-gift'+${i.count}" th:id="'rdi-gift'+${i.count}+${k.count}" class="chk_img freegiftRdo" th:value="${freegiftGoods.freegiftValSq}" th:usepoint="${freegiftGoods.usePoint}" allYn="N" th:count="${i.count}">
 									<label th:for="'rdi-gift'+${i.count}+${k.count}"> 
 										<span class="thumb"><img src="http://ts5000.ipdisk.co.kr:89/images/pc/thumb/tmp_gift1.jpg" width="" alt=""></span>
 										<span class="name" th:text="${freegiftGoods.goodsNm}"></span> 
@@ -75,7 +75,7 @@
 							</th:block>
 						</th:block>
 						<div class="gift">
-							<input type="radio" th:name="'rdi-gift'+${i.count}" th:id="${i.count}+'0'" class="chk_img freegiftRdo" value="noSel" usepoint="0" allYn="N" checked> 
+							<input type="radio" th:name="'rdi-gift'+${i.count}" th:id="${i.count}+'0'" class="chk_img freegiftRdo" value="noSel" usepoint="0" allYn="N" count="100"> 
 							<label th:for="${i.count}+'0'">
 								<span class="thumb"><img src="/images/pc/thumb/tmp_gift_empty.jpg" width=""alt=""></span> 
 								<span class="name">사은품 수령안함</span>
@@ -90,7 +90,7 @@
 		<div class="form_field">
 			<div class="agree_gift">
 				<p>
-					<input id="chk-agree_gift" type="checkbox"><label for="chk-agree_gift"><span>동의합니다</span></label>
+					<input id="chk-agree_gift" type="checkbox" chedked><label for="chk-agree_gift"><span>동의합니다</span></label>
 				</p>
 				<p class="txt">
 					사은품 지금에 대한 내용을 확인하였으며, 이에 동의합니다.

+ 7 - 0
src/main/webapp/ux/style24_link.js

@@ -252,6 +252,7 @@ var cfnOpenIpinCertify = function (redirectUrl, custParams) {
  * @author : xodud1202
  */
 function cfnAddCart(cartList) {
+	gagajf.showProgressbar(true);
 	let jsonData = JSON.stringify(cartList);
 	
 	$.ajax( {
@@ -260,6 +261,10 @@ function cfnAddCart(cartList) {
 		data : jsonData,
 		contentType: 'application/json',
 		dataType : 'json',
+		error : function(e) {
+			mcxDialog.alert("장바구니 등록이 실패했습니다.");
+			gagajf.showProgressbar(false);
+		},
 		success : function(result) {
 			if(result.message == "SUCCESS") {
 				if(result.cartGb == "C") {
@@ -317,6 +322,8 @@ function cfnAddCart(cartList) {
 			} else {
 				mcxDialog.alert(result.message);
 			}
+			
+			gagajf.showProgressbar(false);
 		}
 	});
 }