瀏覽代碼

Merge branch 'develop' into bin2107

bin2107 5 年之前
父節點
當前提交
253ee1247f
共有 31 個文件被更改,包括 637 次插入285 次删除
  1. 246 1
      src/main/java/com/style24/admin/biz/service/TsaOrderChangeService.java
  2. 9 9
      src/main/java/com/style24/admin/biz/web/TsaGoodsController.java
  3. 24 20
      src/main/java/com/style24/admin/biz/web/TsaMarketingController.java
  4. 66 18
      src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java
  5. 2 2
      src/main/java/com/style24/admin/biz/web/TsaOrderController.java
  6. 0 1
      src/main/java/com/style24/admin/biz/web/TsaPgController.java
  7. 2 2
      src/main/java/com/style24/admin/biz/web/TsaStockController.java
  8. 0 123
      src/main/java/com/style24/persistence/TsaPageRequest.java
  9. 2 2
      src/main/java/com/style24/persistence/domain/Coupon.java
  10. 0 1
      src/main/java/com/style24/persistence/domain/Delivery.java
  11. 2 2
      src/main/java/com/style24/persistence/domain/FreeGoodsPromotion.java
  12. 0 4
      src/main/java/com/style24/persistence/domain/FreeGoodsSectionVal.java
  13. 2 2
      src/main/java/com/style24/persistence/domain/Goods.java
  14. 2 2
      src/main/java/com/style24/persistence/domain/GoodsSearch.java
  15. 2 2
      src/main/java/com/style24/persistence/domain/MoreBetter.java
  16. 0 2
      src/main/java/com/style24/persistence/domain/MoreBetterGoods.java
  17. 2 2
      src/main/java/com/style24/persistence/domain/Order.java
  18. 1 0
      src/main/java/com/style24/persistence/domain/SupplyCompany.java
  19. 2 2
      src/main/java/com/style24/persistence/domain/WmsGoods.java
  20. 12 7
      src/main/java/com/style24/persistence/mybatis/shop/TsaBusiness.xml
  21. 1 1
      src/main/java/com/style24/persistence/mybatis/shop/TsaCoupon.xml
  22. 1 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaOrder.xml
  23. 7 8
      src/main/java/com/style24/persistence/mybatis/shop/TsaOrderChange.xml
  24. 1 1
      src/main/webapp/WEB-INF/views/customer/CustomerActiveListForm.html
  25. 1 2
      src/main/webapp/WEB-INF/views/envset/CustomerGradePolicyForm.html
  26. 7 4
      src/main/webapp/WEB-INF/views/marketing/CouponRetrievePopupForm.html
  27. 31 14
      src/main/webapp/WEB-INF/views/order/CancelRequestForm.html
  28. 103 24
      src/main/webapp/WEB-INF/views/order/ReturnRequestForm.html
  29. 26 24
      src/main/webapp/ux/css/admin.ui.css
  30. 15 0
      src/main/webapp/ux/plugins/gaga/gaga.agGrid.js
  31. 68 3
      src/main/webapp/ux/plugins/gaga/gaga.paging.js

+ 246 - 1
src/main/java/com/style24/admin/biz/service/TsaOrderChangeService.java

@@ -352,7 +352,7 @@ public class TsaOrderChangeService {
 		String chgMemo 		= mav.getString("chgMemo").toString();
 		String allCanYn		= mav.getString("allCanYn").toString();
 		String isCustomer	= mav.getString("isCustomer").toString();
-		String chgGb		= "G680_20";
+		String chgGb		= "G680_20"; // 취소요청
 		
 		// 4.1 주문변경 기본정보 등록
 		OrderChange orderChange = new OrderChange();
@@ -365,6 +365,19 @@ public class TsaOrderChangeService {
 		orderChange.setRegNo(userNo);
 		orderChange.setUpdNo(userNo);
 		
+		// 4.2 주문변경 추가정조 등록하기
+		// 4.2 반품회수지 정보 등록
+		String chgerNm 			= mav.getString("chgerNm").toString();
+		String chgerPhnno 		= mav.getString("chgerPhnno").toString();
+		String chgerTelno 		= mav.getString("chgerTelno").toString();
+		String chgerEmail 		= mav.getString("chgerEmail").toString();
+		
+		orderChange.setChgerNm(chgerNm);
+		orderChange.setChgerPhnno(chgerPhnno);
+		orderChange.setChgerTelno(chgerTelno);
+		orderChange.setChgerEmail(chgerEmail);
+		orderChange.setChgerRtnMemo("");
+		
 		orderChangeDao.createOrderChange(orderChange);
 		
 		List<Order> cancelOrderDetailList = new ArrayList<Order>();
@@ -542,6 +555,238 @@ public class TsaOrderChangeService {
 		//int a = 100/0;
 	}
 	
+	/**
+	 * 주문상세 > 주문취소신청 > 주문반품신청
+	 * @param Order
+	 * @return Order
+	 * @author jsh77b
+	 * @since 2021. 01. 14
+	 */
+	@Transactional("shopTxnManager")
+	public void orderReturn(GagaMap mav) {
+		
+		// 1. 세션회원조회
+		int userNo = TsaSession.getInfo().getUserNo();
+		
+		// 2. 취소요정정보목록
+		List<Order> cancelReqList		 	= (List<Order>) mav.get("cancelReqList");			//주문 취소 신청 목록
+		List<Order> cancelOrderRefundList 	= (List<Order>) mav.get("cancelOrderRefundList");	//주문 환불 금액 목록
+		List<Order> cancelDelvRefundList 	= (List<Order>) mav.get("cancelDelvRefundList");	//주문 환불 배송 금액 목록
+				
+		// 3. 취소신청정보
+		int ordNo 			= Integer.parseInt(mav.getString("ordNo").toString());
+		String chgReason 	= mav.getString("chgReason").toString();
+		String chgMemo 		= mav.getString("chgMemo").toString();
+		String allCanYn		= mav.getString("allCanYn").toString();
+		String isCustomer	= mav.getString("isCustomer").toString();
+		String chgGb		= "G680_30"; //반품요청
+		
+		// 4.1 주문변경 기본정보 등록
+		OrderChange orderChange = new OrderChange();
+		orderChange.setOrdNo(ordNo);
+		orderChange.setChgGb(chgGb);
+		orderChange.setChgReason(chgReason);
+		orderChange.setChgMemo(chgMemo);
+		orderChange.setAddPayCost(0);
+		orderChange.setAddPayAmt(0);
+		orderChange.setRegNo(userNo);
+		orderChange.setUpdNo(userNo);
+		
+		// 4.2 반품추가정보, 반품회수지 정보 등록
+		String chgerNm 			= mav.getString("chgerNm").toString();
+		String chgerPhnno 		= mav.getString("chgerPhnno").toString();
+		String chgerTelno 		= mav.getString("chgerTelno").toString();
+		String chgerEmail 		= mav.getString("chgerEmail").toString();
+		String chgerZipNo 		= mav.getString("chgerZipNo").toString();
+		String chgerBaseAddr 	= mav.getString("chgerBaseAddr").toString();
+		String chgerDtlAddr 	= mav.getString("chgerDtlAddr").toString();
+		
+		orderChange.setChgerNm(chgerNm);
+		orderChange.setChgerPhnno(chgerPhnno);
+		orderChange.setChgerTelno(chgerTelno);
+		orderChange.setChgerEmail(chgerEmail);
+		orderChange.setChgerZipNo(chgerZipNo);
+		orderChange.setChgerBaseAddr(chgerBaseAddr);
+		orderChange.setChgerDtlAddr(chgerDtlAddr);
+		orderChange.setChgerRtnMemo("");
+		
+		orderChangeDao.createOrderChange(orderChange);
+		
+		List<Order> cancelOrderDetailList = new ArrayList<Order>();
+		
+		// 4.2 주문변경 상세 단품 정보 등록 (단품단위)
+		for (int i=0 ; i<cancelOrderRefundList.size() ; i++) {
+			Order cancelOrderRefundPo = cancelOrderRefundList.get(i);
+			cancelOrderRefundPo.setRegNo(userNo);
+			cancelOrderRefundPo.setUpdNo(userNo);
+			
+			// 2020.01.05 추후 무통장입금전 전체 취소시 분기로직 추가 예정
+			if ("Y".equals(allCanYn)) {
+				cancelOrderRefundPo.setOrdDtlStat("G013_98"); // 결제전주문취소 : 공통코드로관리예정
+			} else {
+				cancelOrderRefundPo.setOrdDtlStat("G013_99"); // 결제후주문취소 : 공통코드로관리예정
+			}
+
+			// 4.2.1 취소수량이 존재하면 주문정보 수정 및 주문변경정보 등록
+			if (cancelOrderRefundPo.getOrdCanChgQty() > 0) {
+				// 4.2.3 주문상세단품정보 수정
+				//orderChangeDao.updateOrderDetailItem(cancelOrderRefundPo);
+				
+				// 4.2.4 주문상세단품정보 이력 등록
+				//orderChangeDao.createOrderDetailItemHst(cancelOrderRefundPo);
+				
+				// 4.3 주문변경 상세 단위로 데이타 등록 (ORD_DTL_NO)
+				Boolean temp = false;
+				
+				if (cancelOrderDetailList.size() > 0) {
+					for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
+						if (cancelOrderRefundPo.getOrdDtlNo() == cancelOrderDetailList.get(j).getOrdDtlNo()) {
+							temp = true;
+						}
+					}
+				}
+				
+				// 4.4 주문상세단위 데이타 저장
+				if (!temp) {
+					cancelOrderDetailList.add(cancelOrderRefundPo);
+				}
+				
+				// 4.5 상품옵션 재고 원복
+				//orderChangeDao.updateOptionQty(cancelOrderRefundPo);
+			}
+		}
+		
+		// 5. 주문상세단위 취소 데이타 처리
+		for (int i=0 ; i<cancelOrderDetailList.size() ; i++) {			
+			Order vo = cancelOrderRefundList.get(i);
+			vo.setRegNo(userNo);
+			vo.setUpdNo(userNo);
+			
+			// 2020.01.05 추후 무통장입금전 전체 취소시 분기로직 추가 예정
+			if ("Y".equals(allCanYn)) {
+				vo.setOrdDtlStat("G013_98"); // 결제전주문취소 : 공통코드로관리예정
+			} else {
+				vo.setOrdDtlStat("G013_99"); // 결제후주문취소 : 공통코드로관리예정
+			}
+			
+			// 5.1 주문변경상세정보 이력 등록
+			orderChangeDao.createOrderDetailHstCnclRtn(vo);
+			
+			// 4.2 주문변경상세정보 수정
+			//orderChangeDao.updateOrderDetail(vo);
+			
+			// * 주문상세단위가 아닌 주문상세단품단위로 데이타가 처리되고 있었음
+			// 5.3 주문변경상세정보 등록
+			OrderChange changeDetailPo = new OrderChange();
+			changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
+			changeDetailPo.setOrdDtlNo(vo.getOrdDtlNo());
+			changeDetailPo.setChgQty(vo.getOrdCanChgQty());
+			changeDetailPo.setChgStat("G685_40"); // 반품요청 : 공통코드로관리예정
+			changeDetailPo.setRegNo(userNo);
+			changeDetailPo.setUpdNo(userNo);
+			
+			orderChangeDao.createOrderChangeDetail(changeDetailPo);
+		}
+		
+		// To Do List
+		// 취소, 반품 사유에 따른 추가배송비, 반품배송비를 환불금액에서 추가, 제외 할 수 있다.
+		int spanRealCnclRtnAmt 		= Integer.parseInt(mav.get("spanRealCnclRtnAmt").toString());		// 취소금액합계
+		int sumDeliveryFee 			= Integer.parseInt(mav.get("sumDeliveryFee").toString());			// 배송비합계
+		int spanTotDeliveryFee 		= Integer.parseInt(mav.get("spanTotDeliveryFee").toString());		// 추가배송비합계
+		int spanTotRtnDelvFee 		= Integer.parseInt(mav.get("spanTotRtnDelvFee").toString());		// 반품배송비합계
+		int spanRefundAmt			= 0;
+		
+		// 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
+		if ("true".equals(isCustomer)) {
+			spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee) - spanTotDeliveryFee - spanTotRtnDelvFee;
+			//Integer.parseInt(mav.get("spanRefundAmt").toString());
+		}
+		// 회사사유 : 환불금액계산 = (취소금액 + 배송비)
+		else {
+			spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee);
+		}
+		mav.set("spanRefundAmt", spanRefundAmt);
+		
+		// 6. 환불결제 정보 등록
+		Order paymentOrder = new Order();
+		paymentOrder.setOrdNo(ordNo);
+		paymentOrder.setPayAmt(Integer.parseInt(mav.get("spanRefundAmt").toString()) * -1);
+		paymentOrder.setPayStat("G016_99");
+		paymentOrder.setOrdChgSq(orderChange.getOrdChgSq());
+		paymentOrder.setRegNo(userNo);
+		paymentOrder.setUpdNo(userNo);
+		
+		//orderChangeDao.createPayment(paymentOrder);
+		
+		// 7. 환불금액 등록
+		Order refundOrder = new Order();
+		refundOrder.setOrdNo(ordNo);
+		refundOrder.setPaySq(paymentOrder.getPaySq());
+		refundOrder.setOrdChgSq(orderChange.getOrdChgSq());
+		refundOrder.setRegNo(userNo);
+		
+		refundOrder.setRefundAmt(Integer.parseInt(mav.get("spanRefundAmt").toString()));
+		refundOrder.setRfCpn1Amt(Integer.parseInt(mav.get("spanCpn1DcAmt").toString()));
+		refundOrder.setRfTmtb1Amt(Integer.parseInt(mav.get("spanTmtb1DcAmt").toString()));
+		refundOrder.setRfTmtb2Amt(Integer.parseInt(mav.get("spanTmtb2DcAmt").toString()));
+		refundOrder.setRfGoodsCpnAmt(Integer.parseInt(mav.get("spanGoodsCpnDcAmt").toString()));
+		refundOrder.setRfCartCpnAmt(Integer.parseInt(mav.get("spanCartCpnDcAmt").toString()));
+		refundOrder.setRfPntAmt(Integer.parseInt(mav.get("spanPntDcAmt").toString()));
+		refundOrder.setRfPrePntAmt(Integer.parseInt(mav.get("spanPrePntDcAmt").toString()));
+		refundOrder.setRfGfcdUseAmt(Integer.parseInt(mav.get("spanGfcdUseAmt").toString()));
+		
+		refundOrder.setRaNo(mav.get("accountNo").toString());
+		refundOrder.setRaNm(mav.get("accountNm").toString());
+		refundOrder.setRaBank(mav.get("bankCd").toString());
+		
+		//orderChangeDao.createRefund(refundOrder);
+		
+		// 8. 결제금액이 무료배송금액보다 작으면 배송비 신규 등록
+		for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
+			Order vo = cancelDelvRefundList.get(i);
+			
+			if (vo.getAddDelvFee() > 0) {
+				Order delvFeeOrder = new Order();
+				
+				delvFeeOrder.setPaySq(paymentOrder.getPaySq());
+				delvFeeOrder.setOrdNo(ordNo);
+				delvFeeOrder.setDelvFeeGb("G018_10");
+				delvFeeOrder.setDelvFeeCd(vo.getDelvFeeCd());
+				delvFeeOrder.setDelvFee(vo.getAddDelvFee());
+				delvFeeOrder.setRealDelvAmt(vo.getDelvFee());
+				delvFeeOrder.setOrdChgSq(orderChange.getOrdChgSq());
+				delvFeeOrder.setSupplyCompCd(vo.getSupplyCompCd());
+				delvFeeOrder.setRegNo(userNo);
+				delvFeeOrder.setUpdNo(userNo);
+				
+				//orderChangeDao.createDeliveryFee(delvFeeOrder);
+			}
+		}
+		
+		// To Do List
+		// 9. 포인트원복 (사용포인트, 주문상세단위)
+		
+		// To Do List
+		// 10. 쿠폰원복 (상품쿠폰, 주문상세단위) (전체취소시 장바구니쿠폰, 배송비쿠폰)
+		
+		// To Do List
+		// 11. 상품권원복
+		
+		// 12. 사은품 전체 취소 (전체취소시 적용) 추후 사은품 관련 취소 로직 개발 예정
+		Order freegiftOrder = new Order();
+		freegiftOrder.setOrdNo(ordNo);
+		freegiftOrder.setUpdNo(userNo);
+		//orderChangeDao.updateOrdFreegiftDel(freegiftOrder);
+		
+		// To Do List
+		// 13. PG 연동
+		
+		// To Do List
+		// 14. 취소 완료 알림톡 발송 에정
+		
+		//int a = 100/0;
+	}
+	
 	
 	
 	

+ 9 - 9
src/main/java/com/style24/admin/biz/web/TsaGoodsController.java

@@ -7,6 +7,7 @@ import java.util.Collection;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.style24.persistence.TscPageRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.core.io.InputStreamResource;
@@ -31,7 +32,6 @@ import com.style24.admin.biz.service.TsaSystemService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.domain.AdKeyword;
 import com.style24.persistence.domain.AdKeywordGoods;
 import com.style24.persistence.domain.Color;
@@ -509,7 +509,7 @@ public class TsaGoodsController extends TsaBaseController {
 		}
 		log.info("[getGoodsList] goodsSearch=>{}", goodsSearch);
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsListCount(goodsSearch));
 
 		result.set("pageing", goodsSearch);
@@ -1275,7 +1275,7 @@ public class TsaGoodsController extends TsaBaseController {
 
 		GagaMap result = new GagaMap();
 
-		wmsGoods.setPageable(new TsaPageRequest(wmsGoods.getPageNo() - 1, wmsGoods.getPageSize()));
+		wmsGoods.setPageable(new TscPageRequest(wmsGoods.getPageNo() - 1, wmsGoods.getPageSize()));
 		wmsGoods.getPageable().setTotalCount(goodsService.getGoodsWmsIncomelotListCount(wmsGoods));
 
 		result.set("pageing", wmsGoods);
@@ -1482,7 +1482,7 @@ public class TsaGoodsController extends TsaBaseController {
 		}
 
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsTitleReserveCount(goodsSearch));
 
 		result.set("pageing", goodsSearch);
@@ -1683,7 +1683,7 @@ public class TsaGoodsController extends TsaBaseController {
 		}
 
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsEpSkipCount(goodsSearch));
 
 		result.set("pageing", goodsSearch);
@@ -1776,7 +1776,7 @@ public class TsaGoodsController extends TsaBaseController {
 
 		GagaMap result = new GagaMap();
 
-		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getReinboundInformCount(goodsSearch));
 
 		result.set("pageing", goodsSearch);
@@ -1857,7 +1857,7 @@ public class TsaGoodsController extends TsaBaseController {
 		}
 
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsResSellCount(goodsSearch));
 
 		result.set("pageing", goodsSearch);
@@ -2084,7 +2084,7 @@ public class TsaGoodsController extends TsaBaseController {
 		}
 		log.info("[getPopupGoodsList] goodsSearch=>{}", goodsSearch);
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsListCount(goodsSearch));
 
 		result.set("pageing", goodsSearch);
@@ -2150,7 +2150,7 @@ public class TsaGoodsController extends TsaBaseController {
 		}
 
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsPriceResCount(goodsSearch));
 
 		result.set("pageing", goodsSearch);

+ 24 - 20
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -3,10 +3,8 @@ package com.style24.admin.biz.web;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import java.io.InputStream;
-import java.lang.reflect.Array;
-import java.lang.reflect.Type;
 
+import com.style24.persistence.TscPageRequest;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
@@ -19,22 +17,29 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.style24.admin.biz.service.*;
+import com.style24.admin.biz.service.TsaBusinessService;
+import com.style24.admin.biz.service.TsaCommonService;
+import com.style24.admin.biz.service.TsaCouponService;
+import com.style24.admin.biz.service.TsaMarketingService;
+import com.style24.admin.biz.service.TsaMorebetterService;
+import com.style24.admin.biz.service.TsaRendererService;
+import com.style24.admin.biz.service.TsaSystemService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.TsaPageRequest;
-import com.style24.persistence.domain.*;
+import com.style24.persistence.domain.CommonCode;
+import com.style24.persistence.domain.Coupon;
+import com.style24.persistence.domain.FreeGoodsPromotion;
+import com.style24.persistence.domain.MoreBetter;
+import com.style24.persistence.domain.MoreBetterBurden;
+import com.style24.persistence.domain.MoreBetterGoods;
+import com.style24.persistence.domain.MoreBetterSection;
 
 import lombok.extern.slf4j.Slf4j;
 
 import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.rest.server.GagaResponse;
-import com.google.gson.Gson;
-import com.google.gson.JsonElement;
-import com.google.gson.reflect.TypeToken;
+
 /**
  * 마케팅 Controller
  * @author xodud1202
@@ -98,7 +103,7 @@ public class TsaMarketingController extends TsaBaseController {
 		List<FreeGoodsPromotion> marketingList = (ArrayList<FreeGoodsPromotion>)marketingService.getFreeGoodsPromotionList(param);
 
 		param.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		param.setPageable(new TsaPageRequest(param.getPageNo() - 1, param.getPageSize()));
+		param.setPageable(new TscPageRequest(param.getPageNo() - 1, param.getPageSize()));
 		param.getPageable().setTotalCount(marketingList.size());
 
 		result.set("pageing", param);
@@ -107,7 +112,6 @@ public class TsaMarketingController extends TsaBaseController {
 		return result;
 	}
 
-
 	/**
 	 * 사은품 프로모션 등록 팝업창
 	 * @param param
@@ -128,7 +132,6 @@ public class TsaMarketingController extends TsaBaseController {
 		return mav;
 	}
 
-
 	/* // xodud1202 진행 */
 
 	/* JSM 진행 */
@@ -171,7 +174,7 @@ public class TsaMarketingController extends TsaBaseController {
 		int cpnTotCnt = couponService.getCouponListCnt(param);
 
 		param.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		param.setPageable(new TsaPageRequest(param.getPageNo() - 1, param.getPageSize()));
+		param.setPageable(new TscPageRequest(param.getPageNo() - 1, param.getPageSize()));
 		param.getPageable().setTotalCount(cpnTotCnt);
 
 		result.set("pageing", param);
@@ -303,7 +306,7 @@ public class TsaMarketingController extends TsaBaseController {
 		List<MoreBetter> tmtbList = (ArrayList<MoreBetter>)morebetterService.getMorebetterList(param);
 
 		param.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		param.setPageable(new TsaPageRequest(param.getPageNo() - 1, param.getPageSize()));
+		param.setPageable(new TscPageRequest(param.getPageNo() - 1, param.getPageSize()));
 		param.getPageable().setTotalCount(tmtbList.size());
 
 		result.set("pageing", param);
@@ -322,7 +325,7 @@ public class TsaMarketingController extends TsaBaseController {
 	 */
 	@ResponseBody
 	@GetMapping("/morebetterPopup/form")
-	public ModelAndView morebetterRegForm(@RequestParam(value = "mode") String mode, @RequestParam(value = "tmtbSeq", required = false) Integer tmtbSeq,MoreBetter moreBetter) {
+	public ModelAndView morebetterRegForm(@RequestParam(value = "mode") String mode, @RequestParam(value = "tmtbSeq", required = false) Integer tmtbSeq, MoreBetter moreBetter) {
 		ModelAndView mav = new ModelAndView();
 
 		// 상품상태 : 등록일때는 '대기'
@@ -347,8 +350,8 @@ public class TsaMarketingController extends TsaBaseController {
 
 		//tmtb sq 자동생성
 		Integer tmtbSq;
-		if("N".equals(mode)){
-			tmtbSq =  commonService.getNextSequence("SEQ_TMTB");
+		if ("N".equals(mode)) {
+			tmtbSq = commonService.getNextSequence("SEQ_TMTB");
 			moreBetter.setTmtbSq(tmtbSq);
 		}
 
@@ -393,6 +396,7 @@ public class TsaMarketingController extends TsaBaseController {
 		morebetterService.saveMoreBetterDetail(moreBetter);
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
+
 	/**
 	 * 다다익선 공급업체 삭제
 	 *
@@ -514,7 +518,7 @@ public class TsaMarketingController extends TsaBaseController {
 		// 할인방식 목록
 		mav.addObject("dcWayList", rendererService.getAvailCommonCodeList("G240"));
 
-		mav.setViewName("marketing/CouponRetrieveForm");
+		mav.setViewName("marketing/CouponRetrievePopupForm");
 
 		return mav;
 	}

+ 66 - 18
src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java

@@ -76,15 +76,12 @@ public class TsaOrderChangeController extends TsaBaseController {
 		ordDtlStatArr[1] = "G013_20";
 		ordDtlStatArr[2] = "G013_30";
 		ordDtlStatArr[3] = "G013_40";
-		
-		Collection<Order> cancelRequestTargetList = orderChangeService.getCancelRequestTargetList(order);
-
-		Collection<Order> orderInfoList = orderService.getOrderInfoList(order);
+		order.setOrdDtlStatArr(ordDtlStatArr);
 
-		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G686"));	// 취소사유
-		mav.addObject("cancelRequestTargetList"		, cancelRequestTargetList);							// 취소요청대상 목록
-		mav.addObject("orderInfoList"				, orderInfoList);									// 주문정보
-		mav.addObject("ordNo"						, ordNo);
+		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G686"));			// 취소사유
+		mav.addObject("cancelRequestTargetList"		, orderChangeService.getCancelRequestTargetList(order));	// 취소요청대상 목록
+		mav.addObject("orderInfoList"				, orderService.getOrderInfoList(order));					// 주문정보
+		mav.addObject("ordNo"						, ordNo);													// 주문번호
 
 		mav.setViewName("order/CancelRequestForm");
 		
@@ -183,21 +180,73 @@ public class TsaOrderChangeController extends TsaBaseController {
 		ordDtlStatArr[2] = "G013_60";
 		order.setOrdDtlStatArr(ordDtlStatArr);
 		
-		Collection<Order> cancelRequestTargetList = orderChangeService.getCancelRequestTargetList(order);
-
-		Collection<Order> orderInfoList = orderService.getOrderInfoList(order);
-
-		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G686"));	// 반품사유
-		mav.addObject("cancelRequestTargetList"		, cancelRequestTargetList);							// 반품요청대상 목록
-		mav.addObject("orderInfoList"				, orderInfoList);									// 주문정보
-		mav.addObject("ordNo"						, ordNo);
-		mav.addObject("orderDelvRtnAddrInfo"		, orderService.getDeliveryAddrList(order));			// 배송정보
+		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G688"));			// 취소사유
+		mav.addObject("cancelRequestTargetList"		, orderChangeService.getCancelRequestTargetList(order));	// 취소요청대상 목록
+		mav.addObject("orderInfoList"				, orderService.getOrderInfoList(order));					// 주문정보
+		mav.addObject("ordNo"						, ordNo);													// 주문번호
+		
+		mav.addObject("orderDelvRtnAddrInfo"		, orderService.getDeliveryAddrList(order));					// 배송정보
+		mav.addObject("TelExcNoList"				, rendererService.getAvailCommonCodeList("G095"));			// 전화번호국번
+		mav.addObject("PhnExcNoList"				, rendererService.getAvailCommonCodeList("G096"));			// (휴대전화)번호국번
 
 		mav.setViewName("order/ReturnRequestForm");
 		
 		return mav;
 	}
 	
+	/**
+	 * 주문반품신청
+	 * @param Collection<Order> - 주문취소신청목록
+	 * @return
+	 * @author jsh77b
+	 * @since 2020. 12. 29
+	 */
+	@PostMapping("/returnRequest")
+	@ResponseBody
+	public GagaResponse orderReturnRequest(@RequestBody OrderChange cancelReq) {
+		
+		GagaMap mav = new GagaMap();
+		
+		if (cancelReq== null) {
+			throw new IllegalStateException(message.getMessage("FAIL_1001"));
+		}
+
+		List<Order> cancelReqList = cancelReq.getCancelReqList(); // 취소요청정보
+		
+		// To Do List
+		// @ 결품취소로직 현재는 일반취소로직만존재
+		// @ 주문취소 취소시 상태값 체크
+		// @ 취소, 반품시 배송비 체크 로직 
+		
+		// 1. 환불금액정보 계산 & 조회
+		mav = orderChangeService.orderCancelRefundAmt(cancelReqList);
+		
+		// 2. 주문변경기본정보 설정
+		mav.set("ordNo"			, cancelReq.getOrdNo());
+		mav.set("chgReason"		, cancelReq.getChgReason());
+		mav.set("chgMemo"		, cancelReq.getChgMemo());
+		
+		mav.set("accountNo"		, cancelReq.getAccountNo());
+		mav.set("accountNm"		, cancelReq.getAccountNm());
+		mav.set("bankCd"		, cancelReq.getBankCd());
+		
+		mav.set("allCanYn"		, cancelReq.getAllCanYn());
+		mav.set("isCustomer"	, cancelReq.getIsCustomer());
+		
+		//3. 회수지정보추가
+		mav.set("chgerNm"		, cancelReq.getChgerNm());
+		mav.set("chgerZipNo"	, cancelReq.getChgerZipNo());
+		mav.set("chgerBaseAddr"	, cancelReq.getChgerBaseAddr());
+		mav.set("chgerDtlAddr"	, cancelReq.getChgerDtlAddr());
+		mav.set("chgerPhnno"	, cancelReq.getChgerPhnno());
+		mav.set("chgerTelno"	, cancelReq.getChgerTelno());
+		
+		// 4. 주문변경 DB 등록 (주문정보, 배송정보)
+		orderChangeService.orderReturn(mav);
+		
+		return super.ok("성공");
+	}
+	
 	
 	
 	/**
@@ -268,7 +317,6 @@ public class TsaOrderChangeController extends TsaBaseController {
 		// To Do List
 		// @ 환불계좌인증
 		
-		
 		if ("Y".equals(accountCheck)) {
 			orderChangeService.saveRefundAccount(order);
 		} else {

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

@@ -7,6 +7,7 @@ import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.style24.persistence.TscPageRequest;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
@@ -33,7 +34,6 @@ import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.OrderChange;
 
@@ -104,7 +104,7 @@ public class TsaOrderController extends TsaBaseController {
 		GagaMap result = new GagaMap();
 
 		order.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		order.setPageable(new TsaPageRequest(order.getPageNo() - 1, order.getPageSize()));
+		order.setPageable(new TscPageRequest(order.getPageNo() - 1, order.getPageSize()));
 
 		// 주문상태 CD_GB 변경
 		if (order.getMultiOrdStat() != null) {

+ 0 - 1
src/main/java/com/style24/admin/biz/web/TsaPgController.java

@@ -33,7 +33,6 @@ import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.OrderChange;
 

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

@@ -5,6 +5,7 @@ import java.util.Collection;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.style24.persistence.TscPageRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.core.io.InputStreamResource;
@@ -23,7 +24,6 @@ import com.style24.admin.biz.service.TsaStockService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.domain.Color;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.GoodsSearch;
@@ -125,7 +125,7 @@ public class TsaStockController extends TsaBaseController {
 		}
 
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo());	//엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(stockService.getGoodsSizeStockCount(goodsSearch));
 
 		result.set("pageing", goodsSearch);

+ 0 - 123
src/main/java/com/style24/persistence/TsaPageRequest.java

@@ -1,123 +0,0 @@
-package com.style24.persistence;
-
-import java.io.Serializable;
-
-import lombok.Data;
-
-/**
- * Paging
- *
- * @author gagamel
- * @since 2020. 10. 5
- */
-@SuppressWarnings("serial")
-@Data
-public class TsaPageRequest implements Serializable {
-
-	private final int pageNo;   // 페이지번호
-	private final int pageSize; // 조회할 row수
-	private final int pageUnit; // 그룹핑 페이지 단위
-	private int totalCount = 0; // 전체 row 건수
-
-	public TsaPageRequest(int pageNo, int pageSize) {
-		this(pageNo, pageSize, 10);
-	}
-
-	public TsaPageRequest(int pageNo, int pageSize, int pageUnit) {
-		if (pageNo < 0) {
-			throw new IllegalArgumentException("Current page index must not be less than zero!");
-		}
-
-		if (pageSize < 1) {
-			throw new IllegalArgumentException("Page size must not be less than one!");
-		}
-
-		if (pageUnit < 1) {
-			throw new IllegalArgumentException("Page unit must not be less than one!");
-		}
-
-		this.pageNo = pageNo;
-		this.pageSize = pageSize;
-		this.pageUnit = pageUnit;
-	}
-
-	public int getPageNo() {
-		return pageNo + 1;
-	}
-
-	public int getOffset() {
-		return pageNo * pageSize;
-	}
-
-	public int getStartRow() {
-		return pageNo * pageSize + 1;
-	}
-
-	public int getEndRow() {
-		return getOffset() + pageSize;
-	}
-
-	public int getPageGroup() {
-		return pageNo / pageUnit + 1;
-	}
-
-	public void setTotalCount(int totalCount) {
-		this.totalCount = totalCount;
-	}
-
-	public int getTotalPage() {
-		int totalPage = totalCount / pageSize;
-		if (totalCount % pageSize > 0) {
-			totalPage++;
-		}
-		return totalPage;
-	}
-
-	public String getGeneratedPagination() {
-		int firstCount = (getPageGroup() - 1) * pageUnit + 1;
-		int loopCount = firstCount + pageUnit;
-		if (loopCount > getTotalPage()) {
-			loopCount = getTotalPage() + 1;
-		}
-
-		StringBuffer pageTag = new StringBuffer();
-		if (!(firstCount == 1 && loopCount == 1)) {
-			if (getPageNo() == 1) {
-				pageTag.append("<a class=\"arrow\" href=\"#\"><i class=\"fa fa-angle-double-left\" alt=\"맨처음\"></i></a>\n");
-			} else {
-				pageTag.append("<a class=\"arrow\" href=\"#pageNo=1\"><i class=\"fa fa-angle-double-left\" alt=\"맨처음\"></i></a>\n");
-			}
-
-			if (getPageGroup() == 1) {
-				pageTag.append("<a class=\"arrow\" href=\"#\"><i class=\"fa fa-angle-left\" alt=\"이전페이지\"></i></a>\n");
-			} else {
-				pageTag.append("<a class=\"arrow\" href=\"#pageNo=").append((getPageGroup() - 1) * pageUnit).append("\"><i class=\"fa fa-angle-left\" alt=\"이전페이지\"></i></a>\n");
-			}
-
-			for (int i = firstCount; i < loopCount; i++) {
-				if (getPageNo() == i) {
-					pageTag.append("<a class=\"num on\" href=\"#\">").append(i).append("</a>\n");
-				} else {
-					pageTag.append("<a class=\"num\" href=\"#pageNo=").append(i).append("\">").append(i).append("</a>\n");
-				}
-			}
-
-			if (loopCount <= (getTotalPage() + 1)) {
-				if (getPageNo() == getTotalPage()) {
-					pageTag.append("<a class=\"arrow\" href=\"#\"><i class=\"fa fa-angle-right\" alt=\"다음페이지\"></i></a>\n");
-					pageTag.append("<a class=\"arrow\" href=\"#\"><i class=\"fa fa-angle-double-right\" alt=\"맨마지막\"></i></a>\n");
-				} else {
-					pageTag.append("<a class=\"arrow\" href=\"#pageNo=").append(getPageGroup() * pageUnit + 1).append("\"><i class=\"fa fa-angle-right\" alt=\"다음페이지\"></i></a>\n");
-					pageTag.append("<a class=\"arrow\" href=\"#pageNo=").append(getTotalPage()).append("\"><i class=\"fa fa-angle-double-right\" alt=\"맨마지막\"></i></a>\n");
-				}
-			}
-		}
-		return pageTag.toString();
-	}
-
-	@Override
-	public String toString() {
-		return String.format("Page request [pageNo: %d, pageSize %d, pageUnit %d]", getPageNo(), pageSize, pageUnit);
-	}
-
-}

+ 2 - 2
src/main/java/com/style24/persistence/domain/Coupon.java

@@ -1,7 +1,7 @@
 package com.style24.persistence.domain;
 
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
+import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
 import java.util.ArrayList;
@@ -78,7 +78,7 @@ public class Coupon extends TscBaseDomain {
     private String  cateList;                // 카테고리 리스트
 
     // Pagination
-    private TsaPageRequest pageable;
+    private TscPageRequest pageable;
     private int pageNo = 1;
     private int pageSize = 50;
     private int pageUnit = 10;

+ 0 - 1
src/main/java/com/style24/persistence/domain/Delivery.java

@@ -3,7 +3,6 @@ package com.style24.persistence.domain;
 import java.util.Collection;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
 
 import lombok.Data;

+ 2 - 2
src/main/java/com/style24/persistence/domain/FreeGoodsPromotion.java

@@ -1,8 +1,8 @@
 package com.style24.persistence.domain;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
+import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
 import java.util.List;
@@ -46,7 +46,7 @@ public class FreeGoodsPromotion extends TscBaseDomain {
 	private String gbn;					// 팝업 구분 : C=등록, U=수정
 
 	// Pagination
-	private TsaPageRequest pageable;
+	private TscPageRequest pageable;
 	private int pageNo = 1;
 	private int pageSize = 50;
 	private int pageUnit = 10;

+ 0 - 4
src/main/java/com/style24/persistence/domain/FreeGoodsSectionVal.java

@@ -1,11 +1,7 @@
 package com.style24.persistence.domain;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.persistence.TsaPageRequest;
-import com.style24.persistence.TscBaseDomain;
 import lombok.Data;
 
-import java.util.Collection;
 
 /**
  * 품목 Domain

+ 2 - 2
src/main/java/com/style24/persistence/domain/Goods.java

@@ -3,9 +3,9 @@ package com.style24.persistence.domain;
 import java.util.Collection;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
 
+import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
 /**
@@ -178,7 +178,7 @@ public class Goods extends TscBaseDomain {
 	private String goodsComposeList; // 상품 구성상품
 
 	// Pagination
-	private TsaPageRequest pageable;
+	private TscPageRequest pageable;
 	private int pageNo = 1;
 	private int pageSize = 50;
 	private int pageUnit = 10;

+ 2 - 2
src/main/java/com/style24/persistence/domain/GoodsSearch.java

@@ -1,9 +1,9 @@
 package com.style24.persistence.domain;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
 
+import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
 /**
@@ -107,7 +107,7 @@ public class GoodsSearch extends TscBaseDomain {
 	private String[] conditionList;
 
 	// Pagination
-	private TsaPageRequest pageable;
+	private TscPageRequest pageable;
 	private int pageNo = 1;
 	private int pageSize = 50;
 	private int pageUnit = 10;

+ 2 - 2
src/main/java/com/style24/persistence/domain/MoreBetter.java

@@ -1,7 +1,7 @@
 package com.style24.persistence.domain;
 
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
+import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
 import java.util.Collection;
@@ -67,7 +67,7 @@ public class MoreBetter extends TscBaseDomain {
 	private String sectionGbList;
 
 	// Pagination
-	private TsaPageRequest pageable;
+	private TscPageRequest pageable;
 	private int pageNo = 1;
 	private int pageSize = 50;
 	private int pageUnit = 10;

+ 0 - 2
src/main/java/com/style24/persistence/domain/MoreBetterGoods.java

@@ -1,11 +1,9 @@
 package com.style24.persistence.domain;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
 import lombok.Data;
 
-import java.util.Collection;
 
 /**
  * 품목 Domain

+ 2 - 2
src/main/java/com/style24/persistence/domain/Order.java

@@ -1,9 +1,9 @@
 package com.style24.persistence.domain;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
 
+import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
 /**
@@ -222,7 +222,7 @@ public class Order extends TscBaseDomain {
 	private int gfcdUseAmt;
 	
 	// Pagination
-	private TsaPageRequest pageable;
+	private TscPageRequest pageable;
 	private int pageNo = 1;
 	private int pageSize = 50;
 	private int pageUnit = 10;

+ 1 - 0
src/main/java/com/style24/persistence/domain/SupplyCompany.java

@@ -16,6 +16,7 @@ public class SupplyCompany extends TscBaseDomain {
 
 	private String supplyCompCd;		// 공급업체코드
 	private String supplyCompNm;		// 공급업체명
+	private String supplyCompUcd;		// 상위공급업체코드
 	private int provierNo;				// ProvierNo(WMS)
 	private String bizGb;				// 사업자구분
 	private String bizNo;				// 사업자번호

+ 2 - 2
src/main/java/com/style24/persistence/domain/WmsGoods.java

@@ -1,8 +1,8 @@
 package com.style24.persistence.domain;
 
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
 
+import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
 /**
@@ -36,7 +36,7 @@ public class WmsGoods extends TscBaseDomain {
 	private int endRow;
 	private String goodsPriceYn;
 	// Pagination
-	private TsaPageRequest pageable;
+	private TscPageRequest pageable;
 	private int pageNo = 1;
 	private int pageSize = 50;
 	private int pageUnit = 10;

+ 12 - 7
src/main/java/com/style24/persistence/mybatis/shop/TsaBusiness.xml

@@ -7,6 +7,7 @@
 		/* TsaBusiness.getSupplyCompanyList */
 		SELECT SC.SUPPLY_COMP_CD       /*공급업체코드*/
 		     , SC.SUPPLY_COMP_NM       /*공급업체명*/
+		     , SC.SUPPLY_COMP_UCD      /*상위공급업체코드*/
 		     , SC.BIZ_GB               /*사업자구분*/
 		     , SC.BIZ_NO               /*사업자등록번호*/
 		     , SC.BIZ_KIND             /*업종*/
@@ -65,7 +66,8 @@
 		INSERT INTO TB_SUPPLY_COMPANY (
 		       SUPPLY_COMP_CD
 		     , SUPPLY_COMP_NM
-		     , PROVIER_NO
+		     , SUPPLY_COMP_UCD
+		     , PROVIDER_NO
 		     , BIZ_GB
 		     , BIZ_NO
 		     , BIZ_KIND
@@ -102,16 +104,18 @@
 		     , UPD_DT
 		)
 		VALUES (
-		       (SELECT CONCAT('S',IFNULL(LPAD(SUBSTRING(MAX(SUPPLY_COMP_CD),2) + 1,4,'0'),'0000'))
+		       (SELECT IFNULL(MAX(SUPPLY_COMP_CD),0) + 1
 		        FROM   TB_SUPPLY_COMPANY Z
-		        WHERE  SUPPLY_COMP_CD LIKE 'S%'
 		       )
 		     , #{supplyCompNm}
-		     , (SELECT CASE WHEN MAX(PROVIER_NO) IS NULL THEN 40000   /* AS-IS 최대 수보다 크게 수정해야함*/
-		               ELSE (MAX(PROVIER_NO) + 1) END
+		     , #{supplyCompUcd}
+		     , (SELECT CASE WHEN MAX(PROVIDER_NO) IS NULL THEN
+		                        40000 /* AS-IS 최대 수보다 크게 수정해야함*/
+		                    ELSE
+		                        MAX(PROVIER_NO) + 1
+		               END
 		        FROM   TB_SUPPLY_COMPANY Z
-		        WHERE  1 = 1
-		        AND PROVIER_NO > 40000                  /* AS-IS 최대 수보다 크게 크게 수정해야함*/
+		        WHERE  PROVIDER_NO > 40000 /* AS-IS 최대 수보다 크게 크게 수정해야함*/
 		       )
 		     , #{bizGb}
 		     , #{bizNo}
@@ -155,6 +159,7 @@
 		/* TsaBusiness.updateSupplyCompany */
 		UPDATE TB_SUPPLY_COMPANY
 		SET    SUPPLY_COMP_NM = #{supplyCompNm}
+		     , SUPPLY_COMP_UCD = #{supplyCompUcd}
 		     , BIZ_GB = #{bizGb}
 		     , BIZ_NO = #{bizNo}
 		     , BIZ_KIND = #{bizKind}

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

@@ -247,7 +247,7 @@
 			AND	   A.CPN_ID = #{cpnId}
 		</if>
 		<if test="cpnNm !=null and cpnNm !=''">
-			AND	   A.CPN_NM LIKE '%'||#{cpnNm}||'%'
+			AND	   A.CPN_NM LIKE CONCAT('%',#{cpnNm},'%')
 		</if>
 		<if test="cpnType !=null and cpnType !=''">
 			AND	   A.CPN_TYPE = #{cpnType}

+ 1 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaOrder.xml

@@ -404,6 +404,7 @@
 		     , O.ORD_NO
 		     , O.ORD_EMAIL
 		     , O.ORD_PHNNO
+		     , O.ORD_TELNO
 		     , C.CUST_GB 
 		     , CASE WHEN C.CUST_GB IS NULL 
 		            THEN '비회원'

+ 7 - 8
src/main/java/com/style24/persistence/mybatis/shop/TsaOrderChange.xml

@@ -125,14 +125,14 @@
 			, REG_DT
 			, UPD_NO
 			, UPD_DT
-		) 
-		SELECT #{chgGb}
+		) values (
+			#{chgGb}
 			 , #{chgReason}
 			 , #{chgMemo}
-			 , ORD_NM
-			 , ORD_PHNNO
-			 , ORD_TELNO
-			 , ORD_EMAIL
+			 , #{chgerNm}
+			 , #{chgerPhnno}
+			 , #{chgerTelno}
+			 , #{chgerEmail}
 			 , #{chgerZipNo}
 			 , #{chgerBaseAddr}
 			 , #{chgerDtlAddr}
@@ -143,8 +143,7 @@
 			 , SYSDATE()
 			 , #{updNo}
 			 , SYSDATE()
-		FROM   TB_ORDER  
-		WHERE  ORD_NO = #{ordNo}
+		)
 	</insert>
 
 	<!-- 주문상세 > 주문취소신청 > 주문상세단품정보 수정 -->

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

@@ -141,7 +141,7 @@
 	// 관리대상
 	const managedRsnList = gagajf.convertToArray([[${managedRsnList}]]);
 	// 성별
-	const genderGb = {"F":"여성", "M":"남성"};
+	const genderGb = {"G007_F":"여성", "G007_M":"남성"};
 
 	// specify the columns
 	const columnDefs = [

+ 1 - 2
src/main/webapp/WEB-INF/views/envset/CustomerGradePolicyForm.html

@@ -215,7 +215,7 @@
 	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
 
 	// 이미지가 있을 경우 높이 지정
-	gridOptions.rowHeight = 70;
+	gridOptions.rowHeight = 60;
 	
 	// 셀 클릭 이벤트
 	gridOptions.onCellClicked = function(event) {
@@ -293,5 +293,4 @@
 /*]]>*/
 </script>
 
->>>>>>> develop
 </html>

+ 7 - 4
src/main/webapp/WEB-INF/views/marketing/CouponRetrieveForm.html → src/main/webapp/WEB-INF/views/marketing/CouponRetrievePopupForm.html

@@ -3,7 +3,7 @@
 	xmlns:th="http://www.thymeleaf.org">
 <!--
  *******************************************************************************
- * @source  : CouponRetrieveForm.html
+ * @source  : CouponRetrievePopupForm.html
  * @desc    : 쿠폰조회 팝업 Page
  *============================================================================
  * STYLE24
@@ -98,7 +98,7 @@
 	let dcWayList = gagajf.convertToArray([[${dcWayList}]]);
 	
 	let columnDefsCouponList = [
-		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+// 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
 		{
 			headerName: "사이트", field: "siteCd", width: 80, cellClass: "text-center", pinned: 'left',
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(siteList, params.value); }
@@ -167,7 +167,10 @@
 	];
 
 	let gridOptionsCouponList = gagaAgGrid.getGridOptions(columnDefsCouponList);
-
+	
+	gridOptionsCouponList.rowSelection = 'single';
+	gridOptionsCouponList.rowMultiSelectWithClick = true; // 클릭으로 선택 가능
+	
 	// Row double click
 	gridOptionsCouponList.onRowDoubleClicked = function(event) {
 		$('#btnConfirmCoupon').trigger('click');
@@ -190,7 +193,7 @@
 	// 확인
 	$('#btnConfirmCoupon').on('click', function() {
 		var selectedData = gagaAgGrid.selectedRowData(gridOptionsCouponList);
-		
+		console.log('selectedData.length: ' + selectedData.length);
 		if (selectedData.length == 0) {
 			mcxDialog.alert('선택된 쿠폰이 없습니다.');
 			return false;

+ 31 - 14
src/main/webapp/WEB-INF/views/order/CancelRequestForm.html

@@ -899,19 +899,27 @@ var fnCalculateRefundAmt = function (obj) {
 
 //  사유
 var fnChangeChgReason = function(reasonCd){
-	var arrREasonCd = reasonCd.split(":");
+	var arrReasonCd = reasonCd.split(":");
+	var customerReasonArr = ['G686_10'];
+
+	isCustomer = false;
 	
 	// 취소, 반품, 교환 사유 판단
-	if (arrREasonCd[0] == 'G686_10') {
+	for (i=0 ; i<customerReasonArr.length ; i++) {
+		if (customerReasonArr[i] == arrReasonCd[0]) {
+			isCustomer = true;
+		}
+	}
+	
+	// 귀책사유설정 회사, 고객
+	if (isCustomer) {
 		$("#imputeReason").text("고객");
-		isCustomer = true;
 	} else {
 		$("#imputeReason").text("회사");
-		isCustomer = false;
 	}
 
-	$('#cancelRequestFrm input[name=chgReason]').val(arrREasonCd[0]);
-	$('#cancelRequestFrm input[name=chgReasonDesc]').val(arrREasonCd[1]);
+	$('#cancelRequestFrm input[name=chgReason]').val(arrReasonCd[0]);
+	$('#cancelRequestFrm input[name=chgReasonDesc]').val(arrReasonCd[1]);
 
 	fnCalculateRefundAmt();			//환불예정금액 계산.
 }
@@ -971,6 +979,12 @@ var fnCancelRequestPartOk = function () {
 		bankCd 		= refundAccount[0].bankCd;
 	}
 	
+	// 5. 추가정보설정
+	var chgerNm 	= orderInfoList[0].ordNm;
+	var chgerEmail 	= orderInfoList[0].ordEmail;
+	var chgerPhnno 	= orderInfoList[0].ordPhnno;
+	var chgerTelno 	= orderInfoList[0].ordTelno;
+	
 	var jsonObj = {
 		"ordNo"				: $('#cancelRequestFrm input[name=ordNo]').val()
 		,"chgReason" 		: $('#cancelRequestFrm input[name=chgReason]').val()
@@ -981,6 +995,13 @@ var fnCancelRequestPartOk = function () {
 		,"bankCd" 			: bankCd
 		,"allCanYn" 		: allCanYn
 		,"isCustomer" 		: isCustomer
+		,"chgerNm"			: chgerNm
+		,"chgerEmail"		: chgerEmail
+		,"chgerZipNo"		: ""
+		,"chgerBaseAddr"	: ""
+		,"chgerDtlAddr"		: ""
+		,"chgerPhnno"		: chgerPhnno
+		,"chgerTelno"		: chgerTelno
 	}
 
 	// 주문번호, 취소사유, 취소메모, (취소, 반품, 교환 신청 정보 목록), 환불계좌
@@ -1021,26 +1042,22 @@ var fnBindOrderRfAccountInfo = function () {
 };
 
 $(document).ready(function() {
-	// 1. Create a agGrid
+	// 1. 그리드생성
 	gagaAgGrid.createGrid('gridOrderCancelRequestList'		, gridOptionsCancelReqList);			// 주문정보
 	gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
 	
 	gagaAgGrid.createGrid('gridOrderCancelRequestToBeList'	, gridOptionsCancelReqToBeList);		// 취소정보
 	
-	gagaAgGrid.createGrid('gridDelvCdList'					, gridOptionsDelvCdList);				// 배송비 정보
+	gagaAgGrid.createGrid('gridDelvCdList'					, gridOptionsDelvCdList);				// 배송비정보
 	
 	gagaAgGrid.createGrid('gridRefundAccountInfo'			, gridOptionsRefundAccountInfo);		// 환불계좌정보
 	
-	// 취소정보계산
+	// 2. 환불정보계산
 	fnCalculateRefundAmt(null);
 	
-	// 그리드 숨김처리
+	// 3. 무통장입금아일때 환불계좌 그리드 숨김처리
 	if (payMeans !== 'G014_20') {
 		$('#wrapRefundAccount').addClass("off");
-	}
-	
-	if (payMeans === 'G014_20' && mallGb === 'G011_10' ) {
-		// 환불계좌정보
 		fnBindOrderRfAccountInfo();
 	}
 });

+ 103 - 24
src/main/webapp/WEB-INF/views/order/ReturnRequestForm.html

@@ -136,15 +136,15 @@
 					<tbody>
 						<tr>
 							<th>보내는사람 <i class="star"></i></th>
-							<td colspan="3"><input type="text" name ="chgerNm" class="" /></td>
+							<td colspan="3"><input type="text" name ="chgerNm" class=""/></td>
 						</tr>
 						<tr>
 							<th>회수지주소 <i class="star"></i></th>
 							<td colspan="3">
-								<input type="text" name ="chgerZipNo" class="w100" readonly="readonly" />
+								<input type="text" name ="chgerZipNo" class="w100" readonly="readonly"/>
 								<button type="button" class="btn btn-info" onclick="fnOpenDaumAddr('delvLoc');">우편번호찾기</button>
-								<input type="text" name ="chgerBaseAddr" class="w300" />
-								<input type="text" name ="chgerDtlAddr" class="w300" />
+								<input type="text" name ="chgerBaseAddr" class="w300"/>
+								<input type="text" name ="chgerDtlAddr" class="w300"/>
 							</td>
 						</tr>
 						<tr>
@@ -188,6 +188,7 @@ var cancelRequestTargetList = [[${cancelRequestTargetList}]];				// 취소대상
 var ordNo 					= [[${ordNo}]];									// 주문번호
 var orderInfoList 			= [[${orderInfoList}]];							// 주문기본정보
 var payMeans 				= orderInfoList[0].payMeans;					// 결제수단
+var orderDelvRtnAddrInfo	= [[${orderDelvRtnAddrInfo}]];					// 회수지정보
 
 var temp1 = true;
 var temp2 = false;
@@ -951,19 +952,27 @@ var fnCalculateRefundAmt = function (obj) {
 
 //  사유
 var fnChangeChgReason = function(reasonCd){
-	var arrREasonCd = reasonCd.split(":");
+	var arrReasonCd = reasonCd.split(":");
+	var customerReasonArr = ['G688_10', 'G688_11', 'G688_12', 'G688_13', 'G688_15' , 'G688_21', 'G688_30'];
+
+	isCustomer = false;
 	
 	// 취소, 반품, 교환 사유 판단
-	if (arrREasonCd[0] == 'G686_10') {
+	for (i=0 ; i<customerReasonArr.length ; i++) {
+		if (customerReasonArr[i] == arrReasonCd[0]) {
+			isCustomer = true;
+		}
+	}
+	
+	// 귀책사유설정 회사, 고객
+	if (isCustomer) {
 		$("#imputeReason").text("고객");
-		isCustomer = true;
 	} else {
 		$("#imputeReason").text("회사");
-		isCustomer = false;
 	}
 
-	$('#cancelRequestFrm input[name=chgReason]').val(arrREasonCd[0]);
-	$('#cancelRequestFrm input[name=chgReasonDesc]').val(arrREasonCd[1]);
+	$('#cancelRequestFrm input[name=chgReason]').val(arrReasonCd[0]);
+	$('#cancelRequestFrm input[name=chgReasonDesc]').val(arrReasonCd[1]);
 	
 	//환불예정금액 계산.
 	fnCalculateRefundAmt();			
@@ -1002,7 +1011,8 @@ var fnCancelRequestPartOk = function () {
 	var chgReason = $("#cancelRequestFrm select[name=selectChgReason]").val();
 	
 	if (gagajf.isNull(chgReason)) {
-		mcxDialog.alert("취소사유를 입력하세요."); return ;
+		mcxDialog.alert("취소사유를 입력하세요."); 
+		return ;
 	}
 	
 	// 4. 환불계좌 체크
@@ -1010,6 +1020,7 @@ var fnCancelRequestPartOk = function () {
 	var accountNm 	= "";
 	var bankCd 		= "";
 	
+	// 결제타입이 무통장 입금일때 사용
 	if (payMeans == 'G014_20') {
 		var refundAccount = gridOptionsRefundAccountInfo.api.getSelectedRows();
 		
@@ -1023,6 +1034,44 @@ var fnCancelRequestPartOk = function () {
 		bankCd 		= refundAccount[0].bankCd;
 	}
 	
+	// 5. 회수지정보설정
+	var chgerNm			= $("#cancelRequestFrm input[name=chgerNm]").val();
+	var chgerZipNo		= $("#cancelRequestFrm input[name=chgerZipNo]").val();
+	var chgerBaseAddr	= $("#cancelRequestFrm input[name=chgerBaseAddr]").val();
+	var chgerDtlAddr	= $("#cancelRequestFrm input[name=chgerDtlAddr]").val();
+	
+	var chgerPhnno1		= $("#cancelRequestFrm select[name=chgerPhnno1]").val();
+	var chgerPhnno2		= $("#cancelRequestFrm input[name=chgerPhnno2]").val();
+	var chgerPhnno3		= $("#cancelRequestFrm input[name=chgerPhnno3]").val();
+	
+	var chgerTelno1		= $("#cancelRequestFrm select[name=chgerTelno1]").val();
+	var chgerTelno2		= $("#cancelRequestFrm input[name=chgerTelno2]").val();
+	var chgerTelno3		= $("#cancelRequestFrm input[name=chgerTelno3]").val();
+
+	if (gagajf.isNull(chgerZipNo)) {
+		mcxDialog.alert("회수지주소를 입력하세요."); return;
+	}
+	if (gagajf.isNull(chgerBaseAddr)) {
+		mcxDialog.alert("회수지주소를 입력하세요."); return;
+	}
+	if (gagajf.isNull(chgerDtlAddr)) {
+		mcxDialog.alert("회수지주소를 입력하세요."); return;
+	}
+	
+	if (gagajf.isNull(chgerPhnno1)) {
+		mcxDialog.alert("휴대전화를 입력하세요."); return;
+	}
+	if (gagajf.isNull(chgerPhnno2)) {
+		mcxDialog.alert("휴대전화를 입력하세요."); return;
+	}
+	if (gagajf.isNull(chgerPhnno3)) {
+		mcxDialog.alert("휴대전화를 입력하세요."); return;
+	}
+	
+	var chgerPhnno 		= chgerPhnno1 + chgerPhnno2 + chgerPhnno3;
+	var chgerTelno 		= chgerTelno1 + chgerTelno2 + chgerTelno3;
+	var chgerEmail 		= orderInfoList[0].ordEmail;
+	
 	var jsonObj = {
 		"ordNo"				: $('#cancelRequestFrm input[name=ordNo]').val()
 		,"chgReason" 		: $('#cancelRequestFrm input[name=chgReason]').val()
@@ -1033,6 +1082,13 @@ var fnCancelRequestPartOk = function () {
 		,"bankCd" 			: bankCd
 		,"allCanYn" 		: allCanYn
 		,"isCustomer"		: isCustomer
+		,"chgerNm"			: chgerNm
+		,"chgerEmail"		: chgerEmail
+		,"chgerZipNo"		: chgerZipNo
+		,"chgerBaseAddr"	: chgerBaseAddr
+		,"chgerDtlAddr"		: chgerDtlAddr
+		,"chgerPhnno"		: chgerPhnno
+		,"chgerTelno"		: chgerTelno
 	}
 
 	// 주문번호, 취소사유, 취소메모, (취소, 반품, 교환 신청 정보 목록), 환불계좌
@@ -1043,7 +1099,7 @@ var fnCancelRequestPartOk = function () {
 		sureBtnClick		: function(){
 			// 취소 실행
 			gagajf.ajaxJsonSubmit(
-				'/orderChange/return/'
+				'/orderChange/returnRequest/'
 				, jsonData
 				, function() {
 					uifnPopupClose('popupOrderDetail');
@@ -1075,11 +1131,11 @@ var fnBindOrderRfAccountInfo = function () {
 // 우편번호 DAUM을 이용한 우편번호 팝업 레이어
 var fnOpenDaumAddr = function() {
 	let daumZip = new daum.Postcode({
-		oncomplete: function(data) {
+		oncomplete: function(data) {			
 			// 우편번호와 주소 정보를 해당 필드에 넣는다.
-			$('#detailForm input[name=chgerZipNo]').val(data.zonecode);
-			$('#detailForm input[name=chgerBaseAddr]').val(cfnGetDaumRoadAddr(data));
-			$('#detailForm input[name=chgerDtlAddr]').focus();
+			$('#cancelRequestFrm input[name=chgerZipNo]').val(data.zonecode);
+			$('#cancelRequestFrm input[name=chgerBaseAddr]').val(cfnGetDaumRoadAddr(data));
+			$('#cancelRequestFrm input[name=chgerDtlAddr]').focus();
 			
 			cfnCloseDaumAddr();
 		},
@@ -1089,29 +1145,52 @@ var fnOpenDaumAddr = function() {
 	cfnOpenDaumAddr(daumZip);
 }
 
+// 회수지정보 셋팅
+var fnSetChger = function(){
+	var data = orderDelvRtnAddrInfo[0];
+	var spRecipPhnno = (data.recipPhnno != null) ? data.recipPhnno.split('-') : null;
+	var spRecipTelno = (data.recipTelno != null) ? data.recipTelno.split('-') : null;
+	
+	$("#cancelRequestFrm input[name=chgerNm]").val(data.recipNm);
+	$("#cancelRequestFrm input[name=chgerZipNo]").val(data.recipZipNo);
+	$("#cancelRequestFrm input[name=chgerBaseAddr]").val(data.recipBaseAddr);
+	$("#cancelRequestFrm input[name=chgerDtlAddr]").val(data.recipDtlAddr);
+	
+	if (spRecipPhnno) {
+		$("#cancelRequestFrm select[name=chgerPhnno1]").val(spRecipPhnno[0]);
+		$("#cancelRequestFrm input[name=chgerPhnno2]").val(spRecipPhnno[1]);
+		$("#cancelRequestFrm input[name=chgerPhnno3]").val(spRecipPhnno[2]);
+	}
+	
+	if (spRecipTelno) {
+		$("#cancelRequestFrm select[name=chgerTelno1]").val(spRecipTelno[0]);
+		$("#cancelRequestFrm input[name=chgerTelno2]").val(spRecipTelno[1]);
+		$("#cancelRequestFrm input[name=chgerTelno3]").val(spRecipTelno[2]);
+	}
+}
+
 $(document).ready(function() {
-	// 1. Create a agGrid
+	// 1. 그리드생성
 	gagaAgGrid.createGrid('gridOrderCancelRequestList'		, gridOptionsCancelReqList);			// 주문정보
 	gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
 	
 	gagaAgGrid.createGrid('gridOrderCancelRequestToBeList'	, gridOptionsCancelReqToBeList);		// 취소정보
 	
-	gagaAgGrid.createGrid('gridDelvCdList'					, gridOptionsDelvCdList);				// 배송비 정보
+	gagaAgGrid.createGrid('gridDelvCdList'					, gridOptionsDelvCdList);				// 배송비정보
 	
 	gagaAgGrid.createGrid('gridRefundAccountInfo'			, gridOptionsRefundAccountInfo);		// 환불계좌정보
 	
-	// 취소정보계산
+	// 2. 환불정보계산
 	fnCalculateRefundAmt(null);
 	
-	// 그리드 숨김처리
+	// 3. 무통장입금아일때 환불계좌 그리드 숨김처리
 	if (payMeans !== 'G014_20') {
 		$('#wrapRefundAccount').addClass("off");
-	}
-	
-	if (payMeans === 'G014_20' && mallGb === 'G011_10' ) {
-		// 환불계좌정보
 		fnBindOrderRfAccountInfo();
 	}
+	
+	// 4. 회수지정보설정
+	fnSetChger();
 });
 </script>
 </html>

+ 26 - 24
src/main/webapp/ux/css/admin.ui.css

@@ -80,8 +80,8 @@ html,body,#wrapper,#container {min-height:100%; height:100%;}
 
 /* 로그인 :alert */
 .alertBox {position:relative; padding:10px 40px 10px 10px; margin-bottom:10px; border:1px solid; border-radius:.25rem; line-height:22px;}
-.alertBox .alertClose {position:absolute; top:0; right:5px; padding:0 10px; height:40px; text-indent:-9999px; background:url('../../image/btn_sltClose.png') no-repeat 50% 50%;}
-.alertBox .alertClose:hover {background:url('../../image/btn_sltCloseOn.png') no-repeat 50% 50%;}
+.alertBox .alertClose {position:absolute; top:0; right:5px; padding:0 10px; height:40px; text-indent:-9999px; background:url('/image/btn_sltClose.png') no-repeat 50% 50%;}
+.alertBox .alertClose:hover {background:url('/image/btn_sltCloseOn.png') no-repeat 50% 50%;}
 .alert-success {color:#155724; background-color:#d4edda; border-color:#c3e6cb;}
 .alert-info {color:#0c5460; background-color:#d1ecf1; border-color:#bee5eb;}
 .alert-warning {color:#856404; background-color:#fff3cd; border-color:#ffeeba;}
@@ -122,8 +122,8 @@ header a, header button {color:#fff;}
 #lnb a {display:block; color:#a7b1c2;}
 #lnb a:hover {color:#fff;}
 #lnb a.on {color:#fff;}
-#lnb .dep2 {padding:14px 20px 14px 35px; background:url('../../image/icon_dep2.png') 10px 50% no-repeat, url('../../image/icon_depArr2.png') 222px 50% no-repeat; background-color:#233646; cursor:pointer;}
-#lnb .dep2.on {display:block; background:url('../../image/icon_dep2On.png') 10px 50% no-repeat, url('../../image/icon_depArr2On.png') 222px 50% no-repeat; background-color:#233646;}
+#lnb .dep2 {padding:14px 20px 14px 35px; background:url('/image/icon_dep2.png') 10px 50% no-repeat, url('/image/icon_depArr2.png') 222px 50% no-repeat; background-color:#233646; cursor:pointer;}
+#lnb .dep2.on {display:block; background:url('/image/icon_dep2On.png') 10px 50% no-repeat, url('/image/icon_depArr2On.png') 222px 50% no-repeat; background-color:#233646;}
 #lnb .dep3 {padding:5px 0 10px 10px; border-left:4px solid #8597eb; cursor:pointer;}
 #lnb .dep3 a {padding:10px; cursor:pointer;}
 #lnb .dep4 {padding:5px 0 10px 20px; cursor:pointer;}
@@ -153,7 +153,7 @@ header a, header button {color:#fff;}
 .panelStyle h2 {margin-right:10px; font-size:14px; font-weight:bold;}
 .panelStyle h3 {margin-right:10px; font-size:12px; font-weight:normal; line-height:25px;}
 .panelStyle h3 i {padding-right:5px}
-.panelStyle h4 {padding-left:23px; height:31px; line-height:31px; background:url('../../image/icon_h4.png') no-repeat 3px 50%; color:#666;}
+.panelStyle h4 {padding-left:23px; height:31px; line-height:31px; background:url('/image/icon_h4.png') no-repeat 3px 50%; color:#666;}
 .panelStyle .panelBar {display:table; width:100%; padding-bottom:10px;}
 .panelStyle .panelBar h4 {margin-bottom:0;}
 .panelStyle .panelBar > li {display:table-cell;}
@@ -261,7 +261,7 @@ input[type=radio] {position:absolute; top:50%; left:0; width:18px; height:18px;
 label.chkBox, label.rdoBtn {position:relative; display:inline-block; padding-left:26px; height:22px; line-height:22px; vertical-align:middle; cursor:pointer;}
 /* 체크박스 :전체선택 버튼--------------- */
 input[type=checkbox] {position:absolute; top:0; left:0; width:0; height:0;}
-input[type=button].chkBox {margin-left:-2px; padding-left:24px; height:22px; vertical-align:middle; background:url('../../image/icon_checkN.png') no-repeat 0 50%;}
+input[type=button].chkBox {margin-left:-2px; padding-left:24px; height:22px; vertical-align:middle; background:url('/image/icon_checkN.png') no-repeat 0 50%;}
 
 /* 체크박스--------------- */
 label.chkBox::before {position:absolute; top:2px; left:0; content:''; width:16px; height:16px; border:1px solid #dbdbdb; background:#fff;}
@@ -365,9 +365,11 @@ td[rowspan] {border-bottom:1px solid #eee;}
 .btn-pink {color:#fff; background-color:#feada6; border:1px solid #feada6;}
 .btn-warning {color:#fff; background-color:#f8ac59; border:1px solid #f8ac59;}
 .btn-danger {color:#fff; background-color:#ed5565; border:1px solid #ed5565;}
-.btn-dark {color:#fff; background-color:#6c757d; border:1px solid #6c757d;}
+.btn-dark, .btn.active {color:#fff; background-color:#6c757d; border:1px solid #6c757d;}
 .btn.icn {line-height:28px; height:28px; padding:0 8px; background-color:#eee; border:1px solid #dbdbdb;}
 .btn.icn i {padding-top:6px; width:12px; vertical-align:top; font-size:14px; text-align:center;}
+.btnGroup{display:inline-block;}
+.btnGroup .btn + .btn{margin:0;}
 
 /* 페이징 --------------- */
 .tablePaging {position:relative; 	display:inline-block; vertical-align:middle;}
@@ -382,8 +384,8 @@ td[rowspan] {border-bottom:1px solid #eee;}
 .mSelected li {float:left; margin:2px 5px 3px; line-height:24px; padding:0 7px; background:#dbedf9; -ms-user-select:none; -moz-user-select:-moz-none; -webkit-user-select:none; user-select:none;}
 .mSelected li.srchFld {margin:0; padding:0; background:none;}
 .mSelected .srchFld input {width:25px; margin:0; padding:0; border:none; outline:none;}
-.mSelected a {border:none !important; float:right; margin-left:3px; padding:0 3px; width:15px; line-height:22px; text-indent:-9999px; background:url('../../image/btn_sltClose.png') no-repeat 100% 50%;}
-.mSelected a:hover {background:url('../../image/btn_sltCloseOn.png') no-repeat 100% 50%;}
+.mSelected a {border:none !important; float:right; margin-left:3px; padding:0 3px; width:15px; line-height:22px; text-indent:-9999px; background:url('/image/btn_sltClose.png') no-repeat 100% 50%;}
+.mSelected a:hover {background:url('/image/btn_sltCloseOn.png') no-repeat 100% 50%;}
 .mSelecting {display:none; overflow-y:auto; overflow-x:hidden; position:absolute; top:100%; left:-1px; z-index:1; width:100%; max-height:156px; line-height:30px; border:1px solid #e5e6e7; background:#fff;}
 .mSelecting li {margin:0 10px; cursor:pointer;}
 
@@ -399,7 +401,7 @@ td[rowspan] {border-bottom:1px solid #eee;}
 .lrStyle .uFile {margin-top:2px;}
 .uFileInput {position:absolute; top:0; width:100%; margin:0 !important; padding:0 !important; line-height:28px; border:none !important;}
 .uFileLabel {position:absolute; top:0; right:0; left:0; z-index:1; margin:0; padding:0 7px; width:cals(100% - 7px); line-height:28px; height:28px; background-color:#fff; border-radius:1px; overflow:hidden; white-space:nowrap;}
-.uFileLabel::after {position:absolute; top:0; right:0; bottom:0; width:30px; z-index:3; line-height:28px; content:" "; border-left:1px solid #dbdbdb; background:#eee url('../../image/icon_upload.png') no-repeat 50% 50%;}
+.uFileLabel::after {position:absolute; top:0; right:0; bottom:0; width:30px; z-index:3; line-height:28px; content:" "; border-left:1px solid #dbdbdb; background:#eee url('/image/icon_upload.png') no-repeat 50% 50%;}
 
 /* badge --------------- */
 .badge {float:right; margin-top:2px; padding:0 5px; min-width:9px; line-height:18px; color:#fff; font-size:12px; font-weight:600; border-radius:3px; text-align:center; text-shadow:1px 1px 1px rgba(0,0,0,0.4); letter-spacing:-0.5px;}
@@ -443,8 +445,8 @@ footer .f-right {float:right; padding-right:20px; line-height:38px;}
 .imgCard img {margin-right:15px;}
 .imgCard li:nth-of-type(2) {padding-top:20px; max-width:150px; line-height:24px}
 .imgCard p {font-size:12px;}
-.imgCard .cardClose {position:absolute; top:0; right:0; width:24px; background:url('../../image/btn_sltClose.png') no-repeat 50% 50%; text-indent:-9999px;}
-.imgCard .cardClose:hover {background:#f1f1f1 url('../../image/btn_sltCloseOn.png') no-repeat 50% 50%;}
+.imgCard .cardClose {position:absolute; top:0; right:0; width:24px; background:url('/image/btn_sltClose.png') no-repeat 50% 50%; text-indent:-9999px;}
+.imgCard .cardClose:hover {background:#f1f1f1 url('/image/btn_sltCloseOn.png') no-repeat 50% 50%;}
 .verticalTop {vertical-align:top;}
 
 /* 조회용 이미지 카드 */
@@ -452,14 +454,14 @@ footer .f-right {float:right; padding-right:20px; line-height:38px;}
 .cardArea2 ul, .cardArea2 .box {vertical-align:top; position:relative; display:inline-block; margin:10px; border:1px solid #dbdbdb; max-width:300px;}
 .cardArea2 li {display:table-cell; line-height:26px; vertical-align:middle;}
 .cardArea2 li:nth-of-type(2) {padding:0 10px;}
-.cardArea2 .cardDel {position:absolute; top:0; right:0; background:url('../../image/btn_sltClose.png') no-repeat 50% 50%; text-indent:-9999px;}
-.cardArea2 .cardDel:hover {background:#f1f1f1 url('../../image/btn_sltCloseOn.png') no-repeat 50% 50%;}
+.cardArea2 .cardDel {position:absolute; top:0; right:0; background:url('/image/btn_sltClose.png') no-repeat 50% 50%; text-indent:-9999px;}
+.cardArea2 .cardDel:hover {background:#f1f1f1 url('/image/btn_sltCloseOn.png') no-repeat 50% 50%;}
 
 /* 테이블 외부 안내문구 */
 .panelStyle > .notice {margin:0 0 15px ;}
 .panelContent > .notice {margin:15px 0;}
 .notice em {color:red;}
-.notice li, p.dot {padding-left:20px; background:url('../../image/dot_bk.png') no-repeat 5px 10px; line-height:24px;}
+.notice li, p.dot {padding-left:20px; background:url('/image/dot_bk.png') no-repeat 5px 10px; line-height:24px;}
 p.dot .btn {margin-left:10px !important;}
 p.dot em {color:red;}
 
@@ -483,14 +485,14 @@ p.dot em {color:red;}
 
 /* 유의사항 안내 */
 .infoBox {margin:0 20px 20px; padding:7px 10px; border-top:2px solid #dfe2e3; border-bottom:2px solid #dfe2e3; background:#fff}
-.infoBox p {padding-left:25px; line-height:20px; font-size:12px; background:url('../../image/dot_bk.png') no-repeat 10px 50%; background-size:3px auto;}
+.infoBox p {padding-left:25px; line-height:20px; font-size:12px; background:url('/image/dot_bk.png') no-repeat 10px 50%; background-size:3px auto;}
 
 /* 검색결과 안내문 */
 .srchNotice {padding-bottom:7px; font-weight:normal; font-size:14px;}
 .srchNotice em {color:red;}
 
 /* 필수입력항목 */
-.required {display:inline-block; position:relative; top:-3px; width:12px; height:7px; background:url('../../image/icon_required.png') no-repeat 0 50%;}
+.required {display:inline-block; position:relative; top:-3px; width:12px; height:7px; background:url('/image/icon_required.png') no-repeat 0 50%;}
 
 
 /* COLOR DESIGN -------------------------------------*/
@@ -646,8 +648,8 @@ hr {border:0; padding-bottom:10px;}/* 기본 여백 :10px */
 /*-- 회원추가 --------------*/
 .memAddWrap {line-height:26px; padding:3px 0;}
 .memAdd {margin-right:15px; padding:2px 27px 2px 0; position:relative; line-height:24px; height:24px; white-space:nowrap;}
-.memAdd button {position:absolute; top:3px; right:0; bottom:0; width:18px; height:18px; border:1px solid #dbdbdb; border-radius:3px; text-indent:-9999px; background:#eee url('../../image/btn_sltClose.png') no-repeat 50% 50%;}
-.memAdd button:hover {background:#eee url('../../image/btn_sltCloseOn.png') no-repeat 50% 50%;}
+.memAdd button {position:absolute; top:3px; right:0; bottom:0; width:18px; height:18px; border:1px solid #dbdbdb; border-radius:3px; text-indent:-9999px; background:#eee url('/image/btn_sltClose.png') no-repeat 50% 50%;}
+.memAdd button:hover {background:#eee url('/image/btn_sltCloseOn.png') no-repeat 50% 50%;}
 
 /*-- Date Picker --------------*/ /* 20200521 수정 */
 table.mtz-monthpicker {border:1px solid #ddd; border-top:none;}
@@ -657,8 +659,8 @@ table.mtz-monthpicker {border:1px solid #ddd; border-top:none;}
 .ui-datepicker .ui-datepicker-today,
 .ui-datepicker .ui-state-highlight {background:#fff7cf !important;}
 .ui-datepicker .ui-state-active {border:1px solid red !important;}
-.ui-datepicker .ui-datepicker-prev {position:absolute; top:3px; left:3px; width:30px; line-height:30px; text-indent:-9999px; background:url('../../image/icon_prev.png') no-repeat 50% 50%;}
-.ui-datepicker .ui-datepicker-next {position:absolute; top:3px; right:3px; width:30px; line-height:30px; text-indent:-9999px; background:url('../../image/icon_next.png') no-repeat 50% 50%;}
+.ui-datepicker .ui-datepicker-prev {position:absolute; top:3px; left:3px; width:30px; line-height:30px; text-indent:-9999px; background:url('/image/icon_prev.png') no-repeat 50% 50%;}
+.ui-datepicker .ui-datepicker-next {position:absolute; top:3px; right:3px; width:30px; line-height:30px; text-indent:-9999px; background:url('/image/icon_next.png') no-repeat 50% 50%;}
 .ui-datepicker .ui-datepicker-calendar {padding:5px; border:1px solid #ddd; border-top:none; text-align:center;}
 .ui-datepicker .ui-datepicker-calendar th{padding:5px 0}
 .ui-datepicker-week-end {text-align:center;}
@@ -814,12 +816,12 @@ table.mtz-monthpicker {border:1px solid #ddd; border-top:none;}
 /* 카테고리 Sort */
 .categoryOrder {margin-bottom:15px; background:#fcfcfc;}
 .categoryOrder li {clear:both; padding-left:15px; line-height:40px; cursor:move; border-top:1px dashed red; }
-.categoryOrder li button.on {background-image:url(../../image/icon_cate_minus.png);}
-/* .categoryOrder li:after {content:''; position:absolute; top:8px; left:-10px; width:21px; height:21px; background:url(../../image/line_cate.png)} */
+.categoryOrder li button.on {background-image:url(/image/icon_cate_minus.png);}
+/* .categoryOrder li:after {content:''; position:absolute; top:8px; left:-10px; width:21px; height:21px; background:url(/image/line_cate.png)} */
 .categoryOrder li:before{position:relative; content:''; width:1px; height:100%; background:#ddd;}
 .categoryOrder li ol{display:none}
 /* .categoryOrder ol:last-child li {background-image:none !important} */
-.categoryOrder button{position:relative; z-index:200; padding:0 15px 0; margin:0; line-height:40px; cursor:pointer; background-image:url(../../image/icon_cate_plus.png); background-repeat:no-repeat; background-position:0 0;}
+.categoryOrder button{position:relative; z-index:200; padding:0 15px 0; margin:0; line-height:40px; cursor:pointer; background-image:url(/image/icon_cate_plus.png); background-repeat:no-repeat; background-position:0 0;}
 
 /* 메인 공지팝업 */
 .noticeWrap{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:800px;background-color:#fff;}

+ 15 - 0
src/main/webapp/ux/plugins/gaga/gaga.agGrid.js

@@ -950,6 +950,21 @@ var gagaAgGrid = {
 			$('#load_AjaxSubmit').remove();
 		}
 	},
+	
+	/**
+	 * Hide the status bar of bottom
+	 * gagaAgGrid.createGrid() 함수 사용 후 호출한다.
+	 * <pre>
+	 *     gagaAgGrid.createGrid('gridList', gridOptions);
+	 *     gagaAgGrid.hideStatusBar('gridList');
+	 * </pre>
+	 * @param gridId - ag-Grid ID
+	 * @author gagamel
+	 * @since 2021. 1. 14
+	 */
+	hideStatusBar : function(gridId) {
+		$('#' + gridId + ' .ag-status-bar').hide();
+	},
 
 	/**
 	 * Fetch data using json format.

+ 68 - 3
src/main/webapp/ux/plugins/gaga/gaga.paging.js

@@ -71,8 +71,13 @@ var gagaPaging = {
 	 */
 	createPagination : function(pageable) {
 		// Generate pagination
-		$('#' + oPaginationId).html(pageable.generatedPagination);
-		
+		var html;
+		if (gagajf.isNull(pageable.generatedPagination)) {
+			html = gagaPaging.generatedPagination(pageable);
+		} else {
+			html = pageable.generatedPagination;
+		}
+		$('#' + oPaginationId).html(html);
 		// Bind event
 		gagaPaging.bind();
 	},
@@ -154,6 +159,66 @@ var gagaPaging = {
 				mcxDialog.alert('오류로 인해 처리되지 않았습니다.');
 			}
 		});
+	} ,
+	generatedPagination : function (pageable) {
+		let pageNo = pageable.pageNo;
+		let pageSize = pageable.pageSize;
+		let pageUnit = pageable.pageUnit;
+		let totalCount = pageable.totalCount;
+
+		let firstCount = (getPageGroup() - 1) * pageable.pageUnit + 1;
+		let loopCount = firstCount + pageUnit;
+		if (loopCount > getTotalPage()) {
+			loopCount = getTotalPage() + 1;
+		}
+
+		var pageTag = '';
+		if (!(firstCount == 1 && loopCount == 1)) {
+			if (pageNo == 1) {
+				pageTag += "<a class=\"arrow\" href=\"#\"><i class=\"fa fa-angle-double-left\" alt=\"맨처음\"></i></a>\n";
+			} else {
+				pageTag += "<a class=\"arrow\" href=\"#pageNo=1\"><i class=\"fa fa-angle-double-left\" alt=\"맨처음\"></i></a>\n";
+			}
+
+			if (getPageGroup() == 1) {
+				pageTag += "<a class=\"arrow\" href=\"#\"><i class=\"fa fa-angle-left\" alt=\"이전페이지\"></i></a>\n";
+			} else {
+				pageTag += "<a class=\"arrow\" href=\"#pageNo="+ (getPageGroup()-1) * pageUnit + "\"><i class=\"fa fa-angle-left\" alt=\"이전페이지\"></i></a>\n"
+			}
+
+			for (let i = firstCount; i < loopCount; i++) {
+				if (pageNo == i) {
+					pageTag += "<a class=\"num on\" href=\"#\">"+ i + "</a>\n";
+				} else {
+					pageTag += "<a class=\"num\" href=\"#pageNo=" + i + "\">" + i +"</a>\n"
+				}
+			}
+
+			if (loopCount <= (getTotalPage() + 1)) {
+				if (pageNo == getTotalPage()) {
+					pageTag += "<a class=\"arrow\" href=\"#\"><i class=\"fa fa-angle-right\" alt=\"다음페이지\"></i></a>\n";
+					pageTag += "<a class=\"arrow\" href=\"#\"><i class=\"fa fa-angle-double-right\" alt=\"맨마지막\"></i></a>\n";
+				} else {
+					pageTag += "<a class=\"arrow\" href=\"#pageNo=" + (getPageGroup() * pageUnit + 1) + "\"><i class=\"fa fa-angle-right\" alt=\"다음페이지\"></i></a>\n";
+					pageTag += "<a class=\"arrow\" href=\"#pageNo=" + getTotalPage() + "\"><i class=\"fa fa-angle-double-right\" alt=\"맨마지막\"></i></a>\n";
+				}
+			}
+		}
+
+		function getPageGroup() {
+			return parseInt(pageNo / pageUnit + 1 );
+		}
+
+		function getTotalPage() {
+			let totalPage = parseInt(totalCount / pageSize);
+			if (totalCount % pageSize > 0) {
+				totalPage++;
+			}
+			return totalPage;
+		}
+
+		return pageTag;
 	}
-	
+
 }
+