Ver código fonte

Merge branch 'order' into develop

card007 5 anos atrás
pai
commit
370afe5829

BIN
lib/gagaframework-excel-1.7.1-RELEASE.jar


+ 7 - 0
pom.xml

@@ -49,6 +49,13 @@
 			<scope>system</scope>
 			<systemPath>${basedir}/lib/gagaframework-web-util-1.7-RELEASE.jar</systemPath>
 		</dependency>
+		<dependency>
+			<groupId>com.gagaframework</groupId>
+			<artifactId>gagaframework-excel</artifactId>
+			<version>1.7.1-RELEASE</version>
+			<scope>system</scope>
+			<systemPath>${basedir}/lib/gagaframework-excel-1.7.1-RELEASE.jar</systemPath>
+		</dependency>
 		<!-- \\\ WEB-INF lib -->
 	</dependencies>
 	<build>

+ 31 - 0
src/main/java/com/style24/core/biz/dao/TscOrderChangeDao.java

@@ -1,5 +1,6 @@
 package com.style24.core.biz.dao;
 
+import java.util.Collection;
 import java.util.List;
 
 import com.style24.core.support.annotation.ShopDs;
@@ -165,6 +166,36 @@ public interface TscOrderChangeDao {
 	 */
 	int updateOrderChangeDtlCancel(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);
+
 }
 
 

+ 335 - 1
src/main/java/com/style24/core/biz/dao/TscOrderDao.java

@@ -1,7 +1,10 @@
 package com.style24.core.biz.dao;
 
+import java.util.Collection;
 import java.util.List;
 
+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;
@@ -14,7 +17,338 @@ import com.style24.persistence.domain.OrderChange;
  */
 @ShopDs
 public interface TscOrderDao {
-	
+
+	/**
+	 * 주문 목록 카운트
+	 * @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);
+
 	/**
 	 * 주문상세정보 생성
 	 *

+ 62 - 1
src/main/java/com/style24/core/biz/service/TscOrderChangeService.java

@@ -458,6 +458,7 @@ public class TscOrderChangeService {
 				
 		// 3. 변경신청정보
 		int ordNo 			= Integer.parseInt(mav.getString("ordNo").toString());				// 주문번호
+		int ordChgSq		= Integer.parseInt(mav.getString("ordChgSq").toString());			// 주문변경번호
 		String chgReason 	= mav.getString("chgReason").toString();							// 변경사유
 		String chgMemo 		= mav.getString("chgMemo").toString();								// 변경메모
 		String allCanYn		= mav.getString("allCanYn").toString();								// 무통장입금전 전체취소 여부
@@ -605,6 +606,36 @@ public class TscOrderChangeService {
 		return mav;
 	}
 	
+	/**
+	 * 반품신청철회 (admin)
+	 * @param Order
+	 * @return Order
+	 * @author jsh77b
+	 * @since 2021. 01. 19
+	 */
+	@Transactional("shopTxnManager")
+	public GagaMap rtnReqCancel(GagaMap mav, int userNo) {
+		
+		Order order = new Order();
+		order.setOrdNo(mav.getInt("ordNo"));
+		order.setOrdChgSq(mav.getInt("ordChgSq"));
+		order.setOrdDtlStat(TscConstants.OrderChangeStat.RETURN_CANCEL.value());
+		order.setRegNo(userNo);
+		order.setUpdNo(userNo);
+		order.setDelYn("Y");
+		
+		// 1. 주문변경정보 (TB_ORDER_CHANGE_DTL(수정))
+		orderChangeDao.updateOrderChangeDtlCancel(order);
+		
+		// 2. 주문정보 이력 등록 (TB_ORDER_DETAIL_HST(등록))
+		orderChangeDao.createOrderDtlHstCancel(order);
+		
+		// TODO
+		// 3. PG 실행 (취소시 추가결제금액 취소처리)
+		
+		return mav;
+	}
+	
 	/**
 	 * 반품완료
 	 * @param Order
@@ -770,7 +801,7 @@ public class TscOrderChangeService {
 			// 8. TB_ORDER_DETAIL_ITEM 등록
 			Order ordDtlItem = new Order();
 			ordDtlItem.setOrdDtlItemSq(order.getOrdDtlItemSq());
-			ordDtlItem.setOrdDtlNo(ordDtlNo);
+			ordDtlItem.setOrdDtlNo(exchangeOrdDtlNo);
 			ordDtlItem.setOrdDtlStat(ordDtlStat);
 			ordDtlItem.setOrdChgOpt(ordChgOpt);
 			ordDtlItem.setRegNo(regNo);
@@ -1089,4 +1120,34 @@ public class TscOrderChangeService {
 		
 		return mav;
 	}
+
+	/**
+	 * 주문 환불계좌
+	 *
+	 * @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;
+	}
 }

+ 565 - 0
src/main/java/com/style24/core/biz/service/TscOrderService.java

@@ -0,0 +1,565 @@
+package com.style24.core.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.core.biz.dao.TscOrderDao;
+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 TscOrderService {
+
+	@Autowired
+	private TscMessageByLocale message;
+
+	@Autowired
+	private Environment env;
+
+	@Autowired
+	private TscOrderDao 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, int userNo) {
+
+		// 1. 임시테이블 삭제
+		Order deleteOrder = new Order();
+		deleteOrder.setRegNo(userNo);
+		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(userNo);
+			updateData.setUpdNo(userNo);
+
+			// 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, int userNo) {
+		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(userNo);
+				updateData.setUpdNo(userNo);
+				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) {
+		orderDao.updateOrderAddr(order);
+	}
+	
+	/**
+	 * 반품/교환 > 회수지 정보 수정
+	 *
+	 * @param Order - 배송지 정보
+	 * @author jsh77b
+	 * @since 2021. 01. 18
+	 */
+	@Transactional("shopTxnManager")
+	public void updateOrderChange(Order order) {
+		orderDao.updateOrderChange(order);
+	}
+
+}

+ 1576 - 0
src/main/java/com/style24/persistence/mybatis/shop/TscOrder.xml

@@ -2,6 +2,1582 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.style24.core.biz.dao.TscOrderDao">
 
+	<!-- 주문목록 > 주문목록카운트 -->
+	<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', 'G685_33'
+			)
+			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>
+
 	<!-- 주문상세정보 생성 -->
 	<insert id="createOrderDetailForExchange" parameterType="Order">
 		/* order.createOrderDetailForExchange */

+ 2 - 4
src/main/java/com/style24/persistence/mybatis/shop/TscOrderChange.xml

@@ -78,7 +78,7 @@
 			AND    OD.ORD_NO = #{ordNo}
 			AND    OCD.DEL_YN = 'N'
 			AND    OCD.CHG_STAT IN (
-				'G685_20', 'G685_30', 'G685_40'
+				'G685_20', 'G685_30', 'G685_40', 'G685_33'
 			)
 			GROUP  BY OCD.ORD_DTL_NO
 		) OCD
@@ -1030,9 +1030,7 @@
 		AND    OCD.ORD_CHG_SQ = #{ordChgSq}
 		AND    OD.ORD_NO = #{ordNo}
 	</insert>
-	
-	
-	
+
 </mapper>