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

Merge branch 'develop' into jsshin

jsshin пре 5 година
родитељ
комит
5d9e919d92
60 измењених фајлова са 1970 додато и 4554 уклоњено
  1. 12 1
      src/main/java/com/style24/front/biz/dao/TsfCouponDao.java
  2. 8 0
      src/main/java/com/style24/front/biz/dao/TsfDisplayDao.java
  3. 11 1
      src/main/java/com/style24/front/biz/dao/TsfPlanningDao.java
  4. 11 7
      src/main/java/com/style24/front/biz/service/TsfCartService.java
  5. 23 2
      src/main/java/com/style24/front/biz/service/TsfCouponService.java
  6. 13 0
      src/main/java/com/style24/front/biz/service/TsfDisplayService.java
  7. 18 5
      src/main/java/com/style24/front/biz/service/TsfGoodsService.java
  8. 44 9
      src/main/java/com/style24/front/biz/service/TsfOrderChangeService.java
  9. 2 2
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  10. 12 0
      src/main/java/com/style24/front/biz/service/TsfPlanningService.java
  11. 29 0
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  12. 2 1
      src/main/java/com/style24/front/biz/web/TsfGoodsController.java
  13. 37 33
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  14. 58 1
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  15. 57 15
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  16. 3 0
      src/main/java/com/style24/persistence/domain/Cart.java
  17. 4 0
      src/main/java/com/style24/persistence/domain/Contents.java
  18. 3 0
      src/main/java/com/style24/persistence/domain/GnbTab.java
  19. 2 2
      src/main/java/com/style24/persistence/domain/Goods.java
  20. 1 0
      src/main/java/com/style24/persistence/domain/GoodsStock.java
  21. 5 0
      src/main/java/com/style24/persistence/domain/Plan.java
  22. 48 39
      src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml
  23. 276 182
      src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml
  24. 42 4
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  25. 29 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  26. 9 7
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml
  27. 14 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  28. 34 62
      src/main/webapp/WEB-INF/views/mob/cart/CartChangeOptionPopupMob.html
  29. 51 0
      src/main/webapp/WEB-INF/views/mob/cart/CartListFormMob.html
  30. 272 176
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  31. 44 51
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailReviewFormMob.html
  32. 1 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsReviewFormMob.html
  33. 104 24
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  34. 90 0
      src/main/webapp/WEB-INF/views/mob/order/OrderGiftInfoMob.html
  35. 6 1
      src/main/webapp/WEB-INF/views/mob/order/OrderListInfoMob.html
  36. 13 12
      src/main/webapp/WEB-INF/views/web/cart/CartChangeOptionPopupWeb.html
  37. 0 15
      src/main/webapp/WEB-INF/views/web/cart/CartListFormWeb.html
  38. 43 2
      src/main/webapp/WEB-INF/views/web/common/fragments/BrandGnbWeb.html
  39. 104 14
      src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html
  40. 41 28
      src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html
  41. 65 7
      src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html
  42. 8 6
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html
  43. 5 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  44. 2 0
      src/main/webapp/WEB-INF/views/web/mypage/MypageCancelFormWeb.html
  45. 27 43
      src/main/webapp/WEB-INF/views/web/mypage/MypageCouponDetailFormWeb.html
  46. 29 15
      src/main/webapp/WEB-INF/views/web/mypage/MypageCouponFormWeb.html
  47. 3 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreCancelDetailFormWeb.html
  48. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreReturnDetailFormWeb.html
  49. 146 0
      src/main/webapp/WEB-INF/views/web/order/OrderAddPaymentWeb.html
  50. 0 259
      src/main/webapp/WEB-INF/views/web/order/OrderCompleteWeb_20210401.html
  51. 0 286
      src/main/webapp/WEB-INF/views/web/order/OrderDcAmtInfoWeb_20210318.html
  52. 0 1842
      src/main/webapp/WEB-INF/views/web/order/OrderFormWeb_20210317.html
  53. 0 1162
      src/main/webapp/WEB-INF/views/web/order/OrderFormWeb_20210318.html
  54. 0 197
      src/main/webapp/WEB-INF/views/web/order/OrderNoMemberWeb_20210330.html
  55. 14 3
      src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html
  56. 17 5
      src/main/webapp/biz/mypage.js
  57. 1 1
      src/main/webapp/ux/mo/css/common_m.css
  58. 22 15
      src/main/webapp/ux/mo/css/layout_m.css
  59. 53 9
      src/main/webapp/ux/mo/css/style24_m.css
  60. 1 1
      src/main/webapp/ux/style24_link.js

+ 12 - 1
src/main/java/com/style24/front/biz/dao/TsfCouponDao.java

@@ -94,7 +94,7 @@ public interface TsfCouponDao {
 	 * @author sowon
 	 * @since 2021. 03. 17
 	 */
-	Coupon getCouponDetailInfo(int cpnId);
+	Coupon getCouponDetailInfo(Coupon coupon);
 	
 	/**
 	 * 마이페이지 등급쿠폰 다운가능 쿠폰 정보 조회
@@ -127,4 +127,15 @@ public interface TsfCouponDao {
 	Coupon getCustGradePolicyCoupon(Coupon coupon);
 	
 	
+	/**
+	 * 기획전 쿠폰 디테일 정보
+	 * @param coupon - 쿠폰정보
+	 * @return Coupon
+	 * @author sowon
+	 * @since 2021. 03. 17
+	 */
+	Coupon getPlanCouponDetailInfo(Coupon coupon);
+	
+	
+	
 }

+ 8 - 0
src/main/java/com/style24/front/biz/dao/TsfDisplayDao.java

@@ -208,4 +208,12 @@ public interface TsfDisplayDao {
 	 */
 	String getBrandGroupDefaultCategoryYn(Integer brandGroupNo);
 
+	/**
+	 * GNB TAB 기획전배너 목록
+	 * @param contents - 컨텐츠 정보
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 4. 14
+	 */
+	Collection<Contents> getGnbTabBannerList(Contents contents);
 }

+ 11 - 1
src/main/java/com/style24/front/biz/dao/TsfPlanningDao.java

@@ -273,7 +273,7 @@ public interface TsfPlanningDao {
 	int getCustAnswerCount(Plan plan);
 	
 	/**
-	 * 설문조사 선착순 운트
+	 * 설문조사 선착순 운트
 	 *
 	 * @param poll
 	 * @return int
@@ -332,6 +332,16 @@ public interface TsfPlanningDao {
 	 */
 	int getAttendEntryCount(Plan plan);
 	
+	/**
+	 * 출석체크 혜택 리스트
+	 *
+	 * @param Plan
+	 * @return Collection<Plan>
+	 * @author sowon
+	 * @date 2021. 4. 14
+	 */
+	Collection<Plan> getAttendBenefitList(Plan plan);
+	
 	/**
 	 * 고객이 출석한 일 리스트
 	 *

+ 11 - 7
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -1029,13 +1029,6 @@ public class TsfCartService {
 			result.put("message", "품절입니다.");
 			return result;
 		}
-		
-		// 현재 장바구니 수량
-		/*int goodsCartCnt = cartDao.getHasGoodsCartCnt(param);
-
-		if (param.getGoodsQty() + goodsCartCnt > goods.getDayMaxOrdQty()) {
-			throw new IllegalArgumentException("1일 구매한도 수량이 초과되었습니다.");
-		}*/
 
 		// 구성 상품 재고 확인
 		for(int i = 0 ; i < param.getCartDtlSqArr().length ; i++) {
@@ -1055,6 +1048,17 @@ public class TsfCartService {
 			}
 		}
 
+		// 각 구성상품의 품절 여부 체크 후 최소, 최대 상품 수량 체크
+		if (goods.getMinOrdQty() > param.getGoodsQty()) {
+			result.put("status", "FAIL");
+			result.put("message", "해당 상품의 최소 주문 수량은 " + goods.getMinOrdQty() + "개 입니다.");
+			return result;
+		} else if (goods.getMaxOrdQty() < param.getGoodsQty()) {
+			result.put("status", "FAIL");
+			result.put("message", "해당 상품의 최대 주문 수량은 " + goods.getMaxOrdQty() + "개 입니다.");
+			return result;
+		}
+
 		StringBuilder sb = new StringBuilder();
 		if(TscConstants.GoodsType.SET.value().equals(param.getGoodsType())) {
 			// 장바구니 보유 CART_SQ 쿼리

+ 23 - 2
src/main/java/com/style24/front/biz/service/TsfCouponService.java

@@ -433,6 +433,8 @@ public class TsfCouponService {
 	 */
 	public Collection<Coupon> getMypageCouponList(Coupon coupon) {
 		coupon.setCustNo(TsfSession.getInfo().getCustNo());
+		coupon.setFrontGb(TsfSession.getFrontGb());
+		coupon.setSiteCd(TscConstants.Site.STYLE24.value());
 		return couponDao.getMypageCouponList(coupon);
 	}
 	
@@ -445,6 +447,8 @@ public class TsfCouponService {
 	 */
 	public Coupon getMypageCouponInfo(Coupon param) {
 		param.setCustNo(TsfSession.getInfo().getCustNo());
+		param.setFrontGb(TsfSession.getFrontGb());
+		param.setSiteCd(TscConstants.Site.STYLE24.value());
 		return couponDao.getMypageCouponInfo(param);
 	}
 	
@@ -455,8 +459,11 @@ public class TsfCouponService {
 	 * @author sowon
 	 * @since 2021. 03. 16
 	 */
-	public Coupon getCouponDetailInfo(int cpnId) {
-		return couponDao.getCouponDetailInfo(cpnId);
+	public Coupon getCouponDetailInfo(Coupon coupon) {
+		coupon.setCustNo(TsfSession.getInfo().getCustNo());
+		coupon.setFrontGb(TsfSession.getFrontGb());
+		coupon.setSiteCd(TscConstants.Site.STYLE24.value());
+		return couponDao.getCouponDetailInfo(coupon);
 	}
 	
 	
@@ -585,5 +592,19 @@ public class TsfCouponService {
 		}
 		return resultCnt;
 	}
+	
+	/**
+	 * 기획전 쿠폰 디테일 정보
+	 * @param cpnId
+	 * @return
+	 * @author sowon
+	 * @since 2021. 04. 14
+	 */
+	public Coupon getPlanCouponDetailInfo(Coupon coupon) {
+		coupon.setFrontGb(TsfSession.getFrontGb());
+		coupon.setSiteCd(TscConstants.Site.STYLE24.value());
+		return couponDao.getPlanCouponDetailInfo(coupon);
+	}
+	
 
 }

+ 13 - 0
src/main/java/com/style24/front/biz/service/TsfDisplayService.java

@@ -1,6 +1,7 @@
 package com.style24.front.biz.service;
 
 import java.util.Collection;
+import java.util.ArrayList;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.Cacheable;
@@ -476,4 +477,16 @@ public class TsfDisplayService {
 		return displayDao.getAllBrandList(brandGroup);
 	}
 
+	/**
+	 * GNB TAB 기획전배너 리스트
+	 * @param Contents
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 4. 14
+	 */
+	public Collection<Contents> getGnbTabBannerlist(Contents contenst){
+		Collection<Contents> contentsList = displayDao.getGnbTabBannerList(contenst);
+		return contentsList;
+	}
+
 }

+ 18 - 5
src/main/java/com/style24/front/biz/service/TsfGoodsService.java

@@ -451,18 +451,21 @@ public class TsfGoodsService {
 		boolean returnFlag = false;
 		//String[][] arrGoodsStoreList = null;	// 상품코드, 매장코드, 상품별 주문수량
 
+		log.info("[getGoodsSetStockQty] goodsStock = {}", goodsStock);
+		
 		int ableOrderCnt = 0;
 		for (String arrGoodsCd : goodsStock.getArrGoodsOption()) {	// [{goodsCd|optCd|qty},{goodsCd|optCd|qty}]
 
 			String[] goodsSizeInfo = arrGoodsCd.split("\\|");
-
+			log.info("[getGoodsSetStockQty] goodsSizeInfo = {}", goodsSizeInfo);
 			if (goodsSizeInfo.length == 3) {
+				
 				GoodsStock tmpStock = new GoodsStock();
 				tmpStock.setGoodsCd(goodsSizeInfo[0]);
 				tmpStock.setOptCd(goodsSizeInfo[1]);
 				int qty = Integer.parseInt(goodsSizeInfo[2]);	// 한번에 주문해야하는 상품수량
 				int stockByGoodsSize = goodsDao.getGoodsStockQty(tmpStock);
-
+				log.info("[getGoodsSetStockQty] stockByGoodsSize = {}", stockByGoodsSize);
 				if (stockByGoodsSize <= 0) {
 					returnFlag = true;
 					break;
@@ -477,7 +480,7 @@ public class TsfGoodsService {
 						}
 					}
 				}
-
+				log.info("[getGoodsSetStockQty] ableOrderCnt = {}", ableOrderCnt);
 			} else {
 				returnFlag = true;
 				break;
@@ -740,11 +743,15 @@ public class TsfGoodsService {
 
 		Collection<Goods> goodsList = new ArrayList<>();
 
-		if (cate.getContentsLoc().equals("SCM002") || cate.getContentsLoc().equals("SBM007") || cate.getContentsLoc().equals("SMM003")) { // 신상품인 경우
+		if (cate.getContentsLoc().equals("SCM002") || cate.getContentsLoc().equals("SBM007") || cate.getContentsLoc().equals("SMM003") || cate.getContentsLoc().equals("SBM003")) { // 신상품인 경우
+			int maxRow = 20;
+			if(cate.getContentsLoc().equals("SBM003")){
+				maxRow = 3;
+			}
 			goodsList = goodsDao.getContentsCategoryGoodsList(cate);
 
 			// 조회된 데이터가 없거나 건수가 20개 미만이면 신규상품(=정상상품) 조회
-			if (goodsList == null || goodsList.size() < 20) {
+			if (goodsList == null || goodsList.size() < maxRow) {
 				if (goodsList != null) {
 					// 제외상품 설정
 					StringBuilder sb = new StringBuilder();
@@ -755,6 +762,12 @@ public class TsfGoodsService {
 						cate.setExceptGoodsArr(sb.toString().substring(0, sb.toString().length() - 1).split(","));
 					}
 				}
+				maxRow = maxRow - goodsList.size();
+				cate.setMaxRow(maxRow);
+				if(cate.getContentsLoc().equals("SBM003")){
+					cate.setCate1No(null);
+				}
+
 				goodsList.addAll(goodsDao.getContentsCategoryNewGoodsList(cate));
 			}
 		} else if (cate.getContentsLoc().equals("SCM003") || cate.getContentsLoc().equals("SBM008")) { // 베스트상품인 경우

+ 44 - 9
src/main/java/com/style24/front/biz/service/TsfOrderChangeService.java

@@ -163,35 +163,54 @@ public class TsfOrderChangeService {
 		Collection<Order> cnclRtnList = orderChangeDao.getRefundPreInfo(orderChange);
 		Order cnclRtn = cnclRtnList.iterator().next();
 
-		// 전체 취소여부 설정
+		// 전체 및 마지막 취소여부 설정
+		String delvFeeCd = "";
 		String allCanYn = "Y";
+		List<String> delvFeeCdList = new ArrayList<>();
 		for (Order order : cnclRtnList) {
 			int index = ordDtlNoList.indexOf(order.getOrdDtlNo());
-			if ("Y".equals(allCanYn) && (index < 0 || cnclRtnReqQtyArr[index] != order.getOrdQty())) {
+			int ordQty = order.getOrdQty();
+			int cnclRtnQty = order.getCnclRtnQty();
+
+			// 전체 취소 여부 설정
+			if ("Y".equals(allCanYn) && (index < 0 || cnclRtnReqQtyArr[index] != ordQty)) {
 				allCanYn = "N";
 			}
+
+			// 마지막 취소 여부 설정
+			if ((index < 0 || cnclRtnReqQtyArr[index] != (ordQty - cnclRtnQty)) && !delvFeeCd.equals(order.getDelvFeeCd())) {
+				delvFeeCdList.add(order.getDelvFeeCd());
+				delvFeeCd = order.getDelvFeeCd();
+			}
 		}
 
 		// 무통장입금 전 전체 취소여부 설정
 		String allCanYnBeforePayment = "N";
-		if ("Y".equals(allCanYn) && TscConstants.PayMeans.BANK_DEPOSIT.value().equals(cnclRtn.getPayMeans()) && TscConstants.PaymentStat.PAYMENT_WAIT.value().equals(cnclRtn.getPayStat())) {
+		if ("Y".equals(allCanYnBeforePayment) && TscConstants.PayMeans.BANK_DEPOSIT.value().equals(cnclRtn.getPayMeans()) && TscConstants.PaymentStat.PAYMENT_WAIT.value().equals(cnclRtn.getPayStat())) {
 			allCanYnBeforePayment = "Y";
 		}
-		
+
 		// 전체 취소여부 및 취소/반품 수량 설정
 		for (Order order : cnclRtnList) {
-			// 변경 수량 설정
 			int index = ordDtlNoList.indexOf(order.getOrdDtlNo());
 			if (index >= 0) {
+				// 마지막 취소 여부 설정
+				if (delvFeeCdList.contains(order.getDelvFeeCd())) {
+					order.setLastCanYn("N");
+				} else {
+					order.setLastCanYn("Y");
+				}
+
+				// 변경 수량 설정
 				order.setOrdCanChgQty(cnclRtnReqQtyArr[index]);
-				order.setAllCanYn(allCanYn);
+
 				cnclReqList.add(order);
 			}
 		}
 		
-		
-		result.setString("allCanYn", allCanYnBeforePayment);
-		result.set("cnclReqList", cnclReqList);
+		result.setString("allCanYn", allCanYn);									// 전체 취소 여부
+		result.setString("allCanYnBeforePayment", allCanYnBeforePayment);		// 무통장입금전 전체 취소 여부
+		result.set("cnclReqList", cnclReqList);									// 취소신청목록
 
 		return result;
 	}
@@ -329,6 +348,7 @@ public class TsfOrderChangeService {
 	public GagaMap getCreCancelDetailInfo(OrderChange orderChange) {
 		GagaMap map = new GagaMap();
 		Collection<OrderChange> result = new ArrayList<>();
+		String refundYn = "N";
 
 		for (OrderChange tmpOrderChange : orderChangeDao.getCreCancelDetailInfo(orderChange)) {
 			// 세트상품 옵션별 배열로 담기
@@ -345,6 +365,12 @@ public class TsfOrderChangeService {
 				tmpOrderChange.setOptCd2Arr(arr4);
 			}
 
+			// 취소 전표 확인 용 환불 여부 설정
+			String chgStat = tmpOrderChange.getChgStat();
+			if ("N".equals(refundYn) && (TscConstants.OrderChangeStat.PAYMENT_BEFORE_CANCEL.value().equals(chgStat) || TscConstants.OrderChangeStat.PAYMENT_AFTER_CANCEL.value().equals(chgStat))) {
+				refundYn = "Y";
+			}
+
 			result.add(tmpOrderChange);
 		}
 
@@ -353,6 +379,7 @@ public class TsfOrderChangeService {
 			oneData = result.iterator().next();
 		}
 
+		map.set("refundYn", refundYn);
 		map.set("oneData", oneData);
 		map.set("cancelDetailList", result);
 
@@ -370,6 +397,7 @@ public class TsfOrderChangeService {
 	public GagaMap getCreReturnDetailInfo(OrderChange orderChange) {
 		GagaMap map = new GagaMap();
 		Collection<OrderChange> result = new ArrayList<>();
+		String refundYn = "N";
 
 		for (OrderChange tmpOrderChange : orderChangeDao.getCreReturnDetailInfo(orderChange)) {
 			// 세트상품 옵션별 배열로 담기
@@ -386,6 +414,12 @@ public class TsfOrderChangeService {
 				tmpOrderChange.setOptCd2Arr(arr4);
 			}
 
+			// 취소 전표 확인 용 환불 여부 설정
+			String chgStat = tmpOrderChange.getChgStat();
+			if ("N".equals(refundYn) && TscConstants.OrderChangeStat.RETURN_COMPLETE.value().equals(chgStat)) {
+				refundYn = "Y";
+			}
+
 			result.add(tmpOrderChange);
 		}
 
@@ -394,6 +428,7 @@ public class TsfOrderChangeService {
 			oneData = result.iterator().next();
 		}
 
+		map.set("refundYn", refundYn);
 		map.set("oneData", oneData);
 		map.set("returnDetailList", result);
 

+ 2 - 2
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -22,7 +22,6 @@ import com.style24.front.biz.dao.TsfOrderDao;
 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.GoodsStock;
 import com.style24.persistence.domain.KakaoPay;
 import com.style24.persistence.domain.NaverPay;
 import com.style24.persistence.domain.Order;
@@ -333,7 +332,8 @@ public class TsfOrderService {
 			// TB_PAYMENT 등록. 실패시 PG 환불.
 			if(coreOrderDao.insertPayment(result) < 1) {
 				if(TscConstants.PgGb.KCP.value().equals(param.getPgGb()) || TscConstants.PgGb.PAYCO.value().equals(param.getPgGb())) {
-					coreKcpService.kcpPayRollBack(result, request);
+					result.setIpAddress(request.getRemoteAddr());
+					coreKcpService.kcpPayRollBack(result);
 				} else if (TscConstants.PgGb.KAKAO.value().equals(param.getPgGb())) {
 					coreKakaoPayService.kakaoPayRollBack(param);
 				} else if (TscConstants.PgGb.NAVER.value().equals(param.getPgGb())) {

+ 12 - 0
src/main/java/com/style24/front/biz/service/TsfPlanningService.java

@@ -516,6 +516,18 @@ public class TsfPlanningService {
 		plan.setCustNo(TsfSession.getInfo().getCustNo());
 		return planningDao.getCustAttendEntryList(plan);
 	}
+	
+	/**
+	 * 출석체크 혜택 리스트
+	 *
+	 * @param Plan
+	 * @return Collection<Plan>
+	 * @author sowon
+	 * @date 2021. 4. 14
+	 */
+	public Collection<Plan> getAttendBenefitList(Plan plan){
+		return planningDao.getAttendBenefitList(plan);
+	}
 
 	/**
 	 * 기획전/이벤트 댓글

+ 29 - 0
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -664,4 +664,33 @@ public class TsfDisplayController extends TsfBaseController {
 		return result;
 	}
 
+	/**
+	 * GNB TAB 기획전배너 리스트
+	 * @param Contents
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 4. 14
+	 */
+	@GetMapping("/gnb/tab/banner/list")
+	@ResponseBody
+	public Collection<Contents> getGnbTabBannerlist(Contents contents) {
+		contents.setContentsLoc("STAB003");
+		return displayService.getGnbTabBannerlist(contents);
+	}
+
+	/**
+	 * 브랜드 GNB 탭 추천상풍 목록
+	 * @param
+	 * @return
+	 * @throws Exception
+	 * @author bin2107
+	 * @since 2021. 4. 15
+	 */
+	@GetMapping("/brand/gnb/tab/recommend/goods/list")
+	@ResponseBody
+	public Collection<Goods> getBrandGnbTabRecommendGoodsList(Cate4Srch cate4Srch) {
+		Collection<Goods> goodsList = goodsService.getContentsCategoryGoodsList(cate4Srch);
+		return goodsList;
+	}
+
 }

+ 2 - 1
src/main/java/com/style24/front/biz/web/TsfGoodsController.java

@@ -1012,8 +1012,9 @@ public class TsfGoodsController extends TsfBaseController {
 	@ResponseBody
 	public GagaMap getGoodsOption2List(@RequestBody Goods goods) {
 
-		log.info("goods = {}", goods);
+		//log.info("goods = {}", goods);
 		GagaMap result = new GagaMap();
+		if (StringUtils.isEmpty(goods.getMastrGoodsCd())) goods.setMastrGoodsCd(goods.getGoodsCd());
 		result.set("dataList", goodsService.getGoodsOption2List(goods));
 
 		return result;

+ 37 - 33
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -17,6 +17,9 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
+import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.rest.server.GagaResponse;
+import com.gagaframework.web.rest.server.GagaResponseStatus;
 import com.style24.core.biz.service.TscCouponService;
 import com.style24.core.biz.service.TscCustomerService;
 import com.style24.core.biz.service.TscKakaoPayService;
@@ -58,10 +61,6 @@ import com.style24.persistence.domain.WishList;
 
 import lombok.extern.slf4j.Slf4j;
 
-import com.gagaframework.web.parameter.GagaMap;
-import com.gagaframework.web.rest.server.GagaResponse;
-import com.gagaframework.web.rest.server.GagaResponseStatus;
-
 /**
  * 마이페이지 Controller
  * 
@@ -735,40 +734,38 @@ public class TsfMypageController extends TsfBaseController {
 		GagaMap refundPreInfo = orderChangeService.getRefundPreInfo(orderChange);
 		List<Order> cnclReqList = (List<Order>)refundPreInfo.get("cnclReqList");
 		String allCanYn = refundPreInfo.getString("allCanYn");
+		String allCanYnBeforePayment = refundPreInfo.getString("allCanYnBeforePayment");
 
-		// 2. 환불금액계산
+		// 3. 환불금액계산
 		// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
 		GagaMap result = coreOrderRefundService.cnclRtnRefundAmt(cnclReqList);
 
-		// 무통장입금전 전체취소 여부
-
-		// 3. 주문변경 기본정보 설정
+		// 4. 주문변경 기본정보 설정
 		result.set("ordNo", orderChange.getOrdNo());				// 주문번호
 		result.set("ordChgSq", orderChange.getOrdChgSq());			// 주문변경번호
-		result.set("chgReason", orderChange.getChgReason());			// 변경사유
+		result.set("chgReason", orderChange.getChgReason());		// 변경사유
 		result.set("chgMemo", orderChange.getChgMemo());			// 변경메모
 
-		result.set("accountNo", orderChange.getAccountNo());			// 환불계좌번호
-		result.set("accountNm", orderChange.getAccountNm());			// 환불계좌예금주명
+		result.set("accountNo", orderChange.getAccountNo());		// 환불계좌번호
+		result.set("accountNm", orderChange.getAccountNm());		// 환불계좌예금주명
 		result.set("bankCd", orderChange.getBankCd());				// 환불계좌은행코드
 
-		result.set("allCanYn", allCanYn);							// 무통장입금전 전체취소 여부
-		result.set("isCustomer", orderChange.getIsCustomer());			// 변경사유 (고객, 회사)
+		result.set("allCanYnBeforePayment", allCanYnBeforePayment);	// 무통장입금전 전체취소 여부
+		result.set("isCustomer", orderChange.getIsCustomer());		// 변경사유 (고객, 회사)
 
-		// 4. 주문변경 회수지정보 추가
-		result.set("chgerNm", orderChange.getChgerNm());			// 변경자명
-		result.set("chgerEmail", orderChange.getChgerEmail());			// 변경자이메일주소
-		result.set("chgerPhnno", orderChange.getChgerPhnno());			// 변경자핸드폰번호
-		result.set("chgerTelno", orderChange.getChgerTelno());			// 변경자전화번호
+		// 5. 주문변경 회수지정보 추가
+		// result.set("chgerNm", orderChange.getChgerNm());			// 변경자명
+		// result.set("chgerEmail", orderChange.getChgerEmail());		// 변경자이메일주소
+		// result.set("chgerPhnno", orderChange.getChgerPhnno());		// 변경자핸드폰번호
+		// result.set("chgerTelno", orderChange.getChgerTelno());		// 변경자전화번호
 
 		result.set("reqGbn", orderChange.getReqGbn());				// 신청구분
 
-		// 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL)
+		// 6. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL)
 		coreOrderChangeService.cnclComplete(result, custNo);
 
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
 		result.set("message", message.getMessage("CANCEL_0001"));
-		// result.set("message", message.getMessage("SUCC_0004"));
 
 		return result;
 	}
@@ -1303,6 +1300,22 @@ public class TsfMypageController extends TsfBaseController {
 
 		return mav;
 	}
+	
+	/**
+	 * 퀵메뉴 보유한 쿠폰리스트
+	 * @return
+	 * @author sowon
+	 * @since 2021. 4. 14
+	 */
+	@GetMapping("/quick/own/coupon/list")
+	@ResponseBody
+	public Collection<Coupon> getQuickOwnCouponList() {
+		Coupon coupon = new Coupon();
+		Collection<Coupon> ownCouponList = new ArrayList<>();
+		coupon.setQuickYn("Y");
+		ownCouponList  = couponService.getMypageCouponList(coupon);
+		return ownCouponList;
+	}
 
 	/**
 	 * 마이페이지 쿠폰 상세보기 팝업
@@ -1311,22 +1324,13 @@ public class TsfMypageController extends TsfBaseController {
 	 * @author sowon	
 	 * @since 2021. 03. 17
 	 */
-	@GetMapping(value = "/coupon/detailPop")
-	public ModelAndView mypageCouponDetailPop(@RequestParam(value = "cpnId") int cpnId) {
+	@PostMapping(value = "/coupon/detailPop")
+	public ModelAndView mypageCouponDetailPop(@RequestBody Coupon coupon) {
 		ModelAndView mav = new ModelAndView();
 
 		// 쿠폰 - 기본정보
-		mav.addObject("couponDetailInfo", couponService.getCouponDetailInfo(cpnId));
-		// 쿠폰적용대상 - 공급업체 조회
-		mav.addObject("cpnDtlRefvalSupplyCompList", coreCouponService.getCouponRefvalSupplyCompList(cpnId));
-		// 쿠폰적용대상 - 적용상품 조회
-		mav.addObject("cpnDtlRefvalApplyGoodsList", coreCouponService.getCouponRefvalGoodsList(cpnId, "G260_10"));
-		// 쿠폰적용대상 - 카테고리 조회
-		mav.addObject("cpnDtlRefvalCateList", coreCouponService.getCouponRefvalCategoryList(cpnId));
-		// 쿠폰적용대상 - 브랜드 조회
-		mav.addObject("cpnDtlRefvalBrandList", coreCouponService.getCouponRefvalBrandList(cpnId));
-		// 쿠폰적용대상 - 제외상품 조회
-		mav.addObject("cpnDtlRefvalExceptGoodsList", coreCouponService.getCouponRefvalGoodsList(cpnId, "G260_14"));
+		mav.addObject("couponDetailInfo", couponService.getCouponDetailInfo(coupon));
+		
 		mav.setViewName(super.getDeviceViewName("mypage/MypageCouponDetailForm"));
 		return mav;
 	}

+ 58 - 1
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -88,6 +88,14 @@ public class TsfOrderController extends TsfBaseController {
 			return mav;
 		}
 		
+		// 2. 선물하기주문 체크 후 비 로그인 상태면 장바구니로 강제 이동
+		if (coreOrderService.getGiftOrderCheck(order) > 0) {
+			if (TsfSession.isLogin() == false) {
+				mav.setViewName("redirect:/cart/list/form");					// 장바구니화면이동
+				return mav;
+			}
+		}
+		
 		mav.addObject("order" 			, order);								// 주문정보
 		mav.addObject("isLogin"			, TsfSession.isLogin());				// 로그인여부
 		mav.addObject("sEncData"		, sEncData);
@@ -147,8 +155,28 @@ public class TsfOrderController extends TsfBaseController {
 			mav.setViewName("redirect:/cart/list/form");		// 장바구니화면이동
 			return mav;
 		}
+		
+		// 선물받기여부
+		String orderGiftYn = "N";
+		
+		// 1.3. 선물하기주문 체크 후 비 로그인 상태면 장바구니로 강제 이동
+		if (coreOrderService.getGiftOrderCheck(order) > 0) {
+			// 비 로그인 상태면 장바구니로 강제 이동
+			if (TsfSession.isLogin() == false) {
+				mav.setViewName("redirect:/cart/list/form");					// 장바구니화면이동
+				return mav;
+			}
+			// 선물받기여부
+			orderGiftYn = "Y";
+			
+			// 선물하기일때 PC 로 접근하면 
+			if ("P".equals(TsfSession.getFrontGb())) {
+				mav.setViewName("redirect:/cart/list/form");					// 장바구니화면이동
+				return mav;
+			}
+		}
 
-		// 1.3 로그인체크 후 custNo 설정
+		// 1.4 로그인체크 후 custNo 설정
 		if (TsfSession.isLogin()) {
 			order.setCustNo(TsfSession.getInfo().getCustNo());
 		} else {
@@ -175,8 +203,15 @@ public class TsfOrderController extends TsfBaseController {
 		// 2.1 총알배송여부가 null 이면 Y로 설정
 		if (order.getShotDelvUseYn() == null || "".equals(order.getShotDelvUseYn())) {
 			order.setShotDelvUseYn("Y");
+		} 
+		
+		// 2.2 선물받기 Y 이면 총알배송 불가
+		if ("Y".equals(orderGiftYn)) {
+			order.setShotDelvUseYn("N");
 		}
+		
 		order.setShotDelvYn(order.getShotDelvUseYn());
+		order.setOrderGiftYn(orderGiftYn);
 
 		// 3. 장바구니상품시퀀스 상품목록조회
 		// 3.1 즉시할인, 다다익선 할인금액 정보 적용 상품 정보
@@ -227,6 +262,9 @@ public class TsfOrderController extends TsfBaseController {
 		// 4.5 로그인여부
 		mav.addObject("isLogin"				, TsfSession.isLogin());					// 로그인여부
 		
+		// 4.6 선물받기여부
+		mav.addObject("orderGiftYn"			, orderGiftYn);								// 선물받기여부
+
 		mav.setViewName(super.getDeviceViewName("order/OrderForm"));
 		
 		return mav;
@@ -408,6 +446,25 @@ public class TsfOrderController extends TsfBaseController {
 		return mav;
 	}
 	
+	/**
+	 * 선물받기여부정보로드
+	 *
+	 * @param
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 04. 01
+	 */
+	@ResponseBody
+	@PostMapping("/orderGiftInfo")
+	public ModelAndView orderGiftInfo(@RequestBody Order order) {
+		ModelAndView mav = new ModelAndView();
+		mav.addObject("order"				, order);									// 파라미터
+		mav.addObject("isLogin"				, TsfSession.isLogin());					// 로그인여부
+		mav.setViewName(super.getDeviceViewName("order/OrderGiftInfo"));
+		
+		return mav;
+	}
+	
 	/**
 	 * 주문내역정보조회
 	 *

+ 57 - 15
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -20,6 +20,7 @@ import org.springframework.web.servlet.ModelAndView;
 
 import com.style24.core.biz.service.TscCouponService;
 import com.style24.core.biz.service.TscCustomerService;
+import com.style24.core.biz.service.TscPointService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.front.biz.service.TsfCouponService;
@@ -32,6 +33,7 @@ import com.style24.persistence.domain.CustDeliveryAddr;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.Plan;
+import com.style24.persistence.domain.Point;
 import com.style24.persistence.domain.Poll;
 import com.style24.persistence.domain.Review;
 import com.style24.persistence.domain.WishList;
@@ -72,6 +74,9 @@ public class TsfPlanningController extends TsfBaseController {
 
 	@Autowired
 	private TsfDisplayService displayService;
+	
+	@Autowired
+	private TscPointService corePointService;
 
 	/**
 	 * 기획전 메인 화면
@@ -238,6 +243,24 @@ public class TsfPlanningController extends TsfBaseController {
 		return mav;
 	}
 	
+	/**
+	 * 기획전 쿠폰 상세보기 팝업
+	 *
+	 * @return
+	 * @author sowon	
+	 * @since 2021. 04. 14
+	 */
+	@PostMapping(value = "/coupon/detailPop")
+	public ModelAndView planningCouponDetailPop(@RequestBody Coupon coupon) {
+		ModelAndView mav = new ModelAndView();
+
+		// 쿠폰 - 기본정보
+		mav.addObject("couponDetailInfo", couponService.getPlanCouponDetailInfo(coupon));
+		
+		mav.setViewName(super.getDeviceViewName("mypage/MypageCouponDetailForm"));
+		return mav;
+	}
+	
 	/**
 	 * 기획전/이벤트 댓글 리스트
 	 *
@@ -303,21 +326,11 @@ public class TsfPlanningController extends TsfBaseController {
 	 * @since 2021. 04. 01
 	 */
 	@GetMapping(value = "/coupon/detail")
-	public ModelAndView mypageCouponDetailPop(@RequestParam(value = "cpnId") int cpnId) {
+	public ModelAndView mypageCouponDetailPop(@RequestBody Coupon coupon) {
 		ModelAndView mav = new ModelAndView();
 
 		// 쿠폰 - 기본정보
-		mav.addObject("couponDetailInfo", couponService.getCouponDetailInfo(cpnId));
-		// 쿠폰적용대상 - 공급업체 조회
-		mav.addObject("cpnDtlRefvalSupplyCompList", coreCouponService.getCouponRefvalSupplyCompList(cpnId));
-		// 쿠폰적용대상 - 적용상품 조회
-		mav.addObject("cpnDtlRefvalApplyGoodsList", coreCouponService.getCouponRefvalGoodsList(cpnId, "G260_10"));
-		// 쿠폰적용대상 - 카테고리 조회
-		mav.addObject("cpnDtlRefvalCateList", coreCouponService.getCouponRefvalCategoryList(cpnId));
-		// 쿠폰적용대상 - 브랜드 조회
-		mav.addObject("cpnDtlRefvalBrandList", coreCouponService.getCouponRefvalBrandList(cpnId));
-		// 쿠폰적용대상 - 제외상품 조회
-		mav.addObject("cpnDtlRefvalExceptGoodsList", coreCouponService.getCouponRefvalGoodsList(cpnId, "G260_14"));
+		mav.addObject("couponDetailInfo", couponService.getCouponDetailInfo(coupon));
 		mav.setViewName(super.getDeviceViewName("planning/PlanningCouponDetailForm"));
 		return mav;
 	}
@@ -577,17 +590,46 @@ public class TsfPlanningController extends TsfBaseController {
 	@ResponseBody
 	public GagaMap planningAttendEntry(@RequestBody Plan plan) throws Exception {
 		GagaMap result = new GagaMap();
+		plan.setEntryAllYn("N");
 		int count = planningService.getAttendEntryCount(plan);
 		if (count > 0) {
 			result.set("msg", "이미 출석체크 되었습니다.");
 		}else {
 			planningService.saveAttendEntry(plan);
-			result.set("msg", "출석체크 되었습니다.");
-			result.set("custAttendList",planningService.getCustAttendEntryList(plan));
 			
+			// 총 출석일 수 구해보장.. 
+			Collection<Plan> benefitList = planningService.getAttendBenefitList(plan);
+			plan.setEntryAllYn("Y");
+			count = planningService.getAttendEntryCount(plan);
+			for (Plan tPlan : benefitList) {
+				if (tPlan.getBasDays() == count) {
+					System.out.println("여기들어오니?1");
+					// 지급 방식이 포인트일 경우
+					if (tPlan.getBenefitGb().equals("P")) {
+						Point point = new Point();
+						int pointAmt = tPlan.getPntAmt();
+						point.setRegNo(TsfSession.getInfo().getCustNo());
+						point.setUpdNo(TsfSession.getInfo().getCustNo());
+						point.setCustNo(TsfSession.getInfo().getCustNo());
+						point.setPntUploadStat(TscConstants.PntUploadStat.APPLY_COMPLETE.value());
+						point.setGvPntAmt(pointAmt);
+						point.setRmPntAmt(pointAmt);
+						point.setOccurGb("G069_37"); //출석체크 이벤트
+						corePointService.saveCustomerPoint(point);
+						System.out.println("여기들어오니?2");
+						String msg =  "축하합니다." + pointAmt + "포인트가 지급 되었습니다!";
+						result.set("msg", msg);
+						break;
+					}
+
+				}else {
+					result.set("msg", "출석체크 되었습니다.");
+					break;
+				}
+			}
 		}
 		
+		result.set("custAttendList",planningService.getCustAttendEntryList(plan));
 		return result;
-
 	}
 }

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

@@ -59,6 +59,8 @@ public class Cart extends TscBaseDomain {
 	private int currStockQty;		// 기준 재고
 	private int qty;				// 구성 상품 기준 재고 수량
 	private int currPrice;			// 상품판매가
+	private int minOrdQty;			// 최소주문가능수량
+	private int addPrice;			// 상품 옵션가
 	private String goodsType;		// 상품 타입
 	private String compsGoodsCd;	// 세트 구성상품 코드
 	private String itemCdSql;		// 상품 조회 쿼리문
@@ -88,6 +90,7 @@ public class Cart extends TscBaseDomain {
 	private String itemOpts;	// 단품옵션
 	private Integer updCartSq;	// 업데이트할 장바구니번호
 	private Integer delCartSq;	// 삭제할 장바구니번호(0이면 삭제할 장바구니번호 없음)
+	private int colorNo;		// 컬러 번호
 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private Cart[] cartGoodsList;		// 장바구니 단품코드

+ 4 - 0
src/main/java/com/style24/persistence/domain/Contents.java

@@ -66,6 +66,10 @@ public class Contents extends TscBaseDomain {
 	private String cateGb;
 	private String cateNm;
 
+	// 몰메인 STAB003에서 사용
+	private String gnbTabTitle;		// gnbTab 기획전배너영역 타이틀
+	private String bannerGb;		// admin:수동설정, plan:기획전
+
 	private String pageGb;	// 호출페이지 구분(MALL:몰메인, BEST:베스트메인)
 
 	//private String contentsTitle;		// 메인 타이틀(md가 설정한)

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

@@ -4,6 +4,8 @@ import com.style24.persistence.TscBaseDomain;
 
 import lombok.Data;
 
+import java.util.Collection;
+
 /**
  * 컨텐츠 Domain
  * 
@@ -29,4 +31,5 @@ public class GnbTab extends TscBaseDomain {
 	private String viewDt;			// 미리보기일시
 	private String preview;			// 미리보기여부
 
+	private String gtabBannerTitle;
 }

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

@@ -16,8 +16,6 @@ import lombok.Data;
 public class Goods extends TscBaseDomain {
 	// 상품 정보
 	private String goodsCd;		//상품코드
-	//private String productNo;		// ProductNo(WMS)
-	//private String productCode;		// ProductCode(WMS)
 	private String brandCd;		//브랜드코드
 	private String itemkindCd;		//품목코드
 	private String goodsNm;		//상품명
@@ -151,6 +149,7 @@ public class Goods extends TscBaseDomain {
 	private Integer reviewSq;
 	private String goodsStatNm;
 	private String regDtMonth;
+	
 
 	private String sizeGb;		// 사이즈구분(T:상의, B:하의, S:신발)
 	private String optionSoldoutSkip; 	//품절제외 Y, N
@@ -159,6 +158,7 @@ public class Goods extends TscBaseDomain {
 
 	private String skuModelNo;		// SKUModelNo(WMS)
 	private String compsGoodsCd;	// 세트 구성품 상품번호
+	private String mastrGoodsCd; 	
 	private String optCd;			// 옵션코드
 	private String optCd1;			// 옵션코드1
 	private String optCd2;			// 옵션코드2

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

@@ -37,6 +37,7 @@ public class GoodsStock extends TscBaseDomain {
 	private String goodsStat;		// 상품상태
 	private int minOrdQty;
 	private int maxOrdQty;
+	private int currPrice;
 	
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] arrGoodsOption;				

+ 5 - 0
src/main/java/com/style24/persistence/domain/Plan.java

@@ -270,6 +270,11 @@ public class Plan extends TscBaseDomain {
 	private Integer planEntrySq;		//참여일련번호
 	private String orgFileNm;
 	private String sysFileNm;
+	private String entryAllYn;
+	private int basDays;
+	private String benefitGb;
+	private int pntAmt;
+	private Integer cpnId;
 	
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] multiReplyOrgFile;			//댓글 이미지

+ 48 - 39
src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml

@@ -495,17 +495,17 @@
 			 , Z.DELV_FEE_CD
 		     , Z.MIN_ORD_AMT
 		     , Z.DELV_FEE
-			 , Z.CART_DELV_FEE_CD
+		     , Z.CART_DELV_FEE_CD
 		     , CASE WHEN Z.ORD_CAN_YN = 'Y' AND Z.CUST_TODAY_ORD = 0 AND Z.NOCUST_TODAY_ORD = 0 THEN 'Y' ELSE 'N' END AS ORD_CAN_YN
 		     , Z.ORD_CAN_QTY
 		     , Z.MIN_ORD_QTY
 		     , Z.MAX_ORD_QTY
-			 , (Z.CURR_PRICE + SUM(Z.OPT_ADD_PRICE)) * Z.GOODS_QTY AS CURR_PRICE
-			 , (Z.LIST_PRICE + SUM(Z.OPT_ADD_PRICE)) * Z.GOODS_QTY AS LIST_PRICE
-			 , Z.SOLDOUT_YN
-			 , CASE WHEN #{frontGb} = 'P' THEN (Z.CURR_PRICE * Z.GOODS_QTY) * (Z.PNT_PRATE/100)
-					ELSE (Z.CURR_PRICE * Z.GOODS_QTY) * (Z.PNT_MRATE/100) END AS SAVE_PNT_AMT
-			 , SYS_IMG_NM
+		     , (Z.CURR_PRICE + SUM(Z.OPT_ADD_PRICE)) * Z.GOODS_QTY AS CURR_PRICE
+		     , (Z.LIST_PRICE + SUM(Z.OPT_ADD_PRICE)) * Z.GOODS_QTY AS LIST_PRICE
+		     , Z.SOLDOUT_YN
+		     , CASE WHEN #{frontGb} = 'P' THEN (Z.CURR_PRICE * Z.GOODS_QTY) * (Z.PNT_PRATE/100)
+		            ELSE (Z.CURR_PRICE * Z.GOODS_QTY) * (Z.PNT_MRATE/100) END AS SAVE_PNT_AMT
+		     , SYS_IMG_NM
 		FROM   (SELECT C.CART_SQ
 		             , C.GOODS_CD
 		             , C.GOODS_QTY
@@ -584,7 +584,7 @@
 		                             , MAX(A.ORD_CAN_YN) AS ORD_CAN_YN
 		                             , MIN(A.ORD_CAN_QTY) AS ORD_CAN_QTY
 		                        FROM   (SELECT C.CART_SQ
-		                                     , CASE WHEN VS.SOLDOUT_YN = 'N' AND VS.CURR_STOCK_QTY >= C.GOODS_QTY * GC.QTY AND COMP_GOODS.GOODS_STAT != 'G008_70' AND G.GOODS_STAT != 'G008_70' THEN 'N'
+		                                     , CASE WHEN VS.SOLDOUT_YN = 'N' AND VS.CURR_STOCK_QTY >= GC.QTY AND COMP_GOODS.GOODS_STAT != 'G008_70' AND G.GOODS_STAT != 'G008_70' THEN 'N'
 		                                            ELSE 'Y' END AS SOLDOUT_YN
 		                                     , CASE WHEN G.GOODS_STAT != 'G008_90' AND G.GOODS_STAT != 'G008_70' AND COMP_GOODS.GOODS_STAT != 'G008_70' AND COMP_GOODS.GOODS_STAT != 'G008_90' THEN 'N'
 		                                            ELSE 'Y' END AS ORD_CAN_YN
@@ -617,7 +617,7 @@
 		                                </if>
 		                                UNION ALL
 		                                SELECT C.CART_SQ
-		                                     , CASE WHEN VS.SOLDOUT_YN = 'N' AND VS.CURR_STOCK_QTY >= C.GOODS_QTY AND G.GOODS_STAT != 'G008_70' THEN 'N'
+		                                     , CASE WHEN VS.SOLDOUT_YN = 'N' AND VS.CURR_STOCK_QTY > 0 AND G.GOODS_STAT != 'G008_70' THEN 'N'
 		                                            ELSE 'Y' END AS SOLDOUT_YN
 		                                     , CASE WHEN G.GOODS_STAT != 'G008_90' AND G.GOODS_STAT != 'G008_70' THEN 'N'
 		                                            ELSE 'Y' END AS ORD_CAN_YN
@@ -920,35 +920,39 @@
 	<!-- 장바구니 상품 컬러 정보 조회 -->
 	<select id="selectCartGoodsColorList" parameterType="Cart" resultType="Cart">
 		/* TsfCart.selectCartGoodsColorList : 장바구니 상품 컬러 정보 조회 */
-		SELECT ST.GOODS_CD
-			 , CASE WHEN SELF_GOODS_YN = 'Y' THEN (SELECT COLOR_KNM FROM TB_COLOR WHERE COLOR_CD = ST.OPT_CD1)
-					ELSE ST.OPT_CD1 END AS COLOR_NM
-			 , CASE WHEN SELF_GOODS_YN = 'Y' AND GOODS_TYPE != 'G056_S' THEN (SELECT SYS_IMG_NM FROM TB_GOODS_IMG WHERE GOODS_CD = ST.GOODS_CD AND COLOR_CD = ST.OPT_CD1 AND DEFAULT_IMG_YN = 'Y' LIMIT 1)
-					ELSE (SELECT SYS_IMG_NM FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = G.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' LIMIT 1) END AS SYS_IMG_NM
-			 , ST.OPT_CD1
-			 , G.MAIN_COLOR_CD
-			 , MAX(CD.CART_DTL_SQ) AS CART_DTL_SQ
-			 , MAX(ST.DISP_ORD) AS DISP_ORD
-			 , MAX(CD.OPT_CD1) AS CART_OPT_CD1
-			 , MAX(CD.OPT_CD2) AS CART_OPT_CD2
-			 , MAX(CD.OPT_CD) AS CART_OPT_CD
-		     , MAX(ST.SOLDOUT_YN) AS SOLDOUT_YN
-			 , IFNULL(MAX( CASE WHEN SELF_GOODS_YN = 'Y' THEN (SELECT COLOR_KNM FROM TB_COLOR WHERE COLOR_CD = CD.OPT_CD1)
-								ELSE CD.OPT_CD1 END), MAX(CD.OPT_CD1)) AS CART_COLOR_NM
-		FROM   TB_GOODS G
-		INNER  JOIN VW_STOCK ST
-		ON     G.GOODS_CD = ST.GOODS_CD
-		LEFT   OUTER JOIN TB_CART_DETAIL CD
-		ON     G.GOODS_CD = CD.ITEM_CD
-		AND    ST.OPT_CD = CD.OPT_CD
-		AND    CD.CART_SQ = #{cartSq}
-		WHERE  ST.DISP_YN = 'Y'
-		AND    G.SELF_MALL_YN = 'Y'
-		AND    G.GOODS_STAT IN ('G008_90', 'G008_70')
-		AND    G.GOODS_CD = #{goodsCd}
-		GROUP  BY ST.GOODS_CD
-			 , ST.OPT_CD1
-			 , G.MAIN_COLOR_CD
+		SELECT A.*
+		     , IFNULL((CASE WHEN SELF_GOODS_YN = 'Y' THEN (SELECT COLOR_KNM FROM TB_COLOR WHERE COLOR_CD = A.CART_OPT_CD1)
+		                    ELSE A.CART_OPT_CD1 END), A.CART_OPT_CD1) AS CART_COLOR_NM
+		FROM   (SELECT ST.GOODS_CD
+		             , MAX(CASE WHEN SELF_GOODS_YN = 'Y' THEN (SELECT COLOR_KNM FROM TB_COLOR WHERE COLOR_CD = ST.OPT_CD1)
+		                        ELSE ST.OPT_CD1 END) AS COLOR_NM
+		             , MAX(CASE WHEN SELF_GOODS_YN = 'Y' AND GOODS_TYPE != 'G056_S' THEN (SELECT SYS_IMG_NM FROM TB_GOODS_IMG WHERE GOODS_CD = ST.GOODS_CD AND COLOR_CD = ST.OPT_CD1 AND DEFAULT_IMG_YN = 'Y' LIMIT 1)
+		                        ELSE (SELECT SYS_IMG_NM FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = G.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' LIMIT 1) END) AS SYS_IMG_NM
+		             , ST.OPT_CD1
+		             , G.MAIN_COLOR_CD
+		             , G.SELF_GOODS_YN
+		             , MAX(CD.CART_DTL_SQ) AS CART_DTL_SQ
+		             , MAX(ST.DISP_ORD) AS DISP_ORD
+		             , MAX(CD.OPT_CD1) AS CART_OPT_CD1
+		             , MAX(CD.OPT_CD2) AS CART_OPT_CD2
+		             , MAX(CD.OPT_CD) AS CART_OPT_CD
+		             , MAX(ST.SOLDOUT_YN) AS SOLDOUT_YN
+		             , ROW_NUMBER() OVER() AS COLOR_NO
+		        FROM   TB_GOODS G
+		        INNER  JOIN VW_STOCK ST
+		        ON     G.GOODS_CD = ST.GOODS_CD
+		        LEFT   OUTER JOIN TB_CART_DETAIL CD
+		        ON     G.GOODS_CD = CD.ITEM_CD
+		        AND    ST.OPT_CD = CD.OPT_CD
+		        AND    CD.CART_SQ = #{cartSq}
+		        WHERE  ST.DISP_YN = 'Y'
+		        AND    G.SELF_MALL_YN = 'Y'
+		        AND    G.GOODS_STAT IN ('G008_90', 'G008_70')
+		        AND    G.GOODS_CD = #{goodsCd}
+		        GROUP  BY ST.GOODS_CD
+		                , ST.OPT_CD1
+		                , G.SELF_GOODS_YN
+		                , G.MAIN_COLOR_CD ) A
 		ORDER  BY DISP_ORD
 	</select>
 
@@ -960,7 +964,11 @@
 		     , ST.OPT_CD1
 		     , ST.OPT_CD2
 		     , ST.CURR_STOCK_QTY
-		     , ST.SOLDOUT_YN
+		     , ST.ADD_PRICE
+		     , CASE WHEN ST.SOLDOUT_YN = 'N' AND G.GOODS_STAT = 'G008_90' THEN 'N' ELSE 'Y' END AS SOLDOUT_YN
+		     , G.MIN_ORD_QTY
+		     , G.MAX_ORD_QTY
+		     , G.DAY_MAX_ORD_QTY
 		     , CD.CART_DTL_SQ
 		     , CD.OPT_CD AS CART_OPT_CD
 		     , CD.OPT_CD2 AS CART_OPT_CD2
@@ -988,6 +996,7 @@
 		SELECT GI.GOODS_CD
 			 , GI.COLOR_CD
 			 , GI.SYS_IMG_NM
+			 , GI.DEFAULT_IMG_YN
 		FROM   TB_GOODS G
 		INNER  JOIN TB_GOODS_IMG GI
 		ON     G.GOODS_CD = GI.GOODS_CD

+ 276 - 182
src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml

@@ -54,10 +54,10 @@
 		FROM   (SELECT CR.CPN_ID
 		             , CR.CPN_TARGET
 		             , CASE WHEN CR.CPN_TARGET = 'G260_10' THEN (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD = CR.REF_VAL AND GOODS_STAT = 'G008_90')
-		                    WHEN CR.CPN_TARGET = 'G260_11' THEN CASE WHEN (SELECT COUNT(1) FROM VW_CATE_4SRCH WHERE CATE1_NO = CR.REF_VAL) > 0 THEN (SELECT CATE1_NM FROM VW_CATE_4SRCH WHERE CATE1_NO = CR.REF_VAL LIMIT 1)
-		                                                             WHEN (SELECT COUNT(1) FROM VW_CATE_4SRCH WHERE CATE2_NO = CR.REF_VAL) > 0 THEN (SELECT CONCAT(CATE1_NM, ' > ', CATE2_NM) FROM VW_CATE_4SRCH WHERE CATE2_NO = CR.REF_VAL LIMIT 1)
-		                                                             WHEN (SELECT COUNT(1) FROM VW_CATE_4SRCH WHERE CATE3_NO = CR.REF_VAL) > 0 THEN (SELECT CONCAT(CATE1_NM, ' > ', CATE2_NM) FROM VW_CATE_4SRCH WHERE CATE3_NO = CR.REF_VAL LIMIT 1)
-		                                                             WHEN (SELECT COUNT(1) FROM VW_CATE_4SRCH WHERE CATE4_NO = CR.REF_VAL) > 0 THEN (SELECT CONCAT(CATE1_NM, ' > ', CATE2_NM) FROM VW_CATE_4SRCH WHERE CATE4_NO = CR.REF_VAL LIMIT 1)
+		                    WHEN CR.CPN_TARGET = 'G260_11' THEN CASE WHEN (SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE1_NO = CR.REF_VAL) > 0 THEN (SELECT CATE1_NM FROM TB_CATE_4SRCH WHERE CATE1_NO = CR.REF_VAL LIMIT 1)
+		                                                             WHEN (SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE2_NO = CR.REF_VAL) > 0 THEN (SELECT CONCAT(CATE1_NM, ' > ', CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE2_NO = CR.REF_VAL LIMIT 1)
+		                                                             WHEN (SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE3_NO = CR.REF_VAL) > 0 THEN (SELECT CONCAT(CATE1_NM, ' > ', CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE3_NO = CR.REF_VAL LIMIT 1)
+		                                                             WHEN (SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE4_NO = CR.REF_VAL) > 0 THEN (SELECT CONCAT(CATE1_NM, ' > ', CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE4_NO = CR.REF_VAL LIMIT 1)
 		                                                             END    <!-- 카테고리명은 대 > 중 카테고리까지만 노출 20210330 정지혜과장님 확인 -->
 		                    WHEN CR.CPN_TARGET = 'G260_12' THEN (SELECT BRAND_KNM FROM TB_BRAND WHERE BRAND_CD = CR.REF_VAL AND USE_YN = 'Y')
 		                    WHEN CR.CPN_TARGET = 'G260_13' THEN (SELECT SUPPLY_COMP_NM FROM TB_SUPPLY_COMPANY WHERE SUPPLY_COMP_CD = CR.REF_VAL AND USE_YN = 'Y' AND SUPPLY_STAT = 'G010_30')
@@ -431,146 +431,56 @@
 	
 	<select id="getMypageCouponList" resultType="Coupon" parameterType="Coupon">
 		/* TsfCoupon.getMypageCouponList */
-		SELECT T.*
-		FROM 
-		(
-			SELECT z.*
-			FROM 
-			(
-				SELECT TC.CPN_ID
-				     ,TC.CPN_NM
-				     ,TC.CPN_DESC
-				     ,TC.SITE_CD
-				     ,TC.CPN_TYPE
-				     ,(CASE TC.APPLY_SCOPE WHEN 'A' THEN '전체' 
-				     				 	   WHEN 'I' THEN '개별' END) AS APPLY_SCOPE 
-				     ,(CASE TC.DC_WAY WHEN 'G240_10' THEN '할인금액' 
-				 				 	  WHEN 'G240_11' THEN '할인율' END) AS DC_WAY 
-				     ,TC.DC_PVAL
-				     ,TC.DC_MVAL
-				     ,TC.DC_AVAL
-				     ,TC.MAX_DC_AMT
-				     ,(CASE TC.PD_GB WHEN 'P' THEN '기간' 
-				     				 WHEN 'D' THEN '일수' END) AS PD_GB
-				     ,DATE_FORMAT(A.AVAIL_STDT, '%Y-%m-%d') AS AVAIL_STDT
-				     ,DATE_FORMAT(A.AVAIL_EDDT, '%Y-%m-%d') AS AVAIL_EDDT
-				     ,TC.AVAIL_DAYS
-				     ,TC.CUST_PUB_LIMIT_QTY
-				     ,TC.TOT_PUB_LIMIT_QTY
-				     ,TC.ONE_PUB_QTY
-				     ,TC.DN_GB
-				     ,TC.DOWN_STDT
-				     ,TC.DOWN_EDDT
-				     ,TC.BUY_LIMIT_AMT
-				     ,TC.PLAN_SQ
-				     ,TC.REISSUANCE
-				     ,TC.CPN_STAT
-				     ,TC.END_ALIM_YN
-				     ,TC.FIRST_ORD_YN
-				     ,TC.DOWN_ABL_YN
-				     ,TC.DC_CD_GB
-				     ,TC.CUST_JOIN_STDT
-				     ,TC.CUST_JOIN_EDDT
-				     ,TC.BUY_STDT
-				     ,TC.BUY_EDDT
-				     ,TC.NEW_CUST_YN
-				     ,IF(NOW() BETWEEN TC.AVAIL_STDT AND TC.AVAIL_EDDT , 'Y','N') AS USER_YN
-				     , A.CUST_NO
-				     , A.USED_DT
-				     , A.CNT
-				FROM TB_COUPON TC INNER JOIN 
-											(
-												SELECT 
-												       CUST_NO
-												     , CPN_ID
-												     , USED_DT
-												     , COUNT(*) AS CNT
-												     , AVAIL_STDT 
-												     , AVAIL_EDDT 
-												     FROM TB_CUST_COUPON
-												     WHERE CUST_NO = #{custNo}
-					                                     AND USED_DT IS NULL
-					                                     AND NOW() BETWEEN AVAIL_STDT AND AVAIL_EDDT
-												GROUP BY 
-												       CUST_NO
-												     , CPN_ID
-												     , USED_DT
-												     , AVAIL_STDT 
-												     , AVAIL_EDDT 
-											)A ON TC.CPN_ID = A.CPN_ID 
-				WHERE 1=1
-					AND TC.CPN_STAT = 'G232_11'  /*쿠폰 상태 - 진행*/
-			)Z
-			UNION 
-			SELECT F.*
-			FROM 
-			(
-				SELECT TC.CPN_ID
-				     ,TC.CPN_NM
-				     ,TC.CPN_DESC
-				     ,TC.SITE_CD
-				     ,TC.CPN_TYPE
-				     ,(CASE TC.APPLY_SCOPE WHEN 'A' THEN '전체' 
-				     				 	   WHEN 'I' THEN '개별' END) AS APPLY_SCOPE 
-				     ,(CASE TC.DC_WAY WHEN 'G240_10' THEN '할인금액' 
-				 				 	  WHEN 'G240_11' THEN '할인율' END) AS DC_WAY 
-				     ,TC.DC_PVAL
-				     ,TC.DC_MVAL
-				     ,TC.DC_AVAL
-				     ,TC.MAX_DC_AMT
-				     ,(CASE TC.PD_GB WHEN 'P' THEN '기간' 
-				     				 WHEN 'D' THEN '일수' END) AS PD_GB
-				     ,DATE_FORMAT(A.AVAIL_STDT, '%Y-%m-%d') AS AVAIL_STDT
-				     ,DATE_FORMAT(A.AVAIL_EDDT, '%Y-%m-%d') AS AVAIL_EDDT
-				     ,TC.AVAIL_DAYS
-				     ,TC.CUST_PUB_LIMIT_QTY
-				     ,TC.TOT_PUB_LIMIT_QTY
-				     ,TC.ONE_PUB_QTY
-				     ,TC.DN_GB
-				     ,TC.DOWN_STDT
-				     ,TC.DOWN_EDDT
-				     ,TC.BUY_LIMIT_AMT
-				     ,TC.PLAN_SQ
-				     ,TC.REISSUANCE
-				     ,TC.CPN_STAT
-				     ,TC.END_ALIM_YN
-				     ,TC.FIRST_ORD_YN
-				     ,TC.DOWN_ABL_YN
-				     ,TC.DC_CD_GB
-				     ,TC.CUST_JOIN_STDT
-				     ,TC.CUST_JOIN_EDDT
-				     ,TC.BUY_STDT
-				     ,TC.BUY_EDDT
-				     ,TC.NEW_CUST_YN
-			         ,IF(NOW() BETWEEN TC.AVAIL_STDT AND TC.AVAIL_EDDT , 'Y','N') AS USER_YN
-				     , A.CUST_NO
-				     , A.USED_DT
-				     , A.CNT
-				FROM TB_COUPON TC INNER JOIN 
-											(
-												SELECT 
-												       CUST_NO
-												     , CPN_ID
-												     , USED_DT
-												     , COUNT(*) AS CNT
-												     , AVAIL_STDT 
-												     , AVAIL_EDDT 
-												     FROM TB_CUST_COUPON
-												     WHERE CUST_NO = #{custNo}
-					                                   AND USED_DT IS NULL
-					                                   AND AVAIL_EDDT BETWEEN DATE_ADD(NOW(), INTERVAL -3 MONTH) AND AVAIL_EDDT
-												GROUP BY 
-												       CUST_NO
-												     , CPN_ID
-												     , USED_DT
-												     , AVAIL_STDT 
-												     , AVAIL_EDDT 
-											)A ON TC.CPN_ID = A.CPN_ID 
-				WHERE 1=1
-					AND TC.CPN_STAT = 'G232_11'  /*쿠폰 상태 - 진행*/
-			)F
-		)T
-		ORDER BY T.USER_YN DESC, T.AVAIL_EDDT
+		SELECT CC.CPN_ID                    /*쿠폰ID*/
+		     , C.CPN_NM                     /*쿠폰명*/
+		     , C.BUY_LIMIT_AMT              /*구매제한금액*/
+		     , C.MAX_DC_AMT                 /*최대할인금액*/
+		     , CASE WHEN #{frontGb} = 'P' THEN C.DC_PVAL
+		            WHEN #{frontGb} = 'M' THEN C.DC_MVAL
+		            WHEN #{frontGb} = 'A' THEN C.DC_AVAL
+		       END             AS DC_VAL    /*할인값*/
+		     , CASE WHEN C.DC_WAY = 'G240_10' THEN '원'                                                                                             
+		            ELSE '%'
+		       END             AS DC_WAY    /*할인방법*/
+		     , CONCAT(CASE WHEN C.BUY_LIMIT_AMT = 0 THEN ''
+		                   ELSE CONCAT(FORMAT(C.BUY_LIMIT_AMT , 0),'원 이상 구매 시 ')
+		              END
+		             ,CASE WHEN C.MAX_DC_AMT = 0 THEN ''
+		                   ELSE CONCAT('최대 ',FORMAT(C.MAX_DC_AMT , 0),'원 할인')
+		              END)     AS USE_CONDITION  /*사용조건*/
+		     , CASE WHEN C.CUST_PUB_LIMIT_QTY = 0 THEN ''
+		            ELSE CONCAT('1인당 최대',C.CUST_PUB_LIMIT_QTY,'매')
+		       END             AS ISSUE_CONDITION /*발급수량*/
+		     , CC.AVAIL_STDT                /*유효시작일자*/
+		     , CC.AVAIL_EDDT                /*유효종료일자*/
+		     , CC.CPN_CNT                   /*보유쿠폰수*/
+		     , CC.EXPIRE_YN                 /*만료여부*/
+		FROM   (
+		        SELECT CC.CPN_ID
+		             , DATE_FORMAT(CC.AVAIL_STDT,'%Y.%m.%d') AS AVAIL_STDT  /*유효시작일자*/
+		             , DATE_FORMAT(CC.AVAIL_EDDT,'%Y.%m.%d') AS AVAIL_EDDT  /*유효종료일자*/
+		             , COUNT(*)                              AS CPN_CNT /*보유쿠폰수*/
+		             , MAX(CASE WHEN NOW() > CC.AVAIL_EDDT THEN 'Y'
+		                        ELSE 'N'
+		                   END)                              AS EXPIRE_YN /*만료여부*/
+		        FROM   TB_CUST_COUPON CC
+		        WHERE  1 = 1
+		        AND    CC.CUST_NO = #{custNo} /**P*/
+		        AND    CC.USED_DT IS NULL /*사용하지않은쿠폰만*/
+		        AND    CC.AVAIL_EDDT >= DATE_ADD(NOW(), INTERVAL -3 MONTH) /*최근3개월쿠폰만*/
+		        GROUP  BY CC.CPN_ID, DATE_FORMAT(CC.AVAIL_STDT,'%Y.%m.%d %H:%i'), DATE_FORMAT(CC.AVAIL_EDDT,'%Y.%m.%d %H:%i')
+		       ) CC
+		     , TB_COUPON C
+		WHERE  CC.CPN_ID = C.CPN_ID
+		AND    C.CPN_STAT = 'G232_11' /*진행중인쿠폰*/
+		AND    C.SITE_CD = #{siteCd}
+		<if test="quickYn != null and quickYn != ''">
+		AND    CC.CC.EXPIRE_YN = 'N'
+		</if>
+		ORDER  BY CC.EXPIRE_YN, CC.AVAIL_EDDT, DC_VAL DESC, MAX_DC_AMT DESC
+		<if test="quickYn != null and quickYn != ''">
+		LIMIT 30
+		</if>
 	</select>
 	
 	<select id="getMypageCouponInfo" resultType="Coupon" parameterType="Coupon">
@@ -601,44 +511,228 @@
 	
 	<select id="getCouponDetailInfo" resultType="Coupon" parameterType="Coupon">
 		/* TsfCoupon.getCouponDetailInfo -- custNo 변경 예정*/
-		SELECT A.CPN_ID
-		     ,A.CPN_NM
-		     ,A.CPN_DESC
-		     ,A.SITE_CD
-		     ,A.AF_LINK_CD
-		     ,A.CPN_TYPE
-		     ,A.APPLY_SCOPE
-		     ,A.DC_WAY
-		     ,A.DC_PVAL
-		     ,A.DC_MVAL
-		     ,A.DC_AVAL
-		     ,A.MAX_DC_AMT
-		     ,A.PD_GB
-		     ,DATE_FORMAT(A.AVAIL_STDT,'%Y-%m-%d') AS AVAIL_STDT
-		     ,DATE_FORMAT(A.AVAIL_EDDT,'%Y-%m-%d') AS AVAIL_EDDT
-		     ,A.AVAIL_DAYS
-		     ,A.CUST_PUB_LIMIT_QTY
-		     ,A.TOT_PUB_LIMIT_QTY
-		     ,A.ONE_PUB_QTY
-		     ,A.DN_GB
-		     ,A.DOWN_STDT
-		     ,A.DOWN_EDDT
-		     ,A.BUY_LIMIT_AMT
-		     ,A.PLAN_SQ
-		     ,A.REISSUANCE
-		     ,A.CPN_STAT
-		     ,A.END_ALIM_YN
-		     ,A.FIRST_ORD_YN
-		     ,A.DOWN_ABL_YN
-		     ,A.DC_CD_GB
-		     ,A.CUST_JOIN_STDT
-		     ,A.CUST_JOIN_EDDT
-		     ,A .BUY_STDT
-		     ,A.BUY_EDDT
-		     ,A.NEW_CUST_YN
-		FROM TB_COUPON A
-		WHERE 1=1
-		 AND A.CPN_ID = #{cpnId}
+		SELECT Z.CPN_ID                                /*쿠폰ID*/
+		     , Z.CPN_NM                                /*쿠폰명*/
+		     , Z.BUY_LIMIT_AMT                         /*구매제한금액*/
+		     , Z.MAX_DC_AMT                            /*최대할인금액*/
+		     , Z.DC_VAL                                /*할인값*/
+		     , Z.DC_WAY                                /*할인방법*/
+		     , Z.USE_CONDITION                         /*사용조건*/
+		     , Z.ISSUE_CONDITION                       /*발급조건*/
+		     , Z.AVAIL_STDT                            /*유효시작일자*/
+		     , Z.AVAIL_EDDT                            /*유효종료일자*/
+		     , Z.CPN_CNT                               /*보유쿠폰수*/
+		     , Z.EXPIRE_YN                             /*만료여부*/
+		     , GROUP_CONCAT(Z.TGT_CONDITION) AS TGT_CONDITION
+		FROM
+		(
+		WITH TAB_COUPON AS (
+		    SELECT CC.CPN_ID                          /*쿠폰ID*/
+		         , C.CPN_NM                           /*쿠폰명*/
+		         , C.BUY_LIMIT_AMT                    /*구매제한금액*/
+		         , C.MAX_DC_AMT                       /*최대할인금액*/
+		         , CASE WHEN #{frontGb} = 'P' THEN C.DC_PVAL
+		                WHEN #{frontGb} = 'M' THEN C.DC_MVAL
+		                WHEN #{frontGb} = 'A' THEN C.DC_AVAL
+		           END             AS DC_VAL          /*할인값*/
+		         , CASE WHEN C.DC_WAY = 'G240_10' THEN '원'
+		                ELSE '%'
+		           END             AS DC_WAY          /*할인방법*/
+		         , CONCAT(CASE WHEN C.BUY_LIMIT_AMT = 0 THEN ''
+		                       ELSE CONCAT(FORMAT(C.BUY_LIMIT_AMT , 0),'원 이상 구매 시 ')
+		                  END
+		                 ,CASE WHEN C.MAX_DC_AMT = 0 THEN ''
+		                       ELSE CONCAT('최대 ',FORMAT(C.MAX_DC_AMT , 0),'원 할인')
+		                  END)     AS USE_CONDITION   /*사용조건*/
+		         , CASE WHEN C.CUST_PUB_LIMIT_QTY = 0 THEN ''
+		                ELSE CONCAT('1인당 최대',C.CUST_PUB_LIMIT_QTY,'매')
+		           END             AS ISSUE_CONDITION /*발급조건*/
+		         , CC.AVAIL_STDT                      /*유효시작일자*/
+		         , CC.AVAIL_EDDT                      /*유효종료일자*/
+		         , CC.CPN_CNT                         /*보유쿠폰수*/
+		         , CC.EXPIRE_YN                       /*만료여부*/
+		    FROM   (
+		            SELECT CC.CPN_ID
+		                 , DATE_FORMAT(CC.AVAIL_STDT,'%Y.%m.%d %H:%i') AS AVAIL_STDT  /*유효시작일자*/
+		                 , DATE_FORMAT(CC.AVAIL_EDDT,'%Y.%m.%d %H:%i') AS AVAIL_EDDT  /*유효종료일자*/
+		                 , COUNT(*)                              AS CPN_CNT /*보유쿠폰수*/
+		                 , MAX(CASE WHEN NOW() > CC.AVAIL_EDDT THEN 'Y'
+		                            ELSE 'N'
+		                       END)                              AS EXPIRE_YN /*만료여부*/
+		            FROM   TB_CUST_COUPON CC
+		            WHERE  1 = 1
+		            AND    CC.CUST_NO = #{custNo}
+		            AND    CC.USED_DT IS NULL /*사용하지않은쿠폰만*/
+		            AND    CC.AVAIL_EDDT >= DATE_ADD(NOW(), INTERVAL -3 MONTH) /*최근3개월쿠폰만*/
+		            GROUP  BY CC.CPN_ID, DATE_FORMAT(CC.AVAIL_STDT,'%Y.%m.%d %H:%i'), DATE_FORMAT(CC.AVAIL_EDDT,'%Y.%m.%d %H:%i')
+		           ) CC
+		         , TB_COUPON C
+		    WHERE  CC.CPN_ID = C.CPN_ID
+		    AND    C.CPN_STAT = 'G232_11' /*진행중인쿠폰*/
+		    AND    C.SITE_CD = #{siteCd}
+		)
+		, TAB_COUPON_REFVAL1 AS (
+		    SELECT CR.CPN_ID
+		         , CR.CPN_TARGET
+		         , CASE WHEN CR.CPN_TARGET = 'G260_10' /*상품*/ THEN (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD = CR.REF_VAL AND GOODS_STAT = 'G008_90')
+		                WHEN CR.CPN_TARGET = 'G260_11' /*카테고리*/ THEN
+		                    CASE WHEN IFNULL((SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE1_NO = CR.REF_VAL),0) > 0 THEN (SELECT CATE1_NM FROM TB_CATE_4SRCH WHERE CATE1_NO = CR.REF_VAL LIMIT 1)
+		                         WHEN IFNULL((SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE2_NO = CR.REF_VAL),0) > 0 THEN (SELECT CONCAT(CATE1_NM,' > ',CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE2_NO = CR.REF_VAL LIMIT 1)
+		                         WHEN IFNULL((SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE3_NO = CR.REF_VAL),0) > 0 THEN (SELECT CONCAT(CATE1_NM,' > ',CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE3_NO = CR.REF_VAL LIMIT 1)
+		                         WHEN IFNULL((SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE4_NO = CR.REF_VAL),0) > 0 THEN (SELECT CONCAT(CATE1_NM,' > ',CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE4_NO = CR.REF_VAL LIMIT 1)
+		                    END
+		                WHEN CR.CPN_TARGET = 'G260_12' /*브랜드*/ THEN (SELECT BRAND_KNM FROM TB_BRAND WHERE BRAND_CD = CR.REF_VAL AND USE_YN = 'Y')
+		                WHEN CR.CPN_TARGET = 'G260_13' /*업체*/ THEN (SELECT SUPPLY_COMP_NM FROM TB_SUPPLY_COMPANY WHERE SUPPLY_COMP_CD = CR.REF_VAL AND USE_YN = 'Y' AND SUPPLY_STAT = 'G010_30')
+		           END AS REF_VAL
+		         , RANK() OVER(PARTITION BY CR.CPN_ID, CR.CPN_TARGET ORDER BY REF_VAL) AS RK
+		    FROM   TAB_COUPON C
+		         , TB_COUPON_REFVAL CR
+		    WHERE  C.CPN_ID = CR.CPN_ID
+		    AND    CR.CPN_TARGET != 'G260_14' /*제외상품아닌넘*/
+		)
+		, TAB_COUPON_REFVAL2 AS (
+		    SELECT CPN_ID
+		         , CPN_TARGET
+		         , GROUP_CONCAT(REF_VAL ORDER BY RK ASC SEPARATOR '/' ) AS REF_VAL
+		         , (SELECT COUNT(*)
+		            FROM   TAB_COUPON_REFVAL1
+		            WHERE  CPN_ID = CR.CPN_ID
+		            AND    CPN_TARGET = CR.CPN_TARGET)                  AS CNT
+		    FROM   TAB_COUPON_REFVAL1 CR
+		    WHERE  1 = 1
+		    AND    (
+		            (CPN_TARGET != 'G260_12' AND RK = 1) /*브랜드 외는 1개만 노출*/
+		            OR
+		            (CPN_TARGET = 'G260_12' AND RK <![CDATA[<=]]> 2) /*브랜드만 2개 노출*/
+		           )
+		    GROUP  BY CPN_ID, CPN_TARGET
+		)
+		SELECT C.CPN_ID                                /*쿠폰ID*/
+		     , C.CPN_NM                                /*쿠폰명*/
+		     , C.BUY_LIMIT_AMT                         /*구매제한금액*/
+		     , C.MAX_DC_AMT                            /*최대할인금액*/
+		     , C.DC_VAL                                /*할인값*/
+		     , C.DC_WAY                                /*할인방법*/
+		     , C.USE_CONDITION                         /*사용조건*/
+		     , C.ISSUE_CONDITION                       /*발급조건*/
+		     , C.AVAIL_STDT                            /*유효시작일자*/
+		     , C.AVAIL_EDDT                            /*유효종료일자*/
+		     , C.CPN_CNT                               /*보유쿠폰수*/
+		     , C.EXPIRE_YN                             /*만료여부*/
+		     , CONCAT(CR.REF_VAL,CASE WHEN CR.CPN_TARGET = 'G260_10' AND CR.CNT > 1 THEN ' 외'
+		                              WHEN CR.CPN_TARGET = 'G260_11' AND CR.CNT > 1 THEN ' 외'
+		                              WHEN CR.CPN_TARGET = 'G260_12' AND CR.CNT > 2 THEN ' 외'
+		                              WHEN CR.CPN_TARGET = 'G260_13' AND CR.CNT > 1 THEN ' 외'
+		                              ELSE ''
+		                         END) AS TGT_CONDITION /*대상조건*/
+		FROM   TAB_COUPON C
+		     , TAB_COUPON_REFVAL2 CR
+		WHERE  C.CPN_ID = CR.CPN_ID
+		AND C.CPN_ID = #{cpnId}
+		ORDER  BY C.EXPIRE_YN, C.AVAIL_EDDT
+		)Z
+	</select>
+	
+	<select id="getPlanCouponDetailInfo" resultType="Coupon" parameterType="Coupon">
+		/* TsfCoupon.getPlanCouponDetailInfo */
+		SELECT Z.CPN_ID                                /*쿠폰ID*/
+		     , Z.CPN_NM                                /*쿠폰명*/
+		     , Z.BUY_LIMIT_AMT                         /*구매제한금액*/
+		     , Z.MAX_DC_AMT                            /*최대할인금액*/
+		     , Z.DC_VAL                                /*할인값*/
+		     , Z.DC_WAY                                /*할인방법*/
+		     , Z.USE_CONDITION                         /*사용조건*/
+		     , Z.ISSUE_CONDITION                       /*발급조건*/
+		     , Z.AVAIL_STDT
+		     , Z.AVAIL_EDDT
+		     , GROUP_CONCAT(Z.TGT_CONDITION) AS TGT_CONDITION
+		FROM
+		(
+		WITH TAB_COUPON AS (
+		    SELECT C.CPN_ID                          /*쿠폰ID*/
+		         , C.CPN_NM                           /*쿠폰명*/
+		         , C.BUY_LIMIT_AMT                    /*구매제한금액*/
+		         , C.MAX_DC_AMT                       /*최대할인금액*/
+		         , DATE_FORMAT(C.AVAIL_STDT,'%Y.%m.%d %H:%i') AS AVAIL_STDT
+		         , DATE_FORMAT(C.AVAIL_EDDT,'%Y.%m.%d %H:%i') AS AVAIL_EDDT
+		         , CASE WHEN #{frontGb} = 'P' THEN C.DC_PVAL
+		                WHEN #{frontGb} = 'M' THEN C.DC_MVAL
+		                WHEN #{frontGb} = 'A' THEN C.DC_AVAL
+		           END             AS DC_VAL          /*할인값*/
+		         , CASE WHEN C.DC_WAY = 'G240_10' THEN '원'
+		                ELSE '%'
+		           END             AS DC_WAY          /*할인방법*/
+		         , CONCAT(CASE WHEN C.BUY_LIMIT_AMT = 0 THEN ''
+		                       ELSE CONCAT(FORMAT(C.BUY_LIMIT_AMT , 0),'원 이상 구매 시 ')
+		                  END
+		                 ,CASE WHEN C.MAX_DC_AMT = 0 THEN ''
+		                       ELSE CONCAT('최대 ',FORMAT(C.MAX_DC_AMT , 0),'원 할인')
+		                  END)     AS USE_CONDITION   /*사용조건*/
+		         , CASE WHEN C.CUST_PUB_LIMIT_QTY = 0 THEN ''
+		                ELSE CONCAT('1인당 최대',C.CUST_PUB_LIMIT_QTY,'매')
+		           END             AS ISSUE_CONDITION /*발급조건*/
+		    FROM  TB_COUPON C
+		    WHERE C.CPN_STAT = 'G232_11' /*진행중인쿠폰*/
+		     AND    C.SITE_CD = #{siteCd}
+		)
+		, TAB_COUPON_REFVAL1 AS (
+		    SELECT CR.CPN_ID
+		         , CR.CPN_TARGET
+		         , CASE WHEN CR.CPN_TARGET = 'G260_10' /*상품*/ THEN (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD = CR.REF_VAL AND GOODS_STAT = 'G008_90')
+		                WHEN CR.CPN_TARGET = 'G260_11' /*카테고리*/ THEN
+		                    CASE WHEN IFNULL((SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE1_NO = CR.REF_VAL),0) > 0 THEN (SELECT CATE1_NM FROM TB_CATE_4SRCH WHERE CATE1_NO = CR.REF_VAL LIMIT 1)
+		                         WHEN IFNULL((SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE2_NO = CR.REF_VAL),0) > 0 THEN (SELECT CONCAT(CATE1_NM,' > ',CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE2_NO = CR.REF_VAL LIMIT 1)
+		                         WHEN IFNULL((SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE3_NO = CR.REF_VAL),0) > 0 THEN (SELECT CONCAT(CATE1_NM,' > ',CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE3_NO = CR.REF_VAL LIMIT 1)
+		                         WHEN IFNULL((SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE4_NO = CR.REF_VAL),0) > 0 THEN (SELECT CONCAT(CATE1_NM,' > ',CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE4_NO = CR.REF_VAL LIMIT 1)
+		                    END
+		                WHEN CR.CPN_TARGET = 'G260_12' /*브랜드*/ THEN (SELECT BRAND_KNM FROM TB_BRAND WHERE BRAND_CD = CR.REF_VAL AND USE_YN = 'Y')
+		                WHEN CR.CPN_TARGET = 'G260_13' /*업체*/ THEN (SELECT SUPPLY_COMP_NM FROM TB_SUPPLY_COMPANY WHERE SUPPLY_COMP_CD = CR.REF_VAL AND USE_YN = 'Y' AND SUPPLY_STAT = 'G010_30')
+		           END AS REF_VAL
+		         , RANK() OVER(PARTITION BY CR.CPN_ID, CR.CPN_TARGET ORDER BY REF_VAL) AS RK
+		    FROM   TAB_COUPON C
+		         , TB_COUPON_REFVAL CR
+		    WHERE  C.CPN_ID = CR.CPN_ID
+		    AND    CR.CPN_TARGET != 'G260_14' /*제외상품아닌넘*/
+		)
+		, TAB_COUPON_REFVAL2 AS (
+		    SELECT CPN_ID
+		         , CPN_TARGET
+		         , GROUP_CONCAT(REF_VAL ORDER BY RK ASC SEPARATOR '/' ) AS REF_VAL
+		         , (SELECT COUNT(*)
+		            FROM   TAB_COUPON_REFVAL1
+		            WHERE  CPN_ID = CR.CPN_ID
+		            AND    CPN_TARGET = CR.CPN_TARGET)                  AS CNT
+		    FROM   TAB_COUPON_REFVAL1 CR
+		    WHERE  1 = 1
+		    AND    (
+		            (CPN_TARGET != 'G260_12' AND RK = 1) /*브랜드 외는 1개만 노출*/
+		            OR
+		            (CPN_TARGET = 'G260_12' AND RK <![CDATA[<=]]> 2) /*브랜드만 2개 노출*/
+		           )
+		    GROUP  BY CPN_ID, CPN_TARGET
+		)
+		SELECT C.CPN_ID                                /*쿠폰ID*/
+		     , C.CPN_NM                                /*쿠폰명*/
+		     , C.BUY_LIMIT_AMT                         /*구매제한금액*/
+		     , C.MAX_DC_AMT                            /*최대할인금액*/
+		     , C.DC_VAL                                /*할인값*/
+		     , C.DC_WAY                                /*할인방법*/
+		     , C.USE_CONDITION                         /*사용조건*/
+		     , C.ISSUE_CONDITION                       /*발급조건*/
+		     , C.AVAIL_STDT
+		     , C.AVAIL_EDDT
+		     , CONCAT(CR.REF_VAL,CASE WHEN CR.CPN_TARGET = 'G260_10' AND CR.CNT > 1 THEN ' 외'
+		                              WHEN CR.CPN_TARGET = 'G260_11' AND CR.CNT > 1 THEN ' 외'
+		                              WHEN CR.CPN_TARGET = 'G260_12' AND CR.CNT > 2 THEN ' 외'
+		                              WHEN CR.CPN_TARGET = 'G260_13' AND CR.CNT > 1 THEN ' 외'
+		                              ELSE ''
+		                         END) AS TGT_CONDITION /*대상조건*/
+		FROM   TAB_COUPON C
+		     , TAB_COUPON_REFVAL2 CR
+		WHERE  C.CPN_ID = CR.CPN_ID
+		AND C.CPN_ID = #{cpnId}
+		)Z
+				
 	</select>
 	
 	<!-- 기획전 다운가능 쿠폰 정보 조회 -->

+ 42 - 4
src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml

@@ -83,6 +83,7 @@
 		    </when>
 		    <otherwise>
 		     , GTAB_SQ                                            /*GNB탭일련번호*/
+		     , CASE WHEN CONTENTS_TYPE = 'C' THEN (SELECT CONTENTS_TITLE FROM	TB_MAIN_LAYOUT WHERE CONTENTS_LOC = 'STAB003') ELSE '' END AS GTAB_BANNER_TITLE
 		FROM   TB_GNB_TAB A
 		    </otherwise>
 		</choose>
@@ -225,9 +226,12 @@
 		        <if test="cateNo != null and cateNo != ''">
 		        AND    A.CATE_NO = #{cateNo}
 		        </if>
-				<if test="brandGroupNo != null and brandGroupNo !=''">
-				AND    A.BRAND_GROUP_NO  = #{brandGroupNo}
-				</if>
+		        <if test="brandGroupNo != null and brandGroupNo !=''">
+		        AND    A.BRAND_GROUP_NO  = #{brandGroupNo}
+		        </if>
+		        <if test="contentsType != null and contentsType != ''">
+		        AND    A.CONTENTS_TYPE = #{contentsType}
+		        </if>
 		        <choose>
 		            <when test='preview != null and preview == "Y"'>
 		        AND    IFNULL((SELECT DISP_EDDT
@@ -923,5 +927,39 @@
 		FROM   TB_BRAND_GROUP
 		WHERE  BRAND_GROUP_NO = #{brandGroupNo}
 	</select>
-	
+
+	<!-- GNB TAB 기획전배너 조회 -->
+	<select id="getGnbTabBannerList" parameterType="Contents" resultType="Contents">
+		/* TsfDisplay.getGnbTabBannerList */
+		SELECT (SELECT CONTENTS_TITLE FROM TB_MAIN_LAYOUT WHERE 1=1 AND CONTENTS_LOC = 'STAB003') AS GNB_TAB_TITLE
+		      , Z.BANNER_GB
+		      , Z.IMG_PATH1
+		      , Z.STR_VAR1
+		      , Z.STR_TITLE1
+		      , Z.STR_TITLE2
+		FROM    (
+		            SELECT  'ADMIN' AS BANNER_GB
+		                  , IMG_PATH1
+		                  , STR_VAR1
+		                  , STR_TITLE1
+		                  , STR_TITLE2
+		            FROM    TB_CONTENTS
+		            WHERE   CONTENTS_LOC = #{contentsLoc}
+		            AND     CONTENTS_TYPE = #{cateNo}
+		            AND     USE_YN = 'Y'
+		            UNION ALL
+		            SELECT  'PLAN' AS BANNER_GB
+		                  , A.MAIN_PIMG AS IMG_PATH1
+		                  , CONCAT('/planning/detail/form?planSq=',A.PLAN_SQ) AS STR_VAR1
+		                  , A.PLAN_NM AS STR_TITLE1
+		                  , A.DTL_TITLE1 AS STR_TITLE2
+		            FROM  TB_PLAN A
+		            INNER JOIN TB_PLAN_CATE B ON A.PLAN_SQ = B.PLAN_SQ
+		            WHERE  1=1
+		              AND  B.CATE_NO = #{cateNo}
+		              AND  A.OPEN_YN = 'Y'
+		              AND  B.DISP_YN = 'Y'
+		        ) Z
+		LIMIT 2
+	</select>
 </mapper>

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

@@ -277,6 +277,28 @@
 	<!-- 상품 옵션2 목록  - 자사용-->
 	<select id="getGoodsOption2List" parameterType="Goods" resultType="GoodsStock">
 		/* TsfGoods.getGoodsOption2List */
+		WITH TMP_GOODS AS (
+		    SELECT Y.GOODS_CD
+		         , IFNULL(Z.CURR_PRICE, Y.CURR_PRICE) AS CURR_PRICE
+		         , Y.MIN_ORD_QTY
+		         , Y.SELF_GOODS_YN
+		         , Y.GOODS_TYPE
+		         , Y.SELL_STDT
+		         , Y.SELL_EDDT
+		    FROM (
+		         SELECT A.GOODS_CD
+		              , A.GOODS_TYPE
+		              , IFNULL(B.COMPS_GOODS_CD, A.GOODS_CD) AS COMPS_GOODS_CD
+		              , IFNULL(B.DISP_ORD, 1)                AS DISP_ORD
+		              , IFNULL(B.COMPS_CURR_PRICE, A.CURR_PRICE) AS CURR_PRICE
+		              , A.SELF_GOODS_YN
+		         FROM TB_GOODS A
+		         LEFT OUTER JOIN TB_GOODS_COMPOSE B ON A.GOODS_CD = B.GOODS_CD
+		         WHERE A.GOODS_CD = #{mastrGoodsCd}
+		         ) Z
+		    INNER  JOIN TB_GOODS Y ON Z.COMPS_GOODS_CD = Y.GOODS_CD
+		    WHERE  Z.COMPS_GOODS_CD = #{goodsCd}
+		)
 		SELECT GOODS_CD
 		     , OPT_CD
 		     , OPT_CD1
@@ -288,6 +310,7 @@
 		     , SOLDOUT_YN
 		     , DISP_ORD
 		     , SELF_GOODS_YN
+		     , CURR_PRICE
 		FROM (
 		      SELECT O.GOODS_CD
 		           , O.OPT_CD
@@ -299,7 +322,8 @@
 		           , O.DISP_ORD
 		           , G.MIN_ORD_QTY
 		           , G.SELF_GOODS_YN
-		      FROM TB_GOODS G
+		           , G.CURR_PRICE
+		      FROM TMP_GOODS G
 		      INNER JOIN TB_OPTION O ON G.GOODS_CD = O.GOODS_CD
 		                             AND O.OPT_CD1 = #{optCd1}
 		                             AND O.DISP_YN = 'Y' 
@@ -555,7 +579,7 @@
 	<select id="getGoodsStockQty"  parameterType="GoodsStock" resultType="int">
 		/* TsfGoods.getGoodsStockQty */
 		SELECT (CASE WHEN STOCK_QTY - MIN_ORD_QTY >= 0 THEN STOCK_QTY
-		        END ) AS STOCK_QTY
+		             ELSE 0 END ) AS STOCK_QTY
 		FROM ( 
 		    SELECT CASE WHEN A.SOLDOUT_YN = 'Y' THEN 0
 		                ELSE A.CURR_STOCK_QTY
@@ -843,6 +867,7 @@
 		     , DATE_FORMAT(G.SELL_STDT ,'%Y%m%d%H%i%S') AS SELL_STDT
 		     , DATE_FORMAT(G.SELL_EDDT ,'%Y%m%d%H%i%S') AS SELL_EDDT
 		     , (SELECT TI.SIZE_GB FROM TB_ITEMKIND TI WHERE TI.ITEMKIND_CD = G.ITEMKIND_CD) AS SIZE_GB
+		     , A.COMPS_CURR_PRICE
 		FROM TB_GOODS_COMPOSE A
 		INNER JOIN TB_GOODS G ON A.COMPS_GOODS_CD = G.GOODS_CD
 		                      AND G.SELF_MALL_YN = 'Y' -- 자사몰 노출
@@ -1205,7 +1230,9 @@
 		            AND    C4.SITE_CD = #{siteCd}
 		            AND    C4.CATE_GB = #{cateGb}
 		            AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+		            <if test="cate1No != null and cate1No != ''">
 		            AND    C4.CATE1_NO = #{cate1No}
+		            </if>
 		            <if test="exceptGoodsArr != null and exceptGoodsArr.length > 0">
 		            AND	   CG.GOODS_CD NOT IN
 		                <foreach collection="exceptGoodsArr" item="item" index="index"  open="(" close=")" separator=",">

+ 9 - 7
src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml

@@ -799,7 +799,6 @@
 		     , Z.RF_DELIVERY_FEE
 		     , Z.RF_REAL_CNCL_AMT
 		     , Z.PG_GB
-		     , Z.PAY_STAT
 		     , Z.PAY_MEANS
 		     , Z.PAY_MEANS_NM
 		  FROM (SELECT OC.ORD_CHG_SQ
@@ -852,7 +851,6 @@
 		             , R.RF_DELIVERY_FEE
 		             , R.RF_REAL_CNCL_AMT
 		             , P.PG_GB
-		             , P.PAY_STAT
 		             , P.PAY_MEANS
 		             , FN_GET_CODE_NM('G014', P.PAY_MEANS)                              AS PAY_MEANS_NM
 		          FROM TB_ORDER_CHANGE OC
@@ -905,7 +903,7 @@
 				, Z.GFCD_USE_AMT, Z.ORD_DTL_NO, Z.GOODS_CD, Z.BRAND_NM, Z.SHOT_DELV_YN, Z.SELF_GOODS_YN, Z.GOODS_NM
 				, Z.GOODS_TYPE, Z.PRICE_ORG, Z.PRICE_SALE, Z.ADD_PAY_COST, Z.SYS_IMG_NM, Z.GIFT_PACK_YN, Z.REFUND_AMT, Z.RF_CPN1_AMT, Z.RF_TMTB1_AMT
 				, Z.RF_TMTB2_AMT, Z.RF_GOODS_CPN_AMT, Z.RF_CART_CPN_AMT, Z.RF_PNT_AMT, Z.RF_PRE_PNT_AMT, Z.RF_GFCD_USE_AMT, Z.RF_CNCL_AMT
-				, Z.RF_DELIVERY_FEE, Z.RF_REAL_CNCL_AMT, Z.PG_GB, Z.PAY_STAT, Z.PAY_MEANS, Z.PAY_MEANS_NM
+				, Z.RF_DELIVERY_FEE, Z.RF_REAL_CNCL_AMT, Z.PG_GB, Z.PAY_MEANS, Z.PAY_MEANS_NM
 		 ORDER BY Z.ORD_CHG_SQ DESC
 	</select>
 
@@ -960,7 +958,6 @@
 		     , Z.RF_DELIVERY_FEE
 		     , Z.RF_REAL_CNCL_AMT
 		     , Z.PG_GB
-		     , Z.PAY_STAT
 		     , Z.PAY_MEANS
 		     , Z.PAY_MEANS_NM
 		     , Z.WD_GB
@@ -1022,7 +1019,6 @@
 		             , R.RF_DELIVERY_FEE
 		             , R.RF_REAL_CNCL_AMT
 		             , P.PG_GB
-		             , P.PAY_STAT
 		             , P.PAY_MEANS
 		             , FN_GET_CODE_NM('G014', P.PAY_MEANS)                              AS PAY_MEANS_NM
 		             , OC.WD_GB
@@ -1086,7 +1082,7 @@
 		        , Z.GFCD_USE_AMT, Z.ORD_DTL_NO, Z.GOODS_CD, Z.BRAND_NM, Z.SHOT_DELV_YN, Z.SELF_GOODS_YN, Z.GOODS_NM
 		        , Z.GOODS_TYPE, Z.PRICE_ORG, Z.PRICE_SALE, Z.ADD_PAY_COST, Z.SYS_IMG_NM, Z.GIFT_PACK_YN, Z.REFUND_AMT, Z.RF_CPN1_AMT, Z.RF_TMTB1_AMT
 		        , Z.RF_TMTB2_AMT, Z.RF_GOODS_CPN_AMT, Z.RF_CART_CPN_AMT, Z.RF_PNT_AMT, Z.RF_PRE_PNT_AMT, Z.RF_GFCD_USE_AMT, Z.RF_CNCL_AMT
-		        , Z.RF_DELIVERY_FEE, Z.RF_REAL_CNCL_AMT, Z.PG_GB, Z.PAY_STAT, Z.PAY_MEANS, Z.PAY_MEANS_NM, Z.WD_GB, Z.CHGER_NM, Z.CHGER_PHNNO, Z.CHGER_BASE_ADDR
+		        , Z.RF_DELIVERY_FEE, Z.RF_REAL_CNCL_AMT, Z.PG_GB, Z.PAY_MEANS, Z.PAY_MEANS_NM, Z.WD_GB, Z.CHGER_NM, Z.CHGER_PHNNO, Z.CHGER_BASE_ADDR
 		        , Z.CHGER_DTL_ADDR, Z.CHGER_RTN_MEMO, Z.WD_INVOICE_NO, Z.SHIP_COMP_CD, Z.SHIP_COMP_NM
 		 ORDER BY Z.ORD_CHG_SQ DESC
 	</select>
@@ -1144,6 +1140,7 @@
 		     , Z.RECIP_BASE_ADDR
 		     , Z.RECIP_DTL_ADDR
 		     , Z.DELV_MEMO
+		     , Z.PG_TID
 		  FROM (SELECT OC.ORD_CHG_SQ
 		             , OC.CHG_GB
 		             , OCD.CHG_QTY
@@ -1198,6 +1195,7 @@
 		             , DA.RECIP_BASE_ADDR
 		             , DA.RECIP_DTL_ADDR
 		             , DA.DELV_MEMO
+		             , P.PG_TID
 		          FROM TB_ORDER_CHANGE OC
 		         INNER JOIN TB_ORDER_CHANGE_DETAIL OCD
 		            ON OC.ORD_CHG_SQ = OCD.ORD_CHG_SQ
@@ -1228,6 +1226,10 @@
 		          LEFT OUTER JOIN TB_COLOR C
 		            ON C.COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G1.MAIN_COLOR_CD)
 		           AND C.USE_YN = 'Y'
+		          LEFT OUTER JOIN TB_PAYMENT P
+		            ON P.ORD_CHG_SQ = OC.ORD_CHG_SQ
+		           AND P.PAY_GB = 'D'
+		           AND P.PAY_STAT = 'G016_30'
 		         WHERE OCD.DEL_YN = 'N'
 		           AND O.DISP_YN = 'Y'
 		<choose>
@@ -1248,7 +1250,7 @@
 		        , Z.GFCD_USE_AMT, Z.ORD_DTL_NO, Z.GOODS_CD, Z.BRAND_NM, Z.SHOT_DELV_YN, Z.SELF_GOODS_YN, Z.GOODS_NM
 		        , Z.GOODS_TYPE, Z.PRICE_ORG, Z.PRICE_SALE, Z.ADD_PAY_COST, Z.SYS_IMG_NM, Z.GIFT_PACK_YN, Z.WD_GB, Z.CHGER_NM, Z.CHGER_PHNNO, Z.CHGER_BASE_ADDR
 		        , Z.CHGER_DTL_ADDR, Z.CHG_MEMO, Z.WD_INVOICE_NO, Z.SHIP_COMP_CD, Z.SHIP_COMP_NM, Z.DELV_ADDR_SQ, Z.RECIP_NM, Z.RECIP_PHNNO
-		        , Z.RECIP_BASE_ADDR, Z.RECIP_DTL_ADDR, Z.DELV_MEMO
+		        , Z.RECIP_BASE_ADDR, Z.RECIP_DTL_ADDR, Z.DELV_MEMO, Z.PG_TID
 		 ORDER BY Z.ORD_CHG_SQ DESC
 	</select>
 	

+ 14 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml

@@ -1143,7 +1143,7 @@
 		/* TsfPlanning.saveAttendEntry */	
 		INSERT INTO TB_PLAN_ENTRY
 		        ( 
-		        , PLAN_SQ
+		         PLAN_SQ
 		        , ENTRY_CUST_NO
 		        , ENTRY_DT
 		        , ENTRY_VAL1
@@ -1185,7 +1185,9 @@
 		FROM TB_PLAN_ENTRY
 		WHERE 1=1 
 		 AND PLAN_SQ = #{planSq}
+		 <if test='entryAllYn == "N"'>
 		 AND DATE_FORMAT(ENTRY_DT, '%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')
+		 </if>
 		 AND ENTRY_CUST_NO = #{custNo}
 	</select>
 	
@@ -1202,6 +1204,17 @@
 		AND ENTRY_CUST_NO = #{custNo}
 	</select>
 	
+	<select id="getAttendBenefitList" resultType="Plan" parameterType="Plan">
+		/* TsfPlanning.getAttendBenefitList */	
+		SELECT PLAN_SQ 
+		      ,BAS_DAYS 
+		      ,BENEFIT_GB 
+		      ,PNT_AMT 
+		      ,CPN_ID 
+		FROM TB_PLAN_ATTEND 
+		WHERE PLAN_SQ = #{planSq}	
+	</select>
+	
 	<!-- 댓글 리스트  (수정필)-->
 	<select id="getReplyList" resultType="Plan" parameterType="Plan">
 		/* TsfPlanning.getReplyList */	

+ 34 - 62
src/main/webapp/WEB-INF/views/mob/cart/CartChangeOptionPopupMob.html

@@ -66,23 +66,29 @@
 								</a>
 							</li>
 						</ul>
-
-						<div class="opt_size">
-							<div class="opt_header">
-								<span class="title">사이즈</span>
-							</div>
-							<div class="form_field selfGoodsSize">
-								<th:block th:each="color, index : ${comp.cartColorList}" th:if="${color.cartColorNm != null}">
-									<th:block  th:if="${color.cartColorNm != null}">
-										<th:block th:each="size, index : ${color.cartSizeList}">
-											<div>
-												<input type="radio" name="rdi-optsize" th:id="|${'rdi-optsize' + size.goodsCd + '-' + size.optCd}|" th:value="${size.optCd}" th:checked="${size.cartOptCd != null}" th:disabled="${size.soldoutYn == 'Y' or cart.goodsQty > size.currStockQty}">
-												<label th:for="|${'rdi-optsize' + size.goodsCd + '-' + size.optCd}|"><span th:text="${size.optCd2}"></span></label>
-											</div>
+					</div>
+					<div class="opt_size">
+						<div class="opt_header">
+							<span class="title">사이즈</span>
+							<span class="info">
+									<th:block th:each="color, index : ${comp.cartColorList}" th:if="${color.cartColorNm != null}">
+										<th:block th:each="size, index : ${color.cartSizeList}" th:if="${size.cartOptCd != null}">
+											<span th:text="${size.optCd2}"></span>
+											<span th:if="${size.addPrice > 0}">(+<em th:text="${#numbers.formatInteger(size.addPrice, 1, 'COMMA')}"></em>)원</span>
 										</th:block>
 									</th:block>
+								</span>
+						</div>
+						<div class="form_field selfGoodsSize">
+							<th:block th:each="color, index : ${comp.cartColorList}" th:if="${color.cartColorNm != null}">
+								<th:block th:each="size, index : ${color.cartSizeList}">
+									<div>
+										<input type="hidden" name="addPrice" th:value="${size.addPrice}" />
+										<input type="radio" name="rdi-optsize" th:soldoutYn="${size.soldoutYn}" th:id="|${'rdi-optsize' + size.goodsCd + '-' + size.optCd}|" th:value="${size.optCd}" th:checked="${size.cartOptCd != null}" th:disabled="${size.soldoutYn == 'Y' or size.minOrdQty > size.currStockQty}">
+										<label th:for="|${'rdi-optsize' + size.goodsCd + '-' + size.optCd}|"><span class="sizeNameTxt" th:text="${size.optCd2}"></span></label>
+									</div>
 								</th:block>
-							</div>
+							</th:block>
 						</div>
 					</div>
 				</th:block>
@@ -115,7 +121,7 @@
 										<div class="select" th:text="${comp.colorNm}"></div>
 										<ul class="list" th:data="${comp.goodsCd}">
 											<th:block th:each="color, index : ${comp.cartColorList}">
-												<li th:classappend="${color.cartColorNm != null} ? 'selected'" th:data="${color.optCd1}" th:text="${color.colorNm}" th:aria-disabled="${color.soldoutYn.equals('Y') ? true : false}"></li>
+												<li th:classappend="${color.cartColorNm != null} ? 'selected'" th:colorNo="${color.colorNo}" th:data="${color.optCd1}" th:text="${color.colorNm}" th:aria-disabled="${color.soldoutYn.equals('Y') ? true : false}"></li>
 											</th:block>
 										</ul>
 									</div>
@@ -131,12 +137,12 @@
 						<form class="form_wrap">
 							<div class="form_field">
 								<th:block th:each="color, index : ${comp.cartColorList}">
-									<div class="select_custom item_opt2 sizeList" th:classappend="|${comp.goodsCd}_${color.optCd1} sizeList${comp.goodsCd}|" th:style="${color.cartColorNm != null ? 'display:inline-block' : 'display:none'}">
+									<div class="select_custom item_opt2 sizeList" th:classappend="|color_${comp.goodsCd}_${color.colorNo} sizeList${comp.goodsCd}|" th:style="${color.cartColorNm != null ? 'display:inline-block' : 'display:none'}">
 										<div class="combo">
 											<div class="select" th:classappend="|size_${comp.goodsCd}_size_nm|" th:text="${comp.optCd2}" th:data="${color.goodsCd}"></div>
 											<ul class="list setSizeSelect" th:classappend="|size_${comp.goodsCd}|" th:data="${comp.goodsCd}">
 												<th:block th:each="size, i : ${color.cartSizeList}" th:if="${color.optCd1.equals(size.optCd1)}">
-													<li th:classappend="${size.cartOptCd != null} ? selected" th:optCd="${size.optCd}" th:value="${size.optCd}" th:text="${size.optCd2}" th:aria-disabled="${color.soldoutYn.equals('Y') or size.soldoutYn.equals('Y') ? true : false}"></li>
+													<li th:classappend="${size.cartOptCd != null} ? selected" th:optCd="${size.optCd}" th:value="${size.optCd}" th:text="${size.optCd2}" th:aria-disabled="${color.soldoutYn.equals('Y') or size.soldoutYn.equals('Y') or size.minOrdQty > size.currStockQty ? true : false}"></li>
 												</th:block>
 											</ul>
 										</div>
@@ -172,7 +178,7 @@
 										<div class="select" th:text="${comp.colorNm}"></div>
 										<ul class="list" th:data="${comp.goodsCd}">
 											<th:block th:each="color, index : ${comp.cartColorList}">
-												<li th:classappend="${color.cartColorNm != null} ? 'selected'" th:data="${color.optCd1}" th:text="${color.colorNm}" th:aria-disabled="${color.soldoutYn.equals('Y') ? true : false}"></li>
+												<li th:classappend="${color.cartColorNm != null} ? 'selected'" th:colorNo="${color.colorNo}" th:data="${color.optCd1}" th:text="${color.colorNm}" th:aria-disabled="${color.soldoutYn.equals('Y') ? true : false}"></li>
 											</th:block>
 										</ul>
 									</div>
@@ -188,12 +194,12 @@
 						<form class="form_wrap">
 							<div class="form_field">
 								<th:block th:each="color, index : ${comp.cartColorList}">
-									<div class="select_custom item_opt2 sizeList" th:classappend="|${comp.goodsCd}_${color.optCd1} sizeList${comp.goodsCd}|" th:style="${color.cartColorNm != null ? 'display:inline-block' : 'display:none'}">
+									<div class="select_custom item_opt2 sizeList" th:classappend="|color_${comp.goodsCd}_${color.colorNo} sizeList${comp.goodsCd}|" th:style="${color.cartColorNm != null ? 'display:inline-block' : 'display:none'}">
 										<div class="combo">
 											<div class="select" th:classappend="|size_${comp.goodsCd}_size_nm|" th:text="${comp.optCd2}" th:data="${color.goodsCd}"></div>
 											<ul class="list setSizeSelect" th:classappend="|size_${comp.goodsCd}|" th:data="${comp.goodsCd}">
 												<th:block th:each="size, i : ${color.cartSizeList}" th:if="${color.optCd1.equals(size.optCd1)}">
-													<li th:classappend="${size.cartOptCd != null} ? selected" th:optCd="${size.optCd}" th:value="${size.optCd}" th:text="${size.optCd2}" th:aria-disabled="${color.soldoutYn.equals('Y') or size.soldoutYn.equals('Y') ? true : false}"></li>
+													<li th:classappend="${size.cartOptCd != null} ? selected" th:optCd="${size.optCd}" th:value="${size.optCd}" th:text="${size.optCd2}" th:aria-disabled="${color.soldoutYn.equals('Y') or size.soldoutYn.equals('Y') or size.minOrdQty > size.currStockQty ? true : false}"></li>
 												</th:block>
 											</ul>
 										</div>
@@ -233,10 +239,11 @@
 	$("#cartOptionModal .colorList > .combo > .list li").on("click", function(e) {
 		let goodsCd = $(this).parent().attr("data");
 		let optCd1 = $(this).attr("data");
+		let colorNo = $(this).attr("colorNo");
 		let firstSize = "";
 		if(optCd1 != $(".option1_" + goodsCd).val()) {
-			let firstOptCd = $("#cartOptionModal ." + goodsCd + "_" + optCd1 + " li:first").attr("optcd");
-			let firstOptCd2 = $("#cartOptionModal ." + goodsCd + "_" + optCd1 + " li:first").text();
+			let firstOptCd = $("#cartOptionModal .color_" + goodsCd + "_" + colorNo + " li:first").attr("optcd");
+			let firstOptCd2 = $("#cartOptionModal .color_" + goodsCd + "_" + colorNo + " li:first").text();
 
 			$("#cartOptionModal .chooseColorNm_" + goodsCd).text($(this).text());
 			$("#cartOptionModal .option_" + goodsCd).val(firstOptCd);
@@ -244,8 +251,8 @@
 			$("#cartOptionModal .option2_" + goodsCd).val(firstOptCd2);
 
 			$("#cartOptionModal .sizeList" + goodsCd).hide();
-			$("#cartOptionModal ." + goodsCd + "_" + optCd1).show();
-			$("#cartOptionModal ." + goodsCd + "_" + optCd1 + " .select").text(firstOptCd2);
+			$("#cartOptionModal .color_" + goodsCd + "_" + colorNo).show();
+			$("#cartOptionModal .color_" + goodsCd + "_" + colorNo + " .select").text(firstOptCd2);
 			$("#cartOptionModal .chooseSizeNm_" + goodsCd).text(firstOptCd2);
 		}
 	});
@@ -264,44 +271,9 @@
 		$('.optModify_pop .number_count .minus').addClass('min_val');
 	}
 
-	// 자사 일반 상품 컬러 선택시
-	$(".selfGoodsColorSelect").on("click", function(e) {
-		let sizeHtml = "";
-		let imgHtml = "";
-		let cart = [[${cart}]];
-		let color =  [[${cart.cartCompsList[0].cartColorList}]];
-		let optCd1 = $(this).attr("data");
-
-		for(let i = 0 ; i < color.length ; i++) {
-			let size = color[i].cartSizeList;
-			for(let j = 0 ; j < size.length ; j++) {
-				if(optCd1 == size[j].optCd1) {
-					sizeHtml += "<div>";
-					sizeHtml += "<input type='radio' name='rdi-optsize' id='" + size[j].goodsCd + "-" + size[j].optCd + "' value='" + size[j].optCd + "' ";
-					if(size[j].soldoutYn == "Y" || cart.goodsQty > size[j].currStockQty) {
-						sizeHtml += "disabled = 'disabled'";
-					}
-					sizeHtml += " />\n";
-					sizeHtml += "<label for='" + size[j].goodsCd + "-" + size[j].optCd + "'><span>" + size[j].optCd2 + "</span></label>\n"
-					sizeHtml += "</div>\n";
-				}
-			}
-
-			if(optCd1 == color[i].optCd1) {
-				for (let j = 0; j < color[i].cartImgList.length; j++) {
-					let img = color[i].cartImgList[j];
-					if(optCd1 == img.colorCd) {
-						imgHtml += "<li>\n<span class='thumb'>\n";
-						imgHtml += "<img src='" + _uploadGoodsUrl + "/" + img.sysImgNm + "' onerror='this.src='" + [[${@environment.getProperty('domain.uximage')}]] + "/images/pc/thumb/bg_item_none.png' alt='" + img.sysImgNm + "' />\n";
-						imgHtml += "</span>\n</li>\n";
-					}
-				}
-			}
-		}
-
-		$(".cartOptionModal .pic_list").html(imgHtml);
-		$(".cartOptionModal .selfGoodsSize").html(sizeHtml);
-	});
+	function getSelfColorList() {
+		return [[${cart.cartCompsList[0].cartColorList}]];
+	}
 
 	function fnChangeCartOption(cartSq) {
 		let cart = [[${cart}]];

+ 51 - 0
src/main/webapp/WEB-INF/views/mob/cart/CartListFormMob.html

@@ -187,6 +187,57 @@
 		$("#couponInfoPop_close").click(function() {
 			$("#couponInfoPop").modal("hide");
 		});
+
+		// 자사 일반 상품 사이즈 선택시
+		$(document).on("change", ".selfGoodsSize input[type=radio]", function() {
+			let addPrice = $(this).parent().find("input[name=addPrice]").val();
+			let sizeTextHtml = "<span>" + $(this).parent().find(".sizeNameTxt").text() + "</span>";
+			if(addPrice > 0) {
+				sizeTextHtml += "<span>(+<em>" + Number(addPrice).toLocaleString() + "</em>)원</span>";
+			}
+			$(this).parent().parent().parent().find(".opt_header>.info").html(sizeTextHtml);
+		});
+
+		// 자사 일반 상품 컬러 선택시
+		$(document).on("click", ".selfGoodsColorSelect", function(e) {
+			let sizeHtml = "";
+			let imgHtml = "";
+			let color =  getSelfColorList();
+			let optCd1 = $(this).attr("data");
+
+			for(let i = 0 ; i < color.length ; i++) {
+				let size = color[i].cartSizeList;
+				for(let j = 0 ; j < size.length ; j++) {
+					if(optCd1 == size[j].optCd1) {
+						sizeHtml += "<div>";
+						sizeHtml += "<input type='hidden' name='addPrice' value='" + size[j].addPrice + "' />";
+						sizeHtml += "<input type='radio' name='rdi-optsize' id='rdi-optsize" + size[j].goodsCd + "-" + size[j].optCd + "' value='" + size[j].optCd + "' ";
+						if(size[j].soldoutYn == "Y" || size[j].minOrdQty > size[j].currStockQty) {
+							sizeHtml += "disabled = 'disabled'";
+						}
+						sizeHtml += " />\n";
+						sizeHtml += "<label for='rdi-optsize" + size[j].goodsCd + "-" + size[j].optCd + "'><span class='sizeNameTxt'>" + size[j].optCd2 + "</span></label>\n"
+						sizeHtml += "</div>\n";
+					}
+				}
+
+				if(optCd1 == color[i].optCd1) {
+					for (let j = 0; j < color[i].cartImgList.length; j++) {
+						let img = color[i].cartImgList[j];
+						if(optCd1 == img.colorCd && img.defaultImgYn == "Y") {
+							imgHtml += '<img src="' + _uploadGoodsUrl + "/" + img.sysImgNm + '?RS=100" onerror="' + _uximgUrl + '/images/pc/thumb/bg_item_none.png" alt="' + img.sysImgNm + '" />\n';
+							/*imgHtml += "<li>\n<span class='thumb'>\n";
+							imgHtml += "<img src='" + _uploadGoodsUrl + "/" + img.sysImgNm + "' onerror='this.src='" + [[${@environment.getProperty('domain.uximage')}]] + "/images/pc/thumb/bg_item_none.png' alt='" + img.sysImgNm + "' />\n";
+							imgHtml += "</span>\n</li>\n";*/
+						}
+					}
+				}
+			}
+
+			$(".cartOptionModal .area_order .goods_section .goods_detail .thumb_box").html(imgHtml);
+			$(".cartOptionModal .selfGoodsSize").html(sizeHtml);
+			$(".cartOptionModal .opt_size .opt_header .info").html("");
+		});
 	});
 
 	function getCartList(parameter) {

+ 272 - 176
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -35,6 +35,7 @@
 		<input type="hidden" name="stock" />
 		<input type="hidden" name="minOrdQty"/>
 		<input type="hidden" name="maxOrdQty"/>
+		<input type="hidden" name="currPrice" th:value="${goodsInfo.currPrice}"/>
 		<input type="hidden" name="goodsType" th:value="${goodsInfo.goodsType}"/>
 		<input type="hidden" name="selfGoodsYn" th:value="${goodsInfo.selfGoodsYn}"/>
 	<section class="pd_detail">
@@ -680,17 +681,17 @@
 								<div class="nomOption">
 									<div class="form_wrap">
 										<div class="form_field">
-											<div class="select_custom item_opt1 item_opt1_1"  th:classappend="${goodsInfo.goodsCd}">
+											<div class="select_custom item_opt1 item_opt1_1"  th:classappend="${goodsInfo.goodsCd}" th:attr="id=${goodsInfo.goodsCd}">
 												<div class="combo">
 													<div class="select">선택</div>
 													<ul class="list" style="display: none;">
 														<li class="selected" th:id="|selfGoodsOpt1${goodsInfo.goodsCd}|" >선택</li> 
 														<th:block th:each="goodsOption, optionStatus : ${goodsOption1List}" >
-														<li th:onclick="fnOption2([[${optionStatus.count}]], [[${goodsOption.goodsCd}]],[[${goodsOption.optCd1}]],1,[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]], [[${goodsInfo.currPrice}]])"
+														<li th:onclick="fnOption2([[${optionStatus.count}]], [[${goodsOption.goodsCd}]],[[${goodsOption.optCd1}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]])"
 															th:attr="aria-disabled=${(goodsOption.goodsStat != 'G008_90' or goodsOption.stockQty <= 0)? 'true':''}, data-soldout=${(goodsOption.goodsStat != 'G008_90'  or goodsOption.stockQty <= 0)? 'true':''}">
 															<div th:text="${goodsOption.optCd1}">상품옵션</div>
 															<div th:if="${goodsOption.addPrice > 0}" th:text="|${#numbers.formatInteger(goodsOption.addPrice, 0,'COMMA')}원|">0원</div>
-															<input type="hidden" name="opt1" th:value="${goodsOption.goodsCd}" th:attr="currPrice=${goodsInfo.currPrice}, selfGoodsYn=${goodsOption.selfGoodsYn}"/>
+															<input type="hidden" name="opt" th:value="${goodsOption.goodsCd}" th:attr="selfGoodsYn=${goodsOption.selfGoodsYn}"/>
 														</li>
 														</th:block>
 													</ul>
@@ -717,17 +718,17 @@
 									<div class="form_wrap"  th:each="goodsCompose, status : ${goodsComposeList}">
 										<div class="form_field">
 											<p class="title" th:text="${goodsCompose.compsGoodsFullNm}">슬림핏</p>
-											<div class="select_custom item_opt1" th:classappend="${'item_opt1_'+status.count +' '+goodsCompose.compsGoodsCd}" 
+											<div class="select_custom item_opt1" th:classappend="${'item_opt1_'+status.count +' '+goodsCompose.compsGoodsCd}" th:attr="id=${goodsCompose.compsGoodsCd}, qty=${goodsCompose.qty}"
 																				th:if="${goodsCompose.goodsOption1List != null and !goodsCompose.goodsOption1List.empty}" >
 												<div class="combo">
 													<div class="select">선택</div>
 													<ul class="list" style="display: none;">
 														<th:block th:each="goodsOption, optionStatus : ${goodsCompose.goodsOption1List}" >
 														<li class="selected" th:id="|selfGoodsOpt1${goodsCompose.compsGoodsCd}|" th:if=${optionStatus.first}>선택</li> 
-														<li th:onclick="fnOption2([[${status.count}]], [[${goodsOption.goodsCd}]],[[${goodsOption.optCd1}]],[[${goodsCompose.qty}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]], [[${goodsOption.currPrice}]])"
+														<li th:onclick="fnOption2([[${status.count}]], [[${goodsOption.goodsCd}]],[[${goodsOption.optCd1}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]])"
 															th:attr="aria-disabled=${(goodsCompose.goodsStat != 'G008_90')? 'true':''}, data-soldout=${(goodsCompose.goodsStat != 'G008_90')? 'true':''}"
-															th:text="${goodsOption.optCd1}">상품옵션
-															<input type="hidden" name="opt" th:attr="addPrice=${goodsOption.addPrice}, optCd1=${goodsOption.optCd1},optCd2=${goodsOption.optCd2}, optCd=${goodsOption.optCd}"/>
+															><th:block th:text="${goodsOption.optCd1}"></th:block>
+															<input type="hidden" name="opt" th:value="${goodsOption.goodsCd}" th:attr="optCd1=${goodsOption.optCd1},optCd2=${goodsOption.optCd2}, optCd=${goodsOption.optCd}"/>
 														</li>
 														</th:block>
 													</ul>
@@ -921,6 +922,7 @@
 
 				fnSetTotalPrice();
 				
+				
 				$("#cartForm  input[name=opt]").each(function(){
 					if ($(this).attr('id') == optCd){
 				//		$(this).prop('checked', true);
@@ -938,7 +940,8 @@
 		let $obj = $(obj);
 		let $target = $obj.find('input[name="opt2"]');
 		let goodsCd = $target.attr("goodsCd");
-		let currPrice = $target.attr("currPrice");
+		//let currPrice = $target.attr("currPrice");
+		let currPrice = $('#cartForm input[name=currPrice]').val();
 		let optCd = $target.attr("optCd");
 		let optCd1 = $target.attr("optCd1");
 		let optCd2 = $target.attr("optCd2");
@@ -981,10 +984,6 @@
 			}
 			
 			//상품정보
-			let $selObj = $('.pd_descrp_pop .form_field .select_custom.deal_opt_item');
-			//let $goodsObj =$selObj.find('.combo .select').find('input[name=selectGoods]');
-			//let goodsNm =  $goodsObj.attr('goodsnm');
-			//let goodsCd =  $goodsObj.attr('goodscd');
 			let price = parseInt(currPrice)+ parseInt(addPrice);
 			
 			let tag = "";
@@ -995,7 +994,7 @@
 			tag += '		</div>\n';
 			tag += '	</div>\n';
 			tag += '	<div class="number_count">\n';
-			tag += '		<span class="minus" onclick="fnAdjustOrderEa(this);" adjust="-"><em class="sr-only">감소</em></span>\n';
+			tag += '		<span class="minus min_val" onclick="fnAdjustOrderEa(this);" adjust="-"><em class="sr-only">감소</em></span>\n';
 			tag += '		<input type="text" name="cea" optCd="'+optCd+'" maxlength="3" style="ime-mode:disabled" value="' +optQty+'" onblur="fnChangeOrderEa(this)" minOrdQty="'+minOrdQty+'" maxOrdQty="'+maxOrdQty+'" data-valid-type="numeric">\n';
 			tag += '		<input type="hidden" name="coption" value="'+optCd+'"  goodsCd="'+goodsCd+'"  price="'+currPrice+'"  addPrice="'+addPrice+'">\n';
 			tag += '		<span class="plus" onclick="fnAdjustOrderEa(this);" adjust="+"><em class="sr-only">추가</em></span>\n';
@@ -1007,11 +1006,8 @@
 			tag += '</div>\n';
 			
 			
-			let $objUp = null;
-			$objUp = $('.pd_detail .opt_result'); 
-			
+			let $objUp = $('.pd_detail .opt_result'); 
 			$objUp.append(tag);
-			
 			fnSetTotalPrice();
 			
 			// 해야하나 말아야하나
@@ -1021,18 +1017,21 @@
 	}
 	
 	//세트 사이즈 클릭시
-	function fnViewStockSet(obj, goodsCd, optCd1, optCd2, minOrdQty, maxOrdQty) {
+	function fnViewStockSet(obj, goodsCd, optCd, optCd1, optCd2, minOrdQty, maxOrdQty) {
 		
 		let target=$('.select_custom.item_opt2');
 		let targetSize = target.length;	//구성품 갯수
+		let goodsOption = [];
 		
-		//eskim
 		let cnt = 0;
 		let itemSize = 0;
+		let resultOptCd = "";  
 		target.each(function(){
 			if (typeof ($(this).find('.select').find('input[name=opt2]').val()) != 'undefined' &&  !gagajf.isNull($(this).find('.select').find('input[name=opt2]').val())){
-				if (goodsCd != $(this).find('.select').find('input[name=opt2]').val()){
+				if (goodsCd != $(this).find('.select').find('input[name=opt2]').attr('goodscd')){
 					itemSize ++;
+					resultOptCd += $(this).find('.select').find('input[name=opt2]').attr('optcd') + "_";
+					goodsOption.push($(this).find('input[name=opt2]').val());   //goodsCd|optCd|qty	
 				}
 			}
 		});
@@ -1042,40 +1041,112 @@
 			itemSize ++;
 		}
 		
+		//내가 선택하 옵션
+		resultOptCd += $(obj).find('input[name=opt2]').attr('optcd') + "_";
+		goodsOption.push($(obj).find('input[name=opt2]').val());   //goodsCd|optCd|qty	
+		
+		
+		// 중복선택 확인  opt_result
+		let arrSelOpt = resultOptCd.split("_");	// 내가 선택한 옵션목록
+		let selCnt = 0;
+		let overlap = 0;
+		$('.pd_detail .opt_result .number_count').each(function() {
+			let val = $('input[name="coption"]', this).val();
+			val = val.replaceAll('result_', '');
+			let arrOpt = val.split("_");
+			
+			for(var i=0;i<arrOpt.length;i++){
+				for(var j=0;j<arrSelOpt.length;j++){
+					if (gagajf.isNull(arrOpt[i]) || gagajf.isNull(arrSelOpt[j])) continue;
+					if (arrOpt[i] == arrSelOpt[j]){
+						selCnt++;
+					}
+				}
+			}
+			
+			if (Number(itemSize) == Number(selCnt)) {
+				++overlap;
+			}
+			
+		});
+		
+		if (overlap > 0) {
+			mcxDialog.alert("이미 선택하신 옵션입니다.");
+			return false;
+		}
+		
 		let mGoodsCd = $("#cartForm  input[name=goodsCd]").val();
 		let selfGoodsYn = $("#cartForm  input[name=selfGoodsYn]").val();
-		let goodsOption = [];
+		
 		if (targetSize == itemSize){
-			target.each(function() {
-				if (typeof ($(obj).find('input[name=opt2]').val()) != 'undefined' && !gagajf.isNull($(obj).find('input[name=opt2]').val())){
-					goodsOption.push($(this).find('input[name=opt2]').val());	
-				}
-			});
 			
-			var maxCnt = maxOrdQty;
-			var data = {arrGoodsOption : goodsOption
+			let maxCnt = maxOrdQty;
+			let optQty = minOrdQty;
+			let data = {arrGoodsOption : goodsOption
 						,minOrdQty : minOrdQty
 						,maxOrdQty : maxOrdQty
 						,goodsCd : mGoodsCd
 						,selfGoodsYn : selfGoodsYn
 						};
-			var jsonData = JSON.stringify(data);
+			let jsonData = JSON.stringify(data);
 			
 			gagajf.ajaxJsonSubmit('/goods/detail/ajaxGoodsSetStockQty', jsonData, function(result) {
 				var itemCnt = eval(result); //해당 아이템에 선택되어진 사이즈의 수량
-				//console.log("itemCnt : "+itemCnt);
 				if (maxCnt > itemCnt) {
 					maxCnt = itemCnt;
 				}
 	
-				$("#cartForm  input[name=ordQty]").val(minOrdQty);
-				$("#cartForm  input[name=maxOrdQty]").val(maxCnt);
-				$("#cartForm  input[name=minOrdQty]").val(minOrdQty);
-				$("#cartForm  input[name=cea]").val(minOrdQty);
-				$("#cartForm  input[name=cea]").attr("readonly",false);
-				$("#cartForm  input[name=stock]").val(itemCnt);
-	
+				if (minOrdQty > itemCnt) {
+					//alert("무슨작업을 해야할가요?");
+					return false;		 //무슨작업을 해야하나?
+				}
+				
+				//상품정보
+				let $selObj = $('.pop_option_select .setOption .form_wrap');
+				let currPrice = Number($('#cartForm input[name=currPrice]').val());
+				let price = currPrice;
+				let addPrice = 0; 
+				resultOptCd = "";
+				
+				$selObj.each(function() {
+					resultOptCd += $(this).find('input[name=opt2]').attr('optcd') + "_";
+				});
+				
+				let tag = "";
+				tag += '<div class="result_item  result_'+resultOptCd+'">\n';
+				tag += '	<div class="opt_header">\n';
+				
+				$selObj.each(function() {
+					tag += '		<div class="bundle">\n';
+					tag += '			<span class="item_name">'+$(this).find('.title').text()+'</span>\n';
+					tag += '			<span class="item_option">'+$(this).find('input[name=opt2]').attr('optcd1')+'/'+$(this).find('input[name=opt2]').attr('optcd2')+'</span>\n';
+					tag += '			<input type="hidden" name="selOption" goodsCd="'+goodsCd+'"  optCd="'+optCd+'" qty="'+$(this).find('.item_opt1 ').attr('qty')+'" />	\n';
+					tag += '		</div>\n';
+					addPrice += Number($(this).find('input[name=opt2]').attr('addprice'));
+				});
+				
+				price = Number(currPrice) + Number(addPrice);
+				tag += '	</div>\n';
+				tag += '	<div class="number_count">\n';
+				tag += '		<span class="minus min_val" onclick="fnAdjustOrderEa(this);" adjust="-"><em class="sr-only">감소</em></span>\n';
+				tag += '		<input type="text" name="cea" optCd="'+resultOptCd+'" maxlength="3" style="ime-mode:disabled" value="' +optQty+'" onblur="fnChangeOrderEa(this)" minOrdQty="'+minOrdQty+'" maxOrdQty="'+maxCnt+'" data-valid-type="numeric">\n';
+				tag += '		<input type="hidden" name="coption" value="'+resultOptCd+'"  goodsCd="'+goodsCd+'"  price="'+currPrice+'"  addPrice="'+addPrice+'">\n';
+				tag += '		<span class="plus" onclick="fnAdjustOrderEa(this);" adjust="+"><em class="sr-only">추가</em></span>\n';
+				tag += '	</div>\n';
+				tag += '	<div class="item_price">\n';
+				tag += '		<p><em id="goodsPrice">'+price.addComma() +'</em>원</p>\n';
+				tag += '	</div>\n';
+				tag += '	<button type="button" class="btn_delete_item" onclick="fnSelectGoodsDel(\''+resultOptCd+'\')"><span>삭제</span></button>\n';
+				tag += '</div>\n';
+				
+				
+				let $objUp = null;
+				$objUp = $('.pd_detail .opt_result'); 
+				
+				$objUp.append(tag);
+				
 				fnSetTotalPrice();
+				
 			}); 
 		}
 	}
@@ -1086,15 +1157,43 @@
 		// 품절제외 여부
 		let optionSoldoutSkip = $('.pop_option_select').find('input[name=soldoutSkipYn]').is(":checked") ? 'Y' : 'N';
 		
-		let data = {goodsCd : goodsCd
-					,optionSoldoutSkip : optionSoldoutSkip };
-		let jsonData = JSON.stringify(data);
+		// 입점
+		if("N" == $("#cartForm  input[name=selfGoodsYn]").val() ){
+			let data = {goodsCd : goodsCd
+					,optionSoldoutSkip : optionSoldoutSkip 
+					};
+			let jsonData = JSON.stringify(data);
+			
+			fnOption1Display(ridx, jsonData );
+			
+		}else if("G056_S" == $("#cartForm  input[name=goodsType]").val() ){ 
+
+			let idx = 1;
+			target=$('.select_custom.item_opt1');
+			target.each(function(){
+				let data = {goodsCd : $(this).attr('id')
+							,optionSoldoutSkip : optionSoldoutSkip 
+							};
+				let jsonData = JSON.stringify(data);
+				
+				fnOption1Display(idx, jsonData );
+				
+				idx++;
+				
+			});
+			
+		}
+	}
+	
+	// 옵션1 노출처리
+	var fnOption1Display = function(ridx, jsonData ){
+		
 		gagajf.ajaxJsonSubmit('/goods/detail/option1/list', jsonData, function(result) {
 			
-			if (result.dataList != null && result.dataList.length > 0) {debugger;
+			if (result.dataList != null && result.dataList.length > 0) {
 				let tag = "";
 				let $obj = null;
-				
+				let selfGoodsYn = 'N';
 				$.each(result.dataList, function(idx, item) {
 					if (idx == 0){
 						
@@ -1105,13 +1204,13 @@
 						tag += '<ul class="list" style="display: none;">\n';
 						//------
 						tag += '<li class="selected" id="selfGoodsOpt'+item.goodsCd+'">선택</li>\n';
-						
+						selfGoodsYn = item.selfGoodsYn;
 					}
 					let soldoutYn = ""; 
 					if ("G008_90" != item.goodsStat || item.stockQty <= 0) soldoutYn = "true";
-					tag += '<li aria-disabled="'+soldoutYn+'" data-soldout="'+soldoutYn +'" onclick="fnOption2('+ (idx+1)+', \''+ item.goodsCd+'\' , \''+ item.optCd1+'\' , \''+ item.minOrdQty+'\', \''+ item.maxOrdQty+'\', \''+item.currPrice+'\')">\n';	
+					tag += '<li aria-disabled="'+soldoutYn+'" data-soldout="'+soldoutYn +'" onclick="fnOption2('+ (idx+1)+', \''+ item.goodsCd+'\' , \''+ item.optCd1+'\', \''+ item.minOrdQty+'\', \''+ item.maxOrdQty+'\' )">\n';	
 					tag += '<div>' +item.optCd1 +'</div>';
-					tag += '<input type="hidden" name="opt1" value="'+ item.goodsCd+' currPrice="'+ item.currPrice +'" selfGoodsYn="'+ selfGoodsYn+'"/>\n';
+					tag += '<input type="hidden" name="opt" value="'+ item.goodsCd+'" optCd1="'+ item.optCd1 +'" qty="'+ item.qty +'" />\n';
 					tag += '</li>\n';
 				});
 				
@@ -1121,7 +1220,7 @@
 					tag += '</div>\n';
 					//------	
 				}
-debugger;
+
 				if (selfGoodsYn == "Y"){
 					if (ridx == 1){
 						$obj = $('.pop_option_select .select_custom.item_opt1.item_opt1_1');	
@@ -1141,19 +1240,19 @@ debugger;
 				$obj.append(tag);
 				if (selfGoodsYn == "Y"){
 					if (ridx == 1){
-						var opt_selecter02_1 = new sCombo('.pop_option_select .select_custom.item_opt1.item_opt1_1');	
+						var opt_selecter01_1 = new sCombo('.pop_option_select .select_custom.item_opt1.item_opt1_1');	
 					}else if (ridx == 2){
-						var opt_selecter02_2 = new sCombo('.pop_option_select .select_custom.item_opt1.item_opt1_2');	
+						var opt_selecter01_2 = new sCombo('.pop_option_select .select_custom.item_opt1.item_opt1_2');	
 					}else if (ridx == 3){
-						var opt_selecter02_3 = new sCombo('.pop_option_select .select_custom.item_opt1.item_opt1_3');
+						var opt_selecter01_3 = new sCombo('.pop_option_select .select_custom.item_opt1.item_opt1_3');
 					}else if (ridx == 4){
-						var opt_selecter02_4 = new sCombo('.pop_option_select .select_custom.item_opt1.item_opt1_4');
+						var opt_selecter01_4 = new sCombo('.pop_option_select .select_custom.item_opt1.item_opt1_4');
 					}else{
-						var opt_selecter02_5 = new sCombo('.pop_option_select .select_custom.item_opt1.item_opt1_5');
+						var opt_selecter01_5 = new sCombo('.pop_option_select .select_custom.item_opt1.item_opt1_5');
 					}
 					
 				}else{
-					var opt_selecter02 = new sCombo('.pop_option_select .select_custom.item_opt1.item_opt1_1');
+					var opt_selecter01_1 = new sCombo('.pop_option_select .select_custom.item_opt1.item_opt1_1');
 					$('.pop_option_select .select_custom.item_opt2 .combo .list > li').eq(0).trigger("click");
 					$('.pop_option_select .select_custom.item_opt2.item_opt2_1').attr('disabled',true)
 				}	
@@ -1167,7 +1266,7 @@ debugger;
 	}
 	
 	// 옵션2 조회
-	var fnOption2 = function(ridx, goodsCd, optCd1, qty, minOrdQty, maxOrdQty , currPrice){
+	var fnOption2 = function(ridx, goodsCd, optCd1, minOrdQty, maxOrdQty){
 		
 		// 품절제외 여부
 		let optionSoldoutSkip = $('.pop_option_select').find('input[name=soldoutSkipYn]').is(":checked") ? 'Y' : 'N';
@@ -1175,8 +1274,8 @@ debugger;
 		let selfGoodsYn = $("#cartForm  input[name=selfGoodsYn]").val();
 		let data = {goodsCd : goodsCd
 					,optCd1 : optCd1
-					,adminYn : $("#cartForm  input[name=adminYn]").val()
 					,optionSoldoutSkip : optionSoldoutSkip
+					,mastrGoodsCd : $('#cartFprm input[name=goodsCd]').val()
 					};
 		let jsonData = JSON.stringify(data);
 	
@@ -1200,8 +1299,9 @@ debugger;
 					}
 					
 				}else{
-					$obj = $('.form_field .select_custom.item_opt2.item_opt2_1');
+					$obj = $('.pop_option_select .select_custom.item_opt2.item_opt2_1');
 				}	
+				let qty = $obj.parent().parent().find('.select_custom').attr('qty'); // 구성수량
 				
 				$.each(result.dataList, function(idx, item) {
 					if (idx == 0){
@@ -1218,9 +1318,10 @@ debugger;
 						tag += '<li class="selected" id="goodsOpt2'+item.goodsCd+'">선택</li>\n';	
 					}
 					let soldoutYn = ""; 
-					if ("Y" == item.soldoutYn || item.stockQty <= 0)soldoutYn = "true";
+					let saleQty = (Number(qty) * Number(minOrdQty));
+					if ("Y" == item.soldoutYn || Number(item.stockQty) <= Number(saleQty))soldoutYn = "true";
 					if (selfGoodsYn == "Y"){
-						tag += '<li aria-disabled="'+soldoutYn+'" data-soldout="'+soldoutYn +'" onclick="fnViewStockSet(this, \''+ item.goodsCd+'\' , \''+ item.optCd1+'\' , \''+ item.optCd2+'\', \''+ minOrdQty+'\', \''+ maxOrdQty+'\')">\n';	
+						tag += '<li aria-disabled="'+soldoutYn+'" data-soldout="'+soldoutYn +'" onclick="fnViewStockSet(this, \''+ item.goodsCd+'\' , \''+ item.optCd+'\' , \''+ item.optCd1+'\' , \''+ item.optCd2+'\', \''+ minOrdQty+'\', \''+ maxOrdQty+'\')">\n';	
 					}else{
 						tag += '<li aria-disabled="'+soldoutYn+'" data-soldout="'+soldoutYn +'" onclick="fnViewStockSelfNo(this)">\n';
 					}
@@ -1230,7 +1331,7 @@ debugger;
 					}else{
 							
 					}
-					tag += '<input type="hidden" name="opt2" value="'+ item.goodsCd+'|'+item.optCd +'|'+qty +'" goodsCd="'+item.goodsCd+'" currPrice="'+ currPrice +'" addPrice="'+item.addPrice+'"  optCd="'+item.optCd+'"  optCd1="'+item.optCd1+'"  optCd2="'+item.optCd2+'"  minOrdQty="'+minOrdQty+'"  maxOrdQty="'+maxOrdQty+'" selfGoodsYn="'+selfGoodsYn+'"/>\n';
+					tag += '<input type="hidden" name="opt2" value="'+ item.goodsCd+'|'+item.optCd +'|'+qty +'" goodsCd="'+item.goodsCd+'" currPrice="'+ item.currPrice +'" addPrice="'+item.addPrice+'"  optCd="'+item.optCd+'"  optCd1="'+item.optCd1+'"  optCd2="'+item.optCd2+'"  minOrdQty="'+minOrdQty+'"  maxOrdQty="'+maxOrdQty+'" selfGoodsYn="'+selfGoodsYn+'"/>\n';
 					tag += '</li>\n';
 				});
 				
@@ -1241,7 +1342,6 @@ debugger;
 					//------	
 				}
 				
-				
 				$obj.append(tag);
 				if (selfGoodsYn == "Y"){
 					if (ridx == 1){
@@ -1257,7 +1357,7 @@ debugger;
 					}
 					
 				}else{
-					var opt_selecter02 = new sCombo('.pop_option_select .select_custom.item_opt2.item_opt2_1');
+					var opt_selecter02_1 = new sCombo('.pop_option_select .select_custom.item_opt2.item_opt2_1');
 				}	
 			}
 			
@@ -1268,34 +1368,23 @@ debugger;
 	// 수량 변경 클릭
 	var fnAdjustOrderEa = function(obj) {
 
-		if ("Y" == $("#cartForm  input[name=selfGoodsYn]").val()){
-			if("G056_N" == $("#cartForm  input[name=goodsType]").val() ){
-				if(gagajf.isNull($("#cartForm  input[name=optCd2]").val())){
-					mcxDialog.alert("사이즈를 선택하세요.");
-					return false;
-				}
-			}else{  //세트
-				let target=$('.select_custom.item_opt2');
-				let targetSize = target.length;	//구성품 갯수
-				let itemSize = 0;
-				target.each(function(){
-					if (typeof ($(this).find('.select').find('input[name=opt2]').val()) != 'undefined' &&  !gagajf.isNull($(this).find('.select').find('input[name=opt2]').val())){
-						itemSize ++;
-					}
-				});
-				
-				if (targetSize != itemSize){
-					mcxDialog.alert("구성상품들의 옵션을 선택하세요.");
-					return false;
-				}
-			}
-		}
-
 		let $obj = $(obj);
 		let $target = $obj.parent().children('input[name="cea"]');
-		let minOrdQty = parseInt( $target.attr('minOrdQty'));
-		let maxOrdQty = parseInt( $target.attr('maxOrdQty'));
 		let ea =parseInt($target.val());
+		let minOrdQty = 0;
+		let maxOrdQty = 0;
+		if ("Y" == $("#cartForm  input[name=selfGoodsYn]").val() && "G056_N" == $("#cartForm  input[name=goodsType]").val()){
+			if(gagajf.isNull($("#cartForm  input[name=optCd2]").val())){
+				mcxDialog.alert("사이즈를 선택하세요.");
+				return false;
+			}
+			minOrdQty = parseInt($("#cartForm  input[name=minOrdQty]").val());
+			maxOrdQty = parseInt($("#cartForm  input[name=maxOrdQty]").val());
+		}else{
+			
+			minOrdQty = parseInt( $target.attr('minOrdQty'));
+			maxOrdQty = parseInt( $target.attr('maxOrdQty'));
+		}
 
 		if ($obj.attr('adjust') == '-') --ea;
 		else ++ea;
@@ -1316,50 +1405,44 @@ debugger;
 	//옵션 갯수 변경
 	var fnChangeOrderEa = function(obj) {
 		
-		if ("Y" == $("#cartForm  input[name=selfGoodsYn]").val()){
-			if("G056_N" == $("#cartForm  input[name=goodsType]").val()){
-				if(gagajf.isNull($("#cartForm  input[name=optCd2]").val())){
-					mcxDialog.alert("사이즈를 선택하세요.");
-					return false;
-				}
-			}else{
-				
-				let target=$('.select_custom.item_opt2');
-				let targetSize = target.length;	//구성품 갯수
-				let itemSize = 0;
-				target.each(function(){
-					if (typeof ($(this).find('.select').find('input[name=opt2]').val()) != 'undefined' &&  !gagajf.isNull($(this).find('.select').find('input[name=opt2]').val())){
-						itemSize ++;
-					}
-				});
-				
-				if (targetSize != itemSize){
-					mcxDialog.alert("구성상품들의 옵션을 선택하세요.");
-					return false;
-				}
-			}
-		}	
-
 		let $obj = $(obj);
+		let $target = $obj.parent().children('input[name="cea"]');
 		let ea = parseInt($obj.val());
-		let maxOrdQty = parseInt($(obj).attr('maxOrdQty'));
-		let minOrdQty = parseInt($(obj).attr('minOrdQty'));
 		let optCd =  $(obj).attr('optCd');
+		let minOrdQty = parseInt($("#cartForm  input[name=minOrdQty]").val());
+		let maxOrdQty = parseInt($("#cartForm  input[name=maxOrdQty]").val());
+		if ("Y" == $("#cartForm  input[name=selfGoodsYn]").val() && "G056_N" == $("#cartForm  input[name=goodsType]").val()){
+			if(gagajf.isNull($("#cartForm  input[name=optCd2]").val())){
+				mcxDialog.alert("사이즈를 선택하세요.");
+				return false;
+			}
+		}else{
+
+			maxOrdQty = parseInt($(obj).attr('maxOrdQty'));
+			minOrdQty = parseInt($(obj).attr('minOrdQty'));
+			optCd =  $(obj).attr('optCd');
+		}
+		
 		let alertMsg = '';
 		
 		if (ea < minOrdQty) {
-			alertMsg ="최소 주문 가능 수량은 "+buymin+"개 입니다.";
+			alertMsg ="최소 주문 가능 수량은 "+minOrdQty+"개 입니다.";
 			ea = minOrdQty;
 		}
 
 		if (ea > maxOrdQty) {
-			alertMsg = "최대 주문 가능 수량은 "+buymax+"개 입니다.";
+			alertMsg = "최대 주문 가능 수량은 "+maxOrdQty+"개 입니다.";
 			ea = maxOrdQty;
 		}
-
-		$("#cartForm  input[name=cea]").val(ea);
-		$("#cartForm  input[name=ordQty]").val(ea);
-		obj.value = ea;
+		
+		if ("Y" == $("#cartForm  input[name=selfGoodsYn]").val() && "G056_N" == $("#cartForm  input[name=goodsType]").val()){
+			$("#cartForm  input[name=cea]").val(ea);
+			$("#cartForm  input[name=ordQty]").val(ea);
+		}
+		
+		//obj.value = ea;
+		$target.val(ea);
+		$target.attr('value', ea);
 		
 		if (alertMsg != ''){
 			mcxDialog.alert(alertMsg);
@@ -1371,13 +1454,17 @@ debugger;
 		}else{
 			$('.number_count').find('.minus').removeClass('min_val');
 		}
+		if ("Y" == $("#cartForm  input[name=selfGoodsYn]").val() && "G056_N" == $("#cartForm  input[name=goodsType]").val()){
+			
+		}else{
+			let addPrice = parseInt($obj.parent().find('input[name="coption"]').attr('addprice'));
+			let goodsPrice = parseInt($obj.parent().find('input[name="coption"]').attr('price'));
+			let totalPrice = ((goodsPrice+addPrice) * ea);
+			$('.opt_result .result_'+optCd+' .number_count').find('input[name=cea]').val(ea);
+			$('.opt_result .result_'+optCd+' .number_count').find('input[name=cea]').attr('value',ea);
+			$('.opt_result .result_'+optCd+' .item_price').find('em').text(totalPrice.addComma());	
+		}
 		
-		let addPrice = parseInt($obj.parent().find('input[name="coption"]').attr('addprice'));
-		let goodsPrice = parseInt($obj.parent().find('input[name="coption"]').attr('price'));
-		let totalPrice = ((goodsPrice+addPrice) * ea);
-		$('.opt_result .result_'+optCd+' .number_count').find('input[name=cea]').val(ea);
-		$('.opt_result .result_'+optCd+' .number_count').find('input[name=cea]').attr('value',ea);
-		$('.opt_result .result_'+optCd+' .item_price').find('em').text(totalPrice.addComma());
 
 		fnSetTotalPrice();
 	}
@@ -1449,66 +1536,75 @@ debugger;
 			
 		}else { 
 			
-			let target = null;
-			let targetSize = 0;	//구성품 갯수
+			let cartGoodsList = [];
+			
+			let target = $('#cartForm input[name=cea]');
 			
-			if (goodsType == 'G056_S') {
+			if (goodsType == 'G056_N'){
+				let compsList = [];
+				target.each(function() {
+
+					let ea = parseInt($(this).val());
+					let goodsCd = $(this).parent().find('input[name="coption"]').attr('goodscd');
+					let optCd = $(this).parent().find('input[name="coption"]').val();
+					//let addPrice = parseInt($(this).parent().find('input[name="coption"]').attr('addprice'));
+					//let goodsPrice = parseInt($(this).parent().find('input[name="coption"]').attr('price'));
+					
+					var obj = new Object();
+					obj.cartGb = btnType;
+					obj.goodsType = $("#cartForm  input[name=goodsType]").val();
+					obj.goodsCd = goodsCd
+					obj.optCd = optCd;
+					obj.goodsQty = ea;
+					obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+					obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+					obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+					obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+					compsList.push(obj);
+					
+				});
 				
-				target=$('.select_custom.item_opt2');
-				targetSize = target.length;	//구성품 갯수
-				let itemSize = 0;
-				target.each(function(){
-					if (typeof ($(this).find('.select').find('input[name=opt2]').val()) != 'undefined' &&  !gagajf.isNull($(this).find('.select').find('input[name=opt2]').val())){
-						itemSize ++;
+				
+				// 장바구니담기
+				cfnAddCart(compsList);
+
+			}else{ // 세트
+				
+				target.each(function() {
+					let compsList = [];
+					let goodsList = {
+						cartCompsList : new Array()
 					}
+					
+					let ea = parseInt($(this).val());
+					
+					let targetItem = $(this).parent().parent().find('.bundle'); // 구성상품
+					targetItem.each(function() {
+						var obj = new Object();
+						obj.cartGb = btnType;
+						obj.goodsType = $("#cartForm  input[name=goodsType]").val();
+						obj.goodsCd = $("#cartForm  input[name=goodsCd]").val();
+						
+						obj.itemCd = $(this).find('input[name=selOption]').attr('goodsCd');
+						obj.optCd = $(this).find('input[name=selOption]').attr('optCd');
+						
+						obj.goodsQty = ea;
+						obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+						obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+						obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+						obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+						compsList.push(obj);
+					});
+					
+					goodsList.cartCompsList = compsList;
+					cartGoodsList.push(goodsList);
+
 				});
 				
-				if (targetSize != itemSize){
-					mcxDialog.alert("구성상품들의 옵션을 선택하세요.");
-					return false;
-				}
-			}else{
+				// 장바구니담기
+				cfnAddCart(cartGoodsList);
 				
-				target = $('#cartForm input[name=cea]');
-				targetSize = target.length;	//선택성품 갯수
-				if (target.length <= 0){
-					mcxDialog.alert("구성상품들의 옵션을 선택하세요.");
-					return false;
-				}
 			}
-			
-			let cartGoodsList = [];
-			let compsList = [];
-			let goodsList = {
-				cartCompsList : new Array()
-			}
-			
-			target.each(function() {debugger;
-			
-				let ea = parseInt($(this).val());
-				let goodsCd = $(this).parent().find('input[name="coption"]').attr('goodscd');
-				let optCd = $(this).parent().find('input[name="coption"]').val();
-				let addPrice = parseInt($(this).parent().find('input[name="coption"]').attr('addprice'));
-				let goodsPrice = parseInt($(this).parent().find('input[name="coption"]').attr('price'));
-			
-				var obj = new Object();
-				obj.cartGb = btnType;
-				obj.goodsType = $("#cartForm  input[name=goodsType]").val();
-				obj.goodsCd = goodsCd;
-				obj.optCd = optCd;
-				obj.goodsQty = ea;
-				obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
-				obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
-				obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
-				obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
-				compsList.push(obj);
-				
-			});
-			goodsList.cartCompsList = compsList;
-			cartGoodsList.push(goodsList);
-			
-			// 장바구니담기
-			cfnAddCart(cartGoodsList);
 		}
 	}
 

+ 44 - 51
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailReviewFormMob.html

@@ -77,7 +77,7 @@
 					</dl> 
 				</div>
 				<div class="pa_body">
-					<dl>
+					<dl th:class="${(scoreSize1 >= scoreSize2 and scoreSize1 >= scoreSize3) ? 'on' : ''}">
 						<dt>작음</dt>
 						<dd>
 							<span class="ratio">
@@ -86,7 +86,7 @@
 							<span class="percent"><th:block th:text="${scoreSize1}"></th:block>%</span>
 						</dd>
 					</dl> 
-					<dl class="on">
+					<dl th:class="${(scoreSize2 >= scoreSize1 and scoreSize2 >= scoreSize3) ? 'on' : ''}">
 						<dt>딱맞음</dt>
 						<dd>
 							<span class="ratio">
@@ -95,7 +95,7 @@
 							<span class="percent"><th:block th:text="${scoreSize2}"></th:block>%</span>
 						</dd>
 					</dl>
-					<dl>
+					<dl th:class="${(scoreSize3 >= scoreSize1 and scoreSize3 >= scoreSize2) ? 'on' : ''}">
 						<dt>큼</dt>
 						<dd>
 							<span class="ratio">
@@ -128,7 +128,7 @@
 					</dl> 
 				</div>
 				<div class="pa_body">
-					<dl class="on">
+					<dl th:class="${(scoreColor1 >= scoreColor2 and scoreColor1 >= scoreColor3) ? 'on' : ''}">
 						<dt>밝음</dt>
 						<dd>
 							<span class="ratio">
@@ -137,7 +137,7 @@
 							<span class="percent"><th:block th:text="${scoreColor1}"></th:block>%</span>
 						</dd>
 					</dl> 
-					<dl>
+					<dl  th:class="${(scoreColor2 >= scoreColor1 and scoreColor2 >= scoreColor3) ? 'on' : ''}">
 						<dt>똑같음</dt>
 						<dd>
 							<span class="ratio">
@@ -146,7 +146,7 @@
 							<span class="percent"><th:block th:text="${scoreColor2}"></th:block>%</span>
 						</dd>
 					</dl>
-					<dl>
+					<dl th:class="${(scoreColor3 >= scoreColor1 and scoreColor3 >= scoreColor2) ? 'on' : ''}">
 						<dt>어두움</dt>
 						<dd>
 							<span class="ratio">
@@ -180,7 +180,7 @@
 					</dl> 
 				</div>
 				<div class="pa_body">
-					<dl class="on">
+					<dl th:class="${(scoreFit1 >= scoreFit2 and scoreFit1 >= scoreFit3) ? 'on' : ''}">
 						<dt>슬림</dt>
 						<dd>
 							<span class="ratio">
@@ -189,7 +189,7 @@
 							<span class="percent"><th:block th:text="${scoreFit1}"></th:block>%</span>
 						</dd>
 					</dl> 
-					<dl>
+					<dl th:class="${(scoreFit2 >= scoreFit1 and scoreFit2 >= scoreFit3) ? 'on' : ''}">
 						<dt>레귤러</dt>
 						<dd>
 							<span class="ratio">
@@ -198,7 +198,7 @@
 							<span class="percent"><th:block th:text="${scoreFit2}"></th:block>%</span>
 						</dd>
 					</dl>
-					<dl>
+					<dl th:class="${(scoreFit3 >= scoreFit1 and scoreFit3 >= scoreFit2) ? 'on' : ''}">
 						<dt>오버</dt>
 						<dd>
 							<span class="ratio">
@@ -231,7 +231,7 @@
 					</dl> 
 				</div>
 				<div class="pa_body">
-					<dl>
+					<dl th:class="${(scoreThick1 >= scoreThick2 and scoreThick1 >= scoreThick3) ? 'on' : ''}">
 						<dt>얇음</dt>
 						<dd>
 							<span class="ratio">
@@ -240,7 +240,7 @@
 							<span class="percent"><th:block th:text="${scoreThick1}"></th:block>%</span>
 						</dd>
 					</dl> 
-					<dl>
+					<dl th:class="${(scoreThick2 >= scoreThick1 and scoreThick2 >= scoreThick3) ? 'on' : ''}">
 						<dt>적당함</dt>
 						<dd>
 							<span class="ratio">
@@ -249,7 +249,7 @@
 							<span class="percent"><th:block th:text="${scoreThick2}"></th:block>%</span>
 						</dd>
 					</dl>
-					<dl class="on">
+					<dl th:class="${(scoreThick3 >= scoreThick1 and scoreThick3 >= scoreThick2) ? 'on' : ''}">
 						<dt>도톰함</dt>
 						<dd>
 							<span class="ratio">
@@ -284,7 +284,7 @@
 					</dl> 
 				</div>
 				<div class="pa_body">
-					<dl>
+					<dl th:class="${(scoreWeight1 >= scoreWeight2 and scoreWeight1 >= scoreWeight3) ? 'on' : ''}">
 						<dt>가벼움</dt>
 						<dd>
 							<span class="ratio">
@@ -293,7 +293,7 @@
 							<span class="percent"><th:block th:text="${scoreWeight1}"></th:block>%</span>
 						</dd>
 					</dl> 
-					<dl>
+					<dl th:class="${(scoreWeight2 >= scoreWeight1 and scoreWeight2 >= scoreWeight3) ? 'on' : ''}">
 						<dt>적당함</dt>
 						<dd>
 							<span class="ratio">
@@ -302,7 +302,7 @@
 							<span class="percent"><th:block th:text="${scoreWeight2"></th:block>%</span>
 						</dd>
 					</dl>
-					<dl class="on">
+					<dl th:class="${(scoreWeight3 >= scoreWeight1 and scoreWeight3 >= scoreWeight2) ? 'on' : ''}">
 						<dt>무거움</dt>
 						<dd>
 							<span class="ratio">
@@ -335,7 +335,7 @@
 					</dl> 
 				</div>
 				<div class="pa_body">
-					<dl>
+					<dl th:class="${(scoreBall1 >= scoreBall2 and scoreBall1 >= scoreBall3) ? 'on' : ''}">
 						<dt>작음</dt>
 						<dd>
 							<span class="ratio">
@@ -344,7 +344,7 @@
 							<span class="percent"><th:block th:text="${scoreBall1}"></th:block>%</span>
 						</dd>
 					</dl> 
-					<dl>
+					<dl th:class="${(scoreBall2 >= scoreBall1 and scoreBall2 >= scoreBall3) ? 'on' : ''}">
 						<dt>딱맞음</dt>
 						<dd>
 							<span class="ratio">
@@ -353,7 +353,7 @@
 							<span class="percent"><th:block th:text="${scoreBall2"></th:block>%</span>
 						</dd>
 					</dl>
-					<dl class="on">
+					<dl th:class="${(scoreBall3 >= scoreBall1 and scoreBall3 >= scoreBall2) ? 'on' : ''}">
 						<dt>큼</dt>
 						<dd>
 							<span class="ratio">
@@ -373,15 +373,15 @@
 				</div>
 			</div>
 			<script>
-				function averag(){
-					var averagBtn=$(".average .btn_group_flex button");
-					var averag=$(".average .pa_body");
-					averagBtn.on('click',function(e){
-						averag.slideToggle();
-						$(this).toggleClass("active")	
-					});  
-				}
-				averag();
+			 function averag(){
+				 var averagBtn=$(".average .btn_group_flex button");
+				 var averag=$(".average .pa_body");
+				 averagBtn.on('click',function(e){
+					 averag.slideToggle();
+					 $(this).toggleClass("active")	
+				 });  
+			 }
+			 averag();
 			</script>
 		</div>
 		</th:block>
@@ -478,7 +478,7 @@
 	<input type="hidden" name="reviewHeight" />
 	<input type="hidden" name="reviewWeight" />
 	
-		<h6>전체리뷰<span>(<span id="reviewCount" th:text="${(reviewCount <= 9999) ? #numbers.formatInteger(reviewCount, 0,'COMMA') : '9,999+'}">9,999+</span>)</span></h6>
+		<h6>전체리뷰<span id="reviewCount" th:text="|(${(reviewCount <= 9999) ? #numbers.formatInteger(reviewCount, 0,'COMMA') : '9,999+'})|">9,999+</span></h6>
 		<div class="selection">
 			<ul class="category_open">
 				<li data_name="grade"><span>평점 전체</span></li>
@@ -562,10 +562,12 @@
 	<!-- //등록리뷰 있을 시 -->
 </div>
 <script src="/ux/plugins/jquery/jquery.history.min.js"></script>
-<script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
+<script src="/ux/plugins/gaga/gaga.infinite.scrollLayer.js"></script>
 <script th:inline="javascript">
 /*<![CDATA[*/
 	
+	$(function() { gagaInfiniteScroll.getHistory(); });
+	
 	// 상품펴 검색
 	var fnGetInfiniteScrollDataList = function(pageNum) {
 	
@@ -588,6 +590,7 @@
 	}
 
 	var fnGoodsReviewListSearch = function() {
+		fnGoodsReviewInfiniteScrollInit();
 		gagaInfiniteScroll.getHistory();
 	}
 	
@@ -751,29 +754,21 @@
 	
 	// 인피니트 스크롤 초기화
 	var fnGoodsReviewInfiniteScrollInit = function(){
-		 sessionStorage.removeItem(document.location.href);
+		// sessionStorage.removeItem(document.location.href);
+		History.replaceState(null, null);
+		gagaInfiniteScroll.pageStatus = {
+				  pageNum : []      // [0,1,2...] 로드된 페이지 (Array)
+				, loadPage : 0      // 로드할 페이지
+				, loadAlign : 'not' // 로드 상태(prev, next, not)
+				, historyScroll : 0 //
+				, nowPage : null    // 현재 페이지
+				, pageUrl : {       // page url
+				}
+		}
 		//History 초기화
-		$("#listBox").html("");
+		$("#listBox").html("");;
 	}
 	
-	// 왜 안될가?
-	// 사파리 - event.persisted || 크롬 - window.performance.navigation.type 이 1이면 새로고침, 2면 페이지 이동을 통한 캐쉬페이징
-	$(window).on("pageshow", function(event) {
-		if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
-			var historyData = sessionStorage.getItem(document.location.href);
-			if(historyData!=null){
-				historyData = JSON.parse(historyData);
-			}else{
-				historyData = {};
-			}
-			fnGoodsReviewListSearch();
-		}else{
-			fnGoodsReviewInfiniteScrollInit();
-			fnGoodsReviewListSearch();
-		}
-
-	});
-	
 	// 상품평 초기화
 	var fnReviewSearchInit = function(){
 		
@@ -836,8 +831,6 @@
 		});
 
 		
-		fnGoodsReviewListSearch();
-		
 	});
 	
 /*]]>*/

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/goods/GoodsReviewFormMob.html

@@ -34,7 +34,7 @@
 			<!-- //해당상품 -->
 		</div>
 		<div class="modal-body">
-			<div class="pop_cont" id="goodsDealReview">
+			<div class="pop_cont" id="goodsDealReview" data-id="layer_infinite_item" >
 			</div>
 		</div>
 	</div>

+ 104 - 24
src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html

@@ -44,6 +44,7 @@
 				<th>delvMemo</th>
 				<th>sexGb</th>
 				<th>birthYmd</th>
+				<th>orderGiftYn</th>
 			</tr>
 			<tr style="height:30px;">
 				<td class="custNm"></td>
@@ -57,6 +58,7 @@
 				<td class="delvMemo"></td>
 				<td class="sexGb"></td>
 				<td class="birthYmd"></td>
+				<td class="orderGiftYn" th:text="${orderGiftYn}"></td>
 			</tr>
 		</tbody>
 	</table>
@@ -241,7 +243,7 @@
 <!-- 주문고객정보 -->
 <form id="orderForm" name="orderForm">
 <main role="" id="" class="container od">
-	<section class="content odPayment">
+	<section class="content odPayment od_gift">
 		<form action="" class="form_wrap">
 			<!-- 주문내역 -->
 			<div class="inner wide" id="orderListInfo"  style="display:none"></div>
@@ -250,6 +252,10 @@
 			<!-- 주문고객 -->
 			<div class="inner wide" id="custemerInfo"  style="display:none"></div>
 			<!-- //주문고객 -->
+			
+			<!-- 선물받으실분 -->
+			<div class="inner wide" id="orderGiftInfo"  style="display:none"></div>
+			<!-- //선물받으실분 -->
 
 			<!-- 배송지 정보 -->
 			<div class="inner wide" id="deliveryAddrInfo" style="display:none"></div>
@@ -404,6 +410,7 @@ var foreignBuyYn		= [[${order.foreignBuyYn}]];	// 해외구매대행
 var foreignBuyYn		= [[${foreignBuyYn}]];			// 해외구매대행여부
 var orderMadeYn			= [[${orderMadeYn}]];			// 주문제작상품여부
 var isLogin				= [[${isLogin}]];				// 로그인여부
+var orderGiftYn			= [[${orderGiftYn}]];			// 선물받기여부
 
 var custCpnSq 			= 0;
 var cpnIndex			= 0;
@@ -455,6 +462,7 @@ $(document).ready( function() {
 		, "foreignBuyYn"	: foreignBuyYn
 		, "orderMadeYn"		: orderMadeYn
 		, "custDelvAddrSq"	: 0
+		, "orderGiftYn"		: "Y"
 	}
 	
 	jsonData = JSON.stringify(jsonObj);
@@ -501,9 +509,15 @@ var custemerInfoSet = function() {
 			if (orderMadeYn == "Y") {
 				madeInfoSet();
 			}
-
-			// 1.4 배송정보로드
-			deliveryAddrInfoSet(jsonObj, true);
+			
+			// 1.4 선물하기여부체크
+			if (orderGiftYn == "Y") {
+				// 1.4.1 선물하기정보로드
+				orderGiftInfoSet(jsonObj, true);
+			} else {
+				// 1.4.2 배송정보로드
+				deliveryAddrInfoSet(jsonObj, true);
+			}
 		}
 	});
 }
@@ -548,7 +562,30 @@ var madeInfoSet = function() {
 	});
 }
 
-// 1.4 배송정보로드
+// 1.4.1 선물받기여부정보로드
+var orderGiftInfoSet = function() {
+	$.ajax( {
+		type		: "POST",
+		url 		: '/order/orderGiftInfo',
+		data		: JSON.stringify(jsonObj),
+		dataType 	: 'html',
+		beforeSend : function(xhr, settings) {
+			xhr.setRequestHeader("AJAX"			, "true");
+			xhr.setRequestHeader('Accept'		, 'application/json');
+			xhr.setRequestHeader('Content-Type'	, 'application/json');
+			gagajf.showProgressbar(true);
+		},
+		success 	: function(result) {
+			$("#orderGiftInfo").css("display", "block");
+			$("#orderGiftInfo").html(result);
+			
+			// 주문목록정보로드
+			orderListInfoSet(JSON.stringify(jsonObj), true);
+		}
+	});
+}
+
+// 1.4.2 배송정보로드
 var deliveryAddrInfoSet = function(delvObj, temp) {
 	$.ajax( {
 		type		: "POST",
@@ -616,13 +653,13 @@ var deliveryAddrInfoSet = function(delvObj, temp) {
 				}
 			});
 
-			// 1.3 총알배송가능 지역, 총알배송 가능 시간 체크(초기로드정보)
+			// 1.5 총알배송가능 지역, 총알배송 가능 시간 체크(초기로드정보)
 			fnGetDailyDeliveryCheck(temp);
 		}
 	});
 }
 
-// 1.3 총알배송가능 지역, 총알배송 가능 시간 체크
+// 1.5 총알배송가능 지역, 총알배송 가능 시간 체크
 var fnGetDailyDeliveryCheck = function (temp) {
 	
 	jsonData = JSON.stringify(jsonObj);
@@ -662,7 +699,7 @@ var fnGetDailyDeliveryCheck = function (temp) {
 				var orderListJsonData 	= JSON.stringify(orderListObj);
 				
 				if (temp) {
-					// 1.3 주문상품목록로드
+					// 1.6 주문상품목록로드
 					orderListInfoSet(orderListJsonData, temp);
 				} else {
 					if (tempShotDelvYn != shotDelvYn) {
@@ -675,7 +712,7 @@ var fnGetDailyDeliveryCheck = function (temp) {
 	}
 }
 
-// 1.4 주문상품목록로드
+// 1.6 주문상품목록로드
 var orderListInfoSet = function(orderListJsonData, temp) {
 	$.ajax( {
 		type		: "POST",
@@ -703,7 +740,7 @@ var orderListInfoSet = function(orderListJsonData, temp) {
 				}
 			}
 			
-			// 1.5 사은품정보로드
+			// 1.7 사은품정보로드
 			if (temp) {
 				freegiftInfoSet();
 			}
@@ -711,7 +748,7 @@ var orderListInfoSet = function(orderListJsonData, temp) {
 	});
 }
 
-// 1.5 사은품정보로드
+// 1.7 사은품정보로드
 var freegiftInfoSet = function() {
 	
 	$.ajax( {
@@ -772,13 +809,13 @@ var freegiftInfoSet = function() {
 				});
 			}
 			
-			// 1.6 결제타입로드
+			// 1.8 결제타입로드
 			paymentInfoSet();
 		}
 	});
 }
 
-// 1.6 결제타입로드 (결제버튼기능구현)
+// 1.8 결제타입로드 (결제버튼기능구현)
 var paymentInfoSet = function() {
 	
 	$.ajax( {
@@ -817,6 +854,44 @@ var paymentInfoSet = function() {
 					var orgEntryNo 			= "";
 					var entryNo 			= "";
 					
+					// 주문데이타 생성
+					var orderData = {
+						"custNm"				: $("#orderAmtForm .custNm").text()
+						,"email"				: $("#orderAmtForm .email").text()
+						,"recipNm"				: $("#orderAmtForm .recipNm").text()
+						,"recipPhnno"			: $("#orderAmtForm .recipPhnno").text()
+						,"recipZipcode"			: $("#orderAmtForm .recipZipcode").text()
+						,"recipBaseAddr"		: $("#orderAmtForm .recipBaseAddr").text()
+						,"recipDtlAddr"			: $("#orderAmtForm .recipDtlAddr").text()
+						,"delvMemo"				: $("#orderAmtForm .delvMemo").text()
+						,"sexGb"				: $("#orderAmtForm .sexGb").text()
+						,"birthYmd"				: $("#orderAmtForm .birthYmd").text()
+						,"prePntDcAmtYn"		: prePntDcAmtYn
+						,"orderDetailList"		: orderDetailList
+						,"delvFeeCdList"		: delvFeeCdList
+						,"shotDelvYn"			: shotDelvYn
+						,"entryNo"				: entryNo
+						,"pgGb"					: pgGb
+						,"payMeans"				: payMeans // 네이버페이, 카카오페이
+						,"payAmt"				: $("#orderAmtForm .realOrdSumAmt").text()
+						,"ordNm"				: $("#orderAmtForm .custNm").text()
+						,"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(",")
+					};
+					
+					// 선물받기일때 배송지주소 받지않음
+					if (orderGiftYn == "N") {
+						if ($("#orderAmtForm .recipZipcode").text() == "0000" || gagajf.isNull($("#orderAmtForm .recipZipcode").text())) {
+							mcxDialog.alert("배송지주소를를 입력해주세요.");
+							return false;
+						}
+					}
+					
 					// TODO 개인통관번호 동의 체크시 통관번호 등록
 					if (foreignBuyYn == "Y") {
 						if ($("#orderForm input[name=rdi-overseas]:checked").val() == "Y") {
@@ -933,6 +1008,7 @@ var paymentInfoSet = function() {
 							,"itemQtyArr"		: $(this).parent().find(".itemQtyr").text().split(",")
 							,"goodsType"		: $(this).parent().find(".goodsType").text()
 							,"entryNo"			: entryNo
+							,"giftPackYn"		: orderGiftYn
 						}
 						
 						// 상품수
@@ -1019,7 +1095,7 @@ var paymentInfoSet = function() {
 					});
 				});
 
-				// 1.8 할인영역 설정 (로그인여부일때 동작)
+				// 1.9 할인영역 설정 (로그인여부일때 동작)
 				if (isLogin == true) {
 					dcAmtInfoSet();
 				} else {
@@ -1031,7 +1107,7 @@ var paymentInfoSet = function() {
 	});
 }
 
-// 1.7 프로모션 쿠폰 적용 함수
+// 1.9.0 프로모션 쿠폰 적용 함수
 var serialCpnApply = function(){
 	
 	if (gagajf.isNull($("#serialCpnNm").val())) {
@@ -1067,7 +1143,7 @@ var serialCpnApply = function(){
 	});
 }
 
-// 1.8 할인영역 설정 (쿠폰, 선포인트, 포인트, 상품권)
+// 1.9 할인영역 설정 (쿠폰, 선포인트, 포인트, 상품권)
 var dcAmtInfoSet = function() {
 	// 1.8.1 할인정보로드
 	$.ajax( {
@@ -1315,7 +1391,7 @@ var dcAmtInfoSet = function() {
 	});
 }
 
-// 1.9.1 상품쿠폰초기화
+// 1.10.1 상품쿠폰초기화
 var custGoodsCpnInit = function() {
 	
 	// 쿠폰최대할인 적용
@@ -1383,7 +1459,7 @@ var custGoodsCpnInit = function() {
 	custCartCpnInit();
 }
 
-// 1.9.2 장바구니쿠폰초기화
+// 1.10.2 장바구니쿠폰초기화
 var custCartCpnInit = function() {
 	// 장바구니쿠폰 초기화 적용
 	$("#couponModifyPop .cartCpn").each(function(index) {
@@ -1407,7 +1483,7 @@ var custCartCpnInit = function() {
 	pntDcAmtReset();
 }
 
-// 1.9.3 배송비쿠폰초기화
+// 1.10.3 배송비쿠폰초기화
 var custDelvCpnInit = function() {
 	// 배송비쿠폰 초기화 적용
 	$("#couponSelectPop02 .delvCpn").each(function(index) {
@@ -1424,7 +1500,7 @@ var custDelvCpnInit = function() {
 	});
 }
 
-// 1.10 쿠폰중복사용체크
+// 1.10.4 쿠폰중복사용체크
 var custCpnDuplicationCheck = function(custCpnSq, index) {
 	var selCustSq 	= 0;
 	var cnt 		= 0;
@@ -1454,7 +1530,7 @@ var custCpnDuplicationCheck = function(custCpnSq, index) {
 	}
 }
 
-// 1.11.0 임시로 쿠폰적용
+// 1.10.5 임시로 쿠폰적용
 var custCpnApplyTemp = function(obj, idx, cpnType) {
 	
 	// 상품쿠폰적용
@@ -1549,7 +1625,7 @@ var custCpnApplyTemp = function(obj, idx, cpnType) {
 	$("#couponModifyPop .modal-footer .goodsCartCpnSumAmt").text(getZeroMinusDelAmt(goodsCartCpnSumAmt));
 }
 
-// 1.11 쿠폰중복체크 후 적용가능
+// 1.10.6 쿠폰중복체크 후 적용가능
 var custCpnApply = function(obj, idx, cpnType) {
 	
 	// 상품쿠폰적용
@@ -1760,8 +1836,12 @@ var custCpnNotApply = function(obj, idx) {
 
 // 1.14 선포인트리셋기능 (사용안함)
 var prePntDcAmtReset = function() {
-	var rmPrePntAmt = parseInt($("#orderForm input[name='rmPrePntAmt']").val());
-	$("#orderForm input[name='prePntDcAmt']").val(rmPrePntAmt);
+	var rmPrePntAmt = 0; 
+	
+	if ($("#orderForm input[name='rmPrePntAmt']") > 0) {
+		rmPrePntAmt = parseInt($("#orderForm input[name='rmPrePntAmt']").val());
+		$("#orderForm input[name='prePntDcAmt']").val(rmPrePntAmt);
+	}
 	
 	// 선포인트사용여부 체크 후 적용
 	$("#orderForm input[name='rdi-beforpoint']").each(function(){

+ 90 - 0
src/main/webapp/WEB-INF/views/mob/order/OrderGiftInfoMob.html

@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : OrderGiftInfoMob.html
+ * @desc    : 선물받기정보 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.13   jsh77b     최초 작성
+ *******************************************************************************
+ -->
+<div class="gift_tab">
+	<div class="foldGroup">
+		<ul>
+			<li class="fold_mbinfo">
+				<!-- 주문고객정보 -->
+				<div class="fold_head">
+					<a href="javascript:void(0)">
+						<div>
+							<div class="fold_tit">
+								<span>선물 받으실 분</span>
+							</div>
+						</div>
+					</a>
+				</div>
+				<div class="fold_cont" style="display: none;">
+					<div class="tabWrap">
+						<ul class="tabIndex">
+							<li class="active"><a href="javascript:;"><span>연락처 불러오기</span></a></li>
+							<li class=""><a href="javascript:;"><span>직접입력</span></a></li>
+						</ul>
+						<div class="tabContents">
+							<div class="tab_cont active">
+								<div class="form_field">
+									<div class="input_wrap">
+										<input type="text" class="form_control" value="" placeholder="받으실분 휴대폰번호">
+										<p class="desc_txt">선물이 타인에게 전송될수 있으니 전화번호를 받으실분 연락처를 정확하게 입력해주세요.</p>
+									</div>
+									<div class="textarea_wrap">
+										<textarea class="doc_review" name="review" id="" placeholder="선물 메시지 입력&#13;&#10;(미 입력시 ‘감사합니다’로 발송됩니다.)"></textarea>
+										<p class="txt_cnt"><span id="review_cnt" class="c_primary">0</span>/200</p>
+									</div>
+								</div>
+							</div>
+							<div class="tab_cont">
+								<div class="form_field">
+									<div class="input_wrap">
+										<input type="text" class="form_control" value="" placeholder="받으실분 휴대폰번호">
+										<p class="desc_txt">선물이 타인에게 전송될수 있으니 전화번호를 받으실분 연락처를 정확하게 입력해주세요.</p>
+									</div>
+									<div class="textarea_wrap">
+										<textarea class="doc_review" name="review" id="" placeholder="선물 메시지 입력&#13;&#10;(미 입력시 ‘감사합니다’로 발송됩니다.)"></textarea>
+										<p class="txt_cnt"><span id="review_cnt" class="c_primary">0</span>/200</p>
+									</div>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+				<!-- //주문고객정보 -->
+			</li>
+		</ul>
+	</div>
+</div>
+<!-- //배송지정보 -->
+
+<script th:inline="javascript">
+var dispYn = [[${order.dispYn}]]; // 노출여부
+
+//화면노출
+var orderGiftInfoDispYn = function(temp) {
+	if (temp == "Y") {
+		$("#orderGiftInfo .fold_head").addClass("on");
+		$("#orderGiftInfo .fold_cont").show();
+	} else {
+		$("#orderGiftInfo .fold_head").removeClass("on");
+		$("#orderGiftInfo .fold_cont").hide();
+	}
+}
+
+//컨텐츠 호출
+$(document).ready( function() {
+	
+});
+</script>
+</html>

+ 6 - 1
src/main/webapp/WEB-INF/views/mob/order/OrderListInfoMob.html

@@ -23,7 +23,12 @@
 			<div class="fold_head">
 				<a href="javascript:void(0)">
 					<div>
-						<div class="fold_tit"><span>주문내역</span></div>
+						<th:block th:if="${order.orderGiftYn} == 'N'">
+							<div class="fold_tit"><span>주문내역</span></div>
+						</th:block>
+						<th:block th:if="${order.orderGiftYn} == 'Y'">
+							<div class="fold_tit"><span>선물하기 주문내역</span></div>
+						</th:block>
 						<div class="data"><em class="c_primary" th:text="${goodsTotCnt}"></em>개의 상품</div>
 					</div>
 				</a>

+ 13 - 12
src/main/webapp/WEB-INF/views/web/cart/CartChangeOptionPopupWeb.html

@@ -62,7 +62,7 @@
 												<div class="select" th:text="${comp.colorNm}"></div>
 												<ul class="list" th:data="${comp.goodsCd}">
 													<th:block th:each="color, index : ${comp.cartColorList}">
-														<li th:classappend="${color.cartColorNm != null} ? 'selected'" th:data="${color.optCd1}" th:text="${color.colorNm}" th:aria-disabled="${color.soldoutYn.equals('Y') ? true : false}"></li>
+														<li th:classappend="${color.cartColorNm != null} ? 'selected'" th:colorNo="${color.colorNo}" th:data="${color.optCd1}" th:text="${color.colorNm}" th:aria-disabled="${color.soldoutYn.equals('Y') ? true : false}"></li>
 													</th:block>
 												</ul>
 											</div>
@@ -78,12 +78,12 @@
 								<form class="form_wrap">
 									<div class="form_field">
 										<th:block th:each="color, index : ${comp.cartColorList}">
-											<div class="select_custom item_opt2 sizeList" th:classappend="|${comp.goodsCd}_${color.optCd1} sizeList${comp.goodsCd}|" th:style="${color.cartColorNm != null ? 'display:block' : 'display:none'}">
+											<div class="select_custom item_opt2 sizeList" th:classappend="|color_${comp.goodsCd}_${color.colorNo} sizeList${comp.goodsCd}|" th:style="${color.cartColorNm != null ? 'display:block' : 'display:none'}">
 												<div class="combo">
 													<div class="select" th:classappend="|size_${comp.goodsCd}_size_nm|" th:text="${comp.optCd2}" th:data="${color.goodsCd}"></div>
 													<ul class="list setSizeSelect" th:classappend="|size_${comp.goodsCd}|" th:data="${comp.goodsCd}">
 														<th:block th:each="size, i : ${color.cartSizeList}" th:if="${color.optCd1.equals(size.optCd1)}">
-															<li th:classappend="${size.cartOptCd != null} ? selected" th:optCd="${size.optCd}" th:value="${size.optCd}" th:text="${size.optCd2}" th:aria-disabled="${color.soldoutYn.equals('Y') or size.soldoutYn.equals('Y') ? true : false}"></li>
+															<li th:classappend="${size.cartOptCd != null} ? selected" th:optCd="${size.optCd}" th:value="${size.optCd}" th:text="${size.optCd2}" th:aria-disabled="${color.soldoutYn.equals('Y') or size.soldoutYn.equals('Y') or size.minOrdQty > size.currStockQty ? true : false}"></li>
 														</th:block>
 													</ul>
 												</div>
@@ -122,7 +122,7 @@
 										<th:block th:if="${color.cartColorNm != null}">
 											<th:block th:each="size, index : ${color.cartSizeList}">
 												<div>
-													<input type="radio" name="rdi-optsize" th:id="|${'rdi-optsize' + size.goodsCd + '-' + size.optCd}|" th:value="${size.optCd}" th:checked="${size.cartOptCd != null}" th:disabled="${size.soldoutYn == 'Y' or cart.goodsQty > size.currStockQty}">
+													<input type="radio" name="rdi-optsize" th:soldoutYn="${size.soldoutYn}" th:id="|${'rdi-optsize' + size.goodsCd + '-' + size.optCd}|" th:value="${size.optCd}" th:checked="${size.cartOptCd != null}" th:disabled="${size.soldoutYn == 'Y' or size.minOrdQty > size.currStockQty}">
 													<label th:for="|${'rdi-optsize' + size.goodsCd + '-' + size.optCd}|"><span th:text="${size.optCd2}"></span></label>
 												</div>
 											</th:block>
@@ -154,7 +154,7 @@
 												<div class="select" th:text="${comp.colorNm}"></div>
 												<ul class="list" th:data="${comp.goodsCd}">
 													<th:block th:each="color, index : ${comp.cartColorList}">
-														<li th:classappend="${color.cartColorNm != null} ? 'selected'" th:data="${color.optCd1}" th:text="${color.colorNm}" th:aria-disabled="${color.soldoutYn.equals('Y') ? true : false}"></li>
+														<li th:classappend="${color.cartColorNm != null} ? 'selected'" th:colorNo="${color.colorNo}" th:data="${color.optCd1}" th:text="${color.colorNm}" th:aria-disabled="${color.soldoutYn.equals('Y') ? true : false}"></li>
 													</th:block>
 												</ul>
 											</div>
@@ -170,12 +170,12 @@
 								<form class="form_wrap">
 									<div class="form_field">
 										<th:block th:each="color, index : ${comp.cartColorList}">
-											<div class="select_custom item_opt2 sizeList" th:classappend="|${comp.goodsCd}_${color.optCd1} sizeList${comp.goodsCd}|" th:style="${color.cartColorNm != null ? 'display:block' : 'display:none'}">
+											<div class="select_custom item_opt2 sizeList" th:classappend="|color_${comp.goodsCd}_${color.colorNo} sizeList${comp.goodsCd}|" th:style="${color.cartColorNm != null ? 'display:block' : 'display:none'}">
 												<div class="combo">
 													<div class="select" th:classappend="|size_${comp.goodsCd}_size_nm|" th:text="${comp.optCd2}" th:data="${color.goodsCd}"></div>
 													<ul class="list setSizeSelect" th:classappend="|size_${comp.goodsCd}|" th:data="${comp.goodsCd}">
 														<th:block th:each="size, i : ${color.cartSizeList}" th:if="${color.optCd1.equals(size.optCd1)}">
-															<li th:classappend="${size.cartOptCd != null} ? selected" th:optCd="${size.optCd}" th:value="${size.optCd}" th:text="${size.optCd2}" th:aria-disabled="${color.soldoutYn.equals('Y') or size.soldoutYn.equals('Y') ? true : false}"></li>
+															<li th:classappend="${size.cartOptCd != null} ? selected" th:optCd="${size.optCd}" th:value="${size.optCd}" th:text="${size.optCd2}" th:aria-disabled="${color.soldoutYn.equals('Y') or size.soldoutYn.equals('Y') or size.minOrdQty > size.currStockQty ? true : false}"></li>
 														</th:block>
 													</ul>
 												</div>
@@ -215,10 +215,11 @@
 		$("#cartOptionModal .colorList > .combo > .list li").on("click", function(e) {
 			let goodsCd = $(this).parent().attr("data");
 			let optCd1 = $(this).attr("data");
+			let colorNo = $(this).attr("colorNo");
 			let firstSize = "";
 			if(optCd1 != $(".option1_" + goodsCd).val()) {
-				let firstOptCd = $("#cartOptionModal ." + goodsCd + "_" + optCd1 + " li:first").attr("optcd");
-				let firstOptCd2 = $("#cartOptionModal ." + goodsCd + "_" + optCd1 + " li:first").text();
+				let firstOptCd = $("#cartOptionModal .color_" + goodsCd + "_" + colorNo + " li:first").attr("optcd");
+				let firstOptCd2 = $("#cartOptionModal .color_" + goodsCd + "_" + colorNo + " li:first").text();
 
 				$("#cartOptionModal .chooseColorNm_" + goodsCd).text($(this).text());
 				$("#cartOptionModal .option_" + goodsCd).val(firstOptCd);
@@ -226,8 +227,8 @@
 				$("#cartOptionModal .option2_" + goodsCd).val(firstOptCd2);
 
 				$("#cartOptionModal .sizeList" + goodsCd).hide();
-				$("#cartOptionModal ." + goodsCd + "_" + optCd1).show();
-				$("#cartOptionModal ." + goodsCd + "_" + optCd1 + " .select").text(firstOptCd2);
+				$("#cartOptionModal .color_" + goodsCd + "_" + colorNo).show();
+				$("#cartOptionModal .color_" + goodsCd + "_" + colorNo + " .select").text(firstOptCd2);
 				$("#cartOptionModal .chooseSizeNm_" + goodsCd).text(firstOptCd2);
 			}
 		});
@@ -260,7 +261,7 @@
 					if(optCd1 == size[j].optCd1) {
 						sizeHtml += "<div>";
 						sizeHtml += "<input type='radio' name='rdi-optsize' id='" + size[j].goodsCd + "-" + size[j].optCd + "' value='" + size[j].optCd + "' ";
-						if(size[j].soldoutYn == "Y" || cart.goodsQty > size[j].currStockQty) {
+						if(size[j].soldoutYn == "Y" || size[j].minOrdQty > size[j].currStockQty) {
 							sizeHtml += "disabled = 'disabled'";
 						}
 						sizeHtml += " />\n";

+ 0 - 15
src/main/webapp/WEB-INF/views/web/cart/CartListFormWeb.html

@@ -288,21 +288,6 @@
 		getCartList(data);
 	});
 
-    //상품옵션변경 팝업 > 수량조절
-    $(document).on('click','.opt_modify_pop .number_count .minus',function(e){
-        var $input = $(this).parent().find('input');
-        var count = parseInt($input.val()) - 1;
-        count = count < 1 ? 1 : count;
-        $input.val(count);
-        $input.change();
-        return false;
-    }).on('click','.opt_modify_pop .number_count .plus',function(e){
-        var $input = $(this).parent().find('input');
-        $input.val(parseInt($input.val()) + 1);
-        $input.change();
-        return false;
-    });
-
 	//팝업 - 쿠폰사용안내
 	$(document).on('click','#btn_cartCouponInfo_pop',function(e){
 		$(".cartCpnInfoModal").modal("show");

+ 43 - 2
src/main/webapp/WEB-INF/views/web/common/fragments/BrandGnbWeb.html

@@ -19,7 +19,7 @@
 	<div class="common_header br_header" th:style="${'background-color: #' + brandGroupInfo.rgbCd}">
 		<div class="area">
 			<div class="logo">
-				<a href="#none">
+				<a href="javascript:void(0);" th:onclick="cfnGoToBrandMain([[${brandGroupInfo.brandGroupNo}]]);">
 					<h1>
 						<!-- <img th:src="${@environment.getProperty('domain.image') + brandGroupInfo.logoFileNm}" src="/images/pc/thumb/br_tbj_logo.png" alt="TBJ nearby"/> -->
 						<p th:text="${brandGroupInfo.brandGroupNm}"></p>
@@ -38,7 +38,7 @@
 			<!-- nav -->
 			<div class="nav">
 				<ul class="bundle" id="ulGnbTab">
-					<li class="home"><a href="javascript:void(0);" onclick="cfnGoToBrandMain([[${brandGroupInfo.brandGroupNo}]]);">브랜드 홈</a></li>
+					<li class="home"><a href="javascript:void(0);" th:onclick="cfnGoToBrandMain([[${brandGroupInfo.brandGroupNo}]]);">브랜드 홈</a></li>
 					<li class="has_depth"><!-- depth_menu 있을 시 has_depth 클래스 추가 -->
 						<a href="#">상품</a>
 						<!-- 상품 depth -->
@@ -168,6 +168,44 @@
 			});
 	}
 
+	// 브랜드 추천상품
+	let fnCreateRecommendGoods = function (){
+		let tag = '';
+		$.getJSON('/display/brand/gnb/tab/recommend/goods/list?brandGroupNo='+[[${brandGroupInfo.brandGroupNo}]]+'&cate1No=2100&contentsLoc=SBM003&cateGb=G032_102'
+			, function(result, status){
+				if(status == 'success'){
+					var imgUrl = [[${@environment.getProperty('upload.goods.view')}]];
+					var contentsLocVal = 'SBM003';
+					if(result.length > 0){
+						tag+='<div className="list">';
+						tag+='	<ul className="clear event_con">';
+
+						$.each(result, function (idx, item){
+							tag+='		<li>';
+							tag+='			<div class="item_prod">';
+							tag+='				<div class="item_state">';
+							tag+='					<a href="javascript:void(0);" class=" itemLink" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\', \'\', \'\', \'' + contentsLocVal + '\');">';
+							tag+='						<div class="itemPic">';
+							tag+='						<img alt="BLACK-a" class=" vLHTC pd_img" src="'+imgUrl+'/'+item.sysImgNm+'">';
+							tag+='						</div>';
+							tag+='						<div class="itemName">'+item.goodsFullNm+'</div>';
+							tag+='						<p class="itemPrice">'+item.currPrice.addComma();
+							tag+='							<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>';
+							tag+='						</p>';
+							tag+='					</a>';
+							tag+='				</div>';
+							tag+='			</div>';
+							tag+='		</li>';
+						});
+
+						tag+='	</ul>';
+						tag+='</div>';
+					}
+					$('#divGnbBrandBanner').append(tag);
+				}
+		});
+	}
+
 	$(document).ready(function() {
 		//검색창 호출
 		$(".common_search").load("sch_layer_pop.html");
@@ -202,6 +240,9 @@
 		
 		// 브랜드 카테고리 생성
 		fnCreateBrandCategory();
+
+		// 브랜드 추천상품 생성
+		fnCreateRecommendGoods();
 		
 		// GNB탭 생성
 		fnCreateGnbTab();

+ 104 - 14
src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html

@@ -174,7 +174,7 @@
 			<li>
 				<button type="button" id="quick04" class="quick_btn04" data-tab="quick04">
 					<img src="/images/pc/ico_qk_coupon.png" alt="쿠폰"/>
-					<span class="count">100</span>
+					<span class="count">0</span>
 				</button>
 			</li>
 			<li>
@@ -489,16 +489,16 @@
 			</div>
 			<div class="coupon quick_con quick04"> <!-- 퀵메뉴_나의 쿠폰 -->
 				<div class="quick_head">
-					<h3><a href="">나의 쿠폰</a></h3>
+					<h3><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_COUPON);">나의 쿠폰</a></h3>
 				</div>
-				<div class="quick_body"> <!-- 비로그인 시 need_login 클래스 추가 -->
+				<div class="quick_body" id="couponList"> <!-- 비로그인 시 need_login 클래스 추가 -->
 					<div class="coupon_tab">
-						<a href="#coupon_type01" id="" class="">발급 가능 쿠폰</a>
-						<a href="#coupon_type02" id="" class="">보유 쿠폰</a>
+						<a href="#coupon_type01" onclick="issueCouponBtn()">발급 가능 쿠폰</a>
+						<a href="#coupon_type02" onclick="ownCouponBtn()">보유 쿠폰</a>
 					</div>
 					<div id="coupon_type01" class="coupon_area">
-						<div class="pop_cont">
-							<ul class="coupon_list">
+						<div class="pop_cont" id="issueCoupon">
+							<!-- <ul class="coupon_list">
 								<li>
 									<div class="coupon">
 										<div>
@@ -601,12 +601,14 @@
 										<button type="button" class="btn btn_dark btn_block btn_coupon_done" disabled=""><span>받기완료</span></button>
 									</div>
 								</li>
-							</ul>
+							</ul> -->
 						</div>
+						<a href="javascript:void(0);" class="more_btn" onclick="cfnGoToPage(_PAGE_EVENT_MAIN);">더 보기</a>_
 					</div>
+					
 					<div id="coupon_type02" class="coupon_area">
-						<div class="coupon_list">
-							<ul class="clear">
+						<div class="coupon_list" id="ownCoupon">
+							<!-- <ul class="clear">
 								<li>
 									<div class="cp_top">
 										<div class="cp_detail">
@@ -641,16 +643,17 @@
 										<button type="button" class="coupon_pop_btn"><span>사용안내</span></button>
 									</div>
 								</li>
-							</ul>
+							</ul> -->
 						</div>
+						<a href="javascript:void(0);" class="more_btn" onclick="cfnGoToPage(_PAGE_MYPAGE_COUPON);">더 보기</a>_
 					</div>
-					<a href="" class="more_btn">더 보기</a>
+					
 					<div class="login_con">
 						<div>
 							<p>로그인 후 이용 가능한 서비스입니다.</p>
-							<button type="button" class="btn btn_sm"><span>로그인</span></button>
+							<button type="button" class="btn btn_sm" onclick="cfnGoToPage(_PAGE_LOGIN);"><span>로그인</span></button>
 						</div>
-					</div>
+					</div> 
 				</div>
 			</div>
 			<div class="category quick_con quick05"> <!-- 퀵메뉴_카테고리 -->
@@ -861,6 +864,16 @@
 	<!-- //배송요청사항수정 팝업 -->
 	<!-- //2021.04.02 배송지변경팝업 공통화 작업 -->
 	
+	<!-- 쿠폰 사용 내역 팝업 -->
+	<div class="modal fade couponInfo_pop" id="couponInfoPop" tabindex="-1" role="dialog" aria-labelledby="couponInfoLabel" aria-hidden="true">
+	<div class="modal-dialog" role="document">
+		<div class="modal-content">
+               <!-- 쿠폰사용안내 팝업 내용 -->      
+		</div>
+	</div>
+	<a href="#close-modal" rel="modal:close" id="couponInfoPop_close" class="close-modal">Close</a>
+	</div>
+	
 <script th:inline="javascript">
 /*<![CDATA[*/
 	// 패밀리 사이트
@@ -1229,6 +1242,80 @@
 		}
 	}
 	
+	// 쿠폰리스트
+	let issueCouponBtn = function() {
+		if (!cfCheckLogin()) {
+			$('#couponList').addClass('need_login');
+			return false;
+		}else{
+			
+		}
+	}
+	
+	// 보유 쿠폰 클릭 시 
+	let ownCouponBtn = function() {
+		$.getJSON('/mypage/quick/own/coupon/list'
+				, function(result, status) {
+					if (status == 'success') {
+						if (result.length > 0) {
+							let tag = '';
+							tag += '<ul class="clear">';
+							$.each(result, function (idx, item) {
+								tag += '	<li>';
+								tag += '		<div class="cp_top">';
+								tag += '			<div class="cp_detail">';
+								tag += '				<p class="tit">'+item.cpnNm+'</p>';
+								if (item.dcWay == '%') {
+									tag += '				<strong class="sale_t won_t"><span>'+item.dcVal+'</span>%</strong>';
+								}else{
+									tag += '				<strong class="sale_t won_t"><span>'+item.dcVal+'</span>원</strong>';
+								}
+								
+								tag += '				<p class="cp_cont">'+item.useCondition+'</p>';
+								tag += '				<span class="cp_cnt"><span>'+item.cpnCnt+'</span>장 보유</span>';
+								tag += '			</div>';
+								tag += '			<span class="cp_shape"></span>';
+								tag += '		</div>';
+								tag += '		<div class="cp_date">';
+								tag += '			<span>'+item.availStdt+'</span> ~ <span>'+item.availEddt+'</span>';
+								tag += '		</div>';
+								tag += '		<div class="cp_info">';
+								tag += '			<button type="button" class="coupon_pop_btn" onclick="useInfoCoupon('+item.cpnId+')"><span>사용안내</span></button>';
+								tag += '		</div>';
+								tag += '	</li>';
+							});
+							tag += '<ul>';
+							
+							$('#ownCoupon').html(tag);
+						} else {
+							$('#ownCoupon').addClass('nodata');
+						}
+					}
+			});
+	}
+	
+	// 소유한 쿠폰 사용안내 모달
+	var useInfoCoupon = function (id) {
+		var data = {cpnId : id};
+		var jsonData = JSON.stringify(data);
+		
+		 $.ajax( {
+			type		: "POST",
+			url 		: '/mypage/coupon/detailPop',
+			data		: jsonData,
+			contentType: 'application/json',
+			dataType 	: 'html',
+			success 	: function(result) {
+				if (result != null) {
+					$("#couponInfoPop").html(result);
+					$("#couponInfoPop").modal("show");
+				}
+			}
+		});
+		
+		return false; 
+	}
+	
 	// 팝업
 	let fnGetPopup = function(){
 		let data = {viewPage : [[${viewPage}]]
@@ -1350,6 +1437,9 @@
 		// 팝업조회
 		fnGetPopup();
 		
+		// 쿠폰조회
+		$("#issueCouponBtn").trigger("click");	
+		
 		// Family Site
 		$('.family_link').on('click','.btn',function(e){
 			e.preventDefault();

+ 41 - 28
src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html

@@ -608,41 +608,53 @@
 				tag += '				</ul>\n';
 				tag += '			</div>\n';
 				tag += '		</div>\n';
+				tag += '	<div class="head_banner" id="id'+cate1.cate1No+'">\n';
+				tag += '	</div>';
 				tag += '	</div>\n';
 			}
-
-			// if (cate1.bannerList.length > 0) {
-			// 	tag += '	<div class="head_banner">\n';
-			// 	tag += '		<div class="tit">\n';
-			// 	tag += '			<p>가을의 신상 만나기</p>\n';
-			// 	tag += '		</div>\n';
-			// 	tag += '		<div class="list">\n';
-			// 	tag += '			<ul class="clear event_con">\n';
-			// 	tag += '				<li>\n';
-			// 	tag += '					<a href="">\n';
-			// 	tag += '						<div class="ev_img"><img src="/images/pc/thumb/ev_list_img01.jpg" alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션"></div>\n';
-			// 	tag += '						<div class="txt">\n';
-			// 	tag += '							<p class="tit">2020 FALL COLLECTION 가을에는 이 컬러 2020 FALL COLLECTION 가을에는 이 컬러</p>\n';
-			// 	tag += '						</div>\n';
-			// 	tag += '					</a>\n';
-			// 	tag += '				</li>\n';
-			// 	tag += '				<li>\n';
-			// 	tag += '					<a href="">\n';
-			// 	tag += '						<div class="ev_img"><img src="/images/pc/thumb/ev_list_img02.jpg" alt="단 48시간, 퓨어캐시미어 최대 80%세일 PURE CASHMERE 48H POP-UP"></div>\n';
-			// 	tag += '						<div class="txt">\n';
-			// 	tag += '							<p class="tit">FALL NEW ARRIVAL</p>\n';
-			// 	tag += '						</div>\n';
-			// 	tag += '					</a>\n';
-			// 	tag += '				</li>\n';
-			// 	tag += '			</ul>\n';
-			// 	tag += '		</div>\n';
-			// 	tag += '	</div>\n';
-			// }
 			tag += '</li>\n';
 		}
 		return tag;
 	}
 
+	let fnGetGnbBanner = function (cateNo, title){
+		let actionUrl = '/display/gnb/tab/banner/list?cateNo='+cateNo;
+		let tag2 = '';
+		$.getJSON(actionUrl
+		, function(result, status){
+			var bannerImgUrl = [[${@environment.getProperty('domain.image')}]];
+			var planninImgUrl = [[${@environment.getProperty('upload.image.view')}]];
+			if(result.length>0){
+				tag2 += '		<div class="tit">\n';
+				tag2 += '			<p>'+title+'</p>\n';
+				tag2 += '		</div>\n';
+				tag2 += '		<div class="list">\n';
+				tag2 += '			<ul class="clear event_con">\n';
+				$.each(result, function (idx, item){
+					tag2 += '				<li>\n';
+					tag2 += '					<a href="javascript:void(0);" onclick="cfnGoToPage(\''+item.strVar1+'\')">\n';
+					if(item.bannerGb=='ADMIN'){
+						tag2 += '						<div class="ev_img"><img src="'+bannerImgUrl+''+item.imgPath1+'" alt=""></div>\n';
+					}else{
+						tag2 += '						<div class="ev_img"><img src="'+planninImgUrl+''+item.imgPath1+'" alt=""></div>\n';
+					}
+
+					tag2 += '						<div class="txt">\n';
+					tag2 += '							<p class="tit">'+item.strTitle1+'</p>\n';
+					// tag2 += '							<p class="tit">'+item.strTitle2+'</p>\n';
+					tag2 += '						</div>\n';
+					tag2 += '					</a>\n';
+					tag2 += '				</li>\n';
+				});
+				tag2 += '			</ul>\n';
+				tag2 += '		</div>\n';
+			}
+			$('#id'+cateNo).append(tag2);
+			return tag2;
+		});
+
+	}
+
 	// GNB탭 생성
 	let fnCreateGnbTab = function() {
 		$.getJSON('/display/gnb/tab/list'
@@ -658,6 +670,7 @@
 								$.each(allCate, function(allCateIdx, allCateItem) {
 									if (item.cate1No == allCateItem.cate1No) {
 										let gnbCate = fnGetGnbCategory(allCateItem);
+										fnGetGnbBanner(item.cate1No ,item.gtabBannerTitle);
 										$('#divGnbTab').append(gnbCate);
 										$('#ulGnbTab').append(gnbCate);
 									}

+ 65 - 7
src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html

@@ -37,18 +37,21 @@
 										<div class="swiper-slide">
 											<th:block th:if="${ContentsData.imgPath1!=null && ContentsData.imgPath1!=''}">
 												<div class="txtWrap">
+
 													<th:block th:if="${ContentsData.strVar5!=null && ContentsData.strVar5!=''}">
 														<p class="vrt_txt" th:if="${ContentsData.strVar5=='P'}" th:text="${ContentsData.planBrandGroupNm}"></p>
-														<p class="vrt_txt" th:if="${ContentsData.strVar5!='P'}">EVENT</p>
+														<p class="vrt_txt" th:if="${ContentsData.strVar5!='P'}" >EVENT</p>
 													</th:block>
 													<dl th:class="${ContentsData.strVar7=='BLACK'?'':'w'}">
 														<dt th:if="${ContentsData.strVar5=='P'}" th:text="${ContentsData.planBrandGroupNm}"></dt>
 														<dt th:if="${ContentsData.strVar5!='P'}" >EVENT</dt>
-														<dd th:text="${ContentsData.strTitle1}"></dd>
-														<!--<dd>NEW ARRIVAL</dd>-->
+														<dd class="mainTitle">
+															<input type="hidden" name="mainTitlee" th:value="${ContentsData.strTitle1}"/>
+														</dd>
+<!--														<dd>NEW ARRIVAL</dd>-->
 														<dd class="txt_xs" th:text="${ContentsData.subText1}"></dd>
 													</dl>
-													<button type="button" class="btn"><span>자세히 보기</span></button>
+													<button type="button" class="btn" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);"><span>자세히 보기</span></button>
 												</div>
 												<!--<img src="/images/pc/thumb/main_visual01.jpg" alt="">-->
 												<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}">
@@ -140,8 +143,12 @@
 				<th:block th:if="${contentsLoc=='004'}">
 					<div class="content main_it">
 						<div class="cont_head">
-							<p class="displayH" th:text="${mainLayoutData.contentsTitle}"></p>
-							<a href="#none"><span>전체보기</span></a>
+							<p class="displayH" id="id004">
+								<input type="hidden" name="title" th:value="${mainLayoutData.contentsTitle}">
+							</p>
+							<th:block th:each="ContentsData, ContentsStat : ${mainLayoutData.ContentsList}">
+								<a href="javascript:void(0);" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);"><span>전체보기</span></a>
+							</th:block>
 						</div>
 						<div class="cont_body">
 							<div class="it_nav">
@@ -177,6 +184,9 @@
 											</div>
 										</th:block>
 									</div>
+									<div class="swiper-controls">
+										<div class="swiper-scrollbar"></div>
+									</div>
 								</div>
 							</th:block>
 						</div>
@@ -218,7 +228,9 @@
 				<th:block th:if="${contentsLoc=='006'}">
 					<div class="content wide main_deal" th:if="${mainLayoutData.socialInfo != null}">
 						<div class="cont_head">
-							<p class="displayH" id="id006" th:text="${mainLayoutData.contentsTitle}">오늘만<br>이 가격에 만나요</p>
+							<p class="displayH" id="id006">
+								<input type="hidden" name="title" th:value="${mainLayoutData.contentsTitle}">
+							</p>
 							<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_SOCIAL_MAIN);"><span>전체보기</span></a>
 							<div class="deal_progress">
 								<div class="bar_current" style="width:33.333%"><span>HERE</span></div>
@@ -1108,6 +1120,52 @@ var main_tv_slide = new Swiper ('.main_tv .post-tv', {
 		// var brCheck = "오늘만 <br> 이 가격@".split("<br>");
 		// console.log(brCheck[0]);
 		// console.log(brCheck[1]);
+
+		// 몰메인 <br> 태그
+		$('.mainTitle').each(function (){
+			let tag = '';
+			var brText = $(this).find("input[name=mainTitlee]").val();
+
+			if(brText.indexOf('<br>') > -1){
+				var reText = brText.split("<br>");
+				tag += reText[0];
+				tag += '<br>';
+				tag += reText[1];
+			}else{
+				tag += brText;
+			}
+			$(this).append(tag);
+		});
+
+		// 잇아이템 <br> 태그
+		var id004Text = $("#id004").find("input[name=title]").val();
+		if(id004Text.indexOf('<br>') > -1){
+			let tag = '';
+			var reText = id004Text.split("<br>");
+			tag += reText[0];
+			tag += '<br>';
+			tag += reText[1];
+			$("#id004").append(tag);
+		}else{
+			let tag = '';
+			tag += id004Text;
+			$("#id004").append(tag);
+		}
+
+		// 핫딜 <br> 태그
+		var id006Text = $("#id006").find("input[name=title]").val();
+		if(id006Text.indexOf('<br>') > -1){
+			let tag = '';
+			var reText = id006Text.split("<br>");
+			tag += reText[0];
+			tag += '<br>';
+			tag += reText[1];
+			$("#id006").append(tag);
+		}else{
+			let tag = '';
+			tag += id006Text;
+			$("#id006").append(tag);
+		}
 	});
 /*]]>*/
 </script>

+ 8 - 6
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html

@@ -716,7 +716,7 @@
 	
 	//장바구니담기
 	var fnAddCart = function(btnType){
-		let params = [];
+		let compsList = [];
 		
 		let target = $('#cartForm input[name=cea]');
 		let targetSize = target.length;	//선택성품 갯수
@@ -730,8 +730,8 @@
 			let ea = parseInt($(this).val());
 			let goodsCd = $(this).parent().find('input[name="coption"]').attr('goodscd');
 			let optCd = $(this).parent().find('input[name="coption"]').val();
-			let addPrice = parseInt($(this).parent().find('input[name="coption"]').attr('addprice'));
-			let goodsPrice = parseInt($(this).parent().find('input[name="coption"]').attr('price'));
+			//let addPrice = parseInt($(this).parent().find('input[name="coption"]').attr('addprice'));
+			//let goodsPrice = parseInt($(this).parent().find('input[name="coption"]').attr('price'));
 			
 			var obj = new Object();
 			obj.cartGb = btnType;
@@ -739,17 +739,19 @@
 			obj.goodsCd = goodsCd;
 			obj.optCd = optCd;
 			obj.goodsQty = ea;
+			obj.dealGoodsCd = $("#cartForm  input[name=goodsCd]").val();
 			obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
 			obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
 			obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
 			obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
-			params.push(obj);
+			compsList.push(obj);
 			
 		});
 		
-		
 		// 장바구니담기
-		cfnAddCart(params);
+		cfnAddCart(compsList);
+		
+		
 	}
 	
 	// 선택상품 삭제

+ 5 - 1
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -900,6 +900,10 @@
 				if (maxCnt > itemCnt) {
 					maxCnt = itemCnt;
 				}
+				if (minOrdQty > itemCnt) {
+					//alert("무슨작업을 해야할가요?");
+					return false;		 //무슨작업을 해야하나?
+				}
 	
 				$("#cartForm  input[name=ordQty]").val(minOrdQty);
 				$("#cartForm  input[name=maxOrdQty]").val(maxCnt);
@@ -1217,7 +1221,7 @@
 					}
 					let soldoutYn = ""; 
 					let saleQty = (Number(qty) * Number(minOrdQty));
-					if ("Y" == item.soldoutYn || item.stockQty <= saleQty)soldoutYn = "true";
+					if ("Y" == item.soldoutYn || Number(item.stockQty) <= Number(saleQty))soldoutYn = "true";
 					if (selfGoodsYn == "Y"){
 						tag += '<li aria-disabled="'+soldoutYn+'" data-soldout="'+soldoutYn +'" onclick="fnViewStockSet(this, \''+ item.goodsCd+'\' , \''+ item.optCd1+'\' , \''+ item.optCd2+'\', \''+ minOrdQty+'\', \''+ maxOrdQty+'\')">\n';	
 					}else{

+ 2 - 0
src/main/webapp/WEB-INF/views/web/mypage/MypageCancelFormWeb.html

@@ -305,6 +305,8 @@
 		data.bankCd = bankCd;
 		data.isCustomer = 'Y';
 		data.reqGbn = 'cnclComplete';
+		data.pgTid = paymentInfo.pgTid;
+		data.payAmt = paymentInfo.payAmt;
 		data.ordDtlNoArr = ordDtlNoArr;
 		data.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
 

+ 27 - 43
src/main/webapp/WEB-INF/views/web/mypage/MypageCouponDetailFormWeb.html

@@ -17,48 +17,32 @@
  *******************************************************************************
  -->
 <!-- 쿠폰 상세보기 팝업 -->
-<div class="modal-dialog" role="document">
-    <div class="modal-content">
-        <div class="modal-header">
-            <h5 class="modal-title" th:text="${couponDetailInfo.cpnNm}"></h5>
-        </div>
-        <div class="modal-body">
-            <div class="pop_cont">
-                <p th:if="${couponDetailInfo.buyLimitAmt < 1}"><strong>사용조건</strong>제한없음</p>
-                <p th:unless="${couponDetailInfo.buyLimitAmt < 1}"><strong>사용조건</strong>[[${#numbers.formatInteger(couponDetailInfo.buyLimitAmt,0,'COMMA')}]]원 이상 구매 시 최대 [[${#numbers.formatInteger(couponDetailInfo.maxDcAmt,0,'COMMA')}]]원 할인 </p>
-                <p th:if="${couponDetailInfo.custPubLimitQty < 1}"><strong>발급수량</strong>제한없음</p>
-                <p th:unless="${couponDetailInfo.custPubLimitQty < 1}"><strong>발급수량</strong>1인 최대 [[${#numbers.formatInteger(couponDetailInfo.custPubLimitQty,0,'COMMA')}]] 매</p>
-                <p><strong>유효기간</strong>[[${couponDetailInfo.availStdt}]] ~ [[${couponDetailInfo.availEddt}]]</p>
-             
-                <p><strong>브랜드</strong>
-                   <th:block th:each="BrandData, BrandStat : ${cpnDtlRefvalBrandList}">
-                		[[${BrandData.brandEnm}]],
-               		</th:block>
-                </p>
-                
-                <p><strong>카테고리</strong>
-                	<th:block th:each="CateData, CateStat : ${cpnDtlRefvalCateList}">
-                		[[${CateData.cateNm}]],
-                	</th:block>
-                </p>
-                
-                <p><strong>상품</strong>
-                	<th:block th:each="GoodsData, GoodsStat : ${cpnDtlRefvalApplyGoodsList}">
-                		[[${GoodsData.goodsNm}]],
-                	</th:block>
-                </p>
-                
-                <p><strong>제외상품</strong>
-                	<th:block th:each="ExceptData, ExceptStat : ${cpnDtlRefvalExceptGoodsList}">
-                		[[${ExceptData.goodsNm}]],
-               		</th:block>
-                </p>
-                
+<div class="modal-header">
+    <h5 class="modal-title" id="couponInfoLabel" th:text="${couponDetailInfo.cpnNm}"></h5>
+</div>
+<div class="modal-body">
+    <div class="pop_cont">
+        <dl>
+            <div>
+                <dt>사용조건</dt>
+                <dd  th:text="${couponDetailInfo.useCondition}"></dd>
+            </div>
+            <div>
+                <dt>발급수량</dt>
+                <dd th:if="${couponDetailInfo.issueCondition!=null && couponDetailInfo.issueCondition!=''}"th:text="${couponDetailInfo.issueCondition}"></dd>
+                <dd th:unless="${couponDetailInfo.issueCondition!=null && couponDetailInfo.issueCondition!=''}">제한없음</dd>
+            </div>
+            <div>
+                <dt>유효기간</dt>
+                <dd>
+                    <span th:text="${couponDetailInfo.availStdt}"></span>&nbsp;~&nbsp;<span th:text="${couponDetailInfo.availEddt}"></span>
+                </dd>
             </div>
-        </div>
-        <div class="modal-footer">
-            <p>본 쿠폰은 특정 상품&#47;행사에 적용되는 쿠폰이며,적용가능여부는 상품별 상이할 수 있습니다.</p>
-            <p>본 이벤트는 당사 사정에 따라 사전고지 없이 변경 또는 조기종료 될 수 있습니다.</p>
-        </div>
+            <div th:if="${couponDetailInfo.tgtCondition!=null}">
+                <dt>대상조건</dt>
+                <dd th:text="${couponDetailInfo.tgtCondition}"> 
+                </dd>
+            </div>
+        </dl>
     </div>
-</div>
+</div>

+ 29 - 15
src/main/webapp/WEB-INF/views/web/mypage/MypageCouponFormWeb.html

@@ -64,34 +64,36 @@
 											<li>
 												<!-- 쿠폰사용 기한 -->
 												<div
-													th:class="${CouponData.userYn == 'Y' ? 'coupon' : 'coupon disable'}">
+													th:class="${CouponData.expireYn == 'N' ? 'coupon' : 'coupon disable'}">
 													<div>
 														<p class="cp_name" th:text="${CouponData.cpnNm}"></p>
 														<p class="cp_cont">
-															<th:block th:if="${CouponData.dcWay == '할인율'}">
-																<span><em th:text="${CouponData.dcPval}"></em>%</span>
+															<th:block th:if="${CouponData.dcWay == '%'}">
+																<span><em th:text="${CouponData.dcVal}"></em>%</span>
 															</th:block>
-															<th:block th:unless="${CouponData.dcWay == '할인율'}">
+															<th:block th:unless="${CouponData.dcWay == '%'}">
 																<span><em
-																	th:text="${#numbers.formatInteger(CouponData.dcPval,0,'COMMA')}"></em>원</span>
+																	th:text="${#numbers.formatInteger(CouponData.dcVal,0,'COMMA')}"></em>원</span>
 															</th:block>
 
 														</p>
 														<p class="cp_condition">
-															[[${#numbers.formatInteger(CouponData.buyLimitAmt,0,'COMMA')}]]원
+															<!-- [[${#numbers.formatInteger(CouponData.buyLimitAmt,0,'COMMA')}]]원
 															이상 구매 시 최대
 															[[${#numbers.formatInteger(CouponData.maxDcAmt,0,'COMMA')}]]원
-															할인 <span><em class="tag primary_line"
-																th:text="${CouponData.cnt}+' 장 보유'"></em></span>
+															할인  -->
+															[[${CouponData.useCondition}]]
+															<span><em class="tag primary_line"
+																th:text="${CouponData.cpnCnt}+' 장 보유'"></em></span>
 														</p>
 													</div>
-													<th:block th:if="${CouponData.userYn == 'Y'}">
+													<th:block th:if="${CouponData.expireYn == 'Y'}">
 														<p class="cp_date">
 															<span th:text="${CouponData.availStdt}"></span>&nbsp;~&nbsp;<span
 																th:text="${CouponData.availEddt}"></span>
 														</p>
 													</th:block>
-													<th:block th:unless="${CouponData.userYn == 'Y'}">
+													<th:block th:unless="${CouponData.expireYn == 'Y'}">
 														<p class="cp_date">사용완료</p>
 													</th:block>
 
@@ -125,7 +127,14 @@
 		</div>
 		<!-- // CONT-BODY -->
 		<!-- 쿠폰 사용 내역 팝업 -->
-		<div class="modal fade dp_coupon_pop"  id="coupon_modal_02" tabindex="-1" role="dialog"	aria-labelledby="PopupBasicLabel" aria-hidden="true"></div>
+		<div class="modal fade couponInfo_pop" id="couponInfoPop" tabindex="-1" role="dialog" aria-labelledby="couponInfoLabel" aria-hidden="true">
+		<div class="modal-dialog" role="document">
+			<div class="modal-content">
+                <!-- 쿠폰사용안내 팝업 내용 -->      
+			</div>
+		</div>
+		<a href="#close-modal" rel="modal:close" id="couponInfoPop_close" class="close-modal">Close</a>
+		</div>
 
 		<!-- // container -->
 		<script th:inline="javascript">
@@ -134,14 +143,19 @@ let couponList = ([[${couponList}]]);
 
 // 사용안내 모달
 var useInfoCoupon = function (id) {
+	var data = {cpnId : id};
+	var jsonData = JSON.stringify(data);
+	
 	 $.ajax( {
-		type		: "GET",
-		url 		: '/mypage/coupon/detailPop?cpnId='+ id,
+		type		: "POST",
+		url 		: '/mypage/coupon/detailPop',
+		data		: jsonData,
+		contentType: 'application/json',
 		dataType 	: 'html',
 		success 	: function(result) {
 			if (result != null) {
-				$("#coupon_modal_02").html(result);
-				$("#coupon_modal_02").modal("show");
+				$("#couponInfoPop").html(result);
+				$("#couponInfoPop").modal("show");
 			}
 		}
 	});

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

@@ -179,7 +179,7 @@
 											</div>
 											<div th:if="${oneData.pgGb == 'KCP' and oneData.payMeans == 'G014_30'}">
 												<dt class="sr-only">영수증 확인</dt>
-												<dd><button type="button" class="btn btn_default btn_sm" onclick="fnReceipt('cancel')"><span>취소 전표 보기</span></button></dd>
+												<dd><button type="button" class="btn btn_default btn_sm" th:attr="ordChgSq=${oneData.ordChgSq}, refundYn=${refundYn}" onclick="fnReceipt('cancel')"><span>취소 전표 보기</span></button></dd>
 											</div>
 										</dl>
 									</td>
@@ -205,6 +205,8 @@
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 	/*<![CDATA[*/
+	let oneData = [[${oneData}]];
+
 	$(document).ready(function() {
 		// 마이페이지 LNB 설정
 		fnSetMypageLnbList(2);

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

@@ -239,7 +239,7 @@
 												<dd th:if="${oneData.pgGb == 'KAKAO'}">카카오페이</dd>
 												<dd th:if="${oneData.pgGb == 'PAYCO'}">PAYCO</dd>
 											</div>
-											<div th:if="${oneData.pgGb == 'KCP' and oneData.payStat == 'G685_60' and oneData.payMeans == 'G014_30'}">
+											<div th:if="${refundYn == 'Y' and oneData.pgGb == 'KCP' and oneData.payMeans == 'G014_30'}">
 												<dt class="sr-only">영수증 확인</dt>
 												<dd><button type="button" class="btn btn_default btn_sm" onclick="fnReceipt('cancel')"><span>취소 전표 보기</span></button></dd>
 											</div>

+ 146 - 0
src/main/webapp/WEB-INF/views/web/order/OrderAddPaymentWeb.html

@@ -0,0 +1,146 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="web/common/layout/DefaultLayoutWeb">
+<!--
+ *******************************************************************************
+ * @source  : OrderAddPaymentWeb.html
+ * @desc    : 추가결제화면 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.13   jsh77b     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+<form class="form_wrap">
+
+<!--  container -->
+<div id="container" class="container od">
+		<div class="wrap">
+			<div class="content odPayment"> <!-- 페이지특정 클래스 = odPayment 클래스 추가 -->
+				<div class="cont_head">
+					<h2>추가결제</h2>
+				</div>
+				<div class="cont_body">
+					<!-- CONT-BODY -->
+					<div class="od_cont">
+							<div class="sec_body">
+								<div class="extra_pay">
+									<div class="tit_pay">
+										<span>결제수단 선택</span>
+									</div>
+									<div class="area_paymethod">
+										<div class="form_field">
+											<div class="paymethod_box">
+												<ul class="sel_method">
+													<li>
+														<input type="radio" name="rdi-paynormal" id="payCreditCard" value="" checked="checked">
+														<label for="payCreditCard"><span>신용카드</span></label>
+													</li>
+													<li>
+														<input type="radio" name="rdi-paynormal" id="payCellphone" value="">
+														<label for="payCellphone"><span>휴대폰 결제</span></label>
+													</li>
+												</ul>
+											</div>
+										</div>
+									</div>
+								</div>
+								<div class="area_paymentinfo">
+									<div class="paymentinfo">
+										<div class="payinfo_blk">
+											<a href="">개인정보 제공에 대한 동의<span>보기</span></a>
+											<div class="infotxt">
+												개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.
+											</div>
+										</div>
+										<div class="payinfo_blk">
+											<a href="">결제대행 서비스 약관 동의<span>보기</span></a>
+											<div class="infotxt">
+												결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.
+										</div>
+									</div>
+								</div>
+								<div class="agree_payment">
+									위 주문내역을 확인 하였으며, 회원 본인은 결제에 동의합니다.
+								</div>
+							</div>
+							<div class="area_paybtn">
+								<div class="form_field">
+									<button type="button" class="btn btn_primary btn_block"><span>동의 후 <em>123,456,789원</em> 결제하기</span></button>
+								</div>
+							</div>
+						</div>
+					</div>
+					<div class="od_side">
+						<div class="area_order">
+							<div class="tit_box"><h3>결제내역</h3></div>
+							<div class="od_item_box">
+								<!-- 반품상품 내역 -->
+								<div class="part_dlvr">
+									<h4 class="sr-only">반품상품</h4>
+									<div class="gd_list">
+										<div class="item_gd">
+											<figure>
+												<span class="thumb"><img src="/images/pc/thumb/tmp_odSide1.jpg" alt=""></span>
+												<figcaption>
+													<div class="brand">CURLYSUE 컬리수</div>
+													<div class="name">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
+													<div class="option">
+														<span>01_루돌프융기모상하복_D오렌지/110</span>
+														<span>울핸드메이드 벨티드재킷 SWHJKJ42010 / BROWN</span>
+														<span>BLACK / XXL</span>
+														<span>수량&nbsp;<em>99</em>개</span>
+													</div>
+													<div class="price">
+														<span class="selling_price">1,000,000</span>
+													</div>
+												</figcaption>
+											</figure>
+										</div>
+									</div>              
+								</div>
+								<!-- //반품상품 내역 -->                   
+							</div>
+							<div class="od_amount_box">
+								<dl>
+									<div>
+										<dt>환불 상품금액</dt>
+										<dd><em>1,590,000</em>원</dd>
+									</div>
+									<div>
+										<dt>반품/교환 배송비</dt>
+										<dd><em>0원</em></dd>
+									</div>
+								</dl>
+							</div>
+							<div class="totalprice_box">
+								<dl>
+									<dt>총 결제 예정 금액</dt>
+									<dd><span>3,546,200</span>원</dd>
+								</dl>
+								<p class="info_extra">
+									환불할 상품금액이 반품/교환 배송비보다 적을<br>
+									경우 배송비 를 결제하신 후 남은 상품금액이<br>
+									환불처리 됩니다.
+								</p>
+							</div>
+						</div>
+					</div>
+					<!-- // CONT-BODY -->					
+				</div>
+			</div>
+		</div>
+	</div>
+	<!-- // container -->	
+</form>
+
+<script th:inline="javascript">
+
+</script>
+</th:block>
+</body>
+</html>

+ 0 - 259
src/main/webapp/WEB-INF/views/web/order/OrderCompleteWeb_20210401.html

@@ -1,259 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="web/common/layout/DefaultLayoutWeb">
-<!--
- *******************************************************************************
- * @source  : OrderCompleteWeb.html
- * @desc    : 주문완료 Page
- *============================================================================
- * STYLE24
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2021.03.16   jsh77b     최초 작성
- *******************************************************************************
- -->
-<body>
-<th:block layout:fragment="content">
-<div id="container" class="container od">
-	<div class="wrap">
-		<div class="content completed">
-			<div class="cont_head">
-				<h2>주문완료</h2>
-				<div class="oder_steps">
-					<ul>
-						<li>01 쇼핑백</li>
-						<li>02 주문/결제</li>
-						<li class="on">03 주문완료</li>
-					</ul>
-				</div>
-			</div>
-			<div class="cont_body">
-				<!-- CONT-BODY -->
-				<div class="od_cont">
-					<div class="sec_head">
-						<div class="info_complete">
-							<p class="txt_box">감사합니다. <span th:text="${orderInfo.ordNm}"></span> 고객님의 주문이 완료되었습니다.</p>
-							<dl class="report_box">
-								<div>
-									<dt>주문번호</dt>
-									<dd th:text="${orderInfo.ordNo}"></dd>
-								</div>
-								<!-- 무통장입금 결제시 -->
-								<th:block th:if="${orderInfo.payMeans} == 'G014_20'">
-									<div>
-										<dt>무통장입금정보</dt>
-										<dd th:text="${orderInfo.cardNm}+${orderInfo.vaBank}"></dd>
-									</div>
-									<div class="closedate">
-										<dt>입금마감</dt>
-										<dd th:text="|${orderInfo.vaDeadline}까지|"></dd>
-									</div>
-								</th:block>
-								<!-- //무통장 입금 결제시 -->
-							</dl>
-						</div>
-					</div>
-					<div class="sec_body">
-						<div class="area_payinfo">
-							<h3>주문고객</h3>
-							<div class="tbl type1">
-								<table>
-									<colgroup>
-										<col width="*">
-									</colgroup>   
-									<tbody>
-										<tr>
-											<td>
-												<span class="sr-only">주문자명</span>
-												<th:block th:text="${orderInfo.ordNm}"></th:block>
-											</td>
-										</tr>
-										<tr>
-											<td>
-												<span class="sr-only">이메일</span>
-												<th:block th:text="${orderInfo.ordEmail}"></th:block>
-											</td>
-										</tr>
-										<tr>
-											<td>
-												<span class="sr-only">휴대폰 번호</span>
-												<th:block th:text="${orderInfo.ordPhnno}"></th:block>
-											</td>
-										</tr>
-									</tbody>
-								</table>
-							</div>
-						</div>
-						<div class="area_payinfo">
-							<h3>배송지 정보</h3>
-							<div class="tbl type1">
-								<table>
-									<colgroup>
-										<col width="*">
-									</colgroup>   
-									<tbody>
-										<tr>
-											<td>
-												<span class="sr-only">배송지명</span>
-												<th:block th:text="${orderInfo.recipNm}"></th:block>
-											</td>
-										</tr>
-										<tr>
-											<td>
-												<span class="sr-only">배송 주소</span>
-												<th:block th:text="${orderInfo.recipBaseAddr} + ${orderInfo.recipDtlAddr}"></th:block>
-											</td>
-										</tr>
-										<tr>
-											<td>
-												<span class="sr-only">휴대폰 번호</span>
-												<th:block th:text="${orderInfo.recipPhnno}"></th:block>
-											</td>
-										</tr>
-										<tr>
-											<td>
-												<span class="tit">배송요청 사항</span>
-												<th:block th:text="${orderInfo.delvMemo}"></th:block>
-												<button type="button" class="btn_popup" id="btn_rqstModify_pop">
-													<span>변경하기</span>
-												</button>
-											</td>
-										</tr>
-									</tbody>
-								</table>
-							</div>
-						</div>
-						<div class="area_payinfo">
-							<h3>결제정보</h3>
-							<div class="order_amount">
-								<div class="tbl type3">
-									<table>
-										<colgroup>
-											<col width="33.33%">
-											<col width="33.33%">
-											<col width="*">
-										</colgroup>
-										<thead>
-											<tr>
-												<th>
-													<dl>
-														<dt>총 주문금액</dt>
-														
-														<dd class="price" th:text="|${#numbers.formatInteger(ordSumAmt, 1, 'COMMA')}원|"></dd>
-													</dl>
-													<i class="ico_calc minus"></i>
-												</th>
-												<th>
-													<dl>
-														<dt>총 할인금액</dt>
-														<dd class="price" th:if="${dcSumAmt}>0" th:text="|- ${#numbers.formatInteger(dcSumAmt, 1, 'COMMA')}원|"></dd>
-														<dd class="price" th:if="${dcSumAmt}<1" th:text="|${#numbers.formatInteger(dcSumAmt, 1, 'COMMA')}원|"></dd>
-													</dl>
-													<i class="ico_calc result"></i>
-												</th>
-												<th>
-													<dl>
-														<dt>결제금액</dt>
-														<dd class="price" data-weight="price" data-font="lato">
-															<span class="oder_total_price" th:text="${#numbers.formatInteger(realOrdSumAmt, 1, 'COMMA')}"></span>원
-														</dd>
-													</dl>
-												</th>
-											</tr>
-										</thead>
-										<tbody>
-											<tr>
-												<td>
-													<dl>
-														<div>
-															<dt>상품금액</dt>
-															<dd th:text="|${#numbers.formatInteger(goodsSumAmt, 1, 'COMMA')}원|"></dd>
-														</div>
-														<div>
-															<dt>배송비</dt>
-															<dd th:text="|${#numbers.formatInteger(delvFeeSumAmt, 1, 'COMMA')}원|"></dd>
-														</div>
-													</dl>
-												</td>
-												<td>
-													<dl>
-														<div>
-															<dt>상품 할인(즉시 할인)</dt>
-															<dd th:if="${cpn1DcSumAmt}>0" th:text="|- ${#numbers.formatInteger(cpn1DcSumAmt, 1, 'COMMA')}원|"></dd>
-															<dd th:if="${cpn1DcSumAmt}<1" th:text="|${#numbers.formatInteger(cpn1DcSumAmt, 1, 'COMMA')}원|"></dd>
-														</div>
-														<div>
-															<dt>다다익선 할인</dt>
-															<dd th:if="${tmtbSumAmt}>0" th:text="|- ${#numbers.formatInteger(tmtbSumAmt, 1, 'COMMA')}원|"></dd>
-															<dd th:if="${tmtbSumAmt}<1" th:text="|${#numbers.formatInteger(tmtbSumAmt, 1, 'COMMA')}원|"></dd>
-														</div>
-														<div>
-															<dt>쿠폰 할인</dt>
-															<dd th:if="${cpnDcSumAmt}>0" th:text="|- ${#numbers.formatInteger(cpnDcSumAmt, 1, 'COMMA')}원|"></dd>
-															<dd th:if="${cpnDcSumAmt}<1" th:text="|${#numbers.formatInteger(cpnDcSumAmt, 1, 'COMMA')}원|"></dd>
-														</div>
-														<div>
-															<dt>선 포인트 할인</dt>
-															<dd th:if="${prePntDcSumAmt}>0" th:text="|- ${#numbers.formatInteger(prePntDcSumAmt, 1, 'COMMA')}원|"></dd>
-															<dd th:if="${prePntDcSumAmt}<1" th:text="|${#numbers.formatInteger(prePntDcSumAmt, 1, 'COMMA')}원|"></dd>
-														</div>
-														<div>
-															<dt>포인트 사용</dt>
-															<dd th:if="${pntDcSumAmt}>0" th:text="|- ${#numbers.formatInteger(pntDcSumAmt, 1, 'COMMA')}원|"></dd>
-															<dd th:if="${pntDcSumAmt}<1" th:text="|${#numbers.formatInteger(pntDcSumAmt, 1, 'COMMA')}원|"></dd>
-														</div>
-														<div>
-															<dt>상품권 사용</dt>
-															<dd th:if="${gfcdUseSumAmt}>0" th:text="|- ${#numbers.formatInteger(gfcdUseSumAmt, 1, 'COMMA')}원|"></dd>
-															<dd th:if="${gfcdUseSumAmt}<1" th:text="|${#numbers.formatInteger(gfcdUseSumAmt, 1, 'COMMA')}원|"></dd>
-														</div>
-														<div>
-															<dt>마일리지 사용</dt>
-															<dd th:if="${mileageDcAmt}>0" th:text="|- ${#numbers.formatInteger(mileageDcAmt, 1, 'COMMA')}원|"></dd>
-															<dd th:if="${mileageDcAmt}<1" th:text="|${#numbers.formatInteger(mileageDcAmt, 1, 'COMMA')}원|"></dd>
-														</div>
-														<div>
-															<dt>제휴 할인</dt>
-															<dd th:if="${allianceDcAmt}>0" th:text="|- ${#numbers.formatInteger(allianceDcAmt, 1, 'COMMA')}원|"></dd>
-															<dd th:if="${allianceDcAmt}<1" th:text="|${#numbers.formatInteger(allianceDcAmt, 1, 'COMMA')}원|"></dd>
-														</div>
-													</dl>
-												</td>		
-												<td>
-													<dl>
-														<div>
-															<dt>적립 예정 포인트</dt>
-															<dd th:text="|${#numbers.formatInteger(savePntSumAmt, 1, 'COMMA')}원|"></dd>
-														</div>
-														<div>
-															<dt>결제방법</dt>
-															<dd>
-																<span class="paymethod" th:if="!${orderInfo.cardNm}" th:text="${orderInfo.payType}"></span>
-																<span class="paymethod" th:if="${orderInfo.cardNm}" th:text="${orderInfo.cardNm}"></span>
-															</dd>
-														</div>
-													</dl>
-												</td>
-											</tr>
-										</tbody>
-									</table>
-								</div>
-							</div>
-						</div>
-					</div>
-					<div class="sec_foot">
-						<div class="btn_group_md">
-							<button type="button" class="btn btn_default btn_md"><span>주문 상세보기</span></button>
-							<button type="button" class="btn btn_dark btn_md"><span>쇼핑 계속하기</span></button>
-						</div>
-					</div>
-				</div>
-				<!-- //CONT-BODY -->
-			</div>
-		</div>
-	</div>
-</div>
-</th:block>
-</body>
-</html>

+ 0 - 286
src/main/webapp/WEB-INF/views/web/order/OrderDcAmtInfoWeb_20210318.html

@@ -1,286 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : OrderDcAmtInfoWeb.html
- * @desc    : 할인혜택 Page
- *============================================================================
- * STYLE24
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2021.02.01   jsh77b     최초 작성
- *******************************************************************************
- -->
-<div class="fold_head">
-	<a href="javascript:void(0)">
-		<div>
-			<div class="fold_tit">
-				<span>할인/혜택 사용</span>
-			</div>
-			<div class="data maxdisc">
-				<div class="form_field">
-					<input id="chk-maxdisc" type="checkbox" checked="">
-					<label for="chk-maxdisc">
-						<span>최대 할인혜택을 바로 적용하세요 <em class="maxdisc_amount"></em></span>
-					</label>
-				</div>
-			</div>
-		</div>
-	</a>
-</div>
-<div class="fold_cont" style="display: none;">
-	<div class="area_seldiscount">
-		<dl>
-			<div>
-				<dt><span class="mid">할인코드</span></dt>
-				<dd>
-					<div class="form_field">
-						<div class="input_wrap">
-							<input type="text" id="serialCpnNm" class="form_control" maxlength="13" placeholder="할인코드를 입력해주세요.">
-							<button type="button" class="btn btn_dark" onclick="serialCpnApply()">적용</button>
-						</div>
-					</div>
-				</dd>
-			</div>
-			<div id="custCpnInfo" style="display:none">
-				<dt>할인쿠폰</dt>
-				<dd>
-					<a href="javascript:void(0);" class="btn_coupon_toggle">할인쿠폰 <span id="cpnApplyCnt"></span>적용</a>
-					<div class="coupon_list">
-						<ul>
-							<!--  상품쿠폰 -->
-							<th:block th:each="goods, i : ${goodsApplyCpnList}">
-								<th:block th:if="${goods.goodsCpnList.size() > 0}">
-									<li>
-										<div class="coupon">
-											<div class="item_gd">
-												<figure>
-													<span class="thumb"><img src="/images/pc/thumb/tmp_odSide1.jpg" alt=""></span>
-													<figcaption>
-														<div class="brand" th:text="${goods.brandEnm}+' '+${goods.brandKnm}"></div>
-														<div class="name" th:text="${goods.goodsNm}"></div>
-														<div class="price">
-															<th:block th:if="${goods.tmtbDcAmt} > 0">
-																<span class="selling_price"  th:text="${#numbers.formatInteger(goods.tmtbDcAmt, 1, 'COMMA')}"></span>
-															</th:block>
-															<th:block th:if="${goods.tmtbDcAmt} < 1">
-																<span class="selling_price"  th:text="${#numbers.formatInteger(goods.currPrice, 1, 'COMMA')}"></span>
-															</th:block>
-														</div>
-													</figcaption>
-												</figure>
-											</div>
-											 
-											<div class="form_field">
-												<div class="select_custom type1">
-													<div class="combo">
-														<input type="hidden" name="cpnType" value="goodsCpn"/>
-														<input type="hidden" name="cpnCartSq" th:value="${goods.cartSq}"/>
-														<input type="hidden" name="custCpnSq" value="0"/>
-														<input type="hidden" name="cpnDcAmt" value="0"/>
-														
-														<div class="select">선택없음</div>
-														<ul class="list">
-															<li value="0">선택없음</li>
-															<th:block th:each="goodsCpn, k : ${goods.goodsCpnList}">
-																<li th:value="${goodsCpn.custCpnSq}" th:data="${goodsCpn.cpnDcAmt}" th:text="${goodsCpn.cpnNm}"></li>
-															</th:block>
-														</ul>
-													</div>
-												</div>
-											</div>
-											<div class="cp_discount" style="display:none;">
-												<span class="cp_amount"></span>
-												<button type="button" class="btn_del_coupon"><span>쿠폰적용해제</span></button>
-											</div>
-										</div>
-									</li>
-								</th:block>
-							</th:block>
-							<!--  상품쿠폰 -->
-
-							<!--  장바구니쿠폰 -->
-							<th:block th:if="${cartCpnList.size() > 0}">
-								<li>
-									<div class="coupon">
-										<div class="form_field">
-											<div class="select_custom type1">
-												<div class="combo">
-													<input type="hidden" name="cpnType" value="cartCpn"/>
-													<input type="hidden" name="custCpnSq" value="0"/>
-													<input type="hidden" name="cpnDcAmt" value="0"/>
-													
-													<div class="select">선택없음</div>
-													<ul class="list">
-														<li value="0">선택없음</li>
-														<th:block th:each="cartCpn, k : ${cartCpnList}">
-															<li th:value="${cartCpn.custCpnSq}" th:data="${cartCpn.cpnDcAmt}">
-																<th:block th:text="${cartCpn.cpnNm}"></th:block>
-																<input type="hidden" name="dcWay" th:value="${cartCpn.dcWay}"/>
-																<input type="hidden" name="dcVal" th:value="${cartCpn.dcVal}"/>
-																<th:block th:each="cartCpnCartSq, kokok : ${cartCpn.cartCpnCartSqArr}"> 
-																	<input type="hidden" name="cartCpnCartSq" th:value="${cartCpnCartSq}" />
-																</th:block>
-															</li>
-														</th:block>
-													</ul>
-												</div>
-											</div>
-										</div>
-										<div class="cp_discount">
-											<span class="cp_amount"></span>
-											<button type="button" class="btn_del_coupon"><span>쿠폰적용해제</span></button>
-										</div>
-									</div>
-								</li>
-							</th:block>
-							<!--  장바구니쿠폰 -->
-							
-							<!--  배송비쿠폰 -->
-							<th:block th:if="${delvCpnList.size() > 0}">
-								<li>
-									<div class="coupon">
-										<div class="form_field">
-											<div class="select_custom type1">
-												<div class="combo">
-													<input type="hidden" name="cpnType" value="delvCpn"/>
-													<input type="hidden" name="custCpnSq" value="0"/>
-													<input type="hidden" name="cpnDcAmt" value="0"/>
-													<input type="hidden" name="delvFeeCd" value="0"/>
-													
-													<div class="select" value="0">선택없음</div>
-													<ul class="list">
-														<li value="0">선택없음</li>
-														<th:block th:each="delvCpn, k : ${delvCpnList}">
-															<li th:value="${delvCpn.custCpnSq}" th:data="${delvCpn.dcVal}" th:delvfeecd="${delvCpn.delvFeeCd}" th:delvfee="${delvCpn.delvFee}" th:text="${delvCpn.cpnNm}"></li>
-														</th:block>
-													</ul>
-												</div>
-											</div>
-										</div>
-										<div class="cp_discount">
-											<span class="cp_amount"></span>
-											<button type="button" class="btn_del_coupon"><span>쿠폰적용해제</span></button>
-										</div>
-									</div>
-								</li>
-							</th:block>
-							<!--  배송비쿠폰 -->
-						</ul>
-					</div>
-				</dd>
-			</div>
-		</dl>
-	</div>
-	
-	<!-- 선포인트금액, 포인트금액, 상품권금액 0보다 클때 적용 -->
-	<th:block th:if="${prePntDcAmt} > 0 or ${rmPntAmt} > 0 or ${rmGfcdAmt} > 0">
-		<div class="area_selpoint">
-			<dl>
-				<th:block th:if="${prePntDcAmt} > 0">
-					<div>
-						<dt>선 포인트 사용</dt>
-						<dd>
-							<div class="form_field">
-								<input type="hidden" name="rmPrePntAmt" th:value="${prePntDcAmt}"/>
-								<div>
-									<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint1" value="N"> 
-									<label for="rdi-beforpoint1"><span>사용 안함</span></label>
-								</div>
-								<div>
-									<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint2" value="Y"> 
-									<label for="rdi-beforpoint2"><span>사용함</span></label> 
-									<span class="remain_point" th:text="|사용가능 포인트 : ${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')} P|"></span>
-								</div>
-							</div>
-						</dd>
-					</div>
-				</th:block>
-				<th:block th:if="${rmPntAmt} > 0">
-					<div>
-						<dt>
-							<span class="mid">스타일 포인트</span>
-						</dt>
-						<dd>
-							<div class="form_field">
-								<input type="hidden" name="rmPntAmt" th:value="${rmPntAmt}"/>
-								<!-- 스타일 포인트 3만원 이상 결제시 노출 -->
-								<th:block th:if="${orgGoodsSumAmt} >= 30000">
-									<div class="input_wrap">
-										<input type="text" name="pntDcAmtStr" class="form_control" maxlength="" placeholder="사용할 포인트를 입력해주세요.">
-										<button type="button" class="btn btn_dark" id="btn_point_apply">적용</button>
-									</div>
-									<p><span class="remain_point rmPntAmt" th:text="|보유 : ${#numbers.formatInteger(rmPntAmt, 1, 'COMMA')} P|"></span>(결제금액의 최대 40%까지 사용가능)</p>
-								</th:block>
-								<!-- 스타일 포인트 3만원 이상 결제시 노출 -->
-								
-								<!-- 스타일 포인트 3만원 미만 결제시 노출 -->
-								<th:block th:if="${orgGoodsSumAmt} < 30000">
-									<div class="input_wrap">
-										<input type="text" class="form_control" maxlength="" placeholder="3만원 이상 결제시에만 포인트 사용이 가능합니다." disabled>
-									</div>
-								</th:block>
-							</div>
-						</dd>
-					</div>
-				</th:block>
-				<th:block th:if="${rmGfcdAmt} > 0">
-					<div>
-						<dt>
-							<span class="mid">상품권</span>
-						</dt>
-						<dd>
-							<div class="form_field">
-								<input type="hidden" name="rmGfcdAmt" th:value="${rmGfcdAmt}"/>
-								<div class="input_wrap">
-									<input type="text" name="gfcdUseAmtStr" class="form_control" maxlength="" placeholder="사용할 금액을 입력해주세요.">
-									<button type="button" class="btn btn_dark" id="btn_gfcd_apply">적용</button>
-								</div>
-								<p><span class="remain_point" th:text="|보유 : ${#numbers.formatInteger(rmGfcdAmt, 1, 'COMMA')} 원|"></span></p>
-								<div class="agree_receipt">
-									<input id="chk-receipt" type="checkbox"> 
-									<label for="chk-receipt"><span>상품권 현금영수증 신청</span></label>
-									<div class="info_box">
-										<div class="input_wrap">
-											<input type="text" class="form_control" maxlength="11" placeholder="">
-										</div>
-									</div>
-								</div>
-							</div>
-						</dd>
-					</div>
-				</th:block>
-			</dl>
-		</div>
-	</th:block>
-</div> <!-- //할인/혜택 사용 -->
-
-<script th:inline="javascript">
-var dispYn = [[${order.dispYn}]]; // 노출여부
-
-//컨텐츠 호출
-$(document).ready( function() {
-	// 화면펼침
-	if (dispYn == "Y") {
-		$("#dcAmtInfo .fold_head").addClass("on");
-		$("#dcAmtInfo .fold_cont").css("display", "block");
-
-		$("#dcAmtInfo .fold_cont .btn_coupon_toggle").addClass("on");
-		$("#dcAmtInfo .fold_cont .coupon_list").css("display", "block");
-		
-		// 2021.03.15 보유쿠폰존재하면 할인쿠폰 영역 노출
-		var custCpnCnt  = 0;
-		$("#custCpnInfo .coupon").each(function(){
-			custCpnCnt++;
-		});
-		
-		if (custCpnCnt > 0) {
-			$("#custCpnInfo").show();
-		}
-		
-	}
-});
-</script>
-</html>

+ 0 - 1842
src/main/webapp/WEB-INF/views/web/order/OrderFormWeb_20210317.html

@@ -1,1842 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="web/common/layout/DefaultLayoutWeb">
-<!--
- *******************************************************************************
- * @source  : OrderFormWeb.html
- * @desc    : 주문/결제 Page
- *============================================================================
- * STYLE24
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2021.02.01   jsh77b     최초 작성
- *******************************************************************************
- -->
-<body>
-<th:block layout:fragment="content">
-
-<link rel="stylesheet" type="text/css" href="/ux/pc/css/swiper.min.css">
-<script type="text/javascript" src="/ux/pc/js/swiper.min.js"></script>
-<script type="text/javascript" src="/ux/pc/js/slick.min.js"></script>
-<script type="text/javascript" src="/ux/pc/js/jquery-ui.js"></script>
-
-<!-- payment.js -->
-<script type="text/javascript" th:src="${@environment.getProperty('pg.kcp.js.url')}" src=""></script>
-<script type="text/javascript" src="/biz/payment.js"></script>
-
-<form id="order_info" name="order_info" method="post" action="/order/pay/result/response" ></form>
-
-<!--  container -->
-<form id="payForm" name="payForm">
-
-	<!-- 주문고객정보 -->
-	<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none;" name="orderInfo" id="orderInfo">
-		<tbody>
-			<tr style="height:30px;">
-				<th>custNm</th>
-				<th>email</th>
-				<th>cellPhnno</th>
-				<th>recipZipcode</th>
-				<th>recipBaseAddr</th>
-				<th>recipDtlAddr</th>
-				<th>delvMemo</th>
-				<th>foreignBuyYn</th>
-				<th>orderMadeYn</th>
-			</tr>
-			<tr style="height:30px;">
-				<td class="custNm"></td>
-				<td class="email"></td>
-				<td class="cellPhnno"></td>
-				<td class="recipZipcode"></td>
-				<td class="recipBaseAddr"></td>
-				<td class="recipDtlAddr"></td>
-				<td class="delvMemo"></td>
-				<td class="foreignBuyYn"></td>
-				<td class="orderMadeYn"></td>
-			</tr>
-		</tbody>
-	</table>
-
-	<!-- 사은품정보 -->
-	<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none;" name="freegiftInfo">
-		<tr style="height:30px;">
-			<th>freegiftValArr</th>
-			<th>freegiftUsePointArr</th>
-			<th>freegiftSqArr</th>
-			<th>freegiftGoodsArr</th>
-		</tr>
-		<tr style="height:30px;">
-			<td class="freegiftValArr"></td>
-			<td class="freegiftUsePointArr"></td>
-			<td class="freegiftSqArr"></td>
-			<td class="freegiftGoodsArr"></td>
-		</tr>
-	</table>
-
-	<!-- 주문상세금액 -->
-	<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none;" name="orderDetailInfo" id="orderDetailInfo">
-		<tr style="height:30px;">
-			<th>cartSq</th>
-			<th style="display:none">goodsNm</th>
-			<th>goodsCd</th>
-			<th>goodsType</th>
-			<th>itemCd</th>
-			<th>optCd</th>
-			<th style="display:none">optCd1</th>
-			<th style="display:none">optCd2</th>
-			<th style="display:none">itemQtyr</th>
-			<th>orgCurrPrice</th>
-			<th>cpn1DcSq</th>
-			<th>cpn1DcAmt</th>
-			<th>optAddPrice</th>
-			<th>goodsQty</th>
-			<th>ordAmt</th>
-			<th>tmtb1Sq</th>
-			<th>tmtb1DcAmt</th>
-			<th>tmtb2Sq</th>
-			<th>tmtb2DcAmt</th>
-			<th>goodsCpnSq</th>
-			<th>goodsCpnDcAmt</th>
-			<th>cartCpnSq</th>
-			<th>cartCpnDcAmt</th>
-			<th>prePntDcAmt1</th>
-			<th>dcSumAmt</th>
-			<th>pntDcAmt1</th>
-			<th>gfcdUseAmt1</th>
-			<th>realOrdAmt1</th>
-			<th>savePntAmt1</th>
-			<th>shotDelvYn</th>
-			<th>foreignYn</th>
-			<th>orderMadeYn</th>
-			<th>delvFeeCd</th>
-		</tr>
-		<th:block th:each="delvAllCart, index : ${delvAllCartList}">
-			<th:block th:if="${delvAllCart != null and #lists.size(delvAllCart) > 0}">
-				<th:block th:each="goods, i : ${delvAllCart}">
-					<tr style="height:30px;">
-						<td class="cartSq" 			th:text="${goods.cartSq}"></td>
-						<td class="goodsNm" 		th:text="${goods.goodsNm}" style="display:none"></td>
-						<td class="goodsCd"			th:text="${goods.goodsCd}"></td>
-						<td class="goodsType"		th:text="${goods.goodsType}"></td>
-						<td class="itemCd"			th:text="${goods.itemCd}"></td>
-						<td class="optCd"			th:text="${goods.optCd}"></td>
-						<td class="optCd1"			th:text="${goods.optCd1}" style="display:none"></td>
-						<td class="optCd2"			th:text="${goods.optCd2}" style="display:none"></td>
-						<td class="itemQtyr"		th:text="${goods.itemQtyr}" style="display:none"></td>
-						<td class="orgCurrPrice" 	th:text="${goods.orgCurrPrice}"></td>
-						<td class="cpn1CpnSq" 		th:text="${goods.cpn1CpnSq}"></td>
-						<td class="cpn1DcAmt" 		th:text="${goods.orgCurrPrice} - ${goods.currPrice}"></td>
-						<td class="optAddPrice" 	th:text="${goods.optAddPrice}"></td>
-						<td class="goodsQty" 		th:text="${goods.goodsQty}"></td>
-						<td class="ordAmt">0</td>
-						<th:block th:if="${goods.applyQtySectionYn} == 'Y' and ${goods.qtyTmtbSq} > 0">
-							<td class="tmtb1Sq" 	th:text="${goods.qtyTmtbSq}"></td>
-							<td class="tmtb1DcAmt" 	th:text="${goods.tmtb1DcAmt}"></td>
-						</th:block>
-						<th:block th:if="${goods.applyQtySectionYn} != 'Y'">
-							<td class="tmtb1Sq">0</td>
-							<td class="tmtb1DcAmt">0</td>
-						</th:block>
-						<th:block th:if="${goods.applyAmtSectionYn} == 'Y' and ${goods.amtTmtbSq} > 0">
-							<td class="tmtb2Sq" 	th:text="${goods.amtTmtbSq}"></td>
-							<td class="tmtb2DcAmt" 	th:text="${goods.tmtb2DcAmt}"></td>
-						</th:block>
-						<th:block th:if="${goods.applyAmtSectionYn} != 'Y'">
-							<td class="tmtb2Sq" >0</td>
-							<td class="tmtb2DcAmt" >0</td>
-						</th:block>
-						<td class="goodsCpnSq">0</td>
-						<td class="goodsCpnDcAmt">0</td>
-						<td class="cartCpnSq">0</td>
-						<td class="cartCpnDcAmt">0</td>
-						<td class="prePntDcAmt1" 	th:text="${goods.prePntDcAmt}"></td>
-						<td class="dcSumAmt">0</td>
-						<td class="pntDcAmt1">0</td>
-						<td class="gfcdUseAmt1">0</td>
-						<td class="realOrdAmt1">0</td>
-						<td class="savePntAmt1" 	th:text="${goods.savePntAmt}"></td>
-						<td class="shotDelvYn" 		th:text="${goods.shotDelvYn}"></td>
-						<td class="foreignBuyYn" 	th:text="${goods.foreignBuyYn}"></td>
-						<td class="orderMadeYn" 	th:text="${goods.orderMadeYn}"></td>
-						<td class="delvFeeCd" 		th:text="${goods.delvFeeCd}"></td>
-					</tr>
-				</th:block>
-			</th:block>
-		</th:block>
-	</table>
-
-	<!-- 배송단위목록 -->
-	<table border="1" style="font-size:10px; text-align:center;  margin-top:20px; display:none;" name="delvFeeCdInfo" id="delvFeeCdInfo">
-		<tr style="height:30px;">
-			<th>supplyCompCd</th>
-			<th>delvFeeCd</th>
-			<th>delvFee</th>
-			<th>delvCpnSq</th>
-			<th>delvCpnDcAmt</th>
-		</tr>
-		<th:block th:each="delvFeeCd, index : ${delvFeeCdList}">
-			<tr style="height:30px;">
-				<td class="supplyCompCd" th:text="${delvFeeCd.supplyCompCd}"></td>
-				<td class="delvFeeCd" th:text="${delvFeeCd.delvFeeCd}"></td>
-				<td class="delvFee" th:text="${delvFeeCd.delvFee}"></td>
-				<td class="delvCpnSq">0</td>
-				<td class="delvCpnDcAmt">0</td>
-			</tr>
-		</th:block>
-	</table>
-
-	<!-- 주문금액합계 -->
-	<table border="1" style="font-size:10px; text-align:center;  margin-top:20px; display:none;" name="orderSumAmtInfo" id="orderSumAmtInfo">
-		<tr style="height:30px;">
-			<th>orgGoodsSumAmt</th>
-			<th>delvSumAmt</th>
-			<th>freegiftUsePnt</th>
-			<th>cpn1DcSumAmt</th>
-			<th>ordSumAmt</th>
-			<th>tmtb1DcSumAmt</th>
-			<th>tmtb2DcSumAmt</th>
-			<th>tmtbDcSumAmt</th>
-			<th>goodsCpnDcSumAmt</th>
-			<th>cartCpnDcSumAmt</th>
-			<th>delvCpnDcSumAmt</th>
-			<th>cpnDcSumAmt</th>
-			<th>prePntDcAmt</th>
-			<th>pntDcSumAmt</th>
-			<th>gfcdUseSumAmt</th>
-			<th>realOrdSumAmt</th>
-			<th>savePntSumAmt</th>
-		</tr>
-		<tr style="height:30px;">
-			<td class="orgGoodsSumAmt">0</td>
-			<td class="delvSumAmt" th:text="${sumDelvFee}"></td>
-			<td class="freegiftUsePnt">0</td>
-			<td class="cpn1DcSumAmt">0</td>
-			<td class="ordSumAmt">0</td>
-			<td class="tmtb1DcSumAmt">0</td>
-			<td class="tmtb2DcSumAmt">0</td>
-			<td class="tmtbDcSumAmt">0</td>
-			<td class="goodsCpnDcSumAmt">0</td>
-			<td class="cartCpnDcSumAmt">0</td>
-			<td class="delvCpnDcSumAmt">0</td>
-			<td class="cpnDcSumAmt">0</td>
-			<td class="prePntDcSumAmt">0</td>
-			<td class="pntDcSumAmt">0</td>
-			<td class="gfcdUseSumAmt">0</td>
-			<td class="realOrdSumAmt">0</td>
-			<td class="savePntSumAmt">0</td>
-		</tr>
-	</table>
-
-	<div id="container" class="container od">
-		<div class="wrap">
-			<div class="content odPayment">
-				<!-- 페이지특정 클래스 = odPayment -->
-				<div class="cont_head">
-					<h2>주문&#47;결제</h2>
-					<div class="oder_steps">
-						<ul>
-							<li>01 쇼핑백</li>
-							<li class="on">02 주문/결제</li>
-							<li>03 주문완료</li>
-						</ul>
-					</div>
-				</div>
-				
-				<div class="cont_body">
-					<!-- CONT-BODY -->
-					<form class="form_wrap">
-						<div class="od_cont">
-							<div class="sec_head">
-								<div class="tbl type4">
-									<table>
-										<colgroup>
-											<col width="240">
-											<col width="*">
-										</colgroup>
-										<tbody>
-											<tr>
-												<th>총 <span class="c_primary bold" th:text="${delvFeeCdCnt}"></span> 건으로 나뉘어 배송 예정</th>
-												<td class="t_l">
-													<span>총알배송<em class="c_primary bold" th:text="${shotCnt}" id="shotCnt"></em>건</span>
-													<span>STYLE24<em class="c_primary bold" th:text="${wmsCnt}" id="wmsCnt"></em>건</span>
-													<span>업체직배송<em class="c_primary bold" th:text="${delvCnt}"></em>건</span>
-													<span>예약배송<em class="c_primary bold" th:text="${resCnt}"></em>건</span>
-												</td>
-											</tr>
-										</tbody>
-									</table>
-								</div>
-							</div>
-							
-							<div class="sec_body">
-								<div class="foldGroup">
-									<ul>
-										<!-- 주문고객정보 -->
-										<li class="fold_mbinfo" id="custemerInfo" style="display:none"></li>
-										<!-- //주문고객정보 -->
-										
-										<!-- 배송지정보 -->
-										<li class="fold_mbinfo" id="deliveryAddrInfo" style="display:none"></li>
-										<!-- //배송지정보 -->
-										
-										<!-- 사은품선택 -->
-										<li id="freegiftInfo" style="display:none"></li>
-										<!-- //사은품선택 -->
-										
-										<!-- 할인/혜택 사용 -->
-										<li id="dcAmtInfo" style="display:none"></li>
-										<!-- //할인/혜택 사용 -->
-										
-										<!-- 결제수단 선택 -->
-										<li class="fold_paymethod" id="paymentInfo" style="display:none"></li>
-										<!-- //결제수단 선택 -->
-									</ul>
-								</div>
-							</div>
-						</div>
-						
-						<div class="od_side">
-							<div class="area_order">
-								<div class="tit_box">
-									<h3 class="subH2">주문내역</h3>
-									<span> <em class="number" th:text="${goodsTotCnt}"></em>개의 상품</span>
-								</div>
-								
-								<div id="orderListInfo" style="display:none">
-								</div>
-								
-								<div class="od_amount_box">
-									<dl>
-										<div>
-											<dt>상품금액</dt>
-											<dd id="orgGoodsSumAmt" th:text="|${#numbers.formatInteger(orgGoodsSumAmt, 1, 'COMMA')}원|"></dd>
-										</div>
-										<div>
-											<dt>배송비</dt>
-											<dd id="delvSumAmt" th:text="|${#numbers.formatInteger(sumDelvFee, 1, 'COMMA')}원|"></dd>
-										</div>
-										<div>
-											<dt>할인금액</dt>
-											<th:block th:if="${cpn1DcSumAmt} > 0">
-												<dd><span class="disc_amount" id="cpn1DcSumAmt" th:text="|-${#numbers.formatInteger(cpn1DcSumAmt, 1, 'COMMA')}원|"></span></dd>
-											</th:block>
-											<th:block th:if="${cpn1DcSumAmt} < 1">
-												<dd><span class="disc_amount" id="cpn1DcSumAmt" th:text="|${#numbers.formatInteger(cpn1DcSumAmt, 1, 'COMMA')}원|"></span></dd>
-											</th:block>
-										</div>
-										<div>
-											<dt>다다익선할인금액</dt>
-											<th:block th:if="${tmtbDcSumAmt} > 0">
-												<dd><span class="disc_amount" id="tmtbDcSumAmt" th:text="|-${#numbers.formatInteger(tmtbDcSumAmt, 1, 'COMMA')}원|"></span></dd>
-											</th:block>
-											<th:block th:if="${tmtbDcSumAmt} < 1">
-												<dd><span class="disc_amount" id="tmtbDcSumAmt" th:text="|${#numbers.formatInteger(tmtbDcSumAmt, 1, 'COMMA')}원|"></span></dd>
-											</th:block>
-										</div>
-										<div>
-											<dt>쿠폰할인금액</dt>
-											<dd><span class="disc_amount" id="couponDcSumAmt"></span></dd>
-										</div>
-										<div>
-											<dt>선포인트 사용</dt>
-											<th:block th:if="${prePntDcAmt} > 0">
-												<dd><span class="disc_amount" id="prePntDcAmt" th:text="|-${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')}원|"></span></dd>
-											</th:block>
-											<th:block th:if="${prePntDcAmt} < 1">
-												<dd><span class="disc_amount" id="prePntDcAmt" th:text="|${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')}원|"></span></dd>
-											</th:block>
-										</div>
-										<div>
-											
-											<dt>포인트 사용</dt>
-											<dd><span class="disc_amount" id="pntDcAmt">0원</span></dd>
-										</div>
-										<div>
-											
-											<dt>상품권 사용</dt>
-											<dd><span class="disc_amount" id="gfcdUseAmt">0원</span></dd>
-										</div>
-									</dl>
-								</div>
-								
-								<div class="totalprice_box">
-									<dl>
-										<dt>총 결제 예정 금액</dt>
-										<dd data-weight="price" data-font="lato">
-											<span id="realOrdAmt"></span>원
-										</dd>
-									</dl>
-									<p class="info_point">스타일 포인트 
-										<span class="save_point" id="savePntSumAmt" th:text="|${#numbers.formatInteger(savePntSumAmt, 1, 'COMMA')}P|"></span> 적립예정
-									</p>
-								</div>
-								
-							</div>
-						</div>
-					</form>
-					<!-- // CONT-BODY -->
-				</div>
-			</div>
-		</div>
-	</div>
-</form>
-
-<!-- // container -->
-<footer id="footer"></footer>
-
-<!-- 배송지변경팝업 -->
-<div class="modal fade od_pop adrsChange_pop" id="adrsChangePop" tabindex="-1" role="dialog" aria-labelledby="adrsChangeLabel" aria-hidden="true"></div>
-
-<!-- 배송지수정팝업 -->
-<div class="modal fade od_pop adrsModify_pop" id="adrsModifyPop" tabindex="-1" role="dialog" aria-labelledby="adrsModifyLabel" aria-hidden="true"></div>
-
-<!-- 배송지추가팝업 -->
-<div class="modal fade od_pop adrsAdd_pop" id="adrsAddPop" tabindex="-1" role="dialog" aria-labelledby="adrsAddLabel" aria-hidden="true"></div>
-
-<!-- 배송요청사항수정 팝업 -->
-<div class="modal fade od_pop rqstModify_pop" id="rqstModifyPop" tabindex="-1" role="dialog" aria-labelledby="rqstModifyLabel" aria-hidden="true"></div>
-
-<!-- 사은품지급안내 팝업 -->
-<div class="modal fade od_pop infoGift_pop" id="infoGiftPop" tabindex="-1" role="dialog" aria-labelledby="infoGiftLabel" aria-hidden="true"></div>
-
-<script th:inline="javascript">
-// 배송관련정보 변수선언
-var cartGoodsList		= [[${cartGoodsList}]]			// 배송목록
-var shotCnt 			= [[${shotCnt}]];				// 자사 총알 배송건수
-var wmsCnt 				= [[${wmsCnt}]];				// 자사 일반 배송건수
-var shotWmsCnt 			= [[${shotWmsCnt}]];			// 자사 총알,일반 배송건수
-var resCnt 				= [[${resCnt}]];				// 자사 예약 배송건수
-var delvCnt 			= [[${delvCnt}]];				// 입점 일반 배송건수
-var orgSumDelvFee		= [[${sumDelvFee}]];			// 최초배송비합계
-var prePntDcAmt			= [[${prePntDcAmt}]];			// 선포인트사용가능금액
-
-var custNm				= [[${order.custNm}]];			// 주문자명
-var cellPhnno			= [[${order.cellPhnno}]];		// 핸드폰번호
-var email				= [[${order.email}]];			// 이메일
-var recipZipcode		= [[${order.recipZipcode}]];	// 우편번호
-var recipBaseAddr		= [[${order.recipBaseAddr}]];	// 기본주소
-var recipDtlAddr		= [[${order.recipDtlAddr}]];	// 상세주소
-var cartSqArr			= [[${order.cartSqArr}]];		// 장바구니시퀀스 목록
-var shotDelvUseYn		= [[${order.shotDelvUseYn}]];	// 총알배송사용여부(장바구니)
-var shotDelvYn			= [[${order.shotDelvUseYn}]];	// 총알배송사용여부(장바구니)
-
-var foreignBuyYn		= [[${foreignBuyYn}]];			// 해외구매대행여부
-var orderMadeYn			= [[${orderMadeYn}]];			// 주문제작상품여부
-
-var custCpnSq 			= 0;
-var cpnIndex			= 0;
-var cpnApplyTemp		= false;
-
-//AJAX 로드를 위한 변수 설정
-var jsonObj 			= {};
-var jsonData			= null;
-
-// 컨텐츠 호출
-$(document).ready( function() {
-	
-	// 장바구니시퀀스 배열 변환
-	cartSqArr = String(cartSqArr).split(",");
-	
-	// AJAX 로드를 위한 변수 설정
-	jsonObj = {
-		"custNm" 			: custNm
-		, "cellPhnno" 		: cellPhnno
-		, "email" 			: email
-		, "recipZipcode" 	: recipZipcode
-		, "recipBaseAddr" 	: recipBaseAddr
-		, "recipDtlAddr" 	: recipDtlAddr
-		, "cartSqArr"		: cartSqArr
-		, "dispYn"			: "N"
-		, "shotDelvYn"		: shotDelvUseYn
-		, "foreignBuyYn"	: foreignBuyYn
-		, "orderMadeYn"		: orderMadeYn
-	}
-	
-	jsonData = JSON.stringify(jsonObj);
-
-	// 1. AJAX 정보(회원정보로드)
-	custemerInfoSet(jsonData);
-	
-	// 999. 개발화면정보설정
-	var devTemp = false;
-	var arr = []
-	arr[0] = "orderInfo";
-	arr[1] = "freegiftInfo";
-	arr[2] = "orderDetailInfo";
-	arr[3] = "delvFeeCdInfo";
-	arr[4] = "orderSumAmtInfo";
-	
-	if (devTemp) {
-		$("table").each(function(){
-			var name = $(this).attr("name");
-			for (i=0 ; i<arr.length ; i++) {
-				if (name == arr[i]) {
-					$(this).show();
-				}
-			}
-		});
-	}
-	
-});
-
-// 1. 함수기능 정의
-// 1.1 고객정보로드
-var custemerInfoSet = function(jsonData) {
-	$.ajax( {
-		type		: "POST",
-		url 		: '/order/custemerInfo',
-		data		: jsonData,
-		dataType 	: 'html',
-		beforeSend : function(xhr, settings) {
-			xhr.setRequestHeader("AJAX"			, "true");
-			xhr.setRequestHeader('Accept'		, 'application/json');
-			xhr.setRequestHeader('Content-Type'	, 'application/json');
-			gagajf.showProgressbar(true);
-		},
-		success 	: function(result) {
-			if (result != null) {
-				$("#custemerInfo").css("display", "block");
-				$("#custemerInfo").html(result);
-
-				// 고객정보설정
-				$(".custNm").text($("input[name='custNm']").val());
-				$(".email").text($("input[name='email']").val());
-				$(".cellPhnno").text($("input[name='cellPhnno']").val());
-			}
-			// 1.2 배송정보로드
-			deliveryAddrInfoSet(jsonData);
-		}
-	});
-}
-
-// 1.2 배송정보로드
-var deliveryAddrInfoSet = function(jsonData) {
-	$.ajax( {
-		type		: "POST",
-		url 		: '/order/deliveryAddrInfo',
-		data		: jsonData,
-		dataType 	: 'html',
-		beforeSend : function(xhr, settings) {
-			xhr.setRequestHeader("AJAX"			, "true");
-			xhr.setRequestHeader('Accept'		, 'application/json');
-			xhr.setRequestHeader('Content-Type'	, 'application/json');
-			gagajf.showProgressbar(true);
-		},
-		success 	: function(result) {
-			if (result != null) {
-				$("#deliveryAddrInfo").css("display", "block");
-				$("#deliveryAddrInfo").html(result);
-				
-				// 배송정보설정
-				$(".recipZipcode").text($("input[name='recipZipcode']").val());
-				$(".recipBaseAddr").text($("input[name='recipBaseAddr']").val());
-				$(".recipDtlAddr").text($("input[name='recipDtlAddr']").val());
-				$(".delvMemo").text($("input[name='delvMemo']").val());
-				$(".foreignBuyYn").text($("input[name='foreignBuyYn']").val());
-				$(".orderMadeYn").text($("input[name='orderMadeYn']").val());
-			}
-			
-			// 1.3 총알배송가능 지역, 총알배송 가능 시간 체크(초기로드정보)
-			fnGetDailyDeliveryCheck(true);
-		}
-	});
-}
-
-// 1.3 총알배송가능 지역, 총알배송 가능 시간 체크
-var fnGetDailyDeliveryCheck = function (temp) {
-	
-	// 장바구니 총알배송 사용여부 체크 N
-	if (shotDelvUseYn == "N") {
-		// 초기에 한번 데이타 로드
-		if (temp) {
-			// 1.4 주문상품목록로드
-			orderListInfoSet(jsonData, temp);
-		}
-	} else {
-		// 배송지 우편번호 체크
-		var zipcode		= $("input[name='recipZipcode']").val();
-	
-		// 총알배송여부 체크 배송지정보 존재여부 체크
-		if (zipcode == null || zipcode == '') {
-			//alert("배송지정보가 없습니다. 기본 총알배송 가능지역으로 설정 합니다.");
-			zipcode = "04320"; // 기본 서울역 우편번호로 설정
-		}
-		
-		// TODO
-		var shotDelvObj 	= {"zipNo" : zipcode};
-	
-		gagajf.ajaxJsonSubmit(
-			"/order/getDailyDeliveryCheck"
-			, JSON.stringify(shotDelvObj)
-			, function (result) {
-				// 총알배송여부체크
-				var tempShotDelvYn = "N";
-				
-				if (parseInt(result) > 0) {
-					tempShotDelvYn = "Y";
-				}
-				
-				// json 값 설정
-				var orderListObj 		= {"cartSqArr":cartSqArr, "shotDelvYn":tempShotDelvYn};
-				var orderListJsonData 	= JSON.stringify(orderListObj);
-				
-				if (temp) {
-					// 1.3 주문상품목록로드
-					orderListInfoSet(orderListJsonData, temp);
-				} else {
-					if (tempShotDelvYn != shotDelvYn) {
-						orderListInfoSet(orderListJsonData, temp);
-					}
-				}
-				
-				shotDelvYn = tempShotDelvYn;
-			}
-		)
-	}
-}
-
-// 1.4 주문상품목록로드
-var orderListInfoSet = function(orderListJsonData, temp) {
-	$.ajax( {
-		type		: "POST",
-		url 		: '/order/orderListInfo',
-		data		: orderListJsonData,
-		dataType 	: 'html',
-		beforeSend : function(xhr, settings) {
-			xhr.setRequestHeader("AJAX"			, "true");
-			xhr.setRequestHeader('Accept'		, 'application/json');
-			xhr.setRequestHeader('Content-Type'	, 'application/json');
-			gagajf.showProgressbar(true);
-		},
-		success 	: function(result) {
-			if (result != null) {
-				$("#orderListInfo").css("display", "block");
-				$("#orderListInfo").html(result);
-			}
-			
-			// 1.5 사은품정보로드
-			if (temp) {
-				freegiftInfoSet(jsonData);
-			}
-		}
-	});
-}
-
-// 1.5 사은품정보로드
-var freegiftInfoSet = function(jsonData) {
-	
-	$.ajax( {
-		type		: "POST",
-		url 		: '/order/freegiftInfo',
-		data		: jsonData,
-		dataType 	: 'html',
-		beforeSend : function(xhr, settings) {
-			xhr.setRequestHeader("AJAX"			, "true");
-			xhr.setRequestHeader('Accept'		, 'application/json');
-			xhr.setRequestHeader('Content-Type'	, 'application/json');
-			gagajf.showProgressbar(true);
-		},
-		success 	: function(result) {
-			if (result != null) {
-				$("#freegiftInfo").html(result);
-				
-				var total_gift 		= 0;
-				var total_deduct 	= 0;
-				
-				// 2.2 사은품선택 라디오 버튼 기능
-				$(".freegiftRdo").on("click", function() {
-					total_gift 		= 0;
-					total_deduct 	= 0;
-					
-					$(".freegiftRdo").each(function(){
-						if ($(this).attr("allYn") == "Y" ) {
-							total_gift 		+= 1;
-						}
-						
-						// 라디오버튼 사은품 체크
-						if ($(this).is(":checked")) {
-							// 수령거부가 아닐때 체크
-							if ($(this).val() != "noSel") {
-								total_gift 		+= 1;
-								total_deduct 	+= parseInt($(this).attr("usepoint"));
-							}
-						}
-					});
-					
-					$(".total_gift").text(total_gift);							// 사은품총선택개수
-					$(".total_deduct").text(total_deduct.addComma());			// 사은품총사용포인트
-					$(".freegiftUsePnt").text(total_deduct);
-					
-					// 포인트초기화기능
-					pntDcAmtReset();
-				});
-				
-				// 사은품테이블 그리기
-				$(".gift_box").each(function(){
-					$(this).find(".freegiftRdo").each(function(){
-						if ($(this).attr("allYn") == "Y" ) {
-							total_gift += 1;
-						}
-						$(".total_gift").text(total_gift);						// 사은품총선택개수
-					});
-				});
-			}
-			
-			// 1.6 결제타입로드
-			paymentInfoSet(jsonData);
-		}
-	});
-}
-
-// 1.6 결제타입로드 (결제버튼기능구현)
-var paymentInfoSet = function(jsonData) {
-	$.ajax( {
-		type		: "POST",
-		url 		: '/order/paymentInfo',
-		data		: jsonData,
-		dataType 	: 'html',
-		beforeSend : function(xhr, settings) {
-			xhr.setRequestHeader("AJAX"			, "true");
-			xhr.setRequestHeader('Accept'		, 'application/json');
-			xhr.setRequestHeader('Content-Type'	, 'application/json');
-			gagajf.showProgressbar(true);
-		},
-		success 	: function(result) {
-			if (result != null) {
-				$("#paymentInfo").css("display", "block");
-				$("#paymentInfo").html(result);
-				
-				// 결재하기
-				$("#btn_payment").on("click", function(){
-					// 사은품정보
-					var prePntDcAmtYn		= $("input[name='rdi-beforpoint']:checked").val();
-					var paynormal			= $("input[name='rdi-paynormal']:checked").val();
-					var orderDetailList		= [];
-					var delvFeeCdList		= [];
-					var ordGoodsQty			= 0;
-					var goodsNm				= "";
-					
-					if (paynormal == null || paynormal == '') {
-						alert("결제수단을 선택해 주세요.");
-						return false;
-					}
-					
-					var paynormalArr		= paynormal.split("|");
-					var pgGb				= paynormalArr[0];
-					var payMeans			= paynormalArr[1];
-
-					// 주문상세데이타 생성
-					$("#orderDetailInfo .cartSq").each(function(){
-						var orderDetailData = {
-							"cartSq"			: $(this).text()
-							,"currPrice"		: $(this).parent().find(".orgCurrPrice").text()
-							,"optAddPrice"		: $(this).parent().find(".optAddPrice").text()
-							,"ordAmt"			: $(this).parent().find(".ordAmt").text()
-							,"cpn1DcSq"			: $(this).parent().find(".cpn1DcSq").text()
-							,"cpn1DcAmt"		: $(this).parent().find(".cpn1DcAmt").text()
-							,"goodsQty"			: $(this).parent().find(".goodsQty").text()
-							,"tmtb1Sq"			: $(this).parent().find(".tmtb1Sq").text()
-							,"tmtb1DcAmt"		: $(this).parent().find(".tmtb1DcAmt").text()
-							,"tmtb2Sq"			: $(this).parent().find(".tmtb2Sq").text()
-							,"tmtb2DcAmt"		: $(this).parent().find(".tmtb2DcAmt").text()
-							,"goodsCpnSq"		: $(this).parent().find(".goodsCpnSq").text()
-							,"goodsCpnDcAmt"	: $(this).parent().find(".goodsCpnDcAmt").text()
-							,"cartCpnSq"		: $(this).parent().find(".cartCpnSq").text()
-							,"cartCpnDcAmt"		: $(this).parent().find(".cartCpnDcAmt").text()
-							,"prePntDcAmt"		: $(this).parent().find(".prePntDcAmt1").text()
-							,"pntDcAmt"			: $(this).parent().find(".pntDcAmt1").text()
-							,"gfcdUseAmt"		: $(this).parent().find(".gfcdUseAmt1").text()
-							,"realOrdAmt"		: $(this).parent().find(".realOrdAmt1").text()
-							,"savePntAmt"		: $(this).parent().find(".savePntAmt1").text()
-							,"shotDelvYn"		: $(this).parent().find(".shotDelvYn").text()
-							,"foreignBuyYn"		: $(this).parent().find(".foreignYn").text()
-							,"makeGoodsYn"		: $(this).parent().find(".orderMadeYn").text()
-							,"delvFeeCd"		: $(this).parent().find(".delvFeeCd").text()
-							,"goodsCd"			: $(this).parent().find(".goodsCd").text()
-							,"itemCdArr"		: $(this).parent().find(".itemCd").text().split(",")
-							,"optCdArr"			: $(this).parent().find(".optCd").text().split(",")
-							,"itemQtyArr"		: $(this).parent().find(".itemQtyr").text().split(",")
-							,"goodsType"		: $(this).parent().find(".goodsType").text()
-						}
-						
-						// 상품수
-						ordGoodsQty++;
-						
-						orderDetailList.push(orderDetailData);
-					});
-					
-					// 주문배송업체정보 생성
-					$("#delvFeeCdInfo .delvFeeCd").each(function(){
-						var delvFeeCdData = {
-							"delvFeeCd"			: $(this).text()
-							,"supplyCompCd"		: $(this).parent().find(".supplyCompCd").text()
-							,"delvFee"			: $(this).parent().find(".delvFee").text()
-							,"delvCpnSq"		: $(this).parent().find(".delvCpnSq").text()
-							,"delvCpnDcAmt"		: $(this).parent().find(".delvCpnDcAmt").text()
-						}
-						
-						delvFeeCdList.push(delvFeeCdData);
-					});
-					
-					// 주문데이타 생성
-					var orderData = {
-						"custNm"				: $(".custNm").text()
-						,"email"				: $(".email").text()
-						,"recipPhnno"			: $(".cellPhnno").text()
-						,"recipZipcode"			: $(".recipZipcode").text()
-						,"recipBaseAddr"		: $(".recipBaseAddr").text()
-						,"recipDtlAddr"			: $(".recipDtlAddr").text()
-						,"delvMemo"				: $(".delvMemo").text()
-						,"prePntDcAmtYn"		: prePntDcAmtYn
-						,"orderDetailList"		: orderDetailList
-						,"delvFeeCdList"		: delvFeeCdList
-						,"shotDelvYn"			: shotDelvYn
-						,"entryNo"				: $("input[name='entryNo']").val()
-						,"pgGb"					: pgGb
-						,"payMeans"				: payMeans // 네이버페이, 카카오페이
-						,"payAmt"				: $(".realOrdSumAmt").text()
-						,"ordNm"				: $(".custNm").text()
-						,"ordPhnno"				: $(".cellPhnno").text()
-						,"goodsNm"				: $(".goodsNm").eq(0).text()
-						,"ordGoodsQty"			: ordGoodsQty
-						,"freegiftValArr"		: $(".freegiftValArr").text().split(",")
-						,"freegiftSqArr"		: $(".freegiftSqArr").text().split(",")
-						,"freegiftGoodsArr"		: $(".freegiftGoodsArr").text().split(",")
-						,"freegiftUsePointArr"	: $(".freegiftUsePointArr").text().split(",")
-					};
-					
-					var orderData = JSON.stringify(orderData);
-					
-					$.ajax( {
-						type		: "POST",
-						url 		: '/order/create/preOrder',
-						data		: orderData,
-						dataType 	: 'html',
-						beforeSend : function(xhr, settings) {
-							xhr.setRequestHeader("AJAX"			, "true");
-							xhr.setRequestHeader('Accept'		, 'application/json');
-							xhr.setRequestHeader('Content-Type'	, 'application/json');
-							gagajf.showProgressbar(true);
-						},
-						success 	: function(result) {
-							// 결재정보로드
-							$("#order_info").html(result);
-							
-							var pgGb = $("#order_info input[name=pgGb]").val();
-							
-							if (pgGb == "NAVFER") {
-								fnNaverPaymentReady();
-							} else if (pgGb == "KAKAO") {
-								fnKakaoPaymentReady();
-							} else if (pgGb == "KCP") {
-								jsf__pay(document.order_info);
-							}
-						}
-					});
-				});
-
-				// 1.8 할인영역 설정
-				dcAmtInfoSet(jsonData);
-			}
-		}
-	});
-}
-
-// 1.7 프로모션 쿠폰 적용 함수
-var serialCpnApply = function(){
-	let data = {
-		rdCpnNm : $("#payForm #serialCpnNm").val()
-	}
-
-	let jsonData = JSON.stringify(data);
-
-	$.ajax( {
-		type			: "POST",
-		url 			: '/cart/list/serialCpnApply',
-		contentType		: 'application/json',
-		dataType 		: 'json',
-		data 			: jsonData,
-		success 		: function(result) {
-			var jsonObj 	= {"cartSqArr" : cartSqArr,"dispYn" : "Y"};
-			var jsonData 	= JSON.stringify(jsonObj);
-
-			// 성공일때는 쿠폰정보 및 포인트 정보 reset
-			if (result.serialCpnInfo.result == "SUCCESS") {
-				// 1.8 할인영역 재로드
-				dcAmtInfoSet(jsonData);
-			} else {
-				alert(result.serialCpnInfo.result);
-			}
-		}
-	});
-}
-
-// 1.8 할인영역 설정 (쿠폰, 선포인트, 포인트, 상품권)
-var dcAmtInfoSet = function(jsonData) {
-	// 1.8.1 할인정보로드
-	$.ajax( {
-		type		: "POST",
-		url 		: '/order/dcAmtInfo',
-		data		: jsonData,
-		dataType 	: 'html',
-		beforeSend : function(xhr, settings) {
-			xhr.setRequestHeader("AJAX"			, "true");
-			xhr.setRequestHeader('Accept'		, 'application/json');
-			xhr.setRequestHeader('Content-Type'	, 'application/json');
-			gagajf.showProgressbar(true);
-		},
-		success 	: function(result) {
-			if (result != null) {
-				$("#dcAmtInfo").css("display", "block");
-				$("#dcAmtInfo").html(result);
-				
-				// 1.8.2 쿠폰적용초기화(할인율최고)
-				custCpnInit();
-				
-				// 1.8.3 쿠폰 SELECT BOX 기능 설정(js적용)
-				$('.select_custom.type1').each(function(index){
-					var selecter01 	= new sCombo($(this));
-					
-					// 선택박스 버튼기능 구현
-					$(this).find("ul li").each(function(i){
-						
-						// SELECT BOX 버튼 기능 설정
-						$(this).on("click", function(){
-							// 쿠폰 선택없음
-							if ($(this).prop("value") == 0) {
-								// 쿠폰 선택없음
-								cpnApplyDel($(this));
-							}
-							// 쿠폰선택
-							else {
-								// 쿠폰중복체크 후 적용
-								if (custCpnDuplicationCheck($(this).prop("value"), index)) {
-									// 쿠폰적용
-									custCpnApply($(this));
-								} else {
-									alert("이미 적용된 쿠폰 입니다.");
-									
-									// 쿠폰적용불가
-									custCpnNotApply($(this));
-								}
-								
-								// 쿠폰할인금액 SUM
-								custCpnSumAmtCal();
-								
-								// 최대할인혜택적용 체크해제
-								if ($("#chk-maxdisc").is(":checked")) {
-									$("#chk-maxdisc").attr("checked", false);
-								}
-							}
-						});
-					});
-				});
-				
-				// 1.8.4 쿠폰 최대할인금액 초기화 버튼 설정
-				$("#chk-maxdisc").on("click", function(){
-					if ($(this).is(":checked")) {
-						custCpnInit();
-					}
-				});
-
-				// 1.8.5 쿠폰할인적용 삭제 버튼
-				$(".btn_del_coupon").on("click", function(){
-					//선택없음선택
-					$(this).parent().parent().find("ul li").each(function(i){
-						if (i == 0) {
-							cpnApplyDel($(this)); // 쿠폰 선택없음
-						}
-					});
-				});
-				
-				// 1.8.6 선포인트 적용 버튼 기능
-				$("input[name='rdi-beforpoint']").each(function(){
-					// 선포인트 초기 설정 사용함
-					if ($(this).val() == "Y") {
-						$(this).attr("checked", true);
-					}
-					
-					// 버튼기능 구현
-					$(this).on("click", function(){
-						var rmPrePntAmt 		= parseInt($("input[name='rmPrePntAmt']").val());
-						
-						// 선포인트적용
-						if ($(this).val() == "Y") {
-							$("#prePntDcAmt").text("-"+rmPrePntAmt.addComma()+"원");
-						} else {
-							$("#prePntDcAmt").text("0원");
-						}
-						
-						// 쿠폰할인금액 SUM
-						custCpnSumAmtCal();
-					});
-				});
-				
-				// 1.8.7 포인트 적용버튼 기능
-				$("#btn_point_apply").on("click", function(){
-					var rmPntAmt 			= parseInt($("input[name='rmPntAmt']").val());
-					var freegiftUsePnt 		= parseInt($(".freegiftUsePnt").text());
-					var pntDcAmt 			= parseInt($("input[name='pntDcAmtStr']").val());
-					var realOrdAmt 			= parseInt($(".realOrdSumAmt").text());
-					var applyPntDcAmt 		= (realOrdAmt * 40) / 100;
-					
-					rmPntAmt				= rmPntAmt - freegiftUsePnt;
-					
-					// 입력여부체크
-					if (pntDcAmt < 1) {
-						alert("사용할 포인트를 입력해주세요");
-						// 포인트리셋기능
-						pntDcAmtReset();
-						return false;
-					}
-					
-					// 보유포인트보다 초과 사용 불가
-					if (pntDcAmt > rmPntAmt) {
-						alert("보유포인트 보다 초과 사용 할 수 없습니다.");
-						// 포인트리셋기능
-						pntDcAmtReset();
-						return false;
-					}
-
-					// TODO 포인트 사용금액 1000P 이상 사용
-					if (pntDcAmt < 1000) {
-						alert("포인트는 최소 1,000P이상 사용해야 합니다.");
-						// 포인트리셋기능
-						pntDcAmtReset();
-						return false;
-					}
-					
-					// 실결제금액보다 크게 적용 되었을때 적용 불가능
-					if (pntDcAmt > applyPntDcAmt) {
-						alert("결제금액의 최대 40%를 초과 사용 할 수 없습니다.");
-						// 포인트리셋기능
-						pntDcAmtReset();
-						return false;
-					}
-					
-					// 포인트 적용
-					$(".pntDcSumAmt").text(pntDcAmt);
-					$("#pntDcAmt").text("-"+pntDcAmt.addComma()+"원");
-					
-					// 상품권리렛기능
-					gfcdUseAmtReset();
-				});
-				
-				// 1.8.8 상품권 적용버튼 기능
-				$("#btn_gfcd_apply").on("click", function(){
-					var rmGfcdAmt 		= parseInt($("input[name='rmGfcdAmt']").val());
-					var gfcdUseAmt 		= parseInt($("input[name='gfcdUseAmtStr']").val());
-					
-					// 입력여부체크
-					if (gfcdUseAmt < 1 || $("input[name='gfcdUseAmtStr']").val() == "") {
-						alert("사용할 금액을 입력해주세요");
-						// 상품권리셋기능
-						gfcdUseAmtReset();
-						return false;
-					}
-					
-					// 보유금액보다 초과 사용 불가
-					if (gfcdUseAmt > rmGfcdAmt) {
-						alert("보유금액 보다 초과 사용 할 수 없습니다.");
-						// 상품권리셋기능
-						gfcdUseAmtReset();
-						return false;
-					}
-
-					// TODO 포인트 사용금액 1000원 이상 사용
-					if (gfcdUseAmt < 1000) {
-						alert("상품권 사용금액은 최소 1,000원 이상 사용해야 합니다.");
-						// 상품권리셋기능
-						gfcdUseAmtReset();
-						return false;
-					}
-					
-					// 상품권 적용
-					$(".gfcdUseSumAmt").text(gfcdUseAmt);
-					$("#gfcdUseAmt").text("-"+gfcdUseAmt.addComma()+"원");
-					
-					// 금액전체계산
-					custCpnSumAmtCal();
-				});
-				
-				// 금액계산초기화
-				custCpnSumAmtCal();
-			}
-		}
-	});
-}
-
-// 1.9 쿠폰 최대할인율 쿠폰적용
-var custCpnInit = function() {
-	
-	// 쿠폰적용없음적용
-	$(".select_custom.type1").each(function(index){
-		// select box 쿠폰 적용
-		var cpnCartSq = $(this).find("input[name='cpnCartSq']").val();
-		
-		// 장바구니시퀀스 체크
-		$(".cartSq").each(function(){
-			if (cpnCartSq == $(this).text()) {
-				$(this).parent().find(".goodsCpnSq").text("0");			// 상품쿠폰시퀀스
-				$(this).parent().find(".goodsCpnDcAmt").text("0");		// 상품쿠폰할인금액
-			}
-		});
-		
-		$(this).find("input[name='custCpnSq']").val("0");
-		$(this).find("input[name='cpnDcAmt']").val("0");
-		
-		$(this).find(".select").text("선택없음");
-		$(this).find(".cp_discount").css("display", "none");
-	});
-	
-	// 최대할인율 쿠폰적용
-	$('.select_custom.type1').each(function(index){
-		cpnIndex 		= 0;
-		cpnApplyTemp 	= false;
-		
-		// select 박스 반복문 실행
-		$(this).find("ul li").each(function(i){
-			cpnIndex++;
-			
-			// 1이상부터 중복 체크
-			if (cpnApplyTemp == false) {
-				if (cpnIndex > 1) {
-					if (custCpnDuplicationCheck($(this).prop("value"), index)) {
-						// 쿠폰적용
-						custCpnApply($(this));
-						// 쿠폰할인적용
-						cpnApplyTemp = true;
-					}
-				}
-			}
-		});
-	});
-	
-	// 포인트기능 리렛
-	pntDcAmtReset();
-}
-
-// 1.10 쿠폰중복사용체크
-var custCpnDuplicationCheck = function(custCpnSq, index) {
-	var selCustSq 	= 0;
-	var cnt 		= 0;
-
-	// 쿠폰중본사용체크
-	$("input[name='custCpnSq']").each(function(i){
-		if (index != i) {
-			selCustSq = $(this).val();
-			if (selCustSq == custCpnSq) {
-				cnt++;
-			}
-		}
-	});
-	
-	// 쿠폰적용불가
-	if (cnt > 0) {
-		return false;
-	}
-	// 쿠폰적용가능
-	else {
-		return true;
-	}
-}
-
-// 1.11 쿠폰중복체크 후 적용가능
-var custCpnApply = function(obj) {
-	// select box 쿠폰 적용
-	var cpnType 	= obj.parent().parent().find("input[name='cpnType']").val();
-	
-	// 상품쿠폰적용
-	if (cpnType == "goodsCpn") {
-		// 적용된 할인금액 text 설정 
-		var dcAmtStr = "- " + parseInt(obj.attr("data")).addComma() + " 원 할인적용";
-		obj.parent().parent().parent().parent().parent().find(".cp_amount").text(dcAmtStr);
-		
-		var cpnCartSq 	= obj.parent().parent().find("input[name='cpnCartSq']").val();
-		
-		// 장바구니시퀀스 체크
-		$(".cartSq").each(function(){
-			if (cpnCartSq == $(this).text()) {
-				$(this).parent().find(".goodsCpnSq").text(obj.prop("value"));			// 상품쿠폰시퀀스
-				$(this).parent().find(".goodsCpnDcAmt").text(obj.attr("data"));			// 상품쿠폰할인금액
-			}
-		});
-		
-		obj.parent().parent().find("input[name='cpnDcAmt']").val(obj.attr("data"));
-	} 
-	// 장바구니쿠폰적용
-	else if (cpnType == "cartCpn") {
-		var dcWay 				= obj.parent().find("input[name='dcWay']").val();
-		var dcVal 				= obj.parent().find("input[name='dcVal']").val();
-		var cartCpnDcSumAmt		= 0;
-		var tempSumAmt			= 0;
-		var cartSqLen			= $(".cartSq").length;
-		var leftAmt				= 0;
-		var index				= 1;
-		
-		// 장바구니쿠폰 해당 장바구니상품들 할인가 적용
-		obj.find("input[name='cartCpnCartSq']").each(function(){
-			var cartCpnCartSq 		= $(this).val();
-			var cartCpnDcAmt		= 0;
-			
-			// 장바구니시퀀스 체크
-			$(".cartSq").each(function(){
-				if (cartCpnCartSq == $(this).text()) {
-					var orgCurrPrice 	= parseInt($(this).parent().find(".orgCurrPrice").text());
-					var tmtb1DcAmt 		= parseInt($(this).parent().find(".tmtb1DcAmt").text());
-					var tmtb2DcAmt 		= parseInt($(this).parent().find(".tmtb2DcAmt").text());
-					var goodsCpnDcAmt 	= parseInt($(this).parent().find(".goodsCpnDcAmt").text());
-					
-					var tempAmt 		= orgCurrPrice - tmtb1DcAmt - tmtb2DcAmt - goodsCpnDcAmt;
-					tempSumAmt			= tempSumAmt + tempAmt; 
-					
-					// 할인율일때 할인금액 
-					if (dcWay == "G240_20") {
-						cartCpnDcAmt = (tempAmt * dcVal) / 100;
-						cartCpnDcSumAmt = cartCpnDcSumAmt + cartCpnDcAmt;
-						
-						$(this).parent().find(".cartCpnSq").val(obj.prop("value"));
-						$(this).parent().find(".cartCpnDcAmt").val(cartCpnDcAmt);
-					}
-				}
-			});
-		});
-		
-		// 금액일때 할인금액 적용
-		if (dcWay == "G240_10") {
-			cartCpnDcSumAmt = dcVal;
-			leftAmt			= dcVal;
-			index = 1;
-			
-			// 장바구니쿠폰 해당 장바구니상품들 할인가 적용
-			obj.find("input[name='cartCpnCartSq']").each(function(){
-				var cartCpnCartSq 		= $(this).val();
-				var cartCpnDcAmt		= 0;
-									
-				// 장바구니시퀀스 체크
-				$(".cartSq").each(function(){
-					if (cartCpnCartSq == $(this).text()) {
-						var orgCurrPrice 	= parseInt($(this).parent().find(".orgCurrPrice").text());
-						var tmtb1DcAmt 		= parseInt($(this).parent().find(".tmtb1DcAmt").text());
-						var tmtb2DcAmt 		= parseInt($(this).parent().find(".tmtb2DcAmt").text());
-						var goodsCpnDcAmt 	= parseInt($(this).parent().find(".goodsCpnDcAmt").text());
-						
-						var tempAmt 		= orgCurrPrice - tmtb1DcAmt - tmtb2DcAmt - goodsCpnDcAmt;
-						var tempDiv 		= parseInt((tempAmt / tempSumAmt) * 100);
-						var cartCpnDcAmt	= 0;
-				
-						if (index == cartSqLen) {
-							cartCpnDcAmt 	= leftAmt;
-						} else {
-							cartCpnDcAmt	= parseInt((cartCpnDcSumAmt * tempDiv) / 100);
-							leftAmt 		= leftAmt - cartCpnDcAmt;
-						}
-						
-						$(this).parent().find(".cartCpnSq").text(obj.prop("value"));
-						$(this).parent().find(".cartCpnDcAmt").text(cartCpnDcAmt);
-						
-						index++;
-					}
-				});
-			});
-		} 
-		
-		obj.parent().parent().find("input[name='cpnDcAmt']").val(cartCpnDcSumAmt);
-		
-		var dcAmtStr = "- " + cartCpnDcSumAmt.addComma() + " 원 할인적용";
-		obj.parent().parent().parent().parent().parent().find(".cp_amount").text(dcAmtStr);
-	}
-	// 배송비쿠폰적용
-	else if (cpnType == "delvCpn") {
-		var delvFee 		= parseInt(obj.attr("delvfee"));
-		var delvCpnDcAmt 	= parseInt(obj.attr("data"));
-		var delvFeeCd 		= obj.attr("delvfeecd");
-		
-		// 배송비가 배송비쿠폰할인금액보다 클경우 배송비 - 배송비쿠폰할인금액을 적용
-		if (delvFee > delvCpnDcAmt) {
-			cpnDcAmt = delvFee - delvCpnDcAmt;
-		} else {
-			cpnDcAmt = delvFee;
-		}
-		
-		// 적용된 할인금액 text 설정 
-		var dcAmtStr = "- " + cpnDcAmt.addComma() + " 원 할인적용";
-		
-		obj.parent().parent().parent().parent().parent().find(".cp_amount").text(dcAmtStr);
-		
-		obj.parent().parent().find("input[name='cpnDcAmt']").val(cpnDcAmt);
-		obj.parent().parent().find("input[name='delvFeeCd']").val(obj.attr("delvfeecd"));
-		
-		$(".delvCpnDcSumAmt").text(obj.attr("data"));
-				
-		// 배송비쿠폰 테이블 적용
-		
-		$(".delvFeeCd").each(function(){
-			if ($(this).text() == delvFeeCd) {
-				$(this).parent().find(".delvCpnSq").text(obj.prop("value"));
-				$(this).parent().find(".delvCpnDcAmt").text(obj.attr("data"));
-			}
-		});
-	}
-	
-	// select box 쿠폰 적용 (공통적용)
-	obj.parent().parent().find("input[name='custCpnSq']").val(obj.prop("value"));
-	obj.parent().parent().find(".select").text(obj.text());
-	
-	// 선택된 할인금액 노출
-	obj.parent().parent().parent().parent().parent().find(".cp_discount").css("display", "block");
-	
-	// 포인트기능 리렛
-	pntDcAmtReset();
-}
-
-// 1.12 쿠폰중복체크 후 적용불가
-var custCpnNotApply = function(obj) {
-	// 이전에 등록된 쿠폰시퀀스  
-	var custCpnSq = obj.parent().parent().find("input[name='custCpnSq']").val();
-
-	// 이전에 등록된 쿠폰시퀀스 비교후 데이타 원복
-	obj.parent().find("li").each(function(){
-		if ($(this).prop("value") == custCpnSq) {
-			$(this).parent().parent().find(".select").text($(this).text());
-			
-			if (custCpnSq == 0) {
-				$(this).parent().parent().parent().parent().parent().find(".cp_discount").css("display", "none");
-			} else {
-				$(this).parent().parent().parent().parent().parent().find(".cp_discount").css("display", "block");
-			}
-		}
-	});
-	
-	// 포인트기능 리렛
-	pntDcAmtReset();
-}
-
-// 1.13 쿠폰 선택없음 기능 구현
-var cpnApplyDel = function(obj) {
-	// 쿠폰타입(상품쿠폰, 장바구니쿠폰, 배송비쿠폰)
-	var cpnType = obj.parent().parent().find("input[name='cpnType']").val();
-	
-	// 상품쿠폰적용
-	if (cpnType == "goodsCpn") {
-		// select box 쿠폰 적용
-		var cpnCartSq = obj.parent().parent().find("input[name='cpnCartSq']").val();
-		
-		// 장바구니시퀀스 체크
-		$(".cartSq").each(function(){
-			if (cpnCartSq == $(this).text()) {
-				$(this).parent().find(".goodsCpnSq").text("0");			// 상품쿠폰시퀀스
-				$(this).parent().find(".goodsCpnDcAmt").text("0");		// 상품쿠폰할인금액
-			}
-		});
-	}
-	// 장바구니쿠폰적용
-	else if (cpnType == "cartCpn") {
-		// 장바구니쿠폰 시퀀스 0, 장바구니할인금액 0
-		$(".cartSq").each(function(){
-			$(this).parent().find(".cartCpnSq").text("0");
-			$(this).parent().find(".cartCpnDcAmt").text("0");
-		});
-	}
-	// 배송비쿠폰적용
-	else if (cpnType == "delvCpn") {
-		// 장바구니쿠폰 시퀀스 0, 장바구니할인금액 0
-		//$("input[name='custCpnSq']").each(function(){
-			//$(this).parent().find("input[name='delvFeeCd']").val("0");
-		//});
-		
-		obj.parent().parent().find("input[name='delvFeeCd']").val("0");
-		$(".delvCpnSq").text("0");
-	}
-	
-	obj.parent().parent().find("input[name='custCpnSq']").val("0");
-	obj.parent().parent().find("input[name='cpnDcAmt']").val("0");
-
-	obj.parent().parent().find(".select").text("선택없음");
-	obj.parent().parent().parent().parent().parent().find(".cp_discount").css("display", "none");
-	
-	// 포인트기능 리렛
-	pntDcAmtReset();
-	
-	// 최대할인혜택적용 체크해제
-	if ($("#chk-maxdisc").is(":checked")) {
-		$("#chk-maxdisc").attr("checked", false);
-	}
-}
-
-// 1.14 선포인트리셋기능 (사용안함)
-var prePntDcAmtReset = function() {
-	var rmPrePntAmt = parseInt($("input[name='rmPrePntAmt']").val());
-	$("input[name='prePntDcAmt']").val(rmPrePntAmt);
-	
-	// 선포인트사용여부 체크 후 적용
-	$("input[name='rdi-beforpoint']").each(function(){
-		// 선포인트 초기 설정 사용함
-		if ($(this).val() == "Y") {
-			$(this).attr("checked", true);
-		}
-	});
-
-	$("#prePntDcAmt").text("-"+rmPrePntAmt.addComma()+"원");
-	
-	// 포인트기능 리렛
-	pntDcAmtReset();
-}
-
-// 1.15 포인트리셋기능
-var pntDcAmtReset = function() {
-	$(".pntDcSumAmt").text("0");
-	$("input[name='pntDcAmtStr']").val("");
-	$("#pntDcAmt").text("0원");
-	
-	// 상품권리셋기능
-	gfcdUseAmtReset();
-}
-
-// 1.16 상품권리셋기능
-var gfcdUseAmtReset = function() {
-	$(".gfcdUseSumAmt").text("0");
-	$("input[name='gfcdUseAmtStr']").val("");
-	$("#gfcdUseAmt").text("0원");
-	
-	// 금액전체계산
-	custCpnSumAmtCal();
-}
-
-// 1.17 쿠폰할인금액합계설정(금액전체계산)
-var custCpnSumAmtCal = function() {
-	var cpnDcSumAmt = 0;
-	var cpnApplyCnt = 0;
-	
-	$("input[name='cpnDcAmt']").each(function(){
-		cpnDcSumAmt = cpnDcSumAmt + parseInt($(this).val());
-		
-		// 적용된 쿠폰 수량
-		if (parseInt($(this).val()) > 0) {
-			cpnApplyCnt++;
-		}
-	});
-	
-	// 쿠폰영역
-	if (cpnDcSumAmt > 0) {
-		$(".maxdisc_amount").text("(-"+cpnDcSumAmt.addComma()+"원)"); // 쿠폰할인금액합계	
-	} else {
-		$(".maxdisc_amount").text("("+cpnDcSumAmt.addComma()+"원)"); // 쿠폰할인금액합계
-	}
-	
-	
-	$("#cpnApplyCnt").text(cpnApplyCnt + "장");
-	
-	// 상품목록영역
-	$("#couponDcSumAmt").text("-" + cpnDcSumAmt.addComma() + "원"); // 쿠폰할인금액합계
-	$(".cpnDcSumAmt").text(cpnDcSumAmt);
-	
-	// 배송비할인적용
-	$("input[name='cpnType']").each(function(){
-		if ($(this).val() == "delvCpn") {
-			var delvSumAmt = parseInt(orgSumDelvFee) - parseInt($(this).parent().find("input[name='cpnDcAmt']").val());
-			
-			// 최종배송비
-			$("#delvSumAmt").text(delvSumAmt.addComma() + "원");
-			$(".delvSumAmt").text(delvSumAmt);
-		}
-	});
-	
-	// 2021.03.06 주문상세 테이블 적용
-	// 포인트금액 상품상세에 포인트금액 분배 작업
-	var prePntDcAmtYn 		= $("input[name='rdi-beforpoint']:checked").val();
-	var leftPntAmt			= parseInt($(".pntDcSumAmt").text());
-	var leftGfcdAmt			= parseInt($(".gfcdUseSumAmt").text());
-	var cartSqLenght		= $(".cartSq").length; 
-	var index				= 1;
-	
-	var orgGoodsSumAmt		= 0;
-	var cpn1DcSumAmt		= 0;
-	var ordSumAmt			= 0;
-	var tmtb1DcSumAmt		= 0;
-	var tmtb2DcSumAmt		= 0;
-	var tmtbDcSumAmt		= 0;
-	var goodsCpnDcSumAmt	= 0;
-	var cartCpnDcSumAmt		= 0;
-	var delvCpnDcSumAmt		= 0;
-	var cpnDcSumAmt			= 0;
-	var prePntDcSumAmt		= 0;
-	var pntDcSumAmt 		= parseInt($(".pntDcSumAmt").text());
-	var gfcdUseSumAmt 		= parseInt($(".gfcdUseSumAmt").text());
-	var realOrdSumAmt		= 0;
-	var savePntSumAmt		= 0;
-	
-	$(".cartSq").each(function(){
-		var orgCurrPrice 	= parseInt($(this).parent().find(".orgCurrPrice").text());
-		var cpn1DcAmt		= parseInt($(this).parent().find(".cpn1DcAmt").text());
-		var optAddPrice 	= parseInt($(this).parent().find(".optAddPrice").text());
-		var goodsQty 		= parseInt($(this).parent().find(".goodsQty").text());
-		var tmtb1DcAmt		= parseInt($(this).parent().find(".tmtb1DcAmt").text());
-		var tmtb2DcAmt		= parseInt($(this).parent().find(".tmtb2DcAmt").text());
-		var goodsCpnDcAmt	= parseInt($(this).parent().find(".goodsCpnDcAmt").text());
-		var cartCpnDcAmt	= parseInt($(this).parent().find(".cartCpnDcAmt").text());
-		var prePntDcAmt1	= parseInt($(this).parent().find(".prePntDcAmt1").text());
-		var dcSumAmt		= 0;
-		var savePntAmt1		= parseInt($(this).parent().find(".savePntAmt1").text());
-		
-		// 주문금액 = ((판매가 - 즉시할인가) + 옵션추가금액) * 장바구니수량
-		orgGoodsSumAmt		= orgGoodsSumAmt + (orgCurrPrice + optAddPrice) * goodsQty;
-		cpn1DcSumAmt		= cpn1DcSumAmt + cpn1DcAmt;
-		tmtb1DcSumAmt		= tmtb1DcSumAmt + tmtb1DcAmt;
-		tmtb2DcSumAmt		= tmtb2DcSumAmt + tmtb2DcAmt;
-		tmtbDcSumAmt		= tmtbDcSumAmt + (tmtb1DcAmt + tmtb2DcAmt);
-		goodsCpnDcSumAmt	= goodsCpnDcSumAmt + goodsCpnDcAmt;
-		cartCpnDcSumAmt		= cartCpnDcSumAmt + cartCpnDcAmt;
-		cpnDcSumAmt			= cpnDcSumAmt + (goodsCpnDcAmt + cartCpnDcAmt);
-		prePntDcSumAmt		= prePntDcSumAmt + prePntDcAmt1;
-		
-		var ordAmt			= ((orgCurrPrice +  - cpn1DcAmt) + optAddPrice) * goodsQty;
-		ordSumAmt			= ordSumAmt + ordAmt;
-		
-		// 선포인트사용여부
-		// 할인금액합계 = 다다익선수량금액 + 다다익선금액금액 + 상품쿠폰금액 + 장바구니금액 + 선포인트금액
-		if (prePntDcAmtYn == "Y") {
-			dcSumAmt		= tmtb1DcAmt + tmtb2DcAmt + goodsCpnDcAmt + cartCpnDcAmt + prePntDcAmt1;
-		} else {
-			dcSumAmt		= tmtb1DcAmt + tmtb2DcAmt + goodsCpnDcAmt + cartCpnDcAmt;
-		}
-		
-		// 주문금액설정
-		$(this).parent().find(".ordAmt").text(ordAmt);
-		$(this).parent().find(".dcSumAmt").text(dcSumAmt);
-		
-		savePntSumAmt		= savePntSumAmt + savePntAmt1;
-	});
-	
-	// 포인트, 상품권 금액 분배
-	$(".cartSq").each(function(){
-		var ordAmt 			= parseInt($(this).parent().find(".ordAmt").text());
-		var dcSumAmt		= parseInt($(this).parent().find(".dcSumAmt").text()); 
-		var tempDiv 		= parseInt((ordAmt / ordSumAmt) * 100);
-		var pntDcAmt1 		= 0;
-		var gfcdUseAmt1		= 0;
-		
-		if (index == cartSqLenght) {
-			pntDcAmt1 		= leftPntAmt;
-			gfcdUseAmt1		= leftGfcdAmt;
-		} else {
-			pntDcAmt1 		= parseInt((pntDcSumAmt * tempDiv) / 100);
-			gfcdUseAmt1		= parseInt((gfcdUseSumAmt * tempDiv) / 100);
-			leftPntAmt		= leftPntAmt - pntDcAmt1;
-			leftGfcdAmt		= leftGfcdAmt - gfcdUseAmt1;
-		}
-		
-		var realOrdAmt1		= ordAmt - dcSumAmt - (pntDcAmt1 - gfcdUseAmt1);
-		realOrdSumAmt		= realOrdSumAmt + realOrdAmt1;
-		
-		$(this).parent().find(".pntDcAmt1").text(pntDcAmt1);
-		$(this).parent().find(".gfcdUseAmt1").text(gfcdUseAmt1);
-		$(this).parent().find(".realOrdAmt1").text(realOrdAmt1);
-		
-		index++;
-	});
-	
-	$(".orgGoodsSumAmt").text(orgGoodsSumAmt);
-	$(".cpn1DcSumAmt").text(cpn1DcSumAmt);
-	$(".ordSumAmt").text(ordSumAmt);
-	$(".tmtb1DcSumAmt").text(tmtb1DcSumAmt);
-	$(".tmtb2DcSumAmt").text(tmtb2DcSumAmt);
-	$(".tmtbDcSumAmt").text(tmtbDcSumAmt);
-	$(".goodsCpnDcSumAmt").text(goodsCpnDcSumAmt);
-	$(".cartCpnDcSumAmt").text(cartCpnDcSumAmt);
-	$(".cpnDcSumAmt").text(cpnDcSumAmt);
-	$(".prePntDcSumAmt").text(prePntDcSumAmt);
-	$(".realOrdSumAmt").text(realOrdSumAmt);
-	$(".savePntSumAmt").text(savePntSumAmt);
-	
-	$("#realOrdAmt").text(realOrdSumAmt.addComma()); // 총 결제 예정 금액
-	
-	var tempSavePnt			= savePntSumAmt - prePntDcAmt;
-	
-	// 사은품사용 후 보유포인트	
-	var rmPntAmt 			= parseInt($("input[name='rmPntAmt']").val());
-	var freegiftUsePnt 		= parseInt($(".freegiftUsePnt").text());
-	rmPntAmt 				= rmPntAmt - freegiftUsePnt; 
-	$(".rmPntAmt").text("보유 : " + rmPntAmt.addComma() + "P");
-	
-	// 걸제영역
-	$("#btn_payment").text("동의 후 "+realOrdSumAmt.addComma()+"원 결제하기");
-	
-	// 적립포인트
-	$("#savePntSumAmt").text(savePntSumAmt.addComma()+"P");
-	
-	// 사은품정보 설정
-	var freegiftValArr 			= [];
-	var freegiftUsePointArr 	= [];
-		
-	$(".gift_box").each(function(){
-		$(this).find(".freegiftRdo").each(function(){
-			// 사은품필수
-			if ($(this).attr("allYn") == "Y" ) {
-				freegiftValArr.push($(this).val());
-				freegiftUsePointArr.push($(this).attr("usepoint"));
-			}
-			
-			// 라디오버튼 선택 사은품 체크
-			if ($(this).is(":checked")) {
-				// 수령거부가 아닐때 체크
-				if ($(this).val() != "noSel") {
-					freegiftValArr.push($(this).val());
-					freegiftUsePointArr.push($(this).attr("usepoint"));
-				}
-			}
-		});
-	});
-	
-	$(".freegiftValArr").text(freegiftValArr);				// 사은품시퀀스배열
-	$(".freegiftUsePointArr").text(freegiftUsePointArr);	// 사은품사용포인트배열
-};
-
-
-</script>
-
-<script th:inline="javascript">
-// 화면준비상태
-$(document).ready( function() {
-	// 배송지변경 팝업열기
-	$(document).on('click','#btn_adrsChange_pop',function(e){
-		$.ajax( {
-			type		: "POST",
-			url 		: '/order/delvAddrChangePop',
-			dataType 	: 'html',
-			success 	: function(result) {
-				if (result != null) {
-					$("#adrsChangePop").html(result);
-					$("#adrsChangePop").modal("show");
-				}
-			}
-		});
-		
-		return false;
-	});
-
-	// 배송지추가 팝업열기
-	$(document).on('click','#btn_addrAdd_pop',function(e){
-		$.ajax( {
-			type		: "POST",
-			url 		: '/order/delvAddrAddPop',
-			dataType 	: 'html',
-			success 	: function(result) {
-				if (result != null) {
-					$("#adrsAddPop").html(result);
-					$("#adrsAddPop").modal("show");
-				}
-			}
-		});
-		
-		return false;
-	});
-
-	// 배송지수정 팝업열기
-	$("#btn_addrModify_pop").on("click", function(e){
-		$.ajax( {
-			type		: "POST",
-			url 		: '/order/delvAddrModifyPop',
-			dataType 	: 'html',
-			success 	: function(result) {
-				if (result != null) {
-					$("#adrsModifyPop").html(result);
-					$("#adrsModifyPop").modal("show");
-				}
-			}
-		});
-		
-		return false;
-	});
-
-	// 배송요청사항 팝업열기
-	$("#btn_rqstModify_pop").on("click", function(e){
-		var jsonObj = new Object();
-		jsonObj.delvMemo = $("input[name='delvMemo']").val();
-		
-		$.ajax({
-			type		: "POST",
-			url 		: "/order/delvMemoChangePop",
-			data		: jsonObj,
-			dataType 	: "html",
-			success 	: function(result) {
-				if (result != null) {
-					$("#rqstModifyPop").html(result);
-					$("#rqstModifyPop").modal("show");
-				}
-			}
-		});
-		
-		return false;
-	});
-	
-	// 해외배송 입력
-	$(document).on('change','.odPayment .area_overseas #rdi-overs1', function(e){
-		$('.info_box.overs2').hide();
-		$('.info_box.overs1').show();
-		return false;
-	}).on('change','.odPayment .area_overseas #rdi-overs2', function(e){
-		$('.info_box.overs1').hide();
-		$('.info_box.overs2').show();
-		return false;
-	});
-
-	// 사은품지급안내 팝업열기
-	$("#btn_infoGift_pop").on("click",function(e){
-		$.ajax({
-			type		: "POST",
-			url 		: "/order/freegiftInfoPop",
-			dataType 	: "html",
-			success 	: function(result) {
-				if (result != null) {
-					$("#infoGiftPop").html(result);
-					$("#infoGiftPop").modal("show");
-				}
-			}
-		});
-		
-		return false;
-	});
-
-	// 할인쿠폰 확인
-	$(document).on('click','.odPayment .area_seldiscount .btn_coupon_toggle',function(e){
-		$('.coupon_list').toggle();
-		$(this).toggleClass('on');
-		return false;
-	});
-
-	// 결제수단 선택
-	$(document).on('change','.odPayment .area_paymethod .paymethod_radio input',function(e){
-		$('.radio_blk').removeClass('on');
-		$(this).parents('.radio_blk').addClass('on');
-		$(this).parents('.radio_blk').find('.paymethod_box').show();
-		$(this).parents('.radio_blk').siblings('div').find('.paymethod_box').hide();
-	
-		var paymethodlabel =  $(this).prop('labels');
-		$(this).parents('li').find('.fold_head .data span').text($(paymethodlabel).text());
-	
-		// 간편결제 카드추가 슬라이드
-		var swiper = new Swiper('.paymethod_box .card_quickpay .list_card', {
-			slidesPerView: 'auto',
-			spaceBetween: 160,
-			centeredSlides: true,
-			navigation: {
-				nextEl: '.list_card .swiper-button-next',
-				prevEl: '.list_card .swiper-button-prev',
-			},
-		});
-		return false;
-	});
-
-	// STYLE24 간편결제 배너닫기
-	$(document).on('click','.odPayment .area_paymethod .quickpay_bnr .btn_close_bnr',function(e){
-		$('.quickpay_bnr').hide();
-	});
-
-	// 결제수단 선택 > 즐겨찾기 추가시 
-	$(document).on('click','.odPayment .area_paymethod .paymethod_box .card .etc .btn_favorcard',function(e){
-		$(this).toggleClass('active');
-		return false;
-	});
-
-	// 결제수단 > 일반결제> 실시간계좌이체 선택시            
-	$(document).on('change','.odPayment input:radio[name=rdi-paynormal]',function(e){
-		var paynormalValue = $(this).attr('id');
-		
-		if (paynormalValue == 'rdi-paynormal2') {
-			$('.area_paymethod .agree_insurance').show();
-		} else {
-			$('.area_paymethod .agree_insurance').hide();
-		}
-		return false;
-	});
-
-	// 개인정보동의 열고닫기
-	$(document).on('click','.area_paymentinfo .payinfo_blk a',function(e){		
-		e.preventDefault();
-		$(this).parents('.payinfo_blk').toggleClass('on');
-		var privacyToggle = $(this).find('span');
-		$(privacyToggle).text($(privacyToggle).text() == '보기' ? '닫기' : '보기');
-		return false;
-	});
-
-	// 간편결제등록 > STEP1.이용약관 팝업열기
-	$(document).on('click','.btn_addcard',function(e){
-		$("#qPayAgree_pop").modal("show");
-		return false;
-	});
-
-	// 간편결제등록 > STEP1.이용약관 체크
-	$(document).on('click','.area_QpayCk .agr_select button',function(e){
-		$(this).parents('.area_QpayCk').find('.info_agrQpay').toggle();
-		var payagrToggle = $(this).find('span');
-		$(payagrToggle).text($(payagrToggle).text() == '약관열기' ? '약관닫기' : '약관열기');
-		return false;
-	});
-
-	// 간편결제등록 > STEP1.이용약관 체크박스 전체선택
-	$(document).on('click','#chk-Qpay-agrAll',function(e){
-		$(this).parents(".qPayAgree_pop").find('.agree_Qpay input').prop("checked", $(this).is(":checked"));
-	});
-
-	// 간편결제등록 > STEP1.이용약관 체크박스 개별선택
-	$(document).on("click", ".agree_Qpay input",function(e){
-		var is_checked = true;
-		$(".agree_Qpay input").each(function(){
-			is_checked = is_checked && $(this).is(":checked");
-		});
-		$("#chk-Qpay-agrAll").prop("checked", is_checked);
-	});
-
-	// 간편결제등록 > 본인인증 팝업열기
-	$(document).on('click','#btn_qPayidConfirm_pop',function(e){
-		$("#qPayidConfirm_pop").modal("show");
-		return false;
-	});
-
-	// 카카오페이 결제준비 처리
-	var fnKakaoPaymentReady = function() {
-		let nextRedirectUrl = $('#order_info input[name=nextRedirectPcUrl]').val();
-		let option = 'width=420, height=520';
-		
-		window.open(nextRedirectUrl, 'kakaoPaymentPopup', option);
-	}
-
-	// 카카오페이 결제 승인 요청
-	var fnKakaoPaymentRequest = function(pgToken) {
-		// Token 값 설정
-		$('#order_info input[name=pgToken]').val(pgToken);
-		
-		// Form Submit
-		document.order_info.submit();
-		
-		return true;
-	}
-	
-	// 네이버페이 결제준비 처리
-	var fnNaverPaymentReady = function() {
-		let naverPayUrl = 'https://' + [[${@environment.getProperty('naverPay.payUrl.web')}]];
-		let reserveId = $('#order_info input[name=reserveId]').val();
-		let url = naverPayUrl + '/payments/' + reserveId;
-		let option = 'width=750, height=' + $(window).height();
-		
-		window.open(url, 'naverPaymentPopup', option);
-	}
-	
-	// 네이버페이 결제 승인 요청
-	var fnNaverPaymentRequest = function(paymentId) {
-		// TID 설정
-		$('#order_info input[name=pgTid]').val(paymentId);
-
-		// Form Submit
-		document.order_info.submit();
-
-		return true;
-	}
-});
-</script>
-
-</th:block>
-</body>
-</html>

+ 0 - 1162
src/main/webapp/WEB-INF/views/web/order/OrderFormWeb_20210318.html

@@ -1,1162 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="web/common/layout/DefaultLayoutWeb">
-<!--
- *******************************************************************************
- * @source  : OrderFormWeb.html
- * @desc    : 주문/결제 Page
- *============================================================================
- * STYLE24
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2021.02.01   jsh77b     최초 작성
- *******************************************************************************
- -->
-<body>
-<th:block layout:fragment="content">
-
-<link rel="stylesheet" type="text/css" href="/ux/pc/css/swiper.min.css">
-<script type="text/javascript" src="/ux/pc/js/swiper.min.js"></script>
-<script type="text/javascript" src="/ux/pc/js/slick.min.js"></script>
-<script type="text/javascript" src="/ux/pc/js/jquery-ui.js"></script>
-
-<!-- payment.js -->
-<script type="text/javascript" th:src="${@environment.getProperty('pg.kcp.js.url')}" src=""></script>
-<script type="text/javascript" src="/biz/payment.js"></script>
-
-<form id="order_info" name="order_info" method="post" action="/order/pay/result/response" ></form>
-
-<!-- 주문고객정보 -->
-<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none;" name="orderInfo" id="orderInfo">
-	<tbody>
-		<tr style="height:30px;">
-			<th>custNm</th>
-			<th>email</th>
-			<th>cellPhnno</th>
-			<th>recipZipcode</th>
-			<th>recipBaseAddr</th>
-			<th>recipDtlAddr</th>
-			<th>delvMemo</th>
-			<th>foreignBuyYn</th>
-			<th>orderMadeYn</th>
-		</tr>
-		<tr style="height:30px;">
-			<td class="custNm"></td>
-			<td class="email"></td>
-			<td class="cellPhnno"></td>
-			<td class="recipZipcode"></td>
-			<td class="recipBaseAddr"></td>
-			<td class="recipDtlAddr"></td>
-			<td class="delvMemo"></td>
-			<td class="foreignBuyYn"></td>
-			<td class="orderMadeYn"></td>
-		</tr>
-	</tbody>
-</table>
-
-<!-- 사은품정보 -->
-<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none;" name="freegiftInfo">
-	<tr style="height:30px;">
-		<th>freegiftValArr</th>
-		<th>freegiftUsePointArr</th>
-		<th>freegiftSqArr</th>
-		<th>freegiftGoodsArr</th>
-	</tr>
-	<tr style="height:30px;">
-		<td class="freegiftValArr"></td>
-		<td class="freegiftUsePointArr"></td>
-		<td class="freegiftSqArr"></td>
-		<td class="freegiftGoodsArr"></td>
-	</tr>
-</table>
-
-<!-- 주문상세금액 -->
-<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none;" name="orderDetailInfo" id="orderDetailInfo">
-	<tr style="height:30px;">
-		<th>cartSq</th>
-		<th style="display:none">goodsNm</th>
-		<th>goodsCd</th>
-		<th>goodsType</th>
-		<th>itemCd</th>
-		<th>optCd</th>
-		<th style="display:none">optCd1</th>
-		<th style="display:none">optCd2</th>
-		<th style="display:none">itemQtyr</th>
-		<th>orgCurrPrice</th>
-		<th>cpn1DcSq</th>
-		<th>cpn1DcAmt</th>
-		<th>optAddPrice</th>
-		<th>goodsQty</th>
-		<th>ordAmt</th>
-		<th>tmtb1Sq</th>
-		<th>tmtb1DcAmt</th>
-		<th>tmtb2Sq</th>
-		<th>tmtb2DcAmt</th>
-		<th>goodsCpnSq</th>
-		<th>goodsCpnDcAmt</th>
-		<th>cartCpnSq</th>
-		<th>cartCpnDcAmt</th>
-		<th>prePntDcAmt1</th>
-		<th>dcSumAmt</th>
-		<th>pntDcAmt1</th>
-		<th>gfcdUseAmt1</th>
-		<th>realOrdAmt1</th>
-		<th>savePntAmt1</th>
-		<th>shotDelvYn</th>
-		<th>foreignYn</th>
-		<th>orderMadeYn</th>
-		<th>delvFeeCd</th>
-	</tr>
-	<th:block th:each="delvAllCart, index : ${delvAllCartList}">
-		<th:block th:if="${delvAllCart != null and #lists.size(delvAllCart) > 0}">
-			<th:block th:each="goods, i : ${delvAllCart}">
-				<tr style="height:30px;">
-					<td class="cartSq" 			th:text="${goods.cartSq}"></td>
-					<td class="goodsNm" 		th:text="${goods.goodsNm}" style="display:none"></td>
-					<td class="goodsCd"			th:text="${goods.goodsCd}"></td>
-					<td class="goodsType"		th:text="${goods.goodsType}"></td>
-					<td class="itemCd"			th:text="${goods.itemCd}"></td>
-					<td class="optCd"			th:text="${goods.optCd}"></td>
-					<td class="optCd1"			th:text="${goods.optCd1}" style="display:none"></td>
-					<td class="optCd2"			th:text="${goods.optCd2}" style="display:none"></td>
-					<td class="itemQtyr"		th:text="${goods.itemQtyr}" style="display:none"></td>
-					<td class="orgCurrPrice" 	th:text="${goods.orgCurrPrice}"></td>
-					<td class="cpn1CpnSq" 		th:text="${goods.cpn1CpnSq}"></td>
-					<td class="cpn1DcAmt" 		th:text="${goods.orgCurrPrice} - ${goods.currPrice}"></td>
-					<td class="optAddPrice" 	th:text="${goods.optAddPrice}"></td>
-					<td class="goodsQty" 		th:text="${goods.goodsQty}"></td>
-					<td class="ordAmt">0</td>
-					<th:block th:if="${goods.applyQtySectionYn} == 'Y' and ${goods.qtyTmtbSq} > 0">
-						<td class="tmtb1Sq" 	th:text="${goods.qtyTmtbSq}"></td>
-						<td class="tmtb1DcAmt" 	th:text="${goods.tmtb1DcAmt}"></td>
-					</th:block>
-					<th:block th:if="${goods.applyQtySectionYn} != 'Y'">
-						<td class="tmtb1Sq">0</td>
-						<td class="tmtb1DcAmt">0</td>
-					</th:block>
-					<th:block th:if="${goods.applyAmtSectionYn} == 'Y' and ${goods.amtTmtbSq} > 0">
-						<td class="tmtb2Sq" 	th:text="${goods.amtTmtbSq}"></td>
-						<td class="tmtb2DcAmt" 	th:text="${goods.tmtb2DcAmt}"></td>
-					</th:block>
-					<th:block th:if="${goods.applyAmtSectionYn} != 'Y'">
-						<td class="tmtb2Sq" >0</td>
-						<td class="tmtb2DcAmt" >0</td>
-					</th:block>
-					<td class="goodsCpnSq">0</td>
-					<td class="goodsCpnDcAmt">0</td>
-					<td class="cartCpnSq">0</td>
-					<td class="cartCpnDcAmt">0</td>
-					<td class="prePntDcAmt1" 	th:text="${goods.prePntDcAmt}"></td>
-					<td class="dcSumAmt">0</td>
-					<td class="pntDcAmt1">0</td>
-					<td class="gfcdUseAmt1">0</td>
-					<td class="realOrdAmt1">0</td>
-					<td class="savePntAmt1" 	th:text="${goods.savePntAmt}"></td>
-					<td class="shotDelvYn" 		th:text="${goods.shotDelvYn}"></td>
-					<td class="foreignBuyYn" 	th:text="${goods.foreignBuyYn}"></td>
-					<td class="orderMadeYn" 	th:text="${goods.orderMadeYn}"></td>
-					<td class="delvFeeCd" 		th:text="${goods.delvFeeCd}"></td>
-				</tr>
-			</th:block>
-		</th:block>
-	</th:block>
-</table>
-
-<!-- 배송단위목록 -->
-<table border="1" style="font-size:10px; text-align:center;  margin-top:20px; display:none;" name="delvFeeCdInfo" id="delvFeeCdInfo">
-	<tr style="height:30px;">
-		<th>supplyCompCd</th>
-		<th>delvFeeCd</th>
-		<th>delvFee</th>
-		<th>delvCpnSq</th>
-		<th>delvCpnDcAmt</th>
-	</tr>
-	<th:block th:each="delvFeeCd, index : ${delvFeeCdList}">
-		<tr style="height:30px;">
-			<td class="supplyCompCd" th:text="${delvFeeCd.supplyCompCd}"></td>
-			<td class="delvFeeCd" th:text="${delvFeeCd.delvFeeCd}"></td>
-			<td class="delvFee" th:text="${delvFeeCd.delvFee}"></td>
-			<td class="delvCpnSq">0</td>
-			<td class="delvCpnDcAmt">0</td>
-		</tr>
-	</th:block>
-</table>
-
-<!-- 주문금액합계 -->
-<table border="1" style="font-size:10px; text-align:center;  margin-top:20px; display:none;" name="orderSumAmtInfo" id="orderSumAmtInfo">
-	<tr style="height:30px;">
-		<th>orgGoodsSumAmt</th>
-		<th>delvSumAmt</th>
-		<th>freegiftUsePnt</th>
-		<th>cpn1DcSumAmt</th>
-		<th>ordSumAmt</th>
-		<th>tmtb1DcSumAmt</th>
-		<th>tmtb2DcSumAmt</th>
-		<th>tmtbDcSumAmt</th>
-		<th>goodsCpnDcSumAmt</th>
-		<th>cartCpnDcSumAmt</th>
-		<th>delvCpnDcSumAmt</th>
-		<th>cpnDcSumAmt</th>
-		<th>prePntDcAmt</th>
-		<th>pntDcSumAmt</th>
-		<th>gfcdUseSumAmt</th>
-		<th>realOrdSumAmt</th>
-		<th>savePntSumAmt</th>
-	</tr>
-	<tr style="height:30px;">
-		<td class="orgGoodsSumAmt">0</td>
-		<td class="delvSumAmt" th:text="${sumDelvFee}"></td>
-		<td class="freegiftUsePnt">0</td>
-		<td class="cpn1DcSumAmt">0</td>
-		<td class="ordSumAmt">0</td>
-		<td class="tmtb1DcSumAmt">0</td>
-		<td class="tmtb2DcSumAmt">0</td>
-		<td class="tmtbDcSumAmt">0</td>
-		<td class="goodsCpnDcSumAmt">0</td>
-		<td class="cartCpnDcSumAmt">0</td>
-		<td class="delvCpnDcSumAmt">0</td>
-		<td class="cpnDcSumAmt">0</td>
-		<td class="prePntDcSumAmt">0</td>
-		<td class="pntDcSumAmt">0</td>
-		<td class="gfcdUseSumAmt">0</td>
-		<td class="realOrdSumAmt">0</td>
-		<td class="savePntSumAmt">0</td>
-	</tr>
-</table>
-
-<div id="container" class="container od">
-	<div class="wrap">
-		<div class="content odPayment">
-			<!-- 페이지특정 클래스 = odPayment -->
-			<div class="cont_head">
-				<h2>주문/결제</h2>
-				<div class="oder_steps">
-					<ul>
-						<li>01 쇼핑백</li>
-						<li class="on">02 주문/결제</li>
-						<li>03 주문완료</li>
-					</ul>
-				</div>
-			</div>
-			<div class="cont_body">
-				<!-- CONT-BODY -->
-				<div class="od_cont">
-					<form class="form_wrap">
-						<div class="sec_head">
-							<div class="tbl type4">
-								<table>
-									<colgroup>
-										<col width="240">
-										<col width="*">
-									</colgroup>
-									<tbody>
-										<tr>
-											<th>총 <span class="number">8</span> 건으로 나뉘어 배송 예정</th>
-											<td><span> 총알배송<em class="number">2</em>건
-											</span> <span> STYLE24<em class="number">2</em>건
-											</span> <span> 업체직배송<em class="number">1</em>건
-											</span> <span> 예약배송<em class="number">2</em>건
-											</span></td>
-										</tr>
-									</tbody>
-								</table>
-							</div>
-						</div>
-						<div class="sec_body">
-							<!-- -->
-							<div class="foldGroup">
-								<ul>
-									<li class="fold_mbinfo">
-										<!-- 주문고객정보 -->
-										<div class="fold_head">
-											<a href="javascript:void(0)">
-												<div>
-													<div class="fold_tit">
-														<span>주문고객</span>
-													</div>
-													<div class="data">
-														<span>홍길동</span> <span>abcdefg@naver.com</span> <span>010-1234-5647</span>
-													</div>
-												</div>
-											</a>
-										</div>
-										<div class="fold_cont" style="display: none;">
-											<div class="area_mbinfo">
-												<dl>
-													<div>
-														<dt>
-															<span class="sr-only">주문자명</span>
-														</dt>
-														<dd>홍길동</dd>
-													</div>
-													<div>
-														<dt>
-															<span class="sr-only">이메일</span>
-														</dt>
-														<dd>abcdefg@naver.com</dd>
-													</div>
-													<div>
-														<dt>
-															<span class="sr-only">휴대폰 번호</span>
-														</dt>
-														<dd>010-1234-5647</dd>
-													</div>
-												</dl>
-											</div>
-										</div> <!-- //주문고객정보 -->
-									</li>
-									<li class="fold_mbinfo">
-										
-									</li>
-									<li>
-										<!-- 사은품선택 -->
-										<div class="fold_head">
-											<a href="javascript:void(0)">
-												<div>
-													<div class="fold_tit">
-														<span>사은품 선택</span>
-													</div>
-													<div class="data">
-														<span>사은품 총 <em class="total_gift">2</em>개 선택
-														</span> <span><em class="total_deduct">0</em>P 차감</span>
-													</div>
-												</div>
-											</a>
-										</div>
-										<div class="fold_cont" style="display: none;">
-											<div class="area_selgift">
-												<div class="gift_box">
-													<p class="txt">
-														<span>사은품선택1</span> TBJ 남성 제기장 스웨이드 트러커 자켓 에서 주는 사은품
-													</p>
-													<div class="form_field">
-														<div class="gift">
-															<input type="radio" name="rdi-gift1" id="rdi-gift1"
-																class="chk_img" value=""> <label
-																for="rdi-gift1"> <span class="thumb"><img
-																	src="/images/pc/thumb/tmp_gift1.jpg" width="" alt=""></span>
-																<span class="name">유니 NBA 팀로고 양말 (N215AO225P)</span> <span
-																class="deduct">무료</span>
-															</label>
-														</div>
-														<div class="gift">
-															<input type="radio" name="rdi-gift1" id="rdi-gift2"
-																class="chk_img" value=""> <label
-																for="rdi-gift2"> <span class="thumb"><img
-																	src="/images/pc/thumb/tmp_gift1.jpg" width="" alt=""></span>
-																<span class="name">사은품이름</span> <span class="deduct">-4,000P</span>
-															</label>
-														</div>
-														<div class="gift">
-															<input type="radio" name="rdi-gift1" id="rdi-gift3"
-																class="chk_img" value=""> <label
-																for="rdi-gift3"> <span class="thumb"><img
-																	src="/images/pc/thumb/tmp_gift1.jpg" width="" alt=""></span>
-																<span class="name">사은품이름</span> <span class="deduct">-4,000P</span>
-															</label>
-														</div>
-														<div class="gift">
-															<input type="radio" name="rdi-gift1" id="rdi-gift4"
-																class="chk_img" value=""> <label
-																for="rdi-gift4"> <span class="thumb"><img
-																	src="/images/pc/thumb/tmp_gift_empty.jpg" width=""
-																	alt=""></span> <span class="name">사은품 수령안함</span> <span
-																class="deduct">수령거부</span>
-															</label>
-														</div>
-													</div>
-												</div>
-												<div class="gift_box">
-													<p class="txt">
-														<span>사은품선택2</span> 10만원 이상 구매시 사은품
-													</p>
-													<div class="form_field">
-														<div class="gift">
-															<input type="radio" name="rdi-gift2" id="rdi-gift11"
-																class="chk_img" value=""> <label
-																for="rdi-gift11"> <span class="thumb"><img
-																	src="/images/pc/thumb/tmp_gift1.jpg" width="" alt=""></span>
-																<span class="name">유니 NBA 팀로고 양말 (N215AO225P)</span> <span
-																class="deduct">무료</span>
-															</label>
-														</div>
-														<div class="gift">
-															<input type="radio" name="rdi-gift2" id="rdi-gift12"
-																class="chk_img" value=""> <label
-																for="rdi-gift12"> <span class="thumb"><img
-																	src="/images/pc/thumb/tmp_gift1.jpg" width="" alt=""></span>
-																<span class="name">사은품이름</span> <span class="deduct">-4,000P</span>
-															</label>
-														</div>
-														<div class="gift">
-															<input type="radio" name="rdi-gift2" id="rdi-gift13"
-																class="chk_img" value=""> <label
-																for="rdi-gift13"> <span class="thumb"><img
-																	src="/images/pc/thumb/tmp_gift_empty.jpg" width=""
-																	alt=""></span> <span class="name">사은품 수령안함</span> <span
-																class="deduct">수령거부</span>
-															</label>
-														</div>
-													</div>
-												</div>
-												<div class="form_field">
-													<div class="agree_gift">
-														<p>
-															<input id="chk-agree_gift" type="checkbox"><label
-																for="chk-agree_gift"><span>동의합니다</span></label>
-														</p>
-														<p class="txt">
-															사은품 지금에 대한 내용을 확인하였으며, 이에 동의합니다.
-															<button type="button" class="btn_underline"
-																id="btn_infoGift_pop">
-																<span>보기</span>
-															</button>
-														</p>
-													</div>
-												</div>
-											</div>
-										</div> <!-- //사은품선택 -->
-									</li>
-									<li>
-										<!-- 할인/혜택 사용 -->
-										<div class="fold_head on">
-											<a href="javascript:void(0)">
-												<div>
-													<div class="fold_tit">
-														<span>할인/혜택 사용</span>
-													</div>
-													<div class="data maxdisc">
-														<div class="form_field">
-															<input id="chk-maxdisc" type="checkbox" checked="">
-															<label for="chk-maxdisc"><span>최대 할인혜택을
-																	바로 적용하세요!</span>&nbsp;<span class="maxdisc_amount">(<em>-3,000</em>원
-																	할인)
-															</span></label>
-														</div>
-													</div>
-												</div>
-											</a>
-										</div>
-										<div class="fold_cont" style="display: block;">
-											<div class="area_seldiscount">
-												<dl>
-													<div>
-														<dt>할인쿠폰</dt>
-														<dd>
-															<div class="sale_coupon_box">
-																<div>
-																	<span class="maxdisc_amount">총&nbsp;<em>-3,000</em>원
-																		할인
-																	</span>
-																	<button id="btn_couponModify_pop"
-																		class="btn btn_default btn_sm">
-																		<span>쿠폰변경</span>
-																	</button>
-																</div>
-																<div class="form_field">
-																	<div class="input_wrap">
-																		<input type="text" class="form_control"
-																			maxlength="13" placeholder="할인코드를 입력해주세요.">
-																		<button type="button" class="btn btn_dark btn_sm">
-																			<span>적용</span>
-																		</button>
-																	</div>
-																</div>
-															</div>
-														</dd>
-													</div>
-													<div>
-														<dt>배송비 쿠폰</dt>
-														<dd>
-															<div class="dlvr_fee_box">
-
-																<div class="form_field">
-																	<div class="select_custom coupon_list">
-																		<div class="combo">
-																			<div class="select">
-																				<div class="dlvr_coupon">
-																					<p class="empty">선택</p>
-																				</div>
-																			</div>
-																			<ul class="list" style="display: none;">
-																				<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true"추가  -->
-																				<li class="selected">
-																					<div class="dlvr_coupon">
-																						<p class="name">TBJ 배송비 무료쿠폰</p>
-																						<p class="txt">
-																							<span>30,000</span>원 이상 구매시 최대 <span>3,000</span>원
-																							할인
-																						</p>
-																						<p class="discount">
-																							<span>15,000</span>원 할인
-																						</p>
-																					</div>
-																				</li>
-																				<li>
-																					<div class="dlvr_coupon">
-																						<p class="name">TBJ 배송비 무료쿠폰</p>
-																						<p class="txt">
-																							<span>30,000</span>원 이상 구매시 최대 <span>3,000</span>원
-																							할인
-																						</p>
-																						<p class="discount">
-																							<span>15,000</span>원 할인
-																						</p>
-																					</div>
-																				</li>
-																				<li>
-																					<div class="dlvr_coupon">
-																						<p class="name">TBJ 배송비 무료쿠폰</p>
-																						<p class="txt">
-																							<span>30,000</span>원 이상 구매시 최대 <span>3,000</span>원
-																							할인
-																						</p>
-																						<p class="discount">
-																							<span>15,000</span>원 할인
-																						</p>
-																					</div>
-																				</li>
-																				<li aria-disabled="true">
-																					<div class="dlvr_coupon">
-																						<p class="name">TBJ 배송비 무료쿠폰</p>
-																						<p class="txt">
-																							<span>30,000</span>원 이상 구매시 최대 <span>3,000</span>원
-																							할인
-																						</p>
-																						<p class="discount">
-																							<span>15,000</span>원 할인
-																						</p>
-																					</div>
-																				</li>
-																				<li>
-																					<div class="dlvr_coupon">
-																						<p class="empty">적용 안함</p>
-																					</div>
-																				</li>
-																			</ul>
-																		</div>
-																	</div>
-																</div>
-
-															</div>
-														</dd>
-													</div>
-												</dl>
-											</div>
-											<div class="area_selpoint">
-												<dl>
-													<div>
-														<dt>선 포인트 사용</dt>
-														<dd>
-															<div class="form_field">
-																<div>
-																	<input type="radio" name="rdi-beforpoint"
-																		id="rdi-beforpoint1" value="" checked=""> <label
-																		for="rdi-beforpoint1"><span>사용 안함</span></label>
-																</div>
-																<div>
-																	<input type="radio" name="rdi-beforpoint"
-																		id="rdi-beforpoint2" value=""> <label
-																		for="rdi-beforpoint2"><span>사용함</span></label> <span
-																		class="useable_point">(<em>1,500P</em>&nbsp;사용
-																		가능)
-																	</span>
-																</div>
-															</div>
-														</dd>
-													</div>
-													<div>
-														<dt>스타일 포인트</dt>
-														<dd>
-															<div class="form_field">
-																<!-- 스타일 포인트 3만원 이상 결제시 노출 -->
-																<div class="input_wrap">
-																	<input type="text" class="form_control" maxlength=""
-																		placeholder="사용할 포인트를 입력해주세요.">
-																	<button type="button" class="btn btn_dark btn_sm">
-																		<span>적용</span>
-																	</button>
-																</div>
-																<!-- 스타일 포인트 3만원 이상 결제시 노출 -->
-																<!-- 스타일 포인트 3만원 미만 결제시 노출 -->
-																<div class="input_wrap">
-																	<input type="text" class="form_control" maxlength=""
-																		placeholder="3만원 이상 결제시에만 포인트 사용이 가능합니다."
-																		disabled="">
-																	<button type="button" class="btn btn_dark btn_sm">
-																		<span>적용</span>
-																	</button>
-																</div>
-																<!-- //스타일 포인트 3만원 미만 결제시 노출 -->
-																<p>
-																	<span class="remain_point">보유:&nbsp;<em>25,500</em>P
-																	</span>(결제금액의 최대 40%까지 사용가능)
-																</p>
-															</div>
-														</dd>
-													</div>
-													<div>
-														<dt>상품권</dt>
-														<dd>
-															<div class="form_field">
-																<div class="input_wrap">
-																	<input type="text" class="form_control" maxlength=""
-																		placeholder="사용할 금액을 입력해주세요.">
-																	<button type="button" class="btn btn_dark btn_sm">
-																		<span>적용</span>
-																	</button>
-																</div>
-																<p>
-																	<span class="remain_point">보유:&nbsp;<em>25,500</em>원
-																	</span>
-																</p>
-																<div class="agree_receipt">
-																	<input id="chk-receipt" type="checkbox"> <label
-																		for="chk-receipt"><span>상품권 현금영수증 신청</span></label>
-																	<div class="info_box">
-																		<div class="input_wrap">
-																			<input type="text" class="form_control"
-																				maxlength="11" placeholder="">
-																		</div>
-																	</div>
-																</div>
-															</div>
-														</dd>
-													</div>
-												</dl>
-											</div>
-										</div> <!-- //할인/혜택 사용 -->
-									</li>
-									<li class="fold_paymethod">
-										<!-- 결제수단 선택 -->
-										<div class="fold_head">
-											<a href="javascript:void(0)">
-												<div>
-													<div class="fold_tit">
-														<span>결제수단 선택</span>
-													</div>
-													<div class="data">
-														<span>신용카드</span>
-													</div>
-												</div>
-											</a>
-										</div>
-										<div class="fold_cont" style="display: none;">
-											<div class="area_paymethod">
-												<div class="form_field">
-													<div class="paymethod_box">
-														<ul class="sel_method">
-															<li><input type="radio" name="rdi-paynormal"
-																id="payCreditCard" value="" checked="checked">
-																<label for="payCreditCard"><span>신용카드</span></label></li>
-															<li><input type="radio" name="rdi-paynormal"
-																id="payCellphone" value=""> <label
-																for="payCellphone"><span>휴대폰 결제</span></label></li>
-															<li><input type="radio" name="rdi-paynormal"
-																id="payKakao" value=""> <label for="payKakao"><span><em
-																		class="sr-only">카카오페이 결제</em><em
-																		class="payimg kakao"></em></span></label></li>
-															<li><input type="radio" name="rdi-paynormal"
-																id="payNaver" value=""> <label for="payNaver"><span><em
-																		class="sr-only">네이버페이 결제</em><em
-																		class="payimg naver"></em></span></label></li>
-															<li><input type="radio" name="rdi-paynormal"
-																id="payPayco" value=""> <label for="payPayco"><span><em
-																		class="sr-only">페이코 결제</em><em class="payimg payco"></em></span></label>
-															</li>
-															<li><input type="radio" name="rdi-paynormal"
-																id="payRealBank" value=""> <label
-																for="payRealBank"><span>실시간계좌이체</span></label></li>
-															<li><input type="radio" name="rdi-paynormal"
-																id="payVirtualBank" value=""> <label
-																for="payVirtualBank"><span>무통장입금</span></label></li>
-														</ul>
-													</div>
-												</div>
-												<div class="form_field">
-													<div class="agree_paymethod">
-														<input id="chk-agree_paymethod" type="checkbox">
-														<label for="chk-agree_paymethod"> <span>선택한
-																결제수단으로 향후 결제 이용에 동의합니다.&nbsp;&nbsp;<em
-																class="tmark_optional">(선택)</em>
-														</span>
-														</label>
-													</div>
-												</div>
-												<div class="form_field">
-													<div class="agree_insurance">
-														<input id="chk-insurance" type="checkbox"> <label
-															for="chk-insurance"> <span>소비자 피해 보상보험
-																신청&nbsp;&nbsp;<em class="tmark_optional">(선택)</em>
-														</span> <a href="" class="btn_underline"><span>FAQ확인</span></a>
-														</label>
-														<p>
-															‘전자상거래 등에서의 소비자보호에 관한 법률‘에 따라 현금 결제 시 서울보증보험㈜가 제공하는 소비자
-															피해보상보험을<br>신청할 수 있도록 해드리고 있습니다. (2013.11.28부터 시행)
-														</p>
-													</div>
-												</div>
-											</div>
-										</div> <!-- //결제수단 선택 -->
-									</li>
-								</ul>
-							</div>
-							<div class="area_paymentinfo">
-								<div class="paymentinfo">
-									<div class="payinfo_blk">
-										<a href=""> 개인정보 제공에 대한 동의 <span>보기</span>
-										</a>
-										<div class="infotxt">개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
-											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
-											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
-											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
-											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
-											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
-											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
-											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
-											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
-											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
-											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
-											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
-											내용입니다.개인정보제공에 대한 동의 내용입니다.</div>
-									</div>
-									<div class="payinfo_blk">
-										<a href=""> 결제대행 서비스 약관 동의 <span>보기</span>
-										</a>
-										<div class="infotxt">결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
-											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
-											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
-											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
-											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
-											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
-											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
-											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
-											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
-											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
-											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
-											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
-											내용입니다.결제대행서비스 약관 동의 내용입니다.</div>
-									</div>
-								</div>
-
-								<div class="agree_payment">위 주문내역을 확인 하였으며, 회원 본인은 결제에
-									동의합니다.</div>
-							</div>
-							<div class="area_paybtn">
-								<div class="form_field">
-									<button type="button" class="btn btn_primary btn_block">
-										<span>동의 후 <em>123,456,789원</em> 결제하기
-										</span>
-									</button>
-								</div>
-							</div>
-						</div>
-					</form>
-
-
-				</div>
-				<div class="od_side">
-					<div class="area_order">
-						<div class="tit_box">
-							<h3>주문내역</h3>
-							<span> <em class="number">14</em>개의 상품
-							</span>
-						</div>
-						<div class="od_item_box">
-							<!-- 총알배송 -->
-							<div class="part_dlvr">
-								<h4 class="subH3">
-									STYLE24 총알배송 <span>오늘 자정까지 도착</span>
-								</h4>
-								<div class="gd_list">
-									<div class="item_gd">
-										<figure>
-											<span class="thumb"><img
-												src="/images/pc/thumb/tmp_odSide1.jpg" alt=""></span>
-											<figcaption>
-												<div class="brand">CURLYSUE 컬리수</div>
-												<div class="name">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51
-													[겨울] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-												<div class="option">
-													<span>01_루돌프융기모상하복_D오렌지/110</span> <span>수량:<em>99</em>개
-													</span>
-												</div>
-												<div class="price">
-													<span class="selling_price">1,000,000</span>
-												</div>
-											</figcaption>
-										</figure>
-									</div>
-									<div class="item_gd">
-										<figure>
-											<span class="thumb"><img
-												src="/images/pc/thumb/tmp_odSide1.jpg" alt=""></span>
-											<figcaption>
-												<div class="brand">CURLYSUE 컬리수</div>
-												<div class="name">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51
-													[겨울] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-												<div class="option">
-													<span>01_루돌프융기모상하복_D오렌지/110</span> <span>수량:<em>99</em>개
-													</span>
-												</div>
-												<div class="price">
-													<span class="selling_price">1,000,000</span>
-												</div>
-											</figcaption>
-										</figure>
-									</div>
-								</div>
-							</div>
-							<!-- //총알배송 -->
-							<!-- 일반배송 -->
-							<div class="part_dlvr">
-								<h4 class="subH3">STYLE24 일반배송</h4>
-								<div class="gd_list">
-									<div class="item_gd">
-										<figure>
-											<span class="thumb"><img
-												src="/images/pc/thumb/tmp_odSide1.jpg" alt=""></span>
-											<figcaption>
-												<div class="brand">CURLYSUE 컬리수</div>
-												<div class="name">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51
-													[겨울] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-												<div class="option">
-													<span>01_루돌프융기모상하복_D오렌지/110</span> <span>수량:<em>99</em>개
-													</span>
-												</div>
-												<div class="price">
-													<span class="selling_price">1,000,000</span>
-												</div>
-											</figcaption>
-										</figure>
-									</div>
-									<div class="item_gd">
-										<figure>
-											<span class="thumb"><img
-												src="/images/pc/thumb/tmp_odSide1.jpg" alt=""></span>
-											<figcaption>
-												<div class="brand">CURLYSUE 컬리수</div>
-												<div class="name">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51
-													[겨울] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-												<div class="option">
-													<span>01_루돌프융기모상하복_D오렌지/110</span> <span>수량:<em>99</em>개
-													</span>
-												</div>
-												<div class="price">
-													<span class="selling_price">1,000,000</span>
-												</div>
-											</figcaption>
-										</figure>
-									</div>
-								</div>
-							</div>
-							<!-- //일반배송 -->
-							<!-- 업체직배송 -->
-							<div class="part_dlvr">
-								<h4 class="subH3">업체직배송</h4>
-								<div class="gd_list">
-									<div class="item_gd">
-										<figure>
-											<span class="thumb"><img
-												src="/images/pc/thumb/tmp_odSide1.jpg" alt=""></span>
-											<figcaption>
-												<div class="brand">CURLYSUE 컬리수</div>
-												<div class="name">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51
-													[겨울] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-												<div class="option">
-													<span>01_루돌프융기모상하복_D오렌지/110</span> <span>수량:<em>99</em>개
-													</span>
-												</div>
-												<div class="price">
-													<span class="selling_price">1,000,000</span>
-												</div>
-											</figcaption>
-										</figure>
-									</div>
-								</div>
-								<div class="gd_list">
-									<div class="item_gd">
-										<figure>
-											<span class="thumb"><img
-												src="/images/pc/thumb/tmp_odSide2.jpg" alt=""></span>
-											<figcaption>
-												<div class="brand">CURLYSUE 컬리수</div>
-												<div class="name">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51
-													[겨울] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-												<div class="option">
-													<span>01_루돌프융기모상하복_D오렌지/110</span> <span>수량:<em>99</em>개
-													</span>
-												</div>
-												<div class="price">
-													<span class="selling_price">1,000,000</span>
-												</div>
-											</figcaption>
-										</figure>
-									</div>
-								</div>
-							</div>
-							<!-- //업체직배송 -->
-							<!-- 예약배송 -->
-							<div class="part_dlvr">
-								<h4 class="subH3">예약배송</h4>
-								<div class="gd_list">
-									<div class="item_gd">
-										<figure>
-											<span class="thumb"><img
-												src="/images/pc/thumb/tmp_odSide1.jpg" alt=""></span>
-											<figcaption>
-												<div class="brand">CURLYSUE 컬리수</div>
-												<div class="name">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51
-													[겨울] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-												<div class="option">
-													<span>01_루돌프융기모상하복_D오렌지/110</span> <span>수량:<em>99</em>개
-													</span>
-												</div>
-												<div class="price">
-													<span class="selling_price">1,000,000</span>
-												</div>
-											</figcaption>
-										</figure>
-										<p class="info_reserv">
-											<i class="ico ico_calender"></i><span>2021.01.15</span>
-											배송예정상품
-										</p>
-									</div>
-									<div class="item_gd">
-										<figure>
-											<span class="thumb"><img
-												src="/images/pc/thumb/tmp_odSide1.jpg" alt=""></span>
-											<figcaption>
-												<div class="brand">CURLYSUE 컬리수</div>
-												<div class="name">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51
-													[겨울] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-												<div class="option">
-													<span>01_루돌프융기모상하복_D오렌지/110</span> <span>수량:<em>99</em>개
-													</span>
-												</div>
-												<div class="price">
-													<span class="selling_price">1,000,000</span>
-												</div>
-											</figcaption>
-										</figure>
-										<p class="info_reserv">
-											<i class="ico ico_calender"></i><span>2021.01.15</span>
-											배송예정상품
-										</p>
-									</div>
-								</div>
-							</div>
-							<!-- //예약배송 -->
-						</div>
-						<div class="od_amount_box">
-							<dl>
-								<div>
-									<dt>상품금액</dt>
-									<dd>1,590,000 원</dd>
-								</div>
-								<div>
-									<dt>배송비</dt>
-									<dd>0원</dd>
-								</div>
-								<div>
-									<dt>할인금액</dt>
-									<dd>
-										<span class="disc_amount">-1,746,500원</span>
-									</dd>
-								</div>
-								<div>
-									<dt>다다익선할인</dt>
-									<dd>
-										<span class="disc_amount">25,000원</span>
-									</dd>
-								</div>
-								<div>
-									<dt>쿠폰할인</dt>
-									<dd>
-										<span class="disc_amount">3,000원</span>
-									</dd>
-								</div>
-								<div>
-									<dt>선포인트 사용</dt>
-									<dd>
-										<span class="disc_amount">-1,500P</span>
-									</dd>
-								</div>
-								<div>
-									<dt>포인트 사용</dt>
-									<dd>
-										<span class="disc_amount">-5,500P</span>
-									</dd>
-								</div>
-								<div>
-									<dt>상품권 사용</dt>
-									<dd>
-										<span class="disc_amount">-50,000원</span>
-									</dd>
-								</div>
-							</dl>
-						</div>
-						<div class="totalprice_box">
-							<dl>
-								<dt>총 결제 예정 금액</dt>
-								<dd>
-									<span>3,546,200</span>원
-								</dd>
-							</dl>
-							<p class="info_point">
-								<span class="save_point">3,500 P</span> 적립예정
-							</p>
-						</div>
-					</div>
-				</div>
-				<!-- // CONT-BODY -->
-			</div>
-		</div>
-	</div>
-</div>
-
-<script type="text/javascript">
-$(document).ready( function() {
-	//해외배송 입력
-	$(document).on('change','.odPayment .area_overseas #rdi-overs1',function(e){
-		$('.info_box.overs2').hide();
-		$('.info_box.overs1').show();
-		return false;
-	}).on('change','.odPayment .area_overseas #rdi-overs2',function(e){
-		$('.info_box.overs1').hide();
-		$('.info_box.overs2').show();
-		return false;
-	});
-
-	//할인쿠폰 확인
-	$(document).on('click','.odPayment .area_seldiscount .btn_coupon_toggle',function(e){
-		$('.coupon_list').toggle();
-		$(this).toggleClass('on');
-		return false;
-	});
-
-	//결제수단 선택
-	$(document).on('change','.odPayment .area_paymethod .paymethod_radio input',function(e){
-		$('.radio_blk').removeClass('on');
-		$(this).parents('.radio_blk').addClass('on');
-		$(this).parents('.radio_blk').find('.paymethod_box').show();
-		$(this).parents('.radio_blk').siblings('div').find('.paymethod_box').hide();
-
-		var paymethodlabel =  $(this).prop('labels');
-		$(this).parents('li').find('.fold_head .data span').text($(paymethodlabel).text());
-
-		//간편결제 카드추가 슬라이드
-		var swiper = new Swiper('.paymethod_box .card_quickpay .list_card.swiper-container', {
-			slidesPerView: 'auto',
-			spaceBetween: 160,
-			centeredSlides: true,
-			navigation: {
-				nextEl: '.list_card .swiper-button-next',
-				prevEl: '.list_card .swiper-button-prev',
-			},
-		});
-		return false;
-	});
-
-	//STYLE24 간편결제 배너닫기
-	$(document).on('click','.odPayment .area_paymethod .quickpay_bnr .btn_close_bnr',function(e){
-		$('.quickpay_bnr').hide();
-	});
-
-	//결제수단 선택 > 즐겨찾기 추가시 
-	$(document).on('click','.odPayment .area_paymethod .paymethod_box .card .etc .btn_favorcard',function(e){
-		$(this).toggleClass('active');
-		return false;
-	});
-
-	//결제수단 > 일반결제> 실시간계좌이체 선택시            
-	$(document).on('change','.odPayment input:radio[name=rdi-paynormal]',function(e){
-		var paynormalValue = $(this).attr('id');
-		if (paynormalValue == 'rdi-paynormal2') {
-			$('.area_paymethod .agree_insurance').show();
-		} else {
-			$('.area_paymethod .agree_insurance').hide();
-		}
-		return false;
-	});
-
-	//개인정보동의 열고닫기
-	$(document).on('click','.area_paymentinfo .payinfo_blk a',function(e){
-		e.preventDefault();
-		$(this).parents('.payinfo_blk').toggleClass('on');
-		var privacyToggle = $(this).find('span');
-		$(privacyToggle).text($(privacyToggle).text() == '보기' ? '닫기' : '보기');
-		return false;
-	});
-
-	//배송지변경 팝업열기
-	$(document).on('click','#btn_adrsChange_pop',function(e){
-		$("#adrsChangePop").modal("show");
-		return false;
-	});
-
-	//배송지추가 팝업열기
-	$(document).on('click','#btn_addrAdd_pop',function(e){
-		$("#adrsAddPop").modal("show");
-		return false;
-	});
-
-	//배송지수정 팝업열기
-	$(document).on('click','#btn_addrModify_pop',function(e){
-		$("#adrsModifyPop").modal("show");
-		return false;
-	});
-
-	//배송요청사항 팝업열기
-	$(document).on('click','#btn_rqstModify_pop',function(e){
-		$("#rqstModifyPop").modal("show");
-		return false;
-	});
-
-	//사은품지급안내 팝업열기
-	$(document).on('click','#btn_infoGift_pop',function(e){
-		$("#infoGiftPop").modal("show");
-		return false;
-	});
-
-	//간편결제등록 > STEP1.이용약관 팝업열기
-	$(document).on('click','.btn_addcard',function(e){
-		$("#qPayAgree_pop").modal("show");
-		return false;
-	});
-
-	//간편결제등록 > STEP1.이용약관 체크
-	$(document).on('click','.area_QpayCk .agr_select button',function(e){
-		$(this).parents('.area_QpayCk').find('.info_agrQpay').toggle();
-		var payagrToggle = $(this).find('span');
-		$(payagrToggle).text($(payagrToggle).text() == '약관열기' ? '약관닫기' : '약관열기');
-		return false;
-	});
-
-	//간편결제등록 > STEP1.이용약관 체크박스 전체선택
-	$(document).on('click','#chk-Qpay-agrAll',function(e){
-		$(this).parents(".qPayAgree_pop").find('.agree_Qpay input').prop("checked", $(this).is(":checked"));
-	});
-
-	//간편결제등록 > STEP1.이용약관 체크박스 개별선택
-	$(document).on("click", ".agree_Qpay input",function(e){
-		var is_checked = true;
-		$(".agree_Qpay input").each(function(){
-			is_checked = is_checked && $(this).is(":checked");
-		});
-		$("#chk-Qpay-agrAll").prop("checked", is_checked);
-	});
-
-	//간편결제등록 > 본인인증 팝업열기
-	$(document).on('click','#btn_qPayidConfirm_pop',function(e){
-		$("#qPayidConfirm_pop").modal("show");
-		return false;
-	});
-
-});
-</script>
-
-</th:block>
-</body>
-</html>

+ 0 - 197
src/main/webapp/WEB-INF/views/web/order/OrderNoMemberWeb_20210330.html

@@ -1,197 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	  layout:decorator="web/common/layout/DefaultLayoutWeb">
-<!--
- *******************************************************************************
- * @source  : OrderNoMemberWeb.html
- * @desc    : 비회원 주문/결제 Page
- *============================================================================
- * STYLE24
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2021.02.01   jsh77b     최초 작성
- *******************************************************************************
- -->
-<body>
-
-<th:block layout:fragment="content">
-<form id="orderForm" name="orderForm" class="form_wrap form_col_c form_full" action="#" th:action="@{'/order/form'}" th:method="post">
-	<input type="hidden" name="shotDelvUseYn" th:value="${order.shotDelvUseYn}" /><!-- 장바구니화면 총알배송사용여부 -->
-	<!-- 장바구니화면 시퀀스 배열 등록 -->
-	<th:block th:each="cartSq , index : ${order.cartSqArr}">
-		<input type="hidden" name="cartSqArr" th:value="${cartSq}" />
-	</th:block>
-	
-	<!-- 회원 -->
-	<th:block th:if="${isLogin} == true">
-		<script>$("#orderForm").submit();</script>
-	</th:block>
-	
-	<!-- <span th:text="${isLogin}"></span> -->
-	
-	<!-- 비회원 -->
-	<!-- <th:block th:if="${isLogin} == 'false'"> -->
-		<div class="wrap">
-			<div class="content nonMBorder">
-				<!-- 페이지특정 클래스 = nonMBorder -->
-				<div class="cont_head">
-					<h2 class="t_c mb60">비회원 주문하기</h2>
-				</div>
-				<div class="cont_body">
-					<div class="form_head">
-						<p>
-							비회원 주문을 위한 주문자 정보 입력 및 개인정보 수집/이용 동의에<br>체크하신 후 주문을 완료하실 수
-							있습니다.
-						</p>
-					</div>
-					
-					<div class="form_field">
-						<label class="input_label sr-only">이름(주문자명)</label>
-						<div class="ui_col_12">
-							<div class="input_wrap">
-								<input type="text" name="custNm" id="custNm" placeholder="이름(주문자명)">
-							</div>
-						</div>
-					</div>
-					<div class="form_field">
-						<label class="input_label sr-only">휴대폰 번호</label>
-						<div class="ui_col_12">
-							<div class="input_wrap">
-								<input type="text" name="cellPhnno" id="cellPhnno" placeholder="휴대폰 번호">
-							</div>
-						</div>
-					</div>
-					<div class="form_field">
-						<label class="input_label sr-only">이메일주소</label>
-						<div class="ui_col_12">
-							<div class="input_wrap">
-								<input type="text" name="email" id="email" placeholder="이메일주소">
-							</div>
-						</div>
-					</div>
-					<div class="form_field">
-						<label class="input_label sr-only">배송주소 우편번호</label>
-						<div class="ui_col_12">
-							<div class="input_wrap" style="display: flex;">
-								<input type="text" name="recipZipcode" id="recipZipcode" placeholder="우편번호">
-								<button type="submit" class="btn btn_default">우편번호 찾기</button>
-							</div>
-						</div>
-					</div>
-					<br>
-					<div class="form_field">
-						<label class="input_label sr-only">배송주소 기본주소</label>
-						<div class="ui_col_12">
-							<input type="text" name="recipBaseAddr" id="recipBaseAddr" placeholder="기본주소">
-						</div>
-					</div>
-					<div class="form_field">
-						<label class="input_label sr-only">배송주소 상세주소</label>
-						<div class="ui_col_12">
-							<input type="text" name="recipDtlAddr" id="recipDtlAddr" placeholder="상세주소">
-						</div>
-					</div>
-					
-					<!-- 주소 출력 
-					<div class="help_block">
-						<p><span>도로명</span>서울특별시 서초구 서운로 57번길</p>
-						<p><span>지번</span>서울특별시 서초구 서포동 60-28</p>
-					</div>
-					-->
-					
-					<!-- //주소 출력 -->
-					<div class="form_field">
-						<div>
-							<input id="chk-2" type="checkbox"><label for="chk-2">
-								<p>
-									비회원 개인정보 수집&#47;이용 동의 <span>(필수)</span>
-								</p>
-							</label>
-						</div>
-					</div>
-					
-					<div class="form_field txt_area">
-						<div
-							style="overflow: auto; max-height: 176px; border: 1px solid #ddd;">
-							<strong>제1조(목적)</strong>
-							<p>이 약관은 (유)내고향시푸드(전자거래 사업자)이 운영하는 홈페이지(이하 "쇼핑몰"이라 한다)에서
-								제공하는 인터넷 관련 서비스(이하 "서비스"라 한다)를 이용함에 있어 (유)내고향시푸드와 이용자의 권리·의무 및
-								책임사항을 규정함을 목적으로 합니다. ※ 「PC통신 등을 이용하는 전자거래에 대해서도 그 성질에 반하지 않는 한
-								이 약관을 준용합니다」 제2조(정의) ① "쇼핑몰" 이란 사업자가 재화 또는 용역을 이용자에게 제공하기 위하여
-								컴퓨터 등 정보통신설비를 이용하여 재화 또는 용역을 거래할 수 있도록 설정한 가상의 영업장을 말하며, 아울러
-								쇼핑몰을 운영하는 사업자의 의미로도 사용합니다. ② "이용자"란 "쇼핑몰"에 접속하여 이 약관에 따라 "쇼핑몰"이
-								제공하는 서비스를 받는 회원 및 비회원을 말합니다. ③ "회원"이라 함은 "쇼핑몰"에 개인정보를 제공하여
-								회원등록을 한 자로서, "쇼핑몰"의 정보를 지속적으로 제공받으며, "쇼핑몰"이 제공하는 서비스를 계속적으로 이용할
-								수 있는 자를 말합니다. ④ "비회원"이라 함은 회원에 가입하지 않고 "쇼핑몰"이 제공하는 서비스를 이용하는 자를
-								말합니다. 제3조 (약관의 명시와 개정) ① "쇼핑몰"은 이 약관의 내용과 상호, 영업소 소재지, 대표자의 성명,
-								사업자등록번호, 연락처(전화, 팩스, 전자우편 주소 등) 등을 이용자가 알 수 있도록 사이트의 초기
-								서비스화면(전면)에 게시합니다. ② "쇼핑몰"은 약관의 규제 등에 관한 법률, 전자거래기본법, 전자서명법,
-								정보통신망 이용촉진 등에 관한 법률, 방문판매 등에 관한법률, 소비자보호법 등 관련법을 위배하지 않는 범위에서 이
-								약관을 개정할 수 있습니다. ③ "쇼핑몰"이 약관을 개정할 경우에는 적용일자 및 개정사유를 명시하여 현행약관과
-								함께 홈페이지의 초기화면에 그 적용일자 7일 이전부터 적용일자 전일까지 공지합니다. ④ "쇼핑몰"이 약관을 개정할
-								경우에는 그 개정약관은 그 적용일자 이후에 체결되는 계약에만 적용되고 그 이전에 이미 체결된 계약에 대해서는 개정
-								전의 약관조항이 그대로 적용됩니다. 다만 이미 계약을 체결한 이용자가 개정약관 조항의 적용을 받기를 원하는 뜻을
-								제3항에 의한 개정약관의 공지기간 내에 "쇼핑몰"에 송신하여 "쇼핑몰"의 동의를 받은 경우에는 개정약관 조항이
-								적용됩니다. ⑤ 이 약관에서 정하지 아니한 사항과 이 약관의 해석에 관하여는 정부가 제정한 전자거래소비자보호지침
-								및 관계법령 또는 상관례에 따릅니다. 제4조(서비스의 제공 및 변경) ① "쇼핑몰"은 다음과 같은 업무를
-								수행합니다. 1. 재화 또는 용역에 대한 정보 제공 및 구매계약의 체결 2. 구매계약이 체결된 재화 또는 용역의
-								배송 3. 기타 "쇼핑몰"이 정하는 업무 ② "쇼핑몰"은 재화의 품절 또는 기술적 사양의 변경 등의 경우에는 장차
-								체결되는 계약에 의해 제공할 재화·용역의 내용을 변경할 수 있습니다. 이 경우에는 변경된 재화·용역의 내용 및
-								제공일자를 명시하여 현재의 재화·용역의 내용을 게시한 곳에 그 제공일자 이전 7일부터 공지합니다. ③ "쇼핑몰"이
-								제공하기로 이용자와 계약을 체결한 서비스의 내용을 재화의 품절 또는 기술적 사양의 변경 등의 사유로 변경할
-								경우에는 "쇼핑몰"은 이로 인하여 이용자가 입은 손해를 배상합니다. 단, "쇼핑몰"에 고의 또는 과실이 없는
-								경우에는 그러하지 아니합니다.</p>
-						</div>
-					</div>
-					<div class="form_field">
-						<div class="ui_row btn_group_md">
-							<div class="ui_col_6">
-								<button class="btn btn_default btn_block" id="btn_cancel">
-									<span>취소</span>
-								</button>
-							</div>
-							<div class="ui_col_6">
-								<button class="btn btn_dark btn_block" id="btn_order">
-									<span>주문하기</span>
-								</button>
-							</div>
-						</div>
-					</div>
-					<div class="form_info">
-						<p>STYLE24에 회원가입을 하시면 더 많은 혜택을 받으실 수 있습니다!</p>
-						<a href="#none" id="btn_join">회원가입</a>
-					</div>
-				</div>
-			</div>
-		</div>
-	<!-- </th:block> -->
-</form>
-
-<script th:inline="javascript">
-	// 컨텐츠 호출
-	$(document).ready( function() {
-		
-	});
-	
-	// 취소버튼
-	$("btn_cancel").on("click", function() {
-		
-	});
-	
-	// 주문하기버튼
-	$("btn_order").on("click", function() {
-		// TODO 유효성 체크 추가
-		$("#orderForm").submit();
-	});
-	
-	// 회원가입버튼
-	$("btn_join_member").on("click", function() {
-		
-	});
-</script>
-</th:block>
-
-</body>
-</html>

+ 14 - 3
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

@@ -238,7 +238,13 @@
   </div>       
   
 
-<div class="modal fade couponInfo_pop" id="couponInfoPop" tabindex="-1" role="dialog" aria-labelledby="couponInfoLabel" aria-hidden="true"></div>
+<div class="modal fade couponInfo_pop" id="couponInfoPop" tabindex="-1" role="dialog" aria-labelledby="couponInfoLabel" aria-hidden="true">
+		<div class="modal-dialog" role="document">
+			<div class="modal-content">
+                <!-- 쿠폰사용안내 팝업 내용 -->      
+			</div>
+		</div>
+</div>
 <form id="pollListForm" name="pollListForm" th:action="@{'/planning/event/poll/form'}" th:method="post">
 	<input type="hidden" name="planSq" th:value="${planInfo.planSq}"/>
 </form>
@@ -668,9 +674,14 @@ if(coupon.length>0){
 
 //사용안내 모달
 var useInfoCoupon = function (id) {
+	var data = {cpnId : id};
+	var jsonData = JSON.stringify(data);
+	
 	 $.ajax( {
-		type		: "GET",
-		url 		: '/planning/coupon/detail?cpnId='+ id,
+		type		: "POST",
+		url 		: '/planning/coupon/detailPop',
+		data		: jsonData,
+		contentType: 'application/json',
 		dataType 	: 'html',
 		success 	: function(result) {
 			if (result != null) {

+ 17 - 5
src/main/webapp/biz/mypage.js

@@ -269,11 +269,6 @@ var fnChangeDeliveryMemo = function(param) {
 
 // 신용카드 전표 및 현금영수증 버튼 클릭 이벤트
 var fnReceipt = function(param) {
-	// TODO
-	// 전표 링크 팝업 처리
-	// param == 'card'  신용카드 전표
-	// param == 'cash'  현금영수증 전표
-	// param == 'cancel' 취소전표
 	let receiptWin = kcpReceiptUrl;
 	let option = '';
 	if (param == 'card') {
@@ -294,6 +289,23 @@ var fnReceipt = function(param) {
 		
 		// 팝업 크기 설정
 		option = 'width=370, height=625';
+	} else if (param == 'cancel') {
+		if (param.refunYn == 'Y') {
+			// TODO
+			// 취소전표 확인 처리
+		} else {
+			mcxDialog.alert('아직 전표생성이 되지 않았습니다.');
+			return false;
+		}
+	} else if (param == 'delivery') {
+		// URL 설정
+		receiptWin += '?cmd=card_bill';
+		receiptWin += '&tno=' + oneData.pgTid;
+		receiptWin += '&order_no=' + oneData.ordNo;
+		receiptWin += '&trade_mony=' + oneData.addPayCost;
+		
+		// 팝업 크기 설정
+		option = 'width=455, height=815';
 	}
 
 	// 팝업 생성

+ 1 - 1
src/main/webapp/ux/mo/css/common_m.css

@@ -726,7 +726,7 @@ header .subs .btn_gnbs.on span i {transform: rotate(-180deg);-webkit-transform:
 /* header .subs .btn_gnbs.on span i.gl2 {transform: rotate(-45deg);-webkit-transform: rotate(-45deg);} */
 
 header.hide {display: none;}
-header.main .htop {border: rgba(255, 255, 255, 0.2) solid 1px;background-color: #222222;}
+header.main .htop {border: rgba(255, 255, 255, 0.2) solid 0px;background-color: #222222;}
 header.main .htop.bright {background-color: transparent;}
 /* header.main .htop h1 {margin: 10px 0 0 20px;width: 95px;} */
 header.main .btn_gnb span i {background: url(/images/mo/ico_btn_more_w.png) no-repeat;background-size: 1.3rem 0.733rem;background-position: 50% 50%;}

+ 22 - 15
src/main/webapp/ux/mo/css/layout_m.css

@@ -48,12 +48,12 @@
 .cs .foldGroup .fold_head .fold_tit {max-width: 82rem;}
 .cs .foldGroup .fold_answer .answer_head {margin-bottom:1rem}
 .cs .foldGroup .fold_cont > div:first-of-type {border-top:0.1rem solid #ddd}
-.cs ul.inquiry_box{display:flex;}
-.cs ul.inquiry_box > li{width:33.3%; padding:1rem 0; border-right:0.2rem solid #e4e4e4;}
+.cs ul.inquiry_box{display:flex; margin:-0.6rem 0;}
+.cs ul.inquiry_box > li{width:33.3%; border-right:0.2rem solid #e4e4e4;}
 .cs ul.inquiry_box > li:nth-last-child(1){border-right:0px none;}
 .cs ul.inquiry_box > li > p{text-align:center;}
 .cs ul.inquiry_box > li > p:nth-of-type(1){color:#000000; font-size:1.4rem; font-weight:bold;}
-.cs ul.inquiry_box > li > p:nth-of-type(2){margin-top:0.5rem; color:#696969; font-size:1.2rem; font-weight:500;}
+.cs ul.inquiry_box > li > p:nth-of-type(2){margin-top:0.5rem; color:#696969; font-size:1.3rem; font-weight:500;}
 
 /* cs_faq_1 */
 .cs .cs_faq_1{background-color:#f5f5f5}
@@ -130,7 +130,7 @@
 .cs_contactUs_my textarea { width: 100%; height: 15rem; box-sizing: border-box; padding: 1.5rem; font-size: 1.4rem;}
 .cs_contactUs_my .form_field { margin: 0 0 1.2rem; }
 .cs_contactUs_my .info_addfile ul li {font-size: 1.2rem; color: #c6c6c6;}
-.cs_contactUs_my_footer { width: 100%; height: 4.5rem; background: #222; color: #fff; text-align: center;  font-size: 1.4rem; line-height: 4.5rem; bottom: 0; position: fixed; z-index: 1000;}
+.cs_contactUs_my_footer { width: 100%; height: 5.7rem; background: #222; color: #fff; text-align: center;  font-size: 1.6rem; line-height: 5.7rem; bottom: 0; position: fixed; z-index: 1000;}
 .cs_contactUs_my .select_dress { height: 4.5rem; padding: 0 1.5rem; line-height: 4.5rem;}
 .cs_contactUs_my .blt_dot {position:relative; padding-left:1rem}
 .cs_contactUs_my .blt_dot::before {content:''; position:absolute; left:0; top:50%; margin-top:-0.2rem; width:0.3rem; height:0.3rem; background:#888;}
@@ -352,7 +352,7 @@
 .itemLike.likeit::before {opacity: 1;}
 .item_prod .itemLink {position: relative;text-decoration: none;color: rgb(102, 102, 102);cursor: pointer;display: block;}
 .item_prod .itemPic {position: relative;width: 100%;margin-bottom: 1.5rem;padding-top: 150%;font-size: 0px;overflow: hidden;}
-.item_prod .itemPic::after {content: "";display: block;position: absolute;top: 0px;left: 0px;width: 100%;height: 100%;opacity: 0.03;background-color: rgb(0, 0, 0);}
+/*.item_prod .itemPic::after {content: "";display: block;position: absolute;top: 0px;left: 0px;width: 100%;height: 100%;opacity: 0.03;background-color: rgb(0, 0, 0);}*/
 .item_prod .itemPic .pd_img {position: absolute;width: 100%;height: auto;top: 50%;left: 0px;transform: translateY(-50%);}
 .item_prod .itemBrand {display: inline-block; margin: 0px 0.5rem 0.3rem; font-size: 1rem;font-weight: 300;color: rgb(137, 137, 137); text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width:10rem;overflow:hidden;}
 .item_prod .itemComment{margin: 0.8rem 0.5rem 0px;line-height: 1; font-size: 1.1rem;font-weight: 300;color: #fd4802;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}
@@ -390,7 +390,8 @@
 .pd_detail .pd_info > .inner,
 .pd_detail > .inner{margin-bottom:1.2rem; padding-bottom:3rem; background-color:#fff;}
 .pd_detail > .inner:first-child{margin-bottom:0;}
-.pd_detail > .inner:last-child{margin-bottom:0;}
+.pd .pd_detail > .inner:nth-of-type(6){margin-bottom:0;}
+.pd.deal .pd_detail > .inner:nth-of-type(3){margin-bottom:0;}
 .pd_detail .pd_info > .inner.wide,
 .pd_detail > .inner.wide{padding-left:0!important; padding-right:0!important; padding-bottom:0;}
 .pd_detail .thumb_box{position: relative;}
@@ -692,7 +693,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .modal.pd_pop.pd_qnawrite_pop .modal-footer button{height:5.3rem;}
 .modal.pd_pop.pd_qnawrite_pop .modal-header{border-bottom:0px none;}
 /*.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemBrand {display:block; font-size:1rem; color:#888888; font-weight:300; margin-left:0; margin-right:0; text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width : calc(100% - 30%);overflow:hidden;}*/
-.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemName {display:block; margin-top:0.5rem; font-size:1.3rem; max-height: 3.3rem; margin-left:0; margin-right:0; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; max-height: 3.3rem; overflow: hidden; white-space: normal; overflow-wrap: break-word; width : calc(100% - 20%)}
+.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemName {display:block; margin-top:0.5rem; font-size:1.3rem; max-height: 3.3rem; margin-left:0; margin-right:0; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; max-height: 3.3rem; overflow: hidden; white-space: normal; overflow-wrap: break-word; width : calc(100% - 5%)}
 .select_custom .combo .list>li[aria-disabled="true"]{background:#fff;}
 .Purchase_pop .select_custom.on .combo .select{border-bottom:1px solid #dcdcdc}
 .pd_qnalist_pop .foldGroup > ul > li{border-bottom:0px none;}
@@ -749,7 +750,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .pd_detail .size{color:#666666}
 .pd_clickother .item_prod .itemName{display: block;max-height: 3.3rem; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; white-space: normal; overflow-wrap: break-word;  width: calc(100% - 10%);}
 .pic_list .item_prod .itemName{display: block;max-height: 3.3rem; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; white-space: normal; overflow-wrap: break-word;  width: calc(100% - 10%);}
-.foldGroup.case2 .fold_answer{padding-top:0;}
+.foldGroup.case2 .fold_answer{padding-top:1.8rem;}
 .pd .item_prod{display:block;}
 .pd .itemBrand{width:calc(100% - 10%);}
 .pd .select_custom .combo .list{max-height:100%;}
@@ -766,10 +767,14 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .pd_line_box{padding:0.7rem; background:#f5f5f5; width:100%; margin:0 -2rem; display:block; position: absolute; bottom:0;}
 /*.pd_detail .inner{margin:0 !important;}*/
 /* 210413 */
-.cs_contactUs_my .form_field .select_dress::before{content:"*"; position:absolute; left:14.6rem; font-size:1.8rem; top:0.5rem; color:red}
+/*.cs_contactUs_my .form_field .select_dress::before{content:"*"; position:absolute; left:14.6rem; font-size:1.8rem; top:0.5rem; color:red}*/
 /*.cs_contactUs_my .form_field input{content:"*"; position:absolute; left:14.6rem; font-size:1.7rem; top:0.4rem; color:red}*/
-.cs .cs_contactUs_1 .foldGroup .fold_head a{padding:2rem 2rem 1.4rem;}
+.cs .cs_contactUs_1 .foldGroup .fold_head a{padding:1.8rem 2rem 1.4rem;}
+.cs .cs_notice_1 .foldGroup .fold_head a{padding:1.8rem 2rem 1.4rem;}
+.cs .cs_product_1 .foldGroup .fold_head a{padding:1.8rem 2rem 1.4rem;}
 .pd .Purchase_pop .btPop_foot{position: absolute;width: 100%;bottom: 0; background: #fff;}
+.cs .pnb ul{padding-left:1rem}
+.push_restock_pop .item_prod .itemPercent{left:4.5rem;}
 
 
 /* 플롯팅 메뉴 > 구매하기 */
@@ -830,7 +835,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 /* 토스트팝업 > 구매하기 > 옵션선택팝업 */
 .pd_pop.Purchase_pop .pop_option_select{display:none; position:absolute; bottom:0; left:0; width:100%; box-sizing:border-box; z-index:500; background: #fff; height:100%;}
 .pd_pop.Purchase_pop .pop_option_select .pp_body{position:relative; padding:2rem; overflow:auto; max-height:100%; background-color:#fff;}
-.pd_pop.Purchase_pop .pop_option_select .close{opacity: 1; position: absolute; z-index: 98; top: -3.8rem; left: 50%; transform: translate(-50%); display: block; border: 0; width:1.6rem; height:1.6rem; background-image: url(/images/mo/ico_pop_cls_w.png); text-indent: -9999px; background-size: contain; background-repeat: no-repeat; background-position: center center; background-color: transparent;}
+.pd_pop.Purchase_pop .pop_option_select .close{opacity: 1; position: absolute; z-index: 98; top: -3.8rem; left: 50%; transform: translate(-50%); display: block; border: 0; width:3.6rem; height:1.6rem; background-image: url(/images/mo/ico_pop_cls_w.png); text-indent: -9999px; background-size: contain; background-repeat: no-repeat; background-position: center center; background-color: transparent;}
 .pd_pop.Purchase_pop .pop_option_select .opt_header{margin-bottom:2rem;}
 .pd_pop.Purchase_pop .pop_option_select .opt_header:after{display:block; content:''; clear:both;}
 .pd_pop.Purchase_pop .pop_option_select .opt_header .title{position:relative; float:left; font-size:1.6rem; color:#222222; font-weight:500;}
@@ -899,6 +904,8 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .modal.pd_pop.salecoupon_pop button:disabled span:nth-child(2){display:block;}
 .modal.pd_pop.salecoupon_pop button:disabled{background:#aaa!important; border-color:#aaa!important; opacity:1;}
 .modal.pd_pop.salecoupon_pop .modal-footer button{color: #ffffff; background-color: #fd4802; border-color: #fd4802;}
+.modal.pd_pop.salecoupon_pop .modal-footer button > span{padding:0;}
+.modal.pd_pop.salecoupon_pop .modal-footer button > span::after{background:none;}
 
 /* pd_popup > EP채널쿠폰 */
 .modal.pd_pop.epcoupon_pop .modal-body{padding:0rem 2rem;}
@@ -1025,7 +1032,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state {padding:0;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink {display:table-cell; width:100%; height:10.5rem; padding-left:9.0rem; vertical-align:middle; max-width:20rem;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemPic {position:absolute; left:0; top:0; width:7.0rem; height:10.5rem; padding:0; margin-bottom:0; z-index:2;}
-.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemBrand {display:block; margin:0; width : calc(100% - 20%)}
+.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemBrand {display:block; margin:0; width : calc(100% - 10%)}
 /*.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemName {display:block; margin-left:0;}*/
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemPrice {margin:0;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemPrice .lap{position: relative;}
@@ -1123,7 +1130,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .pd_review_pop .pd_review .area_rv_empty .btn_group_flex{position:fixed; width: 100%; bottom: 0; left:0; margin-top: 0; z-index:10;}
 .pd_review{background:#f5f5f5;}
 .pd_review.best,
-.pd_review.photo{background:#fff;}
+.pd_review.photo{background:#fff; position:absolute; bottom:0; z-index:999;}
 .pd_review [class^="area_rv"]{padding:4rem 1.33rem; margin-bottom:1.2rem; background:#fff; line-height: 1.4;}
 .pd_review .thumb {display:block; position:relative; width:100%; height:0px; line-height:0; font-size:0; padding-top:150%; background:#f5f5f5; overflow:hidden;}
 .pd_review .pic .thumb {padding-top:100%; background-repeat:no-repeat; background-position:50% 50%; background-size:cover;}
@@ -1430,8 +1437,8 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .item_blk .item_prod .itemLink{position: relative; display:table-cell; width: 100%; height:60px; padding-left:56px; vertical-align: middle;}
 .item_blk .item_prod .item_state .itemLink .itemPic {position:absolute; left:0; top:0; padding: 0; width:40px; height:60px; z-index:2;}
 /*.item_blk .item_prod .item_state .itemLink .itemBrand {display:block; font-size:1rem; color:#888888; font-weight:300; margin-left:0; margin-right:0; text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width : calc(100% - 20%);overflow:hidden;}*/
-.item_blk .item_prod .item_state .itemLink .itemBrand {min-width:75%;}
-.item_blk .item_prod .item_state .itemLink .itemName {display:block; margin-top:0.5rem; font-size:1.3rem; max-height: 3.3rem; margin-left:0; margin-right:0; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; max-height: 3.3rem; overflow: hidden; white-space: normal; overflow-wrap: break-word; width:calc(100% - 20%);}
+.item_blk .item_prod .item_state .itemLink .itemBrand {min-width:88%;}
+.item_blk .item_prod .item_state .itemLink .itemName {display:block; margin-top:0.5rem; font-size:1.3rem; max-height: 3.3rem; margin-left:0; margin-right:0; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; max-height: 3.3rem; overflow: hidden; white-space: normal; overflow-wrap: break-word; width:calc(100% - 5%);}
 .item_blk .item_prod .item_state .itemLink .itemPrice{margin-left:0; margin-right:0;}
 /*select_custom > item_prod*/
 .select_custom .select .item_prod{margin:0; padding-right:0; overflow:hidden;}

+ 53 - 9
src/main/webapp/ux/mo/css/style24_m.css

@@ -192,7 +192,7 @@
 .swiper-pagination-progressbar-fill {background: #222222 !important;}
 
 .slide-curb {display: inline-block;vertical-align: middle;font-size: 0;margin-left: 5px;}
-.swiper-pagination {margin: 0 30px 0;display: inline-block;vertical-align: middle;}
+.swiper-pagination {display: inline-block;vertical-align: middle;}
 .swiper-controls {position: relative;margin: 0px;text-align: center;font-size: 16px;}
 
 .main .titWrap h2{font-size: 2.1rem;}
@@ -350,8 +350,9 @@
 
 .main_2stage {padding: 6rem 0 3rem 0;}
 .main_2stage .post-bnnEvent{padding: 0 0px 3.5rem 0;}
+.main_2stage .bnnbox {position: relative; padding-top: 26%; overflow: hidden;}
 .main_2stage a{border: 0px;}
-.main_2stage img{width: 100%; height: auto;/* object-fit: none; */}
+.main_2stage img{/*width: 100%; height: auto; object-fit: none; */ position: absolute; top: 50%; left: 50%; transform:translate(-50%, -50%); max-width:none; width:auto; height:100%;}
 
 /* deal countdown */
 .main_deal .count {border: 1px solid #ffffff;border-radius: 5.0rem;padding: 0.4rem 2.6rem 0.4rem 4.8rem;width: auto;display: inline-block;}
@@ -407,11 +408,11 @@
 .main_pick .pick-post .item_prod .itemPrice{margin: 0px 8rem 0.8rem;top:1.5rem;}
 
 .main_1stage {padding: 2rem 0 0rem 0;}
-.main_1stage .bnnbox{position: relative;height:11.3rem;}
-.main_1stage .txtWrap{margin: 0 auto; position: absolute; top: 50%; left: 10vw; transform: translateY(-50%);z-index: 1;}
-.main_1stage .txtWrap p{font-size: 1.8rem;font-weight: 500;letter-spacing: -0.025em;text-align: left;line-height: 1;color: #222222;padding-bottom:1.0rem;}
+.main_1stage .bnnbox{position: relative; /*height:11.3rem;*/ overflow:hidden; padding-top: 35%;}
+.main_1stage .txtWrap{margin: 0 auto; position: absolute; top: 50%; left: 50%; transform:translate(-50%, -50%); z-index: 1;}
+.main_1stage .txtWrap p{font-size: 1.8rem;font-weight: 500;letter-spacing: -0.025em;text-align: center;line-height: 1;color: #222222;padding-bottom:1.0rem;}
 .main_1stage .txtWrap p:last-child {padding-bottom:0px;}
-.main_1stage img{margin: 0 auto;width: 100%;height: auto;position: relative;top: 50%;left: 50%;transform: translate(-50%, -50%);}
+.main_1stage img {position: absolute; top: 50%; left:50%; transform:translate(-50%, -50%); max-width:none; width:auto; height:100%;}
 
 .post-bnnWide {position: relative;top:0rem;display: block;margin: 0 0 3.4rem;}
 .post-bnnWide .swiper-wrapper {width: 100%;height: 100%;height: auto;margin: 0px auto;padding: 0 0 2.5rem;}
@@ -461,7 +462,9 @@ width: 0.5rem; height: 0.9rem; background-size:100%;}
 .main_tv {padding:2.3rem 2.0rem 0 2.0rem;}
 .main_tv .cont_head p{ color: #ffffff;}
 .main_tv .cont_body::before {content: '';z-index: -1;display: block;width: 100%;height: 520px;position: absolute;top: 0;left: 0;background: #444444;}
-.main_tv .movbox {height:50vw;}
+.main_tv .movbox {height:50vw; position: relative;}
+.main_tv .movbox:after {content:''; position: absolute; right: 0; top: 50%; transform:translateY(-50%); padding-top:23%; width: 40%;}
+.main_tv .movbox:before {content:''; position: absolute; left: 0; top: 50%; transform:translateY(-50%); padding-top:23%; width: 40%;}
 
 .post-tv {width: 100%; margin: 0px auto; padding:0 0rem 3.3rem  0rem;}
 .post-tv .swiper-slide-active {width: 100%;height: auto;}
@@ -2459,7 +2462,7 @@ main.container .od_extra .inner:last-child {padding-bottom: 0;}
 .couponSelectPop .popup_head {text-indent:-999em; visibility: hidden; font-size: 0; padding: 0;}
 .couponSelectPop .popup_con {padding:2rem 2rem;}
 .couponSelectPop .dlvr_coupon {width: 100%; text-align: left;}
-.couponSelectPop .dlvr_coupon {padding:14px 18px;}
+.couponSelectPop .dlvr_coupon {padding:14px 18px;}f
 .couponSelectPop .dlvr_coupon .name {color:#222; font-size:14px; font-weight:300;}
 .couponSelectPop .dlvr_coupon .txt {margin-top:10px; color:#888; font-size:14px; font-weight:200;}
 .couponSelectPop .dlvr_coupon .txt span {font-weight:300;}
@@ -2473,4 +2476,45 @@ main.container .od_extra .inner:last-child {padding-bottom: 0;}
 .couponSelectPop .list > li[aria-disabled="true"] .dlvr_coupon p {color:#888;}
 
 /* 다음우편번호 api */
-#daumZipcodePop .modal-content {margin-top:5rem;}
+#daumZipcodePop .modal-content {margin-top:5rem;}
+
+/* popup_메인공지 FULL */
+.popup_main_notice {position:fixed; left:0; top:0; right: 0; bottom: 0; z-index:90000; width: 100%; height: 100%; overflow-y:auto; background: #222;}
+.popup_main_notice .swiper-button-prev,
+.popup_main_notice .swiper-button-next {position:absolute; top:50%; transform:translateY(-50%); display:inline-block; width:60px; height:60px; background-image:url('/images/pc/btn_main_pop_arrow.png'); background-repeat:no-repeat; background-size:auto 100%; z-index:2;}
+.popup_main_notice .swiper-button-prev {left:0; background-position:0 50%;}
+.popup_main_notice .swiper-button-next {right:0; background-position:100% 50%;}
+.popup_main_notice .swiper-button-prev::after,
+.popup_main_notice .swiper-button-next::after {display:none; color:transparent;}
+.popup_main_notice .popup_content {position:relative; width: 100%; height: 100%;}
+.popup_main_notice .popup_content .popup_body {position:relative; height:calc(100vh - 6rem);}
+.popup_main_notice .popup_content .popup_body .swiper-container {height: 100%;}
+.popup_main_notice .popup_content .popup_body .swiper-slide {position: relative;}
+.popup_main_notice .popup_content .popup_body .swiper-slide img {width: 100%; position: absolute; top: 50%; left: 50%; transform:translate(-50%, -50%); height: auto;}
+.popup_main_notice .popup_content .popup_footer {position: relative; background:#222; height: 6rem; padding: 2.2rem;}
+.popup_main_notice .popup_content .popup_footer::after {content:''; clear:both; display:block;}
+.popup_main_notice .popup_content .popup_footer a.btn_underline {display:inline-block; float:left; color:#888; font-size:1.3rem; font-weight:200; border-color:#888}
+.popup_main_notice .popup_content .popup_footer a.btn_popup_close {position: absolute; top: 0; right: 0; width: 6rem; height: 6rem; background: url(/images/mo/btn_main_pop_arrow.png) no-repeat center; background-size:1.6rem;}
+
+.popup_main_notice .popup_body.onlyNotice .swiper-button-prev,
+.popup_main_notice .popup_body.onlyNotice .swiper-button-next {display:none;}
+
+.popup_main_notice .popup_content .popup_body .swiper-container .swiper-pagination-fraction {top: 43%; bottom:auto; width:auto; left: 5.55%; transform:translateX(0); background: rgba(34,34,34,.5); color: #fff; font-weight: 300;padding:0.5rem 0.8rem; line-height: 1; font-size: 1.2rem; border-radius:2rem;}
+.popup_main_notice .popup_content .popup_body .swiper-container .swiper-pagination-current {font-weight: 600;}
+.popup_main_notice .popup_content .popup_body .swiper-container .swiper-pagination-current:before {content:'0';}
+.popup_main_notice .popup_content .popup_body .swiper-container .swiper-pagination-current.on:before {content:'';}
+.popup_main_notice .popup_content .popup_body .swiper-container .swiper-pagination-total:before {content:'0';}
+.popup_main_notice .popup_content .popup_body .swiper-container .swiper-pagination-total.on:before {content:'';}
+
+/* popup_메인공지 HALF */
+.popup_main_notice.half {background: rgba(0,0,0,.9); height: auto;}
+.popup_main_notice.half .popup_content {position: absolute; left: 0; bottom: 0; height:auto;}
+.popup_main_notice.half .popup_content .popup_body .swiper-slide img {width: 100%; position: relative; top:auto; bottom: 0; left: 0; transform:none; height: auto;}
+.popup_main_notice.half .popup_content .popup_body {position:relative; height:auto;}
+.popup_main_notice.half .popup_content .popup_body .swiper-container {height: auto;}
+.popup_main_notice.half .popup_content .popup_body .swiper-container .swiper-pagination-fraction {top: auto; bottom:3rem; width:auto; left: 8.33333%; transform:translateX(0); background: rgba(34,34,34,.5); color: #fff; font-weight: 300;padding:0.5rem 0.8rem; line-height: 1; font-size: 1.2rem; border-radius:2rem;}
+
+.popup_main_notice.half .popup_content .popup_header {position: relative; background:transparent; height: 6rem; padding: 2.2rem;}
+.popup_main_notice.half .popup_content .popup_header::after {content:''; clear:both; display:block;}
+.popup_main_notice.half .popup_content .popup_header a.btn_underline {display:inline-block; float:left; color:#fff; font-size:1.3rem; font-weight:200; border-color:#fff; opacity: 0.4; padding-top: 0.2rem;}
+.popup_main_notice.half .popup_content .popup_header a.btn_popup_close {position: absolute; top: 0; right: 0; width: 6rem; height: 6rem; background: url(/images/mo/btn_main_pop_arrow.png) no-repeat center; background-size:1.6rem;}

+ 1 - 1
src/main/webapp/ux/style24_link.js

@@ -776,7 +776,7 @@ function cfGoodsReview(goodsCd) {
 	var Param = new Object();
 	var str = '<div class="pd_pop full_pop pd_review_pop" id="layer_goods_review"></div>';
 	if ("P" != _frontGb){
-		str = '<div class="modal pop_full fade pd_pop pd_review_pop" id="layer_goods_review" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
+		str = '<div class="modal pop_full fade pd_pop pd_review_pop"  data-id="layer_infinite"  id="layer_goods_review" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
 	}
 	if ($('#layer_goods_review').length == 0) {
 		$('body').append(str);