Преглед на файлове

Merge branch 'develop' into bin2107

bin2107 преди 5 години
родител
ревизия
41214f8106
променени са 19 файла, в които са добавени 590 реда и са изтрити 152 реда
  1. 9 1
      src/main/java/com/style24/front/biz/dao/TsfOrderDao.java
  2. 0 2
      src/main/java/com/style24/front/biz/service/TsfCartService.java
  3. 15 9
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  4. 4 10
      src/main/java/com/style24/front/biz/web/TsfCartController.java
  5. 3 1
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  6. 20 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml
  7. 1 1
      src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html
  8. 69 38
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html
  9. 73 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListFormMob.html
  10. 107 45
      src/main/webapp/WEB-INF/views/mob/order/OrderDcAmtInfoMob.html
  11. 73 5
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  12. 14 14
      src/main/webapp/WEB-INF/views/mob/popup/DelvAddrChangePopMob.html
  13. 1 1
      src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html
  14. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageCancelFormWeb.html
  15. 0 0
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListWeb_back.html
  16. 119 8
      src/main/webapp/WEB-INF/views/web/order/OrderDcAmtInfoWeb.html
  17. 63 6
      src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html
  18. 9 2
      src/main/webapp/WEB-INF/views/web/popup/DelvAddrChangePopWeb.html
  19. 9 6
      src/main/webapp/ux/pc/js/common-ui.js

+ 9 - 1
src/main/java/com/style24/front/biz/dao/TsfOrderDao.java

@@ -4,6 +4,7 @@ import java.util.Collection;
 
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Coupon;
+import com.style24.persistence.domain.GiftCard;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.Payment;
 
@@ -127,5 +128,12 @@ public interface TsfOrderDao {
 	 * @since 2021.04.13
 	 */
 	int getCheckFreegiftVal(Order order);
-	
+
+	/**
+	 * 상품권 현금영수증 정보 등록
+	 * @param param
+	 * @author xodud1202
+	 * @since 2021.04.23
+	 */
+	void createGiftcartReceipt(GiftCard param);
 }

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

@@ -688,8 +688,6 @@ public class TsfCartService {
 					cart.setAmtTmtbSq(apply.getAmtTmtbSq());
 				}
 			}
-
-			log.info("FINAL AMT CHECK :::: {} / {} / {} / {}", cart.getCartSq(), cart.getApplyQtySectionYn(), cart.getApplyAmtSectionYn(), cart.getTmtbDcAmt());
 		}
 
 		//return result;

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

@@ -12,6 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
 import com.gagaframework.web.parameter.GagaMap;
 import com.kcp.J_PP_CLI_N;
@@ -348,8 +350,10 @@ public class TsfOrderService {
 				if(TscConstants.PgGb.KCP.value().equals(param.getPgGb()) || TscConstants.PgGb.PAYCO.value().equals(param.getPgGb())) {
 					coreKcpService.kcpCancel(result);
 				} else if (TscConstants.PgGb.KAKAO.value().equals(param.getPgGb())) {
+					param.setLeftAmt(0);
 					coreKakaoPayService.kakaoPayRollBack(param);
 				} else if (TscConstants.PgGb.NAVER.value().equals(param.getPgGb())) {
+					param.setLeftAmt(0);
 					coreNaverPayService.naverPayRollBack(param);
 				} else {
 					throw new IllegalArgumentException("결제 정보 저장 실패. 새로고침 후 다시 시작해주세요.");
@@ -626,7 +630,8 @@ public class TsfOrderService {
 	 */
 	public GiftCard kcpCashReceiptsRequest(GiftCard param) {
 		GiftCard result = new GiftCard();
-		String cust_ip = TsfSession.getInfo().getIpAddr();
+		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
+		String cust_ip = request.getRemoteAddr();
 		String reqTx = "pay";		// 현금영수증 신청
 		String txCd = "07010000";	// 현금영수증 등록 요청
 		String ordPhnno = "";
@@ -635,7 +640,7 @@ public class TsfOrderService {
 		}
 
 		J_PP_CLI_N c_PayPlus = new J_PP_CLI_N();
-		c_PayPlus.mf_init( "", env.getProperty("pg.kcp.gw.url"), env.getProperty("pg.kcp.gw.port"), Integer.parseInt(env.getProperty("pg.kcp.tx.mode")), env.getProperty("pg.kcp.log.dir") );
+		c_PayPlus.mf_init( "", env.getProperty("pg.kcp.gw.url"), env.getProperty("pg.kcp.gw.port"), Integer.parseInt(env.getProperty("pg.kcp.tx.mode")), env.getProperty("pg.kcp.log.dir"));
 		c_PayPlus.mf_init_set();
 
 		int rcpt_data_set   = c_PayPlus.mf_add_set( "rcpt_data" ) ;
@@ -643,15 +648,15 @@ public class TsfOrderService {
 		int corp_data_set   = c_PayPlus.mf_add_set( "corp_data" ) ;
 
 		// 현금영수증 정보
-		c_PayPlus.mf_set_us( rcpt_data_set, "user_type", "PG01") ;
+		c_PayPlus.mf_set_us( rcpt_data_set, "user_type", "PGNW") ;
 		c_PayPlus.mf_set_us( rcpt_data_set, "trad_time", param.getTradeTime()) ;
 		c_PayPlus.mf_set_us( rcpt_data_set, "tr_code"  , "0") ;							// 0 : 소득공제용(개인), 1 : 지출증빙용(기업)
 		c_PayPlus.mf_set_us( rcpt_data_set, "id_info"  , ordPhnno) ;							// 발급 대상이 개인인 경우에는 주민번호, 휴대폰번호,현금영수증 카드를 세팅하며, 기업인 경우에는 대상 사업자 번호를 입력. 자진발급으로 등록 시, “0100001234” 으로 입력.
 		c_PayPlus.mf_set_us( rcpt_data_set, "amt_tot"  , param.getUsGfcdAmt() + "") ;	// 현금영수증 금액 (공급가액 + 부가가치세 + 봉사료)
-		//c_PayPlus.mf_set_us( rcpt_data_set, "amt_sup"  , amt_sup   ) ;		// 공급가액
-		//c_PayPlus.mf_set_us( rcpt_data_set, "amt_svc"  , amt_svc   ) ;		// 봉사료
-		//c_PayPlus.mf_set_us( rcpt_data_set, "amt_tax"  , amt_tax   ) ;		// 부가가치세 (공급가액의 10%)
-		c_PayPlus.mf_set_us( rcpt_data_set, "pay_type" , "PAXX") ;		// 무슨 값인지 알 수 없음.
+		c_PayPlus.mf_set_us( rcpt_data_set, "amt_sup"  , (param.getUsGfcdAmt() - ((int)(param.getUsGfcdAmt() / 11))) + "") ;		// 공급가액
+		c_PayPlus.mf_set_us( rcpt_data_set, "amt_svc"  , "0") ;		// 봉사료
+		c_PayPlus.mf_set_us( rcpt_data_set, "amt_tax"  , ((int)(param.getUsGfcdAmt() / 11)) + "") ;		// 부가가치세 (공급가액의 10%)
+		c_PayPlus.mf_set_us( rcpt_data_set, "pay_type" , "PAXX") ;
 
 		// 주문 정보
 		c_PayPlus.mf_set_us( ordr_data_set, "ordr_idxx", param.getOrdNo() + "") ;		// 주문번호
@@ -659,13 +664,12 @@ public class TsfOrderService {
 		c_PayPlus.mf_set_us( ordr_data_set, "buyr_name", param.getOrdNm());
 		c_PayPlus.mf_set_us( ordr_data_set, "buyr_tel1", ordPhnno);
 		c_PayPlus.mf_set_us( ordr_data_set, "buyr_mail", param.getOrdEmail());
-		// c_PayPlus.mf_set_us( ordr_data_set, "comment"  , comment);		// 비고 (ex - 여유 파라미터)
 
 		// 가맹점 정보
 		c_PayPlus.mf_set_us( corp_data_set, "corp_type", "0");		// 사업장 구분 (직접 판매 : 0, 입점몰 판매 : 1)
 
 		// 실행
-		c_PayPlus.mf_do_tx(env.getProperty("pg.kcp.site.cd"), "", txCd, cust_ip, param.getOrdNo() + "", env.getProperty("pg.kcp.log.dir"), "0");
+		c_PayPlus.mf_do_tx(env.getProperty("pg.kcp.site.cd"), "", txCd, cust_ip, String.valueOf(param.getOrdNo()), env.getProperty("pg.kcp.log.level"), "0");
 
 		// 결과
 		result.setResultCd(c_PayPlus.m_res_cd);
@@ -677,9 +681,11 @@ public class TsfOrderService {
 			result.setAuthNo(c_PayPlus.mf_get_res("receipt_no"));
 
 			// 성공시 TB_GIFTCARD_RECEIPT INSERT
+			orderDao.createGiftcartReceipt(result);
 		}
 
 		// 성공이든 실패이든 로그성 데이터 TB_GIFTCARD_RECEIPT_API INSERT
+		coreOrderDao.createGiftcartReceiptApi(result);
 
 		return result;
 	}

+ 4 - 10
src/main/java/com/style24/front/biz/web/TsfCartController.java

@@ -24,6 +24,7 @@ import org.springframework.web.servlet.ModelAndView;
 import org.thymeleaf.util.StringUtils;
 
 import com.gagaframework.web.parameter.GagaMap;
+import com.style24.core.biz.service.TscKcpService;
 import com.style24.core.biz.service.TscOrderService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
@@ -67,6 +68,9 @@ public class TsfCartController extends TsfBaseController {
 	@Autowired
 	private TscOrderService coreOrderService;
 
+	@Autowired
+	private TscKcpService coreKcpService;
+
 	@Autowired
 	private TsfOrderService orderService;
 
@@ -154,16 +158,6 @@ public class TsfCartController extends TsfBaseController {
 		model.addAttribute("order", order);
 		model.addAttribute("IMG_PATH", env.getProperty("upload.goods.view"));
 
-		GiftCard temp = new GiftCard();
-		temp.setTradeTime("20210422200347");	// 결제시각 : YYYYMMDDHH24MISS 형식
-		temp.setOrdPhnno("01011111111");		// 현금영수증 대상 휴대폰번호
-		temp.setUsGfcdAmt(10000);				// 현금영수증 신청 금액
-		temp.setOrdNo(211);						// 주문번호
-		temp.setGoodsNm("보라색 원피스");		// 상품명 (“7. 현금영수증 매출전표 연동” 을 통해 고객이 직접 전표를 확인코자 한다면 상품명을 넘겨주지 않았을 경우 구매자 인증 시 인증오류가 발생할 수 있습니다.)
-		temp.setOrdNm("구매자");				// 구매자명
-		temp.setOrdEmail("xxxx@xxxx.com");		// 구매자이메일 (“7. 현금영수증 매출전표 연동” 을 통해 고객이 직접 전표를 확인코자 한다면 메일주소를 넘겨주지 않았을 경우 구매자 인증 시 인증오류가 발생할 수 있습니다.)
-		orderService.kcpCashReceiptsRequest(temp);
-
 		return super.getDeviceViewName("cart/CartListAjaxForm");
 	}
 

+ 3 - 1
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -4,6 +4,8 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
+import javax.servlet.http.HttpServletRequest;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.mobile.device.Device;
@@ -144,7 +146,7 @@ public class TsfMypageController extends TsfBaseController {
 	 * @since 2021. 02. 04
 	 */
 	@GetMapping({"/main/form", "/order/list/form"})
-	public ModelAndView mypageOrderListForm(@RequestBody(required = false) Order order) {
+	public ModelAndView mypageOrderListForm(HttpServletRequest request, @RequestBody(required = false) Order order) {
 		ModelAndView mav = new ModelAndView();
 
 		if (order == null) {

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

@@ -496,5 +496,24 @@
 		    AND    FV.DEL_YN = 'Y'
 		) A
 	</select>
-	
+
+	<!-- 상품권 현금영수증 정보 등록 -->
+	<insert id="createGiftcartReceipt" parameterType="GiftCard">
+		/* TsfOrder.createGiftcartReceipt : 상품권 현금영수증 정보 등록 */
+		INSERT INTO TB_GIFTCARD_RECEIPT (
+		      ORD_NO
+		    , TRADE_NO
+		    , AUTH_NO
+		    , AMT
+		    , REG_DT
+		    , UPD_DT
+		) VALUES (
+		      #{ordNo}
+		    , #{tradeNo}
+		    , #{authNo}
+		    , #{usGfcdAmt}
+		    , NOW()
+		    , NOW()
+		)
+	</insert>
 </mapper>

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html

@@ -703,7 +703,7 @@
 			$(document).ready(function() {
 				setLoginInfo();
 
-				if([[${!order.shotCanYn.equals('Y') or order.shotCartList.size() < 1}]]) {
+				if([[${!order.shotCanYn.equals('Y')}]]) {
 					$(".shotDelvSelect").hide();
 				}
 

+ 69 - 38
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html

@@ -16,7 +16,7 @@
 <body>
 
 <th:block layout:fragment="content">
-<main role="" id="" class="container my">
+<main role="" id="mypageOrderDetailForm" class="container my">
 	<section class="content my_order">
 		<div class="inner wide bg_beige">
 			<div class="order_number">
@@ -509,13 +509,13 @@
 											<dt><span class="sr-only">휴대폰 번호</span></dt>
 											<dd th:text="${deliveryAddrInfo.recipPhnno}" id="recipPhnno"></dd>
 										</div>
-										<!--  배송메모정보변경가능 -->
+										<!--  배송메모정보변경가능
 										<th:block th:if="${allCanYn == 'Y'}">
 											<div class="ship_request ship_select">
 												<span>배송요청 사항</span>
 												<div class="ship_option">
 													<div class="form_field">
-														<div class="select_custom delivery_list"> <!-- 비활성화시 disabled 추가 -->
+														<div class="select_custom delivery_list">
 															<div class="combo">
 																<div class="select" th:text="${deliveryAddrInfo.delvMemo}">선택</div>
 																<ul class="list">
@@ -538,7 +538,7 @@
 											</div>
 										</th:block>
 										<!--  //배송메모정보변경가능 -->
-										<!--  배송메모정보변경불가 -->
+										<!--  배송메모정보변경불가 
 										<th:block th:unless="${allCanYn == 'Y'}">
 											<div class="ship_request">
 												<dt>배송요청 사항</dt>
@@ -546,6 +546,10 @@
 											</div>
 										</th:block>
 										<!--  //배송메모정보변경불가 -->
+										<div class="ship_request">
+											<dt>배송요청 사항</dt>
+											<dd th:text="${deliveryAddrInfo.delvMemo}" id="delvMemo"></dd>
+										</div>
 									</dl>
 								</div>
 							</div>
@@ -696,7 +700,7 @@
 	let deliveryAddrInfo 	= [[${deliveryAddrInfo}]];
 	let kcpReceiptUrl 		= [[${@environment.getProperty('pg.kcp.receipt.url')}]];
 	let jsonObj 			= {};
-	let delvMemo			= [[${deliveryAddrInfo.delvMemo}]];
+	//let delvMemo			= [[${deliveryAddrInfo.delvMemo}]];
 
 	$(document).ready(function() {
 		// 마이페이지 LNB 설정
@@ -711,6 +715,7 @@
 		}
 		
 		// 2021.04.22 배송지정보수정
+		/*
 		var delvMemoArr = ["문 앞", "직접 받고 부재 시 문 앞", "경비실", "택배함"];
 		var tempMemo = true;
 		
@@ -748,6 +753,49 @@
 				$(".ship_etc").hide();
 			}
 		});
+		*/
+	});
+	
+	// 2.1 회원 배송지변경 팝업열기
+	$('#btn_adrsChange_pop').on("click", function(){
+		// 회원인경우
+		if (isLogin == true) {
+			$.ajax( {
+				type		: "POST",
+				url 		: '/common/delvAddrChangePop',
+				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) {
+					$("#adrsChangePop .modal-dialog .modal-content").html(result);
+					$("#adrsChangePop").modal("show");
+				}
+			});
+		}
+		// 비회원인경우
+		else {
+			$.ajax( {
+				type		: "POST",
+				url 		: '/common/delvAddrAddPop',
+				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) {
+					$("#adrsAddPop .modal-dialog .modal-content").html(result);
+					$("#adrsAddPop").modal("show");
+				}
+			});	
+		}
 	});
 	
 	// 전체취소 버튼 클릭 이벤트
@@ -827,51 +875,34 @@
 
 	// 배송지 정보 설정
 	var delvAddrSet = function(delvObj) {
-		let delvAddrSq = deliveryAddrInfo.delvAddrSq;
-		let recipNm = delvObj.recipNm;
-		let recipPhnno = delvObj.recipPhnno;
-		let recipZipcode = delvObj.recipZipcode;
-		let recipBaseAddr = delvObj.recipBaseAddr;
-		let recipDtlAddr = delvObj.recipDtlAddr;
-		let delvMemo = delvObj.delvMemo;
+		let delvAddrSq 		= deliveryAddrInfo.delvAddrSq;
+		let recipNm 		= delvObj.recipNm;
+		let recipPhnno 		= delvObj.recipPhnno;
+		let recipZipcode 	= delvObj.recipZipcode;
+		let recipBaseAddr 	= delvObj.recipBaseAddr;
+		let recipDtlAddr 	= delvObj.recipDtlAddr;
+		let delvMemo 		= delvObj.delvMemo;
 		
 		$('#recipNm').text(recipNm);
 		$('#recipPhnno').text(recipPhnno);
 		$('#recipAddr').text(recipBaseAddr + ' ' + recipDtlAddr);
 		$('#delvMemo').text(delvMemo);
+		$('#mypageOrderDetailForm .recipNm').text(recipNm);
 		
 		let url = '/mypage/change/delvery/addr';
 		let data = {};
-		data.delvAddrSq = delvAddrSq;
-		data.recipNm = recipNm;
-		data.recipPhnno = recipPhnno;
-		data.recipZipcode = recipZipcode;
-		data.recipBaseAddr = recipBaseAddr;
-		data.recipDtlAddr = recipDtlAddr;
-		data.delvMemo = delvMemo;
+		data.delvAddrSq 	= delvAddrSq;
+		data.recipNm 		= recipNm;
+		data.recipPhnno 	= recipPhnno;
+		data.recipZipcode 	= recipZipcode;
+		data.recipBaseAddr 	= recipBaseAddr;
+		data.recipDtlAddr 	= recipDtlAddr;
+		data.delvMemo 		= delvMemo;
 		
 		let jsonData = JSON.stringify(data);
-		
-		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
 		})
 	}
-	
-	// 배송메모 설정
-	var delvMemoSet = function(delvMemoObj) {
-		let url = '/mypage/change/delvery/memo';
-		let delvMemo = delvMemoObj.delvMemo;
-
-		let data = {};
-		data.delvMemo = delvMemo;
-		data.delvAddrSq = oneData.delvAddrSq;
-
-		let jsonData = JSON.stringify(data);
-
-		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-		})
-
-		$("#delvMemo").text(delvMemo);
-	}
 
 	// 환불계좌 등록 콜백 처리
 	var fnRegisterAccountCallback = function(result) {

+ 73 - 1
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListFormMob.html

@@ -55,14 +55,65 @@
 
 <main role="" id="" class="container my">
 	<section class="content my_order">
+		<!-- only 마이페이지메인 -->
+		<div class="inner bg_gray">
+			<div class="mem_info clear">
+				<div class="mem_rank">
+					<div class="rank_icon vip">V</div>
+					<div class="mem_name"><strong th:text="${customerInfo.custNm}"></strong>님</div>
+					<a href="javascript:void(0);" class="rank_txt" th:text="${customerInfo.custGradeNm}" onclick="fnGoToCustomerBenefit();"></a> <!-- 210408_a태그 변경 | 회원등급혜택 페이지 링크 이동-->
+					<button type="button" id="btn_coupon_down" class="btn cou_btn" onclick="fnDownloadCoupon();">등급 쿠폰 다운로드</button> <!-- 210409_추가 : btn_coupon_down id 추가 -->
+				</div>
+				<div class="mem_box">
+					<div class="mem_point">
+						<p class="tit">STYLE포인트</p>
+						<em th:text="${#numbers.formatInteger(rmPntAmt, 1, 'COMMA')}"></em>P
+					</div>
+					<div class="mem_gift">
+						<p class="tit">상품권</p>
+						<span>
+							<em th:text="${#numbers.formatInteger(rmGfcdAmt, 1, 'COMMA')}"></em>원
+						</span>
+					</div>
+					<div class="mem_coupon">
+						<p class="tit">쿠폰</p>
+						<span>
+							<em id="couponCnt" th:text="${couponCnt}"></em>장
+						</span>
+					</div>
+				</div>
+			</div>
+		</div>
+		<div class="inner">
+			<div class="order_info clear">
+				<ul class="clear">
+					<li>
+						<div class="count"><span id="shippingCount" th:text="${orderCount.shippingCount}"></span></div>
+						<div class="or_p">배송 중</div>
+					</li>
+					<li>
+						<div class="count"><span id="shipCompleteCount" th:text="${orderCount.shipCompleteCount}"></span></div>
+						<div class="or_p">배송 완료</div>
+					</li>
+					<li>
+						<div class="count"><span id="orderCreCount" th:text="${orderCount.cancelCount + orderCount.returnCount + orderCount.exchangeCount + orderCount.confirmCount}">7</span></div>
+						<div class="or_p">취소/교환/반품</div>
+					</li>
+				</ul>
+			</div>
+		</div>
+		<!-- //only 마이페이지메인 -->
+		
+		<!-- onlhy 주문목록 -->
 		<div class="inner">
 			<div class="order_sort">
 				<a href="javascript:void(0);" class="od_date_btn">최근 3개월</a>
 				<a href="javascript:void(0);" class="od_status_btn">전체</a>
 			</div>
 		</div>
+		<!-- onlhy 주문목록 -->
 		
-		<!-- 주문목록 -->
+		<!-- common 주문목록 -->
 		<div data-id="layer_infinite_item" >
 			<section id="infiniteContainer">
 				<div id="listBoxOuter">
@@ -71,6 +122,27 @@
 				</div>
 			</section>
  		</div>
+ 		<!-- common 주문목록 -->
+ 		
+ 		<!-- only 마이페이지메인 -->
+ 		<div class="inner wide">
+			<div class="lnb_list">
+				<ul>
+					<li><a href="javascript:void(0);" class="on">주문확인/배송조회</a></li>
+					<li><a href="javascript:void(0);">취소/반품/교환내역</a></li>
+					<li><a href="javascript:void(0);">재입고 알림 내역</a></li>
+					<li><a href="javascript:void(0);">쿠폰</a></li>
+					<li><a href="javascript:void(0);">STYLE 포인트</a></li>
+					<li><a href="javascript:void(0);">상품권</a></li>
+					<li><a href="javascript:void(0);">리뷰</a></li>
+					<li><a href="javascript:void(0);">배송지 관리</a></li>
+					<li><a href="javascript:void(0);">위시리스트</a></li>
+					<li><a href="javascript:void(0);">내정보 관리</a></li>
+					<li><a href="javascript:void(0);">회원 탈퇴</a></li>
+				</ul>
+			</div>
+		</div>
+		<!-- //only 마이페이지메인 -->
  		
 	</section>
 </main>

+ 107 - 45
src/main/webapp/WEB-INF/views/mob/order/OrderDcAmtInfoMob.html

@@ -57,13 +57,13 @@
 							</dt>
 							<dd>
 								<div class="sale_coupon_box">
-									<th:block th:if="${goodsApplyCpnList.size() > 0} or ${cartCpnList.size() > 0}">
-										<div>
-											<button type="button" id="btn_couponModify_pop" class="btn btn_default btn_sm">
-												<span>쿠폰변경</span>
-											</button>
-										</div>
-									</th:block>
+									<input type="hidden" name="custCpnCnt" th:value="${goodsApplyCpnList.size()} + ${cartCpnList.size()}">
+									<input type="hidden" name="custDelvCpnCnt" th:value="${delvCpnList.size()}">
+									<div>
+										<button type="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" id="serialCpnNm" maxlength="13" placeholder="할인코드를 입력해주세요.">
@@ -77,6 +77,7 @@
 						</div>
 						
 						<!-- 배송비쿠폰 -->
+						<!-- 배송비쿠폰이 존재 -->
 						<th:block th:if="${delvCpnList.size() > 0}">
 							<div>
 								<dt>배송비 쿠폰</dt>
@@ -95,55 +96,43 @@
 											</div>
 										</div>
 										<!-- 쿠폰 선택 전 -->
-										
-										<!-- 쿠폰 선택 적용 시 
-										<div class="form_field">
-											<div class="select_custom coupon_list">
-												<div class="combo">
-													<div class="select">
-														<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>
-													</div>
-												</div>
+									</div>
+								</dd>
+							</div>
+						</th:block>
+						<!-- //배송비쿠폰이 존재 -->
+						<!-- 배송비쿠폰이 미존재 -->
+						<th:block th:if="${delvCpnList.size() < 1}">
+							<!-- 적용 쿠폰 없을 시 -->
+							<div class="form_field">
+								<div class="select_custom" disabled>
+									<div class="combo">
+										<div class="select">
+											<div class="dlvr_coupon">
+												<p class="empty">적용 가능한 쿠폰이 없습니다</p>
 											</div>
 										</div>
-										<!-- //쿠폰 선택 적용 시 -->
-										
-										<!-- 적용 쿠폰 없을 시
-										<div class="form_field">
-											<div class="select_custom" disabled>
-												<div class="combo">
-													<div class="select">
-														<div class="dlvr_coupon">
-															<p class="empty">적용 가능한 쿠폰이 없습니다</p>
-														</div>
-													</div>
-													
-													<ul class="list">
-														<li class="selected">
-															<div class="dlvr_coupon">
-																<p class="empty">적용 가능한 쿠폰이 없습니다</p>
-															</div>
-														</li>
-													</ul>
+										<ul class="list">
+											<li class="selected">
+												<div class="dlvr_coupon">
+													<p class="empty">적용 가능한 쿠폰이 없습니다</p>
 												</div>
-											</div>
-										</div>      
-										<!-- //적용 쿠폰 없을 시 -->
+											</li>
+										</ul>
 									</div>
-								</dd>
+								</div>
 							</div>
+							<!-- //적용 쿠폰 없을 시 -->
 						</th:block>
+						<!-- //배송비쿠폰이 미존재 -->
+						
 						<!-- //배송비쿠폰 -->
 						
 					</dl>
 				</div>
 				
 				<!-- 선포인트금액, 포인트금액, 상품권금액 0보다 클때 적용 -->
-				<th:block th:if="${prePntDcAmt} > 0 or ${rmPntAmt} > 0 or ${rmGfcdAmt} > 0">
+				<!-- <th:block th:if="${prePntDcAmt} > 0 or ${rmPntAmt} > 0 or ${rmGfcdAmt} > 0"> -->
 					<div class="area_selpoint">
 						<dl>
 							<!-- 선포인트금액 0보다 클때 적용 -->
@@ -167,6 +156,27 @@
 								</div>
 							</th:block>
 							<!-- //선포인트금액 0보다 클때 적용 -->
+							<!-- 선포인트금액 1보다 작을때 적용 -->
+							<th:block th:if="${prePntDcAmt} < 1">
+								<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-beforpoint11" value="N"> 
+												<label for="rdi-beforpoint1"><span>사용 안함</span></label>
+											</div>
+											<div>
+												<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint12" value="Y" checked>
+												<label for="rdi-beforpoint2"><span>사용함</span></label> 
+												<span class="useable_point">(<em th:text="|${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')}P|"></em>&nbsp;사용 가능)</span>
+											</div>
+										</div>
+									</dd>
+								</div>
+							</th:block>
+							<!-- //선포인트금액 1보다 작을때 적용 -->
 							
 							<!-- 포인트금액 0보다 클때 적용 -->
 							<th:block th:if="${rmPntAmt} > 0">
@@ -202,6 +212,40 @@
 								</div>
 							</th:block>
 							<!-- //포인트금액 0보다 클때 적용 -->
+							<!-- 포인트금액 1보다 작을때 적용 -->
+							<th:block th:if="${rmPntAmt} < 1">
+								<div>
+									<dt>STYLE24 포인트 <span>결제금액의 최대 40%까지 사용가능</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="11" placeholder="사용할 포인트를 입력해주세요." disabled="" onkeyup="inputNumberFormat(this);">
+													<button type="button" class="btn btn_dark btn_sm" id="btn_point_apply">
+														<span>적용</span>
+													</button>
+												</div>
+											</th:block>
+											<!-- 스타일 포인트 3만원 이상 결제시 노출 -->
+											
+											<!-- 스타일 포인트 3만원 미만 결제시 노출 -->
+											<th:block th:if="${orgGoodsSumAmt} < 30000">
+												<div class="input_wrap">
+													<input type="text" class="form_control" maxlength="" placeholder="3만원 이상 결제시에만 포인트 사용이 가능합니다." disabled="" onfocus="this.blur();">
+													<button type="button" class="btn btn_dark btn_sm">
+														<span>적용</span>
+													</button>
+												</div>
+											</th:block>
+											<!-- //스타일 포인트 3만원 미만 결제시 노출 -->
+											<p><span>보유:&nbsp;<em class="rmPntAmt" th:text="${#numbers.formatInteger(rmPntAmt, 1, 'COMMA')}"></em>P</span></p>
+										</div>
+									</dd>
+								</div>
+							</th:block>
+							<!-- //포인트금액 1보다 작을때 적용 -->
 							
 							<!-- 상품권금액 0보다 클때 적용 -->
 							<th:block th:if="${rmGfcdAmt} > 0">
@@ -221,9 +265,27 @@
 								</div>
 							</th:block>
 							<!-- //상품권금액 0보다 클때 적용 -->
+							<!-- 상품권금액 1보다 작을때 적용 -->
+							<th:block th:if="${rmGfcdAmt} < 1">
+								<div>
+									<dt>상품권</dt>
+									<dd>
+										<div class="form_field">
+											<div class="input_wrap">
+												<input type="text" name="gfcdUseAmtStr" class="form_control" maxlength="11" placeholder="사용할 금액을 입력해주세요." onkeyup="inputNumberFormat(this);" disabled="">
+												<button type="button" class="btn btn_dark btn_sm" id="btn_gfcd_apply">
+													<span>적용</span>
+												</button>
+											</div>
+											<p><span class="remain_point">보유:&nbsp;<em th:text="${#numbers.formatInteger(rmGfcdAmt, 1, 'COMMA')}"></em>원</span></p>
+										</div>
+									</dd>
+								</div>
+							</th:block>
+							<!-- //상품권금액 1보다 작을때 적용 -->
 						</dl>
 					</div>
-				</th:block>
+				<!-- </th:block> -->
 				<!-- //선포인트금액, 포인트금액, 상품권금액 0보다 클때 적용 -->
 			</div>
 		</li>

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

@@ -1204,6 +1204,13 @@ var dcAmtInfoSet = function() {
 						
 						// 상품쿠폰, 장바구니쿠폰 팝업 열기
 						$("#btn_couponModify_pop").on("click", function(){
+							// 2021.04.23 보유쿠폰이 없을때 적용
+							var custCpnCnt = parseInt($("#orderForm input[name=custCpnCnt]").val());
+							if (custCpnCnt < 1) {
+								mcxDialog.alert("적용 가능한 쿠폰이 없습니다.");
+								return false;
+							}
+							
 							$("#couponModifyPop").modal("show");
 							
 							// 쿠폰적용초기화(할인율최고)(상품,장바구니)
@@ -1246,7 +1253,18 @@ var dcAmtInfoSet = function() {
 						
 						// 1.8.5 쿠폰 최대할인금액 초기화 버튼 설정
 						$("#chk-maxdisc01").on("click", function(){
+							// 2021.04.23 보유쿠폰이 없을때 적용
+							var custCpnCnt 		= parseInt($("#orderForm input[name=custCpnCnt]").val());
+							var custDelvCpnCnt 	= parseInt($("#orderForm input[name=custDelvCpnCnt]").val());
+							if ((custCpnCnt + custDelvCpnCnt) < 1) {
+								mcxDialog.alert("적용 가능한 쿠폰이 없습니다.");
+								return false;
+							}
+							
 							if ($(this).is(":checked")) {
+								// 2021.04.23 
+								mcxDialog.alert("선택한 쿠폰이 아닌 보유한 쿠폰을 통해 최대할인 혜택을 받을 수 있도록 쿠폰이 자동 적용됩니다.");
+								
 								// 상품&장바구니쿠폰 초기환
 								custGoodsCpnInit();
 								
@@ -1261,7 +1279,18 @@ var dcAmtInfoSet = function() {
 						
 						// 1.8.5 쿠폰 최대할인금액 초기화 버튼 설정
 						$("#chk-maxdisc").on("click", function(){
+							// 2021.04.23 보유쿠폰이 없을때 적용
+							var custCpnCnt 		= parseInt($("#orderForm input[name=custCpnCnt]").val());
+							var custDelvCpnCnt 	= parseInt($("#orderForm input[name=custDelvCpnCnt]").val());
+							if ((custCpnCnt + custDelvCpnCnt) < 1) {
+								mcxDialog.alert("적용 가능한 쿠폰이 없습니다.");
+								return false;
+							}
+							
 							if ($(this).is(":checked")) {
+								// 2021.04.23 
+								mcxDialog.alert("선택한 쿠폰이 아닌 보유한 쿠폰을 통해 최대할인 혜택을 받을 수 있도록 쿠폰이 자동 적용됩니다.");
+								
 								// 상품&장바구니쿠폰 초기환
 								custGoodsCpnInit();
 								
@@ -1313,14 +1342,30 @@ var dcAmtInfoSet = function() {
 					rmPntAmt				= rmPntAmt - freegiftUsePnt;
 					
 					if (gagajf.isNull($("#orderForm input[name=pntDcAmtStr]").val())) {
-						mcxDialog.alert("사용할 포인트를 입력해주세요.");
+						mcxDialog.alert("포인트를 입력하신 후 다시 시도해주세요.");
 						$('#orderForm input[name=pntDcAmtStr]').focus();
 						return false;
 					}
 					
 					// 입력여부체크
 					if (pntDcAmt < 1) {
-						mcxDialog.alert("사용할 포인트를 입력해주세요");
+						mcxDialog.alert("포인트를 입력하신 후 다시 시도해주세요.");
+						// 포인트리셋기능
+						pntDcAmtReset();
+						return false;
+					}
+					
+					// 10원단위부터 입력가능
+					if (pntDcAmt % 10 > 0) {
+						mcxDialog.alert("포인트는 10P단위로 사용이 가능합니다.");
+						// 포인트리셋기능
+						pntDcAmtReset();
+						return false;
+					}
+					
+					// 결제금액을 초과 할 수 없습니다.
+					if (pntDcamt > realOrdAmt) {
+						mcxDialog.alert("포인트를 입력하신 후 다시 시도해주세요.");
 						// 포인트리셋기능
 						pntDcAmtReset();
 						return false;
@@ -1328,7 +1373,7 @@ var dcAmtInfoSet = function() {
 					
 					// 보유포인트보다 초과 사용 불가
 					if (pntDcAmt > rmPntAmt) {
-						mcxDialog.alert("보유포인트 보다 초과 사용 할 수 없습니다.");
+						mcxDialog.alert("입력하신 포인트가 보유한 포인트보다 많습니다.");
 						// 포인트리셋기능
 						pntDcAmtReset();
 						return false;
@@ -1350,6 +1395,9 @@ var dcAmtInfoSet = function() {
 						return false;
 					}
 					
+					// 2021.04.23 추가
+					mcxDialog.alert("총 " + getZeroMinusDelAmt(pntDcAmt) + " P를 차감 결제 합니다.”");
+					
 					// 포인트 적용
 					$("#orderAmtForm .pntDcSumAmt").text(pntDcAmt);
 					$("#pntDcAmt").text(getZeroMinusDelAmt(pntDcAmt));
@@ -1362,16 +1410,33 @@ var dcAmtInfoSet = function() {
 				$("#btn_gfcd_apply").on("click", function(){
 					var rmGfcdAmt 		= parseInt($("#orderForm input[name='rmGfcdAmt']").val());
 					var gfcdUseAmt 		= parseInt(uncomma($("#orderForm input[name='gfcdUseAmtStr']").val()));
+					var realOrdAmt 		= parseInt($("#orderAmtForm .realOrdSumAmt").text());
 					
 					if (gagajf.isNull($("#orderForm input[name=gfcdUseAmtStr]").val())) {
-						mcxDialog.alert("사용할 금액을 입력해주세요.");
+						mcxDialog.alert("금액을 입력하신 후 다시 시도해주세요.");
 						$('#orderForm input[name=gfcdUseAmtStr]').focus();
 						return false;
 					}
 					
 					// 입력여부체크
 					if (gfcdUseAmt < 1 || $("#orderForm input[name='gfcdUseAmtStr']").val() == "") {
-						mcxDialog.alert("사용할 금액을 입력해주세요");
+						mcxDialog.alert("금액을 입력하신 후 다시 시도해주세요.");
+						// 상품권리셋기능
+						gfcdUseAmtReset();
+						return false;
+					}
+					
+					// 결제금액을 초과 할 수 없습니다.
+					if (gfcdUseAmt > realOrdAmt) {
+						mcxDialog.alert("입력하신 금액이 결제할 금액보다 많습니다.");
+						// 포인트리셋기능
+						gfcdUseAmtReset();
+						return false;
+					}
+					
+					// 보유금액보다 초과 사용 불가
+					if (gfcdUseAmt > rmGfcdAmt) {
+						mcxDialog.alert("보유금액 보다 초과 사용 할 수 없습니다.");
 						// 상품권리셋기능
 						gfcdUseAmtReset();
 						return false;
@@ -1394,6 +1459,9 @@ var dcAmtInfoSet = function() {
 						return false;
 					}
 					
+					// 2021.04.23 추가
+					mcxDialog.alert("총 " + gfcdUseAmt.addComma() + " 원를 상품권 금액에서 차감 결제 합니다.”");
+					
 					// 상품권 적용
 					$("#orderAmtForm .gfcdUseSumAmt").text(gfcdUseAmt);
 					$("#gfcdUseAmt").text(getZeroMinusDelAmt(gfcdUseAmt));

+ 14 - 14
src/main/webapp/WEB-INF/views/mob/popup/DelvAddrChangePopMob.html

@@ -46,12 +46,12 @@
 									<div><button type="button" class="btn btn_dark btn_sel_delvAddr" th:value="${deliveryAddr.custDelvAddrSq}"><span>선택</span></button></div>
 								</div>
 								
-								<input type="hidden" name="recipNm" 			th:value="${deliveryAddr.recipNm}"/>
-								<input type="hidden" name="recipPhnno" 			th:value="${deliveryAddr.recipPhnno}"/>
-								<input type="hidden" name="recipZipcode" 		th:value="${deliveryAddr.recipZipcode}"/>
-								<input type="hidden" name="recipBaseAddr" 		th:value="${deliveryAddr.recipBaseAddr}"/>
-								<input type="hidden" name="recipDtlAddr" 		th:value="${deliveryAddr.recipDtlAddr}"/>
-								<input type="hidden" name="delvMemo" 			th:value="${deliveryAddr.delvMemo}"/>
+								<input type="hidden" name="recipNm" 		th:value="${deliveryAddr.recipNm}"/>
+								<input type="hidden" name="recipPhnno" 		th:value="${deliveryAddr.recipPhnno}"/>
+								<input type="hidden" name="recipZipcode" 	th:value="${deliveryAddr.recipZipcode}"/>
+								<input type="hidden" name="recipBaseAddr" 	th:value="${deliveryAddr.recipBaseAddr}"/>
+								<input type="hidden" name="recipDtlAddr" 	th:value="${deliveryAddr.recipDtlAddr}"/>
+								<input type="hidden" name="delvMemo" 		th:value="${deliveryAddr.delvMemo}"/>
 							</div>
 						</th:block>
 					</div>
@@ -96,18 +96,18 @@ $(document).ready( function() {
 
 // 2. 버튼기능구현
 // 2.1 배송지선택버튼
-$(".btn_sel_delvAddr").on("click", function(){
+$("#delvAddrChangeForm .btn_sel_delvAddr").on("click", function(){
 	
 	// custDelvAddrSq 부모창으로 전달
 	var delvObj = {
 		"custDelvAddrSq"	: $(this).attr("value")
 		, "dispYn"			: "Y"
-		, "recipNm"			: $(this).parent().find("input[name=recipNm]").val()
-		, "recipPhnno"		: $(this).parent().find("input[name=recipPhnno]").val()
-		, "recipZipcode"	: $(this).parent().find("input[name=recipZipcode]").val()
-		, "recipBaseAddr"	: $(this).parent().find("input[name=recipBaseAddr]").val()
-		, "recipDtlAddr"	: $(this).parent().find("input[name=recipDtlAddr]").val()
-		, "delvMemo"		: $(this).parent().find("input[name=delvMemo]").val()
+		, "recipNm"			: $(this).parent().parent().parent().find("input[name=recipNm]").val()
+		, "recipPhnno"		: $(this).parent().parent().parent().find("input[name=recipPhnno]").val()
+		, "recipZipcode"	: $(this).parent().parent().parent().find("input[name=recipZipcode]").val()
+		, "recipBaseAddr"	: $(this).parent().parent().parent().find("input[name=recipBaseAddr]").val()
+		, "recipDtlAddr"	: $(this).parent().parent().parent().find("input[name=recipDtlAddr]").val()
+		, "delvMemo"		: $(this).parent().parent().parent().find("input[name=delvMemo]").val()
 	}
 	
 	// 부모장으로 값 전닫
@@ -118,7 +118,7 @@ $(".btn_sel_delvAddr").on("click", function(){
 });
 
 // 2.2 배송지수정버튼
-$(".btn_addrModify_pop").on("click", function(){
+$("#delvAddrChangeForm .btn_addrModify_pop").on("click", function(){
 		
 	var obj = {
 		"custDelvAddrSq" : $(this).attr("value")

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

@@ -559,7 +559,7 @@
 		$(document).ready(function() {
 			setLoginInfo();
 
-			if([[${!order.shotCanYn.equals('Y') or order.shotCartList.size() < 1}]]) {
+			if([[${!order.shotCanYn.equals('Y')}]]) {
 				$(".shotDelvSelect").hide();
 			}
 

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

@@ -363,7 +363,7 @@
 			let goodsCancelAmt = spanCnclRtnAmt;										// 상품취소금액
 			let deliveryFee = sumDeliveryFee - spanTotDeliveryFee;						// 배송비
 			let deductDcAmt = 0 - spanCpnDcAmt - spanTmtbDcAmt - spanPrePntDcAmt;		// 할인금액 차감(쿠폰+다다익선+선포인트)
-			let refundPayAmt = spanRefundAmt - spanTotDeliveryFee;						// 결제금액 환불
+			let refundPayAmt = spanRefundAmt;											// 결제금액 환불
 			let returnAmt = refundPayAmt + refundPoint + refundGiftCard;				// 환불예정금액
 
 			// 추가배송비 영역 설정

+ 0 - 0
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListWeb.html → src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListWeb_back.html


+ 119 - 8
src/main/webapp/WEB-INF/views/web/order/OrderDcAmtInfoWeb.html

@@ -42,11 +42,12 @@
 					<div class="sale_coupon_box">
 						<div>
 							<span class="maxdisc_amount">총&nbsp;<em class="goodsCartCpnDcAmt"></em>원 할인</span>
-							<th:block th:if="${goodsApplyCpnList.size() > 0} or ${cartCpnList.size() > 0}">
-								<button type="button" id="btn_couponModify_pop" class="btn btn_default btn_sm">
-									<span>쿠폰변경</span>
-								</button>
-							</th:block>
+							<input type="hidden" name="custCpnCnt" th:value="${goodsApplyCpnList.size()} + ${cartCpnList.size()}">
+							<input type="hidden" name="custDelvCpnCnt" th:value="${delvCpnList.size()}">
+							
+							<button type="button" id="btn_couponModify_pop" class="btn btn_default btn_sm">
+								<span>쿠폰변경</span>
+							</button>
 						</div>
 						<div class="form_field">
 							<div class="input_wrap">
@@ -61,6 +62,7 @@
 			</div>
 			
 			<!-- 배송비쿠폰 -->
+			<!-- 배송비쿠폰이 존재 -->
 			<th:block th:if="${delvCpnList.size() > 0}">
 				<div>
 					<dt>배송비 쿠폰</dt>
@@ -99,12 +101,43 @@
 					</dd>
 				</div>
 			</th:block>
+			<!-- //배송비쿠폰이 존재 -->
+			<!-- 배송비쿠폰이 미존재 -->
+			<th:block th:if="${delvCpnList.size() < 1}">
+				<div>
+					<dt>배송비 쿠폰</dt>
+					<dd>
+						<div class="dlvr_fee_box">
+							<div class="form_field">
+								<div class="select_custom" disabled="">
+									<div class="combo">
+										<div class="select">
+											<div class="dlvr_coupon">
+												<p class="empty">적용 가능한 쿠폰이 없습니다</p>
+											</div>
+										</div>
+										<ul class="list">
+										<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true"추가  -->
+											<li class="selected">
+												<div class="dlvr_coupon">
+													<p class="empty">적용 가능한 쿠폰이 없습니다</p>
+												</div>
+											</li>
+										</ul>
+									</div>
+								</div>
+							</div>
+						</div>
+					</dd>
+				</div>
+			</th:block>
+			<!-- //배송비쿠폰이 미존재 -->
 			<!-- //배송비쿠폰 -->
 		</dl>
 	</div>
 	
 	<!-- 선포인트금액, 포인트금액, 상품권금액 0보다 클때 적용 -->
-	<th:block th:if="${prePntDcAmt} > 0 or ${rmPntAmt} > 0 or ${rmGfcdAmt} > 0">
+	<!-- <th:block th:if="${prePntDcAmt} > 0 or ${rmPntAmt} > 0 or ${rmGfcdAmt} > 0"> -->
 		<div class="area_selpoint">
 			<dl>
 				<!-- 선포인트금액 0보다 클때 적용 -->
@@ -128,7 +161,28 @@
 					</div>
 				</th:block>
 				<!-- //선포인트금액 0보다 클때 적용 -->
-				
+				<!-- 선포인트금액 1보다 작을때 적용 -->
+				<th:block th:if="${prePntDcAmt} < 1">
+					<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-beforpoint11" value="N"> 
+									<label for="rdi-beforpoint1"><span>사용 안함</span></label>
+								</div>
+								<div>
+									<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint12" value="Y" checked> 
+									<label for="rdi-beforpoint2"><span>사용함</span></label> 
+									<span class="useable_point">(<em th:text="|${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')}원|"></em>&nbsp;사용 가능)</span>
+								</div>
+							</div>
+						</dd>
+					</div>
+				</th:block>
+				<!-- //선포인트금액 1보다 작을때 적용 -->
+
 				<!-- 포인트금액 0보다 클때 적용 -->
 				<th:block th:if="${rmPntAmt} > 0">
 					<div>
@@ -166,6 +220,43 @@
 				</th:block>
 				<!-- //포인트금액 0보다 클때 적용 -->
 				
+				<!-- 포인트금액 1보다 작을때 적용 -->
+				<th:block th:if="${rmPntAmt} < 1">
+					<div>
+						<dt>스타일 포인트</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="11" placeholder="사용할 포인트를 입력해주세요." onkeyup="inputNumberFormat(this);" disabled="">
+										<button type="button" class="btn btn_dark btn_sm" id="btn_point_apply">
+											<span>적용</span>
+										</button>
+									</div>
+								</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>
+								<!-- //스타일 포인트 3만원 미만 결제시 노출 -->
+								
+								<p>
+									<span class="remain_point">보유:&nbsp;
+										<em class="rmPntAmt" th:text="${#numbers.formatInteger(rmPntAmt, 1, 'COMMA')}"></em>P
+									</span>(결제금액의 최대 40%까지 사용가능)
+								</p>
+							</div>
+						</dd>
+					</div>
+				</th:block>
+				<!-- //포인트금액 1보다 작을때 적용 -->
+				
 				<!-- 상품권금액 0보다 클때 적용 -->
 				<th:block th:if="${rmGfcdAmt} > 0">
 					<div>
@@ -185,9 +276,29 @@
 					</div>
 				</th:block>
 				<!-- //상품권금액 0보다 클때 적용 -->
+				
+				<!-- 상품권금액 1보다 작을때 적용 -->
+				<th:block th:if="${rmGfcdAmt} < 1">
+					<div>
+						<dt>상품권</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="11" placeholder="사용할 금액을 입력해주세요." onkeyup="inputNumberFormat(this);" disabled="">
+									<button type="button" class="btn btn_dark btn_sm" id="btn_gfcd_apply">
+										<span>적용</span>
+									</button>
+								</div>
+								<p><span class="remain_point">보유:&nbsp;<em th:text="${#numbers.formatInteger(rmGfcdAmt, 1, 'COMMA')}"></em>원</span></p>
+							</div>
+						</dd>
+					</div>
+				</th:block>
+				<!-- //상품권금액 1보다 작을때 적용 -->
 			</dl>
 		</div>
-	</th:block>
+	<!-- </th:block> -->
 </div> <!-- //할인/혜택 사용 -->
 
 <script th:inline="javascript">

+ 63 - 6
src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html

@@ -1228,7 +1228,18 @@ var dcAmtInfoSet = function() {
 						
 						// 1.8.5 쿠폰 최대할인금액 초기화 버튼 설정
 						$("#chk-maxdisc").on("click", function(){
+							// 2021.04.23 보유쿠폰이 없을때 적용
+							var custCpnCnt 		= parseInt($("#orderForm input[name=custCpnCnt]").val());
+							var custDelvCpnCnt 	= parseInt($("#orderForm input[name=custDelvCpnCnt]").val());
+							if ((custCpnCnt + custDelvCpnCnt) < 1) {
+								mcxDialog.alert("적용 가능한 쿠폰이 없습니다.");
+								return false;
+							}
+							
 							if ($(this).is(":checked")) {
+								// 2021.04.23 
+								mcxDialog.alert("선택한 쿠폰이 아닌 보유한 쿠폰을 통해 최대할인 혜택을 받을 수 있도록 쿠폰이 자동 적용됩니다.");
+								
 								// 상품&장바구니쿠폰 초기환
 								custGoodsCpnInit();
 								
@@ -1241,6 +1252,13 @@ var dcAmtInfoSet = function() {
 				
 				// 쿠폰변경팝업호출
 				$("#btn_couponModify_pop").on("click", function(){
+					// 2021.04.23 보유쿠폰이 없을때 적용
+					var custCpnCnt = parseInt($("#orderForm input[name=custCpnCnt]").val());
+					if (custCpnCnt < 1) {
+						mcxDialog.alert("적용 가능한 쿠폰이 없습니다.");
+						return false;
+					}
+					
 					// 쿠폰초기화
 					custGoodsCpnInit();
 					
@@ -1258,14 +1276,30 @@ var dcAmtInfoSet = function() {
 					rmPntAmt				= rmPntAmt - freegiftUsePnt;
 					
 					if (gagajf.isNull($("#orderForm input[name=pntDcAmtStr]").val())) {
-						mcxDialog.alert("사용할 포인트를 입력해주세요.");
+						mcxDialog.alert("포인트를 입력하신 후 다시 시도해주세요.");
 						$('#orderForm input[name=pntDcAmtStr]').focus();
 						return false;
 					}
 					
 					// 입력여부체크
 					if (pntDcAmt < 1) {
-						mcxDialog.alert("사용할 포인트를 입력해주세요");
+						mcxDialog.alert("포인트를 입력하신 후 다시 시도해주세요.");
+						// 포인트리셋기능
+						pntDcAmtReset();
+						return false;
+					}
+					
+					// 10원단위부터 입력가능
+					if (pntDcAmt % 10 > 0) {
+						mcxDialog.alert("포인트는 10P단위로 사용이 가능합니다.");
+						// 포인트리셋기능
+						pntDcAmtReset();
+						return false;
+					}
+					
+					// 결제금액을 초과 할 수 없습니다.
+					if (pntDcamt > realOrdAmt) {
+						mcxDialog.alert("포인트를 입력하신 후 다시 시도해주세요.");
 						// 포인트리셋기능
 						pntDcAmtReset();
 						return false;
@@ -1273,7 +1307,7 @@ var dcAmtInfoSet = function() {
 					
 					// 보유포인트보다 초과 사용 불가
 					if (pntDcAmt > rmPntAmt) {
-						mcxDialog.alert("보유포인트 보다 초과 사용 할 수 없습니다.");
+						mcxDialog.alert("입력하신 포인트가 보유한 포인트보다 많습니다.");
 						// 포인트리셋기능
 						pntDcAmtReset();
 						return false;
@@ -1295,6 +1329,9 @@ var dcAmtInfoSet = function() {
 						return false;
 					}
 					
+					// 2021.04.23 추가
+					mcxDialog.alert("총 " + getZeroMinusDelAmt(pntDcAmt) + " P를 차감 결제 합니다.”");
+					
 					// 포인트 적용
 					$("#orderAmtForm .pntDcSumAmt").text(pntDcAmt);
 					$("#pntDcAmt").text(getZeroMinusDelAmt(pntDcAmt)+" 원");
@@ -1307,16 +1344,33 @@ var dcAmtInfoSet = function() {
 				$("#btn_gfcd_apply").on("click", function(){
 					var rmGfcdAmt 		= parseInt($("#orderForm input[name='rmGfcdAmt']").val());
 					var gfcdUseAmt 		= parseInt(uncomma($("#orderForm input[name='gfcdUseAmtStr']").val()));
+					var realOrdAmt 		= parseInt($("#orderAmtForm .realOrdSumAmt").text());
 					
 					if (gagajf.isNull($("#orderForm input[name=gfcdUseAmtStr]").val())) {
-						mcxDialog.alert("사용할 금액을 입력해주세요.");
+						mcxDialog.alert("금액을 입력하신 후 다시 시도해주세요.");
 						$('#orderForm input[name=gfcdUseAmtStr]').focus();
 						return false;
 					}
 					
 					// 입력여부체크
 					if (gfcdUseAmt < 1 || $("#orderForm input[name='gfcdUseAmtStr']").val() == "") {
-						mcxDialog.alert("사용할 금액을 입력해주세요");
+						mcxDialog.alert("금액을 입력하신 후 다시 시도해주세요.");
+						// 상품권리셋기능
+						gfcdUseAmtReset();
+						return false;
+					}
+					
+					// 결제금액을 초과 할 수 없습니다.
+					if (gfcdUseAmt > realOrdAmt) {
+						mcxDialog.alert("입력하신 금액이 결제할 금액보다 많습니다.");
+						// 포인트리셋기능
+						gfcdUseAmtReset();
+						return false;
+					}
+					
+					// 보유금액보다 초과 사용 불가
+					if (gfcdUseAmt > rmGfcdAmt) {
+						mcxDialog.alert("보유금액 보다 초과 사용 할 수 없습니다.");
 						// 상품권리셋기능
 						gfcdUseAmtReset();
 						return false;
@@ -1339,9 +1393,12 @@ var dcAmtInfoSet = function() {
 						return false;
 					}
 					
+					// 2021.04.23 추가
+					mcxDialog.alert("총 " + gfcdUseAmt.addComma() + " 원를 상품권 금액에서 차감 결제 합니다.”");
+					
 					// 상품권 적용
 					$("#orderAmtForm .gfcdUseSumAmt").text(gfcdUseAmt);
-					$("#gfcdUseAmt").text("-"+gfcdUseAmt.addComma()+" 원");
+					$("#gfcdUseAmt").text(getZeroMinusDelAmt(gfcdUseAmt)+" 원");
 					
 					// 금액전체계산
 					custCpnSumAmtCal();

+ 9 - 2
src/main/webapp/WEB-INF/views/web/popup/DelvAddrChangePopWeb.html

@@ -41,6 +41,13 @@
 								</dl>
 								<button class="btn btn_default btn_sm btn_addrModify_pop" id="btn_adrsModify_pop" th:value="${deliveryAddr.custDelvAddrSq}"><span>수정</span></button>
 								<button class="btn btn_dark btn_sm btn_sel_delvAddr" id="" th:value="${deliveryAddr.custDelvAddrSq}"><span>선택</span></button>
+								
+								<input type="hidden" name="recipNm" 		th:value="${deliveryAddr.recipNm}"/>
+								<input type="hidden" name="recipPhnno" 		th:value="${deliveryAddr.recipPhnno}"/>
+								<input type="hidden" name="recipZipcode" 	th:value="${deliveryAddr.recipZipcode}"/>
+								<input type="hidden" name="recipBaseAddr" 	th:value="${deliveryAddr.recipBaseAddr}"/>
+								<input type="hidden" name="recipDtlAddr" 	th:value="${deliveryAddr.recipDtlAddr}"/>
+								<input type="hidden" name="delvMemo" 		th:value="${deliveryAddr.delvMemo}"/>
 							</div>
 						</li>
 					</th:block>
@@ -82,7 +89,7 @@ $(document).ready( function() {
 
 // 2. 버튼기능구현
 // 2.1 배송지선택버튼
-$(".btn_sel_delvAddr").on("click", function(){
+$("#delvAddrChangeForm .btn_sel_delvAddr").on("click", function(){
 	
 	// custDelvAddrSq 부모창으로 전달
 	var delvObj = {
@@ -104,7 +111,7 @@ $(".btn_sel_delvAddr").on("click", function(){
 });
 
 // 2.2 배송지수정버튼
-$(".btn_addrModify_pop").on("click", function(){
+$("#delvAddrChangeForm .btn_addrModify_pop").on("click", function(){
 		
 	var obj = {
 		"custDelvAddrSq" : $(this).attr("value")

+ 9 - 6
src/main/webapp/ux/pc/js/common-ui.js

@@ -311,9 +311,9 @@ $(document).ready( function() {
 	});
 
 	//통합검색 - 레이어 열고닫기
-	$(document).on('click','.common_header .search .promotion_search, .common_header .search .btn_open_search',function(e){
-		$('body').addClass('lock');
-		$("#header .common_search").addClass('active'); 
+	//210420_수정 : 검색창 호출 스크립트 수정.
+	$(document).on('click','.common_header.main_header .search .promotion_search, .common_header.main_header .search .btn_open_search',function(e){
+		location.href='sch_result.html';
 		return false;
 	}).on('click','.common_search .btn_close_search',function(e){
 		$("#header .common_search").removeClass('active'); 
@@ -540,7 +540,7 @@ $(document).ready( function() {
 $(document).ready( function() {
 
 	//팝업 - 상품썸네일 크게보기
-	$(document).on('click','.pd_detail .area_pic .thumb_list_wrap ul li',function(e){
+	$(document).on('click','.pd_detail .area_pic .thumb_list_wrap ul li a',function(e){
 		$('body').addClass('lock');
 		$("#pdItemThumbPop .full_pop_container").empty();
 		var thumbIndex = $(this).index() + 1;
@@ -663,7 +663,7 @@ $(document).ready( function() {
 		$(this).parent('.swiper-slide').addClass('on');
 		targetThumb.siblings('li').removeClass('on');
 		targetThumb.addClass('on');
-		$('html,body').animate({scrollTop : topThumb}, 500);
+		$('html,body').animate({scrollTop : topThumb}, 100);
 		return false;
 	});
 
@@ -671,7 +671,10 @@ $(document).ready( function() {
 	/* 상품상세 > 상품문의 _accordion */
 	$(document).on('click','.pd_qnalist .foldGroup .fold_head',function(e){
 		if($(this).parent().hasClass('secret_qna')){
-			alert('비밀글은 열람하실 수 없습니다.');
+			//210420_수정 : dialog alert 변경.
+			mcxDialog.alert("비밀글은 열람하실 수 없습니다.", {
+				sureBtnText: "확인",
+			});
 		}else {
 			$(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
 			$(this).toggleClass('on');