rosewiper 2023-10-31
관리자 비선 선결제 관리 기능 추가
@72f856cf00101578f4d6fc7c71527d659aedd19a
 
src/main/java/itn/let/mjo/pay/service/MjonPrePayService.java (added)
+++ src/main/java/itn/let/mjo/pay/service/MjonPrePayService.java
@@ -0,0 +1,18 @@
+package itn.let.mjo.pay.service;
+
+import java.util.List;
+
+public interface MjonPrePayService {
+
+	public int selectBLineMberCnt(String mberId) throws Exception;
+	
+	public int insertPrePayInfo(MjonPrePayVO mjonPrePayVO) throws Exception;
+	
+	public List<MjonPrePayVO> selectPrePayList(MjonPrePayVO mjonPrePayVO) throws Exception;
+	
+	public int deletePrePayInfo(MjonPrePayVO mjonPrePayVO) throws Exception;
+	
+	public MjonPrePayVO selectPrePayInfo(MjonPrePayVO mjonPrePayVO) throws Exception;
+	
+	public int updatePrePayModify(MjonPrePayVO mjonPrePayVO) throws Exception;
+}
 
src/main/java/itn/let/mjo/pay/service/MjonPrePayVO.java (added)
+++ src/main/java/itn/let/mjo/pay/service/MjonPrePayVO.java
@@ -0,0 +1,108 @@
+package itn.let.mjo.pay.service;
+
+import itn.com.cmm.ComDefaultVO;
+
+public class MjonPrePayVO extends ComDefaultVO{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	
+	private String prePayId;
+	private String mberId;
+	private String agentCode;
+	private String prePayDate;
+	private String prePayTime;
+	private String amt;
+	
+	private String frstRegisterId;
+	private String frstRegistPnttm;
+	private String lastUpdusrId;
+	private String lastUpdtPnttm;
+	
+	private String agentCodeNm;
+	private String agentCodeDc;
+	
+	private String totSum;
+	
+	public String getPrePayId() {
+		return prePayId;
+	}
+	public void setPrePayId(String prePayId) {
+		this.prePayId = prePayId;
+	}
+	public String getMberId() {
+		return mberId;
+	}
+	public void setMberId(String mberId) {
+		this.mberId = mberId;
+	}
+	public String getAgentCode() {
+		return agentCode;
+	}
+	public void setAgentCode(String agentCode) {
+		this.agentCode = agentCode;
+	}
+	public String getPrePayDate() {
+		return prePayDate;
+	}
+	public void setPrePayDate(String prePayDate) {
+		this.prePayDate = prePayDate;
+	}
+	public String getPrePayTime() {
+		return prePayTime;
+	}
+	public void setPrePayTime(String prePayTime) {
+		this.prePayTime = prePayTime;
+	}
+	public String getAmt() {
+		return amt;
+	}
+	public void setAmt(String amt) {
+		this.amt = amt;
+	}
+	public String getFrstRegisterId() {
+		return frstRegisterId;
+	}
+	public void setFrstRegisterId(String frstRegisterId) {
+		this.frstRegisterId = frstRegisterId;
+	}
+	public String getFrstRegistPnttm() {
+		return frstRegistPnttm;
+	}
+	public void setFrstRegistPnttm(String frstRegistPnttm) {
+		this.frstRegistPnttm = frstRegistPnttm;
+	}
+	public String getLastUpdusrId() {
+		return lastUpdusrId;
+	}
+	public void setLastUpdusrId(String lastUpdusrId) {
+		this.lastUpdusrId = lastUpdusrId;
+	}
+	public String getLastUpdtPnttm() {
+		return lastUpdtPnttm;
+	}
+	public void setLastUpdtPnttm(String lastUpdtPnttm) {
+		this.lastUpdtPnttm = lastUpdtPnttm;
+	}
+	public String getAgentCodeNm() {
+		return agentCodeNm;
+	}
+	public void setAgentCodeNm(String agentCodeNm) {
+		this.agentCodeNm = agentCodeNm;
+	}
+	public String getAgentCodeDc() {
+		return agentCodeDc;
+	}
+	public void setAgentCodeDc(String agentCodeDc) {
+		this.agentCodeDc = agentCodeDc;
+	}
+	public String getTotSum() {
+		return totSum;
+	}
+	public void setTotSum(String totSum) {
+		this.totSum = totSum;
+	}
+	
+}
 
src/main/java/itn/let/mjo/pay/service/impl/MjonPrePayDAO.java (added)
+++ src/main/java/itn/let/mjo/pay/service/impl/MjonPrePayDAO.java
@@ -0,0 +1,109 @@
+package itn.let.mjo.pay.service.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.stereotype.Repository;
+
+import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
+import itn.let.mjo.pay.service.MjonPrePayVO;
+
+@Repository("mjonPrePayDAO")
+public class MjonPrePayDAO  extends EgovAbstractDAO {
+
+	public int selectBLineMberCnt(String mberId) throws Exception{
+		
+		int result = 0;
+		
+		try {
+			
+			result = (int) select("mjonPrePayDAO.selectBLineMberCnt", mberId);
+			
+		} catch (Exception e) {
+			System.out.println("+++++++++++++ selectBLineMberCnt Service DAO Error !!! " + e);
+		}
+		
+		return result;
+	}
+	
+	public int insertPrePayInfo(MjonPrePayVO mjonPrePayVO) throws Exception{
+		
+		int resultCnt = 0;
+		
+		try {
+			
+			resultCnt = update("mjonPrePayDAO.insertPrePayInfo", mjonPrePayVO);
+			
+		} catch (Exception e) {
+			System.out.println("+++++++++++++ insertPrePayInfo Service DAO Error !!! " + e);
+		}
+		
+		return resultCnt;
+	}
+	
+	
+	@SuppressWarnings("unchecked")
+	public List<MjonPrePayVO> selectPrePayList(MjonPrePayVO mjonPrePayVO) throws Exception{
+		
+		List<MjonPrePayVO> resultList = new ArrayList<MjonPrePayVO>();
+		
+		try {
+			
+			resultList = (List<MjonPrePayVO>) list("mjonPrePayDAO.selectPrePayList", mjonPrePayVO);
+			
+		} catch (Exception e) {
+			System.out.println("+++++++++++++ selectPrePayList Service DAO Error !!! " + e);
+		}
+		
+		
+		return resultList;
+	}
+	
+	public int deletePrePayInfo(MjonPrePayVO mjonPrePayVO) throws Exception{
+		
+		int result = 0;
+		
+		try {
+			
+			result = update("mjonPrePayDAO.deletePrePayInfo", mjonPrePayVO);
+			
+		} catch (Exception e) {
+			System.out.println("+++++++++++++ deletePrePayInfo Service DAO Error !!! " + e);
+		}
+		
+		return result;
+		
+	}
+	
+	public MjonPrePayVO selectPrePayInfo(MjonPrePayVO mjonPrePayVO) throws Exception{
+		
+		MjonPrePayVO result = new MjonPrePayVO();
+		
+		try {
+			
+			result = (MjonPrePayVO) select("mjonPrePayDAO.selectPrePayInfo", mjonPrePayVO);
+			
+		} catch (Exception e) {
+			System.out.println("+++++++++++++ selectPrePayInfo Service DAO Error !!! " + e);
+		}
+		
+		return result;
+		
+	}
+	
+	public int updatePrePayModify(MjonPrePayVO mjonPrePayVO) throws Exception{
+		
+		int resultCnt = 0;
+		
+		try {
+			
+			resultCnt = update("mjonPrePayDAO.updatePrePayModify", mjonPrePayVO);
+			
+		} catch (Exception e) {
+			System.out.println("+++++++++++++ selectPrePayInfo Service DAO Error !!! " + e);
+		}
+		
+		return resultCnt;
+	}
+	
+}
 
src/main/java/itn/let/mjo/pay/service/impl/MjonPrePayServiceImpl.java (added)
+++ src/main/java/itn/let/mjo/pay/service/impl/MjonPrePayServiceImpl.java
@@ -0,0 +1,120 @@
+package itn.let.mjo.pay.service.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+
+import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
+import itn.let.mjo.pay.service.MjonPrePayService;
+import itn.let.mjo.pay.service.MjonPrePayVO;
+
+@Service("mjonPrePayService")
+public class MjonPrePayServiceImpl  extends EgovAbstractServiceImpl implements MjonPrePayService {
+
+	@Resource(name="mjonPrePayDAO")
+	private MjonPrePayDAO mjonPrePayDAO;
+	
+	//B선 회원 정보 조회
+	@Override
+	public int selectBLineMberCnt(String mberId) throws Exception{
+		
+		int result = 0;
+		
+		try {
+			
+			result = mjonPrePayDAO.selectBLineMberCnt(mberId);
+			
+		} catch (Exception e) {
+			System.out.println("+++++++++++++ selectBLineMberCnt Service Impl Error !!! " + e);
+		}
+		
+		return result;
+	}
+	
+	@Override
+	public int insertPrePayInfo(MjonPrePayVO mjonPrePayVO) throws Exception{
+		
+		int resultCnt = 0;
+		
+		try {
+			
+			resultCnt = mjonPrePayDAO.insertPrePayInfo(mjonPrePayVO);
+			
+		} catch (Exception e) {
+			System.out.println("+++++++++++++ insertPrePayInfo Service Impl Error !!! " + e);
+		}
+		
+		return resultCnt;
+	}
+	
+	
+	@Override
+	public List<MjonPrePayVO> selectPrePayList(MjonPrePayVO mjonPrePayVO) throws Exception{
+		
+		List<MjonPrePayVO> resultList = new ArrayList<MjonPrePayVO>();
+		
+		try {
+			
+			resultList = mjonPrePayDAO.selectPrePayList(mjonPrePayVO);
+			
+		} catch (Exception e) {
+			System.out.println("+++++++++++++ selectPrePayList Service Impl Error !!! " + e);
+		}
+		
+		return resultList;
+	}
+	
+	@Override
+	public int deletePrePayInfo(MjonPrePayVO mjonPrePayVO) throws Exception{
+		
+		int result = 0;
+		
+		try {
+			
+			result = mjonPrePayDAO.deletePrePayInfo(mjonPrePayVO);
+			
+		} catch (Exception e) {
+			System.out.println("+++++++++++++ deletePrePayInfo Service Impl Error !!! " + e);
+		}
+		
+		return result;
+		
+	}
+	
+	@Override
+	public MjonPrePayVO selectPrePayInfo(MjonPrePayVO mjonPrePayVO) throws Exception{
+		
+		MjonPrePayVO result = new MjonPrePayVO();
+		
+		try {
+			
+			result = mjonPrePayDAO.selectPrePayInfo(mjonPrePayVO);
+			
+		} catch (Exception e) {
+			System.out.println("+++++++++++++ selectPrePayInfo Service Impl Error !!! " + e);
+		}
+		
+		return result;
+		
+	}
+	
+	@Override
+	public int updatePrePayModify(MjonPrePayVO mjonPrePayVO) throws Exception{
+		
+		int resultCnt = 0;
+		
+		try {
+			
+			resultCnt = mjonPrePayDAO.updatePrePayModify(mjonPrePayVO);
+			
+		} catch (Exception e) {
+			System.out.println("+++++++++++++ selectPrePayInfo Service Impl Error !!! " + e);
+		}
+		
+		return resultCnt;
+	}
+	
+}
 
src/main/java/itn/let/mjo/pay/web/MjonPrePayController.java (added)
+++ src/main/java/itn/let/mjo/pay/web/MjonPrePayController.java
@@ -0,0 +1,567 @@
+package itn.let.mjo.pay.web;
+
+import java.io.OutputStream;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.Font;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.HandlerMapping;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
+import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
+import itn.com.cmm.EgovMessageSource;
+import itn.com.cmm.LoginVO;
+import itn.com.cmm.util.RedirectUrlMaker;
+import itn.com.utl.fcc.service.EgovStringUtil;
+import itn.let.mjo.pay.service.MjonPayService;
+import itn.let.mjo.pay.service.MjonPrePayService;
+import itn.let.mjo.pay.service.MjonPrePayVO;
+import itn.let.uss.umt.service.EgovUserManageService;
+
+@Controller
+public class MjonPrePayController {
+
+	private static final Logger LOGGER = LoggerFactory.getLogger(MjonPrePayController.class);
+	
+	@Resource(name = "mjonPayService")
+    private MjonPayService mjonPayService;
+	
+	@Resource(name = "mjonPrePayService")
+    private MjonPrePayService mjonPrePayService;
+	
+	/** EgovMessageSource */
+    @Resource(name="egovMessageSource")
+    EgovMessageSource egovMessageSource;
+    
+    /** userManageService */
+	@Resource(name = "userManageService")
+	private EgovUserManageService userManageService;
+	
+	//배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"}
+	private String[][] sendPrePayExcelValue ={
+	    {"0" ,"번호" , "1" , "" },
+	    {"1", "아이디" , "아이디" , ""}, 
+	    {"2", "전송사" , "개인전용계좌", ""}, 
+	    {"3", "선결제일시" , "2021-06-08 11:05:38", ""}, 
+	    {"4", "결제금액" , "1000", ""},
+	    {"5", "등록일자" , "2021-06-08 11:05:38", ""},
+	} ;
+	
+    /**
+     * 결제 리스트
+     * @param searchVO
+     * @param model
+     * @return	"/uss/ion/msg/SendNumberList"
+     * @throws Exception
+     */
+    @RequestMapping(value= {"/uss/ion/pay/PrePayList.do"})
+	public String selectPrePayList(@ModelAttribute("searchVO") MjonPrePayVO mjonPrePayVO, 
+			HttpServletRequest request,
+			ModelMap model) throws Exception{
+		
+		String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ;
+		
+		// 미인증 사용자에 대한 보안처리
+		Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
+		if(!isAuthenticated) {
+			model.addAttribute("message", egovMessageSource.getMessage("fail.common.login"));
+			return "uat/uia/EgovLoginUsr";
+		}
+
+		/** pageing */
+		PaginationInfo paginationInfo = new PaginationInfo();
+		paginationInfo.setCurrentPageNo(mjonPrePayVO.getPageIndex());
+		paginationInfo.setRecordCountPerPage(mjonPrePayVO.getPageUnit());
+		paginationInfo.setPageSize(mjonPrePayVO.getPageSize());
+		
+		mjonPrePayVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
+		mjonPrePayVO.setLastIndex(paginationInfo.getLastRecordIndex());
+		mjonPrePayVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
+		
+		if("".equals(mjonPrePayVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
+			mjonPrePayVO.setSearchSortCnd("prePayDate");
+			mjonPrePayVO.setSearchSortOrd("desc");
+		}
+		
+        List<MjonPrePayVO> resultList = mjonPrePayService.selectPrePayList(mjonPrePayVO);   
+        
+        model.addAttribute("resultList", resultList);
+        model.addAttribute("totSumPrice", resultList.size() > 0 ? ((MjonPrePayVO)resultList.get(0)).getTotSum() : 0);
+        paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonPrePayVO)resultList.get(0)).getTotCnt() : 0);
+		model.addAttribute("paginationInfo", paginationInfo);
+		
+		return "/uss/ion/pay/prePay/PrePayList";
+	}
+    
+    
+    /**
+     * 선결제 등록화면
+     * @param searchVO
+     * @param model
+     * @return	"/uss/ion/pay/PrePayRegist.do"
+     * @throws Exception
+     */
+    @RequestMapping(value= {"/uss/ion/pay/PrePayRegist.do"})
+	public String PrePayRegist(@ModelAttribute("searchVO") MjonPrePayVO mjonPrePayVO, 
+			HttpServletRequest request,
+			ModelMap model) throws Exception{
+    	
+    	// 미인증 사용자에 대한 보안처리
+		Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
+		if(!isAuthenticated) {
+			model.addAttribute("message", egovMessageSource.getMessage("fail.common.login"));
+			return "uat/uia/EgovLoginUsr";
+		}
+    	
+    	
+    	return "/uss/ion/pay/prePay/PrePayRegist";
+    }
+    
+    
+    /**
+     * 선결제 등록 처리
+     * @param searchVO
+     * @param model
+     * @return	"uss/ion/pay/insertPrePayRegistAjax"
+     * @throws Exception
+     */
+    @RequestMapping(value= {"/uss/ion/pay/insertPrePayRegistAjax.do"})
+	public ModelAndView insertPrePayRegistAjax(@ModelAttribute("searchVO") MjonPrePayVO mjonPrePayVO, 
+			HttpServletRequest request,
+			ModelMap model) throws Exception{
+    	
+       	ModelAndView modelAndView = new ModelAndView();
+       	modelAndView.setViewName("jsonView");
+    	
+    	// 미인증 사용자에 대한 보안처리
+		Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
+		if(!isAuthenticated) {
+			modelAndView.addObject("result", "loginFail");
+			modelAndView.addObject("message", "로그인이 필요합니다.");
+			return modelAndView;
+		}
+		
+		try {
+		
+			LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
+	    	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+			
+			String mberId = mjonPrePayVO.getMberId();
+			mjonPrePayVO.setFrstRegisterId(userId);
+			mjonPrePayVO.setLastUpdusrId(userId);
+			
+			if(mjonPrePayVO.getAmt().length() == 0 
+					|| mjonPrePayVO.getMberId().length() == 0 
+					|| mjonPrePayVO.getPrePayDate().length() == 0) {
+				
+				modelAndView.addObject("result", "dataFail");
+				modelAndView.addObject("message", "필수 입력값을 확인해 주세요.");
+				
+				return modelAndView;
+				
+			}
+			
+			int mberCnt = mjonPrePayService.selectBLineMberCnt(mberId);
+			
+			if(mberCnt > 0) {
+				
+				int resultCnt = mjonPrePayService.insertPrePayInfo(mjonPrePayVO);
+				
+				if(resultCnt > 0) {
+					
+					modelAndView.addObject("result", "success");
+					modelAndView.addObject("message", "등록이 완료되었습니다.");
+					
+				}else {
+					
+					modelAndView.addObject("result", "insertFail");
+					modelAndView.addObject("message", "선결제 정보 등록 중 오류가 발생하였습니다.");
+					
+					return modelAndView;
+				}
+				
+			}else {
+				
+				modelAndView.addObject("result", "mberFail");
+				modelAndView.addObject("message", mberId + "의 회원정보를 찾을 수 없습니다.");
+				
+				return modelAndView;
+			}
+			
+			
+		} catch (Exception e) {
+			
+			System.out.println("++++++++++++++ insertPrePayRegistAjax Controller Error !!! " + e);
+			modelAndView.addObject("result", "Error");
+			modelAndView.addObject("message", "등록 중 오류가 발생하였습니다.");
+			
+			return modelAndView;
+		}
+		
+    	return modelAndView;
+    }
+    
+    
+    /**
+     * 선결제 삭제 처리
+     * @param searchVO
+     * @param model
+     * @return	"/uss/ion/pay/PrePayDelete.do"
+     * @throws Exception
+     */
+    @RequestMapping(value = {"/uss/ion/pay/PrePayDelete.do"})
+    public String deleteCash(
+    		@RequestParam("chkEach") String[] chkEach,
+    		@ModelAttribute("searchVO") MjonPrePayVO mjonPrePayVO, 
+            HttpServletRequest request , RedirectAttributes redirectAttributes,
+            Model model) throws Exception {
+    	try {
+    		LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+        	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+        	
+        	if(userId == "") {
+        		
+        		redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("info.user.login"));
+        		RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uat/uia/EgovLoginUsr.do");
+        		return redirectUrlMaker.getRedirectUrl();
+        		
+        	}
+        	
+        	for(String id: chkEach) {
+        		mjonPrePayVO.setPrePayId(id);
+        		mjonPrePayService.deletePrePayInfo(mjonPrePayVO);
+     	    }
+    		redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete"));
+    		RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/pay/PrePayList.do");
+    		return redirectUrlMaker.getRedirectUrl();
+    	}catch(Exception e) {
+    		redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.delete"));
+    	}
+    	redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete"));
+		RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/pay/PrePayList.do");
+		return redirectUrlMaker.getRedirectUrl();
+    }
+    
+    /**
+     * 선결제 수정화면
+     * @param searchVO
+     * @param model
+     * @return	"/uss/ion/pay/PrePayModify.do"
+     * @throws Exception
+     */
+    @RequestMapping(value= {"/uss/ion/pay/PrePayModify.do"})
+	public String PrePayModify(@ModelAttribute("searchVO") MjonPrePayVO mjonPrePayVO, 
+			HttpServletRequest request, RedirectAttributes redirectAttributes,
+			ModelMap model) throws Exception{
+    	
+    	// 미인증 사용자에 대한 보안처리
+		Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
+		if(!isAuthenticated) {
+			model.addAttribute("message", egovMessageSource.getMessage("fail.common.login"));
+			return "uat/uia/EgovLoginUsr";
+		}
+    	
+		try {
+			
+			MjonPrePayVO resultVO = mjonPrePayService.selectPrePayInfo(mjonPrePayVO);
+			
+			model.addAttribute("resultVO", resultVO);
+			
+		} catch (Exception e) {
+			redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.msg"));
+			RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/pay/PrePayList.do");
+			return redirectUrlMaker.getRedirectUrl();
+		}
+    	
+    	return "/uss/ion/pay/prePay/PrePayModify";
+    }
+    
+    
+    /**
+     * 선결제 수정화면
+     * @param searchVO
+     * @param model
+     * @return	"/uss/ion/pay/updatePrePayModify.do"
+     * @throws Exception
+     */
+    @RequestMapping(value= {"/uss/ion/pay/updatePrePayModify.do"})
+	public String updatePrePayModify(@ModelAttribute("searchVO") MjonPrePayVO mjonPrePayVO, 
+			HttpServletRequest request, RedirectAttributes redirectAttributes,
+			ModelMap model) throws Exception{
+    	
+    	// 미인증 사용자에 대한 보안처리
+		Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
+		if(!isAuthenticated) {
+			model.addAttribute("message", egovMessageSource.getMessage("fail.common.login"));
+			return "uat/uia/EgovLoginUsr";
+		}
+    	
+		try {
+			
+			String mberId = mjonPrePayVO.getMberId();
+			
+			int mberCnt = mjonPrePayService.selectBLineMberCnt(mberId);
+			
+			if(mberCnt > 0) {
+				
+				LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
+		    	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+		    	
+		    	mjonPrePayVO.setLastUpdusrId(userId);
+		    	mjonPrePayVO.setAmt(mjonPrePayVO.getAmt().replace(",", ""));
+				int resultCnt = mjonPrePayService.updatePrePayModify(mjonPrePayVO);
+				
+			}else {
+				
+				redirectAttributes.addFlashAttribute("message", mberId + "의 회원정보를 찾을 수 없습니다.");
+				RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/pay/PrePayList.do");
+				return redirectUrlMaker.getRedirectUrl();
+				
+			}
+			
+
+			
+		} catch (Exception e) {
+			redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.msg"));
+			RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/pay/PrePayList.do");
+			return redirectUrlMaker.getRedirectUrl();
+		}
+    	
+    	return "redirect:/uss/ion/pay/PrePayList.do";
+    }
+    
+    
+    /**
+     * 결제 리스트 팝업
+     * @param searchVO
+     * @param model
+     * @return	"/uss/ion/pay/PrePayPopupListAjax.do"
+     * @throws Exception
+     */
+    @RequestMapping(value= {"/uss/ion/pay/PrePayPopupListAjax.do"})
+	public String selectPrePayPopupListAjax(@ModelAttribute("searchVO") MjonPrePayVO mjonPrePayVO, 
+			HttpServletRequest request,
+			ModelMap model) throws Exception{
+		
+		String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ;
+		
+		// 미인증 사용자에 대한 보안처리
+		Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
+		if(!isAuthenticated) {
+			model.addAttribute("message", egovMessageSource.getMessage("fail.common.login"));
+			return "uat/uia/EgovLoginUsr";
+		}
+
+		/** pageing */
+		PaginationInfo paginationInfo = new PaginationInfo();
+		paginationInfo.setCurrentPageNo(mjonPrePayVO.getPageIndex());
+		paginationInfo.setRecordCountPerPage(mjonPrePayVO.getPageUnit());
+		paginationInfo.setPageSize(mjonPrePayVO.getPageSize());
+		
+		mjonPrePayVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
+		mjonPrePayVO.setLastIndex(paginationInfo.getLastRecordIndex());
+		mjonPrePayVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
+		
+		if("".equals(mjonPrePayVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
+			mjonPrePayVO.setSearchSortCnd("prePayDate");
+			mjonPrePayVO.setSearchSortOrd("desc");
+		}
+		
+		//특정 회원 정보리스트만 조회 되도록 검색값 셋팅
+		String mberId = mjonPrePayVO.getMberId();
+        List<MjonPrePayVO> resultList = mjonPrePayService.selectPrePayList(mjonPrePayVO);   
+        
+        model.addAttribute("resultList", resultList);
+        model.addAttribute("totSumPrice", resultList.size() > 0 ? ((MjonPrePayVO)resultList.get(0)).getTotSum() : 0);
+        paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonPrePayVO)resultList.get(0)).getTotCnt() : 0);
+		model.addAttribute("paginationInfo", paginationInfo);
+
+		model.addAttribute("mberId", mberId);
+		
+		return "/uss/ion/pay/prePay/popup/PrePayPopupList";
+	}
+    
+    
+    
+    /**
+     * 선결제 등록화면
+     * @param searchVO
+     * @param model
+     * @return	"/uss/ion/pay/PrePayPopupRegistAjax.do"
+     * @throws Exception
+     */
+    @RequestMapping(value= {"/uss/ion/pay/PrePayPopupRegistAjax.do"})
+	public String selectPrePayPopupRegistAjax(@ModelAttribute("searchVO") MjonPrePayVO mjonPrePayVO, 
+			HttpServletRequest request,
+			ModelMap model) throws Exception{
+    	
+    	// 미인증 사용자에 대한 보안처리
+		Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
+		if(!isAuthenticated) {
+			model.addAttribute("message", egovMessageSource.getMessage("fail.common.login"));
+			return "uat/uia/EgovLoginUsr";
+		}
+    	
+		System.out.println(mjonPrePayVO.getMberId());
+		String mberId = mjonPrePayVO.getMberId();
+		
+		model.addAttribute("mberId", mberId);
+    	
+    	return "/uss/ion/pay/prePay/popup/PrePayPopupRegist";
+    }
+    
+    /**
+     * 선결제 수정화면
+     * @param searchVO
+     * @param model
+     * @return	"/uss/ion/pay/PrePayModify.do"
+     * @throws Exception
+     */
+    @RequestMapping(value= {"/uss/ion/pay/PrePayPopupModifyAjax.do"})
+	public String selectPrePayPopupModifyAjax(@ModelAttribute("searchVO") MjonPrePayVO mjonPrePayVO, 
+			HttpServletRequest request, RedirectAttributes redirectAttributes,
+			ModelMap model) throws Exception{
+    	
+    	// 미인증 사용자에 대한 보안처리
+		Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
+		if(!isAuthenticated) {
+			model.addAttribute("message", egovMessageSource.getMessage("fail.common.login"));
+			return "uat/uia/EgovLoginUsr";
+		}
+    	
+		try {
+			
+			MjonPrePayVO resultVO = mjonPrePayService.selectPrePayInfo(mjonPrePayVO);
+			
+			model.addAttribute("resultVO", resultVO);
+			
+		} catch (Exception e) {
+			redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.msg"));
+			RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/pay/PrePayPopupListAjax.do");
+			return redirectUrlMaker.getRedirectUrl();
+		}
+    	
+    	return "/uss/ion/pay/prePay/popup/PrePayPopupModify";
+    }
+    
+    
+    //관리자 결제 엑셀 다운로드 
+    @RequestMapping(value= {"/uss/ion/pay/SendPrePayExcelDownload.do"})
+  	public void SendPrePayExcelDownload( MjonPrePayVO mjonPrePayVO, 
+			HttpServletRequest request,
+			HttpServletResponse response ,
+			ModelMap model) throws Exception {
+  		
+    	mjonPrePayVO.setRecordCountPerPage(5000);
+    	mjonPrePayVO.setFirstIndex(0);
+  		LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+		
+  		// 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다.
+  		SXSSFWorkbook wb = new SXSSFWorkbook(100);
+  		CellStyle style = wb.createCellStyle();
+  		style.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게 
+   		style.setBorderLeft(CellStyle.BORDER_THIN);
+   		style.setBorderRight(CellStyle.BORDER_THIN);
+   		style.setBorderTop(CellStyle.BORDER_THIN);
+   		Font font = wb.createFont();
+   		font.setBoldweight(Font.BOLDWEIGHT_BOLD);  //글씨 bold
+   		
+  		Cell cell = null;
+  		Row row = null;
+  		
+  		String fileName ="B선 회원 선결제내역";
+  		
+  		String sheetTitle = ""; 
+  		try{
+  			if("".equals(mjonPrePayVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
+  				mjonPrePayVO.setSearchSortCnd("prePayDate");
+  				mjonPrePayVO.setSearchSortOrd("desc");
+  			}
+  			
+  	        List<MjonPrePayVO> resultList = mjonPrePayService.selectPrePayList(mjonPrePayVO); 
+  			
+  			{ //화면 리스트
+  				sheetTitle = "선결제내역" ; //제목
+  				Sheet sheet = wb.createSheet(sheetTitle);
+  				sheet.setColumnWidth(0, 2500);
+  				sheet.setColumnWidth(1, 3500);
+  				sheet.setColumnWidth(2, 3500);
+  				sheet.setColumnWidth(3, 4000);
+  				sheet.setColumnWidth(4, 3500);
+  				sheet.setColumnWidth(5, 5000);
+  				row = sheet.createRow(0);
+  		        for(int i=0 ; i < sendPrePayExcelValue.length ; i++) {
+  	 		       cell = row.createCell(i);
+  	 		       cell.setCellStyle(style);
+  		 	       cell.setCellValue(sendPrePayExcelValue[i][1]);
+  	 		    }
+  			    
+  		        for(int i=0; i <  resultList.size(); i++){
+  			    	row = sheet.createRow(i+1);
+  			    	for(int j=0 ; j < sendPrePayExcelValue.length ; j++) {
+  			    		// 번호, 	회원 아이디, 전용 전송사, 선결제 일자, 결제 금액, 등록일자
+  			        	cell = row.createCell(j);
+  			        	cell.setCellStyle(style);
+  			        	if(j==0) cell.setCellValue(i+1); //번호
+  			        	if(j==1) cell.setCellValue(((MjonPrePayVO)resultList.get(i)).getMberId()); 			//회원 아이디
+  			        	if(j==2) cell.setCellValue(((MjonPrePayVO)resultList.get(i)).getAgentCodeDc()); 	//전용 전송사
+  			        	if(j==3) cell.setCellValue(((MjonPrePayVO)resultList.get(i)).getPrePayDate() + " " + ((MjonPrePayVO)resultList.get(i)).getPrePayTime()); //선결제 일자
+  			        	if(j==4) cell.setCellValue(((MjonPrePayVO)resultList.get(i)).getAmt()); 			//결제금액
+  			        	if(j==5) cell.setCellValue(((MjonPrePayVO)resultList.get(i)).getLastUpdtPnttm()); 	//등록일자/수정일자
+  				 	}
+  		        }
+  		        
+  			}
+  	    response.setHeader("Set-Cookie", "fileDownload=true; path=/");
+  		SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy_MM_dd_HH_mm_ss", Locale.KOREA );
+  		Date currentTime = new Date ();
+  		String mTime = mSimpleDateFormat.format ( currentTime );
+  		fileName = fileName+"("+mTime+")";
+  		
+  		response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx"));
+  		wb.write(response.getOutputStream());
+  	    
+  		}catch(Exception e) {
+  			response.setHeader("Set-Cookie", "fileDownload=false; path=/");
+  			response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
+  			response.setHeader("Content-Type","text/html; charset=utf-8");
+  			OutputStream out = null;
+  			try {
+  				out = response.getOutputStream();
+  				byte[] data = new String("fail..").getBytes();
+  				out.write(data, 0, data.length);
+  			} catch(Exception ignore) {
+  				ignore.printStackTrace();
+  			} finally {
+  				if(out != null) try { out.close(); } catch(Exception ignore) {}
+  			}
+  		}finally {
+  			// 디스크 적었던 임시파일을 제거합니다.
+  			wb.dispose();
+  			try { wb.close(); } catch(Exception ignore) {}
+  		}
+  	}
+    
+    
+}
src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-msg.xml
--- src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-msg.xml
+++ src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-msg.xml
@@ -23,4 +23,5 @@
 	<sqlMap resource="egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml"/>	 <!-- 알림톡메세지 -->
 	<sqlMap resource="egovframework/sqlmap/let/kakao/MjonKakaoFTData_SQL_mysql.xml"/>	 <!-- 친구톡메세지 -->
 	
+	<sqlMap resource="egovframework/sqlmap/let/pay/MjonPrePay_SQL_mysql.xml"/><!-- B선 회원 선결제정보 -->	
 </sqlMapConfig>
 
src/main/resources/egovframework/sqlmap/let/pay/MjonPrePay_SQL_mysql.xml (added)
+++ src/main/resources/egovframework/sqlmap/let/pay/MjonPrePay_SQL_mysql.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?><!--
+	수정일		수정자					수정내용
+  =========     =======    =================================================
+  2021.03.01    신명섭 	
+-->
+<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
+<sqlMap namespace="Pay">
+	<typeAlias  alias="mjonPrePayVO" type="itn.let.mjo.pay.service.MjonPrePayVO"/>
+	
+	<select id="mjonPrePayDAO.selectBLineMberCnt" parameterClass="String" resultClass="Integer">
+		
+		<![CDATA[
+			SELECT COUNT(MBER_ID)
+			FROM   lettngnrlmber
+			WHERE  MBER_ID     = #mberId#
+			AND    BLINE_CODE <> 'N'
+		]]>
+		
+	</select>
+	
+	<insert id="mjonPrePayDAO.insertPrePayInfo" parameterClass="mjonPrePayVO">
+		
+		INSERT
+		INTO   MJ_PREPAY_INFO
+		       (
+		              MBER_ID,
+		              AGENT_CODE,
+		              PREPAY_DATE,
+		              PREPAY_TIME,
+		              AMT,
+		              FRST_REGISTER_ID,
+		              FRST_REGIST_PNTTM,
+		              LAST_UPDUSR_ID,
+		              LAST_UPDT_PNTTM
+		       )
+		       VALUES
+		       (	#mberId#
+		              , #agentCode#
+		              , #prePayDate#
+		              , #prePayTime#
+		              , #amt#
+		              , #frstRegisterId#
+		              , NOW()
+		              , #lastUpdusrId#
+		              , NOW()
+		       )
+	
+	</insert>
+	
+	<select id="mjonPrePayDAO.selectPrePayList" parameterClass="mjonPrePayVO" resultClass="mjonPrePayVO">
+		
+		SELECT COUNT(PRE.PREPAY_ID) OVER()                        AS totCnt,
+			   SUM(PRE.AMT) OVER()                                AS totSum,
+		       PRE.PREPAY_ID                                      AS prePayId,
+		       PRE.MBER_ID                                        AS mberId,
+		       PRE.AGENT_CODE                                     AS agentCode,
+		       PRE.PREPAY_DATE                                    AS prePayDate,
+		       PRE.PREPAY_TIME                                    AS prePayTime,
+		       PRE.AMT                                            AS amt,
+		       DATE_FORMAT(PRE.FRST_REGIST_PNTTM, '%Y-%m-%d %T' ) AS frstRegistPnttm,
+		       PRE.FRST_REGISTER_ID                               AS frstRegisterId,
+		       PRE.LAST_UPDUSR_ID                                 AS lastUpdusr_id,
+		       DATE_FORMAT(PRE.LAST_UPDT_PNTTM, '%Y-%m-%d %T' )   AS lastUpdtPnttm,
+		       LCD.CODE_NM                                        AS agentCodeNm,
+		       LCD.CODE_DC                                        AS agentCodeDc
+		FROM   MJ_PREPAY_INFO PRE
+		       INNER JOIN LETTCCMMNDETAILCODE LCD
+		       ON     PRE.AGENT_CODE = LCD.CODE
+		       INNER JOIN LETTCCMMNCODE LCC
+		       ON     LCD.CODE_ID = LCC.CODE_ID
+		       AND    LCC.CODE_ID = 'ITN019'
+		WHERE 1=1
+		
+		<isNotEmpty property="searchKeyword">
+ 		    	AND  PRE.MBER_ID LIKE CONCAT('%', #searchKeyword#, '%')
+		</isNotEmpty>
+		
+		<isNotEmpty prepend="AND" property="searchCondition">
+			PRE.AGENT_CODE = #searchCondition#
+		</isNotEmpty>
+		
+		<isNotEmpty prepend="AND" property="searchStartDate">
+			<![CDATA[ 
+				DATE_FORMAT(PRE.PREPAY_DATE, '%Y-%m-%d') >= DATE_FORMAT(#searchStartDate#, '%Y-%m-%d')
+			]]>
+		</isNotEmpty>
+		<isNotEmpty prepend="AND" property="searchEndDate">
+			<![CDATA[ 
+				DATE_FORMAT(PRE.PREPAY_DATE, '%Y-%m-%d') <= DATE_FORMAT(#searchEndDate#, '%Y-%m-%d')  
+			]]>
+		</isNotEmpty>
+		
+		<isNotEmpty prepend="AND" property="mberId">
+			PRE.MBER_ID = #mberId#
+		</isNotEmpty>
+		
+        ORDER BY 1=1
+		<isNotEmpty property="searchSortCnd">
+			,$searchSortCnd$
+		</isNotEmpty>
+		<isNotEmpty property="searchSortOrd">
+		 	$searchSortOrd$
+		</isNotEmpty>
+		<isNotEmpty property="searchSortCnd">
+			<isEqual property="searchSortCnd" compareValue="prePayDate" >
+				, prePayTime $searchSortOrd$ 
+			</isEqual>
+		</isNotEmpty>
+		
+		LIMIT  #recordCountPerPage# OFFSET #firstIndex#	
+	
+	</select>
+	
+	
+	<delete id="mjonPrePayDAO.deletePrePayInfo" parameterClass="mjonPrePayVO">
+		
+		DELETE FROM MJ_PREPAY_INFO WHERE PREPAY_ID = #prePayId#
+	
+	</delete>
+	
+	<select id="mjonPrePayDAO.selectPrePayInfo" parameterClass="mjonPrePayVO" resultClass="mjonPrePayVO">
+		
+		SELECT PREPAY_ID AS prePayId,
+		       MBER_ID AS mberId,
+		       AGENT_CODE AS agentCode,
+		       PREPAY_DATE AS prePayDate,
+		       PREPAY_TIME AS prePayTime,
+		       AMT AS amt,
+		       FRST_REGISTER_ID AS frstRegisterId,
+		       DATE_FORMAT(FRST_REGIST_PNTTM, '%Y-%m-%d %T' ) AS frstRegistPnttm,
+		       LAST_UPDUSR_ID AS lastUpdusrId,
+		       DATE_FORMAT(LAST_UPDT_PNTTM, '%Y-%m-%d %T' ) AS lastUpdtPnttm 
+		FROM   MJ_PREPAY_INFO
+		WHERE  PREPAY_ID = #prePayId#
+	
+	</select>
+	
+	<update id="mjonPrePayDAO.updatePrePayModify" parameterClass="mjonPrePayVO">
+		
+		UPDATE MJ_PREPAY_INFO
+		SET    MBER_ID         = #mberId#,
+		       AGENT_CODE      = #agentCode#,
+		       PREPAY_DATE     = #prePayDate#,
+		       PREPAY_TIME     = #prePayTime#,
+		       AMT             = #amt#,
+		       LAST_UPDUSR_ID  = #lastUpdusrId#,
+		       LAST_UPDT_PNTTM = NOW()
+		WHERE  PREPAY_ID       = #prePayId#
+	
+	</update>
+	
+	
+</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
@@ -760,7 +760,8 @@
 		       A.HOTLINE_AGENT_CODE AS hotlineAgentCode,
 		       A.AT_SMISHING_YN atSmishingYn,
 		       A.SPAM_YN spamYn,
-		       A.USER_POINT AS userPoint
+		       A.USER_POINT AS userPoint,
+		       A.BLINE_CODE AS blineCode
 		FROM   LETTNGNRLMBER A
 		       LEFT JOIN MJ_CANDIDATE_INFO MCI
 		       ON     A.MBER_ID = MCI.MBER_ID
src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp
--- src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp
+++ src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp
@@ -1926,6 +1926,16 @@
     document.modiForm.submit();
 }
 
+//B선회원 선결제 팝업
+function fnUserPrePayDataListPopup(mberId){
+	
+	document.modiForm.mberId.value = mberId;
+	window.open("_blank", 'popupSelectPrePayDataList', 'width=1300, height=800, top=50, left=0, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no');
+    document.modiForm.action = "<c:url value='/uss/ion/pay/PrePayPopupListAjax.do'/>";
+    document.modiForm.target = "popupSelectPrePayDataList";
+    document.modiForm.submit();
+}
+
 // 이벤트 종료하기
 function fnEventEnd(){
 	
@@ -3282,6 +3292,11 @@
 											<th>
 												보유 캐시 잔액
 												<button type="button" onclick="fnUserCashDataListPopup('${mberManageVO.mberId}'); return false">조회</button>
+												
+												<%-- B선 회원 선결제 버튼 처리 --%>
+												<c:if test="${mberManageVO.blineCode ne 'N'}">
+													<button type="button" onclick="fnUserPrePayDataListPopup('${mberManageVO.mberId}'); return false">선결제</button>
+												</c:if>
 											</th>
 											<td>
 												<div class="button_box">
@@ -3665,6 +3680,11 @@
 											<th>
 												보유 캐시 잔액
 												<button type="button" onclick="fnUserCashDataListPopup('${mberManageVO.mberId}'); return false">조회</button>
+												
+												<%-- B선 회원 선결제 버튼 처리 --%>
+												<c:if test="${mberManageVO.blineCode ne 'N'}">
+													<button type="button" onclick="fnUserPrePayDataListPopup('${mberManageVO.mberId}'); return false">선결제</button>
+												</c:if>
 											</th>
 											<td>
 												<div class="button_box">
 
src/main/webapp/WEB-INF/jsp/uss/ion/pay/prePay/PrePayList.jsp (added)
+++ src/main/webapp/WEB-INF/jsp/uss/ion/pay/prePay/PrePayList.jsp
@@ -0,0 +1,266 @@
+<%--
+  Class Name : PrePayList.jsp
+  Description : B선 회원 선결제 리스트 페이지
+  Modification Information
+
+      수정일         수정자                   수정내용
+    -------    --------    ---------------------------
+    2023.10.26    우영두          최초 생성
+
+    Copyright (C) 2009 by ITN  All right reserved.
+--%>
+<%@ page contentType="text/html; charset=utf-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
+<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
+<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
+<%   
+	response.setHeader("Cache-Control","no-store");   
+	response.setHeader("Pragma","no-cache");   
+	response.setDateHeader("Expires",0);   
+	if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache"); 
+%> 
+<!DOCTYPE html>
+<html lang="ko">
+<head>
+<title>선결제 리스트</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
+<script type="text/javaScript" language="javascript">
+
+function linkPage(pageNo){
+	var listForm = document.listForm ;
+	listForm.pageIndex.value = pageNo ;
+	listForm.submit();
+}
+
+/* 체크된 메인배너  목록 삭제 */
+function fn_delete(){
+	if($("input[name=chkEach]:checked").length == 0){
+		alert("삭제할 항목을 선택해 주세요.");
+		return;
+	}
+		
+	if (confirm("해당 정보를 삭제하시겠습니까?")){
+		frm = document.listForm;
+		frm.action = "<c:url value='/uss/ion/pay/PrePayDelete.do'/>";
+	    frm.submit();
+	}
+}
+
+/* 수정 화면*/
+function fn_modify(prePayId){
+	var frm = document.modiForm ;
+	frm.prePayId.value = prePayId ;
+	
+	frm.action = '/uss/ion/pay/PrePayModify.do';
+	frm.submit();
+}
+
+function fnSelectMber(mberId) {
+	document.modiForm.mberId.value = mberId;
+	window.open("about:blank", 'popupSelectMber', 'width=900, height=1800, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no');
+    document.modiForm.action = "<c:url value='/uss/umt/user/EgovGnrlselectedUserView.do'/>";
+    document.modiForm.target = "popupSelectMber";
+    document.modiForm.submit();
+}
+
+//체크박스 전체선택/해제
+$(document).on("click", "#chkAll", function(e) {
+    var isChecked = $(this).is(":checked");
+    $("input[name=chkEach]:checkbox").prop("checked", isChecked);
+});
+
+//기간선택 select
+function fnSetCalMonth(val) {
+	var form = document.listForm;
+	var today = new Date();
+
+	var year = today.getFullYear();
+	var month = ("0"+(today.getMonth()+1)).slice(-2);
+	var date = ("0"+today.getDate()).slice(-2);
+
+	var sDate = new Date(today.setMonth(today.getMonth() - val));
+
+	var sYear = sDate.getFullYear();
+	var sMonth = ("0"+(sDate.getMonth()+1)).slice(-2);
+	var sDate = ("0"+sDate.getDate()).slice(-2);
+	
+	form.searchStartDate.value = sYear + "-" + sMonth + "-" + sDate;
+	form.searchEndDate.value = year + "-" + month + "-" + date;
+	
+}
+    
+//엑셀 다운로드
+function sendMsgExcelDownload(){
+	var frm = document.listForm;
+	frm.method = "post"; 
+	frm.action = "<c:url value='/uss/ion/pay/SendPrePayExcelDownload.do'/>";
+	frm.submit(); 
+}    
+
+function fn_Regist(){
+	
+	location.href="/uss/ion/pay/PrePayRegist.do";
+	
+	
+}
+
+</script>
+
+</head>
+<body>
+
+<compress:html>
+
+<form name="listForm" action="<c:url value='/uss/ion/pay/PrePayList.do'/>" method="post">
+	<input name="pageIndex" type="hidden" value="<c:out value='${searchVO.pageIndex}'/>"/>
+	<input type="hidden" name="selectedId" />
+	<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
+	<input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
+	
+	<div class="contWrap">
+		<div class="pageTitle">
+			<div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div>
+			<h2 class="titType1 c_222222 fwBold">선결제 현황</h2>
+			<p class="tType6 c_999999">B선 사용자 선결제 현황을 파악할 수 있습니다.</p>
+		</div>
+		
+		<div class="pageCont">
+			<div class="listSerch">
+				<div class="calendar_wrap">
+					<select name="setCalMonth" onchange="fnSetCalMonth(this.value)">
+						<option value="0">전체</option>
+						<option value="1">1개월</option>
+						<option value="3">3개월</option>
+						<option value="6">6개월</option>
+					</select>
+					<input type="hidden" name="cal_url" id="cal_url" value="/sym/cmm/EgovNormalCalPopup.do">
+					<div class="calendar_box" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.searchStartDate);">
+						<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="searchStartDate" id="searchStartDate" size="4" maxlength="4" readonly="" value="<c:out value='${searchVO.searchStartDate}'/>">
+						<input type="button" class="calBtn">
+					</div>
+					<span class="line">~</span>
+					<div class="calendar_box" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.searchEndDate);">
+						<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="searchEndDate" id="searchEndDate" size="4" maxlength="4" readonly="" value="<c:out value='${searchVO.searchEndDate}'/>">
+						<input type="button" class="calBtn">
+					</div>
+				</div>
+				<select id="searchCondition" name="searchCondition" class="select" title="전송사">
+					<option value="">전체</option>
+					<option value="08" <c:if test="${searchVO.searchCondition == '08'}">selected="selected"</c:if>>제이제이 B선 01 라인 </option>
+					<option value="09" <c:if test="${searchVO.searchCondition == '09'}">selected="selected"</c:if>>제이제이 B선 02 라인</option>
+				</select>
+				<input id="searchKeyword" name="searchKeyword" class="recentSearch" type="text" value="<c:out value='${searchVO.searchKeyword}'/>" size="25" title="검색" maxlength="100"/>
+				<input type="button" class="btnType1" value="검색" onclick="fn_search(); return false;">
+				<input type="button" class="btnType1" onclick="fn_searchReset(); return false;" value="초기화">
+			</div>
+			<div class="listTop">
+				<p class="tType5">총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건(총 <fmt:formatNumber value="${totSumPrice}" pattern="#,###" /> 원)</p>
+				<div class="rightWrap">
+					<!-- <input type="button" class="printBtn"> -->
+					<input type="button" class="excelBtn" onclick="javascript:sendMsgExcelDownload();" style="cursor: pointer;" />
+					<select name="pageUnit" id="pageUnit" class="select" title="검색조건선택" onchange="linkPage(1); return false;">
+						<option value='10' <c:if test="${searchVO.pageUnit == '10' or searchVO.pageUnit == ''}">selected</c:if>>10줄</option>
+						<option value='20' <c:if test="${searchVO.pageUnit == '20'}">selected</c:if>>20줄</option>
+						<option value='30' <c:if test="${searchVO.pageUnit == '30'}">selected</c:if>>30줄</option>
+					</select>
+				</div>
+			</div>
+			<div class="tableWrap">
+				<table class="tbType1">
+					<colgroup>
+						<col style="width: 10%">
+						<col style="width: 10%">
+						<col style="width: 10%">
+						<col style="width: 20%">
+						<col style="width: 15%">
+						<col style="width: 20%">
+						<col style="width: 15%">
+					</colgroup>
+					<thead>
+						<tr>
+							<!-- <th><input type="checkbox" name="checkAll" id="checkAll" class="check2" value="1" onClick="fnCheckAll();"></th> -->
+							<th>
+								<input type="checkbox" id="chkAll">
+							</th>							
+							<th>번호<input type="button" class="sort sortBtn" id="sort_prePayId"></th>
+							<th>아이디<input type="button" class="sort sortBtn" id="sort_mberId"></th>
+							<th>전송사<input type="button" class="sort sortBtn" id="sort_agentCode"></th>
+							<th>선결제일시<input type="button" class="sort sortBtn" id="sort_prePayDate"></th>
+							<th>결제금액<input type="button" class="sort sortBtn" id="sort_amt"></th>
+							<th>등록일자<input type="button" class="sort sortBtn" id="sort_lastUpdtPnttm"></th>
+							
+						</tr>
+					</thead>
+					<tbody>
+						<c:forEach var="result" items="${resultList}" varStatus="status">
+						<tr>
+							<td>
+								<input type="checkbox" name="chkEach" id="chkEach_${status.index}" value="${result.prePayId}">
+							</td>
+							<td>
+								<c:if test="${searchVO.searchSortOrd eq 'desc' }">
+		                			<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
+			                	</c:if>
+			                	<c:if test="${searchVO.searchSortOrd eq 'asc' }">
+									<c:out value="${(paginationInfo.currentPageNo - 1) * paginationInfo.recordCountPerPage + status.count}"/>                   		
+			                	</c:if>
+							</td>
+							
+							<td>
+								<a href="#" onclick="javascript:fnSelectMber('<c:out value="${result.mberId}"/>'); return false;">
+									<c:out value="${result.mberId}"/>
+								</a>
+							</td>
+							<td>
+								<a href="#" onclick="javascript:fn_modify('<c:out value="${result.prePayId}"/>'); return false;">
+									<c:out value="${result.agentCodeDc}"/>
+								</a>
+							</td>
+							<td>
+								<a href="#" onclick="javascript:fn_modify('<c:out value="${result.prePayId}"/>'); return false;">
+									<c:out value="${result.prePayDate}"/> <c:out value="${result.prePayTime}"/>							
+								</a>
+							</td>
+							<td>
+								<fmt:formatNumber value="${result.amt}" pattern="#,###" />
+							</td>
+							<td>
+								<c:out value="${result.lastUpdtPnttm}"/>
+							</td>
+						</tr>
+						</c:forEach>
+						<c:if test="${empty resultList}">
+		         			<tr><td colspan="6"><spring:message code="common.nodata.msg" /></td></tr>
+		         		</c:if>    
+					</tbody>
+				</table>
+			</div>
+			<div class="btnWrap">
+				<input type="button" class="btnType2" value="삭제" onclick="fn_delete(); return false;">
+				<input type="button" class="btnType1" value="등록" onclick="fn_Regist(); return false;">
+			</div>
+			<!-- 페이지 네비게이션 시작 -->
+			<c:if test="${!empty resultList}">
+		 		<div class="page">
+		    		<ul class="inline">
+		    			<ui:pagination paginationInfo = "${paginationInfo}"  type="image" jsFunction="linkPage" />
+		    		</ul>	
+		    	</div>  
+		  	</c:if>                      
+		    <!-- //페이지 네비게이션 끝 --> 
+		</div>
+	</div>
+</form>
+<form name="modiForm" id="modiForm" method="post">
+	<input type="hidden" name="prePayId" />
+	<input type="hidden" name="searchCondition" value="" />
+	<input type="hidden" name="searchKeyword" value="" />
+	<input type="hidden" name="pageUnit" value="${searchVO.pageUnit}" />
+</form>
+</compress:html>
+</body>
+</html>
 
src/main/webapp/WEB-INF/jsp/uss/ion/pay/prePay/PrePayModify.jsp (added)
+++ src/main/webapp/WEB-INF/jsp/uss/ion/pay/prePay/PrePayModify.jsp
@@ -0,0 +1,201 @@
+<%
+ /**
+  * @Class Name : PrePayModify.jsp
+  * @Description : B선 회원 선결제 상세 화면
+  * @Modification Information
+  * @
+  * @  수정일             수정자                   수정내용
+  * @ -------    --------    ---------------------------
+  * @ 2009.02.01   박정규              최초 생성
+  *   2016.06.13   김연호              표준프레임워크 v3.6 개선
+  *
+  *  @author 공통서비스팀 
+  *  @since 2009.02.01
+  *  @version 1.0
+  *  @see
+  *  
+  */
+%>
+<%@ page contentType="text/html; charset=utf-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
+<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
+<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
+<!DOCTYPE html>
+<html lang="ko">
+<head>
+<title>팝업창관리 관리</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
+<script type="text/javaScript" language="javascript">
+
+/* 수정 */
+function fn_modify(){
+	
+	var frm = document.writeForm;
+
+	if(frm.mberId.value == ''){
+		
+		alert("아이디를 입력해 주세요.");
+		return false;
+		
+	}
+	
+	if(frm.prePayDate.value == ''){
+		
+		alert("결제일자를 선택해 주세요.");
+		return false;
+		
+	}
+	
+	if(frm.prePayTime.value == ''){
+		
+		alert("결제 시간을 입력해 주세요.");
+		return false;
+		
+	}
+	
+	if(frm.amt.value == ''){
+		
+		alert("결제금액을 입력해 주세요.");
+		return false;
+		
+	}
+	
+	if(!confirm("수정하시겠습니까?")) {
+		return;
+	}
+	frm.action = "<c:url value='/uss/ion/pay/updatePrePayModify.do'/>";
+	frm.submit();
+}
+
+/* 체크된 메인배너  목록 삭제 */
+function fn_delete(){
+		
+	if (confirm("해당 정보를 삭제하시겠습니까?")){
+		frm = document.delForm;
+		frm.action = "<c:url value='/uss/ion/pay/PrePayDelete.do'/>";
+	    frm.submit();
+	}
+}
+
+function goList(){
+	var writeForm = document.writeForm;
+	var actionUrl = "/uss/ion/pay/PrePayList.do";
+	
+	writeForm.action = actionUrl;
+	writeForm.submit();
+}
+
+</script>
+
+<style>
+	.calBtn{
+		border: none;
+		background-color: transparent !important;
+		background-image: url(/pb/img/common/calendarIcon.png);
+		background-repeat: no-repeat;
+		width: 25px;
+		height: 25px !important;
+		vertical-align: middle;
+		margin-left: -38px !important;
+		margin-top: -2px !important;
+		cursor: pointer;
+	}
+	.pageCont {width:100%;padding:50px 30px;box-sizing:border-box;}
+	.tableWrapTotal {margin:0 0 20px;}
+	.tableWrapTotal .tbType1 thead tr:first-child {border-width:1px;}
+	.tableWrapTotal .tbType1 thead tr th {border-left:1px solid #e6e6e6;}
+	.tableWrapTotal .tbType1 thead tr th:first-child {border-left:0 none;}
+	.tableWrapTotal .tbType1 thead tr.content th {font-size:14px;}
+	.tableWrapTotal .tbType1 tbody tr td {border-left:1px solid #e6e6e6;}
+	.tableWrapTotal .tbType1 tbody tr td:first-child {border-left:0 none;}
+	.listSerch .select {height:42px;vertical-align:top;}
+	.pageCont .tbType1 tbody tr td.msg_detail {overflow:inherit;}
+	.pageCont .tbType1 tbody tr td.msg_detail a {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;}
+	.layer_msg_wrap {position:relative;}
+	.layer_msg_wrap .layer_msg_detail {overflow:hidden;display:none;position:fixed;left:50%;top:50%;width:400px;max-height:600px;background:#eee;transform:translate(-50%, -50%);z-index:1;}
+	.layer_msg_wrap .layer_msg_detail button {position:absolute;right:0;top:0;width:35px;height:35px;}
+	.layer_msg_wrap .layer_msg_detail button:before {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(-45deg);}
+	.layer_msg_wrap .layer_msg_detail button:after {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(45deg);}
+	.layer_msg_wrap .layer_msg_detail .title {height:35px;padding:0 15px;font-size:16px;line-height:35px;text-align:left;color:#fff;background:#456ded;border-radius:5px 5px 0 0;}
+	.layer_msg_wrap .layer_msg_detail .content {overflow-y:auto;max-height:535px;margin:15px;padding:10px 15px;line-height:20px;white-space:normal;background:#fff;}
+	.layer_msg_wrap .layer_msg_detail .content .rev_cont {text-align:left;}
+	@media screen and (max-width:916px){
+		.pageCont .tableWrap table thead tr th {padding:15px 0;}
+	}
+</style>
+
+</head>
+<body>
+<form name="writeForm" id="writeForm"  method="post">
+	<input type="hidden" id="prePayId" name="prePayId" value="<c:out value='${resultVO.prePayId}'/>"/>
+	<div class="contWrap">
+		<div class="pageTitle">
+			<div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div>
+			<h2 class="titType1 c_222222 fwBold">선결제 정보 수정</h2>
+			<p class="tType6 c_999999">선결제정보 수정 할 수 있습니다.</p>
+		</div>
+		<div class="pageCont">
+			<table class="tbType2">
+				<colgroup>
+					<col style="width: 20%">
+					<col style="width: 80%">
+				</colgroup>
+				<tbody>
+					<tr class="no_modi">
+						<th><span class="reqArea">아이디</span></th>
+						<td colspan="3">
+							<input type="text" id="mberId" name="mberId" value="<c:out value="${resultVO.mberId}"/>" title="아이디" style="width:120px;" maxlength="20" />
+						</td>
+					</tr>
+					
+					<tr class="no_modi">
+						<th><span class="reqArea">전송사</span></th>
+						<td colspan="3">
+							<select id="agentCode" name="agentCode" >
+								<option value="08" <c:if test="${resultVO.agentCode == '08'}">selected</c:if> >JJ B선 01라인</option>
+								<option value="09" <c:if test="${resultVO.agentCode == '09'}">selected</c:if> >JJ B선 02라인</option>
+							</select>
+						</td>
+					</tr>
+					
+					<tr class="no_modi">
+						<th><span class="reqArea">결제일시</span></th>
+						<td colspan="3">
+							<input type="hidden" name="cal_url" id="cal_url" value="/sym/cmm/EgovNormalCalPopup.do">
+							<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.writeForm, document.forms.writeForm.prePayDate);">
+								<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="prePayDate" id="prePayDate" size="4" maxlength="4" readonly="" value="<c:out value='${resultVO.prePayDate}'/>">
+								<input type="button" class="calBtn">
+							</a>
+							<input type="text" id="prePayTime" name="prePayTime" value="<c:out value='${resultVO.prePayTime}'/>" style="width:auto;min-width:73px; margin:0 0 0 10px;" size="2" maxLength="5"/>
+						</td>
+					</tr>
+					
+					<tr class="no_modi">
+						<th><span class="reqArea">결제금액</span></th>
+						<td colspan="3">
+							<fmt:formatNumber value="${resultVO.amt}" pattern="#,###" var="cash"/>
+							<input type="text" step="0.01" id="amtInputId" name="amt" value="${cash}" title="결제금액" style="width:auto;min-width:120px;" size="2" maxlength="30" onblur="foucusOut(this)"/> 원
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			<div class="btnWrap">
+				<input type="button" class="btnType2" value="삭제" onclick="fn_delete(); return false;">
+				<input type="button" class="btnType1 bg_888888" value="목 록" onclick="goList();return false;">
+				<input type="button" class="btnType1" value="수 정" onclick="fn_modify(); return false;">
+				
+			</div>
+	 	</div>
+	</div>
+</form>
+<form id="delForm" name="delForm" method="post">
+	<input type="hidden" id="chkEach" name="chkEach" value="<c:out value='${resultVO.prePayId}'/>"/>
+</form>
+
+</body>
+</html>
 
src/main/webapp/WEB-INF/jsp/uss/ion/pay/prePay/PrePayRegist.jsp (added)
+++ src/main/webapp/WEB-INF/jsp/uss/ion/pay/prePay/PrePayRegist.jsp
@@ -0,0 +1,265 @@
+<%
+ /**
+  * @Class Name : PrePayRegist.jsp
+  * @Description : B선 회원 선결제 등록 화면
+  * @Modification Information
+  * @
+  * @  수정일             수정자                   수정내용
+  * @ -------    --------    ---------------------------
+  * @ 2009.02.01   박정규              최초 생성
+  *   2016.06.13   김연호              표준프레임워크 v3.6 개선
+  *
+  *  @author 공통서비스팀 
+  *  @since 2009.02.01
+  *  @version 1.0
+  *  @see
+  *  
+  */
+%>
+<%@ page contentType="text/html; charset=utf-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
+<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
+<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
+<!DOCTYPE html>
+<html lang="ko">
+<head>
+<title>전송사 선결제 관리</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
+<script type="text/javaScript" language="javascript">
+$( document ).ready(function(){
+	
+	$('#amtInputId').off('input').on('input',function(e){
+		/* var value = $(this).val();
+		var regExp = /^-?\d*.?\d{0,2}$/;
+		if(!regExp.test(value)){
+			$(this).val(value.substring(0,value.length-1));
+		} */
+		
+		var value = $(this).val();
+		var regExp =/^([-]?(\d*))(\.?\d{0,2})$/;
+		if(!regExp.test(value)){
+			value = value.substr(0, value.length - 1);
+			if(value.lastIndexOf("-")>0){ //중간에 -가 있다면 replace
+				if(value.indexOf("-")==0){ //음수라면 replace 후 - 붙여준다.
+					value = "-"+value.replace(/[-]/gi,'');
+				}else{
+					value = value.replace(/[-]/gi,'');
+				}
+			}
+// 			alert("거짓  "+value)
+		}else{
+// 			alert("참  "+value)
+		}
+		$(this).val(value);
+	});
+
+});
+
+
+function goList(){
+	var writeForm = document.writeForm;
+	var actionUrl = "/uss/ion/pay/PrePayList.do";
+	
+	writeForm.action = actionUrl;
+	writeForm.submit();
+}
+
+function fnPrePaySave(){
+	
+	var form = document.writeForm;
+	
+	if(form.mberId.value == ''){
+		
+		alert("아이디를 입력해 주세요.");
+		return false;
+		
+	}
+	
+	if(form.prePayDate.value == ''){
+		
+		alert("결제일자를 선택해 주세요.");
+		return false;
+		
+	}
+	
+	if(form.prePayTime.value == ''){
+		
+		alert("결제 시간을 입력해 주세요.");
+		return false;
+		
+	}
+	
+	if(form.amt.value == ''){
+		
+		alert("결제금액을 입력해 주세요.");
+		return false;
+		
+	}
+	
+	
+	var data = new FormData(document.writeForm);
+	var url = "/uss/ion/pay/insertPrePayRegistAjax.do";
+	
+	
+	$.ajax({
+        type: "POST",
+        url: url,
+        data: data,
+        dataType:'json',
+        async: true,
+        processData: false,
+        contentType: false,
+        cache: false,
+        //timeout: 600000,
+        success: function (returnData, status) {
+			if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
+				
+				var result = returnData.result;
+				var message = returnData.message;
+				
+				if(result == "success"){
+					
+					alert(message);
+					goList();
+					
+				}else{
+					alert(returnData.message);
+					return false;
+					
+				}
+			} else if(status== 'fail'){
+				alert("선결제 정보 등록 중 오류가 발생하였습니다.");
+				console.log("status : fail ~");
+			}
+		},
+		error: function (e) { 
+        	alert("선결제 정보 등록 중 오류가 발생하였습니다."); 
+        	console.log("ERROR : ", e); 
+        },
+		beforeSend : function(xmlHttpRequest) {
+        	//로딩창 show
+        	$('.loading_layer').addClass('active');				
+		},	        	        
+        complete : function(xhr, textStatus) {
+        	//로딩창 hide
+        	$('.loading_layer').removeClass('active');
+		}
+    });
+	
+}
+
+</script>
+
+<style>
+	.calBtn{
+		border: none;
+		background-color: transparent !important;
+		background-image: url(/pb/img/common/calendarIcon.png);
+		background-repeat: no-repeat;
+		width: 25px;
+		height: 25px !important;
+		vertical-align: middle;
+		margin-left: -38px !important;
+		margin-top: -2px !important;
+		cursor: pointer;
+	}
+	.pageCont {width:100%;padding:50px 30px;box-sizing:border-box;}
+	.tableWrapTotal {margin:0 0 20px;}
+	.tableWrapTotal .tbType1 thead tr:first-child {border-width:1px;}
+	.tableWrapTotal .tbType1 thead tr th {border-left:1px solid #e6e6e6;}
+	.tableWrapTotal .tbType1 thead tr th:first-child {border-left:0 none;}
+	.tableWrapTotal .tbType1 thead tr.content th {font-size:14px;}
+	.tableWrapTotal .tbType1 tbody tr td {border-left:1px solid #e6e6e6;}
+	.tableWrapTotal .tbType1 tbody tr td:first-child {border-left:0 none;}
+	.listSerch .select {height:42px;vertical-align:top;}
+	.pageCont .tbType1 tbody tr td.msg_detail {overflow:inherit;}
+	.pageCont .tbType1 tbody tr td.msg_detail a {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;}
+	.layer_msg_wrap {position:relative;}
+	.layer_msg_wrap .layer_msg_detail {overflow:hidden;display:none;position:fixed;left:50%;top:50%;width:400px;max-height:600px;background:#eee;transform:translate(-50%, -50%);z-index:1;}
+	.layer_msg_wrap .layer_msg_detail button {position:absolute;right:0;top:0;width:35px;height:35px;}
+	.layer_msg_wrap .layer_msg_detail button:before {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(-45deg);}
+	.layer_msg_wrap .layer_msg_detail button:after {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(45deg);}
+	.layer_msg_wrap .layer_msg_detail .title {height:35px;padding:0 15px;font-size:16px;line-height:35px;text-align:left;color:#fff;background:#456ded;border-radius:5px 5px 0 0;}
+	.layer_msg_wrap .layer_msg_detail .content {overflow-y:auto;max-height:535px;margin:15px;padding:10px 15px;line-height:20px;white-space:normal;background:#fff;}
+	.layer_msg_wrap .layer_msg_detail .content .rev_cont {text-align:left;}
+	@media screen and (max-width:916px){
+		.pageCont .tableWrap table thead tr th {padding:15px 0;}
+	}
+</style>
+
+</head>
+<body>
+<form name="writeForm" id="writeForm"  method="post">
+
+	<div class="loading_layer">
+		<div class="loading_container">
+			<div class="bar"></div>
+			<div class="text">Loading</div>
+		</div>
+	</div>
+
+	<div class="contWrap">
+		<div class="pageTitle">
+			<div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div>
+			<h2 class="titType1 c_222222 fwBold">전송사 선결제 현황</h2>
+			<p class="tType6 c_999999">B선 회원의 선결제 현황을 파악할 수 있습니다.</p>
+		</div>
+		<div class="pageCont">
+			<table class="tbType2">
+				<colgroup>
+					<col style="width: 20%">
+					<col style="width: 80%">
+				</colgroup>
+				<tbody>
+					<tr class="no_modi">
+						<th><span class="reqArea">아이디</span></th>
+						<td colspan="3">
+							<input type="text" id="mberId" name="mberId" value="" title="아이디" style="width:120px;" maxlength="20" />
+						</td>
+					</tr>
+					
+					<tr class="no_modi">
+						<th><span class="reqArea">전송사</span></th>
+						<td colspan="3">
+							<select id="agentCode" name="agentCode" >
+								<option value="08">JJ B선 01라인</option>
+								<option value="09">JJ B선 02라인</option>
+							</select>
+						</td>
+					</tr>
+					
+					<tr class="no_modi">
+						<th><span class="reqArea">결제일시</span></th>
+						<td colspan="3">
+							<input type="hidden" name="cal_url" id="cal_url" value="/sym/cmm/EgovNormalCalPopup.do">
+							<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.writeForm, document.forms.writeForm.prePayDate);">
+								<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="prePayDate" id="prePayDate" size="4" maxlength="4" readonly="" value="">
+								<input type="button" class="calBtn">
+							</a>
+							<input type="text" id="prePayTime" name="prePayTime" style="width:auto;min-width:73px; margin:0 0 0 10px;" size="2" maxLength="5"/>
+						</td>
+					</tr>
+					
+					<tr class="no_modi">
+						<th><span class="reqArea">결제금액</span></th>
+						<td colspan="3">
+							<fmt:formatNumber value="" pattern="#,###" var="cash"/>
+							<input type="text" step="0.01" id="amtInputId" name="amt" value="${cash}" title="결제금액" style="width:auto;min-width:120px;" size="2" maxlength="30" onblur="foucusOut(this)"/> 원
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			<div class="btnWrap">
+				<input type="button" class="btnType1 bg_888888" value="목 록" onclick="goList();return false;">
+				<input type="button" class="btnType1 bg_888888" value="저 장" onclick="fnPrePaySave();return false;">
+			</div>
+	 	</div>
+	</div>
+</form>
+</body>
+</html>
 
src/main/webapp/WEB-INF/jsp/uss/ion/pay/prePay/popup/PrePayPopupList.jsp (added)
+++ src/main/webapp/WEB-INF/jsp/uss/ion/pay/prePay/popup/PrePayPopupList.jsp
@@ -0,0 +1,315 @@
+<%--
+  Class Name : PrePayList.jsp
+  Description : B선 회원 선결제 리스트 페이지
+  Modification Information
+
+      수정일         수정자                   수정내용
+    -------    --------    ---------------------------
+    2023.10.26    우영두          최초 생성
+
+    Copyright (C) 2009 by ITN  All right reserved.
+--%>
+<%@ page contentType="text/html; charset=utf-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
+<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
+<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
+<%   
+	response.setHeader("Cache-Control","no-store");   
+	response.setHeader("Pragma","no-cache");   
+	response.setDateHeader("Expires",0);   
+	if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache"); 
+%> 
+<!DOCTYPE html>
+<html lang="ko">
+<head>
+<title>선결제 리스트</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<link rel="stylesheet" href="/pb/css/reset.css">
+<link rel="stylesheet" href="/pb/css/common.css">
+<link rel="stylesheet" href="/pb/css/content.css">
+<link rel="stylesheet" href="/pb/css/popup.css">
+<script type="text/javascript" src="/pb/js/jquery-3.5.0.js"></script>
+<script type="text/javascript" src="/pb/js/common.js"></script>
+<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
+<script type="text/javascript" src="<c:url value='/js/EgovCalPopup.js'/>"></script>
+<script type="text/javascript" src="<c:url value='/js/ncms_common.js' />"></script>
+
+<script type="text/javaScript" language="javascript">
+
+function linkPage(pageNo){
+	var listForm = document.listForm ;
+	listForm.pageIndex.value = pageNo ;
+	listForm.submit();
+}
+
+/* 체크된 메인배너  목록 삭제 */
+/* function fn_delete(){
+	if($("input[name=chkEach]:checked").length == 0){
+		alert("삭제할 항목을 선택해 주세요.");
+		return;
+	}
+		
+	if (confirm("해당 정보를 삭제하시겠습니까?")){
+		frm = document.listForm;
+		frm.action = "<c:url value='/uss/ion/pay/PrePayDelete.do'/>";
+	    frm.submit();
+	}
+} */
+
+/* 수정 화면*/
+function fn_modify(prePayId){
+	var frm = document.modiForm ;
+	frm.prePayId.value = prePayId ;
+	
+	frm.action = '/uss/ion/pay/PrePayPopupModifyAjax.do';
+	frm.submit();
+}
+
+/* function fnSelectMber(mberId) {
+	document.modiForm.mberId.value = mberId;
+	window.open("about:blank", 'popupSelectMber', 'width=1600, height=800, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no');
+    document.modiForm.action = "<c:url value='/uss/umt/user/EgovGnrlselectedUserView.do'/>";
+    document.modiForm.target = "popupSelectMber";
+    document.modiForm.submit();
+} */
+
+//체크박스 전체선택/해제
+$(document).on("click", "#chkAll", function(e) {
+    var isChecked = $(this).is(":checked");
+    $("input[name=chkEach]:checkbox").prop("checked", isChecked);
+});
+
+//기간선택 select
+function fnSetCalMonth(val) {
+	var form = document.listForm;
+	var today = new Date();
+
+	var year = today.getFullYear();
+	var month = ("0"+(today.getMonth()+1)).slice(-2);
+	var date = ("0"+today.getDate()).slice(-2);
+
+	var sDate = new Date(today.setMonth(today.getMonth() - val));
+
+	var sYear = sDate.getFullYear();
+	var sMonth = ("0"+(sDate.getMonth()+1)).slice(-2);
+	var sDate = ("0"+sDate.getDate()).slice(-2);
+	
+	form.searchStartDate.value = sYear + "-" + sMonth + "-" + sDate;
+	form.searchEndDate.value = year + "-" + month + "-" + date;
+	
+}
+    
+//엑셀 다운로드
+function sendMsgExcelDownload(){
+	var frm = document.listForm;
+	frm.method = "post"; 
+	frm.action = "<c:url value='/uss/ion/pay/SendPayExcelDownload.do'/>";
+	frm.submit(); 
+}    
+
+//B선회원 선결제 팝업
+function fn_RegistPopup(){
+	
+	window.open("_blank", 'popupSelectPrePayRegist', 'width=700, height=800, top=50, left=0, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no');
+    document.modiForm.action = "<c:url value='/uss/ion/pay/PrePayPopupRegistAjax.do'/>";
+    document.modiForm.target = "popupSelectPrePayRegist";
+    document.modiForm.submit();
+}
+
+</script>
+
+<style>
+	.calBtn{
+		border: none;
+		background-color: transparent !important;
+		background-image: url(/pb/img/common/calendarIcon.png);
+		background-repeat: no-repeat;
+		width: 25px;
+		height: 25px !important;
+		vertical-align: middle;
+		margin-left: -38px !important;
+		margin-top: -2px !important;
+		cursor: pointer;
+	}
+	.pageCont {width:100%;padding:50px 30px;box-sizing:border-box;}
+	.tableWrapTotal {margin:0 0 20px;}
+	.tableWrapTotal .tbType1 thead tr:first-child {border-width:1px;}
+	.tableWrapTotal .tbType1 thead tr th {border-left:1px solid #e6e6e6;}
+	.tableWrapTotal .tbType1 thead tr th:first-child {border-left:0 none;}
+	.tableWrapTotal .tbType1 thead tr.content th {font-size:14px;}
+	.tableWrapTotal .tbType1 tbody tr td {border-left:1px solid #e6e6e6;}
+	.tableWrapTotal .tbType1 tbody tr td:first-child {border-left:0 none;}
+	.listSerch .select {height:42px;vertical-align:top;}
+	.pageCont .tbType1 tbody tr td.msg_detail {overflow:inherit;}
+	.pageCont .tbType1 tbody tr td.msg_detail a {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;}
+	.layer_msg_wrap {position:relative;}
+	.layer_msg_wrap .layer_msg_detail {overflow:hidden;display:none;position:fixed;left:50%;top:50%;width:400px;max-height:600px;background:#eee;transform:translate(-50%, -50%);z-index:1;}
+	.layer_msg_wrap .layer_msg_detail button {position:absolute;right:0;top:0;width:35px;height:35px;}
+	.layer_msg_wrap .layer_msg_detail button:before {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(-45deg);}
+	.layer_msg_wrap .layer_msg_detail button:after {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(45deg);}
+	.layer_msg_wrap .layer_msg_detail .title {height:35px;padding:0 15px;font-size:16px;line-height:35px;text-align:left;color:#fff;background:#456ded;border-radius:5px 5px 0 0;}
+	.layer_msg_wrap .layer_msg_detail .content {overflow-y:auto;max-height:535px;margin:15px;padding:10px 15px;line-height:20px;white-space:normal;background:#fff;}
+	.layer_msg_wrap .layer_msg_detail .content .rev_cont {text-align:left;}
+	@media screen and (max-width:916px){
+		.pageCont .tableWrap table thead tr th {padding:15px 0;}
+	}
+</style>
+
+</head>
+<body>
+
+<compress:html>
+
+<form name="listForm" action="<c:url value='/uss/ion/pay/PrePayPopupListAjax.do'/>" method="post">
+	<input name="pageIndex" type="hidden" value="<c:out value='${searchVO.pageIndex}'/>"/>
+	<input type="hidden" name="selectedId" />
+	<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
+	<input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
+	
+	<div class="contWrap" style="position:relative;left:inherit;top:inherit;min-height:auto;padding:40px;">
+		<div class="pageTitle">
+			<div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div>
+			<h2 class="titType1 c_222222 fwBold">선결제 현황</h2>
+			<p class="tType6 c_999999">B선 사용자 선결제 현황을 파악할 수 있습니다.</p>
+		</div>
+		
+		<div class="pageCont">
+			<div class="listSerch">
+				<div class="calendar_wrap">
+					<select name="setCalMonth" onchange="fnSetCalMonth(this.value)">
+						<option value="0">전체</option>
+						<option value="1">1개월</option>
+						<option value="3">3개월</option>
+						<option value="6">6개월</option>
+					</select>
+					<input type="hidden" name="cal_url" id="cal_url" value="/sym/cmm/EgovNormalCalPopup.do">
+					<div class="calendar_box" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.searchStartDate);">
+						<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="searchStartDate" id="searchStartDate" size="4" maxlength="4" readonly="" value="<c:out value='${searchVO.searchStartDate}'/>">
+						<input type="button" class="calBtn">
+					</div>
+					<span class="line">~</span>
+					<div class="calendar_box" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.searchEndDate);">
+						<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="searchEndDate" id="searchEndDate" size="4" maxlength="4" readonly="" value="<c:out value='${searchVO.searchEndDate}'/>">
+						<input type="button" class="calBtn">
+					</div>
+				</div>
+				<select id="searchCondition" name="searchCondition" class="select" title="전송사">
+					<option value="">전체</option>
+					<option value="08" <c:if test="${searchVO.searchCondition == '08'}">selected="selected"</c:if>>제이제이 B선 01 라인 </option>
+					<option value="09" <c:if test="${searchVO.searchCondition == '09'}">selected="selected"</c:if>>제이제이 B선 02 라인</option>
+				</select>
+				<input id="searchKeyword" name="searchKeyword" class="recentSearch" type="text" value="<c:out value='${searchVO.searchKeyword}'/>" size="25" title="검색" maxlength="100"/>
+				<input type="button" class="btnType1" value="검색" onclick="fn_search(); return false;">
+				<input type="button" class="btnType1" onclick="fn_searchReset(); return false;" value="초기화">
+			</div>
+			<div class="listTop">
+				<p class="tType5">총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건(총 <fmt:formatNumber value="${totSumPrice}" pattern="#,###" /> 원)</p>
+				<div class="rightWrap">
+					<!-- <input type="button" class="printBtn"> -->
+					<input type="button" class="excelBtn" onclick="javascript:sendMsgExcelDownload();" style="cursor: pointer;" />
+					<select name="pageUnit" id="pageUnit" class="select" title="검색조건선택" onchange="linkPage(1);">
+						<option value='10' <c:if test="${searchVO.pageUnit == '10' or searchVO.pageUnit == ''}">selected</c:if>>10줄</option>
+						<option value='20' <c:if test="${searchVO.pageUnit == '20'}">selected</c:if>>20줄</option>
+						<option value='30' <c:if test="${searchVO.pageUnit == '30'}">selected</c:if>>30줄</option>
+					</select>
+				</div>
+			</div>
+			<div class="tableWrap">
+				<table class="tbType1">
+					<colgroup>
+						<%-- <col style="width: 10%"> --%>
+						<col style="width: 10%">
+						<col style="width: 10%">
+						<col style="width: 20%">
+						<col style="width: 15%">
+						<col style="width: 20%">
+						<col style="width: 15%">
+					</colgroup>
+					<thead>
+						<tr>
+							<!-- <th><input type="checkbox" name="checkAll" id="checkAll" class="check2" value="1" onClick="fnCheckAll();"></th> -->
+							<!-- <th>
+								<input type="checkbox" id="chkAll">
+							</th>		 -->					
+							<th>번호<input type="button" class="sort sortBtn" id="sort_prePayId"></th>
+							<th>아이디<input type="button" class="sort sortBtn" id="sort_mberId"></th>
+							<th>전송사<input type="button" class="sort sortBtn" id="sort_agentCode"></th>
+							<th>선결제일시<input type="button" class="sort sortBtn" id="sort_prePayDate"></th>
+							<th>결제금액<input type="button" class="sort sortBtn" id="sort_amt"></th>
+							<th>등록일자<input type="button" class="sort sortBtn" id="sort_lastUpdtPnttm"></th>
+							
+						</tr>
+					</thead>
+					<tbody>
+						<c:forEach var="result" items="${resultList}" varStatus="status">
+						<tr>
+							<%-- <td>
+								<input type="checkbox" name="chkEach" id="chkEach_${status.index}" value="${result.prePayId}">
+							</td> --%>
+							<td>
+								<c:if test="${searchVO.searchSortOrd eq 'desc' }">
+		                			<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
+			                	</c:if>
+			                	<c:if test="${searchVO.searchSortOrd eq 'asc' }">
+									<c:out value="${(paginationInfo.currentPageNo - 1) * paginationInfo.recordCountPerPage + status.count}"/>                   		
+			                	</c:if>
+							</td>
+							
+							<td>
+								<%-- <a href="#" onclick="javascript:fnSelectMber('<c:out value="${result.mberId}"/>'); return false;"> --%>
+									<c:out value="${result.mberId}"/>
+								<!-- </a> -->
+							</td>
+							<td>
+								<a href="#" onclick="javascript:fn_modify('<c:out value="${result.prePayId}"/>'); return false;">
+									<c:out value="${result.agentCodeDc}"/>
+								</a>
+							</td>
+							<td>
+								<a href="#" onclick="javascript:fn_modify('<c:out value="${result.prePayId}"/>'); return false;">
+									<c:out value="${result.prePayDate}"/> <c:out value="${result.prePayTime}"/>							
+								</a>
+							</td>
+							<td>
+								<fmt:formatNumber value="${result.amt}" pattern="#,###" />
+							</td>
+							<td>
+								<c:out value="${result.lastUpdtPnttm}"/>
+							</td>
+						</tr>
+						</c:forEach>
+						<c:if test="${empty resultList}">
+		         			<tr><td colspan="6"><spring:message code="common.nodata.msg" /></td></tr>
+		         		</c:if>    
+					</tbody>
+				</table>
+			</div>
+			<div class="btnWrap">
+				<!-- <input type="button" class="btnType2" value="삭제" onclick="fn_delete(); return false;"> -->
+				<input type="button" class="btnType1" value="등록" onclick="fn_RegistPopup(); return false;">
+			</div>
+			<!-- 페이지 네비게이션 시작 -->
+			<c:if test="${!empty resultList}">
+		 		<div class="page">
+		    		<ul class="inline">
+		    			<ui:pagination paginationInfo = "${paginationInfo}"  type="image" jsFunction="linkPage" />
+		    		</ul>	
+		    	</div>  
+		  	</c:if>                      
+		    <!-- //페이지 네비게이션 끝 --> 
+		</div>
+	</div>
+</form>
+<form name="modiForm" id="modiForm" method="post">
+	<input type="hidden" name="prePayId" />
+	<input type="hidden" name="mberId" value="<c:out value='${mberId}'/>"/>
+	<input type="hidden" name="searchCondition" value="" />
+	<input type="hidden" name="searchKeyword" value="" />
+	<input type="hidden" name="pageUnit" value="${searchVO.pageUnit}" />
+</form>
+</compress:html>
+</body>
+</html>
 
src/main/webapp/WEB-INF/jsp/uss/ion/pay/prePay/popup/PrePayPopupModify.jsp (added)
+++ src/main/webapp/WEB-INF/jsp/uss/ion/pay/prePay/popup/PrePayPopupModify.jsp
@@ -0,0 +1,209 @@
+<%
+ /**
+  * @Class Name : PrePayModify.jsp
+  * @Description : B선 회원 선결제 상세 화면
+  * @Modification Information
+  * @
+  * @  수정일             수정자                   수정내용
+  * @ -------    --------    ---------------------------
+  * @ 2009.02.01   박정규              최초 생성
+  *   2016.06.13   김연호              표준프레임워크 v3.6 개선
+  *
+  *  @author 공통서비스팀 
+  *  @since 2009.02.01
+  *  @version 1.0
+  *  @see
+  *  
+  */
+%>
+<%@ page contentType="text/html; charset=utf-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
+<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
+<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
+<!DOCTYPE html>
+<html lang="ko">
+<head>
+<title>팝업창관리 관리</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<link rel="stylesheet" href="/pb/css/reset.css">
+<link rel="stylesheet" href="/pb/css/common.css">
+<link rel="stylesheet" href="/pb/css/content.css">
+<link rel="stylesheet" href="/pb/css/popup.css">
+<script type="text/javascript" src="/pb/js/jquery-3.5.0.js"></script>
+<script type="text/javascript" src="/pb/js/common.js"></script>
+<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
+<script type="text/javascript" src="<c:url value='/js/EgovCalPopup.js'/>"></script>
+<script type="text/javascript" src="<c:url value='/js/ncms_common.js' />"></script>
+<script type="text/javaScript" language="javascript">
+
+/* 수정 */
+function fn_modify(){
+	
+	var frm = document.writeForm;
+
+	if(frm.mberId.value == ''){
+		
+		alert("아이디를 입력해 주세요.");
+		return false;
+		
+	}
+	
+	if(frm.prePayDate.value == ''){
+		
+		alert("결제일자를 선택해 주세요.");
+		return false;
+		
+	}
+	
+	if(frm.prePayTime.value == ''){
+		
+		alert("결제 시간을 입력해 주세요.");
+		return false;
+		
+	}
+	
+	if(frm.amt.value == ''){
+		
+		alert("결제금액을 입력해 주세요.");
+		return false;
+		
+	}
+	
+	if(!confirm("수정하시겠습니까?")) {
+		return;
+	}
+	frm.action = "<c:url value='/uss/ion/pay/updatePrePayModify.do'/>";
+	frm.submit();
+}
+
+/* 체크된 메인배너  목록 삭제 */
+function fn_delete(){
+		
+	if (confirm("해당 정보를 삭제하시겠습니까?")){
+		frm = document.delForm;
+		frm.action = "<c:url value='/uss/ion/pay/PrePayDelete.do'/>";
+	    frm.submit();
+	}
+}
+
+function goList(){
+	var writeForm = document.writeForm;
+	var actionUrl = "/uss/ion/pay/PrePayPopupListAjax.do";
+	
+	writeForm.action = actionUrl;
+	writeForm.submit();
+}
+
+</script>
+
+<style>
+	.calBtn{
+		border: none;
+		background-color: transparent !important;
+		background-image: url(/pb/img/common/calendarIcon.png);
+		background-repeat: no-repeat;
+		width: 25px;
+		height: 25px !important;
+		vertical-align: middle;
+		margin-left: -38px !important;
+		margin-top: -2px !important;
+		cursor: pointer;
+	}
+	.pageCont {width:100%;padding:50px 30px;box-sizing:border-box;}
+	.tableWrapTotal {margin:0 0 20px;}
+	.tableWrapTotal .tbType1 thead tr:first-child {border-width:1px;}
+	.tableWrapTotal .tbType1 thead tr th {border-left:1px solid #e6e6e6;}
+	.tableWrapTotal .tbType1 thead tr th:first-child {border-left:0 none;}
+	.tableWrapTotal .tbType1 thead tr.content th {font-size:14px;}
+	.tableWrapTotal .tbType1 tbody tr td {border-left:1px solid #e6e6e6;}
+	.tableWrapTotal .tbType1 tbody tr td:first-child {border-left:0 none;}
+	.listSerch .select {height:42px;vertical-align:top;}
+	.pageCont .tbType1 tbody tr td.msg_detail {overflow:inherit;}
+	.pageCont .tbType1 tbody tr td.msg_detail a {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;}
+	.layer_msg_wrap {position:relative;}
+	.layer_msg_wrap .layer_msg_detail {overflow:hidden;display:none;position:fixed;left:50%;top:50%;width:400px;max-height:600px;background:#eee;transform:translate(-50%, -50%);z-index:1;}
+	.layer_msg_wrap .layer_msg_detail button {position:absolute;right:0;top:0;width:35px;height:35px;}
+	.layer_msg_wrap .layer_msg_detail button:before {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(-45deg);}
+	.layer_msg_wrap .layer_msg_detail button:after {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(45deg);}
+	.layer_msg_wrap .layer_msg_detail .title {height:35px;padding:0 15px;font-size:16px;line-height:35px;text-align:left;color:#fff;background:#456ded;border-radius:5px 5px 0 0;}
+	.layer_msg_wrap .layer_msg_detail .content {overflow-y:auto;max-height:535px;margin:15px;padding:10px 15px;line-height:20px;white-space:normal;background:#fff;}
+	.layer_msg_wrap .layer_msg_detail .content .rev_cont {text-align:left;}
+	@media screen and (max-width:916px){
+		.pageCont .tableWrap table thead tr th {padding:15px 0;}
+	}
+</style>
+
+</head>
+<body>
+<form name="writeForm" id="writeForm"  method="post">
+	<input type="hidden" id="prePayId" name="prePayId" value="<c:out value='${resultVO.prePayId}'/>"/>
+	<div class="contWrap"  style="position:relative;left:inherit;top:inherit;min-height:auto;padding:40px;">
+		<div class="pageTitle">
+			<div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div>
+			<h2 class="titType1 c_222222 fwBold">선결제 정보 수정</h2>
+			<p class="tType6 c_999999">선결제정보 수정 할 수 있습니다.</p>
+		</div>
+		<div class="pageCont">
+			<table class="tbType2">
+				<colgroup>
+					<col style="width: 20%">
+					<col style="width: 80%">
+				</colgroup>
+				<tbody>
+					<tr class="no_modi">
+						<th><span class="reqArea">아이디</span></th>
+						<td colspan="3">
+							<input type="text" id="mberId" name="mberId" value="<c:out value="${resultVO.mberId}"/>" title="아이디" style="width:120px;" maxlength="20" />
+						</td>
+					</tr>
+					
+					<tr class="no_modi">
+						<th><span class="reqArea">전송사</span></th>
+						<td colspan="3">
+							<select id="agentCode" name="agentCode" >
+								<option value="08" <c:if test="${resultVO.agentCode == '08'}">selected</c:if> >JJ B01</option>
+								<option value="09" <c:if test="${resultVO.agentCode == '09'}">selected</c:if> >JJ B02</option>
+							</select>
+						</td>
+					</tr>
+					
+					<tr class="no_modi">
+						<th><span class="reqArea">결제일시</span></th>
+						<td colspan="3">
+							<input type="hidden" name="cal_url" id="cal_url" value="/sym/cmm/EgovNormalCalPopup.do">
+							<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.writeForm, document.forms.writeForm.prePayDate);">
+								<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="prePayDate" id="prePayDate" size="4" maxlength="4" readonly="" value="<c:out value='${resultVO.prePayDate}'/>">
+								<input type="button" class="calBtn">
+							</a>
+							<input type="text" id="prePayTime" name="prePayTime" value="<c:out value='${resultVO.prePayTime}'/>" style="width:auto;min-width:73px; margin:0 0 0 10px;" size="2" maxLength="5"/>
+						</td>
+					</tr>
+					
+					<tr class="no_modi">
+						<th><span class="reqArea">결제금액</span></th>
+						<td colspan="3">
+							<fmt:formatNumber value="${resultVO.amt}" pattern="#,###" var="cash"/>
+							<input type="text" step="0.01" id="amtInputId" name="amt" value="${cash}" title="결제금액" style="width:auto;min-width:120px;" size="2" maxlength="30" onblur="foucusOut(this)"/> 원
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			<div class="btnWrap">
+				<!-- <input type="button" class="btnType2" value="삭제" onclick="fn_delete(); return false;"> -->
+				<input type="button" class="btnType1 bg_888888" value="목 록" onclick="goList();return false;">
+				<!-- <input type="button" class="btnType1" value="수 정" onclick="fn_modify(); return false;"> -->
+				
+			</div>
+	 	</div>
+	</div>
+</form>
+<form id="delForm" name="delForm" method="post">
+	<input type="hidden" id="chkEach" name="chkEach" value="<c:out value='${resultVO.prePayId}'/>"/>
+</form>
+
+</body>
+</html>
 
src/main/webapp/WEB-INF/jsp/uss/ion/pay/prePay/popup/PrePayPopupRegist.jsp (added)
+++ src/main/webapp/WEB-INF/jsp/uss/ion/pay/prePay/popup/PrePayPopupRegist.jsp
@@ -0,0 +1,272 @@
+<%
+ /**
+  * @Class Name : PrePayRegist.jsp
+  * @Description : B선 회원 선결제 등록 화면
+  * @Modification Information
+  * @
+  * @  수정일             수정자                   수정내용
+  * @ -------    --------    ---------------------------
+  * @ 2009.02.01   박정규              최초 생성
+  *   2016.06.13   김연호              표준프레임워크 v3.6 개선
+  *
+  *  @author 공통서비스팀 
+  *  @since 2009.02.01
+  *  @version 1.0
+  *  @see
+  *  
+  */
+%>
+<%@ page contentType="text/html; charset=utf-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
+<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
+<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
+<!DOCTYPE html>
+<html lang="ko">
+<head>
+<title>전송사 선결제 관리</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<link rel="stylesheet" href="/pb/css/reset.css">
+<link rel="stylesheet" href="/pb/css/common.css">
+<link rel="stylesheet" href="/pb/css/content.css">
+<link rel="stylesheet" href="/pb/css/popup.css">
+<script type="text/javascript" src="/pb/js/jquery-3.5.0.js"></script>
+<script type="text/javascript" src="/pb/js/common.js"></script>
+<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
+<script type="text/javascript" src="<c:url value='/js/EgovCalPopup.js'/>"></script>
+<script type="text/javascript" src="<c:url value='/js/ncms_common.js' />"></script>
+<script type="text/javaScript" language="javascript">
+$( document ).ready(function(){
+	
+	$('#amtInputId').off('input').on('input',function(e){
+		/* var value = $(this).val();
+		var regExp = /^-?\d*.?\d{0,2}$/;
+		if(!regExp.test(value)){
+			$(this).val(value.substring(0,value.length-1));
+		} */
+		
+		var value = $(this).val();
+		var regExp =/^([-]?(\d*))(\.?\d{0,2})$/;
+		if(!regExp.test(value)){
+			value = value.substr(0, value.length - 1);
+			if(value.lastIndexOf("-")>0){ //중간에 -가 있다면 replace
+				if(value.indexOf("-")==0){ //음수라면 replace 후 - 붙여준다.
+					value = "-"+value.replace(/[-]/gi,'');
+				}else{
+					value = value.replace(/[-]/gi,'');
+				}
+			}
+// 			alert("거짓  "+value)
+		}else{
+// 			alert("참  "+value)
+		}
+		$(this).val(value);
+	});
+
+});
+
+
+function goList(){
+	var writeForm = document.writeForm;
+	var actionUrl = "/uss/ion/pay/PrePayList.do";
+	
+	writeForm.action = actionUrl;
+	writeForm.submit();
+}
+
+function fnPrePaySave(){
+	
+	var form = document.writeForm;
+	
+	if(form.mberId.value == ''){
+		
+		alert("아이디를 입력해 주세요.");
+		return false;
+		
+	}
+	
+	if(form.prePayDate.value == ''){
+		
+		alert("결제일자를 선택해 주세요.");
+		return false;
+		
+	}
+	
+	if(form.prePayTime.value == ''){
+		
+		alert("결제 시간을 입력해 주세요.");
+		return false;
+		
+	}
+	
+	if(form.amt.value == ''){
+		
+		alert("결제금액을 입력해 주세요.");
+		return false;
+		
+	}
+	
+	
+	var data = new FormData(document.writeForm);
+	var url = "/uss/ion/pay/insertPrePayRegistAjax.do";
+	
+	$.ajax({
+        type: "POST",
+        url: url,
+        data: data,
+        dataType:'json',
+        async: true,
+        processData: false,
+        contentType: false,
+        cache: false,
+        //timeout: 600000,
+        success: function (returnData, status) {
+			if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
+				
+				var result = returnData.result;
+				var message = returnData.message;
+				
+				if(result == "success"){
+					
+					alert(message);
+					opener.location.reload();
+					window.close();
+					
+				}else{
+					alert(returnData.message);
+					return false;
+					
+				}
+			} else if(status== 'fail'){
+				alert("선결제 정보 등록 중 오류가 발생하였습니다.");
+				console.log("status : fail ~");
+			}
+		},
+		error: function (e) { 
+        	alert("선결제 정보 등록 중 오류가 발생하였습니다."); 
+        	console.log("ERROR : ", e); 
+        },
+		beforeSend : function(xmlHttpRequest) {
+        	//로딩창 show
+        	$('.loading_layer').addClass('active');				
+		},	        	        
+        complete : function(xhr, textStatus) {
+        	//로딩창 hide
+        	$('.loading_layer').removeClass('active');
+		}
+    });
+	
+}
+
+</script>
+
+<style>
+	.calBtn{
+		border: none;
+		background-color: transparent !important;
+		background-image: url(/pb/img/common/calendarIcon.png);
+		background-repeat: no-repeat;
+		width: 25px;
+		height: 25px !important;
+		vertical-align: middle;
+		margin-left: -38px !important;
+		margin-top: -2px !important;
+		cursor: pointer;
+	}
+	.pageCont {width:100%;padding:50px 30px;box-sizing:border-box;}
+	.tableWrapTotal {margin:0 0 20px;}
+	.tableWrapTotal .tbType1 thead tr:first-child {border-width:1px;}
+	.tableWrapTotal .tbType1 thead tr th {border-left:1px solid #e6e6e6;}
+	.tableWrapTotal .tbType1 thead tr th:first-child {border-left:0 none;}
+	.tableWrapTotal .tbType1 thead tr.content th {font-size:14px;}
+	.tableWrapTotal .tbType1 tbody tr td {border-left:1px solid #e6e6e6;}
+	.tableWrapTotal .tbType1 tbody tr td:first-child {border-left:0 none;}
+	.listSerch .select {height:42px;vertical-align:top;}
+	.pageCont .tbType1 tbody tr td.msg_detail {overflow:inherit;}
+	.pageCont .tbType1 tbody tr td.msg_detail a {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;}
+	.layer_msg_wrap {position:relative;}
+	.layer_msg_wrap .layer_msg_detail {overflow:hidden;display:none;position:fixed;left:50%;top:50%;width:400px;max-height:600px;background:#eee;transform:translate(-50%, -50%);z-index:1;}
+	.layer_msg_wrap .layer_msg_detail button {position:absolute;right:0;top:0;width:35px;height:35px;}
+	.layer_msg_wrap .layer_msg_detail button:before {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(-45deg);}
+	.layer_msg_wrap .layer_msg_detail button:after {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(45deg);}
+	.layer_msg_wrap .layer_msg_detail .title {height:35px;padding:0 15px;font-size:16px;line-height:35px;text-align:left;color:#fff;background:#456ded;border-radius:5px 5px 0 0;}
+	.layer_msg_wrap .layer_msg_detail .content {overflow-y:auto;max-height:535px;margin:15px;padding:10px 15px;line-height:20px;white-space:normal;background:#fff;}
+	.layer_msg_wrap .layer_msg_detail .content .rev_cont {text-align:left;}
+	@media screen and (max-width:916px){
+		.pageCont .tableWrap table thead tr th {padding:15px 0;}
+	}
+</style>
+
+</head>
+<body>
+<form name="writeForm" id="writeForm"  method="post">
+
+	<div class="loading_layer">
+		<div class="loading_container">
+			<div class="bar"></div>
+			<div class="text">Loading</div>
+		</div>
+	</div>
+
+	<div class="contWrap" style="width:calc(100% - 800px);position:relative;left:inherit;top:inherit;min-height:auto;padding:40px;">
+		<div class="pageTitle">
+			<div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div>
+			<h2 class="titType1 c_222222 fwBold">전송사 선결제 현황</h2>
+			<p class="tType6 c_999999">B선 회원의 선결제 현황을 파악할 수 있습니다.</p>
+		</div>
+		<div class="pageCont">
+			<table class="tbType2">
+				<colgroup>
+					<col style="width: 20%">
+					<col style="width: 80%">
+				</colgroup>
+				<tbody>
+					<tr class="no_modi">
+						<th><span class="reqArea">아이디</span></th>
+						<td colspan="3">
+							<input type="text" id="mberId" name="mberId" value="<c:out value='${mberId}'/>" title="아이디" style="width:120px;" maxlength="20" />
+						</td>
+					</tr>
+					
+					<tr class="no_modi">
+						<th><span class="reqArea">전송사</span></th>
+						<td colspan="3">
+							<select id="agentCode" name="agentCode" style="width:43%;">
+								<option value="08">JJ B선 01라인</option>
+								<option value="09">JJ B선 02라인</option>
+							</select>
+						</td>
+					</tr>
+					
+					<tr class="no_modi">
+						<th><span class="reqArea">결제일시</span></th>
+						<td colspan="3">
+							<input type="hidden" name="cal_url" id="cal_url" value="/sym/cmm/EgovNormalCalPopup.do">
+							<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.writeForm, document.forms.writeForm.prePayDate);">
+								<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="prePayDate" id="prePayDate" size="4" maxlength="4" readonly="" value="">
+								<input type="button" class="calBtn">
+							</a>
+							<input type="text" id="prePayTime" name="prePayTime" style="width:auto;min-width:73px; margin:0 0 0 10px;" size="2" maxLength="5"/>
+						</td>
+					</tr>
+					
+					<tr class="no_modi">
+						<th><span class="reqArea">결제금액</span></th>
+						<td colspan="3">
+							<fmt:formatNumber value="" pattern="#,###" var="cash"/>
+							<input type="text" step="0.01" id="amtInputId" name="amt" value="${cash}" title="결제금액" style="width:auto;min-width:120px;" size="2" maxlength="30" onblur="foucusOut(this)"/> 원
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			<div class="btnWrap">
+				<input type="button" class="btnType1 bg_888888" value="저 장" onclick="fnPrePaySave();return false;">
+			</div>
+	 	</div>
+	</div>
+</form>
+</body>
+</html>
Add a comment
List