فهرست منبع

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.admin.git into develop

gagamel 5 سال پیش
والد
کامیت
57c203b130
26فایلهای تغییر یافته به همراه1862 افزوده شده و 312 حذف شده
  1. 34 0
      pom.xml
  2. 29 0
      src/main/java/com/style24/admin/biz/dao/TsaWithdrawDao.java
  3. 66 19
      src/main/java/com/style24/admin/biz/service/TsaWithdrawService.java
  4. 24 9
      src/main/java/com/style24/admin/biz/web/TsaOrderController.java
  5. 70 0
      src/main/java/com/style24/admin/biz/web/TsaWithdrawController.java
  6. 32 1
      src/main/java/com/style24/admin/support/env/TsaConstants.java
  7. 28 2
      src/main/java/com/style24/persistence/domain/Withdraw.java
  8. 10 15
      src/main/java/com/style24/persistence/mybatis/shop/TsaDelivery.xml
  9. 55 54
      src/main/java/com/style24/persistence/mybatis/shop/TsaDsiplay.xml
  10. 4 4
      src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml
  11. 2 2
      src/main/java/com/style24/persistence/mybatis/shop/TsaMorebetter.xml
  12. 137 1
      src/main/java/com/style24/persistence/mybatis/shop/TsaWithdraw.xml
  13. 16 3
      src/main/resources/config/application-style.yml
  14. 1 1
      src/main/webapp/WEB-INF/views/delivery/DeliveryListForm.html
  15. 4 4
      src/main/webapp/WEB-INF/views/display/MainContentsPopupForm.html
  16. 51 12
      src/main/webapp/WEB-INF/views/display/MainGnbContentsPopupForm.html
  17. 2 2
      src/main/webapp/WEB-INF/views/goods/GoodsListForm.html
  18. 17 3
      src/main/webapp/WEB-INF/views/marketing/CouponPopupForm.html
  19. 5 5
      src/main/webapp/WEB-INF/views/marketing/PlanTemplatePopupForm.html
  20. 118 73
      src/main/webapp/WEB-INF/views/order/OrderDetailForm.html
  21. 0 0
      src/main/webapp/WEB-INF/views/order/OrderDetailForm20210122.html
  22. 35 89
      src/main/webapp/WEB-INF/views/order/OrderListForm.html
  23. 764 0
      src/main/webapp/WEB-INF/views/order/OrderListForm20210511.html
  24. 8 12
      src/main/webapp/WEB-INF/views/pos/PosMainForm.html
  25. 349 0
      src/main/webapp/WEB-INF/views/withdraw/WithdrawDirectiveListForm.html
  26. 1 1
      src/main/webapp/WEB-INF/views/withdraw/WmsWithdrawListForm.html

+ 34 - 0
pom.xml

@@ -120,6 +120,40 @@
 	</dependencies>
 	
 	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-resources-plugin</artifactId>
+				<version>3.1.0</version>
+				<executions>
+					<execution>
+						<id>copyCore</id>
+						<phase>prepare-package</phase>
+						<goals>
+							<goal>copy-resources</goal>
+						</goals>
+						<configuration>
+							<resources>
+								<resource>
+									<directory>
+										${basedir}/../style24.core/target/classes
+									</directory>
+									<filtering>
+										false
+									</filtering>
+									<includes>
+										<include>**/*</include>
+									</includes>
+								</resource>
+							</resources>
+							<outputDirectory>
+								${basedir}/target/classes
+							</outputDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
 		<finalName>${project.name}</finalName>
 		<resources>
 			<resource>

+ 29 - 0
src/main/java/com/style24/admin/biz/dao/TsaWithdrawDao.java

@@ -89,6 +89,35 @@ public interface TsaWithdrawDao {
 	WmsWithdraw getOptionInfo(WmsWithdraw wmswithdraw);
 		
 	
+	/**
+	 * 회수지시 목록 건수
+	 * 
+	 * @param Withdraw
+	 * @return int
+	 * @author moon
+	 * @since 2021. 05. 10
+	 */
+	int getWithdrawDirectiveListCount(Withdraw withdraw);
+
+	/**
+	 * 회수지시 목록 
+	 * 
+	 * @param Withdraw
+	 * @return Collection<WmsWithdraw>
+	 * @author moon
+	 * @since 2021. 05. 10
+	 */
+	Collection<Withdraw> getWithdrawDirectiveList(Withdraw withdraw);
+	
+	/**
+	 * 재회수지시
+	 * 
+	 * @param Withdraw
+	 * @return 
+	 * @author moon
+	 * @since 2021. 05. 11
+	 */
+	void updateReRecallOrder(Withdraw withdraw);
 	
 	
 	/**

+ 66 - 19
src/main/java/com/style24/admin/biz/service/TsaWithdrawService.java

@@ -4,37 +4,23 @@ 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.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import lombok.extern.slf4j.Slf4j;
-
-//import com.gagaframework.web.parameter.GagaMap;
-//import com.gagaframework.web.util.GagaDateUtil;
-
 import com.style24.admin.biz.dao.TsaDeliveryDao;
-//import com.style24.admin.biz.dao.TsaOrderDao;
 import com.style24.admin.biz.dao.TsaWithdrawDao;
-import com.style24.persistence.domain.Delivery;
-//import com.style24.persistence.domain.Coupon;
-//import com.style24.persistence.domain.Delivery;
-//import com.style24.persistence.domain.Order;
-//import com.style24.persistence.domain.PayGate;
-//import com.style24.persistence.domain.Point;
+import com.style24.admin.support.security.session.TsaSession;
+import com.style24.persistence.domain.OrderChange;
 import com.style24.persistence.domain.Withdraw;
 import com.style24.persistence.domain.WithdrawExc;
 import com.style24.persistence.domain.WmsWithdraw;
+import com.style24.core.support.env.TscConstants.OrderChangeStat;
+import com.style24.core.biz.dao.TscOrderChangeDao;
+import com.style24.core.support.env.TscConstants.OrderChangeGb;
 
-//import com.style24.admin.support.env.TsaConstants;
-//import com.style24.admin.support.env.TsaConstants.OrderStat;
-//import com.style24.admin.support.env.TsaConstants.PayMeans;
-//import com.style24.admin.support.env.TsaConstants.PaymentStat;
-//import com.style24.admin.support.env.TsaConstants.PurchaseReturnGb;
-//import com.style24.admin.support.env.TsaConstants.UsacGb;
 
 import com.style24.core.support.message.TscMessageByLocale;
-//import com.style24.admin.support.security.session.TsaSession;
 
 /**
  * 회수관리 Service
@@ -55,6 +41,9 @@ public class TsaWithdrawService {
 	@Autowired
 	private TsaDeliveryDao deliveryDao;
 
+	@Autowired
+	private TscOrderChangeDao orderChangeDao;
+	
 	//@Autowired
 	//private TsaOrderDao orderDao;
 
@@ -152,6 +141,64 @@ public class TsaWithdrawService {
 		return wmsWithdrawList; 
 	}	
 	
+	
+	/**
+	 * 회수지시목록 건수
+	 *
+	 * @param Withdraw
+	 * @return
+	 * @author moon
+	 * @since 2021. 05. 10
+	 */
+	public int getWithdrawDirectiveListCount(Withdraw withdraw) {
+		return withdrawDao.getWithdrawDirectiveListCount(withdraw);
+	}
+	
+	/**
+	 * 회수지시 목록 
+	 *
+	 * @param Withdraw
+	 * @return
+	 * @author moon 
+	 * @since 2021. 05. 10
+	 */
+	public Collection<Withdraw> getWithdrawDirectiveList(Withdraw withdraw) {
+		return withdrawDao.getWithdrawDirectiveList(withdraw);
+	}
+	
+	/**
+	 * 재회수지시
+	 *
+	 * @param Withdraw
+	 * @return void
+	 * @author moon
+	 * @since 2021. 05. 11
+	 */
+	@Transactional("shopTxnManager")
+	public void reRecallOrder(Withdraw withdraw) {
+		Integer userNo = TsaSession.getInfo().getUserNo();
+		withdraw.setUpdNo(userNo);
+		if(OrderChangeGb.RETURN.value().equals(withdraw.getChgGb())) { // 반품요청
+			withdraw.setChgStat(OrderChangeStat.RETURN.value()); // 반품접수
+		} else { //교환요청
+			withdraw.setChgStat(OrderChangeStat.EXCHANGE.value()); // 교환접수 
+		}
+		withdrawDao.updateReRecallOrder(withdraw);
+		
+		// 주문상세변경 이력 
+		OrderChange ordChg = new OrderChange();
+		ordChg.setRegNo(userNo);
+		ordChg.setUpdNo(userNo);
+		ordChg.setOrdChgSq(withdraw.getOrdChgSq()); 
+		ordChg.setOrdDtlNo(withdraw.getOrdDtlNo()); 
+		ordChg.setChgStat(withdraw.getChgStat());
+		orderChangeDao.createOrderChangeDetailHst(ordChg);
+		
+	}
+	
+	
+	
+	
 	/**
 	 * 회수등록 - 조회(송장번호용)
 	 *

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

@@ -4,14 +4,8 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 
-import javax.jws.WebParam;
 import javax.servlet.http.HttpServletRequest;
 
-import com.gagaframework.web.rest.server.GagaResponseStatus;
-import com.style24.admin.biz.service.TsaCustomerService;
-import com.style24.admin.biz.service.TsaPgService;
-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;
 import org.springframework.core.env.Environment;
@@ -31,12 +25,17 @@ 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.rest.server.GagaResponseStatus;
 import com.gagaframework.web.util.GagaDateUtil;
 import com.gagaframework.web.util.GagaFileUtil;
+import com.style24.admin.biz.service.TsaPgService;
 import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.support.controller.TsaBaseController;
+import com.style24.admin.support.env.TsaConstants;
 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.TscPageRequest;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.OrderSample;
@@ -83,8 +82,11 @@ public class TsaOrderController extends TsaBaseController {
 		mav.addObject("siteCdList"		, rendererService.getAvailCommonCodeList("G012"));		// 사이트구분
 		mav.addObject("mallGbList"		, rendererService.getAvailCommonCodeList("G011"));		// 몰구분
 		mav.addObject("supplyCompList"	, rendererService.getSupplyCompanyList());				// 공급업제목록
-		mav.addObject("ordStatList"		, rendererService.getAvailCommonCodeList("G012"));		// 주문상태코드
-		mav.addObject("ordDtlStatList"	, rendererService.getAvailCommonCodeList("G013"));		// 주문상세상태코드
+		
+		// 2021.05.11 프론트기준으로 상태값 정리
+		mav.addObject("ordDtlStatList"	, rendererService.getCommonCodeList("G013", "Y", new String[] {"G013_10", "G013_11", "G013_25", "G013_35", "G013_55", "G013_97", "G013_98", "G013_99"}));
+		//mav.addObject("ordStatList"		, rendererService.getAvailCommonCodeList("G012"));		// 주문상태코드
+		//mav.addObject("ordDtlStatList"	, rendererService.getAvailCommonCodeList("G013"));		// 주문상세상태코드
 
 		mav.addObject("chgStatList"		, rendererService.getAvailCommonCodeList("G685"));		// 주문변경요청상태코드
 		mav.addObject("chgGbList"		, rendererService.getAvailCommonCodeList("G680"));		// 주문변경구분코드
@@ -192,13 +194,25 @@ public class TsaOrderController extends TsaBaseController {
 		Order order = new Order();
 		order.setOrdNo(ordNo);
 		order.setDelYn("N");
+		
+		// 2021.05.11 배송비수정여부추가
+		Collection<Order> orderDetailList = orderService.getOrderDetailList(order);
+		String allCanYn = "Y";
+		for (Order orderDetail : orderDetailList) {
+			if ("Y".equals(allCanYn)
+				&& !TsaConstants.OrderDetailStat.DEPOSIT_WAIT.value().equals(orderDetail.getOrdDtlStat())
+				&& !TsaConstants.OrderDetailStat.PAYMENT_COMPLETE.value().equals(orderDetail.getOrdDtlStat())
+				&& !TsaConstants.OrderDetailStat.GOODS_PREPARE.value().equals(orderDetail.getOrdDtlStat())) {
+				allCanYn = "N";
+			}
+		}
 
 		// 1. 주문기본정보
 		mav.addObject("ordNo"					, ordNo);												// 주문번호
 		mav.addObject("userNo"					, TsaSession.getInfo().getUserNo());					// 관리자번호
 
 		mav.addObject("orderInfo"				, orderService.getOrderInfoList(order));				// 주문기본정보
-		mav.addObject("orderGoodsInfo"			, orderService.getOrderDetailList(order));				// 주문상품정보
+		mav.addObject("orderGoodsInfo"			, orderDetailList);										// 주문상품정보
 		mav.addObject("orderFreeGiftInfo"		, orderService.getOrderFreeGiftList(order));			// 주문사은품정보 2020.12.16 추가
 		mav.addObject("orderDeliveryAddrInfo"	, orderService.getDeliveryAddrList(order));				// 배송정보
 		mav.addObject("orderPaymentInfo"		, orderService.getOrderPaymentBasicInfoList(order));	// 결제정보
@@ -211,6 +225,7 @@ public class TsaOrderController extends TsaBaseController {
 		// 3. 주문메모정보
 		mav.addObject("orderCounselInfo"		, orderService.getOrderCounselInfo(order));				// 상담내역
 		mav.addObject("orderAdminMemoInfo"		, orderService.getOrderMemoList(order));				// 관리자메모목록
+		mav.addObject("allCanYn"				, allCanYn);											// 배송지수정가능여부
 
 		mav.setViewName("order/OrderDetailForm");
 

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

@@ -20,6 +20,7 @@ import lombok.extern.slf4j.Slf4j;
 import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.rest.server.GagaResponse;
 import com.style24.persistence.TscPageRequest;
+import com.style24.persistence.domain.CommonCode;
 import com.style24.persistence.domain.Delivery;
 import com.style24.persistence.domain.Pos;
 import com.style24.persistence.domain.Withdraw;
@@ -220,6 +221,75 @@ public class TsaWithdrawController extends TsaBaseController {
 	}	
 	
 	
+	/**
+	 * 회수지시목록 화면 
+	 *
+	 * @param
+	 * @return
+	 * @throws Exception
+	 * @author moon
+	 * @since 2021. 05. 10
+	 */
+	@GetMapping("/directive/form")
+	@ResponseBody
+	public ModelAndView withdrawDirectiveListForm() throws Exception {
+		ModelAndView mav = new ModelAndView();
+
+		mav.addObject("wdShipStateList", rendererService.getAvailCommonCodeList("G320"));
+
+		mav.setViewName("/withdraw/WithdrawDirectiveListForm");
+
+		return mav;
+	}
+	
+	/**
+	 *회수목록 조회 
+	 * 
+	 * @param
+	 * @return
+	 * @throws Exception
+	 * @author moon
+	 * @since 2021. 05. 10
+	 */
+	@PostMapping("/direct/list")
+	@ResponseBody
+	public GagaMap withdrawDirectiveList(@RequestBody Withdraw withdraw) throws Exception {
+		
+		GagaMap result = new GagaMap();
+		withdraw.setPageable(new TscPageRequest(withdraw.getPageNo() - 1, withdraw.getPageSize()));
+		
+		withdraw.getPageable().setTotalCount(withdrawService.getWithdrawDirectiveListCount(withdraw));
+		
+		if ("N".equals(withdraw.getPageingYn())) {
+			withdraw.setPageable(null);
+		}
+		result.set("pageing", withdraw);
+		log.info("withdraw {}"+withdraw);
+		Collection<Withdraw> list = withdrawService.getWithdrawDirectiveList(withdraw);
+		
+		result.set("directList", list);
+		
+
+		return result;
+	}	
+	
+	/**
+	 * 출고처지정 취소 
+	 *
+	 * @param
+	 * @return
+	 * @throws Exception
+	 * @author moon
+	 * @since 2020. 04. 20
+	 */
+	@PostMapping("/direct/recallorder")
+	@ResponseBody
+	public GagaResponse reRecallOrder(@RequestBody Withdraw param) throws Exception {
+		withdrawService.reRecallOrder(param);
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+	
+	
 	
 	/**
 	 * 회수등록 화면

+ 32 - 1
src/main/java/com/style24/admin/support/env/TsaConstants.java

@@ -58,5 +58,36 @@ public class TsaConstants {
 		public String value() {
 			return value;
 		}
-	}	
+	}
+	
+	// 주문상세상태
+		public enum OrderDetailStat {
+			ORDER_RECEIPT("G013_00"),			// 주문접수
+			DEPOSIT_WAIT("G013_10"),			// 입금대기
+			PAYMENT_WAIT("G013_11"),			// 추가결제대기
+			ORDER_WAIT_PRICE("G013_18"),		// 발주대기-가격차이
+			ORDER_WAIT_POST("G013_19"),			// 발주대기-우편번호상이
+			PAYMENT_COMPLETE("G013_20"),		// 결제완료
+			REFUND_CONFIRM_WAIT("G013_25"),		// 교환대기
+			GOODS_PREPARE("G013_30"),			// 상품준비중
+			DELIVERY_LOC_ASSIGN("G013_35"),		// 출고처 지정
+			DELIVERY_PREPARE("G013_40"),		// 배송준비중
+			SHIPPING("G013_50"),				// 배송중
+			SHIP_COMPLETE("G013_55"),			// 출고완료
+			DELIVERY_COMPLETE("G013_60"),		// 배송완료
+			PURCHASE_CONFIRM("G013_70"),		// 구매확정
+			EXCHANGE_CANCEL("G013_97"),			// 교환취소
+			PAYMENT_BEFORE_CANCEL("G013_98"),	// 결제전주문취소
+			PAYMENT_AFTER_CANCEL("G013_99");	// 결제후주문취소
+
+			private String value;
+
+			private OrderDetailStat(String value) {
+				this.value = value;
+			}
+
+			public String value() {
+				return value;
+			}
+		}
 }

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

@@ -25,8 +25,9 @@ public class Withdraw extends TscBaseDomain {
 	private int pageUnit = 10;
 	private int rnum;
 	
+
 	
-	// 환불컨펌 
+	// 회수 
 
 	private String wdInvoiceNo; 
 	private String rfndStat; 
@@ -41,10 +42,32 @@ public class Withdraw extends TscBaseDomain {
 	private String goodsCd;
 	private String optCd1;
 	private String optCd2;
-
 	private String chgMemo;
 	private String chgReason;
 	private String completeDt;
+	private String chgGbNm;
+	private String chgReasonNm;
+	private String wdShipStateNm;
+	private String wdReasonCdNm;
+	private String chgStatNm; 
+	private String chgGb;                               // 변경구분 g680
+	private String wdShipState;                         // 배송업체회수상태 g320
+	private String wdStateDt;                           // 회수상태 수신일시 
+	private String wdReasonCd;                          // 미회수사유 g321 g322
+	private String wdBfSendYn;                          // 교환 선발송 여부 
+	private String sendYn;         					    // 전송여부
+	private String chgStat;                             // 변경상태 g685
+	private String goodsNm;                             // 상품명
+	private String wdStdt;  							// 배송시작일시
+	private String recipNm;        					  	// 수취인명
+	private String chgerNm;                             // 변경자명
+	private String chgerPhnno;                          // 변경자휴대전화번호
+	private String chgerTelno;                          // 변경자전화번호
+	private String chgerZipcode;                        // 변경자우편번호
+	private String chgerBaseAddr;                       // 변경자기본주소
+	private String chgerDtlAddr;                        // 변경자상세주소
+	private String ordTelno;                            // 주문자전화번호
+	private String ordEmail;                            // 주문자이메일	
 	
 	private Integer ordNo;
 	private Integer ordDtlNo; 
@@ -60,6 +83,9 @@ public class Withdraw extends TscBaseDomain {
 	
 	
 	
+								 
+	
+	
 	
 	/*
 	// 회수

+ 10 - 15
src/main/java/com/style24/persistence/mybatis/shop/TsaDelivery.xml

@@ -558,12 +558,11 @@
 						     , O.SITE_CD                                         -- 사이트코드
 						     , O.ORD_NO                                          -- 주문번호
 						     , OD.ORD_DTL_NO                                     -- 주문상세번호
-						     , IT.ITEM_CD AS GOODS_CD                            -- 상품코드
+						     , OD.GOODS_CD                                       -- 상품코드
 						FROM   TB_ORDER O
 						 JOIN  TB_ORDER_DETAIL OD      ON O.ORD_NO = OD.ORD_NO
 						 JOIN  TB_DELIVERY_ADDR DA     ON OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ AND OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ
-						 JOIN  TB_ORDER_DETAIL_ITEM IT ON OD.ORD_NO       = IT.ORD_NO       AND OD.ORD_DTL_NO   = IT.ORD_DTL_NO
-						 JOIN  TB_GOODS G              ON IT.ITEM_CD      = G.GOODS_CD
+						 JOIN  TB_GOODS G              ON OD.GOODS_CD      = G.GOODS_CD
 						WHERE 1=1 
 						<if test="delvGb != null and delvGb != ''">
 						AND    'D' = #{delvGb} -- 배송지시
@@ -591,13 +590,12 @@
 						     , O.SITE_CD                                -- 사이트코드
 						     , O.ORD_NO                                 -- 주문번호
 						     , OCD.ORD_DTL_NO                           -- 주문상세번호
-						     , IT.ITEM_CD AS GOODS_CD                   -- 상품코드
+						     , OD.GOODS_CD                              -- 상품코드
 						FROM   TB_ORDER_CHANGE OC          
 						JOIN   TB_ORDER_CHANGE_DETAIL OCD ON OC.ORD_CHG_SQ  = OCD.ORD_CHG_SQ 
 						JOIN   TB_ORDER_DETAIL OD         ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
 						JOIN   TB_ORDER O                 ON OD.ORD_NO      = O.ORD_NO
-						JOIN   TB_ORDER_DETAIL_ITEM IT    ON OD.ORD_NO      = IT.ORD_NO     AND OD.ORD_DTL_NO     = IT.ORD_DTL_NO
-						JOIN   TB_GOODS G                 ON IT.ITEM_CD     = G.GOODS_CD
+						JOIN   TB_GOODS G                 ON OD.GOODS_CD     = G.GOODS_CD
 						JOIN   TB_DELIVERY_LOC D          ON OD.DELV_LOC_CD = D.DELV_LOC_CD AND OD.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
 						WHERE  1=1 
 						<if test="delvGb != null and delvGb != ''">
@@ -613,7 +611,7 @@
 						<if test="edDate != null and edDate != ''">
 						AND    OC.REG_DT <![CDATA[<]]> STR_TO_DATE(REPLACE(#{edDate},'-','')+1 , '%Y%m%d%H%i%s')
 						</if>
-						AND    OCD.CHG_STAT IN ('G685_30','G685_40') -- 반품요청,교환요청
+						AND    OCD.CHG_STAT IN ('G685_30','G685_31') -- 회수요청 상품검수중
 						<if test="siteCd != null and siteCd != ''">
 						AND    O.SITE_CD = #{siteCd}
 						</if>
@@ -638,12 +636,11 @@
 						     , O.SITE_CD                                         -- 사이트코드
 						     , O.ORD_NO                                          -- 주문번호
 						     , OD.ORD_DTL_NO                                     -- 주문상세번호
-						     , IT.ITEM_CD AS GOODS_CD                            -- 상품코드
+						     , OD.GOODS_CD                                       -- 상품코드
 						     , G.GOODS_NM                                        -- 상품명
 						     , DA.RECIP_NM                                       -- 수취인명
 						     , DA.RECIP_PHNNO                                    -- 수취인휴대전화번호
 						     , DA.RECIP_TELNO                                    -- 수취인전화번호
-						  --   , DA.RECIP_EMAIL                                    -- 수취인이메일
 						     , DA.RECIP_ZIPCODE                                  -- 수취인우편번호
 						     , DA.RECIP_BASE_ADDR                                -- 수취인기본주소
 						     , DA.RECIP_DTL_ADDR                                 -- 수취인상세주소
@@ -654,8 +651,7 @@
 						FROM   TB_ORDER O
 						 JOIN  TB_ORDER_DETAIL OD      ON O.ORD_NO = OD.ORD_NO
 						 JOIN  TB_DELIVERY_ADDR DA     ON OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ AND OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ
-						 JOIN  TB_ORDER_DETAIL_ITEM IT ON OD.ORD_NO       = IT.ORD_NO       AND OD.ORD_DTL_NO   = IT.ORD_DTL_NO
-						 JOIN  TB_GOODS G              ON IT.ITEM_CD      = G.GOODS_CD
+						 JOIN  TB_GOODS G              ON OD.GOODS_CD      = G.GOODS_CD
 						WHERE 1=1 
 						<if test="delvGb != null and delvGb != ''">
 						AND    'D' = #{delvGb} -- 배송지시
@@ -683,7 +679,7 @@
 						     , O.SITE_CD                                -- 사이트코드
 						     , O.ORD_NO                                 -- 주문번호
 						     , OCD.ORD_DTL_NO                           -- 주문상세번호
-						     , IT.ITEM_CD AS GOODS_CD                   -- 상품코드
+						     , OD.GOODS_CD                              -- 상품코드
 						     , G.GOODS_NM                               -- 상품명
 						     , D.RTN_LOC_NM          AS RECIP_NM        -- 수취인명
 						     , NULL                  AS RECIP_PHNNO     -- 수취인휴대전화번호
@@ -699,8 +695,7 @@
 						JOIN   TB_ORDER_CHANGE_DETAIL OCD ON OC.ORD_CHG_SQ  = OCD.ORD_CHG_SQ 
 						JOIN   TB_ORDER_DETAIL OD         ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
 						JOIN   TB_ORDER O                 ON OD.ORD_NO      = O.ORD_NO
-						JOIN   TB_ORDER_DETAIL_ITEM IT    ON OD.ORD_NO      = IT.ORD_NO     AND OD.ORD_DTL_NO     = IT.ORD_DTL_NO
-						JOIN   TB_GOODS G                 ON IT.ITEM_CD     = G.GOODS_CD
+						JOIN   TB_GOODS G                 ON OD.GOODS_CD     = G.GOODS_CD
 						JOIN   TB_DELIVERY_LOC D          ON OD.DELV_LOC_CD = D.DELV_LOC_CD AND OD.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
 						WHERE  1=1 
 						<if test="delvGb != null and delvGb != ''">
@@ -716,7 +711,7 @@
 						<if test="edDate != null and edDate != ''">
 						AND    OC.REG_DT <![CDATA[<]]> STR_TO_DATE(REPLACE(#{edDate},'-','')+1 , '%Y%m%d%H%i%s')
 						</if>
-						AND    OCD.CHG_STAT IN ('G685_30','G685_40') -- 반품요청,교환요청
+						AND    OCD.CHG_STAT IN ('G685_30','G685_31') -- 회수요청 상품검수중
 						<if test="siteCd != null and siteCd != ''">
 						AND    O.SITE_CD = #{siteCd}
 						</if>

+ 55 - 54
src/main/java/com/style24/persistence/mybatis/shop/TsaDsiplay.xml

@@ -1759,63 +1759,64 @@
 
 	<!-- 메인전시 컨텐츠 탭영역 미리보기 리스트 -->
 	<select id="getContentsTabPreviewList" parameterType="Contents" resultType="Contents">
-		/* TsaDisplay.saveContentsGoods */
+		/* TsaDisplay.getContentsTabPreviewList */
 		SELECT 	STR_TITLE3
-				, DISP_STDT
-				, DISP_EDDT
-				, MAX(GROUP1_TITLE) AS GROUP1_TITLE
-				, MAX(GROUP1_BRAND_CD) AS GROUP1_BRAND_CD
-				, MAX(GROUP1_BRAND_NM) AS GROUP1_BRAND_NM
-				, MAX(GROUP1_BRAND_IMG) AS GROUP1_BRAND_IMG
-				, MAX(GROUP2_TITLE) AS GROUP2_TITLE
-				, MAX(GROUP2_BRAND_CD) AS GROUP2_BRAND_CD
-				, MAX(GROUP2_BRAND_NM) AS GROUP2_BRAND_NM
-				, MAX(GROUP2_BRAND_IMG) AS GROUP2_BRAND_IMG
-				, MAX(GROUP3_TITLE) AS GROUP3_TITLE
-				, MAX(GROUP3_BRAND_CD) AS GROUP3_BRAND_CD
-				, MAX(GROUP3_BRAND_NM) AS GROUP3_BRAND_NM
-				, MAX(GROUP3_BRAND_IMG) AS GROUP3_BRAND_IMG
+		      , DISP_STDT
+		      , DISP_EDDT
+		      , MAX(GROUP1_TITLE) AS GROUP1_TITLE
+		      , MAX(GROUP1_BRAND_CD) AS GROUP1_BRAND_CD
+		      , MAX(GROUP1_BRAND_NM) AS GROUP1_BRAND_NM
+		      , MAX(GROUP1_BRAND_IMG) AS GROUP1_BRAND_IMG
+		      , MAX(GROUP2_TITLE) AS GROUP2_TITLE
+		      , MAX(GROUP2_BRAND_CD) AS GROUP2_BRAND_CD
+		      , MAX(GROUP2_BRAND_NM) AS GROUP2_BRAND_NM
+		      , MAX(GROUP2_BRAND_IMG) AS GROUP2_BRAND_IMG
+		      , MAX(GROUP3_TITLE) AS GROUP3_TITLE
+		      , MAX(GROUP3_BRAND_CD) AS GROUP3_BRAND_CD
+		      , MAX(GROUP3_BRAND_NM) AS GROUP3_BRAND_NM
+		      , MAX(GROUP3_BRAND_IMG) AS GROUP3_BRAND_IMG
 		FROM (
-				SELECT  STR_TITLE3
-					, DISP_STDT
-					, DISP_EDDT
-					, CASE WHEN STR_TITLE2 = 1 THEN TITLE END AS GROUP1_TITLE
-					, CASE WHEN STR_TITLE2 = 1 THEN GROUP_CONCAT(BRAND_GROUP_NO SEPARATOR ',') END GROUP1_BRAND_CD
-					, CASE WHEN STR_TITLE2 = 1 THEN GROUP_CONCAT(BRAND_GROUP_NM SEPARATOR ',') END GROUP1_BRAND_NM
-					, CASE WHEN STR_TITLE2 = 1 THEN GROUP_CONCAT(LOGO_FILE_NM SEPARATOR ',') END GROUP1_BRAND_IMG
-					, CASE WHEN STR_TITLE2 = 2 THEN TITLE END AS GROUP2_TITLE
-					, CASE WHEN STR_TITLE2 = 2 THEN GROUP_CONCAT(BRAND_GROUP_NO SEPARATOR ',') END GROUP2_BRAND_CD
-					, CASE WHEN STR_TITLE2 = 2 THEN GROUP_CONCAT(BRAND_GROUP_NM SEPARATOR ',') END GROUP2_BRAND_NM
-					, CASE WHEN STR_TITLE2 = 2 THEN GROUP_CONCAT(LOGO_FILE_NM SEPARATOR ',') END GROUP2_BRAND_IMG
-					, CASE WHEN STR_TITLE2 = 3 THEN TITLE END AS GROUP3_TITLE
-					, CASE WHEN STR_TITLE2 = 3 THEN GROUP_CONCAT(BRAND_GROUP_NO SEPARATOR ',') END GROUP3_BRAND_CD
-					, CASE WHEN STR_TITLE2 = 3 THEN GROUP_CONCAT(BRAND_GROUP_NM SEPARATOR ',') END GROUP3_BRAND_NM
-					, CASE WHEN STR_TITLE2 = 3 THEN GROUP_CONCAT(LOGO_FILE_NM SEPARATOR ',') END GROUP3_BRAND_IMG
-				FROM (
-					SELECT
-							B.STR_TITLE3
-							, B.STR_TITLE2
-							, B.DISP_STDT
-							, B.DISP_EDDT
-							, B.STR_TITLE1     AS TITLE
-							, A.BRAND_GROUP_NO
-							, CASE WHEN A.DISP_NM_LANG = 'EN' THEN A.BRAND_GROUP_ENM
-							ELSE A.BRAND_GROUP_KNM
-							END              AS BRAND_GROUP_NM
-							, A.LOGO_FILE_NM
-							, B.DISP_ORD
-					FROM   TB_BRAND_GROUP A
-						, TB_CONTENTS_PREVIEW B
-					WHERE  A.BRAND_GROUP_NO = B.STR_VAR1
-					AND    A.USE_YN = 'Y'
-					AND	   B.CATE_NO = #{cateNo}
-					AND    B.CONTENTS_LOC = #{contentsLoc}
-					AND    B.DISP_STDT <![CDATA[<=]]> NOW()
-					AND    B.DISP_EDDT <![CDATA[>=]]> NOW()
-					ORDER  BY B.DISP_ORD, B.CONTENTS_SQ
-				) T
-			GROUP BY STR_TITLE2
+		        SELECT  STR_TITLE3
+		              , DISP_STDT
+		              , DISP_EDDT
+		              , CASE WHEN STR_TITLE2 = 1 THEN TITLE END AS GROUP1_TITLE
+		              , CASE WHEN STR_TITLE2 = 1 THEN GROUP_CONCAT(BRAND_GROUP_NO SEPARATOR ',') END GROUP1_BRAND_CD
+		              , CASE WHEN STR_TITLE2 = 1 THEN GROUP_CONCAT(BRAND_GROUP_NM SEPARATOR ',') END GROUP1_BRAND_NM
+		              , CASE WHEN STR_TITLE2 = 1 THEN GROUP_CONCAT(LOGO_FILE_NM SEPARATOR ',') END GROUP1_BRAND_IMG
+		              , CASE WHEN STR_TITLE2 = 2 THEN TITLE END AS GROUP2_TITLE
+		              , CASE WHEN STR_TITLE2 = 2 THEN GROUP_CONCAT(BRAND_GROUP_NO SEPARATOR ',') END GROUP2_BRAND_CD
+		              , CASE WHEN STR_TITLE2 = 2 THEN GROUP_CONCAT(BRAND_GROUP_NM SEPARATOR ',') END GROUP2_BRAND_NM
+		              , CASE WHEN STR_TITLE2 = 2 THEN GROUP_CONCAT(LOGO_FILE_NM SEPARATOR ',') END GROUP2_BRAND_IMG
+		              , CASE WHEN STR_TITLE2 = 3 THEN TITLE END AS GROUP3_TITLE
+		              , CASE WHEN STR_TITLE2 = 3 THEN GROUP_CONCAT(BRAND_GROUP_NO SEPARATOR ',') END GROUP3_BRAND_CD
+		              , CASE WHEN STR_TITLE2 = 3 THEN GROUP_CONCAT(BRAND_GROUP_NM SEPARATOR ',') END GROUP3_BRAND_NM
+		              , CASE WHEN STR_TITLE2 = 3 THEN GROUP_CONCAT(LOGO_FILE_NM SEPARATOR ',') END GROUP3_BRAND_IMG
+		        FROM (
+		            SELECT
+		                  B.STR_TITLE3
+		                  , B.STR_TITLE2
+		                  , B.DISP_STDT
+		                  , B.DISP_EDDT
+		                  , B.STR_TITLE1     AS TITLE
+		                  , A.BRAND_GROUP_NO
+		                  , CASE WHEN A.DISP_NM_LANG = 'EN' THEN A.BRAND_GROUP_ENM
+		                  ELSE A.BRAND_GROUP_KNM
+		                  END              AS BRAND_GROUP_NM
+		                  , A.LOGO_FILE_NM
+		                  , B.DISP_ORD
+		            FROM   TB_BRAND_GROUP A
+		                 , TB_CONTENTS_PREVIEW B
+		            WHERE  A.BRAND_GROUP_NO = B.STR_VAR1
+		            AND    A.USE_YN = 'Y'
+		            AND	   B.CATE_NO = #{cateNo}
+		            AND    B.CONTENTS_LOC = #{contentsLoc}
+		            AND    B.DISP_STDT <![CDATA[<=]]> NOW()
+		            AND    B.DISP_EDDT <![CDATA[>=]]> NOW()
+		            ORDER  BY B.DISP_ORD, B.CONTENTS_SQ
+		        ) T
+		    GROUP BY  T.STR_TITLE3, T.DISP_STDT, T.DISP_EDDT , T.STR_TITLE2, T.TITLE
 		) Z
+		GROUP BY  Z.STR_TITLE3 , Z.DISP_STDT , Z.DISP_EDDT
 	</select>
 
 	<!-- 메인전시 GnbTab 미리보기 삭제 -->

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

@@ -403,9 +403,9 @@
 	<select id="getGoodsList" parameterType="GoodsSearch" resultType="Goods">
 		/* TsaGoods.getGoodsList */
 		SELECT Q.*
-		    , (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
+		  --  , (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
 		    , FN_GET_USER_NM(UPD_NO) AS UPD_NM
@@ -413,7 +413,7 @@
 		    , CASE IFNULL((SELECT COUNT(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = Q.GOODS_CD AND COLOR_CD = Q.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ),0) 
 		            WHEN 0 THEN 'N'
 		            ELSE 'Y' END AS GOODS_IMAGE_YN
-		    , FN_GET_BENEFIT_PRICE('P',Q.GOODS_CD, Q.CURR_PRICE,'') AS BENEFIT_PRICE
+		    , IFNULL(GB.PC_CURR_PRICE, Q.CURR_PRICE)  AS BENEFIT_PRICE
 		FROM (     
 		SELECT Z.*
 		FROM (

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

@@ -203,7 +203,7 @@
 		  AND A.TARGET_GB = 'G260_10'
 		  AND A.GOODS_GB IN ('G800_10','G800_20')
  		  AND A.DEL_YN = 'N'
-		GROUP BY A.TMTB_GOODS_SQ
+		GROUP BY A.TMTB_GOODS_SQ, B.TMTB_APPLY_GOODS_SQ
 	</select>
 
 	<select id="getMorebetterExceptGoodsList" parameterType="MoreBetterGoods" resultType="MoreBetterGoods">
@@ -233,7 +233,7 @@
 		  AND A.TARGET_GB = 'G260_10'
 		  AND A.GOODS_GB IN ('G800_30')
 		  AND A.DEL_YN = 'N'
-		GROUP BY A.TMTB_GOODS_SQ
+		GROUP BY A.TMTB_GOODS_SQ, B.TMTB_APPLY_GOODS_SQ
 	</select>
 
 	<select id="getMorebetterBurdenList" parameterType="Integer" resultType="MoreBetterBurden">

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

@@ -218,7 +218,7 @@
 
 	<!-- 회수예외 처리완료-->
 	<update id="updateWithdrawException" parameterType="WithdrawExc" >
-		/* TsaWithdraw.deleteBangoods */
+		/* TsaWithdraw.updateWithdrawException */
 		UPDATE TB_ORDER_RECALL_EXCEPTION SET
 		  RECALL_STAT = #{recallStat}
 		, RECALL_STAT_DT = NOW()
@@ -234,5 +234,141 @@
 			WHERE OPT_CD = #{skucode} 
 	</select>
 	
+	<!-- 회수지시 목록 건수 -->
+	<select id="getWithdrawDirectiveListCount" parameterType="Withdraw" resultType="int">
+		/* TsaWithdraw.getWithdrawDirectiveListCount */
+				SELECT COUNT(*) AS TOTCNT
+				  FROM (		
+						SELECT 
+						       O.ORD_NO                                 -- 주문번호
+						     , OCD.ORD_DTL_NO                           -- 주문상세번호
+						     , OD.GOODS_CD                   -- 상품코드
+						FROM   TB_ORDER_CHANGE OC          
+						JOIN   TB_ORDER_CHANGE_DETAIL OCD ON OC.ORD_CHG_SQ  = OCD.ORD_CHG_SQ 
+						JOIN   TB_ORDER_DETAIL OD         ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+						JOIN   TB_ORDER O                 ON OD.ORD_NO      = O.ORD_NO
+						JOIN   TB_GOODS G                 ON OD.GOODS_CD     = G.GOODS_CD
+						JOIN   TB_DELIVERY_LOC D          ON OD.DELV_LOC_CD = D.DELV_LOC_CD AND OD.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
+						WHERE  1=1 
+						<include refid="getWithdrawDirectiveCondition_sql"/>
+					) A
+
+	</select>
 	
+	<!-- 회수지시 목록 -->
+	<select id="getWithdrawDirectiveList" parameterType="Withdraw" resultType="Withdraw">
+		/* TsaWithdraw.getWithdrawDirectiveList */
+		SELECT Z.*
+		     , FN_GET_CODE_NM('G680', Z.CHG_GB) AS CHG_GB_NM
+		     , CASE WHEN CHG_GB = 'G680_30' THEN FN_GET_CODE_NM('G688', Z.CHG_REASON) ELSE FN_GET_CODE_NM('G689', Z.CHG_REASON) END AS CHG_REASON_NM
+		     , FN_GET_CODE_NM('G320', Z.WD_SHIP_STATE) AS WD_SHIP_STATE_NM
+		     , CASE WHEN WD_SHIP_STATE = '12' THEN   FN_GET_CODE_NM('G321', Z.WD_REASON_CD)
+		            WHEN WD_SHIP_STATE = '84' THEN   FN_GET_CODE_NM('G322', Z.WD_REASON_CD) ELSE '' END AS WD_REASON_CD_NM
+		     , FN_GET_CODE_NM('G685', Z.CHG_STAT) AS CHG_STAT_NM
+		FROM (
+		    SELECT A.*, ROW_NUMBER() OVER(ORDER BY  A.ORD_CHG_SQ, A.ORD_NO DESC, A.ORD_DTL_NO )  RNUM 
+		    FROM ( 
+				SELECT A.* 
+				  FROM (
+						SELECT DISTINCT
+						       OC.ORD_CHG_SQ                            -- 주문변경번호 
+						     , OC.CHG_GB                                -- 변경구분 G680
+						     , OC.CHG_REASON                            -- 변경사유 반품G688 교환G689
+						     , OC.WD_GB                                 -- 직접배송여부
+						     , DATE_FORMAT(OC.REG_DT, '%Y-%m-%d') AS REG_DT  -- 회수요청일
+						     , OC.WD_INVOICE_NO                         -- 회수송장번호
+						     , OC.WD_SHIP_STATE                         -- 배송업체회수상태 G320
+						     , OC.WD_STATE_DT                           -- 회수상태 수신일시 
+						     , OC.WD_REASON_CD                          -- 미회수사유 G321 G322
+						     , OC.WD_BF_SEND_YN                         -- 교환 선발송 여부 
+						     , OC.WD_INVOICE_SEND_YN AS SEND_YN         -- 전송여부
+						     , O.ORD_NO                                 -- 주문번호
+						     , OCD.ORD_DTL_NO                           -- 주문상세번호
+						     , OCD.CHG_STAT                             -- 변경상태 G685
+						     , OD.GOODS_CD                              -- 상품코드
+						     , G.GOODS_NM                               -- 상품명
+						     , OCD.CHG_QTY                              -- 변경수량
+						     , DATE_FORMAT(OC.WD_STDT, '%Y-%m-%d %H:%i:%S') AS WD_STDT  -- 배송시작일시
+						     , DATE_FORMAT(OC.WD_EDDT, '%Y-%m-%d %H:%i:%S') AS WD_EDDT  -- 배송종료일시
+						     , D.RTN_LOC_NM          AS RECIP_NM        -- 수취인명
+						     , OC.CHGER_NM                              -- 변경자명
+						     , OC.CHGER_PHNNO                           -- 변경자휴대전화번호
+						     , OC.CHGER_TELNO                           -- 변경자전화번호
+						     , OC.CHGER_ZIPCODE                         -- 변경자우편번호
+						     , OC.CHGER_BASE_ADDR                       -- 변경자기본주소
+						     , OC.CHGER_DTL_ADDR                        -- 변경자상세주소
+						     , O.ORD_NM                                 -- 주문자명
+						     , O.ORD_PHNNO                              -- 주문자휴대전화번호
+						     , O.ORD_TELNO                              -- 주문자전화번호
+						     , O.ORD_EMAIL                              -- 주문자이메일
+						FROM   TB_ORDER_CHANGE OC          
+						JOIN   TB_ORDER_CHANGE_DETAIL OCD ON OC.ORD_CHG_SQ  = OCD.ORD_CHG_SQ 
+						JOIN   TB_ORDER_DETAIL OD         ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+						JOIN   TB_ORDER O                 ON OD.ORD_NO      = O.ORD_NO
+						JOIN   TB_GOODS G                 ON OD.GOODS_CD     = G.GOODS_CD
+						JOIN   TB_DELIVERY_LOC D          ON OD.DELV_LOC_CD = D.DELV_LOC_CD AND OD.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
+						WHERE  1=1 
+						<include refid="getWithdrawDirectiveCondition_sql"/>
+					) A
+				ORDER BY A.ORD_CHG_SQ, A.ORD_NO DESC, A.ORD_DTL_NO
+				<include refid="getListPagingCondition_sql"/>
+	</select>
+
+    <!-- 환불관리 목록 조회 조건  -->
+	<sql id="getWithdrawDirectiveCondition_sql">
+		<if test="ordNm != null and ordNm != ''">
+			AND O.ORD_NM = #{ordNm}
+		</if>
+		<if test="ordNo != null and ordNo != ''">
+			AND O.ORD_NO = #{ordNo}
+		</if>
+		<if test="ordChgSq != null and ordChgSq != ''">
+			AND OC.ORD_CHG_SQ = #{ordChgSq}
+		</if>		
+		<if test="chgGb == null or chgGb == ''">
+			AND    OC.CHG_GB IN ('G680_30','G680_40') -- 반품요청,교환요청
+		</if>
+		<if test="chgGb != null and chgGb != ''">
+			AND OC.CHG_GB = #{chgGb}
+		</if>
+		
+		<if test="chgStat != null and chgStat != ''">
+			AND OCD.CHG_STAT = #{chgStat}
+		</if>
+		<if test="chgStat == null or chgStat == ''">
+			AND OCD.CHG_STAT IN('G685_20','G685_50','G685_30','G685_40','G685_60','G685_49','G685_69')
+		</if>
+		
+		<if test="wdGb != null and wdGb != ''">
+			AND OC.WD_GB = #{wdGb}
+		</if>	
+		<if test="sendYn != null and sendYn != ''">
+		AND    OC.WD_INVOICE_SEND_YN = #{sendYn}
+		</if>
+		<if test="wdShipState != null and wdShipState != ''">
+		AND    OC.WD_SHIP_STATE = #{wdShipState}
+		</if>
+		
+		<if test="stDate != null and stDate != ''">
+		AND    OC.REG_DT <![CDATA[>=]]> STR_TO_DATE(REPLACE(#{stDate},'-','') , '%Y%m%d%H%i%s')
+		</if>
+		<if test="edDate != null and edDate != ''">
+		AND    OC.REG_DT <![CDATA[<]]> STR_TO_DATE(REPLACE(#{edDate},'-','')+1 , '%Y%m%d%H%i%s')
+		</if>
+		AND    G.SELF_GOODS_YN = 'Y' -- 자사상품만
+		AND    OCD.DEL_YN      = 'N'	
+	</sql>		
+			
+	<!-- 재회수지시-->
+	<update id="updateReRecallOrder" parameterType="Withdraw" >
+		/* TsaWithdraw.updateReRecallOrder */
+		UPDATE TB_ORDER_CHANGE_DETAIL SET
+		  CHG_STAT = #{chgStat}
+		, UPD_NO   = #{updNo}
+		, UPD_DT   = NOW()
+		WHERE ORD_CHG_SQ = #{ordChgSq} 
+		  AND ORD_DTL_NO = #{ordDtlNo}
+
+	</update>
+
 </mapper>

+ 16 - 3
src/main/resources/config/application-style.yml

@@ -8,10 +8,23 @@ spring:
                 max-active: 10
                 max-idle: 10
                 min-idle: 2
-        host: 172.30.87.5
+#        host: 172.30.87.5
+#        port: 6379
+#        password: MdxpyGtipZSci6VhTpFdklXxb4Qv7zxEq3Jqg3ULekg=
+        host: 172.30.90.111
         port: 6379
-        password: MdxpyGtipZSci6VhTpFdklXxb4Qv7zxEq3Jqg3ULekg=
-
+        password:
+        cluster:
+            nodes:
+                172.30.90.111:6379
+                172.30.90.112:6379
+                172.30.90.113:6379
+                172.30.90.111:6380
+                172.30.90.112:6380
+                172.30.90.113:6380
+                172.30.90.111:6381
+                172.30.90.112:6381
+                172.30.90.113:6381
 logging:
     config: classpath:log/logback-run.xml
 

+ 1 - 1
src/main/webapp/WEB-INF/views/delivery/DeliveryListForm.html

@@ -29,7 +29,7 @@
 	<div class="panelStyle">
 		<!-- TITLE -->
 		<div class="panelTitle">
-			<h3><i class="fa fa-info-circle"></i>아래 검색조건 <font color="red">기간, 키워드</font>중 하나를 꼭 입력해 주세요.</h3>
+			<h3><i class="fa fa-info-circle"></i>아래 검색조건 <font color="red">기간, 키워드</font>중 하나를 꼭 입력해 주세요.</h3>
 			<span class="panelControl">
 				<i class="fa fa-chevron-up"></i>
 			</span>

+ 4 - 4
src/main/webapp/WEB-INF/views/display/MainContentsPopupForm.html

@@ -109,7 +109,7 @@
 				if(contentsLoc=='SBM005' || contentsLoc=='SBMM005'){
 					html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddBrandDescRow(this);">브랜드소개추가</button>';
 				}
-				if(contentsLoc!='SMM005' && contentsLoc!='SBM005' && contentsLoc!='SBMM005' && contentsLoc!='SGNB001'  && contentsLoc!='SMM011' && contentsLoc!='SBM012' && contentsLoc!='SBMM012'){
+				if(contentsLoc!='SMM005' && contentsLoc!='SBM005' && contentsLoc!='SBMM005' && contentsLoc!='SGNB001' && contentsLoc!='SGNB002'  && contentsLoc!='SMM011' && contentsLoc!='SBM012' && contentsLoc!='SBMM012'){
 					html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddImgPopRow(this);">이미지추가</button>';
 				}
 				if(contentsLoc!='SMM011' && contentsLoc!='SBM012' && contentsLoc!='SBMM012'){
@@ -118,7 +118,7 @@
 				html += '<button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteContentsRow(this);">삭제</button></td>';
 			}
 			html += '</tr>';
-			if(contentsLoc=='SBM004' || contentsLoc=='SBM005' || contentsLoc=='SBMM004'){
+			if(contentsLoc=='SBM004' || contentsLoc=='SBM005' || contentsLoc=='SBMM004' || contentsLoc=='SBMM005'){
 				html += '<tr class="cateTypeTr">';
 				html += '	<th>클릭시<br>페이지창</th>';
 				html += '	<td colspan="3">';
@@ -567,7 +567,7 @@
 		}
 		html += '<button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteContentsRow(this);">삭제</button></td>';
 		html += '</tr>';
-		if(contentsLoc=='SBM004' || contentsLoc=='SBM005' || contentsLoc=='SBMM004'){
+		if(contentsLoc=='SBM004' || contentsLoc=='SBM005' || contentsLoc=='SBMM004' || contentsLoc=='SBMM005'){
 			html += '<tr class="cateTypeTr">';
 			html += '	<th>클릭시<br>페이지창</th>';
 			html += '	<td colspan="3">';
@@ -936,7 +936,7 @@
 
 			var dispOrd = $(this).find("[name=dispOrd]").val();
 
-			if(contentsLoc=='SBM004' || contentsLoc=='SBM005' || contentsLoc=='SBMM004'){
+			if(contentsLoc=='SBM004' || contentsLoc=='SBM005' || contentsLoc=='SBMM004' || contentsLoc=='SBMM005'){
 				var thisIdx = $(this).find("input[name=tableIdx]").val();
 				contentsType = $(this).find("input:radio[name=pageTarget"+thisIdx+"]:checked").val();
 			}

+ 51 - 12
src/main/webapp/WEB-INF/views/display/MainGnbContentsPopupForm.html

@@ -425,15 +425,42 @@
 	var fnCreateBrandLayout = function (result){
 		var html = '';
 		for(var i=0; i<result.length; i++){
-			var g1cdArr = result[i].group1brandCd.split(",");
-			var g2cdArr = result[i].group2brandCd.split(",");
-			var g3cdArr = result[i].group3brandCd.split(",");
-			var g1nmArr = result[i].group1brandNm.split(",");
-			var g2nmArr = result[i].group2brandNm.split(",");
-			var g3nmArr = result[i].group3brandNm.split(",");
-			var g1imgArr = result[i].group1brandImg.split(",");
-			var g2imgArr = result[i].group2brandImg.split(",");
-			var g3imgArr = result[i].group3brandImg.split(",");
+			var g1cdArr;
+			var g2cdArr;
+			var g3cdArr;
+			var g1nmArr;
+			var g2nmArr;
+			var g3nmArr;
+			var g1imgArr;
+			var g2imgArr;
+			var g3imgArr;
+			if(!gagajf.isNull(result[i].group1brandCd)){
+				g1cdArr = result[i].group1brandCd.split(",");
+			}
+			if(!gagajf.isNull(result[i].group2brandCd)){
+				g2cdArr = result[i].group2brandCd.split(",");
+			}
+			if(!gagajf.isNull(result[i].group3brandCd)){
+				g3cdArr = result[i].group3brandCd.split(",");
+			}
+			if(!gagajf.isNull(result[i].group1brandNm)){
+				g1nmArr = result[i].group1brandNm.split(",");
+			}
+			if(!gagajf.isNull(result[i].group2brandNm)){
+				g2nmArr = result[i].group2brandNm.split(",");
+			}
+			if(!gagajf.isNull(result[i].group3brandNm)){
+				g3nmArr = result[i].group3brandNm.split(",");
+			}
+			if(!gagajf.isNull(result[i].group1brandImg)){
+				g1imgArr = result[i].group1brandImg.split(",");
+			}
+			if(!gagajf.isNull(result[i].group2brandImg)){
+				g2imgArr = result[i].group2brandImg.split(",");
+			}
+			if(!gagajf.isNull(result[i].group3brandImg)){
+				g3imgArr = result[i].group3brandImg.split(",");
+			}
 
 			var dispStdt = result[i].dispStdt.split(" ");
 			var dispEddt = result[i].dispEddt.split(" ");
@@ -480,7 +507,11 @@
 				html += '<ul id="brandUl' + k + '" class="item ui-state-default brandClass" style="min-height:80px;">';
 				html += '	<input type="hidden" name="brandGroupNo" value="' + g1cdArr[k] + '">';
 				html += '	<li class="img">';
-				html += '		<img style="height:100%;" src="' + uploadGoodsUrl + "/" + g1imgArr[k] + '" onerror="this.src=\'/image/no.gif\';"/>';
+				if(gagajf.isNull(g1imgArr)){
+					html += '		<img style="height:100%;" src="" onerror="this.src=\'/image/no.gif\';"/>';
+				}else{
+					html += '		<img style="height:100%;" src="' + uploadGoodsUrl + "/" + g1imgArr[k] + '" onerror="this.src=\'/image/no.gif\';"/>';
+				}
 				html += '	</li>';
 				html += '	<li class="cont">';
 				html += '		<ul>';
@@ -507,7 +538,11 @@
 				html += '<ul id="brandUl' + m + '" class="item ui-state-default brandClass" style="min-height:80px;">';
 				html += '	<input type="hidden" name="brandGroupNo" value="' + g2cdArr[m] + '">';
 				html += '	<li class="img">';
-				html += '		<img style="height:100%;" src="' + uploadGoodsUrl + "/" + g2imgArr[m] + '" onerror="this.src=\'/image/no.gif\';"/>';
+				if(gagajf.isNull(g2imgArr)){
+					html += '		<img style="height:100%;" src="" onerror="this.src=\'/image/no.gif\';"/>';
+				}else{
+					html += '		<img style="height:100%;" src="' + uploadGoodsUrl + "/" + g2imgArr[k] + '" onerror="this.src=\'/image/no.gif\';"/>';
+				}
 				html += '	</li>';
 				html += '	<li class="cont">';
 				html += '		<ul>';
@@ -534,7 +569,11 @@
 				html += '<ul id="brandUl' + n + '" class="item ui-state-default brandClass" style="min-height:80px;">';
 				html += '	<input type="hidden" name="brandGroupNo" value="' + g3cdArr[n] + '">';
 				html += '	<li class="img">';
-				html += '		<img style="height:100%;" src="' + uploadGoodsUrl + "/" + g3imgArr[n] + '" onerror="this.src=\'/image/no.gif\';"/>';
+				if(gagajf.isNull(g3imgArr)){
+					html += '		<img style="height:100%;" src="" onerror="this.src=\'/image/no.gif\';"/>';
+				}else{
+					html += '		<img style="height:100%;" src="' + uploadGoodsUrl + "/" + g3imgArr[k] + '" onerror="this.src=\'/image/no.gif\';"/>';
+				}
 				html += '	</li>';
 				html += '	<li class="cont">';
 				html += '		<ul>';

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

@@ -471,7 +471,7 @@
 			}
 		},
 		{headerName: "품목", field: "itemkindNm", width: 150, cellClass: 'text-center'},
-		{headerName: "판매가능재고", field: "stockQtySum", width: 120, cellClass: 'text-right',
+		/* {headerName: "판매가능재고", field: "stockQtySum", width: 120, cellClass: 'text-right',
 			valueFormatter: function(params) {	return params.value.addComma();},
 			cellStyle : function(params){
 				if ("00" == params.data.goodsStat  || "10" == params.data.goodsStat || "20" == params.data.goodsStat || "30" == params.data.goodsStat) {
@@ -483,7 +483,7 @@
 				}
 				return { 'background-color': color};
 			} 
-		},
+		}, */
 		{headerName: "상품상태", field: "goodsStat" , width: 100, cellClass: 'text-center',
 			cellEditorParams: { values: gagaAgGrid.extractValues(goodsStatList) },
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(goodsStatList, params.value); },

+ 17 - 3
src/main/webapp/WEB-INF/views/marketing/CouponPopupForm.html

@@ -1749,7 +1749,14 @@
 			$('#CouponForm .dcCdCheck2').hide();
 			$('#CouponForm .maxDcAmtArea').hide();
 			$('#CouponForm .availDateTr').show();
+			$("#CouponForm input:radio[name='rdoApplyScope']:radio[value=I]").prop('checked', true);
+			$("#CouponForm").find("input:radio[name='rdoApplyScope']").attr('disabled', true);
+			$("#CouponForm").find("input:radio[name='rdoApplyScope']").attr('readonly', true);
 		}else{
+			$("#CouponForm input:radio[name='rdoApplyScope']:radio[value=A]").prop('checked', true);
+			$("#CouponForm").find("input:radio[name='rdoApplyScope']").attr('disabled', false);
+			$("#CouponForm").find("input:radio[name='rdoApplyScope']").attr('readonly', false);
+
 			if(radioValue == 'G230_11'){ // 상품쿠폰일때 선착순쿠폰 등록 가능
 				$('#CouponForm .limitedTimeCpnArea').show();
 			}else{
@@ -1801,11 +1808,11 @@
 			}
 		}
 
-		// 즉시할인쿠폰만 전체/개별, 나머진 개별
+		// 즉시할인쿠폰만 개별, 나머진 전체/개별
 		if(radioValue == 'G230_10') {
-			$("input:radio[name='rdoApplyScope']:radio[value='A']").prop('checked', true);
-		} else {
 			$("input:radio[name='rdoApplyScope']:radio[value='I']").prop('checked', true);
+		} else {
+			$("input:radio[name='rdoApplyScope']:radio[value='A']").prop('checked', true);
 		}
 
 		// 주문서 쿠폰 선택시 결제수단 노출
@@ -2455,6 +2462,9 @@
 				$('#CouponForm .dcCdCheck2').hide();
 				$('#CouponForm .maxDcAmtArea').hide();
 				// $("#CouponForm #afLinkCd").attr('disabled', true);
+				$("#CouponForm input:radio[name='rdoApplyScope']:radio[value=I]").prop('checked', true);
+				$("#CouponForm").find("input:radio[name='rdoApplyScope']").attr('disabled', true);
+				$("#CouponForm").find("input:radio[name='rdoApplyScope']").attr('readonly', true);
 			}
 			$("#btnCouponSave").show();	// 저장버튼
 			$("#CouponForm .buttonSpan").show();
@@ -2476,6 +2486,10 @@
 				$("#CouponForm .buttonSpan").hide();	//행추가,삭제버튼
 			}
 
+			if($("#CouponForm input[name=rdoDcWay]:checked").val() == 'G240_10'){
+				$("#CouponForm .maxDcAmtArea").hide();
+			}
+
 			// 사용가능고객구분 체크박스 체크 제거
 			$('#CouponForm input:checkbox[name=usableCustGbArr]').prop('checked', false);
 			if(cpnCustGbList.length > 0){

+ 5 - 5
src/main/webapp/WEB-INF/views/marketing/PlanTemplatePopupForm.html

@@ -2130,11 +2130,11 @@
 	
 	
 $(document).ready(function() {
-		//gagaSn.setContents('#fsrcPcBtm', ''); 
-		//gagaSn.setContents('#fsrcMobileBtm', '');
-		//gagaSn.setContents('#fsrcPcTop', ''); 
-		//gagaSn.setContents('#fsrcMobileTop', '');
-		//gagaSn.setContents('#note', '');
+		gagaSn.setContents('#fsrcPcBtm', ''); 
+		gagaSn.setContents('#fsrcMobileBtm', '');
+		gagaSn.setContents('#fsrcPcTop', ''); 
+		gagaSn.setContents('#fsrcMobileTop', '');
+		gagaSn.setContents('#note', '');
  		var snOptions1 = gagaSn.getToolbarOptions('media');
 		var snOptions2 = gagaSn.getToolbarOptions('media');
 		var snOptions3 = gagaSn.getToolbarOptions('media');

+ 118 - 73
src/main/webapp/WEB-INF/views/order/OrderDetailForm.html

@@ -28,8 +28,6 @@
 				<input type="hidden" name="orderEmail"/>
 				
 				<h4>기본정보</h4>
-				<!-- <div id="gridOrderInfo" style="width:100%; height:100px;" class="ag-theme-balham"></div> -->
-
 				<!-- TABLE -->
 				<table class="tableStyle">
 					<colgroup>
@@ -85,14 +83,16 @@
 				<!-- //TABLE -->
 									
 				<h4>주문상품정보</h4>
-				<button type="button" class="btn btnRight btn-base btn-sm off" id="btnExchange" style="margin-left:10px;" >교환요청</button>
-				<button type="button" class="btn btnRight btn-base btn-sm off" id="btnReturn">반품요청</button>
-				<button type="button" class="btn btnRight btn-base btn-sm off" id="btnCancel">취소요청</button>
+				<!-- <button type="button" class="btn btnRight btn-base btn-sm off" id="btnExchange" style="margin-left:10px;" >교환요청</button> -->
+				<!-- <button type="button" class="btn btnRight btn-base btn-sm off" id="btnReturn">반품요청</button> -->
+				<!-- <button type="button" class="btn btnRight btn-base btn-sm off" id="btnCancel">취소요청</button> -->
 				<div id="gridOrderGoodsInfo" style="width:100%; height:200px;" class="ag-theme-balham"></div>
 				
-				<h4>주문사은품정보</h4>
-				<button type="button" class="btn btnRight btn-base btn-sm off" id="btnFreeGiftCancel" style="margin-left:10px;" >사은품취소</button>
-				<div id="gridOrderFreeGiftInfo" style="width:100%; height:120px;" class="ag-theme-balham"></div>
+				<div id="wrapOrderFregift">
+					<h4>주문사은품정보</h4>
+					<!-- <button type="button" class="btn btnRight btn-base btn-sm off" id="btnFreeGiftCancel" style="margin-left:10px;" >사은품취소</button> -->
+					<div id="gridOrderFreeGiftInfo" style="width:100%; height:120px;" class="ag-theme-balham"></div>
+				</div>
 				
 				<h4>배송정보</h4>
 				<div id="gridDeliveryAddrInfo" style="width:100%; height:100px;" class="ag-theme-balham"></div>
@@ -100,7 +100,7 @@
 				<table style="width:100%;">
 					<colgroup>
 						<col style="width:65%;"/>
-						<col/>                                                                                  
+						<col/>
 					</colgroup>
 					<tbody>
 						<tr>
@@ -169,10 +169,25 @@ var orderAdminMemoInfo 		= [[${orderAdminMemoInfo}]];			// 관리자메모
 
 var canChgDelvOrdStat		= ['G013_10', 'G013_11', 'G013_17', 'G013_20', 'G013_30', 'G013_40'];
 var canChgDelvChgStat		= ['G685_30', 'G685_33', 'G685_40'];
+var allCanYn				= [[${allCanYn}]];						// 배송지수정가능여부
+
+var orderGoodsCnt 			= [[${orderGoodsInfo.size()}]];			// 주문상세정보
+var orderFreeGiftCnt		= [[${orderFreeGiftInfo.size()}]];		// 주문사은품정보
+var orderDeliveryAddrCnt	= [[${orderDeliveryAddrInfo.size()}]];	// 배송정보
+var orderChangeCnt 			= [[${orderChangeInfo.size()}]];		// 취소/반품/교환요청 정보
+var orderRefundCnt 			= [[${orderRefundInfo.size()}]];		// 환불정보
+
+// 2021.05.12 
+var hiddenTemp				= true;
+if (userNo == "24" || userNo == "8") {
+	hiddenTemp				= false;
+}
+
 </script>
 
 <!-- AgGrid 컬럼 세팅 -->
 <script>
+
 // 1.주문기본정보 그리드 바인딩
 // 2.상품별 상세정보
 var columnDefsGoodsInfo = [
@@ -197,29 +212,21 @@ var columnDefsGoodsInfo = [
 				}
 			},
 			{headerName: "상품타입"	, field: "goodsTypeNm"	, width: 100, cellClass: 'text-center'},
-			{headerName: "브랜드"		, field: "brandEnm"		, width: 80, cellClass: 'text-center'}
-		]
-	},
-	{
-		headerName	: "단품정보",
-		children	: [
-			{headerName: "단품코드"	, field: "itemCd"		, width: 80, cellClass: 'text-center'},
+			{headerName: "브랜드"		, field: "brandEnm"		, width: 100, cellClass: 'text-center'},
+			{headerName: "옵션1"		, field: "colorNm"		, width: 80, cellClass: 'text-center'},
+			{headerName: "옵션2"		, field: "optCd2"		, width: 80, cellClass: 'text-center'},
 			{
-				headerName		: "단품명"
-				, field			: "itemNm"
-				, width			: 200
-				, cellClass		: 'text-left'
-				, cellRenderer: function (params) {
-					return '<a href="javascript:void(0);" onclick="cfnOpenFrontGoodsPopup(\'' + params.data.itemCd + '\',\'' + params.data.siteCd + '\');">' + params.value + '</a>';
+				headerName		: "정상가"
+				, field			: "listPrice"
+				, width			: 100
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
 				}
 			},
-			//{headerName: "옵션1"		, field: "optCd1"		, width: 80, cellClass: 'text-center'},
-			{headerName: "옵션1"		, field: "colorNm"		, width: 80, cellClass: 'text-center'},
-			{headerName: "옵션2"		, field: "optCd2"		, width: 80, cellClass: 'text-center'},
-			{headerName: "단품수량"	, field: "itemQty"		, width: 80, cellClass: 'text-center'},
 			{
-				headerName		: "단품금액"
-				, field			: "itemPrice"
+				headerName		: "판매가"
+				, field			: "currPrice"
 				, width			: 100
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
@@ -238,14 +245,14 @@ var columnDefsGoodsInfo = [
 		]
 	},
 	{
-		headerName	: "주문상세단품",
+		headerName	: "주문상세",
 		children	: [
 			{headerName: "주문수량"	, field: "ordQty"		, width: 80, cellClass: 'text-center'},
 			{headerName: "취소수량"	, field: "cnclRtnQty"	, width: 80, cellClass: 'text-center'},
 			{headerName: "변경요청수량"	, field: "ordReqChgQty"	, width: 100, cellClass: 'text-center'},
-			{headerName: "상세상태"	, field: "ordDtlStat"	, width: 120, cellClass: 'text-center', hide: true},
+			{headerName: "주문상태"	, field: "ordDtlStat"	, width: 120, cellClass: 'text-center', hide: true},
 			{
-				headerName		: "상세상태"
+				headerName		: "주문상태"
 				, field			: "ordDtlStatNm"
 				, width			: 120
 				, cellClass		: 'text-center'
@@ -266,9 +273,9 @@ var columnDefsGoodsInfo = [
 				headerName		: "상태변경"
 				, field			: "ordDtlStatChg"
 				, width			: 120
-				, hide			: false
+				, hide			: hiddenTemp
 				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {				
+				, cellRenderer	: function (params) {
 					var strVal 		= "";
 					var strCheck	= "";
 					
@@ -294,8 +301,7 @@ var columnDefsGoodsInfo = [
 					// @ 정산정보수정
 					strVal += "<select class='ordDtlStatChg' name='ordDtlStatChg' ordDtlNo='"+params.data.ordDtlNo+"' ordNo='"+params.data.ordNo+"' onChange='fnChangOrdDtlStat(this);'>";
 					strVal += "	<option value=''>선택</option>";
-					
-					/*
+
 					if (!gagajf.isNull(params.data.g20)) {
 						strVal += "	<option value='G013_20'>결제완료</option>";
 					}
@@ -314,8 +320,7 @@ var columnDefsGoodsInfo = [
 					if (!gagajf.isNull(params.data.g60)) {
 						strVal += "	<option value='G013_60'>배송완료</option>";
 					}
-					*/
-					
+
 					// 2021.04.30 상태값 임시 기능
 					strVal += "	<option value='G013_20'>결제완료</option>";
 					strVal += "	<option value='G013_30'>상품준비중</option>";
@@ -329,6 +334,29 @@ var columnDefsGoodsInfo = [
 			}
 		]
 	},
+	{
+		headerName	: "금액",
+		children	: [
+			{
+				headerName		: "주문"
+				, field			: "ordAmt"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, valueFormatter: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "취소"
+				, field			: "cnclRtnAmt"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, valueFormatter: function (params) {
+					return params.value.addComma();
+				}
+			},
+		]
+	},
 	{
 		headerName	: "쿠폰",
 		children	: [
@@ -431,17 +459,8 @@ var columnDefsGoodsInfo = [
 		]
 	},
 	{
-		headerName	: "금액(원/단위)",
+		headerName	: "금액",
 		children	: [
-			{
-				headerName		: "주문"
-				, field			: "ordAmt"
-				, width			: 80
-				, cellClass		: 'text-right'
-				, valueFormatter: function (params) {
-					return params.value.addComma();
-				}
-			},
 			{
 				headerName		: "실결제"
 				, field			: "realOrdAmt"
@@ -450,16 +469,7 @@ var columnDefsGoodsInfo = [
 				, valueFormatter: function (params) {
 					return params.value.addComma();
 				}
-			},
-			{
-				headerName		: "취소"
-				, field			: "cnclRtnAmt"
-				, width			: 80
-				, cellClass		: 'text-right'
-				, valueFormatter: function (params) {
-					return params.value.addComma();
-				}
-			},
+			}
 		]
 	},
 	{headerName: "결품", field: "soldoutYn", width: 60, cellClass: 'text-center'},
@@ -487,25 +497,44 @@ var gridOptionsGoodsInfo = gagaAgGrid.getGridOptions(columnDefsGoodsInfo);
 // 2.5 주문사은품정보
 var columnDefsOrderFreeGiftInfo = [
 	{headerName: "주문사은품번호"	, field: "ordFreegiftSq"	, width: 120, cellClass: 'text-center', hide: true},
-	{headerName: "주문번호"		, field: "ordNo"			, width: 120, cellClass: 'text-center'},
 	{headerName: "사은품프로모션"	, field: "freegiftSq"		, width: 100, cellClass: 'text-center', hide: true},
-	{headerName: "사은품프로모션명"	, field: "freegiftNm"		, width: 250, cellClass: 'text-center'},
+	{headerName: "사은품프로모션명"	, field: "freegiftNm"		, width: 250, cellClass: 'text-left'},
+	{
+		headerName			: "구분"
+		, field				: "allYn"
+		, width				: 100
+		, cellClass			: 'text-center'
+		, cellRenderer	: function (params) {
+			var rtnStr = ""
+			
+			if (params.value == 'Y') {
+				rtnStr = "필수";
+			} else {
+				rtnStr = "선택";
+			}
+			return rtnStr;
+		}
+	},
 	{headerName: "사은품혜택번호"	, field: "freegiftValSq"	, width: 100, cellClass: 'text-center', hide: true},
 	{
 		headerName			: "사용포인트"		
 		, field				: "usePoint"			
 		, width				: 100
-		, cellClass			: 'text-right'
-		, valueFormatter	: function (params) {
-			return params.value.addComma();
+		, cellClass			: 'text-center'
+		, cellRenderer	: function (params) {
+			var rtnStr = ""
+			
+			if (params.value == '0') {
+				rtnStr = "무료";
+			} else {
+				rtnStr = params.value.addComma();
+			}
+			return rtnStr;
 		}
 	},
-	{headerName: "사은품코드"		, field: "itemCd"			, width: 100, cellClass: 'text-center'},
-	{headerName: "사은품명"		, field: "itemNm"			, width: 100, cellClass: 'text-center'},
+	{headerName: "사은품코드"		, field: "productNo"		, width: 150, cellClass: 'text-center'},
+	{headerName: "사은품명"		, field: "itemNm"			, width: 250, cellClass: 'text-center'},
 	{headerName: "사은품수량"		, field: "itemQty"			, width: 100, cellClass: 'text-center'},
-	{headerName: "옵션명"			, field: "optCd"			, 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: "delYn"			, width: 100, cellClass: 'text-center'}
 ];
 var gridOptionsOrderFreeGiftInfo = gagaAgGrid.getGridOptions(columnDefsOrderFreeGiftInfo);
@@ -516,7 +545,6 @@ var columnDefsDeliveryInfo = [
 	{headerName: "주문구분"		, field: "exchGbNm"			, width: 80, cellClass: 'text-center'},
 	{headerName: "받는분"			, field: "recipNm"			, width: 80, cellClass: 'text-left', editable: true},
 	{headerName: "핸드폰번호"		, field: "recipPhnno"		, width: 120, cellClass: 'text-left', editable: true},
-	{headerName: "전화번호"		, field: "recipTelno"		, width: 120, cellClass: 'text-left', editable: true},
 	{
 		headerName		: "우편번호"		
 		, field			: "recipZipcode"
@@ -524,8 +552,8 @@ var columnDefsDeliveryInfo = [
 		, cellClass		: 'text-center'
 		, cellRenderer	: function (params) {
 			var rtnStr = ""
-			if (canChgDelvStat.includes(params.data.ordDtlStat)) {
-				// 배송지 수정 (주문배송, 교환배송)
+			
+			if (allCanYn == 'Y') {
 				rtnStr += params.value;
 				rtnStr += "<button type=\"button\" style=\"margin-left:10px\" class=\"btn btn-info\" onclick=\"fnOpenDaumAddr('" + params.node.rowIndex + "', 'ADDR');\">POST</button>";
 				rtnStr += "<button type=\"button\" class=\"btn btn-info\" onclick=\"fnUpdateOrderAddr('" + params.node.rowIndex + "');\">저장</button>";
@@ -666,14 +694,11 @@ var columnDefsOrderChangeInfo = [
 			return  rtnStr;
 		}
 	},
-	/*{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: "옵션1"			, field: "colorNm"		, 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			: "regDt"		
@@ -936,6 +961,11 @@ $(document).ready(function () {
 	fnSetGridHeightInit();
 	
 	// 4. 그리드 숨김 처리
+	
+	if (orderFreeGiftInfo == null || orderFreeGiftInfo.length === 0) {
+		$("#wrapOrderFregift").addClass("off");
+	}
+	
 	if (orderChangeInfo == null || orderChangeInfo.length === 0) {
 		$("#wrapOrderChange").addClass("off");
 	}
@@ -944,6 +974,8 @@ $(document).ready(function () {
 		$("#wrapRefund").addClass("off");
 	}
 	
+	// 
+	
 	// 5. 버튼처리
 	// G013_00	주문접수
 	// G013_10	입금대기
@@ -999,6 +1031,19 @@ $(document).ready(function () {
 });
 
 $(document).ready(function () {
+	// 2021.05.11 그리드 높이정보 수정
+	var orderGoodsHeight 			= 90 + (33 * orderGoodsCnt);
+	var orderFreeGiftHeight 		= 38 + (33 * orderFreeGiftCnt);
+	var orderDeliveryAddrHeight 	= 38 + (33 * orderDeliveryAddrCnt);
+	var orderChangeHeight 			= 38 + (33 * orderChangeCnt);
+	var orderRefundHeight 			= 38 + (33 * orderRefundCnt);
+	
+	$("#gridOrderGoodsInfo").css("height"		, orderGoodsHeight+"px");
+	$("#gridOrderFreeGiftInfo").css("height"	, orderFreeGiftHeight+"px");
+	$("#gridDeliveryAddrInfo").css("height"		, orderDeliveryAddrHeight+"px");
+	$("#gridOrderChangeInfo").css("height"		, orderChangeHeight+"px");
+	$("#gridOrderRefundInfo").css("height"		, orderRefundHeight+"px");
+
 	$('#orderDetailContents').css("width", "97%").css("height", "96%");
 	
 	// 취소요청

+ 0 - 0
src/main/webapp/WEB-INF/views/order/OrderDetailFormBack20210122.html → src/main/webapp/WEB-INF/views/order/OrderDetailForm20210122.html


+ 35 - 89
src/main/webapp/WEB-INF/views/order/OrderListForm.html

@@ -95,11 +95,20 @@
 							<div class="multiCheckBox" style="width:270px">
 								<button type="button" class="sltBtn" style="overflow-x: hidden; padding-right:5px;">[전체]</button>
 								<ul style="display: none; box-shadow: 3px 3px 3px; overflow-y: scroll; height: 112px;">
-									<li th:if="${ordDtlStatList}" th:each="oneData, status : ${ordDtlStatList}">
-										<label class="chkBox">
-											<input type="checkbox" name="multiOrdDtlStat" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|">
-										</label>
-									</li>
+									<th:block th:each="oneData, status : ${ordDtlStatList}">
+										<li>
+											<label class="chkBox">
+												<!-- 주문상세상태 주문접수 코드값 강제 설정 (입금대기) -->
+												<th:block th:if="${oneData.cd} == G013_00">
+													<input type="checkbox" name="multiOrdDtlStat" th:value="G013_10" th:text="|[G013_10] ${oneData.cdNm}|">
+												</th:block>
+												<th:block th:unless="${oneData.cd} == G013_00">
+													<input type="checkbox" name="multiOrdDtlStat" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|">
+												</th:block>
+												<!-- //주문상세상태 주문접수 코드값 강제 설정 (입금대기) -->
+											</label>
+										</li>
+									</th:block>
 								</ul>
 							</div>
 						</td>
@@ -118,8 +127,11 @@
 						<td>
 							<select name="chgGb">
 								<option value="">[전체]</option>
-								<option th:if="${chgGbList}" th:each="oneData, status : ${chgGbList}" th:value="${oneData.cd}"
-										th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+								<th:block th:each="oneData, status : ${chgGbList}">
+									<th:block th:unless="${oneData.cd} == 'G680_10'">
+										<option th:if="${chgGbList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+									</th:block>
+								</th:block>
 							</select>
 						</td>
 						<th>변경요청처리상태</th>
@@ -156,9 +168,11 @@
 					</tr>
 					<tr>
 						<th>상품코드</th>
-						<td>
+						<td colspan="5">
 							<input type="text" name="goodsCd" placeholder="" maxlength="20"/>
 						</td>
+						<!--  2021.05.11 주문상세단위목록조회 변경 -->
+						<!-- 
 						<th>사이즈</th>
 						<td>
 							<input type="text" name="sizeCd" placeholder="" maxlength="20"/>
@@ -167,6 +181,7 @@
 						<td>
 							<input type="text" name="goodsNm" placeholder="" maxlength="20"/>
 						</td>
+						 -->
 					</tr>
 					<tr>
 						<th>수취인명</th>
@@ -213,7 +228,7 @@
 			<ul class="panelBar">
 				<li>
 					<button type="button" class="btn btn-info btn-lg" onclick="fnOrderExcelList();">엑셀다운로드</button>
-					<button type="button" class="btn btn-info btn-lg" th:if="${userNo == 8 or userNo == 14 or userNo == 11}" onclick="fnCreateSampleOrder();">주문생성</button>
+					<!-- <button type="button" class="btn btn-info btn-lg" th:if="${userNo == 8 or userNo == 14 or userNo == 11}" onclick="fnCreateSampleOrder();">주문생성</button> -->
 				</li>
 				<li class="aR">
 					검색결과 : <strong><span id="rowCntOrderList">0</span> 건</strong>&nbsp;
@@ -365,27 +380,11 @@ var columnDefsOrderList = [
 				}
 			},
 			{
-				headerName		: "주문상세상태"
-				, field			: "ordDtlStat"
+				headerName		: "주문상태"
+				, field			: "ordDtlStatNm"
 				, width			: 120
 				, cellClass		: 'text-center'
 				, sortable		: true
-				, valueGetter	: function (params) {
-					var ordDtlStat = gagaAgGrid.lookupValue(ordDtlStatList, params.data.ordDtlStat);
-					var chgStat='';
-					if (params.data.ordDtlStat === '99') {
-						chgStat = gagaAgGrid.lookupValue(chgStatList, params.data.chgStat);
-						if (!gagajf.isNull(chgStat)) {
-							chgStat = chgStat.substr(0, 2);
-							if (params.data.soldoutYn === 'Y') {
-								chgStat = '품절';
-							}
-							ordDtlStat = ordDtlStat + '-' + chgStat;
-						}
-
-					}
-					return ordDtlStat;
-				}
 			},
 			{headerName: "출고처", field: "delvLocNm", width: 110, cellClass: 'text-center', sortable: true, hide:true},
 		]
@@ -397,13 +396,7 @@ var columnDefsOrderList = [
 			{headerName: "상품코드"	, field: "goodsCd"		, width: 100	, cellClass: 'text-center'	, sortable: true},
 			{headerName: "브랜드"		, field: "brandEnm"		, width: 100	, cellClass: 'text-center'	, sortable: true},
 			{headerName: "구성유형"	, field: "goodsTypeNm"	, width: 100	, cellClass: 'text-center'	, sortable: true},
-			{headerName: "상품명"		, field: "goodsNm"		, width: 200	, cellClass: 'text-center'	, sortable: true}
-		]
-	},
-	{
-		headerName	: "단품정보"
-		, cellClass	: 'text-center'
-		, children	: [
+			{headerName: "상품명"		, field: "goodsNm"		, width: 200	, cellClass: 'text-center'	, sortable: true},
 			{
 				headerName		: "이미지"
 				, field			: "sysImgNm"
@@ -413,26 +406,9 @@ var columnDefsOrderList = [
 				,cellRenderer	: function(params) {
 					return '<img width="60" src="'+ _goodsUrl+ "/" + params.value + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
 				}
-			},			
-			{
-				headerName		: "단품코드"
-				, field			: "itemCd"
-				, width			: 100
-				, cellClass		: 'text-center'
-				, sortable		: true
-				, cellRenderer: function (params) {
-					var roleCd = [[${sessionInfo.roleCd}]];
-					if (!roleCd.startsWith("C")) {
-						return "<a href=\"javascript:void(0);\" onclick=\"cfnOpenGoodsDetailPopup('U','" + params.value + "');\">" + params.value + "</a>";
-					} else {
-						return params.value;
-					}
-				}
 			},
-			//{headerName: "옵션1"		, field: "optCd1"		, width: 60	, cellClass: 'text-center'	, sortable: true},
-			{headerName: "옵션1"		, field: "colorNm"		, width: 60		, cellClass: 'text-center'	, sortable: true},
-			{headerName: "옵션2"		, field: "optCd2"		, width: 60		, cellClass: 'text-center'	, sortable: true},
-			{headerName: "단품명"		, field: "itemNm"		, width: 200	, cellClass: 'text-left'	, sortable: true},
+			{headerName: "옵션1"		, field: "colorNm"		, width: 120	, cellClass: 'text-center'	, sortable: true},
+			{headerName: "옵션2"		, field: "optCd2"		, width: 120	, cellClass: 'text-center'	, sortable: true},
 			{
 				headerName		: "외부몰벤더"
 				, field			: "vendorId"
@@ -551,36 +527,6 @@ var columnDefsOrderList = [
 				}
 			},
 			{headerName: "품절처리자", field: "soldoutRegId", width: 120, cellClass: 'text-center'},
-			//{
-			//	headerName		: "변경요청번호"
-			//	, field			: "ordChgSq"
-			//	, width			: 120
-			//	, cellClass		: 'text-center'
-			//	, valueGetter	: function (params) {
-			//		return params.data.ordChgSq === 0 ? '' : params.data.ordChgSq;
-			//	}
-			//},
-			//{
-			//	headerName		: "변경구분"
-			//	, field			: "chgGb"
-			//	, width			: 120
-			//	, cellClass		: 'text-center'
-			//	, valueGetter: function (params) { 
-			//		return gagaAgGrid.lookupValue(chgGbList, params.data.chgGb); 
-			//	}
-			//},
-			//{
-			//	headerName		: "변경상태"
-			//	, field			: "chgStat"
-			//	, width			: 120
-			//	, cellClass		: 'text-center'
-			//	, valueGetter	: function (params) { 
-			//		return gagaAgGrid.lookupValue(chgStatList, params.data.chgStat); 
-			//	}
-			//},
-			//{headerName: "회수지시여부"		, field: "wdInvoiceSendYn"		, width: 100, cellClass: 'text-center'},
-			//{headerName: "회수택배사"		, field: "wdShipCompNm"			, width: 100, cellClass: 'text-center'},
-			//{headerName: "회수송장"		, field: "wdInvoiceNo"			, width: 120, cellClass: 'text-center'},
 			{headerName: "수취인명"		, field: "recipNm"				, width: 100, cellClass: 'text-center'},
 			{headerName: "수취인연락처"		, field: "recipPhnno"			, width: 120, cellClass: 'text-center'},
 			{headerName: "수취인주소"		, field: "recipAddr"			, width: 500, cellClass: 'text-left'},
@@ -615,7 +561,7 @@ $('#btnOrderSearch').on('click', function () {
 });
 
 var fnSearchList = function () {
-	var ordNo 	= $('#searchForm input[name=ordNo]').val();
+	var ordNo 	= $('#condition').val();
 	var stDate 	= $('#stDate').val();
 	var edDate 	= $('#edDate').val();
 
@@ -688,7 +634,7 @@ var fnReOpenOrderDetailPopup = function () {
 	cfnOpenOrderDetailPopup(currOrdNo);
 };
 	
-//자사/입점 변경여부
+// 자사/입점 변경여부
 $("#searchForm input[name=selfYn]").bind('click change', function () {
 	var radioValue = $(this).val();
 	var selfGb = "S";	// 자사 공급 업체
@@ -712,10 +658,10 @@ $('#searchForm select[name=supplyCompCd]').on('change', function() {
 		actionUrl = '/renderer/brand/AuthBrandlist';
 	}
 
-	cfnCreateMultiCombo(actionUrl,"multiBrand",  "[전체]",null, 'Y');
+	cfnCreateMultiCombo(actionUrl, "multiBrand",  "[전체]", null, 'Y');
 });
 
-//페이징
+// 페이징
 $('#searchForm select[name=pageSize]').on('change', function() {
 	$("#searchForm input[name=pageNo]").val('1');
 	fnGoodsListSearch($("#searchForm input[name=searchGb]").val());
@@ -724,8 +670,8 @@ $('#searchForm select[name=pageSize]').on('change', function() {
 // 초기설정
 $(document).ready(function() {
 	// 달력기능 활성화
-	cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '주문');
-	$('.btnToday').trigger('click');
+	cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '주문', 'X');
+	$('.btnRecentWeek').trigger('click');
 	gagaAgGrid.createGrid('gridOrderList', gridOptionsOrderList);
 	gridOptionsOrderList.api.hideOverlay();
 });

+ 764 - 0
src/main/webapp/WEB-INF/views/order/OrderListForm20210511.html

@@ -0,0 +1,764 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : OrderListForm.html
+ * @desc    : 주문목록 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2020.11.16   jsh77b       최초 작성
+ *******************************************************************************
+ -->
+ <style>
+ .ag-neo .ag-cell.top-row-span {
+     border-bottom: 0px;
+}
+.ag-neo .ag-cell.bottom-row-span {
+     border-top: 0px;
+     text-indent: -100em;
+}
+ </style>
+ 
+<div id="main">
+	<!-- 메인타이틀 영역 -->
+	<div class="main-title">
+	</div>
+	<!-- //메인타이틀 영역 -->
+	
+	<!-- 메뉴 설명 -->
+	<div class="infoBox menu-desc">
+	</div>
+	
+	<form id="searchForm" name="searchForm" action="#" th:action="@{'/order/list'}">
+		<input type="hidden" id="searchGb" name="searchGb" />
+		
+		<!-- 패널 영역1 -->
+		<div class="panelStyle" >
+			<!-- 검색조건 영역 -->
+			<!-- TITLE -->
+			<div class="panelTitle">
+				<h3>
+					<i class="fa fa-info-circle"></i>아래 검색조건 중 <font color="red">주문번호</font> 또는 <font color="red">검색조건</font> 하나를 꼭 입력해 주세요.
+				</h3>
+				<span class="panelControl">
+					<i class="fa fa-chevron-up"></i>
+				</span>
+			</div>
+			
+			<div class="panelContent">
+				<table class="frmStyle">
+					<colgroup>
+						<col style="width:10%;"/>
+						<col style="width:15%;"/>
+						<col style="width:10%;"/>
+						<col style="width:15%;"/>
+						<col style="width:10%;"/>
+						<col style="width:15%;"/>
+						<col style="width:10%;"/>
+						<col style="width:15%;"/>
+					</colgroup>
+					<tr>
+						<th>사이트</th>
+						<td>
+							<select name="siteCd">
+								<option value="">[전체]</option>
+								<option th:if="${siteCdList}" th:each="oneData, status : ${siteCdList}" th:value="${oneData.cd}"
+										th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+							</select>
+						</td>
+						<th>몰구분</th>
+						<td>
+							<select name="mallCd">
+								<option value="">[전체]</option>
+								<option th:if="${mallGbList}" th:each="oneData, status : ${mallGbList}" th:value="${oneData.cd}"
+										th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+							</select>
+						</td>
+						<th>업체/브랜드<em class="required" title="필수"></em></th>
+						<td colspan="3">
+							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnY" value="Y"  checked/>자사</label>
+							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnN" value="N"/>입점</label>
+							<select name="supplyCompCd" id="supplyCompCd">
+								<option value="" th:if="${sessionInfo.roleCd} != 'G001_B000'">[전체]</option>
+								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+							</select>
+							<span id="multiBrand"></span>
+						</td>
+					</tr>
+					<tr>
+						<th>주문상세상태</th>
+						<td colspan="5">
+							<div class="multiCheckBox" style="width:270px">
+								<button type="button" class="sltBtn" style="overflow-x: hidden; padding-right:5px;">[전체]</button>
+								<ul style="display: none; box-shadow: 3px 3px 3px; overflow-y: scroll; height: 112px;">
+									<th:block th:each="oneData, status : ${ordDtlStatList}">
+										<li>
+											<label class="chkBox">
+												<!-- 주문상세상태 주문접수 코드값 강제 설정 (입금대기) -->
+												<th:block th:if="${oneData.cd} == G013_00">
+													<input type="checkbox" name="multiOrdDtlStat" th:value="G013_10" th:text="|[G013_10] ${oneData.cdNm}|">
+												</th:block>
+												<th:block th:unless="${oneData.cd} == G013_00">
+													<input type="checkbox" name="multiOrdDtlStat" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|">
+												</th:block>
+												<!-- //주문상세상태 주문접수 코드값 강제 설정 (입금대기) -->
+											</label>
+										</li>
+									</th:block>
+								</ul>
+							</div>
+						</td>
+						<th rowspan="5">키워드<i class="star"></i></th>
+						<td rowspan="5">
+							<select name="search" id="search">
+								<option value="searchOrdNo">주문번호</option>
+								<option value="searchExtmallOrderId">외부몰주문번호</option>
+								<option value="searchAgentOrderId">에이전트주문번호</option>
+							</select>
+							<textarea class="textareaR3 w70p" name="condition" id="condition"></textarea>
+						</td>
+					</tr>
+					<tr>
+						<th>변경구분</th>
+						<td>
+							<select name="chgGb">
+								<option value="">[전체]</option>
+								<th:block th:each="oneData, status : ${chgGbList}">
+									<th:block th:unless="${oneData.cd} == 'G680_10'">
+										<option th:if="${chgGbList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+									</th:block>
+								</th:block>
+							</select>
+						</td>
+						<th>변경요청처리상태</th>
+						<td>
+							<select name="chgStat">
+								<option value="">[전체]</option>
+								<option value="9999">[품절취소]</option>
+								<option th:if="${chgStatList}" th:each="oneData, status : ${chgStatList}" th:value="${oneData.cd}"
+										th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+							</select>
+						</td>
+						<th>결제수단</th>
+						<td>
+							<select name="payMeans">
+								<option value="">[전체]</option>
+								<option th:if="${payMeansList}" th:each="oneData, status : ${payMeansList}" th:value="${oneData.cd}"
+										th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+							</select>
+						</td>
+					</tr>
+					<tr>
+						<th>주문자명</th>
+						<td>
+							<input type="text" name="orderNm" placeholder="" maxlength="20"/>
+						</td>
+						<th>고객ID</th>
+						<td>
+							<input type="text" name="custId" placeholder="" maxlength="20"/>
+						</td>
+						<th>주문자휴대폰번호</th>
+						<td>
+							<input type="text" name="orderPhnno" placeholder="" maxlength="20"/>
+						</td>
+					</tr>
+					<tr>
+						<th>상품코드</th>
+						<td>
+							<input type="text" name="goodsCd" placeholder="" maxlength="20"/>
+						</td>
+						<!--  2021.05.11 주문상세단위목록조회 변경 -->
+						<!-- 
+						<th>사이즈</th>
+						<td>
+							<input type="text" name="sizeCd" placeholder="" maxlength="20"/>
+						</td>
+						<th>단품명</th>
+						<td>
+							<input type="text" name="goodsNm" placeholder="" maxlength="20"/>
+						</td>
+						 -->
+					</tr>
+					<tr>
+						<th>수취인명</th>
+						<td>
+							<input type="text" name="recipNm" placeholder="" maxlength="20"/>
+						</td>
+						<th>송장번호</th>
+						<td>
+							<input type="text" name="invoiceNo" placeholder="" maxlength="20"/>
+						</td>
+						<th>회수지시전송여부</th>
+						<td>
+							<select name="wdInvoiceSendYn" class="w150">
+								<option value="">전체</option>
+								<option value="Y">전송</option>
+								<option value="N">미전송</option>
+							</select>
+						</td>
+					</tr>
+					<tr>
+						<th>조회일자</th>
+						<td colspan="7">
+							<select name="searchDateGb">
+								<option value="ordDt">주문일자</option>
+								<option value="delvStdt">출고일자</option>
+								<option value="soldoutDt">품절일자</option>
+							</select>
+							<span id="terms"></span>
+						</td>
+					</tr>
+				</table>
+				
+				<ul class="panelBar">
+					<li class="center">
+						<button type="button" class="btn btn-info btn-lg" id="btnOrderSearch">조회</button>
+						<button type="button" class="btn btn-gray btn-lg" id="btnInit">초기화</button>
+					</li>
+				</ul>
+				
+			</div>
+		</div>
+
+		<div class="panelStyle">
+			<ul class="panelBar">
+				<li>
+					<button type="button" class="btn btn-info btn-lg" onclick="fnOrderExcelList();">엑셀다운로드</button>
+					<button type="button" class="btn btn-info btn-lg" th:if="${userNo == 8 or userNo == 14 or userNo == 11}" onclick="fnCreateSampleOrder();">주문생성</button>
+				</li>
+				<li class="aR">
+					검색결과 : <strong><span id="rowCntOrderList">0</span> 건</strong>&nbsp;
+					쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
+					<select id="pageSize" name="pageSize">
+						<option value="100" selected="selected">100개씩 보기</option>
+						<option value="500">500개씩 보기</option>
+						<option value="1000">1000개씩 보기</option>
+						<option value="5000">5000개씩 보기</option>
+					</select>
+					<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
+				</li>
+			</ul>
+			
+			<div class="panelContent" style="overflow: hidden;">
+				<div id="gridOrderList" style="width: 100%; height: 600px;" class="ag-theme-balham lh60"></div>
+			</div>
+
+			<ul class="panelBar">
+				<li class="center">
+					<div class="tablePaging" id="orderListPagination"></div>
+				</li>
+			</ul>
+		</div>
+
+	</form>
+</div>
+
+<label class="off">
+	<a href="javascript:void(0);" id="hdOrderExcelList" style="display: none;">엑셀다운로드</a>
+</label>
+
+<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=20210114"></script>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+var sessRoleCd 		= [[${sessionInfo.roleCd}]];
+var siteCdList 		= gagajf.convertToArray([[${siteCdList}]]);
+var mallGbList 		= gagajf.convertToArray([[${mallGbList}]]);
+var ordDtlStatList 	= gagajf.convertToArray([[${ordDtlStatList}]]);
+var payMeansList 	= gagajf.convertToArray([[${payMeansList}]]);
+var chgStatList 	= gagajf.convertToArray([[${chgStatList}]]);
+var chgGbList 		= gagajf.convertToArray([[${chgGbList}]]);
+var formalGbList 	= gagajf.convertToArray([[${formalGbList}]]);
+var frontGbList 	= {'P': 'PC', 'M': 'MO'};
+var uploadGoodsUrl 	= [[${@environment.getProperty('upload.goods.view')}]];
+
+// 1. 주문기본정보
+var columnDefsOrderList = [
+	{
+		headerName	: "주문기본정보"
+		, cellClass	: 'text-center'
+		, children	: [
+			{
+				headerName		: "주문번호"
+				, field			: 'ordNo'
+				, width			: 80
+				, cellClass		: 'text-center'
+				, sortable		: true
+				, cellRenderer	: function (params) {
+					var roleCd = [[${sessionInfo.roleCd}]];
+					if (!roleCd.startsWith("C")) {
+						return "<a href=\"javascript:void(0);\" onclick=\"fnOpenOrderDetailPopup('" + params.value + "');\">" + params.value + "</a>";
+					} else {
+						return params.value;
+					}
+				}
+			},
+			{
+				headerName		: "주문자"
+				, field			: "ordNm"
+				, width			: 100
+				, cellClass		: 'text-left'
+				, sortable		: true
+				, cellRenderer	: function (params) {
+					var custNo = '';
+					if (!gagajf.isNull(params.data.custNo)) {
+						custNo = params.data.custNo;
+					}
+					
+					var roleCd = [[${sessionInfo.roleCd}]];
+					if (!roleCd.startsWith("C") && !gagajf.isNull(params.data.custNo)  && params.data.mallGb === '10' ) {
+						return '<a href="javascript:void(0);" onclick=\"cfnOpenCustDetailPopup(' + params.data.custNo + ');\">' + params.value + '(' + custNo + ')' + '</a>';
+					} else {
+						return params.value + '(' + custNo + ')';
+					}
+				}
+			},
+			{headerName: "고객고유번호"	, field: "custNo"		, width: 120, cellClass: 'text-center', hide: true},
+			{headerName: "외부몰"		, field: "extmallNm"	, width: 100, cellClass: 'text-center', sortable: true},
+			{headerName: "휴대폰번호"	, field: "orderPhnno"	, width: 120, cellClass: 'text-center', hide: true},
+			{
+				headerName		: "사이트"
+				, field			: "siteCd"
+				, width			: 80
+				, cellClass		: 'text-center'
+				, hide			: true
+				, valueGetter	: function (params) { 
+					return gagaAgGrid.lookupValue(siteCdList, params.data.siteCd); 
+				}
+			},
+			{
+				headerName		: "프론트"
+				, field			: "frontGb"
+				, width			: 80
+				, cellClass		: 'text-center'
+				, sortable		: true
+				, valueGetter	: function (params) { 
+					return gagaAgGrid.lookupValue(frontGbList, params.data.frontGb); 
+				}
+			},
+			{
+				headerName		: "몰구분"
+				, field			: "mallGb"
+				, width			: 60
+				, cellClass		: 'text-center'
+				, hide			: true
+				, valueGetter	: function (params) { 
+					return gagaAgGrid.lookupValue(mallGbList, params.data.mallGb); 
+				}
+			},
+			{
+				headerName		: "주문일시"
+				, field			: "ordDt"
+				, width			: 140
+				, cellClass		: 'text-center'
+				, sortable		: true
+				, valueGetter	: function (params) { 
+					return gagaAgGrid.toDateTimeFormat(params.data.ordDt); 
+				}
+			},
+			{
+				headerName		: "결제수단"
+				, field			: "payMeans"
+				, width			: 100
+				, cellClass		: 'text-center'
+				, hide			: true
+				, valueGetter	: function (params) { 
+					return gagaAgGrid.lookupValue(payMeansList, params.data.payMeans); 
+				}
+			},
+			{
+				headerName		: "신규/교환"
+				, field			: "ordExchGb"
+				, width			: 100
+				, cellClass		: 'text-center',
+				valueGetter 	: function (params) {
+					return params.data.ordExchGb === 'O' ? '신규' : '교환';
+				}
+			},
+			{
+				headerName		: "주문상세상태"
+				, field			: "ordDtlStat"
+				, width			: 120
+				, cellClass		: 'text-center'
+				, sortable		: true
+				, valueGetter	: function (params) {
+					var ordDtlStat = gagaAgGrid.lookupValue(ordDtlStatList, params.data.ordDtlStat);
+					var chgStat='';
+					if (params.data.ordDtlStat === '99') {
+						chgStat = gagaAgGrid.lookupValue(chgStatList, params.data.chgStat);
+						if (!gagajf.isNull(chgStat)) {
+							chgStat = chgStat.substr(0, 2);
+							if (params.data.soldoutYn === 'Y') {
+								chgStat = '품절';
+							}
+							ordDtlStat = ordDtlStat + '-' + chgStat;
+						}
+
+					}
+					return ordDtlStat;
+				}
+			},
+			{headerName: "출고처", field: "delvLocNm", width: 110, cellClass: 'text-center', sortable: true, hide:true},
+		]
+	},
+	{
+		headerName	: "상품정보"
+		, cellClass	: 'text-center'
+		, children	: [
+			{headerName: "상품코드"	, field: "goodsCd"		, width: 100	, cellClass: 'text-center'	, sortable: true},
+			{headerName: "브랜드"		, field: "brandEnm"		, width: 100	, cellClass: 'text-center'	, sortable: true},
+			{headerName: "구성유형"	, field: "goodsTypeNm"	, width: 100	, cellClass: 'text-center'	, sortable: true},
+			{headerName: "상품명"		, field: "goodsNm"		, width: 200	, cellClass: 'text-center'	, sortable: true}
+		]
+	},
+	{
+		headerName	: "단품정보"
+		, cellClass	: 'text-center'
+		, children	: [
+			{
+				headerName		: "이미지"
+				, field			: "sysImgNm"
+				, width			: 100
+				, height		: 60
+				, cellClass		: 'text-center'
+				,cellRenderer	: function(params) {
+					return '<img width="60" src="'+ _goodsUrl+ "/" + params.value + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
+				}
+			},			
+			{
+				headerName		: "단품코드"
+				, field			: "itemCd"
+				, width			: 100
+				, cellClass		: 'text-center'
+				, sortable		: true
+				, cellRenderer: function (params) {
+					var roleCd = [[${sessionInfo.roleCd}]];
+					if (!roleCd.startsWith("C")) {
+						return "<a href=\"javascript:void(0);\" onclick=\"cfnOpenGoodsDetailPopup('U','" + params.value + "');\">" + params.value + "</a>";
+					} else {
+						return params.value;
+					}
+				}
+			},
+			//{headerName: "옵션1"		, field: "optCd1"		, width: 60	, cellClass: 'text-center'	, sortable: true},
+			{headerName: "옵션1"		, field: "colorNm"		, width: 60		, cellClass: 'text-center'	, sortable: true},
+			{headerName: "옵션2"		, field: "optCd2"		, width: 60		, cellClass: 'text-center'	, sortable: true},
+			{headerName: "단품명"		, field: "itemNm"		, width: 200	, cellClass: 'text-left'	, sortable: true},
+			{
+				headerName		: "외부몰벤더"
+				, field			: "vendorId"
+				, width			: 110
+				, cellClass		: 'text-center'
+				, hide			: true
+				, valueGetter	: function (params) { 
+					return gagaAgGrid.lookupValue(vendorList, params.data.vendorId); 
+				}
+			},
+			{headerName: "외부몰주문번호"	, field: "extmallOrderId"	, width: 150, cellClass: 'textFormat', sortable: true},
+			{headerName: "외부몰부주문번호"	, field: "agentOrderId"		, width: 120, cellClass: 'textFormat', sortable: true},
+			{
+				headerName		: "주문수량"
+				, field			: "ordQty"
+				, width			: 80
+				, cellClass		: 'text-center'
+				, valueGetter: function (params) { 
+					return params.data.ordQty.addComma(); 
+				}
+			},
+			{
+				headerName		: "취소수량"
+				, field			: "cnclRtnQty"
+				, width			: 80
+				, cellClass		: 'text-center'
+				, valueGetter	: function (params) { 
+					return params.data.cnclRtnQty.addComma(); 
+				}
+			},
+			{
+				headerName		: "주문금액"
+				, field			: "ordAmt"
+				, width			: 80
+				, cellClass		: 'text-right'
+				, valueGetter	: function (params) { 
+					return params.data.ordAmt.addComma(); 
+				}
+			},
+			{
+				headerName		: "취소반품금액"
+				, field			: "cnclRtnAmt"
+				, width			: 120
+				, cellClass		: 'text-right'
+				, valueGetter	: function (params) { 
+					return params.data.cnclRtnAmt.addComma(); 
+				}
+			},
+			{
+				headerName		: "총할인금액"
+				, field			: "totDcAmt"
+				, width			: 120
+				, cellClass		: 'text-right'
+				, valueGetter: function (params) { 
+					return params.data.totDcAmt.addComma(); 
+				}
+			},
+			{
+				headerName		: "실판매금액"
+				, field			: "realOrdAmt"
+				, width			: 100
+				, cellClass		: 'text-right'
+				, valueGetter	: function (params) { 
+					return params.data.realOrdAmt.addComma(); 
+				}
+			},
+			{headerName: "원코드"		, field: "supplyGoodsCd"	, width: 130, cellClass: 'text-center', sortable: true},
+			{
+				headerName		: "정상/이월"
+				, field			: "formalGb"
+				, width			: 100
+				, cellClass		: 'text-center'
+				, sortable		: true 
+				, valueGetter	: function (params) { 
+					return gagaAgGrid.lookupValue(formalGbList, params.data.formalGb); 
+				}
+			},
+			{
+				headerName		: "출고처지정일시"
+				, field			: "delvAssignDt"
+				, width			: 150
+				, cellClass		: 'text-center'
+				, valueGetter	: function (params) { 
+					return gagaAgGrid.toDateTimeFormat(params.data.delvAssignDt); 
+				}
+			},
+			{
+				headerName		: "송장출력일시"
+				, field			: "invoiceDt"
+				, width			: 150
+				, cellClass		: 'text-center'
+				, valueGetter	: function (params) { 
+					return gagaAgGrid.toDateTimeFormat(params.data.invoiceDt); 
+				}
+			},
+			{headerName: "출고택배사"		, field: "shipCompNm"	, width: 150, cellClass: 'text-center'},
+			{headerName: "출고송장"		, field: "invoiceNo"	, width: 150, cellClass: 'text-center'},
+			{
+				headerName		: "출고일시"
+				, field			: "delvResDt"
+				, width			: 150
+				, cellClass		: 'text-center'
+				, valueGetter: function (params) { 
+					return gagaAgGrid.toDateTimeFormat(params.data.delvResDt); 
+				}
+			},
+			{headerName: "품절여부"		, field: "soldoutYn"	, width: 90		, cellClass: 'text-center', sortable: true},
+			{headerName: "품절메모"		, field: "soldoutMemo"	, width: 120	, cellClass: 'text-left'},
+			{
+				headerName		: "품절일시"
+				, field			: "soldoutRegDt"
+				, width			: 150
+				, cellClass		: 'text-center'
+				, valueGetter	: function (params) { 
+					return gagaAgGrid.toDateTimeFormat(params.data.soldoutRegDt); 
+				}
+			},
+			{headerName: "품절처리자", field: "soldoutRegId", width: 120, cellClass: 'text-center'},
+			//{
+			//	headerName		: "변경요청번호"
+			//	, field			: "ordChgSq"
+			//	, width			: 120
+			//	, cellClass		: 'text-center'
+			//	, valueGetter	: function (params) {
+			//		return params.data.ordChgSq === 0 ? '' : params.data.ordChgSq;
+			//	}
+			//},
+			//{
+			//	headerName		: "변경구분"
+			//	, field			: "chgGb"
+			//	, width			: 120
+			//	, cellClass		: 'text-center'
+			//	, valueGetter: function (params) { 
+			//		return gagaAgGrid.lookupValue(chgGbList, params.data.chgGb); 
+			//	}
+			//},
+			//{
+			//	headerName		: "변경상태"
+			//	, field			: "chgStat"
+			//	, width			: 120
+			//	, cellClass		: 'text-center'
+			//	, valueGetter	: function (params) { 
+			//		return gagaAgGrid.lookupValue(chgStatList, params.data.chgStat); 
+			//	}
+			//},
+			//{headerName: "회수지시여부"		, field: "wdInvoiceSendYn"		, width: 100, cellClass: 'text-center'},
+			//{headerName: "회수택배사"		, field: "wdShipCompNm"			, width: 100, cellClass: 'text-center'},
+			//{headerName: "회수송장"		, field: "wdInvoiceNo"			, width: 120, cellClass: 'text-center'},
+			{headerName: "수취인명"		, field: "recipNm"				, width: 100, cellClass: 'text-center'},
+			{headerName: "수취인연락처"		, field: "recipPhnno"			, width: 120, cellClass: 'text-center'},
+			{headerName: "수취인주소"		, field: "recipAddr"			, width: 500, cellClass: 'text-left'},
+			{
+				headerName		: "배송메모"
+				, field			: "delvMemo"
+				, width			: 200
+				, cellClass		: 'left'
+				, valueGetter: function (params) {
+					var delvMemo = '';
+					if (!gagajf.isNull(params.data.delvMemo)) {
+						delvMemo = fnRemoveEmojis(params.data.delvMemo);
+					}
+					return delvMemo;
+				}
+			},
+			{headerName: "출고메모", field: "dstrbtNote", width: 200, cellClass: 'left'}
+		]
+	}
+];
+
+var gridOptionsOrderList = gagaAgGrid.getGridOptions(columnDefsOrderList);
+
+gridOptionsOrderList.rowHeight = 60; //이미지가 있을경우 높이 지정해야함.
+
+// 최근상세보기한 주문번호
+var currOrdNo = '';
+
+// 조회
+$('#btnOrderSearch').on('click', function () {
+	fnSearchList();
+});
+
+var fnSearchList = function () {
+	var ordNo 	= $('#condition').val();
+	var stDate 	= $('#stDate').val();
+	var edDate 	= $('#edDate').val();
+
+	if (gagajf.isNull(ordNo)) {
+		if (gagajf.isNull(stDate)) {
+			mcxDialog.alert('시작 기간을 입력하세요.');
+			return;
+		}
+
+		if (gagajf.isNull(edDate)) {
+			mcxDialog.alert('종료 기간을 입력하세요.');
+			return;
+		}
+	}
+	
+	gagaPaging.init('searchForm', fnSearchCallBack, 'orderListPagination', $('#searchForm').find('#pageSize').val());
+	gagaPaging.load($("#searchForm input[name=pageNo]").val());
+	
+	// 2020.12.08 페이징 처리 때문에 주석 처리
+	//gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptionsOrderList, '#searchForm', function (result) {
+		//$("#rowCntOrderList").text(gridOptionsOrderList.api.getDisplayedRowCount());
+		// 주문리스트 합계 정보
+		//gagajf.ajaxFormSubmit('/order/list/sum/info', '#searchForm', fnOrderListSumInfoCallback);
+	//});
+};
+
+var fnSearchCallBack = function(result){
+	$('#searchForm').find('#gridRowTotalCount').html(result.pageing.pageable.totalCount.addComma());
+	$('#searchForm').find('#pageNo').val(result.pageing.pageable.pageNo.addComma());
+	$('#searchForm').find('#pgNo').html(result.pageing.pageable.pageNo.addComma());
+	$('#searchForm').find('#endPgNo').html(result.pageing.pageable.totalPage.addComma());
+	
+	gridOptionsOrderList.api.setRowData(result.orderList);
+	gagaPaging.createPagination(result.pageing.pageable);
+}
+
+// 엑셀조회
+$("#btnSearchExcel").on('click', function () {
+	cfnExcelUploadPopup('', 'fnExcelUpoadCallback');
+});
+
+var fnExcelUpoadCallback = function (data) {
+	$("#excelFileNm").val(data.excelFileNm);
+	gagaAgGrid.fetch('/order/excel/search', gridOptionsOrderList, '#searchForm', function () {
+		$("#rowCntOrderList").text(gridOptionsOrderList.api.getDisplayedRowCount());
+	});
+};
+
+// 초기화 클릭시
+$('#btnInit').on('click', function() {
+	$('#searchForm')[0].reset();
+	$("#multiBrand").empty();
+});
+
+// 엑셀 다운로드
+// 2020.12.11 현재는 그리드의 조회 목록을 엑셀 다운로드 하고 있지만 추후 에는 조건의 엑셀 조회 후 다운로드 기능으로 변경 해야 할듯함
+// 기존의 주문목록은 페이징 기능이 없었지만 페이징 기능을 추가 하면서 엑셀다운로드시 조회 후 파일다운 기능 필요  
+var fnOrderExcelList = function () {
+	gagaAgGrid.showOrHideColumn(gridOptionsOrderList	, "custNo", true);
+	gagaAgGrid.exportToExcel('주문목록'					, gridOptionsOrderList);
+	gagaAgGrid.showOrHideColumn(gridOptionsOrderList	, "custNo", false);
+};
+
+var fnOpenOrderDetailPopup = function (ordNo) {
+	currOrdNo = ordNo;
+	cfnOpenOrderDetailPopup(ordNo);
+};
+
+var fnReOpenOrderDetailPopup = function () {
+	cfnOpenOrderDetailPopup(currOrdNo);
+};
+	
+// 자사/입점 변경여부
+$("#searchForm input[name=selfYn]").bind('click change', function () {
+	var radioValue = $(this).val();
+	var selfGb = "S";	// 자사 공급 업체
+	
+	if (radioValue == "N"){
+		selfGb = "E";	//입점 공급업체
+	}
+	
+	var actionUrl = '/renderer/supply/company/list/'+ selfGb;	
+
+	$('#searchForm').find('#multiBrand').empty();
+
+	cfnCreateCombo(actionUrl, $('#searchForm select[name=supplyCompCd]'), "[전체]", "");
+});
+	
+// 업체변경시
+$('#searchForm select[name=supplyCompCd]').on('change', function() {
+	var actionUrl = '/renderer/supplyCompany/brand/list/' + $(this).val();
+
+	if(sessRoleCd == "G001_B000"){
+		actionUrl = '/renderer/brand/AuthBrandlist';
+	}
+
+	cfnCreateMultiCombo(actionUrl, "multiBrand",  "[전체]", null, 'Y');
+});
+
+// 페이징
+$('#searchForm select[name=pageSize]').on('change', function() {
+	$("#searchForm input[name=pageNo]").val('1');
+	fnGoodsListSearch($("#searchForm input[name=searchGb]").val());
+});
+
+// 초기설정
+$(document).ready(function() {
+	// 달력기능 활성화
+	cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '주문', 'X');
+	$('.btnToday').trigger('click');
+	gagaAgGrid.createGrid('gridOrderList', gridOptionsOrderList);
+	gridOptionsOrderList.api.hideOverlay();
+});
+
+var fnCreateSampleOrder = function() {
+	var actionUrl = "/order/sample/create/form";
+	cfnOpenModalPopup(actionUrl, "popupOrderSample");
+}
+
+var fnRemoveEmojis = function (str) {
+	var regex = /(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])/g;
+	return str.replace(regex, '');
+};
+</script>
+
+</html>
+
+
+
+
+

+ 8 - 12
src/main/webapp/WEB-INF/views/pos/PosMainForm.html

@@ -1,36 +1,32 @@
 <!DOCTYPE html>
 <html lang="ko"
-	  xmlns:th="http://www.thymeleaf.org">
-<head th:replace="common/fragments/header :: header"></head>
-<body>
-<th:block th:replace="common/fragments/variables :: variables"></th:block>
-
+	xmlns:th="http://www.thymeleaf.org">
 <!--
  *******************************************************************************
  * @source  : PosMainForm.html
  * @desc    : POS Main Page
  *============================================================================
- * ISTYLE24
+ * STYLE24
  * Copyright(C) 2020 TSIT, All rights reserved.
  *============================================================================
  * VER  DATE         AUTHOR      DESCRIPTION
  * ===  ===========  ==========  =============================================
- * 1.0  2020.11.13   moon        최초 작성
+ * 1.0  2021.05.07   moon        최초 작성
  *******************************************************************************
  -->
 
-<div id="main" style="padding-top:0;">
-		<!-- TITLE -->
+<div id="main">
+		<!-- 메인타이틀 영역 -->
 		<div class="main-title">
 			<h1>매장명 : <span th:text="${delvLocNm}"></span></h1>
 		</div>
-		<!-- //TITLE -->
+		<!-- //메인타이틀 영역 -->
 	
 		<!-- TABS SPACE -->
 		<div class="tabs">
 			<!-- TABS NAVI -->
 			<ul class="tabsNav p-left">
-				<li class="on"><a href="#tab1#top" id="tab1-1">출고대기목록</a></li>
+				<li class="on"><a href="#tab1#top" id="tab1">출고대기목록</a></li>
 				<li><a href="#tab2#top">출고목록</a></li>
 				<li><a href="#tab3#top">정산내역</a></li>
 				<li><a href="#tab4#top">출고거부이력</a></li>
@@ -511,7 +507,7 @@
 	});
 
 	var fnSetDelvCallback = function() {
-		$('#tab1-1').trigger('click');
+		$('#tab1').trigger('click');
 		$('#btnWaitSearch').trigger('click');
 	};
 

+ 349 - 0
src/main/webapp/WEB-INF/views/withdraw/WithdrawDirectiveListForm.html

@@ -0,0 +1,349 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : WithdrawDirectiveListForm.html
+ * @desc    : 회수지시 목록 Page
+ *=============================================================
+ * ISTYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *=============================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  ==================================
+ * 1.0  2021.05.10   moon        최초 작성
+ *******************************************************************************
+ -->
+ 	<div id="main">
+		<!-- 메인타이틀 영역 -->
+		<div class="main-title">
+		</div>
+		<!-- //메인타이틀 영역 -->
+		<!-- 메뉴 설명 -->
+		<div class="infoBox menu-desc">
+		</div>
+		<!-- //메뉴 설명 -->
+		
+		<!-- 검색조건 영역 -->
+		<form id="searchForm" name="searchForm" action="#" th:action="@{'/withdraw/direct/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
+		<div class="panelStyle">
+			<!-- TITLE -->
+			<div class="panelTitle">
+				<h3><i class="fa fa-info-circle"></i>아래 검색조건  <font color="red">주문번호,주문변경번호,회수요청일</font>중 하나를 꼭 입력해 주세요.</h3>
+				<span class="panelControl">
+					<i class="fa fa-chevron-up"></i>
+				</span>
+			</div>
+			<!-- //TITLE -->
+			<div class="panelContent">	
+				
+					<table class="frmStyle">
+						<colgroup>
+							<col style="width:8%;"/>
+							<col style="width:12%;"/>
+							<col style="width:8%;"/>
+							<col style="width:12%;"/>
+							<col style="width:8%;"/>
+							<col style="width:12%;"/>
+						</colgroup>
+						<tr>
+							<th>주문자명</th>
+							<td>
+								<input type="text" class="" name="ordNm" placeholder="" maxlength="20"/>
+							</td>
+							<th>주문번호</th>
+							<td>
+								<input type="text" class="" name="ordNo" data-valid-type="integer" placeholder="" maxlength="20"/>
+							</td>
+							<th>주문변경번호</th>
+							<td>
+								<input type="text" class="" name="ordChgSq" data-valid-type="integer" placeholder="" maxlength="20"/>
+							</td>
+						</tr>
+						<tr>	
+							<th>회수구분</th>
+							<td>
+								<select name="chgGb">
+									<option value="">&nbsp;전체&nbsp;</option>
+									<option value="G680_30"> 반품 </option>
+									<option value="G680_40"> 교환 </option>
+								</select>
+							</td>
+							<th>진행상태</th>
+							<td>
+								<select name="chgStat">
+									<option value="">전체</option>
+									<option value="G685_20">교환접수</option>
+									<option value="G685_50">반품접수</option>
+									<option value="G685_30">회수요청</option>
+									<option value="G685_40">교환완료</option>
+									<option value="G685_60">반품완료</option>
+									<option value="G685_49">교환철회</option>
+									<option value="G685_69">반품철회</option>
+									
+								</select>
+							</td>
+							<th>반품방식</th>
+							<td>
+								<select name="wdGb">
+									<option value="">&nbsp;전체&nbsp;</option>
+									<option value="W">방문회수</option>
+									<option value="D">직접배송</option>
+									
+								</select>
+							</td>
+						</tr>
+						<tr>
+							<th>택배사전송여부</th>
+							<td>
+								<select name="sendYn">
+									<option value="">전체</option>
+									<option value="Y">전송</option>
+									<option value="N">미전송</option>
+									
+								</select>
+							</td>
+							<th>회수상태</th>
+							<td colspan="3">
+								<select name="wdShipState">
+									<option value="">전체</option>
+									<option th:if="${wdShipStateList}" th:each="oneData, status : ${wdShipStateList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
+								</select>
+							</td>
+						</tr>
+						<tr>
+							<th>회수요청일</th>
+							<td colspan="5" id="terms">
+							</td>
+						</tr>
+					</table>
+	
+					<ul class="panelBar">
+						<li class="center">
+						<button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
+						<button type="button" class="btn btn-gray btn-lg" onclick="$('#searchForm')[0].reset(); fnInitCalendar();">초기화</button>
+						<button type="button" id="btnExcel" class="btn btn-info btn-lg" >엑셀다운로드</button>
+						</li>
+					</ul>
+
+				</div>
+		</div>
+		<!-- //검색조건 영역 -->
+
+		<!-- 리스트 영역 -->
+		<div class="panelStyle">
+			<ul class="panelBar">
+				<li class="right">
+					검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
+					쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
+					<select id="pageSize" name="pageSize">
+						<option value="10" selected="selected">10개씩 보기</option>
+						<option value="20">20개씩 보기</option>
+						<option value="50">50개씩 보기</option>
+						<option value="100">100개씩 보기</option>
+						<option value="500">500개씩 보기</option>
+						<option value="1000">1000개씩 보기</option>
+					</select>
+					<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
+				</li>
+			</ul>
+			<div id="gridList" style="width:100%; height: 500px;" class="ag-theme-balham"></div>
+			<ul class="panelBar">
+				<li class="center">
+					<div class="tablePaging" id="delvWithdrawListPagination"></div>
+				</li>
+			</ul>
+					 
+		</div>
+		</form>
+		<!-- //리스트 영역 -->
+	</div>
+<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=20210114"></script>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	// 사이트목록
+
+	var columnDefs = [
+		{headerName: "주문변경번호", 	field: "ordChgSq", 		width: 100, cellClass: "text-center"},
+		{headerName: "주문번호", 		field: "ordNo", 		width: 100, cellClass: "text-center",
+			cellRenderer: function(params) { return gagajf.isNull(params.value) ? '' : '<a href="javascript:void(0);">' + params.value + '</a>'; }
+		},
+		{headerName: "주문상세번호", 	field: "ordDtlNo", 		width: 100, cellClass: "text-center"},		
+		{headerName: "회수구분", 		field: "chgGb", 		width: 80, cellClass: "text-center",
+			cellRenderer: function (params) { return params.value == 'G680_30' ? '반품' : '교환'; }
+		},
+		
+		{headerName: "사유", 			field: "chgReasonNm", 	width: 150, cellClass: "text-left"},
+		{headerName: "진행상태", 		field: "chgStatNm", 	width: 100, cellClass: "text-center"},
+		{headerName: "상품코드", 		field: "goodsCd", 		width: 120, cellClass: "text-center",
+			cellRenderer: function(params) { return gagajf.isNull(params.value) ? '' : '<a href="javascript:void(0);">' + params.value + '</a>'; }
+		},
+		{headerName: "상품명", 		field: "goodsNm", 		width: 200, cellClass: "text-left"},
+		{headerName: "수량", 			field: "chgQty", 		width: 80, cellClass: "text-center"},
+		{headerName: "반품방식", 		field: "wdGb", 			width: 80, cellClass: "text-center",
+			cellRenderer: function (params) { return params.value == 'W' ? '방문회수' : '직접배송'; }
+		},
+		{headerName: "택배사전송", 	field: "sendYn", 		width: 80, cellClass: "text-center"},
+		{headerName: "회수송장번호", 	field: "wdInvoiceNo", 	width: 100, cellClass: "text-center"},
+		{headerName: "회수상태", 		field: "wdShipStateNm", width: 120, cellClass: "text-center"},
+		{headerName: "회수상태수신일시", field: "wdStateDt", 	width: 120, cellClass: "text-center"},
+		{headerName: "미회수사유", 	field: "wdReasonCdNm", 	width: 100, cellClass: "text-center"},
+		{headerName: "재회수지시", 	field: "wdShipState", 		width: 100,	cellClass: 'text-center',
+			cellRenderer: function(params) {
+				return params.value == '12' && params.data.chgStat == 'G685_30' ? '<button type="button" class="btn btn-base btn-sm" onclick="fnReRecallOrder(\'' + params.data.chgGb + '\',\'' + params.data.ordDtlNo + '\',\''+params.data.ordChgSq+'\');">&nbsp;재회수지시&nbsp;</button>' : "";
+			}
+		},	
+		{headerName: "교환선발송여부 ", 	field: "wdBfSendYn", 	width: 110, cellClass: "text-center"},
+		{headerName: "배송시작일시", 	field: "wdStdt", 		width: 120, cellClass: "text-center"},
+		{headerName: "배송종료일시", 	field: "wdEddt", 		width: 120, cellClass: "text-center"},
+		{headerName: "수취인명", 		field: "recipNm", 		width: 120, cellClass: "text-center"},
+		{headerName: "변경자명", 		field: "chgerNm", 		width: 100, cellClass: "text-center"},
+		{headerName: "변경자휴대전화", 	field: "chgerPhnno", 	width: 120, cellClass: "text-center"},
+		{headerName: "변경자전화번호", 	field: "chgerTelno", 	width: 120, cellClass: "text-center"},
+		{headerName: "변경자우편번호", 	field: "chgerZipcode", 	width: 120, cellClass: "text-center"},
+		{headerName: "변경자기본주소", 	field: "chgerBaseAddr", width: 300, cellClass: "text-left"},
+		{headerName: "변경자상세주소", 	field: "chgerDtlAddr", 	width: 200, cellClass: "text-left"},
+		{headerName: "주문자명", 		field: "ordNm", 		width: 100, cellClass: "text-center"},
+		{headerName: "주문자휴대전화", 	field: "ordPhnno", 		width: 120, cellClass: "text-center"},
+		{headerName: "주문자전화번호", 	field: "ordTelno", 		width: 120, cellClass: "text-center"},
+		{headerName: "주문자이메일", 	field: "ordEmail", 		width: 120, cellClass: "text-left"}
+	];
+
+	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+
+	// 셀 클릭 이벤트
+	gridOptions.onCellClicked = function(event) {
+		if (event.colDef.field == 'ordNo') {
+			// 주문 상세
+			cfnOpenOrderDetailPopup(event.data.ordNo);
+		} else if (event.colDef.field == 'goodsCd') {
+			// 상품 상세
+			cfnOpenGoodsDetailPopup('U', event.data.goodsCd);
+		}
+	};
+
+	// 조회
+	$('#btnSearch').on('click', function() {
+		// Fetch data
+		//gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
+		fnSearchList();
+	});
+
+	/*************************************************************************
+	*  조회 
+	**************************************************************************/
+	var fnSearchList = function() {
+		
+		var searchChk = "N";
+		
+
+		if ($('#searchForm input[name=ordNo]').val() != '') {
+			searchChk = "Y";
+		}		
+		
+		if ($('#searchForm input[name=ordChgSq]').val() != '') {
+			searchChk = "Y";
+		}
+		
+		
+		if(searchChk == "N"){
+			if($('#stDate').val() == ''){
+				mcxDialog.alert('시작 기간을 입력하세요.');
+				return;
+			}
+	
+			if($('#edDate').val() == ''){
+				mcxDialog.alert('종료 기간을 입력하세요.');
+				return;
+			}
+			// 날짜 유효성 체크
+			if (Number($('#stDate').val().replaceAll("-", "")) > Number($('#edDate').val().replaceAll("-", ""))) {
+				mcxDialog.alert("시작일은 종료일보다 클 수 없습니다.");
+				return;
+			}			
+		}
+
+		gagaPaging.init('searchForm', fnSearchCallBack, 'delvWithdrawListPagination', $('#searchForm').find('#pageSize').val());
+	    gagaPaging.load($("#searchForm input[name=pageNo]").val());
+	}
+	
+	/*************************************************************************
+	*  조회 콜백
+	**************************************************************************/
+	var fnSearchCallBack = function(result){
+
+		$('#searchForm').find('#gridRowTotalCount').html(result.pageing.pageable.totalCount.addComma());
+		$('#searchForm').find('#pageNo').val(result.pageing.pageable.pageNo.addComma());
+		$('#searchForm').find('#pgNo').html(result.pageing.pageable.pageNo.addComma());
+		$('#searchForm').find('#endPgNo').html(result.pageing.pageable.totalPage.addComma());
+		gridOptions.api.setRowData(result.directList);
+		gagaPaging.createPagination(result.pageing.pageable);
+		
+	}
+	
+	/*************************************************************************
+	*  재회수지시
+	**************************************************************************/	
+	var fnReRecallOrder = function(chgGb, ordDtlNo,ordChgSq ){
+		mcxDialog.confirm("재회수지시 하시겠습니까?", {
+		    cancelBtnText: "취소",
+		    sureBtnText: "확인",
+		    sureBtnClick: function() {
+	            var param = new Object;
+	            param.chgGb    = chgGb;
+	            param.ordDtlNo = ordDtlNo;
+	            param.ordChgSq = ordChgSq;
+	            var jsonData = JSON.stringify(param);
+	            gagajf.ajaxJsonSubmit('/withdraw/direct/recallorder', jsonData, fnSearchList);
+	        }
+		});
+	}
+
+	//엑셀다운로드
+	$('#btnExcel').on('click', function() {
+		gagaAgGrid.exportToExcel('회수지시 목록', gridOptions);
+		
+		var totalRows = gridOptions.api.getDisplayedRowCount();
+		if(totalRows==0){
+			mcxDialog.alert('조회된 내역이 없습니다.');
+			return;
+		}
+
+		var date = new Date().format("YYYYMMDDHHmmss");
+		var params = {
+			fileName : "회수지시목록_"+ date,
+			sheetName: "DATA"
+		}
+		gridOptions.excelStyles = [
+			{
+				id: 'dateFormat',
+				dataType: 'dateTime',
+				numberFormat: {
+					format: 'YYYY-MM-DD;@'
+				}
+			},
+			{
+				id: 'textFormat',
+				dataType: 'string'
+			}
+		]
+		gridOptions.api.exportDataAsExcel(params);
+		
+	});
+
+	$(document).ready(function() {
+		// Create a agGrid
+		gagaAgGrid.createGrid('gridList', gridOptions);
+		var hideList = ["btnThisWeek", "btnYesterWeek", "btnThisMonth", "btnYesterMonth", "btnRecent3Month"];
+		cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '','',  hideList);
+		// grid 높이 조절
+		//uifnFitGrid('auto');
+		gagajf.setDate('#terms', 'stDate', 'edDate', 't');
+
+		//fnDatepickerDisabled();
+	});
+
+/*]]>*/
+</script>
+
+</html>

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

@@ -336,4 +336,4 @@
 
 /*]]>*/
 </script>
-</html>
+</html>