jsshin 5 gadi atpakaļ
vecāks
revīzija
35baabaa0e
30 mainītis faili ar 891 papildinājumiem un 4205 dzēšanām
  1. 0 188
      src/main/java/com/style24/admin/biz/dao/TsaOrderChangeDao.java
  2. 0 370
      src/main/java/com/style24/admin/biz/dao/TsaOrderDao.java
  3. 9 4
      src/main/java/com/style24/admin/biz/service/TsaGoodsService.java
  4. 0 80
      src/main/java/com/style24/admin/biz/service/TsaOrderChangeService.java
  5. 0 568
      src/main/java/com/style24/admin/biz/service/TsaOrderService.java
  6. 2 15
      src/main/java/com/style24/admin/biz/service/TsaPgService.java
  7. 1 1
      src/main/java/com/style24/admin/biz/web/TsaBoardController.java
  8. 1 0
      src/main/java/com/style24/admin/biz/web/TsaGoodsController.java
  9. 191 117
      src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java
  10. 9 7
      src/main/java/com/style24/admin/biz/web/TsaOrderController.java
  11. 2 2
      src/main/java/com/style24/admin/biz/web/TsaOrderRefundController.java
  12. 2 28
      src/main/java/com/style24/admin/biz/web/TsaPgController.java
  13. 1 1
      src/main/java/com/style24/persistence/domain/GoodsCategory.java
  14. 8 4
      src/main/java/com/style24/persistence/domain/GoodsSearch.java
  15. 1 1
      src/main/java/com/style24/persistence/mybatis/shop/TsaCommon.xml
  16. 71 42
      src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml
  17. 1 2
      src/main/java/com/style24/persistence/mybatis/shop/TsaLogin.xml
  18. 0 1604
      src/main/java/com/style24/persistence/mybatis/shop/TsaOrder.xml
  19. 0 812
      src/main/java/com/style24/persistence/mybatis/shop/TsaOrderChange.xml
  20. 1 8
      src/main/java/com/style24/persistence/mybatis/shop/TsaStock.xml
  21. 1 1
      src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html
  22. 1 1
      src/main/webapp/WEB-INF/views/goods/GoodsFreeGoodsForm.html
  23. 8 26
      src/main/webapp/WEB-INF/views/goods/GoodsItemkindForm.html
  24. 2 2
      src/main/webapp/WEB-INF/views/goods/GoodsNotiInfoForm.html
  25. 21 3
      src/main/webapp/WEB-INF/views/goods/GoodsSizeInfoForm.html
  26. 133 26
      src/main/webapp/WEB-INF/views/marketing/CouponPopupForm.html
  27. 159 102
      src/main/webapp/WEB-INF/views/order/CnclReqForm.html
  28. 3 3
      src/main/webapp/WEB-INF/views/order/ExchangeRequestForm.html
  29. 74 80
      src/main/webapp/WEB-INF/views/order/OrderDetailForm.html
  30. 189 107
      src/main/webapp/WEB-INF/views/order/RtnReqForm.html

+ 0 - 188
src/main/java/com/style24/admin/biz/dao/TsaOrderChangeDao.java

@@ -1,188 +0,0 @@
-package com.style24.admin.biz.dao;
-
-import java.util.Collection;
-
-import org.apache.ibatis.session.ResultHandler;
-
-import com.style24.core.support.annotation.ShopDs;
-import com.style24.persistence.domain.Order;
-import com.style24.persistence.domain.OrderChange;
-
-/**
- * 취소관리 Dao
- *
- * @author jsh77b
- * @since 2020. 11. 16
- */
-@ShopDs
-public interface TsaOrderChangeDao {
-	
-	/**
-	 * 주문상세 > 주문취소신청 > 주문취소,반품,교환 대상목록
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	Collection<Order> getCancelRequestTargetList(Order order);
-		
-	/**
-	 * 주문상세 > 주문취소신청 > 주문변경정보 등록
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 22
-	 */
-	int createOrderChange(OrderChange orderChange);
-	
-	/**
-	 * 주문상세 > 주문취소신청 > 주문상세단품정보 수정
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 22
-	 */
-	int updateOrderDetailItem(Order order);
-	
-	/**
-	 * 주문상세 > 주문취소신청 > 주문상세단품정보 이력 등록
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 22
-	 */
-	int createOrderDetailItemHst(Order order);
-	
-	/**
-	 * 주문상세 > 주문취소신청 > 상품옵션 재고 원복
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2021. 01. 08
-	 */
-	int updateOptionQty(Order order);
-	
-	/**
-	 * 주문상세 > 주문취소신청 > 주문상세정보(취소,반품) 이력 등록
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 22
-	 */
-	int createOrderDetailHstCnclRtn(Order order);
-	
-	/**
-	 * 주문상세 > 주문취소신청 > 주문상세정보 수정
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 22
-	 */
-	int updateOrderDetail(Order order);
-	
-	/**
-	 * 주문상세 > 주문취소신청 > 주문변경정보상세 등록
-	 *
-	 * @param OrderChange - 주문 변경 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 22
-	 */
-	int createOrderChangeDetail(OrderChange orderChange);
-	
-	/**
-	 * 주문상세 > 주문취소신청 > 주문환불금액정보 등록
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 22
-	 */
-	int createPayment(Order order);
-	
-	/**
-	 * 주문상세 > 주문취소신청 > 주문환불정보 등록
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 22
-	 */
-	int createRefund(Order order);
-	
-	/**
-	 * 주문상세 > 주문취소신청 > 주문추가배송금액 등록
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2021. 01. 06
-	 */
-	int createDeliveryFee(Order order);
-	
-	/**
-	 * 주문상세 > 주문취소신청 > 주문사은품전체취소
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 22
-	 */
-	int updateOrdFreegiftDel(Order order);
-	
-
-	
-
-	
-
-	
-	/**
-	 * 주문상세 > 주문취소 > 고객환불계좌정보 조회
-	 *
-	 * @param order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2021. 01. 04
-	 */
-	Collection<Order> getRefundAccount(Order order);
-	
-	/**
-	 * 주문상세 > 주문취소 > 고객환불계좌정보 중복체크
-	 *
-	 * @param order
-	 * @return int
-	 * @author jsh77b
-	 * @since 2021. 01. 05
-	 */
-	int getRefundAccountCheck(Order order);
-	
-	/**
-	 * 주문상세 > 주문취소 > 고객환불계좌정보 등록
-	 *
-	 * @param order
-	 * @return int
-	 * @author jsh77b
-	 * @since 2021. 01. 05
-	 */
-	int saveRefundAccount(Order order);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-

+ 0 - 370
src/main/java/com/style24/admin/biz/dao/TsaOrderDao.java

@@ -1,370 +0,0 @@
-package com.style24.admin.biz.dao;
-
-import java.util.Collection;
-
-import org.apache.ibatis.session.ResultHandler;
-
-import com.style24.core.support.annotation.ShopDs;
-import com.style24.persistence.domain.Order;
-import com.style24.persistence.domain.OrderChange;
-
-/**
- * 주문관리 Dao
- *
- * @author jsh77b
- * @since 2020. 11. 16
- */
-@ShopDs
-public interface TsaOrderDao {
-
-	/**
-	 * 주문 목록 카운트
-	 * @param Order
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	int getOrderListCount(Order order);
-
-	/**
-	 * 주문 목록
-	 * @param Order
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	Collection<Order> getOrderList(Order order);
-
-	/**
-	 * 주문기본정보
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	Collection<Order> getOrderInfoList(Order order);
-
-	/**
-	 * 주문상품정보 목록
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	Collection<Order> getOrderDetailList(Order order);
-
-	/**
-	 * 주문상세 > 사은품목록
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	Collection<Order> getOrderFreeGiftList(Order order);
-
-	/**
-	 * 배송정보
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	Collection<Order> getDeliveryAddrList(Order order);
-
-	/**
-	 * 결제내역 > 결제 기본정보
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	Collection<Order> getOrderPaymentBasicInfoList(Order order);
-
-	/**
-	 * 배송비 정보
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	Collection<Order> getDeliveryFeeList(Order order);
-
-	/**
-	 * 반품/교환 > 반품/교환 정보
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	Collection<Order> getOrderChangeList(Order order);
-
-	/**
-	 * 환불정보
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	Collection<Order> getOrderRefundInfo(Order order);
-
-	/**
-	 * 상담내역
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	Collection<Order> getOrderCounselInfo(Order order);
-
-	/**
-	 * 변경내역 > 주문요청 관리자 메모
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	Collection<Order> getOrderMemoList(Order order);
-
-	/**
-	 * 입점업체미발주 주문목록
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	Collection<Order> getOrderSellerUnorderList(Order order);
-
-	/**
-	 * 입점업체 엑셀다운용 임시테이블 삭제
-	 *
-	 * @param Order
-	 * @author jsh77b
-	 * @since 2020. 11. 30
-	 */
-	void deleteEntryExcelDownTmp(Order order);
-
-	/**
-	 * 주문상세상태 수정 - 입점
-	 *
-	 * @param Order
-	 * @author jsh77b
-	 * @since 2020. 11. 30
-	 */
-	int updateOrderDetailStat(Order order);
-
-	/**
-	 * 주문상세 이력 등록
-	 *
-	 * @param Order
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 30
-	 */
-	int createOrderDetailHst(Order order);
-
-	/**
-	 * 엑셀 다운로드용 임시테이블 데이타 체크
-	 *
-	 * @param Order
-	 * @author jsh77b
-	 * @since 2020. 11. 30
-	 */
-	int getEntryUploadExcelCheck(Order order);
-
-	/**
-	 * 입점업체 엑셀다운용 임시테이블 생성
-	 *
-	 * @param Order
-	 * @author jsh77b
-	 * @since 2020. 11. 30
-	 */
-	void createEntryExcelDownTmp(Order order);
-
-	/**
-	 * 입점업체미발주목록
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 30
-	 */
-	Collection<Order> getSellerUnorderList(Order order);
-
-	/**
-	 * 주문 엑셀다운로드
-	 *
-	 * @param Order
-	 * @param handler - ResultHandler
-	 * @author jsh77b
-	 * @since 2020. 11. 30
-	 */
-	void getSellerUnorderList(Order order, ResultHandler<Order> handler);
-
-	/**
-	 * 주문상세 정보
-	 *
-	 * @param ordDtlNo - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 30
-	 */
-	Order getOrderDetailInfo(Order order);
-
-	/**
-	 * 주문상세정보 변경 - 송장번호 적용(입점)
-	 *
-	 * @param Order
-	 * @author jsh77b
-	 * @since 2020. 11. 30
-	 */
-	int updateOrderDetailInvoice(Order order);
-
-	/**
-	 * 주문상세 > 주문메오 > 주문메모정보조회
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	Order getOrderMemoInfo(Order order);
-
-	/**
-	 * 주문상세 > 주문요청 관리자 메모 > 메모등록
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	int createOrderMemo(Order order);
-
-	/**
-	 * 주문상세 > 주문요청 관리자 메모 > 메모수정
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	int updateOrderMemo(Order order);
-
-	/**
-	 * 주문상세 > 주문요청 관리자 메모 > 메모삭제
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	int deleteOrderMemo(Order order);
-
-	/**
-	 * 주문상품 상세 변경 이력 화면
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	Collection<Order> getOrderDetailHistoryList(Order order);
-
-	/**
-	 * 쿠폰사용 내역 팝업 화면
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	Collection<Order> getOrderDiscountCouponList(Order order);
-
-	/**
-	 * 포인트사용 내역 팝업 화면
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	Collection<Order> getOrderDiscountPointList(Order order);
-
-	/**
-	 * 상품권사용 내역 팝업 화면
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	Collection<Order> getOrderGiftcardHstList(Order order);
-
-	/**
-	 * 다다익선적용 내역 팝업 화면
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	Collection<Order> getOrderTmtbHstList(Order order);
-
-	/**
-	 * 주문상세상태를 변경
-	 *
-	 * @param Order - 주문 정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 12. 22
-	 */
-	int changedOrdDtlStat(Order order);
-
-	/**
-	 * 배송 > 배송지 정보 수정
-	 *
-	 * @param Order
-	 * @author jsh77b
-	 * @since 2021. 01. 15
-	 */
-	void updateOrderAddr(Order order);
-
-	/**
-	 * 반품/교환 > 회수지 정보 수정
-	 *
-	 * @param Order
-	 * @author jsh77b
-	 * @since 2021. 01. 18
-	 */
-	void updateOrderChange(Order order);
-
-
-
-
-
-
-
-}
-
-
-
-
-
-
-
-
-
-
-
-
-

+ 9 - 4
src/main/java/com/style24/admin/biz/service/TsaGoodsService.java

@@ -3538,14 +3538,19 @@ public class TsaGoodsService {
 	 */
 	public void saveSizeInfo(SizeInfo sizeInfo) {
 
+		//log.info("[saveSizeInfo] sizeInfo {}", sizeInfo);
 		String sizeCate1Cd = "";
 		String sizeCate2Cd = "";
 		if ("1".equals(sizeInfo.getSizeGb()) ){
-			sizeCate1Cd = "00";
-			if ("Y".equals(sizeInfo.getSelfYn())){
-				sizeCate1Cd = sizeInfo.getBrandCd();
+
+			if (StringUtils.isBlank(sizeInfo.getSizeCate1Cd())) {
+				sizeCate1Cd = "00";
+				if ("Y".equals(sizeInfo.getSelfYn())){
+					sizeCate1Cd = sizeInfo.getBrandCd();
+				}
+				sizeInfo.setSizeCate1Cd(sizeCate1Cd);
 			}
-			sizeInfo.setSizeCate1Cd(sizeCate1Cd);
+
 			if (StringUtils.isBlank(sizeInfo.getSizeCate2Cd())) {
 				sizeCate2Cd = commonService.getNextSequence("SEQ_CATE").toString();
 				sizeInfo.setSizeCate2Cd(sizeCate2Cd);

+ 0 - 80
src/main/java/com/style24/admin/biz/service/TsaOrderChangeService.java

@@ -1,80 +0,0 @@
-package com.style24.admin.biz.service;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.gagaframework.web.parameter.GagaMap;
-import com.style24.admin.biz.dao.TsaOrderDao;
-import com.style24.admin.biz.dao.TsaOrderChangeDao;
-import com.style24.admin.biz.dao.TsaRefundDao;
-import com.style24.admin.support.security.session.TsaSession;
-import com.style24.core.biz.dao.TscOrderChangeDao;
-import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.domain.Order;
-import com.style24.persistence.domain.OrderChange;
-
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * 취소관리 Service
- *
- * @author jsh77b
- * @since 2020. 11. 16
- */
-@Service
-@Slf4j
-public class TsaOrderChangeService {
-
-	@Autowired
-	private TscMessageByLocale message;
-
-	@Autowired
-	private Environment env;
-
-	@Autowired
-	private TsaOrderDao orderDao;
-	
-	@Autowired
-	private TsaOrderChangeDao orderChangeDao;
-
-	@Autowired
-	private ObjectMapper mapper;
-		
-	/**
-	 * 주문 환불계좌
-	 *
-	 * @param order - 주문정보
-	 * @return Order
-	 * @author jsh77b
-	 * @since 2021. 01. 04.
-	 */
-	public Collection<Order> getRefundAccount(Order order) {
-		return orderChangeDao.getRefundAccount(order);
-	}
-	
-	/**
-	 * 환불계좌 저장
-	 *
-	 * @param order - 주문정보
-	 * @return TsaOrder
-	 * @author jsh77b
-	 * @since 2021. 01. 05.
-	 */
-	public int saveRefundAccount(Order order) {
-		
-		// 환불계좌 유무 체크 후 등록
-		if (orderChangeDao.getRefundAccountCheck(order) < 1) {
-			orderChangeDao.saveRefundAccount(order);
-		}
-		
-		return 1;
-	}
-	
-}

+ 0 - 568
src/main/java/com/style24/admin/biz/service/TsaOrderService.java

@@ -1,568 +0,0 @@
-package com.style24.admin.biz.service;
-
-import java.util.Collection;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.gagaframework.excel.env.GagaExcelConstants;
-import com.gagaframework.excel.xssf.GagaExcelResultHandler;
-import com.style24.admin.biz.dao.TsaOrderDao;
-import com.style24.admin.support.security.session.TsaSession;
-import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.domain.Order;
-
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * 주문관리 Service
- *
- * @author jsh77b
- * @since 2020. 11. 16
- */
-@Service
-@Slf4j
-public class TsaOrderService {
-
-	@Autowired
-	private TscMessageByLocale message;
-
-	@Autowired
-	private Environment env;
-
-	@Autowired
-	private TsaOrderDao orderDao;
-
-	@Autowired
-	private ObjectMapper mapper;
-
-	/**
-	 * 주문목록 카운트
-	 * @param Order
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	public int getOrderListCount(Order order) {
-		return orderDao.getOrderListCount(order);
-	}
-
-	/**
-	 * 주문목록
-	 * @param Order
-	 * @return
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	public Collection<Order> getOrderList(Order order) {
-		return orderDao.getOrderList(order);
-	}
-
-	/**
-	 * 주문기본정보
-	 *
-	 * @param order - 주문 정보
-	 * @return Collection<Order>
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	public Collection<Order> getOrderInfoList(Order order) {
-		return orderDao.getOrderInfoList(order);
-	}
-
-	/**
-	 * 주문상품정보 목록
-	 *
-	 * @param order - 주문 정보
-	 * @return Collection<Order>
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	public Collection<Order> getOrderDetailList(Order order) {
-		return orderDao.getOrderDetailList(order);
-	}
-
-	/**
-	 * 사은품목록
-	 *
-	 * @param order - 주문 정보
-	 * @return Collection<Order>
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	public Collection<Order> getOrderFreeGiftList(Order order) {
-		return orderDao.getOrderFreeGiftList(order);
-	}
-
-	/**
-	 * 배송정보
-	 *
-	 * @param order - 주문 정보
-	 * @return Collection<Order>
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	public Collection<Order> getDeliveryAddrList(Order order) {
-		return orderDao.getDeliveryAddrList(order);
-	}
-
-	/**
-	 * 결제정보
-	 *
-	 * @param order - 주문 정보
-	 * @return Collection<Order>
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	public Collection<Order> getOrderPaymentBasicInfoList(Order order) {
-		return orderDao.getOrderPaymentBasicInfoList(order);
-	}
-
-	/**
-	 * 배송비정보
-	 *
-	 * @param order - 주문 정보
-	 * @return Collection<Order>
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	public Collection<Order> getDeliveryFeeList(Order order) {
-		return orderDao.getDeliveryFeeList(order);
-	}
-
-	/**
-	 * 취소/반품/교환 요청 정보
-	 *
-	 * @param order - 주문 정보
-	 * @return Collection<Order>
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	public Collection<Order> getOrderChangeList(Order order) {
-		return orderDao.getOrderChangeList(order);
-	}
-
-	/**
-	 * 환불정보
-	 *
-	 * @param order - 주문 정보
-	 * @return Collection<Order>
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	public Collection<Order> getOrderRefundInfo(Order order) {
-		return orderDao.getOrderRefundInfo(order);
-	}
-
-	/**
-	 * 상담내역
-	 *
-	 * @param order - 주문 정보
-	 * @return Collection<Order>
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	public Collection<Order> getOrderCounselInfo(Order order) {
-		return orderDao.getOrderCounselInfo(order);
-	}
-
-	/**
-	 * 주문요청 관리자 메모 목록 조회
-	 *
-	 * @param order - 주문 정보
-	 * @return Collection<Order>
-	 * @author jsh77b
-	 * @since 2020. 11. 18
-	 */
-	public Collection<Order> getOrderMemoList(Order order) {
-		order.setDelYn("N");
-		return orderDao.getOrderMemoList(order);
-	}
-
-	/**
-	 * 입점업체미발주 주문목록
-	 * @param Order
-	 * @return Collection<Order>
-	 * @author jsh77b
-	 * @since 2020. 11. 30
-	 */
-	public Collection<Order> getOrderSellerUnorderList(Order order) {
-		return orderDao.getOrderSellerUnorderList(order);
-	}
-
-	/**
-	 * 입점업체미발주목록 - 엑셀다운로드시 주문상태값 변경(상품준비중)
-	 *
-	 * @param orderList - 주문 정보
-	 * @author jsh77b
-	 * @since 2020. 11. 30
-	 */
-	@Transactional("shopTxnManager")
-	public void saveUnorderStatus(Collection<Order> orderList) {
-
-		// 1. 임시테이블 삭제
-		Order deleteOrder = new Order();
-		deleteOrder.setRegNo(TsaSession.getInfo().getUserNo());
-		orderDao.deleteEntryExcelDownTmp(deleteOrder);
-
-		for (Order oneData : orderList) {
-
-			Order updateData = new Order();
-
-			updateData.setOrdNo(oneData.getOrdNo());
-			updateData.setOrdDtlNo(oneData.getOrdDtlNo());
-			updateData.setBrandCd(oneData.getBrandCd());
-			updateData.setSupplyCompCd(oneData.getSupplyCompCd());
-			updateData.setRegNo(TsaSession.getInfo().getUserNo());
-			updateData.setUpdNo(TsaSession.getInfo().getUserNo());
-
-			// 2. 주문상세상태값 변경
-			// 2.1 2020.12.15 주문상태체크추가 (결제완료 상태만 상품준비중 변경)
-			int result = orderDao.updateOrderDetailStat(updateData);
-
-			if (result > 0) {
-				// 3. 주문상세상태 변경 이력생성
-				orderDao.createOrderDetailHst(updateData);
-			}
-
-			// 4. 엑셀 다운로드용 임시테이블 데이타 체크
-			result = orderDao.getEntryUploadExcelCheck(updateData);
-			if (result < 1) {
-
-				// 5. 엑셀 다운로드용 임시테이블 저장
-				orderDao.createEntryExcelDownTmp(updateData);
-			}
-		}
-	}
-
-	/**
-	 * 입점업체미발주목록 엑셀다운로드
-	 *
-	 * @param order - 주문정보
-	 * @param excelFilenameWithPath - 경로를 포함한 엑셀파일명
-	 * @author jsh77b
-	 * @since 2020. 11. 30
-	 */
-	public void geSellerUnorderExcelList(Order order, String excelFilenameWithPath) {
-
-		// 헤더 title 설정 (23)
-		String[] listTitles = {
-				"입점업체"
-				, "브랜드"
-				, "상품타입"
-				, "상품코드"
-				, "상품명"
-				, "주문번호"
-				, "주문상세번호"
-				, "주문상세상태"
-				, "주문자명"
-				, "주문일시"
-				, "결제수단"
-				, "주문자휴대전화"
-				, "수령자명"
-				, "수령자휴대전화"
-				, "수령자우편번호"
-				, "수령자기본주소"
-				, "수령자상세주소"
-				, "업체상품코드"
-				, "단품코드"
-				, "단품상품명"
-				, "칼라"
-				, "사이즈"
-				, "주문수량"
-				, "주문금액"
-				, "할인금액"
-				, "실결제금액"
-				, "송장"
-		};
-
-		// DB 처리 시 사용되는 파라미터명(셀명) 설정 (23)
-		String[] cellNames = {
-				"supplyCompNm"
-				, "brandKnm"
-				, "goodsTypeNm"
-				, "goodsCd"
-				, "goodsNm"
-				, "ordNo"
-				, "ordDtlNo"
-				, "ordDtlStatNm"
-				, "ordNm"
-				, "ordDt"
-				, "payMeansNm"
-				, "ordPhnno"
-				, "recipNm"
-				, "recipPhnno"
-				, "recipZipNo"
-				, "recipBaseAddr"
-				, "recipDtlAddr"
-				, "supplyGoodsCd"
-				, "itemCd"
-				, "itemNm"
-				, "optCd1"
-				, "optCd2"
-				, "itemOrdQty"
-				, "ordAmt"
-				, "totDcAmt"
-				, "realOrdAmt"
-				, "invoiceNo"
-		};
-
-		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()
-				, 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()
-		};
-
-		GagaExcelResultHandler<Order> handler = new GagaExcelResultHandler<>(excelFilenameWithPath, "출고배송목록(입점)", listTitles, cellNames, cellTypes);
-
-		orderDao.getSellerUnorderList(order, handler);
-
-		handler.close();
-	}
-
-	/**
-	 * 입점업체미발주목록 - 송장번호 입력(출고완료)
-	 *
-	 * @param orderList - 주문 정보
-	 * @return String - 결과메시지
-	 * @author jsh77b
-	 * @since 2020. 11. 30
-	 */
-	@Transactional("shopTxnManager")
-	public String saveUnorderInvoice(Collection<Order> orderList) {
-		String resultMsg;
-		int totalCount 			= 0;	// 전체 카운트
-		int failedCount 		= 0;	// 몰 실패 카운트
-		int successCount 		= 0;	// 몰 성공 카운트
-		String failedGoodCdStr 	= "";	// 실패 상품 리스트
-
-		// 1. 송장번호 등록 대상 목록 처리
-		for (Order oneData : orderList) {
-
-			// 2. 송장번호, 업체코드 체크
-			if (!StringUtils.isEmpty(oneData.getInvoiceNo()) && !StringUtils.isEmpty(oneData.getShipCompCd())) {
-				totalCount++;
-
-				Order updateData = new Order();
-				updateData.setOrdNo(oneData.getOrdNo());
-				updateData.setOrdDtlNo(oneData.getOrdDtlNo());
-				updateData.setBrandCd(oneData.getBrandCd());
-				updateData.setSupplyCompCd(oneData.getSupplyCompCd());
-				updateData.setRegNo(TsaSession.getInfo().getUserNo());
-				updateData.setUpdNo(TsaSession.getInfo().getUserNo());
-				updateData.setItemCd(oneData.getItemCd());
-				updateData.setOptCd2(oneData.getOptCd2());
-				updateData.setShipCompCd(oneData.getShipCompCd());
-				updateData.setInvoiceNo(oneData.getInvoiceNo().replace("-", ""));
-
-				// 3. 원주문 상세정보 조회
-				// 2020.12.15 세트상품의 경우에는 2개 이상의 row 가 표시됨 (주문상세번호 + 상풐코드로 + 사이즈코드) 변경
-				Order orgOrder = orderDao.getOrderDetailInfo(oneData);
-				if (orgOrder == null) {
-					failedGoodCdStr += updateData.getItemCd() + " /  " + updateData.getOptCd2() + "(Error1)<br/>"; // 상품정보 (상품명 + 칼라명) / 사이즈코드
-					failedCount++;
-					continue;
-				}
-
-				// 4. 상품코드, 사이즈, 주문수량 체크 (세트상품도 단품 단위로 업로드 요청)
-				// 2020.12.15 세트상품 때문에 단품단위로 비교
-				if (!orgOrder.getItemCd().equals(updateData.getItemCd())
-						|| !orgOrder.getOptCd2().equals(updateData.getOptCd2()) ) {
-					failedGoodCdStr += updateData.getItemCd() + " /  " + updateData.getOptCd2() + "(Error2)<br/>";
-					failedCount++;
-					continue;
-				}
-
-				// 5. 업체코드설정
-				updateData.setSupplyCompCd(orgOrder.getSupplyCompCd());
-
-				// 6. 송장번호등록
-				int result = orderDao.updateOrderDetailInvoice(updateData);
-
-				// 7. 주문상세상태 변경 이력 등록
-				if (result > 0) {
-					successCount++;
-					orderDao.createOrderDetailHst(updateData);
-				} else {
-					failedGoodCdStr += updateData.getItemCd() + " /  " + updateData.getOptCd2() + "(Error3)<br/>";
-					failedCount++;
-				}
-			}
-		}
-
-		resultMsg = "출고완료 : " + totalCount + "건 / 실패 : " + failedCount + "건 / 성공 : " + successCount + "건 <br/>" + "실패 목록 : " + failedGoodCdStr;
-
-		return resultMsg;
-	}
-
-	/**
-	 * 주문상세 > 주문요청 관리자 메모 > 메모정보조회
-	 * @param Order
-	 * @return Order
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	public Order getOrderMemoInfo(Order order) {
-		return orderDao.getOrderMemoInfo(order);
-	}
-
-	/**
-	 * 주문상세 > 주문요청 관리자 메모 > 메모등록
-	 * @param Order
-	 * @return Order
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	public void createOrderMemo(Order order) {
-		orderDao.createOrderMemo(order);
-	}
-
-	/**
-	 * 주문상세 > 주문요청 관리자 메모 > 메모수정
-	 * @param Order
-	 * @return Order
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	public void updateOrderMemo(Order order) {
-		orderDao.updateOrderMemo(order);
-	}
-
-	/**
-	 * 주문상세 > 주문요청 관리자 메모 > 메모삭제
-	 * @param Order
-	 * @return Order
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	public void deleteOrderMemo(Order order) {
-		orderDao.deleteOrderMemo(order);
-	}
-
-	/**
-	 * 주문상품 상세 변경 이력 화면
-	 * @param Order
-	 * @return Order
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	public Collection<Order> getOrderDetailHistoryList(Order order) {
-		return orderDao.getOrderDetailHistoryList(order);
-	}
-
-	/**
-	 * 쿠폰사용 내역 팝업 화면
-	 * @param Order
-	 * @return Order
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	public Collection<Order> getOrderDiscountCouponList(Order order) {
-		return orderDao.getOrderDiscountCouponList(order);
-	}
-
-	/**
-	 * 포인트사용 내역 팝업 화면
-	 * @param Order
-	 * @return Order
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	public Collection<Order> getOrderDiscountPointList(Order order) {
-		return orderDao.getOrderDiscountPointList(order);
-	}
-
-	/**
-	 * 상품권사용 내역 팝업 화면
-	 * @param Order
-	 * @return Order
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	public Collection<Order> getOrderGiftcardHstList(Order order) {
-		return orderDao.getOrderGiftcardHstList(order);
-	}
-
-	/**
-	 * 다다익선적용 내역 팝업 화면
-	 * @param Order
-	 * @return Order
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	public Collection<Order> getOrderTmtbHstList(Order order) {
-		return orderDao.getOrderTmtbHstList(order);
-	}
-
-	/**
-	 * 주문상세상태를 변경
-	 * @param Order
-	 * @return Order
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	public void changedOrdDtlStat(Order order) {
-		// 1. 주문상세상태변경
-		int resultInt = orderDao.changedOrdDtlStat(order);
-
-		// 2. 주문상세상태변경 성공 후 주문상세 이력을 등록
-		if (resultInt > 0) {
-			orderDao.createOrderDetailHst(order);
-		}
-	}
-	
-	/**
-	 * 배송 > 배송지 정보 수정
-	 *
-	 * @param Order - 배송지 정보
-	 * @author jsh77b
-	 * @since 2021. 01. 15
-	 */
-	@Transactional("shopTxnManager")
-	public void updateOrderAddr(Order order) {
-		order.setUpdNo(TsaSession.getInfo().getUserNo());
-		orderDao.updateOrderAddr(order);
-	}
-	
-	/**
-	 * 반품/교환 > 회수지 정보 수정
-	 *
-	 * @param Order - 배송지 정보
-	 * @author jsh77b
-	 * @since 2021. 01. 18
-	 */
-	@Transactional("shopTxnManager")
-	public void updateOrderChange(Order order) {
-		order.setUpdNo(TsaSession.getInfo().getUserNo());
-		orderDao.updateOrderChange(order);
-	}
-
-}

+ 2 - 15
src/main/java/com/style24/admin/biz/service/TsaPgService.java

@@ -1,25 +1,12 @@
 package com.style24.admin.biz.service;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.gagaframework.excel.env.GagaExcelConstants;
-import com.gagaframework.excel.xssf.GagaExcelResultHandler;
-import com.gagaframework.web.parameter.GagaMap;
-import com.style24.admin.biz.dao.TsaOrderDao;
-import com.style24.admin.support.security.session.TsaSession;
-import com.style24.admin.support.util.TsitUtil;
+import com.style24.core.biz.dao.TscOrderDao;
 import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.domain.Order;
-import com.style24.persistence.domain.OrderChange;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -40,7 +27,7 @@ public class TsaPgService {
 	private Environment env;
 
 	@Autowired
-	private TsaOrderDao orderDao;
+	private TscOrderDao orderDao;
 
 	@Autowired
 	private ObjectMapper mapper;

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

@@ -58,7 +58,7 @@ public class TsaBoardController extends TsaBaseController {
 
 	/**
 	 * 공지사항 화면
-	 * @param noticeType - 공지유형(10:사이트공지, 20:내부공지)
+	 * @param noticeType - 공지유형(G047_10:사이트공지, G047_20:내부공지)
 	 * @return
 	 * @author gagamel
 	 * @since 2020. 10. 30

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

@@ -491,6 +491,7 @@ public class TsaGoodsController extends TsaBaseController {
 	@ResponseBody
 	public GagaMap getGoodsList(@RequestBody GoodsSearch goodsSearch) {
 
+		log.info("[getGoodsList] goodsSearch = {}", goodsSearch);
 		GagaMap result = new GagaMap();
 
 		// 입점업체담당자는 업체코드 설정

+ 191 - 117
src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java

@@ -16,13 +16,12 @@ import org.springframework.web.servlet.ModelAndView;
 import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.rest.server.GagaResponse;
 import com.gagaframework.web.rest.server.GagaResponseStatus;
-import com.style24.admin.biz.service.TsaOrderChangeService;
-import com.style24.admin.biz.service.TsaOrderService;
 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.biz.service.TscOrderChangeService;
 import com.style24.core.biz.service.TscOrderRefundService;
+import com.style24.core.biz.service.TscOrderService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.domain.Order;
@@ -48,16 +47,13 @@ public class TsaOrderChangeController extends TsaBaseController {
 	private TsaRendererService rendererService;
 	
 	@Autowired
-	private TsaOrderService orderService;
+	private TscOrderService orderService;
 	
 	@Autowired
-	private TsaOrderChangeService orderChangeService;
+	private TscOrderChangeService orderChangeService;
 	
 	@Autowired
-	private TscOrderChangeService coreOrderChangeService;
-	
-	@Autowired
-	private TscOrderRefundService coreOrderRefundService;
+	private TscOrderRefundService orderRefundService;
 	
 	/**
 	 * 취소요청, 취소완료 통합 화면 (관리자)
@@ -74,13 +70,9 @@ public class TsaOrderChangeController extends TsaBaseController {
 		Order order = new Order();
 		ModelAndView mav = new ModelAndView();
 		order.setOrdNo(ordNo);
-		
-		// 2021.01.26 변경시퀀스가 있을때 담기
-		if (ordChgSq > 0) {
-			order.setOrdChgSq(ordChgSq);
-		}
+		order.setOrdChgSq(ordChgSq);
 				
-		// 취소가능 주문상세상탭값 설정
+		// 1. 취소가능 주문상세상탭값 설정
 		String[] ordDtlStatArr = new String[4];
 		ordDtlStatArr[0] = TscConstants.OrderDetailStat.DEPOSIT_WAIT.value();
 		ordDtlStatArr[1] = TscConstants.OrderDetailStat.PAYMENT_COMPLETE.value();
@@ -88,88 +80,39 @@ public class TsaOrderChangeController extends TsaBaseController {
 		ordDtlStatArr[3] = TscConstants.OrderDetailStat.DELIVERY_PREPARE.value();
 		order.setOrdDtlStatArr(ordDtlStatArr);
 		
-		// 2021.01.26 취소요청 화면, 취소요청정보확인 화면 합 
+		// 2. 변경신청된 주문상세번호를 체크 후 있으면 해당 취소가능수량값 업데이트 
+		List<Order> cancelRequestTargetList 		= orderChangeService.getCancelRequestTargetList(order);
+		List<Order> orderChangeDetailList 			= orderChangeService.getOrderChangeDetailList(order);
+		Collection<Order> orderInfoList 			= orderService.getOrderInfoList(order);
+		
+		// 3. 화면으로 데이타 전송
+		// 2021.01.26 취소요청 화면, 취소요청정보확인 화면 통합
 		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G686"));				// 취소사유
-		mav.addObject("cancelRequestTargetList"		, coreOrderChangeService.getCancelRequestTargetList(order));	// 취소요청대상목록
-		mav.addObject("orderInfoList"				, orderService.getOrderInfoList(order));						// 주문정보
+		mav.addObject("cancelRequestTargetList"		, cancelRequestTargetList);										// 변경신청대상목록 (취소/반품/교환)
+		mav.addObject("orderInfoList"				, orderInfoList);												// 주문정보
 		mav.addObject("ordNo"						, ordNo);														// 주문번호
 		mav.addObject("ordChgSq"					, ordChgSq);													// 주문변경번호
-		mav.addObject("orderChangeList"				, orderService.getOrderChangeList(order));						// 취소/반품/교환 요청 정보
+		mav.addObject("orderChangeDetailList"		, orderChangeDetailList);										// 변경신청목록 (취소/반품/교환)
 		
 		String viewName = "";
 		
+		/*
 		if (ordChgSq > 0) {
-			viewName = "order/CnclReqViewForm";	// 변경요청정보화면 (취소요청정보화면)
+			viewName = "order/CnclReqViewForm";		// 변경요청확인화면 (취소요청정보화면)
 		} else {
 			viewName = "order/CnclReqForm";		// 변경요청화면 (취소요청화면)
 		}
+		*/
+		
+		viewName = "order/CnclReqForm";		// 변경요청화면, 변경요청확인화면 (취소요청화면) (통합)
 
 		mav.setViewName(viewName);
 		
 		return mav;
 	}
-	
-	/**
-	 * 취소요청 (ADMIN, NAPY, 외부몰) (배치) (사용안함)
-	 * 
-	 * @param OrderChange - 주문취소신청정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2021. 01. 20
-	 */
-	@PostMapping("/cnclReq")
-	@ResponseBody
-	public GagaResponse cnclReq(@RequestBody OrderChange cnclReq) {
-		
-		GagaMap mav = new GagaMap();
-		
-		if (cnclReq== null) {
-			throw new IllegalStateException(message.getMessage("FAIL_1001"));
-		}
-		
-		List<Order> cnclReqList = cnclReq.getCancelReqList(); // 취소요청정보목록
-		
-		// To Do List
-		// @ 결품취소로직 추가
-		// @ 주문취소시 상태값 체크
-		// @ 취소, 반품시 배송비 체크 로직 (선결제 로직)
-		
-		// 1. 세션회원조회
-		int userNo = TsaSession.getInfo().getUserNo();
-		
-		// 2. 환불금액계산
-		// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
-		mav = coreOrderRefundService.cnclRtnRefundAmt(cnclReqList);
-		
-		// 3. 주문변경 기본정보 설정
-		mav.set("ordNo"			, cnclReq.getOrdNo());				// 주문번호
-		mav.set("chgReason"		, cnclReq.getChgReason());			// 변경사유
-		mav.set("chgMemo"		, cnclReq.getChgMemo());			// 변경메모
-		
-		mav.set("accountNo"		, cnclReq.getAccountNo());			// 환불계좌번호
-		mav.set("accountNm"		, cnclReq.getAccountNm());			// 환불계좌예금주명
-		mav.set("bankCd"		, cnclReq.getBankCd());				// 환불계좌은행코드
-		
-		mav.set("allCanYn"		, cnclReq.getAllCanYn());			// 무통장입금전 전체취소 여부
-		mav.set("isCustomer"	, cnclReq.getIsCustomer());			// 변경사유 (고객, 회사)
-		
-		// 4. 주문변경 회수지정보 추가
-		mav.set("chgerNm"		, cnclReq.getChgerNm());			// 변경자명
-		mav.set("chgerEmail"	, cnclReq.getChgerEmail());			// 변경자이메일주소
-		mav.set("chgerPhnno"	, cnclReq.getChgerPhnno());			// 변경자핸드폰번호
-		mav.set("chgerTelno"	, cnclReq.getChgerTelno());			// 변경자전화번호
-		
-		mav.set("reqGbn"		, cnclReq.getReqGbn());				// 신청구분
-						
-		// 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
-		//coreOrderChangeService.cnclReq(mav, userNo);
-		coreOrderChangeService.cnclComplete(mav, userNo);
-		
-		return super.ok("성공");
-	}
-	
+
 	/**
-	 * 취소요청철회 (NAPY, 외부몰) (관리자)
+	 * 취소요청철회 (관리자)
 	 * @param OrderChange - 주문취소신청정보
 	 * @return
 	 * @author jsh77b
@@ -191,31 +134,13 @@ public class TsaOrderChangeController extends TsaBaseController {
 		mav.set("ordChgSq"		, cnclReq.getOrdChgSq());
 		
 		// 2.취소요청철회 
-		mav = coreOrderChangeService.cnclReqCancel(mav, userNo);
+		mav = orderChangeService.cnclReqCancel(mav, userNo);
 		
 		return super.ok("성공");
 	}
 	
 	/**
-	 * 취소요청승인 (NAPY, 외부몰) (관리자)
-	 * @param OrderChange - 주문취소신청정보
-	 * @return
-	 * @author jsh77b
-	 * @since 2021. 01. 20
-	 */
-	@PostMapping("/cnclReqComplete")
-	@ResponseBody
-	public GagaResponse cnclReqComplete(@RequestBody OrderChange cnclReq) {
-		
-		if (cnclReq== null) {
-			throw new IllegalStateException(message.getMessage("FAIL_1001"));
-		}
-		
-		return super.ok("성공");
-	}
-	
-	/**
-	 * 취소 요청, 완료 통합 (관리자)
+	 * 취소요청, 취소요청완료, 취소완료 기능 통합 (관리자)
 	 * @param Collection<Order> - 주문취소신청목록
 	 * @return
 	 * @author jsh77b
@@ -231,9 +156,9 @@ public class TsaOrderChangeController extends TsaBaseController {
 		
 		GagaMap mav = new GagaMap();
 		
-		List<Order> cnclReqList = cnclReq.getCancelReqList(); // 취소요청정보목록
+		List<Order> cnclReqList = cnclReq.getCancelReqList(); // 변경요청정보
 		
-		// To Do List
+		// TODO
 		// @ 결품취소로직 추가
 		// @ 주문취소시 상태값 체크
 		// @ 취소, 반품시 배송비 체크 로직 (선결제 로직)
@@ -243,10 +168,11 @@ public class TsaOrderChangeController extends TsaBaseController {
 		
 		// 2. 환불금액계산
 		// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
-		mav = coreOrderRefundService.cnclRtnRefundAmt(cnclReqList);
+		mav = orderRefundService.cnclRtnRefundAmt(cnclReqList);
 		
 		// 3. 주문변경 기본정보 설정
 		mav.set("ordNo"			, cnclReq.getOrdNo());				// 주문번호
+		mav.set("ordChgSq"		, cnclReq.getOrdChgSq());			// 주문변경번호
 		mav.set("chgReason"		, cnclReq.getChgReason());			// 변경사유
 		mav.set("chgMemo"		, cnclReq.getChgMemo());			// 변경메모
 		
@@ -266,7 +192,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		mav.set("reqGbn"		, cnclReq.getReqGbn());				// 신청구분
 				
 		// 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL)
-		coreOrderChangeService.cnclComplete(mav, userNo);
+		orderChangeService.cnclComplete(mav, userNo);
 		
 		return super.ok("성공");
 	}
@@ -281,12 +207,13 @@ public class TsaOrderChangeController extends TsaBaseController {
 	 * @since 2020. 12. 22
 	 */
 	@GetMapping("/rtn/req/form")
-	public ModelAndView returnRequestFrom(@RequestParam(value = "ordNo") int ordNo) {
+	public ModelAndView rtnReqForm(@RequestParam(value = "ordNo") int ordNo, @RequestParam(value = "ordChgSq") int ordChgSq) {
 
 		Order order = new Order();
 		ModelAndView mav = new ModelAndView();
 		
 		order.setOrdNo(ordNo);
+		order.setOrdChgSq(ordChgSq);
 		
 		// 반품가능 주문상세상탭값 설정
 		String[] ordDtlStatArr = new String[3];
@@ -295,16 +222,25 @@ public class TsaOrderChangeController extends TsaBaseController {
 		ordDtlStatArr[2] = TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value();
 		order.setOrdDtlStatArr(ordDtlStatArr);
 		
+		// 2. 변경신청된 주문상세번호를 체크 후 있으면 해당 취소가능수량값 업데이트 
+		List<Order> cancelRequestTargetList 		= orderChangeService.getCancelRequestTargetList(order);
+		List<Order> orderChangeDetailList 			= orderChangeService.getOrderChangeDetailList(order);
+		Collection<Order> orderInfoList 			= orderService.getOrderInfoList(order);
+		
+		// 3. 화면으로 데이타 전송
+		// 2021.01.26 취소요청 화면, 취소요청정보확인 화면 통합
 		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G688"));				// 취소사유
-		mav.addObject("cancelRequestTargetList"		, coreOrderChangeService.getCancelRequestTargetList(order));	// 취소요청대상 목록
-		mav.addObject("orderInfoList"				, orderService.getOrderInfoList(order));						// 주문정보
+		mav.addObject("cancelRequestTargetList"		, cancelRequestTargetList);										// 취소요청대상 목록
+		mav.addObject("orderInfoList"				, orderInfoList);												// 주문정보
 		mav.addObject("ordNo"						, ordNo);														// 주문번호
+		mav.addObject("ordChgSq"					, ordChgSq);													// 주문변경번호
+		mav.addObject("orderChangeDetailList"		, orderChangeDetailList);										// 변경신청목록 (취소/반품/교환)
 		
 		mav.addObject("orderDelvRtnAddrInfo"		, orderService.getDeliveryAddrList(order));						// 배송정보
 		mav.addObject("TelExcNoList"				, rendererService.getAvailCommonCodeList("G095"));				// 전화번호국번
 		mav.addObject("PhnExcNoList"				, rendererService.getAvailCommonCodeList("G096"));				// (휴대전화)번호국번
 
-		mav.setViewName("order/ReturnRequestForm");
+		mav.setViewName("order/RtnReqForm");
 		
 		return mav;
 	}
@@ -316,9 +252,9 @@ public class TsaOrderChangeController extends TsaBaseController {
 	 * @author jsh77b
 	 * @since 2020. 12. 29
 	 */
-	@PostMapping("/returnRequest")
+	@PostMapping("/rtnReq")
 	@ResponseBody
-	public GagaResponse orderReturnRequest(@RequestBody OrderChange rtnReq) {
+	public GagaResponse rtnReq(@RequestBody OrderChange rtnReq) {
 		
 		GagaMap mav = new GagaMap();
 		
@@ -326,16 +262,21 @@ public class TsaOrderChangeController extends TsaBaseController {
 			throw new IllegalStateException(message.getMessage("FAIL_1001"));
 		}
 
-		List<Order> cancelReqList = rtnReq.getCancelReqList(); // 취소요청정보
+		List<Order> cancelReqList = rtnReq.getCancelReqList(); // 변경요청정보
+		
+		// TODO
+		// @ 주문취소시 상태값 체크
+		// @ 취소, 반품시 배송비 체크 로직 (선결제 로직)
 		
 		// 1. 세션회원조회
 		int userNo = TsaSession.getInfo().getUserNo();
 		
 		// 2. 환불금액계산
-		mav = coreOrderRefundService.cnclRtnRefundAmt(cancelReqList);
+		mav = orderRefundService.cnclRtnRefundAmt(cancelReqList);
 		
 		// 3. 주문변경 기본정보 설정
 		mav.set("ordNo"			, rtnReq.getOrdNo());				// 주문번호
+		mav.set("ordChgSq"		, rtnReq.getOrdChgSq());			// 주문변경번호
 		mav.set("chgReason"		, rtnReq.getChgReason());			// 변경사유
 		mav.set("chgMemo"		, rtnReq.getChgMemo());				// 변경메모
 			
@@ -356,7 +297,35 @@ public class TsaOrderChangeController extends TsaBaseController {
 		mav.set("chgerTelno"	, rtnReq.getChgerTelno());			// 변경자전화번호
 		
 		// 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
-		coreOrderChangeService.rtnReq(mav, userNo);
+		orderChangeService.rtnReq(mav, userNo);
+		
+		return super.ok("성공");
+	}
+	
+	/**
+	 * 취소요청철회 (관리자)
+	 * @param OrderChange - 주문취소신청정보
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 01. 20
+	 */
+	@PostMapping("/rtnReqCancel")
+	@ResponseBody
+	public GagaResponse rtnReqCancel(@RequestBody OrderChange cnclReq) {
+		
+		if (cnclReq== null) {
+			throw new IllegalStateException(message.getMessage("FAIL_1001"));
+		}
+		
+		// 1. 세션회원조회
+		int userNo = TsaSession.getInfo().getUserNo();
+		
+		GagaMap mav = new GagaMap();
+		mav.set("ordNo"			, cnclReq.getOrdNo());
+		mav.set("ordChgSq"		, cnclReq.getOrdChgSq());
+		
+		// 2.취소요청철회 
+		mav = orderChangeService.rtnReqCancel(mav, userNo);
 		
 		return super.ok("성공");
 	}
@@ -379,7 +348,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		}
 		
 		// 1. 환불금액정보 계산 & 조회
-		mav = coreOrderRefundService.cnclRtnRefundAmt(cancelReqList);
+		mav = orderRefundService.cnclRtnRefundAmt(cancelReqList);
 		
 		return mav;
 	}
@@ -464,7 +433,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		
 		String accountCheck = "Y";
 		
-		// To Do List
+		// TODO
 		// @ 환불계좌인증
 		
 		if ("Y".equals(accountCheck)) {
@@ -499,7 +468,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		ordDtlStatArr[2] = TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value();
 		order.setOrdDtlStatArr(ordDtlStatArr);
 
-		Collection<Order> cancelRequestTargetList = coreOrderChangeService.getCancelRequestTargetList(order);
+		Collection<Order> cancelRequestTargetList = orderChangeService.getCancelRequestTargetList(order);
 
 		Collection<Order> orderInfoList = orderService.getOrderInfoList(order);
 
@@ -542,7 +511,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		excReq.setRegNo(userNo);
 
 		// 교환처리
-		result = coreOrderChangeService.exchReq(excReq);
+		result = orderChangeService.exchReq(excReq);
 
 		// 처리 결과 코드에 따른 메세지 설정
 		if (result.get("status").equals(GagaResponseStatus.SUCCESS.getCode())) {
@@ -553,6 +522,111 @@ public class TsaOrderChangeController extends TsaBaseController {
 		
 		return result;
 	}
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	/**
+	 * 취소요청 (ADMIN, NAPY, 외부몰) (배치) (사용안함)
+	 * 
+	 * @param OrderChange - 주문취소신청정보
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 01. 20
+	 */
+	@PostMapping("/cnclReq")
+	@ResponseBody
+	public GagaResponse cnclReq(@RequestBody OrderChange cnclReq) {
+		
+		GagaMap mav = new GagaMap();
+		
+		if (cnclReq== null) {
+			throw new IllegalStateException(message.getMessage("FAIL_1001"));
+		}
+		
+		List<Order> cnclReqList = cnclReq.getCancelReqList(); // 취소요청정보목록
+		
+		// TODO
+		// @ 결품취소로직 추가
+		// @ 주문취소시 상태값 체크
+		// @ 취소, 반품시 배송비 체크 로직 (선결제 로직)
+		
+		// 1. 세션회원조회
+		int userNo = TsaSession.getInfo().getUserNo();
+		
+		// 2. 환불금액계산
+		// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
+		mav = orderRefundService.cnclRtnRefundAmt(cnclReqList);
+		
+		// 3. 주문변경 기본정보 설정
+		mav.set("ordNo"			, cnclReq.getOrdNo());				// 주문번호
+		mav.set("chgReason"		, cnclReq.getChgReason());			// 변경사유
+		mav.set("chgMemo"		, cnclReq.getChgMemo());			// 변경메모
+		
+		mav.set("accountNo"		, cnclReq.getAccountNo());			// 환불계좌번호
+		mav.set("accountNm"		, cnclReq.getAccountNm());			// 환불계좌예금주명
+		mav.set("bankCd"		, cnclReq.getBankCd());				// 환불계좌은행코드
+		
+		mav.set("allCanYn"		, cnclReq.getAllCanYn());			// 무통장입금전 전체취소 여부
+		mav.set("isCustomer"	, cnclReq.getIsCustomer());			// 변경사유 (고객, 회사)
+		
+		// 4. 주문변경 회수지정보 추가
+		mav.set("chgerNm"		, cnclReq.getChgerNm());			// 변경자명
+		mav.set("chgerEmail"	, cnclReq.getChgerEmail());			// 변경자이메일주소
+		mav.set("chgerPhnno"	, cnclReq.getChgerPhnno());			// 변경자핸드폰번호
+		mav.set("chgerTelno"	, cnclReq.getChgerTelno());			// 변경자전화번호
+		
+		mav.set("reqGbn"		, cnclReq.getReqGbn());				// 신청구분
+						
+		// 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
+		orderChangeService.cnclComplete(mav, userNo);
+		
+		return super.ok("성공");
+	}
+	
+	/**
+	 * 취소요청승인 (관리자)
+	 * @param OrderChange - 주문취소신청정보
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 01. 20
+	 */
+	@PostMapping("/cnclReqComplete")
+	@ResponseBody
+	public GagaResponse cnclReqComplete(@RequestBody OrderChange cnclReq) {
+		
+		if (cnclReq== null) {
+			throw new IllegalStateException(message.getMessage("FAIL_1001"));
+		}
+		
+		// 1. 세션회원조회
+		int userNo = TsaSession.getInfo().getUserNo();
+		
+		GagaMap mav = new GagaMap();
+		mav.set("ordNo"			, cnclReq.getOrdNo());
+		mav.set("ordChgSq"		, cnclReq.getOrdChgSq());
+		
+		// 2.취소요청철회 
+		mav = orderChangeService.cnclComplete(mav, userNo);
+		
+		return super.ok("성공");
+	}
 }
 
 

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

@@ -3,10 +3,10 @@ package com.style24.admin.biz.web;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.style24.core.biz.service.TscOrderService;
 import com.style24.persistence.TscPageRequest;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,13 +29,11 @@ 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.style24.admin.biz.service.TsaOrderService;
 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.domain.Order;
-import com.style24.persistence.domain.OrderChange;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -60,7 +58,7 @@ public class TsaOrderController extends TsaBaseController {
 	private TsaRendererService rendererService;
 
 	@Autowired
-	private TsaOrderService orderService;
+	private TscOrderService orderService;
 
 	/**
 	 * 주문목록조회
@@ -261,7 +259,8 @@ public class TsaOrderController extends TsaBaseController {
 	@PostMapping("/seller/unorder/status/save")
 	@ResponseBody
 	public GagaResponse saveUnorderStatus(@RequestBody Collection<Order> orderList) {
-		orderService.saveUnorderStatus(orderList);
+		int userNo = TsaSession.getInfo().getUserNo();
+		orderService.saveUnorderStatus(orderList, userNo);
 		return super.ok("");
 	}
 
@@ -338,7 +337,8 @@ public class TsaOrderController extends TsaBaseController {
 		}
 
 		// 4. 주문상세번호 기준으로 송장번호 등록
-		String result = orderService.saveUnorderInvoice(orderList);
+		int userNo = TsaSession.getInfo().getUserNo();
+		String result = orderService.saveUnorderInvoice(orderList, userNo);
 		GagaMap map = new GagaMap();
 		map.set("msg", result);
 
@@ -360,7 +360,8 @@ public class TsaOrderController extends TsaBaseController {
 	@ResponseBody
 	public GagaMap saveUnorderInvoice(@RequestBody Collection<Order> orderList) {
 		// 1. 송장번호 개별 등록
-		String result = orderService.saveUnorderInvoice(orderList);
+		int userNo = TsaSession.getInfo().getUserNo();
+		String result = orderService.saveUnorderInvoice(orderList, userNo);
 		GagaMap map = new GagaMap();
 		map.set("msg", result);
 		return map;
@@ -613,6 +614,7 @@ public class TsaOrderController extends TsaBaseController {
 	@PostMapping("/deliver/addr/update")
 	@ResponseBody
 	public GagaResponse udpateDeliveryAddrUpdate(@RequestBody Order order) {
+		order.setUpdNo(TsaSession.getInfo().getUserNo());
 		orderService.updateOrderAddr(order);
 		return super.ok(message.getMessage("SUCC_0002"));
 	}

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

@@ -32,7 +32,7 @@ public class TsaOrderRefundController extends TsaBaseController {
 	private TscMessageByLocale message;
 	
 	@Autowired
-	private TscOrderRefundService coreOrderRefundService;
+	private TscOrderRefundService orderRefundService;
 
 	/**
 	 * 주문 취소/반품 신청환불금액 계산
@@ -52,7 +52,7 @@ public class TsaOrderRefundController extends TsaBaseController {
 		}
 		
 		// 1. 환불금액계산
-		mav = coreOrderRefundService.cnclRtnRefundAmt(cancelReqList);
+		mav = orderRefundService.cnclRtnRefundAmt(cancelReqList);
 		
 		return mav;
 	}

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

@@ -1,40 +1,14 @@
 package com.style24.admin.biz.web;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.collections4.CollectionUtils;
 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;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.servlet.ModelAndView;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.gagaframework.excel.GagaExcelUtil;
-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.style24.admin.biz.service.TsaOrderService;
 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.biz.service.TscOrderService;
 import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.domain.Order;
-import com.style24.persistence.domain.OrderChange;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -59,7 +33,7 @@ public class TsaPgController extends TsaBaseController {
 	private TsaRendererService rendererService;
 	
 	@Autowired
-	private TsaOrderService orderService;
+	private TscOrderService orderService;
 	
 }
 

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

@@ -2,8 +2,8 @@ package com.style24.persistence.domain;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.style24.persistence.TscBaseDomain;
-
 import com.style24.persistence.TscPageRequest;
+
 import lombok.Data;
 
 /**

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

@@ -2,8 +2,8 @@ package com.style24.persistence.domain;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.style24.persistence.TscBaseDomain;
-
 import com.style24.persistence.TscPageRequest;
+
 import lombok.Data;
 
 /**
@@ -49,7 +49,11 @@ public class GoodsSearch extends TscBaseDomain {
 	private String edDate;
 	private String stockQtySt;
 	private String stockQtyEd;
-	private String cateCd;
+
+	private String siteCd;
+	private String cateGb;
+	private String selLvl;
+	private int cateNo;
 	private String ageGrpCd;
 
 	private String regSuccYn;
@@ -83,8 +87,8 @@ public class GoodsSearch extends TscBaseDomain {
 	private Integer rinbdInfoSq;
 	private String callbackFn;
 
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] siteCd;
+	//@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	//private String[] siteCd;
 
 	/* 상품목록 Multi CheckBox 항목*/
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)

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

@@ -82,7 +82,7 @@
 	<!-- ERP 연동 여부 -->
 	<select id="getWmsSyncYn" resultType="String">
 		/* TsaSystem.getWmsSyncYn */
-		SELECT UPPER(NVL(USE_YN,'N')) AS WMS_SYNC_YN
+		SELECT UPPER(IFNULL(USE_YN,'N')) AS WMS_SYNC_YN
 		FROM TB_COMMON_CODE
 		WHERE CD_GB = 'G077'
 		AND CD = 'WMSSYNCYN'

+ 71 - 42
src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml

@@ -394,8 +394,8 @@
 	<select id="getGoodsList" parameterType="GoodsSearch" resultType="Goods">
 		/* TsaGoods.getGoodsList */
 		SELECT Q.*
-		    , (CASE WHEN Q.GOODS_TYPE = 'G056_N' THEN (SELECT NVL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK WHERE GOODS_CD = Q.GOODS_CD) 
-		            ELSE (SELECT NVL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK_COMPOSE WHERE GOODS_CD = Q.GOODS_CD) 
+		    , (CASE WHEN Q.GOODS_TYPE = 'G056_N' THEN (SELECT IFNULL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK WHERE GOODS_CD = Q.GOODS_CD) 
+		            ELSE (SELECT IFNULL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK_COMPOSE WHERE GOODS_CD = Q.GOODS_CD) 
 		            END) AS STOCK_QTY_SUM
 		    , (SELECT ITEMKIND_NM FROM TB_ITEMKIND WHERE ITEMKIND_CD = Q.ITEMKIND_CD ) AS ITEMKIND_NM
 		    , FN_GET_USER_NM(REG_NO) AS REG_NM
@@ -553,12 +553,12 @@
 		        <if test="supplyCompCd != null and supplyCompCd != ''">
 		        AND G.SUPPLY_COMP_CD = #{supplyCompCd}
 		        </if>
-				<if test="multiSupplyCompCd != null and multiSupplyCompCd != ''">
-					AND G.SUPPLY_COMP_CD IN
-					<foreach collection="multiSupplyCompCd" item="item" index="index"  open="(" close=")" separator=",">
-						#{item}
-					</foreach>
-				</if>
+		        <if test="multiSupplyCompCd != null and multiSupplyCompCd != ''">
+		            AND G.SUPPLY_COMP_CD IN
+		            <foreach collection="multiSupplyCompCd" item="item" index="index"  open="(" close=")" separator=",">
+		                #{item}
+		            </foreach>
+		        </if>
 		        <if test="brandCd != null and brandCd != ''">
 		        AND G.BRAND_CD = #{brandCd}
 		        </if>
@@ -715,11 +715,31 @@
 		        <if test="ageGrpCd != null and ageGrpCd != ''">
 		        AND G.AGE_GRP_CD = #{ageGrpCd}
 		        </if>
-		        <if test="cateCd != null and cateCd != ''">
+		        <if test="cateNo != null and cateNo > 0 ">
 		        AND G.GOODS_CD IN (
 		            SELECT GOODS_CD
-		            FROM   TB_CATEGORY_GOODS
-		            WHERE  CATE_CD = #{cateCd}
+		            FROM TB_CATE_4SRCH A
+		            INNER JOIN TB_CATE_GOODS B ON A.LEAF_CATE_NO = B.CATE_NO
+		            WHERE 1 = 1
+		            AND SITE_CD = #{siteCd}
+		            AND CATE_GB = #{cateGb}
+		            <choose>
+		                <when test='selLvl != null and selLvl == "2"'>
+		            AND A.CATE1_NO = #{cateNo} 
+		                </when>
+		                    <when test='selLvl != null and selLvl == "3"'>
+		            AND A.CATE2_NO = #{cateNo} 
+		                </when>
+		                    <when test='selLvl != null and selLvl == "4"'>
+		            AND A.CATE3_NO = #{cateNo} 
+		                </when>
+		                    <when test='selLvl != null and selLvl == "5"'>
+		            AND A.CATE4_NO = #{cateNo} 
+		                </when>
+		                <otherwise>
+		            AND A.CATE5_NO = #{cateNo} 
+		                </otherwise>
+		            </choose>
 		        )
 		        </if>
 	</sql>
@@ -777,8 +797,8 @@
 		     , CASE IFNULL((SELECT COUNT(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = G.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ),0) 
 		            WHEN 0 THEN 'N'
 		            ELSE 'Y' END AS GOODS_IMAGE_YN
-		     , (CASE WHEN G.GOODS_TYPE = 'G056_N' THEN (SELECT NVL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK WHERE GOODS_CD = G.GOODS_CD) 
-		            ELSE (SELECT NVL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK_COMPOSE WHERE GOODS_CD = G.GOODS_CD) 
+		     , (CASE WHEN G.GOODS_TYPE = 'G056_N' THEN (SELECT IFNULL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK WHERE GOODS_CD = G.GOODS_CD) 
+		            ELSE (SELECT IFNULL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK_COMPOSE WHERE GOODS_CD = G.GOODS_CD) 
 		            END) AS STOCK_QTY_SUM
 		     , (SELECT ITEMKIND_NM FROM TB_ITEMKIND WHERE ITEMKIND_CD = G.ITEMKIND_CD) AS ITEMKIND_NM
 		     , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = G.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
@@ -972,12 +992,12 @@
 		      , N.NI_CLSF_CD
 		      , N.NI_ITEM_CD
 		      , FN_GET_CODE_NM('G005', N.NI_ITEM_CD) AS NI_ITEM_NM
-		      , CASE WHEN NI_ITEM_CD = 'G005_003' THEN NVL(G.COLOR_NM,N.NI_CONTENT)
-		             WHEN NI_ITEM_CD = 'G005_004' THEN NVL(G.SIZE_NAME,N.NI_CONTENT)
-		             WHEN NI_ITEM_CD = 'G005_006' THEN NVL(FN_GET_CODE_NM('G076', G.ORIGIN_CD),N.NI_CONTENT)
+		      , CASE WHEN NI_ITEM_CD = 'G005_003' THEN IFNULL(G.COLOR_NM,N.NI_CONTENT)
+		             WHEN NI_ITEM_CD = 'G005_004' THEN IFNULL(G.SIZE_NAME,N.NI_CONTENT)
+		             WHEN NI_ITEM_CD = 'G005_006' THEN IFNULL(FN_GET_CODE_NM('G076', G.ORIGIN_CD),N.NI_CONTENT)
 		             WHEN NI_ITEM_CD = 'G005_097' AND FN_GET_CODE_NM('G076', G.ORIGIN_CD) IN ('대한민국', '한국', 'KOREA') THEN 'N'
 		             WHEN NI_ITEM_CD = 'G005_097' AND FN_GET_CODE_NM('G076', G.ORIGIN_CD) NOT IN ('대한민국', '한국', 'KOREA') THEN 'Y'
-		             WHEN NI_ITEM_CD = 'G005_009' THEN NVL(G.MAKE_YMD, N.NI_CONTENT)
+		             WHEN NI_ITEM_CD = 'G005_009' THEN IFNULL(G.MAKE_YMD, N.NI_CONTENT)
 		        ELSE N.NI_CONTENT
 		        END
 		        AS  NI_CONTENT
@@ -1265,7 +1285,7 @@
 	<!-- 상품 자동 검색어 조회-->
 	<select id="getGoodsSnm" parameterType="String" resultType="String">
 		/* TsaGoods.getGoodsSnm */
-		WITH RECURSIVE TMP_COLOR_GOODS AS (
+		WITH TMP_COLOR_GOODS AS (
 		    SELECT GOODS_CD
 		         , REPLACE(CONCAT(GROUP_CONCAT(COLOR_GRP_CD),';',GROUP_CONCAT(COLOR_ENM),';',GROUP_CONCAT(CD_NM)),',',';') AS COLOR_INFO
 		    FROM (
@@ -1289,7 +1309,7 @@
 		       G.STYLE_YEAR,';',
 		       FN_GET_CODE_NM('G006',G.SEASON_CD),';',
 		       FN_GET_CODE_NM('G007',G.SEX_GB),';',
-		       NVL2(D.COLOR_INFO,CONCAT(D.COLOR_INFO,';'),''),
+		       COALESCE(D.COLOR_INFO,CONCAT(D.COLOR_INFO,';'),''),
 		       REPLACE(I.ITEMKIND_NM,'>',';')
 		       )) AS GOODS_SNM
 		FROM TB_GOODS G
@@ -1313,8 +1333,8 @@
 	<select id="getNewNotiInfo" parameterType="Goods" resultType="GoodsNotiInfo">
 		/* TsaGoods.getNewNotiInfo */
 		SELECT D.NI_CLSF_CD
-		     , NVL(C.NI_ITEM_CD, D.NI_ITEM_CD) AS NI_ITEM_CD
-		     , NVL(C.NI_CONTENT, D.NI_CONTENT) AS NI_CONTENT
+		     , IFNULL(C.NI_ITEM_CD, D.NI_ITEM_CD) AS NI_ITEM_CD
+		     , IFNULL(C.NI_CONTENT, D.NI_CONTENT) AS NI_CONTENT
 		     , D.DISP_ORD
 		FROM (
 		       SELECT A.NI_CLSF_CD
@@ -1380,7 +1400,7 @@
 	<!-- 상품 사이즈 조회 -->
 	<select id="getGoodsSizeList" parameterType="Goods" resultType="Option">
 		/* TsaGoods.getGoodsSizeList */
-		WITH RECURSIVE TMP_GOODS AS (
+		WITH TMP_GOODS AS (
 		    SELECT A.GOODS_CD 
 		         , A.GOODS_TYPE 
 		         , IFNULL(B.COMPS_GOODS_CD, A.GOODS_CD) AS COMPS_GOODS_CD
@@ -1393,7 +1413,7 @@
 		SELECT #{goodsCd} AS GOODS_CD
 		     , A.GOODS_CD AS COMPS_GOODS_CD
 		     , A.OPT_CD
-		     , CONCAT(A.OPT_CD1,  NVL2(A.OPT_CD2, '', CONCAT('/', A.OPT_CD2))) AS OPT_NM 
+		     , CONCAT(A.OPT_CD1,  COALESCE(A.OPT_CD2, '', CONCAT('/', A.OPT_CD2))) AS OPT_NM 
 		     , A.OPT_CD1
 		     , A.OPT_CD2
 		     , A.ADD_PRICE
@@ -1429,15 +1449,15 @@
 	<select id="getGoodsColorList" parameterType="Goods" resultType="GoodsImg">
 		/* TsaGoods.getGoodsColorList */
 		SELECT A.GOODS_CD 
-		     , NVL(A.OPT_CD1, A.MAIN_COLOR_CD) AS OPT_CD1
+		     , IFNULL(A.OPT_CD1, A.MAIN_COLOR_CD) AS OPT_CD1
 		     , A.MAIN_COLOR_CD
-		     , IF(A.MAIN_COLOR_CD = NVL(A.OPT_CD1, A.MAIN_COLOR_CD), 'Y','N') AS  MAIN_COLOR_YN
+		     , IF(A.MAIN_COLOR_CD = IFNULL(A.OPT_CD1, A.MAIN_COLOR_CD), 'Y','N') AS  MAIN_COLOR_YN
 		     , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = A.GOODS_CD AND COLOR_CD = A.OPT_CD1 AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM 
 		     , C.COLOR_ENM 
 		FROM (
 		      SELECT A.GOODS_CD 
 		           , A.MAIN_COLOR_CD 
-		           , NVL(B.OPT_CD1,'00') AS OPT_CD1
+		           , IFNULL(B.OPT_CD1,'00') AS OPT_CD1
 		      FROM TB_GOODS A
 		      LEFT OUTER JOIN TB_OPTION B ON A.GOODS_CD = B.GOODS_CD
 		                                  AND 1 = (CASE WHEN A.SELF_GOODS_YN = 'Y' THEN 1
@@ -1533,11 +1553,11 @@
 		)
 		VALUES(
 		    #{goodsCd}
-		  , NVL(#{productNo},0)
-		  , NVL(#{productCode},0)
+		  , IFNULL(#{productNo},0)
+		  , IFNULL(#{productCode},0)
 		  , #{brandCd}
 		  , #{itemkindCd}
-		  , NVL(#{goodsNm},'상품명없음')
+		  , IFNULL(#{goodsNm},'상품명없음')
 		  , #{goodsTnm}
 		  , #{goodsSnm}
 		  , #{goodsSnm1}
@@ -1546,13 +1566,13 @@
 		  , #{seasonCd}
 		  , #{sexGb}
 		  , #{goodsNum}
-		  , NVL(#{goodsType},'N')
+		  , IFNULL(#{goodsType},'N')
 		  , #{listPrice}
 		  , #{currPrice}
 		  , #{costPrice}
 		  , #{dcRate}
 		  , #{goodsStat}
-		  , NVL(#{selfMallYn},'Y') 
+		  , IFNULL(#{selfMallYn},'Y') 
 		  , #{goodsGb}
 		  , #{distributionGb}
 		  , #{selfGoodsYn}
@@ -1564,13 +1584,13 @@
 		  , #{pntMrate}
 		  , #{sellFeeRate}
 		  , #{formalGb}
-		  , NVL(#{giftPackYn},'N')
+		  , IFNULL(#{giftPackYn},'N')
 		  , #{originCd}
 		  , #{makeYmd}
 		  , #{taxGb}
-		  , NVL(#{erpStockLinkYn},'N')
-		  , NVL(#{newCustOrdYn},'N')
-		  , NVL(#{adultYn},'N')
+		  , IFNULL(#{erpStockLinkYn},'N')
+		  , IFNULL(#{newCustOrdYn},'N')
+		  , IFNULL(#{adultYn},'N')
 		  , #{regNo}
 		  , NOW()
 		  , #{updNo}
@@ -1626,7 +1646,7 @@
 		  , GOODS_SNM1 = #{goodsSnm1}
 		  , SELF_MALL_YN = #{selfMallYn}
 		  , GOODS_SNM = #{goodsSnm}
-		  , FRST_CFRM_DT = (CASE #{chGoodsStatYn} WHEN 'Y' THEN NVL2(FRST_CFRM_DT, NOW(), FRST_CFRM_DT)
+		  , FRST_CFRM_DT = (CASE #{chGoodsStatYn} WHEN 'Y' THEN COALESCE(FRST_CFRM_DT, NOW(), FRST_CFRM_DT)
 		                                          ELSE FRST_CFRM_DT END)
 		  , PRE_PPNT_USABLE_YN = #{prePpntUsableYn}
 		  , PRE_MPNT_USABLE_YN = #{preMpntUsableYn}
@@ -2742,10 +2762,10 @@
 		, #{sellFeeRate}
 		, STR_TO_DATE(#{applyStdt},'%Y%m%d%H%i%S')
 		, STR_TO_DATE(#{applyEddt},'%Y%m%d%H%i%S')
-		, NVL(#{cfrmYn},'N')
+		, IFNULL(#{cfrmYn},'N')
 		, #{cfrmNo}
 		, #{cfrmDt}
-		, NVL(#{applyYn},'N')
+		, IFNULL(#{applyYn},'N')
 		, #{regNo}
 		, NOW()
 		, #{updNo}
@@ -3133,7 +3153,7 @@
 		              , G.GOODS_NM
 		              , G.LIST_PRICE
 		              , G.CURR_PRICE
-		              , NVL(GB.PC_CURR_PRICE,G.CURR_PRICE) AS BENEFIT_PRICE
+		              , IFNULL(GB.PC_CURR_PRICE,G.CURR_PRICE) AS BENEFIT_PRICE
 		              , FN_GET_USER_NM(GE.REG_NO) AS UPD_NM
 		              , DATE_FORMAT(GE.REG_DT,'%Y%m%d%H%i%S') AS REG_DT
 		              , FN_GET_USER_NM(GE.UPD_NO) AS UPD_NM
@@ -3855,7 +3875,7 @@
 		   , REG_NO
 		   , REG_DT
 		    )
-		WITH RECURSIVE TAB_GOODS AS (
+		WITH TAB_GOODS AS (
 		    SELECT A.GOODS_CD
 		         , A.ITEMKIND_CD
 		         , B.CATE_NO
@@ -4133,8 +4153,8 @@
 		</if>
 		<if test='formalGb != null and formalGb != "X"'>
 		  , FORMAL_GB = #{formalGb}
-		  , PNT_PRATE = NVL(#{pntPrate}, PNT_PRATE)
-		  , PNT_MRATE = NVL(#{pntMrate}, PNT_MRATE)
+		  , PNT_PRATE = IFNULL(#{pntPrate}, PNT_PRATE)
+		  , PNT_MRATE = IFNULL(#{pntMrate}, PNT_MRATE)
 		</if>
 		<if test="minOrdQty != null and minOrdQty > 0">
 		  , MIN_ORD_QTY = #{minOrdQty}
@@ -4324,6 +4344,15 @@
 		        </if>
 		    </otherwise>
 		</choose>
+		<choose>
+		    <when test='sizeGb != null and sizeGb == "1"'>
+		ORDER BY A.SIZE_GB, A.SIZE_CATE1_CD, A.DISP_ORD
+		    </when>
+		    <otherwise>
+		ORDER BY A.SIZE_GB, A.DISP_ORD
+		    </otherwise>
+		</choose>
+		
 	</select>
 	
 	<!-- 사이즈 정보 저장 -->

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

@@ -207,10 +207,9 @@
 		                        ),0) > 0 THEN 1
 		            ELSE 0
 		       END        AS LEAF_LVL /*말단레벨*/
-		     , DISP_ORD
+		     , RANK() OVER(ORDER BY DISP_ORD) AS RK
 		FROM   CONNECTBY2 A
 		WHERE  MENU_ID NOT LIKE 'P%' /*팝업메뉴제외*/
-		ORDER  BY DISP_ORD
 	</select>
 
 </mapper>

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

@@ -1,1604 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.style24.admin.biz.dao.TsaOrderDao">
-
-	<!-- 주문목록 > 주문목록카운트 -->
-	<select id="getOrderListCount" parameterType="Order" resultType="int">
-		/* order.getOrderListCnt */
-		SELECT COUNT(1)  
-		FROM   TB_ORDER O
-		INNER  JOIN TB_ORDER_DETAIL OD
-		ON     O.ORD_NO = OD.ORD_NO
-		INNER  JOIN TB_GOODS G1
-		ON     OD.GOODS_CD = G1.GOODS_CD
-		INNER  JOIN TB_ORDER_DETAIL_ITEM ODI
-		ON     OD.ORD_NO = ODI.ORD_NO
-		AND    OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-		INNER  JOIN TB_GOODS G2
-		ON     ODI.ITEM_CD = G2.GOODS_CD
-		LEFT   OUTER JOIN TB_GOODS_IMG GI
-		ON     ODI.ITEM_CD = GI.GOODS_CD
-		AND    ODI.OPT_CD1 = GI.COLOR_CD
-		INNER  JOIN TB_PAYMENT P
-		ON     O.ORD_NO = P.ORD_NO
-		AND    P.PAY_GB = 'O'
-		AND    P.PAY_STAT = 'G016_30'
-		INNER  JOIN TB_DELIVERY_ADDR DA
-		ON     OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ
-		LEFT   OUTER JOIN (
-			SELECT OC.WD_INVOICE_NO
-			     , OC.WD_INVOICE_SEND_YN
-			     , OC.SHIP_COMP_CD
-			     , OCD.ORD_DTL_NO 
-			     , OCD.CHG_QTY
-			     , OCD.CHG_STAT
-			FROM   TB_ORDER_CHANGE OC
-			INNER  JOIN TB_ORDER_CHANGE_DETAIL OCD
-			ON     OC.ORD_CHG_SQ  = OCD.ORD_CHG_SQ
-			WHERE  1=1 
-			GROUP  BY OCD.ORD_DTL_NO 
-		) OCD
-		ON    OD.ORD_DTL_NO = OCD.ORD_DTL_NO
-		WHERE  1=1
-		<if test='siteCd != null and siteCd != ""'>
-		AND    O.SITE_CD = #{siteCd}
-		</if>
-		<if test='mallCd != null and mallCd != ""'>
-		AND    O.MALL_GB = #{mallCd}
-		</if>
-		<if test='supplyCompCd != null and supplyCompCd != ""'>
-		AND    OD.SUPPLY_COMP_CD = #{supplyCompCd}
-		</if>
-		<if test="multiBrand != null and multiBrand != ''">
-        AND    G1.BRAND_CD IN
-			<foreach collection="multiBrand" item="item" index="index"  open="(" close=")" separator=",">
-        		#{item}
-            </foreach>
-        </if>
-        <if test="multiOrdDtlStat != null and multiOrdDtlStat != ''">
-        AND    OD.ORD_DTL_STAT IN
-			<foreach collection="multiOrdDtlStat" item="item" index="index"  open="(" close=")" separator=",">
-        		#{item}
-            </foreach>
-        </if>
-        <if test="multiOrdDtlStat == null or multiOrdDtlStat == ''">
-        	<if test="multiOrdStat != null and multiOrdStat != ''">
-        AND    OD.ORD_DTL_STAT IN
-				<foreach collection="multiOrdStat" item="item" index="index"  open="(" close=")" separator=",">
-	        		#{item}
-	            </foreach>
-            </if>
-        </if>
-		<if test="chgStat != null and chgStat != ''">
-        AND    OCD.CHG_STAT = #{chgStat}
-        </if>
-        <if test="chgStat == null or chgStat == ''">
-        	<if test="chgGb != null and chgGb != ''">
-        AND    OCD.CHG_STAT = #{chgGb}
-        	</if>
-        </if>
-        <if test='search != null and search == "searchOrdNo"'>
-        	<if test="condition != null and condition != ''">
-		AND    O.ORD_NO = #{condition}
-			</if>
-		</if>
-		<if test='search != null and search == "searchExtmallOrderId"'>
-        	<if test="condition != null and condition != ''">
-		AND    OD.EXTMALL_ORDER_ID = #{condition}
-			</if>
-		</if>
-		<if test='search != null and search == "searchAgentOrderId"'>
-        	<if test="condition != null and condition != ''">
-		AND    OD.AGENT_ORDER_ID = #{condition}
-			</if>
-		</if>
-		<if test='payMeans != null and payMeans != ""'>
-		AND    P.PAY_MEANS = #{payMeans}
-		</if>
-		<if test='orderNm != null and orderNm != ""'>
-		AND    O.ORD_NM = #{orderNm}
-		</if>
-		<if test='custId != null and custId != ""'>
-		AND    O.CUST_NO = #{custId}
-		</if>
-		<if test='orderPhnno != null and orderPhnno != ""'>
-		AND    O.ORD_PHNNO = #{orderPhnno}
-		</if>
-		<if test='goodsCd != null and goodsCd != ""'>
-		AND    G1.GOODS_CD = #{goodsCd}
-		</if>
-		<if test='sizeCd != null and sizeCd != ""'>
-		AND    ODI.OPT_CD2 = #{sizeCd}
-		</if>
-		<if test='goodsNm != null and goodsNm != ""'>
-		AND    G1.GOODS_NM = #{goodsNm}
-		</if>
-		<if test='payMeans != null and payMeans != ""'>
-		AND    P.PAY_MEANS = #{payMeans}
-		</if>
-		<if test='orderNm != null and orderNm != ""'>
-		AND    O.ORD_NM = #{orderNm}
-		</if>
-		<if test='custId != null and custId != ""'>
-		AND    O.CUST_NO = #{custId}
-		</if>
-		<if test='orderPhnno != null and orderPhnno != ""'>
-		AND    O.ORD_PHNNO = #{orderPhnno}
-		</if>
-		<if test='goodsCd != null and goodsCd != ""'>
-		AND    G2.GOODS_CD = #{goodsCd}
-		</if>
-		<if test='sizeCd != null and sizeCd != ""'>
-		AND    ODI.OPT_CD2 = #{sizeCd}
-		</if>
-		<if test='goodsNm != null and goodsNm != ""'>
-		AND    G2.GOODS_NM = #{goodsNm}
-		</if>
-		<if test='recipNm != null and recipNm != ""'>
-		AND    DA.RECIP_NM = #{recipNm}
-		</if>
-		<if test='invoiceNo != null and invoiceNo != ""'>
-		AND    OD.INVOICE_NO = #{invoiceNo}
-		</if>
-		<if test='wdInvoiceSendYn != null and wdInvoiceSendYn == "Y"'>
-		AND    OD.INVOICE_SEND_YN = 'Y'
-		</if>
-		<if test='wdInvoiceSendYn != null and wdInvoiceSendYn == "N"'>
-		AND    OD.INVOICE_SEND_YN = 'N'
-		</if>
-		<if test='searchDateGb != null and searchDateGb == "ordDt"'>
-		AND    O.ORD_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
-		AND    O.ORD_DT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
-		</if>
-		<if test='searchDateGb != null and searchDateGb == "delvStdt"'>
-		AND    OD.DELV_STDT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
-		AND    OD.DELV_STDT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
-		</if>
-		<if test='searchDateGb != null and searchDateGb == "soldoutDt"'>
-		AND    OD.SOLDOUT_REG_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
-		AND    OD.SOLDOUT_REG_DT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
-		</if>
-		<if test="ordNoList != null and ordNoList != ''">
-        AND    OD.ORD_NO IN
-			<foreach collection="ordNoList" item="item" index="index"  open="(" close=")" separator=",">
-        		#{item}
-            </foreach>
-        </if>
-	</select>
-
-	<!-- 주문목록 > 주문목록 -->
-	<select id="getOrderList" parameterType="Order" resultType="Order">
-		/* order.getOrderList */
-		SELECT Z.*
-		FROM (
-			SELECT @rownum := @rownum + 1 AS RNUM
-			     , A.*
-			FROM (
-				SELECT O.ORD_NO
-				     , OD.ORD_DTL_NO
-				     , ODI.ORD_DTL_ITEM_SQ
-				     , O.ORD_NM
-				     , O.CUST_NO
-				     , OD.VENDOR_ID
-				     , O.FRONT_GB
-				     , DATE_FORMAT(O.ORD_DT,'%Y%m%d%H%i%S') AS ORD_DT
-				     , OD.ORD_EXCH_GB
-				     , OD.ORD_DTL_STAT
-				     , OD.DELV_LOC_CD
-				     , G1.GOODS_CD 
-				     , G1.GOODS_NM
-				     , G1.GOODS_TYPE
-				     , FN_GET_CODE_NM('G056', G1.GOODS_TYPE) AS GOODS_TYPE_NM
-				     , GI.SYS_IMG_NM
-				     , G2.BRAND_CD
-				     , (SELECT Z.BRAND_ENM
-				        FROM   TB_BRAND Z
-				        WHERE  Z.BRAND_CD = G2.BRAND_CD) AS BRAND_ENM
-				     , G2.GOODS_CD AS ITEM_CD
-				     , G2.GOODS_NM AS ITEM_NM
-				     , ODI.OPT_CD1
-				     , ODI.OPT_CD2
-				     , OD.EXTMALL_ORDER_ID
-				     , OD.AGENT_ORDER_ID 
-				     , ODI.ITEM_QTY * OD.ORD_QTY      AS ORD_QTY
-				     , ODI.ITEM_QTY * OD.CNCL_RTN_QTY AS CNCL_RTN_QTY
-				     , ODI.ORD_AMT
-				     , ODI.CNCL_RTN_AMT
-				     , ODI.CPN1_DC_AMT + ODI.TMTB1_DC_AMT + ODI.TMTB2_DC_AMT +  ODI.GOODS_CPN_DC_AMT + ODI.CART_CPN_DC_AMT + ODI.PNT_DC_AMT + ODI.PRE_PNT_DC_AMT AS TOT_DC_AMT
-				     , ODI.REAL_ORD_AMT
-				     , G2.SUPPLY_GOODS_CD
-				     , OD.FORMAL_GB
-				     , DATE_FORMAT(OD.DELV_ASSIGN_DT,'%Y%m%d%H%i%S') AS DELV_ASSIGN_DT 
-				     , OD.INVOICE_NO
-				     , OD.DELV_STDT
-				     , OD.SOLDOUT_YN
-				     , OD.SOLDOUT_MEMO
-				     , DATE_FORMAT(OD.SOLDOUT_REG_DT,'%Y%m%d%H%i%S') AS SOLDOUT_REG_DT 
-				     , OD.SOLDOUT_REG_NO     
-		             , CASE WHEN OD.ORD_EXCH_GB = 'O'
-			                THEN '주문'
-			                ELSE '교환'
-			                END   EXCH_GB_NM 
-				FROM   TB_ORDER O
-				INNER  JOIN TB_ORDER_DETAIL OD
-				ON     O.ORD_NO = OD.ORD_NO
-				INNER  JOIN TB_GOODS G1
-				ON     OD.GOODS_CD = G1.GOODS_CD
-				INNER  JOIN TB_ORDER_DETAIL_ITEM ODI
-				ON     OD.ORD_NO = ODI.ORD_NO
-				AND    OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-				INNER  JOIN TB_GOODS G2
-				ON     ODI.ITEM_CD = G2.GOODS_CD
-				LEFT   OUTER JOIN TB_GOODS_IMG GI
-				ON     ODI.ITEM_CD = GI.GOODS_CD
-				AND    ODI.OPT_CD1 = GI.COLOR_CD
-				INNER  JOIN TB_PAYMENT P
-				ON     O.ORD_NO = P.ORD_NO
-				AND    P.PAY_GB = 'O'
-				AND    P.PAY_STAT = 'G016_30'
-				INNER  JOIN TB_DELIVERY_ADDR DA
-				ON     OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ
-				LEFT   OUTER JOIN (
-					SELECT OC.WD_INVOICE_NO
-					     , OC.WD_INVOICE_SEND_YN
-					     , OC.SHIP_COMP_CD
-					     , OCD.ORD_DTL_NO 
-					     , OCD.CHG_QTY
-					     , OCD.CHG_STAT
-					FROM   TB_ORDER_CHANGE OC
-					INNER  JOIN TB_ORDER_CHANGE_DETAIL OCD
-					ON     OC.ORD_CHG_SQ  = OCD.ORD_CHG_SQ 
-					WHERE  1=1
-					GROUP  BY OCD.ORD_DTL_NO 
-				) OCD
-				ON    OD.ORD_DTL_NO = OCD.ORD_DTL_NO
-				WHERE  1=1
-				<if test='siteCd != null and siteCd != ""'>
-				AND    O.SITE_CD = #{siteCd}
-				</if>
-				<if test='mallCd != null and mallCd != ""'>
-				AND    O.MALL_GB = #{mallCd}
-				</if>
-				<if test='supplyCompCd != null and supplyCompCd != ""'>
-				AND    OD.SUPPLY_COMP_CD = #{supplyCompCd}
-				</if>
-				<if test="multiBrand != null and multiBrand != ''">
-		        AND    G1.BRAND_CD IN
-					<foreach collection="multiBrand" item="item" index="index"  open="(" close=")" separator=",">
-		        		#{item}
-		            </foreach>
-		        </if>
-		        <if test="multiOrdDtlStat != null and multiOrdDtlStat != ''">
-		        AND    OD.ORD_DTL_STAT IN
-					<foreach collection="multiOrdDtlStat" item="item" index="index"  open="(" close=")" separator=",">
-		        		#{item}
-		            </foreach>
-		        </if>
-		        <if test="multiOrdDtlStat == null or multiOrdDtlStat == ''">
-		        	<if test="multiOrdStat != null and multiOrdStat != ''">
-		        AND    OD.ORD_DTL_STAT IN
-						<foreach collection="multiOrdStat" item="item" index="index"  open="(" close=")" separator=",">
-			        		#{item}
-			            </foreach>
-		            </if>
-		        </if>
-				<if test="chgStat != null and chgStat != ''">
-		        AND    OCD.CHG_STAT = #{chgStat}
-		        </if>
-		        <if test="chgStat == null or chgStat == ''">
-		        	<if test="chgGb != null and chgGb != ''">
-		        AND    OCD.CHG_STAT = #{chgGb}
-		        	</if>
-		        </if>
-		        <if test='search != null and search == "searchOrdNo"'>
-		        	<if test="condition != null and condition != ''">
-				AND    O.ORD_NO = #{condition}
-					</if>
-				</if>
-				<if test='search != null and search == "searchExtmallOrderId"'>
-		        	<if test="condition != null and condition != ''">
-				AND    OD.EXTMALL_ORDER_ID = #{condition}
-					</if>
-				</if>
-				<if test='search != null and search == "searchAgentOrderId"'>
-		        	<if test="condition != null and condition != ''">
-				AND    OD.AGENT_ORDER_ID = #{condition}
-					</if>
-				</if>
-				<if test='payMeans != null and payMeans != ""'>
-				AND    P.PAY_MEANS = #{payMeans}
-				</if>
-				<if test='orderNm != null and orderNm != ""'>
-				AND    O.ORD_NM = #{orderNm}
-				</if>
-				<if test='custId != null and custId != ""'>
-				AND    O.CUST_NO = #{custId}
-				</if>
-				<if test='orderPhnno != null and orderPhnno != ""'>
-				AND    O.ORD_PHNNO = #{orderPhnno}
-				</if>
-				<if test='goodsCd != null and goodsCd != ""'>
-				AND    G1.GOODS_CD = #{goodsCd}
-				</if>
-				<if test='sizeCd != null and sizeCd != ""'>
-				AND    ODI.OPT_CD2 = #{sizeCd}
-				</if>
-				<if test='goodsNm != null and goodsNm != ""'>
-				AND    G1.GOODS_NM = #{goodsNm}
-				</if>
-				<if test='payMeans != null and payMeans != ""'>
-				AND    P.PAY_MEANS = #{payMeans}
-				</if>
-				<if test='orderNm != null and orderNm != ""'>
-				AND    O.ORD_NM = #{orderNm}
-				</if>
-				<if test='custId != null and custId != ""'>
-				AND    O.CUST_NO = #{custId}
-				</if>
-				<if test='orderPhnno != null and orderPhnno != ""'>
-				AND    O.ORD_PHNNO = #{orderPhnno}
-				</if>
-				<if test='goodsCd != null and goodsCd != ""'>
-				AND    G2.GOODS_CD = #{goodsCd}
-				</if>
-				<if test='sizeCd != null and sizeCd != ""'>
-				AND    ODI.OPT_CD2 = #{sizeCd}
-				</if>
-				<if test='goodsNm != null and goodsNm != ""'>
-				AND    G2.GOODS_NM = #{goodsNm}
-				</if>
-				<if test='recipNm != null and recipNm != ""'>
-				AND    DA.RECIP_NM = #{recipNm}
-				</if>
-				<if test='invoiceNo != null and invoiceNo != ""'>
-				AND    OD.INVOICE_NO = #{invoiceNo}
-				</if>
-				<if test='wdInvoiceSendYn != null and wdInvoiceSendYn == "Y"'>
-				AND    OD.INVOICE_SEND_YN = 'Y'
-				</if>
-				<if test='wdInvoiceSendYn != null and wdInvoiceSendYn == "N"'>
-				AND    OD.INVOICE_SEND_YN = 'N'
-				</if>
-				<if test='searchDateGb != null and searchDateGb == "ordDt"'>
-				AND    O.ORD_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
-				AND    O.ORD_DT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
-				</if>
-				<if test='searchDateGb != null and searchDateGb == "delvStdt"'>
-				AND    OD.DELV_STDT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
-				AND    OD.DELV_STDT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
-				</if>
-				<if test='searchDateGb != null and searchDateGb == "soldoutDt"'>
-				AND    OD.SOLDOUT_REG_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
-				AND    OD.SOLDOUT_REG_DT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
-				</if>
-				<if test="ordNoList != null and ordNoList != ''">
-		        AND    OD.ORD_NO IN
-					<foreach collection="ordNoList" item="item" index="index"  open="(" close=")" separator=",">
-		        		#{item}
-		            </foreach>
-		        </if>
-		        ORDER  BY OD.ORD_NO DESC
-		             , OD.ORD_DTL_NO DESC
-		             , ODI.ORD_DTL_ITEM_SQ DESC
-	        ) A
-			JOIN (SELECT @rownum := 0) R
-		) Z
-		WHERE  1=1
-        AND    Z.RNUM BETWEEN  #{pageable.startRow} AND #{pageable.endRow}
-        ORDER  BY Z.ORD_NO DESC
-             , Z.ORD_DTL_NO DESC
-             , Z.ORD_DTL_ITEM_SQ DESC
-	</select>
-	
-	<!-- 주문상세 > 주문기본정보 -->
-	<select id="getOrderInfoList" parameterType="Order" resultType="Order">
-		/* order.getOrderInfoList */
-		SELECT O.SITE_CD
-		     , FN_GET_CODE_NM('G000', O.SITE_CD) AS SITE_CD_NM
-		     , O.MALL_GB
-		     , FN_GET_CODE_NM('G011', O.MALL_GB) AS MALL_GB_NM
-		     , O.FRONT_GB
-		     , CASE WHEN O.FRONT_GB = 'P'
-		            THEN 'PC'
-		            ELSE 'MOBILE'
-		             END FRONT_GB_NM
-		     , OD.EXTMALL_ID
-		     , (SELECT X.EXTMALL_NM
-		        FROM   TB_EXTMALL X
-		        WHERE  X.EXTMALL_ID = OD.EXTMALL_ID) AS EXTMALL_NM 
-		     , O.ORD_DT
-		     , O.ORD_NM
-		     , O.CUST_NO
-		     , O.ORD_NO
-		     , O.ORD_EMAIL
-		     , O.ORD_PHNNO
-		     , O.ORD_TELNO
-		     , C.CUST_GB 
-		     , CASE WHEN C.CUST_GB IS NULL 
-		            THEN '비회원'
-		            ELSE FN_GET_CODE_NM('G100', C.CUST_GB) 
-		             END CUST_GB_NM
-		     , C.MANAGED_RSN
-		     , CASE WHEN C.MANAGED_RSN IS NULL 
-		            THEN '부'
-		            ELSE FN_GET_CODE_NM('G120', C.MANAGED_RSN) 
-		             END MANAGED_RSN_NM
-		     , C.CUST_GRADE
-		     , CASE WHEN C.CUST_GRADE IS NULL 
-		            THEN '등급없음'
-		            ELSE FN_GET_CODE_NM('G110', C.CUST_GRADE) 
-		             END CUST_GRADE_NM
-			 , P.ESCROW_YN
-		     , P.PAY_MEANS
-		     , FN_GET_CODE_NM('G014', P.PAY_MEANS) AS PAY_MEANS_NM
-		     , P.CARD_NM
-		     , P.VA_BANK
-		     , CASE WHEN P.PAY_MEANS = 'G014_20' || P.PAY_MEANS = 'G014_10'
-		            THEN FN_GET_CODE_NM('G940', P.VA_BANK)
-		            ELSE P.CARD_NM
-		            END  CARD_NM
-		     , P.PG_TRADE_NO
-		     , DATE_FORMAT(P.PAY_DT,'%Y%m%d%H%i%S') AS PAY_DT
-		     , P.PAY_STAT
-		     , FN_GET_CODE_NM('G016', P.PAY_STAT) AS PAY_STAT_NM
-		     , P.PAY_AMT
-		     , DATE_FORMAT(P.VA_DEADLINE,'%Y%m%d%H%i%S') AS VA_DEADLINE
-		FROM   TB_ORDER O
-		INNER  JOIN TB_ORDER_DETAIL OD
-		ON     O.ORD_NO = OD.ORD_NO
-		LEFT   OUTER JOIN TB_CUSTOMER C
-		ON     O.CUST_NO = C.CUST_NO
-		INNER  JOIN TB_PAYMENT P
-		ON     O.ORD_NO = P.ORD_NO
-		AND    P.PAY_GB = 'O'
-		AND    P.PAY_STAT = 'G016_30'
-		WHERE  1=1
-		AND    O.ORD_NO = #{ordNo}
-		LIMIT  1
-	</select>
-	
-	<!-- 주문상세 > 주문상품상세 목록(단품) -->
-	<select id="getOrderDetailList" parameterType="Order" resultType="Order">
-		/* order.getOrderDetailList */
-		SELECT OD.ORD_NO
-		     , CASE WHEN OD.ORD_EXCH_GB = 'O'
-			        THEN '주문'
-			        ELSE '교환'
-			        END   EXCH_GB_NM 
-		     , OD.ORD_DTL_NO
-		     , G1.GOODS_CD 
-		     , G1.GOODS_NM
-		     , G1.GOODS_TYPE
-		     , FN_GET_CODE_NM('G056', G1.GOODS_TYPE) AS GOODS_TYPE_NM
-		     , GI.SYS_IMG_NM
-		     , G2.BRAND_CD
-		     , (SELECT Z.BRAND_ENM
-		        FROM   TB_BRAND Z
-		        WHERE  Z.BRAND_CD = G2.BRAND_CD) AS BRAND_ENM
-		     , G2.GOODS_CD AS ITEM_CD
-		     , G2.GOODS_NM AS ITEM_NM
-		     , ODI.OPT_CD1
-		     , ODI.OPT_CD2
-		     , ODI.ITEM_QTY
-		     , ODI.ITEM_PRICE
-		     , ODI.ITEM_QTY * OD.ORD_QTY      AS ORD_QTY
-		     , ODI.ITEM_QTY * OD.CNCL_RTN_QTY AS CNCL_RTN_QTY
- 		     , CASE WHEN OCD.ORD_REQ_CHG_QTY IS NULL
-			        THEN 0
-			        ELSE OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY
-			        END  ORD_REQ_CHG_QTY
-		     , ODI.OPT_ADD_PRICE
-		     , ODI.CPN1_DC_AMT
-		     , ODI.GOODS_CPN_DC_AMT
-		     , ODI.CART_CPN_DC_AMT
-		     , ODI.TMTB1_DC_AMT
-		     , ODI.TMTB2_DC_AMT
-		     , ODI.PNT_DC_AMT
-		     , ODI.PRE_PNT_DC_AMT
-		     , ODI.SAVE_PNT_AMT
-		     , ODI.GFCD_USE_AMT
-			 , ODI.ORD_AMT
-		     , ODI.REAL_ORD_AMT
-		     , ODI.CNCL_RTN_AMT
-		     , OD.ORD_DTL_STAT
-		     , FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT) AS ORD_DTL_STAT_NM 
-		     , OD.SOLDOUT_YN
-		     , OD.SOLDOUT_REG_NO
-		     , OD.SOLDOUT_MEMO
-		     , OD.INVOICE_NO
-		     , OD.DELV_LOC_CD 
-		     , X.G20
-		     , X.G30
-		     , X.G40
-		     , X.G50
-		     , X.G55
-		     , X.G60
-		     , OD.DELV_ADDR_SQ
-		FROM   TB_ORDER O
-		INNER  JOIN TB_ORDER_DETAIL OD
-		ON     O.ORD_NO = OD.ORD_NO
-		INNER  JOIN TB_GOODS G1
-		ON     OD.GOODS_CD = G1.GOODS_CD
-		INNER  JOIN TB_ORDER_DETAIL_ITEM ODI
-		ON     OD.ORD_NO = ODI.ORD_NO
-		AND    OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-		INNER  JOIN TB_GOODS G2
-		ON     ODI.ITEM_CD = G2.GOODS_CD
-		LEFT   OUTER JOIN TB_GOODS_IMG GI
-		ON     ODI.ITEM_CD = GI.GOODS_CD
-		AND    ODI.OPT_CD1 = GI.COLOR_CD
-		INNER  JOIN TB_PAYMENT P
-		ON     O.ORD_NO = P.ORD_NO
-		AND    P.PAY_GB = 'O'
-		AND    P.PAY_STAT = 'G016_30'
-		INNER  JOIN TB_DELIVERY_ADDR DA
-		ON     OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ
-		LEFT   OUTER JOIN (
-			SELECT MAX(Z.G013_20) AS G20
-			     , MAX(Z.G013_30) AS G30
-			     , MAX(Z.G013_40) AS G40
-			     , MAX(Z.G013_50) AS G50
-			     , MAX(Z.G013_55) AS G55
-			     , MAX(Z.G013_60) AS G60
-			     , Z.ORD_NO
-			     , Z.ORD_DTL_NO
-			FROM (
-				SELECT CASE WHEN ODH.ORD_DTL_STAT = 'G013_20' THEN 'G013_20' END G013_20
-				     , CASE WHEN ODH.ORD_DTL_STAT = 'G013_30' THEN 'G013_30' END G013_30
-				     , CASE WHEN ODH.ORD_DTL_STAT = 'G013_40' THEN 'G013_40' END G013_40
-				     , CASE WHEN ODH.ORD_DTL_STAT = 'G013_50' THEN 'G013_50' END G013_50
-				     , CASE WHEN ODH.ORD_DTL_STAT = 'G013_55' THEN 'G013_55' END G013_55
-				     , CASE WHEN ODH.ORD_DTL_STAT = 'G013_60' THEN 'G013_60' END G013_60
-				     , ODH.ORD_NO
-				     , ODH.ORD_DTL_NO
-				FROM   TB_ORDER_DETAIL_HST ODH
-				INNER  JOIN TB_COMMON_CODE CC
-				ON     ODH.ORD_DTL_STAT = CC.CD
-				WHERE  ODH.ORD_NO = #{ordNo}
-				GROUP  BY ODH.ORD_DTL_STAT
-			) Z
-		) X
-		ON     OD.ORD_DTL_NO = X.ORD_DTL_NO
-		LEFT   OUTER JOIN (
-			SELECT OD.ORD_DTL_NO
-			     , SUM(OCD.CHG_QTY) AS ORD_REQ_CHG_QTY
-			FROM   TB_ORDER_CHANGE_DETAIL OCD
-			INNER  JOIN TB_ORDER_DETAIL OD
-			ON     OCD.ORD_DTL_NO = OD.ORD_DTL_NO
-			WHERE  1=1
-			AND    OD.ORD_NO = #{ordNo}
-			AND    OCD.CHG_STAT IN (
-				'G685_20', 'G685_30', 'G685_40'
-			)
-			GROUP  BY OCD.ORD_DTL_NO
-		) OCD
-		ON     OD.ORD_DTL_NO = OCD.ORD_DTL_NO
-		WHERE  1=1
-		AND    OD.ORD_NO = #{ordNo}
-	</select>
-	
-	<!-- 주문상세 > 사은품목록 -->
-	<select id="getOrderFreeGiftList" parameterType="Order" resultType="Order">
-		/* order.getOrderFreeGiftList */
-		SELECT OFV.ORD_FREEGIFT_SQ
-		     , OFV.ORD_NO
-		     , OFV.FREEGIFT_SQ 
-		     , FG.FREEGIFT_NM 
-		     , OFV.FREEGIFT_VAL_SQ 
-		     , OFV.USE_POINT
-		     , OFV.ITEM_CD 
-		     , G.GOODS_NM AS ITEM_NM
-		     , OFV.ITEM_QTY 
-		     , OFV.OPT_CD 
-		     , OFV.OPT_CD1 
-		     , OFV.OPT_CD2 
-		     , OFV.DEL_YN
-		FROM   TB_ORD_FREEGIFT_VAL OFV
-		INNER  JOIN TB_FREEGIFT FG
-		ON     OFV.FREEGIFT_SQ = FG.FREEGIFT_SQ
-		INNER  JOIN TB_GOODS G
-		ON     OFV.ITEM_CD = G.GOODS_CD 
-		WHERE 1=1
-		AND    OFV.ORD_NO = #{ordNo}
-		AND    OFV.DEL_YN = 'N'
-		ORDER  BY OFV.REG_DT DESC
-	</select>
-	
-	<!-- 주문상세 > 배송정보 -->
-	<select id="getDeliveryAddrList" parameterType="Order" resultType="Order">
-		/* order.getDeliveryAddrList */
-		SELECT Z.DELV_ADDR_SQ
-		     , SUM(Z.DELV_ADDR_EDIT_YN) AS DELV_ADDR_EDIT_YN
-		     , Z.EXCH_GB_NM
-		     , Z.RECIP_NM
-		     , Z.RECIP_PHNNO
-		     , Z.RECIP_TELNO
-		     , Z.RECIP_ZIPCODE
-		     , Z.RECIP_BASE_ADDR
-		     , Z.RECIP_DTL_ADDR
-		     , Z.ORD_EMAIL
-		     , Z.DELV_MEMO
-		FROM   (
-			SELECT OD.DELV_ADDR_SQ
-			     , CASE WHEN ORD_DTL_STAT IN ('G013_10', 'G013_20', 'G013_30', 'G013_40')
-			            THEN 0
-			            ELSE 1
-			            END DELV_ADDR_EDIT_YN
-			     , OD.ORD_EXCH_GB
-			     , CASE WHEN OD.ORD_EXCH_GB = 'O'
-			            THEN '주문'
-			            ELSE '교환'
-			            END   EXCH_GB_NM 
-			     , DA.RECIP_NM 
-			     , DA.RECIP_PHNNO 
-			     , DA.RECIP_TELNO 
-			     , DA.RECIP_ZIPCODE 
-			     , DA.RECIP_BASE_ADDR
-			     , DA.RECIP_DTL_ADDR
-			     , O.ORD_EMAIL
-			     , DA.DELV_MEMO
-			FROM   TB_ORDER_DETAIL OD
-			INNER  JOIN TB_ORDER O
-			ON     OD.ORD_NO = O.ORD_NO
-			INNER  JOIN TB_DELIVERY_ADDR DA
-			ON     OD.DELV_ADDR_SQ  = DA.DELV_ADDR_SQ
-			WHERE  1=1
-			AND    OD.ORD_NO = #{ordNo}
-		) Z
-		ORDER  BY Z.DELV_ADDR_SQ
-	</select>
-	
-	<!-- 주문상세 > 결제정보 -->
-	<select id="getOrderPaymentBasicInfoList" parameterType="Order" resultType="Order">
-		/* order.getOrderPaymentBasicInfoList */
-		SELECT P.ESCROW_YN
-		     , P.PAY_MEANS
-		     , FN_GET_CODE_NM('G014', P.PAY_MEANS) AS PAY_MEANS_NM
-		     , P.CARD_NM 
-		     , P.VA_BANK
-		     , CASE WHEN P.PAY_MEANS = 'G014_20' || P.PAY_MEANS = 'G014_10'
-		            THEN FN_GET_CODE_NM('G940', P.VA_BANK)
-		            ELSE P.CARD_NM
-		            END  CARD_NM
-		     , P.PG_TRADE_NO
-		     , DATE_FORMAT(P.PAY_DT,'%Y%m%d%H%i%S') AS PAY_DT  
-		     , P.PAY_STAT 
-		     , FN_GET_CODE_NM('G016', P.PAY_STAT) AS PAY_STAT_NM
-		     , P.PAY_AMT 
-		     , DATE_FORMAT(P.VA_DEADLINE,'%Y%m%d%H%i%S') AS VA_DEADLINE 
-		FROM   TB_PAYMENT P
-		WHERE  1=1
-		AND    P.ORD_NO = #{ordNo}
-		AND    P.PAY_STAT = 'G016_30'
-		ORDER  BY P.REG_DT DESC
-	</select>
-	
-	<!-- 주문상세 > 배송비정보 -->
-	<select id="getDeliveryFeeList" parameterType="Order" resultType="Order">
-		/* order.getDeliveryFeeList */
-		SELECT Z.*
-		FROM   (
-			SELECT DF.DELV_FEE_GB
-			     , FN_GET_CODE_NM('G018', DF.DELV_FEE_GB) AS DELV_FEE_GB_NM
-			     , DF.DELV_FEE
-			     , DF.DELV_USAC_YN
-			     , DATE_FORMAT(DF.DELV_USAC_DT,'%Y%m%d%H%i%S') AS DELV_USAC_DT
-			     , DF.SUPPLY_COMP_CD
-			     , DF.DELV_FEE_SQ
-			FROM   TB_DELIVERY_FEE DF
-			WHERE  1=1
-			AND    DF.ORD_NO = #{ordNo}
-		) Z
-		GROUP  BY Z.DELV_FEE_GB 
-		     , Z.DELV_FEE_GB_NM
-		     , Z.DELV_FEE
-		     , Z.DELV_USAC_YN 
-		     , Z.DELV_USAC_DT 
-		     , Z.SUPPLY_COMP_CD 
-		     , Z.DELV_FEE_SQ
-	</select>
-	
-	<!-- 주문상세 > 취소/반품/교환 요청정보 (변경상세단위) -->
-	<select id="getOrderChangeList" parameterType="Order" resultType="Order">
-		/* order.getOrderChangeList */
-		SELECT OCD.ORD_CHG_SQ
-		     , OC.CHG_GB
-		     , FN_GET_CODE_NM('G680', OC.CHG_GB) AS CHG_GB_NM
-		     , OD.GOODS_CD
-		     , ODI.OPT_CD1
-		     , ODI.OPT_CD2
-		     , OCD.CHG_STAT 
-		     , FN_GET_CODE_NM('G685', OCD.CHG_STAT) AS CHG_STAT_NM
-		     , OCD.CHG_QTY
-		     , DATE_FORMAT(OCD.REG_DT,'%Y%m%d%H%i%S') AS REG_DT
-		     , OC.CHG_REASON 
-		     , CASE WHEN OC.CHG_GB = 'G680_20' THEN FN_GET_CODE_NM('G686', OC.CHG_REASON)
-		            WHEN OC.CHG_GB = 'G680_30' THEN FN_GET_CODE_NM('G688', OC.CHG_REASON)
-		            WHEN OC.CHG_GB = 'G680_40' THEN FN_GET_CODE_NM('G689', OC.CHG_REASON)
-		            ELSE '결제전취소'
-		            END  CHG_REASON_NM
-		     , OC.CHG_MEMO
-		     , OC.CHGER_NM
-		     , OC.CHGER_PHNNO 
-		     , OC.CHGER_ZIPCODE
-		     , OC.CHGER_BASE_ADDR
-		     , OC.CHGER_DTL_ADDR
-		     , OC.WD_INVOICE_SEND_YN
-		     , OC.WD_INVOICE_NO
-		FROM   TB_ORDER_CHANGE_DETAIL OCD
-		INNER  JOIN TB_ORDER_CHANGE OC
-		ON     OC.ORD_CHG_SQ = OCD.ORD_CHG_SQ 
-		INNER  JOIN TB_ORDER_DETAIL OD
-		ON     OCD.ORD_DTL_NO = OD.ORD_DTL_NO 
-		INNER  JOIN (
-			SELECT X.ORD_DTL_ITEM_SQ
-			     , X.ORD_DTL_NO
-			     , X.ITEM_CD
-			     , X.OPT_CD
-			     , X.OPT_CD1
-			     , X.OPT_CD2
-			FROM   TB_ORDER_DETAIL_ITEM X
-			WHERE  X.ORD_NO = #{ordNo}
-			LIMIT  1
-		) ODI 
-		WHERE  1=1
-		AND    OD.ORD_NO = #{ordNo}
-		<if test='ordChgSq != null and ordChgSq != ""'>
-		AND    OCD.ORD_CHG_SQ = #{ordChgSq}	
-		</if>
-		AND    OCD.DEL_YN = 'N'
-		ORDER  BY OC.ORD_CHG_SQ
-		     , OCD.ORD_DTL_NO 
-	</select>
-	
-	<!-- 주문상세 > 환불정보 -->
-	<select id="getOrderRefundInfo" parameterType="Order" resultType="Order">
-		/* order.getOrderRefundInfo */
-		SELECT P.PAY_MEANS
-		     , FN_GET_CODE_NM('G014', P.PAY_MEANS) AS PAY_MEANS_NM
-		     , P.CARD_NM
-		     , R.RA_BANK
-		     , CASE WHEN PAY_MEANS = 'G014_20' || PAY_MEANS = 'G014_10'
-		            THEN FN_GET_CODE_NM('G940', R.RA_BANK)
-		            ELSE P.CARD_NM
-		            END  CARD_NM
-		     , R.RA_NO
-		     , R.RA_NM 
-		     , R.REFUND_AMT 
-		     , DATE_FORMAT(P.UPD_DT,'%Y%m%d%H%i%S') AS UPD_DT
-		     , (SELECT USER_NM
-		        FROM   TB_USER X
-		        WHERE  X.USER_NO = P.UPD_NO) AS UPD_NM
-		FROM   TB_REFUND R
-		INNER  JOIN TB_PAYMENT P
-		ON     R.ORD_CHG_SQ = P.ORD_CHG_SQ 
-		WHERE  1=1
-		AND    R.ORD_NO = #{ordNo}
-		ORDER  BY R.REG_DT DESC
-	</select>
-	
-	<!-- 주문상세 > 상담내역 -->
-	<select id="getOrderCounselInfo" parameterType="Order" resultType="Order">
-		/* order.getOrderCounselInfo */
-		SELECT CS.COUNSEL_CLSF
-			 , FN_GET_CODE_NM('G059', CS.COUNSEL_CLSF) AS COUNSEL_CLSF_NM
-		     , CS.REL_GOODS_CD
-		     , CS.QUEST_TITLE
-		     , DATE_FORMAT(CS.QUEST_DT,'%Y%m%d%H%i%S') AS QUEST_DT
-		     , DATE_FORMAT(CS.ANS_DT,'%Y%m%d%H%i%S') AS ANS_DT
-		     , CS.ANS_NO
-		     , (SELECT USER_NM
-		        FROM   TB_USER X
-		        WHERE  X.USER_NO = CS.ANS_NO) AS ANS_NM
-		     , CS.DEL_YN
-		FROM   TB_COUNSEL CS
-		WHERE  1=1
-		AND    CS.REL_ORD_NO = #{ordNo}
-		ORDER  BY CS.REG_DT DESC
-	</select>
-	
-	<!-- 주문상세 > 관리자메모 -->
-	<select id="getOrderMemoList" parameterType="Order" resultType="Order">
-		/* order.getOrderTsainMemoList */
-		SELECT ORDER_MEMO_SQ 
-		     , OM.ORD_NO
-		     , OM.MEMO
-		     , OM.REG_NO
-		     , OM.REG_DT
-		     , OM.UPD_NO
-		     , OM.UPD_DT
-		     , (SELECT USER_NM
-		        FROM   TB_USER X
-		        WHERE  X.USER_NO = OM.REG_NO) AS REG_NM
-		FROM  TB_ORDER_MEMO OM
-		WHERE 1=1
-		AND   OM.ORD_NO = #{ordNo}
-		AND   OM.DEL_YN = #{delYn}
-		ORDER BY OM.REG_DT DESC
-	</select>
-	
-	<!-- 주문/배송 > 입점업체미발주목록 -->
-	<select id="getOrderSellerUnorderList" parameterType="Order" resultType="Order">
-		/* order.getOrderSellerUnorderList */
-		SELECT OD.SUPPLY_COMP_CD
-		     , (SELECT SC.SUPPLY_COMP_NM
-		        FROM   TB_SUPPLY_COMPANY SC
-		        WHERE  SC.SUPPLY_COMP_CD = OD.SUPPLY_COMP_CD) AS SUPPLY_COMP_NM
-		     , G1.BRAND_CD 
-		     , (SELECT B.BRAND_KNM 
-		        FROM   TB_BRAND B
-		        WHERE  B.BRAND_CD = G1.BRAND_CD) AS BRAND_KNM
-		     , G1.GOODS_TYPE 
-		     , FN_GET_CODE_NM('G056', G1.GOODS_TYPE) AS GOODS_TYPE_NM
-		     , G1.GOODS_CD
-		     , G1.GOODS_NM
-		     , OD.ORD_NO
-		     , OD.ORD_DTL_NO
-		     , OD.ORD_DTL_STAT 
-		     , FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT) AS ORD_DTL_STAT_NM
-		     , O.ORD_NM 
-		     , DATE_FORMAT(O.ORD_DT,'%Y%m%d%H%i%S') AS ORD_DT
-		     , P.PAY_MEANS 
-		     , FN_GET_CODE_NM('G014', P.PAY_MEANS) AS PAY_MEANS_NM
-		     , O.ORD_PHNNO 
-		     , DA.RECIP_NM 
-		     , DA.RECIP_PHNNO 
-		     , DA.RECIP_ZIPCODE 
-		     , DA.RECIP_BASE_ADDR 
-		     , DA.RECIP_DTL_ADDR 
-		     , G2.SUPPLY_GOODS_CD
-		     , G2.GOODS_CD AS ITEM_CD
-		     , G2.GOODS_NM AS ITEM_NM
-		     , ODI.OPT_CD1
-		     , ODI.OPT_CD2
-		     , ODI.ORD_AMT
-		     , ODI.CPN1_DC_AMT + ODI.TMTB1_DC_AMT + ODI.TMTB2_DC_AMT +  ODI.GOODS_CPN_DC_AMT + ODI.CART_CPN_DC_AMT + ODI.PNT_DC_AMT + ODI.PRE_PNT_DC_AMT AS TOT_DC_AMT
-		     , ODI.REAL_ORD_AMT 
-		     , OD.INVOICE_NO 
-		     , OD.SHIP_COMP_CD
-		FROM   TB_ORDER O
-		INNER  JOIN TB_ORDER_DETAIL OD
-		ON     O.ORD_NO = OD.ORD_NO
-		INNER  JOIN TB_GOODS G1
-		ON     OD.GOODS_CD = G1.GOODS_CD
-		INNER  JOIN TB_ORDER_DETAIL_ITEM ODI
-		ON     OD.ORD_NO = ODI.ORD_NO 
-		AND    OD.ORD_DTL_NO = ODI.ORD_DTL_NO 
-		INNER  JOIN TB_GOODS G2
-		ON     ODI.ITEM_CD = G2.GOODS_CD
-		LEFT   OUTER JOIN TB_GOODS_IMG GI
-		ON     ODI.ITEM_CD = GI.GOODS_CD
-		AND    ODI.OPT_CD1 = GI.COLOR_CD
-		INNER  JOIN TB_PAYMENT P
-		ON     O.ORD_NO = P.ORD_NO 
-		AND    P.PAY_GB = 'O'
-		AND    P.PAY_STAT = 'G016_30'
-		INNER  JOIN TB_DELIVERY_ADDR DA
-		ON     OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ 
-		INNER  JOIN TB_DELIVERY_FEE DF		
-		ON     DF.SUPPLY_COMP_CD = OD.SUPPLY_COMP_CD
-		AND    DF.DELV_FEE_CD = OD.DELV_FEE_CD 
-		AND    DF.ORD_NO = OD.ORD_NO
-		WHERE  1=1
-		<if test='supplyCompCd != null and supplyCompCd != ""'>
-		AND    OD.SUPPLY_COMP_CD = #{supplyCompCd}
-		</if>
-		<if test="multiBrand != null and multiBrand != ''">
-        AND    G.BRAND_CD IN
-			<foreach collection="multiBrand" item="item" index="index"  open="(" close=")" separator=",">
-        		#{item}
-            </foreach>
-        </if>
-        <if test="ordDtlStat != null and ordDtlStat != ''">
-        AND    OD.ORD_DTL_STAT = #{ordDtlStat}
-        </if>
-        <if test="ordNo != null and ordNo != ''">
-		AND    O.ORD_NO = #{ordNo}
-		</if>
-		<if test="ordNm != null and ordNm != ''">
-		AND    O.ORD_NM = #{ordNm}
-		</if>
-		<if test='goodsCd != null and goodsCd != ""'>
-		AND    G.GOODS_CD = #{goodsCd}
-		</if>
-		<if test='searchDateGb != null and searchDateGb == "ordDt"'>
-		AND    O.ORD_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
-		AND    O.ORD_DT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
-		</if>
-	</select>
-	
-	<!-- 주문/배송 > 입점업체 엑셀다운용 임시테이블 삭제-->
-	<delete id="deleteEntryExcelDownTmp" parameterType="Order">
-		/* TsbOrder.deleteEntryExcelDownTmp */
-		DELETE FROM TB_ENTRY_UPLOAD_EXCEL
-		WHERE  1=1
-	</delete>
-	
-	<!-- 주문/배송 > 입점업체 주문상세정보 변경 (입점) -->
-	<update id="updateOrderDetailStat" parameterType="Order">
-		/* Order.updateOrderDetailStat */
-		UPDATE TB_ORDER_DETAIL
-		SET    ORD_DTL_STAT = 'G013_30'
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = CURRENT_TIMESTAMP()
-		WHERE  ORD_DTL_NO = #{ordDtlNo}
-		AND    ORD_DTL_STAT in ('G013_20')
-		AND    SUPPLY_COMP_CD = #{supplyCompCd}
-	</update>
-	
-	<!-- 주문/배송 > 주문상세이력 생성-->
-	<insert id="createOrderDetailHst" parameterType="Order">
-		/* Order.createOrderDetailHst */
-		INSERT INTO TB_ORDER_DETAIL_HST (
-				ORD_DTL_NO
-				, ORD_NO
-				, ORD_EXCH_GB
-				, ORD_DTL_STAT
-				, ORG_ORD_DTL_NO
-				, SUPPLY_COMP_CD
-				, GOODS_CD
-				, PRODUCT_NO
-				, PRODUCT_CODE
-				, FORMAL_GB
-				, GOODS_TYPE
-				, LIST_PRICE
-				, CURR_PRICE
-				, DC_RATE
-				, OPT_ADD_PRICE
-				, ORD_QTY
-				, ORD_AMT
-				, CNCL_RTN_QTY
-				, CNCL_RTN_AMT
-				, CPN1_CPN_SQ
-				, CPN1_DC_AMT
-				, TMTB1_SQ
-				, TMTB1_DC_AMT
-				, TMTB2_SQ
-				, TMTB2_DC_AMT
-				, GOODS_CPN_SQ
-				, GOODS_CPN_DC_AMT
-				, CART_CPN_SQ
-				, CART_CPN_DC_AMT
-				, BURDEN_RATE
-				, PNT_DC_AMT
-				, PRE_PNT_DC_AMT
-				, SAVE_PNT_AMT
-				, REAL_ORD_AMT
-				, GFCD_USE_AMT
-				, VENDOR_ID
-				, EXTMALL_ID
-				, AGENT_ORDER_ID
-				, EXTMALL_ORDER_ID
-				, CHANGABLE_YN
-				, CHANGE_FEE_FREE_YN
-				, RETURNABLE_YN
-				, RETURN_FEE_FREE_YN
-				, SOLDOUT_YN
-				, SOLDOUT_MEMO
-				, SOLDOUT_REG_NO
-				, SOLDOUT_REG_DT
-				, DELV_ADDR_SQ
-				, DELV_FEE_CD
-				, SHOT_DELV_YN
-				, GIFT_PACK_YN
-				, MAKE_GOODS_YN
-				, ENTRY_NO
-				, DELV_LOC_CD
-				, DELV_ASSIGN_DT
-				, DELV_ASSIGN_STAT
-				, DSTRBT_NOTE
-				, DELV_STDT
-				, DELV_EDDT
-				, SHIP_COMP_CD
-				, INVOICE_NO
-				, INVOICE_SEND_YN
-				, SELL_STORE_CD
-				, SELL_FEE_RATE
-				, AF_LINK_CD
-				, ITHR_CD
-				, CONTENTS_LOC
-				, PLAN_DTL_SQ
-				, SOCIAL_SQ
-				, REG_NO
-				, REG_DT
-				, UPD_NO
-				, UPD_DT
-		)
-		SELECT ORD_DTL_NO
-				, ORD_NO
-				, ORD_EXCH_GB
-				, ORD_DTL_STAT
-				, ORG_ORD_DTL_NO
-				, SUPPLY_COMP_CD
-				, GOODS_CD
-				, PRODUCT_NO
-				, PRODUCT_CODE
-				, FORMAL_GB
-				, GOODS_TYPE
-				, LIST_PRICE
-				, CURR_PRICE
-				, DC_RATE
-				, OPT_ADD_PRICE
-				, ORD_QTY
-				, ORD_AMT
-				, CNCL_RTN_QTY
-				, CNCL_RTN_AMT
-				, CPN1_CPN_SQ
-				, CPN1_DC_AMT
-				, TMTB1_SQ
-				, TMTB1_DC_AMT
-				, TMTB2_SQ
-				, TMTB2_DC_AMT
-				, GOODS_CPN_SQ
-				, GOODS_CPN_DC_AMT
-				, CART_CPN_SQ
-				, CART_CPN_DC_AMT
-				, BURDEN_RATE
-				, PNT_DC_AMT
-				, PRE_PNT_DC_AMT
-				, SAVE_PNT_AMT
-				, REAL_ORD_AMT
-				, GFCD_USE_AMT
-				, VENDOR_ID
-				, EXTMALL_ID
-				, AGENT_ORDER_ID
-				, EXTMALL_ORDER_ID
-				, CHANGABLE_YN
-				, CHANGE_FEE_FREE_YN
-				, RETURNABLE_YN
-				, RETURN_FEE_FREE_YN
-				, SOLDOUT_YN
-				, SOLDOUT_MEMO
-				, SOLDOUT_REG_NO
-				, SOLDOUT_REG_DT
-				, DELV_ADDR_SQ
-				, DELV_FEE_CD
-				, SHOT_DELV_YN
-				, GIFT_PACK_YN
-				, MAKE_GOODS_YN
-				, ENTRY_NO
-				, DELV_LOC_CD
-				, DELV_ASSIGN_DT
-				, DELV_ASSIGN_STAT
-				, DSTRBT_NOTE
-				, DELV_STDT
-				, DELV_EDDT
-				, SHIP_COMP_CD
-				, INVOICE_NO
-				, INVOICE_SEND_YN
-				, SELL_STORE_CD
-				, SELL_FEE_RATE
-				, AF_LINK_CD
-				, ITHR_CD
-				, CONTENTS_LOC
-				, PLAN_DTL_SQ
-				, SOCIAL_SQ
-				, #{regNo} AS REG_ID
-				, CURRENT_TIMESTAMP() AS REG_DT
-				, #{regNo} AS REG_ID
-				, CURRENT_TIMESTAMP() AS UPD_DT
-		FROM   TB_ORDER_DETAIL
-		WHERE  ORD_DTL_NO = #{ordDtlNo}
-	</insert>
-	
-	<!-- 주문/배송 > 입점업체 엑셀다운 임시파일 체크-->
-	<select id="getEntryUploadExcelCheck" parameterType="Order" resultType="int">
-		SELECT COUNT(1)
-		FROM   TB_ENTRY_UPLOAD_EXCEL X
-		WHERE  1=1
-		AND    X.ORD_NO = #{ordNo}
-		AND    X.ORD_DTL_NO = #{ordDtlNo}
-	</select>
-	
-	<!-- 주문/배송 > 입점업체 엑셀다운용 임시테이블 생성-->
-	<insert id="createEntryExcelDownTmp" parameterType="Order">
-		INSERT INTO TB_ENTRY_UPLOAD_EXCEL (
-			ORD_NO
-			, ORD_DTL_NO
-			, REG_NO
-			, REG_DT
-		) VALUES (
-			#{ordNo}
-			, #{ordDtlNo}
-			, #{regNo}
-			, CURRENT_TIMESTAMP()
-		)
-	</insert>
-	
-	<!-- 주문/배송 > 입점업체미발주목록 > 엑셀다운로드 -->
-	<select id="getSellerUnorderList" parameterType="Order" resultType="Order">
-		/* Order.getSellerUnorderList */
-		SELECT (SELECT SC.SUPPLY_COMP_NM
-		        FROM   TB_SUPPLY_COMPANY SC
-		        WHERE  SC.SUPPLY_COMP_CD = OD.SUPPLY_COMP_CD) AS SUPPLY_COMP_NM
-		     , (SELECT B.BRAND_KNM 
-		        FROM   TB_BRAND B
-		        WHERE  B.BRAND_CD = G1.BRAND_CD) AS BRAND_KNM
-	         , G1.GOODS_CD 
-		     , G1.GOODS_NM
-			 , G1.GOODS_TYPE
-		     , FN_GET_CODE_NM('G056', G1.GOODS_TYPE) AS GOODS_TYPE_NM
-		     , OD.ORD_NO
-		     , OD.ORD_DTL_NO
-		     , FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT) AS ORD_DTL_STAT_NM
-		     , O.ORD_NM 
-		     , DATE_FORMAT(O.ORD_DT,'%Y%m%d%H%i%S') AS ORD_DT
-		     , FN_GET_CODE_NM('G014', P.PAY_MEANS) AS PAY_MEANS_NM
-		     , O.ORD_PHNNO 
-		     , DA.RECIP_NM 
-		     , DA.RECIP_PHNNO 
-		     , DA.RECIP_ZIPCODE 
-		     , DA.RECIP_BASE_ADDR 
-		     , DA.RECIP_DTL_ADDR 
-		     , G2.SUPPLY_GOODS_CD
-		     , G2.GOODS_CD AS ITEM_CD
-		     , G2.GOODS_NM AS ITEM_NM 
-		     , ODI.OPT_CD1
-		     , ODI.OPT_CD2
-		     , ODI.ORD_AMT
-		     , ODI.CPN1_DC_AMT + ODI.TMTB1_DC_AMT + ODI.TMTB2_DC_AMT +  ODI.GOODS_CPN_DC_AMT + ODI.CART_CPN_DC_AMT + ODI.PNT_DC_AMT + ODI.PRE_PNT_DC_AMT AS TOT_DC_AMT
-		     , ODI.REAL_ORD_AMT 
-		     , OD.INVOICE_NO 
-		FROM   TB_ORDER O
-		INNER  JOIN TB_ORDER_DETAIL OD
-		ON     O.ORD_NO = OD.ORD_NO
-		INNER  JOIN TB_GOODS G1
-		ON     OD.GOODS_CD = G1.GOODS_CD
-		INNER  JOIN TB_ORDER_DETAIL_ITEM ODI
-		ON     OD.ORD_NO = ODI.ORD_NO 
-		AND    OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-		INNER  JOIN TB_GOODS G2
-		ON     ODI.ITEM_CD = G2.GOODS_CD
-		LEFT   OUTER JOIN TB_GOODS_IMG GI
-		ON     ODI.ITEM_CD = GI.GOODS_CD
-		AND    ODI.OPT_CD1 = GI.COLOR_CD 
-		INNER  JOIN TB_PAYMENT P
-		ON     O.ORD_NO = P.ORD_NO 
-		AND    P.PAY_GB = 'O' 
-		INNER  JOIN TB_DELIVERY_ADDR DA
-		ON     OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ
-		INNER  JOIN TB_DELIVERY_FEE DF		
-		ON     DF.SUPPLY_COMP_CD = OD.SUPPLY_COMP_CD
-		AND    DF.DELV_FEE_CD = OD.DELV_FEE_CD 
-		AND    DF.ORD_NO = OD.ORD_NO
-		INNER  JOIN TB_ENTRY_UPLOAD_EXCEL X
-		ON     OD.ORD_NO = X.ORD_NO
-		AND    OD.ORD_DTL_NO = X.ORD_DTL_NO
-		WHERE  1=1
-		<if test='supplyCompCd != null and supplyCompCd != ""'>
-		AND    OD.SUPPLY_COMP_CD = #{supplyCompCd}
-		</if>
-	</select>
-	
-	<!-- 주문/배송 > 입점업체미발주목록 > 주문상세 목록 -->
-	<select id="getOrderDetailInfo" parameterType="Order" resultType="Order">
-		/* TsaOrder.getOrderDetailInfo */
-		SELECT O.ORD_NO
-		     , O.MALL_GB
-		     , DATE_FORMAT(O.ORD_DT,'%Y%m%d%H%i%S') AS ORD_DT
-		     , DATE_FORMAT(O.PAY_DT,'%Y%m%d%H%i%S') AS PAY_DT
-		     , O.CUST_NO
-		     , O.ORD_NM
-		     , O.ORD_PHNNO
-		     , O.ORD_TELNO
-		     , O.ORD_EMAIL
-		     , OD.ORD_DTL_STAT
-		     , O.SITE_CD
-		     , O.FRONT_GB
-		     , OD.ORD_DTL_NO
-		     , OD.ORD_EXCH_GB
-		     , OD.ORG_ORD_DTL_NO
-		     , OD.VENDOR_ID
-		     , OD.SUPPLY_COMP_CD
-		     , OD.GOODS_CD
-		     , OD.FORMAL_GB
-		     , OD.GOODS_TYPE
-		     , OD.LIST_PRICE
-		     , OD.CURR_PRICE
-		     , OD.DC_RATE
-		     , OD.ORD_QTY
-		     , OD.ORD_AMT
-		     , OD.CNCL_RTN_QTY
-		     , OD.CNCL_RTN_AMT
-		     , OD.GOODS_CPN_DC_AMT
-		     , OD.CART_CPN_DC_AMT
-		     , OD.PNT_DC_AMT
-		     , OD.PRE_PNT_DC_AMT
-		     , OD.SAVE_PNT_AMT
-		     , OD.REAL_ORD_AMT
-		     , OD.AGENT_ORDER_ID
-		     , OD.EXTMALL_ORDER_ID
-		     , OD.ORD_DTL_STAT
-		     , FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT)    AS ORD_DTL_STAT_NM
-		     , OD.SOLDOUT_YN
-		     , OD.SOLDOUT_MEMO
-		     , OD.SOLDOUT_REG_NO
-		     , OD.SOLDOUT_REG_DT
-		     , OD.SHIP_COMP_CD
-		     , OD.INVOICE_NO
-		     , OD.DELV_STDT
-		     , OD.DELV_EDDT
-		     , OD.SELL_STORE_CD
-		     , OD.SELL_FEE_RATE
-		     , OD.DELV_ADDR_SQ
-		     , OD.REG_NO
-		     , OD.REG_DT
-		     , OD.UPD_NO
-		     , OD.UPD_DT
-		     , (SELECT SELF_GOODS_YN FROM TB_GOODS WHERE GOODS_CD = OD.GOODS_CD) AS SELF_YN
-		     , ODI.ITEM_CD
-		     , ODI.OPT_CD1
-		     , ODI.OPT_CD2 
-		FROM   TB_ORDER O
-		INNER  JOIN TB_ORDER_DETAIL OD
-		ON     O.ORD_NO = OD.ORD_NO
-		INNER  JOIN TB_ORDER_DETAIL_ITEM ODI
-		ON     OD.ORD_NO = ODI.ORD_NO
-		AND    OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-		WHERE  O.ORD_NO = OD.ORD_NO
-		AND    OD.ORD_DTL_NO = #{ordDtlNo}
-		AND    ODI.ITEM_CD = #{itemCd}
-		AND    ODI.OPT_CD2 = #{optCd2}
-		AND    OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-	</select>
-	
-	<!-- 주문/배송 > 주문상세정보 변경 - 송장번호 적용(입점)  -->
-	<update id="updateOrderDetailInvoice" parameterType="Order">
-		/* TsaOrder.updateOrderDetailInvoice */
-		UPDATE TB_ORDER_DETAIL
-		SET    ORD_DTL_STAT = 'G013_55'
-		     , INVOICE_NO = REPLACE(#{invoiceNo},'-','')
-		     , INVOICE_SEND_YN = 'Y'
-		     , SHIP_COMP_CD = #{shipCompCd}
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = CURRENT_TIMESTAMP()
-		WHERE  ORD_DTL_NO = #{ordDtlNo}
-		AND    ORD_DTL_STAT IN ('G013_30', 'G013_55')
-		AND    SUPPLY_COMP_CD = #{supplyCompCd}
-	</update>
-	
-	<!-- 주문상세 > 주문메오 > 주문메모정보조회 -->
-	<select id="getOrderMemoInfo" parameterType="Order" resultType="Order">
-		/* order.getOrderMemoInfo */
-		SELECT ORDER_MEMO_SQ
-		     , OM.ORD_NO
-		     , OM.MEMO
-		     , OM.REG_NO
-		     , OM.REG_DT
-		     , OM.UPD_NO
-		     , OM.UPD_DT
-		     , (SELECT USER_NM
-		        FROM   TB_USER X
-		        WHERE  X.USER_NO = OM.UPD_NO) AS USER_NM
-		FROM  TB_ORDER_MEMO OM
-		WHERE 1=1
-		AND   OM.ORD_NO = #{ordNo}
-		AND   OM.DEL_YN = 'N'
-	</select>
-	
-	<!-- 주문상세 > 주문요청 관리자 메모 > 메모등록 -->
-	<insert id="createOrderMemo" parameterType="Order">
-		/* order.createOrderMemo */
-		INSERT INTO TB_ORDER_MEMO (
-			ORD_NO
-			,MEMO
-			,ORG_FILE_NM
-			,SYS_FILE_NM
-			,DEL_YN
-			,REG_NO
-			,REG_DT
-			,UPD_NO
-			,UPD_DT
-		) VALUES (
-			#{ordNo}
-			,#{memo}
-			,#{orgFileNm}
-			,#{sysFileNm}
-			,'N'
-			,#{regNo}
-			,CURRENT_TIMESTAMP()
-			,#{updNo}
-			,CURRENT_TIMESTAMP()
-		)
-	</insert>
-	
-	<!-- 주문상세 > 주문요청 관리자 메모 > 메모수정 -->
-	<update id="updateOrderMemo" parameterType="Order">
-		/* order.updateOrderMemo */
-		UPDATE TB_ORDER_MEMO
-		SET    MEMO = #{memo}
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = CURRENT_TIMESTAMP() 
-		WHERE  1=1
-		AND    ORD_NO = #{ordNo}
-		AND    ORDER_MEMO_SQ = #{seq}
-	</update>
-	
-	<!-- 주문상세 > 주문요청 관리자 메모 > 메모수정 -->
-	<update id="deleteOrderMemo" parameterType="Order">
-		/* order.deleteOrderMemo */
-		UPDATE TB_ORDER_MEMO
-		SET    DEL_YN = 'Y'
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = CURRENT_TIMESTAMP() 
-		WHERE  1=1
-		AND    ORD_NO = #{ordNo}
-		AND    ORDER_MEMO_SQ = #{seq}
-	</update>
-	
-	<!-- 주문상세 > 주문상품 상세 변경 이력 -->
-	<select id="getOrderDetailHistoryList" parameterType="Order" resultType="Order">
-		/* order.getOrderDetailHistoryList */
-		SELECT DATE_FORMAT(ODH.UPD_DT,'%Y%m%d%H%i%S') AS UPD_DT
-		     , (SELECT Z.USER_ID
-		        FROM   TB_USER Z
-		        WHERE  Z.USER_NO = ODH.UPD_NO) 				AS UPD_ID
-		     , FN_GET_CODE_NM('G013', ODH.ORD_DTL_STAT)    	AS ORD_DTL_STAT_NM 
-		     , ODH.ORD_QTY
-		     , ODH.CNCL_RTN_QTY 
-		     , ODH.DELV_LOC_CD 
-		     , ODH.INVOICE_NO 
-		     , ODH.SHIP_COMP_CD
-		     , (SELECT SHIP_COMP_NM
-		        FROM   TB_SHIP_COMPANY Z
-		        WHERE  Z.SHIP_COMP_CD = ODH.SHIP_COMP_CD) 	AS SHIP_COMP_NM
-		FROM   TB_ORDER_DETAIL_HST ODH 
-		WHERE  1=1
-		AND    ODH.ORD_DTL_NO = #{ordDtlNo}
-		ORDER  BY ODH.REG_DT DESC
-	</select>
-	
-	<!-- 주문상세 > 쿠폰사용내역 팝업 화면 -->
-	<select id="getOrderDiscountCouponList" parameterType="Order" resultType="Order">
-		/* order.getOrderDiscountCouponList */
-		WITH COUPON_DATA AS (
-			SELECT OD.ORD_NO
-			     , OD.ORD_DTL_NO
-			     , OD.GOODS_CD
-			     , OD.ORD_AMT
-			     , OD.SUPPLY_COMP_CD
-			     , OD.DELV_FEE_CD
-			     , DF.DELV_FEE 
-			     , OD.GOODS_CPN_SQ 
-			     , OD.GOODS_CPN_DC_AMT 
-			     , OD.CART_CPN_SQ
-			     , OD.CART_CPN_DC_AMT
-			     , DF.DELV_CPN_SQ
-			     , DF.DELV_CPN_DC_AMT
-			FROM   TB_ORDER_DETAIL OD
-			INNER  JOIN TB_DELIVERY_FEE DF
-			ON     OD.SUPPLY_COMP_CD = DF.SUPPLY_COMP_CD
-			AND    OD.DELV_FEE_CD = DF.DELV_FEE_CD
-			AND    OD.ORD_NO = DF.ORD_NO
-			WHERE  1=1
-			AND    OD.ORD_NO = #{ordNo}
-		) 
-		SELECT X.*
-		     , CP.CPN_ID
-		     , CP.CPN_NM 
-		     , CP.DC_WAY 
-		     , CP.DC_PVAL 
-		     , CP.DC_MVAL 
-		     , CP.DC_AVAL
-		FROM   (
-			SELECT Z.*
-			FROM   (
-				SELECT 1                       AS DISP_ORD
-				     , CD.GOODS_CPN_SQ         AS CPN_SQ
-				     , CD.GOODS_CPN_DC_AMT     AS CPN_DC_AMT
-				     , '상품쿠폰'                 AS CPN_TYPE
-				     , CD.GOODS_CD             AS TARGET_CD1
-				     , CD.ORD_DTL_NO           AS TARGET_CD2
-				     , CD.ORD_NO
-				     , CD.ORD_AMT
-				FROM   COUPON_DATA CD
-				UNION  ALL
-				SELECT 2                       AS DISP_ORD 
-				     , CD.CART_CPN_SQ          AS CPN_SQ
-				     , CD.CART_CPN_DC_AMT      AS CPN_DC_AMT
-				     , '장바구니쿠폰'              AS CPN_TYPE
-				     , CD.GOODS_CD             AS TARGET_CD1
-				     , CD.ORD_DTL_NO           AS TARGET_CD2
-				     , CD.ORD_NO
-				     , CD.ORD_AMT
-				FROM   COUPON_DATA CD
-				UNION  ALL
-				SELECT 3                       AS DISP_ORD 
-				     , CD.DELV_CPN_SQ 	       AS CPN_SQ
-				     , CD.DELV_CPN_DC_AMT      AS CPN_DC_AMT
-				     , '배송비쿠폰'               AS CPN_TYPE
-				     , CD.SUPPLY_COMP_CD       AS TARGET_CD1
-				     , CD.DELV_FEE_CD          AS TARGET_CD2
-				     , CD.ORD_NO
-				     , CD.DELV_FEE             AS ORD_AMT
-				FROM   COUPON_DATA CD
-				GROUP  BY CD.DELV_CPN_SQ
-				     , CD.DELV_CPN_DC_AMT
-				     , CD.SUPPLY_COMP_CD
-				     , CD.DELV_FEE_CD
-				     , CD.ORD_NO
-			) Z
-			WHERE  1=1
-			AND    Z.CPN_SQ IS NOT NULL
-		) X
-		INNER  JOIN TB_CUST_COUPON CC
-		ON     X.CPN_SQ = CC.CUST_CPN_SQ
-		LEFT   OUTER JOIN TB_COUPON CP
-		ON     CC.CPN_ID = CP.CPN_ID
-		ORDER  BY DISP_ORD
-	</select>
-	
-	<!-- 주문상세 > 포인트사용내역 -->
-	<select id="getOrderDiscountPointList" parameterType="Order" resultType="Order">
-		/* order.getOrderDiscountPointList */
-		SELECT OD.ORD_NO
-		     , OD.ORD_DTL_NO
-		     , OD.GOODS_CD
-		     , G.PNT_PRATE 
-		     , G.PNT_MRATE 
-		     , OD.CURR_PRICE
-		     , OD.REAL_ORD_AMT 
-		     , CPH.PNT_AMT
-		     , CPH.OCCUR_GB 
-		     , CPH.OCCUR_DTL_DESC 
-		     , DATE_FORMAT(CPH.REG_DT,'%Y%m%d%H%i%S') AS REG_DT
-		FROM   TB_ORDER_DETAIL OD
-		INNER  JOIN TB_CUST_POINT_HST CPH
-		ON     OD.ORD_DTL_NO = CPH.ORD_DTL_NO
-		AND    OD.ORD_NO = CPH.ORD_NO
-		INNER  JOIN TB_GOODS G
-		ON     OD.GOODS_CD = G.GOODS_CD
-		WHERE  1=1
-		AND    OD.ORD_NO = #{ordNo}
-		ORDER  BY CPH.REG_DT DESC
-	</select>
-	
-	<!-- 주문상세 > 상품권사용내역 -->
-	<select id="getOrderGiftcardHstList" parameterType="Order" resultType="Order">
-		/* order.getOrderGiftcardHstList */
-		SELECT CG.CUST_GFCD_SQ 
-		     , CG.CHG_GFCD_AMT 
-		     , CG.GFCD_NM 
-		     , CG.GFCD_NO 
-		     , CG.CHG_GFCD_AMT 
-		     , CG.US_GFCD_AMT 
-		     , CG.RM_GFCD_AMT 
-		     , OD.ORD_NO
-		     , OD.ORD_DTL_NO
-		     , OD.GOODS_CD 
-		     , CGH.GFCD_AMT
-		     , CGH.OCCUR_GB 
-		     , CGH.OCCUR_DTL_DESC 
-		     , DATE_FORMAT(CGH.REG_DT,'%Y%m%d%H%i%S') AS REG_DT
-		     , CG.CUST_GFCD_SQ 
-		FROM   TB_ORDER_DETAIL OD
-		INNER  JOIN TB_CUST_GIFTCARD_HST CGH
-		ON     OD.ORD_DTL_NO = CGH.ORD_DTL_NO
-		AND    OD.ORD_NO = CGH.ORD_NO
-		INNER  JOIN TB_CUST_GIFTCARD CG
-		ON     CGH.CUST_GFCD_SQ  = CG.CUST_GFCD_SQ 
-		INNER  JOIN TB_GOODS G
-		ON     OD.GOODS_CD = G.GOODS_CD
-		WHERE  1=1
-		AND    OD.ORD_NO = #{ordNo}
-		ORDER  BY CUST_GFCD_SQ
-		     , OD.ORD_NO
-		     , OD.ORD_DTL_NO
-	</select>
-
-	<!-- 주문상세 > 다다익선적용내역 -->
-	<select id="getOrderTmtbHstList" parameterType="Order" resultType="Order">
-		/* order.getOrderTmtbHstList */
-		WITH TMTB_DATA AS (
-			SELECT TM1.TMTB_SQ			AS  TMTB1_SQ
-			     , TM1.TMTB_NM			AS  TMTB1_NM
-			     , OD.TMTB1_DC_AMT
-			     , OD.ORD_NO
-			     , OD.ORD_DTL_NO
-			     , OD.REG_NO
-			     , OD.REG_DT
-			     , OD.GOODS_CD
-			     , TM2.TMTB_SQ			AS  TMTB2_SQ
-			     , TM2.TMTB_NM			AS  TMTB2_NM
-			     , OD.TMTB2_DC_AMT
-			FROM   TB_ORDER_DETAIL OD
-			INNER  JOIN TB_TMTB TM1
-			ON     OD.TMTB1_SQ = TM1.TMTB_SQ 
-			INNER  JOIN TB_TMTB TM2
-			ON     OD.TMTB2_SQ = TM2.TMTB_SQ 
-			WHERE  1=1
-			AND    OD.ORD_NO = 9
-		)
-		SELECT Z.*
-		FROM (
-			SELECT 1                    AS DISP_ORD
-			     , TD.TMTB1_SQ        	AS TMTB_SQ
-			     , TD.TMTB1_NM			AS TMTB_NM
-			     , TD.TMTB1_DC_AMT      AS TMTB_DC_AMT
-			     , TD.ORD_NO
-			     , TD.ORD_DTL_NO
-			     , TD.GOODS_CD
-			     , TD.REG_NO
-			     , DATE_FORMAT(TD.REG_DT,'%Y%m%d%H%i%S') AS REG_DT
-			FROM   TMTB_DATA TD
-			UNION  ALL
-			SELECT 2                    AS DISP_ORD
-			     , TD.TMTB2_SQ        	AS TMTB_SQ
-			     , TD.TMTB2_NM			AS TMTB_NM
-			     , TD.TMTB2_DC_AMT      AS TMTB_DC_AMT
-			     , TD.ORD_NO
-			     , TD.ORD_DTL_NO
-			     , TD.GOODS_CD
-			     , TD.REG_NO
-			     , DATE_FORMAT(TD.REG_DT,'%Y%m%d%H%i%S') AS REG_DT
-			FROM   TMTB_DATA TD
-		) Z
-		WHERE  1=1
-		AND    Z.TMTB_SQ IS NOT NULL
-		ORDER  BY Z.DISP_ORD
-	</select>
-	
-	<!-- 주문상세 > 주문상세상태변경 -->
-	<update id="changedOrdDtlStat" parameterType="Order">
-		/* order.changedOrdDtlStat */
-		UPDATE TB_ORDER_DETAIL 
-		SET    ORD_DTL_STAT = #{ordDtlStat}
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = CURRENT_TIMESTAMP() 
-		WHERE  1=1
-		AND    ORD_NO = #{ordNo}
-		AND    ORD_DTL_NO = #{ordDtlNo}
-	</update>
-	
-	<!-- 배송 > 배송지 정보 수정 -->
-	<update id="updateOrderAddr" parameterType="Order">
-		/* order.updateOrderAddr : 주문 변경 업데이트(주문자 주소) */
-		UPDATE TB_DELIVERY_ADDR
-		SET    RECIP_NM        	= #{recipNm}
-		     , RECIP_PHNNO     	= #{recipPhnno}
-		     , RECIP_TELNO     	= #{recipTelno}
-		     , RECIP_ZIPCODE    = #{recipZipcode}
-		     , RECIP_BASE_ADDR 	= #{recipBaseAddr}
-		     , RECIP_DTL_ADDR  	= #{recipDtlAddr}
-		     , DELV_MEMO       	= #{delvMemo}
-		     , UPD_NO          	= #{updNo}
-		     , UPD_DT          	= NOW()
-		WHERE  DELV_ADDR_SQ 	= #{delvAddrSq}
-	</update>
-
-	<!-- 반품/교환 > 회수지 정보 수정 -->
-	<update id="updateOrderChange" parameterType="Order">
-		/* order.updateOrderChange : 반품/교환 > 회수지 정보 수정 */
-		UPDATE TB_ORDER_CHANGE
-		SET    CHGER_ZIPCODE    = #{chgerZipCode}
-		     , CHGER_BASE_ADDR 	= #{chgerBaseAddr}
-		     , CHGER_DTL_ADDR  	= #{chgerDtlAddr}
-		     , UPD_NO          	= #{updNo}
-		     , UPD_DT          	= NOW()
-		WHERE  ORD_CHG_SQ 		= #{ordChgSq}
-	</update>
-
-
-
-
-
-
-
-
-
-</mapper>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

+ 0 - 812
src/main/java/com/style24/persistence/mybatis/shop/TsaOrderChange.xml

@@ -1,812 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.style24.admin.biz.dao.TsaOrderChangeDao">
-
-	<!-- 주문상세 > 주문취소신청 > 주문취소,반품,교환 대상목록 -->
-	<select id="getCancelRequestTargetList" parameterType="Order" resultType="Order">
-		/* order.getCancelRequestTargetList */
-		SELECT OD.ORD_NO
-		     , OD.ORD_DTL_NO
-		     , OD.ORD_DTL_STAT
-		     , FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT) AS ORD_DTL_STAT_NM
-		     , CASE WHEN OD.ORD_DTL_STAT IN ('G013_20', 'G013_30', 'G013_40')
-		            THEN 'Y'
-		            ELSE 'N'
-		             END ALL_CAN_YN
-		     , G1.GOODS_CD
-		     , G1.GOODS_NM
-		     , G1.GOODS_TYPE
-		     , FN_GET_CODE_NM('G056', G1.GOODS_TYPE) AS GOODS_TYPE_NM
-		     , ODI.ORD_DTL_ITEM_SQ
-		     , G2.GOODS_CD AS ITEM_CD
-		     , G2.GOODS_NM AS ITEM_NM
-		     , ODI.OPT_CD
-		     , ODI.OPT_CD1
-		     , ODI.OPT_CD2
-		     , ODI.ITEM_QTY
-		     , OD.ORD_QTY
-             , OD.CNCL_RTN_QTY 
-		     , CASE WHEN OCD.ORD_REQ_CHG_QTY IS NULL
-		            THEN 0
-		            ELSE OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY
-		            END  ORD_REQ_CHG_QTY
-		     , ODI.ITEM_PRICE
-		     , ODI.OPT_ADD_PRICE
-		     , ODI.ORD_AMT
-		     , ODI.CNCL_RTN_AMT
-		     , ODI.CPN1_DC_AMT 
-		     , ODI.TMTB1_DC_AMT 
-		     , ODI.TMTB2_DC_AMT 
-		     , ODI.GOODS_CPN_DC_AMT 
-		     , ODI.CART_CPN_DC_AMT
-		     , ODI.PNT_DC_AMT 
-		     , ODI.PRE_PNT_DC_AMT 
-		     , ODI.GFCD_USE_AMT
-		     , ODI.REAL_ORD_AMT
-		     , DF.DELV_FEE
-		     , DF.SUPPLY_COMP_CD
-		     , DF.DELV_FEE_CD 
-		     , DFP.MIN_ORD_AMT 
-		     , DFP.DELV_FEE AS ORG_DELV_FEE
-		     , DFP.RTN_DELV_FEE
-		     , DFP.DELV_FEE + DFP.RTN_DELV_FEE AS EXC_DELV_FEE
-		     , 0			AS ORD_CAN_CHG_QTY
-		     , VS.OPT_CD2S
-		     , VS.CURR_STOCK_QTYS
-		     , DL.RTN_LOC_NM
-		     , DL.RTN_LOC_ZIPCODE
-		     , DL.RTN_LOC_BASE_ADDR
-		     , DL.RTN_LOC_DTL_ADDR
-		     , DL.RTN_LOC_TELNO
-		     , DL.SELF_YN
-		FROM   TB_ORDER_DETAIL OD
-		INNER  JOIN TB_GOODS G1
-		ON     OD.GOODS_CD = G1.GOODS_CD
-		INNER  JOIN TB_ORDER_DETAIL_ITEM ODI
-		ON     OD.ORD_NO = ODI.ORD_NO
-		AND    OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-		INNER  JOIN TB_GOODS G2
-		ON     ODI.ITEM_CD = G2.GOODS_CD
-		LEFT   OUTER JOIN (
-			SELECT OD.ORD_DTL_NO
-			     , SUM(OCD.CHG_QTY) AS ORD_REQ_CHG_QTY
-			FROM   TB_ORDER_CHANGE_DETAIL OCD
-			INNER  JOIN TB_ORDER_DETAIL OD
-			ON     OCD.ORD_DTL_NO = OD.ORD_DTL_NO
-			WHERE  1=1
-			AND    OD.ORD_NO = #{ordNo}
-			AND    OCD.CHG_STAT IN (
-				'G685_20', 'G685_30', 'G685_40'
-			)
-			GROUP  BY OCD.ORD_DTL_NO
-		) OCD
-		ON     OD.ORD_DTL_NO = OCD.ORD_DTL_NO
-		INNER  JOIN (
-			SELECT X.SUPPLY_COMP_CD
-			     , X.DELV_FEE_CD
-			     , SUM(X.DELV_FEE) AS DELV_FEE
-			FROM   TB_DELIVERY_FEE X
-			WHERE  1=1
-			AND    X.ORD_NO = #{ordNo}
-			AND    X.DELV_FEE_GB = 'G018_10'
-			GROUP  BY X.SUPPLY_COMP_CD
-			        , X.DELV_FEE_CD
-		) DF
-		ON     OD.SUPPLY_COMP_CD = DF.SUPPLY_COMP_CD 
-		AND    OD.DELV_FEE_CD = DF.DELV_FEE_CD 
-		INNER  JOIN TB_DELV_FEE_POLICY DFP
-		ON     DF.SUPPLY_COMP_CD  = DFP.SUPPLY_COMP_CD 
-		AND    DF.DELV_FEE_CD = DFP.DELV_FEE_CD 
-		AND    DFP.USE_YN = 'Y'
-		INNER  JOIN (
-			SELECT TDL.DELV_LOC_CD
-			     , TDL.RTN_LOC_NM
-			     , TDL.RTN_LOC_TELNO
-			     , TDL.RTN_LOC_ZIPCODE
-			     , TDL.RTN_LOC_BASE_ADDR
-			     , TDL.RTN_LOC_DTL_ADDR
-			     , CASE WHEN TSC.DISTRIBUTION_GB IN ('G065_10', 'G065_11', 'G065_12')
-						THEN 'Y'
-						ELSE 'N'
-				   END AS SELF_YN
-			  FROM TB_DELIVERY_LOC TDL
-			 INNER JOIN TB_SUPPLY_COMPANY TSC
-			    ON TDL.SUPPLY_COMP_CD = TSC.SUPPLY_COMP_CD
-		) DL
-		ON     OD.DELV_LOC_CD = DL.DELV_LOC_CD
-		INNER  JOIN (
-			SELECT GOODS_CD
-			     , OPT_CD1
-			     , GROUP_CONCAT(OPT_CD2 ORDER BY DISP_ORD DESC, OPT_CD2 SEPARATOR ',')        AS OPT_CD2S
-			     , GROUP_CONCAT(CURR_STOCK_QTY ORDER BY DISP_ORD DESC, OPT_CD2 SEPARATOR ',') AS CURR_STOCK_QTYS
-			  FROM VW_STOCK
-			 WHERE GOODS_CD IN (SELECT ITEM_CD FROM TB_ORDER_DETAIL_ITEM WHERE ORD_NO = #{ordNo})
-			   AND (CURR_STOCK_QTY - BASE_STOCK_QTY) > 0
-			 GROUP BY GOODS_CD, OPT_CD1
-		) VS
-		ON     ODI.ITEM_CD = VS.GOODS_CD
-		AND    ODI.OPT_CD1 = VS.OPT_CD1
-		WHERE  1=1
-		<if test="ordDtlStatArr != null and ordDtlStatArr != ''">
-        AND    OD.ORD_DTL_STAT IN
-			<foreach collection="ordDtlStatArr" item="item" index="index"  open="(" close=")" separator=",">
-        		#{item}
-            </foreach>
-        </if> 
-		AND    OD.ORD_NO = #{ordNo}
-		GROUP  BY OD.ORD_NO
-		     , OD.ORD_DTL_NO
-		     , ODI.ORD_DTL_ITEM_SQ
-	    ORDER  BY OD.ORD_NO
-	         , OD.ORD_DTL_NO
-	</select>
-		
-	<!-- 주문상세 > 주문취소신청 > 주문변경정보 등록-->
-	<insert id="createOrderChange" parameterType="OrderChange" keyProperty="ordChgSq">
-		/* Order.createOrderChange */
-		INSERT INTO TB_ORDER_CHANGE (
-			CHG_GB
-			, CHG_REASON
-			, CHG_MEMO
-			, CHGER_NM
-			, CHGER_PHNNO
-			, CHGER_TELNO
-			, CHGER_EMAIL
-			, CHGER_ZIPCODE
-			, CHGER_BASE_ADDR
-			, CHGER_DTL_ADDR
-			, CHGER_RTN_MEMO
-			, ADD_PAY_COST
-			, ADD_PAY_AMT
-			, REG_NO
-			, REG_DT
-			, UPD_NO
-			, UPD_DT
-		) values (
-			#{chgGb}
-			 , #{chgReason}
-			 , #{chgMemo}
-			 , #{chgerNm}
-			 , #{chgerPhnno}
-			 , #{chgerTelno}
-			 , #{chgerEmail}
-			 , #{chgerZipNo}
-			 , #{chgerBaseAddr}
-			 , #{chgerDtlAddr}
-			 , #{chgerRtnMemo}
-			 , #{addPayCost}
-			 , #{addPayAmt}
-			 , #{regNo}
-			 , NOW()
-			 , #{updNo}
-			 , NOW()
-		)
-	</insert>
-
-	<!-- 주문상세 > 주문취소신청 > 주문상세단품정보 수정 -->
-	<update id="updateOrderDetailItem" parameterType="Order">
-		/* Order.updateOrderDetailItem */
-		UPDATE TB_ORDER_DETAIL_ITEM ODI
-		INNER  JOIN TB_ORDER_DETAIL OD
-		ON     OD.ORD_DTL_NO = OD.ORD_DTL_NO
-		SET    ODI.ORD_DTL_STAT		= CASE WHEN OD.ORD_QTY > (OD.CNCL_RTN_QTY + #{ordCanChgQty})
-		                                   THEN ODI.ORD_DTL_STAT
-		                                   ELSE #{ordDtlStat}
-		                                    END
-		     , ODI.CNCL_RTN_AMT 	= ODI.CNCL_RTN_AMT 			+ #{cnclRtnAmt}
-		     , ODI.CPN1_DC_AMT 		= ODI.CPN1_DC_AMT 			- #{cpn1DcAmt}
-		     , ODI.TMTB1_DC_AMT 	= ODI.TMTB1_DC_AMT 			- #{tmtb1DcAmt}
-		     , ODI.TMTB2_DC_AMT 	= ODI.TMTB1_DC_AMT 			- #{tmtb2DcAmt}
-		     , ODI.GOODS_CPN_DC_AMT = ODI.GOODS_CPN_DC_AMT 		- #{goodsCpnDcAmt}
-		     , ODI.CART_CPN_DC_AMT 	= ODI.CART_CPN_DC_AMT 		- #{cartCpnDcAmt}
-		     , ODI.PNT_DC_AMT 		= ODI.PNT_DC_AMT 			- #{pntDcAmt}
-		     , ODI.PRE_PNT_DC_AMT 	= ODI.PRE_PNT_DC_AMT 		- #{prePntDcAmt}
-		     , ODI.SAVE_PNT_AMT 	= ODI.SAVE_PNT_AMT 			- #{savePntAmt}
-		     , ODI.REAL_ORD_AMT 	= ODI.REAL_ORD_AMT 			- #{realOrdAmt}
-		     , ODI.GFCD_USE_AMT 	= ODI.GFCD_USE_AMT 			- #{gfcdUseAmt}
-		     , ODI.UPD_NO 			= #{updNo}
-		     , ODI.UPD_DT 			= NOW()
-		WHERE  1=1
-		AND    ODI.ORD_NO 			= #{ordNo} 
-		AND    ODI.ORD_DTL_NO 		= #{ordDtlNo} 
-		AND    ODI.ORD_DTL_ITEM_SQ 	= #{ordDtlItemSq}
-	</update>
-	
-	<!-- 주문상세 > 주문취소신청 > 주문상세단품정보 이력 등록 -->
-	<insert id="createOrderDetailItemHst" parameterType="Order">
-		/* Order.createOrderDetailItemHst */
-		INSERT INTO TB_ORDER_DETAIL_ITEM_HST (
-			ORD_DTL_ITEM_SQ
-			, ORD_DTL_NO
-			, ORD_NO
-			, ORD_DTL_STAT
-			, ITEM_CD
-			, OPT_CD
-			, OPT_CD1
-			, OPT_CD2
-			, SKU_MODEL_NO
-			, PRODUCT_NO
-			, PRODUCT_CODE
-			, ITEM_QTY
-			, ITEM_PRICE
-			, OPT_ADD_PRICE
-			, DISP_ORD
-			, ORD_AMT
-			, CNCL_RTN_AMT
-			, CPN1_DC_AMT
-			, TMTB1_DC_AMT
-			, TMTB2_DC_AMT
-			, GOODS_CPN_DC_AMT
-			, CART_CPN_DC_AMT
-			, PNT_DC_AMT
-			, PRE_PNT_DC_AMT
-			, SAVE_PNT_AMT
-			, REAL_ORD_AMT
-			, GFCD_USE_AMT
-			, REG_NO
-			, REG_DT
-			, UPD_NO
-			, UPD_DT
-		) 
-		SELECT ORD_DTL_ITEM_SQ
-			 , ORD_DTL_NO
-			 , ORD_NO
-			 , #{ordDtlStat}
-			 , ITEM_CD
-			 , OPT_CD
-			 , OPT_CD1
-			 , OPT_CD2
-			 , SKU_MODEL_NO
-			 , PRODUCT_NO
-			 , PRODUCT_CODE
-			 , ITEM_QTY
-			 , ITEM_PRICE
-			 , OPT_ADD_PRICE
-			 , DISP_ORD
-			 , ORD_AMT
-			 , #{cnclRtnAmt}
-			 , #{cpn1DcAmt}
-			 , #{tmtb1DcAmt}
-			 , #{tmtb2DcAmt}
-			 , #{goodsCpnDcAmt}
-			 , #{cartCpnDcAmt}
-			 , #{pntDcAmt}
-			 , #{prePntDcAmt}
-			 , #{savePntAmt}
-			 , #{realOrdAmt}
-			 , #{gfcdUseAmt}
-			 , REG_NO
-			 , REG_DT
-			 , UPD_NO
-			 , UPD_DT
-		FROM   TB_ORDER_DETAIL_ITEM
-		WHERE  1=1
-		AND    ORD_NO = #{ordNo} 
-		AND    ORD_DTL_NO = #{ordDtlNo} 
-		AND    ORD_DTL_ITEM_SQ = #{ordDtlItemSq}
-	</insert>
-	
-	<!-- 주문상세 > 주문취소신청 > 주문상세단품정보 수정 (재고수정) -->
-	<update id="updateOptionQty" parameterType="OrderChange">
-		/* Order.updateOptionQty */
-		UPDATE TB_OPTION OP
-		INNER  JOIN TB_ORDER_DETAIL_ITEM ODI
-		ON     OP.GOODS_CD = ODI.ITEM_CD
-		AND    OP.OPT_CD1 = ODI.OPT_CD1
-		AND    OP.OPT_CD2 = ODI.OPT_CD2
-		SET    OP.CURR_STOCK_QTY = OP.CURR_STOCK_QTY + (ODI.ITEM_QTY * #{ordCanChgQty})
-		     , OP.UPD_NO = #{updNo}
-		     , OP.UPD_DT = NOW()
-		WHERE  1=1
-		AND    ODI.ORD_NO 			= #{ordNo} 
-		AND    ODI.ORD_DTL_NO 		= #{ordDtlNo} 
-		AND    ODI.ORD_DTL_ITEM_SQ 	= #{ordDtlItemSq}
-	</update>
-	
-	<!-- 주문상세 > 주문취소 > 주문상세정보(취소,반품) 이력 등록-->
-	<insert id="createOrderDetailHstCnclRtn" parameterType="Order">
-		/* Order.createOrderDetailHstCnclRtn */
-		INSERT INTO TB_ORDER_DETAIL_HST (
-				ORD_DTL_NO
-				, ORD_NO
-				, ORD_EXCH_GB
-				, ORD_DTL_STAT
-				, ORG_ORD_DTL_NO
-				, SUPPLY_COMP_CD
-				, GOODS_CD
-				, PRODUCT_NO
-				, PRODUCT_CODE
-				, FORMAL_GB
-				, GOODS_TYPE
-				, LIST_PRICE
-				, CURR_PRICE
-				, DC_RATE
-				, OPT_ADD_PRICE
-				, ORD_QTY
-				, ORD_AMT
-				, CNCL_RTN_QTY
-				, CNCL_RTN_AMT
-				, CPN1_CPN_SQ
-				, CPN1_DC_AMT
-				, TMTB1_SQ
-				, TMTB1_DC_AMT
-				, TMTB2_SQ
-				, TMTB2_DC_AMT
-				, GOODS_CPN_SQ
-				, GOODS_CPN_DC_AMT
-				, CART_CPN_SQ
-				, CART_CPN_DC_AMT
-				, BURDEN_RATE
-				, PNT_DC_AMT
-				, PRE_PNT_DC_AMT
-				, SAVE_PNT_AMT
-				, REAL_ORD_AMT
-				, GFCD_USE_AMT
-				, VENDOR_ID
-				, EXTMALL_ID
-				, AGENT_ORDER_ID
-				, EXTMALL_ORDER_ID
-				, CHANGABLE_YN
-				, CHANGE_FEE_FREE_YN
-				, RETURNABLE_YN
-				, RETURN_FEE_FREE_YN
-				, SOLDOUT_YN
-				, SOLDOUT_MEMO
-				, SOLDOUT_REG_NO
-				, SOLDOUT_REG_DT
-				, DELV_ADDR_SQ
-				, DELV_FEE_CD
-				, SHOT_DELV_YN
-				, GIFT_PACK_YN
-				, MAKE_GOODS_YN
-				, ENTRY_NO
-				, DELV_LOC_CD
-				, DELV_ASSIGN_DT
-				, DELV_ASSIGN_STAT
-				, DSTRBT_NOTE
-				, DELV_STDT
-				, DELV_EDDT
-				, SHIP_COMP_CD
-				, INVOICE_NO
-				, INVOICE_SEND_YN
-				, SELL_STORE_CD
-				, SELL_FEE_RATE
-				, AF_LINK_CD
-				, ITHR_CD
-				, CONTENTS_LOC
-				, PLAN_DTL_SQ
-				, SOCIAL_SQ
-				, REG_NO
-				, REG_DT
-				, UPD_NO
-				, UPD_DT
-		)
-		SELECT OD.ORD_DTL_NO
-			 , OD.ORD_NO
-			 , OD.ORD_EXCH_GB
-			 , #{ordDtlStat}
-			 , OD.ORG_ORD_DTL_NO
-			 , OD.SUPPLY_COMP_CD
-			 , OD.GOODS_CD
-			 , OD.PRODUCT_NO
-			 , OD.PRODUCT_CODE
-			 , OD.FORMAL_GB
-			 , OD.GOODS_TYPE
-			 , OD.LIST_PRICE
-			 , OD.CURR_PRICE
-			 , OD.DC_RATE
-			 , OD.OPT_ADD_PRICE
-			 , OD.ORD_QTY
-			 , Z.ORD_AMT
-			 , #{ordCanChgQty}
-			 , OD.ORD_AMT
-			 , OD.CPN1_CPN_SQ
-			 , OD.CPN1_DC_AMT - Z.CPN1_DC_AMT
-			 , OD.TMTB1_SQ
-			 , OD.TMTB1_DC_AMT - Z.TMTB1_DC_AMT
-			 , OD.TMTB2_SQ
-			 , OD.TMTB2_DC_AMT - Z.TMTB2_DC_AMT
-			 , OD.GOODS_CPN_SQ
-			 , OD.GOODS_CPN_DC_AMT - Z.GOODS_CPN_DC_AMT
-			 , OD.CART_CPN_SQ
-			 , OD.CART_CPN_DC_AMT - Z.CART_CPN_DC_AMT
-			 , OD.BURDEN_RATE
-			 , OD.PNT_DC_AMT - Z.PNT_DC_AMT
-			 , OD.PRE_PNT_DC_AMT - Z.PRE_PNT_DC_AMT
-			 , OD.SAVE_PNT_AMT - Z.SAVE_PNT_AMT
-			 , Z.REAL_ORD_AMT
-			 , OD.GFCD_USE_AMT - Z.GFCD_USE_AMT
-			 , OD.VENDOR_ID
-			 , OD.EXTMALL_ID
-			 , OD.AGENT_ORDER_ID
-			 , OD.EXTMALL_ORDER_ID
-			 , OD.CHANGABLE_YN
-			 , OD.CHANGE_FEE_FREE_YN
-			 , OD.RETURNABLE_YN
-			 , OD.RETURN_FEE_FREE_YN
-			 , OD.SOLDOUT_YN
-			 , OD.SOLDOUT_MEMO
-			 , OD.SOLDOUT_REG_NO
-			 , OD.SOLDOUT_REG_DT
-			 , OD.DELV_ADDR_SQ
-			 , OD.DELV_FEE_CD
-			 , OD.SHOT_DELV_YN
-			 , OD.GIFT_PACK_YN
-			 , OD.MAKE_GOODS_YN
-			 , OD.ENTRY_NO
-			 , OD.DELV_LOC_CD
-			 , OD.DELV_ASSIGN_DT
-			 , OD.DELV_ASSIGN_STAT
-			 , OD.DSTRBT_NOTE
-			 , OD.DELV_STDT
-			 , OD.DELV_EDDT
-			 , OD.SHIP_COMP_CD
-			 , OD.INVOICE_NO
-			 , OD.INVOICE_SEND_YN
-			 , OD.SELL_STORE_CD
-			 , OD.SELL_FEE_RATE
-			 , OD.AF_LINK_CD
-			 , OD.ITHR_CD
-			 , OD.CONTENTS_LOC
-			 , OD.PLAN_DTL_SQ
-			 , OD.SOCIAL_SQ
-			 , #{regNo} AS REG_ID
-			 , CURRENT_TIMESTAMP() AS REG_DT
-			 , #{regNo} AS REG_ID
-			 , CURRENT_TIMESTAMP() AS UPD_DT
-		FROM   TB_ORDER_DETAIL OD
-		INNER  JOIN (
-		SELECT ODI.ORD_DTL_NO
-		     , SUM(ODI.ORD_AMT) AS ORD_AMT
-		     , SUM(ODI.CNCL_RTN_AMT) AS CNCL_RTN_AMT
-		     , SUM(ODI.CPN1_DC_AMT) AS CPN1_DC_AMT
-		     , SUM(ODI.TMTB1_DC_AMT) AS TMTB1_DC_AMT
-		     , SUM(ODI.TMTB2_DC_AMT) AS TMTB2_DC_AMT
-		     , SUM(ODI.GOODS_CPN_DC_AMT) AS GOODS_CPN_DC_AMT
-		     , SUM(ODI.CART_CPN_DC_AMT) AS CART_CPN_DC_AMT
-		     , SUM(ODI.PNT_DC_AMT) AS PNT_DC_AMT
-		     , SUM(ODI.PRE_PNT_DC_AMT) AS PRE_PNT_DC_AMT
-		     , SUM(ODI.SAVE_PNT_AMT) AS SAVE_PNT_AMT
-		     , SUM(ODI.REAL_ORD_AMT) AS REAL_ORD_AMT
-		     , SUM(ODI.GFCD_USE_AMT) AS GFCD_USE_AMT
-		FROM   TB_ORDER_DETAIL_ITEM ODI
-		WHERE  ODI.ORD_DTL_NO = #{ordDtlNo}
-		GROUP  BY ODI.ORD_DTL_NO
-		) Z
-		ON    OD.ORD_DTL_NO = Z.ORD_DTL_NO
-		AND   OD.ORD_DTL_NO = #{ordDtlNo}
-	</insert>
-	
-	<!-- 주문상세 > 주문취소신청 > 주문상세정보 수정 -->
-	<update id="updateOrderDetail" parameterType="Order">
-		/* Order.updateOrderDetail */
-		UPDATE TB_ORDER_DETAIL OD
-		INNER  JOIN (
-		SELECT ODI.ORD_DTL_NO
-		     , SUM(ODI.CNCL_RTN_AMT) 		AS CNCL_RTN_AMT
-		     , SUM(ODI.CPN1_DC_AMT) 		AS CPN1_DC_AMT
-		     , SUM(ODI.TMTB1_DC_AMT) 		AS TMTB1_DC_AMT
-		     , SUM(ODI.TMTB2_DC_AMT) 		AS TMTB2_DC_AMT 
-		     , SUM(ODI.GOODS_CPN_DC_AMT) 	AS GOODS_CPN_DC_AMT
-		     , SUM(ODI.CART_CPN_DC_AMT) 	AS CART_CPN_DC_AMT 
-		     , SUM(ODI.PNT_DC_AMT) 			AS PNT_DC_AMT 
-		     , SUM(ODI.PRE_PNT_DC_AMT) 		AS PRE_PNT_DC_AMT
-		     , SUM(ODI.SAVE_PNT_AMT) 		AS SAVE_PNT_AMT 
-		     , SUM(ODI.REAL_ORD_AMT) 		AS REAL_ORD_AMT 
-		     , SUM(ODI.GFCD_USE_AMT) 		AS GFCD_USE_AMT 
-		FROM   TB_ORDER_DETAIL_ITEM ODI
-		WHERE  ODI.ORD_NO = #{ordNo} 
-		AND    ODI.ORD_DTL_NO = #{ordDtlNo}
-		GROUP  BY ODI.ORD_DTL_NO
-		) Z
-		ON     OD.ORD_DTL_NO 			= Z.ORD_DTL_NO
-		SET    OD.ORD_DTL_STAT			= CASE WHEN OD.ORD_QTY > (OD.CNCL_RTN_QTY + #{ordCanChgQty})
-		                                       THEN OD.ORD_DTL_STAT
-		                                       ELSE #{ordDtlStat}
-		                                        END
-		     , OD.CNCL_RTN_QTY			= OD.CNCL_RTN_QTY + #{ordCanChgQty}
-		     , OD.CNCL_RTN_AMT  		= Z.CNCL_RTN_AMT
-		     , OD.CPN1_DC_AMT 			= Z.CPN1_DC_AMT
-		     , OD.TMTB1_DC_AMT 			= Z.TMTB1_DC_AMT
-		     , OD.TMTB2_DC_AMT 			= Z.TMTB2_DC_AMT
-		     , OD.GOODS_CPN_DC_AMT 		= Z.GOODS_CPN_DC_AMT
-		     , OD.CART_CPN_DC_AMT 		= Z.CART_CPN_DC_AMT
-		     , OD.PNT_DC_AMT 			= Z.PNT_DC_AMT
-		     , OD.PRE_PNT_DC_AMT 		= Z.PRE_PNT_DC_AMT
-		     , OD.SAVE_PNT_AMT 			= Z.SAVE_PNT_AMT
-		     , OD.REAL_ORD_AMT 			= Z.REAL_ORD_AMT
-		     , OD.GFCD_USE_AMT 			= Z.GFCD_USE_AMT
-		WHERE  1=1
-		AND    OD.ORD_NO = #{ordNo}
-		AND    OD.ORD_DTL_NO = #{ordDtlNo}
-	</update>
-	
-	<!-- 주문상세 > 주문취소신청 > 주문변경정보상세 등록-->
-	<insert id="createOrderChangeDetail" parameterType="OrderChange">
-		/* Order.createOrderChangeDetail */
-		INSERT INTO TB_ORDER_CHANGE_DETAIL (
-			ORD_CHG_SQ
-			, ORD_DTL_NO
-			, CHG_QTY
-			, CHG_STAT
-			, COMPLETE_DT
-			, REG_NO
-			, REG_DT
-			, UPD_NO
-			, UPD_DT
-		) VALUES (
-			#{ordChgSq}
-			, #{ordDtlNo}
-			, #{chgQty}
-			, #{chgStat}
-			, NOW()
-			, #{regNo}
-			, NOW()
-			, #{updNo}
-			, NOW()
-		)
-	</insert>
-	
-	<!-- 주문상세 > 주문취소신청 > 주문환불금액정보 등록 -->
-	<insert id="createPayment" parameterType="Order" keyProperty="paySq">
-		/* Order.createPayment */
-		INSERT INTO TB_PAYMENT (
-			ORD_NO
-			, PAY_DT
-			, PAY_MEANS
-			, PAY_AMT
-			, PG_CPN_AMT
-			, NPAY_PNT_AMT
-			, PAY_GB
-			, PAY_STAT
-			, PG_GB
-			, PG_TID
-			, PG_TRADE_NO
-			, PG_SHOP_ID
-			, CARD_TYPE
-			, CARD_KIND
-			, CARD_BANK
-			, CARD_NM
-			, CARD_MIPS
-			, CARD_PCABLE_YN
-			, VA_NO
-			, VA_NM
-			, VA_BANK
-			, VA_DEADLINE
-			, TELECOM
-			, ESCROW_YN
-			, ORD_CHG_SQ
-			, REG_NO
-			, REG_DT
-			, UPD_NO
-			, UPD_DT
-		) 
-		SELECT ORD_NO
-		 	 , NOW()
-			 , PAY_MEANS
-			 , #{payAmt}
-			 , #{pgCpnAmt}
-			 , #{npayPntAmt}
-			 , PAY_GB
-			 , #{payStat}
-			 , PG_GB
-			 , #{pgTid}
-			 , #{pgTradeNo}
-			 , PG_SHOP_ID
-			 , CARD_TYPE
-			 , CARD_KIND
-			 , CARD_BANK
-			 , CARD_NM
-			 , CARD_MIPS
-			 , CARD_PCABLE_YN
-			 , #{vaNo}
-			 , #{vaNm}
-			 , #{vaBank}
-			 , #{vaDeadline}
-			 , TELECOM
-			 , ESCROW_YN
-			 , #{ordChgSq}
-			 , #{regNo}
-			 , NOW()
-			 , #{updNo}
-			 , NOW()
-		FROM   TB_PAYMENT 
-		WHERE  1=1
-		AND    ORD_NO = #{ordNo}
-		AND    PAY_GB = 'O'
-		AND    PAY_STAT = 'G016_30'
-	</insert>
-	
-	<!-- 주문상세 > 주문취소신청 > 주문환불정보 등록 -->
-	<insert id="createRefund" parameterType="Order">
-		/* Order.createRefund */
-		INSERT INTO TB_REFUND (
-			ORD_NO
-			, PAY_SQ
-			, ORD_CHG_SQ
-			, REFUND_AMT
-			, RA_NO
-			, RA_BANK
-			, RA_NM
-			, RF_CPN1_AMT
-			, RF_TMTB1_AMT
-			, RF_TMTB2_AMT
-			, RF_GOODS_CPN_AMT
-			, RF_CART_CPN_AMT
-			, RF_PNT_AMT
-			, RF_PRE_PNT_AMT
-			, RF_GFCD_USE_AMT
-			, REG_NO
-			, REG_DT
-		) VALUES (
-			#{ordNo}
-			, #{paySq}
-			, #{ordChgSq}
-			, #{refundAmt}
-			, #{raNo}
-			, #{raBank}
-			, #{raNm}
-			, #{rfCpn1Amt}
-			, #{rfTmtb1Amt}
-			, #{rfTmtb2Amt}
-			, #{rfGoodsCpnAmt}
-			, #{rfCartCpnAmt}
-			, #{rfPntAmt}
-			, #{rfPrePntAmt}
-			, #{rfGfcdUseAmt}
-			, #{regNo}
-			, NOW()
-		)
-	</insert>
-
-	<!-- 주문상세 > 주문취소신청 > 주문추가배송금액등록-->
-	<insert id="createDeliveryFee" parameterType="Order">
-		/* Order.createDeliveryFee */
-		INSERT INTO TB_DELIVERY_FEE ( 
-			PAY_SQ
-			, ORD_NO
-			, DELV_FEE_GB
-			, DELV_FEE_CD
-			, DELV_FEE
-			, DELV_CPN_SQ
-			, DELV_CPN_DC_AMT
-			, REAL_DELV_AMT
-			, ORD_CHG_SQ
-			, SUPPLY_COMP_CD
-			, DELV_USAC_YN
-			, DELV_USAC_DT
-			, REG_NO
-			, REG_DT
-			, UPD_NO
-			, UPD_DT
-		) VALUES (
-			#{paySq}
-			, #{ordNo}
-			, #{delvFeeGb}
-			, #{delvFeeCd}
-			, #{delvFee}
-			, #{delvCpnSq}
-			, #{delvCpnDcAmt}
-			, #{realDelvAmt}
-			, #{ordChgSq}
-			, #{supplyCompCd}
-			, 'N'
-			, null
-			, #{regNo}
-			, NOW()
-			, #{updNo}
-			, NOW()
-		)
-	</insert>
-	
-	<!-- 주문상세 > 주문취소신청 > 주문사은품취소 -->
-	<update id="updateOrdFreegiftDel" parameterType="Order">
-		/* Order.updateOrdFreegiftDel */
-		UPDATE TB_ORD_FREEGIFT_VAL
-		SET    DEL_YN= 'N'
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = NOW()
-		WHERE  FREEGIFT_VAL_SQ IN (
-			SELECT OFRV.FREEGIFT_VAL_SQ 
-			FROM   TB_ORD_FREEGIFT OFR
-			INNER  JOIN TB_ORD_FREEGIFT_VAL OFRV
-			ON     OFR.ORD_FREEGIFT_SQ  = OFRV.ORD_FREEGIFT_SQ 
-			WHERE  1=1
-			AND    OFR.ORD_NO = (SELECT CASE WHEN SUM(X.ORD_QTY) > SUM(X.CNCL_RTN_QTY)
-								             THEN 0
-								             ELSE X.ORD_NO
-								             END 
-								 FROM   TB_ORDER_DETAIL X
-								 WHERE  1=1
-								 AND    X.ORD_NO = #{ordNo})
-		)
-	</update>
-	
-	
-	
-	<!-- 주문상세 > 주문취소 > 고객환불계좌정보 조회 -->
-	<select id="getRefundAccount" parameterType="Order" resultType="Order">
-		/* Order.getRefundAccount */
-		SELECT Z.ACCOUNT_NO
-		     , Z.ACCOUNT_NM
-		     , Z.BANK_CD
-		     , FN_GET_CODE_NM('G940', Z.BANK_CD) AS BANK_NM
-		     , Z.DEFAULT_YN
-		     , Z.REG_DT
-		FROM   (
-			SELECT CA.ACCOUNT_NO
-			     , CA.ACCOUNT_NM 
-			     , CA.BANK_CD
-			     , CA.DEFAULT_YN
-			     , CA.REG_DT
-			FROM   TB_ORDER O
-			LEFT   OUTER JOIN TB_CUST_ACCOUNT CA 
-			ON     O.CUST_NO = CA.CUST_NO
-			WHERE  1=1
-			AND    O.CUST_NO = 0
-			GROUP  BY CA.ACCOUNT_NO
-			     , CA.ACCOUNT_NM 
-			     , CA.BANK_CD
-			     , CA.DEFAULT_YN
-			ORDER  BY CA.DEFAULT_YN DESC
-			     , CA.REG_DT DESC
-		) Z
-	</select>
-	
-	<!-- 주문상세 > 주문취소 > 고객환불계좌정보 중복체크 -->
-	<select id="getRefundAccountCheck" parameterType="Order" resultType="int">
-		/* Order.getRefundAccountCheck */
-		SELECT COUNT(1)
-		FROM   TB_CUST_ACCOUNT CA
-		WHERE  1=1
-		AND    CA.ACCOUNT_NO = ${accountNo}
-		AND    CA.ACCOUNT_NM = #{accountNm}
-		AND    CA.BANK_CD = #{bankCd}
-		AND    CA.DEL_YN = 'N'
-	</select>
-	
-	<!-- 주문상세 > 주문취소 > 고객환불계좌정보 등록 -->
-	<insert id="saveRefundAccount" parameterType="Order">
-		/* Order.saveRefundAccount */
-		INSERT INTO TB_CUST_ACCOUNT (
-			CUST_NO
-			, BANK_CD
-			, ACCOUNT_NO
-			, ACCOUNT_NM
-			, DEFAULT_YN
-			, DEL_YN
-			, REG_NO
-			, REG_DT
-			, UPD_NO
-			, UPD_DT
-		) VALUES (
-			#{custNo}
-			, #{bankCd}
-			, #{accountNo}
-			, #{accountNm}
-			, 'N'
-			, 'N'
-			, #{regNo}
-			, NOW()
-			, #{updNo}
-			, NOW()
-		)
-	</insert>
-	
-	
-</mapper>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

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

@@ -209,13 +209,6 @@
 		        <if test="ageGrpCd != null and ageGrpCd != ''">
 		        AND G.AGE_GRP_CD = #{ageGrpCd}
 		        </if>
-		        <if test="cateCd != null and cateCd != ''">
-		        AND G.GOODS_CD IN (
-		            SELECT GOODS_CD
-		            FROM   TB_CATEGORY_GOODS
-		            WHERE  CATE_CD = #{cateCd}
-		        )
-		        </if>
 	</sql>
 	
 	<!-- 목록 페이징 정보 -->
@@ -392,7 +385,7 @@
 		                          , ST.SOLDOUT_YN
 		                          , ST.CURR_STOCK_QTY
 		                          , ST.BASE_STOCK_QTY
-		                          , NVL(SQ.STOCK_QTY,0) AS SALE_STOCK_QTY
+		                          , IFNULL(SQ.STOCK_QTY,0) AS SALE_STOCK_QTY
 		                          , GREATEST(GREATEST(ST.CURR_STOCK_QTY - ST.BASE_STOCK_QTY, 0) - IFNULL(SQ.STOCK_QTY, 0), 0) AS ABLE_STOCK_QTY
 		                          , G.REG_DT
 		                    FROM TB_GOODS G

+ 1 - 1
src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -1812,7 +1812,7 @@
 			return false;
 		}
 		
-		if (!checkRepYn){
+		if (!checkRepYn && $("#goodsDetailForm input[name=goodsType]").val() == "G056_D"){
 			mcxDialog.alert('구성상품중 대표여부를 선택해 주세요.');
 			return false;
 		}

+ 1 - 1
src/main/webapp/WEB-INF/views/goods/GoodsFreeGoodsForm.html

@@ -304,7 +304,7 @@
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
 			sureBtnClick: function() {
-				gagajf.ajaxFormSubmit($('#detailForm').prop('action'), '#detailForm', function() {debugger;
+				gagajf.ajaxFormSubmit($('#detailForm').prop('action'), '#detailForm', function() {
 					fnDetailFormInit();
 					$('#btnSearch').click();
 				});

+ 8 - 26
src/main/webapp/WEB-INF/views/goods/GoodsItemkindForm.html

@@ -45,9 +45,9 @@
 					<tr>
 						<th>카테고리</th>
 						<td colspan="5">
-							<input name="siteCd" id="siteCd" type="hidden" value="10"/>
+							<input name="siteCd" id="siteCd" type="hidden" value="G000_10"/>
 							<input name="selLvl" id="selLvl" type="hidden"/>
-							<input name="cateCd" id="cateCd" type="hidden"/>
+							<input name="cateNo" id="cateNo" type="hidden"/>
 							<input name="cateType" id="cateType" type="hidden"/>
 							<select name="cateGb" id="cateGb" onchange="fnChangeSelect($(this).val(), 1);">
 								<option value="">[카테고리구분]</option>
@@ -220,24 +220,9 @@
 	}
 
 	var fnChangeSelect = function(val, selLvl){
-		$("#cateCd").val('');
-		$('#tcateCd').val('');
-		$('#mcateCd').val('');
-		$('#scateCd').val('');
-		$('#dcateCd').val('');
-		if(val==''){
-			if(selLvl>1){
-				selLvl = selLvl - 1;
-				if(selLvl>2){
-					$("#cateCd").val($("#selCate"+(selLvl-1)).val());
-				}
-			}else{
-				selLvl = '';
-			}
-		}else{
-			if(selLvl>2){
-				$("#cateCd").val(val);
-			}
+		$("#cateNo").val('');
+		if (1 < selLvl){ //상품검색용 카테고리 설정
+			$("#cateNo").val(val);
 		}
 		$("#searchForm input[name=selLvl]").val(selLvl);
 		$("#searchForm input[name=searchGb]").val("BASIC");
@@ -256,14 +241,11 @@
 			var cd = '';
 			var nm = '';
 			if(data[i].useYn=='Y'){
-				if(selLvl=='1'){
-					cd = data[i].cateGb;
-					nm = gagaAgGrid.lookupValue(cateGbList, cd);
-				}else{
-					cd = data[i].cateCd;
+				
+					cd = data[i].cateNo;
 					nm = data[i].cateNm;
 					$("#cateType").val(data[i].cateType);
-				}
+				
 				html += '<option value="'+cd+'">['+cd+'] '+nm+'</option>';
 			}
 		}

+ 2 - 2
src/main/webapp/WEB-INF/views/goods/GoodsNotiInfoForm.html

@@ -42,9 +42,9 @@
 								<option th:if="${niClsfCdList}" th:each="oneData, status : ${niClsfCdList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
 						</td>
-						<th>상품코드</th>
+						<th>상품코드<em class="required" title="필수"></em></th>
 						<td>
-							<textarea class="textareaR3 w200" name="goodsCd" id="goodsCd"></textarea>
+							<textarea class="textareaR3 w200" name="goodsCd" id="goodsCd" required="required" data-valid-name="상품코드"></textarea>
 						</td>
 					</tr>
 				</table>

+ 21 - 3
src/main/webapp/WEB-INF/views/goods/GoodsSizeInfoForm.html

@@ -56,6 +56,7 @@
 		<!-- //리스트 영역 -->
 		<!-- 등록/수정 -->
 		<form id="sizeInfoForm" name="sizeInfoForm" action="#" th:action="@{'/goods/size/info/save'}">
+		<input type="hidden" name="sizeCate1Cd" />
 		<!-- 등록/수정 -->
 		<div class="panelStyle" >
 			<ul>
@@ -188,17 +189,23 @@
 				if (event.data.sizeCate1Cd == "00") {
 					$("#sizeInfoForm input:radio[name=selfYn]:input[value=N]").click();
 				}else{
-					
 					$("#sizeInfoForm input:radio[name=selfYn]:input[value=Y]").click();
-					$("#sizeInfoForm select[name=brandCd]").val(event.data.sizeCate1Cd);	
+					$("#sizeInfoForm select[name=brandCd]").val(event.data.sizeCate1Cd);
 				}
+				$('#sizeInfoForm input[name=selfYn]').prop('readonly', true);
+				$('#sizeInfoForm input[name=selfYn]').addClass("formControl");
+				$('#sizeInfoForm select[name=brandCd]').prop('disabled', true);
+				$('#sizeInfoForm select[name=brandCd]').addClass("formControl");
 			}
+			$("#sizeInfoForm input[name=sizeCate1Cd]").val(event.data.sizeCate1Cd);
 			$("#sizeInfoForm input[name=sizeCate2Nm]").val(event.data.sizeCate2Nm);
 			$("#sizeInfoForm input[name=sizeCate2Cd]").val(event.data.sizeCate2Cd);
 			$("#sizeInfoForm input[name=dispOrd]").val(event.data.dispOrd);
 			gagaSn.setContents('#sizeInfo', event.data.sizeInfo); 
 				
 			$('#sizeInfoForm input[name=sizeGb]').prop('readonly', true);
+			$('#sizeInfoForm input[name=sizeGb]').addClass("formControl");
+			
 		}
 	}
 
@@ -211,7 +218,14 @@
 	// 신규버튼 초기화
 	$('#btnNew').on('click', function() {
 		$("#sizeInfoForm")[0].reset();
+		$('#sizeInfoForm input[name=sizeCate1Cd]').val(''); 
+		$('#brandArea').removeClass('off').addClass('on');
 		$('#sizeInfoForm input[name=sizeGb]').prop('readonly', false);
+		$('#sizeInfoForm input[name=sizeGb]').removeClass("formControl");
+		$('#sizeInfoForm input[name=selfYn]').prop('readonly', false);
+		$('#sizeInfoForm input[name=selfYn]').removeClass("formControl");
+		$('#sizeInfoForm select[name=brandCd]').prop('disabled', false);
+		$('#sizeInfoForm select[name=brandCd]').removeClass("formControl");
 		$("#sizeInfoForm input:radio[name=sizeGb]:input[value=1]").click();
 		$("#sizeInfoForm input:radio[name=selfYn]:input[value=N]").click();
 		gagaSn.setContents('#sizeInfo', ''); 
@@ -243,7 +257,7 @@
 			return false;
 		
 		if (gagajf.isNull($('#sizeInfoForm input[name=sizeCate2Nm]').val())){
-			if ("1" == $('#sizeInfoForm input[name=sizeGb]').val() && "Y" == $('#sizeInfoForm input[name=selfYn]').val() ){
+			if ("1" == $('#sizeInfoForm input[name=sizeGb]').val() && "Y" == $('#sizeInfoForm input[name=selfYn]:checked').val() ){
 				
 			}else{
 				mcxDialog.alertC("사이즈카테명을 입력해주세요.", {
@@ -256,6 +270,10 @@
 			}	
 		}
 		
+		if (gagajf.isNull($('#sizeInfoForm textarea[name=sizeInfo]').val())){
+			mcxDialog.alert("html 내용을 입력하세요.");
+			return false;
+		}
 		
 		mcxDialog.confirm('저장하시겠습니까?', {
 			cancelBtnText: "취소",

+ 133 - 26
src/main/webapp/WEB-INF/views/marketing/CouponPopupForm.html

@@ -135,20 +135,21 @@
 										<tr>
 											<th>할인값(PC)<em class="required" title="필수"></em></th>
 											<td>
-												<input type="text" class="w200" id="dcPval" name="dcPval" value="0" required="required" data-valid-name="할인값(PC)" data-valid-type="numeric" style="text-align: right"><span id="dcPvalSpan">원</span>
+												<input type="text" class="w200" id="dcPval" name="dcPval" value="0" required="required" data-valid-name="할인값(PC)" data-valid-type="numeric" style="text-align: right" onkeyup="fnDcValOnkeyUp(this);"><span id="dcPvalSpan">원</span>
+												<button type="button" class="btn btn-default btn-lg" id="applySameValueBtn">동일적용</button>
 											</td>
 											<th>할인값(모바일웹)<em class="required" title="필수"></em></th>
 											<td>
-												<input type="text" class="w200" id="dcMval" name="dcMval" value="0" required="required" data-valid-name="할인값(모바일웹)" data-valid-type="numeric" style="text-align: right"><span id="dcMvalSpan">원</span>
+												<input type="text" class="w200" id="dcMval" name="dcMval" value="0" required="required" data-valid-name="할인값(모바일웹)" data-valid-type="numeric" style="text-align: right" onkeyup="fnDcValOnkeyUp(this);"><span id="dcMvalSpan">원</span>
 											</td>
 										</tr>
 										<tr>
 											<th>할인값(모바일앱)<em class="required" title="필수"></em></th>
 											<td>
-												<input type="text" class="w200" id="dcAval" name="dcAval" value="0" required="required" data-valid-name="할인값(모바일앱)" data-valid-type="numeric" style="text-align: right"><span id="dcAvalSpan">원</span>
+												<input type="text" class="w200" id="dcAval" name="dcAval" value="0" required="required" data-valid-name="할인값(모바일앱)" data-valid-type="numeric" style="text-align: right" onkeyup="fnDcValOnkeyUp(this);"><span id="dcAvalSpan">원</span>
 											</td>
-											<th>최대할인금액<em class="required" title="필수"></em></th>
-											<td>
+											<th class="maxDcAmtArea">최대할인금액<em class="required" title="필수"></em></th>
+											<td class="maxDcAmtArea">
 												<input type="text" class="w200" id="maxDcAmt" name="maxDcAmt" value="0" required="required" data-valid-name="최대할인금액" data-valid-type="numeric" style="text-align: right;"><span id="maxDcAmtSpan">원</span>
 											</td>
 										</tr>
@@ -219,7 +220,7 @@
 												</select>
 											</td>
 										</tr>
-										<tr>
+										<tr class="firstBuyTr">
 											<th>첫구매여부<em class="required" title="필수"></em></th>
 											<td>
 												<select name="firstYn" id="firstYn" onchange="firstYnChange(this)" required="required" data-valid-name="첫구매여부">
@@ -227,13 +228,6 @@
 													<option value="N" selected="selected">N</option>
 												</select>
 											</td>
-											<th>다운로드가능여부<em class="required" title="필수"></em></th>
-											<td>
-												<select name="downYn" id="downYn" required="required" data-valid-name="다운로드가능여부">
-													<option value="Y">Y</option>
-													<option value="Y" selected="selected">N</option>
-												</select>
-											</td>
 										</tr>
 										<tr>
 											<th class="buyDateTr">첫구매기간시작일시<em class="required" title="필수"></em></th>
@@ -258,7 +252,7 @@
 												</select>
 											</td>
 										</tr>
-										<tr>
+										<tr class="custJoinTr">
 											<th>신규회원여부<em class="required" title="필수"></em></th>
 											<td>
 												<select name="custJoinYn" id="custJoinYn" onchange="custJoinYnChange(this)" required="required" data-valid-name="신규회원여부">
@@ -266,10 +260,6 @@
 													<option value="N" selected="selected">N</option>
 												</select>
 											</td>
-											<th class="dcCdCheck">총발행제한수량<em class="required" title="필수"></em></th>
-											<td class="dcCdCheck">
-												<input type="text" class="w200" name="totPubLimitQty" id="totPubLimitQty" value="0" required="required" data-valid-name="총발행제한수량" data-valid-type="numeric" style="text-align: right;">개<span class="cRed" id="totPubLimitQtySpan"> *제한없음</span>
-											</td>
 										</tr>
 										<tr>
 											<th class="custJoinDateTr">신규회원기간시작일시<em class="required" title="필수"></em></th>
@@ -294,15 +284,32 @@
 												</select>
 											</td>
 										</tr>
-										<tr class="dcCdCheck">
+										<tr class="dcCdCheck1">
+											<th>총발행제한수량<em class="required" title="필수"></em></th>
+											<td>
+												<input type="text" class="w200" name="totPubLimitQty" id="totPubLimitQty" value="0" required="required" data-valid-name="총발행제한수량" data-valid-type="numeric" style="text-align: right;">개
+												<label class="chkBox" id="chkBoxTotPubQty"><input type="checkbox" id="chkNoLimitTotPubLimitQty"/>제한없음</label>
+											</td>
 											<th>1인당발행제한수량<em class="required" title="필수"></em></th>
 											<td>
-												<input type="text" class="w200" name="custPubLimitQty" id="custPubLimitQty" value="0" required="required" data-valid-name="1인당발행제한수량" data-valid-type="numeric" style="text-align: right;">개<span class="cRed" id="custPubLimitQtySpan"> *제한없음</span>
+												<input type="text" class="w200" name="custPubLimitQty" id="custPubLimitQty" value="0" required="required" data-valid-name="1인당발행제한수량" data-valid-type="numeric" style="text-align: right;">개
+												<label class="chkBox" id="chkBoxCustPubQty"><input type="checkbox" id="chkNoLimitCustPubLimitQty"/>제한없음</label>
 											</td>
-											<th>1회발행수량<em class="required" title="필수"></em></th>
-											<td><input type="text" class="w200" name="onePubQty" id="onePubQty" value="1" required="required" data-valid-name="1회발행수량" data-valid-type="numeric" style="text-align: right;">개</td>
 										</tr>
 										<tr>
+											<th class="dcCdCheck2">1회발행수량<em class="required" title="필수"></em></th>
+											<td class="dcCdCheck2">
+												<input type="text" class="w200" name="onePubQty" id="onePubQty" value="1" required="required" data-valid-name="1회발행수량" data-valid-type="numeric" style="text-align: right;">개
+											</td>
+											<th>다운로드가능여부<em class="required" title="필수"></em></th>
+											<td>
+												<select name="downYn" id="downYn" required="required" data-valid-name="다운로드가능여부">
+													<option value="Y">Y</option>
+													<option value="Y" selected="selected">N</option>
+												</select>
+											</td>
+										</tr>
+										<!--<tr>
 											<th>재발급여부<em class="required" title="필수"></em></th>
 											<td>
 												<select name="reissuance" id="reissuance" required="required" data-valid-name="재발급여부" >
@@ -315,7 +322,7 @@
 													<option th:if="${dnGbList}" th:each="oneData , status:${dnGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 												</select>
 											</td>
-										</tr>
+										</tr>-->
 										<tr class="payTypeTr" style="display: none;">
 											<th>결제수단<em class="required" title="필수"></em></th>
 											<td colspan="5">
@@ -605,6 +612,52 @@
 	brandGridOptions.rowSelection = "multiple";
 	inComGridOptions.stopEditingWhenGridLosesFocus = true;
 
+	// 총발행 제한수량 -> 제한없음 처리
+	$("#CouponForm #chkBoxTotPubQty").bind('click', function (){
+		var chkBox= document.getElementById('chkNoLimitTotPubLimitQty').checked;
+		if(chkBox){ //true 체크가 되어있었는데 해제됐어 -> 값0 inputbox disabled 해제
+			$("#CouponForm #totPubLimitQty").val(0);
+			$("#CouponForm input[id=totPubLimitQty]").prop("disabled", false);
+		}else{	//false 체크가 안되어있었는데 체크됐어 -> 값0 inputbox disabled
+			$("#CouponForm #totPubLimitQty").val(0);
+			$("#CouponForm input[id=totPubLimitQty]").prop("disabled", true);
+		}
+	});
+
+	// 1인당발행 제한수량 -> 제한없음 처리
+	$("#CouponForm #chkBoxCustPubQty").bind('click', function (){
+		var chkBox= document.getElementById('chkNoLimitCustPubLimitQty').checked;
+		if(chkBox){ //true 체크가 되어있었는데 해제됐어 -> 값0 inputbox disabled 해제
+			$("#CouponForm #custPubLimitQty").val(0);
+			$("#CouponForm input[id=custPubLimitQty]").prop("disabled", false);
+		}else{	//false 체크가 안되어있었는데 체크됐어 -> 값0 inputbox disabled
+			$("#CouponForm #custPubLimitQty").val(0);
+			$("#CouponForm input[id=custPubLimitQty]").prop("disabled", true);
+		}
+	});
+
+	// 할인방식 할인율 일때, 할인값 체크
+	var fnDcValOnkeyUp = function (obj){
+		var inputName = $(obj).attr("name");
+		var rdoDcWay = $('#CouponForm input:radio[name="rdoDcWay"]:checked').val();
+		var dcVal = $("#CouponForm input[name="+inputName+"]").val();
+		if(rdoDcWay == "G240_11"){
+			if(dcVal > 100){
+				mcxDialog.alert('할인율은 100을 넘을수 없습니다.');
+				$("#CouponForm input[name="+inputName+"]").val('');
+				$("#CouponForm input[name="+inputName+"]").focus();
+				return;
+			}
+		}
+	}
+
+	// 할인값 동일적용
+	$("#applySameValueBtn").bind('click change', function () {
+		var cdPval = $("#CouponForm input[name=dcPval]").val();
+		$("#CouponForm input[name=dcMval]").val(cdPval);
+		$("#CouponForm input[name=dcAval]").val(cdPval);
+	});
+
 	// 쿠폰 등록 버튼 클릭시
 	function fnCouponCreate(){
 		mcxDialog.confirm('저장하시겠습니까?' , {
@@ -780,10 +833,20 @@
 			$('#dcPvalSpan').text("원");
 			$('#dcMvalSpan').text("원");
 			$('#dcAvalSpan').text("원");
+			$('#dcPval').val(0);
+			$('#dcMval').val(0);
+			$('#dcAval').val(0);
+			$('#maxDcAmt').val(0);
+			$("#CouponForm .maxDcAmtArea").hide();
 		} else {
 			$('#dcPvalSpan').text("%");
 			$('#dcMvalSpan').text("%");
 			$('#dcAvalSpan').text("%");
+			$('#dcPval').val(0);
+			$('#dcMval').val(0);
+			$('#dcAval').val(0);
+			$('#maxDcAmt').val(0);
+			$("#CouponForm .maxDcAmtArea").show();
 		}
 	});
 
@@ -794,6 +857,20 @@
 		if(mode == "U") {
 			radioValue = cpnDetail.cpnType;
 		}
+
+		// 즉시할인 쿠폰일때
+		if(radioValue == 'G230_10'){
+			$('#CouponForm .custJoinTr').hide();
+			$('#CouponForm .custJoinDateTr').hide();
+			$('#CouponForm .firstBuyTr').hide();
+			$('#CouponForm .buyDateTr').hide();
+			$('#CouponForm .dcCdCheck1').hide();
+		}else{
+			$('#CouponForm .custJoinTr').show();
+			$('#CouponForm .firstBuyTr').show();
+			$('#CouponForm .dcCdCheck1').show();
+		}
+
 		// 상품쿠폰 선택시 적용범위 개별로 변경 나머진 전체
 		if(radioValue == 'G230_11') {
 			$("input:radio[name='rdoApplyScope']:radio[value='I']").prop('checked', true);
@@ -819,7 +896,8 @@
 	// 할인 쿠폰 유형 변경
 	$("#CouponForm input[name=dcCdGb]").bind('click change', function () {
 		if(this.value == "G233_00") {			// 일반 유형
-			$("#CouponForm .dcCdCheck").show();
+			$("#CouponForm .dcCdCheck1").show();
+			$("#CouponForm .dcCdCheck2").show();
 			$("#CouponForm .serialCpnArea").hide();
 			$("#CouponForm .randomCpnArea").hide();
 			$("#CouponForm #custJoinYn").parent().attr("colspan", "");
@@ -843,7 +921,8 @@
 				$('#CouponForm input[name="serialCpnQty"]').attr('required' , false);
 				$('#CouponForm input[name="randomCpnQty"]').attr('required' , true);
 			}
-			$("#CouponForm .dcCdCheck").hide();								// 총발행제한수량, 1회발행수량, 1인당발행제한수량 숨김
+			$("#CouponForm .dcCdCheck1").hide();								// 총발행제한수량, 1회발행수량, 1인당발행제한수량 숨김
+			$("#CouponForm .dcCdCheck2").hide();								// 총발행제한수량, 1회발행수량, 1인당발행제한수량 숨김
 			$("#CouponForm #custJoinYn").parent().attr("colspan", "5");		// 총발행제한 수량을 없애면서 신규회원여부 colspan 수정
 		}
 	});
@@ -1332,6 +1411,14 @@
 			$("#CouponForm #afChannel option:first").attr("selected" , "selected");
 			$("#CouponForm .normalCol").attr("colspan", "5");
 			$("#CouponForm .randomCpnArea").hide();
+			$("#CouponForm .maxDcAmtArea").hide();
+			if($('input:radio[name="rdoCpnType"]:checked').val() == 'G230_10'){
+				$('#CouponForm .custJoinTr').hide();
+				$('#CouponForm .custJoinDateTr').hide();
+				$('#CouponForm .firstBuyTr').hide();
+				$('#CouponForm .buyDateTr').hide();
+				$('#CouponForm .dcCdCheck1').hide();
+			}
 		} else {
 			// 수정모드시 그리드 세팅
 			inComGridOptions.api.setRowData(cpnDtlBurdenList);
@@ -1380,6 +1467,25 @@
 			$("#CouponForm input[name='serialCpnQty']").prop("disabled", true);
 			$("#CouponForm input[name='randomCpnQty']").prop("disabled", true);
 
+			// 즉시할인 쿠폰이면
+			if(cpnDetail.cpnType == "G230_10") {
+				$('#CouponForm .custJoinTr').hide();
+				$('#CouponForm .custJoinDateTr').hide();
+				$('#CouponForm .firstBuyTr').hide();
+				$('#CouponForm .buyDateTr').hide();
+				$('#CouponForm .dcCdCheck1').hide();
+			}else{
+				$('#CouponForm .custJoinTr').show();
+				$('#CouponForm .custJoinDateTr').show();
+				$('#CouponForm .firstBuyTr').show();
+				$('#CouponForm .buyDateTr').show();
+				$('#CouponForm .dcCdCheck1').show();
+			}
+
+			// 할인방식이 할인율이면 최대할인금액 노출
+			if(cpnDetail.dcWay == "G240_11"){
+				$("#CouponForm .maxDcAmtArea").show();
+			}
 			// 주문서 쿠폰이면 할인쿠폰유형 노출
 			if(cpnDetail.cpnType == "G230_20") {
 				$("#CouponForm .dcCdGb").show();
@@ -1387,7 +1493,8 @@
 			// 할인코드유형이 일반유형이 아니면
 			if(cpnDetail.dcCdGb != "G233_00" ) {
 				$("#CouponForm .randomCpnTab").show();							// 시리얼 및 난수 TAB 노출
-				$("#CouponForm .dcCdCheck").hide();								// 총발행제한수량, 1회발행수량, 1인당발행제한수량 숨김
+				$("#CouponForm .dcCdCheck1").hide();								// 총발행제한수량, 1회발행수량, 1인당발행제한수량 숨김
+				$("#CouponForm .dcCdCheck2").hide();								// 총발행제한수량, 1회발행수량, 1인당발행제한수량 숨김
 				if(cpnDetail.dcCdGb == "G233_10") {		// 시리얼 유형
 					$("#CouponForm input[name='serialCpnQty']").val(cpnDetail.totPubLimitQty);
 					$("#CouponForm input[name='serialCpnNm']").val(cpnDetail.rdCpnNm);

+ 159 - 102
src/main/webapp/WEB-INF/views/order/CnclReqForm.html

@@ -23,21 +23,24 @@
 		<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="chgReason" value=""/>
 				<input type="hidden" name="chgReasonDesc" value=""/>
 				
 				<h4>주문정보</h4>
 				<div id="gridOrderCancelRequestList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
 
-				<h4>취소정보</h4>
+				<h4 id="h4OrderCancelRequestToBeList">취소정보</h4>
 				<div id="gridOrderCancelRequestToBeList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
 				
-				<h4>배송비정보</h4>
+				<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;">
-					<button type="button" class="btn btn-success" onclick="fnCnclReq('cnclReq');">취소신청</button>
-					<button type="button" class="btn btn-success" onclick="fnCnclReq('cnclComplete');">취소완료</button>
+					<button type="button" class="btn btn-success" id="cnclReqBtn" onclick="fnCnclReq('cnclReq');">취소신청</button>
+					<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">
@@ -53,7 +56,7 @@
 							<td>
 								<select name="selectChgReason" onchange="fnChangeChgReason($(this).val());">
 									<option value="">[선택하세요]</option>
-									<option th:if="${chgReasonList}" th:each="oneData, status : ${chgReasonList}" th:value="|${oneData.cd}:${oneData.cdNm}|" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+									<option th:if="${chgReasonList}" th:each="oneData, status : ${chgReasonList}" th:value="|${oneData.cd}|" th:text="|${oneData.cdNm}|"></option>
 								</select>
 							</td>
 							<th>귀책사유</th>
@@ -135,13 +138,23 @@
 /*<![CDATA[*/
 var cancelRequestTargetList = [[${cancelRequestTargetList}]];				// 취소대상목록
 var ordNo 					= [[${ordNo}]];									// 주문번호
+var ordChgSq 				= [[${ordChgSq}]];								// 주문변경번호
 var orderInfoList 			= [[${orderInfoList}]];							// 주문기본정보
+var orderChangeDetailList 	= [[${orderChangeDetailList}]];					// 취소/반품/교환요청 정보
 var payMeans 				= orderInfoList[0].payMeans;					// 결제수단
+var chgReason				= "";											// 변경사유코드
+var chgMemo					= "";											// 변경사유메모
+
+// 변경요청정보 승인, 철회
+if (ordChgSq > 0) {
+	chgReason				= orderChangeDetailList[0].chgReason;			// 변경사유코드
+	chgMemo					= orderChangeDetailList[0].chgMemo;				// 변경사유메모
+}
 
 var temp1 = true;
-var temp2 = false;
+var temp2 = true;
 
-// 1. 주문정보(반품대상)
+// 1. 주문정보(변경요청가능대상)
 var columnCancelReqList = [
 	{
 		headerName	: "주문상세정보",
@@ -223,21 +236,29 @@ var columnCancelReqList = [
 					var ordQty 			= parseInt(params.data.ordQty);
 					var cnclRtnQty 		= parseInt(params.data.cnclRtnQty);
 					var ordReqChgQty 	= parseInt(params.data.ordReqChgQty);
-					var ordCanChgQty 	= ordQty - (cnclRtnQty +  ordReqChgQty);
+					var ordCanChgQty 	= parseInt(params.value);
+					var rtnStr 			= "";
 					
-					var strVal 			= "";
-					strVal += "<select class='ordCanChgQty' name='ordCanChgQty' ordDtlNo='"+params.data.ordDtlNo+"' onChange='fnCalculateRefundAmt(this);'>";
-					
-					for (i=0 ; i<=ordCanChgQty ; i++) {
-						if (i == params.data.ordCanChgQty) {
-							strVal += "	<option value='"+i+"' selected>"+i+"</option>";
-						} else {
-							strVal += "	<option value='"+i+"'>"+i+"</option>";
+					// 취소신청가능수량있으면 수량만 표시 (취소,반품,교환 신청정보 처리)
+					if (ordChgSq > 0) {
+						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>";
 					}
-				
-					strVal += "</select>";
-					return strVal;
+					
+					return rtnStr;
 				}
 			}
 		]
@@ -785,7 +806,7 @@ var isCustomer = true;
 
 // 취소정보계산
 var fnCalculateRefundAmt = function (obj) {
-	// 취소정보담은목록
+	// 변경신청목록
 	var cancelRequestTargetToBeList = [];
 
 	if (obj != null) {
@@ -797,7 +818,7 @@ var fnCalculateRefundAmt = function (obj) {
 				cancelRequestTargetList[i].ordCanChgQty = ordCanChgQty;
 			}
 		}
-		// 주문정보 다시 셋팅 (체크해봐야할문제)
+		// 주문변경대상정보 재설정
 		gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
 	}
 	
@@ -862,86 +883,88 @@ var fnCalculateRefundAmt = function (obj) {
 
 //  사유
 var fnChangeChgReason = function(reasonCd){
-	var arrReasonCd = reasonCd.split(":");
 	var customerReasonArr = ['G686_10'];
 
 	isCustomer = false;
 	
-	// 취소, 반품, 교환 사유 판단
+	// 귀책사유체크(취소,반품,교환)
 	for (i=0 ; i<customerReasonArr.length ; i++) {
-		if (customerReasonArr[i] == arrReasonCd[0]) {
+		if (customerReasonArr[i] == reasonCd) {
 			isCustomer = true;
 		}
 	}
 	
-	// 귀책사유설정 회사, 고객
+	// 귀책사유체크(회사,고객)
 	if (isCustomer) {
 		$("#imputeReason").text("고객");
 	} else {
 		$("#imputeReason").text("회사");
 	}
 
-	$('#cancelRequestFrm input[name=chgReason]').val(arrReasonCd[0]);
-	$('#cancelRequestFrm input[name=chgReasonDesc]').val(arrReasonCd[1]);
-
-	fnCalculateRefundAmt();			//환불예정금액 계산.
+	$('#cancelRequestFrm input[name=chgReason]').val(reasonCd);
+	
+	//환불예정금액 계산
+	fnCalculateRefundAmt();
 }
 
 // 취소신청/완료
 var fnCnclReq = function (reqGbn) {
-	
 	var temp 		= false;
-	var ordDtlStat	= cancelRequestTargetList[0].ordDtlStat; 
+	var ordDtlStat	= cancelRequestTargetList[0].ordDtlStat;
 	var allCanYn 	= "N";
 	
-	// 1. 취소수량 체크
-	for (i=0 ; i<cancelRequestTargetList.length ; i++) {		
-		if (cancelRequestTargetList[i].ordCanChgQty > 0) {
-			temp = true;
-		}
-	}
-	
-	if (temp == false) {
-		mcxDialog.alert('취소신청수량을 입력하세요.');
-		return;
-	}
-	
-	// 2. 입금대기건 & 전체취소 체크
-	if (ordDtlStat == "G013_10" && $("#spanPayAmt").text() != $("#spanRefundAmt").text()) {
-		alert("입금대기건은 전체 취소만 가능합니다.");
-		return;
-	}
-	
-	// 2.1 전체취소 여부 적용
-	if (ordDtlStat == "G013_10" && $("#spanPayAmt").text() == $("#spanRefundAmt").text()) {
-		allCanYn = "Y";	
-	}
-	
-	// 3. 취소사유 체크
-	var chgReason = $("#cancelRequestFrm select[name=selectChgReason]").val();
-	
-	if (gagajf.isNull(chgReason)) {
-		mcxDialog.alert("취소사유를 입력하세요."); 
-		return ;
-	}
-	
-	// 4. 환불계좌 체크
 	var accountNo 	= "";
 	var accountNm 	= "";
 	var bankCd 		= "";
 	
-	// 결제타입 무통장입금시 환불계좌 등록
-	if (payMeans == 'G014_20') {
-		var refundAccount = gridOptionsRefundAccountInfo.api.getSelectedRows();
+	if (reqGbn == "cnclReq" || reqGbn == "cnclComplete") {
+		// 1. 취소수량 체크
+		for (i=0 ; i<cancelRequestTargetList.length ; i++) {		
+			if (cancelRequestTargetList[i].ordCanChgQty > 0) {
+				temp = true;
+			}
+		}
+		
+		if (temp == false) {
+			mcxDialog.alert('취소신청수량을 입력하세요.');
+			return;
+		}
 		
-		if (refundAccount.length == 0) {
-			mcxDialog.alert('선택된 행이 없습니다.');
+		// 2. 입금대기건 & 전체취소 체크
+		if (ordDtlStat == "G013_10" && $("#spanPayAmt").text() != $("#spanRefundAmt").text()) {
+			alert("입금대기건은 전체 취소만 가능합니다.");
 			return;
 		}
 		
-		accountNo 	= refundAccount[0].accountNo;
-		accountNm 	= refundAccount[0].accountNm;
-		bankCd 		= refundAccount[0].bankCd;
+		// 2.1 전체취소 여부 적용
+		if (ordDtlStat == "G013_10" && $("#spanPayAmt").text() == $("#spanRefundAmt").text()) {
+			allCanYn = "Y";	
+		}
+		
+		// 3. 취소사유 체크
+		var chgReason = $("#cancelRequestFrm select[name=selectChgReason]").val();
+		
+		if (gagajf.isNull(chgReason)) {
+			mcxDialog.alert("취소사유를 입력하세요."); 
+			return ;
+		}
+		
+		// 4. 환불계좌 체크
+		// 결제타입 무통장입금시 환불계좌 등록
+		if (payMeans == 'G014_20') {
+			var refundAccount = gridOptionsRefundAccountInfo.api.getSelectedRows();
+			
+			if (refundAccount.length == 0) {
+				mcxDialog.alert('선택된 행이 없습니다.');
+				return;
+			}
+			
+			accountNo 	= refundAccount[0].accountNo;
+			accountNm 	= refundAccount[0].accountNm;
+			bankCd 		= refundAccount[0].bankCd;
+		}
+	} else {
+		
 	}
 	
 	// 5. 추가정보설정
@@ -950,49 +973,57 @@ var fnCnclReq = function (reqGbn) {
 	var chgerPhnno 	= orderInfoList[0].ordPhnno;
 	var chgerTelno 	= orderInfoList[0].ordTelno;
 
+	// 2021.01.26 화면통합
 	// 6. 취소신청, 취소완료 여부 체크
-	// 취소완료
-	if (reqGbn == "cnclComplete") {
-		cnclUrl = '/orderChange/cnclComplete/';
-	}
 	// 취소신청
-	else if (reqGbn == "cnclReq") {
-		cnclUrl = '/orderChange/cnclReq/';
+	if (reqGbn == "cnclReq") {
+		confirmStr 		= "취소신청하시겠습니까?";
+		cnclUrl 		= '/orderChange/cnclComplete/';
 	}
-	// 취소신청완료
+	// 취소완료
+	else if (reqGbn == "cnclComplete") {
+		confirmStr 		= "취소완료하시겠습니까?";
+		cnclUrl 		= '/orderChange/cnclComplete/';
+	}
+	// 취소신청승인
 	else if (reqGbn == "cnclReqComplete") {
-		cnclUrl = '/orderChange/cnclReqComplete/';
+		confirmStr 		= "요청번호 [" + ordChgSq + "] 에 대한 취소승인 처리를 하시겠습니까?";
+		cnclUrl 		= '/orderChange/cnclComplete/';
+	}
+	// 취소신청철회
+	else if (reqGbn == "cnclReqCancel") {
+		confirmStr 		= "요청번호 [" + ordChgSq + "] 에 대한 요청철회 처리를 하시겠습니까?";
+		cnclUrl 		= '/orderChange/cnclReqCancel/';
 	}
 
-	// 2021.01.26 화면통합
-	cnclUrl = '/orderChange/cnclComplete/';
-	
 	var jsonObj = {
-			"ordNo"				: $('#cancelRequestFrm input[name=ordNo]').val()
-			,"chgReason" 		: $('#cancelRequestFrm input[name=chgReason]').val()
-			,"chgMemo"			: $('#chgMemo').val()
-			,"cancelReqList" 	: cancelRequestTargetList
-			,"accountNo" 		: accountNo
-			,"accountNm" 		: accountNm
-			,"bankCd" 			: bankCd
-			,"allCanYn" 		: allCanYn
-			,"isCustomer" 		: isCustomer
-			,"chgerNm"			: chgerNm
-			,"chgerEmail"		: chgerEmail
-			,"chgerZipcode"		: ""
-			,"chgerBaseAddr"	: ""
-			,"chgerDtlAddr"		: ""
-			,"chgerPhnno"		: chgerPhnno
-			,"chgerTelno"		: chgerTelno
-			,"reqGbn"			: reqGbn
-		}
+		"ordNo"				: $('#cancelRequestFrm input[name=ordNo]').val()
+		,"chgReason" 		: $('#cancelRequestFrm input[name=chgReason]').val()
+		,"chgMemo"			: $('#chgMemo').val()
+		,"cancelReqList" 	: cancelRequestTargetList
+		,"accountNo" 		: accountNo
+		,"accountNm" 		: accountNm
+		,"bankCd" 			: bankCd
+		,"allCanYn" 		: allCanYn
+		,"isCustomer" 		: isCustomer
+		,"chgerNm"			: chgerNm
+		,"chgerEmail"		: chgerEmail
+		,"chgerZipcode"		: ""
+		,"chgerBaseAddr"	: ""
+		,"chgerDtlAddr"		: ""
+		,"chgerPhnno"		: chgerPhnno
+		,"chgerTelno"		: chgerTelno
+		,"reqGbn"			: reqGbn
+		,"ordChgSq"			: ordChgSq
+	}
 
 	// 주문번호, 취소사유, 취소메모, (취소, 반품, 교환 신청 정보 목록), 환불계좌
 	var jsonData = JSON.stringify(jsonObj);
 	
-	mcxDialog.confirm('취소요청하시겠습니까?', {
+	mcxDialog.confirm(confirmStr, {
 		cancelBtnText		: "취소",
-		sureBtnClick		: function(){
+		sureBtnText			: "확인",
+		sureBtnClick		: function() {
 			gagajf.ajaxJsonSubmit(
 				cnclUrl
 				, jsonData
@@ -1047,6 +1078,32 @@ $(document).ready(function() {
 		$('#wrapRefundAccount').addClass("off");
 		fnBindOrderRfAccountInfo();
 	}
+	
+	// 5. 취소신청, 취소완료, 취소승인, 취소철회 버튼 제어
+	if (ordChgSq > 0) {
+		$("#cnclReqBtn").css("display", "none");
+		$("#cnclCompleteBtn").css("display", "none");
+	} else {
+		$("#cnclReqCompleteBtn").css("display", "none");
+		$("#cnclReqCancelBtn").css("display", "none");
+	}
+	
+	// 6. 취소사유 선택
+	if (ordChgSq > 0) {
+		$("select[name='selectChgReason']").val(chgReason);										// 변경사유코드
+		$("select[name='selectChgReason']").attr("disabled", "true");							// 변경사유 비활성화
+		$("#chgMemo").text(chgMemo);															// 변경사유메모
+		$("#chgMemo").attr("disabled", "true");													// 변경사유메모 비활성화
+		fnChangeChgReason(chgReason);															// 귀책사유
+	}
+	
+	// debug mode 해제
+	if (temp2) {
+		$("#h4OrderCancelRequestToBeList").css("display", "none");
+		$("#gridOrderCancelRequestToBeList").css("display", "none");
+		$("#h4DelvCdList").css("display", "none");
+		$("#gridDelvCdList").css("display", "none");
+	}
 });
 </script>
 </html>

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

@@ -29,7 +29,7 @@
 				<h4>주문정보</h4>
 				<div id="gridOrderCancelRequestList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
 
-				<h4>배송정보</h4>
+				<h4>배송정보</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;">
@@ -192,7 +192,7 @@ var addDelvFeeList			= [];											// 추가배송비정보
 var exchangeRequestList		= [];											// 교환요청목록
 
 var temp1 = true;
-var temp2 = false;
+var temp2 = true;
 
 // 1. 주문정보(교환대상)
 var columnExchangeReqList = [
@@ -495,7 +495,7 @@ var gridOptionsExchangeReqList = gagaAgGrid.getGridOptions(columnExchangeReqList
 gridOptionsExchangeReqList.suppressRowClickSelection = true;
 gridOptionsExchangeReqList.rowSelection = 'multiple';
 
-// 3. 배송정보(환불정보)
+// 3. 배송정보(환불정보)
 var columnDelvCdList = [
 	{headerName: "업체"			, field: "supplyCompNm"		, width: 100	, cellClass: 'text-center', hide: temp2},
 	{headerName: "배송비코드"		, field: "delvFeeCd"		, width: 100	, cellClass: 'text-center', hide: temp2},

+ 74 - 80
src/main/webapp/WEB-INF/views/order/OrderDetailForm.html

@@ -614,8 +614,12 @@ var columnDefsOrderChangeInfo = [
 			var rtnStr = "";
 			
 			// 취소요청, 교환요청, 반품요청 일때는 요청 정보 확인 팝업 정보
-			if (params.data.chgStat == 'G685_20' || params.data.chgStat == 'G685_30' || params.data.chgStat == 'G685_40') {
+			if (params.data.chgStat == 'G685_20') {
 				rtnStr = '<a href="javascript:void(0);" onclick="fnCancelRequest(\'' + params.value + '\');">' + params.value + '</a>';
+			} else if (params.data.chgStat == 'G685_40') {
+				rtnStr = '<a href="javascript:void(0);" onclick="fnReturnRequest(\'' + params.value + '\');">' + params.value + '</a>';
+			} else if (params.data.chgStat == 'G685_30') {
+				rtnStr = '<a href="javascript:void(0);" onclick="fnExchangeRequest(\'' + params.value + '\');">' + params.value + '</a>';
 			} else {
 				rtnStr = params.value;
 			}
@@ -623,12 +627,13 @@ var columnDefsOrderChangeInfo = [
 			return  rtnStr;
 		}
 	},
-	{headerName: "요청구분"		, field: "chgGbNm"		, width: 100	, cellClass: 'text-center'},
+	/*{headerName: "요청구분"		, field: "chgGbNm"		, width: 100	, cellClass: 'text-center'},*/
+	{headerName: "요청상태"		, field: "chgStatNm"	, width: 100	, cellClass: 'text-center'},
 	{headerName: "상품코드"		, field: "goodsCd"		, width: 100	, cellClass: 'text-center'},
 	{headerName: "옵션1"			, field: "optCd1"		, width: 100	, cellClass: 'text-center'},
 	{headerName: "옵션2"			, field: "optCd2"		, width: 100	, cellClass: 'text-center'},
 	{headerName: "수량"			, field: "chgQty"		, width: 100	, cellClass: 'text-center'},
-	{headerName: "요청상태"		, field: "chgStatNm"	, width: 100	, cellClass: 'text-center'},
+	/*{headerName: "요청상태"		, field: "chgStatNm"	, width: 100	, cellClass: 'text-center'},*/
 	{
 		headerName		: "요청일자"		
 		, field			: "regDt"		
@@ -955,7 +960,7 @@ $(document).ready(function () {
 	});
 	// 반품요청
 	$('#btnReturn').on('click', function () {
-		fnReturnRequest(ordNo, 'N');
+		fnReturnRequest();
 	});
 	// 교환요청
 	$('#btnExchange').on('click', function () {
@@ -1014,21 +1019,80 @@ var fnCancelRequest = function (ordChgSq) {
 	cfnOpenModalPopup(actionUrl, 'popupCancelRequestForm');
 };
 
-
-
+//2021.01.25 추가
 // 반품요청
-var fnReturnRequest = function () {
-	var actionUrl = "/orderChange/rtn/req/form?ordNo=" + ordNo;
+var fnReturnRequest = function (ordChgSq) {
+	
+	// 취소요청 구분 (orChgSq null 이면 취소요청화면 있으면 취소요청정보화면)
+	if (ordChgSq == null) {
+		ordChgSq = 0;
+	}
+	
+	var actionUrl = "/orderChange/rtn/req/form?ordNo=" + ordNo + "&ordChgSq=" + ordChgSq;
+	
 	cfnOpenModalPopup(actionUrl, 'popupReturnRequestForm');
 };
 
 // 교환요청
-var fnExchangeRequest = function () {
-	var actionUrl = "/orderChange/exchange/request/form?ordNo=" + ordNo;
+var fnExchangeRequest = function (ordChgSq) {
+	
+	// 취소요청 구분 (orChgSq null 이면 취소요청화면 있으면 취소요청정보화면)
+	if (ordChgSq == null) {
+		ordChgSq = 0;
+	}
+	
+	var actionUrl = "/orderChange/exchange/request/form?ordNo=" + ordNo + "&ordChgSq=" + ordChgSq;
 	cfnOpenModalPopup(actionUrl, 'popupExchangeRequestForm');
 };
 
 
+// 반품요청 철회
+var fnReturnReqeustCancel = function (ordChgSq, ordDtlNo, rowIdx) {
+	mcxDialog.confirm('반품요청을 철회하시겠습니까?', {
+		cancelBtnText	: "취소",
+		sureBtnText		: "확인",
+		sureBtnClick	: function () {
+			var data = new Object();
+			data.ordChgSq = ordChgSq;
+			data.ordDtlNo = ordDtlNo;
+			
+			var jsonData = JSON.stringify(data);
+			gagajf.ajaxJsonSubmit(
+				'/order/return/request/cancel'
+				, jsonData
+				, function (result) {
+					if (result.message != '회수컨펌 된 내역이 있습니다.') {
+						var selectedRow = gridOptionsOrderChangeInfo.api.getRowNode(rowIdx).data;
+						gridOptionsOrderChangeInfo.api.updateRowData({remove: [selectedRow]});
+					}
+				}
+			);
+		}
+	});
+};
+
+// 교환요청 철회
+var fnExchangeReqeustCancel = function (ordChgSq, ordNo, ordDtlNo, rowIdx) {
+	mcxDialog.confirm('교환요청을 취소하시겠습니까?', {
+		cancelBtnText	: "취소",
+		sureBtnText		: "확인",
+		sureBtnClick	: function () {
+			var data = new Object();
+			data.ordNo 		= ordNo;
+			data.ordDtlNo 	= ordDtlNo;
+			data.ordChgSq 	= ordChgSq;
+			
+			var jsonData = JSON.stringify(data);
+			gagajf.ajaxJsonSubmit(
+				'/order/exchange/request/cancel'
+				, jsonData, function () {
+					uifnPopupClose('popupOrderDetail');
+					fnReOpenOrderDetailPopup();
+				}
+			);
+		}
+	});
+};
 
 // 주문상품 상세 변경 이력 팝업
 var fnOrderDetailChangeHst = function (ordDtlNo) {
@@ -1164,54 +1228,6 @@ var fnSaveChgerAddr = function (rowIdx) {
 	});
 }
 
-// 반품요청 철회
-var fnReturnReqeustCancel = function (ordChgSq, ordDtlNo, rowIdx) {
-	mcxDialog.confirm('반품요청을 철회하시겠습니까?', {
-		cancelBtnText	: "취소",
-		sureBtnText		: "확인",
-		sureBtnClick	: function () {
-			var data = new Object();
-			data.ordChgSq = ordChgSq;
-			data.ordDtlNo = ordDtlNo;
-			
-			var jsonData = JSON.stringify(data);
-			gagajf.ajaxJsonSubmit(
-				'/order/return/request/cancel'
-				, jsonData
-				, function (result) {
-					if (result.message != '회수컨펌 된 내역이 있습니다.') {
-						var selectedRow = gridOptionsOrderChangeInfo.api.getRowNode(rowIdx).data;
-						gridOptionsOrderChangeInfo.api.updateRowData({remove: [selectedRow]});
-					}
-				}
-			);
-		}
-	});
-};
-
-// 교환요청 철회
-var fnExchangeReqeustCancel = function (ordChgSq, ordNo, ordDtlNo, rowIdx) {
-	mcxDialog.confirm('교환요청을 취소하시겠습니까?', {
-		cancelBtnText	: "취소",
-		sureBtnText		: "확인",
-		sureBtnClick	: function () {
-			var data = new Object();
-			data.ordNo 		= ordNo;
-			data.ordDtlNo 	= ordDtlNo;
-			data.ordChgSq 	= ordChgSq;
-			
-			var jsonData = JSON.stringify(data);
-			gagajf.ajaxJsonSubmit(
-				'/order/exchange/request/cancel'
-				, jsonData, function () {
-					uifnPopupClose('popupOrderDetail');
-					fnReOpenOrderDetailPopup();
-				}
-			);
-		}
-	});
-};
-
 // LMS 전송
 var fnOpenLmsForm = function (orderPhnno, custNo) {
 	if (gagajf.isNull(custNo) && gagajf.isNull(orderPhnno)) {
@@ -1258,28 +1274,6 @@ var fnReceiptPage = function (tid) {
 	window.open(fullUrl, '_blank');
 };
 
-// 수동 회수 지시 
-var fnWdinvocieSend = function (ordChgSq) {
-	mcxDialog.confirm("요청번호 [" + ordChgSq + "] 회수지시 처리 하시겠습니까? <br> 시스템에서 회수지시를 보내지는않습니다.", {
-		cancelBtnText	: "취소",
-		sureBtnText		: "확인",
-		sureBtnClick	: function () {
-			var data = new Object();
-			data.ordChgSq = ordChgSq;
-			
-			var jsonData = JSON.stringify(data);
-			gagajf.ajaxJsonSubmit(
-				'/order/wdinvoice/send/save'
-				, jsonData
-				, function (result) {
-					uifnPopupClose('popupOrderDetail');
-					fnReOpenOrderDetailPopup();
-				}
-			);
-		}
-	});
-};
-
 // 구매확정철회
 var fnChangedCompleteDelivery = function (ordNo, ordDtlNo, ordDtlStat) {
 	if ('70' !== ordDtlStat) {

+ 189 - 107
src/main/webapp/WEB-INF/views/order/ReturnRequestForm.html → src/main/webapp/WEB-INF/views/order/RtnReqForm.html

@@ -23,20 +23,23 @@
 		<div class="panelContent" style="height:90%; overflow-y:auto; padding:0px 20px !important; ">
 			<form id="cancelRequestFrm" name="cancelRequestFrm" action="/orderChange/return" method="post" target="hdFrameForOrderCancel">
 				<input type="hidden" name="ordNo" th:value="${ordNo}"/>
+				<input type="hidden" name="ordChgSq" th:value="${ordChgSq}"/>
 				<input type="hidden" name="chgReason" value=""/>
 				<input type="hidden" name="chgReasonDesc" value=""/>
 				
 				<h4>주문정보</h4>
 				<div id="gridOrderCancelRequestList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
 
-				<h4>반품정보</h4>
+				<h4 id="h4OrderCancelRequestToBeList">반품정보</h4>
 				<div id="gridOrderCancelRequestToBeList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
 				
-				<h4>배송비정보</h4>
+				<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;">
-					<button type="button" class="btn btn-success" id="btnCancelRequestPartOk" onclick="fnCancelRequestPartOk();">요청</button>
+					<button type="button" class="btn btn-success" id="rtnReqBtn" onclick="fnCnclReq('rtnReq');">반품신청</button>
+					<button type="button" class="btn btn-success" id="rtnReqCancelBtn" onclick="fnCnclReq('rtnReqCancel');">반품철회</button>
+					<!-- <button type="button" class="btn btn-success" id="rtnReqCancelBtn" onclick="fnCnclReq('rtnReqComplete');">반품승인</button> -->
 				</div>
 				
 				<table class="frmStyle">
@@ -52,7 +55,7 @@
 							<td>
 								<select name="selectChgReason" onchange="fnChangeChgReason($(this).val());">
 									<option value="">[선택하세요]</option>
-									<option th:if="${chgReasonList}" th:each="oneData, status : ${chgReasonList}" th:value="|${oneData.cd}:${oneData.cdNm}|" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+									<option th:if="${chgReasonList}" th:each="oneData, status : ${chgReasonList}" th:value="|${oneData.cd}|" th:text="|${oneData.cdNm}|"></option>
 								</select>
 							</td>
 							<th>귀책사유</th>
@@ -186,14 +189,24 @@
 /*<![CDATA[*/
 var cancelRequestTargetList = [[${cancelRequestTargetList}]];				// 취소대상목록
 var ordNo 					= [[${ordNo}]];									// 주문번호
+var ordChgSq 				= [[${ordChgSq}]];								// 주문변경번호
 var orderInfoList 			= [[${orderInfoList}]];							// 주문기본정보
-var payMeans 				= orderInfoList[0].payMeans;					// 결제수단
 var orderDelvRtnAddrInfo	= [[${orderDelvRtnAddrInfo}]];					// 회수지정보
+var orderChangeDetailList 	= [[${orderChangeDetailList}]];					// 취소/반품/교환요청 정보
+var payMeans 				= orderInfoList[0].payMeans;					// 결제수단
+var chgReason				= "";											// 변경사유코드
+var chgMemo					= "";											// 변경사유메모
+
+// 변경요청정보 승인, 철회
+if (ordChgSq > 0) {
+	chgReason				= orderChangeDetailList[0].chgReason;			// 변경사유코드
+	chgMemo					= orderChangeDetailList[0].chgMemo;				// 변경사유메모
+}
 
 var temp1 = true;
-var temp2 = false;
+var temp2 = true;
 
-// 1. 주문정보(반품대상)
+// 1. 주문정보(변경요청가능대상)
 var columnCancelReqList = [
 	{
 		headerName	: "주문상세정보",
@@ -275,21 +288,28 @@ var columnCancelReqList = [
 					var ordQty 			= parseInt(params.data.ordQty);
 					var cnclRtnQty 		= parseInt(params.data.cnclRtnQty);
 					var ordReqChgQty 	= parseInt(params.data.ordReqChgQty);
-					var ordCanChgQty 	= ordQty - (cnclRtnQty +  ordReqChgQty);
+					var ordCanChgQty 	= parseInt(params.value);
+					var rtnStr 			= "";
 					
-					var strVal 			= "";
-					strVal += "<select class='ordCanChgQty' name='ordCanChgQty' ordDtlNo='"+params.data.ordDtlNo+"' onChange='fnCalculateRefundAmt(this);'>";
-					
-					for (i=0 ; i<=ordCanChgQty ; i++) {
-						if (i == params.data.ordCanChgQty) {
-							strVal += "	<option value='"+i+"' selected>"+i+"</option>";
-						} else {
-							strVal += "	<option value='"+i+"'>"+i+"</option>";
+					// 취소신청가능수량있으면 수량만 표시 (취소,반품,교환 신청정보 처리)
+					if (ordChgSq > 0) {
+						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>";
 					}
-				
-					strVal += "</select>";
-					return strVal;
+					return rtnStr;
 				}
 			}
 		]
@@ -837,7 +857,7 @@ var isCustomer = true;
 
 // 취소정보계산
 var fnCalculateRefundAmt = function (obj) {
-	// 취소정보담은목록
+	// 변경신청목록
 	var cancelRequestTargetToBeList = [];
 
 	if (obj != null) {
@@ -849,7 +869,7 @@ var fnCalculateRefundAmt = function (obj) {
 				cancelRequestTargetList[i].ordCanChgQty = ordCanChgQty;
 			}
 		}
-		// 주문정보 다시 셋팅 (체크해봐야할문제)
+		// 주문변경대상정보 재설정
 		gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
 	}
 	
@@ -914,126 +934,162 @@ var fnCalculateRefundAmt = function (obj) {
 
 //  사유
 var fnChangeChgReason = function(reasonCd){
-	var arrReasonCd = reasonCd.split(":");
 	var customerReasonArr = ['G688_10', 'G688_11', 'G688_12', 'G688_13', 'G688_15' , 'G688_21', 'G688_30'];
 
 	isCustomer = false;
 	
-	// 취소, 반품, 교환 사유 판단
+	// 귀책사유체크(취소,반품,교환)
 	for (i=0 ; i<customerReasonArr.length ; i++) {
-		if (customerReasonArr[i] == arrReasonCd[0]) {
+		if (customerReasonArr[i] == reasonCd) {
 			isCustomer = true;
 		}
 	}
 	
-	// 귀책사유설정 회사, 고객
+	// 귀책사유체크(회사,고객)
 	if (isCustomer) {
 		$("#imputeReason").text("고객");
 	} else {
 		$("#imputeReason").text("회사");
 	}
 
-	$('#cancelRequestFrm input[name=chgReason]').val(arrReasonCd[0]);
-	$('#cancelRequestFrm input[name=chgReasonDesc]').val(arrReasonCd[1]);
+	$('#cancelRequestFrm input[name=chgReason]').val(reasonCd);
 	
-	//환불예정금액 계산.
-	fnCalculateRefundAmt();			
+	//환불예정금액 계산
+	fnCalculateRefundAmt();
 }
 
 // 반품요청
-var fnCancelRequestPartOk = function () {
-	var temp 		= false;
-	var ordDtlStat	= cancelRequestTargetList[0].ordDtlStat; 
-	var allCanYn 	= "N";
-	
-	// 1. 취소수량 체크
-	for (i=0 ; i<cancelRequestTargetList.length ; i++) {		
-		if (cancelRequestTargetList[i].ordCanChgQty > 0) {
-			temp = true;
-		}
-	}
+var fnCnclReq = function (reqGbn) {
+	var temp 			= false;
+	var ordDtlStat		= cancelRequestTargetList[0].ordDtlStat; 
+	var allCanYn 		= "N";
 	
-	if (temp == false) {
-		mcxDialog.alert('취소 할 수량을 입력하세요.');
-		return;
-	}
+	var accountNo 		= "";
+	var accountNm 		= "";
+	var bankCd 			= "";
 	
-	// 2. 입금대기건 && 전체취소 체크
-	if (ordDtlStat == "G013_10" && $("#spanPayAmt").text() != $("#spanRefundAmt").text()) {
-		alert("입금대기건은 전체 취소만 가능합니다.");
-		return;
-	}
+	var chgerNm			= "";
+	var chgerZipcode	= "";
+	var chgerBaseAddr	= "";
+	var chgerDtlAddr	= "";
 	
-	// 2.1 전체취소 여부 적용
-	if (ordDtlStat == "G013_10" && $("#spanPayAmt").text() == $("#spanRefundAmt").text()) {
-		allCanYn = "Y";	
-	}
+	var chgerPhnno1		= "";
+	var chgerPhnno2		= "";
+	var chgerPhnno3		= "";
 	
-	// 3. 취소사유 체크
-	var chgReason = $("#cancelRequestFrm select[name=selectChgReason]").val();
+	var chgerTelno1		= "";
+	var chgerTelno2		= "";
+	var chgerTelno3		= "";
 	
-	if (gagajf.isNull(chgReason)) {
-		mcxDialog.alert("취소사유를 입력하세요."); 
-		return ;
-	}
+	var chgerPhnno 		= "";
+	var chgerTelno 		= "";
+	var chgerEmail 		= "";
 	
-	// 4. 환불계좌 체크
-	var accountNo 	= "";
-	var accountNm 	= "";
-	var bankCd 		= "";
-	
-	// 결제타입이 무통장 입금일때 사용
-	if (payMeans == 'G014_20') {
-		var refundAccount = gridOptionsRefundAccountInfo.api.getSelectedRows();
+	if (reqGbn == "rtnReq") {
+		// 1. 취소수량 체크
+		for (i=0 ; i<cancelRequestTargetList.length ; i++) {		
+			if (cancelRequestTargetList[i].ordCanChgQty > 0) {
+				temp = true;
+			}
+		}
 		
-		if (refundAccount.length == 0) {
-			mcxDialog.alert('선택된 행이 없습니다.');
+		if (temp == false) {
+			mcxDialog.alert('취소 할 수량을 입력하세요.');
 			return;
 		}
 		
-		accountNo 	= refundAccount[0].accountNo;
-		accountNm 	= refundAccount[0].accountNm;
-		bankCd 		= refundAccount[0].bankCd;
-	}
-	
-	// 5. 회수지정보설정
-	var chgerNm			= $("#cancelRequestFrm input[name=chgerNm]").val();
-	var chgerZipcode	= $("#cancelRequestFrm input[name=chgerZipcode]").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();
+		// 2. 입금대기건 && 전체취소 체크
+		if (ordDtlStat == "G013_10" && $("#spanPayAmt").text() != $("#spanRefundAmt").text()) {
+			alert("입금대기건은 전체 취소만 가능합니다.");
+			return;
+		}
+		
+		// 2.1 전체취소 여부 적용
+		if (ordDtlStat == "G013_10" && $("#spanPayAmt").text() == $("#spanRefundAmt").text()) {
+			allCanYn = "Y";	
+		}
+		
+		// 3. 취소사유 체크
+		var chgReason = $("#cancelRequestFrm select[name=selectChgReason]").val();
+		
+		if (gagajf.isNull(chgReason)) {
+			mcxDialog.alert("취소사유를 입력하세요."); 
+			return ;
+		}
+		
+		// 4. 환불계좌 체크
+		// 결제타입이 무통장 입금일때 사용
+		if (payMeans == 'G014_20') {
+			var refundAccount = gridOptionsRefundAccountInfo.api.getSelectedRows();
+			
+			if (refundAccount.length == 0) {
+				mcxDialog.alert('선택된 행이 없습니다.');
+				return;
+			}
+			
+			accountNo 	= refundAccount[0].accountNo;
+			accountNm 	= refundAccount[0].accountNm;
+			bankCd 		= refundAccount[0].bankCd;
+		}
+		
+		// 5. 회수지정보설정
+		chgerNm			= $("#cancelRequestFrm input[name=chgerNm]").val();
+		chgerZipcode	= $("#cancelRequestFrm input[name=chgerZipcode]").val();
+		chgerBaseAddr	= $("#cancelRequestFrm input[name=chgerBaseAddr]").val();
+		chgerDtlAddr	= $("#cancelRequestFrm input[name=chgerDtlAddr]").val();
+		
+		chgerPhnno1		= $("#cancelRequestFrm select[name=chgerPhnno1]").val();
+		chgerPhnno2		= $("#cancelRequestFrm input[name=chgerPhnno2]").val();
+		chgerPhnno3		= $("#cancelRequestFrm input[name=chgerPhnno3]").val();
+		
+		chgerTelno1		= $("#cancelRequestFrm select[name=chgerTelno1]").val();
+		chgerTelno2		= $("#cancelRequestFrm input[name=chgerTelno2]").val();
+		chgerTelno3		= $("#cancelRequestFrm input[name=chgerTelno3]").val();
 
-	if (gagajf.isNull(chgerZipcode)) {
-		mcxDialog.alert("회수지주소를 입력하세요."); return;
-	}
-	if (gagajf.isNull(chgerBaseAddr)) {
-		mcxDialog.alert("회수지주소를 입력하세요."); return;
-	}
-	if (gagajf.isNull(chgerDtlAddr)) {
-		mcxDialog.alert("회수지주소를 입력하세요."); return;
+		if (gagajf.isNull(chgerZipcode)) {
+			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;
+		}
+		
+		chgerPhnno 		= chgerPhnno1 + chgerPhnno2 + chgerPhnno3;
+		chgerTelno 		= chgerTelno1 + chgerTelno2 + chgerTelno3;
+		chgerEmail 		= orderInfoList[0].ordEmail;
+	} else {
+		
 	}
 	
-	if (gagajf.isNull(chgerPhnno1)) {
-		mcxDialog.alert("휴대전화를 입력하세요."); return;
+	// 2021.01.26 화면통합
+	// 6. 취소신청, 취소완료 여부 체크
+	// 반품신청
+	if (reqGbn == "rtnReq") {
+		confirmStr 		= "취소신청하시겠습니까?";
+		cnclUrl 		= '/orderChange/rtnReq/';
 	}
-	if (gagajf.isNull(chgerPhnno2)) {
-		mcxDialog.alert("휴대전화를 입력하세요."); return;
+	// 반품신청승인
+	else if (reqGbn == "rtnReqComplete") {
+
 	}
-	if (gagajf.isNull(chgerPhnno3)) {
-		mcxDialog.alert("휴대전화를 입력하세요."); return;
+	// 반품신청철회
+	else if (reqGbn == "rtnReqCancel") {
+		confirmStr 		= "요청번호 [" + ordChgSq + "] 에 대한 요청철회 처리를 하시겠습니까?";
+		cnclUrl 		= '/orderChange/rtnReqCancel/';
 	}
-	
-	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()
@@ -1051,6 +1107,7 @@ var fnCancelRequestPartOk = function () {
 		,"chgerDtlAddr"		: chgerDtlAddr
 		,"chgerPhnno"		: chgerPhnno
 		,"chgerTelno"		: chgerTelno
+		,"ordChgSq"			: ordChgSq
 	}
 
 	// 주문번호, 취소사유, 취소메모, (취소, 반품, 교환 신청 정보 목록), 환불계좌
@@ -1061,7 +1118,7 @@ var fnCancelRequestPartOk = function () {
 		sureBtnClick		: function(){
 			// 취소 실행
 			gagajf.ajaxJsonSubmit(
-				'/orderChange/returnRequest/'
+					cnclUrl
 				, jsonData
 				, function() {
 					uifnPopupClose('popupOrderDetail');
@@ -1157,6 +1214,31 @@ $(document).ready(function() {
 	
 	// 5. 회수지정보설정
 	fnSetChger();
+	
+	// 6. 반품신청, 반품승인, 반품철회 버튼 제어
+	if (ordChgSq > 0) {
+		$("#rtnReqBtn").css("display", "none");
+	} else {
+		$("#rtnReqCompleteBtn").css("display", "none");
+		$("#rtnReqCancelBtn").css("display", "none");
+	}
+	
+	// 7. 취소사유 선택
+	if (ordChgSq > 0) {
+		$("select[name='selectChgReason']").val(chgReason);										// 변경사유코드
+		$("select[name='selectChgReason']").attr("disabled", "true");							// 변경사유 비활성화
+		$("#chgMemo").text(chgMemo);															// 변경사유메모
+		$("#chgMemo").attr("disabled", "true");													// 변경사유메모 비활성화
+		fnChangeChgReason(chgReason);															// 귀책사유
+	}
+	
+	// debug mode 해제
+	if (temp2) {
+		$("#h4OrderCancelRequestToBeList").css("display", "none");
+		$("#gridOrderCancelRequestToBeList").css("display", "none");
+		$("#h4DelvCdList").css("display", "none");
+		$("#gridDelvCdList").css("display", "none");
+	}
 });
 </script>
 </html>