Explorar el Código

제휴몰검색기능

jsh77b hace 4 años
padre
commit
78e899c40e

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

@@ -259,6 +259,7 @@ public class TsaWithdrawController extends TsaBaseController {
 		Extmall extmall = new Extmall();
 		extmall.setVendorId(TscConstants.VendorId.SHOPLINKER.value()); // 샵링커
 		mav.addObject("extmallList", ocmService.getExtmallList(extmall));
+		mav.addObject("vendorId", TscConstants.VendorId.SHOPLINKER.value());
 		
 		mav.setViewName("/withdraw/WithdrawExceptionListForm");
 
@@ -280,46 +281,22 @@ public class TsaWithdrawController extends TsaBaseController {
 		
 		GagaMap result = new GagaMap();
 		
-		// 2021.10.06 샾링커 관련 주문번호
-		if (!StringUtils.isBlank(withdrawExc.getCondition()) || !StringUtils.isBlank(withdrawExc.getExtmallId())) {
-			if (StringUtils.isBlank(withdrawExc.getCondition())) {
-				withdrawExc.setSearch("");
-			} else {
-				withdrawExc.setConditions(withdrawExc.getCondition().replaceAll("\r", "").trim().split("\n"));
-			}
-			
-			// 데이타변환
-			WmsWithdraw wmsWithdraw = new WmsWithdraw();
-			wmsWithdraw.setExtmallId(withdrawExc.getExtmallId());
-			wmsWithdraw.setSearch(withdrawExc.getSearch());
-			wmsWithdraw.setConditions(withdrawExc.getConditions());
-			wmsWithdraw.setStDate(withdrawExc.getStDate());
-			wmsWithdraw.setEdDate(withdrawExc.getEdDate());
-
-			// 외부몰 주문번호 조회
-			Collection<WmsWithdraw> widthdrawExtmallList = deliveryService.getWithdrawExtmallList(wmsWithdraw);
-			
-			if (widthdrawExtmallList != null && widthdrawExtmallList.size() > 0) {
-				int [] ordNoList = new int[widthdrawExtmallList.size()];
-				int idx = 0;
-				for (WmsWithdraw vo : widthdrawExtmallList) {
-					ordNoList[idx] = vo.getOrdNo();
-					idx++;
-				}
-				withdrawExc.setOrdNoList(ordNoList);
-			} else {
-				int [] ordNoList = new int[1];
-				ordNoList[0] = 123;
-				withdrawExc.setOrdNoList(ordNoList);
-			}
+		// 2021.11.19
+		if (StringUtils.isBlank(withdrawExc.getCondition())) {
+			withdrawExc.setSearch("");
+		} else {
+			withdrawExc.setConditions(withdrawExc.getCondition().replaceAll("\r", "").trim().split("\n"));
 		}
 
 		withdrawExc.setPageable(new TscPageRequest(withdrawExc.getPageNo() - 1, withdrawExc.getPageSize()));
 		withdrawExc.getPageable().setTotalCount(withdrawService.getWithdrawExceptionListCount(withdrawExc));
+		
 		TscSession.setAttribute("maskingYn", TsaSession.getInfo().getMaskingYn());
+		
 		if ("N".equals(withdrawExc.getPageingYn())) {
 			withdrawExc.setPageable(null);
 		}
+		
 		result.set("pageing", withdrawExc);
 		result.set("withdrawExceptionList", withdrawService.getWithdrawExceptionList(withdrawExc));
 		

+ 20 - 12
src/main/java/com/style24/persistence/domain/WithdrawExc.java

@@ -48,8 +48,8 @@ public class WithdrawExc extends TscBaseDomain {
 	private String recallStat;         // 반품대기처리상태 
 	private String goodsCd;            // 상품코드
 	private String adminMemo;          // WMS메시지
-	private String goodsType;				// 상품유형
-	private String csMemo; // cs메모
+	private String goodsType;          // 상품유형
+	private String csMemo;             // cs메모
 	private String chgStat;
 	private String wdGb; 		
 	private String chgReason; 	
@@ -83,8 +83,7 @@ public class WithdrawExc extends TscBaseDomain {
 	private int rowspanRank;           // rowspan 순위 
 	private int rowspanDtCnt;            // 
 	private int rowspanDtRank;         //  
-	
-	
+
 	private int qty;
 	private int seq;
 	private int rfPntAmt;	//환원 포인트
@@ -117,12 +116,10 @@ public class WithdrawExc extends TscBaseDomain {
 	private Integer userNo;
 	private Integer orderExceptionNo;
 	
-	
 	// 검색
 	private String stDate;					// 조회 시작 기간
 	private String edDate;					// 조회 종료 기간
-	
-	
+
 	private String searchType;				// 조회
 	private String searchText;				// 조회
 
@@ -133,8 +130,7 @@ public class WithdrawExc extends TscBaseDomain {
 	private String delayDt;					// 회수지연일
 	private String delayDtType;				// 회수유형
 	private String goodsInfo;				// 상품정보(상품코드+사이즈코드)
-	
-	
+
 	// Masking
 	public String getMaskingCustomerName() {
 		return TscSession.getAttribute("maskingYn").equals("Y") ? MaskingUtils.name(this.customerName) : this.customerName;
@@ -151,10 +147,22 @@ public class WithdrawExc extends TscBaseDomain {
 	private String condition;			//
 	
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] conditions = null;	//
+	private String[] conditions;	//
 	
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private int[] ordNoList;			// 주문번호배열
-
-
+	
+	// 2021.11.17 제휴몰검색정보 추가
+	private String agentOrderId;
+	private String chgRegDt;
+	private String npayOrdYn;
+	private String extmallOrderId;
+	private String extmallNm;
+	
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] optCdArr;		// 옵션코드
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] optCd1Arr;		// 옵션코드
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] optCd2Arr;		// 옵션코드
 }

+ 455 - 325
src/main/java/com/style24/persistence/mybatis/shop/TsaWithdraw.xml

@@ -147,362 +147,492 @@
 	<!-- 회수예외목록 건수 -->
 	<select id="getWithdrawExceptionListCount" parameterType="WithdrawExc" resultType="int">
 		/* TsaWithdraw.getWithdrawExceptionListCount */
-		SELECT COUNT(*) AS TOTCNT
-		  FROM (		
-				SELECT 
-					  A.RECALL_STAT   -- 반품대기처리상태
-					, A.STATUS_CD     -- 처리상태
-					, A.RECALL_EXCEPTION_NO -- 반품예외처리번호 
-					, B.ORDER_DTL_NO
-				  FROM TB_ORDER_RECALL_EXCEPTION A 
-				  JOIN TB_ORDER_RECALL_EXCEPTION_ITEM B ON A.RECALL_EXCEPTION_NO = B.RECALL_EXCEPTION_NO
-				  WHERE B.REASON_CODE NOT IN('08','10')
+		SELECT COUNT(1) AS TOTCNT
+		FROM (		
+		    SELECT A.RECALL_STAT   -- 반품대기처리상태
+		         , A.STATUS_CD     -- 처리상태
+		         , A.RECALL_EXCEPTION_NO -- 반품예외처리번호 
+		         , B.ORDER_DTL_NO
+		    FROM   TB_ORDER_RECALL_EXCEPTION A 
+		    JOIN   TB_ORDER_RECALL_EXCEPTION_ITEM B ON A.RECALL_EXCEPTION_NO = B.RECALL_EXCEPTION_NO
+		    WHERE  1=1
+		    AND    B.REASON_CODE NOT IN('08','10')
+			<if test='customerName != null and customerName != ""'>
+		    AND   A.CUSTOMER_NAME = #{customerName}
+			</if>
+			<if test='orderNo != null and orderNo != ""'>
+		    AND   A.ORDER_NO  = #{orderNo}
+			</if>
+			<if test='recallStat != null and recallStat != ""'>
+		    AND   A.RECALL_STAT  = #{recallStat}
+			</if>
+			<if test='stDate != null and stDate != ""'>
+		    AND   A.DATE_CREATED <![CDATA[>= ]]> STR_TO_DATE(REPLACE(#{stDate},'-',''), '%Y%m%d%H%i%s') 
+			</if>
+			<if test='edDate != null and edDate != ""'>
+		    AND   A.DATE_CREATED <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','') + 1 , '%Y%m%d%H%i%s'), INTERVAL 1 DAY) 
+			</if>
+			<if test='reasonCode != null and reasonCode != ""'>
+		    AND B.REASON_CODE = #{reasonCode}
+			</if>
+			<if test='userNameCreated != null and userNameCreated != ""'>
+		    AND A.USER_NAME_CREATED = #{userNameCreated}
+			</if>					
+			<choose>
+				<when test='ordNoList != null and ordNoList != ""'>
+		    AND   A.ORDER_NO IN
+					<foreach collection="ordNoList" item="item" index="index"  open="(" close=")" separator=",">
+		          #{item}
+					</foreach>
+				</when>
+			</choose>
+			<if test="optCd != null and optCd != ''">
+		    AND    B.SKU_CODE LIKE CONCAT('%',#{optCd},'%')
+			</if>
+			) A
+		    LEFT   OUTER JOIN TB_ORDER_CHANGE_DETAIL  CD ON A.ORDER_DTL_NO = CD.ORD_DTL_NO AND CD.DEL_YN ='N' AND CD.CHG_STAT = 'G685_31'
+		    LEFT   OUTER JOIN TB_ORDER_CHANGE         OC ON CD.ORD_CHG_SQ = OC.ORD_CHG_SQ
+		    LEFT   OUTER JOIN TB_ORDER_DETAIL         OD ON A.ORDER_DTL_NO = OD.ORD_DTL_NO
+		    WHERE  1=1
+			<if test='chgGb != null and chgGb != "" and chgGb !="G680" and chgGb !="G680_00"'>
+		    AND    OC.CHG_GB  = #{chgGb}
+			</if>
+			<if test='chgGb =="G680"'>
+		    AND    OC.CHG_GB = 'WEXC'
+			</if>
+			<if test='chgGb =="G680_00"'>
+		    AND    OC.CHG_GB = 'EXC'
+			</if>
+			<if test="extmallId != null and extmallId != ''">
+		    AND    OD.VENDOR_ID = #{vendorId}
+		    AND    OD.EXTMALL_ID = #{extmallId}
+			</if>
+			<if test="extmallOrderId != null and extmallOrderId != ''">
+		    AND    OD.EXTMALL_ORDER_ID LIKE CONCAT('%',#{extmallOrderId},'%')
+			</if>
+			<choose>
+				<when test="search != null and search != '' and search == 'shoplinkerOrderId'">
+		    AND    OD.AGENT_ORDER_ID IN
+					<foreach collection="conditions" item="item" index="index"  open="(" close=")" separator=",">
+		           #{item}
+					</foreach>
+				</when>
+				<when test="search != null and search != '' and search == 'mallOrderId'">
+		    AND    OD.EXTMALL_ORDER_ID IN
+					<foreach collection="conditions" item="item" index="index"  open="(" close=")" separator=",">
+		           #{item}
+					</foreach>
+				</when>
+			</choose>
+	</select>
+		
+	<!-- 회수예외목록 -->
+	<select id="getWithdrawExceptionList" parameterType="WithdrawExc" resultType="WithdrawExc">
+		/* TsaWithdraw.getWithdrawExceptionList */
+		SELECT Z.*
+		     , ROW_NUMBER() OVER W AS ROWSPAN_CNT
+		     , ROW_NUMBER() OVER T AS ROWSPAN_RANK
+		     , ROW_NUMBER() OVER S AS ROWSPAN_DT_CNT 
+		     , ROW_NUMBER() OVER C AS ROWSPAN_DT_RANK
+		     , (SELECT E.EXTMALL_NM FROM TB_EXTMALL E WHERE E.VENDOR_ID = Z.VENDOR_ID AND E.EXTMALL_ID = Z.EXTMALL_ID) AS SITE_CD
+		     , CASE WHEN Z.CHG_GB = 'G680_30' THEN FN_GET_CODE_NM('G688', Z.CHG_REASON)
+		            WHEN Z.CHG_GB = 'G680_40' THEN FN_GET_CODE_NM('G689', Z.CHG_REASON)   
+		            ELSE '' 
+		            END AS CHG_REASON_NM  
+		     , CASE WHEN Z.CHG_GB = 'EXC' THEN '출고예외' 
+		            WHEN Z.CHG_GB = 'WEXC' THEN '회수예외' 
+		            ELSE FN_GET_CODE_NM('G680', Z.CHG_GB) 
+		            END  AS CHG_GB_NM
+		     , (SELECT CHG_STAT 
+		        FROM   TB_ORDER_CHANGE_DETAIL C 
+		        WHERE  C.ORD_DTL_NO = Z.ORDER_DTL_NO 
+		        AND    C.DEL_YN = 'N' 
+		        AND    C.ORD_CHG_SQ = Z.ORD_CHG_SQ) AS CHG_STAT
+		     , (SELECT D.DELV_FEE_CD 
+		        FROM   TB_ORDER_DETAIL D 
+		        WHERE  D.ORD_DTL_NO = Z.ORDER_DTL_NO ) AS DELV_FEE_CD
+		     , CASE WHEN Z.RECALL_STAT = 'P' 
+		            THEN '대기' 
+		            ELSE '완료' 
+		            END AS RECALL_STAT_NM
+		     , CASE WHEN Z.RECALL_STAT = 'P' AND Z.ADD_FEE_YN = 'Y' AND (SELECT CHG_STAT FROM TB_ORDER_CHANGE_DETAIL C WHERE C.ORD_DTL_NO = Z.ORDER_DTL_NO AND C.DEL_YN = 'N' AND C.ORD_CHG_SQ = Z.ORD_CHG_SQ) IN ('G685_32') THEN '추가결제대기'
+		            WHEN Z.RECALL_STAT = 'P' AND Z.ADD_FEE_YN = 'Y' AND (SELECT CHG_STAT FROM TB_ORDER_CHANGE_DETAIL C WHERE C.ORD_DTL_NO = Z.ORDER_DTL_NO AND C.DEL_YN = 'N' AND C.ORD_CHG_SQ = Z.ORD_CHG_SQ) NOT IN ('G685_32') THEN '추가결제완료'       
+		            WHEN Z.RECALL_STAT = 'P' THEN '대기' ELSE '완료' END AS STAT_NM
+		     ,  CASE WHEN (SELECT COUNT(*) FROM TB_ORDER_CHANGE_DETAIL OCD WHERE OCD.ORD_DTL_NO = Z.ORDER_DTL_NO AND OCD.CHG_STAT IN('G685_49','G685_69') AND OCD.ORD_CHG_SQ = Z.ORD_CHG_SQ) > 0 THEN 'Y' ELSE 'N' END AS NEW_ORD_CHG_SQ_YN
+		FROM (
+		    SELECT A.*
+		         , ROW_NUMBER() OVER(ORDER BY  A.ORDER_NO, A.RECALL_EXCEPTION_NO, A.RECALL_EXCEPTION_ITEM_NO)  RNUM 
+		         , CASE WHEN A.MALL_GB = 'G011_20' THEN (SELECT MAX(BB.EXTMALL_ID) FROM TB_ORDER_DETAIL BB WHERE BB.ORD_NO = A.ORDER_NO) ELSE 'APISHOP_0054' END AS EXTMALL_ID
+		         , CASE WHEN A.MALL_GB = 'G011_20' THEN (SELECT MAX(BB.VENDOR_ID) FROM TB_ORDER_DETAIL BB WHERE BB.ORD_NO = A.ORDER_NO) ELSE 'G003_V001' END AS VENDOR_ID
+		    FROM (   
+		        SELECT A.*
+		        FROM (
+		            SELECT A.RECALL_STAT   -- 반품대기처리상태
+		                 , A.STATUS_CD     -- 처리상태
+		                 , A.DATE_CREATED  -- 등록일자
+		                 , A.CUSTOMER_NAME -- 고객명
+		                 , A.ORDER_NO      -- 주문번호
+		                 , B.ORDER_DTL_NO  -- 주문상세번호 
+		                 , A.LOGISTICS_NAME -- 택배사명
+		                 , A.INVOICE_NO     -- 반송장번호
+		                 , A.CHARGE_TYPE    -- 요금구분
+		                 , A.CHARGE_AMOUNT  -- 배송비
+		                 , A.USER_NAME_CREATED -- 작업자
+		                 , B.REASON_CD -- 예외사유
+		                 , IFNULL((SELECT GROUP_CONCAT(ADMIN_MEMO ORDER BY RECALL_EXCEPTION_MEMO_NO ) 
+		                           FROM   TB_ORDER_RECALL_EXCEPTION_MEMO C 
+		                           WHERE  C.RECALL_EXCEPTION_NO = A.RECALL_EXCEPTION_NO  
+		                           AND    ADMIN_MEMO !='.'),'-') AS ADMIN_MEMO -- WMS메시지
+		                 , IFNULL((SELECT BRAND_KNM FROM TB_BRAND BR JOIN TB_GOODS GD ON BR.BRAND_CD = GD.BRAND_CD WHERE GD.GOODS_CD = C.GOODS_CD),'') AS BRAND_NM           -- 브랜드명
+		                 , B.PRODUCT_CODE   -- 상품코드
+		                 , B.SKU_CODE       -- SKU코드
+		                 , B.PRODUCT_NAME   -- 상품명
+		                 , B.SKU_VALUE      -- 속성
+		                 , C.SKU_MODEL_NO   -- 원코드
+		                 , B.EXCEPTION_QTY  -- 수량 
+		                 , A.RECALL_EXCEPTION_NO -- 반품예외처리번호 
+		                 , IFNULL(C.GOODS_CD,'') AS GOODS_CD       -- 상품코드 
+		                 , B.RECALL_EXCEPTION_ITEM_NO 
+		                 , B.QTY
+		                 , B.REASON_CODE
+		                 , O.MALL_GB
+		                 , A.COD_FEE
+		                 , O.ORD_PHNNO 
+		                 , O.CUST_NO 
+		                 , CASE WHEN A.PAY_GB = 'NAVER' THEN 'Y' ELSE 'N' END AS PAY_GB  
+		                 , A.ORDER_EXCEPTION_NO 
+		                 , NULL   AS CHG_STAT
+		                 , CD.ORD_CHG_SQ 
+		                 , NULL   AS WD_GB 
+		                 , NULL   AS CHG_REASON
+		                 , 'EXC'  AS CHG_GB 
+		                 , 'N'    AS WD_BF_SEND_YN
+		                 , A.ADD_FEE_YN
+		                 , A.CS_ADD_FEE
+		                 , A.CS_MEMO
+		                 , (SELECT EXTMALL_NM
+		                    FROM   TB_EXTMALL X
+		                    WHERE  X.EXTMALL_ID = OD.EXTMALL_ID) AS EXTMALL_NM
+		                 , OD.EXTMALL_ORDER_ID
+		                 , CD.REG_DT AS CHG_REG_DT
+		            FROM   TB_ORDER_RECALL_EXCEPTION A 
+		            JOIN   TB_ORDER_RECALL_EXCEPTION_ITEM B ON A.RECALL_EXCEPTION_NO = B.RECALL_EXCEPTION_NO
+		            LEFT   JOIN TB_ORDER O ON O.ORD_NO = A.ORDER_NO 
+		            LEFT   JOIN TB_OPTION C ON C.OPT_CD = B.SKU_CODE
+		            LEFT   OUTER JOIN TB_ORDER_CHANGE_DETAIL CD ON B.ORDER_DTL_NO = CD.ORD_DTL_NO
+		            LEFT   OUTER JOIN TB_ORDER_DETAIL OD ON B.ORDER_DTL_NO = OD.ORD_DTL_NO 
+		            WHERE  1=1
+		            AND    B.REASON_CODE IN ('09','11')
 					<if test='customerName != null and customerName != ""'>
-					AND   A.CUSTOMER_NAME = #{customerName}
+		            AND    A.CUSTOMER_NAME = #{customerName}
 					</if>
 					<if test='orderNo != null and orderNo != ""'>
-					AND   A.ORDER_NO  = #{orderNo}
+		            AND    A.ORDER_NO  = #{orderNo}
 					</if>
 					<if test='recallStat != null and recallStat != ""'>
-					AND   A.RECALL_STAT  = #{recallStat}
+		            AND    A.RECALL_STAT  = #{recallStat}
 					</if>
 					<if test='stDate != null and stDate != ""'>
-					AND   A.DATE_CREATED <![CDATA[>= ]]> STR_TO_DATE(REPLACE(#{stDate},'-',''), '%Y%m%d%H%i%s') 
+		            AND    A.DATE_CREATED <![CDATA[>= ]]> STR_TO_DATE(REPLACE(#{stDate},'-',''), '%Y%m%d%H%i%s') 
 					</if>
 					<if test='edDate != null and edDate != ""'>
-					AND   A.DATE_CREATED <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','') + 1 , '%Y%m%d%H%i%s'), INTERVAL 1 DAY) 
+		            AND    A.DATE_CREATED <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','')+ 1, '%Y%m%d%H%i%s'), INTERVAL 1 DAY)
 					</if>
 					<if test='reasonCode != null and reasonCode != ""'>
-					AND B.REASON_CODE = #{reasonCode}
+		            AND    B.REASON_CODE = #{reasonCode}
 					</if>
 					<if test='userNameCreated != null and userNameCreated != ""'>
-					AND A.USER_NAME_CREATED = #{userNameCreated}
-					</if>					
+		            AND    A.USER_NAME_CREATED = #{userNameCreated}
+					</if>
 					<choose>
-					     <when test='ordNoList != null and ordNoList != ""'>
-					AND   A.ORDER_NO IN
-					          <foreach collection="ordNoList" item="item" index="index"  open="(" close=")" separator=",">
-					      #{item}
-					         </foreach>
-					     </when>
+						<when test='ordNoList != null and ordNoList != ""'>
+		            AND    A.ORDER_NO IN
+							<foreach collection="ordNoList" item="item" index="index"  open="(" close=")" separator=",">
+		                   #{item}
+							</foreach>
+						</when>
 					</choose>
-				) A
-				LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL  CD ON A.ORDER_DTL_NO = CD.ORD_DTL_NO AND CD.DEL_YN ='N' AND CD.CHG_STAT = 'G685_31'
-				LEFT OUTER JOIN TB_ORDER_CHANGE         OC ON CD.ORD_CHG_SQ = OC.ORD_CHG_SQ 
-				WHERE 1=1
-				<if test='chgGb != null and chgGb != "" and chgGb !="G680" and chgGb !="G680_00"'>
-				AND OC.CHG_GB  = #{chgGb}
-				</if>
-				<if test='chgGb =="G680"'>
-				AND OC.CHG_GB = 'WEXC'
-				</if>
-				<if test='chgGb =="G680_00"'>
-				AND OC.CHG_GB = 'EXC'
-				</if>	
-								
-	</select>
-		
-	<!-- 회수예외목록 -->
-	<select id="getWithdrawExceptionList" parameterType="WithdrawExc" resultType="WithdrawExc">
-		/* TsaWithdraw.getWithdrawExceptionList */
-		SELECT Z.*
-			, ROW_NUMBER() OVER W AS ROWSPAN_CNT
-	        , ROW_NUMBER() OVER T AS ROWSPAN_RANK
-	        , ROW_NUMBER() OVER S AS ROWSPAN_DT_CNT 
-	        , ROW_NUMBER() OVER C AS ROWSPAN_DT_RANK
-	        , (SELECT E.EXTMALL_NM FROM TB_EXTMALL E WHERE E.VENDOR_ID = Z.VENDOR_ID AND E.EXTMALL_ID = Z.EXTMALL_ID) AS SITE_CD
-	        , CASE WHEN Z.CHG_GB = 'G680_30' THEN FN_GET_CODE_NM('G688', Z.CHG_REASON)
-			       WHEN Z.CHG_GB = 'G680_40' THEN FN_GET_CODE_NM('G689', Z.CHG_REASON)   ELSE '' END AS CHG_REASON_NM  
-			, CASE WHEN Z.CHG_GB = 'EXC' THEN '출고예외'  WHEN Z.CHG_GB = 'WEXC' THEN '회수예외' ELSE FN_GET_CODE_NM('G680', Z.CHG_GB) END  AS CHG_GB_NM
-			, (SELECT CHG_STAT FROM TB_ORDER_CHANGE_DETAIL C WHERE C.ORD_DTL_NO = Z.ORDER_DTL_NO AND C.DEL_YN = 'N' AND C.ORD_CHG_SQ = Z.ORD_CHG_SQ) AS CHG_STAT
-			, (SELECT D.DELV_FEE_CD FROM TB_ORDER_DETAIL D WHERE D.ORD_DTL_NO = Z.ORDER_DTL_NO ) AS DELV_FEE_CD
-			, CASE WHEN Z.RECALL_STAT = 'P' THEN '대기' ELSE '완료' END AS RECALL_STAT_NM
-			, CASE WHEN Z.RECALL_STAT = 'P' AND Z.ADD_FEE_YN = 'Y' AND (SELECT CHG_STAT FROM TB_ORDER_CHANGE_DETAIL C WHERE C.ORD_DTL_NO = Z.ORDER_DTL_NO AND C.DEL_YN = 'N' AND C.ORD_CHG_SQ = Z.ORD_CHG_SQ) IN ('G685_32') THEN '추가결제대기'
-				   WHEN Z.RECALL_STAT = 'P' AND Z.ADD_FEE_YN = 'Y' AND (SELECT CHG_STAT FROM TB_ORDER_CHANGE_DETAIL C WHERE C.ORD_DTL_NO = Z.ORDER_DTL_NO AND C.DEL_YN = 'N' AND C.ORD_CHG_SQ = Z.ORD_CHG_SQ) NOT IN ('G685_32') THEN '추가결제완료'       
-				   WHEN Z.RECALL_STAT = 'P' THEN '대기' ELSE '완료' END AS STAT_NM
-			, CASE WHEN (SELECT COUNT(*) FROM TB_ORDER_CHANGE_DETAIL OCD WHERE OCD.ORD_DTL_NO = Z.ORDER_DTL_NO AND OCD.CHG_STAT IN('G685_49','G685_69') AND OCD.ORD_CHG_SQ = Z.ORD_CHG_SQ) > 0 THEN 'Y' ELSE 'N' END AS NEW_ORD_CHG_SQ_YN
-		FROM (
-		    SELECT A.*, ROW_NUMBER() OVER(ORDER BY  A.ORDER_NO, A.RECALL_EXCEPTION_NO, A.RECALL_EXCEPTION_ITEM_NO)  RNUM 
-		          , CASE WHEN A.MALL_GB = 'G011_20' THEN (SELECT MAX(BB.EXTMALL_ID) FROM TB_ORDER_DETAIL BB WHERE BB.ORD_NO = A.ORDER_NO) ELSE 'APISHOP_0054' END AS EXTMALL_ID
-		          , CASE WHEN A.MALL_GB = 'G011_20' THEN (SELECT MAX(BB.VENDOR_ID) FROM TB_ORDER_DETAIL BB WHERE BB.ORD_NO = A.ORDER_NO) ELSE 'G003_V001' END AS VENDOR_ID
-		    FROM (   
-				SELECT A.*
-				  FROM (
-						SELECT 
-							  A.RECALL_STAT   -- 반품대기처리상태
-							, A.STATUS_CD     -- 처리상태
-							, A.DATE_CREATED  -- 등록일자
-							, A.CUSTOMER_NAME -- 고객명
-							, A.ORDER_NO      -- 주문번호
-							, B.ORDER_DTL_NO  -- 주문상세번호 
-							, A.LOGISTICS_NAME -- 택배사명
-							, A.INVOICE_NO     -- 반송장번호
-							, A.CHARGE_TYPE    -- 요금구분
-							, A.CHARGE_AMOUNT  -- 배송비
-							, A.USER_NAME_CREATED -- 작업자
-							, B.REASON_CD -- 예외사유
-							, IFNULL((SELECT GROUP_CONCAT(ADMIN_MEMO ORDER BY RECALL_EXCEPTION_MEMO_NO ) 
-							     FROM TB_ORDER_RECALL_EXCEPTION_MEMO C WHERE C.RECALL_EXCEPTION_NO = A.RECALL_EXCEPTION_NO  AND ADMIN_MEMO !='.'),'-') AS ADMIN_MEMO -- WMS메시지
-							, IFNULL((SELECT BRAND_KNM FROM TB_BRAND BR JOIN TB_GOODS GD ON BR.BRAND_CD = GD.BRAND_CD WHERE GD.GOODS_CD = C.GOODS_CD),'') AS BRAND_NM           -- 브랜드명
-							, B.PRODUCT_CODE   -- 상품코드
-							, B.SKU_CODE       -- SKU코드
-							, B.PRODUCT_NAME   -- 상품명
-							, B.SKU_VALUE      -- 속성
-							, C.SKU_MODEL_NO   -- 원코드
-							, B.EXCEPTION_QTY  -- 수량 
-							, A.RECALL_EXCEPTION_NO -- 반품예외처리번호 
-							, IFNULL(C.GOODS_CD,'') AS GOODS_CD       -- 상품코드 
-							, B.RECALL_EXCEPTION_ITEM_NO 
-							, B.QTY
-							, B.REASON_CODE
-							, O.MALL_GB
-							, A.COD_FEE
-							, O.ORD_PHNNO 
-							, O.CUST_NO 
-							, CASE WHEN A.PAY_GB = 'NAVER' THEN 'Y' ELSE 'N' END AS PAY_GB  
-							, A.ORDER_EXCEPTION_NO 
-							, NULL   AS CHG_STAT
-							, CD.ORD_CHG_SQ 
-							, NULL   AS WD_GB 
-							, NULL   AS CHG_REASON
-							, 'EXC'  AS CHG_GB 
-							, 'N'    AS WD_BF_SEND_YN
-							, A.ADD_FEE_YN
-							, A.CS_ADD_FEE
-							, A.CS_MEMO
-						  FROM TB_ORDER_RECALL_EXCEPTION A 
-						  JOIN TB_ORDER_RECALL_EXCEPTION_ITEM B ON A.RECALL_EXCEPTION_NO = B.RECALL_EXCEPTION_NO
-						  LEFT JOIN TB_ORDER O ON O.ORD_NO = A.ORDER_NO 
-						  LEFT JOIN TB_OPTION C ON C.OPT_CD = B.SKU_CODE
-						  LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL  CD ON B.ORDER_DTL_NO = CD.ORD_DTL_NO 
-						  WHERE B.REASON_CODE IN('09','11')
-							<if test='customerName != null and customerName != ""'>
-							AND   A.CUSTOMER_NAME = #{customerName}
-							</if>
-							<if test='orderNo != null and orderNo != ""'>
-							AND   A.ORDER_NO  = #{orderNo}
-							</if>
-							<if test='recallStat != null and recallStat != ""'>
-							AND   A.RECALL_STAT  = #{recallStat}
-							</if>
-							<if test='stDate != null and stDate != ""'>
-							AND   A.DATE_CREATED <![CDATA[>= ]]> STR_TO_DATE(REPLACE(#{stDate},'-',''), '%Y%m%d%H%i%s') 
-							</if>
-							<if test='edDate != null and edDate != ""'>
-							AND   A.DATE_CREATED <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','')+ 1, '%Y%m%d%H%i%s'), INTERVAL 1 DAY)
-							</if>
-							
-							<if test='reasonCode != null and reasonCode != ""'>
-							AND B.REASON_CODE = #{reasonCode}
-							</if>
-							<if test='userNameCreated != null and userNameCreated != ""'>
-							AND A.USER_NAME_CREATED = #{userNameCreated}
-							</if>
-							<choose>
-							     <when test='ordNoList != null and ordNoList != ""'>
-							AND   A.ORDER_NO IN
-							          <foreach collection="ordNoList" item="item" index="index"  open="(" close=")" separator=",">
-							      #{item}
-							         </foreach>
-							     </when>
-							</choose>
-						UNION ALL
-						
-						SELECT 
-							  A.RECALL_STAT   -- 반품대기처리상태
-							, A.STATUS_CD     -- 처리상태
-							, A.DATE_CREATED  -- 등록일자
-							, A.CUSTOMER_NAME -- 고객명
-							, A.ORDER_NO      -- 주문번호
-							, B.ORDER_DTL_NO  -- 주문상세번호 
-							, A.LOGISTICS_NAME -- 택배사명
-							, A.INVOICE_NO     -- 반송장번호
-							, A.CHARGE_TYPE    -- 요금구분
-							, A.CHARGE_AMOUNT  -- 배송비
-							, A.USER_NAME_CREATED -- 작업자
-							, B.REASON_CD -- 예외사유
-							, IFNULL((SELECT GROUP_CONCAT(ADMIN_MEMO ORDER BY RECALL_EXCEPTION_MEMO_NO ) 
-							     FROM TB_ORDER_RECALL_EXCEPTION_MEMO C WHERE C.RECALL_EXCEPTION_NO = A.RECALL_EXCEPTION_NO  AND ADMIN_MEMO !='.'),'-') AS ADMIN_MEMO -- WMS메시지
-							, IFNULL((SELECT BRAND_KNM FROM TB_BRAND BR JOIN TB_GOODS GD ON BR.BRAND_CD = GD.BRAND_CD WHERE GD.GOODS_CD = C.GOODS_CD),'') AS BRAND_NM           -- 브랜드명
-							, B.PRODUCT_CODE   -- 상품코드
-							, B.SKU_CODE       -- SKU코드
-							, B.PRODUCT_NAME   -- 상품명
-							, B.SKU_VALUE      -- 속성
-							, C.SKU_MODEL_NO   -- 원코드
-							, B.EXCEPTION_QTY  -- 수량 
-							, A.RECALL_EXCEPTION_NO -- 반품예외처리번호 
-							, IFNULL(C.GOODS_CD,'') AS GOODS_CD       -- 상품코드 
-							, B.RECALL_EXCEPTION_ITEM_NO 
-							, B.QTY
-							, B.REASON_CODE
-							, O.MALL_GB
-							, A.COD_FEE
-							, O.ORD_PHNNO 
-							, O.CUST_NO 
-							, CASE WHEN A.PAY_GB = 'NAVER' THEN 'Y' ELSE 'N' END AS PAY_GB  
-							, A.ORDER_EXCEPTION_NO 
-							, CD.CHG_STAT
-							, OC.ORD_CHG_SQ 
-							, OC.WD_GB 
-							, OC.CHG_REASON
-							, OC.CHG_GB 
-							, OC.WD_BF_SEND_YN
-							, A.ADD_FEE_YN
-							, A.CS_ADD_FEE
-							, A.CS_MEMO
-						  FROM TB_ORDER_RECALL_EXCEPTION A 
-						  JOIN TB_ORDER_RECALL_EXCEPTION_ITEM B ON A.RECALL_EXCEPTION_NO = B.RECALL_EXCEPTION_NO
-						  LEFT JOIN TB_ORDER O ON O.ORD_NO = A.ORDER_NO 
-						  LEFT JOIN TB_OPTION C ON C.OPT_CD = B.SKU_CODE
-						  LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL  CD ON B.ORDER_DTL_NO = CD.ORD_DTL_NO AND A.ORDER_EXCEPTION_NO = CD.ORD_CHG_SQ 
-						  LEFT OUTER JOIN TB_ORDER_CHANGE         OC ON CD.ORD_CHG_SQ = OC.ORD_CHG_SQ 						  
-						  WHERE B.REASON_CODE IN('00','02','03','04','05','06','15')
-							<if test='customerName != null and customerName != ""'>
-							AND   A.CUSTOMER_NAME = #{customerName}
-							</if>
-							<if test='orderNo != null and orderNo != ""'>
-							AND   A.ORDER_NO  = #{orderNo}
-							</if>
-							<if test='recallStat != null and recallStat != ""'>
-							AND   A.RECALL_STAT  = #{recallStat}
-							</if>
-							<if test='stDate != null and stDate != ""'>
-							AND   A.DATE_CREATED <![CDATA[>= ]]> STR_TO_DATE(REPLACE(#{stDate},'-',''), '%Y%m%d%H%i%s') 
-							</if>
-							<if test='edDate != null and edDate != ""'>
-							AND   A.DATE_CREATED <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','')+ 1, '%Y%m%d%H%i%s'), INTERVAL 1 DAY)
-							</if>
-							
-							<if test='reasonCode != null and reasonCode != ""'>
-							AND B.REASON_CODE = #{reasonCode}
-							</if>
-							<if test='userNameCreated != null and userNameCreated != ""'>
-							AND A.USER_NAME_CREATED = #{userNameCreated}
-							</if>
-							<choose>
-							     <when test='ordNoList != null and ordNoList != ""'>
-							AND   A.ORDER_NO IN
-							          <foreach collection="ordNoList" item="item" index="index"  open="(" close=")" separator=",">
-							      #{item}
-							         </foreach>
-							     </when>
-							</choose>
-						UNION ALL
-						
-						SELECT 
-							  A.RECALL_STAT   -- 반품대기처리상태
-							, A.STATUS_CD     -- 처리상태
-							, A.DATE_CREATED  -- 등록일자
-							, A.CUSTOMER_NAME -- 고객명
-							, A.ORDER_NO      -- 주문번호
-							, B.ORDER_DTL_NO  -- 주문상세번호 
-							, A.LOGISTICS_NAME -- 택배사명
-							, A.INVOICE_NO     -- 반송장번호
-							, A.CHARGE_TYPE    -- 요금구분
-							, A.CHARGE_AMOUNT  -- 배송비
-							, A.USER_NAME_CREATED -- 작업자
-							, B.REASON_CD -- 예외사유
-							, IFNULL((SELECT GROUP_CONCAT(ADMIN_MEMO ORDER BY RECALL_EXCEPTION_MEMO_NO ) 
-							     FROM TB_ORDER_RECALL_EXCEPTION_MEMO C WHERE C.RECALL_EXCEPTION_NO = A.RECALL_EXCEPTION_NO  AND ADMIN_MEMO !='.'),'-') AS ADMIN_MEMO -- WMS메시지
-							, IFNULL((SELECT BRAND_KNM FROM TB_BRAND BR JOIN TB_GOODS GD ON BR.BRAND_CD = GD.BRAND_CD WHERE GD.GOODS_CD = C.GOODS_CD),'') AS BRAND_NM           -- 브랜드명
-							, B.PRODUCT_CODE   -- 상품코드
-							, B.SKU_CODE       -- SKU코드
-							, B.PRODUCT_NAME   -- 상품명
-							, B.SKU_VALUE      -- 속성
-							, C.SKU_MODEL_NO   -- 원코드
-							, B.EXCEPTION_QTY  -- 수량 
-							, A.RECALL_EXCEPTION_NO -- 반품예외처리번호 
-							, IFNULL(C.GOODS_CD,'') AS GOODS_CD       -- 상품코드 
-							, B.RECALL_EXCEPTION_ITEM_NO 
-							, B.QTY
-							, B.REASON_CODE
-							, O.MALL_GB
-							, A.COD_FEE
-							, O.ORD_PHNNO 
-							, O.CUST_NO 
-							, CASE WHEN A.PAY_GB = 'NAVER' THEN 'Y' ELSE 'N' END AS PAY_GB  
-							, A.ORDER_EXCEPTION_NO 
-							, CD.CHG_STAT
-							, OC.ORD_CHG_SQ 
-							, OC.WD_GB 
-							, OC.CHG_REASON
-							, 'WEXC' AS CHG_GB 
-							, IFNULL(OC.WD_BF_SEND_YN,'N') AS WD_BF_SEND_YN
-							, A.ADD_FEE_YN
-							, A.CS_ADD_FEE
-							, A.CS_MEMO
-						  FROM TB_ORDER_RECALL_EXCEPTION A 
-						  JOIN TB_ORDER_RECALL_EXCEPTION_ITEM B ON A.RECALL_EXCEPTION_NO = B.RECALL_EXCEPTION_NO
-						  LEFT JOIN TB_ORDER O ON O.ORD_NO = A.ORDER_NO 
-						  LEFT JOIN TB_OPTION C ON C.OPT_CD = B.SKU_CODE
-						  LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL  CD ON B.ORDER_DTL_NO = CD.ORD_DTL_NO 
-						  LEFT OUTER JOIN TB_ORDER_CHANGE         OC ON CD.ORD_CHG_SQ = OC.ORD_CHG_SQ 						  
-						  WHERE B.REASON_CODE IN('01')
-							<if test='customerName != null and customerName != ""'>
-							AND   A.CUSTOMER_NAME = #{customerName}
-							</if>
-							<if test='orderNo != null and orderNo != ""'>
-							AND   A.ORDER_NO  = #{orderNo}
-							</if>
-							<if test='recallStat != null and recallStat != ""'>
-							AND   A.RECALL_STAT  = #{recallStat}
-							</if>
-							<if test='stDate != null and stDate != ""'>
-							AND   A.DATE_CREATED <![CDATA[>= ]]> STR_TO_DATE(REPLACE(#{stDate},'-',''), '%Y%m%d%H%i%s') 
-							</if>
-							<if test='edDate != null and edDate != ""'>
-							AND   A.DATE_CREATED <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','')+ 1, '%Y%m%d%H%i%s'), INTERVAL 1 DAY)
-							</if>
-							
-							<if test='reasonCode != null and reasonCode != ""'>
-							AND B.REASON_CODE = #{reasonCode}
-							</if>
-							<if test='userNameCreated != null and userNameCreated != ""'>
-							AND A.USER_NAME_CREATED = #{userNameCreated}
-							</if>
-							<choose>
-							     <when test='ordNoList != null and ordNoList != ""'>
-							AND   A.ORDER_NO IN
-							          <foreach collection="ordNoList" item="item" index="index"  open="(" close=")" separator=",">
-							      #{item}
-							         </foreach>
-							     </when>
-							</choose>
-				) A
-				WHERE 1=1
+					<if test="extmallId != null and extmallId != ''">
+		            AND    OD.VENDOR_ID = #{vendorId}
+		            AND    OD.EXTMALL_ID = #{extmallId}
+					</if>
+					<if test="extmallOrderId != null and extmallOrderId != ''">
+		            AND    OD.EXTMALL_ORDER_ID LIKE CONCAT('%',#{extmallOrderId},'%')
+					</if>
+					<if test="optCd != null and optCd != ''">
+		            AND    B.SKU_CODE LIKE CONCAT('%',#{optCd},'%')
+					</if>
+					<choose>
+						<when test="search != null and search != '' and search == 'shoplinkerOrderId'">
+		            AND    OD.AGENT_ORDER_ID IN
+							<foreach collection="conditions" item="item" index="index"  open="(" close=")" separator=",">
+		                   #{item}
+							</foreach>
+						</when>
+						<when test="search != null and search != '' and search == 'mallOrderId'">
+		            AND    OD.EXTMALL_ORDER_ID IN
+							<foreach collection="conditions" item="item" index="index"  open="(" close=")" separator=",">
+		                   #{item}
+							</foreach>
+						</when>
+					</choose>
+		            UNION  ALL
+		            SELECT A.RECALL_STAT   -- 반품대기처리상태
+		                 , A.STATUS_CD     -- 처리상태
+		                 , A.DATE_CREATED  -- 등록일자
+		                 , A.CUSTOMER_NAME -- 고객명
+		                 , A.ORDER_NO      -- 주문번호
+		                 , B.ORDER_DTL_NO  -- 주문상세번호 
+		                 , A.LOGISTICS_NAME -- 택배사명
+		                 , A.INVOICE_NO     -- 반송장번호
+		                 , A.CHARGE_TYPE    -- 요금구분
+		                 , A.CHARGE_AMOUNT  -- 배송비
+		                 , A.USER_NAME_CREATED -- 작업자
+		                 , B.REASON_CD -- 예외사유
+		                 , IFNULL((SELECT GROUP_CONCAT(ADMIN_MEMO ORDER BY RECALL_EXCEPTION_MEMO_NO ) 
+		                           FROM   TB_ORDER_RECALL_EXCEPTION_MEMO C 
+		                           WHERE  C.RECALL_EXCEPTION_NO = A.RECALL_EXCEPTION_NO  
+		                           AND    ADMIN_MEMO !='.'),'-') AS ADMIN_MEMO -- WMS메시지
+		                 , IFNULL((SELECT BRAND_KNM FROM TB_BRAND BR JOIN TB_GOODS GD ON BR.BRAND_CD = GD.BRAND_CD WHERE GD.GOODS_CD = C.GOODS_CD),'') AS BRAND_NM           -- 브랜드명
+		                 , B.PRODUCT_CODE   -- 상품코드
+		                 , B.SKU_CODE       -- SKU코드
+		                 , B.PRODUCT_NAME   -- 상품명
+		                 , B.SKU_VALUE      -- 속성
+		                 , C.SKU_MODEL_NO   -- 원코드
+		                 , B.EXCEPTION_QTY  -- 수량 
+		                 , A.RECALL_EXCEPTION_NO -- 반품예외처리번호 
+		                 , IFNULL(C.GOODS_CD,'') AS GOODS_CD       -- 상품코드 
+		                 , B.RECALL_EXCEPTION_ITEM_NO 
+		                 , B.QTY
+		                 , B.REASON_CODE
+		                 , O.MALL_GB
+		                 , A.COD_FEE
+		                 , O.ORD_PHNNO 
+		                 , O.CUST_NO 
+		                 , CASE WHEN A.PAY_GB = 'NAVER' THEN 'Y' ELSE 'N' END AS PAY_GB  
+		                 , A.ORDER_EXCEPTION_NO 
+		                 , CD.CHG_STAT
+		                 , OC.ORD_CHG_SQ 
+		                 , OC.WD_GB 
+		                 , OC.CHG_REASON
+		                 , OC.CHG_GB 
+		                 , OC.WD_BF_SEND_YN
+		                 , A.ADD_FEE_YN
+		                 , A.CS_ADD_FEE
+		                 , A.CS_MEMO
+		                 , (SELECT EXTMALL_NM
+		                    FROM   TB_EXTMALL X
+		                    WHERE  X.EXTMALL_ID = OD.EXTMALL_ID) AS EXTMALL_NM
+		                 , OD.EXTMALL_ORDER_ID
+		                 , CD.REG_DT AS CHG_REG_DT
+		            FROM   TB_ORDER_RECALL_EXCEPTION A 
+		            JOIN   TB_ORDER_RECALL_EXCEPTION_ITEM B ON A.RECALL_EXCEPTION_NO = B.RECALL_EXCEPTION_NO
+		            LEFT   JOIN TB_ORDER O ON O.ORD_NO = A.ORDER_NO 
+		            LEFT   JOIN TB_OPTION C ON C.OPT_CD = B.SKU_CODE
+		            LEFT   OUTER JOIN TB_ORDER_CHANGE_DETAIL  CD ON B.ORDER_DTL_NO = CD.ORD_DTL_NO AND A.ORDER_EXCEPTION_NO = CD.ORD_CHG_SQ 
+		            LEFT   OUTER JOIN TB_ORDER_CHANGE         OC ON CD.ORD_CHG_SQ = OC.ORD_CHG_SQ
+		            LEFT   OUTER JOIN TB_ORDER_DETAIL         OD ON B.ORDER_DTL_NO = OD.ORD_DTL_NO 
+		            WHERE  1=1
+		            AND    B.REASON_CODE IN('00','02','03','04','05','06','15')
+					<if test='customerName != null and customerName != ""'>
+		            AND    A.CUSTOMER_NAME = #{customerName}
+					</if>
+					<if test='orderNo != null and orderNo != ""'>
+		            AND    A.ORDER_NO  = #{orderNo}
+					</if>
+					<if test='recallStat != null and recallStat != ""'>
+		            AND    A.RECALL_STAT  = #{recallStat}
+					</if>
+					<if test='stDate != null and stDate != ""'>
+		            AND    A.DATE_CREATED <![CDATA[>= ]]> STR_TO_DATE(REPLACE(#{stDate},'-',''), '%Y%m%d%H%i%s') 
+					</if>
+					<if test='edDate != null and edDate != ""'>
+		            AND    A.DATE_CREATED <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','')+ 1, '%Y%m%d%H%i%s'), INTERVAL 1 DAY)
+					</if>
+					<if test='reasonCode != null and reasonCode != ""'>
+		            AND    B.REASON_CODE = #{reasonCode}
+					</if>
+					<if test='userNameCreated != null and userNameCreated != ""'>
+		            AND    A.USER_NAME_CREATED = #{userNameCreated}
+					</if>
+					<choose>
+						<when test='ordNoList != null and ordNoList != ""'>
+		            AND    A.ORDER_NO IN
+							<foreach collection="ordNoList" item="item" index="index"  open="(" close=")" separator=",">
+		                   #{item}
+							</foreach>
+						</when>
+					</choose>
+					<if test="extmallId != null and extmallId != ''">
+		            AND    OD.VENDOR_ID = #{vendorId}
+		            AND    OD.EXTMALL_ID = #{extmallId}
+					</if>
+					<if test="extmallOrderId != null and extmallOrderId != ''">
+		            AND    OD.EXTMALL_ORDER_ID LIKE CONCAT('%',#{extmallOrderId},'%')
+					</if>
+					<if test="optCd != null and optCd != ''">
+		            AND    B.SKU_CODE LIKE CONCAT('%',#{optCd},'%')
+					</if>
+					<choose>
+						<when test="search != null and search != '' and search == 'shoplinkerOrderId'">
+		            AND    OD.AGENT_ORDER_ID IN
+							<foreach collection="conditions" item="item" index="index"  open="(" close=")" separator=",">
+		                   #{item}
+							</foreach>
+						</when>
+						<when test="search != null and search != '' and search == 'mallOrderId'">
+		            AND    OD.EXTMALL_ORDER_ID IN
+							<foreach collection="conditions" item="item" index="index"  open="(" close=")" separator=",">
+		                   #{item}
+							</foreach>
+						</when>
+					</choose>
+		            UNION ALL
+		            SELECT A.RECALL_STAT   -- 반품대기처리상태
+		                 , A.STATUS_CD     -- 처리상태
+		                 , A.DATE_CREATED  -- 등록일자
+		                 , A.CUSTOMER_NAME -- 고객명
+		                 , A.ORDER_NO      -- 주문번호
+		                 , B.ORDER_DTL_NO  -- 주문상세번호 
+		                 , A.LOGISTICS_NAME -- 택배사명
+		                 , A.INVOICE_NO     -- 반송장번호
+		                 , A.CHARGE_TYPE    -- 요금구분
+		                 , A.CHARGE_AMOUNT  -- 배송비
+		                 , A.USER_NAME_CREATED -- 작업자
+		                 , B.REASON_CD -- 예외사유
+		                 , IFNULL((SELECT GROUP_CONCAT(ADMIN_MEMO ORDER BY RECALL_EXCEPTION_MEMO_NO ) 
+		                           FROM   TB_ORDER_RECALL_EXCEPTION_MEMO C 
+		                           WHERE  C.RECALL_EXCEPTION_NO = A.RECALL_EXCEPTION_NO  
+		                           AND ADMIN_MEMO !='.'),'-') AS ADMIN_MEMO -- WMS메시지
+		                 , IFNULL((SELECT BRAND_KNM FROM TB_BRAND BR JOIN TB_GOODS GD ON BR.BRAND_CD = GD.BRAND_CD WHERE GD.GOODS_CD = C.GOODS_CD),'') AS BRAND_NM           -- 브랜드명
+		                 , B.PRODUCT_CODE   -- 상품코드
+		                 , B.SKU_CODE       -- SKU코드
+		                 , B.PRODUCT_NAME   -- 상품명
+		                 , B.SKU_VALUE      -- 속성
+		                 , C.SKU_MODEL_NO   -- 원코드
+		                 , B.EXCEPTION_QTY  -- 수량 
+		                 , A.RECALL_EXCEPTION_NO -- 반품예외처리번호 
+		                 , IFNULL(C.GOODS_CD,'') AS GOODS_CD       -- 상품코드 
+		                 , B.RECALL_EXCEPTION_ITEM_NO 
+		                 , B.QTY
+		                 , B.REASON_CODE
+		                 , O.MALL_GB
+		                 , A.COD_FEE
+		                 , O.ORD_PHNNO 
+		                 , O.CUST_NO 
+		                 , CASE WHEN A.PAY_GB = 'NAVER' THEN 'Y' ELSE 'N' END AS PAY_GB  
+		                 , A.ORDER_EXCEPTION_NO 
+		                 , CD.CHG_STAT
+		                 , OC.ORD_CHG_SQ 
+		                 , OC.WD_GB 
+		                 , OC.CHG_REASON
+		                 , 'WEXC' AS CHG_GB 
+		                 , IFNULL(OC.WD_BF_SEND_YN,'N') AS WD_BF_SEND_YN
+		                 , A.ADD_FEE_YN
+		                 , A.CS_ADD_FEE
+		                 , A.CS_MEMO
+		                 , (SELECT EXTMALL_NM
+		                    FROM   TB_EXTMALL X
+		                    WHERE  X.EXTMALL_ID = OD.EXTMALL_ID) AS EXTMALL_NM
+		                 , OD.EXTMALL_ORDER_ID
+		                 , CD.REG_DT AS CHG_REG_DT
+		            FROM   TB_ORDER_RECALL_EXCEPTION A 
+		            JOIN   TB_ORDER_RECALL_EXCEPTION_ITEM B ON A.RECALL_EXCEPTION_NO = B.RECALL_EXCEPTION_NO
+		            LEFT   JOIN TB_ORDER O ON O.ORD_NO = A.ORDER_NO 
+		            LEFT   JOIN TB_OPTION C ON C.OPT_CD = B.SKU_CODE
+		            LEFT   OUTER JOIN TB_ORDER_CHANGE_DETAIL  CD ON B.ORDER_DTL_NO = CD.ORD_DTL_NO 
+		            LEFT   OUTER JOIN TB_ORDER_CHANGE         OC ON CD.ORD_CHG_SQ = OC.ORD_CHG_SQ
+		            LEFT   OUTER JOIN TB_ORDER_DETAIL         OD ON B.ORDER_DTL_NO = OD.ORD_DTL_NO
+		            WHERE  1=1
+		            AND    B.REASON_CODE IN('01')
+					<if test='customerName != null and customerName != ""'>
+		            AND    A.CUSTOMER_NAME = #{customerName}
+					</if>
+					<if test='orderNo != null and orderNo != ""'>
+		            AND    A.ORDER_NO  = #{orderNo}
+					</if>
+					<if test='recallStat != null and recallStat != ""'>
+		            AND    A.RECALL_STAT  = #{recallStat}
+					</if>
+					<if test='stDate != null and stDate != ""'>
+		            AND    A.DATE_CREATED <![CDATA[>= ]]> STR_TO_DATE(REPLACE(#{stDate},'-',''), '%Y%m%d%H%i%s') 
+					</if>
+					<if test='edDate != null and edDate != ""'>
+		            AND   A.DATE_CREATED <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','')+ 1, '%Y%m%d%H%i%s'), INTERVAL 1 DAY)
+					</if>
+					<if test='reasonCode != null and reasonCode != ""'>
+		            AND   B.REASON_CODE = #{reasonCode}
+					</if>
+					<if test='userNameCreated != null and userNameCreated != ""'>
+		            AND   A.USER_NAME_CREATED = #{userNameCreated}
+					</if>
+					<choose>
+						<when test='ordNoList != null and ordNoList != ""'>
+		            AND   A.ORDER_NO IN
+							<foreach collection="ordNoList" item="item" index="index"  open="(" close=")" separator=",">
+		                  #{item}
+							</foreach>
+						</when>
+					</choose>
+					<if test="extmallId != null and extmallId != ''">
+		            AND    OD.VENDOR_ID = #{vendorId}
+		            AND    OD.EXTMALL_ID = #{extmallId}
+					</if>
+					<if test="extmallOrderId != null and extmallOrderId != ''">
+		            AND    OD.EXTMALL_ORDER_ID LIKE CONCAT('%',#{extmallOrderId},'%')
+					</if>
+					<if test="optCd != null and optCd != ''">
+		            AND    B.SKU_CODE LIKE CONCAT('%',#{optCd},'%')
+					</if>
+					<choose>
+						<when test="search != null and search != '' and search == 'shoplinkerOrderId'">
+		            AND    OD.AGENT_ORDER_ID IN
+							<foreach collection="conditions" item="item" index="index"  open="(" close=")" separator=",">
+		                   #{item}
+							</foreach>
+						</when>
+						<when test="search != null and search != '' and search == 'mallOrderId'">
+		            AND    OD.EXTMALL_ORDER_ID IN
+							<foreach collection="conditions" item="item" index="index"  open="(" close=")" separator=",">
+		                   #{item}
+							</foreach>
+						</when>
+					</choose>
+		        ) A
+		        WHERE  1=1
 				<if test='chgGb != null and chgGb != "" and chgGb !="G680" and chgGb !="G680_00"'>
-				AND A.CHG_GB  = #{chgGb}
+		        AND A.CHG_GB  = #{chgGb}
 				</if>
 				<if test='chgGb =="G680"'>
-				AND A.CHG_GB = 'WEXC'
+		        AND A.CHG_GB = 'WEXC'
 				</if>
 				<if test='chgGb =="G680_00"'>
-				AND A.CHG_GB = 'EXC'
+		        AND A.CHG_GB = 'EXC'
 				</if>				
-				ORDER BY A.ORDER_NO, A.RECALL_EXCEPTION_NO, A.RECALL_EXCEPTION_ITEM_NO
-	<include refid="getListPagingCondition_sql"/> 
-	      WINDOW W AS (PARTITION BY ORDER_NO ORDER BY ORDER_NO , RECALL_EXCEPTION_ITEM_NO ), T AS (PARTITION BY ORDER_NO ORDER BY ORDER_NO , RECALL_EXCEPTION_ITEM_NO desc), S AS (PARTITION BY ORDER_NO, ORDER_DTL_NO ORDER BY ORDER_NO ,  ORDER_DTL_NO, RECALL_EXCEPTION_ITEM_NO DESC ), C AS (PARTITION BY ORDER_NO, ORDER_DTL_NO ORDER BY ORDER_NO, ORDER_DTL_NO)
+		        ORDER BY A.ORDER_NO
+		            , A.RECALL_EXCEPTION_NO
+		            , A.RECALL_EXCEPTION_ITEM_NO
+		<include refid="getListPagingCondition_sql"/> 
+		WINDOW W AS (PARTITION BY ORDER_NO ORDER BY ORDER_NO , RECALL_EXCEPTION_ITEM_NO ), T AS (PARTITION BY ORDER_NO ORDER BY ORDER_NO , RECALL_EXCEPTION_ITEM_NO desc), S AS (PARTITION BY ORDER_NO, ORDER_DTL_NO ORDER BY ORDER_NO ,  ORDER_DTL_NO, RECALL_EXCEPTION_ITEM_NO DESC ), C AS (PARTITION BY ORDER_NO, ORDER_DTL_NO ORDER BY ORDER_NO, ORDER_DTL_NO)
 	</select>
 
-
 	<!-- 회수예외 처리완료-->
 	<update id="updateWithdrawException" parameterType="WithdrawExc" >
 		/* TsaWithdraw.updateWithdrawException */
-		UPDATE TB_ORDER_RECALL_EXCEPTION SET
-		  RECALL_STAT = #{recallStat}
-		, RECALL_STAT_DT = NOW()
-		, CS_ADD_FEE     = #{csAddFee}
-		, CS_MEMO        = #{csMemo}
-		WHERE RECALL_EXCEPTION_NO = #{recallExceptionNo}
-
+		UPDATE TB_ORDER_RECALL_EXCEPTION 
+		SET    RECALL_STAT     = #{recallStat}
+		     , RECALL_STAT_DT  = NOW()
+		     , CS_ADD_FEE      = #{csAddFee}
+		     , CS_MEMO         = #{csMemo}
+		WHERE  RECALL_EXCEPTION_NO = #{recallExceptionNo}
 	</update>
 
 	<!-- 상품옵션 정보 -->
 	<select id="getOptionInfo" parameterType="WmsWithdraw" resultType="WmsWithdraw">
 		/* TsaWithdraw.getOptionInfo */
-			SELECT GOODS_CD
-			 FROM  TB_OPTION 
-			WHERE OPT_CD = #{skucode} 
+		SELECT GOODS_CD
+		FROM   TB_OPTION 
+		WHERE  OPT_CD = #{skucode} 
 	</select>
 	
 	<!-- 회수지시 목록 건수 -->

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

@@ -572,8 +572,6 @@
 		// grid 높이 조절
 		//uifnFitGrid('auto');
 		gagajf.setDate('#terms', 'stDate', 'edDate', '7d');
-
-		//fnDatepickerDisabled();
 	});
 	
 	// 2021.11.18 구성상품 내역 팝업 호출 

+ 183 - 173
src/main/webapp/WEB-INF/views/withdraw/WithdrawExceptionListForm.html

@@ -52,17 +52,17 @@
 						<tr>
 							<th class="dashR">주문자명</th>
 							<td class="dashR">
-								<input type="text" class="w40p" name="customerName" placeholder="" maxlength="20" />
+								<input type="text" name="customerName" placeholder="" maxlength="20" />
 							</td>
 							<th class="dashR">주문번호</th>
 							<td class="dashR">
-								<input type="text" class="w40p" name="orderNo" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');" placeholder="" maxlength="9" />
+								<input type="text" name="orderNo" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');" placeholder="" maxlength="9" />
 							</td>
-							<th rowspan="3">키워드</th>
-							<td rowspan="3">
+							<th class="dashR" rowspan="3">키워드</th>
+							<td class="dashR" rowspan="3">
 								<select name="search" id="search">
 									<option value="shoplinkerOrderId">샵링커주문번호</option><!-- AGENT_ORDER_ID -->
-									<option value="mallOrderId">쇼핑몰주문번호</option><!-- EXTMALL_ORDER_ID -->
+									<option value="mallOrderId">제휴몰주문번호</option><!-- EXTMALL_ORDER_ID -->
 								</select><br>
 								<textarea class="textareaR2 w90p" name="condition" id="condition"></textarea>
 							</td>
@@ -89,7 +89,7 @@
 						<tr>
 							<th class="dashR">작업자</th>
 							<td class="dashR">
-								<input type="text" class="w40p" name="userNameCreated" placeholder="" maxlength="20" />
+								<input type="text" name="userNameCreated" placeholder="" maxlength="20" />
 							</td>
 							<th class="dashR">처리상태</th>
 							<td class="dashR" >
@@ -100,6 +100,24 @@
 								</select>
 							</td>
 						</tr>
+						<tr>
+							<th class="dashR">제휴몰명</th>
+							<td class="dashR">
+								<input type="hidden" class="w40p" name="vendorId" placeholder="" maxlength="20" th:value="${vendorId}"/>
+								<select name="extmallId">
+									<option value="">선택안함</option>
+									<option th:if="${extmallList}" th:each="oneData, status : ${extmallList}" th:value="${oneData.extmallId}" th:text="${'[' + oneData.extmallId + '] ' + oneData.extmallNm}"></option>
+								</select>
+							</td>
+							<th class="dashR">제휴몰 주문번호</th>
+							<td class="dashR">
+								<input type="text" name="extmallOrderId" placeholder="" maxlength="40"/>
+							</td>
+							<th class="dashR">SKU-CODE</th>
+							<td class="dashR">
+								<input type="text" name="optCd" placeholder="" maxlength="40"/>
+							</td>
+						</tr>
 						<tr>
 							<th class="dashR">등록일</th>
 							<td colspan="6" class="dashR">
@@ -151,6 +169,7 @@
 		</form>
 		<!-- //리스트 영역 -->
 	</div>
+	
 <script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=20210114"></script>
 <script th:inline="javascript">
 /*<![CDATA[*/
@@ -158,8 +177,8 @@
 	/*************************************************************************
 	* AG-GRID 영역 
 	**************************************************************************/
-	var uploadGoodsUrl = [[${@environment.getProperty('upload.goods.view')}]]; 
-	var roleCd = [[${sessionInfo.roleCd}]]; 
+	var uploadGoodsUrl 	= [[${@environment.getProperty('upload.goods.view')}]]; 
+	var roleCd 			= [[${sessionInfo.roleCd}]]; 
 
 	$("#reasonCode option[value='07']").remove();
 	$("#reasonCode option[value='08']").remove();
@@ -167,17 +186,11 @@
 	
 	var columnDefs = [
 		{headerName: "반품예외처리번호",		field: "recallExceptionNo", width: 50,	cellClass: 'text-center', hide: true},
-		//{headerName: "No.",				field: "rnum",				width: 50,	cellClass: 'text-center'},
-		{headerName: "처리완료",				field: "recall",		width: 100,	cellClass: 'text-center',
-			/*
-			rowSpan: params => params.data.rowspanRank === 1 ? params.data.rowspanCnt : 1,  
-		    cellClassRules: {
-		        'cell-span': "data.rowspanRank == 1"
-		      }, */
+		{headerName: "처리완료",				field: "recall",			width: 100,	cellClass: 'text-center',
 			cellRenderer: function(params) {
 				var btnText = '';
-				if(params.data.recallStat == 'P') {
-					if(params.data.chgStat == 'G685_21' || params.data.chgStat == 'G685_51'){
+				if (params.data.recallStat == 'P') {
+					if (params.data.chgStat == 'G685_21' || params.data.chgStat == 'G685_51') {
 						btnText= '';
 					} else {
 						btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">완료</a>';
@@ -186,72 +199,66 @@
 				return btnText;
 			}			
 		},
-		{headerName: "처리상태",			field: "statNm",		width: 80,	cellClass: 'text-center'},
-		{headerName: "주문번호",			field: "orderNo",			width: 100,	cellClass: 'text-center', 
-			/*
-			rowSpan: params => params.data.rowspanRank === 1 ? params.data.rowspanCnt : 1,  
-		    cellClassRules: {
-		        'cell-span': "data.rowspanRank == 1"
-		      },
-			*/
+		{headerName: "처리상태",				field: "statNm",			width: 80,	cellClass: 'text-center'},
+		{headerName: "몰구분",				field: "mallGb",			width: 100,	cellClass: 'text-center',
+			cellRenderer: function(params) {
+				var rtnStr = "";
+				if (params.data.recallStat == 'G011_10') {
+					rtnStr = "자사몰";
+				} else { 
+					rtnStr = "제휴몰"; 
+				}
+				return rtnStr;
+			}			
+		},
+		{headerName: "제휴몰명",				field: "extmallNm",			width: 80,	cellClass: 'text-center'},
+		{headerName: "제휴몰주문번호",			field: "extmallOrderId",	width: 80,	cellClass: 'text-center'},
+		{headerName: "주문번호",				field: "orderNo",			width: 100,	cellClass: 'text-center', 
 			cellRenderer: function (params) {
-			if (roleCd.indexOf("C") < 0) {
-				
-				return "<a href=\"javascript:void(0);\" onclick=\"fnOrderDetailPopup('" + params.data.orderNo + "');\">" + params.data.orderNo + "</a>";
-			} else {
-				return params.value;
-			}
+				if (roleCd.indexOf("C") < 0) {
+					return "<a href=\"javascript:void(0);\" onclick=\"fnOrderDetailPopup('" + params.data.orderNo + "');\">" + params.data.orderNo + "</a>";
+				} else {
+					return params.value;
+				}
 			}
 		},
-		
 		{headerName: "주문변경번호",			field: "ordChgSq",			width: 100,	cellClass: 'text-center', 
-			
-			/*
-			rowSpan: params => params.data.rowspanRank === 1 ? params.data.rowspanCnt : 1,  
-			    cellClassRules: {
-			        'cell-span': "data.rowspanRank == 1"
-			      },
-			*/	
-				cellRenderer	: function(params) {
-					var rtnStr = "";
-					if(params.data.recallStat === 'P') {
-						if(params.data.chgGb == 'EXC' || params.data.chgGb == 'WEXC'){
-							rtnStr = params.value;
+			cellRenderer	: function(params) {
+				var rtnStr = "";
+				if (params.data.recallStat === 'P') {
+					if (params.data.chgGb == 'EXC' || params.data.chgGb == 'WEXC') {
+						rtnStr = params.value;
+					} else {
+						var paramData 	= params.data.orderNo;
+						paramData 		+= '@' + params.data.orderDtlNo;
+						paramData 		+= '@' + params.data.delvFeeCd;
+						paramData 		+= '@' + 'WMS';
+						
+						if(params.data.chgGb == 'G680_30' ){
+							// 반품접수, 반품대기, 회수요청, 상품검수중, 결제대기, 반품진행중
+							if (params.data.chgStat == 'G685_50' || params.data.chgStat == 'G685_51' 
+									|| params.data.chgStat == 'G685_30' || params.data.chgStat == 'G685_31' || params.data.chgStat == 'G685_32' || params.data.chgStat == 'G685_33') {
+								rtnStr = '<a href="javascript:void(0);" onclick="fnReturnRequest(\'' + paramData + '\',\'' + params.value + '\');">' + params.value + '</a>';
+							}else {
+								rtnStr = params.value;
+							}
 						} else {
-							var paramData 	= params.data.orderNo;
-							paramData 		+= '@' + params.data.orderDtlNo;
-							paramData 		+= '@' + params.data.delvFeeCd;
-							paramData 		+= '@' + 'WMS';
-							
-							if(params.data.chgGb == 'G680_30' ){
-								// 반품접수, 반품대기, 회수요청, 상품검수중, 결제대기, 반품진행중
-								if (params.data.chgStat == 'G685_50' || params.data.chgStat == 'G685_51' 
-										|| params.data.chgStat == 'G685_30' || params.data.chgStat == 'G685_31' || params.data.chgStat == 'G685_32' || params.data.chgStat == 'G685_33') {
-									rtnStr = '<a href="javascript:void(0);" onclick="fnReturnRequest(\'' + paramData + '\',\'' + params.value + '\');">' + params.value + '</a>';
-								}else {
-									rtnStr = params.value;
-								}
-							} else {
-								// 교환접수, 교환대기, 회수요청, 상품검수중, 결제대기, 교환진행중
-								if (params.data.chgStat == 'G685_20' || params.data.chgStat == 'G685_21' 
-										|| params.data.chgStat == 'G685_30' || params.data.chgStat == 'G685_31' || params.data.chgStat == 'G685_32' || params.data.chgStat == 'G685_34') {
-									rtnStr = '<a href="javascript:void(0);" onclick="fnExchangeRequest(\'' + paramData + '\',\'' + params.value + '\');">' + params.value + '</a>';
-								} 
-								else {
-									rtnStr = params.value;
-								}
+							// 교환접수, 교환대기, 회수요청, 상품검수중, 결제대기, 교환진행중
+							if (params.data.chgStat == 'G685_20' || params.data.chgStat == 'G685_21' 
+									|| params.data.chgStat == 'G685_30' || params.data.chgStat == 'G685_31' || params.data.chgStat == 'G685_32' || params.data.chgStat == 'G685_34') {
+								rtnStr = '<a href="javascript:void(0);" onclick="fnExchangeRequest(\'' + paramData + '\',\'' + params.value + '\');">' + params.value + '</a>';
+							} 
+							else {
+								rtnStr = params.value;
 							}
-
-
 						}
-					} else {
-						rtnStr = params.value;
 					}
-
-					return  rtnStr;
-				}		
+				} else {
+					rtnStr = params.value;
+				}
+				return  rtnStr;
+			}		
 		},
-			
 		{headerName: "주문자명",			field: "maskingCustomerName",		width: 100,	cellClass: 'text-center'},
 		{headerName: "휴대번호",			field: "maskingOrdPhnno",			width: 100,	cellClass: 'text-center'},
 		{headerName: "LMS", 			field: "maskingOrdPhnno",			width: 80, cellClass: "text-center",
@@ -259,83 +266,89 @@
 				return '<button type="button" class="btn btn-base btn-sm" onclick="fnLms(\'' + params.data.ordPhnno + '\',\'' + params.data.custNo + '\');">&nbsp;LMS&nbsp;</button>';
 			}			
 		},
-		{headerName: "회수요청구분",		field: "chgGbNm",			width: 90,	cellClass: 'text-left'},
-		{headerName: "예외사유",			field: "reasonCd",			width: 150,	cellClass: 'text-center'},
-		{headerName: "WMS메시지",		field: "adminMemo",			width: 300,	cellClass: 'text-left'},
-		{headerName: "반품교환사유",		field: "chgReasonNm",		width: 150,	cellClass: 'text-left'},
-		{headerName: "네이버 주문형",		field: "payGb",				width: 100,	cellClass: 'text-center'},
-		{headerName: "반품/사유변경",	field: "chgReason2",			width: 120,	cellClass: 'text-center',
-			/*
-			rowSpan: params => params.data.rowspanRank === 1 ? params.data.rowspanCnt : 1,  
-			    cellClassRules: {
-			        'cell-span': "data.rowspanRank == 1"
-			      }, */
-				cellRenderer: function(params) {
-					var btnText = '';
-					if(params.data.recallStat === 'P' && params.data.chgGb == 'EXC') { //  출고예외 (확정후 품절,불량)
-						if(params.data.ordChgSq == null){
-							btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">반품신청</a>';
-						} 
-					} else if(params.data.recallStat === 'P' && params.data.chgGb == 'WEXC'){ // 회수예외 (반품미접수)
-						if(params.data.ordChgSq == null){
-							btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">반품신청</a>';
-						} else {
-							btnText = '';
+		{headerName: "회수요청구분",		field: "chgGbNm",					width: 90,	cellClass: 'text-left'},
+		{headerName: "예외사유",			field: "reasonCd",					width: 150,	cellClass: 'text-center'},
+		{headerName: "WMS메시지",			field: "adminMemo",					width: 300,	cellClass: 'text-left'},
+		{headerName: "반품교환사유",		field: "chgReasonNm",				width: 150,	cellClass: 'text-left'},
+		{headerName: "클레임접수일",		field: "chgRegDt",					width: 150,	cellClass: 'text-left'},
+		{headerName: "네이버 주문형",		field: "payGb",						width: 100,	cellClass: 'text-center'},
+		{headerName: "반품/사유변경",		field: "chgReason2",				width: 120,	cellClass: 'text-center',
+			cellRenderer: function(params) {
+				var btnText = '';
+				
+				// 출고예외 (확정후 품절,불량)
+				if (params.data.recallStat === 'P' && params.data.chgGb == 'EXC') { 
+					if (params.data.ordChgSq == null) {
+						btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">반품신청</a>';
+					} 
+				} 
+				// 회수예외 (반품미접수)
+				else if (params.data.recallStat === 'P' && params.data.chgGb == 'WEXC') { 
+					if (params.data.ordChgSq == null) {
+						btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">반품신청</a>';
+					} else {
+						btnText = '';
+					}
+				} 
+				// 미착,과착, 배송비 미동봉, 다른상품 반품, 배송비 일부동봉
+				else { 
+					// 미착
+					if (params.data.reasonCode == '02') {  
+						if (params.data.chgGb == 'G680_30' && params.data.newOrdChgSqYn == 'N') {
+							btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">반품변경</a>';
+						} else if (params.data.chgGb == 'G680_40') {
+							if (params.data.wdBfSendYn == 'N') {
+								if (params.data.newOrdChgSqYn == 'N') {
+									btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">교환변경</a>';
+								}
+							} else {
+								btnText = '선발송';
+							}
 						}
-					} else { // 미착,과착, 배송비 미동봉, 다른상품 반품, 배송비 일부동봉
-						if(params.data.reasonCode == '02'){ // 미착 
-							if(params.data.chgGb == 'G680_30' && params.data.newOrdChgSqYn == 'N'){
-								btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">반품변경</a>';
-							}else if(params.data.chgGb == 'G680_40'){
-								if(params.data.wdBfSendYn == 'N'){
-									if(params.data.newOrdChgSqYn == 'N'){
-										btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">교환변경</a>';
-									}
-								} else {
-									btnText = '선발송';
+					} 
+					// 과착
+					else if (params.data.reasonCode == '03') {  
+						if (params.data.chgGb == 'G680_30' && params.data.newOrdChgSqYn == 'N') {
+							btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">반품변경</a>';
+						} else if(params.data.chgGb == 'G680_40') {
+							if(params.data.wdBfSendYn == 'N'){
+								if(params.data.newOrdChgSqYn == 'N'){
+									btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">교환변경</a>';
 								}
+								
+							} else {
+								btnText = '선발송';
 							}
-						} else if(params.data.reasonCode == '03'){ // 과착 
-							if(params.data.chgGb == 'G680_30' && params.data.newOrdChgSqYn == 'N'){
+						}
+					} 
+					// 배송비 미동봉
+					else if (params.data.reasonCode == '04') {  
+						if (params.data.mallGb  == 'G011_10') {
+							btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">사유변경</a>';
+						} else {
+							btnText= '';
+						}
+						
+					} 
+					// 다른상품 반품
+					else if (params.data.reasonCode == '05') { 
+						if (params.data.recallExceptionNo != null) {
+							if (params.data.chgGb == 'G680_30' && params.data.newOrdChgSqYn == 'N') {
 								btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">반품변경</a>';
 							} else if(params.data.chgGb == 'G680_40') {
 								if(params.data.wdBfSendYn == 'N'){
-									if(params.data.newOrdChgSqYn == 'N'){
+									if (params.data.newOrdChgSqYn == 'N') {
 										btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">교환변경</a>';
 									}
-									
 								} else {
 									btnText = '선발송';
 								}
 							}
-						} else if(params.data.reasonCode == '04' ){ // 배송비 미동봉 
-							
-							if(params.data.mallGb  == 'G011_10' ){
-								btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">사유변경</a>';
-							} else {
-								btnText= '';
-							}
-							
-						} else if(params.data.reasonCode == '05'){ // 다른상품 반품
-							if(params.data.recallExceptionNo != null){
-								if(params.data.chgGb == 'G680_30' && params.data.newOrdChgSqYn == 'N'){
-									btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">반품변경</a>';
-								} else if(params.data.chgGb == 'G680_40') {
-									if(params.data.wdBfSendYn == 'N'){
-										if(params.data.newOrdChgSqYn == 'N'){
-											btnText= '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">교환변경</a>';
-										}
-										
-									} else {
-										btnText = '선발송';
-									}
-								}
-							}
 						}
 					}
-					
-					return btnText;
-				}		
+				}
+				return btnText;
+			}
 		},
 		{headerName: "요금구분",			field: "chargeType",		width: 80,	cellClass: 'text-center'},
 		{headerName: "동봉비",			field: "chargeAmount",		width: 100,	cellClass: 'text-right'
@@ -351,7 +364,7 @@
 			,valueFormatter: function(params) {
 				if (params.value > 0) {
 					return params.value.addComma();
-				}else{
+				} else {
 					return '0';
 				}
 			}
@@ -359,7 +372,7 @@
 		{headerName: "* 추가비용",  headerClass:'text-point',	field: "csAddFee",		width: 100,	cellClass: 'text-right',editable: true,
 			cellEditor: 'textCellEditor',
 			cellEditorParams: { maxlength: 20, validType: "numeric" }
-		},		
+		},
 		{headerName: "* CS메모",    headerClass:'text-point',	field: "csMemo",		width: 200,	cellClass: 'text-left',editable: true,
 			cellEditor: 'textCellEditor',
 			cellEditorParams: { maxlength: 1000, required: true },
@@ -368,7 +381,6 @@
 					color = '#ff96689c';
 				return { 'text-color': color};
 			}
-			
 		},			
 		{headerName: "",				field: "",	width: 90,	cellClass: 'text-center',
 			
@@ -379,11 +391,20 @@
 				}				
 				return btnText;
 			}	
-
 		},
 		{headerName: "작업자",			field: "userNameCreated",	width: 100,	cellClass: 'text-center'},
 		{headerName: "브랜드명",			field: "brandNm",			width: 150,	cellClass: 'text-center'},
-		{headerName: "상품명",			field: "productName",		width: 200,	cellClass: 'text-left'},
+		{headerName: "상품명",			field: "productName",		width: 100,	cellClass: 'text-center',
+			cellRenderer: function (params) {
+				var option;
+				if (params.data.goodsType == 'G056_S') {
+					option = "<a href=\"javascript:void(0);\" onclick=\"fnOrderDetailItemForm('" + params.data.orderDtlNo + "');\">" + params.value + "</a>";
+				} else {
+					option = params.value;
+				}
+				return option;
+			}
+		},
 		{headerName: "상품코드",			field: "productCode",		width: 100,	cellClass: 'text-center',
 			cellRenderer: function (params) {
 				if (roleCd.indexOf("C") < 0) {
@@ -399,24 +420,19 @@
 		{headerName: "주문수량",			field: "qty",				width: 80,	cellClass: 'text-right'},
 		{headerName: "입고수량",			field: "exceptionQty",		width: 80,	cellClass: 'text-right'},
 		{headerName: "택배사명",			field: "logisticsName",		width: 100,	cellClass: 'text-center'},
-		{headerName: "반송장번호",		field: "invoiceNo",			width: 120,	cellClass: 'text-center'},
+		{headerName: "반송장번호",			field: "invoiceNo",			width: 120,	cellClass: 'text-center'},
 		{headerName: "주문경로",			field: "siteCd",			width: 100,	cellClass: 'text-left'},
 		{headerName: "등록일시",			field: "dateCreated",		width: 150,	cellClass: 'text-center'}
 		
 	];
 	
 	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
-	gridOptions.suppressRowTransform =true;
-	//gridOptions.defaultColDef.editable = true;
-	//gridOptions.columnDefs[9].cellEditor=true;
-	//gridOptions.columnDefs[10].cellEditor=true;
-	
-	//gridOptions.rowSelection = 'multiple';
-	// gagaAgGrid.columnApi.getColumn("qty").colDef.color = "#FF0000";
+	gridOptions.suppressRowTransform =true;	
 	gridOptions.rowHeight = 35;
 	
-	var currOrdNo ="";
-	var refreshFlag = "";
+	var currOrdNo 		= "";
+	var refreshFlag 	= "";
+	
 	/*************************************************************************
 	*  조회 버튼 클릭 시
 	**************************************************************************/
@@ -429,12 +445,12 @@
 	*  조회 
 	**************************************************************************/
 	var fnSearchList = function() {
-		if($('#stDate').val() == ''){
+		if ($('#stDate').val() == '') {
 			mcxDialog.alert('시작 기간을 입력하세요.');
 			return;
 		}
 
-		if($('#edDate').val() == ''){
+		if ($('#edDate').val() == '') {
 			mcxDialog.alert('종료 기간을 입력하세요.');
 			return;
 		}
@@ -453,14 +469,13 @@
 	*  조회 콜백
 	**************************************************************************/
 	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.withdrawExceptionList);
 		gagaPaging.createPagination(result.pageing.pageable);
-		
 	}
 	
 	// 페이징
@@ -469,7 +484,6 @@
 		fnSearchList();
 	});
 	
-	
 	var fnOrderDetailPopup = function(orderNo){
 		currOrdNo = orderNo;
 		refreshFlag = "ordDtl";
@@ -480,7 +494,7 @@
 	*  팝업 콜백 
 	**************************************************************************/		
 	var fnReOpenOrderDetailPopup = function () {
-		if(refreshFlag == "ordDtl"){
+		if (refreshFlag == "ordDtl") {
 			cfnOpenOrderDetailPopup(currOrdNo);
 		} else if(refreshFlag == "ban"){
 
@@ -502,15 +516,12 @@
 	*  회수예외 처리완료 버튼 - 대기->완료  업데이트
 	**************************************************************************/	
 	gridOptions.onCellClicked = function(event) {
-		//if(params.data.chgStat == 'G685_21' || params.data.chgStat == 'G685_51'){
-			
-		
-		if (event.colDef.field == 'recall'){
-			if(event.data.chgStat == "G685_21" || event.data.chgStat == "G685_51"){
+		if (event.colDef.field == 'recall') {
+			if (event.data.chgStat == "G685_21" || event.data.chgStat == "G685_51") {
 				return;
 			}
-			//if(event.data.recallStat == "P" && event.data.rowspanRank == "1"){
-			if(event.data.recallStat == "P"){	
+			
+			if (event.data.recallStat == "P") {	
 				var params = {};
 				params.recallExceptionNo = event.data.recallExceptionNo;
 				params.csAddFee = event.data.csAddFee;
@@ -531,7 +542,6 @@
 				params.recallExceptionNo = event.data.recallExceptionNo;
 				params.csAddFee = event.data.csAddFee;
 				params.csMemo = event.data.csMemo;
-				
 
 				mcxDialog.confirm('저장 하시겠습니까?', {
 					cancelBtnText: "취소",
@@ -543,8 +553,6 @@
 				});
 			}
 		} else if(event.colDef.field == 'chgReason2'){
-			//if(event.data.recallStat == "P" && event.data.rowspanRank == "1" && event.data.chgStat != null){
-			
 			if(event.data.recallStat == "P"){
 				if(event.data.ordChgSq == null && event.data.chgGb == 'EXC'){ // 출고예외
 
@@ -630,9 +638,6 @@
 							actionUrl = "/withdraw/exception/change/form?ordChgSq=" + event.data.ordChgSq + '&chgGb=' + event.data.chgGb;
 							cfnOpenModalPopup(actionUrl, 'popupWithdrawChangeForm');
 						}
-						//if(event.data.chgReason == "G688_10" || event.data.chgReason == "G689_10"){
-
-						//}
 					} else if(event.data.reasonCode == '05' ){ // 다른상품 반품 
 						refreshFlag  = "ban";
 						param += "&ordNo=" 			+ event.data.orderNo;
@@ -750,14 +755,13 @@
 	var fnCompleteCallback = function() {
 		fnSearchList();
 	};
-	
 
 	/*************************************************************************
 	*  엑셀다운로드
 	**************************************************************************/		
 	$('#btnExcel').on('click', function() {
 		var totalRows = gridOptions.api.getDisplayedRowCount();
-		if(totalRows==0){
+		if (totalRows == 0) {
 			mcxDialog.alert('조회된 내역이 없습니다.');
 			return;
 		}
@@ -791,6 +795,12 @@
 		cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '');
 		fnInitCalendar();
 	});
+	
+	// 2021.11.18 구성상품 내역 팝업 호출 
+	var fnOrderDetailItemForm = function (ordDtlNo) {
+		var actionUrl = "/delivery/detail/item/form/" + ordDtlNo;
+		cfnOpenModalPopup(actionUrl, 'popupDeliveryDetailItemForm');
+	}
 
 /*]]>*/
 </script>