이호영 이호영 2025-08-18
Merge branch '5102_친구톡_발송속도_개선'
@a8d0e123d44e100e5fa7cb2fa76fd0604e58c052
src/main/java/itn/com/cmm/util/MJUtil.java
--- src/main/java/itn/com/cmm/util/MJUtil.java
+++ src/main/java/itn/com/cmm/util/MJUtil.java
@@ -318,4 +318,17 @@
 		return dupliBlockList;
     }
 
+    /**
+	 * 사업자등록번호 대시('-') 추가
+	 * 대시 유무 상관없음
+	 * 유효성 맞지 않을시 변환안됨.
+     */
+    public static String bizNoAddDash(String str) {
+    	if(str == null) {
+    		return str;
+    	}
+    	String regExp = "(\\d{3})(\\d{2})(\\d{5})$";
+    	String chgf = "$1-$2-$3";
+    	return str.replaceFirst(regExp, chgf);
+    }
 }
src/main/java/itn/let/mjo/event/service/MjonEventVO.java
--- src/main/java/itn/let/mjo/event/service/MjonEventVO.java
+++ src/main/java/itn/let/mjo/event/service/MjonEventVO.java
@@ -38,5 +38,5 @@
 	private String point;				//사용자 포인트 정보
 	private String userId;				//사용자 아이디
 	private String frstRegisterId;		//등록자 아이디
-
+	
 }
src/main/java/itn/let/mjo/pay/service/MjonPayService.java
--- src/main/java/itn/let/mjo/pay/service/MjonPayService.java
+++ src/main/java/itn/let/mjo/pay/service/MjonPayService.java
@@ -1,8 +1,11 @@
 package itn.let.mjo.pay.service;
 
 import java.util.List;
+import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
+
+import itn.let.mjo.msg.service.MjonMsgVO;
 
 public interface MjonPayService {
 
@@ -140,4 +143,11 @@
 	//누적 납부금액 조회 (후불회원이 사용금액을 실 납부한 금액 합산 - 미납 금액 제외한 총 합산 금액)
 	public String selectTotSumPaymentAfterPay(String userId) throws Exception;
 
+	Map<String, Object> payUserSWList(MjonPayVO mjonPayVO) throws Exception;
+	
+	Map<String, Object> payUserSWListAjax(MjonMsgVO mjonMsgVO) throws Exception;
+	
+	//거래명세서 상세 조회
+	MjonPayVO selectPayDetail(MjonPayVO mjonPayVO)  throws Exception;
+
 }
src/main/java/itn/let/mjo/pay/service/MjonPayVO.java
--- src/main/java/itn/let/mjo/pay/service/MjonPayVO.java
+++ src/main/java/itn/let/mjo/pay/service/MjonPayVO.java
@@ -241,5 +241,11 @@
 	
 	private String totChgPay;			// 간편결제분류
 	
+	// 거래명세서 내용
+	private String bizNo;				// 사업자등록번호
+	private String managerNm;			// 담당자명
+	private String prePaymentYn;		// 선불결제여부 N:후불제고객
+	private String dept;				// 회원종류 p:개인 c:기업
+	
 	
 }
src/main/java/itn/let/mjo/pay/service/impl/MjonPayDAO.java
--- src/main/java/itn/let/mjo/pay/service/impl/MjonPayDAO.java
+++ src/main/java/itn/let/mjo/pay/service/impl/MjonPayDAO.java
@@ -358,5 +358,8 @@
 		return result;
 		
 	}
-	
+
+	public MjonPayVO selectPayDetail(MjonPayVO mjonPayVO) throws Exception{
+		return (MjonPayVO)select("mjonPayDAO.selectPayDetail", mjonPayVO);
+	}
 }
src/main/java/itn/let/mjo/pay/service/impl/MjonPayServiceImpl.java
--- src/main/java/itn/let/mjo/pay/service/impl/MjonPayServiceImpl.java
+++ src/main/java/itn/let/mjo/pay/service/impl/MjonPayServiceImpl.java
@@ -7,11 +7,16 @@
 import java.net.URL;
 import java.net.URLEncoder;
 import java.security.MessageDigest;
+import java.sql.Timestamp;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
@@ -25,11 +30,15 @@
 import egovframework.rte.fdl.idgnr.EgovIdGnrService;
 import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
 import itn.com.cmm.LoginVO;
+import itn.com.cmm.util.DateUtils;
 import itn.com.cmm.util.MJUtil;
+import itn.com.cmm.util.PayUtils;
 import itn.com.utl.fcc.service.EgovStringUtil;
 import itn.let.mjo.event.service.MjonEventVO;
 import itn.let.mjo.event.service.impl.MjonEventDAO;
 import itn.let.mjo.msg.service.MjonMsgVO;
+import itn.let.mjo.msgcampain.service.MjonCandidateVO;
+import itn.let.mjo.msgcampain.service.impl.MjonCandidateDAO;
 import itn.let.mjo.msgdata.service.MjonMsgDataService;
 import itn.let.mjo.msgdata.service.impl.MjonMsgDataDAO;
 import itn.let.mjo.pay.service.MjonPayService;
@@ -93,6 +102,10 @@
 	/* 등급제 */
 	@Resource(name = "mberGrdService")
 	MberGrdService mberGrdService;
+	
+	@Resource(name="mjonCandidateDAO")
+	private MjonCandidateDAO mjonCandidateDAO;
+	
 	
 	@Override
 	public List<MjonPayVO> selectPayList(MjonPayVO mjonPayVO) throws Exception {
@@ -2839,6 +2852,144 @@
 		
 	}
 
-
+	@Override
+	public Map<String, Object> payUserSWList(MjonPayVO mjonPayVO) throws Exception{
+		
+		
+		String userId = mjonPayVO.getUserId();
 	
+		// 총 사용금액
+		List<MjonPayVO>  usedCashTotList = mjonPayDAO.selectUsedCashWithKakaoTotCnt(mjonPayVO);	
+		
+		// 사용가능한 금액
+		// mberManageVO.prePaymentYn 선불 후불 회원 구분으로 인해 select함
+		MberManageVO mberManageVO = mjonMsgDataDAO.selectMberManageInfo(userId);
+	// 선거 후보자 정보 조회
+		MjonCandidateVO mjonCandidateVO = new MjonCandidateVO();
+		if("p".equals(mberManageVO.getDept())) { //개인회원 선거 후보자 정보 불러오기
+			mjonCandidateVO = mjonCandidateDAO.selectCandidateDataInfo(userId);
+			if(mjonCandidateVO != null) {
+				mjonCandidateVO.setRegidentNo1(egovCryptoUtil.decrypt(mjonCandidateVO.getRegidentNo1()));
+				mjonCandidateVO.setRegidentNo2(egovCryptoUtil.decrypt(mjonCandidateVO.getRegidentNo2()));
+			}
+		}
+	
+	
+		/**
+		 * 후불제 회원 관련 사용 요금 내역 정보 조회하기
+		 * 20231228 우영두 추가
+		 * 누적사용금액, 누적 납부금액, 당월 납부 예상금액 정보 조회
+		 * 
+		 * */ 
+		//누적 사용금액 조회 (캐시 테이블에서 현재까지 사용된 금액 합산 - 캐시 테이블에서 "-"로 사용된 금액만 합산)
+		String totSumCashAfterPay = mjonPayDAO.selectTotalSumCashForAfterPay(userId);
+		
+		//누적 사용 포인트 조회 (포인트 테이블에서 현재까지 사용된 포인트 합산  - 회원 포인트 정보 업데이트시 사용되는 쿼리 이용)
+		String totSumPointAfterPay = mjonPayDAO.selectTotalSumPointForAfterPay(userId);
+		
+		//누적 납부금액 조회 (후불회원이 사용금액을 실 납부한 금액 합산 - 미납 금액 제외한 총 합산 금액)
+		String totSumPaymentAfterPay = mjonPayDAO.selectTotSumPaymentAfterPay(userId);
+		
+		//누적 납부 포인트 조회 ( 누적 납부금액 합산에 대한 2% 포인트 정보 계산)
+		float p_i_re_point = 0;
+		JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo();
+		if (sysJoinSetVO != null) {
+			p_i_re_point = sysJoinSetVO.getPointPer();
+		}
+		int paymentPointAfterPay = Math.round((Float.parseFloat(totSumPaymentAfterPay) * p_i_re_point / 100));
+		
+		//당월 납부 예상금액 (누적 사용금액 합산 - 누적 납부금액 합산 정보 계산)
+		float unPaymentAfterPay = Float.parseFloat(totSumCashAfterPay) - Float.parseFloat(totSumPaymentAfterPay);
+		
+		//당월 납부 예상 포인트 (당월 납부 예상 금액에 대한 2% 포인트 정보 계산)
+		int unPaymentPointAfterPay = Math.round((unPaymentAfterPay * p_i_re_point / 100));
+		
+		/*
+		 * 2024.02.06 후불제 회원 중 협의단가를 사용하는 회원은 포인트 적립이 되지 않아야함.
+		 * 후불제 협의 단가 여부 체크
+		 * 모든 협의 단가 금액을 합산하여 0보다 크면 협의단가 있음.
+		 * */
+		float shortPrice = mberManageVO.getShortPrice();
+		float longPrice = mberManageVO.getLongPrice();
+		float picturePrice = mberManageVO.getPicturePrice() + mberManageVO.getPicture2Price() + mberManageVO.getPicture3Price();
+		float kakaoAtPrice = mberManageVO.getKakaoAtPrice();
+		float kakaoFtPrice = mberManageVO.getKakaoFtPrice();
+		float totPrice = shortPrice + longPrice + picturePrice + kakaoAtPrice + kakaoFtPrice;
+		String negoPriceYn = "N";
+
+		if(totPrice > 0) {
+			negoPriceYn = "Y";
+		}
+			
+		
+		
+		Map<String, Object> returnData = new HashMap<>();
+		
+		
+		returnData.put("usedCashTotList", usedCashTotList);
+		returnData.put("mberManageVO", mberManageVO);
+		returnData.put("mjonCandidateVO", mjonCandidateVO);
+		returnData.put("totSumCashAfterPay", totSumCashAfterPay);
+		returnData.put("totSumPointAfterPay", totSumPointAfterPay);
+		returnData.put("totSumPaymentAfterPay", totSumPaymentAfterPay);
+		returnData.put("sumPaymentPointAfterPay", paymentPointAfterPay);
+		returnData.put("unPaymentAfterPay", unPaymentAfterPay);
+		returnData.put("unPaymentPointAfterPay", unPaymentPointAfterPay);
+		returnData.put("negoPriceYn", negoPriceYn);
+		// 초기 날짜 셋팅
+		returnData.put("startDate", DateUtils.getDateMonthsAgo(1));
+		returnData.put("endDate", DateUtils.getCurrentDate());
+		
+		
+		// TODO Auto-generated method stub
+		return returnData;
+	}
+
+	@Override
+	public Map<String, Object> payUserSWListAjax(MjonMsgVO mjonMsgVO) throws Exception{
+		
+		if("".equals(mjonMsgVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
+			mjonMsgVO.setSearchSortCnd("regDate");
+			mjonMsgVO.setSearchSortOrd("desc");
+		}
+		
+		Map<String, Object> returnData = new HashMap<>();
+		
+		// 검색 데이터가 없거나
+		// 시작일자가 종료일자보다 이후이거나
+		// 총 기간이 365일이 넘으면 현재일부터 365일 전 날짜를 넣어서 검색
+		if(!DateUtils.dateChkAndValueChk(mjonMsgVO.getStartDate(),mjonMsgVO.getEndDate(), 12 )) {
+
+			mjonMsgVO.setStartDate(DateUtils.getDateMonthsAgo(12));
+			mjonMsgVO.setEndDate(DateUtils.getCurrentDate());
+			
+		};
+		
+		
+		List<MjonMsgVO> payUserSWList =  mjonMsgDataDAO.selectPayUserSWList(mjonMsgVO);
+		returnData.put("payUserSWList", payUserSWList);
+		returnData.put("totCnt", payUserSWList.size()> 0 ? payUserSWList.get(0).getTotCnt() : 0);
+		returnData.put("totSuccSendPrice", payUserSWList.size() > 0 ? PayUtils.getTrimToFirstDecimal(payUserSWList.get(0).getTotSuccSendPrice())  : 0);
+		
+		return returnData;
+	}
+
+	@Override
+	public MjonPayVO selectPayDetail(MjonPayVO mjonPayVO) throws Exception {
+		
+		MjonPayVO result = mjonPayDAO.selectPayDetail(mjonPayVO);
+		/* 후불제 고객의 사용기한 조회(결제일의 전달 1일 ~ 말일) */
+		if("N".equals(result.getPrePaymentYn())) {
+			String regDateStr = result.getRegDate();
+			LocalDateTime regDate = Timestamp.valueOf(regDateStr).toLocalDateTime();
+			
+	        LocalDate lastMonth = regDate.toLocalDate().withDayOfMonth(1).minusMonths(1);
+	        LocalDate startDate = lastMonth.withDayOfMonth(1);
+	        LocalDate endDate = lastMonth.withDayOfMonth(lastMonth.lengthOfMonth());
+	        
+	        result.setStartDate(startDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+	        result.setEndDate(endDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+		}
+		return result;
+	}
 }
src/main/java/itn/let/mjo/pay/web/MjonPayController.java
--- src/main/java/itn/let/mjo/pay/web/MjonPayController.java
+++ src/main/java/itn/let/mjo/pay/web/MjonPayController.java
@@ -2603,15 +2603,16 @@
 	 * 2023.12.22 우영두 
 	 * @param mjonMsgVO
 	 * @param model
-	 * @return	"/web/member/pay/PayUserSWList.do"
+	 * @return	"/web/member/pay/payUserSWList.do"
 	 * @throws Exception
 	 */
-    @RequestMapping(value= {"/web/member/pay/PayUserSWList.do"})
-	public String PayUserSWList(@ModelAttribute("mjonMsgVO") MjonMsgVO mjonMsgVO,
+    @RequestMapping(value= {"/web/member/pay/payUserSWList.do"})
+	public String payUserSWList(@ModelAttribute("mjonMsgVO") MjonMsgVO mjonMsgVO,
 			MjonPayVO mjonPayVO,
 			MberManageVO mberManageVO, RedirectAttributes redirectAttributes,
 			HttpServletRequest request,
 			ModelMap model) throws Exception{
+    	
 		
 		/*LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();*/
 		LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
@@ -2621,117 +2622,26 @@
 			return "redirect:/web/user/login/login.do";
 		}    	
 		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
-		mjonMsgVO.setUserId(userId);
-	/*	
-		{ // 충전캐시
-			String sumPayMoney = mjonPayService.selectAgentSumPayMoney(userId); 
-			model.addAttribute("sumPayMoney", sumPayMoney);
-		}
+		mjonPayVO.setUserId(userId);
 		
-		{ // 충전포인트
-			String sumPoint = mjonPayService.selectSumPoint(userId); 
-			model.addAttribute("sumPoint", sumPoint);
-		}
-		*/
-				
-		{ // 총 사용금액
-			mjonPayVO.setUserId(userId);
-			List<MjonPayVO>  usedCashTotList = mjonPayService.selectUsedCashWithKakaoTotCnt(mjonPayVO);	
-			model.addAttribute("usedCashTotList", usedCashTotList);
-		}
-		{ // 사용가능한 금액
-			// mberManageVO.prePaymentYn 선불 후불 회원 구분으로 인해 select함
-			mberManageVO = mjonMsgDataService.selectMberManageInfo(userId);
-			model.addAttribute("mberManageVO", mberManageVO);
-		}
-		/*
-		{ // 발송건수
-			mjonMsgVO.setReserveYn("N");
-			List<MjonMsgVO>  sendTotList = mjonMsgService.selectWithKakaoSendTotCnt(mjonMsgVO);
-			model.addAttribute("sendTotList", sendTotList);
-		}
-		
-		{ // 예약건수
-			mjonMsgVO.setReserveYn("Y");
-			List<MjonMsgVO>  reservToList = mjonMsgService.selectWithKakaoSendTotCnt(mjonMsgVO);
-			model.addAttribute("reservToList", reservToList);
-		}
-		*/
-		{// 선거 후보자 정보 조회
-			MjonCandidateVO mjonCandidateVO = new MjonCandidateVO();
-			if("p".equals(mberManageVO.getDept())) { //개인회원 선거 후보자 정보 불러오기
-				mjonCandidateVO = mjonCandidateService.selectCandidateDataInfo(userId);
-				if(mjonCandidateVO != null) {
-					mjonCandidateVO.setRegidentNo1(egovCryptoUtil.decrypt(mjonCandidateVO.getRegidentNo1()));
-					mjonCandidateVO.setRegidentNo2(egovCryptoUtil.decrypt(mjonCandidateVO.getRegidentNo2()));
-				}
-			}
-			model.addAttribute("mjonCandidateVO", mjonCandidateVO);
-		}
-		
-		
-		{
-			/**
-			 * 후불제 회원 관련 사용 요금 내역 정보 조회하기
-			 * 20231228 우영두 추가
-			 * 누적사용금액, 누적 납부금액, 당월 납부 예상금액 정보 조회
-			 * 
-			 * */ 
-			
-			//누적 사용금액 조회 (캐시 테이블에서 현재까지 사용된 금액 합산 - 캐시 테이블에서 "-"로 사용된 금액만 합산)
-			String totSumCashAfterPay = mjonPayService.selectTotalSumCashForAfterPay(userId);
-			model.addAttribute("totSumCashAfterPay", totSumCashAfterPay);
-			
-			//누적 사용 포인트 조회 (포인트 테이블에서 현재까지 사용된 포인트 합산  - 회원 포인트 정보 업데이트시 사용되는 쿼리 이용)
-			String totSumPointAfterPay = mjonPayService.selectTotalSumPointForAfterPay(userId);
-			model.addAttribute("totSumPointAfterPay", totSumPointAfterPay);
-			
-			//누적 납부금액 조회 (후불회원이 사용금액을 실 납부한 금액 합산 - 미납 금액 제외한 총 합산 금액)
-			String totSumPaymentAfterPay = mjonPayService.selectTotSumPaymentAfterPay(userId);
-			model.addAttribute("totSumPaymentAfterPay", totSumPaymentAfterPay);
-			
-			//누적 납부 포인트 조회 ( 누적 납부금액 합산에 대한 2% 포인트 정보 계산)
-			float p_i_re_point = 0;
-			JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo();
-			if (sysJoinSetVO != null) {
-				p_i_re_point = sysJoinSetVO.getPointPer();
-			}
-			int paymentPointAfterPay = Math.round((Float.parseFloat(totSumPaymentAfterPay) * p_i_re_point / 100));
-			model.addAttribute("sumPaymentPointAfterPay", paymentPointAfterPay);
-			
-			//당월 납부 예상금액 (누적 사용금액 합산 - 누적 납부금액 합산 정보 계산)
-			
-			float unPaymentAfterPay = Float.parseFloat(totSumCashAfterPay) - Float.parseFloat(totSumPaymentAfterPay);
-			model.addAttribute("unPaymentAfterPay", unPaymentAfterPay);
-			
-			//당월 납부 예상 포인트 (당월 납부 예상 금액에 대한 2% 포인트 정보 계산)
-			int unPaymentPointAfterPay = Math.round((unPaymentAfterPay * p_i_re_point / 100));
-			model.addAttribute("unPaymentPointAfterPay", unPaymentPointAfterPay);
-			
-			/*
-			 * 2024.02.06 후불제 회원 중 협의단가를 사용하는 회원은 포인트 적립이 되지 않아야함.
-			 * 후불제 협의 단가 여부 체크
-			 * 모든 협의 단가 금액을 합산하여 0보다 크면 협의단가 있음.
-			 * */
-			float shortPrice = mberManageVO.getShortPrice();
-			float longPrice = mberManageVO.getLongPrice();
-			float picturePrice = mberManageVO.getPicturePrice() + mberManageVO.getPicture2Price() + mberManageVO.getPicture3Price();
-			float kakaoAtPrice = mberManageVO.getKakaoAtPrice();
-			float kakaoFtPrice = mberManageVO.getKakaoFtPrice();
-			float totPrice = shortPrice + longPrice + picturePrice + kakaoAtPrice + kakaoFtPrice;
-			String negoPriceYn = "N";
 
-			if(totPrice > 0) {
-				negoPriceYn = "Y";
-			}
-			model.addAttribute("negoPriceYn", negoPriceYn);
-			
-		}
-		{
-			// 초기 날짜 셋팅
-			model.addAttribute("startDate", DateUtils.getDateMonthsAgo(12));
-			model.addAttribute("endDate", DateUtils.getCurrentDate());
-		}
+//		// 비즈니스 로직 부분
+		Map<String, Object> resultMap = mjonPayService.payUserSWList(mjonPayVO);
+		
+		
+		model.addAttribute("usedCashTotList", resultMap.get("usedCashTotList"));
+		model.addAttribute("mjonCandidateVO", resultMap.get("mjonCandidateVO"));
+		model.addAttribute("mberManageVO", resultMap.get("mberManageVO"));
+		model.addAttribute("totSumCashAfterPay", resultMap.get("totSumCashAfterPay"));
+		model.addAttribute("totSumPointAfterPay", resultMap.get("totSumPointAfterPay"));
+		model.addAttribute("totSumPaymentAfterPay", resultMap.get("totSumPaymentAfterPay"));
+		model.addAttribute("sumPaymentPointAfterPay", resultMap.get("sumPaymentPointAfterPay"));
+		model.addAttribute("unPaymentAfterPay", resultMap.get("unPaymentAfterPay"));
+		model.addAttribute("unPaymentPointAfterPay", resultMap.get("unPaymentPointAfterPay"));
+		model.addAttribute("negoPriceYn", resultMap.get("negoPriceYn"));
+		model.addAttribute("startDate", resultMap.get("startDate"));
+		model.addAttribute("endDate", resultMap.get("endDate"));
+		
 		
 		return "/web/pay/PayUserSWList";
 	}
@@ -2749,8 +2659,8 @@
 	 * @return	"/web/member/pay/PayUserSWListAjax.do"
 	 * @throws Exception
 	 */
-    @RequestMapping(value= {"/web/member/pay/PayUserSWListAjax.do"})
-	public String PayUserSWListAjax(@ModelAttribute("searchVO") MjonMsgVO mjonMsgVO,
+    @RequestMapping(value= {"/web/member/pay/payUserSWListAjax.do"})
+	public String payUserSWListAjax(@ModelAttribute("searchVO") MjonMsgVO mjonMsgVO,
 			HttpServletRequest request,
 			ModelMap model) throws Exception{
 		
@@ -2774,29 +2684,12 @@
 			mjonMsgVO.setLastIndex(paginationInfo.getLastRecordIndex());
 			mjonMsgVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); 
 			
-			if("".equals(mjonMsgVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
-				mjonMsgVO.setSearchSortCnd("regDate");
-				mjonMsgVO.setSearchSortOrd("desc");
-			}
+			Map<String, Object> resultMap = mjonPayService.payUserSWListAjax(mjonMsgVO);
 			
-			// 검색 데이터가 없거나
-			// 시작일자가 종료일자보다 이후이거나
-			// 총 기간이 365일이 넘으면 현재일부터 365일 전 날짜를 넣어서 검색
-			if(!DateUtils.dateChkAndValueChk(mjonMsgVO.getStartDate(),mjonMsgVO.getEndDate(), 12 )) {
-
-				mjonMsgVO.setStartDate(DateUtils.getDateMonthsAgo(12));
-				mjonMsgVO.setEndDate(DateUtils.getCurrentDate());
-				
-			};
-			
-			List<MjonMsgVO> payUserSWList =  mjonMsgDataService.selectPayUserSWList(mjonMsgVO);
-			
-			paginationInfo.setTotalRecordCount(payUserSWList.size()> 0 ? payUserSWList.get(0).getTotCnt() : 0);
+			paginationInfo.setTotalRecordCount((int)resultMap.get("totCnt"));
 			model.addAttribute("paginationInfo", paginationInfo);
-			model.addAttribute("payUserSWList", payUserSWList);
-
-			model.addAttribute("totSuccSendPrice", payUserSWList.size() > 0 ? PayUtils.getTrimToFirstDecimal(payUserSWList.get(0).getTotSuccSendPrice())  : 0);
-			
+			model.addAttribute("payUserSWList", resultMap.get("payUserSWList"));
+			model.addAttribute("totSuccSendPrice", resultMap.get("totSuccSendPrice"));
 			model.addAttribute("mjonMsgVO", mjonMsgVO);
 			
 			
@@ -2878,7 +2771,7 @@
 		font.setBoldweight(Font.BOLDWEIGHT_BOLD);  //글씨 bold
 		
 		sheet.setColumnWidth(1, 5000); // 칼럼의 폭 조절
-		sheet.setColumnWidth(4, 10000); // 칼럼의 폭 조절
+		sheet.setColumnWidth(3, 10000); // 칼럼의 폭 조절
 
 		try{ 
 			
@@ -2903,6 +2796,7 @@
   				sheet.addMergedRegion(new CellRangeAddress(0,1,1,1)); //셀병합
   				sheet.addMergedRegion(new CellRangeAddress(0,1,2,2)); //셀병합
   				sheet.addMergedRegion(new CellRangeAddress(0,1,3,3)); //셀병합
+  				sheet.addMergedRegion(new CellRangeAddress(0,1,6,6)); //셀병합
   				
   				
   				cell = row.createCell(0);
@@ -2910,45 +2804,28 @@
 				cell.setCellStyle(style);
 				
 				cell = row.createCell(1);
-				cell.setCellValue("날짜");
+				cell.setCellValue("발송일시");
 				cell.setCellStyle(style);
 				
 				cell = row.createCell(2);
-				cell.setCellValue("문자유형");
+				cell.setCellValue("형태");
 				cell.setCellStyle(style);
 				
 				cell = row.createCell(3);
-				cell.setCellValue("발송건수");
-				cell.setCellStyle(style);
-				
-				cell = row.createCell(4);
 				cell.setCellValue("내용");
 				cell.setCellStyle(style);
 				
-				/*cell = row.createCell(5);
-				cell.setCellValue("충전");
-				sheet.addMergedRegion(new CellRangeAddress(0,0,5,6)); //셀병합
+				cell = row.createCell(4);
+				cell.setCellValue("발송건수");
+				sheet.addMergedRegion(new CellRangeAddress(0,0,4,5)); //셀병합
 				cell.setCellStyle(style);
-				
-				cell = row.createCell(6);
-				cell.setCellStyle(style);*/
-				
+
 				cell = row.createCell(5);
-				cell.setCellValue("사용");
-				sheet.addMergedRegion(new CellRangeAddress(0,0,5,6)); //셀병합
 				cell.setCellStyle(style);
 				
 				cell = row.createCell(6);
+				cell.setCellValue("금액(원)");
 				cell.setCellStyle(style);
-				
-				
-				/*cell = row.createCell(9);
-				cell.setCellValue("잔액");
-				sheet.addMergedRegion(new CellRangeAddress(0,0,9,10)); //셀병합
-				cell.setCellStyle(style);
-				
-				cell = row.createCell(10);
-				cell.setCellStyle(style);*/
 				
 				row = sheet.createRow(1);
 				
@@ -2965,31 +2842,15 @@
 				cell.setCellStyle(style);
 				
 				cell = row.createCell(4);
+				cell.setCellValue("성공");
 				cell.setCellStyle(style);
-				
-				/*cell = row.createCell(5);
-				cell.setCellValue("충전금");
-				cell.setCellStyle(style);
-				
-				cell = row.createCell(6);
-				cell.setCellValue("포인트");
-				cell.setCellStyle(style);*/
 				
 				cell = row.createCell(5);
-				cell.setCellValue("충전금");
+				cell.setCellValue("실패");
 				cell.setCellStyle(style);
 				
 				cell = row.createCell(6);
-				cell.setCellValue("포인트");
 				cell.setCellStyle(style);
-				
-				/*cell = row.createCell(9);
-				cell.setCellValue("충전금");
-				cell.setCellStyle(style);
-				
-				cell = row.createCell(10);
-				cell.setCellValue("포인트");
-				cell.setCellStyle(style);*/
 				
 				DecimalFormat formatter = new DecimalFormat("###,###.##");
 				String befCash = "";
@@ -3033,15 +2894,11 @@
 						if(j==0) cell.setCellValue(i+1); //번호
 						if(j==1) cell.setCellValue(((MjonMsgVO)payUserList.get(i)).getRegDate()); 		//결제일시
 						if(j==2) cell.setCellValue(msgType); 											//문자유형
-						if(j==3) cell.setCellValue(((MjonMsgVO)payUserList.get(i)).getSuccSendCnt()); 	//발송건수
-						if(j==4) cell.setCellValue(((MjonMsgVO)payUserList.get(i)).getSmsTxt()); 		//내용
-						if(j==5) cell.setCellValue(((MjonMsgVO)payUserList.get(i)).getSuccSendPrice()); 		//충전 - 충전금
-						if(j==6) cell.setCellValue(0); 		//충전 - 포인트
-						/*if(j==7) cell.setCellValue(totPrice); 		//사용 - 충전금
-						if(j==8) cell.setCellValue(0);													//사용 - 포인트
-						if(j==9) cell.setCellValue(thisPoint); 	//잔액 - 충전금
-						if(j==10) cell.setCellValue(befPoint); 	//잔액 - 포인트
-*/  					}
+						if(j==3) cell.setCellValue(((MjonMsgVO)payUserList.get(i)).getSmsTxt()); 		//내용
+						if(j==4) cell.setCellValue(((MjonMsgVO)payUserList.get(i)).getSuccSendCnt()); 	//성공건수
+						if(j==5) cell.setCellValue(((MjonMsgVO)payUserList.get(i)).getFailSendCnt()); 	//실패건수
+						if(j==6) cell.setCellValue(((MjonMsgVO)payUserList.get(i)).getSuccSendPrice()); //금액
+  					}
 				}
 			}
 			response.setHeader("Set-Cookie", "fileDownload=true; path=/");
@@ -5051,28 +4908,11 @@
     	model.addAttribute("resultList", payUserSumList);
     	
     	// 수신자 정보
-	    String mberNm = "";			// 회사명
-	    String managerNm = "";		// 담당자명
-	    String moblphonNo = "";		// 연락처
-    	MberManageVO mberManageVO = new MberManageVO();
-		mberManageVO = mjonMsgDataService.selectMberManageInfo(userId);
-		if (mberManageVO != null) {
-			// 회원종류 p-개인 c-기업
-			if (mberManageVO.getDept().equals("c")) {
-			    mberNm = mberManageVO.getMberNm();
-			    managerNm = mberManageVO.getManagerNm();
-			    moblphonNo = mberManageVO.getMoblphonNo();
-			}
-			else {
-			    mberNm = mberManageVO.getMberNm();
-			    managerNm = mberManageVO.getMberNm();
-			    moblphonNo = mberManageVO.getMoblphonNo();
-			}
-		}
-		
-		model.addAttribute("mberNm", mberNm);
-		model.addAttribute("managerNm", managerNm);
-		model.addAttribute("moblphonNo", moblphonNo);
+    	MJUtil mjUtil = new MJUtil();
+    	MberManageVO mberManageVO = mjonMsgDataService.selectMberManageInfo(userId);
+    	mberManageVO.setMoblphonNo(mjUtil.addDash(mberManageVO.getMoblphonNo()));
+    	mberManageVO.setBizNo(mjUtil.bizNoAddDash(mberManageVO.getBizNo()));
+		model.addAttribute("mberManageVO", mberManageVO);
 		
 		//부가세 포함 가격 정보 계산
 		double addTax = Math.round(totalSumPrice * 0.1);
@@ -6190,7 +6030,42 @@
 		
 		return "/uss/ion/pay/cashPointSendList";
     }
-    
+
+    /**
+     * * 거래명세서 팝업
+     * @param searchVO
+     * @param model
+     * @return	"/web/member/pay/payInvoicePopupAjax.do"
+     * @throws Exception
+     */
+	@RequestMapping(value= {"/web/member/pay/payInvoicePopupAjax.do"})
+	public String printInvoiceAjax(
+			@ModelAttribute("searchVO") MjonPayVO mjonPayVO
+			, RedirectAttributes redirectAttributes
+			, ModelMap model) throws Exception {
+		
+		
+		
+		//로그인 권한정보 불러오기
+		LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
+		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+		
+		if(loginVO == null) {
+			//redirectAttributes.addFlashAttribute("message", "문자온 서비스는 로그인 후 이용 가능합니다.");
+			return "redirect:/web/user/login/login.do";
+		}
+		
+		mjonPayVO.setUserId(userId);
+		
+		//결제 정보 불러오기
+		MJUtil mjUtil = new MJUtil();
+		MjonPayVO result = mjonPayService.selectPayDetail(mjonPayVO);
+		result.setMbtlNum(mjUtil.addDash(result.getMbtlNum()));
+		result.setBizNo(mjUtil.bizNoAddDash(result.getBizNo()));
+		model.addAttribute("result", result);
+
+		return "web/pay/payInvoicePrintPopup";
+	}
     /**
      * @param p_pattern
      * @param p_mjonPayVO
src/main/java/itn/let/mjo/pay/web/MjonPayV2Controller.java
--- src/main/java/itn/let/mjo/pay/web/MjonPayV2Controller.java
+++ src/main/java/itn/let/mjo/pay/web/MjonPayV2Controller.java
@@ -278,6 +278,8 @@
    		try {
    			// 다음 결제시 결제수단 SELECT
    			nextPayMethod = userManageService.selectNextPayMethod(userId);
+   			// 실제 마지막 결제 방식 - 
+   			
    		}
    		catch(Exception e) {
    			isSuccess = false;
@@ -1640,6 +1642,45 @@
     	return "web/cop/kgmV2/bankOkUrl";
 	}      
     
+ 	/**
+   	 * 마지막 결제수단 SELECT
+   	 * @throws Exception
+   	 */
+   	@RequestMapping(value = "/web/member/pay/selectLastPayMethodAjax.do")
+   	public ModelAndView selectLastPayMethodAjax(MjonPayVO mjonPayVO, 
+   			HttpServletRequest request ) throws Exception {
+   		
+   		ModelAndView modelAndView = new ModelAndView();
+   		modelAndView.setViewName("jsonView");
+   		
+   		boolean isSuccess = true;
+   		String msg = "";
+   		String nextPayMethod = "";
+   		
+   		LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+   		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+   		
+   		if(userId == null) {
+   			isSuccess = false;
+   			msg = "로그인이 필요합니다.";   			
+   		}
+   		
+   		try {
+   			// 다음 결제시 결제수단 SELECT
+   			nextPayMethod = userManageService.selectLastPayMethod(userId);
+   		}
+   		catch(Exception e) {
+   			isSuccess = false;
+   			msg = e.getMessage();
+   		}		
+   		
+   		modelAndView.addObject("isSuccess", isSuccess);
+   		modelAndView.addObject("msg", msg);
+   		modelAndView.addObject("nextPayMethod", nextPayMethod);
+   		
+   		return modelAndView;
+   	}
+   	
   	// Get Server Path
    	public static String getKgServerPath(HttpServletRequest request) {
 		String kgmPath = request.getScheme() + "://" + request.getServerName() +":" + request.getServerPort();
src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java
--- src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java
+++ src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java
@@ -1,5 +1,10 @@
 package itn.let.uat.uia.service.impl;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 import java.util.List;
 
 import javax.annotation.Resource;
@@ -11,14 +16,16 @@
 
 import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
 import egovframework.rte.fdl.idgnr.EgovIdGnrService;
+import itn.com.cmm.util.StringUtil;
 import itn.com.uss.olh.hpc.service.HackIpService;
 import itn.com.uss.olh.hpc.service.HackIpVO;
 import itn.com.utl.fcc.service.EgovStringUtil;
-import itn.let.mjo.cert.service.CertVO;
+import itn.let.mjo.msgdata.service.MjonMsgDataService;
 import itn.let.mjo.msgsent.service.MjonMsgSentVO;
 import itn.let.mjo.pay.service.KmcVO;
 import itn.let.sec.rgm.service.AuthorGroup;
 import itn.let.sec.rgm.service.EgovAuthorGroupService;
+import itn.let.sym.site.service.JoinSettingVO;
 import itn.let.uat.uia.service.AuthCertVO;
 import itn.let.uss.umt.service.AdmProcHstryVO;
 import itn.let.uss.umt.service.EgovMberManageService;
@@ -81,6 +88,10 @@
 	/*아이피 차단*/
 	@Resource(name = "hackIpService")
 	private HackIpService hackIpService;
+	
+	/* MjonMsgDataService */
+	@Resource(name = "MjonMsgDataService")
+    private MjonMsgDataService mjonMsgDataService;
 	
 	
 	@Override
@@ -621,4 +632,71 @@
 		return mberManageDAO.findTopByregDateFromCertLog(authCertVO);
 	}
 	
+	public MberManageVO selectMberHeaderInfo(String mberId) throws Exception {
+		//회원 단가, 이벤트 단가, 이벤트 종료일 등 조회
+		MberManageVO headerInfo = mberManageDAO.selectMberHeaderInfo(mberId);
+		//기본 단가 조회
+		JoinSettingVO sysPrice = mjonMsgDataService.selectJoinSettingInfo();
+	
+		//이벤트 종료까지 남은 일 수 계산
+		long  eventLeftDay = calculateEventLeftDay(headerInfo.getEventEndDate());
+		headerInfo.setEventLeftDay(String.valueOf(eventLeftDay));
+	
+		//이벤트 유무에 따라 이벤트 잔액 or 잔액 사용
+		boolean isEventActive = eventLeftDay > 0;
+		double money = isEventActive ? headerInfo.getEventRemainCash() : headerInfo.getUserMoney();
+	
+		//이벤트, 회원 단가가 0일 시 기본 단가 사용
+		setPrices(headerInfo, sysPrice, isEventActive);
+	
+		//발송가능 건수 조회
+		calculateAvailableCounts(headerInfo, money);
+	
+		return headerInfo;
+	}
+	
+	private long calculateEventLeftDay(String eventEndDateStr) {
+		if (StringUtil.isEmpty(eventEndDateStr)) return 0;
+		LocalDate today = LocalDate.now();
+		LocalDate eventEndDate = LocalDate.parse(eventEndDateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+		return ChronoUnit.DAYS.between(today, eventEndDate);
+	}
+	
+	private void setPrices(MberManageVO headerInfo, JoinSettingVO sysPrice, boolean isEventActive) {
+		if (isEventActive) {
+			headerInfo.setHeaderShortPrice(priceChk(headerInfo.getEventShortPrice(), sysPrice.getShortPrice()));
+			headerInfo.setHeaderLongPrice(priceChk(headerInfo.getEventLongPrice(), sysPrice.getLongPrice()));
+			headerInfo.setHeaderPicturePrice(priceChk(headerInfo.getEventPicturePrice(), sysPrice.getPicturePrice()));
+			headerInfo.setHeaderPicture2Price(priceChk(headerInfo.getEventPicture2Price(), sysPrice.getPicture2Price()));
+			headerInfo.setHeaderPicture3Price(priceChk(headerInfo.getEventPicture3Price(), sysPrice.getPicture3Price()));
+		} else {
+			headerInfo.setHeaderShortPrice(priceChk(headerInfo.getShortPrice(), sysPrice.getShortPrice()));
+			headerInfo.setHeaderLongPrice(priceChk(headerInfo.getLongPrice(), sysPrice.getLongPrice()));
+			headerInfo.setHeaderPicturePrice(priceChk(headerInfo.getPicturePrice(), sysPrice.getPicturePrice()));
+			headerInfo.setHeaderPicture2Price(priceChk(headerInfo.getPicture2Price(), sysPrice.getPicture2Price()));
+			headerInfo.setHeaderPicture3Price(priceChk(headerInfo.getPicture3Price(), sysPrice.getPicture3Price()));
+		}
+		// 카카오, 팩스 단가는 기본 단가 고정
+		headerInfo.setHeaderKakaoAtPrice(sysPrice.getKakaoAtPrice());
+		headerInfo.setHeaderFaxPrice(sysPrice.getFaxPrice());
+	}
+	
+	private float priceChk(float price, float sysPrice) {
+		return price > 0 ? price : sysPrice;
+	}
+	
+	private void calculateAvailableCounts(MberManageVO headerInfo, double money) {
+		headerInfo.setHeaderShortCnt(calcCount(money, headerInfo.getHeaderShortPrice()));
+		headerInfo.setHeaderLongCnt(calcCount(money, headerInfo.getHeaderLongPrice()));
+		headerInfo.setHeaderPictureCnt(calcCount(money, headerInfo.getHeaderPicturePrice()));
+		headerInfo.setHeaderPicture2Cnt(calcCount(money, headerInfo.getHeaderPicture2Price()));
+		headerInfo.setHeaderPicture3Cnt(calcCount(money, headerInfo.getHeaderPicture3Price()));
+		headerInfo.setHeaderKakaoAtCnt(calcCount(money, headerInfo.getHeaderKakaoAtPrice()));
+		headerInfo.setHeaderFaxCnt(calcCount(money, headerInfo.getHeaderFaxPrice()));
+	}
+	
+	private int calcCount(double money, double price) {
+		if (price <= 0) return 0;
+		return (int) Math.floor(money / price);
+	}
 }
(No newline at end of file)
src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java
--- src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java
+++ src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java
@@ -345,5 +345,8 @@
 	public String findTopByregDateFromCertLog(AuthCertVO authCertVO) {
 		return (String)select("mberManageDAO.findTopByregDateFromCertLog", authCertVO);
 	}
-	
+
+	public MberManageVO selectMberHeaderInfo(String mberId) {
+		return (MberManageVO) select("mberManageDAO.selectMberHeaderInfo", mberId);
+	}
 }
(No newline at end of file)
src/main/java/itn/let/uss/umt/service/EgovMberManageService.java
--- src/main/java/itn/let/uss/umt/service/EgovMberManageService.java
+++ src/main/java/itn/let/uss/umt/service/EgovMberManageService.java
@@ -251,4 +251,6 @@
 
 	public String findTopByregDateFromCertLog(AuthCertVO authCertVO);
 
+	//사용자 헤더 정보(단가, 이벤트 활성화 기간)
+	public MberManageVO selectMberHeaderInfo(String mberId) throws Exception;
 }
(No newline at end of file)
src/main/java/itn/let/uss/umt/service/EgovUserManageService.java
--- src/main/java/itn/let/uss/umt/service/EgovUserManageService.java
+++ src/main/java/itn/let/uss/umt/service/EgovUserManageService.java
@@ -220,4 +220,6 @@
 
 	public Map<String, Object> selectFaxSendList(FaxGroupDataVO faxGroupDataVO);	
     
+	// 마지막 결제수단 조회
+	public String selectLastPayMethod(String mberId) throws Exception;
 }
(No newline at end of file)
src/main/java/itn/let/uss/umt/service/MberManageVO.java
--- src/main/java/itn/let/uss/umt/service/MberManageVO.java
+++ src/main/java/itn/let/uss/umt/service/MberManageVO.java
@@ -512,6 +512,39 @@
 	 */
 	private String secuLoginFlag;
 	
+	
+	/**
+	 * 회원 이벤트 정보
+	 */
+	private String eventEndDate;		//회원 이벤트 종료일자
+	private double eventRemainCash;		//이벤트 차감 후 남은 Cash
+	private float eventShortPrice;		//이벤트 단문 가격
+	private float eventLongPrice;		//이벤트 장문 가격
+	private float eventPicturePrice;	//이벤트 그림 1장 가격
+	private float eventPicture2Price;	//이벤트 그림 2장 가격
+	private float eventPicture3Price;	//이벤트 그림 3장 가격
+	private String eventLeftDay;		//이벤트 남은 기간
+	
+	/**
+	 * 헤더 영역 정보(단가, 발송가능 건수)
+	 */
+	private float headerShortPrice;	
+	private float headerLongPrice;		
+	private float headerPicturePrice;	
+	private float headerPicture2Price;	
+	private float headerPicture3Price;
+	private float headerKakaoAtPrice;
+	private float headerKakaoFtPrice;
+	private float headerFaxPrice;
+	private int headerShortCnt;	
+	private int headerLongCnt;		
+	private int headerPictureCnt;	
+	private int headerPicture2Cnt;	
+	private int headerPicture3Cnt;	
+	private int headerKakaoAtCnt;	
+	private int headerKakaoFtCnt;	
+	private int headerFaxCnt;	
+	
 	public String getSmsCode() {
 		return smsCode;
 	}
@@ -1804,6 +1837,150 @@
 	public void setSecuLoginFlag(String secuLoginFlag) {
 		this.secuLoginFlag = secuLoginFlag;
 	}
+	public String getEventEndDate() {
+		return eventEndDate;
+	}
+	public void setEventEndDate(String eventEndDate) {
+		this.eventEndDate = eventEndDate;
+	}
+	public double getEventRemainCash() {
+		return eventRemainCash;
+	}
+	public void setEventRemainCash(double eventRemainCash) {
+		this.eventRemainCash = eventRemainCash;
+	}
+	public float getEventShortPrice() {
+		return eventShortPrice;
+	}
+	public void setEventShortPrice(float eventShortPrice) {
+		this.eventShortPrice = eventShortPrice;
+	}
+	public float getEventLongPrice() {
+		return eventLongPrice;
+	}
+	public void setEventLongPrice(float eventLongPrice) {
+		this.eventLongPrice = eventLongPrice;
+	}
+	public float getEventPicturePrice() {
+		return eventPicturePrice;
+	}
+	public void setEventPicturePrice(float eventPicturePrice) {
+		this.eventPicturePrice = eventPicturePrice;
+	}
+	public float getEventPicture2Price() {
+		return eventPicture2Price;
+	}
+	public void setEventPicture2Price(float eventPicture2Price) {
+		this.eventPicture2Price = eventPicture2Price;
+	}
+	public float getEventPicture3Price() {
+		return eventPicture3Price;
+	}
+	public void setEventPicture3Price(float eventPicture3Price) {
+		this.eventPicture3Price = eventPicture3Price;
+	}
+	public String getEventLeftDay() {
+		return eventLeftDay;
+	}
+	public void setEventLeftDay(String eventLeftDay) {
+		this.eventLeftDay = eventLeftDay;
+	}
+	public float getHeaderShortPrice() {
+		return headerShortPrice;
+	}
+	public void setHeaderShortPrice(float headerShortPrice) {
+		this.headerShortPrice = headerShortPrice;
+	}
+	public float getHeaderLongPrice() {
+		return headerLongPrice;
+	}
+	public void setHeaderLongPrice(float headerLongPrice) {
+		this.headerLongPrice = headerLongPrice;
+	}
+	public float getHeaderPicturePrice() {
+		return headerPicturePrice;
+	}
+	public void setHeaderPicturePrice(float headerPicturePrice) {
+		this.headerPicturePrice = headerPicturePrice;
+	}
+	public float getHeaderPicture2Price() {
+		return headerPicture2Price;
+	}
+	public void setHeaderPicture2Price(float headerPicture2Price) {
+		this.headerPicture2Price = headerPicture2Price;
+	}
+	public float getHeaderPicture3Price() {
+		return headerPicture3Price;
+	}
+	public void setHeaderPicture3Price(float headerPicture3Price) {
+		this.headerPicture3Price = headerPicture3Price;
+	}
+	public int getHeaderShortCnt() {
+		return headerShortCnt;
+	}
+	public void setHeaderShortCnt(int headerShortCnt) {
+		this.headerShortCnt = headerShortCnt;
+	}
+	public int getHeaderLongCnt() {
+		return headerLongCnt;
+	}
+	public void setHeaderLongCnt(int headerLongCnt) {
+		this.headerLongCnt = headerLongCnt;
+	}
+	public int getHeaderPictureCnt() {
+		return headerPictureCnt;
+	}
+	public void setHeaderPictureCnt(int headerPictureCnt) {
+		this.headerPictureCnt = headerPictureCnt;
+	}
+	public int getHeaderPicture2Cnt() {
+		return headerPicture2Cnt;
+	}
+	public void setHeaderPicture2Cnt(int headerPicture2Cnt) {
+		this.headerPicture2Cnt = headerPicture2Cnt;
+	}
+	public int getHeaderPicture3Cnt() {
+		return headerPicture3Cnt;
+	}
+	public void setHeaderPicture3Cnt(int headerPicture3Cnt) {
+		this.headerPicture3Cnt = headerPicture3Cnt;
+	}
+	public float getHeaderKakaoAtPrice() {
+		return headerKakaoAtPrice;
+	}
+	public void setHeaderKakaoAtPrice(float headerKakaoAtPrice) {
+		this.headerKakaoAtPrice = headerKakaoAtPrice;
+	}
+	public float getHeaderKakaoFtPrice() {
+		return headerKakaoFtPrice;
+	}
+	public void setHeaderKakaoFtPrice(float headerKakaoFtPrice) {
+		this.headerKakaoFtPrice = headerKakaoFtPrice;
+	}
+	public float getHeaderFaxPrice() {
+		return headerFaxPrice;
+	}
+	public void setHeaderFaxPrice(float headerFaxPrice) {
+		this.headerFaxPrice = headerFaxPrice;
+	}
+	public int getHeaderKakaoAtCnt() {
+		return headerKakaoAtCnt;
+	}
+	public void setHeaderKakaoAtCnt(int headerKakaoAtCnt) {
+		this.headerKakaoAtCnt = headerKakaoAtCnt;
+	}
+	public int getHeaderKakaoFtCnt() {
+		return headerKakaoFtCnt;
+	}
+	public void setHeaderKakaoFtCnt(int headerKakaoFtCnt) {
+		this.headerKakaoFtCnt = headerKakaoFtCnt;
+	}
+	public int getHeaderFaxCnt() {
+		return headerFaxCnt;
+	}
+	public void setHeaderFaxCnt(int headerFaxCnt) {
+		this.headerFaxCnt = headerFaxCnt;
+	}
 	
 	
 }
(No newline at end of file)
src/main/java/itn/let/uss/umt/service/impl/EgovUserManageServiceImpl.java
--- src/main/java/itn/let/uss/umt/service/impl/EgovUserManageServiceImpl.java
+++ src/main/java/itn/let/uss/umt/service/impl/EgovUserManageServiceImpl.java
@@ -882,5 +882,11 @@
 
 		return resultMap;
 	}
+	
+	// 마지막 결제수단 SELECT
+	@Override
+	public String selectLastPayMethod(String mberId) throws Exception {
+		return userManageDAO.selectLastPayMethod(mberId);
+	}
 
 }
(No newline at end of file)
src/main/java/itn/let/uss/umt/service/impl/UserManageDAO.java
--- src/main/java/itn/let/uss/umt/service/impl/UserManageDAO.java
+++ src/main/java/itn/let/uss/umt/service/impl/UserManageDAO.java
@@ -320,5 +320,9 @@
     public int selectUserPrePaymentPGdataCount(String userId) throws Exception{
     	return (int) select("userManageDAO.selectUserPrePaymentPGdataCount", userId);
     }
-    
+ 
+	// 마지막 결제수단 SELECT
+	public String selectLastPayMethod(String mberId) throws Exception{
+		return (String) select("userManageDAO.selectLastPayMethod", mberId);
+	}
 }
(No newline at end of file)
src/main/java/itn/web/MainController.java
--- src/main/java/itn/web/MainController.java
+++ src/main/java/itn/web/MainController.java
@@ -12,6 +12,9 @@
 import java.security.PublicKey;
 import java.security.spec.RSAPublicKeySpec;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -106,6 +109,7 @@
 import itn.let.mjo.addr.service.AddrTransHistService;
 import itn.let.mjo.addr.service.AddrTransHistVO;
 import itn.let.mjo.event.service.MjonEventService;
+import itn.let.mjo.event.service.MjonEventVO;
 import itn.let.mjo.kisa.service.KisaService;
 import itn.let.mjo.kisa.service.KisaVO;
 import itn.let.mjo.mjocommon.MjonForienIpChk;
@@ -130,6 +134,7 @@
 import itn.let.sym.prm.service.EgovProgrmManageService;
 import itn.let.sym.prm.service.ProgrmManageVO;
 import itn.let.sym.site.service.EgovSiteManagerService;
+import itn.let.sym.site.service.JoinSettingVO;
 import itn.let.sym.site.service.MetaTagVO;
 import itn.let.sym.site.service.SiteManagerVO;
 import itn.let.uss.umt.service.EgovMberManageService;
@@ -1256,6 +1261,16 @@
 			model.addAttribute("mberManageVO", userManageService.selectUserInfo(mberManageVO));
 		}
 		
+		/*
+		 * 회원별 단가, 기본 단가, 이벤트 정보 조회
+		 * 2025.07.25 이지우 추가
+		 * */
+			MberManageVO mberHeaderInfoVO = new MberManageVO();
+			if(loginVO != null) {
+				mberHeaderInfoVO = mberManageService.selectMberHeaderInfo(loginVO.getId());
+			}
+			model.addAttribute("mberHeaderInfoVO", mberHeaderInfoVO);
+			
 		return "web/com/webCommonHeader";
     }
     
src/main/resources/egovframework/sqlmap/let/mjo/addr/Addr_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/mjo/addr/Addr_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/mjo/addr/Addr_SQL_Mysql.xml
@@ -569,10 +569,8 @@
 			on A.ADDR_GRP_ID = mag.ADDR_GRP_ID 
 		WHERE
 			A.MBER_ID = #mberId#
-			AND (A.RECV_STATUS = 'Y'
-				or A.RECV_STATUS = 'S'
-				or A.RECV_STATUS is null)
-			AND mag.DELETE_YN = 'N'
+			AND (A.RECV_STATUS IN ('Y', 'S') OR A.RECV_STATUS IS NULL)
+			AND (A.ADDR_GRP_ID IS NULL OR MAG.DELETE_YN = 'N')
 	</select>
 	
 	<!-- 주소록 상세  조회 -->
@@ -1354,34 +1352,32 @@
 			, BOOKMARK
 			, RECV_STATUS
 		) 
-		SELECT 
-			ADDR_GRP_ID
-			, MBER_ID
-			, ADDR_NM
-			, ADDR_PHONE_NO
-			, ADDR_INFO1
-			, ADDR_INFO2
-			, ADDR_INFO3
-			, ADDR_INFO4
-			, ADDR_COMMENT
-			, FRST_REGIST_PNTTM
-			, FRST_REGISTER_ID
-			, LAST_UPDT_PNTTM
-			, LAST_UPDUSR_ID
-			, DELETE_YN
-			, BOOKMARK
-			, RECV_STATUS
-		FROM TEMP_MJ_ADDR
-		WHERE MBER_ID = #mberId#
-			AND ADDR_GRP_ID = #addrGrpId# 
-			AND BOOKMARK = #bookmark# 
-			AND ADDR_PHONE_NO NOT IN 
-			(
-				SELECT ADDR_PHONE_NO FROM MJ_ADDR 
-				WHERE MBER_ID = #mberId#
-					AND ADDR_GRP_ID = #addrGrpId# 
-					AND BOOKMARK = #bookmark# 
-			)  
+		SELECT t.ADDR_GRP_ID,
+		       t.MBER_ID,
+		       t.ADDR_NM,
+		       FN_GETHYPHEN(t.ADDR_PHONE_NO),
+		       t.ADDR_INFO1,
+		       t.ADDR_INFO2,
+		       t.ADDR_INFO3,
+		       t.ADDR_INFO4,
+		       t.ADDR_COMMENT,
+		       t.FRST_REGIST_PNTTM,
+		       t.FRST_REGISTER_ID,
+		       t.LAST_UPDT_PNTTM,
+		       t.LAST_UPDUSR_ID,
+		       t.DELETE_YN,
+		       t.BOOKMARK,
+		       t.RECV_STATUS
+		FROM TEMP_MJ_ADDR AS t
+		         LEFT JOIN MJ_ADDR AS m
+		                   ON m.MBER_ID = t.MBER_ID
+		                       AND m.ADDR_GRP_ID = t.ADDR_GRP_ID
+		                       AND m.BOOKMARK = t.BOOKMARK
+		                       AND replace(m.ADDR_PHONE_NO, '-', '') = replace(t.ADDR_PHONE_NO, '-', '')
+		WHERE t.MBER_ID =     #mberId#
+		  AND t.ADDR_GRP_ID = #addrGrpId#
+		  AND t.BOOKMARK =    #bookmark#
+		  AND m.MBER_ID IS NULL
 	</insert>	
 		
 	
src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
@@ -2184,6 +2184,8 @@
 			, BLINE_CODE			AS blineCode
 			, AT_SMISHING_YN		AS atSmishingYn
 			, PRE_PAYMENT_YN 		AS prePaymentYn
+			, BIZ_NO				AS bizNo
+			, MBER_EMAIL_ADRES		AS mberEmailAdres
 		FROM   LETTNGNRLMBER
 		WHERE  MBER_ID = #userId#
 	
@@ -3172,6 +3174,7 @@
 		WHERE 1 = 1
 			AND pf.SentEA > 0
 			AND mjf.USER_ID = #userId#
+			AND mjf.RESERVE_C_YN = 'N'
 			
 	) AS pay
 	WHERE 1=1
@@ -3281,7 +3284,7 @@
 			, M.fileName3		AS fileName3 
 			, M.orderByCode		AS orderByCode
 			, M.msgId			AS msgId
-			, M.reqDate			AS reqDate
+			, DATE_FORMAT(M.reqDate, '%Y-%m-%d %H:%i')			AS reqDate
 		FROM
 			(SELECT
 				 DATE_FORMAT(B.REGDATE, '%Y-%m-%d %H:%i' )	AS regDate
@@ -3322,7 +3325,7 @@
 				/*and A.DEL_FLAG = 'N'*/
 				AND A.USER_ID	= #userId#
 				AND B.USER_ID	= #userId#
-				/*AND B.RESERVE_C_YN = 'N'*/
+				AND B.RESERVE_C_YN = 'N'
 			ORDER BY 1=1
 				, msgGroupId DESC
 				, sentDate DESC
@@ -3370,6 +3373,7 @@
 		WHERE 1 = 1
 			AND pf.SentEA > 0
 			AND mjf.USER_ID = #userId#
+			AND mjf.RESERVE_C_YN = 'N'
 			
 	) AS pay
 	WHERE 1=1
@@ -3595,9 +3599,9 @@
 			, MIN(DATE_FORMAT(M.REQ_DATE, '%Y-%m-%d' )) AS minRegDate 
 			, M.msgTypeName
 			, M.orderByCode
-			, SUM(IF(M.msgTypeName = '단문(SMS)', 1, 0)) AS shtSendCount 
-	        , SUM(IF(M.msgTypeName = '장문(LMS)', 1, 0)) AS longSendCount
-	        , SUM(IF(M.msgTypeName = '그림(MMS)', 1, 0)) AS pictSendCount
+			, SUM(IF(M.msgTypeName = '단문', 1, 0)) AS shtSendCount 
+	        , SUM(IF(M.msgTypeName = '장문', 1, 0)) AS longSendCount
+	        , SUM(IF(M.msgTypeName = '그림', 1, 0)) AS pictSendCount
 	        , SUM(IF(M.msgTypeName = '알림톡', 1, 0)) AS atSendCount
 	        , SUM(IF(M.msgTypeName = '친구톡', 1, 0)) AS ftSendCount
 			<!-- , SUM(M.MSG_GROUP_CNT) AS sendCount -->
@@ -3616,14 +3620,14 @@
 				, B.MSG_TYPE
 				, CASE
 					WHEN B.MSG_TYPE = '6' AND B.FILE_CNT > 0
-					THEN '그림(MMS)'
+					THEN '그림'
 					WHEN B.MSG_TYPE = '6' AND B.FILE_CNT = 0
-					THEN '장문(LMS)'
+					THEN '장문'
 					WHEN B.MSG_TYPE = '8'
 					THEN '알림톡'
 					WHEN B.MSG_TYPE = '9'
 					THEN '친구톡'
-					ELSE '단문(SMS)'
+					ELSE '단문'
 				END msgTypeName	
 				, CASE
 					WHEN B.MSG_TYPE = '6' AND B.FILE_CNT > 0
src/main/resources/egovframework/sqlmap/let/pay/MjonPay_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/pay/MjonPay_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/pay/MjonPay_SQL_mysql.xml
@@ -101,6 +101,7 @@
 			, D.CODE_NM				AS  rcptTypeTxt
 			, E.CONFIRM_YN			AS confirmYn
 			, E.RCPT_TYPE			AS rcptType
+			, E.CONFIRM_DATE		AS confirmDate
 			, IFNULL(MP.POINT, '0')	AS point
 			, EMI.EVENT_PG_MOID     AS eventMoid
 			, mber.SMISHING_YN	AS smishingYn
@@ -149,6 +150,7 @@
 					MOID
 					, CONFIRM_YN
 					, RCPT_TYPE
+					, CONFIRM_DATE
 				FROM
 					MJ_TAX
 				WHERE 1=1
@@ -2373,4 +2375,27 @@
 	
 	</select>
 	
+	<select id="mjonPayDAO.selectPayDetail" parameterClass="mjonPayVO" resultClass="mjonPayVO">
+		
+		SELECT
+			LM.BIZ_NO				AS bizNo
+			, LM.MBER_NM			AS mberNm
+			, LM.MANAGER_NM			AS managerNm
+			, LM.MBTLNUM			AS mbtlNum
+			, LM.MBER_EMAIL_ADRES	AS email
+			, LM.PRE_PAYMENT_YN		AS prePaymentYn
+			, LM.DEPT				AS dept
+			, LM.USER_MONEY			AS userMoney
+			, MP.REG_DATE			AS regDate
+			, MP.AMT				AS amt
+			, MP.CASH				AS cash
+			, MP.PG_STATUS			AS pgStatus
+		FROM   LETTNGNRLMBER LM
+		LEFT JOIN MJ_PG MP
+		ON MP.USER_ID = LM.MBER_ID
+		WHERE  LM.MBER_ID = #userId#
+		AND    MP.MOID =  #moid#
+	
+	</select>
+	
 </sqlMap>
(No newline at end of file)
src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml
@@ -2142,4 +2142,38 @@
     
     </update>
 
+	<select id="mberManageDAO.selectMberHeaderInfo" resultClass="itn.let.uss.umt.service.MberManageVO" parameterClass="String">
+		SELECT
+			  L.SHORT_PRICE					AS shortPrice
+			, L.LONG_PRICE					AS longPrice
+			, L.PICTURE_PRICE				AS picturePrice
+			, L.PICTURE2_PRICE				AS picture2Price
+			, L.PICTURE3_PRICE				AS picture3Price
+			, L.PRE_PAYMENT_YN				AS prePaymentYn
+			, L.USER_MONEY					AS userMoney	
+			, IFNULL(MEMI.EVENT_SHORT_PRICE, 0)		AS eventShortPrice
+			, IFNULL(MEMI.EVENT_LONG_PRICE, 0)			AS eventLongPrice
+			, IFNULL(MEMI.EVENT_PICTURE_PRICE, 0)		AS eventPicturePrice
+			, IFNULL(MEMI.EVENT_PICTURE2_PRICE, 0)		AS eventPicture2Price
+			, IFNULL(MEMI.EVENT_PICTURE3_PRICE, 0)		AS eventPicture3Price
+			, IFNULL(MEMI.EVENT_REMAIN_CASH, 0)		AS eventRemainCash
+			, DATE_FORMAT(MEMI.EVENT_END_DATE, '%Y-%m-%d')	AS eventEndDate
+		FROM
+			LETTNGNRLMBER L
+		LEFT JOIN
+			MJ_EVENT_MBER_INFO MEMI
+		ON L.MBER_ID = MEMI.MBER_ID
+		AND MEMI.EVENT_INFO_ID = (
+				SELECT
+					MAX(EVENT_INFO_ID)
+				FROM
+					MJ_EVENT_MBER_INFO
+				WHERE
+					MBER_ID = #mberID#
+					AND EVENT_STATUS = 'Y'
+					
+			)
+		WHERE L.MBER_ID = #mberId#
+		
+	</select>
 </sqlMap>
src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml
@@ -1458,5 +1458,15 @@
 		AND    MONTH(REG_DATE) = MONTH(CURRENT_DATE)
 	
 	</select>
-		
+
+	<!-- 마지막 결제수단 SELECT -->
+	<select id="userManageDAO.selectLastPayMethod" parameterClass="String" resultClass="String">
+		SELECT 
+			IFNULL(PAY_METHOD, '') AS nextPayMethod
+		FROM MJ_PG 
+		WHERE
+			USER_ID = #userId#
+		ORDER BY REG_DATE DESC LIMIT 1
+	</select>
+			
 </sqlMap>
src/main/webapp/WEB-INF/jsp/sample/kmc/kmcis_web_sample_step01.jsp (Renamed from src/main/webapp/publish/kmc/kmcis_web_sample_step01.jsp)
--- src/main/webapp/publish/kmc/kmcis_web_sample_step01.jsp
+++ src/main/webapp/WEB-INF/jsp/sample/kmc/kmcis_web_sample_step01.jsp
No changes
src/main/webapp/WEB-INF/jsp/sample/kmc/kmcis_web_sample_step02.jsp (Renamed from src/main/webapp/publish/kmc/kmcis_web_sample_step02.jsp)
--- src/main/webapp/publish/kmc/kmcis_web_sample_step02.jsp
+++ src/main/webapp/WEB-INF/jsp/sample/kmc/kmcis_web_sample_step02.jsp
No changes
src/main/webapp/WEB-INF/jsp/sample/kmc/kmcis_web_sample_step03.jsp (Renamed from src/main/webapp/publish/kmc/kmcis_web_sample_step03.jsp)
--- src/main/webapp/publish/kmc/kmcis_web_sample_step03.jsp
+++ src/main/webapp/WEB-INF/jsp/sample/kmc/kmcis_web_sample_step03.jsp
No changes
src/main/webapp/WEB-INF/jsp/sample/kmc/kmcis_web_sample_step04.jsp (Renamed from src/main/webapp/publish/kmc/kmcis_web_sample_step04.jsp)
--- src/main/webapp/publish/kmc/kmcis_web_sample_step04.jsp
+++ src/main/webapp/WEB-INF/jsp/sample/kmc/kmcis_web_sample_step04.jsp
No changes
src/main/webapp/WEB-INF/jsp/sample/nicepay/cancelRequest.jsp (Renamed from src/main/webapp/publish/nicepay/cancelRequest.jsp)
--- src/main/webapp/publish/nicepay/cancelRequest.jsp
+++ src/main/webapp/WEB-INF/jsp/sample/nicepay/cancelRequest.jsp
No changes
src/main/webapp/WEB-INF/jsp/sample/nicepay/cancelRequest_utf.jsp (Renamed from src/main/webapp/publish/nicepay/cancelRequest_utf.jsp)
--- src/main/webapp/publish/nicepay/cancelRequest_utf.jsp
+++ src/main/webapp/WEB-INF/jsp/sample/nicepay/cancelRequest_utf.jsp
No changes
src/main/webapp/WEB-INF/jsp/sample/nicepay/cancelResult.jsp (Renamed from src/main/webapp/publish/nicepay/cancelResult.jsp)
--- src/main/webapp/publish/nicepay/cancelResult.jsp
+++ src/main/webapp/WEB-INF/jsp/sample/nicepay/cancelResult.jsp
No changes
src/main/webapp/WEB-INF/jsp/sample/nicepay/cancelResult_utf.jsp (Renamed from src/main/webapp/publish/nicepay/cancelResult_utf.jsp)
--- src/main/webapp/publish/nicepay/cancelResult_utf.jsp
+++ src/main/webapp/WEB-INF/jsp/sample/nicepay/cancelResult_utf.jsp
No changes
src/main/webapp/WEB-INF/jsp/sample/nicepay/payRequest.jsp (Renamed from src/main/webapp/publish/nicepay/payRequest.jsp)
--- src/main/webapp/publish/nicepay/payRequest.jsp
+++ src/main/webapp/WEB-INF/jsp/sample/nicepay/payRequest.jsp
No changes
src/main/webapp/WEB-INF/jsp/sample/nicepay/payRequest.jsp_back (Renamed from src/main/webapp/publish/nicepay/payRequest.jsp_back)
--- src/main/webapp/publish/nicepay/payRequest.jsp_back
+++ src/main/webapp/WEB-INF/jsp/sample/nicepay/payRequest.jsp_back
No changes
src/main/webapp/WEB-INF/jsp/sample/nicepay/payRequest_utf.jsp (Renamed from src/main/webapp/publish/nicepay/payRequest_utf.jsp)
--- src/main/webapp/publish/nicepay/payRequest_utf.jsp
+++ src/main/webapp/WEB-INF/jsp/sample/nicepay/payRequest_utf.jsp
No changes
src/main/webapp/WEB-INF/jsp/sample/nicepay/payResult.jsp (Renamed from src/main/webapp/publish/nicepay/payResult.jsp)
--- src/main/webapp/publish/nicepay/payResult.jsp
+++ src/main/webapp/WEB-INF/jsp/sample/nicepay/payResult.jsp
No changes
src/main/webapp/WEB-INF/jsp/sample/nicepay/payResultAjax.jsp (Renamed from src/main/webapp/publish/nicepay/payResultAjax.jsp)
--- src/main/webapp/publish/nicepay/payResultAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/sample/nicepay/payResultAjax.jsp
No changes
src/main/webapp/WEB-INF/jsp/sample/nicepay/payResult_utf.jsp (Renamed from src/main/webapp/publish/nicepay/payResult_utf.jsp)
--- src/main/webapp/publish/nicepay/payResult_utf.jsp
+++ src/main/webapp/WEB-INF/jsp/sample/nicepay/payResult_utf.jsp
No changes
src/main/webapp/WEB-INF/jsp/web/addr/AddrList.jsp
--- src/main/webapp/WEB-INF/jsp/web/addr/AddrList.jsp
+++ src/main/webapp/WEB-INF/jsp/web/addr/AddrList.jsp
@@ -112,16 +112,17 @@
 	//	return;
 	//}
 	
-	if(!checkHpNum(form.addrPhoneNo.value)){//휴대폰 유효성 검사
-		if(!checkNorPhoneNum(form.addrPhoneNo.value)){//일반전화 유효성 검사
-			
+	if(!isValidPhoneNumber(form.addrPhoneNo.value)){//일반전화 유효성 검사
+		const formattedNumber =formatPhoneNumber(form.addrPhoneNo.value); // 번호 표준화
+		if(!isValidPhoneNumber(formattedNumber)){
 			alert("잘못된 휴대폰번호 또는 일반전화 번호 입니다.");
 			return false;
-			
 		}
-		
 	}
 	
+	//휴대폰번호 포맷 맞추기
+	form.addrPhoneNo.value = formatPhoneNumber(form.addrPhoneNo.value);
+	
 	var data = new FormData(form);
 
 	$.ajax({
src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp
--- src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp
+++ src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp
@@ -1398,14 +1398,14 @@
             <div class="inner">
                 <ul class="menu_left">
                     <li><a href="#" id="favorite" ><i class="hdTop_fav"></i>즐겨찾기추가</a></li>
-                    <li><a href="<c:out value='/web/user/mberInfoIndex.do'/>" ><i class="hdTop_mypage"></i>마이페이지</a></li>
-                    <li><a href="<c:out value='/web/cop/bbs/NoticeList.do'/>" ><i class="hdTop_center"></i>고객센터</a></li>
+                    <li><a href="<c:out value='/web/user/mberInfoChange.do'/>" ><i class="hdTop_mypage"></i>마이페이지</a></li>
+                    <li><a href="<c:out value='/web/cop/bbs/QnaList.do'/>" ><i class="hdTop_center"></i>1:1 문의</a></li>
                 </ul>
                 <ul class="menu_right">
                     <li><a href="#" onclick="location.href='/web/member/pay/PayView.do'" >충전하기</a></li>
                     <li class="SortLine"><a href="/web/pay/PayGuide.do" >요금안내</a></li>
                     <li class="SortLine"><a href="/web/cop/bbs/FaqList.do" >이용안내</a></li>
-                    <li class="SortLine"><a href="/web/cop/bbs/QnaList.do" >1:1 문의</a></li>
+                    <li class="SortLine"><a href="/web/cop/bbs/NoticeList.do" >고객센터</a></li>
                     <li class="SortLine"><a href="/web/cop/bbs/SuggestList.do" >불편신고</a></li>
                 </ul>
             </div>
@@ -1627,7 +1627,9 @@
 	            		</li>
 	            		<li>
 	            			<dl>
-	            				<dt><a href="<c:out value='/web/user/mberInfoIndex.do'/>" >마이페이지</a></dt>
+	            				<%-- 250724 마이페이지 대시보드 삭제 --%>
+	            				<%-- <dt><a href="<c:out value='/web/user/mberInfoIndex.do'/>" >마이페이지</a></dt> --%>
+	            				<dt><a href="<c:out value='/web/user/mberInfoChange.do'/>" >마이페이지</a></dt>
 	            				<dd>
 	            					<ul>
 	            						<li><a href="<c:out value='/web/user/mberInfoChange.do'/>" >회원정보 변경</a></li>
@@ -1637,7 +1639,7 @@
 	            						</c:if>
 	            						<li><a href="<c:out value='/web/user/passwordChange.do'/>" >비밀번호 변경</a></li>
 	            						<li><a href="<c:out value='/web/user/sendNumberManage.do'/>" >발신번호 관리</a></li>
-	            						<li><a href="<c:out value='/web/user/notifyManage.do'/>" >알림설정</a></li>
+	            						<%-- <li><a href="<c:out value='/web/user/notifyManage.do'/>" >알림설정</a></li> --%>
 	            						<%-- <li><a href="<c:out value='/web/user/mberSecession.do'/>" >회원탈퇴</a></li> --%>
 	            						<%-- <li><a href="<c:out value='/web/user/kisaReport.do'/>" >KISA 신고</a></li> --%>
 	            					</ul>
@@ -1652,7 +1654,7 @@
 	            						<li><a href="<c:out value='/web/pay/PayGuide.do'/>" >요금안내/견적내기</a></li>
 	            						<li><a href="<c:out value='/web/member/pay/PayView.do'/>" >결제하기</a></li>
 	            						<li><a href="<c:out value='/web/member/pay/PayList.do'/>" >요금 결제내역</a></li>
-	            						<li><a href="<c:out value='/web/member/pay/PayUserSWList.do'/>" >요금 사용내역</a></li>
+	            						<li><a href="<c:out value='/web/member/pay/payUserSWList.do'/>" >요금 사용내역</a></li>
 										<!-- 현금영수증 자동발행 주석 -->
 	            						<%-- <li><a href="<c:out value='/web/member/pay/BillPub.do'/>" >계산서/현금영수증 발행 등록</a></li> --%>
 	            						<li><a href="<c:out value='/web/member/pay/BillPub.do'/>" >세금계산서 발행</a></li>
@@ -1744,8 +1746,9 @@
 		                <div class="login_left">
 		                    <div class="login_info">
 		                    	<input type="hidden" id="loginId" name="loginId" value="${LoginVO.id}">
-								<i><img src="/publish/images/mypageIcon2.png" id="commonHeaderGradeIcon" /></i>
+								<!-- <i><img src="/publish/images/mypageIcon2.png" id="commonHeaderGradeIcon" /></i> -->
 								<div class="login2_name" onclick="location.href='/web/user/mberInfoChange.do'" style="cursor:pointer;">
+									<i class="icon_user"></i>
 		                        	<p><c:out value="${LoginVO.name}"/></p>
 		                        	<c:choose>
 		                        		<c:when test="${LoginVO.dept == 'p'}">
@@ -1765,8 +1768,8 @@
 										<img src="/pb/img/common/topTimeOut.png" alt="타임아웃 아이콘">
 									</a>	 -->
 		                        </div>
-		                        <button type="button" class="btnType btnType3" onclick="location.href='/web/user/mberInfoIndex.do'">마이페이지</button>
-		                        <button type="button" class="btnType btnType2" onclick="location.href='/web/uat/uia/actionLogout.do'">로그아웃</button>
+		                        <!-- <button type="button" class="btnType btnType3" onclick="location.href='/web/user/mberInfoIndex.do'">마이페이지</button> -->
+		                        <button type="button" class="btnType btn_36 fill_gray" onclick="location.href='/web/uat/uia/actionLogout.do'">로그아웃</button>
 		                        
 								
 								<div class="security_box">
@@ -1778,33 +1781,88 @@
 		                    </div>
 		                    <div class="login_pay">
 			                    <div class="check_money">
-			                    	<div class="holdingsum_box">
+									<div class="holdingsum_box">
 										<i></i>
+										<div class="user_money_wrap">
+											보유잔액
+											<div class="hover_content_wrap">
+												<i class="qmMark">?</i>
+												<div class="hover_content">
+													<p class="hover_content_title">
+														<img src="/publish/images/content/icon_mypage_message.png" alt=""> 나의단가 <span>(발송가능 건수)</span>
+													</p>
+													<ul class="send_available_number">
+														<li>
+															<p class="title">· 단문</p>
+															<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerShortPrice}" var="shortPrice" />
+															<p class="number"><span class="c_002c9a fwBold"><c:out value="${shortPrice}"/></span>원
+															<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerShortCnt}" var="shortCnt" />
+															(<c:out value="${shortCnt}"/>건)</p>
+														</li>
+														<li>
+															<p class="title">· 장문</p>
+															<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerLongPrice}" var="LongPrice" />
+															<p class="number"><span class="c_002c9a fwBold"><c:out value="${LongPrice}"/></span>원
+															<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerLongCnt}" var="LongCnt" />
+															(<c:out value="${LongCnt}"/>건)</p>
+														</li>
+														<li>
+															<p class="title">· 그림(1장)</p>
+															<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerPicturePrice}" var="picturePrice" />
+															<p class="number"><span class="c_002c9a fwBold"><c:out value="${picturePrice}"/></span>원
+															<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerPictureCnt}" var="pictureCnt" />
+															(<c:out value="${pictureCnt}"/>건)</p>
+														</li>
+														<li>
+															<p class="title">· 그림(2장)</p>
+															<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerPicture2Price}" var="picture2Price" />
+															<p class="number"><span class="c_002c9a fwBold"><c:out value="${picture2Price}"/></span>원
+															<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerPicture2Cnt}" var="picture2Cnt" />
+															(<c:out value="${picture2Cnt}"/>건)</p>
+														</li>
+														<li>
+															<p class="title">· 그림(3장)</p>
+															<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerPicture3Price}" var="picture3Price" />
+															<p class="number"><span class="c_002c9a fwBold"><c:out value="${picture3Price}"/></span>원
+															<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerPicture3Cnt}" var="picture3Cnt" />
+															(<c:out value="${picture3Cnt}"/>건)</p>
+														</li>
+														<li>
+															<p class="title">· 알림톡</p>
+															<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerKakaoAtPrice}" var="kakaoAtPrice" />
+															<p class="number"><span class="c_002c9a fwBold"><c:out value="${kakaoAtPrice}"/></span>원
+															<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerKakaoAtCnt}" var="kakaoAtCnt" />
+															(<c:out value="${kakaoAtCnt}"/>건)</p>
+														</li>
+														<li>
+															<p class="title">· 팩스</p>
+															<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerFaxPrice}" var="faxPrice" />
+															<p class="number"><span class="c_002c9a fwBold"><c:out value="${faxPrice}"/></span>원
+															<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerFaxCnt}" var="faxCnt" />
+															(<c:out value="${faxCnt}"/>건)</p>
+														</li>
+													</ul>
+													<c:if test="${prePaymentYn eq 'Y' and mberHeaderInfoVO.eventLeftDay > 0}">
+														<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.eventRemainCash}" var="eventRemainCash" />
+														<div class="event_term"><p>이벤트<span class="fwBold">(D-${mberHeaderInfoVO.eventLeftDay})</span></p><p><span class="fwBold price">${eventRemainCash}</span>원</p></div>
+													</c:if>
+													<c:if test="${prePaymentYn eq 'N'}">
+														<div class="event_term" style="display:block">후불제(매월 1일 자동충전)</div>
+													</c:if>
+												</div>
+											</div>
 										<fmt:formatNumber type="number" maxFractionDigits="3" value="${userMoney}" var="commaPrice" />
-			                        	<p>보유잔액<!-- <em>(캐시)</em> --> <span class="fwMd" id="hdUserMoney"><c:out value="${commaPrice}"/></span>원</p>
-			                        	<c:if test="${prePaymentYn eq 'N'}">
-				                        	<dl>
-								              <dd>후불제 고객의 보유잔액(캐시)은 당월 발송 가능<br>금액을 말하며 <span>매월 1일 자동으로 충전</span>됩니다.</dd>
-								            </dl>
-			                        	</c:if>
-			                        </div>
+										<span class="fwMd" id="hdUserMoney"><c:out value="${commaPrice}"/></span>원
+									</	>
+									</div>
 			                        <button type="button" class="btnType btnType3" onclick="location.href='/web/member/pay/PayView.do'">충전</button>
-			                        <div class="account_box">
-			                        	<button type="button" class="btnType btnType3" onclick="location.href='/web/member/pay/PayView.do?tabType=2'">전용계좌</button>
-			                        	<c:if test="${not empty myBankList}">
-				                        	<dl>
-				                        		<dt>전용계좌</dt>
-				                        		<dd><c:out value="${myBankList[0].codeNm}"/> <c:out value="${myBankList[0].acctNo}"/></dd>
-				                        	</dl>
-			                        	</c:if>
-			                        </div>
 			                    </div>
-			                    <div class="point">
-									<i></i>
-									<fmt:formatNumber type="number" maxFractionDigits="3" value="${userPoint}" var="commaPoint" />
-			                        <p><!-- <em>적립</em> -->포인트 <span class="fwMd"><c:out value="${commaPoint}"/></span>원</p>
-			                        <button type="button" data-tooltip="popup04" class="btnType btnType3">교환</button>
-			                    </div>
+		                    </div>
+		                    <div class="point">
+								<i></i>
+								<fmt:formatNumber type="number" maxFractionDigits="3" value="${userPoint}" var="commaPoint" />
+		                        <p><!-- <em>적립</em> -->포인트 <span class="fwMd"><c:out value="${commaPoint}"/></span>원</p>
+		                        <button type="button" data-tooltip="popup04" class="btnType btnType3">교환</button>
 		                    </div>
 		                  <!--   <div class="event">
 		                	    <span><i></i>이달의 이벤트</span>
src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentDetailPopAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentDetailPopAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentDetailPopAjax.jsp
@@ -26,13 +26,6 @@
                 <p class="prev_p"><img src="/publish/images/content/kakao_prev_icon.png" alt=""><c:out value="${searchVO.yellowId}"/></p>
                 <!-- 텍스트 미리보기 -->
                 <div class="text_preview">
-                    <%--< div class="allimtalk_title">
-                        <img src="/publish/images/content/icon_allimtalk.png" alt="">
-                        <c:choose>
-                            <c:when test="${msgType eq '8'}">알림톡 도착</c:when>
-                            <c:when test="${msgType eq '9'}">친구톡 도착</c:when>
-                        </c:choose>
-                    </div> --%>
 					<c:if test="${resultMsgDetail.adFlag eq 'Y'}">
 						<p class="friend_talk_title"><span>(광고)</span></p>
 					</c:if>
@@ -92,8 +85,8 @@
 <!-- 	    <div class="tab_phone" id="tab_phone_2" style="display:none" > -->
 	        <div class="phoneIn">
 	            <div>
-	                <p class="prev_p"><img src="/publish/images/search.png"> 문자내용</p>
 	                <div class="text_length2 clearfix">
+	                	<span>발송일시 : <fmt:formatDate value="${parsedDate}" pattern="yyyy-MM-dd HH:mm:ss"/></span>
 	                	<c:if test="${resultMsgDetail.bizKakaoResendYn eq 'Y'}">
 		                	<c:choose>
 		                		<c:when test="${resultMsgDetail.bizKakaoResendType eq 'SMS'}">
@@ -105,15 +98,15 @@
 		                	</c:choose>
 <%-- 		                	<c:choose>
 		                		<c:when test="${resultMsgDetail.bizKakaoResendTypeCnt > 1}">
-									<span class="msg_com msg_short">단문</span>
-									<span class="msg_com msg_long">장문</span>
+									<span class="msg_com msg_short" style="float:right;">단문</span>
+									<span class="msg_com msg_long" style="float:right;">장문</span>
 		                		</c:when>
 		                		<c:when test="${resultMsgDetail.bizKakaoResendTypeCnt < 2
 		               							&& resultMsgDetail.bizKakaoResendType eq 'SMS'}">
-		                			<span class="msg_com msg_short">단문</span>
+		                			<span class="msg_com msg_short" style="float:right;">단문</span>
 		               			</c:when>
 		                		<c:otherwise>
-		                			<span class="msg_com msg_long">장문</span>
+		                			<span class="msg_com msg_long" style="float:right;">장문</span>
 		                		</c:otherwise>
 		                	</c:choose> --%>
 	                	</c:if>
src/main/webapp/WEB-INF/jsp/web/login/loginRestrictionUse.jsp
--- src/main/webapp/WEB-INF/jsp/web/login/loginRestrictionUse.jsp
+++ src/main/webapp/WEB-INF/jsp/web/login/loginRestrictionUse.jsp
@@ -273,7 +273,7 @@
 					</div>
 					
 					<!-- 관리자가 문자 상세에서 이용정지 처리 시 내용(문자 내용 안내) -->
-					<c:if test="${not empty spamMemberInfoVO.msgGroupId}">
+					<%-- <c:if test="${not empty spamMemberInfoVO.msgGroupId}">
 					<div class="input_list listType2">
 						<div class="input_list_item">
 							<div class="input_left">회원님의 아이디로 발송된 <strong>정보통신망법 제50조 위반</strong> 문자내용</div>
@@ -323,7 +323,7 @@
 							</div>
 						</div>
 					</div>
-					</c:if>
+					</c:if> --%>
 					
 					<!-- 관리자가 사용자 상세에서 이용정지 처리 시 내용(관리자가 작성한 사유 안내) -->
 					<c:if test="${not empty spamMemberInfoVO.smiMemo}">
src/main/webapp/WEB-INF/jsp/web/pay/BillPub.jsp
--- src/main/webapp/WEB-INF/jsp/web/pay/BillPub.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/BillPub.jsp
@@ -495,7 +495,7 @@
                     <li class="tab"><button type="button" onclick="location.href='/web/pay/PayGuide.do'">요금안내/견적내기</button></li>
 	                <li class="tab"><button type="button" onclick="location.href='/web/member/pay/PayView.do'">결제하기</button></li>
 	                <li class="tab"><button type="button" onclick="location.href='/web/member/pay/PayList.do'">요금 결제내역</button></li>
-	                <li class="tab"><button type="button" onclick="location.href='/web/member/pay/PayUserSWList.do'">요금 사용내역</button></li>
+	                <li class="tab"><button type="button" onclick="location.href='/web/member/pay/payUserSWList.do'">요금 사용내역</button></li>
 	                <!-- <li class="tab active"><button type="button">계산서/현금영수증 발행 등록</button></li> -->
 	                <li class="tab active"><button type="button">세금계산서 발행 등록</button></li>
                 </ul><!--// tab button -->
src/main/webapp/WEB-INF/jsp/web/pay/MsgPrintUsageDetailsPopUp.jsp
--- src/main/webapp/WEB-INF/jsp/web/pay/MsgPrintUsageDetailsPopUp.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/MsgPrintUsageDetailsPopUp.jsp
@@ -68,22 +68,60 @@
                             </colgroup>
                             <tbody>
                                 <tr>
-                                    <th>수<span class="blank"></span>신</th>
-                                    <td>${mberNm}</td>
+                                    <th>등록번호</th>
+                                    <td>
+                                    	<c:choose>
+                                    		<c:when test="${mberManageVO.dept eq'c'}">
+                                    			<c:out value="${mberManageVO.bizNo}"/>
+                                    		</c:when>
+                                    		<c:otherwise>
+                                    			-
+                                    		</c:otherwise>
+                                    	</c:choose>
+                                    </td>
                                 </tr>
                                 <tr>
-                                    <th>참<span class="blank"></span>조</th>
-                                    <td>담당자 ${managerNm} 님</td>
+                                    <th>상<span class="blank"></span>호</th>
+                                    <td>
+                                    	<c:choose>
+                                    		<c:when test="${mberManageVO.dept eq'c'}">
+                                    			<c:out value="${mberManageVO.mberNm}"/>
+                                    		</c:when>
+                                    		<c:otherwise>
+                                    			-
+                                    		</c:otherwise>
+                                    	</c:choose>
+                                    </td>
                                 </tr>
                                 <tr>
-                                    <th>거래일자</th>
-                                    <td>${startDate}~${endDate}</td>
+                                    <th>성<span class="blank"></span>명</th>
+                                    <td>
+                                    	<c:choose>
+                                    		<c:when test="${mberManageVO.dept eq'c'}">
+                                    			<c:out value="${mberManageVO.managerNm}"/>
+                                    		</c:when>
+                                    		<c:otherwise>
+                                    			<c:out value="${mberManageVO.mberNm}"/>
+                                    		</c:otherwise>
+                                    	</c:choose>
+                                    </td>
+                                </tr>
+                                <tr>
+                                    <th>전화번호</th>
+                                    <td><c:out value="${mberManageVO.moblphonNo}"/></td>
+                                </tr>
+                                <tr>
+                                    <th style="letter-spacing:-0.85px;">이&ensp;메&ensp;일</th>
+                                    <td><c:out value="${mberManageVO.mberEmailAdres}"/></td>
+                                </tr>
+                                <tr>
+   	                    			<td colspan="2" style="text-align:center;"><span><c:out value="${mberManageVO.mberNm}"/></span>님의 사용내역(<c:out value="${startDate}"/>~<c:out value="${endDate}"/>)을 아래와 같이 확인합니다.</td>
                                 </tr>
                             </tbody>
                         </table>
                     </div>
                 </div>
-                <div class="cont2 clearfix">
+                <%-- <div class="cont2 clearfix">
                     <p>총 사용금액</p>
                     <c:choose>
 	                	<c:when test="${searchVO.addVatType eq 'N'}">
@@ -93,24 +131,22 @@
 	                		<p><span>${addTaxSumPrice}</span> 원(VAT 포함)</p>
 	                	</c:otherwise>
 	                </c:choose>
-                </div>
+                </div> --%>
                 <div class="cont3">
                     <p>(단위 : 원,  건)</p>
                     <div class="est_table2_wrap">
                         <table class="est_table2">
                             <caption>품목, 발송건수, 공급가액, 부가세, 금액 정보를 제공하는 표</caption>
                             <colgroup>
-                                <col style="width:20%;">
-                                <col style="width:20%;">
-                                <col style="width:20%;">
+                                <col style="width:30%;">
+                                <col style="width:30%;">
                                 <col style="width:auto;">
                             </colgroup>
                             <thead>
                                 <tr>
-                                    <th scope="col">품목</th>
+                                    <th scope="col">문자유형</th>
                                     <th scope="col">발송건수</th>
-                                    <th scope="col">공급가액</th>
-                                    <th scope="col">금액</th>
+                                    <th scope="col">사용금액</th>
                                 </tr>
                             </thead>
                             <tbody>
@@ -120,15 +156,15 @@
 		                            		<td>${result.msgTypeName}</td>
 		                            		<td>
 		                            			<c:choose>
-		                            				<c:when test="${result.msgTypeName eq '단문(SMS)'}">
+		                            				<c:when test="${result.msgTypeName eq '단문'}">
 		                            					<fmt:formatNumber type="number" maxFractionDigits="3" value="${result.shtSendCount}" var="shtSendCount" />
 														<c:out value="${shtSendCount}"/>
 		                            				</c:when>
-		                            				<c:when test="${result.msgTypeName eq '장문(LMS)'}">
+		                            				<c:when test="${result.msgTypeName eq '장문'}">
 		                            					<fmt:formatNumber type="number" maxFractionDigits="3" value="${result.longSendCount}" var="longSendCount" />
 														<c:out value="${longSendCount}"/>
 		                            				</c:when>
-		                            				<c:when test="${result.msgTypeName eq '그림(MMS)'}">
+		                            				<c:when test="${result.msgTypeName eq '그림'}">
 		                            					<fmt:formatNumber type="number" maxFractionDigits="3" value="${result.pictSendCount}" var="pictSendCount" />
 														<c:out value="${pictSendCount}"/>
 		                            				</c:when>
@@ -144,10 +180,6 @@
 		                            			<%-- <fmt:formatNumber type="number" maxFractionDigits="3" value="${result.sendCount}" var="sendCount" />
 												<c:out value="${sendCount}"/> --%>
 		                            		</td>
-		                            		<td>
-		                            			<fmt:formatNumber type="number" maxFractionDigits="3" value="${result.supplyPrice}" var="supplyPrice" />
-												<c:out value="${supplyPrice}"/>		                            		
-	                            			</td>
 		                            		<td>
 		                            			<fmt:formatNumber type="number" maxFractionDigits="3" value="${result.totalPrice}" var="totalPrice" />
 												<c:out value="${totalPrice}"/>
@@ -188,52 +220,13 @@
 					</div>
 				</div>
 							
-				<div class="cont4">
-					<table class="est_table">
-						<caption>공급가액, 총 결제금액에 대한 표</caption>
-                       	<colgroup>
-                           <col style="width: 100px;">
-                           <col style="width: auto;">
-                       	</colgroup>
-                       	<tbody>
-                           	<tr>
-                               <th>공급가액</th>
-                               <td><span>${supplySumPrice}</span></td>
-                           	</tr>
-							<c:choose>
-								<c:when test="${not empty resultList || not empty payUserSumFaxList}">
-	                                <c:choose>
-	                                	<c:when test="${searchVO.addVatType eq 'N'}">
-	                                		<tr class="total_price">
-			                                	<th>총 사용금액</th>
-			                                	<td><span>${totalSumPrice}</span></td>
-			                                </tr>
-	                                	</c:when>
-	                                	<c:otherwise>
-	                                		<tr>
-			                                	<th>세액(부가세)</th>
-			                                	<td>${addTax}</td>
-			                                </tr>
-			                                <tr class="total_price">
-			                                	<th>총 사용금액</th>
-			                                	<td><span>${addTaxSumPrice}</span></td>
-			                                </tr>
-	                                	</c:otherwise>
-	                                </c:choose>
-								</c:when>
-								<c:otherwise>
-									<c:if test="${ empty resultList && empty payUserSumFaxList}">
-										<tr>
-											<td colspan="5">
-												사용내역이 없습니다.
-											</td>
-										</tr>
-									</c:if>
-								</c:otherwise>
-							</c:choose>
-                        </tbody>
-                    </table>
+                <div class="cont2 clearfix">
+                    <p>총 사용금액 <span>(VAT 별도)</span></p>
+                    <p><span>
+                    	<c:out value="${totalSumPrice}"/>
+                    </span>원</p>
                 </div>
+                
                 <div class="cont5">
                     <p><span>${year} 년&nbsp;&nbsp;<span>${month}</span> 월&nbsp;&nbsp;<span>${day}</span> 일</p>
                     <div>
src/main/webapp/WEB-INF/jsp/web/pay/PayGuide.jsp
--- src/main/webapp/WEB-INF/jsp/web/pay/PayGuide.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/PayGuide.jsp
@@ -1,867 +1,867 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-
-<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
-
-<script>
-// 문자 단가
-var shortPrice = "${shortPrice}";
-var longPrice = "${longPrice}";
-var picturePrice = "${picturePrice}";
-var picturePrice2 = "${picturePrice2}";
-var picturePrice3 = "${picturePrice3}";
-var kakaoAtPrice = "${kakaoAtPrice}";
-var faxPrice = "${faxPrice}";
-
-var smsList = new Array();		// 품목추가 Array
-var supplySumPrice = 0;		// 공급가액
-var vatSumPrice = 0;		// 부가세액
-var totSumPrice = 0;		// 합계
-
-// 탭이동
-var tabType = "${tabType}";
-
-$(document).ready(function () {
-	
-	// 품목정보 추가
-	getSmsItemAdd();
-	
-	// 품목 Change Event
-	$("#smsItem").change(function(){
-		$("#unitPrice").val($("#smsItem option:selected").val());
-
-		var optNm = $("#smsItem option:selected").text();
-		if(optNm.includes('팩스')){
-			$('#faxPages').show();
-		}else{
-			$('#faxPages').hide();
-		}
-	});
-	
-	// 품목추가 Click Event
-	$("#btnItemAdd").click(function(){
-		// 품목추가
-		setItemAdd();
-	});	
-	
-	// 품목삭제 Click Event
-	$("#btnItemDel").click(function(){
-		// 품목삭제
-		setItemDel();
-		
-		//품목추가 Html
-		setItemAddHtml();		
-	});		
-	
-	// 부가세별도 여부 Change Event
-	$("#isVat").change(function(){
-		//품목추가 Html
-		setItemAddHtml();		
-	});
-	
-	// 견적내기화면으로 이동
-	if (tabType == "2") {
-		$("#btnEstimate").trigger("click");
-	}
-	
-	//등급제 시행 ON/OFF 체크(비로그인)
-	//getMberSettingDetailByNotLogin();
-		
-	// 등급제 대상 여부
-	//getMberGrdChk();
-	
-});
-
-//품목정보 추가
-function getSmsItemAdd() {
-	var sHtml = "";	
-	sHtml += "<option value='" + shortPrice + "'>단문(SMS)</option>";
-	sHtml += "<option value='" + longPrice + "'>장문(LMS)</option>";
-	sHtml += "<option value='" + picturePrice + "'>그림문자(1장)</option>";
-	sHtml += "<option value='" + picturePrice2 + "'>그림문자(2장)</option>";
-	sHtml += "<option value='" + picturePrice3 + "'>그림문자(3장)</option>";
-	sHtml += "<option value='" + kakaoAtPrice + "'>카톡(알림톡)</option>";
-	sHtml += "<option value='" + faxPrice + "'>팩스</option>";
-
-	$("#smsItem").append(sHtml);
-	
-	// 단가 초기값
-	$("#unitPrice").val($("#smsItem option:selected").val());
-}
-	
-
-// 품목추가
-function setItemAdd() {
-	var caseNumber = $("#caseNumber").val().trim().replaceAll(",", "");
-	var casePage = $("#casePage").val().trim().replaceAll(",", "");
-	
-	if (caseNumber == null || caseNumber == "" || caseNumber == undefined) {
-		alert("건수를 입력하세요.");
-		return false;
-	}
-	else if (isNaN(caseNumber) == true) {
-		alert("건수는 숫자를 입력하세요.");
-		return false;		
-	}
-	
-	// 객체 생성 
-	var data = new Object(); 
-	data.smsItemName = $("#smsItem option:selected").text();		// 품목명
-	data.unitPrice = $("#unitPrice").val();		// 단가
-	data.unitPricePlusVat = $("#unitPrice").val();		// 단가
-	data.caseNumber = caseNumber;	// 건수
-	data.supplyPrice = $("#unitPrice").val() * caseNumber;
-	data.totPrice = $("#unitPrice").val() * caseNumber;	// 금액
-	
-	var itmNm = data.smsItemName 
-	if(itmNm.includes('팩스')){//팩스인 경우 매수 곱해주기
-		data.casePage = casePage;
-		data.supplyPrice = $("#unitPrice").val() * (caseNumber * casePage);
-		data.totPrice = $("#unitPrice").val() * (caseNumber * casePage);	// 금액
-	}
-	
-	// 리스트에 생성된 객체 삽입 
-	smsList.push(data); 
-	
-	//품목추가 Html
-	setItemAddHtml();
-	}
-	
-//품목추가 Html
-function setItemAddHtml() {
-	var isVat = $("#isVat option:selected").val();
-	
-	// 부가세 케이스별 다시계산
-	smsList.forEach(function(element) {
-		var itmNm = element.smsItemName;
-
-		if (isVat == 1) {
-			
-			if(itmNm.includes('팩스')){//팩스인 경우 건수 * 매수에 대한 금액의 부가세를 계산해야함.
-				// 부가세 포함
-				element.vatPrice = Math.round(element.unitPrice * 0.1 * (element.caseNumber * element.casePage));
-			}else{
-				// 부가세 포함
-				element.vatPrice = Math.round(element.unitPrice * 0.1 * element.caseNumber);
-				//element.unitPricePlusVat = parseInt(element.unitPrice, 10) + Math.round(element.unitPrice * 0.1);
-			}
-			
-		}
-		else {
-			// 부가세 별도(부가세 : 0)
-			element.vatPrice = 0;
-		}
-		
-		if(itmNm.includes('팩스')){//팩스인 경우 건수 * 매수에 대한 금액의 부가세를 계산해야함.
-			element.totVatPrice = (element.unitPrice * (element.caseNumber * element.casePage)) + element.vatPrice;	// 금액
-		}else{
-			element.totVatPrice = (element.unitPrice * element.caseNumber) + element.vatPrice;	// 금액		
-		}
-	})	
-	
-	vatSumPrice = 0;
-	supplySumPrice = 0;
-	totSumPrice = 0;
-	
-	var sHtml = "";
-	smsList.forEach(function(element) {
-		supplySumPrice += element.supplyPrice;
-		totSumPrice += element.totPrice;
-		
-		sHtml += "<div class='tType3_bd'>";
-		sHtml += "    <div>";
-		sHtml += "        <label for='' class='label'>한 줄 전체 선택</label>";
-		sHtml += "        <input type='checkbox' id='chkEach' name='chkEach'>";
-		sHtml += "    </div>";
-		sHtml += "    <div>" + element.smsItemName + "</div>";
-		if (isVat == 1) {
-			// 부가세 포함
-			sHtml += "    <div>" + element.unitPricePlusVat + "</div>";			
-		}
-		else {
-			sHtml += "    <div>" + element.unitPrice + "</div>";	
-		}
-		if(element.smsItemName.includes('팩스')){
-			sHtml += "    <div>" + numberWithCommas(element.caseNumber * element.casePage) + "</div>";
-		}
-		else {
-			sHtml += "    <div>" + numberWithCommas(element.caseNumber) + "</div>";
-		}
-		sHtml += "    <div>" + numberWithCommas(element.supplyPrice) + "</div>";
-		sHtml += "    <div>" + numberWithCommas(element.vatPrice) + "</div>";
-		sHtml += "    <div>" + numberWithCommas(element.totVatPrice) + "</div>";
-		sHtml += "</div>";
-	})
-	
-	$("#itemList").html(sHtml);
-	
-	// Sum
-	setEstimateSum();
-	}
-	
-// Sum
-function setEstimateSum() {
-	var isVat = $("#isVat option:selected").val();
-	console.log("setEstimateSum")
-	if (isVat == 1) {
-		// 부가세 포함
-		vatSumPrice = Math.round(supplySumPrice * 0.1);	
-		totSumPrice = totSumPrice + vatSumPrice;
-	}
-	else {
-		// 부가세 별도(부가세 : 0)
-		vatSumPrice = 0;
-		supplySumPrice = supplySumPrice - vatSumPrice;;
-	}
-	
-	$("#supplySumPriceStr").html(numberWithCommas(supplySumPrice));
-	$("#totSumPriceStr").html(numberWithCommas(totSumPrice));
-	/* if($("#isVat option:selected").val() == '0'){
-		$("#isVatStr").html($("#isVat option:selected").text() + '(' + numberWithCommas(vatSumPrice) + ')');	
-	}else{
-		$("#isVatStr").html($("#isVat option:selected").text());
-	} */
-	$("#isVatStr").html(numberWithCommas(vatSumPrice));
-	
-	$("#smsList").val(JSON.stringify(smsList));
-	$("#supplySumPrice").val(supplySumPrice);
-	$("#vatSumPrice").val(vatSumPrice);
-	$("#totSumPrice").val(totSumPrice);
-	
-}
-
-// 품목 삭제
-function setItemDel() {
-	//체크박스 체크
-	var smsListLen = smsList.length;
-	while (smsListLen--) {
-		if ($('input[name=chkEach]').eq(smsListLen).is(':checked') == true) {
-			smsList.splice(smsListLen, 1);	
-		} 
-	}	
-}
-	
-//유효성 검사
-function ValidationCheck() {
-	var title = $("#title").val().trim();
-	var recipientName = $("#recipientName").val().trim();
-	var managerName = $("#managerName").val().trim();
-	var mobile = $("#mobile").val().trim();
-	var publishDate = $("#publishDate").val().trim();
-	
-	if (title == null || title == "" || title == undefined) {
-		alert("제목을 입력하세요.");
-		$("#title").focus();
-		return false;
-	}		
-	else if (recipientName == null || recipientName == "" || recipientName == undefined) {
-		alert("수신자(기업명)을 입력하세요.");
-		$("#recipientName").focus();
-		return false;
-	}	
-	else if (managerName == null || managerName == "" || managerName == undefined) {
-		alert("담당자(성명)을 입력하세요.");
-		$("#managerName").focus();
-		return false;
-	}	
-	else if (mobile == null || mobile == "" || mobile == undefined) {
-		alert("연락처를 입력하세요.");
-		$("#mobile").focus();
-		return false;
-	}	
-	else if (publishDate == null || publishDate == "" || publishDate == undefined) {
-		alert("발행일을 입력하세요.");
-		$("#publishDate").focus();
-		return false;
-	}		
-	else if (smsList.length == 0) {
-		alert("품목정보를 하나이상 추가해주세요.");
-		return false;
-	}		
-}
-
-/* 인쇄미리보기 클릭 시 견적서 새창 팝업 오픈  */
-function showEst() {
-
-	// 유효성 검사
-	if (ValidationCheck() == false) return false;
-	
-	//만들려는 팝업의 크기
-	var popup_wid = 820;
-	var popup_ht = 900;
-	
-	//중앙 정렬을 위해 윈도우 스크린의 width,height 구하는 변수 만듦
-	var popup_left = (window.screen.width / 2) - (popup_wid / 2);
-	var popup_top =(window.screen.height / 2) - (popup_ht / 2);
-
-	// From Submit
-	var myForm = document.popForm;
-	var url = "/web/pay/PayEstimateAjax.do";
-	window.open('' ,'popForm', 'scrollbars=1, width='+ popup_wid +', height='+ popup_ht +', left=' + popup_left + ', top='+ popup_top);
-	myForm.action =url; 
-	myForm.method="post";
-	myForm.target="popForm";
-	myForm.testVal = 'test';
-	myForm.submit();
-}
-
-function inputNumberFormatPay(obj) {
-	$(obj).val($(obj).val().replace(/[^0-9]/g,""));
-	
-	$('#caseNumber').val(numberWithCommas(obj.value));
-}
-
-
-function inputPagesNumberFormatPay(obj) {
-	$(obj).val($(obj).val().replace(/[^0-9]/g,""));
-	
-	$(obj).val(numberWithCommas(obj.value));
-}
-function inputPagesNumber(obj) {
-	$(obj).val($(obj).val().replace(/[^0-9]/g,""));
-}
-
-function fn_gunClear(){
-	$('#caseNumber').val('');
-}
-
-
-//체크박스 전체선택/해제
-$(document).on("click", "#chkAll", function(e) {
-	var isChecked = $(this).is(":checked");
-	$("input[name=chkEach]:checkbox").prop("checked", isChecked);
-});	
-
-/* 윈도우팝업 열기 */
-function infoPop(pageUrl){
-	document.infoPopForm.pageType.value = pageUrl;
-	document.infoPopForm.action = "/web/pop/infoPop.do";
-	document.infoPopForm.method = "post"; 
-	window.open("about:blank", 'infoPop', 'width=790, height=280, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1');
-	document.infoPopForm.target = "infoPop";
-	document.infoPopForm.submit();
-}
-
-
-//등급제 시행 ON/OFF 체크(비로그인)
-function getMberSettingDetailByNotLogin() {
-	$.ajax({
-        type: "POST",
-        url: "/web/grd/mberSettDetailByNotLoginAjax.do",
-        data: {},
-        dataType:'json',
-        async: false,
-        success: function (data) {
-			if (data.isSuccess) {
-				// 문자(등급별 요금 안내)
-				$("#mberGrdSettingArea").show();
-			} 
-			else {
-				//alert("Msg : " + data.msg);
-			}
-		},
-        error: function (e) { 
-        	//alert("ERROR : " + JSON.stringify(e)); 
-        }
-    });				
-}		
-
-// 등급제 대상 여부
-function getMberGrdChk() {
-	$.ajax({
-        type: "POST",
-        url: "/web/grd/mberGrdChkAjax.do",
-        data: {},
-        dataType:'json',
-        async: false,
-        success: function (data) {
-			if (data.isSuccess) {
-				// 등급제 누적결제액 세부내역
-				$("#grdShowArea").html("(등급 : " + data.rtnMberGrdVO.grdSetNm + ")");
-				$("#levelSubTitle").html("(" + data.rtnMberGrdVO.grdDate + " ~ 현재)");				
-			} 
-			else {
-				//alert("Msg : " + data.msg);
-			}
-		},
-        error: function (e) { 
-        	//alert("ERROR : " + JSON.stringify(e)); 
-        }
-    });				
-}		
-
-</script>
-
-<form name="popForm" method="post">
-	<input type="hidden" name="smsList" id="smsList" value="" />
-	<input type="hidden" name="supplySumPrice" id="supplySumPrice" value="" />
-	<input type="hidden" name="vatSumPrice" id="vatSumPrice" value="" />
-	<input type="hidden" name="totSumPrice" id="totSumPrice" value="" />
-		
-		<!-- content 영역 -->
-	<div class="inner">
-		<!-- send top -->
-		<div class="send_top">
-			<!-- tab button -->
-			<ul class="tabType4">
-				<li class="tab active"><button type="button">요금안내/견적내기</button></li>
-				<li class="tab"><button type="button" onclick="location.href='/web/member/pay/PayView.do'">결제하기</button></li>
-				<li class="tab"><button type="button" onclick="location.href='/web/member/pay/PayList.do'">요금 결제내역</button></li>
-				<li class="tab"><button type="button" onclick="location.href='/web/member/pay/PayUserSWList.do'">요금 사용내역</button></li>
-				<li class="tab"><button type="button" onclick="location.href='/web/member/pay/BillPub.do'">세금계산서 발행 등록</button></li>
-			</ul>
-			<!--// tab button -->
-			<!-- 결제관리 - 요금안내/견적내기 -->
-			<div class="serv_content charg_cont current" id="tab5_1">
-				<div class="heading">
-					<h2>요금안내/견적내기</h2>
-					<button type="button" class="button info" onclick="infoPop('PayGuide');">사용안내</button>
-				</div>
-				<!-- tab button -->
-				<div class="pay_tab_wrap">
-					<ul class="tabType1">
-						<li class="tab active">
-							<button type="button" onclick="TabType1(this,'1')">요금안내</button>
-						</li>
-						<li class="tab">
-							<button type="button" onclick="TabType1(this,'2')" id="btnEstimate">견적내기</button>
-						</li>
-					</ul>
-				</div>
-				<!--// tab button -->
-				<!-- 결제관리 - 요금안내/견적내기 - 요금안내 -->
-				<div class="fee_cont current fee_wrap" id="tab1_1">
-					<div>
-						<p class="tType1_title">
-							<img src="/publish/images/content/icon_fee1.png" alt="문자이미지"> 문자<span class="level_first" id="grdShowArea"></span>
-						</p>
-						<table class="tType2">
-							<caption></caption>
-							<colgroup>
-								<col style="width: 18%;">
-								<col style="width: auto;">
-								<col style="width: 32%;">
-							</colgroup>
-							<thead>
-								<tr>
-									<th>구분</th>
-									<th>특징</th>
-									<th>가격</th>
-								</tr>
-							</thead>
-							<tbody>
-								<tr>
-									<th>단문(SMS)</th>
-									<td>90Byte 이하 단문 메시지(이미지 첨부 불가)</td>
-									<td><span>${shortPrice}</span>원</td>
-								</tr>
-								<tr>
-									<th>장문(LMS)</th>
-									<td>91~2,000Byte 이하 장문메시지(이미지 첨부 불가)</td>
-									<td><span>${longPrice}</span>원</td>
-								</tr>
-								<tr>
-									<th>그림문자(MMS)</th>
-									<td>2,000Byte 이하 문자 및 이미지를 포함하는그림메시지(이미지 최대 3장 첨부 가능) </td>
-									<td>1장 : <span>${picturePrice}</span>원 / 2장 : <span>${picturePrice2}<span>원/ 3장 : <span>${picturePrice3}</span>원</td>
-								</tr>
-							</tbody>
-						</table>
-						<span class="reqTxt4">* 텍스트 용량(Byte)에 대한 안내 : 한글2Byte, 영문·숫자 1Byte를 차지.</span>
-					
-						<!--문자_등급별 요금 안내 추가 시작-->
-						<div id="mberGrdSettingArea" style="display: none;">
-							<p class="tType1_title level"><img src="/publish/images/content/icon_fee1.png" alt="문자이미지"> 문자<span>(등급별 요금 안내)</span></p>
-							<table class="tType2 tType2_level">
-								<caption></caption>
-								<colgroup>
-									<col style="width: 13%;">
-									<col style="width: auto;">
-									<col style="width: 11%;">
-									<col style="width: 11%;">
-									<col style="width: 11%;">
-									<col style="width: 11%;">
-									<col style="width: 11%;">
-								</colgroup>
-								<thead>
-									<tr>
-										<th>등급</th>
-										<th class="th_second">누적결제액<span id="levelSubTitle"></span></th>
-										<th>단문</th>
-										<th>장문</th>
-										<th>그림(1장)</th>
-										<th>그림(2장)</th>
-										<th>그림(3장)</th>
-									</tr>
-								</thead>
-								<tbody>
-				    				<c:forEach var="result" items="${mberGrdSettingList}" varStatus="status">
-									<tr class="level_table">
-										<th><c:out value="${result.grdSetNm}"/></th>
-										<td class="level_price"><c:out value="${result.stdAmtComma}"/></td>
-										<td><c:out value="${result.shortPrice}"/></td>
-										<td><c:out value="${result.longPrice}"/></td>
-										<td><c:out value="${result.picturePrice}"/></td>
-										<td><c:out value="${result.picture2Price}"/></td>
-										<td><c:out value="${result.picture3Price}"/></td>
-									</tr>
-									</c:forEach>													
-								</tbody>
-							</table>
-							<span class="reqTxt4">
-								* 등급별 요금제는 당사의 정책 및 운영의 필요상 수정, 중단 또는 변경될 수 있습니다. <br>
-								* 누적결제액은 등급별 요금제 적용일로부터 적립된 결제금액을 말하며, 누적결제액에 따라 등급은 자동으로 적용됩니다. <br>
-								* "첫결제 이벤트" 등 이벤트 결제금액은 등급별 요금제 누적결제액에서 제외됩니다. <br>
-							</span> 
-							<p class="reqTxt4 reqTxt4_last">
-								* 문자피싱, 스미싱, 주식, 도박, 로또, 스팸, 사기, 협박, 범죄, 유사투자, 유사수신 등을 목적으로 하거나 교사 또는 방조하는 내용의 정보, 발신번호 조작 등으로 인지되는 문자에 대해서는 사전 또는 즉시 발송을 차단하고
-   								이용을 정지시킬 수 있으며, 이에 대한 어떠한 환불이나 보상을 실시하지 않습니다. 또한, 상기 문자를 발송한 회원에 대해서는 그 즉시 등급별 요금제 혜택을 취소합니다. 
-							</p>
-						</div>
-						<!--문자_등급별 요금 안내 추가 끝-->					
-					
-						<p class="tType1_title"><img src="/publish/images/content/icon_fee2.png" alt="알림톡 아이콘 이미지"> 알림톡</p>
-						<table class="tType2">
-							<colgroup>
-								<col style="width: 20%;">
-								<col style="width: 60%;">
-								<col style="width: 20%;">
-							</colgroup>
-							<thead>
-								<tr>
-									<th>구분</th>
-									<th>특징</th>
-									<th>가격</th>
-								</tr>
-							</thead>
-							<tbody>
-								<tr>
-									<th>알림톡</th>
-									<td>카카오톡을 통해 친구 추가 여부와 관계 없이 휴대폰 번호로 발송이 가능한 정보성 메시지<br>(1,000자 이하의 텍스트 및 이미지 중 카카오 사전 승인 건에 한하여 발송 가능)</td>
-									<td>1장 : <span>${kakaoAtPrice}</span>원</td>
-								</tr>
-							</tbody>
-						</table>
-						<span class="reqTxt4">* 텍스트 용량(Byte)에 대한 안내 : 한글2Byte, 영문·숫자 1Byte를 차지.</span>
-						
-						<p class="tType1_title"><img src="/publish/images/content/icon_fee_fax.png" alt="팩스 아이콘 이미지"> 팩스</p>
-						<table class="tType2">
-							<colgroup>
-								<col style="width: 20%;">
-								<col style="width: 60%;">
-								<col style="width: 20%;">
-							</colgroup>
-							<thead>
-								<tr>
-									<th>구분</th>
-									<th>특징(전송가능확장자)</th>
-									<th>가격</th>
-								</tr>
-							</thead>
-							<tbody>
-								<tr>
-									<th>팩스</th>
-									<td>전송 가능 파일(hwp, pdf, ppt, xls, xlsx, doc, jpg, jpeg, bmp, txt, gif, hwpml, tif, gul)</td>
-									<td>1매 : <span>${faxPrice}</span>원</td>
-								</tr>
-							</tbody>
-						</table>
-						
-						<p class="tType1_title"><img src="/publish/images/content/icon_fee3.png" alt="그림문자 맞춤제작 이미지"> 그림문자 맞춤제작</p>
-						<table class="tType2">
-							<caption></caption>
-							<colgroup>
-								<col style="width: 80%;">
-								<col style="width: 20%;">
-							</colgroup>
-							<thead>
-								<tr>
-									<th>구분</th>
-									<th>가격</th>
-								</tr>
-							</thead>
-							<tbody>
-								<tr>
-									<th>문자온 샘플 수정(글자, 색상, 폰트 등)</th>
-									<td><span>${customSamplePrice}</span>원</td>
-								</tr>
-								<tr>
-									<th>이미지 편집(첨부이미지 1장)</th>
-									<td><span>${customEditPrice}</span>원</td>
-								</tr>
-								<tr>
-									<th>이미지 편집(첨부이미지 3장이하)</th>
-									<td><span>${customEdit3Price}</span>원</td>
-								</tr>
-								<tr>
-									<th>텍스트 단순수정</th>
-									<td><span>${customTextPrice}</span>원</td>
-								</tr>
-							</tbody>
-						</table>
-						<span class="reqTxt4">* 텍스트 단순수정 요청은 맞춤제작이 완료된 그림문자의 수정 시에만 가능합니다.</span>
-						
-						<div class="banner">
-							<p>대량발송 고객 가격협의 가능</p>
-							<ul>
-								<li><img src="/publish/images/content/banner_call01.png" alt=""><p>전화 <strong>1551-8011</strong><p></li>
-								<li><img src="/publish/images/content/banner_email01.png" alt=""><p>이메일<span>help@iten.co.kr</span> <button type="button" onclick="location.href='mailto:help@iten.co.kr'">상담하기</button></li>
-								<li><img src="/publish/images/content/banner_kakao01.png" alt=""><p>카카오톡<span>munjaon</span><a href="http://pf.kakao.com/_PxoTtb/chat" target="_blank">상담하기</a><p></li>
-							</ul>
-						</div>
-					</div>
-				</div>
-				<!--// 결제관리 - 요금안내/견적내기 - 요금안내 -->
-			
-				<!-- 결제관리 - 요금안내/견적내기 - 견적내기 -->
-				<div class="fee_cont" id="tab1_2">
-					<ul class="clause_list">
-						<li class="list_open on">
-							<div class="clause_list_head">
-								<div class="list_head_in">
-									<span><i></i>요금안내</span>
-									<button type="button" onclick="clause_list(this);"><i></i></button>
-								</div>
-							</div>
-							<div class="clause_list_body">
-								<table class="refund_info">
-									<caption>요금 안내</caption>
-									<colgroup>
-										<col style="width: 13%;">
-										<col style="width: auto;">
-										<col style="width: 25%;">
-									</colgroup>
-									<thead>
-										<tr>
-											<th>구분</th>
-											<th>특징</th>
-											<th>금액</th>
-										</tr>
-									</thead>
-									<tbody>
-										<tr>
-											<td>단문(SMS)</td>
-											<td>90Byte 이하 단문 메시지(이미지 첨부 불가)</td>
-											<td><span>${shortPrice}</span>원</td>
-										</tr>
-										<tr>
-											<td>장문(LMS)</td>
-											<td>91~2,000Byte 이하 장문메시지(이미지 첨부 불가)</td>
-											<td><span>${longPrice}</span>원</td>
-										<tr>
-											<td>그림문자(MMS)</td>
-											<td>2,000Byte 이하 문자 및 이미지를 포함하는 그림메시지(이미지 최대 3장 첨부 가능)</td>
-											<td>1장 : <span>${picturePrice}</span>원 / 2장 : <span>${picturePrice2}</span>원 / 3장 : <span>${picturePrice3}</span>원</td>
-										</tr>
-										<tr>
-											<td>카카오(알림톡)</td>
-											<td>카카오톡을 통해 친구 추가 여부와 관계 없이 휴대폰 번호로 발송이 가능한 정보성 메시지(1,000자 이하의 텍스트 및 이미지 중 카카오 사전 승인 건에 한하여 발송 가능)</td>
-											<td><span>${kakaoAtPrice}</span>원</td>
-										</tr>
-										<tr>
-											<td>팩스</td>
-											<td>전송 가능 파일(hwp, pdf, ppt, xls, xlsx, doc, jpg, jpeg, bmp, txt, gif, hwpml, tif, htm, html, gul)</td>
-											<td><span>${faxPrice}</span>원</td>
-										</tr>
-										<tr>
-											<td>맞춤제작</td>
-											<td>문자온 샘플 수정(글자, 색상, 폰트 등)</td>
-											<td><span>${customSamplePrice}</span>원</td>
-										</tr>
-										<tr>
-											<td>맞춤제작</td>
-											<td>이미지 편집(첨부이미지 1장)</td>
-											<td><span>${customEditPrice}</span>원</td>
-										</tr>
-										<tr>
-											<td>맞춤제작</td>
-											<td>이미지 편집(첨부이미지 3장이하)</td>
-											<td><span>${customEdit3Price}</span>원</td>
-										</tr>
-										<tr>
-											<td>맞춤제작</td>
-											<td>텍스트 단순수정</td>
-											<td><span>${customTextPrice}</span>원</td>
-										</tr>
-									</tbody>
-								</table>
-							</div>
-						</li>
-					</ul>
-					<div>
-						<p class="tType1_title">일반정보</p>
-						<table class="tType1">
-							<caption></caption>
-							<colgroup>
-								<col style="width: 150px;">
-								<col style="width: auto;">
-							</colgroup>
-							<tbody>
-								<tr>
-									<th>제목</th>
-									<td>
-										<label for="" class="label">견적내기 제목</label>
-										<input type="text" id="title" name="title" placeholder="견적서" onfocus="this.placeholder=''" onblur="this.placeholder='견적서'" style="width: 400px;" maxlength="20">
-									</td>
-								</tr>
-								<tr>
-									<th>수신자(기업명)</th>
-									<td>
-										<label for="" class="label">수신자(기업명) 입력</label>
-										<input type="text" id="recipientName" name="recipientName" style="width: 400px;" maxlength="18">
-									</td>
-								</tr>
-								<tr>
-									<th>담당자(성명)</th>
-									<td>
-										<label for="" class="label">담당자(성명) 입력</label>
-										<input type="text" id="managerName" name="managerName" style="width: 400px;" maxlength="18">
-									</td>
-								</tr>
-								<tr>
-									<th>연락처</th>
-									<td>
-										<label for="" class="label">연락처 입력</label>
-										<input type="text" onkeyup="inputPagesNumber(this)"; maxlength="11" id="mobile" name="mobile" style="width: 400px;">
-									</td>
-								</tr>
-								<tr>
-								<th>발행일</th>
-								<td>
-									<div class="calendar_wrap">
-										<input type="text" class="calendar" title="발행일" id="publishDate" name="publishDate">
-									</div>
-								</td>
-								</tr>
-							</tbody>
-						</table>
-						
-						<p class="tType1_title">품목정보</p>
-						<table class="tType1 itemInfo">
-							<caption></caption>
-							<colgroup>
-								<col style="width: 150px;">
-								<col style="width: auto;">
-							</colgroup>
-							<tbody>
-								<tr>
-									<th>구분</th>
-									<td>
-										<label for="" class="label">품목 선택</label>
-										<select id="smsItem" name="smsItem" onchange="fn_gunClear();" style="width: 210px;">
-										</select>
-										<label for="" class="label">품목 별 단가</label>
-										<input type="text" id="unitPrice" name="unitPrice" value="0" placeholder="" readonly class="readonly">
-										<p class="input_in">원</p>
-									</td>
-								</tr>
-								<tr>
-									<th>건수</th>
-									<td class="publish_btn">
-										<label for="" class="label">건수 입력</label>
-										<input type="text" id="caseNumber" numberOnly maxlength="10"  name="caseNumber" style="width: 210px;" onkeyup="inputNumberFormatPay(this)">
-										<p class="input_in">건</p>
-										<div>
-											<button type="button" class="btnType" id="btnItemAdd">품목추가<i class="arrow_img"></i></button>
-										</div>
-									</td>
-								</tr>
-								<tr id="faxPages" style="display:none;">
-                                    <th>매수</th>
-                                    <td class="publish_btn">
-                                        <label for="" class="label">매수 입력</label>
-                                        <input type="text" id="casePage" name="casePage" style="width: 210px;" onkeyup="inputPagesNumberFormatPay(this)">
-                                        <p class="input_in">매</p>
-                                    </td>
-                                </tr>
-							</tbody>
-						</table>
-						<div class="search_group_bottom2">
-							<div class="btnWrap1">
-								<button type="button" class="btnType" id="btnItemDel"><i class="remove_img"></i>선택삭제</button>
-							</div>
-						</div>
-						<!-- table -->
-						<div class="tType3 payDetail">
-							<!-- thead -->
-							<div class="tType3_hd">
-								<div>
-									<label for="" class="label">전체 선택</label>
-									<input type="checkbox" id="chkAll">
-								</div>
-								<div>품목</div>
-								<div>단가(원)</div>
-								<div>건수(건)</div>
-								<div>공급가액(원)</div>
-								<div>세액(부가세)</div>
-								<div>금액(원)</div>
-							</div>
-							<!-- tbody -->
-							<div class="tType3_bd_wrap" id="itemList">
-								<div class="tType3_bd">
-									<div></div>
-									<div></div>
-									<div></div>
-									<div></div>
-									<div></div>
-									<div></div>
-									<div></div>
-								</div>
-							</div>
-						</div>
-						<!--// table -->
-						<div class="tb_wrap totalPrice_tb">
-							<table class="tType4">
-								<colgroup>
-									<col style="width: 25%;">
-									<col style="width: 25%;">
-									<col style="width: 30%;">
-									<col style="width: 15%;">
-								</colgroup>
-								<thead>
-									<tr>
-										<th>공급가액</th>
-										<th>세액(부가세)</th>
-										<th>합계</th>
-										<th>비고</th>
-									</tr>
-								</thead>
-								<tbody>
-									<tr>
-										<td>
-											<span id="supplySumPriceStr"></span>
-										</td>
-										<td>
-											<span id="isVatStr"></span>
-										</td>
-										<td>
-											<span id="totSumPriceStr"></span>
-										</td>
-										<td style="text-align: center;">
-											<label for="" class="label">부가세 포함,별도 선택</label>
-											<select id="isVat" name="isVat" class="selType2">
-												<option value="0">부가세 별도</option>
-												<option value="1" selected>부가세 포함</option>
-											</select>
-										</td>
-									</tr>
-								</tbody>
-							</table>
-						</div>
-						<!-- //주소록리스트 -->
-						<div style="text-align: center;">
-							<button class="btnType btnType16" onclick="showEst(); return false;">발행하기</button>
-						</div>
-					</div>
-				</div>
-				<!-- 결제관리 - 요금안내/견적내기 - 견적내기 -->
-			</div>
-		</div>
-		<!-- 결제관리 - 요금안내/견적내기 --> 
-	</div>
-	<!--// send top -->
-</form>
-<form name="infoPopForm" id="infoPopForm" method="post">
-	<input type="hidden" name="pageType" id="pageType" value=""/> 
-</form>
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
+
+<script>
+// 문자 단가
+var shortPrice = "${shortPrice}";
+var longPrice = "${longPrice}";
+var picturePrice = "${picturePrice}";
+var picturePrice2 = "${picturePrice2}";
+var picturePrice3 = "${picturePrice3}";
+var kakaoAtPrice = "${kakaoAtPrice}";
+var faxPrice = "${faxPrice}";
+
+var smsList = new Array();		// 품목추가 Array
+var supplySumPrice = 0;		// 공급가액
+var vatSumPrice = 0;		// 부가세액
+var totSumPrice = 0;		// 합계
+
+// 탭이동
+var tabType = "${tabType}";
+
+$(document).ready(function () {
+	
+	// 품목정보 추가
+	getSmsItemAdd();
+	
+	// 품목 Change Event
+	$("#smsItem").change(function(){
+		$("#unitPrice").val($("#smsItem option:selected").val());
+
+		var optNm = $("#smsItem option:selected").text();
+		if(optNm.includes('팩스')){
+			$('#faxPages').show();
+		}else{
+			$('#faxPages').hide();
+		}
+	});
+	
+	// 품목추가 Click Event
+	$("#btnItemAdd").click(function(){
+		// 품목추가
+		setItemAdd();
+	});	
+	
+	// 품목삭제 Click Event
+	$("#btnItemDel").click(function(){
+		// 품목삭제
+		setItemDel();
+		
+		//품목추가 Html
+		setItemAddHtml();		
+	});		
+	
+	// 부가세별도 여부 Change Event
+	$("#isVat").change(function(){
+		//품목추가 Html
+		setItemAddHtml();		
+	});
+	
+	// 견적내기화면으로 이동
+	if (tabType == "2") {
+		$("#btnEstimate").trigger("click");
+	}
+	
+	//등급제 시행 ON/OFF 체크(비로그인)
+	//getMberSettingDetailByNotLogin();
+		
+	// 등급제 대상 여부
+	//getMberGrdChk();
+	
+});
+
+//품목정보 추가
+function getSmsItemAdd() {
+	var sHtml = "";	
+	sHtml += "<option value='" + shortPrice + "'>단문(SMS)</option>";
+	sHtml += "<option value='" + longPrice + "'>장문(LMS)</option>";
+	sHtml += "<option value='" + picturePrice + "'>그림문자(1장)</option>";
+	sHtml += "<option value='" + picturePrice2 + "'>그림문자(2장)</option>";
+	sHtml += "<option value='" + picturePrice3 + "'>그림문자(3장)</option>";
+	sHtml += "<option value='" + kakaoAtPrice + "'>카톡(알림톡)</option>";
+	sHtml += "<option value='" + faxPrice + "'>팩스</option>";
+
+	$("#smsItem").append(sHtml);
+	
+	// 단가 초기값
+	$("#unitPrice").val($("#smsItem option:selected").val());
+}
+	
+
+// 품목추가
+function setItemAdd() {
+	var caseNumber = $("#caseNumber").val().trim().replaceAll(",", "");
+	var casePage = $("#casePage").val().trim().replaceAll(",", "");
+	
+	if (caseNumber == null || caseNumber == "" || caseNumber == undefined) {
+		alert("건수를 입력하세요.");
+		return false;
+	}
+	else if (isNaN(caseNumber) == true) {
+		alert("건수는 숫자를 입력하세요.");
+		return false;		
+	}
+	
+	// 객체 생성 
+	var data = new Object(); 
+	data.smsItemName = $("#smsItem option:selected").text();		// 품목명
+	data.unitPrice = $("#unitPrice").val();		// 단가
+	data.unitPricePlusVat = $("#unitPrice").val();		// 단가
+	data.caseNumber = caseNumber;	// 건수
+	data.supplyPrice = $("#unitPrice").val() * caseNumber;
+	data.totPrice = $("#unitPrice").val() * caseNumber;	// 금액
+	
+	var itmNm = data.smsItemName 
+	if(itmNm.includes('팩스')){//팩스인 경우 매수 곱해주기
+		data.casePage = casePage;
+		data.supplyPrice = $("#unitPrice").val() * (caseNumber * casePage);
+		data.totPrice = $("#unitPrice").val() * (caseNumber * casePage);	// 금액
+	}
+	
+	// 리스트에 생성된 객체 삽입 
+	smsList.push(data); 
+	
+	//품목추가 Html
+	setItemAddHtml();
+	}
+	
+//품목추가 Html
+function setItemAddHtml() {
+	var isVat = $("#isVat option:selected").val();
+	
+	// 부가세 케이스별 다시계산
+	smsList.forEach(function(element) {
+		var itmNm = element.smsItemName;
+
+		if (isVat == 1) {
+			
+			if(itmNm.includes('팩스')){//팩스인 경우 건수 * 매수에 대한 금액의 부가세를 계산해야함.
+				// 부가세 포함
+				element.vatPrice = Math.round(element.unitPrice * 0.1 * (element.caseNumber * element.casePage));
+			}else{
+				// 부가세 포함
+				element.vatPrice = Math.round(element.unitPrice * 0.1 * element.caseNumber);
+				//element.unitPricePlusVat = parseInt(element.unitPrice, 10) + Math.round(element.unitPrice * 0.1);
+			}
+			
+		}
+		else {
+			// 부가세 별도(부가세 : 0)
+			element.vatPrice = 0;
+		}
+		
+		if(itmNm.includes('팩스')){//팩스인 경우 건수 * 매수에 대한 금액의 부가세를 계산해야함.
+			element.totVatPrice = (element.unitPrice * (element.caseNumber * element.casePage)) + element.vatPrice;	// 금액
+		}else{
+			element.totVatPrice = (element.unitPrice * element.caseNumber) + element.vatPrice;	// 금액		
+		}
+	})	
+	
+	vatSumPrice = 0;
+	supplySumPrice = 0;
+	totSumPrice = 0;
+	
+	var sHtml = "";
+	smsList.forEach(function(element) {
+		supplySumPrice += element.supplyPrice;
+		totSumPrice += element.totPrice;
+		
+		sHtml += "<div class='tType3_bd'>";
+		sHtml += "    <div>";
+		sHtml += "        <label for='' class='label'>한 줄 전체 선택</label>";
+		sHtml += "        <input type='checkbox' id='chkEach' name='chkEach'>";
+		sHtml += "    </div>";
+		sHtml += "    <div>" + element.smsItemName + "</div>";
+		if (isVat == 1) {
+			// 부가세 포함
+			sHtml += "    <div>" + element.unitPricePlusVat + "</div>";			
+		}
+		else {
+			sHtml += "    <div>" + element.unitPrice + "</div>";	
+		}
+		if(element.smsItemName.includes('팩스')){
+			sHtml += "    <div>" + numberWithCommas(element.caseNumber * element.casePage) + "</div>";
+		}
+		else {
+			sHtml += "    <div>" + numberWithCommas(element.caseNumber) + "</div>";
+		}
+		sHtml += "    <div>" + numberWithCommas(element.supplyPrice) + "</div>";
+		sHtml += "    <div>" + numberWithCommas(element.vatPrice) + "</div>";
+		sHtml += "    <div>" + numberWithCommas(element.totVatPrice) + "</div>";
+		sHtml += "</div>";
+	})
+	
+	$("#itemList").html(sHtml);
+	
+	// Sum
+	setEstimateSum();
+	}
+	
+// Sum
+function setEstimateSum() {
+	var isVat = $("#isVat option:selected").val();
+	console.log("setEstimateSum")
+	if (isVat == 1) {
+		// 부가세 포함
+		vatSumPrice = Math.round(supplySumPrice * 0.1);	
+		totSumPrice = totSumPrice + vatSumPrice;
+	}
+	else {
+		// 부가세 별도(부가세 : 0)
+		vatSumPrice = 0;
+		supplySumPrice = supplySumPrice - vatSumPrice;;
+	}
+	
+	$("#supplySumPriceStr").html(numberWithCommas(supplySumPrice));
+	$("#totSumPriceStr").html(numberWithCommas(totSumPrice));
+	/* if($("#isVat option:selected").val() == '0'){
+		$("#isVatStr").html($("#isVat option:selected").text() + '(' + numberWithCommas(vatSumPrice) + ')');	
+	}else{
+		$("#isVatStr").html($("#isVat option:selected").text());
+	} */
+	$("#isVatStr").html(numberWithCommas(vatSumPrice));
+	
+	$("#smsList").val(JSON.stringify(smsList));
+	$("#supplySumPrice").val(supplySumPrice);
+	$("#vatSumPrice").val(vatSumPrice);
+	$("#totSumPrice").val(totSumPrice);
+	
+}
+
+// 품목 삭제
+function setItemDel() {
+	//체크박스 체크
+	var smsListLen = smsList.length;
+	while (smsListLen--) {
+		if ($('input[name=chkEach]').eq(smsListLen).is(':checked') == true) {
+			smsList.splice(smsListLen, 1);	
+		} 
+	}	
+}
+	
+//유효성 검사
+function ValidationCheck() {
+	var title = $("#title").val().trim();
+	var recipientName = $("#recipientName").val().trim();
+	var managerName = $("#managerName").val().trim();
+	var mobile = $("#mobile").val().trim();
+	var publishDate = $("#publishDate").val().trim();
+	
+	if (title == null || title == "" || title == undefined) {
+		alert("제목을 입력하세요.");
+		$("#title").focus();
+		return false;
+	}		
+	else if (recipientName == null || recipientName == "" || recipientName == undefined) {
+		alert("수신자(기업명)을 입력하세요.");
+		$("#recipientName").focus();
+		return false;
+	}	
+	else if (managerName == null || managerName == "" || managerName == undefined) {
+		alert("담당자(성명)을 입력하세요.");
+		$("#managerName").focus();
+		return false;
+	}	
+	else if (mobile == null || mobile == "" || mobile == undefined) {
+		alert("연락처를 입력하세요.");
+		$("#mobile").focus();
+		return false;
+	}	
+	else if (publishDate == null || publishDate == "" || publishDate == undefined) {
+		alert("발행일을 입력하세요.");
+		$("#publishDate").focus();
+		return false;
+	}		
+	else if (smsList.length == 0) {
+		alert("품목정보를 하나이상 추가해주세요.");
+		return false;
+	}		
+}
+
+/* 인쇄미리보기 클릭 시 견적서 새창 팝업 오픈  */
+function showEst() {
+
+	// 유효성 검사
+	if (ValidationCheck() == false) return false;
+	
+	//만들려는 팝업의 크기
+	var popup_wid = 820;
+	var popup_ht = 900;
+	
+	//중앙 정렬을 위해 윈도우 스크린의 width,height 구하는 변수 만듦
+	var popup_left = (window.screen.width / 2) - (popup_wid / 2);
+	var popup_top =(window.screen.height / 2) - (popup_ht / 2);
+
+	// From Submit
+	var myForm = document.popForm;
+	var url = "/web/pay/PayEstimateAjax.do";
+	window.open('' ,'popForm', 'scrollbars=1, width='+ popup_wid +', height='+ popup_ht +', left=' + popup_left + ', top='+ popup_top);
+	myForm.action =url; 
+	myForm.method="post";
+	myForm.target="popForm";
+	myForm.testVal = 'test';
+	myForm.submit();
+}
+
+function inputNumberFormatPay(obj) {
+	$(obj).val($(obj).val().replace(/[^0-9]/g,""));
+	
+	$('#caseNumber').val(numberWithCommas(obj.value));
+}
+
+
+function inputPagesNumberFormatPay(obj) {
+	$(obj).val($(obj).val().replace(/[^0-9]/g,""));
+	
+	$(obj).val(numberWithCommas(obj.value));
+}
+function inputPagesNumber(obj) {
+	$(obj).val($(obj).val().replace(/[^0-9]/g,""));
+}
+
+function fn_gunClear(){
+	$('#caseNumber').val('');
+}
+
+
+//체크박스 전체선택/해제
+$(document).on("click", "#chkAll", function(e) {
+	var isChecked = $(this).is(":checked");
+	$("input[name=chkEach]:checkbox").prop("checked", isChecked);
+});	
+
+/* 윈도우팝업 열기 */
+function infoPop(pageUrl){
+	document.infoPopForm.pageType.value = pageUrl;
+	document.infoPopForm.action = "/web/pop/infoPop.do";
+	document.infoPopForm.method = "post"; 
+	window.open("about:blank", 'infoPop', 'width=790, height=280, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1');
+	document.infoPopForm.target = "infoPop";
+	document.infoPopForm.submit();
+}
+
+
+//등급제 시행 ON/OFF 체크(비로그인)
+function getMberSettingDetailByNotLogin() {
+	$.ajax({
+        type: "POST",
+        url: "/web/grd/mberSettDetailByNotLoginAjax.do",
+        data: {},
+        dataType:'json',
+        async: false,
+        success: function (data) {
+			if (data.isSuccess) {
+				// 문자(등급별 요금 안내)
+				$("#mberGrdSettingArea").show();
+			} 
+			else {
+				//alert("Msg : " + data.msg);
+			}
+		},
+        error: function (e) { 
+        	//alert("ERROR : " + JSON.stringify(e)); 
+        }
+    });				
+}		
+
+// 등급제 대상 여부
+function getMberGrdChk() {
+	$.ajax({
+        type: "POST",
+        url: "/web/grd/mberGrdChkAjax.do",
+        data: {},
+        dataType:'json',
+        async: false,
+        success: function (data) {
+			if (data.isSuccess) {
+				// 등급제 누적결제액 세부내역
+				$("#grdShowArea").html("(등급 : " + data.rtnMberGrdVO.grdSetNm + ")");
+				$("#levelSubTitle").html("(" + data.rtnMberGrdVO.grdDate + " ~ 현재)");				
+			} 
+			else {
+				//alert("Msg : " + data.msg);
+			}
+		},
+        error: function (e) { 
+        	//alert("ERROR : " + JSON.stringify(e)); 
+        }
+    });				
+}		
+
+</script>
+
+<form name="popForm" method="post">
+	<input type="hidden" name="smsList" id="smsList" value="" />
+	<input type="hidden" name="supplySumPrice" id="supplySumPrice" value="" />
+	<input type="hidden" name="vatSumPrice" id="vatSumPrice" value="" />
+	<input type="hidden" name="totSumPrice" id="totSumPrice" value="" />
+		
+		<!-- content 영역 -->
+	<div class="inner">
+		<!-- send top -->
+		<div class="send_top">
+			<!-- tab button -->
+			<ul class="tabType4">
+				<li class="tab active"><button type="button">요금안내/견적내기</button></li>
+				<li class="tab"><button type="button" onclick="location.href='/web/member/pay/PayView.do'">결제하기</button></li>
+				<li class="tab"><button type="button" onclick="location.href='/web/member/pay/PayList.do'">요금 결제내역</button></li>
+				<li class="tab"><button type="button" onclick="location.href='/web/member/pay/payUserSWList.do'">요금 사용내역</button></li>
+				<li class="tab"><button type="button" onclick="location.href='/web/member/pay/BillPub.do'">세금계산서 발행 등록</button></li>
+			</ul>
+			<!--// tab button -->
+			<!-- 결제관리 - 요금안내/견적내기 -->
+			<div class="serv_content charg_cont current" id="tab5_1">
+				<div class="heading">
+					<h2>요금안내/견적내기</h2>
+					<button type="button" class="button info" onclick="infoPop('PayGuide');">사용안내</button>
+				</div>
+				<!-- tab button -->
+				<div class="pay_tab_wrap">
+					<ul class="tabType1">
+						<li class="tab active">
+							<button type="button" onclick="TabType1(this,'1')">요금안내</button>
+						</li>
+						<li class="tab">
+							<button type="button" onclick="TabType1(this,'2')" id="btnEstimate">견적내기</button>
+						</li>
+					</ul>
+				</div>
+				<!--// tab button -->
+				<!-- 결제관리 - 요금안내/견적내기 - 요금안내 -->
+				<div class="fee_cont current fee_wrap" id="tab1_1">
+					<div>
+						<p class="tType1_title">
+							<img src="/publish/images/content/icon_fee1.png" alt="문자이미지"> 문자<span class="level_first" id="grdShowArea"></span>
+						</p>
+						<table class="tType2">
+							<caption></caption>
+							<colgroup>
+								<col style="width: 18%;">
+								<col style="width: auto;">
+								<col style="width: 32%;">
+							</colgroup>
+							<thead>
+								<tr>
+									<th>구분</th>
+									<th>특징</th>
+									<th>가격</th>
+								</tr>
+							</thead>
+							<tbody>
+								<tr>
+									<th>단문(SMS)</th>
+									<td>90Byte 이하 단문 메시지(이미지 첨부 불가)</td>
+									<td><span>${shortPrice}</span>원</td>
+								</tr>
+								<tr>
+									<th>장문(LMS)</th>
+									<td>91~2,000Byte 이하 장문메시지(이미지 첨부 불가)</td>
+									<td><span>${longPrice}</span>원</td>
+								</tr>
+								<tr>
+									<th>그림문자(MMS)</th>
+									<td>2,000Byte 이하 문자 및 이미지를 포함하는그림메시지(이미지 최대 3장 첨부 가능) </td>
+									<td>1장 : <span>${picturePrice}</span>원 / 2장 : <span>${picturePrice2}<span>원/ 3장 : <span>${picturePrice3}</span>원</td>
+								</tr>
+							</tbody>
+						</table>
+						<span class="reqTxt4">* 텍스트 용량(Byte)에 대한 안내 : 한글2Byte, 영문·숫자 1Byte를 차지.</span>
+					
+						<!--문자_등급별 요금 안내 추가 시작-->
+						<div id="mberGrdSettingArea" style="display: none;">
+							<p class="tType1_title level"><img src="/publish/images/content/icon_fee1.png" alt="문자이미지"> 문자<span>(등급별 요금 안내)</span></p>
+							<table class="tType2 tType2_level">
+								<caption></caption>
+								<colgroup>
+									<col style="width: 13%;">
+									<col style="width: auto;">
+									<col style="width: 11%;">
+									<col style="width: 11%;">
+									<col style="width: 11%;">
+									<col style="width: 11%;">
+									<col style="width: 11%;">
+								</colgroup>
+								<thead>
+									<tr>
+										<th>등급</th>
+										<th class="th_second">누적결제액<span id="levelSubTitle"></span></th>
+										<th>단문</th>
+										<th>장문</th>
+										<th>그림(1장)</th>
+										<th>그림(2장)</th>
+										<th>그림(3장)</th>
+									</tr>
+								</thead>
+								<tbody>
+				    				<c:forEach var="result" items="${mberGrdSettingList}" varStatus="status">
+									<tr class="level_table">
+										<th><c:out value="${result.grdSetNm}"/></th>
+										<td class="level_price"><c:out value="${result.stdAmtComma}"/></td>
+										<td><c:out value="${result.shortPrice}"/></td>
+										<td><c:out value="${result.longPrice}"/></td>
+										<td><c:out value="${result.picturePrice}"/></td>
+										<td><c:out value="${result.picture2Price}"/></td>
+										<td><c:out value="${result.picture3Price}"/></td>
+									</tr>
+									</c:forEach>													
+								</tbody>
+							</table>
+							<span class="reqTxt4">
+								* 등급별 요금제는 당사의 정책 및 운영의 필요상 수정, 중단 또는 변경될 수 있습니다. <br>
+								* 누적결제액은 등급별 요금제 적용일로부터 적립된 결제금액을 말하며, 누적결제액에 따라 등급은 자동으로 적용됩니다. <br>
+								* "첫결제 이벤트" 등 이벤트 결제금액은 등급별 요금제 누적결제액에서 제외됩니다. <br>
+							</span> 
+							<p class="reqTxt4 reqTxt4_last">
+								* 문자피싱, 스미싱, 주식, 도박, 로또, 스팸, 사기, 협박, 범죄, 유사투자, 유사수신 등을 목적으로 하거나 교사 또는 방조하는 내용의 정보, 발신번호 조작 등으로 인지되는 문자에 대해서는 사전 또는 즉시 발송을 차단하고
+   								이용을 정지시킬 수 있으며, 이에 대한 어떠한 환불이나 보상을 실시하지 않습니다. 또한, 상기 문자를 발송한 회원에 대해서는 그 즉시 등급별 요금제 혜택을 취소합니다. 
+							</p>
+						</div>
+						<!--문자_등급별 요금 안내 추가 끝-->					
+					
+						<p class="tType1_title"><img src="/publish/images/content/icon_fee2.png" alt="알림톡 아이콘 이미지"> 알림톡</p>
+						<table class="tType2">
+							<colgroup>
+								<col style="width: 20%;">
+								<col style="width: 60%;">
+								<col style="width: 20%;">
+							</colgroup>
+							<thead>
+								<tr>
+									<th>구분</th>
+									<th>특징</th>
+									<th>가격</th>
+								</tr>
+							</thead>
+							<tbody>
+								<tr>
+									<th>알림톡</th>
+									<td>카카오톡을 통해 친구 추가 여부와 관계 없이 휴대폰 번호로 발송이 가능한 정보성 메시지<br>(1,000자 이하의 텍스트 및 이미지 중 카카오 사전 승인 건에 한하여 발송 가능)</td>
+									<td>1장 : <span>${kakaoAtPrice}</span>원</td>
+								</tr>
+							</tbody>
+						</table>
+						<span class="reqTxt4">* 텍스트 용량(Byte)에 대한 안내 : 한글2Byte, 영문·숫자 1Byte를 차지.</span>
+						
+						<p class="tType1_title"><img src="/publish/images/content/icon_fee_fax.png" alt="팩스 아이콘 이미지"> 팩스</p>
+						<table class="tType2">
+							<colgroup>
+								<col style="width: 20%;">
+								<col style="width: 60%;">
+								<col style="width: 20%;">
+							</colgroup>
+							<thead>
+								<tr>
+									<th>구분</th>
+									<th>특징(전송가능확장자)</th>
+									<th>가격</th>
+								</tr>
+							</thead>
+							<tbody>
+								<tr>
+									<th>팩스</th>
+									<td>전송 가능 파일(hwp, pdf, ppt, xls, xlsx, doc, jpg, jpeg, bmp, txt, gif, hwpml, tif, gul)</td>
+									<td>1매 : <span>${faxPrice}</span>원</td>
+								</tr>
+							</tbody>
+						</table>
+						
+						<p class="tType1_title"><img src="/publish/images/content/icon_fee3.png" alt="그림문자 맞춤제작 이미지"> 그림문자 맞춤제작</p>
+						<table class="tType2">
+							<caption></caption>
+							<colgroup>
+								<col style="width: 80%;">
+								<col style="width: 20%;">
+							</colgroup>
+							<thead>
+								<tr>
+									<th>구분</th>
+									<th>가격</th>
+								</tr>
+							</thead>
+							<tbody>
+								<tr>
+									<th>문자온 샘플 수정(글자, 색상, 폰트 등)</th>
+									<td><span>${customSamplePrice}</span>원</td>
+								</tr>
+								<tr>
+									<th>이미지 편집(첨부이미지 1장)</th>
+									<td><span>${customEditPrice}</span>원</td>
+								</tr>
+								<tr>
+									<th>이미지 편집(첨부이미지 3장이하)</th>
+									<td><span>${customEdit3Price}</span>원</td>
+								</tr>
+								<tr>
+									<th>텍스트 단순수정</th>
+									<td><span>${customTextPrice}</span>원</td>
+								</tr>
+							</tbody>
+						</table>
+						<span class="reqTxt4">* 텍스트 단순수정 요청은 맞춤제작이 완료된 그림문자의 수정 시에만 가능합니다.</span>
+						
+						<div class="banner">
+							<p>대량발송 고객 가격협의 가능</p>
+							<ul>
+								<li><img src="/publish/images/content/banner_call01.png" alt=""><p>전화 <strong>1551-8011</strong><p></li>
+								<li><img src="/publish/images/content/banner_email01.png" alt=""><p>이메일<span>help@iten.co.kr</span> <button type="button" onclick="location.href='mailto:help@iten.co.kr'">상담하기</button></li>
+								<li><img src="/publish/images/content/banner_kakao01.png" alt=""><p>카카오톡<span>munjaon</span><a href="http://pf.kakao.com/_PxoTtb/chat" target="_blank">상담하기</a><p></li>
+							</ul>
+						</div>
+					</div>
+				</div>
+				<!--// 결제관리 - 요금안내/견적내기 - 요금안내 -->
+			
+				<!-- 결제관리 - 요금안내/견적내기 - 견적내기 -->
+				<div class="fee_cont" id="tab1_2">
+					<ul class="clause_list">
+						<li class="list_open on">
+							<div class="clause_list_head">
+								<div class="list_head_in">
+									<span><i></i>요금안내</span>
+									<button type="button" onclick="clause_list(this);"><i></i></button>
+								</div>
+							</div>
+							<div class="clause_list_body">
+								<table class="refund_info">
+									<caption>요금 안내</caption>
+									<colgroup>
+										<col style="width: 13%;">
+										<col style="width: auto;">
+										<col style="width: 25%;">
+									</colgroup>
+									<thead>
+										<tr>
+											<th>구분</th>
+											<th>특징</th>
+											<th>금액</th>
+										</tr>
+									</thead>
+									<tbody>
+										<tr>
+											<td>단문(SMS)</td>
+											<td>90Byte 이하 단문 메시지(이미지 첨부 불가)</td>
+											<td><span>${shortPrice}</span>원</td>
+										</tr>
+										<tr>
+											<td>장문(LMS)</td>
+											<td>91~2,000Byte 이하 장문메시지(이미지 첨부 불가)</td>
+											<td><span>${longPrice}</span>원</td>
+										<tr>
+											<td>그림문자(MMS)</td>
+											<td>2,000Byte 이하 문자 및 이미지를 포함하는 그림메시지(이미지 최대 3장 첨부 가능)</td>
+											<td>1장 : <span>${picturePrice}</span>원 / 2장 : <span>${picturePrice2}</span>원 / 3장 : <span>${picturePrice3}</span>원</td>
+										</tr>
+										<tr>
+											<td>카카오(알림톡)</td>
+											<td>카카오톡을 통해 친구 추가 여부와 관계 없이 휴대폰 번호로 발송이 가능한 정보성 메시지(1,000자 이하의 텍스트 및 이미지 중 카카오 사전 승인 건에 한하여 발송 가능)</td>
+											<td><span>${kakaoAtPrice}</span>원</td>
+										</tr>
+										<tr>
+											<td>팩스</td>
+											<td>전송 가능 파일(hwp, pdf, ppt, xls, xlsx, doc, jpg, jpeg, bmp, txt, gif, hwpml, tif, htm, html, gul)</td>
+											<td><span>${faxPrice}</span>원</td>
+										</tr>
+										<tr>
+											<td>맞춤제작</td>
+											<td>문자온 샘플 수정(글자, 색상, 폰트 등)</td>
+											<td><span>${customSamplePrice}</span>원</td>
+										</tr>
+										<tr>
+											<td>맞춤제작</td>
+											<td>이미지 편집(첨부이미지 1장)</td>
+											<td><span>${customEditPrice}</span>원</td>
+										</tr>
+										<tr>
+											<td>맞춤제작</td>
+											<td>이미지 편집(첨부이미지 3장이하)</td>
+											<td><span>${customEdit3Price}</span>원</td>
+										</tr>
+										<tr>
+											<td>맞춤제작</td>
+											<td>텍스트 단순수정</td>
+											<td><span>${customTextPrice}</span>원</td>
+										</tr>
+									</tbody>
+								</table>
+							</div>
+						</li>
+					</ul>
+					<div>
+						<p class="tType1_title">일반정보</p>
+						<table class="tType1">
+							<caption></caption>
+							<colgroup>
+								<col style="width: 150px;">
+								<col style="width: auto;">
+							</colgroup>
+							<tbody>
+								<tr>
+									<th>제목</th>
+									<td>
+										<label for="" class="label">견적내기 제목</label>
+										<input type="text" id="title" name="title" placeholder="견적서" onfocus="this.placeholder=''" onblur="this.placeholder='견적서'" style="width: 400px;" maxlength="20">
+									</td>
+								</tr>
+								<tr>
+									<th>수신자(기업명)</th>
+									<td>
+										<label for="" class="label">수신자(기업명) 입력</label>
+										<input type="text" id="recipientName" name="recipientName" style="width: 400px;" maxlength="18">
+									</td>
+								</tr>
+								<tr>
+									<th>담당자(성명)</th>
+									<td>
+										<label for="" class="label">담당자(성명) 입력</label>
+										<input type="text" id="managerName" name="managerName" style="width: 400px;" maxlength="18">
+									</td>
+								</tr>
+								<tr>
+									<th>연락처</th>
+									<td>
+										<label for="" class="label">연락처 입력</label>
+										<input type="text" onkeyup="inputPagesNumber(this)"; maxlength="11" id="mobile" name="mobile" style="width: 400px;">
+									</td>
+								</tr>
+								<tr>
+								<th>발행일</th>
+								<td>
+									<div class="calendar_wrap">
+										<input type="text" class="calendar" title="발행일" id="publishDate" name="publishDate">
+									</div>
+								</td>
+								</tr>
+							</tbody>
+						</table>
+						
+						<p class="tType1_title">품목정보</p>
+						<table class="tType1 itemInfo">
+							<caption></caption>
+							<colgroup>
+								<col style="width: 150px;">
+								<col style="width: auto;">
+							</colgroup>
+							<tbody>
+								<tr>
+									<th>구분</th>
+									<td>
+										<label for="" class="label">품목 선택</label>
+										<select id="smsItem" name="smsItem" onchange="fn_gunClear();" style="width: 210px;">
+										</select>
+										<label for="" class="label">품목 별 단가</label>
+										<input type="text" id="unitPrice" name="unitPrice" value="0" placeholder="" readonly class="readonly">
+										<p class="input_in">원</p>
+									</td>
+								</tr>
+								<tr>
+									<th>건수</th>
+									<td class="publish_btn">
+										<label for="" class="label">건수 입력</label>
+										<input type="text" id="caseNumber" numberOnly maxlength="10"  name="caseNumber" style="width: 210px;" onkeyup="inputNumberFormatPay(this)">
+										<p class="input_in">건</p>
+										<div>
+											<button type="button" class="btnType" id="btnItemAdd">품목추가<i class="arrow_img"></i></button>
+										</div>
+									</td>
+								</tr>
+								<tr id="faxPages" style="display:none;">
+                                    <th>매수</th>
+                                    <td class="publish_btn">
+                                        <label for="" class="label">매수 입력</label>
+                                        <input type="text" id="casePage" name="casePage" style="width: 210px;" onkeyup="inputPagesNumberFormatPay(this)">
+                                        <p class="input_in">매</p>
+                                    </td>
+                                </tr>
+							</tbody>
+						</table>
+						<div class="search_group_bottom2">
+							<div class="btnWrap1">
+								<button type="button" class="btnType" id="btnItemDel"><i class="remove_img"></i>선택삭제</button>
+							</div>
+						</div>
+						<!-- table -->
+						<div class="tType3 payDetail">
+							<!-- thead -->
+							<div class="tType3_hd">
+								<div>
+									<label for="" class="label">전체 선택</label>
+									<input type="checkbox" id="chkAll">
+								</div>
+								<div>품목</div>
+								<div>단가(원)</div>
+								<div>건수(건)</div>
+								<div>공급가액(원)</div>
+								<div>세액(부가세)</div>
+								<div>금액(원)</div>
+							</div>
+							<!-- tbody -->
+							<div class="tType3_bd_wrap" id="itemList">
+								<div class="tType3_bd">
+									<div></div>
+									<div></div>
+									<div></div>
+									<div></div>
+									<div></div>
+									<div></div>
+									<div></div>
+								</div>
+							</div>
+						</div>
+						<!--// table -->
+						<div class="tb_wrap totalPrice_tb">
+							<table class="tType4">
+								<colgroup>
+									<col style="width: 25%;">
+									<col style="width: 25%;">
+									<col style="width: 30%;">
+									<col style="width: 15%;">
+								</colgroup>
+								<thead>
+									<tr>
+										<th>공급가액</th>
+										<th>세액(부가세)</th>
+										<th>합계</th>
+										<th>비고</th>
+									</tr>
+								</thead>
+								<tbody>
+									<tr>
+										<td>
+											<span id="supplySumPriceStr"></span>
+										</td>
+										<td>
+											<span id="isVatStr"></span>
+										</td>
+										<td>
+											<span id="totSumPriceStr"></span>
+										</td>
+										<td style="text-align: center;">
+											<label for="" class="label">부가세 포함,별도 선택</label>
+											<select id="isVat" name="isVat" class="selType2">
+												<option value="0">부가세 별도</option>
+												<option value="1" selected>부가세 포함</option>
+											</select>
+										</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+						<!-- //주소록리스트 -->
+						<div style="text-align: center;">
+							<button class="btnType btnType16" onclick="showEst(); return false;">발행하기</button>
+						</div>
+					</div>
+				</div>
+				<!-- 결제관리 - 요금안내/견적내기 - 견적내기 -->
+			</div>
+		</div>
+		<!-- 결제관리 - 요금안내/견적내기 --> 
+	</div>
+	<!--// send top -->
+</form>
+<form name="infoPopForm" id="infoPopForm" method="post">
+	<input type="hidden" name="pageType" id="pageType" value=""/> 
+</form>
src/main/webapp/WEB-INF/jsp/web/pay/PayList.jsp
--- src/main/webapp/WEB-INF/jsp/web/pay/PayList.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/PayList.jsp
@@ -141,21 +141,11 @@
 }
 
 //환불요청 내역 프린트 출력 팝업
-function fnShowRefundPrintPopup(){
-	
-	//날자 체크
-	if( $('#startDate').val() != '' && $('#endDate').val() != '' ){
-		var iChkBeginDe = Number($('#startDate').val().replaceAll("/", ""));
-		var iChkEndDe =  Number($('#endDate').val().replaceAll("/", ""));
-		if(iChkBeginDe > iChkEndDe || iChkEndDe < iChkBeginDe ){
-			alert("기간설정의 시작일자는 종료일자 보다 클수 없습니다.");
-			return;
-		}
-	}
+function fnShowRefundPrintPopup(moid){
 	
 	//만들려는 팝업의 크기
-	var popup_wid = '840';
-	var popup_ht = '900';
+	var popup_wid = '790';
+	var popup_ht = '800';
 
 	var popup_left = (window.screen.width / 2) - (popup_wid / 2);
 	var popup_top =(window.screen.height / 2) - (popup_ht / 2);
@@ -165,6 +155,23 @@
 	$("#listForm").attr({"action":"/web/member/pay/PayPrintRefundListPopUpAjax.do", "method":"post"}).submit();
 }
 
+//거래명세서 팝업
+function fnShowPayInvoicePrintPopup(moid){
+	
+	
+	//만들려는 팝업의 크기
+	var popup_wid = '790';
+	var popup_ht = '800';
+
+	var popup_left = (window.screen.width / 2) - (popup_wid / 2);
+	var popup_top =(window.screen.height / 2) - (popup_ht / 2);
+
+	document.invoiceForm.moid.value = moid;
+	
+	$("#invoiceForm").attr("target","invoicePrint");
+	window.open('', 'invoicePrint', 'width='+ popup_wid +', height='+ popup_ht +', left=' + popup_left + ', top='+ popup_top +',scrollbars=1');
+	$("#invoiceForm").attr({"action":"/web/member/pay/payInvoicePopupAjax.do", "method":"post"}).submit();
+}
 </script>
 
 <!-- content 영역 -->
@@ -176,7 +183,7 @@
 			<li class="tab"><button type="button" onclick="location.href='/web/pay/PayGuide.do'">요금안내/견적내기</button></li>
 			<li class="tab"><button type="button" onclick="location.href='/web/member/pay/PayView.do'">결제하기</button></li>
 			<li class="tab active"><button type="button" >요금 결제내역</button></li>
-			<li class="tab"><button type="button" onclick="location.href='/web/member/pay/PayUserSWList.do'">요금 사용내역</button></li>
+			<li class="tab"><button type="button" onclick="location.href='/web/member/pay/payUserSWList.do'">요금 사용내역</button></li>
 			<!-- 현금영수증 자동발행 주석 -->
 			<!-- <li class="tab"><button type="button" onclick="location.href='/web/member/pay/BillPub.do'">계산서/현금영수증 발행 등록</button></li> -->
 			<li class="tab"><button type="button" onclick="location.href='/web/member/pay/BillPub.do'">세금계산서 발행 등록</button></li>
src/main/webapp/WEB-INF/jsp/web/pay/PayListAllAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/pay/PayListAllAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/PayListAllAjax.jsp
@@ -409,13 +409,13 @@
 			</tbody>
 		</table>
 		<div class="excel_middle">
-			<div class="select_btnWrap clearfix">
+			<div class="select_btnWrap">
 				<div class="add_text2" style="line-height: 1.3em;">
 					※ 요금 결제내역은 결제일을 기준으로 최대 6개월까지만 조회가능합니다.
 					<br />
 					<c:choose>
 						<c:when test="${prePaymentYn eq 'Y'}">
-							※ 간편결제 영수증은 결제하신 서비스를 통해 제공됩니다.	
+							※ 간편결제 영수증은 결제하신 서비스를 통해 제공됩니다.<br />	
 						</c:when>
 						<c:otherwise>
 							※ 후불제 고객의 사용금액 결제수단은 계좌이체만 가능합니다. <br /> 
@@ -423,6 +423,7 @@
 							<p class="accountinfo"><span>-입금은행:</span>우리은행<span>-입금계좌:</span>1005-904-154328<span>-받는사람:</span>주식회사 아이티앤</p>
 						</c:otherwise>
 					</c:choose>
+					※ 거래명세서는 세금계산서 발행일로부터 30일 이내에만 출력 가능합니다.
 				</div>
 				<div style="padding-top: 10px;">
                     <button type="button" class="level_btn" data-tooltip="level_check_popup01" id="levelIconBtn" style="display: none;">
@@ -447,15 +448,13 @@
 		<div class="tb_wrap pay3_list">
 			<table class="tType4">
 				<colgroup>
-					<%-- <col style="width: 40px;"> --%>
 					<col style="width: 5%;">
 					<col style="width: 18%;">
 					<col style="width: 20%;">
 					<col style="width: 15%;">
 					<col style="width: 15%;">
 					<col style="width: 15%;">
-					<%-- <col style="width: 30%;"> --%>
-					<col style="width: 20%;">
+					<col style="width: 25%;">
 				</colgroup>
 				<thead>
 					<tr>
@@ -506,7 +505,25 @@
 				<tbody>
 				<c:choose>
 					<c:when test="${not empty resultList}">
+						<!-- 오늘날짜 - 거래명세서 버튼 조건으로 사용 -->
+						<c:set var="now" value="<%=new java.util.Date()%>" />
+						
 						<c:forEach var="result" items="${resultList}" varStatus="status">
+						<!-- 거래명세서 버튼 조건(250723)
+								1.전용계좌 or 즉시이체
+								2.세금계산서 발행 완료 이후 30일간 노출
+								3.발행 최대 횟수 2회 -->
+						<c:set var="invoiceYn" value="N"/>
+						<c:if test="${(result.payMethod eq 'BANK' or result.payMethod eq 'VBANK' or result.payMethod eq 'AFTERPAY')
+											and (result.confirmYn eq 'Y' and result.rcptType eq '9')}">
+							<c:set var="confirmDateStr" value="${fn:substring(result.confirmDate,0,10)}" />
+							<fmt:parseDate value="${confirmDateStr}" pattern="yyyy-MM-dd" var="confirmDateObj" />
+							<c:set var="dayDiff" value="${(now.time - confirmDateObj.time) / (1000*60*60*24)}" />
+							<c:if test="${dayDiff <= 31}">
+								<c:set var="invoiceYn" value="Y"/>
+							</c:if>
+						</c:if>
+						
 						<tr class="tType3_bd">
 							<%-- <td>
 								<label for="" class="label">한 줄 전체 선택</label> <input type="checkbox" name="eachChk">
@@ -628,7 +645,7 @@
 											</c:if>
 											<!-- 발행완료 -->
 											<c:if test="${result.confirmYn eq 'Y'}">
-												<c:if test="${result.rcptType eq '9'}">
+												<c:if test="${result.rcptType eq '9' and invoiceYn eq 'N'}">
 													<p class="fwRg c_002c9a">세금계산서 발행완료</p>
 												</c:if>
 												<c:if test="${result.rcptType eq '1' || result.rcptType eq '2'}">
@@ -694,7 +711,7 @@
 											</c:if>
 											<!-- 발행완료 -->
 											<c:if test="${result.confirmYn eq 'Y'}">
-												<c:if test="${result.rcptType eq '9'}">
+												<c:if test="${result.rcptType eq '9' and invoiceYn eq 'N'}">
 													<p class="fwRg c_002c9a">세금계산서 발행완료</p>
 												</c:if>
 												<c:if test="${result.rcptType eq '1' || result.rcptType eq '2'}">
@@ -712,7 +729,13 @@
 											</c:if>
 										</c:if>										
 									</c:otherwise>
-								</c:choose>							
+								</c:choose>
+								
+								<c:if test="${invoiceYn eq 'Y'}">	
+									<!-- <button class="btnType btnType20 btn_use_status" onclick="window.open('/publish/transaction_statement.html','','width=790,height=800')">거래명세서</button> -->
+									<button class="btnType btnType20 btn_use_status" onclick="fnShowPayInvoicePrintPopup('<c:out value="${result.moid}"/>'); return false;">거래명세서</button>
+								</c:if>
+												
 							</td>
 						</tr>
 						</c:forEach>
@@ -1065,4 +1088,8 @@
             </div>            
         </div>
     </div>
+    <!-- 거래명세서 팝업 -->
+	<form id="invoiceForm" name="invoiceForm" method="post">
+		<input type="hidden" id="moid" name="moid" value=""/>
+	</form>	
     <!-- 등급 및 누적결제액 확인 팝업 data-tooltip:level_check_popup01 끝 -->	
src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWList.jsp
--- src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWList.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWList.jsp
@@ -24,6 +24,9 @@
 var lastfuledday = "";
 var thisfulstlday = "";
 var thisfuledtlday = "";
+var threefulstday = "";
+var threefuledday = "";
+
 $(document).ready(function(){
 	payUserListAjax(1);
 	var date = new Date() ;
@@ -47,7 +50,33 @@
 	thisYearStart = date.getFullYear() + "/01/01" ;
 	thisYearEnd = date.getFullYear() + "/12/31" ;
 	
+	//시작일 3개월 / 종료일 현재 조회
+	var threeMonthAgo = new Date(date);
+	threeMonthAgo.setMonth(threeMonthAgo.getMonth() - 3);
+	threeMonthAgo.setDate(threeMonthAgo.getDate() + 1); //하루 더하기
+	
+    threefulstday = threeMonthAgo.getFullYear() + "/";
+    threefulstday += (threeMonthAgo.getMonth() + 1) < 10 ? "0" + (threeMonthAgo.getMonth() + 1) : (threeMonthAgo.getMonth() + 1) + "";
+    threefulstday += "/";
+    threefulstday += threeMonthAgo.getDate() < 10 ? "0" + threeMonthAgo.getDate() : threeMonthAgo.getDate();
+    
+	threefuledday = date.getFullYear() + "/";
+	threefuledday += (date.getMonth() + 1) < 10 ? "0" + (date.getMonth() + 1) : (date.getMonth() + 1) + "";
+	threefuledday += "/";
+	threefuledday += date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
+	
+	$(document).on('change','#pageUnitS', function(){
+		setPageUnit($(this).val());
+		
+		payUserListAjax(1);
+		
+	});
+	
 });
+
+function setPageUnit(val){
+	$('#pageUnit').val(val); 
+}
 
 // 기간 요일 지정
 function setCalVal(val,targetObj){
@@ -61,10 +90,16 @@
 		return;
 	};
 	
+	if(!fn_G_limitDateChk("startDate", 3)){
+		return;
+	};
 	
 	document.listForm.pageIndex.value = pageNo;
 	var sendData= $(document.listForm).serializeArray();
-	$("#payUserListLoad").load("/web/member/pay/PayUserSWListAjax.do", sendData ,function(response, status, xhr){
+	//조회 완료 인지를 위하여 hide show로 화면 변화 추가
+	$("#payUserListLoad").hide();
+	$("#payUserListLoad").load("/web/member/pay/payUserSWListAjax.do", sendData ,function(response, status, xhr){
+		$("#payUserListLoad").show();
 	});
 }
 
@@ -74,7 +109,7 @@
 	
 	document.listForm.pageIndex.value = pageNo;
 	var sendData= $(document.listForm).serializeArray();
-	$("#payUserListLoad").load("/web/member/pay/PayUserSWListAjax.do", sendData ,function(response, status, xhr){
+	$("#payUserListLoad").load("/web/member/pay/payUserSWListAjax.do", sendData ,function(response, status, xhr){
 	});
 }
 
@@ -90,42 +125,6 @@
 	$("#pageType").val(pageType);
 	payUserListTabMoveAjax(1);
 }
-
-
-
-
-
-function getUsedCashTotList(){
-    var sendData = {
-        "startDate" : $("#startDate").val(),
-        "endDate" : $("#endDate").val()
-    };
-
-    console.log('sendData : ', sendData);
-//         url: '/web/member/pay/getUsedCashTotList.do',
-
-    $.ajax({
-		type:"POST",
-		url:"<c:url value='/web/member/pay/getUsedCashTotList.do' />",
-		data: sendData,
-		dataType:'json',
-		success:function(data){
-            console.log('data :: ', data);
-            if(data.status == 'OK') {
-                // 성공 처리
-            } else {
-                // 오류 처리
-            }
-        },
-        error: function(jqXHR, textStatus, errorThrown) {
-            console.error("AJAX Error:", textStatus, errorThrown);
-            console.error("Response:", jqXHR.responseText);
-        }
-    });
-}
-	
-	
-
 
 
 /* 윈도우팝업 열기 */
@@ -534,6 +533,7 @@
 			<form id="listForm" name="listForm" method="post">
 				<input type="hidden" id="pageType" name="pageType"  value="<c:out value='${searchVO.pageType}'/>"/>
 				<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value='${searchVO.pageIndex}'/>"/>
+				<input type="hidden" id="pageUnit" name="pageUnit" value="10"/>
 				<div class="excel_middle">
 					<div class="select_btnWrap clearfix">
 						<div class="btn_left">
@@ -543,9 +543,9 @@
 								<span class="dateEtc">~</span>
 								<input type="text" class="endDate inp calendar" title="검색 종료일" id="endDate" name="endDate" value="${endDate }" data-datecontrol="true">
 							</div>
-							<button type="button" onclick="setCalVal(thisYearStart,'startDate');setCalVal( thisYearEnd,'endDate'); return false;"  class="btnType btnType19">이번년도</button>
 							<button type="button" onclick="setCalVal(lastfulstday,'startDate');setCalVal( lastfuledday,'endDate'); return false;"  class="btnType btnType19">전월</button>
 							<button type="button" onclick="setCalVal(thisfulstlday,'startDate');setCalVal( thisfuledtlday,'endDate'); return false;"  class="btnType btnType19">당월</button>
+							<button type="button" onclick="setCalVal(threefulstday,'startDate');setCalVal( threefuledday,'endDate'); return false;"  class="btnType btnType19">3개월</button>
 							<button type="button" class="btnType6" onclick="payUserListAjax(1); return false;">조회</button>
 							<span class="reqTxt4">
 								<span class="vMiddle">*</span> 조회기간의 사용내역만 보여집니다.
src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWListAjax.jsp
@@ -91,8 +91,39 @@
 });
 
 
-/* 사용내역서 클릭 시 내역서 새창 팝업 오픈  */
+/* 250530 - 거래명세서, 사용내역서 분리  */
 function fnShowPrintPopup() {
+    //만들려는 팝업의 크기
+    var url = "printMsgUsageDetailsAjax.do";
+    var popup_wid = '790';
+    var popup_ht = '800';
+    var popup_left = (window.screen.width/2)-(popup_wid/2);
+    var popup_top =(window.screen.height/2)-(popup_ht/2);
+    
+	//날짜 체크
+	if(($('#startDate').val() != '' && $('#endDate').val() == '') || ($('#startDate').val() == '' && $('#endDate').val() != '')){
+		alert("기간설정을 정상적으로 선택해 주세요.");
+		return;
+	}
+	
+	if( $('#startDate').val() != '' && $('#endDate').val() != '' ){
+		var iChkBeginDe = Number($('#startDate').val().replaceAll("/", ""));
+		var iChkEndDe =  Number($('#endDate').val().replaceAll("/", ""));
+		if(iChkBeginDe > iChkEndDe || iChkEndDe < iChkBeginDe ){
+			alert("기간설정의 시작일자는 종료일자 보다 클수 없습니다.");
+			return;
+		}
+	}
+	
+	document.listForm.action = url;
+	document.listForm.method = "post"; 
+	window.open("about:blank", 'printPop', 'width='+ popup_wid +', height='+ popup_ht +', left=' + popup_left + ', top='+ popup_top + ', fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1');
+	document.listForm.target = "printPop";
+	document.listForm.submit();
+}
+
+/* 사용내역서 클릭 시 내역서 새창 팝업 오픈  */
+/* function fnShowPrintPopup() {
     //만들려는 팝업의 크기
     var url = "";
     var popup_wid = '830';
@@ -131,7 +162,7 @@
 	window.open("about:blank", 'printPop', 'width='+ popup_wid +', height='+ popup_ht +', left=' + popup_left + ', top='+ popup_top + ', fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1');
 	document.listForm.target = "printPop";
 	document.listForm.submit();
-}
+} */
 
 /* 사용내역서 클릭 시 내역서 새창 팝업 오픈  */
 function fnShowPrintPopup_OLD() { 
@@ -214,41 +245,48 @@
 <div class="pay_cont current" id="listTab2_1">
 	<input type="hidden" id="searchSortCnd" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
 	<input type="hidden" id="searchSortOrd" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
+	<input type="hidden" id="addVatType" name="addVatType" value="N" />
 	<div class="list_info">
 		<p>총 <span>${paginationInfo.totalRecordCount}</span>건 &nbsp; (<fmt:formatNumber value="${totSuccSendPrice}" pattern="" /> 원)</p>
 		<div>
-			<button type="button" class="print_btn" onclick="javascript:fnPayUserPrintPopup();">
+			<!-- <button type="button" class="print_btn" onclick="javascript:fnPayUserPrintPopup();">
 				<i class="print_img"></i>인쇄하기
 			</button>
 			<button type="button" class="pdf_btn" onclick="javascript:fnShowPdfPrintPopup();">
 				<i class="pdf_img"></i>PDF저장
-			</button>
+			</button> -->
+			<c:choose>		
+				<c:when test="${not empty payUserSWList}">
+					<button type="button" class="btnType btn_36 border_gray btnType12" onclick="fnShowPrintPopup(); return false;">사용내역서</button>
+				</c:when>
+				<c:otherwise>
+					<button type="button" class="btnType btn_36 border_gray btnType12" onclick="alert('선택한 조회기간의 요금사용내역이 없습니다.');">사용내역서</button>
+				</c:otherwise>
+			</c:choose>
 			<button type="button" class="excel_btn">
 				<i class="downroad"></i>엑셀 다운로드
 			</button>
+			<label for="pageUnitS" class="label">검색조건 선택</label>
+			<select id="pageUnitS" class="selType2">
+				<option value="10" <c:if test="${paginationInfo.recordCountPerPage == '10'}">selected</c:if> >10줄</option>
+				<option value="20" <c:if test="${paginationInfo.recordCountPerPage == '20'}">selected</c:if> >20줄</option>
+				<option value="30" <c:if test="${paginationInfo.recordCountPerPage == '30'}">selected</c:if> >30줄</option>
+				<option value="100" <c:if test="${paginationInfo.recordCountPerPage == '100'}">selected</c:if> >100줄</option>
+			</select>
 		</div>
 	</div>
 	<div class="tb_wrap">
 		<table class="tType4">
 			<colgroup>
-				<%-- <col style="width: 5%;"> --%>
-				<col style="width: *%;">
-				<col style="width: 15%;">
-				<col style="width: 15%;">
-				<col style="width: 15%;">
-				<col style="width: 20%;">
-<%-- 				<col style="width: 20%;"> --%>
-				<%-- <col style="width: 10%;">
+				<col style="width: auto;">
+				<col style="width: 9%;">
 				<col style="width: 10%;">
-				<col style="width: 10%;">
-				<col style="width: 10%;"> --%>
+				<col style="width: 12%;">
+				<col style="width: 12%;">
+				<col style="width: 16%;">
 			</colgroup>
 			<thead>
 				<tr>
-					<%-- <th rowspan="2">
-						<label for="" class="label">전체 선택</label>
-						<input type="checkbox" id="chkAll">
-					</th> --%>
 					<th rowspan="2">
 						발송일시
 						<div class="sort_wrap">
@@ -256,28 +294,18 @@
 						</div>
 					</th>
 					<th rowspan="2">
-						문자유형
+						형태
 						<div class="sort_wrap">
 							<input type="button" class="sort sortBtn" id="sort_orderByCode">
 						</div>
 					</th>
 					<th rowspan="2">내용</th>
-					<th rowspan="2">발송건수</th>
-					<!-- <th colspan="2">충전</th>
-					<th colspan="2">사용</th>
-					<th colspan="2">잔액</th> -->
-<!-- 					<th colspan="2">사용</th> -->
-					<th>사용</th>
-					<!-- <th>반환(실패)</th> -->
-					<!-- <th colspan="2">잔액</th> -->
+					<th colspan="2">발송건수</th>
+					<th rowspan="2">금액(원)</th>
 				</tr>
 				<tr>
-					<th>충전금</th>
-<!-- 					<th>포인트</th> -->
-					<!-- <th>캐시</th> -->
-					<!-- <th>포인트</th> -->
-					<!-- <th>충전금</th>
-					<th>포인트</th> -->
+					<th>성공</th>
+					<th style="border-right:1px solid #ccc;">실패</th>
 				</tr>
 			</thead>
 			<tbody>
@@ -285,10 +313,6 @@
 					<c:when test="${not empty payUserSWList}">
 						<c:forEach var="payUserInfo" items="${payUserSWList}" varStatus="status">
 							<tr>
-								<%-- <td>
-									<label for="" class="label">선택</label>
-									<input type="checkbox" name="eachChk">
-								</td> --%>
 								<td>
 									<p><c:out value="${payUserInfo.reqDate}"/></p>
 								</td>
@@ -339,11 +363,11 @@
 										<c:if test="${payUserInfo.msgTypeTxt eq 'fax'}">
 											(<c:out value="${payUserInfo.fileCnt}"/>매)
 										</c:if>
-										/ <c:out value="${payUserInfo.failSendCnt}"/>
-										<%-- <c:out value="${payUserInfo.sendCount}"/>
-										<c:if test="${payUserInfo.msgTypeTxt eq 'fax'}">
-										(<c:out value="${payUserInfo.fileCnt}"/>)
-										</c:if> --%>
+									</p>
+								</td>
+								<td>
+									<p class="fwRg c_222">
+										<c:out value="${payUserInfo.failSendCnt}"/>
 									</p>
 								</td>
 								<td>
@@ -352,58 +376,12 @@
 										<c:out value="${succCash}"/>
 									</p>
 								</td>
-								<%-- <td>
-									<p class="fwRg c_002c9a">
-										<fmt:formatNumber type="number" maxFractionDigits="3" value="${payUserInfo.failSendPrice}" var="failPrice" />
-										<c:out value="${failPrice}"/>
-									</p>
-								</td> --%>
-								<!-- <td>
-									<p class="fwRg c_002c9a">
-										0
-									</p>
-								</td> -->
-								<%-- <td>
-									<p>
-										<fmt:formatNumber type="number" maxFractionDigits="3" value="${payUserInfo.befCash}" var="befCash" />
-										<c:out value="${befCash}"/>
-									</p>
-								</td>
-								<td>
-									<p>
-										<fmt:formatNumber type="number" maxFractionDigits="3" value="${payUserInfo.befPoint}" var="befPoint" />
-										<c:out value="${befPoint}"/>																											
-									</p>
-								</td>
-								<td>
-									<p class="fwRg c_002c9a">
-										<fmt:formatNumber type="number" maxFractionDigits="3" value="${payUserInfo.totPrice}" var="totPrice" />
-										<c:out value="${totPrice}"/>
-									</p>
-								</td>
-								<td>
-									<p class="fwRg c_002c9a">
-										0
-									</p>
-								</td> --%>
-								<%-- <td>
-									<p class="fwRg c_222">
-										<fmt:formatNumber type="number" maxFractionDigits="3" value="${payUserInfo.thisPoint}" var="thisPoint" />
-										<c:out value="${thisPoint}"/>
-									</p>
-								</td>
-								<td>
-									<p class="fwRg c_222">
-										<fmt:formatNumber type="number" maxFractionDigits="3" value="${payUserInfo.befPoint}" var="befPoint" />
-										<c:out value="${befPoint}"/>																		
-									</p>
-								</td> --%>
 							</tr>
 						</c:forEach>
 					</c:when>
 					<c:otherwise>
 						<tr>
-							<td colspan="5">
+							<td colspan="6">
 								검색 결과가 없습니다.
 							</td>
 						</tr>
@@ -412,7 +390,9 @@
 			</tbody>
 		</table>
 	</div>
-	<div class="publish_btn clearfix">
+	
+	<!-- 250530 - 거래명세서, 사용내역서 분리 -->
+	<%-- <div class="publish_btn clearfix">
 		<div>
 			<input type="radio" name="publish" id="publish1" value="statement">
 			<label for="publish1">거래명세서</label>
@@ -434,7 +414,7 @@
 				</c:otherwise>
 			</c:choose>		
 		</div>
-	</div>
+	</div> --%>
 	
 	<!-- pagination -->
 	<c:if test="${!empty payUserSWList}">
src/main/webapp/WEB-INF/jsp/web/pay/PayView.jsp
--- src/main/webapp/WEB-INF/jsp/web/pay/PayView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/PayView.jsp
@@ -41,7 +41,7 @@
 	var nextPayMethod = "";
 	$.ajax({
 	    type: "POST",
-	    url: "/web/member/pay/selectNextPayMethodAjax.do",
+	    url: "/web/member/pay/selectLastPayMethodAjax.do",
 	    data: {},
 	    dataType:'json',
 	    async: false,
@@ -817,7 +817,7 @@
                     <li class="tab"><button type="button" onclick="location.href='/web/pay/PayGuide.do'">요금안내/견적내기</button></li>
                     <li class="tab active"><button type="button">결제하기</button></li>
                     <li class="tab"><button type="button" onclick="location.href='/web/member/pay/PayList.do'">요금 결제내역</button></li>
-                    <li class="tab"><button type="button" onclick="location.href='/web/member/pay/PayUserSWList.do'">요금 사용내역</button></li>
+                    <li class="tab"><button type="button" onclick="location.href='/web/member/pay/payUserSWList.do'">요금 사용내역</button></li>
 					<!-- 현금영수증 자동발행 주석 -->
 					<!-- <li class="tab"><button type="button" onclick="location.href='/web/member/pay/BillPub.do'">계산서/현금영수증 발행 등록</button></li> -->
 					<li class="tab"><button type="button" onclick="location.href='/web/member/pay/BillPub.do'">세금계산서 발행 등록</button></li>
 
src/main/webapp/WEB-INF/jsp/web/pay/payInvoicePrintPopup.jsp (added)
+++ src/main/webapp/WEB-INF/jsp/web/pay/payInvoicePrintPopup.jsp
@@ -0,0 +1,384 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+<%@ page import="itn.com.cmm.LoginVO" %>
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="UTF-8">
+		<meta http-equiv="X-UA-Compatible" content="IE=edge">
+		<title>거래명세서</title>
+		<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500;700;900&display=swap" rel="stylesheet">
+		<link rel="stylesheet" href="/publish/css/reset.css">
+		<link rel="stylesheet" href="/publish/css/common.css">
+		<link rel="stylesheet" href="/publish/css/estimate.css">
+		<link rel="stylesheet" href="/publish/css/font.css">
+		<link rel="stylesheet" href="/publish/css/button.css">
+	</head>
+	<script type="text/javascript">
+		function f_print(){
+			
+			document.getElementById('est_btn_wrap').style.display = 'none';
+			var initBody = document.body.innerHTML;
+			window.onbeforeprint = function(){
+			// print_area는 인쇄하고자 하는 영역의 ID를 말합니다.( 필수 )
+// 			document.body.innerHTML = document.getElementById("print_area").innerHTML;
+			}
+			window.onafterprint = function(){
+				document.body.innerHTML = initBody;
+			}
+			window.print();
+			document.getElementById('est_btn_wrap').style.display = '';
+		}
+	</script>
+	<body>
+		<!-- 견적서 -->
+		<div class="estimate_wrap">
+        	<div class="estimate">
+	            <div class="est_head clearfix">
+	                <img src="/publish/images/CI.png" alt="문자온 CI">
+	                <div class="clearfix">
+	                    <p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
+	                    <p>TEL 1551-8011</p>
+	                </div>
+	            </div>
+	            <div class="est_body">
+	                <h2>거래명세서<span style="font-size:20px;font-weight:400;">(공급받는자 보관용)</span></h2>
+	                <div class="cont1 tb_ver2" style="display:flex;">
+	                    <div style="width:calc((100% - 40px)/2);">
+	                        <p>공급받는 자</p>
+	                        <table class="est_table">
+	                            <caption>등록번호, 상호, 성명, 전화번호, 이메일 정보 제공</caption>
+	                            <colgroup>
+	                                <col style="width: 60px;">
+	                                <col style="width: auto;">
+	                            </colgroup>
+	                            <tbody>
+	                                <tr>
+	                                    <th>등록번호</th>
+	                                    <td>
+	                                    	<c:choose>
+			                                    <c:when test="${result.dept eq 'c'}">
+			                                    	<c:out value="${result.bizNo}"/>
+	    	                                	</c:when>
+	    	                                	<c:otherwise>
+	    	                                		-
+	    	                                	</c:otherwise>
+	                                    	</c:choose>
+	                                        <!--(개인회원인 경우 하이픈(-) 처리)-->
+	                                    </td>
+	                                </tr>
+	                                <tr>
+	                                    <th style="letter-spacing:-0.69px;">상&ensp;&ensp;&ensp;&nbsp;&nbsp;호</th>
+	                                    <td>
+	                                    	<c:choose>
+			                                    <c:when test="${result.dept eq 'c'}">
+			                                    	<c:out value="${result.mberNm}"/>
+	    	                                	</c:when>
+	    	                                	<c:otherwise>
+	    	                                		-
+	    	                                	</c:otherwise>
+	                                    	</c:choose>
+	                                    </td>
+	                                </tr>
+	                                <tr>
+	                                    <th style="letter-spacing:-0.69px;">성&ensp;&ensp;&ensp;&nbsp;&nbsp;명</th>
+	                                    <td>
+	                                    	<c:choose>
+			                                    <c:when test="${result.dept eq 'c'}">
+			                                    	<c:out value="${result.managerNm}"/>
+	    	                                	</c:when>
+	    	                                	<c:otherwise>
+	    	                                		<c:out value="${result.mberNm}"/>
+	    	                                	</c:otherwise>
+	                                    	</c:choose>
+	                                    </td>
+	                                </tr>
+	                                <tr>
+	                                    <th>전화번호</th>
+	                                    <td>
+	                                    	<c:out value="${result.mbtlNum}"/>
+	                                    </td>
+	                                </tr>
+	                                <tr>
+	                                    <th style="letter-spacing:-0.85px;">이&ensp;메&ensp;일</th>
+	                                    <td>
+	                                    	<c:out value="${result.email}"/>
+	                                    </td>
+	                                </tr>
+	                            </tbody>
+	                        </table>
+	                    </div>
+	                    <div style="width:calc((100% - 40px)/2);">
+	                        <p>공급자</p>
+	                        <img src="/publish/images/content/stamp.png" alt="도장" class="stamp mCS_img_loaded">
+	                        <table class="est_table">
+	                            <caption>등록번호, 상호, 성명, 전화번호, 이메일 정보 제공</caption>
+	                            <colgroup>
+	                                <col style="width: 60px;">
+	                                <col style="width: auto;">
+	                            </colgroup>
+	                            <tbody>
+	                                <tr>
+	                                    <th>등록번호</th>
+	                                    <td>653-87-00858</td>
+	                                </tr>
+	                                <tr>
+	                                    <th style="letter-spacing:-0.69px;">상&ensp;&ensp;&ensp;&nbsp;&nbsp;호</th>
+	                                    <td>주식회사 아이티앤</td>
+	                                </tr>
+	                                <tr>
+	                                    <th style="letter-spacing:-0.69px;">성&ensp;&ensp;&ensp;&nbsp;&nbsp;명</th>
+	                                    <td>유인식</td>
+	                                </tr>
+	                                <tr>
+	                                    <th>전화번호</th>
+	                                    <td>1551-8011</td>
+	                                </tr>
+	                                <tr>
+	                                    <th style="letter-spacing:-0.85px;">이&ensp;메&ensp;일</th>
+	                                    <td>help@iten.co.kr</td>
+	                                </tr>
+	                            </tbody>
+	                        </table>
+	                    </div>
+	                </div>
+	                <div class="cont3">
+	                	<fmt:formatNumber type="number" maxFractionDigits="3" value="${result.amt}" var="commaAmt" />
+	                	<fmt:formatNumber type="number" maxFractionDigits="3" value="${result.cash}" var="commaCash" />
+	                	<fmt:formatNumber type="number" maxFractionDigits="3" value="${result.amt - result.cash}" var="commaETC" />
+	                    <div class="est_table2_wrap">
+	                        <table class="est_table2">
+	                            <caption>작성일자, 공급가액, 세액, 비고 정보를 제공하는 표</caption>
+	                            <colgroup>
+	                                <col style="width: 25%;">
+	                                <col style="width: 25%;">
+	                                <col style="width: 25%;">
+	                            </colgroup>
+	                            <thead>
+	                                <tr>
+	                                    <th scope="col">작성일자</th>
+	                                    <th scope="col">공급가액</th>
+	                                    <th scope="col">세액</th>
+	                                </tr>
+	                            </thead>
+	                            <tbody>
+	                            	<fmt:parseDate value="${result.regDate}" pattern="yyyy-MM-dd HH:mm:ss.S" var="parsedDate"/>
+	                                <tr>
+	                                    <td><fmt:formatDate value="${parsedDate}" pattern="yyyy-MM-dd"/></td>
+	                                    <td><c:out value="${commaCash}"/></td>
+	                                    <td><c:out value="${commaETC}"/></td>
+	                                </tr>
+	                            </tbody>
+	                            <tfoot>
+	                                <tr>
+	                                    <th>비고</th>
+	                                    <td style="padding:0 0 0 20px;">
+	                                    	<c:choose>
+			                                    <c:when test="${result.prePaymentYn eq 'N'}">
+			                                    	사용기간(${result.startDate} ~ ${result.endDate})
+	    	                                	</c:when>
+	    	                                	<c:otherwise>
+	    	                                		-
+	    	                                	</c:otherwise>
+	                                    	</c:choose>
+	                                    
+	                                    </td>
+	                                </tr>
+	                            </tfoot>
+	                        </table>
+	                    </div>
+	
+	
+	                    <div class="est_table2_wrap" style="margin:20px 0 0 0;">
+	                        <table class="est_table2">
+	                            <caption>월, 일, 품목, 규격, 수량, 단가, 공급가액, 세액, 비고 정보를 제공하는 표</caption>
+	                            <colgroup>
+	                                <col style="width: 60px;">
+	                                <col style="width: 60px;">
+	                                <col style="width: auto;">
+	                                <col style="width: 60px;">
+	                                <col style="width: 60px;">
+	                                <col style="width: 60px;">
+	                                <col style="width: 100px;">
+	                                <col style="width: 60px;">
+	                                <col style="width: 70px;">
+	                            </colgroup>
+	                            <thead>
+	                                <tr>
+	                                    <th scope="col">월</th>
+	                                    <th scope="col">일</th>
+	                                    <th scope="col">품목</th>
+	                                    <th scope="col">규격</th>
+	                                    <th scope="col">수량</th>
+	                                    <th scope="col">단가</th>
+	                                    <th scope="col">공급가액</th>
+	                                    <th scope="col">세액</th>
+	                                    <th scope="col">비고</th>
+	                                </tr>
+	                            </thead>
+	                            <tbody>
+	                                <tr>
+	                                    <td><fmt:formatDate value="${parsedDate}" pattern="M"/></td>
+	                                    <td><fmt:formatDate value="${parsedDate}" pattern="d"/></td>
+	                                    <td>문자온 메시징 서비스 이용료</td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td><c:out value="${commaCash}"/></td>
+	                                    <td><c:out value="${commaETC}"/></td>
+	                                    <td>-</td>
+	                                </tr>
+	                                <tr>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                </tr>
+	                                <tr>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                </tr>
+	                                <tr>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                </tr>
+	                                <tr>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                </tr>
+	                                <tr>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                </tr>
+	                                <tr>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                </tr>
+	                                <tr>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                    <td></td>
+	                                </tr>
+	                            </tbody>
+	
+	                            <!-- 후불제 -->
+	                            <!-- <tfoot>
+	                                <tr>
+	                                    <th colspan="2">합계금액</th>
+	                                    <th>전잔액</th>
+	                                    <th colspan="2">입금액</th>
+	                                    <th colspan="2">현잔액</th>
+	                                    <th colspan="2" rowspan="2" style="background:#fff;vertical-align:middle;">이 금액을 [<span>청&ensp;구</span>]함</th>
+	                                </tr>
+	                                <tr>
+	                                    <td style="text-align:center;" colspan="2">550,000</td>
+	                                    <td style="text-align:center;">-</td>
+	                                    <td style="text-align:center;" colspan="2">-</td>
+	                                    <td style="text-align:center;" colspan="2">550,000</td>
+	                                </tr>
+	                            </tfoot> -->
+	                            <!-- //후불제 -->
+	
+	                            <!-- 일반회원(선불제) -->
+	                            <tfoot>
+	                                <tr>
+	                                    <th colspan="2">합계금액</th>
+	                                    <th>전잔액</th>
+	                                    <th colspan="2">입금액</th>
+	                                    <th colspan="2">현잔액</th>
+	                                    <th colspan="2" rowspan="2" style="background:#fff;vertical-align:middle;">
+	                                    
+	                                    	<c:choose>
+			                                    <c:when test="${result.prePaymentYn eq 'N' and result.pgStatus ne '1'}">
+			                                    	이 금액을 [<span>청&ensp;구</span>]함
+	    	                                	</c:when>
+	    	                                	<c:otherwise>
+	    	                                		이 금액을 [<span>영&ensp;수</span>]함
+	    	                                	</c:otherwise>
+	                                    	</c:choose>
+	                                    </th>
+	                                </tr>
+	                                <tr>
+	                                    <td style="text-align:center;" colspan="2">
+	                                    	<c:out value="${commaAmt}"/>
+                                    	</td>
+	                                    <td style="text-align:center;">-</td>
+	                                    <td style="text-align:center;" colspan="2">-</td>
+	                                    <td style="text-align:center;" colspan="2">
+	                                    	<c:out value="${commaAmt}"/>
+	                                    </td>
+	                                </tr>
+	                            </tfoot>
+	                            <!-- //일반회원(선불제) -->
+	
+	                        </table>
+	                    </div>
+	                </div>
+	
+	                <!-- <div class="cont5">
+	                    <p><span>2021</span> 년&nbsp;&nbsp;<span>6</span> 월&nbsp;&nbsp;<span>17</span> 일</p>
+	                    <div>
+	                        <span></span>
+	                        <span>주식회사 아이티앤</span>
+	                        <span>유&nbsp;&nbsp;인&nbsp;&nbsp;식&nbsp;&nbsp;(인)</span>
+	                    </div>
+	                </div> -->
+	
+	            </div>
+	            <div class="est_btn_wrap">
+	                <button type="button" class="btnType" onclick="window.print();"><i class="print_img"></i>인쇄하기</button>
+	            </div>
+	        </div>
+	    </div>
+		<!--// 견적서 -->
+	</body>
+</html>
src/main/webapp/WEB-INF/jsp/web/user/mberCompanyInfoChange.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/mberCompanyInfoChange.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/mberCompanyInfoChange.jsp
@@ -242,25 +242,17 @@
 		$("#receivemail").val("N");
 	}
 
-	if($("#emailId").val() == ""){
-		alert("이메일을 입력해주세요.");
+	if($("#emailId").val().trim() == "" || $("#emailAdd").val().trim() == ""){
+		alert("이메일은 필수 입력 항목입니다.")
 		return false;
-	}
-
-	if($("#emailId").val() != ""|| $("#emailAdd").val() != ""){
-		if($("#emailAdd").val() != ""){
-			var email = $("#emailId").val() + "@" + $("#emailAdd").val();
-			var taxExptext =  /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
-			if(taxExptext.test(email)==false){
-				alert("이메일주소 형식이 올바르지 않습니다.");
-				return false;
-			}
-
-			$("#mberEmailAdres").val(email);
-		}else{
-			alert("이메일 주소를 확인해 주세요");
+	}else {
+		var email = $("#emailId").val() + "@" + $("#emailAdd").val();
+		var taxExptext =  /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
+		if(taxExptext.test(email)==false){
+			alert("이메일주소 형식이 올바르지 않습니다.");
 			return false;
 		}
+		$("#mberEmailAdres").val(email);
 	}
 
 	if("${cmpPhoneChangeManageVO.hstSttus}" == '03'){
@@ -678,7 +670,7 @@
 								</c:if>
 								<div class="input_list_item emailWrap">
 									<div>
-										<div class="input_left"><span class="essential">*</span>이메일</div>
+										<div class="input_left">이메일</div>
 										<div class="input_right">
 											<div class="email">
 												<label for="" class="label">이메일 주소 앞자리</label>
src/main/webapp/WEB-INF/jsp/web/user/mberInfoChange.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/mberInfoChange.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/mberInfoChange.jsp
@@ -149,21 +149,17 @@
 		$("#receivemail").val("N");
 	}
 	
-	
-	if($("#emailId").val() != ""|| $("#emailAdd").val() != ""){
-		if($("#emailAdd").val() != ""){
-			var email = $("#emailId").val() + "@" + $("#emailAdd").val();
-			var taxExptext =  /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
-			if(taxExptext.test(email)==false){
-				alert("이메일주소 형식이 올바르지 않습니다.");
-				return false;
-			}
-			
-			$("#mberEmailAdres").val(email);
-		}else{
-			alert("이메일 주소를 확인해 주세요");
+	if($("#emailId").val().trim() == "" || $("#emailAdd").val().trim() == ""){
+		alert("이메일은 필수 입력 항목입니다.")
+		return false;
+	}else {
+		var email = $("#emailId").val() + "@" + $("#emailAdd").val();
+		var taxExptext =  /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
+		if(taxExptext.test(email)==false){
+			alert("이메일주소 형식이 올바르지 않습니다.");
 			return false;
 		}
+		$("#mberEmailAdres").val(email);
 	}
 	
 	if("${userInfo.moblphonNo}" != $("#moblphonNo").val()){
src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp
@@ -671,7 +671,7 @@
 						</c:otherwise>
 					</c:choose>
 					
-					<button type="button" onclick="location.href='/web/member/pay/PayUserSWList.do';">
+					<button type="button" onclick="location.href='/web/member/pay/payUserSWList.do';">
 						<img src="/publish/images/content/mypage_plus.png" alt="더보기">
 					</button>
 					<div class="table_wrap" id="send_reserv">
src/main/webapp/WEB-INF/jsp/web/user/mypageHeader.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/mypageHeader.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/mypageHeader.jsp
@@ -30,9 +30,6 @@
 	<li class="tab" id="sendNumberManage">
 		<button type="button" onclick="TabType5(this,'4'); location.href='/web/user/sendNumberManage.do'">발신번호 관리</button>
 	</li>
-	<li class="tab" id="notifyManage">
-		<button type="button" onclick="TabType5(this,'5'); location.href='/web/user/notifyManage.do'">알림설정</button>
-	</li>
 	<li class="tab" id="mberSecession">
 		<button type="button" onclick="TabType5(this,'6'); location.href='/web/user/mberSecession.do'">회원탈퇴</button>
 	</li>
src/main/webapp/publish/js/dateUtils.js
--- src/main/webapp/publish/js/dateUtils.js
+++ src/main/webapp/publish/js/dateUtils.js
@@ -112,3 +112,26 @@
 	return ( year + '/' + month + '/' + day );
 }
 
+/**
+ * 검색 날짜관련 ID로 검색 시작일 최대 기간을 제한 function 
+ * @param {String} a 검색 시작 ID
+ * @param {String} b 최대 기간 달 수
+ * @returns {Boolean} a날짜와 현재 날짜를 비교해서 차이가 b월 이상이면 false 이하면 true
+ */
+function fn_G_limitDateChk(startId, limitMonth) {
+	// 시작일자 가져오기
+	var startDate = document.getElementById(startId).value;
+	
+	// 날짜 형식으로 변환 및 현재 날짜 설정
+	var start = new Date(startDate);
+	var today = new Date();
+	    
+	var maxDate = new Date(today);
+	maxDate.setMonth(maxDate.getMonth() - limitMonth);
+	
+	if(start < maxDate){
+		alert("검색 시작일자를 최근 "+limitMonth+"개월 이내로 입력해주세요.");
+		return false;
+	}
+	return true;
+}
Add a comment
List