Просмотр исходного кода

Merge remote-tracking branch '112.172.147.34/style' into ST24PRJ-198(다다익선등록오류)

jsh77b 4 лет назад
Родитель
Сommit
87a65cd5b2
20 измененных файлов с 2953 добавлено и 708 удалено
  1. 24 0
      src/main/java/com/style24/admin/biz/dao/TsaCustomerDao.java
  2. 166 0
      src/main/java/com/style24/admin/biz/service/TsaCustomerService.java
  3. 4 55
      src/main/java/com/style24/admin/biz/service/TsaWithdrawService.java
  4. 104 4
      src/main/java/com/style24/admin/biz/web/TsaCustomerController.java
  5. 0 2
      src/main/java/com/style24/admin/biz/web/TsaWithdrawController.java
  6. 14 1
      src/main/java/com/style24/persistence/domain/Withdraw.java
  7. 222 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaCustomer.xml
  8. 209 213
      src/main/java/com/style24/persistence/mybatis/shop/TsaDelivery.xml
  9. 188 148
      src/main/java/com/style24/persistence/mybatis/shop/TsaWithdraw.xml
  10. 10 1
      src/main/webapp/WEB-INF/views/customer/CustomerActiveListForm.html
  11. 9 1
      src/main/webapp/WEB-INF/views/customer/CustomerDormantListForm.html
  12. 9 1
      src/main/webapp/WEB-INF/views/customer/CustomerSecedeListForm.html
  13. 25 53
      src/main/webapp/WEB-INF/views/order/CnclReqForm.html
  14. 1574 0
      src/main/webapp/WEB-INF/views/order/CnclReqFormBack.html
  15. 136 35
      src/main/webapp/WEB-INF/views/order/ExchangeRequestForm.html
  16. 28 58
      src/main/webapp/WEB-INF/views/order/RtnReqForm.html
  17. 4 0
      src/main/webapp/WEB-INF/views/system/UserForm.html
  18. 175 95
      src/main/webapp/WEB-INF/views/withdraw/RefundDetailForm.html
  19. 1 1
      src/main/webapp/WEB-INF/views/withdraw/RefundRegisterListForm.html
  20. 51 40
      src/main/webapp/WEB-INF/views/withdraw/WithdrawExceptionListForm.html

+ 24 - 0
src/main/java/com/style24/admin/biz/dao/TsaCustomerDao.java

@@ -220,5 +220,29 @@ public interface TsaCustomerDao {
 	 * @since 2021. 11. 22
 	 */
 	void deleteCellPhnno(Customer customer);
+	
+	/**
+	 * 활동회원 목록 엑셀
+	 * @param customer - 고객 정보
+	 * @author jmh
+	 * @since 2021. 12. 08
+	 */
+	Collection<Customer> getCustomerActiveExcelList(CustomerSearch customerSearch);
+	
+	/**
+	 * 탈퇴회원 목록 엑셀
+	 * @param customer - 고객 정보
+	 * @author jmh
+	 * @since 2021. 12. 08
+	 */
+	Collection<Customer> getCustomerSecedeExcelList(CustomerSearch customerSearch);
+	
+	/**
+	 * 휴면회원 목록 엑셀
+	 * @param customer - 고객 정보
+	 * @author jmh
+	 * @since 2021. 12. 08
+	 */
+	Collection<Customer> getCustomerDormantExcelList(CustomerSearch customerSearch);
 
 }

+ 166 - 0
src/main/java/com/style24/admin/biz/service/TsaCustomerService.java

@@ -7,7 +7,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import com.gagaframework.excel.GagaExcelUtil;
+import com.gagaframework.excel.env.GagaExcelConstants;
+import com.gagaframework.web.util.GagaDateUtil;
 import com.style24.admin.biz.dao.TsaCustomerDao;
+import com.style24.admin.support.env.TsaConstants;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.biz.service.TscCustomerService;
 import com.style24.core.biz.service.TscKakaotalkService;
@@ -510,4 +514,166 @@ public class TsaCustomerService {
 		customerDao.deleteCellPhnno(customer);
 	}
 
+	/**
+	 * 활동회원 목록 엑셀
+	 *
+	 * @param customerSearch
+	 * @param excelFilenameWithPath - 경로를 포함한 엑셀파일명
+	 * @return
+	 * @author jmh
+	 * @since 2021. 12. 08
+	 */
+	public void getCustomerActiveExcelList(CustomerSearch customerSearch, String excelFilenameWithPath) {
+
+		// 헤더 title 설정
+		String[] listTitles = {"사이트", "회원ID", "회원NO", "회원명", "회원구분", "등급", "관리대상", "생년월일", "가입일자", "로그인일자", "핸드폰", "이메일", "성별", "수신동의(SMS)", "수신동의(Email)"};
+		
+
+		// DB 처리 시 사용되는 파라미터명(셀명) 설정
+		String[] cellNames = {"siteCd", "custId", "custNo", "custNm", "custGb", "custGrade", "managedRsn", "birthYmd", "joinDt"
+				, "loginLdt", "cellPhnno", "email", "sexGb", "smsAgreeYn", "emailAgreeYn"};
+
+		String[] cellTypes = {
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(), 
+			GagaExcelConstants.CellType.CHAR_CENTER.name()};
+		
+		Collection<Customer> custList = customerDao.getCustomerActiveExcelList(customerSearch);
+		for( Customer cust : custList ) { 
+			cust.setCustId(cust.getMaskingCustId());
+			cust.setCustNm(cust.getMaskingCustNm());
+			cust.setCellPhnno(cust.getMaskingCellPhnno());
+			cust.setEmail(cust.getMaskingEmail());
+			cust.setBirthYmd(GagaDateUtil.getDate(GagaDateUtil.getDate(cust.getBirthYmd(), "yyyyMMdd"), "yyyy-MM-dd"));
+			
+			if(cust.getSexGb().equals(TscConstants.Gender.FEMALE.value())) {
+				cust.setSexGb("여성");
+			}else if(cust.getSexGb().equals(TscConstants.Gender.MALE.value())) {
+				cust.setSexGb("남성");
+			}else if(cust.getSexGb().equals(TscConstants.Gender.COMMON.value())) {
+				cust.setSexGb("공통");
+			}else {
+				cust.setSexGb("알수없음");
+			}
+		}
+		
+		try {
+
+			GagaExcelUtil.createExcel(excelFilenameWithPath, custList, "활동회원", listTitles, cellNames, cellTypes, TsaConstants.EXCEL_FOOTER_TITLE);
+
+		} catch (Exception e) {
+			throw new IllegalStateException(e);
+		}
+	}
+	
+	/**
+	 * 탈퇴회원 목록 엑셀
+	 *
+	 * @param customerSearch
+	 * @param excelFilenameWithPath - 경로를 포함한 엑셀파일명
+	 * @return
+	 * @author jmh
+	 * @since 2021. 12. 08
+	 */
+	public void getCustomerSecedeExcelList(CustomerSearch customerSearch, String excelFilenameWithPath) {
+
+		// 헤더 title 설정
+		String[] listTitles = {"사이트", "회원ID", "회원NO", "회원명",  "핸드폰", "이메일", "성별", "생년월일", "탈퇴일자"};
+		
+
+		// DB 처리 시 사용되는 파라미터명(셀명) 설정
+		String[] cellNames = {"siteCd", "custId", "custNo", "custNm", "cellPhnno", "email", "sexGb", "birthYmd", "secedeDt"};
+
+		String[] cellTypes = {
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name()};
+		
+		Collection<Customer> custList = customerDao.getCustomerSecedeExcelList(customerSearch);
+		for( Customer cust : custList ) { 
+			cust.setCustId(cust.getMaskingCustId());
+			cust.setCustNm(cust.getMaskingCustNm());
+			cust.setCellPhnno(cust.getMaskingCellPhnno());
+			cust.setEmail(cust.getMaskingEmail());
+			cust.setBirthYmd(GagaDateUtil.getDate(GagaDateUtil.getDate(cust.getBirthYmd(), "yyyyMMdd"), "yyyy-MM-dd"));
+			
+			if(cust.getSexGb().equals(TscConstants.Gender.FEMALE.value())) {
+				cust.setSexGb("여성");
+			}else if(cust.getSexGb().equals(TscConstants.Gender.MALE.value())) {
+				cust.setSexGb("남성");
+			}else if(cust.getSexGb().equals(TscConstants.Gender.COMMON.value())) {
+				cust.setSexGb("공통");
+			}else {
+				cust.setSexGb("알수없음");
+			}
+		}
+		
+		try {
+
+			GagaExcelUtil.createExcel(excelFilenameWithPath, custList, "탈퇴회원", listTitles, cellNames, cellTypes, TsaConstants.EXCEL_FOOTER_TITLE);
+
+		} catch (Exception e) {
+			throw new IllegalStateException(e);
+		}
+	}
+	
+	/**
+	 * 휴면회원 목록 엑셀
+	 *
+	 * @param customerSearch
+	 * @param excelFilenameWithPath - 경로를 포함한 엑셀파일명
+	 * @return
+	 * @author jmh
+	 * @since 2021. 12. 08
+	 */
+	public void getCustomerDormantExcelList(CustomerSearch customerSearch, String excelFilenameWithPath) {
+
+		// 헤더 title 설정
+		String[] listTitles = {"사이트", "회원ID", "회원NO", "회원명",  "핸드폰", "이메일", "성별", "생년월일", "휴면일자"};
+		
+
+		// DB 처리 시 사용되는 파라미터명(셀명) 설정
+		String[] cellNames = {"siteCd", "custId", "custNo", "custNm", "cellPhnno", "email", "sexGb", "birthYmd", "dormantDt"};
+
+		String[] cellTypes = {
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name()};
+		
+		Collection<Customer> custList = customerDao.getCustomerDormantExcelList(customerSearch);
+		for( Customer cust : custList ) { 
+			cust.setCustId(cust.getMaskingCustId());
+			cust.setCustNm(cust.getMaskingCustNm());
+			cust.setCellPhnno(cust.getMaskingCellPhnno());
+			cust.setEmail(cust.getMaskingEmail());
+			cust.setBirthYmd(GagaDateUtil.getDate(GagaDateUtil.getDate(cust.getBirthYmd(), "yyyyMMdd"), "yyyy-MM-dd"));
+			
+			if(cust.getSexGb().equals(TscConstants.Gender.FEMALE.value())) {
+				cust.setSexGb("여성");
+			}else if(cust.getSexGb().equals(TscConstants.Gender.MALE.value())) {
+				cust.setSexGb("남성");
+			}else if(cust.getSexGb().equals(TscConstants.Gender.COMMON.value())) {
+				cust.setSexGb("공통");
+			}else {
+				cust.setSexGb("알수없음");
+			}
+		}
+		
+		try {
+
+			GagaExcelUtil.createExcel(excelFilenameWithPath, custList, "휴면회원", listTitles, cellNames, cellTypes, TsaConstants.EXCEL_FOOTER_TITLE);
+
+		} catch (Exception e) {
+			throw new IllegalStateException(e);
+		}
+	}
 }

+ 4 - 55
src/main/java/com/style24/admin/biz/service/TsaWithdrawService.java

@@ -71,9 +71,6 @@ public class TsaWithdrawService {
 	@Autowired
 	private TscKakaotalkService kakaotalkService;
 
-	
-	
-
 	/**
 	 * 환불관리 목록 건수
 	 *
@@ -85,9 +82,7 @@ public class TsaWithdrawService {
 	public int getRefundListCount(Withdraw withdraw) {
 		return withdrawDao.getRefundListCount(withdraw);
 	}
-	
-	
-	
+
 	/**
 	 * 환불관리 목록
 	 *
@@ -107,9 +102,7 @@ public class TsaWithdrawService {
 
 		return result;
 	}
-	
-	
-	
+
 	/**
 	 * 회수예외 목록 건수
 	 *
@@ -148,8 +141,6 @@ public class TsaWithdrawService {
 		withdrawDao.updateWithdrawException(withdrawExc);
 		
 		wmsWithdrawService.updateTbIfRecallExceptionRslt(withdrawExc);
-		
-		
 	}
 	
 	/**
@@ -373,10 +364,6 @@ public class TsaWithdrawService {
 		withdrawDao.updateChangeReason(withdrawExc);
 	}
 
-
-
-
-
 	/**
 	 * 환불관리 상세정보
 	 *
@@ -395,11 +382,6 @@ public class TsaWithdrawService {
 		return refundDetailList;
 	}
 
-
-
-
-
-
 	/**
 	 * 회수관리 > 환불컨펌 > 환불처리 
 	 *
@@ -437,38 +419,6 @@ public class TsaWithdrawService {
 		String delvExpnYn		= params.getString("delvExpnYn");							// 확정후 품절,불량 여부
 		String delvFeeCd		= params.getString("delvFeeCd");							// 배송비정책코드
 		String pgGb				= params.getString("pgGb");									// PG 구분
-		String payMeans			= params.getString("payMeans");
-		String batchYn			= "N";
-
-		// OrderChange change = new OrderChange();
-		// change.setOrdNo(params.getInt("ordNo"));
-		// change.setCustNo(params.getInt("custNo"));
-		// change.setOrderNm(params.getString("ordNm"));
-		// change.setPgGb(params.getString("pgGb"));
-		// change.setPayMeans(params.getString("payMeans"));
-		// change.setBankCd(params.getString("bankCd"));
-		// change.setAccountNm(params.getString("accountNm"));
-		// change.setAccountNo(CryptoUtils.decryptAES(params.getString("accountNo")));
-		// //change.getOrdDtlNoList().add(params.getOrdDtlNo());
-		// //change.getCnclRtnReqQtyList().add(params.getCnclRtnQty());
-		// change.setChgReason(params.getString("chgReason"));
-		// change.setChgReasonNm(params.getString("chgReasonNm"));
-		// change.setBatchYn("N");
-		// change.setDelvAddrSq(params.getInt("delvAddrSq"));
-		// change.setAddDeliveryFeeYn(params.getString("addDeliveryFeeYn"));
-		// change.setAddDeliveryFee(params.getInt("addDeliveryFee"));
-		// change.setRegNo(userNo);
-		// change.setUpdNo(userNo);
-		// change.setUserNo(userNo);
-		// change.setOrdChgSq(params.getInt("ordChgSq"));
-		// change.setMallGb(params.getString("mallGb"));
-		// change.setSpanRefundAmt(params.getInt("spanRefundAmt"));
-		// change.setPgStat(params.getString("pgStat"));
-		// change.setCodFeeYn(params.getString("codFeeYn"));
-		// change.setCodFee(params.getInt("codFee"));
-		// change.setEnCloseFeeYn(params.getString("enCloseFeeYn"));
-		// change.setEncloseFee(params.getInt("enCloseFee"));
-		// change.setWdInvoiceNo(params.getString("wdInvoiceNo"));
 
 		try {
 			OrderChange orderChange = new OrderChange();
@@ -510,14 +460,14 @@ public class TsaWithdrawService {
 			info.set("delvFeeCd"		, delvFeeCd);			// 배송비정책코드
 
 			if ("Y".equals(allCanYn)) {
-				// orderChangeService.allRefund(change);
 				orderChangeService.allRefund(info, userNo);
 			} else {
 				orderChangeService.partialRefund(info, userNo);
 			}
 
 			// 네이버페이 환불컨펌
-			if(TscConstants.PgGb.NAVER_ORDER.value().equals(pgGb)) {
+			if (TscConstants.PgGb.NAVER_ORDER.value().equals(pgGb)) {
+				
 				// PG 미전송이 아닐 경우 (Y면 미전송, N이면 전송)
 				if("N".equals(pgStat)) {
 					// WMS 예외로 넘어온 데이터인지 확인 후 네이버페이 진행
@@ -597,7 +547,6 @@ public class TsaWithdrawService {
 		} catch(Exception e) {
 			log.debug("kakaotalkService Exception OrdNo:"+withdraw.getOrdNo());
 		}
-
 	}
 	
 	public Withdraw getRefundInfo(Withdraw withdraw) {

+ 104 - 4
src/main/java/com/style24/admin/biz/web/TsaCustomerController.java

@@ -2,8 +2,13 @@ package com.style24.admin.biz.web;
 
 import java.util.Collection;
 
+import javax.servlet.http.HttpServletRequest;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.core.io.InputStreamResource;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -14,6 +19,11 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
+import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.rest.server.GagaResponse;
+import com.gagaframework.web.util.GagaDateUtil;
+import com.gagaframework.web.util.GagaFileUtil;
+import com.gagaframework.web.util.GagaStringUtil;
 import com.style24.admin.biz.service.TsaCounselService;
 import com.style24.admin.biz.service.TsaCustomerService;
 import com.style24.admin.biz.service.TsaRendererService;
@@ -46,10 +56,6 @@ import com.style24.persistence.domain.Review;
 
 import lombok.extern.slf4j.Slf4j;
 
-import com.gagaframework.web.parameter.GagaMap;
-import com.gagaframework.web.rest.server.GagaResponse;
-import com.gagaframework.web.util.GagaStringUtil;
-
 /**
  * 고객 Controller
  *
@@ -63,6 +69,9 @@ public class TsaCustomerController extends TsaBaseController {
 
 	@Autowired
 	private TscMessageByLocale message;
+	
+	@Autowired
+	private Environment env;
 
 	@Autowired
 	private TsaCounselService counselService;
@@ -1467,5 +1476,96 @@ public class TsaCustomerController extends TsaBaseController {
 
 		return super.ok(message.getMessage("SUCC_0003"));
 	}
+	
+	/**
+	 * 활동회원 목록 엑셀
+	 * @param customerSearch - 검색조건
+	 * @return Collection<Customer>
+	 * @author jmh
+	 * @since 2021. 12. 08
+	 */
+	@GetMapping("/active/excel/list")
+	public ResponseEntity<InputStreamResource> downloadCustomerActiveExcelList(HttpServletRequest request, CustomerSearch customerSearch) throws Exception {
+		String excelfileName = "활동회원_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
+		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
 
+		// multi row 검색관련 처리
+		if (!StringUtils.isBlank(customerSearch.getCondition())) {
+			if (customerSearch.getSearch().equals("custNm") || customerSearch.getSearch().equals("email")) {
+				String[] multiParams = customerSearch.getCondition().replaceAll("\r", "").split("\n");
+				for (int i = 0; i < multiParams.length; i++) {
+					multiParams[i] = CryptoUtils.encryptAES(multiParams[i]);
+				}
+
+				customerSearch.setConditions(multiParams);
+			} else {
+				customerSearch.setConditions(customerSearch.getCondition().replaceAll("\r", "").split("\n"));
+			}
+		}
+
+		// 회원명, 이메일 암호화
+		if ("custNm".equals(customerSearch.getSearchGb()) || "email".equals(customerSearch.getSearchGb())) {
+			customerSearch.setSearchTxt(CryptoUtils.encryptAES(customerSearch.getSearchTxt()));
+		}
+		if (!"Y".equals(customerSearch.getCpnPubPopYn())) {
+			customerSearch.setCpnPubPopYn("N");
+		}
+		if ("custId".equals(customerSearch.getSearchGb())) {
+			customerSearch.setStDate(null);
+			customerSearch.setEdDate(null);
+		}
+		customerSearch.encryptData();	//데이터 암호화 필요
+			
+		customerService.getCustomerActiveExcelList(customerSearch, excelFilenameWithPath);
+
+		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
+	}
+	
+	
+	/**
+	 * 탈퇴회원 목록 엑셀
+	 * @param customerSearch - 검색조건
+	 * @return Collection<Customer>
+	 * @author jmh
+	 * @since 2021. 12. 08
+	 */
+	@GetMapping("/secede/excel/list")
+	public ResponseEntity<InputStreamResource> downloadCustomerSecedeExcelList(HttpServletRequest request, CustomerSearch customerSearch) throws Exception {
+		String excelfileName = "탈퇴회원_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
+		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
+
+		// 회원명, 이메일 암호화
+		if ("custNm".equals(customerSearch.getSearchGb()) || "email".equals(customerSearch.getSearchGb())) {
+			customerSearch.setSearchTxt(CryptoUtils.encryptAES(customerSearch.getSearchTxt()));
+		}
+		customerSearch.encryptData();	//데이터 암호화 필요
+		
+		customerService.getCustomerSecedeExcelList(customerSearch, excelFilenameWithPath);
+
+		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
+	}
+	
+	/**
+	 * 휴면회원 목록 엑셀
+	 * @param customerSearch - 검색조건
+	 * @return Collection<Customer>
+	 * @author jmh
+	 * @since 2021. 12. 08
+	 */
+	@GetMapping("/dormant/excel/list")
+	public ResponseEntity<InputStreamResource> downloadCustomerDormantExcelList(HttpServletRequest request, CustomerSearch customerSearch) throws Exception {
+		String excelfileName = "휴면회원_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
+		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
+
+		// 회원명, 이메일 암호화
+		if ("custNm".equals(customerSearch.getSearchGb()) || "email".equals(customerSearch.getSearchGb())) {
+			customerSearch.setSearchTxt(CryptoUtils.encryptAES(customerSearch.getSearchTxt()));
+		}
+		customerSearch.encryptData();	//데이터 암호화 필요
+		
+		customerService.getCustomerDormantExcelList(customerSearch, excelFilenameWithPath);
+
+		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
+	}
+	
 }

+ 0 - 2
src/main/java/com/style24/admin/biz/web/TsaWithdrawController.java

@@ -167,7 +167,6 @@ public class TsaWithdrawController extends TsaBaseController {
 		OrderChange orderChange= new OrderChange();
 		orderChange.setOrdChgSq(withdraw.getOrdChgSq());
 		orderChange.setUserNo(withdraw.getUserNo());
-		//orderChangeService.refundConfirmPreInfo(orderChange);
 		
 		GagaMap result = new GagaMap();
 		
@@ -183,7 +182,6 @@ public class TsaWithdrawController extends TsaBaseController {
 			result.set("returnOrderInfo", orderChangeService.getReturnOrderInfo(order));
 		}
 		
-	//	Collection<Withdraw> dataList = withdrawService.getRefundDetailList(withdraw);
 		return result;
 	}
 

+ 14 - 1
src/main/java/com/style24/persistence/domain/Withdraw.java

@@ -170,5 +170,18 @@ public class Withdraw extends TscBaseDomain {
 	private String[] optCd1Arr;		// 옵션코드
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] optCd2Arr;		// 옵션코드
-
+	
+	// 2021.12.03 금액추가
+	private int ordAmt;
+	private int cnclRtnAmt;
+	private int cpn1DcAmt;
+	private int tmtb1DcAmt;
+	private int tmtb2DcAmt;
+	private int goodsCpnDcAmt;
+	private int cartCpnDcAmt;
+	private int prePntDcAmt;
+	private int pntDcAmt;
+	private int savePntAmt;
+	private int realOrdAmt;
+	private int gfcdUseAmt;
 }

+ 222 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaCustomer.xml

@@ -920,4 +920,226 @@
 		WHERE  CUST_NO = #{custNo}
 	</update>
 
+	<!-- 활동회원목록 엑셀 -->
+	<select id="getCustomerActiveExcelList" parameterType="CustomerSearch" resultType="Customer">
+		/* TsaCustomer.getCustomerActiveExcelList */
+		SELECT CUST_NO
+		     , CUST_ID
+		     , CUST_NM
+		     , PASSWD
+		     , BIRTH_YMD
+		     , SEX_GB
+		     , CELL_PHNNO
+		     , APP_AGREE_YN
+		     , DATE_FORMAT(APP_AGREE_DT, '%Y-%m-%d') AS APP_AGREE_DT
+		     , SMS_AGREE_YN
+		     , DATE_FORMAT(SMS_AGREE_DT, '%Y-%m-%d') AS SMS_AGREE_DT
+		     , EMAIL
+		     , EMAIL_AGREE_YN
+		     , DATE_FORMAT(EMAIL_AGREE_DT, '%Y-%m-%d') AS EMAIL_AGREE_DT
+		     , MK_AGREE_YN
+		     , DATE_FORMAT(MK_AGREE_DT, '%Y-%m-%d') AS MK_AGREE_DT
+		     , HOME_ZIPCODE
+		     , HOME_BASE_ADDR
+		     , HOME_DTL_ADDR
+		     , FN_GET_CODE_NM('G000', SITE_CD) AS SITE_CD
+		     , FRONT_GB
+		     , AF_LINK_CD
+		     , FN_GET_CODE_NM('G100', CUST_GB) AS CUST_GB
+		     , FN_GET_CODE_NM('G110', CUST_GRADE) AS CUST_GRADE
+		     , DATE_FORMAT(JOIN_DT, '%Y-%m-%d') AS JOIN_DT
+		     , FOREIGNER_YN
+		     , CUST_STAT
+		     , DATE_FORMAT(PASSWD_CHG_DT, '%Y-%m-%d') AS PASSWD_CHG_DT
+		     , TEMP_PASSWD_YN
+		     , DATE_FORMAT(LOGIN_LDT, '%Y-%m-%d') AS LOGIN_LDT
+		     , CI
+		     , DATE_FORMAT(AUTH_DT, '%Y-%m-%d') AS AUTH_DT
+		     , MANAGED_RSN
+		     , MANAGED_DTL_RSN
+		     , DATE_FORMAT(MANAGED_DT, '%Y-%m-%d') AS MANAGED_DT
+		     , SECEDE_RSN
+		     , SECEDE_DTL_RSN
+		     , DATE_FORMAT(SECEDE_DT, '%Y-%m-%d') AS SECEDE_DT
+		     <if test="searchDateGb == 'joinDt'">
+		     , ROW_NUMBER() OVER(ORDER BY JOIN_DT DESC)     AS NUMB
+		     </if>
+		     <if test="searchDateGb == 'loginLdt'">
+		     , ROW_NUMBER() OVER(ORDER BY LOGIN_LDT DESC)   AS NUMB
+		     </if>
+		FROM   TB_CUSTOMER
+		WHERE  CUST_STAT = 'G104_10'
+		<if test="searchGb == 'custNo'">
+		AND    CUST_NO = #{searchTxt}
+		</if>
+		<if test="searchGb == 'custNm'">
+		AND    LOWER(CUST_NM) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		</if>
+		<if test="searchGb == 'email'">
+		AND    LOWER(EMAIL) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		</if>
+		<if test="searchGb == 'custId'">
+		AND    LOWER(CUST_ID) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		</if>
+		<if test="siteCd != null and siteCd != ''">
+		AND    SITE_CD = #{siteCd}
+		</if>
+		<if test="cellPhnno != null and cellPhnno != ''">
+		AND    CELL_PHNNO = #{cellPhnno}
+		</if>
+		<if test="custGb != null and custGb != ''">
+		AND    CUST_GB = #{custGb}
+		</if>
+		<if test="custGrade != null and custGrade != ''">
+		AND    CUST_GRADE = #{custGrade}
+		</if>
+		<if test="managedRsn != null and managedRsn != ''">
+		AND    MANAGED_RSN = #{managedRsn}
+		</if>
+		<if test="smsAgreeYn != null and smsAgreeYn != ''">
+		AND   SMS_AGREE_YN = #{smsAgreeYn}
+		</if>
+		<if test="emailAgreeYn != null and emailAgreeYn != ''">
+		AND   EMAIL_AGREE_YN = #{emailAgreeYn}
+		</if>
+		<if test="appAgreeYn != null and appAgreeYn != ''">
+		AND   APP_AGREE_YN = #{appAgreeYn}
+		</if>
+		<if test="mkAgreeYn != null and mkAgreeYn != ''">
+		AND   MK_AGREE_YN = #{mkAgreeYn}
+		</if>
+		<if test="snsType != null and snsType != ''">
+		AND  SNS_TYPE = #{snsType}
+		</if>
+		<if test="stDate != null and edDate != '' and stDate != null and edDate != ''">
+		     <if test="searchDateGb == 'joinDt'">
+		AND   JOIN_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		AND   JOIN_DT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		     </if>
+		     <if test="searchDateGb == 'loginLdt'">
+		AND   LOGIN_LDT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		AND   LOGIN_LDT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		     </if>
+		</if>
+		<if test="custNm != null and custNm != ''">
+		AND    LOWER(CUST_NM) LIKE CONCAT('%',LOWER(#{custNm}),'%')
+		</if>
+		<if test="email != null and email != ''">
+		AND    LOWER(EMAIL) LIKE CONCAT('%',LOWER(#{email}),'%')
+		</if>
+		<if test="custId != null and custId != ''">
+		AND    CUST_ID = #{custId}
+		</if>
+		<if test="condition != null and condition != ''">
+			<choose>
+				<when test="search != null and search == 'custId'">
+					AND
+					<foreach collection="conditions" item="item" index="index" separator="or">
+						UPPER(CUST_ID) LIKE CONCAT('%',UPPER(#{item}),'%')
+					</foreach>
+				</when>
+				<when test="search != null and search == 'custNm'">
+					AND
+					<foreach collection="conditions" item="item" index="index" separator="or">
+						UPPER(CUST_NM) LIKE CONCAT('%',UPPER(#{item}),'%')
+					</foreach>
+				</when>
+				<when test="search != null and search == 'email'">
+					AND
+					<foreach collection="conditions" item="item" index="index" separator="or">
+						UPPER(EMAIL) LIKE CONCAT('%',UPPER(#{item}),'%')
+					</foreach>
+				</when>
+			</choose>
+		</if>
+		
+	</select>
+	
+	<!-- 탈퇴회원목록 엑셀 -->
+	<select id="getCustomerSecedeExcelList" parameterType="CustomerSearch" resultType="Customer">
+		/* TsaCustomer.getCustomerSecedeExcelList */
+		SELECT CUST_NO
+		     , CUST_ID
+		     , CUST_NM
+		     , BIRTH_YMD
+		     , CELL_PHNNO
+		     , EMAIL
+		     , SEX_GB
+		     , FN_GET_CODE_NM('G000', SITE_CD) AS SITE_CD
+		     , SECEDE_RSN
+		     , SECEDE_DTL_RSN
+		     , DATE_FORMAT(SECEDE_DT, '%Y-%m-%d') AS SECEDE_DT
+		     , ROW_NUMBER() OVER(ORDER BY SECEDE_DT DESC)   AS NUMB
+		FROM   TB_SECEDE_CUST
+		WHERE  CUST_STAT = 'G104_30'
+		<if test="searchTxt != null and searchTxt != ''">
+		    <if test="searchGb == 'custNo'">
+		AND    CUST_NO = #{searchTxt}
+		    </if>
+		    <if test="searchGb == 'custNm'">
+		AND    LOWER(CUST_NM) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		    </if>
+		    <if test="searchGb == 'email'">
+		AND    LOWER(EMAIL) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		    </if>
+		    <if test="searchGb == 'custId'">
+		AND    LOWER(CUST_ID) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		    </if>
+		</if>
+		<if test="siteCd != null and siteCd != ''">
+		AND    SITE_CD = #{siteCd}
+		</if>
+		<if test="cellPhnno != null and cellPhnno != ''">
+		AND    CELL_PHNNO = #{cellPhnno}
+		</if>
+		<if test="secedeRsn != null and secedeRsn != ''">
+		AND    SECEDE_RSN = #{secedeRsn}
+		</if>
+		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
+		AND    SECEDE_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		AND    SECEDE_DT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		</if>
+	</select>
+
+	<!-- 휴면회원목록 엑셀-->
+	<select id="getCustomerDormantExcelList" parameterType="CustomerSearch" resultType="Customer">
+		/* TsaCustomer.getCustomerDormantExcelList */
+		SELECT CUST_NO
+		     , FN_GET_CODE_NM('G000', SITE_CD) AS SITE_CD
+		     , CUST_ID
+		     , CUST_NM
+		     , CELL_PHNNO
+		     , EMAIL
+		     , BIRTH_YMD
+		     , SEX_GB
+		     , DATE_FORMAT(DORMANT_DT, '%Y-%m-%d') AS DORMANT_DT
+		     , ROW_NUMBER() OVER(ORDER BY DORMANT_DT DESC)   AS NUMB
+		FROM   TB_DORMANT_CUST
+		WHERE  CUST_STAT = 'G104_20'
+		<if test="searchTxt != null and searchTxt != ''">
+		    <if test="searchGb == 'custNo'">
+		AND    CUST_NO = #{searchTxt}
+		    </if>
+		    <if test="searchGb == 'custNm'">
+		AND    LOWER(CUST_NM) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		    </if>
+		    <if test="searchGb == 'email'">
+		AND    LOWER(EMAIL) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		    </if>
+		    <if test="searchGb == 'custId'">
+		AND    LOWER(CUST_ID) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		    </if>
+		</if>
+		<if test="siteCd != null and siteCd != ''">
+		AND    SITE_CD = #{siteCd}
+		</if>
+		<if test="cellPhnno != null and cellPhnno != ''">
+		AND    CELL_PHNNO = #{cellPhnno}
+		</if>
+		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
+		AND    DORMANT_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		AND    DORMANT_DT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		</if>
+	</select>
+	
 </mapper>

+ 209 - 213
src/main/java/com/style24/persistence/mybatis/shop/TsaDelivery.xml

@@ -516,51 +516,51 @@
 	<select id="getBangoodsList" parameterType="Delivery" resultType="Delivery">
 		/* TsaDelivery.getBangoodsList */
 		SELECT DBG.DEL_YN
-			, G.BRAND_CD
-			, B.BRAND_KNM
-			, (SELECT MAX(DELV_LOC_NM) FROM TB_DELIVERY_LOC DL WHERE DL.DELV_LOC_CD = DBG.DELV_LOC_CD ) AS DELV_LOC_NM
-			, (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = DBG.GOODS_CD AND COLOR_CD = DBG.OPT_CD1 AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
-			, G.GOODS_NM
-			, DBG.GOODS_CD
-			, DBG.OPT_CD1
-			, DBG.OPT_CD2
-			, FN_GET_CODE_NM('G008', G.GOODS_STAT) AS GOODS_STAT
-			, DBG.DELV_BAN_STDT
-			, DBG.DELV_BAN_EDDT
-			, DBG.DELV_BAN_GOODS_SQ
-			, DBG.REG_DT
-		FROM  TB_DELIVERY_BAN_GOODS DBG
-		INNER JOIN TB_GOODS        G    ON DBG.GOODS_CD = G.GOODS_CD
-		INNER JOIN TB_BRAND        B    ON G.BRAND_CD = B.BRAND_CD
-		WHERE 1=1
+		     , G.BRAND_CD
+		     , B.BRAND_KNM
+		     , (SELECT MAX(DELV_LOC_NM) FROM TB_DELIVERY_LOC DL WHERE DL.DELV_LOC_CD = DBG.DELV_LOC_CD ) AS DELV_LOC_NM
+		     , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = DBG.GOODS_CD AND COLOR_CD = DBG.OPT_CD1 AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
+		     , G.GOODS_NM
+		     , DBG.GOODS_CD
+		     , DBG.OPT_CD1
+		     , DBG.OPT_CD2
+		     , FN_GET_CODE_NM('G008', G.GOODS_STAT) AS GOODS_STAT
+		     , DBG.DELV_BAN_STDT
+		     , DBG.DELV_BAN_EDDT
+		     , DBG.DELV_BAN_GOODS_SQ
+		     , DBG.REG_DT
+		FROM   TB_DELIVERY_BAN_GOODS DBG
+		INNER  JOIN TB_GOODS        G    ON DBG.GOODS_CD = G.GOODS_CD
+		INNER  JOIN TB_BRAND        B    ON G.BRAND_CD = B.BRAND_CD
+		WHERE  1=1
 		<if test='supplyCompCd != null and supplyCompCd != ""'>
-			AND G.SUPPLY_COMP_CD = #{supplyCompCd}
+		AND    G.SUPPLY_COMP_CD = #{supplyCompCd}
 		</if>
 		<if test='brandCd != null and brandCd != ""'>
-			AND G.BRAND_CD = #{brandCd}
+		AND    G.BRAND_CD = #{brandCd}
 		</if>
 		<if test='searchTxt != null and searchTxt != ""'>
 			<if test='goodsGb == "goodsCd"'>
-				AND G.GOODS_CD LIKE  CONCAT(UPPER( #{searchTxt}), '%')
+		AND    G.GOODS_CD LIKE  CONCAT(UPPER( #{searchTxt}), '%')
 			</if>
 			<if test='goodsGb == "goodsNm"'>
-				AND G.GOODS_NM LIKE CONCAT(UPPER( #{searchTxt}), '%')
+		AND    G.GOODS_NM LIKE CONCAT(UPPER( #{searchTxt}), '%')
 			</if>
 		</if>
 		<if test='delvLocCd != null and delvLocCd != ""'>
-			AND DBG.DELV_LOC_CD = #{delvLocCd}
+		AND    DBG.DELV_LOC_CD = #{delvLocCd}
 		</if>
 		<if test='delYn != null and delYn != ""'>
-			AND DBG.DEL_YN = #{delYn}
+		AND    DBG.DEL_YN = #{delYn}
 		</if>
 		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
-			AND DBG.REG_DT BETWEEN STR_TO_DATE(CONCAT(#{stDate},' 000000'),'%Y-%m-%d %H%i%S') AND STR_TO_DATE(CONCAT(#{edDate},' 235959'), '%Y-%m-%d %H%i%S')
+		AND    DBG.REG_DT BETWEEN STR_TO_DATE(CONCAT(#{stDate},' 000000'),'%Y-%m-%d %H%i%S') AND STR_TO_DATE(CONCAT(#{edDate},' 235959'), '%Y-%m-%d %H%i%S')
 		</if>
 		<if test="stDate2 != null and stDate2 != '' and edDate2 != null and edDate2 != ''">
-			AND DBG.DELV_BAN_STDT BETWEEN STR_TO_DATE(CONCAT(#{stDate2},' 000000'),'%Y-%m-%d %H%i%S') AND STR_TO_DATE(CONCAT(#{edDate2},' 235959'), '%Y-%m-%d %H%i%S')
+		AND    DBG.DELV_BAN_STDT BETWEEN STR_TO_DATE(CONCAT(#{stDate2},' 000000'),'%Y-%m-%d %H%i%S') AND STR_TO_DATE(CONCAT(#{edDate2},' 235959'), '%Y-%m-%d %H%i%S')
 		</if>
 		<if test="stDate3 != null and stDate3 != '' and edDate3 != null and edDate3 != ''">
-			AND DBG.DELV_BAN_EDDT BETWEEN STR_TO_DATE(CONCAT(#{stDate3},' 000000'),'%Y-%m-%d %H%i%S') AND STR_TO_DATE(CONCAT(#{edDate3},' 235959'), '%Y-%m-%d %H%i%S')
+		AND    DBG.DELV_BAN_EDDT BETWEEN STR_TO_DATE(CONCAT(#{stDate3},' 000000'),'%Y-%m-%d %H%i%S') AND STR_TO_DATE(CONCAT(#{edDate3},' 235959'), '%Y-%m-%d %H%i%S')
 		</if>
 	</select>
 
@@ -622,7 +622,7 @@
 	<!-- 출고금지상품 카운트 -->
 	<select id="getBangoodsListCnt" parameterType="Delivery"	resultType="int">
 		/* TsaDelivery.getBangoodsListCnt */
-		SELECT COUNT(*)
+		SELECT COUNT(1)
 		  FROM TB_DELIVERY_BAN_GOODS
 		 WHERE DELV_LOC_CD = #{delvLocCd}
 		   AND GOODS_CD    = #{goodsCd}
@@ -635,105 +635,99 @@
 	<insert id="createBangoods" parameterType="Delivery" >
 		/* TsaDelivery.createBangoods */
 		INSERT INTO TB_DELIVERY_BAN_GOODS (
-			  DELV_LOC_CD
-			, GOODS_CD
-			, OPT_CD1
-			, OPT_CD2
-			, DELV_BAN_STDT
-			, DELV_BAN_EDDT
-			, DEL_YN
-			, REG_NO
-			, REG_DT
-			, UPD_NO
-			, UPD_DT
-		)
-		VALUES (
-			  #{delvLocCd}
-			, #{goodsCd}
-			, #{optCd1}
-			, #{optCd2}
-			, replace(#{delvBanStdt},'-','')
-			, STR_TO_DATE(CONCAT(#{delvBanEddt},' 235959'), '%Y-%m-%d %H%i%S')
-			, 'N'
-			, #{regNo}
-			, NOW()
-			, #{updNo}
-			, NOW()
+		       DELV_LOC_CD
+		     , GOODS_CD
+		     , OPT_CD1
+		     , OPT_CD2
+		     , DELV_BAN_STDT
+		     , DELV_BAN_EDDT
+		     , DEL_YN
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		) VALUES (
+		       #{delvLocCd}
+		     , #{goodsCd}
+		     , #{optCd1}
+		     , #{optCd2}
+		     , replace(#{delvBanStdt},'-','')
+		     , STR_TO_DATE(CONCAT(#{delvBanEddt},' 235959'), '%Y-%m-%d %H%i%S')
+		     , 'N'
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
 		)
 	</insert>
 
 	<!-- 배송/회수지시 목록 건수 -->
 	<select id="getDeliveryWithdrawDirectiveListCount" parameterType="Delivery" resultType="int">
 		/* TsaDelivery.getDeliveryWithdrawDirectiveListCount */
-				SELECT COUNT(*) AS TOTCNT
-				  FROM (
-						SELECT
-						       '배송'                              AS DELV_GB_NM  -- 지시구분명
-						     , OD.INVOICE_SEND_YN                 AS SEND_YN     -- 전송여부
-						     , O.SITE_CD                                         -- 사이트코드
-						     , O.ORD_NO                                          -- 주문번호
-						     , OD.ORD_DTL_NO                                     -- 주문상세번호
-						     , OD.GOODS_CD                                       -- 상품코드
-						FROM   TB_ORDER O
-						 JOIN  TB_ORDER_DETAIL OD      ON O.ORD_NO = OD.ORD_NO
-						 JOIN  TB_DELIVERY_ADDR DA     ON OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ AND OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ
-						 JOIN  TB_GOODS G              ON OD.GOODS_CD      = G.GOODS_CD
-						WHERE 1=1
-						<if test="delvGb != null and delvGb != ''">
-						AND    'D' = #{delvGb} -- 배송지시
-						</if>
-						<if test="stDate != null and stDate != ''">
-						AND    O.ORD_DT <![CDATA[>=]]> STR_TO_DATE(REPLACE(#{stDate},'-','') , '%Y%m%d%H%i%s')
-						</if>
-						<if test="edDate != null and edDate != ''">
-						AND    O.ORD_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','') , '%Y%m%d%H%i%s'), INTERVAL 1 DAY)
-						</if>
-						<if test="siteCd != null and siteCd != ''">
-						AND    O.SITE_CD = #{siteCd}
-						</if>
-						AND    OD.ORD_DTL_STAT = 'G013_50' -- 배송중
-						<if test="sendYn != null and sendYn != ''">
-						AND    OD.INVOICE_SEND_YN = #{sendYn}
-						</if>
-						AND    G.SELF_GOODS_YN = 'Y' -- 자사상품만
-
-						UNION ALL
-
-						SELECT
-						       '회수'                 AS DELV_GB_NM      -- 지시구분명
-						     , OC.WD_INVOICE_SEND_YN AS SEND_YN         -- 전송여부
-						     , O.SITE_CD                                -- 사이트코드
-						     , O.ORD_NO                                 -- 주문번호
-						     , OCD.ORD_DTL_NO                           -- 주문상세번호
-						     , OD.GOODS_CD                              -- 상품코드
-						FROM   TB_ORDER_CHANGE OC
-						JOIN   TB_ORDER_CHANGE_DETAIL OCD ON OC.ORD_CHG_SQ  = OCD.ORD_CHG_SQ
-						JOIN   TB_ORDER_DETAIL OD         ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
-						JOIN   TB_ORDER O                 ON OD.ORD_NO      = O.ORD_NO
-						JOIN   TB_GOODS G                 ON OD.GOODS_CD     = G.GOODS_CD
-						JOIN   TB_DELIVERY_LOC D          ON OD.DELV_LOC_CD = D.DELV_LOC_CD AND OD.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
-						WHERE  1=1
-						<if test="delvGb != null and delvGb != ''">
-						AND    'W' = #{delvGb} -- 회수지시
-						</if>
-						AND    OC.CHG_GB IN ('G680_30','G680_40') -- 반품요청,교환요청
-						<if test="sendYn != null and sendYn != ''">
-						AND    OC.WD_INVOICE_SEND_YN = #{sendYn}
-						</if>
-						<if test="stDate != null and stDate != ''">
-						AND    OC.REG_DT <![CDATA[>=]]> STR_TO_DATE(REPLACE(#{stDate},'-','') , '%Y%m%d%H%i%s')
-						</if>
-						<if test="edDate != null and edDate != ''">
-						AND    OC.REG_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','') , '%Y%m%d%H%i%s'), INTERVAL 1 DAY)
-						</if>
-						AND    OCD.CHG_STAT IN ('G685_30','G685_31') -- 회수요청 상품검수중
-						<if test="siteCd != null and siteCd != ''">
-						AND    O.SITE_CD = #{siteCd}
-						</if>
-						AND    G.SELF_GOODS_YN = 'Y' -- 자사상품만
-						AND    OCD.DEL_YN      = 'N'
-					) A
-
+		SELECT COUNT(1) AS TOTCNT
+		FROM (
+		    SELECT '배송'                              AS DELV_GB_NM  -- 지시구분명
+		         , OD.INVOICE_SEND_YN                 AS SEND_YN     -- 전송여부
+		         , O.SITE_CD                                         -- 사이트코드
+		         , O.ORD_NO                                          -- 주문번호
+		         , OD.ORD_DTL_NO                                     -- 주문상세번호
+		         , OD.GOODS_CD                                       -- 상품코드
+		    FROM   TB_ORDER O
+		    JOIN   TB_ORDER_DETAIL OD      ON O.ORD_NO = OD.ORD_NO
+		    JOIN   TB_DELIVERY_ADDR DA     ON OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ AND OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ
+		    JOIN   TB_GOODS G              ON OD.GOODS_CD      = G.GOODS_CD
+		    WHERE  1=1
+			<if test="delvGb != null and delvGb != ''">
+		    AND    'D' = #{delvGb} -- 배송지시
+			</if>
+			<if test="stDate != null and stDate != ''">
+		    AND    O.ORD_DT <![CDATA[>=]]> STR_TO_DATE(REPLACE(#{stDate},'-','') , '%Y%m%d%H%i%s')
+			</if>
+			<if test="edDate != null and edDate != ''">
+		    AND    O.ORD_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','') , '%Y%m%d%H%i%s'), INTERVAL 1 DAY)
+			</if>
+			<if test="siteCd != null and siteCd != ''">
+		    AND    O.SITE_CD = #{siteCd}
+			</if>
+		    AND    OD.ORD_DTL_STAT = 'G013_50' -- 배송중
+			<if test="sendYn != null and sendYn != ''">
+		    AND    OD.INVOICE_SEND_YN = #{sendYn}
+			</if>
+		    AND    G.SELF_GOODS_YN = 'Y' -- 자사상품만
+			UNION  ALL
+		    SELECT '회수'                 AS DELV_GB_NM      -- 지시구분명
+		         , OC.WD_INVOICE_SEND_YN AS SEND_YN         -- 전송여부
+		         , O.SITE_CD                                -- 사이트코드
+		         , O.ORD_NO                                 -- 주문번호
+		         , OCD.ORD_DTL_NO                           -- 주문상세번호
+		         , OD.GOODS_CD                              -- 상품코드
+		    FROM   TB_ORDER_CHANGE OC
+		    JOIN   TB_ORDER_CHANGE_DETAIL OCD ON OC.ORD_CHG_SQ  = OCD.ORD_CHG_SQ
+		    JOIN   TB_ORDER_DETAIL OD         ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+		    JOIN   TB_ORDER O                 ON OD.ORD_NO      = O.ORD_NO
+		    JOIN   TB_GOODS G                 ON OD.GOODS_CD     = G.GOODS_CD
+		    JOIN   TB_DELIVERY_LOC D          ON OD.DELV_LOC_CD = D.DELV_LOC_CD AND OD.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
+		    WHERE  1=1
+			<if test="delvGb != null and delvGb != ''">
+		    AND    'W' = #{delvGb} -- 회수지시
+			</if>
+		    AND    OC.CHG_GB IN ('G680_30','G680_40') -- 반품요청,교환요청
+			<if test="sendYn != null and sendYn != ''">
+		    AND    OC.WD_INVOICE_SEND_YN = #{sendYn}
+			</if>
+			<if test="stDate != null and stDate != ''">
+		    AND    OC.REG_DT <![CDATA[>=]]> STR_TO_DATE(REPLACE(#{stDate},'-','') , '%Y%m%d%H%i%s')
+			</if>
+			<if test="edDate != null and edDate != ''">
+		    AND    OC.REG_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','') , '%Y%m%d%H%i%s'), INTERVAL 1 DAY)
+			</if>
+		    AND    OCD.CHG_STAT IN ('G685_30','G685_31') -- 회수요청 상품검수중
+			<if test="siteCd != null and siteCd != ''">
+		    AND    O.SITE_CD = #{siteCd}
+			</if>
+		    AND    G.SELF_GOODS_YN = 'Y' -- 자사상품만
+		    AND    OCD.DEL_YN      = 'N'
+		) A
 	</select>
 
 	<!-- 배송/회수지시 목록 -->
@@ -741,99 +735,100 @@
 		/* TsaDelivery.getDeliveryWithdrawDirectiveList */
 		SELECT Z.*
 		FROM (
-		    SELECT A.*, ROW_NUMBER() OVER(ORDER BY  A.DELV_GB_NM, A.ORD_NO DESC, A.ORD_DTL_NO )  RNUM
+		    SELECT A.*
+		         , ROW_NUMBER() OVER(ORDER BY  A.DELV_GB_NM, A.ORD_NO DESC, A.ORD_DTL_NO )  RNUM
 		    FROM (
-				SELECT A.*
-				  FROM (
-						SELECT DISTINCT
-						       '배송'                              AS DELV_GB_NM  -- 지시구분명
-						     , OD.INVOICE_SEND_YN                 AS SEND_YN     -- 전송여부
-						     , O.SITE_CD                                         -- 사이트코드
-						     , O.ORD_NO                                          -- 주문번호
-						     , OD.ORD_DTL_NO                                     -- 주문상세번호
-						     , OD.GOODS_CD                                       -- 상품코드
-						     , G.GOODS_NM                                        -- 상품명
-						     , DA.RECIP_NM                                       -- 수취인명
-						     , DA.RECIP_PHNNO                                    -- 수취인휴대전화번호
-						     , DA.RECIP_TELNO                                    -- 수취인전화번호
-						     , DA.RECIP_ZIPCODE                                  -- 수취인우편번호
-						     , DA.RECIP_BASE_ADDR                                -- 수취인기본주소
-						     , DA.RECIP_DTL_ADDR                                 -- 수취인상세주소
-						     , O.ORD_NM                                          -- 주문자명
-						     , O.ORD_PHNNO                                       -- 주문자휴대전화번호
-						     , O.ORD_TELNO                                       -- 주문자전화번호
-						     , O.ORD_EMAIL                                       -- 주문자이메일
-						FROM   TB_ORDER O
-						 JOIN  TB_ORDER_DETAIL OD      ON O.ORD_NO = OD.ORD_NO
-						 JOIN  TB_DELIVERY_ADDR DA     ON OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ AND OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ
-						 JOIN  TB_GOODS G              ON OD.GOODS_CD      = G.GOODS_CD
-						WHERE 1=1
-						<if test="delvGb != null and delvGb != ''">
-						AND    'D' = #{delvGb} -- 배송지시
-						</if>
-						<if test="stDate != null and stDate != ''">
-						AND    O.ORD_DT <![CDATA[>=]]> STR_TO_DATE(REPLACE(#{stDate},'-','') , '%Y%m%d%H%i%s')
-						</if>
-						<if test="edDate != null and edDate != ''">
-						AND    O.ORD_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','') , '%Y%m%d%H%i%s'), INTERVAL 1 DAY)
-						</if>
-						<if test="siteCd != null and siteCd != ''">
-						AND    O.SITE_CD = #{siteCd}
-						</if>
-						AND    OD.ORD_DTL_STAT = 'G013_50' -- 배송중
-						<if test="sendYn != null and sendYn != ''">
-						AND    OD.INVOICE_SEND_YN = #{sendYn}
-						</if>
-						AND    G.SELF_GOODS_YN = 'Y' -- 자사상품만
-
-						UNION ALL
-
-						SELECT DISTINCT
-						       '회수'                 AS DELV_GB_NM      -- 지시구분명
-						     , OC.WD_INVOICE_SEND_YN AS SEND_YN         -- 전송여부
-						     , O.SITE_CD                                -- 사이트코드
-						     , O.ORD_NO                                 -- 주문번호
-						     , OCD.ORD_DTL_NO                           -- 주문상세번호
-						     , OD.GOODS_CD                              -- 상품코드
-						     , G.GOODS_NM                               -- 상품명
-						     , D.RTN_LOC_NM          AS RECIP_NM        -- 수취인명
-						     , NULL                  AS RECIP_PHNNO     -- 수취인휴대전화번호
-						     , D.RTN_LOC_TELNO       AS RECIP_TELNO     -- 수취인전화번호
-						     , D.RTN_LOC_ZIPCODE     AS RECIP_POST_NO   -- 수취인우편번호
-						     , D.RTN_LOC_BASE_ADDR   AS RECIP_BASE_ADDR -- 수취인주소
-						     , D.RTN_LOC_DTL_ADDR    AS RECIP_DTL_ADDR  -- 수취인상세주소
-						     , O.ORD_NM                                 -- 주문자명
-						     , O.ORD_PHNNO                              -- 주문자휴대전화번호
-						     , O.ORD_TELNO                              -- 주문자전화번호
-						     , O.ORD_EMAIL                              -- 주문자이메일
-						FROM   TB_ORDER_CHANGE OC
-						JOIN   TB_ORDER_CHANGE_DETAIL OCD ON OC.ORD_CHG_SQ  = OCD.ORD_CHG_SQ
-						JOIN   TB_ORDER_DETAIL OD         ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
-						JOIN   TB_ORDER O                 ON OD.ORD_NO      = O.ORD_NO
-						JOIN   TB_GOODS G                 ON OD.GOODS_CD     = G.GOODS_CD
-						JOIN   TB_DELIVERY_LOC D          ON OD.DELV_LOC_CD = D.DELV_LOC_CD AND OD.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
-						WHERE  1=1
-						<if test="delvGb != null and delvGb != ''">
-						AND    'W' = #{delvGb} -- 회수지시
-						</if>
-						AND    OC.CHG_GB IN ('G680_30','G680_40') -- 반품요청,교환요청
-						<if test="sendYn != null and sendYn != ''">
-						AND    OC.WD_INVOICE_SEND_YN = #{sendYn}
-						</if>
-						<if test="stDate != null and stDate != ''">
-						AND    OC.REG_DT <![CDATA[>=]]> STR_TO_DATE(REPLACE(#{stDate},'-','') , '%Y%m%d%H%i%s')
-						</if>
-						<if test="edDate != null and edDate != ''">
-						AND    OC.REG_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','') , '%Y%m%d%H%i%s'), INTERVAL 1 DAY)
-						</if>
-						AND    OCD.CHG_STAT IN ('G685_30','G685_31') -- 회수요청 상품검수중
-						<if test="siteCd != null and siteCd != ''">
-						AND    O.SITE_CD = #{siteCd}
-						</if>
-						AND    G.SELF_GOODS_YN = 'Y' -- 자사상품만
-						AND    OCD.DEL_YN      = 'N'
-					) A
-				ORDER BY A.DELV_GB_NM, A.ORD_NO DESC, A.ORD_DTL_NO
+		        SELECT A.*
+		        FROM (
+		            SELECT DISTINCT 
+		                   '배송'                     AS DELV_GB_NM  -- 지시구분명
+		                 , OD.INVOICE_SEND_YN                 AS SEND_YN     -- 전송여부
+		                 , O.SITE_CD                                         -- 사이트코드
+		                 , O.ORD_NO                                          -- 주문번호
+		                 , OD.ORD_DTL_NO                                     -- 주문상세번호
+		                 , OD.GOODS_CD                                       -- 상품코드
+		                 , G.GOODS_NM                                        -- 상품명
+		                 , DA.RECIP_NM                                       -- 수취인명
+		                 , DA.RECIP_PHNNO                                    -- 수취인휴대전화번호
+		                 , DA.RECIP_TELNO                                    -- 수취인전화번호
+		                 , DA.RECIP_ZIPCODE                                  -- 수취인우편번호
+		                 , DA.RECIP_BASE_ADDR                                -- 수취인기본주소
+		                 , DA.RECIP_DTL_ADDR                                 -- 수취인상세주소
+		                 , O.ORD_NM                                          -- 주문자명
+		                 , O.ORD_PHNNO                                       -- 주문자휴대전화번호
+		                 , O.ORD_TELNO                                       -- 주문자전화번호
+		                 , O.ORD_EMAIL                                       -- 주문자이메일
+		            FROM   TB_ORDER O
+		            JOIN  TB_ORDER_DETAIL OD      ON O.ORD_NO = OD.ORD_NO
+		            JOIN  TB_DELIVERY_ADDR DA     ON OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ AND OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ
+		            JOIN  TB_GOODS G              ON OD.GOODS_CD      = G.GOODS_CD
+		            WHERE 1=1
+					<if test="delvGb != null and delvGb != ''">
+		            AND    'D' = #{delvGb} -- 배송지시
+					</if>
+					<if test="stDate != null and stDate != ''">
+		            AND    O.ORD_DT <![CDATA[>=]]> STR_TO_DATE(REPLACE(#{stDate},'-','') , '%Y%m%d%H%i%s')
+					</if>
+					<if test="edDate != null and edDate != ''">
+		            AND    O.ORD_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','') , '%Y%m%d%H%i%s'), INTERVAL 1 DAY)
+					</if>
+					<if test="siteCd != null and siteCd != ''">
+		            AND    O.SITE_CD = #{siteCd}
+					</if>
+		            AND    OD.ORD_DTL_STAT = 'G013_50' -- 배송중
+					<if test="sendYn != null and sendYn != ''">
+		            AND    OD.INVOICE_SEND_YN = #{sendYn}
+					</if>
+		            AND    G.SELF_GOODS_YN = 'Y' -- 자사상품만
+		            UNION  ALL
+		            SELECT DISTINCT
+		                   '회수'                 AS DELV_GB_NM      -- 지시구분명
+		                 , OC.WD_INVOICE_SEND_YN AS SEND_YN         -- 전송여부
+		                 , O.SITE_CD                                -- 사이트코드
+		                 , O.ORD_NO                                 -- 주문번호
+		                 , OCD.ORD_DTL_NO                           -- 주문상세번호
+		                 , OD.GOODS_CD                              -- 상품코드
+		                 , G.GOODS_NM                               -- 상품명
+		                 , D.RTN_LOC_NM          AS RECIP_NM        -- 수취인명
+		                 , NULL                  AS RECIP_PHNNO     -- 수취인휴대전화번호
+		                 , D.RTN_LOC_TELNO       AS RECIP_TELNO     -- 수취인전화번호
+		                 , D.RTN_LOC_ZIPCODE     AS RECIP_POST_NO   -- 수취인우편번호
+		                 , D.RTN_LOC_BASE_ADDR   AS RECIP_BASE_ADDR -- 수취인주소
+		                 , D.RTN_LOC_DTL_ADDR    AS RECIP_DTL_ADDR  -- 수취인상세주소
+		                 , O.ORD_NM                                 -- 주문자명
+		                 , O.ORD_PHNNO                              -- 주문자휴대전화번호
+		                 , O.ORD_TELNO                              -- 주문자전화번호
+		                 , O.ORD_EMAIL                              -- 주문자이메일
+		            FROM   TB_ORDER_CHANGE OC
+		            JOIN   TB_ORDER_CHANGE_DETAIL OCD ON OC.ORD_CHG_SQ  = OCD.ORD_CHG_SQ
+		            JOIN   TB_ORDER_DETAIL OD         ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+		            JOIN   TB_ORDER O                 ON OD.ORD_NO      = O.ORD_NO
+		            JOIN   TB_GOODS G                 ON OD.GOODS_CD     = G.GOODS_CD
+		            JOIN   TB_DELIVERY_LOC D          ON OD.DELV_LOC_CD = D.DELV_LOC_CD AND OD.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
+		            WHERE  1=1
+					<if test="delvGb != null and delvGb != ''">
+		            AND    'W' = #{delvGb} -- 회수지시
+					</if>
+		            AND    OC.CHG_GB IN ('G680_30','G680_40') -- 반품요청,교환요청
+					<if test="sendYn != null and sendYn != ''">
+		            AND    OC.WD_INVOICE_SEND_YN = #{sendYn}
+					</if>
+					<if test="stDate != null and stDate != ''">
+		            AND    OC.REG_DT <![CDATA[>=]]> STR_TO_DATE(REPLACE(#{stDate},'-','') , '%Y%m%d%H%i%s')
+					</if>
+					<if test="edDate != null and edDate != ''">
+		            AND    OC.REG_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','') , '%Y%m%d%H%i%s'), INTERVAL 1 DAY)
+					</if>
+		            AND    OCD.CHG_STAT IN ('G685_30','G685_31') -- 회수요청 상품검수중
+					<if test="siteCd != null and siteCd != ''">
+		            AND    O.SITE_CD = #{siteCd}
+					</if>
+		            AND    G.SELF_GOODS_YN = 'Y' -- 자사상품만
+		            AND    OCD.DEL_YN      = 'N'
+		        ) A
+		        ORDER  BY A.DELV_GB_NM
+		             , A.ORD_NO DESC
+		             , A.ORD_DTL_NO
 				<include refid="getListPagingCondition_sql"/>
 	</select>
 
@@ -1087,7 +1082,8 @@
 	<!-- 출고처지정 임시 테이블 삭제    -->
 	<delete id="deleteTbDeliveryLocTmp" parameterType="Delivery"  >
 		/*TsaDelivery.deleteTbDeliveryLocTmp*/
-		DELETE FROM TB_DELIVERY_LOC_TMP WHERE USE_GB = #{useGb}
+		DELETE FROM TB_DELIVERY_LOC_TMP 
+		WHERE  USE_GB = #{useGb}
 	</delete>
 
 	<!-- 출고처지정 임시테이블 등록  -->

+ 188 - 148
src/main/java/com/style24/persistence/mybatis/shop/TsaWithdraw.xml

@@ -679,17 +679,17 @@
 		         , Y.ORD_DTL_NO
 		         , Y.GOODS_CD
 		    FROM (
-		    SELECT O.ORD_NO                                 -- 주문번호
-		         , OCD.ORD_DTL_NO                           -- 주문상세번호
-		         , OD.GOODS_CD                              -- 상품코드
-		    FROM   TB_ORDER_CHANGE OC          
-		    JOIN   TB_ORDER_CHANGE_DETAIL OCD ON OC.ORD_CHG_SQ  = OCD.ORD_CHG_SQ 
-		    JOIN   TB_ORDER_DETAIL OD         ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
-		    JOIN   TB_ORDER O                 ON OD.ORD_NO      = O.ORD_NO
-		    JOIN   TB_GOODS G                 ON OD.GOODS_CD     = G.GOODS_CD
-		    JOIN   TB_DELIVERY_LOC D          ON OD.DELV_LOC_CD = D.DELV_LOC_CD AND OD.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
-		    JOIN   TB_ORDER_DETAIL_ITEM ODI   ON OD.ORD_DTL_NO  = ODI.ORD_DTL_NO
-		    WHERE  1=1 
+		        SELECT O.ORD_NO                                 -- 주문번호
+		             , OCD.ORD_DTL_NO                           -- 주문상세번호
+		             , OD.GOODS_CD                              -- 상품코드
+		        FROM   TB_ORDER_CHANGE OC          
+		        JOIN   TB_ORDER_CHANGE_DETAIL OCD ON OC.ORD_CHG_SQ  = OCD.ORD_CHG_SQ 
+		        JOIN   TB_ORDER_DETAIL OD         ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+		        JOIN   TB_ORDER O                 ON OD.ORD_NO      = O.ORD_NO
+		        JOIN   TB_GOODS G                 ON OD.GOODS_CD     = G.GOODS_CD
+		        JOIN   TB_DELIVERY_LOC D          ON OD.DELV_LOC_CD = D.DELV_LOC_CD AND OD.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
+		        JOIN   TB_ORDER_DETAIL_ITEM ODI   ON OD.ORD_DTL_NO  = ODI.ORD_DTL_NO
+		        WHERE  1=1 
 			<include refid="getWithdrawDirectiveCondition_sql"/>
 			) Y
 			GROUP  BY Y.ORD_NO
@@ -928,9 +928,9 @@
 	<update id="updateReRecallOrder" parameterType="Withdraw" >
 		/* TsaWithdraw.updateReRecallOrder */
 		UPDATE TB_ORDER_CHANGE_DETAIL SET
-		  CHG_STAT = #{chgStat}
-		, UPD_NO   = #{updNo}
-		, UPD_DT   = NOW()
+		       CHG_STAT = #{chgStat}
+		     , UPD_NO   = #{updNo}
+		     , UPD_DT   = NOW()
 		WHERE ORD_CHG_SQ = #{ordChgSq} 
 	</update>
 
@@ -938,157 +938,193 @@
 	<update id="updateReRecallOrderChange" parameterType="Withdraw" >
 		/* TsaWithdraw.updateReRecallOrderChange */
 		UPDATE TB_ORDER_CHANGE SET 
-			  WD_SHIP_STATE = '99'
-			, UPD_NO        = #{updNo}
-			, UPD_DT        = NOW()
+		       WD_SHIP_STATE = '99'
+		     , UPD_NO        = #{updNo}
+		     , UPD_DT        = NOW()
 		WHERE ORD_CHG_SQ = #{ordChgSq} 
-
-
 	</update>
 	
 	<!-- 회수예외 사유변경 목록 -->
 	<select id="getWithdrawExceptionChangeList" parameterType="WithdrawExc" resultType="WithdrawExc">
 		/* TsaWithdraw.getWithdrawExceptionChangeList */
-		SELECT 
-			  A.ORD_CHG_SQ 
-			, C.ORD_NO 
-			, B.ORD_DTL_NO
-			, FN_GET_CODE_NM('G685', B.CHG_STAT)  AS CHG_STAT_NM
-			, A.REG_DT 
-			, A.CHGER_NM 
-			, A.CHGER_PHNNO 
-			, (SELECT G.GOODS_NM FROM TB_GOODS G WHERE G.GOODS_CD = C.ITEM_CD) AS GOODS_NM
-			, C.ITEM_CD  AS GOODS_CD 
-			, D.SKU_VALUE AS OPT_CD 
-			, B.CHG_QTY 
-			, IFNULL((SELECT GROUP_CONCAT(ADMIN_MEMO ORDER BY RECALL_EXCEPTION_MEMO_NO ) 
-						FROM TB_ORDER_RECALL_EXCEPTION_MEMO M WHERE M.RECALL_EXCEPTION_NO = D.RECALL_EXCEPTION_NO  AND ADMIN_MEMO !='.'),'-') AS ADMIN_MEMO -- WMS메시지
-			, A.CHG_GB 
-			, A.CHG_REASON 
-			, A.CHG_MEMO
-			, P.DELV_FEE
-			, P.RTN_DELV_FEE 
-			, B.CHG_STAT
-			, A.WD_GB 
-			, OD.DELV_FEE_CD 
-			, (SELECT O.CUST_NO FROM TB_ORDER O WHERE O.ORD_NO = OD.ORD_NO) AS CUST_NO
+		SELECT A.ORD_CHG_SQ 
+		     , C.ORD_NO 
+		     , B.ORD_DTL_NO
+		     , FN_GET_CODE_NM('G685', B.CHG_STAT)  AS CHG_STAT_NM
+		     , A.REG_DT 
+		     , A.CHGER_NM 
+		     , A.CHGER_PHNNO 
+		     , (SELECT G.GOODS_NM FROM TB_GOODS G WHERE G.GOODS_CD = C.ITEM_CD) AS GOODS_NM
+		     , C.ITEM_CD  AS GOODS_CD 
+		     , D.SKU_VALUE AS OPT_CD 
+		     , B.CHG_QTY 
+		     , IFNULL((SELECT GROUP_CONCAT(ADMIN_MEMO ORDER BY RECALL_EXCEPTION_MEMO_NO ) 
+		               FROM   TB_ORDER_RECALL_EXCEPTION_MEMO M 
+		               WHERE  M.RECALL_EXCEPTION_NO = D.RECALL_EXCEPTION_NO  
+		               AND    ADMIN_MEMO !='.'),'-') AS ADMIN_MEMO -- WMS메시지
+		     , A.CHG_GB 
+		     , A.CHG_REASON 
+		     , A.CHG_MEMO
+		     , P.DELV_FEE
+		     , P.RTN_DELV_FEE 
+		     , B.CHG_STAT
+		     , A.WD_GB 
+		     , OD.DELV_FEE_CD 
+		     , (SELECT O.CUST_NO FROM TB_ORDER O WHERE O.ORD_NO = OD.ORD_NO) AS CUST_NO
 		  FROM TB_ORDER_CHANGE A
-		  JOIN TB_ORDER_CHANGE_DETAIL B ON A.ORD_CHG_SQ = B.ORD_CHG_SQ 
-		  JOIN TB_ORDER_DETAIL       OD ON B.ORD_DTL_NO = OD.ORD_DTL_NO 
-		  JOIN TB_ORDER_DETAIL_ITEM   C ON OD.ORD_DTL_NO  = C.ORD_DTL_NO  
-		  JOIN TB_ORDER_RECALL_EXCEPTION_ITEM D ON C.ORD_DTL_NO = D.ORDER_DTL_NO 
-		  JOIN TB_DELV_FEE_POLICY     P ON OD.DELV_FEE_CD = P.DELV_FEE_CD 
-		                                  AND OD.SUPPLY_COMP_CD = P.SUPPLY_COMP_CD 
+		  JOIN TB_ORDER_CHANGE_DETAIL B           ON A.ORD_CHG_SQ = B.ORD_CHG_SQ 
+		  JOIN TB_ORDER_DETAIL       OD           ON B.ORD_DTL_NO = OD.ORD_DTL_NO 
+		  JOIN TB_ORDER_DETAIL_ITEM   C           ON OD.ORD_DTL_NO  = C.ORD_DTL_NO  
+		  JOIN TB_ORDER_RECALL_EXCEPTION_ITEM D   ON C.ORD_DTL_NO = D.ORDER_DTL_NO 
+		  JOIN TB_DELV_FEE_POLICY     P           ON OD.DELV_FEE_CD = P.DELV_FEE_CD AND OD.SUPPLY_COMP_CD = P.SUPPLY_COMP_CD 
 		 WHERE A.ORD_CHG_SQ = #{ordChgSq}
 	</select>
 	
 	<!-- 주문변경사유 변경 -->
 	<update id="updateChangeReason" parameterType="WithdrawExc" >
 		/* TsaWithdraw.updateChangeReason */
-		UPDATE TB_ORDER_CHANGE SET
-			  CHG_REASON   = #{chgReason} 
-			, ADD_PAY_COST = CASE WHEN #{chgReason} IN ('G688_10','G689_10') THEN #{addPayCost} ELSE 0 END 
-			, CHG_MEMO     = #{chgMemo}
-			, UPD_NO       = #{updNo}
-			, UPD_DT       = NOW()
-		WHERE ORD_CHG_SQ  = #{ordChgSq}
+		UPDATE TB_ORDER_CHANGE 
+		SET    CHG_REASON   = #{chgReason} 
+		     , ADD_PAY_COST = CASE WHEN #{chgReason} IN ('G688_10','G689_10') THEN #{addPayCost} ELSE 0 END 
+		     , CHG_MEMO     = #{chgMemo}
+		     , UPD_NO       = #{updNo}
+		     , UPD_DT       = NOW()
+		WHERE  ORD_CHG_SQ  = #{ordChgSq}
 	</update>
 	
 	<!-- 주문변경상세상태변경 -->
 	<update id="updateChangeStat" parameterType="WithdrawExc" >
 		/* TsaWithdraw.updateChangeStat */
-		UPDATE TB_ORDER_CHANGE_DETAIL SET
-			  CHG_STAT = #{chgStat}
-			, UPD_NO   = #{updNo}
-			, UPD_DT   = NOW()
-		WHERE ORD_CHG_SQ = #{ordChgSq}
-		  AND ORD_DTL_NO = #{ordDtlNo}
-  
+		UPDATE TB_ORDER_CHANGE_DETAIL 
+		SET    CHG_STAT = #{chgStat}
+		     , UPD_NO   = #{updNo}
+		     , UPD_DT   = NOW()
+		WHERE  ORD_CHG_SQ = #{ordChgSq}
+		AND    ORD_DTL_NO = #{ordDtlNo}
 	</update>	
 	
 	<!-- 환불컨펌상세 목록  -->
 	<select id="getRefundDetailList" parameterType="Withdraw" resultType="Withdraw">
 		/* TsaWithdraw.getRefundDetailList */
-		SELECT
-				  CASE WHEN A.WD_GB ='W' THEN '회수요청' ELSE '직접배송' END AS WD_GB_NM -- 회수구분 
-				, B.CHG_STAT  
-				, CASE WHEN F.ARRIVAL_DT IS NULL THEN  DATE_FORMAT(F.REG_DT, '%Y-%m-%d') ELSE DATE_FORMAT(F.ARRIVAL_DT, '%Y-%m-%d') END AS ARRIVAL_DT-- 도착일자 
-				, FN_GET_CODE_NM('G688', A.CHG_REASON) AS CHG_REASON_NM   -- 최종요청사유 G688
-				, A.CHG_REASON
-				, CASE WHEN A.CHG_REASON = 'G688_10' THEN '고객' ELSE '회사' END AS CHG_REASON_TEXT -- 귀책사유 
-				, F.ENCLOSE_FEE  -- 동봉비 
-				, F.COD_FEE      -- 착불비
-				, IFNULL((SELECT P.PAY_AMT FROM TB_PAYMENT P WHERE P.ORD_CHG_SQ = A.ORD_CHG_SQ AND P.PAY_GB ='D' AND P.PAY_STAT = 'G016_30'),0) AS ADD_PAY_COST -- 추가결제비용 
-				, IFNULL(A.CHG_MEMO, '') AS CHG_MEMO     -- 클레임메모 
-				, IFNULL(F.WD_MEMO,'') AS WD_MEMO      -- WMS회수메모 
-				, A.WD_GB  -- 회수구분(W:회수요청, D:직접배송) 
-				, E.ORD_NO -- 주문번호
-				, D.ORD_DTL_NO -- 주문상세번호 
-				, (SELECT S.GOODS_NM FROM TB_GOODS S WHERE S.GOODS_CD = C.GOODS_CD) AS GOODS_NM -- 상품명
-				, D.ITEM_CD  AS GOODS_CD -- 상품코드
-				, D.OPT_CD
-				, D.OPT_CD1 -- 옵션1 
-				, D.OPT_CD2 -- 옵션2
-				-- , B.CHG_QTY * D.ITEM_QTY AS CHG_QTY-- 신청수량 
-				, B.CHG_QTY AS CHG_QTY-- 신청수량 
-				, G.WD_QTY -- 회수수량 
-				, CASE WHEN B.CHG_STAT = 'G685_60' THEN '환불완료' ELSE '환불대기' END AS WD_STAT  -- 환불컨펌상태 
-				, CASE WHEN B.CHG_STAT = 'G685_60' THEN 'Y' ELSE 'N' END AS WD_STAT_YN   
-				, A.ORD_CHG_SQ -- 주분변경번호 환불컨펌  
-				, DATE_FORMAT(G.REG_DT, '%Y-%m-%d') AS REG_DT  -- 등록일 
-				, E.MALL_GB 
- 				-- , (SELECT SUM((OD.ORD_QTY - OD.CNCL_RTN_QTY) * DI.ITEM_QTY)  FROM TB_ORDER_DETAIL OD JOIN TB_ORDER_DETAIL_ITEM DI ON OD.ORD_NO = DI.ORD_NO AND OD.ORD_DTL_NO = DI.ORD_DTL_NO WHERE OD.ORD_NO= E.ORD_NO AND OD.ORD_DTL_STAT NOT IN ('G013_00','G013_97','G013_98','G013_99')) AS  TOTAL_ORD_QTY -- 주문 총수량  
-				, (SELECT SUM(OD.ORD_QTY) FROM TB_ORDER_DETAIL OD WHERE OD.ORD_NO= E.ORD_NO) AS  TOTAL_ORD_QTY -- 주문 총수량
-				, CASE WHEN (SELECT COUNT(*) FROM TB_ORDER_RECALL_EXCEPTION_ITEM EI  WHERE EI.ORDER_DTL_NO = D.ORD_DTL_NO AND EI.REASON_CODE IN('09','11')) > 0 THEN 'Y' ELSE 'N' END AS DELV_EXPN_YN
-				, CA.RA_NO AS ACCOUNT_NO 
-				, CA.RA_NM AS ACCOUNT_NM 
-				, CA.RA_BANK AS BANK_CD 
-				, E.ORD_NM 	
-				, C.DELV_ADDR_SQ
-				, F.WD_INVOICE_NO 
-				, (SELECT R.REFUND_AMT FROM TB_REFUND R WHERE R.ORD_NO = E.ORD_NO AND R.ORD_CHG_SQ = A.ORD_CHG_SQ ) AS REFUND_AMT
-				, E.CUST_NO
-				, P.PG_GB
-				, FN_GET_CODE_NM('G014', P.PAY_MEANS) AS PAY_MEANS_NM
-				, P.CARD_NM
-				, C.DELV_FEE_CD
+		SELECT CASE WHEN A.WD_GB ='W' 
+		            THEN '회수요청' 
+		            ELSE '직접배송' 
+		            END AS WD_GB_NM -- 회수구분 
+		     , B.CHG_STAT  
+		     , CASE WHEN F.ARRIVAL_DT IS NULL 
+		            THEN DATE_FORMAT(F.REG_DT, '%Y-%m-%d') 
+		            ELSE DATE_FORMAT(F.ARRIVAL_DT, '%Y-%m-%d') 
+		            END AS ARRIVAL_DT-- 도착일자 
+		     , FN_GET_CODE_NM('G688', A.CHG_REASON) AS CHG_REASON_NM   -- 최종요청사유 G688
+		     , A.CHG_REASON
+		     , CASE WHEN A.CHG_REASON = 'G688_10' 
+		            THEN '고객' 
+		            ELSE '회사' 
+		            END AS CHG_REASON_TEXT -- 귀책사유 
+		     , F.ENCLOSE_FEE  -- 동봉비 
+		     , F.COD_FEE      -- 착불비
+		     , IFNULL((SELECT P.PAY_AMT 
+		               FROM   TB_PAYMENT P 
+		               WHERE  P.ORD_CHG_SQ = A.ORD_CHG_SQ 
+		               AND    P.PAY_GB ='D' 
+		               AND    P.PAY_STAT = 'G016_30'),0) AS ADD_PAY_COST -- 추가결제비용 
+		     , IFNULL(A.CHG_MEMO, '') AS CHG_MEMO     -- 클레임메모 
+		     , IFNULL(F.WD_MEMO,'') AS WD_MEMO      -- WMS회수메모 
+		     , A.WD_GB  -- 회수구분(W:회수요청, D:직접배송) 
+		     , E.ORD_NO -- 주문번호
+		     , D.ORD_DTL_NO -- 주문상세번호 
+		     , (SELECT S.GOODS_NM 
+		        FROM   TB_GOODS S 
+		        WHERE  S.GOODS_CD = C.GOODS_CD) AS GOODS_NM -- 상품명
+		     , D.ITEM_CD  AS GOODS_CD -- 상품코드
+		     , D.OPT_CD
+		     , D.OPT_CD1 -- 옵션1 
+		     , D.OPT_CD2 -- 옵션2 
+		     , B.CHG_QTY -- 신청수량 
+		     , G.WD_QTY -- 회수수량 
+		     , CASE WHEN B.CHG_STAT = 'G685_60' 
+		            THEN '환불완료' 
+		            ELSE '환불대기' 
+		            END AS WD_STAT  -- 환불컨펌상태 
+		     , CASE WHEN B.CHG_STAT = 'G685_60' 
+		            THEN 'Y' 
+		            ELSE 'N' END AS WD_STAT_YN   
+		     , A.ORD_CHG_SQ -- 주분변경번호 환불컨펌  
+		     , DATE_FORMAT(G.REG_DT, '%Y-%m-%d') AS REG_DT  -- 등록일 
+		     , E.MALL_GB   
+		     , (SELECT SUM(OD.ORD_QTY) 
+		        FROM   TB_ORDER_DETAIL OD 
+		        WHERE  OD.ORD_NO= E.ORD_NO) AS  TOTAL_ORD_QTY -- 주문 총수량
+		     , CASE WHEN (SELECT COUNT(1) 
+		                  FROM   TB_ORDER_RECALL_EXCEPTION_ITEM EI  
+		                  WHERE  EI.ORDER_DTL_NO = D.ORD_DTL_NO 
+		                  AND    EI.REASON_CODE IN('09','11')) > 0 
+		            THEN 'Y' 
+		            ELSE 'N' 
+		            END AS DELV_EXPN_YN
+		     , CA.RA_NO AS ACCOUNT_NO 
+		     , CA.RA_NM AS ACCOUNT_NM 
+		     , CA.RA_BANK AS BANK_CD 
+		     , E.ORD_NM 	
+		     , C.DELV_ADDR_SQ
+		     , F.WD_INVOICE_NO 
+		     , (SELECT R.REFUND_AMT 
+		        FROM   TB_REFUND R 
+		        WHERE  R.ORD_NO = E.ORD_NO 
+		        AND    R.ORD_CHG_SQ = A.ORD_CHG_SQ ) AS REFUND_AMT
+		     , E.CUST_NO
+		     , P.PG_GB
+		     , FN_GET_CODE_NM('G014', P.PAY_MEANS) AS PAY_MEANS_NM
+		     , P.CARD_NM
+		     , C.DELV_FEE_CD
+		     , D.ORD_AMT
+		     , D.CNCL_RTN_AMT
+		     , D.CPN1_DC_AMT
+		     , D.TMTB1_DC_AMT
+		     , D.TMTB2_DC_AMT
+		     , D.GOODS_CPN_DC_AMT
+		     , D.CART_CPN_DC_AMT
+		     , D.PNT_DC_AMT
+		     , D.PRE_PNT_DC_AMT
+		     , D.SAVE_PNT_AMT
+		     , D.REAL_ORD_AMT
+		     , D.GFCD_USE_AMT
 		  FROM TB_ORDER_CHANGE A
-		  JOIN TB_ORDER_CHANGE_DETAIL B ON B.ORD_CHG_SQ = A.ORD_CHG_SQ 
-		  JOIN TB_ORDER_DETAIL C ON C.ORD_DTL_NO = B.ORD_DTL_NO 
-		  JOIN TB_ORDER_DETAIL_ITEM D ON D.ORD_NO = C.ORD_NO AND D.ORD_DTL_NO = C.ORD_DTL_NO 
-		  JOIN TB_ORDER E             ON E.ORD_NO = C.ORD_NO 
-		  JOIN TB_WITHDRAW F ON F.ORD_CHG_SQ = A.ORD_CHG_SQ
-		  JOIN TB_PAYMENT P ON E.ORD_NO = P.ORD_NO AND P.PAY_GB = 'O' AND P.PAY_STAT = 'G016_30'
-		  LEFT OUTER JOIN TB_WITHDRAW_DETAIL G ON G.WD_INVOICE_NO = F.WD_INVOICE_NO AND G.ORD_CHG_SQ = F.ORD_CHG_SQ AND D.ITEM_CD = G.GOODS_CD AND D.OPT_CD1 = G.OPT_CD1  AND D.OPT_CD2 = G.OPT_CD2 
-		  LEFT OUTER JOIN TB_REFUND CA ON CA.ORD_NO = E.ORD_NO AND CA.ORD_CHG_SQ = A.ORD_CHG_SQ
-		 WHERE A.ORD_CHG_SQ  = #{ordChgSq}
+		  JOIN TB_ORDER_CHANGE_DETAIL B           ON B.ORD_CHG_SQ = A.ORD_CHG_SQ 
+		  JOIN TB_ORDER_DETAIL C                  ON C.ORD_DTL_NO = B.ORD_DTL_NO 
+		  JOIN TB_ORDER_DETAIL_ITEM D             ON D.ORD_NO = C.ORD_NO AND D.ORD_DTL_NO = C.ORD_DTL_NO 
+		  JOIN TB_ORDER E                         ON E.ORD_NO = C.ORD_NO 
+		  JOIN TB_WITHDRAW F                      ON F.ORD_CHG_SQ = A.ORD_CHG_SQ
+		  JOIN TB_PAYMENT P                       ON E.ORD_NO = P.ORD_NO AND P.PAY_GB = 'O' AND P.PAY_STAT = 'G016_30'
+		  LEFT OUTER JOIN TB_WITHDRAW_DETAIL G    ON G.WD_INVOICE_NO = F.WD_INVOICE_NO AND G.ORD_CHG_SQ = F.ORD_CHG_SQ AND D.ITEM_CD = G.GOODS_CD AND D.OPT_CD1 = G.OPT_CD1  AND D.OPT_CD2 = G.OPT_CD2 
+		  LEFT OUTER JOIN TB_REFUND CA            ON CA.ORD_NO = E.ORD_NO AND CA.ORD_CHG_SQ = A.ORD_CHG_SQ
+		 WHERE 1=1
+		   AND A.ORD_CHG_SQ  = #{ordChgSq}
 		   AND A.CHG_GB = 'G680_30' -- 반품요청
-		   AND B.CHG_STAT IN('G685_33','G685_60')		
+		   AND B.CHG_STAT IN('G685_33','G685_60')
 	</select>	
 	
 	<!-- 주문변경번호 상세 조회  -->
 	<select id="getOrdChgDtlList" parameterType="Withdraw" resultType="Withdraw">
 		/* TsaWithdraw.getOrdChgDtlList */
-		SELECT  
-			  ORD_CHG_SQ 
-			, ORD_DTL_NO 
-			, CHG_STAT 
-		FROM TB_ORDER_CHANGE_DETAIL
-		WHERE ORD_CHG_SQ = #{ordChgSq}
-		  AND DEL_YN     = 'N'
+		SELECT ORD_CHG_SQ 
+		     , ORD_DTL_NO 
+		     , CHG_STAT 
+		FROM   TB_ORDER_CHANGE_DETAIL
+		WHERE  ORD_CHG_SQ = #{ordChgSq}
+		AND    DEL_YN     = 'N'
 	</select>	
 		
 	<!-- 반품알림톡 정보 조회  -->
 	<select id="getRefundInfo" parameterType="Withdraw" resultType="Withdraw">
 		/* TsaWithdraw.getRefundInfo */
-		SELECT
-			  D.ORD_NO 
-			, D.CUST_NO 
-			, D.ORD_PHNNO 
-			, D.ORD_NM 
-			, (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD= MAX(C.GOODS_CD))  AS GOODS_NM
-			, COUNT(C.GOODS_CD) -1 AS GOODS_CNT
-			, E.REFUND_AMT 
+		SELECT D.ORD_NO 
+		     , D.CUST_NO 
+		     , D.ORD_PHNNO 
+		     , D.ORD_NM 
+		     , (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD= MAX(C.GOODS_CD))  AS GOODS_NM
+		     , COUNT(C.GOODS_CD) -1 AS GOODS_CNT
+		     , E.REFUND_AMT 
 		  FROM TB_ORDER_CHANGE A
 		  JOIN TB_ORDER_CHANGE_DETAIL B ON A.ORD_CHG_SQ = B.ORD_CHG_SQ 
 		  JOIN TB_ORDER_DETAIL C        ON B.ORD_DTL_NO = C.ORD_DTL_NO 
@@ -1096,40 +1132,44 @@
 		  JOIN TB_REFUND       E        ON E.ORD_NO     = D.ORD_NO AND E.ORD_CHG_SQ = A.ORD_CHG_SQ 
 		 WHERE A.ORD_CHG_SQ = #{ordChgSq}
 		   AND B.DEL_YN ='N'
-		 GROUP BY D.ORD_NO, D.CUST_NO, D.ORD_PHNNO, D.ORD_NM, E.REFUND_AMT  
-		 
- 
+		 GROUP BY D.ORD_NO
+		     , D.CUST_NO
+		     , D.ORD_PHNNO
+		     , D.ORD_NM
+		     , E.REFUND_AMT
 	</select>			
 	
 	<!-- 회수철회알림톡 정보 조회  -->
 	<select id="getWithdrawInfo" parameterType="Withdraw" resultType="Withdraw">
 		/* TsaWithdraw.getWithdrawInfo */
-		SELECT
-			  D.ORD_NO 
-			, D.CUST_NO 
-			, A.CHGER_PHNNO AS ORD_PHNNO 
-			, A.CHGER_NM    AS ORD_NM 
-			, (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD= MAX(C.GOODS_CD))  AS GOODS_NM
-			, COUNT(C.GOODS_CD) -1 AS GOODS_CNT
-			, CONCAT(A.CHGER_BASE_ADDR,' ', A.CHGER_DTL_ADDR) AS CHGER_BASE_ADDR 
+		SELECT D.ORD_NO 
+		     , D.CUST_NO 
+		     , A.CHGER_PHNNO AS ORD_PHNNO 
+		     , A.CHGER_NM    AS ORD_NM 
+		     , (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD= MAX(C.GOODS_CD))  AS GOODS_NM
+		     , COUNT(C.GOODS_CD) -1 AS GOODS_CNT
+		     , CONCAT(A.CHGER_BASE_ADDR,' ', A.CHGER_DTL_ADDR) AS CHGER_BASE_ADDR 
 		  FROM TB_ORDER_CHANGE A
 		  JOIN TB_ORDER_CHANGE_DETAIL B ON A.ORD_CHG_SQ = B.ORD_CHG_SQ 
 		  JOIN TB_ORDER_DETAIL C        ON B.ORD_DTL_NO = C.ORD_DTL_NO 
 		  JOIN TB_ORDER        D        ON C.ORD_NO     = D.ORD_NO 
 		 WHERE A.ORD_CHG_SQ = #{ordChgSq}
 		   AND B.DEL_YN ='N'
-		 GROUP BY D.ORD_NO, D.CUST_NO, D.ORD_PHNNO, D.ORD_NM, A.CHGER_BASE_ADDR, A.CHGER_DTL_ADDR
-		
+		 GROUP BY D.ORD_NO
+		     , D.CUST_NO
+		     , D.ORD_PHNNO
+		     , D.ORD_NM
+		     , A.CHGER_BASE_ADDR
+		     , A.CHGER_DTL_ADDR
 	</select>			
 	
 	<!-- 회수예외 처리완료-->
 	<update id="updateCsMemo" parameterType="WithdrawExc" >
 		/* TsaWithdraw.updateCsMemo */
-		UPDATE TB_ORDER_RECALL_EXCEPTION SET
-		  CS_ADD_FEE     = #{csAddFee}
-		, CS_MEMO        = #{csMemo}
-		WHERE RECALL_EXCEPTION_NO = #{recallExceptionNo}
-
+		UPDATE TB_ORDER_RECALL_EXCEPTION 
+		SET    CS_ADD_FEE     = #{csAddFee}
+		     , CS_MEMO        = #{csMemo}
+		WHERE  RECALL_EXCEPTION_NO = #{recallExceptionNo}
 	</update>	
 		
 </mapper>

+ 10 - 1
src/main/webapp/WEB-INF/views/customer/CustomerActiveListForm.html

@@ -156,6 +156,8 @@
 				</li>
 			</ul>
 		</div>
+		
+		<a href="javascript:void(0);" id="ExcelList" style="display: none;">엑셀다운로드</a>
 		</form>
 	</div>
 </div>
@@ -330,7 +332,14 @@
 
 	// 엑셀다운로드
 	$('#btnExcel').on('click', function() {
-		gagaAgGrid.exportToExcel('활동회원 목록', gridOptions);
+		var formId = '#custActiveForm';
+		if (gridOptions.api.getDisplayedRowCount() <= 0){
+			mcxDialog.alert("조회된 데이터가 없습니다.<br/>다시 조회 후 다운로드 받으세요.");
+			return;
+		}
+		
+		var params =  $(formId).serialize();
+		$('#ExcelList').attr({ href : '/customer/active/excel/list?' + params }).get(0).click();
 	});
 	
 	$(document).ready(function() {

+ 9 - 1
src/main/webapp/WEB-INF/views/customer/CustomerDormantListForm.html

@@ -106,6 +106,7 @@
 				</ul>
 			</div>
 			<!-- //리스트 영역 -->
+			<a href="javascript:void(0);" id="ExcelList" style="display: none;">엑셀다운로드</a>
 		</form>
 	</div>
 </div>
@@ -268,7 +269,14 @@
 
 	// 엑셀다운로드
 	$('#btnExcel').on('click', function() {
-		gagaAgGrid.exportToExcel('휴면회원 목록', gridOptions);
+		var formId = '#custDormantForm';
+		if (gridOptions.api.getDisplayedRowCount() <= 0){
+			mcxDialog.alert("조회된 데이터가 없습니다.<br/>다시 조회 후 다운로드 받으세요.");
+			return;
+		}
+		
+		var params =  $(formId).serialize();
+		$('#ExcelList').attr({ href : '/customer/dormant/excel/list?' + params }).get(0).click();
 	});
 	
 	$(document).ready(function() {

+ 9 - 1
src/main/webapp/WEB-INF/views/customer/CustomerSecedeListForm.html

@@ -112,6 +112,7 @@
 			</ul>
 		</div>
 		<!-- //리스트 영역 -->
+		<a href="javascript:void(0);" id="ExcelList" style="display: none;">엑셀다운로드</a>
 	</form>
 </div>
 <script type="text/javascript" th:src="@{'/ux/plugins/gaga/gaga.paging.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/ux/plugins/gaga/gaga.paging.js"></script>
@@ -272,7 +273,14 @@
 
 	// 엑셀다운로드
 	$('#btnExcel').on('click', function() {
-		gagaAgGrid.exportToExcel('탈퇴회원 목록', gridOptions);
+		var formId = '#custSecedeForm';
+		if (gridOptions.api.getDisplayedRowCount() <= 0){
+			mcxDialog.alert("조회된 데이터가 없습니다.<br/>다시 조회 후 다운로드 받으세요.");
+			return;
+		}
+		
+		var params =  $(formId).serialize();
+		$('#ExcelList').attr({ href : '/customer/secede/excel/list?' + params }).get(0).click();
 	});
 	
 	$(document).ready(function() {

+ 25 - 53
src/main/webapp/WEB-INF/views/order/CnclReqForm.html

@@ -235,56 +235,6 @@
 					</tbody>
 				</table>
 				
-				<!-- 
-				<h4>환불예정금액</h4>
-				<table class="frmStyle">
-					<colgroup>
-						<col style="width:20%;"/>
-						<col style="width:30%;"/>
-						<col style="width:20%;"/>
-						<col style="width:30%;"/>
-					</colgroup>
-					<tbody>
-						<tr>
-							<th>총 결제 금액</th>
-							<td colspan="3"><span id="spanPayAmt"></span>원 (상품 실결제 금액 : <span id="spanSumRealOrdAmt"></span>원, 배송금액 : <span id="spanSumDeliveryFee"></span>원) </td>
-						</tr>
-						<tr>
-							<th>상품 주문 금액</th>
-							<td><span id="spanOrdAmt"></span>원</td>
-							<th>상품 취소 금액</th>
-							<td><span id="spanCnclRtnAmt"></span>원</td>
-						</tr>
-						<tr>
-							<th>포인트 취소 금액</th>
-							<td colspan="3"><span id="spanTotPntDcAmt"></span>원 (고객 포인트 : <span id="spanPntDcAmt"></span>원 + 상품 선포인트 : <span id="spanPrePntDcAmt"></span>원) </td>
-						</tr>
-						<tr>
-							<th>쿠폰 취소 금액</th>
-							<td colspan="3"><span id="spanCpnDcAmt"></span>원 (즉시할인쿠폰 : <span id="spanCpn1DcAmt"></span>원 + 상품쿠폰 : <span id="spanGoodsCpnDcAmt"></span>원 + 장바구니쿠폰 : <span id="spanCartCpnDcAmt"></span>원 + 배송비쿠폰 : <span id="spanDelvCpnDcAmt"></span>원)</td>
-						</tr>
-						<tr>
-							<th>다다익선 취소 금액</th>
-							<td colspan="3"><span id="spanTmtbDcAmt"></span>원 (수량할인 : <span id="spanTmtb1DcAmt"></span>원 + 금액할인 : <span id="spanTmtb2DcAmt"></span>원)</td>
-						</tr>
-						<tr>
-							<th>상품권 취소 금액</th>
-							<td colspan="3"><span id="spanGfcdUseAmt"></span>원</td>
-						</tr>
-						<tr>
-							<th>상품 실결제 취소 금액</th>
-							<td><span id="spanRealCnclRtnAmt"></span>원</td>
-							<th>환불 배송비 금액</th>
-							<td><span id="spanRealDelvAmt"></span>원</td>
-						</tr>
-						<tr>
-							<th>환불 예정 금액</th>
-							<td colspan="3"><span id="spanRefundAmt"></span>원</td>
-						</tr>
-					</tbody>
-				</table>
-				 -->
-				
 				<div id="refundAccount" style="width:100%">
 					<h4>환불계좌정보</h4>
 					<button type="button" id="btnSaveAccount" class="btn btnRight btn-base btn-sm" style="margin-left:10px;" onclick="fnCreateOrderRfAccount();">등록</button>
@@ -365,12 +315,11 @@ var columnCancelReqList = [
 	{headerName: "주문번호"		, field: "ordNo"			, width: 80		, cellClass: 'text-center'	, hide: temp1},
 	{headerName: "주문상세"		, field: "ordDtlNo"			, width: 80		, cellClass: 'text-center'},
 	{headerName: "주문상세"		, field: "ordDtlStat"		, width: 80		, cellClass: 'text-center'	, hide: temp1},
-	{headerName: "주문상세상태"		, field: "ordDtlStatNm"		, width: 100	, cellClass: 'text-center'	, hide: temp1},
+	{headerName: "주문상세상태"	, field: "ordDtlStatNm"		, width: 100	, cellClass: 'text-center'	, hide: temp1},
 	{headerName: "상품코드"		, field: "goodsCd"			, width: 100	, cellClass: 'text-left'	, hide: temp2},
 	{headerName: "SKUCODE"		, field: "optCd"			, width: 100	, cellClass: 'text-center'	, hide: temp2},
 	{headerName: "상품명"			, field: "goodsNm"			, width: 200	, cellClass: 'text-left'	, hide: temp2},
-	//{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center'	, hide: temp2},
-	{headerName: "상품타입"	, field: "goodsTypeNm"	, width: 100, cellClass: 'text-center',
+	{headerName: "상품타입"		, field: "goodsTypeNm"	, width: 100, cellClass: 'text-center',
 		cellRenderer: function (params) {
 			var option;
 			if (params.data.goodsType == 'G056_S') {
@@ -412,6 +361,7 @@ var columnCancelReqList = [
 			var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
 			return cnclRtnReqQty;
 		}
+		, hide			: temp1
 	},
 	{
 		headerName		: "취소/반품"
@@ -1053,6 +1003,28 @@ var fnCalculateRefundAmt = function (obj) {
 			gridOptionsCancelReqToBeList.api.setRowData(result.cancelOrderRefundList);
 			gridOptionsDelvCdList.api.setRowData(result.cancelDelvRefundList);
 			
+			// 2021.12.01 취소금액설정
+			if (result.cancelOrderRefundList != null && result.cancelOrderRefundList.length > 0) {
+				for (i=0 ; i<result.cancelOrderRefundList.length ; i++) {
+					for (j=0 ; j<cancelRequestTargetList.length ; j++) {
+						if (result.cancelOrderRefundList[i].ordDtlNo == cancelRequestTargetList[j].ordDtlNo) {
+							cancelRequestTargetList[j].cnclRtnAmt 		= result.cancelOrderRefundList[i].cnclRtnAmt;		// 취소금액
+							cancelRequestTargetList[j].cpn1DcAmt 		= result.cancelOrderRefundList[i].cpn1DcAmt;		// 즉시할인쿠폰금액
+							cancelRequestTargetList[j].tmtb1DcAmt 		= result.cancelOrderRefundList[i].tmtb1DcAmt;		// 수량할인다다익선금액
+							cancelRequestTargetList[j].tmtb2DcAmt 		= result.cancelOrderRefundList[i].tmtb2DcAmt;		// 금액할인다다익선금액
+							cancelRequestTargetList[j].goodsCpnDcAmt 	= result.cancelOrderRefundList[i].goodsCpnDcAmt;	// 상품쿠폰금액
+							cancelRequestTargetList[j].cartCpnDcAmt 	= result.cancelOrderRefundList[i].cartCpnDcAmt;		// 장바구니쿠폰금액
+							cancelRequestTargetList[j].pntDcAmt 		= result.cancelOrderRefundList[i].pntDcAmt;			// 포인트금액
+							cancelRequestTargetList[j].prePntDcAmt 		= result.cancelOrderRefundList[i].prePntDcAmt;		// 선포인트금액
+							cancelRequestTargetList[j].gfcdUseAmt 		= result.cancelOrderRefundList[i].gfcdUseAmt;		// 상품권적용금액
+							cancelRequestTargetList[j].realOrdAmt 		= result.cancelOrderRefundList[i].realOrdAmt;		// 실결제금액
+						}
+					}
+				}
+				// 주문변경대상정보 재설정
+				gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
+			}
+
 			let spanPntDcAmt 		= Number(result.spanPntDcAmt);							// 환불 포인트 금액
 			let spanSavePntAmt 		= Number(result.spanSavePntAmt);						// 적립 예정 포인트 환수 금액
 			let spanGfcdUseAmt 		= Number(result.spanGfcdUseAmt);						// 환불 상품권 금액

+ 1574 - 0
src/main/webapp/WEB-INF/views/order/CnclReqFormBack.html

@@ -0,0 +1,1574 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : CnclReqForm.html
+ * @desc    : 취소요청 화면
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2019 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2020.12.12   jsh77b       최초 작성
+ *******************************************************************************
+ -->
+<div class="modalPopup" data-width="1400" data-height="600">
+	<div class="panelStyle">
+		<div class="panelTitle">
+			<h2>취소요청</h2>
+			<button type="button" class="close" onclick="uifnPopupClose('popupCancelRequestForm');"><i class="fa fa-times"></i></button>
+		</div>
+			
+		<div class="panelContent" style="height:90%; overflow-y:auto; padding:0px 20px !important; ">
+			<form id="cancelRequestFrm" name="cancelRequestFrm" action="/orderChange/cancel" method="post" target="hdFrameForOrderCancel">
+				<input type="hidden" name="ordNo" 			th:value="${ordNo}"/>
+				<input type="hidden" name="ordChgSq" 		th:value="${ordChgSq}"/>
+				<input type="hidden" name="delvFeeCd" 		th:value="${delvFeeCd}"/>
+				<input type="hidden" name="chgReason" 		th:value="${ordChgSq > 0 && chgStat != 'G685_40' ? orderChangeDetailList[0].chgReason : ''}"/>
+				<input type="hidden" name="chgReasonDesc" 	value=""/>
+				
+				<div id="orderInfoList" style="display:none;">
+					<h4>기본정보</h4>
+					<!-- TABLE -->
+					<table class="tableStyle">
+						<colgroup>
+							<col width="">
+							<col width="">
+							<col width="">
+							<col width="">
+							<col width="">
+							<col width="">
+							<col width="">
+							<col width="">
+							<col width="">
+							<col width="">
+							<col width="">
+							<col width="">
+							<col width="">
+						</colgroup>
+						<thead>
+							<tr>
+								<th>사이트</th>
+								<th>몰구분</th>
+								<th>웹구분</th>
+								<th>외부몰</th>
+								<th>주문일시</th>
+								<th>주문자</th>
+								<th>고객번호</th>
+								<th>주문번호</th>
+								<th>이메일</th>
+								<th>핸드폰번호</th>
+								<th>회원구분</th>
+								<th>관리대상</th>
+								<th>등급</th>
+							</tr>
+						</thead>
+						<tbody>
+							<tr>
+								<td th:text="${orderInfoList[0].siteCdNm}"></td>
+								<td th:text="${orderInfoList[0].mallGbNm}"></td>
+								<td th:text="${orderInfoList[0].frontGbNm}"></td>
+								<td th:text="${orderInfoList[0].extmallNm}"></td>
+								<td th:text="${orderInfoList[0].ordDt}"></td>
+								<td th:text="${orderInfoList[0].ordNm}"></td>
+								<td th:text="${orderInfoList[0].custNo}"></td>
+								<td th:text="${orderInfoList[0].ordNo}"></td>
+								<td th:text="${orderInfoList[0].ordEmail}"></td>
+								<td th:text="${orderInfoList[0].ordPhnno}"></td>
+								<td th:text="${orderInfoList[0].custGbNm}"></td>
+								<td th:text="${orderInfoList[0].managedRsnNm}"></td>
+								<td th:text="${orderInfoList[0].custGradeNm}"></td>
+							</tr>
+						</tbody>
+					</table>
+					<!-- //TABLE -->
+				</div>
+				
+				<h4 id="orderInfoTitle">주문정보</h4>
+				<div id="gridOrderCancelRequestList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
+
+				<h4 id="h4OrderCancelRequestToBeList">취소정보</h4>
+				<div id="gridOrderCancelRequestToBeList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
+				
+				<h4 id="h4DelvCdList">배송비정보</h4>
+				<div id="gridDelvCdList" style="width:100%; height: 140px;" class="ag-theme-balham"></div>
+				
+				<div style="text-align:right; padding-bottom:5px; padding-top:5px;">
+					<th:block th:if="${userId} == 'jsh77b'">
+						<button type="button" class="btn btn-success" id="cnclReqBtn" onclick="fnCnclReq('cnclReq');">취소접수</button>
+					</th:block>
+					<button type="button" class="btn btn-success" id="cnclCompleteBtn" onclick="fnCnclReq('cnclComplete');">취소완료</button>
+					<button type="button" class="btn btn-success" id="cnclReqCancelBtn" onclick="fnCnclReq('cnclReqCancel');">취소철회</button>
+					<button type="button" class="btn btn-success" id="cnclReqCompleteBtn" onclick="fnCnclReq('cnclReqComplete');">취소승인</button>
+				</div>
+				
+				<table class="frmStyle">
+					<colgroup>
+						<col style="width:140px;" />
+						<col style="width:180px;" />
+						<col style="width:140px;" />
+						<col style="width:180px;" />
+						<col style="width:140px;" />
+						<col style="width:180px;" />
+						<col style="width:140px;" />
+						<col />
+					</colgroup>
+					<tbody>
+						<tr>
+							<th>취소사유 <i class="star"></i></th>
+							<td>
+								<select name="selectChgReason" onchange="fnChangeChgReason($(this).val());">
+									<option value="">[선택하세요]</option>
+									<th:block th:each="oneData, status : ${chgReasonList}">
+										<th:block th:if="${ordChgSq > 0} or ${oneData.cd} == G686_10 or ${oneData.cd} == G686_20 or ${oneData.cd} == G686_30">
+											<option th:if="${chgReasonList}"  th:value="|${oneData.cd}|" th:text="|${oneData.cdNm}|"></option>
+										</th:block>
+									</th:block>
+								</select>
+							</td>
+							<th>귀책사유</th>
+							<td colspan="5"><span id="imputeReason"></span></td>
+						</tr>
+						<tr>
+							<th>PG점프</th>
+							<td>
+								<label class="chkBox">
+									<input type="checkbox" name="pgStat" id="pgStat" onclick="fnChangePgStat();"/>
+								</label>
+							</td>
+							<th>입금액(원)</th>
+							<td>
+								<input type="text" name="depositAmt" id="depositAmt" value="0" readonly="readonly"/>
+							</td>
+							<th>알림톡미전송여부</th>
+							<td colspan="3">
+								<label class="chkBox">
+									<input type="checkbox" name="msgStat" id="msgStat" checked/>
+								</label>
+							</td>
+						</tr>
+						<tr>
+							<th>요청메모<br/><span id="dpLocAnsContent">0</span>/1,000Byte</th>
+							<td colspan="7">
+								<textarea id="chgMemo" name="chgMemo" style="height:80px;" onkeyup="cfnGetTextLength(this, 1000, $('#dpLocAnsContent'));"></textarea>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+				
+				<h4>환불예정금액</h4>
+				<table class="frmStyle">
+					<colgroup>
+						<col width="">
+						<col width="">
+						<col width="">
+						<col width="">
+					</colgroup>
+					<thead>
+						<tr>
+							<th style="height:30px;">구분</th>
+							<th style="height:30px;">항목</th>
+							<th style="height:30px;">합계</th>
+							<th style="height:30px;">내역</th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td style="height:25px;">상품금액</td>
+							<td>취소상품금액</td>
+							<td class="spanCnclRtnAmt">0원</td>
+							<td></td>
+						</tr>
+						<tr>
+							<td rowspan="2">할인금액차감</td>
+							<td>쿠폰할인차감</td>
+							<td class="spanCpnDcAmt">0원</td>
+							<td style="line-height:25px;">
+								<div style="height:25px;"><span>즉시할인쿠폰 : </span><span class="spanCpn1DcAmt">0원</span></div>
+								<div style="height:25px;"><span>주문서상품쿠폰 : </span><span class="spanGoodsCpnDcAmt">0원</span></div>
+								<div style="height:25px;"><span>장바구니쿠폰 : </span><span class="spanCartCpnDcAmt">0원</span></div>
+							</td>
+						</tr>
+						<tr>
+							<td>상품할인차감</td>
+							<td class="goodsDcSumAmt">0원</td>
+							<td style="line-height:25px;">
+								<div style="height:25px;"><span>선포인트할인 : </span><span class="spanPrePntDcAmt">0원</span></div>
+								<div style="height:25px;"><span>다다익선할인 : </span><span class="spanTmtbDcAmt">0원</span></div>
+							</td>
+						</tr>
+						<tr>
+							<td>배송비</td>
+							<td>환불배송비</td>
+							<td class="spanRealDelvAmt">0원</td>
+							<td style="line-height:25px;">
+								<div style="height:25px;"><span>배송비쿠폰 : </span><span class="delvCpnAmt">0원</span></div>
+								<div style="height:25px;"><span>추가금결제 : </span><span class="addDelvFee">0원</span></div>
+							</td>
+						</tr>
+						<tr>
+							<td rowspan="4">환불금액</td>
+							<td style="height:25px;">총환불금액</td>
+							<td class="totalRefundAmt">0원</td>
+							<td></td>
+						</tr>
+						<tr>
+							<td style="height:25px;">결제수단환불</td>
+							<td class="spanRefundAmt">0원</td>
+							<td>
+								<span class="pgGbNm">신용카드</span><span class="cardNm"></span>
+							</td>
+						</tr>
+						<tr>
+							<td style="height:25px;">상품권환불</td>
+							<td class="spanGfcdUseAmt">0원</td>
+							<td></td>
+						</tr>
+						<tr>
+							<td style="height:25px;">포인트환불</td>
+							<td class="spanPntDcAmt">0P</td>
+							<td>
+								<span>적립예정포인트환수 : </span><span class="spanSavePntAmt">0P</span>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+				
+				<!-- 
+				<h4>환불예정금액</h4>
+				<table class="frmStyle">
+					<colgroup>
+						<col style="width:20%;"/>
+						<col style="width:30%;"/>
+						<col style="width:20%;"/>
+						<col style="width:30%;"/>
+					</colgroup>
+					<tbody>
+						<tr>
+							<th>총 결제 금액</th>
+							<td colspan="3"><span id="spanPayAmt"></span>원 (상품 실결제 금액 : <span id="spanSumRealOrdAmt"></span>원, 배송금액 : <span id="spanSumDeliveryFee"></span>원) </td>
+						</tr>
+						<tr>
+							<th>상품 주문 금액</th>
+							<td><span id="spanOrdAmt"></span>원</td>
+							<th>상품 취소 금액</th>
+							<td><span id="spanCnclRtnAmt"></span>원</td>
+						</tr>
+						<tr>
+							<th>포인트 취소 금액</th>
+							<td colspan="3"><span id="spanTotPntDcAmt"></span>원 (고객 포인트 : <span id="spanPntDcAmt"></span>원 + 상품 선포인트 : <span id="spanPrePntDcAmt"></span>원) </td>
+						</tr>
+						<tr>
+							<th>쿠폰 취소 금액</th>
+							<td colspan="3"><span id="spanCpnDcAmt"></span>원 (즉시할인쿠폰 : <span id="spanCpn1DcAmt"></span>원 + 상품쿠폰 : <span id="spanGoodsCpnDcAmt"></span>원 + 장바구니쿠폰 : <span id="spanCartCpnDcAmt"></span>원 + 배송비쿠폰 : <span id="spanDelvCpnDcAmt"></span>원)</td>
+						</tr>
+						<tr>
+							<th>다다익선 취소 금액</th>
+							<td colspan="3"><span id="spanTmtbDcAmt"></span>원 (수량할인 : <span id="spanTmtb1DcAmt"></span>원 + 금액할인 : <span id="spanTmtb2DcAmt"></span>원)</td>
+						</tr>
+						<tr>
+							<th>상품권 취소 금액</th>
+							<td colspan="3"><span id="spanGfcdUseAmt"></span>원</td>
+						</tr>
+						<tr>
+							<th>상품 실결제 취소 금액</th>
+							<td><span id="spanRealCnclRtnAmt"></span>원</td>
+							<th>환불 배송비 금액</th>
+							<td><span id="spanRealDelvAmt"></span>원</td>
+						</tr>
+						<tr>
+							<th>환불 예정 금액</th>
+							<td colspan="3"><span id="spanRefundAmt"></span>원</td>
+						</tr>
+					</tbody>
+				</table>
+				 -->
+				
+				<div id="refundAccount" style="width:100%">
+					<h4>환불계좌정보</h4>
+					<button type="button" id="btnSaveAccount" class="btn btnRight btn-base btn-sm" style="margin-left:10px;" onclick="fnCreateOrderRfAccount();">등록</button>
+					
+					<!-- TABLE -->
+					<table class="tableStyle">
+						<colgroup>
+							<col width="">
+							<col width="">
+							<col width="">
+							<col width="">
+							<col width="">
+						</colgroup>
+						<thead>
+							<tr>
+								<th>은행명</th>
+								<th>은행코드</th>
+								<th>계좌번호</th>
+								<th>예금주</th>
+								<th>기본여부</th>
+							</tr>
+						</thead>
+						<tbody>
+							<tr style="height:30px;">
+								<td class="bankNm"></td>
+								<td class="bankCd"></td>
+								<td class="accountNo"></td>
+								<td class="accountNm"></td>
+								<td class="defaultYn"></td>
+							</tr>
+						</tbody>
+					</table>
+				</div>
+				<br>
+			</form>
+		</div>
+	</div>
+</div>
+
+<!-- data -->
+<script th:inline="javascript">
+/*<![CDATA[*/
+var cancelRequestTargetList 	= [[${cancelRequestTargetList}]];				// 취소대상목록
+var cancelRequestTargetCnt 		= [[${cancelRequestTargetList.size()}]];		// 취소대상건수
+var ordNo 						= [[${ordNo}]];									// 주문번호
+var ordChgSq 					= [[${ordChgSq}]];								// 주문변경번호
+var delvFeeCd					= [[${delvFeeCd}]];								// 배송정책코드
+var orderInfoList 				= [[${orderInfoList}]];							// 주문기본정보
+var orderChangeDetailList 		= [[${orderChangeDetailList}]];					// 취소/반품/교환요청 정보
+var payGb 						= orderInfoList[0].payGb;						// 결제수단
+var payMeans 					= orderInfoList[0].payMeans;					// 결제방법
+var payStat						= orderInfoList[0].payStat;						// 결제상태
+var chgReason					= "";											// 변경사유코드
+var chgMemo						= "";											// 변경사유메모
+var chgStat						= cancelRequestTargetList[0].chgStat			// 변경상태(교환출고실패 취소처리)
+var wdGb						= cancelRequestTargetList[0].wdGb				// 회수구분(교환출고실패 취소처리)
+var addPayCost					= cancelRequestTargetList[0].addPayCost			// 추가결제비용(교환출고실패 취소처리)
+var canDeliveryCancelYn 		= [[${canDeliveryCancelYn}]];					// 교환배송비 취소가능여부
+var delvPayMeans				= [[${payMeans}]];								// 교환배송비 결제수단
+
+// 변경요청정보 승인, 철회
+if (ordChgSq > 0 && chgStat != 'G685_40') {
+	chgReason					= orderChangeDetailList[0].chgReason;			// 변경사유코드
+	chgMemo						= orderChangeDetailList[0].chgMemo;				// 변경사유메모
+}
+
+// 교환배송미출고대상
+if (ordChgSq > 0 && chgStat == 'G685_40') {
+	$("#orderInfoList").show();
+}
+
+var temp1 = true;
+var temp2 = false;
+var temp3 = true;
+
+// 1. 주문정보(변경요청가능대상)
+var columnCancelReqList = [
+	{headerName: "주문번호"		, field: "ordNo"			, width: 80		, cellClass: 'text-center'	, hide: temp1},
+	{headerName: "주문상세"		, field: "ordDtlNo"			, width: 80		, cellClass: 'text-center'},
+	{headerName: "주문상세"		, field: "ordDtlStat"		, width: 80		, cellClass: 'text-center'	, hide: temp1},
+	{headerName: "주문상세상태"	, field: "ordDtlStatNm"		, width: 100	, cellClass: 'text-center'	, hide: temp1},
+	{headerName: "상품코드"		, field: "goodsCd"			, width: 100	, cellClass: 'text-left'	, hide: temp2},
+	{headerName: "SKUCODE"		, field: "optCd"			, width: 100	, cellClass: 'text-center'	, hide: temp2},
+	{headerName: "상품명"			, field: "goodsNm"			, width: 200	, cellClass: 'text-left'	, hide: temp2},
+	{headerName: "상품타입"		, field: "goodsTypeNm"	, width: 100, cellClass: 'text-center',
+		cellRenderer: function (params) {
+			var option;
+			if (params.data.goodsType == 'G056_S') {
+				option = "<a href=\"javascript:void(0);\" onclick=\"fnOrderDetailItemForm('" + params.data.ordDtlNo + "');\">" + params.value + "</a>";
+			} else {
+				option = params.value
+			}
+			return option;
+		},
+		hide: temp2
+	},
+	{headerName: "옵션1"			, field: "colorNm"			, width: 80		, cellClass: 'text-center'	, hide: temp2},
+	{headerName: "옵션2"			, field: "optCd2"			, width: 80		, cellClass: 'text-center'	, hide: temp2},
+	{
+		headerName		: "옵션금액"
+		, field			: "optAddPrice"
+		, width			: 80
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+		, hide			: temp1
+	},
+	{
+		headerName		: "주문"
+		, field			: "ordQty"
+		, width			: 80
+		, cellClass		: 'text-center'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+	},
+	{
+		headerName		: "취소/요청"
+		, field			: "cnclRtnQty"
+		, width			: 80
+		, cellClass		: 'text-center'
+		, cellRenderer	: function (params) {
+			var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
+			return cnclRtnReqQty;
+		}
+	},
+	{
+		headerName		: "취소/반품"
+		, field			: "ordCanChgQty"
+		, width			: 100
+		, cellClass		: 'text-center'
+		, cellRenderer	: function (params) {
+			var ordQty 			= parseInt(params.data.ordQty);
+			var cnclRtnQty 		= parseInt(params.data.cnclRtnQty);
+			var ordReqChgQty 	= parseInt(params.data.ordReqChgQty);
+			var ordCanChgQty 	= parseInt(params.value);
+			var rtnStr 			= "";
+
+			// 취소신청가능수량있으면 수량만 표시 (취소,반품,교환 신청정보 처리)
+			if (ordChgSq > 0 && chgStat != 'G685_40') {
+				rtnStr = ordCanChgQty;
+			} else {
+				ordCanChgQty = ordQty - (cnclRtnQty +  ordReqChgQty);
+
+				rtnStr += "<select class='ordCanChgQty' name='ordCanChgQty' ordDtlNo='"+params.data.ordDtlNo+"' onChange='fnCalculateRefundAmt(this);'>";
+
+				for (i=0 ; i<=ordCanChgQty ; i++) {
+					if (i == params.data.ordCanChgQty) {
+						rtnStr += "	<option value='"+i+"' selected>"+i+"</option>";
+					} else {
+						rtnStr += "	<option value='"+i+"'>"+i+"</option>";
+					}
+				}
+
+				rtnStr += "</select>";
+			}
+
+			return rtnStr;
+		}
+	},
+	{
+		headerName		: "주문"
+		, field			: "ordAmt"
+		, width			: 80
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+	},
+	{
+		headerName		: "취소"
+		, field			: "cnclRtnAmt"
+		, width			: 80
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+	},
+	{
+		headerName		: "즉시할인"
+		, field			: "cpn1DcAmt"
+		, width			: 80
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+	},
+	{
+		headerName		: "다다익선1"
+		, field			: "tmtb1DcAmt"
+		, width			: 80
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+	},
+	{
+		headerName		: "다다익선2"
+		, field			: "tmtb2DcAmt"
+		, width			: 80
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+	},
+	{
+		headerName		: "상품쿠폰"
+		, field			: "goodsCpnDcAmt"
+		, width			: 80
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+	},
+	{
+		headerName		: "장바구니쿠폰"
+		, field			: "cartCpnDcAmt"
+		, width			: 100
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+	},
+	{
+		headerName		: "포인트"
+		, field			: "pntDcAmt"
+		, width			: 80
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+	},
+	{
+		headerName		: "선포인트"
+		, field			: "prePntDcAmt"
+		, width			: 80
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+	},
+	{
+		headerName		: "상품권"
+		, field			: "gfcdUseAmt"
+		, width			: 80
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+	},
+	{
+		headerName		: "실결제금액"
+		, field			: "realOrdAmt"
+		, width			: 100
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+	},
+	{
+		headerName		: "배송비"
+		, field			: "delvFee"
+		, width			: 80
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+		, hide			: temp1
+	},
+	{headerName: "업체"			, field: "supplyCompCd"		, width: 100	, cellClass: 'text-center', hide: temp1},
+	{headerName: "배송비코드"		, field: "delvFeeCd"		, width: 100	, cellClass: 'text-center', hide: temp1},
+	{
+		headerName		: "무료배송비"
+		, field			: "minOrdAmt"
+		, width			: 80
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+		, hide			: temp1
+	},
+	{
+		headerName		: "기본배송비"
+		, field			: "orgDelvFee"
+		, width			: 80
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+		, hide			: temp1
+	},
+	{
+		headerName		: "반품배송비"
+		, field			: "rtnDelvFee"
+		, width			: 80
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+		, hide			: temp1
+	},
+	{
+		headerName		: "교환배송비"
+		, field			: "excDelvFee"
+		, width			: 80
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+		, hide			: temp1
+	},
+	{headerName: "전체취소가능"		, field: "allCanYn"			, width: 100	, cellClass: 'text-center', hide: temp1}
+];
+var gridOptionsCancelReqList = gagaAgGrid.getGridOptions(columnCancelReqList);
+
+// Add on options
+gridOptionsCancelReqList.suppressRowClickSelection = true;
+gridOptionsCancelReqList.rowSelection = 'multiple';
+
+// 2. 취소정보(환불정보)
+var columnCancelReqToBeList = [
+	{
+		headerName	: "주문상세정보",
+		children	: [
+			{headerName: "주문번호"		, field: "ordNo"			, width: 80		, cellClass: 'text-center', hide: temp1},
+			{headerName: "주문상세"		, field: "ordDtlNo"			, width: 80		, cellClass: 'text-center'},
+			{headerName: "주문상세"		, field: "ordDtlStat"		, width: 80		, cellClass: 'text-center', hide: temp1},
+			{headerName: "주문상세상태"	, field: "ordDtlStatNm"		, width: 100	, cellClass: 'text-center', hide: temp1},
+			{headerName: "상품코드"		, field: "goodsCd"			, width: 100	, cellClass: 'text-center', hide: temp1},
+			{headerName: "상품명"			, field: "goodsNm"			, width: 200	, cellClass: 'text-center', hide: temp1},
+			{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center', hide: temp2}
+		]
+	},
+	{
+		headerName	: "주문상세단품정보",
+		children	: [
+			{headerName: "단품번호"		, field: "ordDtlItemSq"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "단품코드"		, field: "itemCd"			, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "단품명"			, field: "itemNm"			, width: 200	, cellClass: 'text-center', hide: temp2},
+			{headerName: "칼라코드"		, field: "optCd1"			, width: 80		, cellClass: 'text-center', hide: temp1},
+			{headerName: "사이즈코드"		, field: "optCd2"			, width: 80		, cellClass: 'text-center', hide: temp2},
+			{
+				headerName		: "단품수량"
+				, field			: "itemQty"
+				, width			: 80
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "단품금액"
+				, field			: "itemPrice"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "단품옵션금액"
+				, field			: "optAddPrice"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			}
+		]
+	},
+	{
+		headerName	: "주문상세수량",
+		children	: [
+			{
+				headerName		: "주문"
+				, field			: "ordQty"
+				, width			: 80
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "취소/요청"
+				, field			: "cnclRtnQty"
+				, width			: 80
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
+					return cnclRtnReqQty;
+				}
+			},
+			{
+				headerName		: "취소/반품"
+				, field			: "ordCanChgQty"
+				, width			: 100
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			}
+		]
+	},
+	{
+		headerName	: "주문단품금액",
+		children	: [
+			{
+				headerName		: "주문"
+				, field			: "ordAmt"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "취소"
+				, field			: "cnclRtnAmt"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "즉시할인"
+				, field			: "cpn1DcAmt"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "다다익선1"
+				, field			: "tmtb1DcAmt"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "다다익선2"
+				, field			: "tmtb2DcAmt"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "상품쿠폰"
+				, field			: "goodsCpnDcAmt"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "장바구니쿠폰"
+				, field			: "cartCpnDcAmt"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "포인트"
+				, field			: "pntDcAmt"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "선포인트"
+				, field			: "prePntDcAmt"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "상품권"
+				, field			: "gfcdUseAmt"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "환불금액"
+				, field			: "realOrdAmt"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			}
+		]
+	},
+	{
+		headerName	: "주문배송비정보",
+		children	: [
+			{
+				headerName		: "배송비"
+				, field			: "delvFee"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{headerName: "업체"			, field: "supplyCompCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "배송비코드"		, field: "delvFeeCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{
+				headerName		: "무료배송비"
+				, field			: "minOrdAmt"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "기본배송비"
+				, field			: "orgDelvFee"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "반품배송비"
+				, field			: "rtnDelvFee"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "교환배송비"
+				, field			: "excDelvFee"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{headerName: "전체취소가능"		, field: "allCanYn"			, width: 100	, cellClass: 'text-center', hide: temp2},
+		]
+	}
+];
+var gridOptionsCancelReqToBeList = gagaAgGrid.getGridOptions(columnCancelReqToBeList);
+
+// 3. 배송비정보(환불정보)
+var columnDelvCdList = [
+	{
+		headerName	: "배송코드기준금액",
+		children	: [
+			{headerName: "업체"			, field: "supplyCompCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "배송비코드"		, field: "delvFeeCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{
+				headerName		: "주문"
+				, field			: "ordAmt"
+				, width			: 100
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "취소"
+				, field			: "cnclRtnAmt"
+				, width			: 100
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "환불"
+				, field			: "realOrdAmt"
+				, width			: 100
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			}
+		]
+	},
+	{
+		headerName	: "배송비정보",
+		children	: [
+			{
+				headerName		: "배송비"
+				, field			: "delvFee"
+				, width			: 100
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "무료배송비"
+				, field			: "minOrdAmt"
+				, width			: 100
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "기본배송비"
+				, field			: "orgDelvFee"
+				, width			: 100
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "반품배송비"
+				, field			: "rtnDelvFee"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "교환배송비"
+				, field			: "excDelvFee"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{headerName: "추가배송비여부"		, field: "addDelvFeeYn"		, width: 140	, cellClass: 'text-center', hide: temp2},
+			{
+				headerName		: "추가배송비"
+				, field			: "addDelvFee"
+				, width			: 100
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{headerName: "전체취소가능"		, field: "allCanYn"			, width: 100	, cellClass: 'text-center', hide: temp2},
+		]
+	}
+];
+var gridOptionsDelvCdList = gagaAgGrid.getGridOptions(columnDelvCdList);
+</script>
+
+<script>
+// 현재 사유는 고객 입니다.
+var isCustomer 		= true;
+var pgGb 			= orderInfoList[0].pgGb;
+var payMeans 		= orderInfoList[0].payMeans;
+var payMeansNm		= orderInfoList[0].payMeansNm;
+var cardNm			= orderInfoList[0].cardNm;
+var addDelvFee		= 0;
+
+//0원이하이면 '-' 처리 삭제 함수
+var getZeroMinusDelAmt = function(tempAmt) {
+	var rtnAmtStr = "";
+	
+	if (tempAmt > 0) {
+		rtnAmtStr = "-" + tempAmt.addComma();
+	} else {
+		rtnAmtStr = tempAmt.addComma();
+	}
+	
+	return rtnAmtStr;
+}
+
+// 환불예상금액계산
+var fnCalculateRefundAmt = function (obj) {
+	// 변경신청목록
+	var cancelRequestTargetToBeList = [];
+
+	if (obj != null) {
+		for (i=0 ; i<cancelRequestTargetList.length ; i++) {
+			var orDtlNo 		= $(obj).attr("ordDtlNo");
+			var ordCanChgQty 	= $(obj).val();
+			
+			if (cancelRequestTargetList[i].ordDtlNo == orDtlNo) {
+				cancelRequestTargetList[i].ordCanChgQty = ordCanChgQty;
+			}
+		}
+		// 주문변경대상정보 재설정
+		gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
+	}
+	
+	if (cancelRequestTargetList.length == 0) {
+		alert("요청 대상정보가 존재 하지 않습니다.");
+		uifnPopupClose('popupCancelRequestForm');
+		return false;
+	}
+	
+	// 2021.05.25 수정
+	var ordDtlNoArr 		= [];
+	var cnclRtnReqQtyArr 	= [];
+	
+	// 1. 반품신청수량 체크
+	for (i=0 ; i<cancelRequestTargetList.length ; i++) {
+		if (cancelRequestTargetList[i].ordCanChgQty > 0) {
+			// 반품신청값설정
+			ordDtlNoArr.push(cancelRequestTargetList[i].ordDtlNo);
+			cnclRtnReqQtyArr.push(cancelRequestTargetList[i].ordCanChgQty);
+		}
+	}
+	
+	// 2. 추가정보설정
+	var chgerNm 	= orderInfoList[0].ordNm;
+	var chgerEmail 	= orderInfoList[0].ordEmail;
+	var chgerPhnno 	= orderInfoList[0].ordPhnno;
+	var chgerTelno 	= orderInfoList[0].ordTelno;
+	var custNo		= orderInfoList[0].custNo;
+	var delvFeeCd	= orderInfoList[0].delvFeeCd;
+	
+	// 환불금액계산호출
+	var jsonObj = {
+		"ordNo"					: ordNo
+		,"ordDtlNoArr"			: ordDtlNoArr
+		,"cnclRtnReqQtyArr"		: cnclRtnReqQtyArr
+		,"isCustomer" 			: isCustomer
+		,"chgerNm"				: chgerNm
+		,"chgerEmail"			: chgerEmail
+		,"chgerPhnno"			: chgerPhnno
+		,"custNo"				: custNo
+		,"ordNm"				: chgerNm
+		,"ordPhnno"				: chgerPhnno
+		,"delvFeeCd"			: delvFeeCd
+	}
+	
+	var jsonData = JSON.stringify(jsonObj);
+	
+	gagajf.ajaxJsonSubmit(
+		'/orderChange/cancel/refundAmt'
+		, jsonData
+		, function(result) {
+			gridOptionsCancelReqToBeList.api.setRowData(result.cancelOrderRefundList);
+			gridOptionsDelvCdList.api.setRowData(result.cancelDelvRefundList);
+			
+			let spanPntDcAmt 		= Number(result.spanPntDcAmt);							// 환불 포인트 금액
+			let spanSavePntAmt 		= Number(result.spanSavePntAmt);						// 적립 예정 포인트 환수 금액
+			let spanGfcdUseAmt 		= Number(result.spanGfcdUseAmt);						// 환불 상품권 금액
+			let spanDelvGfcdUseAmt 	= Number(result.spanDelvGfcdUseAmt);					// 환불 배송비 상품권 금액
+			let spanCnclRtnAmt 		= Number(result.spanCnclRtnAmt);						// 환불 상품 금액
+			let spanCpn1DcAmt 		= Number(result.spanCpn1DcAmt);							// 즉시할인 쿠폰 차감 금액
+			let spanGoodsCpnDcAmt	= Number(result.spanGoodsCpnDcAmt);						// 상품 쿠폰 차감 금액
+			let spanCartCpnDcAmt	= Number(result.spanCartCpnDcAmt);						// 장바구니 쿠폰 차감 금액
+			let spanDelvCpnDcAmt	= Number(result.spanDelvCpnDcAmt);						// 배송비 쿠폰 차감 금액
+			let spanTmtbDcAmt 		= Number(result.spanTmtbDcAmt);							// 다다익선 할인 차감 금액
+			let spanPrePntDcAmt 	= Number(result.spanPrePntDcAmt);						// 선포인트 할인 차감 금액
+			let sumDeliveryFee 		= Number(result.sumDeliveryFee);						// 원주문배송비
+			let spanTotDeliveryFee 	= Number(result.spanTotDeliveryFee);					// 추가배송비 (무료배송비 허들 깨져서 발생한 배송비)
+			let spanRealCnclRtnAmt 	= Number(result.spanRealCnclRtnAmt);					// 환불 상품 실결제 금액 (환불상품금액 - 할인차감금액)
+			let goodsCancelAmt 		= spanCnclRtnAmt + spanCpn1DcAmt;						// 상품취소금액
+			let spanRefundAmt 		= spanRealCnclRtnAmt + sumDeliveryFee;					// 환불예정금액 (환불상품실결제금액 + 원주문배송비)
+			let goodsDcSumAmt		= spanPrePntDcAmt + spanTmtbDcAmt;						// 상품 할인 차감 금액
+			let spanCpnDcAmt		= spanCpn1DcAmt + spanGoodsCpnDcAmt + spanCartCpnDcAmt;	// 쿠폰 할인 차감 금액
+
+			// 결제방식
+			let pgGbNm		= "";
+			let cardGbNm	= "";
+			
+			if (pgGb == 'KCP') {
+				pgGbNm	= payMeansNm;
+				cardGbNm	= "(" + cardNm + ")";
+			} else if (pgGb == 'NAVER') {
+				pgGbNm	= "네이버페이";
+			} else if (pgGb == 'NAVER_ORDER') {
+				pgGbNm	= "네이버페이주문형";
+			} else if (pgGb == 'KAKAO') {
+				pgGbNm	= "카카오페이";
+			} else if (pgGb == 'PAYCO') {
+				pgGbNm	= "페이코";
+			} else if (pgGb == 'ISTYLE') {
+				pgGbNm	= "상품권";
+			} else {
+				pgGbNm	= "외부몰입금";
+			}
+
+			// 2021.08.10 card007 상품권100% 결제 로직 수정
+			// 회사사유 시 추가배송비 0
+			if (!isCustomer) {
+				spanTotDeliveryFee = 0;
+			}
+
+			let refundAmt = spanRefundAmt + spanGfcdUseAmt;
+			let leftAddDelvFee = spanTotDeliveryFee;
+
+			if (refundAmt < spanTotDeliveryFee) {
+				addDelvFee = spanTotDeliveryFee;
+			} else {
+				if (leftAddDelvFee > spanRefundAmt) {
+					leftAddDelvFee -= spanRefundAmt;
+					spanRefundAmt = 0;
+				} else {
+					spanRefundAmt -= leftAddDelvFee;
+					leftAddDelvFee = 0;
+				}
+				
+				if (leftAddDelvFee > 0) {
+					spanGfcdUseAmt -= leftAddDelvFee;
+					leftAddDelvFee = 0;
+				}
+				
+				addDelvFee = 0;
+			}
+
+			let refundPayAmt		= spanRefundAmt - spanDelvGfcdUseAmt - leftAddDelvFee;	// 결제금액 환불 (환불예정금액 - 환불 배송비 상품권 금액 - 추가배송비)
+			let deliveryFee 		= sumDeliveryFee - spanTotDeliveryFee;					// 배송비 (마지막 취소 시 돌려줘야할 원주문 배송비 - 추가배송비)
+			let spanTotGfcdUseAmt	= spanGfcdUseAmt + spanDelvGfcdUseAmt;					// 환불 상품권 금액 합계
+			let totalRefundAmt		= spanRefundAmt + spanTotGfcdUseAmt + spanPntDcAmt;		// 총 환불 금액
+
+			// 상품금액
+			$(".spanCnclRtnAmt").text(goodsCancelAmt.addComma()+"원");						// 취소상품금액
+
+			// 할인금액차감
+			$(".spanCpnDcAmt").text(spanCpnDcAmt.addComma()+"원");							// 쿠폰할인차감 > 합계
+			$(".spanCpn1DcAmt").text(spanCpn1DcAmt.addComma()+"원");						// 쿠폰할인차감 > 즉시할인쿠폰
+			$(".spanGoodsCpnDcAmt").text(spanGoodsCpnDcAmt.addComma()+"원");				// 쿠폰할인차감 > 주문서상품쿠폰
+			$(".spanCartCpnDcAmt").text(spanCartCpnDcAmt.addComma()+"원");					// 쿠폰할인차감 > 장바구니쿠폰
+			$(".goodsDcSumAmt").text(goodsDcSumAmt.addComma()+"원");						// 상품할인차감 > 합계
+			$(".spanPrePntDcAmt").text(spanPrePntDcAmt.addComma()+"원");					// 상품할인차감 > 선포인트할인
+			$(".spanTmtbDcAmt").text(spanTmtbDcAmt.addComma()+"원");						// 상품할인차감 > 다다익선할인
+
+			// 배송비
+			$(".spanRealDelvAmt").text(deliveryFee.addComma()+"원");						// 환불배송비 > 합계
+			$(".addDelvFee").text(addDelvFee.addComma()+"원");								// 환불배송비 > 추가금결제
+			$(".delvCpnAmt").text(spanDelvCpnDcAmt.addComma()+"원");						// 환불배송비 > 배송비쿠폰
+
+			// 환불금액
+			$(".totalRefundAmt").text(totalRefundAmt.addComma()+"원");						// 총환불금액
+			$(".spanRefundAmt").text(refundPayAmt.addComma()+"원");							// 결제수단환불
+			$(".pgGbNm").text(pgGbNm);														// 결제수단환불 > 결제수단
+			$(".cardNm").text(cardGbNm);													// 결제수단환불 > 카드명
+			$(".spanGfcdUseAmt").text(spanTotGfcdUseAmt.addComma()+"원");					// 상품권환불
+			$(".spanPntDcAmt").text(spanPntDcAmt.addComma()+"원");							// 포인트환불
+			$(".spanSavePntAmt").text(spanSavePntAmt.addComma()+"P");						// 포인트환불 > 적립예정포인트환수
+
+			/*
+			// 2021.08.10 card007 상품권100% 결제 로직 수정 기존 소스 백업
+			// 2021.07.01 배송비 수정(마지막취소에만 배송비 환불)
+			let spanSumDeliveryFee 	= result.spanSumDeliveryFee - result.spanDelvCpnDcAmt;
+			let sumDeliveryFee 		= result.sumDeliveryFee - result.spanRefundDelvCpnAmt;
+
+			// 2021.08.04 취소금액수정
+			var spanRealDelvAmt		= 0;
+			var addDelvFee			= 0;
+
+			if (result.spanRealCnclRtnAmt > 0) {
+				// 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
+				if (isCustomer) {
+					result.spanRefundAmt = (result.spanRealCnclRtnAmt + sumDeliveryFee) - result.spanTotDeliveryFee;
+
+					// 2021.07.01 
+					// @ 마이너스금액이면 허들깨지면서 배송비 발생
+					// @ 플러스금액이면 마지막취소시 배송금액 환불
+					spanRealDelvAmt = sumDeliveryFee - result.spanTotDeliveryFee;
+					addDelvFee		= result.spanTotDeliveryFee;
+				} 
+				// 회사사유 : 환불금액계산 = (취소금액 + 배송비)
+				else {
+					result.spanRefundAmt = (result.spanRealCnclRtnAmt + sumDeliveryFee);
+				}
+			}
+			
+			$(".spanCnclRtnAmt").text(result.spanCnclRtnAmt.addComma()+"원");
+			$(".spanCpn1DcAmt").text(result.spanCpn1DcAmt.addComma()+"원");
+			$(".spanGoodsCpnDcAmt").text(result.spanGoodsCpnDcAmt.addComma()+"원");
+			$(".spanCartCpnDcAmt").text(result.spanCartCpnDcAmt.addComma()+"원");
+
+			var spanCpnDcAmt = result.spanCpn1DcAmt + result.spanGoodsCpnDcAmt + result.spanGoodsCpnDcAmt;
+			$(".spanCpnDcAmt").text(spanCpnDcAmt.addComma()+"원");
+
+			$(".spanPrePntDcAmt").text(result.spanPrePntDcAmt.addComma()+"원");
+			$(".spanTmtbDcAmt").text(result.spanTmtbDcAmt.addComma()+"원");
+
+			var goodsDcSumAmt = result.spanPrePntDcAmt + result.spanTmtbDcAmt;
+			$(".goodsDcSumAmt").text(goodsDcSumAmt.addComma()+"원");
+
+			$(".delvCpnAmt").text(result.spanDelvCpnDcAmt.addComma()+"원");
+			$(".addDelvFee").text(addDelvFee.addComma()+"원");
+			$(".spanRealDelvAmt").text(spanSumDeliveryFee.addComma()+"원");
+
+			var totalRefundAmt = result.spanRefundAmt + result.spanGfcdUseAmt + result.spanPntDcAmt;
+
+			$(".totalRefundAmt").text(totalRefundAmt.addComma()+"원");
+			$(".spanRefundAmt").text(result.spanRefundAmt.addComma()+"원");
+			$(".spanGfcdUseAmt").text(result.spanGfcdUseAmt.addComma()+"원");
+			$(".spanPntDcAmt").text(result.spanPntDcAmt.addComma()+"원");
+			$(".spanSavePntAmt").text(result.spanSavePntAmt.addComma()+"P");
+			*/
+		}
+	);
+}
+
+//  사유
+var fnChangeChgReason = function(reasonCd){
+	var customerReasonArr = ['G686_10'];
+
+	isCustomer = false;
+	
+	// 귀책사유체크(취소,반품,교환)
+	for (i=0 ; i<customerReasonArr.length ; i++) {
+		if (customerReasonArr[i] == reasonCd) {
+			isCustomer = true;
+		}
+	}
+	
+	// 귀책사유설정
+	if (isCustomer) {
+		$("#imputeReason").text("고객");
+	} else {
+		$("#imputeReason").text("회사");
+	}
+
+	$('#cancelRequestFrm input[name=chgReason]').val(reasonCd);
+	
+	// 환불예상금액계산
+	fnCalculateRefundAmt();
+}
+
+// 취소신청/완료
+var fnCnclReq = function (reqGbn) {
+	var temp 					= false;
+	var custNo					= cancelRequestTargetList[0].custNo;
+	var ordDtlStat				= cancelRequestTargetList[0].ordDtlStat;
+	var allCanYn 				= "N";
+	var allCanYnBeforePayment	= "N";
+	
+	var accountNo 				= "";
+	var accountNm 				= "";
+	var bankCd 					= "";
+	
+	// 취소완료, 취소승인
+	let chk = false;
+	if (reqGbn == "cnclReq" || reqGbn == "cnclReqComplete" || reqGbn == "cnclComplete") {
+		
+		// 2021.05.25 수정
+		var ordDtlNoArr 		= [];
+		var cnclRtnReqQtyArr 	= [];
+		
+		// 1. 취소신청수량 체크
+		for (i=0 ; i<cancelRequestTargetList.length ; i++) {
+			if (cancelRequestTargetList[i].ordCanChgQty > 0) {
+				// 취소신청값설정
+				ordDtlNoArr.push(cancelRequestTargetList[i].ordDtlNo);
+				cnclRtnReqQtyArr.push(cancelRequestTargetList[i].ordCanChgQty);
+				temp = true;
+			}
+		}
+		
+		if (temp == false) {
+			mcxDialog.alert('취소신청수량을 입력하세요.');
+			return false;
+		}
+		
+		// 2. 입금대기건 & 전체취소 체크
+		if (ordDtlStat == "G013_10" && $("#spanPayAmt").text() != $("#spanRefundAmt").text()) {
+			alert("입금대기건은 전체 취소만 가능합니다.");
+			return false;
+		}
+		
+		// 2.1 전체취소 여부 적용
+		if (ordDtlStat == "G013_10" && $("#spanPayAmt").text() == $("#spanRefundAmt").text()) {
+			if (ordDtlStat == "G013_10") {
+				allCanYnBeforePayment = "Y";
+			} else {
+				allCanYn = "Y";
+			}
+		}
+		
+		// 3. 취소사유 체크
+		var chgReason = $("#cancelRequestFrm select[name=selectChgReason]").val();
+		if (gagajf.isNull(chgReason)) {
+			mcxDialog.alert("취소사유를 입력하세요."); 
+			return false;
+		}
+		
+		// 3. 환불계좌체크 (결제타입이 무통장 입금일때 사용)
+		if (payMeans == 'G014_20' && payStat == 'G016_30') {
+			if ($("#refundAccount .bankNm").eq(0).text() == null || $("#refundAccount .bankNm").eq(0).text() == '') {
+				mcxDialog.alert('환불계좌가 미등록 되어 있습니다.');
+				return false;
+			} else {
+				chk = true;
+			}
+
+			accountNo 	= $("#refundAccount .accountNo").eq(0).text();
+			accountNm 	= $("#refundAccount .accountNm").eq(0).text();
+			bankCd 		= $("#refundAccount .bankCd").eq(0).text();
+		}
+	}
+	
+	// 5. 추가정보설정
+	var chgerNm 	= orderInfoList[0].ordNm;
+	var chgerEmail 	= orderInfoList[0].ordEmail;
+	var chgerPhnno 	= orderInfoList[0].ordPhnno;
+	var chgerTelno 	= orderInfoList[0].ordTelno;
+	var custNo		= orderInfoList[0].custNo;
+
+	// 2021.01.26 화면통합
+	// 6. 취소신청, 취소완료 여부 체크
+	// 취소신청
+	if (reqGbn == "cnclReq") {
+		confirmStr 		= "취소신청하시겠습니까?";
+		cnclUrl 		= '/orderChange/cnclComplete/';
+	}
+	// 취소완료
+	else if (reqGbn == "cnclComplete") {
+		confirmStr 		= "취소완료하시겠습니까?";
+		cnclUrl 		= '/orderChange/cnclComplete/';
+
+		// 2021.11.30 card007 교환배송비 취소 불가 시 PG점프 처리
+		if (wdGb == 'W' && delvPayMeans == 'G014_60') {
+			confirmStr = '교환배송비 [' + (addPayCost / 2).addComma() + '원] 취소불가로 PG점프 처리 됩니다. <br /> 요청번호 [' + ordChgSq + '] 에 대한 취소승인 처리를 하시겠습니까?';
+		} else if (wdGb == 'D' && canDeliveryCancelYn == 'N') {
+			confirmStr = '교환배송비 [' + addPayCost.addComma() + '원] 취소불가로 PG점프 처리 됩니다. <br /> 요청번호 [' + ordChgSq + '] 에 대한 취소승인 처리를 하시겠습니까?';
+		}
+	}
+	// 취소신청승인
+	else if (reqGbn == "cnclReqComplete") {
+		confirmStr 		= "요청번호 [" + ordChgSq + "] 에 대한 취소승인 처리를 하시겠습니까?";
+		cnclUrl 		= '/orderChange/cnclComplete/';
+	}
+	// 취소신청철회
+	else if (reqGbn == "cnclReqCancel") {
+		confirmStr 		= "요청번호 [" + ordChgSq + "] 에 대한 요청철회 처리를 하시겠습니까?";
+		cnclUrl 		= '/orderChange/cnclReqCancel/';
+	}
+	
+	// 7. 추가정보설정
+	var ordNm 		= orderInfoList[0].ordNm;
+	var ordPhnno 	= orderInfoList[0].ordPhnno;
+	var custNo		= orderInfoList[0].custNo;
+	var delvFeeCd	= orderInfoList[0].delvFeeCd;
+	var chgReason	= $('#cancelRequestFrm input[name=chgReason]').val();
+	var depositAmt	= $('#depositAmt').val();
+	
+	// 2021.07.22 교환미출고대상은 품절만 있음
+	if (ordChgSq > 0 && chgStat == 'G685_40') {
+		chgReason	= "G686_30";
+	}
+	
+	if (!$('#pgStat').is(':checked')) {
+		depositAmt = 0;
+	}
+
+	var jsonObj = {
+		"ordNo"						: $('#cancelRequestFrm input[name=ordNo]').val()
+		,"chgReason" 				: chgReason
+		,"chgMemo"					: $('#chgMemo').val()
+		,"ordDtlNoArr"				: ordDtlNoArr
+		,"cnclRtnReqQtyArr"			: cnclRtnReqQtyArr
+		,"accountNo" 				: accountNo
+		,"accountNm" 				: accountNm
+		,"bankCd" 					: bankCd
+		,"allCanYn"					: allCanYn
+		,"allCanYnBeforePayment"	: allCanYnBeforePayment
+		,"isCustomer" 				: isCustomer
+		,"chgerNm"					: chgerNm
+		,"chgerEmail"				: chgerEmail
+		,"chgerZipcode"				: ""
+		,"chgerBaseAddr"			: ""
+		,"chgerDtlAddr"				: ""
+		,"chgerPhnno"				: chgerPhnno
+		,"chgerTelno"				: chgerTelno
+		,"chgerRtnMemo"				: ""
+		,"reqGbn"					: reqGbn
+		,"ordChgSq"					: ordChgSq
+		,"custNo"					: custNo
+		,"ordNm"					: ordNm
+		,"ordPhnno"					: ordPhnno
+		,"delvFeeCd"				: delvFeeCd
+		,"chgStat"					: chgStat
+		,"wdGb"						: wdGb
+		,"addPayCost"				: addPayCost
+		,"pgStat"					: $('#pgStat').is(':checked') ? 'Y' : 'N'
+		,"msgStat"					: $('#msgStat').is(':checked') ? 'Y' : 'N'
+		,"depositAmt"				: depositAmt
+	}
+
+	// 주문번호, 취소사유, 취소메모, (취소, 반품, 교환 신청 정보 목록), 환불계좌
+	var jsonData = JSON.stringify(jsonObj);
+	
+	mcxDialog.confirm(confirmStr, {
+		cancelBtnText		: "취소",
+		sureBtnText			: "확인",
+		sureBtnClick		: function() {
+			if (chk && jsonObj.pgStat == 'N') {
+				// 환불계좌 유효성 체크
+				gagajf.ajaxJsonSubmit('/business/account/check', jsonData, function(result) {
+					if (result.isValid) { // 유효하면 true
+						gagajf.ajaxJsonSubmit(
+							cnclUrl
+							, jsonData
+							, function() {
+								// 2021.06.21 교환품절취소가 아닐때 주문상세화면 다시 로딩하지 않음
+								if (chgStat == 'G685_40') {
+									// 교환배송 취소대상목록 조회 실행
+									$('#btnSearch').trigger("click");
+								} else {
+									uifnPopupClose('popupOrderDetail');
+									fnReOpenOrderDetailPopup();
+								}
+								uifnPopupClose('popupCancelRequestForm');
+							}
+						);
+					} else {
+						mcxDialog.alert('환불계좌가 유효하지 않습니다.');
+						return false;
+					}
+				});
+			} else {
+				gagajf.ajaxJsonSubmit(
+					cnclUrl
+					, jsonData
+					, function() {
+						// 2021.06.21 교환품절취소가 아닐때 주문상세화면 다시 로딩하지 않음
+						if (chgStat == 'G685_40') {
+							// 교환배송 취소대상목록 조회 실행
+							$('#btnSearch').trigger("click");
+						} else {
+							uifnPopupClose('popupOrderDetail');
+							fnReOpenOrderDetailPopup();
+						}
+						uifnPopupClose('popupCancelRequestForm');
+					}
+				);
+			}
+		}
+	});
+}
+
+// 환불계좌 등록
+var fnCreateOrderRfAccount = function () {	
+	var actionUrl = "/orderChange/refund/account/create/form?ordNo=" + ordNo ;
+	cfnOpenModalPopup(actionUrl, 'popupCreateRefundAccount');
+};
+
+// 환불계좌 정보
+var fnBindOrderRfAccountInfo = function () {
+	var jsonObj = {
+		"ordNo" : ordNo
+	}
+	
+	var jsonData = JSON.stringify(jsonObj);
+	
+	gagajf.ajaxJsonSubmit(
+		'/orderChange/refund/account/info/list'
+		, jsonData
+		, function (result) {
+			if (result.orderRfAccountInfo[0].bankNm != null && result.orderRfAccountInfo[0].bankNm != '') {
+				$("#refundAccount .bankNm").text(result.orderRfAccountInfo[0].bankNm);
+				$("#refundAccount .bankCd").text(result.orderRfAccountInfo[0].bankCd);
+				$("#refundAccount .accountNo").text(result.orderRfAccountInfo[0].accountNo);
+				$("#refundAccount .accountNm").text(result.orderRfAccountInfo[0].accountNm);
+				$("#refundAccount .defaultYn").text(result.orderRfAccountInfo[0].defaultYn);
+			}
+		}
+	);
+};
+
+// PG점프 버튼 클릭 이벤트
+var fnChangePgStat = function() {
+	if ($('#pgStat').is(':checked')) {
+		$('#depositAmt').attr('readonly', false);
+	} else {
+		$('#depositAmt').val(0);
+		$('#depositAmt').attr('readonly', true);
+	}
+}
+
+$(document).ready(function() {
+	// 1. 그리드생성
+	gagaAgGrid.createGrid('gridOrderCancelRequestList'		, gridOptionsCancelReqList);			// 주문정보
+	gagaAgGrid.createGrid('gridOrderCancelRequestToBeList'	, gridOptionsCancelReqToBeList);		// 취소정보
+	gagaAgGrid.createGrid('gridDelvCdList'					, gridOptionsDelvCdList);				// 배송비정보
+	
+	// 2. 그리드 데이타 싱크작업
+	gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);								// 주문정보
+	
+	// 2.1 TOTAL ROWS 없애기
+	gagaAgGrid.hideStatusBar('gridOrderCancelRequestList');
+	gagaAgGrid.hideStatusBar('gridOrderCancelRequestToBeList');
+	gagaAgGrid.hideStatusBar('gridDelvCdList');
+	
+	// 3. 환불예상금액계산
+	fnCalculateRefundAmt(null);
+	
+	// 4. 무통장입금아닌경우 환불계좌 그리드 숨김처리
+	if (payMeans !== 'G014_20') {
+		$('#refundAccount').addClass("off");
+	} else {
+		fnBindOrderRfAccountInfo();
+	}
+
+	// 네이버페이 주문형일 경우 취소 접수, 완료 버튼 hide
+	if(pgGb == "NAVER_ORDER") {
+		$("#cnclReqBtn").css("display", "none");
+		$("#cnclCompleteBtn").css("display", "none");
+	}
+	
+	// 5. 취소신청, 취소완료, 취소승인, 취소철회 버튼 제어
+	if (ordChgSq > 0 && chgStat != 'G685_40') {
+		$("#cnclReqBtn").css("display"			, "none");
+		$("#cnclCompleteBtn").css("display"		, "none");
+	} else {
+		$("#cnclReqCompleteBtn").css("display"	, "none");
+		$("#cnclReqCancelBtn").css("display"	, "none");
+		
+		// 교환배송미출고대상
+		if (chgStat == 'G685_40') {
+			$("#cnclReqBtn").css("display", "none");
+			$("#cnclCompleteBtn").css("display", "inline-block");		// 교환배송미출고 대상에서 왔을 경우 취소완료버튼 노출(네이버페이도 노출을 위해 추가) - xodud1202 21.07.27
+		}
+	}
+	
+	// 6. 취소사유 선택
+	if (ordChgSq > 0 && chgStat != 'G685_40') {
+		let chgReasonTmp = $('#cancelRequestFrm input[name=chgReason]').val();
+		$("select[name='selectChgReason']").val(chgReasonTmp);									// 변경사유코드
+		$("select[name='selectChgReason']").attr("disabled", "true");							// 변경사유 비활성화
+		$("#chgMemo").text(chgMemo);															// 변경사유메모
+		$("#chgMemo").attr("disabled", "true");													// 변경사유메모 비활성화
+		fnChangeChgReason(chgReasonTmp);														// 귀책사유
+	}
+	
+	// 2021.06.21 교환배송미출고대상
+	if (ordChgSq > 0 && chgStat == 'G685_40') {
+		$("select[name='selectChgReason']").val("G686_30");
+		$("select[name='selectChgReason']").attr("disabled", "true");							// 변경사유 비활성화
+		fnChangeChgReason(chgReason);															// 귀책사유
+	}
+	
+	// debug mode 해제
+	if (temp3) {
+		$("#h4OrderCancelRequestToBeList").css("display", "none");
+		$("#gridOrderCancelRequestToBeList").css("display", "none");
+		$("#h4DelvCdList").css("display", "none");
+		$("#gridDelvCdList").css("display", "none");
+	}
+	
+	// 2021.05.13 높이자동조절
+	var cancelRequestTargetHeight = 50 + (40 * cancelRequestTargetCnt);
+	$("#gridOrderCancelRequestList").css("height" , cancelRequestTargetHeight+"px");
+});
+
+// 2021.06.17 구성상품 내역 팝업 호출 
+var fnOrderDetailItemForm = function (ordDtlNo) {
+	var actionUrl = "/delivery/detail/item/form/" + ordDtlNo;
+	cfnOpenModalPopup(actionUrl, 'popupDeliveryDetailItemForm');
+}
+</script>
+</html>
+
+
+
+
+

+ 136 - 35
src/main/webapp/WEB-INF/views/order/ExchangeRequestForm.html

@@ -238,7 +238,6 @@ var recallExceptionInfo		= [[${recallExceptionInfo}]];					// 회수 예외 정
 var rtnLocInfo				= [[${rtnLocInfo}]];							// 반송지주소정보
 var addPayCost				= 0;											// 추가배송비
 var addDelvFee				= 0;											// 추가배송비
-//var addDelvFeeList			= [];											// 추가배송비정보
 var exchangeRequestList		= [];											// 교환요청목록
 var exchangeInfoList;														// 교환정보
 var wdGb;																	// 회수방법
@@ -261,20 +260,20 @@ if (ordChgSq > 0) {
 	npayChangeHoldYn		= orderChangeDetailList[0].npayChangeHoldYn;	// 네이버페이 주문형 반품/교환 보류 여부
 
 	if (ordChgGb == 'G681_40') {
-		chgReason			= orderChangeDetailList[0].chgReason;		// 변경사유코드
-		chgReasonNm			= orderChangeDetailList[0].chgReasonNm;		// 변경사유코드명
-		chgMemo				= orderChangeDetailList[0].chgMemo;			// 변경사유메모
-		wdGb				= orderChangeDetailList[0].wdGb;			// 회수방법
-		chgOrdDtlStat		= '';										// 교환상품상세상태값
-		delvAddrSq			= '';										// 교환상품배송지일련번호
+		chgReason			= orderChangeDetailList[0].chgReason;			// 변경사유코드
+		chgReasonNm			= orderChangeDetailList[0].chgReasonNm;			// 변경사유코드명
+		chgMemo				= orderChangeDetailList[0].chgMemo;				// 변경사유메모
+		wdGb				= orderChangeDetailList[0].wdGb;				// 회수방법
+		chgOrdDtlStat		= '';											// 교환상품상세상태값
+		delvAddrSq			= '';											// 교환상품배송지일련번호
 	} else {
-		chgReason			= exchangeInfoList[0].chgReason;			// 변경사유코드
-		chgReasonNm			= exchangeInfoList[0].chgReasonNm;			// 변경사유코드명
-		chgMemo				= exchangeInfoList[0].chgMemo;				// 변경사유메모
-		wdGb				= exchangeInfoList[0].wdGb;					// 회수방법
-		chgOrdDtlStat		= exchangeInfoList[0].ordDtlStat;			// 교환상품상세상태값
-		delvAddrSq			= exchangeInfoList[0].delvAddrSq;			// 교환상품배송지일련번호
-		addPayCost			= exchangeInfoList[0].addPayCost;			// 추가배송비
+		chgReason			= exchangeInfoList[0].chgReason;				// 변경사유코드
+		chgReasonNm			= exchangeInfoList[0].chgReasonNm;				// 변경사유코드명
+		chgMemo				= exchangeInfoList[0].chgMemo;					// 변경사유메모
+		wdGb				= exchangeInfoList[0].wdGb;						// 회수방법
+		chgOrdDtlStat		= exchangeInfoList[0].ordDtlStat;				// 교환상품상세상태값
+		delvAddrSq			= exchangeInfoList[0].delvAddrSq;				// 교환상품배송지일련번호
+		addPayCost			= exchangeInfoList[0].addPayCost;				// 추가배송비
 	}
 	
 	wdBfSendYn				= orderChangeDetailList[0].wdBfSendYn;			// 선발송여부
@@ -289,7 +288,7 @@ var columnExchangeReqList = [
 			{headerName: "주문번호"		, field: "ordNo"			, width: 80		, cellClass: 'text-center', hide: temp1},
 			{headerName: "주문상세"		, field: "ordDtlNo"			, width: 80		, cellClass: 'text-center'},
 			{headerName: "주문상세"		, field: "ordDtlStat"		, width: 80		, cellClass: 'text-center', hide: temp1},
-			{headerName: "주문상세상태"		, field: "ordDtlStatNm"		, width: 100	, cellClass: 'text-center', hide: temp1},
+			{headerName: "주문상세상태"	, field: "ordDtlStatNm"		, width: 100	, cellClass: 'text-center', hide: temp1},
 			{headerName: "상품코드"		, field: "goodsCd"			, width: 100	, cellClass: 'text-center'},
 			{headerName: "상품명"			, field: "goodsNm"			, width: 130	, cellClass: 'text-center'},
 			{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center', hide: temp2}
@@ -354,6 +353,7 @@ var columnExchangeReqList = [
 					var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
 					return cnclRtnReqQty;
 				}
+				, hide			: temp1 
 			},
 			{headerName: "교환가능옵션"	, field: "optCd2s"			, width: 200		, cellClass: 'text-center', hide: temp2},
 			{
@@ -1096,41 +1096,132 @@ var fnSetExchangeAddr = function(){
 
 // 교환옵션 변경 이벤트
 var fnChangeOption = function(param) {
-	var opt = $(param).val().split('/');
-	var optCd = opt[0];
-	var optCd2 = opt[1];
-	var ordDtlNo = $(param).attr('ordDtlNo');
-	var ordDtlItemSq = $(param).attr('ordDtlItemSq');
+	var opt 			= $(param).val().split('/');
+	var optCd 			= opt[0];
+	var optCd2 			= opt[1];
+	var ordDtlNo 		= $(param).attr('ordDtlNo');
+	var ordDtlItemSq 	= $(param).attr('ordDtlItemSq');
 
 	$.each(cancelRequestTargetList, function(idx, item){
 		if (item.ordDtlNo == ordDtlNo && item.ordDtlItemSq == ordDtlItemSq) {
-			var stockQtyArr = item.currStockQtys.split(',');
-			var sizeCdArr = item.optCd2s.split(',');
-			var stockIdx = sizeCdArr.indexOf(optCd2);
-			var stockQty = stockQtyArr[stockIdx];
-			item.currStockQty = stockQty;
-			item.ordChgOpt = optCd;
+			var stockQtyArr 	= item.currStockQtys.split(',');
+			var sizeCdArr 		= item.optCd2s.split(',');
+			var stockIdx 		= sizeCdArr.indexOf(optCd2);
+			var stockQty 		= stockQtyArr[stockIdx];
+			
+			item.currStockQty 	= stockQty;
+			item.ordChgOpt 		= optCd;
 		}
 	});
+	
+	fnChangeQty(param);
+}
 
-	//gridOptionsExchangeReqList.api.setRowData(cancelRequestTargetList);
+//환불예상금액계산
+var fnCalculateRefundAmt = function (obj) {
+	if (obj != null) {
+		for (i=0 ; i<cancelRequestTargetList.length ; i++) {
+			var orDtlNo 		= $(obj).attr("ordDtlNo");
+			var ordCanChgQty 	= $(obj).val();
+			
+			if (cancelRequestTargetList[i].ordDtlNo == orDtlNo) {
+				cancelRequestTargetList[i].ordCanChgQty = ordCanChgQty;
+			}
+		}
+		// 주문변경대상정보 재설정
+		gridOptionsExchangeReqList.api.setRowData(cancelRequestTargetList);
+	}
+	
+	if (cancelRequestTargetList.length == 0) {
+		alert("요청 대상정보가 존재 하지 않습니다.");
+		uifnPopupClose('popupCancelRequestForm');
+		return false;
+	}
+	
+	// 2021.05.25 수정
+	var ordDtlNoArr 		= [];
+	var cnclRtnReqQtyArr 	= [];
+	
+	// 1. 반품신청수량 체크
+	for (i=0 ; i<cancelRequestTargetList.length ; i++) {
+		if (cancelRequestTargetList[i].ordCanChgQty > 0) {
+			// 반품신청값설정
+			ordDtlNoArr.push(cancelRequestTargetList[i].ordDtlNo);
+			cnclRtnReqQtyArr.push(cancelRequestTargetList[i].ordCanChgQty);
+		}
+	}
+	
+	// 2. 추가정보설정
+	var chgerNm 	= orderInfoList[0].ordNm;
+	var chgerEmail 	= orderInfoList[0].ordEmail;
+	var chgerPhnno 	= orderInfoList[0].ordPhnno;
+	var chgerTelno 	= orderInfoList[0].ordTelno;
+	var custNo		= orderInfoList[0].custNo;
+	var delvFeeCd	= orderInfoList[0].delvFeeCd;
+	
+	// 환불금액계산호출
+	var jsonObj = {
+		"ordNo"					: ordNo
+		,"ordDtlNoArr"			: ordDtlNoArr
+		,"cnclRtnReqQtyArr"		: cnclRtnReqQtyArr
+		,"isCustomer" 			: isCustomer
+		,"chgerNm"				: chgerNm
+		,"chgerEmail"			: chgerEmail
+		,"chgerPhnno"			: chgerPhnno
+		,"custNo"				: custNo
+		,"ordNm"				: chgerNm
+		,"ordPhnno"				: chgerPhnno
+		,"delvFeeCd"			: delvFeeCd
+	}
+	
+	var jsonData = JSON.stringify(jsonObj);
+	
+	gagajf.ajaxJsonSubmit(
+		'/orderChange/cancel/refundAmt'
+		, jsonData
+		, function(result) {
+			/*
+			// 2021.12.01 취소금액설정
+			if (result.cancelOrderRefundList != null && result.cancelOrderRefundList.length > 0) {
+				for (i=0 ; i<result.cancelOrderRefundList.length ; i++) {
+					for (j=0 ; j<cancelRequestTargetList.length ; j++) {
+						if (result.cancelOrderRefundList[i].ordDtlNo == cancelRequestTargetList[j].ordDtlNo) {
+							cancelRequestTargetList[j].cnclRtnAmt 		= result.cancelOrderRefundList[i].cnclRtnAmt;		// 취소금액
+							cancelRequestTargetList[j].cpn1DcAmt 		= result.cancelOrderRefundList[i].cpn1DcAmt;		// 즉시할인쿠폰금액
+							cancelRequestTargetList[j].tmtb1DcAmt 		= result.cancelOrderRefundList[i].tmtb1DcAmt;		// 수량할인다다익선금액
+							cancelRequestTargetList[j].tmtb2DcAmt 		= result.cancelOrderRefundList[i].tmtb2DcAmt;		// 금액할인다다익선금액
+							cancelRequestTargetList[j].goodsCpnDcAmt 	= result.cancelOrderRefundList[i].goodsCpnDcAmt;	// 상품쿠폰금액
+							cancelRequestTargetList[j].cartCpnDcAmt 	= result.cancelOrderRefundList[i].cartCpnDcAmt;		// 장바구니쿠폰금액
+							cancelRequestTargetList[j].pntDcAmt 		= result.cancelOrderRefundList[i].pntDcAmt;			// 포인트금액
+							cancelRequestTargetList[j].prePntDcAmt 		= result.cancelOrderRefundList[i].prePntDcAmt;		// 선포인트금액
+							cancelRequestTargetList[j].gfcdUseAmt 		= result.cancelOrderRefundList[i].gfcdUseAmt;		// 상품권적용금액
+							cancelRequestTargetList[j].realOrdAmt 		= result.cancelOrderRefundList[i].realOrdAmt;		// 실결제금액
+						}
+					}
+				}
+				
+				// 주문변경대상정보 재설정
+				gridOptionsExchangeReqList.api.setRowData(cancelRequestTargetList);
+			}
+			*/
+		}
+	);
 }
 
 // 교환수량 변경 이벤트
 var fnChangeQty = function(param) {
-	var chgQty = $(param).val();
-	var ordDtlNo = $(param).attr('ordDtlNo');
+	var chgQty 		= $(param).val();				// 변경수량
+	var ordDtlNo 	= $(param).attr('ordDtlNo');	// 주문상세번호
 	var exchangeRequestTargetList = [];
+	
+	var temp		= true;
 
 	$.each(cancelRequestTargetList, function(idx, item){
 		if (item.ordDtlNo == ordDtlNo) {
 			if (gagajf.isNull(item.ordChgOpt) && chgQty > 0) {
-				mcxDialog.alert('교환옵션을 선택해주세요.');
-				return false;
+				temp = false;
 			}
-			
 			item.chgQty = chgQty;
-			
 			if (chgQty > 0) {
 				exchangeRequestTargetList.push(item);
 			}
@@ -1140,6 +1231,12 @@ var fnChangeQty = function(param) {
 			exchangeRequestTargetList.push(item);
 		}
 	});
+	
+	// 2021.12.02 소스수정
+	if (temp == false) {
+		mcxDialog.alert('교환옵션을 선택해주세요.');
+		return false;
+	}
 
 	// 추가배송비 설정
 	fnAddDelvFee(exchangeRequestTargetList);
@@ -1147,7 +1244,8 @@ var fnChangeQty = function(param) {
 	// 교환대상목록 설정
 	exchangeRequestList = exchangeRequestTargetList;
 
-	//gridOptionsExchangeReqList.api.setRowData(cancelRequestTargetList);
+	// 2021.12.02 교환취소금액계산
+	fnCalculateRefundAmt(param);
 }
 
 // 추가배송비 설정
@@ -1384,7 +1482,7 @@ $(document).ready(function() {
 			$('input:radio[name="wdGb"]:radio[value="D"]').prop('checked', true);
 			$('.chger').css('display', 'none');
 		} else {
-			$('input:radio[name="wdGb"]:radio[value="W"]').prop('checked', true);
+			$(' [name="wdGb"]:radio[value="W"]').prop('checked', true);
 			$('#delvCdList').css('display', 'none');
 		}
 	}
@@ -1468,6 +1566,9 @@ $(document).ready(function() {
 	cfnGetTextLength($('#chgMemo'), 1000, $('#chgMemoCount'));
 	cfnGetTextLength($('#chgerRtnMemo'), 1000, $('#chgerRtnMemoCount'));
 	cfnGetTextLength($('#delvMemo'), 1000, $('#delvMemoCount'));
+	
+	// 수량체크
+	fnChangeQty();
 });
 </script>
 </html>

+ 28 - 58
src/main/webapp/WEB-INF/views/order/RtnReqForm.html

@@ -173,58 +173,6 @@
 					</tbody>
 				</table>
 				
-				<!-- 
-				<h4>환불예정금액</h4>
-				<table class="frmStyle">
-					<colgroup>
-						<col style="width:20%;"/>
-						<col style="width:30%;"/>
-						<col style="width:20%;"/>
-						<col style="width:30%;"/>
-					</colgroup>
-					<tbody>
-						<tr>
-							<th>총 결제 금액</th>
-							<td colspan="3"><span id="spanPayAmt"></span>원 (상품 실결제 금액 : <span id="spanSumRealOrdAmt"></span>원, 배송금액 : <span id="spanSumDeliveryFee"></span>원) </td>
-						</tr>
-						<tr>
-							<th>주문 상품 금액</th>
-							<td><span id="spanOrdAmt"></span>원</td>
-							<th>취소 상품 금액</th>
-							<td><span id="spanCnclRtnAmt"></span>원</td>
-						</tr>
-						<tr>
-							<th>취소 사용 포인트</th>
-							<td colspan="3"><span id="spanTotPntDcAmt"></span>원 (고객 포인트 : <span id="spanPntDcAmt"></span>원 + 상품 선포인트 : <span id="spanPrePntDcAmt"></span>원) </td>
-						</tr>
-						<tr>
-							<th>취소 사용 쿠폰금액</th>
-							<td colspan="3"><span id="spanCpnDcAmt"></span>원 (즉시할인쿠폰 : <span id="spanCpn1DcAmt"></span>원 + 상품쿠폰 : <span id="spanGoodsCpnDcAmt"></span>원 + 장바구니쿠폰 : <span id="spanCartCpnDcAmt"></span>원 + 배송비쿠폰 : <span id="spanDelvCpnDcAmt"></span>원)</td>
-						</tr>
-						<tr>
-							<th>취소 다다익선 금액</th>
-							<td colspan="3"><span id="spanTmtbDcAmt"></span>원 (수량할인 : <span id="spanTmtb1DcAmt"></span>원 + 금액할인 : <span id="spanTmtb2DcAmt"></span>원)</td>
-						</tr>
-						
-						<tr>
-							<th>취소 고객 상품권 금액</th>
-							<td colspan="3"><span id="spanGfcdUseAmt"></span>원</td>
-						</tr>
-						
-						<tr>
-							<th>취소 상품 실결제 금액</th>
-							<td><span id="spanRealCnclRtnAmt"></span>원</td>
-							<th>환불 배송 금액</th>
-							<td><span id="spanRealDelvAmt"></span>원</td>
-						</tr>
-						<tr>
-							<th>환불 금액 합계</th>
-							<td colspan="3"><span id="spanRefundAmt"></span>원</td>
-						</tr>
-					</tbody>
-				</table>
-				 -->
-				
 				<!--  회수지정보 -->
 				<div id="chgerAddress">
 					<h4>회수지 정보</h4>
@@ -374,9 +322,8 @@ var columnCancelReqList = [
 	{headerName: "주문상세상태"	, field: "ordDtlStatNm"		, width: 100	, cellClass: 'text-center'	, hide: temp1},
 	{headerName: "상품코드"		, field: "goodsCd"			, width: 110	, cellClass: 'text-left'	, hide: temp2},
 	{headerName: "SKUCODE"		, field: "optCd"			, width: 100	, cellClass: 'text-center'	, hide: temp2},
-	{headerName: "상품명"		, field: "goodsNm"			, width: 200	, cellClass: 'text-left'	, hide: temp2},
-	//{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 80		, cellClass: 'text-center'	, hide: temp2},
-	{headerName: "상품타입"	, field: "goodsTypeNm"	, width: 80, cellClass: 'text-center',
+	{headerName: "상품명"			, field: "goodsNm"			, width: 200	, cellClass: 'text-left'	, hide: temp2},
+	{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 80		, cellClass: 'text-center',
 		cellRenderer: function (params) {
 			var option;
 			if (params.data.goodsType == 'G056_S') {
@@ -418,6 +365,7 @@ var columnCancelReqList = [
 			var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
 			return cnclRtnReqQty;
 		}
+		, hide 			: temp1 
 	},
 	{
 		headerName		: "취소/반품"
@@ -1049,9 +997,9 @@ var fnCalculateRefundAmt = function (obj) {
 	}
 
 	// 신청수량이 없거나 반품사유 선택 안했을 시 계산 안함
-	if (chk == 0 || $('#cancelRequestFrm input[name=chgReason]').val() == '') {
-		return false;
-	}
+	//if (chk == 0 || $('#cancelRequestFrm input[name=chgReason]').val() == '') {
+		//return false;
+	//}
 
 	// 2. 추가정보설정
 	var chgerNm 	= orderInfoList[0].ordNm;
@@ -1094,6 +1042,28 @@ var fnCalculateRefundAmt = function (obj) {
 			gridOptionsCancelReqToBeList.api.setRowData(result.cancelOrderRefundList);
 			gridOptionsDelvInfoList.api.setRowData(result.cancelDelvRefundList);
 			
+			// 2021.12.01 취소금액설정
+			if (result.cancelOrderRefundList != null && result.cancelOrderRefundList.length > 0) {
+				for (i=0 ; i<result.cancelOrderRefundList.length ; i++) {
+					for (j=0 ; j<cancelRequestTargetList.length ; j++) {
+						if (result.cancelOrderRefundList[i].ordDtlNo == cancelRequestTargetList[j].ordDtlNo) {
+							cancelRequestTargetList[j].cnclRtnAmt 		= result.cancelOrderRefundList[i].cnclRtnAmt;		// 취소금액
+							cancelRequestTargetList[j].cpn1DcAmt 		= result.cancelOrderRefundList[i].cpn1DcAmt;		// 즉시할인쿠폰금액
+							cancelRequestTargetList[j].tmtb1DcAmt 		= result.cancelOrderRefundList[i].tmtb1DcAmt;		// 수량할인다다익선금액
+							cancelRequestTargetList[j].tmtb2DcAmt 		= result.cancelOrderRefundList[i].tmtb2DcAmt;		// 금액할인다다익선금액
+							cancelRequestTargetList[j].goodsCpnDcAmt 	= result.cancelOrderRefundList[i].goodsCpnDcAmt;	// 상품쿠폰금액
+							cancelRequestTargetList[j].cartCpnDcAmt 	= result.cancelOrderRefundList[i].cartCpnDcAmt;		// 장바구니쿠폰금액
+							cancelRequestTargetList[j].pntDcAmt 		= result.cancelOrderRefundList[i].pntDcAmt;			// 포인트금액
+							cancelRequestTargetList[j].prePntDcAmt 		= result.cancelOrderRefundList[i].prePntDcAmt;		// 선포인트금액
+							cancelRequestTargetList[j].gfcdUseAmt 		= result.cancelOrderRefundList[i].gfcdUseAmt;		// 상품권적용금액
+							cancelRequestTargetList[j].realOrdAmt 		= result.cancelOrderRefundList[i].realOrdAmt;		// 실결제금액
+						}
+					}
+				}
+				// 주문변경대상정보 재설정
+				gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
+			}
+			
 			let spanPntDcAmt 		= Number(result.spanPntDcAmt);							// 환불 포인트 금액
 			let spanSavePntAmt 		= Number(result.spanSavePntAmt);						// 적립 예정 포인트 환수 금액
 			let spanGfcdUseAmt 		= Number(result.spanGfcdUseAmt);						// 환불 상품권 금액

+ 4 - 0
src/main/webapp/WEB-INF/views/system/UserForm.html

@@ -204,6 +204,10 @@
 		$('#searchForm')[0].reset();
 		$('#searchForm input[name=supplyCompList]').val('');
 		$('#supplyCompTxt').html('');
+		
+		// 2021.12.08 card007 초기화 버튼 입점벤더 처리 추가
+		$('#searchForm input[name=supplyVendorCd]').val('');
+		$('#searchForm input[name=supplyVendorNm]').val('');
 	});
 	
 	// 조회

+ 175 - 95
src/main/webapp/WEB-INF/views/withdraw/RefundDetailForm.html

@@ -205,61 +205,6 @@
 							</tr>
 						</tbody>
 					</table>
-					
-					<!-- 
-					<h4>환불예정금액</h4>
-					<table class="frmStyle">
-						<colgroup>
-							<col style="width:20%;"/>
-							<col style="width:30%;"/>
-							<col style="width:20%;"/>
-							<col style="width:30%;"/>
-						</colgroup>
-						<tbody>
-							<tr>
-								<th>총 결제 금액</th>
-								<td colspan="3"><span id="spanPayAmt"></span>원 (상품 실결제 금액 : <span id="spanSumRealOrdAmt"></span>원, 배송금액 : <span id="spanSumDeliveryFee"></span>원, 배송비쿠폰할인금액: <span id="spanDelvCpnDcAmt"></span>원)</td>
-							</tr>
-							<tr>
-								<th>주문 상품 금액</th>
-								<td><span id="spanOrdAmt"></span>원</td>
-								<th>취소 상품 금액</th>
-								<td><span id="spanCnclRtnAmt"></span>원</td>
-							</tr>
-							<tr>
-								<th>취소 사용 포인트</th>
-								<td colspan="3"><span id="spanTotPntDcAmt"></span>원 (고객 포인트 : <span id="spanPntDcAmt"></span>원 + 상품 선포인트 : <span id="spanPrePntDcAmt"></span>원) </td>
-							</tr>
-							<tr>
-								<th>취소 사용 쿠폰금액</th>
-								<td colspan="3"><span id="spanCpnDcAmt"></span>원 (즉시할인쿠폰 : <span id="spanCpn1DcAmt"></span>원 + 상품쿠폰 : <span id="spanGoodsCpnDcAmt"></span>원 + 장바구니쿠폰 : <span id="spanCartCpnDcAmt"></span>원)</td>
-							</tr>
-							<tr>
-								<th>취소 다다익선 금액</th>
-								<td colspan="3"><span id="spanTmtbDcAmt"></span>원 (수량할인 : <span id="spanTmtb1DcAmt"></span>원 + 금액할인 : <span id="spanTmtb2DcAmt"></span>원)</td>
-							</tr>
-							
-							<tr>
-								<th>취소 고객 상품권 금액</th>
-								<td><span id="spanGfcdUseAmt"></span>원</td>
-								<th>추가 반품배송 금액</th>
-								<td><span id="spanTotRtnDelvFee"></span>원</td>
-							</tr>
-							
-							<tr>
-								<th>취소 상품 실결제 금액</th>
-								<td><span id="spanRealCnclRtnAmt"></span>원</td>
-								<th>추가 배송 금액</th>
-								<td><span id="spanTotDeliveryFee"></span>원</td>
-							</tr>
-
-							<tr>
-								<th>환불 금액 합계</th>
-								<td colspan="3"><span id="spanRefundAmt"></span>원</td>
-							</tr>
-						</tbody>
-					</table>
-					 -->
 				</div>
 				
 				<div>
@@ -274,43 +219,43 @@
 
 <script th:inline="javascript">
 /*<![CDATA[*/
-	var ordChgSq = [[${ordChgSq}]];	// 주문변경번호
-	var ordNo    = [[${ordNo}]];	// 주문번호 
-	var userNo   = [[${userNo}]]; 
+	var ordChgSq 		= [[${ordChgSq}]];	// 주문변경번호
+	var ordNo    		= [[${ordNo}]];	// 주문번호 
+	var userNo   		= [[${userNo}]]; 
 
-	var ordChgCnt = 0;	//회수신청건수
-	var chgGb = "반품";
+	var ordChgCnt 		= 0;	//회수신청건수
+	var chgGb 			= "반품";
 	
-	var toTalOrdQty = 0;	// 주문 총수량 
-	var ordInQty  	= 0;	// 반품 입고총수량 
-	var ordChgQty	= 0;	// 반품 신청총수량 
-	var delvExpnYn  = "";   // 출고예외(확정후 품절,불량)여부
-	var wdGb        = "";
-	var mallGb      = "";
-	var reFundInfo  = [[${refundConfirmPreInfo}]]; // 환불컨펌 정보
+	var toTalOrdQty 	= 0;	// 주문 총수량 
+	var ordInQty  		= 0;	// 반품 입고총수량 
+	var ordChgQty		= 0;	// 반품 신청총수량 
+	var delvExpnYn  	= "";   // 출고예외(확정후 품절,불량)여부
+	var wdGb        	= "";
+	var mallGb      	= "";
+	var reFundInfo  	= [[${refundConfirmPreInfo}]]; // 환불컨펌 정보
+	var temp1			= true;
 
 	var returnOrderInfo;
-
 	var columnDefsDetail = [
-		{headerName: "주문변경번호", 	field: "ordChgSq",	width: 100, minWidth: 100, cellClass: 'text-center'},
-		{headerName: "주문번호", 		field: "ordNo", 	width: 100, minWidth: 100, cellClass: 'text-center',
+		{headerName: "주문변경번호", 		field: "ordChgSq",		width: 100, minWidth: 100, cellClass: 'text-center'},
+		{headerName: "주문번호", 			field: "ordNo", 		width: 100, minWidth: 100, cellClass: 'text-center',
 			cellRenderer: function(params) {
 				return "<a href=\"javascript:void(0);\" onclick=\"cfnOpenOrderDetailPopup('" + params.value + "');\">" + params.value + "</a>";
 			}
 		},
-		{headerName: "상품명", 		field: "goodsNm",	width: 150, minWidth: 100},
-		{headerName: "상품코드", 		field: "goodsCd", 	width: 120, minWidth: 100, cellClass: 'text-center',
+		{headerName: "상품명", 			field: "goodsNm",		width: 150, minWidth: 100},
+		{headerName: "상품코드", 			field: "goodsCd", 		width: 120, minWidth: 100, cellClass: 'text-center',
 			cellRenderer: function(params) {
 				return "<a href=\"javascript:void(0);\" onclick=\"cfnOpenGoodsDetailPopup('U','" + params.value + "','');\">" + params.value + "</a>";
 			}
 		},
-		{headerName: "SKUCODE", 	field: "optCd", 	width: 100, minWidth: 100, cellClass: 'text-center'},
-		{headerName: "옵션1", 		field: "optCd1", 	width: 60, minWidth: 100, cellClass: 'text-center'},
-		{headerName: "옵션2", 		field: "optCd2", 	width: 60, minWidth: 100, cellClass: 'text-center'},
-		{headerName: "신청수량", 		field: "chgQty", 	width: 80, minWidth: 100, cellClass: 'text-center'},
-		{headerName: "회수수량", 		field: "wdQty", 	width: 80, minWidth: 100, cellClass: 'text-center'},
-		{headerName: "회수처리상태", 	field: "wdStat",	width: 120, minWidth: 100, cellClass: 'text-center'},
-		{headerName: "회수처리", 		field: "chgStat",	width: 120, minWidth: 100, cellClass: 'text-center'
+		{headerName: "SKUCODE", 		field: "optCd", 		width: 100, minWidth: 100, cellClass: 'text-center'},
+		{headerName: "옵션1", 			field: "optCd1", 		width: 60, minWidth: 100, cellClass: 'text-center'},
+		{headerName: "옵션2", 			field: "optCd2", 		width: 60, minWidth: 100, cellClass: 'text-center'},
+		{headerName: "신청수량", 			field: "chgQty", 		width: 80, minWidth: 100, cellClass: 'text-center'},
+		{headerName: "회수수량", 			field: "wdQty", 		width: 80, minWidth: 100, cellClass: 'text-center'},
+		{headerName: "회수처리상태", 		field: "wdStat",		width: 120, minWidth: 100, cellClass: 'text-center'},
+		{headerName: "회수처리", 			field: "chgStat",		width: 120, minWidth: 100, cellClass: 'text-center'
 			, cellRenderer : function(params) {
 				if (params.data.wdStatYn == 'N') {
 					if (params.data.wdQty > 0) {
@@ -323,15 +268,122 @@
 				}
 			}
 		},
-		{headerName: "주문상세번호", 	field: "ordDtlNo", 	width: 100, minWidth: 100, cellClass: 'text-center'},
-		{headerName: "등록일", 		field: "regDt", 	width: 100, minWidth: 100, cellClass: 'text-center'}
-		
+		{headerName: "주문상세번호", 		field: "ordDtlNo", 		width: 100, minWidth: 100, cellClass: 'text-center'},
+		{
+			headerName		: "주문금액"
+			, field			: "ordAmt"
+			, width			: 80
+			, cellClass		: 'text-right'
+			, cellRenderer	: function (params) {
+				return params.value.addComma();
+			}
+			, hide			: temp1
+		},
+		{
+			headerName		: "취소금액"
+			, field			: "cnclRtnAmt"
+			, width			: 80
+			, cellClass		: 'text-right'
+			, cellRenderer	: function (params) {
+				return params.value.addComma();
+			}
+			, hide			: temp1
+		},
+		{
+			headerName		: "즉시할인금액"
+			, field			: "cpn1DcAmt"
+			, width			: 80
+			, cellClass		: 'text-right'
+			, cellRenderer	: function (params) {
+				return params.value.addComma();
+			}
+			, hide			: temp1
+		},
+		{
+			headerName		: "다다익선1금액"
+			, field			: "tmtb1DcAmt"
+			, width			: 80
+			, cellClass		: 'text-right'
+			, cellRenderer	: function (params) {
+				return params.value.addComma();
+			}
+			, hide			: temp1
+		},
+		{
+			headerName		: "다다익선2금액"
+			, field			: "tmtb2DcAmt"
+			, width			: 80
+			, cellClass		: 'text-right'
+			, cellRenderer	: function (params) {
+				return params.value.addComma();
+			}
+			, hide			: temp1
+		},
+		{
+			headerName		: "상품쿠폰금액"
+			, field			: "goodsCpnDcAmt"
+			, width			: 80
+			, cellClass		: 'text-right'
+			, cellRenderer	: function (params) {
+				return params.value.addComma();
+			}
+			, hide			: temp1
+		},
+		{
+			headerName		: "장바구니쿠폰금액"
+			, field			: "cartCpnDcAmt"
+			, width			: 80
+			, cellClass		: 'text-right'
+			, cellRenderer	: function (params) {
+				return params.value.addComma();
+			}
+			, hide			: temp1
+		},
+		{
+			headerName		: "선포인트금액"
+			, field			: "prePntDcAmt"
+			, width			: 80
+			, cellClass		: 'text-right'
+			, cellRenderer	: function (params) {
+				return params.value.addComma();
+			}
+			, hide			: temp1
+		},
+		{
+			headerName		: "포인트금액"
+			, field			: "pntDcAmt"
+			, width			: 80
+			, cellClass		: 'text-right'
+			, cellRenderer	: function (params) {
+				return params.value.addComma();
+			}
+			, hide			: temp1
+		},
+		{
+			headerName		: "실결제금액"
+			, field			: "realOrdAmt"
+			, width			: 80
+			, cellClass		: 'text-right'
+			, cellRenderer	: function (params) {
+				return params.value.addComma();
+			}
+			, hide			: temp1
+		},
+		{
+			headerName		: "상품권금액"
+			, field			: "gfcdUseAmt"
+			, width			: 80
+			, cellClass		: 'text-right'
+			, cellRenderer	: function (params) {
+				return params.value.addComma();
+			}
+			, hide			: temp1
+		},
+		{headerName: "등록일", 			field: "regDt", 		width: 100, minWidth: 100, cellClass: 'text-right'}
 	];
 	
 	// Get withDrawDetailGridOptions
 	var withdrawDetailGridOptions = gagaAgGrid.getGridOptions(columnDefsDetail);
-	//withdrawDetailGridOptions.rowSelection = 'multiple';
-	
 	var isCustomer = true;
 
 	/*************************************************************************
@@ -339,6 +391,7 @@
 	**************************************************************************/
 	var initFlag = '';
 	var fnRefundDetailSearch = function() {
+		
 		//initFlag = Init;
 		var params = {};
 		params.ordChgSq = ordChgSq;
@@ -353,8 +406,8 @@
 	*  상세 정보 콜백 함수
 	**************************************************************************/	
 	var fnWithdrawDetailCallback = function(result) {
-		reFundInfo = result.refundConfirmPreInfo; // 환불 컨펌 환불 정보
-		returnOrderInfo = result.returnOrderInfo;
+		reFundInfo 			= result.refundConfirmPreInfo; // 환불 컨펌 환불 정보
+		returnOrderInfo 	= result.returnOrderInfo;
 		
 		if (result.dataList.length < 1) {
 			mcxDialog.alert('회수데이터 오류입니다. 운영팀에 문의 해주세요! ');
@@ -378,8 +431,28 @@
 			$('#divRefundInfo2').show();
 		}
 		
-		// 회수리스트 설정
-		withdrawDetailGridOptions.api.setRowData(result.dataList); 
+		// 2021.12.06 취소금액설정
+		if (reFundInfo.cancelOrderRefundList != null && reFundInfo.cancelOrderRefundList.length > 0) {
+			for (i=0 ; i<reFundInfo.cancelOrderRefundList.length ; i++) {
+				for (j=0 ; j<result.dataList.length ; j++) {
+					if (reFundInfo.cancelOrderRefundList[i].ordDtlNo == result.dataList[j].ordDtlNo) {
+						result.dataList[j].cnclRtnAmt 		= reFundInfo.cancelOrderRefundList[i].cnclRtnAmt;		// 취소금액
+						result.dataList[j].cpn1DcAmt 		= reFundInfo.cancelOrderRefundList[i].cpn1DcAmt;		// 즉시할인쿠폰금액
+						result.dataList[j].tmtb1DcAmt 		= reFundInfo.cancelOrderRefundList[i].tmtb1DcAmt;		// 수량할인다다익선금액
+						result.dataList[j].tmtb2DcAmt 		= reFundInfo.cancelOrderRefundList[i].tmtb2DcAmt;		// 금액할인다다익선금액
+						result.dataList[j].goodsCpnDcAmt 	= reFundInfo.cancelOrderRefundList[i].goodsCpnDcAmt;	// 상품쿠폰금액
+						result.dataList[j].cartCpnDcAmt 	= reFundInfo.cancelOrderRefundList[i].cartCpnDcAmt;		// 장바구니쿠폰금액
+						result.dataList[j].pntDcAmt 		= reFundInfo.cancelOrderRefundList[i].pntDcAmt;			// 포인트금액
+						result.dataList[j].prePntDcAmt 		= reFundInfo.cancelOrderRefundList[i].prePntDcAmt;		// 선포인트금액
+						result.dataList[j].gfcdUseAmt 		= reFundInfo.cancelOrderRefundList[i].gfcdUseAmt;		// 상품권적용금액
+						result.dataList[j].realOrdAmt 		= reFundInfo.cancelOrderRefundList[i].realOrdAmt;		// 실결제금액
+					}
+				}
+			}
+			
+			// 주문변경대상정보 재설정
+			withdrawDetailGridOptions.api.setRowData(result.dataList);
+		}
 		
 		$("#refundAmt").text(result.dataList[0].refundAmt.addComma());
 		
@@ -496,7 +569,7 @@
 
 		addDeliveryFee			= 0;
 		addDeliveryFeeYn		= "N";
-		
+			
 		codFeeAmt				= 0;
 		codFeeYn				= "N";
 		enCloseFeeAmt			= Number(enCloseFee);
@@ -671,13 +744,15 @@
 					} 
 					// 직접배송
 					else {
-						if(Number(codFee) > 0){
+						if (Number(codFee) > 0) {
 							codFeeAmt = Number(codFee);
 							codFeeYn  = "Y";
 						}
-						if(Number(enCloseFee) > 0){
+						
+						if (Number(enCloseFee) > 0) {
 							enCloseFeeYn = "Y";
 						}
+						
 						// 2021.07.02 환불컨펌 환불금액계산
 						// 환불금액  = (취소상품실결제금액 + 동봉비 + 추가결제비) - (추가배송비 + 착불비)
 						//reFundInfo.spanRefundAmt = (reFundInfo.spanRealCnclRtnAmt + Number(enCloseFee) - Number(addPaycose)) - (spanTotDeliveryFee + Number(codeFee);
@@ -771,7 +846,11 @@
 	*  회수컨펌 클릭 시
 	**************************************************************************/
 	withdrawDetailGridOptions.onCellClicked = function(event) {
-		if (event.colDef.field != 'chgStat') return;
+		
+		if (event.colDef.field != 'chgStat') {
+			return;
+		}
+		
 		if (ordChgQty != ordInQty) {
 			mcxDialog.alert('반품신청 수량과 회수입고수량이 맞지 않습니다.<br/>반품신청수량 : ' + ordChgQty + '<br/>회수입고수량 : ' + ordInQty);
 			return;
@@ -850,13 +929,10 @@
 		if (flag) {
 			$('#withdrawDetailForm input[name=encloseFee]').attr('readonly', 'readonly');
 			$('#withdrawDetailForm input[name=encloseFee]').addClass('formControl');
-			
 		} else {
 			$('#withdrawDetailForm input[name=encloseFee]').remove('readonly');
 			$('#withdrawDetailForm input[name=encloseFee]').removeClass('formControl');
-			
 		}
-		
 	}
 
 	// PG점프 변경 이벤트 처리
@@ -876,7 +952,11 @@
 		// Create a agGrid
 		gagaAgGrid.createGrid('refundGridList', withdrawDetailGridOptions);
 		$('#divRefundInfo2').hide();
+		
+		// 회수 상세내역 조회
 		fnRefundDetailSearch();
+		
+		// PG점프 변경 이벤트 처리
 		fnChangePgStat();
 	}); 
 	

+ 1 - 1
src/main/webapp/WEB-INF/views/withdraw/RefundRegisterListForm.html

@@ -106,7 +106,7 @@
 								</td>
 								<th>주문자연락처</th>
 								<td>
-									<input type="text" id="ordPhnno" name="orderPhnno" class="w200" maxlength="20"/>
+									<input type="text" id="ordPhnno" name="ordPhnno" class="w200" maxlength="20"/>
 								</td>
 								<th>SKU-CODE</th>
 								<td>

+ 51 - 40
src/main/webapp/WEB-INF/views/withdraw/WithdrawExceptionListForm.html

@@ -203,13 +203,13 @@
 		{headerName: "몰구분",				field: "mallGb",			width: 100,	cellClass: 'text-center',
 			cellRenderer: function(params) {
 				var rtnStr = "";
-				if (params.data.recallStat == 'G011_10') {
+				if (params.value == 'G011_10') {
 					rtnStr = "자사몰";
-				} else { 
+				} else if (params.value == 'G011_20') { 
 					rtnStr = "제휴몰"; 
 				}
 				return rtnStr;
-			}			
+			}
 		},
 		{headerName: "제휴몰명",				field: "extmallNm",			width: 120,	cellClass: 'text-center'},
 		{headerName: "제휴몰주문번호",			field: "extmallOrderId",	width: 120,	cellClass: 'text-center'},
@@ -234,12 +234,12 @@
 						paramData 		+= '@' + params.data.delvFeeCd;
 						paramData 		+= '@' + 'WMS';
 						
-						if(params.data.chgGb == 'G680_30' ){
+						if (params.data.chgGb == 'G680_30') {
 							// 반품접수, 반품대기, 회수요청, 상품검수중, 결제대기, 반품진행중
 							if (params.data.chgStat == 'G685_50' || params.data.chgStat == 'G685_51' 
 									|| params.data.chgStat == 'G685_30' || params.data.chgStat == 'G685_31' || params.data.chgStat == 'G685_32' || params.data.chgStat == 'G685_33') {
 								rtnStr = '<a href="javascript:void(0);" onclick="fnReturnRequest(\'' + paramData + '\',\'' + params.value + '\');">' + params.value + '</a>';
-							}else {
+							} else {
 								rtnStr = params.value;
 							}
 						} else {
@@ -335,8 +335,8 @@
 						if (params.data.recallExceptionNo != null) {
 							if (params.data.chgGb == 'G680_30' && params.data.newOrdChgSqYn == 'N') {
 								btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">반품변경</a>';
-							} else if(params.data.chgGb == 'G680_40') {
-								if(params.data.wdBfSendYn == 'N'){
+							} else if (params.data.chgGb == 'G680_40') {
+								if (params.data.wdBfSendYn == 'N') {
 									if (params.data.newOrdChgSqYn == 'N') {
 										btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">교환변경</a>';
 									}
@@ -355,7 +355,7 @@
 			,valueFormatter: function(params) {
 				if (params.value > 0) {
 					return params.value.addComma();
-				}else{
+				} else {
 					return '0';
 				}
 			}
@@ -386,11 +386,11 @@
 			
 			cellRenderer: function(params) {
 				var btnText = '';
-				if(params.data.recallStat == 'P') {
+				if (params.data.recallStat == 'P') {
 					btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">저장</a>';
-				}				
+				}
 				return btnText;
-			}	
+			}
 		},
 		{headerName: "작업자",			field: "userNameCreated",	width: 100,	cellClass: 'text-center'},
 		{headerName: "브랜드명",			field: "brandNm",			width: 150,	cellClass: 'text-center'},
@@ -497,9 +497,9 @@
 	var fnReOpenOrderDetailPopup = function () {
 		if (refreshFlag == "ordDtl") {
 			cfnOpenOrderDetailPopup(currOrdNo);
-		} else if(refreshFlag == "ban"){
+		} else if(refreshFlag == "ban") {
 
-		} else if(refreshFlag == "change"){
+		} else if(refreshFlag == "change") {
 			
 		}
 		fnSearchList();
@@ -518,6 +518,7 @@
 	**************************************************************************/	
 	gridOptions.onCellClicked = function(event) {
 		if (event.colDef.field == 'recall') {
+			
 			if (event.data.chgStat == "G685_21" || event.data.chgStat == "G685_51") {
 				return;
 			}
@@ -537,8 +538,8 @@
 					}
 				});
 			}
-		} else if(event.colDef.field == ''){
-			if(event.data.recallStat == "P"){	
+		} else if (event.colDef.field == '') {
+			if (event.data.recallStat == "P") {	
 				var params = {};
 				params.recallExceptionNo = event.data.recallExceptionNo;
 				params.csAddFee = event.data.csAddFee;
@@ -553,19 +554,21 @@
 					}
 				});
 			}
-		} else if(event.colDef.field == 'chgReason2'){
-			if(event.data.recallStat == "P"){
-				if(event.data.ordChgSq == null && event.data.chgGb == 'EXC'){ // 출고예외
-
+		} else if (event.colDef.field == 'chgReason2') {
+			if (event.data.recallStat == "P") {
+				
+				// 출고예외
+				if (event.data.ordChgSq == null && event.data.chgGb == 'EXC') { 
 					refreshFlag  = "ban";
-					var ordChgSq = 0;
-					var param    = "";
-					var ordDtlNoList ="";
-					var cnclRtnReqQtList ="";
-					var allData =  gagaAgGrid.getAllRowData(gridOptions);
+					
+					var ordChgSq 			= 0;
+					var param    			= "";
+					var ordDtlNoList 		= "";
+					var cnclRtnReqQtList 	= "";
+					var allData 			= gagaAgGrid.getAllRowData(gridOptions);
 
 					allData.forEach(function(item, index) {
-						if (event.data.orderNo == item.orderNo && event.data.delvFeeCd == item.delvFeeCd){
+						if (event.data.orderNo == item.orderNo && event.data.delvFeeCd == item.delvFeeCd) {
 							ordDtlNoList     = ordDtlNoList+","+item.orderDtlNo;
 							cnclRtnReqQtList = cnclRtnReqQtList+","+item.exceptionQty;
 						}
@@ -584,14 +587,16 @@
 					
 					var actionUrl = "/orderChange/rtn/req/form?" + param;
 					cfnOpenModalPopup(actionUrl, 'popupReturnRequestForm');
-					
-				} else if(event.data.ordChgSq == null && event.data.chgGb == 'WEXC') { // 회수예외 
+				}
+				// 회수예외
+				else if(event.data.ordChgSq == null && event.data.chgGb == 'WEXC') {  
 					refreshFlag  = "ban";
-					var ordChgSq = 0;
-					var param    = "";
-					var ordDtlNoList ="";
-					var cnclRtnReqQtList ="";
-					var allData =  gagaAgGrid.getAllRowData(gridOptions);
+				
+					var ordChgSq 			= 0;
+					var param    			= "";
+					var ordDtlNoList 		= "";
+					var cnclRtnReqQtList 	= "";
+					var allData 			= gagaAgGrid.getAllRowData(gridOptions);
 
 					allData.forEach(function(item, index) {
 						if (event.data.orderNo == item.orderNo && event.data.delvFeeCd == item.delvFeeCd){
@@ -614,8 +619,8 @@
 					var actionUrl = "/orderChange/rtn/req/form?" + param;
 					cfnOpenModalPopup(actionUrl, 'popupReturnRequestForm');
 				} else {
-				
-					if ((event.data.reasonCode == '02' || event.data.reasonCode == '03') && event.data.newOrdChgSqYn == 'N' ) { // 미착 , 과착 
+					// 미착 , 과착 
+					if ((event.data.reasonCode == '02' || event.data.reasonCode == '03') && event.data.newOrdChgSqYn == 'N' ) { 
 						refreshFlag  = "ban";
 						param += "&ordNo=" 			+ event.data.orderNo;
 						param += "&ordDtlNo=" 		+ event.data.orderDtlNo;
@@ -634,12 +639,16 @@
 							
 							cfnOpenModalPopup(actionUrl, 'popupExchangeRequestForm');
 						}
-					} else if(event.data.reasonCode == '04'){ // 배송비 미동봉
+					} 
+					// 배송비 미동봉
+					else if(event.data.reasonCode == '04'){ 
 						if(event.data.mallGb  == 'G011_10'){
 							actionUrl = "/withdraw/exception/change/form?ordChgSq=" + event.data.ordChgSq + '&chgGb=' + event.data.chgGb;
 							cfnOpenModalPopup(actionUrl, 'popupWithdrawChangeForm');
 						}
-					} else if(event.data.reasonCode == '05' ){ // 다른상품 반품 
+					} 
+					// 다른상품 반품
+					else if(event.data.reasonCode == '05' ){  
 						refreshFlag  = "ban";
 						param += "&ordNo=" 			+ event.data.orderNo;
 						param += "&ordDtlNo=" 		+ event.data.orderDtlNo;
@@ -647,17 +656,20 @@
 						param += "&delvFeeCd="		+ event.data.delvFeeCd;
 						param += "&delvFeeCdGrp="	+ "WMS";
 						
-						if (event.data.chgGb == 'G680_30' && event.data.newOrdChgSqYn == 'N') { // 반품요청
+						// 반품요청
+						if (event.data.chgGb == 'G680_30' && event.data.newOrdChgSqYn == 'N') { 
 							param += "&ordChgGb=G681_30";    // 반품TO반품
 							actionUrl = "/orderChange/rtn/req/form?" + param;
 
 							cfnOpenModalPopup(actionUrl, 'popupReturnRequestForm');
-						} else if (event.data.chgGb == 'G680_40' && event.data.newOrdChgSqYn == 'N') { // 교환요청
+						} 
+						// 교환요청
+						else if (event.data.chgGb == 'G680_40' && event.data.newOrdChgSqYn == 'N') { 
 							param += "&ordChgGb=G681_20";           // 교환TO교환
 							actionUrl = "/orderChange/exchange/request/form?" + param;
 							
 							cfnOpenModalPopup(actionUrl, 'popupExchangeRequestForm');
-						} else if(event.data.ordChgSq == null ) {
+						} else if (event.data.ordChgSq == null ) {
 							refreshFlag  = "ban";
 							var ordChgSq = 0;
 							var param    = "";
@@ -693,7 +705,6 @@
 			}
 		}
 	}
-
 	
 	/*************************************************************************
 	*  LMS