name 2023-08-23
Merge branch 'master' of http://dudgusw@vcs.iten.co.kr:9999/hylee/mjon_git
@d552b98eb3b5d5327ad38a1563b0497b2bccbb13
src/main/java/itn/let/fax/addr/web/FaxAddrController.java
--- src/main/java/itn/let/fax/addr/web/FaxAddrController.java
+++ src/main/java/itn/let/fax/addr/web/FaxAddrController.java
@@ -317,7 +317,43 @@
 		return "/web/fax/addr/FaxAddrListPrint";
 	}
 	
-	
+	/**
+	 * 주소록 상세정보 ajax
+	 * @param addrCheck
+	 * @param request
+	 * @param addrVO
+	 * @param model
+	 * @param redirectAttributes
+	 * @return
+	 * @throws Exception
+	 */
+	@RequestMapping("/web/mjon/fax/addr/selectFaxAddrDetailAjax.do")
+	public ModelAndView selectAddrDetailAjax(HttpServletRequest request, 
+			FaxAddrVO addrVO, Model model) throws Exception {
+		
+		ModelAndView modelAndView = new ModelAndView();
+		modelAndView.setViewName("jsonView");
+
+		boolean isSuccess = true;
+		String msg = "";		
+		FaxAddrVO addrInfo = null;
+		
+		try {
+			
+			addrInfo = faxAddrService.selectFaxAddrDetail(addrVO);
+
+		} catch (Exception e) {
+			isSuccess = false;
+			msg = e.getMessage();
+		}
+		
+		modelAndView.addObject("isSuccess", isSuccess);
+		modelAndView.addObject("msg", msg);
+		modelAndView.addObject("addrInfo", addrInfo);
+		
+		return modelAndView;
+		
+	}	
 	
 	/**
 	 * 주소록 그룹 삭제 로직 ajax
src/main/java/itn/let/sym/grd/service/MberGrdService.java
--- src/main/java/itn/let/sym/grd/service/MberGrdService.java
+++ src/main/java/itn/let/sym/grd/service/MberGrdService.java
@@ -28,6 +28,9 @@
 	// 회원별 설정 상세
 	public MberGrdVO selectMberGrdSettingDetail(MberGrdVO mberGrdVO) throws Exception;
 	
+	// 회원별 설정 상세(White)
+	public MberGrdVO selectMberGrdSettingDetailWhite(MberGrdVO mberGrdVO) throws Exception;
+	
 	// 등급제 설정 일괄변경
 	public int updateGrdSettingList(MberGrdVO mberGrdVO) throws Exception;
 
@@ -55,6 +58,9 @@
 	// 회원별 등급 등록 All => 기존대상자 제외
 	public void insertMberGrdAllByExist(MberGrdVO mberGrdVO)  throws Exception;
 	
+	// 회원별 등급 등록 By MberId
+	public void insertMberGrdByMberId(MberGrdVO mberGrdVO)  throws Exception;
+	
 	// 회원별 등급 히스토리 등록 All
 	public void insertMberGrdHistAll(MberGrdVO mberGrdVO)  throws Exception;
 	
src/main/java/itn/let/sym/grd/service/impl/MberGrdDAO.java
--- src/main/java/itn/let/sym/grd/service/impl/MberGrdDAO.java
+++ src/main/java/itn/let/sym/grd/service/impl/MberGrdDAO.java
@@ -37,6 +37,11 @@
 		return (MberGrdVO) select("mberGrdDAO.selectMberGrdSettingDetail", mberGrdVO);
 	}
 	
+	// 회원별 설정 상세(White)
+	public MberGrdVO selectMberGrdSettingDetailWhite(MberGrdVO mberGrdVO) throws Exception{
+		return (MberGrdVO) select("mberGrdDAO.selectMberGrdSettingDetailWhite", mberGrdVO);
+	}
+	
 	// 등급제 설정 일괄변경
 	public int updateGrdSetting(MberGrdVO mberGrdVO) throws Exception {
 		return update("mberGrdDAO.updateGrdSetting", mberGrdVO);
@@ -88,6 +93,11 @@
 		insert("mberGrdDAO.insertMberGrdAllByExist", mberGrdVO);
 	}
 	
+	// 회원별 등급 등록 By MberId
+	public void insertMberGrdByMberId(MberGrdVO mberGrdVO) throws Exception{
+		insert("mberGrdDAO.insertMberGrdByMberId", mberGrdVO);
+	}
+	
 	// 회원별 등급 히스토리 등록 All
 	public void insertMberGrdHistAll(MberGrdVO mberGrdVO) throws Exception{
 		insert("mberGrdDAO.insertMberGrdHistAll", mberGrdVO);
src/main/java/itn/let/sym/grd/service/impl/MberGrdServiceImpl.java
--- src/main/java/itn/let/sym/grd/service/impl/MberGrdServiceImpl.java
+++ src/main/java/itn/let/sym/grd/service/impl/MberGrdServiceImpl.java
@@ -75,6 +75,12 @@
 		return mberGrdDAO.selectMberGrdSettingDetail(mberGrdVO);
 	}	
 	
+	// 회원별 설정 상세(White)
+	@Override
+	public MberGrdVO selectMberGrdSettingDetailWhite(MberGrdVO mberGrdVO) throws Exception {
+		return mberGrdDAO.selectMberGrdSettingDetailWhite(mberGrdVO);
+	}	
+	
 	// 등급제 설정 일괄변경
 	@Override
 	public int updateGrdSettingList(MberGrdVO mberGrdVO) throws Exception {
@@ -154,6 +160,12 @@
 	@Override
 	public void insertMberGrdAllByExist(MberGrdVO mberGrdVO) throws Exception {
 		mberGrdDAO.insertMberGrdAllByExist(mberGrdVO);
+	}
+	
+	// 회원별 등급 등록 By MberId
+	@Override
+	public void insertMberGrdByMberId(MberGrdVO mberGrdVO) throws Exception {
+		mberGrdDAO.insertMberGrdByMberId(mberGrdVO);
 	}
 	
 	// 회원별 등급 히스토리 등록 All
@@ -368,6 +380,7 @@
 	    				    	MberGrdVO mberGrdVO5 = new MberGrdVO();
 	    						mberGrdVO5 = selectMberGrdDetail(mberGrdVO);
 	    						if (mberGrdVO5 != null) {
+	    							// 업데이트
 	    							updateMberGrdOk(mberGrdVO);
 	    								
 	    							// 회원별 등급 히스토리 인서트
@@ -381,8 +394,53 @@
 	    							insertMberGrdHist(mberGrdVO);
 	    						}
 	    					}
-	    				}					
-	    			}			
+	    				}
+	    				else {
+	    					System.out.println("Step 3. ELSE => 화이트등급 인서트");
+	    					
+	    					// Step 4. 등급제 설정값 조회
+	    					System.out.println("Step 4. 등급제 설정값 조회");
+	    					MberGrdVO mberGrdVO4 = new MberGrdVO();
+	    					mberGrdVO4 = selectMberGrdSettingDetailWhite(mberGrdVO);
+	    					if (mberGrdVO4 != null) {
+	    						mberGrdVO.setAmt("0");
+	    				    	mberGrdVO.setTotAmt(0);
+	    				    	mberGrdVO.setGrdSetNo(mberGrdVO4.getGrdSetNo());
+	    				    	mberGrdVO.setShortPrice(mberGrdVO4.getShortPrice());
+	    				    	mberGrdVO.setLongPrice(mberGrdVO4.getLongPrice());
+	    				    	mberGrdVO.setPicturePrice(mberGrdVO4.getPicturePrice());
+	    				    	mberGrdVO.setPicture2Price(mberGrdVO4.getPicture2Price());
+	    				    	mberGrdVO.setPicture3Price(mberGrdVO4.getPicture3Price());
+	    				    	mberGrdVO.setGrdDate(mberGrdVO.getGrdDate());
+	    				    	mberGrdVO.setGrdStartDate(nowDate + " 00:00:00");
+	    				    	mberGrdVO.setGrdEndDate("9999:12:31 23:59:59");
+	    				    	mberGrdVO.setGrdStatus("Y");
+	    				    	
+	    						// Step 5. 인서트 Or 업데이트
+	    						System.out.println("Step 5. 인서트 Or 업데이트");
+	    				    	MberGrdVO mberGrdVO5 = new MberGrdVO();
+	    						mberGrdVO5 = selectMberGrdDetail(mberGrdVO);
+	    						if (mberGrdVO5 != null) {
+	    							// 업데이트
+	    							updateMberGrdOk(mberGrdVO);
+	    								
+	    							// 회원별 등급 히스토리 인서트
+	    							insertMberGrdHist(mberGrdVO);							
+	    						}
+	    						else {
+	    							// 인서트
+	    							insertMberGrd(mberGrdVO);
+	    							
+	    							// 회원별 등급 히스토리 인서트
+	    							insertMberGrdHist(mberGrdVO);
+	    						}
+	    					}	    					
+	    				}
+	    			}	
+	    			else {
+		    			System.out.println("Step 2. ELSE 등급제 종료");
+		    			updateMberGrdEndByUser(mberGrdVO);
+	    			}	    			
 	    		}
     		}
     		System.out.println("END 회원별 등급 적용");
@@ -456,6 +514,7 @@
 	    				    	MberGrdVO mberGrdVO5 = new MberGrdVO();
 	    						mberGrdVO5 = selectMberGrdDetail(mberGrdVO);
 	    						if (mberGrdVO5 != null) {
+	    							// 업데이트
 	    							updateMberGrdOk(mberGrdVO);
 	    						}
 	    						else {
@@ -463,8 +522,53 @@
 	    							insertMberGrd(mberGrdVO);
 	    						}
 	    					}
-	    				}					
-	    			}			
+	    				}
+	    				else {
+	    					System.out.println("Step 3. ELSE => 화이트등급 인서트");
+	    					
+	    					// Step 4. 등급제 설정값 조회
+	    					System.out.println("Step 4. 등급제 설정값 조회");
+	    					MberGrdVO mberGrdVO4 = new MberGrdVO();
+	    					mberGrdVO4 = selectMberGrdSettingDetailWhite(mberGrdVO);
+	    					if (mberGrdVO4 != null) {
+	    						mberGrdVO.setAmt("0");
+	    				    	mberGrdVO.setTotAmt(0);
+	    				    	mberGrdVO.setGrdSetNo(mberGrdVO4.getGrdSetNo());
+	    				    	mberGrdVO.setShortPrice(mberGrdVO4.getShortPrice());
+	    				    	mberGrdVO.setLongPrice(mberGrdVO4.getLongPrice());
+	    				    	mberGrdVO.setPicturePrice(mberGrdVO4.getPicturePrice());
+	    				    	mberGrdVO.setPicture2Price(mberGrdVO4.getPicture2Price());
+	    				    	mberGrdVO.setPicture3Price(mberGrdVO4.getPicture3Price());
+	    				    	mberGrdVO.setGrdDate(mberGrdVO.getGrdDate());
+	    				    	mberGrdVO.setGrdStartDate(nowDate + " 00:00:00");
+	    				    	mberGrdVO.setGrdEndDate("9999:12:31 23:59:59");
+	    				    	mberGrdVO.setGrdStatus("Y");
+	    				    	
+	    						// Step 5. 인서트 Or 업데이트
+	    						System.out.println("Step 5. 인서트 Or 업데이트");
+	    				    	MberGrdVO mberGrdVO5 = new MberGrdVO();
+	    						mberGrdVO5 = selectMberGrdDetail(mberGrdVO);
+	    						if (mberGrdVO5 != null) {
+	    							// 업데이트
+	    							updateMberGrdOk(mberGrdVO);
+	    								
+	    							// 회원별 등급 히스토리 인서트
+	    							insertMberGrdHist(mberGrdVO);							
+	    						}
+	    						else {
+	    							// 인서트
+	    							insertMberGrd(mberGrdVO);
+	    							
+	    							// 회원별 등급 히스토리 인서트
+	    							insertMberGrdHist(mberGrdVO);
+	    						}
+	    					}	    					
+	    				}
+	    			}
+	    			else {
+		    			System.out.println("Step 2. ELSE 등급제 종료");
+		    			updateMberGrdEndByUser(mberGrdVO);
+	    			}
 	    		}
     		}
     		System.out.println("END 회원별 등급 적용(로그인, 환불시 사용 => 히스토리 저장 제외)");
src/main/java/itn/let/sym/grd/web/MberGrdMngController.java
--- src/main/java/itn/let/sym/grd/web/MberGrdMngController.java
+++ src/main/java/itn/let/sym/grd/web/MberGrdMngController.java
@@ -466,16 +466,37 @@
     	// 로그인VO에서  사용자 정보 가져오기
     	LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
     	String frstRegisterId = loginVO == null ? "" : loginVO.getId();
-    	mberGrdVO.setEditId(frstRegisterId);		// 최초등록자ID
-
+		mberGrdVO.setRegId(frstRegisterId);
+		mberGrdVO.setEditId(frstRegisterId);
+		
         try{
-        	
-        	// 회원 등급제 복원
-        	mberGrdService.updateMberGrdRestoreByUser(mberGrdVO);
-        	
-        	// 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트
-        	mberGrdService.updateMberGrdAfterRefund(mberGrdVO);
-       		
+    		
+        	// Step 1. 등급제 시행 ON 일경우(시행일자 진행여부 Y일경우)
+    		System.out.println("Step 1. 등급제 시행 ON 일경우(시행일자 진행여부 Y일경우)");
+    		MberGrdVO mberGrdVO1 = new MberGrdVO();
+    		mberGrdVO1 = mberGrdService.selectMberSettingDetail(mberGrdVO);
+    		if (mberGrdVO1.getGrdNoti().equals("Y")) {
+    			mberGrdVO.setGrdNewDate(mberGrdVO1.getGrdNewDate());
+    			
+    			// Step 2. 문자할인, B선라인, 스팸회원 대상자 제외
+    			System.out.println("Step 2. 문자할인, B선라인, 스팸회원 대상자 제외");
+    			int isMberGrd = mberGrdService.selectMberGrdCnt(mberGrdVO.getMberId());	// 등급제 대상여부(1: 대상, 0: 미대상)
+    			if(isMberGrd == 1) {        	
+		        	// 회원 등급제 복원
+		        	mberGrdService.updateMberGrdRestoreByUser(mberGrdVO);
+		        	
+		        	// 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트
+		        	mberGrdService.updateMberGrdAfterRefund(mberGrdVO);
+    			}
+    			else {
+    				isSuccess = false;
+    				msg = "문자할인, B선라인, 스팸회원 대상자는 등급제 대상자가 아닙니다.";    				
+    			}
+    		}
+			else {
+				isSuccess = false;
+				msg = "등급제 시행 OFF 일경우 복원이 불가합니다.";    				
+			}    		
 		}
 		catch(Exception e) {
 			isSuccess = false;
src/main/java/itn/let/uat/uia/web/EgovMypageController.java
--- src/main/java/itn/let/uat/uia/web/EgovMypageController.java
+++ src/main/java/itn/let/uat/uia/web/EgovMypageController.java
@@ -848,9 +848,31 @@
 				
 				mberManageService.insertCmpUsrHst(mberManageVO);
 				
-				//Slack 알림 전송 처리
-				String msg = "[문자온] 기업회원 담당자변경 요청 - " + mberManageVO.getMberNm() +"("+ mberManageVO.getMberId() + ")";
-				mjonCommon.sendSimpleSlackMsg(msg);
+				// 법인폰 알람여부 체크
+				JoinSettingVO joinSettingVO = new JoinSettingVO();
+				joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
+				// 이메일 체크
+				if (joinSettingVO != null && joinSettingVO.getEmailNoti().equals("Y")) {
+					String emailTitle = "회원관리 > 기업회원 담당자변경 요청";
+					
+					// CS관리자 이메일 알림전송
+					mjonNoticeSendUtil.csAdminEmailNoticeSend(mberManageVO.getMberNm(), mberManageVO.getMberId(), emailTitle);
+				}
+
+				// SMS 체크			
+				if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
+					String smsTitle = "기업회원 담당자변경 요청";
+					
+					// CS관리자 SMS 알림전송
+					mjonNoticeSendUtil.csAdminSmsNoticeSend(mberManageVO.getMberId(), smsTitle);				
+				}
+
+				// SLACK 체크
+				if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {			
+					// Slack 메시지 발송(단순본문)
+					String msg = "[문자온] 기업회원 담당자변경 요청 - " + mberManageVO.getMberNm() +"("+ mberManageVO.getMberId() + ")";
+					mjonCommon.sendSimpleSlackMsg(msg);
+				}
 				
 			}
 			
@@ -932,9 +954,31 @@
 			
 			mberManageService.insertCmpUsrHst(mberManageVO);
 			
-			//Slack 알림 처리
-			String msg = "[문자온] 기업회원 정보변경 요청 - " + mberManageVO.getMberNm() +"("+ mberManageVO.getMberId() + ")";
-			mjonCommon.sendSimpleSlackMsg(msg);
+			// 법인폰 알람여부 체크
+			JoinSettingVO joinSettingVO = new JoinSettingVO();
+			joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
+			// 이메일 체크
+			if (joinSettingVO != null && joinSettingVO.getEmailNoti().equals("Y")) {
+				String emailTitle = "회원관리 > 기업회원 정보변경 요청";
+				
+				// CS관리자 이메일 알림전송
+				mjonNoticeSendUtil.csAdminEmailNoticeSend(mberManageVO.getMberNm(), mberManageVO.getMberId(), emailTitle);
+			}
+
+			// SMS 체크			
+			if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
+				String smsTitle = "기업회원 정보변경 요청";
+				
+				// CS관리자 SMS 알림전송
+				mjonNoticeSendUtil.csAdminSmsNoticeSend(mberManageVO.getMberId(), smsTitle);				
+			}
+
+			// SLACK 체크
+			if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {			
+				// Slack 메시지 발송(단순본문)
+				String msg = "[문자온] 기업회원 정보변경 요청 - " + mberManageVO.getMberNm() +"("+ mberManageVO.getMberId() + ")";
+				mjonCommon.sendSimpleSlackMsg(msg);
+			}
 			
 			modelAndView.addObject("result", "success");
 			
src/main/resources/egovframework/sqlmap/let/sym/grd/MberGrd_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/sym/grd/MberGrd_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/sym/grd/MberGrd_SQL_Mysql.xml
@@ -102,6 +102,28 @@
 		LIMIT 1
 	</select>
 
+	<!-- 등급제 설정 상세 -->
+	<select id="mberGrdDAO.selectMberGrdSettingDetailWhite" parameterClass="mberGrdVO" resultClass="mberGrdVO">
+		SELECT 
+			A.GRD_SET_NO AS grdSetNo
+			, A.GRD_SET_NM AS grdSetNm
+			, FLOOR(A.STD_AMT) AS stdAmt
+			, FORMAT(FLOOR(A.STD_AMT),0) AS stdAmtComma 
+			, A.SHORT_PRICE AS shortPrice 
+			, A.LONG_PRICE AS longPrice 
+			, A.PICTURE_PRICE AS picturePrice 
+			, A.PICTURE2_PRICE AS picture2Price 
+			, A.PICTURE3_PRICE AS picture3Price 
+			, A.REG_ID AS regId 
+			, A.REG_DATE AS regDate 
+			, A.EDIT_ID AS editId 
+			, A.EDIT_DATE AS editDate 
+		FROM MJ_MBER_GRD_SETTING A
+		ORDER BY A.GRD_SET_NO DESC
+		LIMIT 1
+	</select>
+
+
 	<!-- 등급제 설정 일괄변경 일괄변경 -->
 	<update id="mberGrdDAO.updateGrdSetting" parameterClass="mberGrdVO">
 		UPDATE MJ_MBER_GRD_SETTING A 
@@ -545,9 +567,9 @@
 			, NOW()
 			, '9999:12:31 23:59:59'
 			, 'Y'
-			, ''
+			, #regId#
 			, NOW()
-			, ''
+			, #editId#
 			, NOW()	
 		FROM (
 			SELECT
@@ -584,6 +606,81 @@
 			AND M.spamYn = 'N'	
 	</insert>			
 	
+	<!-- 회원별 등급 등록 By MberId -->
+	<insert id="mberGrdDAO.insertMberGrdByMberId" parameterClass="mberGrdVO">	
+		INSERT INTO MJ_MBER_GRD_INFO 
+		(
+			MBER_ID
+			, GRD_SET_NO
+			, SHORT_PRICE
+			, LONG_PRICE
+			, PICTURE_PRICE
+			, PICTURE2_PRICE
+			, PICTURE3_PRICE
+			, AMT
+			, TOT_AMT
+			, GRD_DATE
+			, GRD_START_DATE
+			, GRD_END_DATE
+			, GRD_STATUS
+			, REG_ID
+			, REG_DATE
+			, EDIT_ID
+			, EDIT_DATE
+		)
+		SELECT
+			M.MBER_ID
+			, M.GRD_SET_NO
+			, M.SHORT_PRICE
+			, M.LONG_PRICE
+			, M.PICTURE_PRICE
+			, M.PICTURE2_PRICE
+			, M.PICTURE3_PRICE
+			, 0
+			, 0
+			, #grdNewDate#
+			, NOW()
+			, '9999:12:31 23:59:59'
+			, 'Y'
+			, #regId#
+			, NOW()
+			, #editId#
+			, NOW()	
+		FROM (
+			SELECT
+				A.MBER_ID
+				, S.GRD_SET_NO
+				, S.SHORT_PRICE
+				, S.LONG_PRICE
+				, S.PICTURE_PRICE
+				, S.PICTURE2_PRICE
+				, S.PICTURE3_PRICE
+				, IFNULL(A.BLINE_CODE, 'N') 	AS blineCode
+				, IFNULL(A.SPAM_YN, 'N') 		AS spamYn
+				, CASE
+					WHEN 
+						(A.SHORT_PRICE > 0 
+							AND (B.SHORT_PRICE > A.SHORT_PRICE 
+								OR B.LONG_PRICE > A.LONG_PRICE 
+								OR B.PICTURE_PRICE > A.PICTURE_PRICE 
+								OR B.PICTURE2_PRICE > A.PICTURE2_PRICE 
+								OR B.PICTURE3_PRICE > A.PICTURE3_PRICE)
+						)
+					THEN 'Y'
+					ELSE 'N'
+				END isSalePrice			
+			FROM LETTNGNRLMBER A
+			INNER JOIN MJ_MBER_GRD_SETTING S
+				ON S.GRD_SET_NO = (SELECT MAX(GRD_SET_NO) FROM MJ_MBER_GRD_SETTING)
+			JOIN MJ_MBER_SETTING B			
+			WHERE A.MBER_STTUS = 'Y'
+				AND MBER_ID = #mberId#
+		) M
+		WHERE M.isSalePrice = 'N'
+			AND M.blineCode = 'N'
+			AND M.spamYn = 'N'	
+	</insert>
+		
 	<!-- 회원별 등급 히스토리 등록 All -->
 	<insert id="mberGrdDAO.insertMberGrdHistAll" parameterClass="mberGrdVO">	
 		INSERT INTO MJ_MBER_GRD_HIST
@@ -680,10 +777,13 @@
 			, A.AMT = B.AMT_SUM
 			, A.TOT_AMT = B.AMT_SUM
 			, A.GRD_DATE = CONCAT(DATE_FORMAT(#grdNewDate#, '%Y-%m-%d'), ' ', '00:00:00')
+			, A.EDIT_ID	= #editId#
 			, A.EDIT_DATE = NOW()
 			, A.TEMP_YN = 'Y'
-		WHERE B.GRD_SET_NO IS NOT NULL
+		WHERE 1=1
+			AND B.GRD_SET_NO IS NOT NULL
 			AND A.GRD_STATUS = 'Y'
+			AND A.TEMP_YN = 'N'
 			AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE
 	]]>
 	</update>	
@@ -751,7 +851,8 @@
 			, A.GRD_DATE = CONCAT(DATE_FORMAT(#grdNewDate#, '%Y-%m-%d'), ' ', '00:00:00')
 			, A.EDIT_ID	= #editId#
 			, A.EDIT_DATE = NOW()
-		WHERE B.GRD_SET_NO IS NOT NULL
+		WHERE  1=1
+			AND B.GRD_SET_NO IS NOT NULL
 			AND A.MBER_ID = #mberId#
 			AND A.GRD_STATUS = 'Y'
 			AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE
@@ -773,6 +874,7 @@
 			, A.AMT = 0
 			, A.TOT_AMT = 0
 			, A.GRD_DATE = CONCAT(DATE_FORMAT(#grdNewDate#, '%Y-%m-%d'), ' ', '00:00:00')
+			, A.EDIT_ID	= #editId#
 			, A.EDIT_DATE = NOW()
 			, A.TEMP_YN = 'Y'
 			, A.GRD_END_DATE = '9999:12:31 23:59:59'
@@ -797,6 +899,7 @@
 			, A.AMT = 0
 			, A.TOT_AMT = 0
 			, A.GRD_DATE = CONCAT(DATE_FORMAT(#grdNewDate#, '%Y-%m-%d'), ' ', '00:00:00')
+			, A.EDIT_ID	= #editId#
 			, A.EDIT_DATE = NOW()
 		WHERE C.GRD_SET_NO = (SELECT MAX(GRD_SET_NO) FROM MJ_MBER_GRD_SETTING)
 	]]>
@@ -808,7 +911,9 @@
 		UPDATE MJ_MBER_GRD_INFO SET
 			GRD_END_DATE			= NOW()
 			, GRD_STATUS			= 'E'
+			, EDIT_ID	= #editId#
 			, EDIT_DATE				= NOW()
+			, TEMP_YN = 'Y'
 		WHERE MBER_ID IN (
 			SELECT
 				M.MBER_ID
@@ -835,7 +940,6 @@
 				JOIN MJ_MBER_SETTING B
 				WHERE 1=1
 					AND A.MBER_STTUS = 'Y'
-					AND G.GRD_STATUS != 'E'
 			) M
 			WHERE M.IS_SALE_PRICE = 'Y'
 				OR M.BLINE_CODE != 'N'
@@ -868,6 +972,7 @@
 			, GRD_STATUS			= 'E'
 			, EDIT_ID				= #editId#
 			, EDIT_DATE				= NOW()
+			, TEMP_YN = 'Y'			
 		WHERE 
 			GRD_STATUS != 'E'
 			AND MBER_ID = #mberId#
src/main/webapp/WEB-INF/jsp/sym/grd/mberGrdList.jsp
--- src/main/webapp/WEB-INF/jsp/sym/grd/mberGrdList.jsp
+++ src/main/webapp/WEB-INF/jsp/sym/grd/mberGrdList.jsp
@@ -237,16 +237,16 @@
 					<colgroup>
 						<col style="width: 5%">
 						<col style="width: auto;">
-						<col style="width: 8%;">
+						<col style="width: 10%;">
 						<col style="width: 7%;">
-						<col style="width: 9%">
+						<col style="width: 10%">
 						<col style="width: 9%">
 						<col style="width: 8%">
 						<col style="width: 8%">
 						<col style="width: 12%">
 						<col style="width: 12%">
 						<col style="width: 5%">
-						<col style="width: 9%">
+						<col style="width: 5%">
 					</colgroup>
 					<thead>
 						<tr>
@@ -307,14 +307,16 @@
 					   		<td nowrap="nowrap">
 					    		<c:out value="${result.grdStatusNm}"/>
 					    	</td>					    					    	
-					   		<td nowrap="nowrap" class="left">
+					   		<td nowrap="nowrap">
 								<c:choose>
 									<c:when test="${result.grdStatusNm eq '종료'}">
-										<input type="button" class="btnType2" onclick="setMberGrdRestoreByUser('${result.mberId}','${result.grdDate}')" value="복원">
+										<input type="button" class="btnType1" onclick="setMberGrdRestoreByUser('${result.mberId}','${result.grdDate}')" value="복원">
 									</c:when>
 									<c:otherwise>
 										<input type="button" class="btnType2" onclick="setMberGrdUpdateByUser('${result.mberId}')" value="갱신">
+										<%-- 
 										<input type="button" class="btnType1" onclick="setMberGrdEndByUser('${result.mberId}')" value="종료">
+										--%>
 									</c:otherwise>
 								</c:choose>
 					    	</td>					    					    						    	
src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrListAjax.jsp
@@ -214,12 +214,32 @@
 }
 
 //메모 레이어 열 때 메모 데이터 전달
-function memoOpen(comment, id) {
+function memoOpen(id) {
 	var form = document.addrMemoForm;
 	form.addrCheck.value=id;
-	$('#textareaMemo').text(comment);
-	
+
+	// 메모내용 가져오기
+	$.ajax({
+		url : "<c:url value='/web/mjon/fax/addr/selectFaxAddrDetailAjax.do'/>", 
+		type : 'POST', 
+		data : {"addrId" : id},
+		dataType:'json',
+		async: false,
+		success : function(data, status){
+			if(data.isSuccess == true) {
+				$('#textareaMemo').text(data.addrInfo.addrComment);
+			} 
+			else {
+				//alert("Message : " + msg);
+			}			
+		},
+		error: function (e) { 
+			console.log("ERROR : ", e); 
+			alert("에러가 발생했습니다.");  
+		}
+	});	
 }
+
 // 메모 저장
 function updateMemo() {
 	var form = document.addrMemoForm;
@@ -672,7 +692,7 @@
 									</p>
 								</td>
 								<td>
-									<button type="button" onclick="memoOpen('<c:out value='${result.addrComment}' />','<c:out value='${result.addrId}' />'); return false;" data-tooltip="adr_popup13">
+									<button type="button" onclick="memoOpen('<c:out value='${result.addrId}' />'); return false;" data-tooltip="adr_popup13">
 										<img src="/publish/images/content/memo_img.png" alt="메모">
 									</button>
 								</td>
Add a comment
List