فهرست منبع

제휴몰검색기능

jsh77b 4 سال پیش
والد
کامیت
2888a7bca3

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

@@ -161,6 +161,8 @@ public class Withdraw extends TscBaseDomain {
 	private String agentOrderId;
 	private String chgRegDt;
 	private String npayOrdYn;
+	private String mallGbNm;
+	private String goodsTypeNm;
 	
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] optCdArr;		// 옵션코드

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

@@ -165,4 +165,6 @@ public class WithdrawExc extends TscBaseDomain {
 	private String[] optCd1Arr;		// 옵션코드
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] optCd2Arr;		// 옵션코드
+	
+	private String goodsTypeNm;
 }

+ 3 - 0
src/main/java/com/style24/persistence/domain/WmsWithdraw.java

@@ -120,4 +120,7 @@ public class WmsWithdraw extends TscBaseDomain {
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] optCd2Arr;		// 옵션코드
 	
+	private String mallGbNm;
+	private String goodsTypeNm;
+	
 }

+ 90 - 64
src/main/java/com/style24/persistence/mybatis/shop/TsaWithdraw.xml

@@ -19,21 +19,21 @@
 	<!-- 환불관리 목록 건수 -->
 	<select id="getRefundListCount" parameterType="Withdraw" resultType="int">
 		/* TsaWithdraw.getRefundListCount */
-		SELECT COUNT(*) AS TOTCNT
+		SELECT COUNT(1) AS TOTCNT
 		  FROM (
-			SELECT
-				  O.ORD_NO        -- 주문번호
-				, C.ORD_DTL_NO    -- 주문상세번호 
-				, D.ORD_CHG_SQ    -- 주문변경일련번호 
-			  FROM TB_WITHDRAW A
-			  JOIN TB_WITHDRAW_DETAIL B ON A.WD_INVOICE_NO  = B.WD_INVOICE_NO AND A.ORD_CHG_SQ = B.ORD_CHG_SQ 
-			  JOIN TB_ORDER_CHANGE_DETAIL C ON B.ORD_CHG_SQ = C.ORD_CHG_SQ AND B.ORD_DTL_NO = C.ORD_DTL_NO AND C.DEL_YN ='N'
-			  JOIN TB_ORDER_CHANGE        D ON C.ORD_CHG_SQ = D.ORD_CHG_SQ 
-			  JOIN TB_ORDER_DETAIL        O ON B.ORD_DTL_NO = O.ORD_DTL_NO 
-			  JOIN TB_ORDER               I ON O.ORD_NO = I.ORD_NO
-			 WHERE D.CHG_GB  = 'G680_30' -- 반품요청
-			 <include refid="getRefundListCondition_sql"/>
-			 	
+		    SELECT O.ORD_NO        -- 주문번호
+		         , C.ORD_DTL_NO    -- 주문상세번호 
+		         , D.ORD_CHG_SQ    -- 주문변경일련번호 
+		      FROM TB_WITHDRAW A
+		      JOIN TB_WITHDRAW_DETAIL     B ON A.WD_INVOICE_NO  = B.WD_INVOICE_NO AND A.ORD_CHG_SQ = B.ORD_CHG_SQ 
+		      JOIN TB_ORDER_CHANGE_DETAIL C ON B.ORD_CHG_SQ = C.ORD_CHG_SQ AND B.ORD_DTL_NO = C.ORD_DTL_NO AND C.DEL_YN ='N'
+		      JOIN TB_ORDER_CHANGE        D ON C.ORD_CHG_SQ = D.ORD_CHG_SQ 
+		      JOIN TB_ORDER_DETAIL        O ON B.ORD_DTL_NO = O.ORD_DTL_NO 
+		      JOIN TB_ORDER               I ON O.ORD_NO = I.ORD_NO
+		      JOIN TB_ORDER_DETAIL_ITEM ODI ON B.ORD_DTL_NO = ODI.ORD_DTL_NO AND B.OPT_CD1 = ODI.OPT_CD1 AND B.OPT_CD2 = ODI.OPT_CD2
+		     WHERE 1=1
+		       AND D.CHG_GB  = 'G680_30' -- 반품요청
+			<include refid="getRefundListCondition_sql"/>
 			) A	
 		
 	</select>
@@ -41,55 +41,71 @@
 	<!-- 환불관리 목록  -->
 	<select id="getRefundList" parameterType="Withdraw" resultType="Withdraw">
 		/* TsaWithdraw.getRefundList */
-		
 		SELECT Z.*
-		    , FN_GET_CODE_NM('G688', Z.CHG_REASON) AS CHG_REASON_NM -- 요청사유  
-		    , (SELECT EXTMALL_NM FROM TB_EXTMALL EX WHERE EX.EXTMALL_ID = Z.EXTMALL_ID ) AS EXTMALL_NM
+		     , FN_GET_CODE_NM('G688', Z.CHG_REASON) AS CHG_REASON_NM -- 요청사유  
+		     , (SELECT EXTMALL_NM FROM TB_EXTMALL EX WHERE EX.EXTMALL_ID = Z.EXTMALL_ID ) AS EXTMALL_NM
 		FROM (
-		    SELECT A.*, ROW_NUMBER() OVER(ORDER BY  A.ORD_NO DESC, A.ORD_DTL_NO) RNUM 
+		    SELECT A.*
+		         , ROW_NUMBER() OVER(ORDER BY  A.ORD_NO DESC, A.ORD_DTL_NO) RNUM 
 		    FROM (
-				SELECT
-					  O.ORD_NO        -- 주문번호
-					, C.ORD_DTL_NO    -- 주문상세번호 
-					, A.WD_INVOICE_NO -- 회수송장번호	
-					, CASE WHEN C.CHG_STAT = 'G685_60' THEN '환불완료' ELSE '환불대기' END AS RFND_STAT -- 환불상태 
-					, CASE WHEN D.WD_GB = 'W' THEN '회수요청' ELSE '직접배송' END AS WD_GB   -- 회수구분(W:회수요청, D:직접배송)
-					, D.ORD_CHG_SQ    -- 주문변경일련번호 
-					, I.ORD_NM        -- 주문자명
-					, I.ORD_PHNNO     -- 주문자연락처	
-					, A.SENDER_NM     -- 보내는사람
-					, A.SENDER_PHNNO  -- 보낸연락처
-					, DATE_FORMAT(A.ARRIVAL_DT, '%Y-%m-%d') AS ARRIVAL_DT    -- 도착일시
-					, DATE_FORMAT(D.WD_STDT, '%Y-%m-%d') AS WD_STDT       -- 회수시작일시
-					, DATE_FORMAT(D.WD_EDDT, '%Y-%m-%d') AS WD_EDDT       -- 회수종료일시
-					, DATE_FORMAT(C.COMPLETE_DT, '%Y-%m-%d') AS COMPLETE_DT   -- 환불확정일
-					, A.WD_MEMO       -- wms회수메모
-					, B.GOODS_CD      -- 상품코드
-					, B.OPT_CD1       -- 옵션1
-					, B.OPT_CD2       -- 옵션2
-					, C.CHG_QTY       -- 반품수량
-					, B.WD_QTY        -- 회수수량
-					, d.CHG_MEMO      -- 클레임메모
-					, D.CHG_REASON    -- 요청사유 
-					, DATE_FORMAT(B.REG_DT, '%Y-%m-%d') AS WD_REG_DT        -- 회수등록일
-					, DATE_FORMAT(D.REG_DT, '%Y-%m-%d') AS RC_REG_DT        -- 반품신청일
-					, I.CUST_NO AS USER_NO 
-					, '' AS REFUND_CONFIRM
-					, O.EXTMALL_ID 
-					, O.EXTMALL_ORDER_ID 
-				  FROM TB_WITHDRAW A
-				  JOIN TB_WITHDRAW_DETAIL B ON A.WD_INVOICE_NO  = B.WD_INVOICE_NO AND A.ORD_CHG_SQ = B.ORD_CHG_SQ 
-				  JOIN TB_ORDER_CHANGE_DETAIL C ON B.ORD_CHG_SQ = C.ORD_CHG_SQ AND B.ORD_DTL_NO = C.ORD_DTL_NO AND C.DEL_YN ='N'
-				  JOIN TB_ORDER_CHANGE        D ON C.ORD_CHG_SQ = D.ORD_CHG_SQ 
-				  JOIN TB_ORDER_DETAIL        O ON B.ORD_DTL_NO = O.ORD_DTL_NO 
-				  JOIN TB_ORDER               I ON O.ORD_NO = I.ORD_NO
-				 WHERE D.CHG_GB  = 'G680_30' -- 반품요청		
+		       SELECT O.ORD_NO        -- 주문번호
+		            , C.ORD_DTL_NO    -- 주문상세번호 
+		            , A.WD_INVOICE_NO -- 회수송장번호	
+		            , CASE WHEN C.CHG_STAT = 'G685_60' THEN '환불완료' ELSE '환불대기' END AS RFND_STAT -- 환불상태 
+		            , CASE WHEN D.WD_GB = 'W' THEN '회수요청' ELSE '직접배송' END AS WD_GB   -- 회수구분(W:회수요청, D:직접배송)
+		            , D.ORD_CHG_SQ    -- 주문변경일련번호 
+		            , I.ORD_NM        -- 주문자명
+		            , I.ORD_PHNNO     -- 주문자연락처	
+		            , A.SENDER_NM     -- 보내는사람
+		            , A.SENDER_PHNNO  -- 보낸연락처
+		            , DATE_FORMAT(A.ARRIVAL_DT, '%Y-%m-%d') AS ARRIVAL_DT    -- 도착일시
+		            , DATE_FORMAT(D.WD_STDT, '%Y-%m-%d') AS WD_STDT       -- 회수시작일시
+		            , DATE_FORMAT(D.WD_EDDT, '%Y-%m-%d') AS WD_EDDT       -- 회수종료일시
+		            , DATE_FORMAT(C.COMPLETE_DT, '%Y-%m-%d') AS COMPLETE_DT   -- 환불확정일
+		            , A.WD_MEMO       -- wms회수메모
+		            , B.GOODS_CD      -- 상품코드
+		            , B.OPT_CD1       -- 옵션1
+		            , B.OPT_CD2       -- 옵션2
+		            , C.CHG_QTY       -- 반품수량
+		            , B.WD_QTY        -- 회수수량
+		            , d.CHG_MEMO      -- 클레임메모
+		            , D.CHG_REASON    -- 요청사유 
+		            , DATE_FORMAT(B.REG_DT, '%Y-%m-%d') AS WD_REG_DT        -- 회수등록일
+		            , DATE_FORMAT(D.REG_DT, '%Y-%m-%d') AS RC_REG_DT        -- 반품신청일
+		            , I.CUST_NO AS USER_NO 
+		            , '' AS REFUND_CONFIRM
+		            , O.EXTMALL_ID 
+		            , O.EXTMALL_ORDER_ID 
+		            , DATE_FORMAT(C.REG_DT, '%Y-%m-%d') AS CHG_REG_DT
+		            , ODI.OPT_CD
+		            , CASE WHEN I.MALL_GB IN ('G011_20')
+		                   THEN '제휴몰'
+		                   ELSE '자사몰'
+		                   END   MALL_GB_NM
+		            , FN_GET_CODE_NM('G056', G.GOODS_TYPE) AS GOODS_TYPE_NM
+		            , I.CUST_NO
+		            , O.DELV_FEE_CD
+		            , CASE WHEN G.SELF_GOODS_YN = 'Y'
+		                   THEN 'WMS'
+		                   ELSE O.DELV_FEE_CD
+		                   END  DELV_FEE_CD_GRP
+		            , D.CHG_GB
+		            , C.CHG_STAT
+		         FROM TB_WITHDRAW A
+		         JOIN TB_WITHDRAW_DETAIL B     ON A.WD_INVOICE_NO  = B.WD_INVOICE_NO AND A.ORD_CHG_SQ = B.ORD_CHG_SQ 
+		         JOIN TB_ORDER_CHANGE_DETAIL C ON B.ORD_CHG_SQ = C.ORD_CHG_SQ AND B.ORD_DTL_NO = C.ORD_DTL_NO AND C.DEL_YN ='N'
+		         JOIN TB_ORDER_CHANGE        D ON C.ORD_CHG_SQ = D.ORD_CHG_SQ 
+		         JOIN TB_ORDER_DETAIL        O ON B.ORD_DTL_NO = O.ORD_DTL_NO 
+		         JOIN TB_ORDER               I ON O.ORD_NO = I.ORD_NO
+		         JOIN TB_ORDER_DETAIL_ITEM ODI ON B.ORD_DTL_NO = ODI.ORD_DTL_NO AND B.OPT_CD1 = ODI.OPT_CD1 AND B.OPT_CD2 = ODI.OPT_CD2
+		         JOIN TB_GOODS               G ON O.GOODS_CD = G.GOODS_CD
+		        WHERE 1=1
+		          AND D.CHG_GB  = 'G680_30' -- 반품요청		
 				 <include refid="getRefundListCondition_sql"/>
 		<include refid="getListPagingCondition_sql"/>
 	</select>
-	
 
-    <!-- 환불관리 목록 조회 조건  -->
+	<!-- 환불관리 목록 조회 조건  -->
 	<sql id="getRefundListCondition_sql">
 		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
 			<if test="searchType == 'withdrawDt'"> -- 회수등록일자
@@ -111,11 +127,9 @@
 		<if test="withdrawType != null and withdrawType != ''">
 			<choose>
 				<when test='withdrawType == "N"'> -- 환불대기
-				-- AND C.COMPLETE_DT IS NULL
 				   AND C.CHG_STAT NOT IN('G685_60')
 				</when>
 				<when test='withdrawType == "Y"'> -- 환불완료
-				-- AND C.COMPLETE_DT IS NOT NULL
 				   AND C.CHG_STAT = 'G685_60'
 				</when>
 			</choose>
@@ -140,6 +154,12 @@
 		<if test="extmallOrderId != null and extmallOrderId != ''">
 			AND O.EXTMALL_ORDER_ID   = #{extmallOrderId}
 		</if>
+		<if test="ordPhnno != null and ordPhnno != ''">
+			AND I.ORD_PHNNO = #{ordPhnno}
+		</if>
+		<if test="optCd != null and optCd != ''">
+			AND ODI.OPT_CD LIKE CONCAT('%',#{optCd},'%')
+		</if>
 	</sql>
 	
 	<!-- 회수예외목록 건수 -->
@@ -323,13 +343,15 @@
 		                    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
+		                 , DATE_FORMAT(CD.REG_DT, '%Y-%m-%d') AS CHG_REG_DT
+		                 , FN_GET_CODE_NM('G056', G.GOODS_TYPE) AS GOODS_TYPE_NM
 		            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 
+		            LEFT   OUTER JOIN TB_ORDER_DETAIL OD ON B.ORDER_DTL_NO = OD.ORD_DTL_NO
+		            LEFT   OUTER JOIN TB_GOODS G ON OD.GOODS_CD = G.GOODS_CD 
 		            WHERE  1=1
 		            AND    B.REASON_CODE IN ('09','11')
 					<if test='customerName != null and customerName != ""'>
@@ -433,14 +455,16 @@
 		                    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
+		                 , DATE_FORMAT(CD.REG_DT, '%Y-%m-%d') AS CHG_REG_DT
+		                 , FN_GET_CODE_NM('G056', G.GOODS_TYPE) AS GOODS_TYPE_NM
 		            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 
+		            LEFT   OUTER JOIN TB_ORDER_DETAIL         OD ON B.ORDER_DTL_NO = OD.ORD_DTL_NO
+		            LEFT   OUTER JOIN TB_GOODS G ON OD.GOODS_CD = G.GOODS_CD 
 		            WHERE  1=1
 		            AND    B.REASON_CODE IN('00','02','03','04','05','06','15')
 					<if test='customerName != null and customerName != ""'>
@@ -544,7 +568,8 @@
 		                    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
+		                 , DATE_FORMAT(CD.REG_DT, '%Y-%m-%d') AS CHG_REG_DT
+		                 , FN_GET_CODE_NM('G056', G.GOODS_TYPE) AS GOODS_TYPE_NM
 		            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 
@@ -552,6 +577,7 @@
 		            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
+		            LEFT   OUTER JOIN TB_GOODS G ON OD.GOODS_CD = G.GOODS_CD
 		            WHERE  1=1
 		            AND    B.REASON_CODE IN('01')
 					<if test='customerName != null and customerName != ""'>
@@ -784,7 +810,7 @@
 		                        AND    X.VENDOR_ID = OD.VENDOR_ID
 		                        AND    X.EXTMALL_ID = OD.EXTMALL_ID) AS EXTMALL_NM
 		                     , OD.EXTMALL_ORDER_ID
-		                     , OC.REG_DT AS CHG_REG_DT
+		                     , DATE_FORMAT(OC.REG_DT, '%Y-%m-%d') AS CHG_REG_DT  -- 회수요청일
 		                     , ODI.ORD_DTL_ITEM_SQ
 		                     , ODI.OPT_CD
 		                     , ODI.OPT_CD1

+ 153 - 104
src/main/java/com/style24/persistence/mybatis/wms/TsaWmsWithdraw.xml

@@ -7,119 +7,168 @@
 		/* TsaWmsWithdraw.getWmsWithdrawListCount */
 		SELECT COUNT(*) AS TOTCNT
 		  FROM (		
-				SELECT A.RecallNo			-- 반품 번호 
-					 , B.RecallItemNo		-- 반품 항목 번호 
-				  FROM ISTYLE24_WMSIF.DBO.TB_IF_RECALLDELIVERY A 
-				     , ISTYLE24_WMSIF.DBO.TB_IF_RECALLDELIVERYITEM B
-				 WHERE A.RECALLNO = B.RECALLNO 
-					<if test='customername != null and customername != ""'> -- 주문자
-					AND   A.CustomerName = #{customername}
-					</if>
-					<if test='orderno != null and orderno != ""'>  -- 주문번호 
-					AND   A.OrderNo  = #{orderno}
-					</if>
-					<if test='statuscd != null and statuscd != ""'>  -- 입고상태
-					AND   B.StatusCd  = #{statuscd}
-					</if>
-					<if test='recalltypecd != null and recalltypecd != ""'>  -- 반품타입
-					AND   A.RecallTypeCd = #{recalltypecd}
-					</if>
-					<if test='isdeleted != null and isdeleted != ""'>  -- 삭제여부 1삭제 
-					AND   A.IsDeleted = #{isdeleted}
-					</if>				
-					<if test='stDate != null and stDate != ""'> -- 회수요청일 
-					AND   A.DateCreated <![CDATA[>= ]]>  CONVERT(datetime,#{stDate}) 
-					</if>
-					<if test='edDate != null and edDate != ""'>
-					AND   A.DateCreated <![CDATA[<]]> CONVERT(datetime,#{edDate})+1 
-					</if>
-					<choose>
-					     <when test='ordNoList != null and ordNoList != ""'>
-					AND   A.OrderNo IN
-					          <foreach collection="ordNoList" item="item" index="index"  open="(" close=")" separator=",">
-					      #{item}
-					         </foreach>
-					     </when>
-					</choose>
-			) A
+		    SELECT A.RecallNo			-- 반품 번호 
+		         , B.RecallItemNo		-- 반품 항목 번호 
+		      FROM ISTYLE24_WMSIF.DBO.TB_IF_RECALLDELIVERY A 
+		         , ISTYLE24_WMSIF.DBO.TB_IF_RECALLDELIVERYITEM B
+		     WHERE A.RECALLNO = B.RECALLNO 
+			<if test='customername != null and customername != ""'> -- 주문자
+		       AND A.CustomerName = #{customername}
+			</if>
+			<if test='orderno != null and orderno != ""'>  -- 주문번호 
+		       AND A.OrderNo  = #{orderno}
+			</if>
+			<if test='statuscd != null and statuscd != ""'>  -- 입고상태
+		       AND B.StatusCd  = #{statuscd}
+			</if>
+			<if test='recalltypecd != null and recalltypecd != ""'>  -- 반품타입
+		       AND A.RecallTypeCd = #{recalltypecd}
+			</if>
+			<if test='isdeleted != null and isdeleted != ""'>  -- 삭제여부 1삭제 
+		       AND A.IsDeleted = #{isdeleted}
+			</if>				
+			<if test='stDate != null and stDate != ""'> -- 회수요청일 
+		       AND A.DateCreated <![CDATA[>= ]]>  CONVERT(datetime,#{stDate}) 
+			</if>
+			<if test='edDate != null and edDate != ""'>
+		       AND A.DateCreated <![CDATA[<]]> CONVERT(datetime,#{edDate})+1 
+			</if>
+			<if test="skucode != null and skucode != ''">
+		       AND B.SKUCode LIKE CONCAT('%',#{skucode},'%')
+			</if>
+			<if test="extmallId != null and extmallId != ''">
+		       AND B.VENDOR_ID = #{vendorId}
+		       AND B.EXTMALL_ID = #{extmallId}
+			</if>
+			<if test="extmallOrderId != null and extmallOrderId != ''">
+		       AND B.EXTMALL_ORDER_ID LIKE CONCAT('%',#{extmallOrderId},'%')
+			</if>
+			<choose>
+				<when test="search != null and search != '' and search == 'shoplinkerOrderId'">
+		       AND B.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 B.EXTMALL_ORDER_ID IN
+					<foreach collection="conditions" item="item" index="index"  open="(" close=")" separator=",">
+		            #{item}
+					</foreach>
+				</when>
+			</choose>
+		) A
 	</select>
 		
 	<!-- WMS회수목록 -->
 	<select id="getWmsWithdrawList" parameterType="WmsWithdraw" resultType="WmsWithdraw">
 		/* TsaWmsWithdraw.getWmsWithdrawList */
 		SELECT Z.*
-		, CASE WHEN Z.RecallTypeCd ='10' THEN '반품' ELSE '교환' END AS RecallTypeCdNm
+		     , CASE WHEN Z.RecallTypeCd ='10' 
+		            THEN '반품' 
+		            ELSE '교환' 
+		            END AS RecallTypeCdNm
 		FROM (
-		    SELECT A.*,  ROW_NUMBER() OVER (ORDER BY RecallNo DESC, RecallItemNo ) as RNUM 
+		    SELECT A.*
+		         , ROW_NUMBER() OVER (ORDER BY RecallNo DESC, RecallItemNo ) as RNUM 
 		    FROM (
-				SELECT 
-					  A.RecallNo			-- 반품 번호 
-					, B.RecallItemNo		-- 반품 항목 번호 X
-					, A.OrderExceptionNo	-- 주문변경번호  
-					, A.RecallTypeCd		-- 반품타입
-					, A.Receiver			-- 받는자
-					, A.ReceiverTelNum		-- 받는자 전화번호
-					, A.ReceiverCellNum		-- 받는자 핸드폰 번호
-					, A.DeliveryPostalCode	-- 우편 번호
-					, A.DeliveryAddr1		-- 기본 주소
-					, A.DeliveryAddr2		-- 상세 주소
-					, A.OrderNo				-- 주문 번호
-					, A.OrderGUID			-- 주문 고유 번호
-					, A.CustomerName		-- 주문자
-					, A.LoginId				-- 아이디
-					, A.CSMemo				-- CS 메모
-					, CONVERT(char(10), A.DateCSMemoUpdated, 23) AS DateCSMemoUpdated	-- CS 메모 변경일
-					, A.WMSMemo				-- WMS 메모
-					, CONVERT(char(10), A.DateWMSMemoUpdated, 23) AS DateWMSMemoUpdated	-- WMS 메모 변경일
-					, CONVERT(char(10), A.DateCreated, 23) AS DateCreated			    -- 생성일 -- 회수요청일
-					, A.IsDeleted			-- 삭제 여부  
-					, A.DateDeleted			-- 삭제일  x
-					, A.DeliveryAddrNew		-- 도로명 주소
-					, B.ProductNo			-- 상품 번호
-					, B.ProductCode			-- 상품 코드
-					, B.ProductName			-- 상품명
-					, B.SKUCode				-- 옵션 코드
-					, B.SKUValue			-- 옵션 내용
-					, B.RecallQty			-- 수량
-					, B.StatusCd			-- 상태
-					, CONVERT(char(10), B.DateCompleted, 23) AS DateCompleted		-- 완료일
-					, B.LogisticsName		-- 택배사 명
-					, B.RecallInvoiceNo		-- 회수송장번호
-					, B.InvoiceNo			-- 원운송장번호
-					, B.OrderDtlNo			-- 주문상세번호
-				  FROM ISTYLE24_WMSIF.DBO.TB_IF_RECALLDELIVERY A , ISTYLE24_WMSIF.DBO.TB_IF_RECALLDELIVERYITEM B
-				 WHERE A.RECALLNO = B.RECALLNO 
-					<if test='customername != null and customername != ""'> -- 주문자
-					AND   A.CustomerName = #{customername}
-					</if>
-					<if test='orderno != null and orderno != ""'>  -- 주문번호
-					AND   A.OrderNo  = #{orderno}
-					</if>
-					<if test='statuscd != null and statuscd != ""'>  -- 입고상태
-					AND   B.StatusCd  = #{statuscd}
-					</if>
-					<if test='recalltypecd != null and recalltypecd != ""'>  -- 반품타입
-					AND   A.RecallTypeCd = #{recalltypecd}
-					</if>
-					<if test='isdeleted != null and isdeleted != ""'>  -- 삭제여부 1삭제 
-					AND    A.IsDeleted = #{isdeleted}
-					</if>				
-					<if test='stDate != null and stDate != ""'> -- 회수요청일 
-					AND   A.DateCreated <![CDATA[>= ]]>  CONVERT(datetime,#{stDate}) 
-					</if>
-					<if test='edDate != null and edDate != ""'>
-					AND   A.DateCreated <![CDATA[<]]> CONVERT(datetime,#{edDate})+1 
-					</if>
-					<choose>
-					     <when test='ordNoList != null and ordNoList != ""'>
-					AND   A.OrderNo IN
-					          <foreach collection="ordNoList" item="item" index="index"  open="(" close=")" separator=",">
-					      #{item}
-					         </foreach>
-					     </when>
-					</choose>
+		        SELECT A.RecallNo			-- 반품 번호 
+		             , B.RecallItemNo		-- 반품 항목 번호 X
+		             , A.OrderExceptionNo	-- 주문변경번호  
+		             , A.RecallTypeCd		-- 반품타입
+		             , A.Receiver			-- 받는자
+		             , A.ReceiverTelNum		-- 받는자 전화번호
+		             , A.ReceiverCellNum		-- 받는자 핸드폰 번호
+		             , A.DeliveryPostalCode	-- 우편 번호
+		             , A.DeliveryAddr1		-- 기본 주소
+		             , A.DeliveryAddr2		-- 상세 주소
+		             , A.OrderNo				-- 주문 번호
+		             , A.OrderGUID			-- 주문 고유 번호
+		             , A.CustomerName		-- 주문자
+		             , A.LoginId				-- 아이디
+		             , A.CSMemo				-- CS 메모
+		             , CONVERT(char(10), A.DateCSMemoUpdated, 23) AS DateCSMemoUpdated	-- CS 메모 변경일
+		             , A.WMSMemo				-- WMS 메모
+		             , CONVERT(char(10), A.DateWMSMemoUpdated, 23) AS DateWMSMemoUpdated	-- WMS 메모 변경일
+		             , CONVERT(char(10), A.DateCreated, 23) AS DateCreated			    -- 생성일 -- 회수요청일
+		             , A.IsDeleted			-- 삭제 여부  
+		             , A.DateDeleted			-- 삭제일  x
+		             , A.DeliveryAddrNew		-- 도로명 주소
+		             , B.ProductNo			-- 상품 번호
+		             , B.ProductCode			-- 상품 코드
+		             , B.ProductName			-- 상품명
+		             , B.SKUCode				-- 옵션 코드
+		             , B.SKUValue			-- 옵션 내용
+		             , B.RecallQty			-- 수량
+		             , B.StatusCd			-- 상태
+		             , CONVERT(char(10), B.DateCompleted, 23) AS DateCompleted		-- 완료일
+		             , B.LogisticsName		-- 택배사 명
+		             , B.RecallInvoiceNo		-- 회수송장번호
+		             , B.InvoiceNo			-- 원운송장번호
+		             , B.OrderDtlNo			-- 주문상세번호
+		             , B.VENDOR_ID
+		             , B.EXTMALL_ID
+		             , B.AGENT_ORDER_ID
+		             , B.EXTMALL_ORDER_ID
+		             , CONVERT(char(10), B.CHG_REG_DT, 23) AS CHG_REG_DT
+		             , CASE WHEN B.EXTMALL_ID IS NULL
+		                    THEN '자사몰'
+		                    ELSE '제휴몰'
+		                    END  MALL_GB_NM 
+		             , CASE WHEN (SELECT COUNT(1) FROM ISTYLE24_WMSIF.DBO.TB_IF_RECALLDELIVERYITEM X WHERE X.RECALLNO = B.RECALLNO AND X.OrderDtlNo = B.OrderDtlNo) > 1
+		                    THEN '일반상품'
+		                    ELSE '세트상품'
+		                    END   GOODS_TYPE_NM
+		          FROM ISTYLE24_WMSIF.DBO.TB_IF_RECALLDELIVERY A 
+		             , ISTYLE24_WMSIF.DBO.TB_IF_RECALLDELIVERYITEM B
+		         WHERE A.RECALLNO = B.RECALLNO 
+				<if test='customername != null and customername != ""'> -- 주문자
+		           AND A.CustomerName = #{customername}
+				</if>
+				<if test='orderno != null and orderno != ""'>  -- 주문번호
+		           AND A.OrderNo  = #{orderno}
+				</if>
+				<if test='statuscd != null and statuscd != ""'>  -- 입고상태
+		           AND B.StatusCd  = #{statuscd}
+				</if>
+				<if test='recalltypecd != null and recalltypecd != ""'>  -- 반품타입
+		           AND A.RecallTypeCd = #{recalltypecd}
+				</if>
+				<if test='isdeleted != null and isdeleted != ""'>  -- 삭제여부 1삭제 
+		           AND A.IsDeleted = #{isdeleted}
+				</if>				
+				<if test='stDate != null and stDate != ""'> -- 회수요청일 
+		           AND A.DateCreated <![CDATA[>= ]]>  CONVERT(datetime,#{stDate})
+				</if>
+				<if test='edDate != null and edDate != ""'>
+		           AND A.DateCreated <![CDATA[<]]> CONVERT(datetime,#{edDate})+1
+				</if>
+				<if test="skucode != null and skucode != ''">
+		           AND B.SKUCode LIKE CONCAT('%',#{skucode},'%')
+				</if>
+				<if test="extmallId != null and extmallId != ''">
+		           AND B.VENDOR_ID = #{vendorId}
+		           AND B.EXTMALL_ID = #{extmallId}
+				</if>
+				<if test="extmallOrderId != null and extmallOrderId != ''">
+		           AND B.EXTMALL_ORDER_ID LIKE CONCAT('%',#{extmallOrderId},'%')
+				</if>
+				<choose>
+					<when test="search != null and search != '' and search == 'shoplinkerOrderId'">
+		           AND B.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 B.EXTMALL_ORDER_ID IN
+						<foreach collection="conditions" item="item" index="index"  open="(" close=")" separator=",">
+		               #{item}
+						</foreach>
+					</when>
+				</choose>
 		    ) A
-		)Z WHERE RNUM BETWEEN  #{pageable.startRow} AND #{pageable.endRow}
+		) Z WHERE RNUM BETWEEN  #{pageable.startRow} AND #{pageable.endRow}
 	</select>
 
 	<!-- 출고처지정 지연재고 등록     -->

+ 29 - 0
src/main/webapp/WEB-INF/views/delivery/ExchangeDelvFailListForm.html

@@ -66,6 +66,35 @@
 								</select>
 							</td>
 						</tr>
+						<!-- 2021.10.06 제휴몰 검색기능 추가 -->
+						<tr>
+							<th class="dashR">제휴몰명</th>
+							<td class="dashR">
+								<input type="hidden" 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">주문자휴대폰번호</th>
+							<td class="dashR">
+								<input type="text" name="ordPhnno" placeholder="" maxlength="40"/>
+							</td>
+						</tr>
+						<tr>
+							<th class="dashR">상품번호</th>
+							<td class="dashR">
+								<input type="text" name="goodsCd" 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">

+ 202 - 56
src/main/webapp/WEB-INF/views/withdraw/RefundRegisterListForm.html

@@ -90,7 +90,7 @@
 								<td>
 									<input type="text" class="w200" name="goodsCd"/>
 								</td>
-								<th>제휴</th>
+								<th>제휴몰명</th>
 								<td>
 									<select name="extmallId" id="extmallId" class="w200">
 										<option value="">[전체]</option>
@@ -104,9 +104,13 @@
 								<td>
 									<input type="text" id="ordNm" name="ordNm" class="w200" />
 								</td>
-								<th>보내는사람</th>
-								<td colspan="3">
-									<input type="text" id="senderNm" name="senderNm" class="w200" />
+								<th>주문자연락처</th>
+								<td>
+									<input type="text" id="ordPhnno" name="orderPhnno" class="w200" maxlength="20"/>
+								</td>
+								<th>SKU-CODE</th>
+								<td>
+									<input type="text" id="optCd" name="optCd" class="w200" maxlength="40"/>
 								</td>
 							</tr>
 						</tbody>
@@ -121,6 +125,7 @@
 					</ul>
 			</div>
 		</div>
+		
 		<!-- 리스트 영역 -->
 		<div class="panelStyle">
 			<ul class="panelBar">
@@ -157,12 +162,8 @@
 	// var extmallList =  gagajf.convertToArray([[${extmallList}]]);
 	
 	var columnDefs = [
-		{headerName: "환불상태 ",		field: "rfndStat",	width: 80,  cellClass: 'text-center'},
-		{headerName: "회수구분", 		field: "wdGb",		width: 80,  cellClass: 'text-center'},
-		{headerName: "주문번호", 		field: "ordNo",		width: 100,  cellClass: 'text-center'},
-		{headerName: "주문상세번호", 	field: "ordDtlNo",	width: 100,  cellClass: 'text-center'},
-		{headerName: "주문변경번호", 	field: "ordChgSq",	width: 100,  cellClass: 'text-center'},
-		{headerName: "환불컨펌", field: "refundConfirm",	width: 120,  cellClass: 'text-center',
+		{headerName: "클레임접수일 ",		field: "chgRegDt",			width: 120,  cellClass: 'text-center'},
+		{headerName: "환불컨펌", 			field: "refundConfirm",		width: 120,  cellClass: 'text-center',
 			cellRenderer: function(params) {
 				if (params.data.rfndStat == '환불완료') {
 					return "<a href=\"javascript:void(0);\" class=\"btn btn-dark btn-sm\">환불완료</a>";
@@ -171,37 +172,98 @@
 				}
 			}
 		},
-		{headerName: "회수송장번호", field: "wdInvoiceNo", 			width: 100, cellClass: 'text-center'},
-		{headerName: "보내는사람", 	field: "maskingSenderNm", 		width: 100, cellClass: 'text-center'},
-		{headerName: "보낸연락처", 	field: "maskingSenderPhnno", 	width: 120, cellClass: 'text-center'},
-		{headerName: "주문자명", 	field: "maskingOrdNm",			width: 100, cellClass: 'text-center'},
-		{headerName: "주문자연락처", field: "maskingOrdPhnno",		width: 120, cellClass: 'text-center'},
-		{headerName: "제휴사명", field: "extmallNm",		width: 120, cellClass: 'text-left'},
-		{headerName: "제휴사코드", field: "extmallId",		width: 120, cellClass: 'text-center'},
-		{headerName: "제휴몰 주문번호", field: "extmallOrderId",		width: 120, cellClass: 'text-center'},
-		{headerName: "도착일", 		field: "arrivalDt", 	width: 100,  cellClass: 'text-center'},
-		{headerName: "환불확정일", 	field: "completeDt",	width: 100,  cellClass: 'text-center'},
-		{headerName: "WMS회수메모", 	field: "wdMemo", 		width: 200,  cellClass: 'text-left'},
-		{headerName: "요청사유",		field: "chgReasonNm", 	width: 150,  cellClass: 'text-center'},
-		{headerName: "클레임메모", 	field: "chgMemo", 		width: 200,  cellClass: 'text-left'},
-		{headerName: "상품코드", 	field: "goodsCd", 		width: 150,  cellClass: 'text-center'},
-		{headerName: "옵션1", 		field: "optCd1", 		width: 80,  cellClass: 'text-center'},
-		{headerName: "옵션2", 		field: "optCd2", 		width: 80,  cellClass: 'text-center'},
-		{headerName: "반품수량", 	field: "chgQty", 		width: 80,  cellClass: 'text-center'},
-		{headerName: "회수수량", 	field: "wdQty", 		width: 80,  cellClass: 'text-center'},
-		{headerName: "회수등록일", 	field: "wdRegDt", 		width: 80,  cellClass: 'text-center'},
-		{headerName: "반품신청일", 	field: "rcRegDt", 		width: 80,  cellClass: 'text-center'},
-		{headerName: "반품완료일", 	field: "wdEddt", 		width: 80,  cellClass: 'text-center'}
-
+		{headerName: "환불상태 ",			field: "rfndStat",			width: 80,  cellClass: 'text-center'},
+		{headerName: "회수구분", 			field: "wdGb",				width: 80,  cellClass: 'text-center'},
+		{headerName: "몰구분", 			field: "mallGbNm",			width: 80,  cellClass: 'text-center'},
+		{headerName: "제휴몰명", 			field: "extmallNm",			width: 120, cellClass: 'text-left'},
+		{headerName: "제휴몰 주문번호", 	field: "extmallOrderId",	width: 120, cellClass: 'text-center'},
+		{
+			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: "ordDtlNo",			width: 100,  cellClass: 'text-center'},
+		{
+			headerName		: "요청번호"		
+			, field			: "ordChgSq"		
+			, width			: 100	
+			, cellClass		: 'text-center'
+			, cellRenderer	: function(params) {
+				var rtnStr = "";
+				var paramData 	= params.data.ordNo;
+				paramData 		+= '@' + params.data.ordDtlNo;
+				paramData 		+= '@' + params.data.delvFeeCd;
+				paramData 		+= '@' + params.data.delvFeeCdGrp;
+				paramData 		+= '@' + params.data.chgStat;
+					
+				// 취소요청
+				if (params.data.chgGb == "G680_20") {
+					rtnStr = '<a href="javascript:void(0);" onclick="fnCancelRequest(\'' + paramData + '\',\'' + params.value + '\');">' + params.value + '</a>';
+				}
+				// 반품요청
+				else if (params.data.chgGb == "G680_30") {
+					rtnStr = '<a href="javascript:void(0);" onclick="fnReturnRequest(\'' + paramData + '\',\'' + params.value + '\');">' + params.value + '</a>';
+				}
+				// 교환요청
+				else if (params.data.chgGb == "G680_40") {
+					rtnStr = '<a href="javascript:void(0);" onclick="fnExchangeRequest(\'' + paramData + '\',\'' + params.value + '\');">' + params.value + '</a>';
+				}
+				else {
+					rtnStr = params.value;
+				}				
+				return  rtnStr;
+			}
+		},
+		{headerName: "주문변경번호", 		field: "ordChgSq",			width: 100,  cellClass: 'text-center', hide: true},
+		{headerName: "배송정책그룹", 		field: "delvFeeCdGrp",		width: 100,  cellClass: 'text-center', hide: true},
+		{headerName: "배송정책", 			field: "delvFeeCd",			width: 100,  cellClass: 'text-center', hide: true},
+		{headerName: "변경구분", 			field: "chgGb",				width: 100,  cellClass: 'text-center', hide: true},
+		{headerName: "변경상태", 			field: "chgStat",			width: 100,  cellClass: 'text-center', hide: true},
+		{
+			headerName		: "주문자명"
+			, field			: "maskingOrdNm"
+			, width			: 140
+			, cellClass		: 'text-left'
+			, sortable		: true
+			, cellRenderer	: function (params) {
+				if (params.data.custNo > 0) {
+					return '<a href="javascript:void(0);" onclick=\"cfnOpenCustDetailPopup(' + params.data.custNo + ');\">' + params.value + '</a>';
+				} else {
+					return params.value;
+				}
+			}
+		},
+		{headerName: "고객고유번호", field: "custNo"				, width: 120, cellClass: 'text-center', hide: true},
+		{headerName: "주문자연락처", 		field: "maskingOrdPhnno",	width: 120, cellClass: 'text-center'},
+		{headerName: "회수송장번호", 		field: "wdInvoiceNo", 		width: 100, cellClass: 'text-center'},
+		{headerName: "도착일", 			field: "arrivalDt", 		width: 100,  cellClass: 'text-center'},
+		{headerName: "반품완료일", 		field: "wdEddt", 			width: 80,  cellClass: 'text-center'},
+		{headerName: "회수등록일", 		field: "wdRegDt", 			width: 80,  cellClass: 'text-center'},
+		{headerName: "요청사유",			field: "chgReasonNm", 		width: 150,  cellClass: 'text-center'},
+		{headerName: "WMS회수메모", 		field: "wdMemo", 			width: 200,  cellClass: 'text-left'},
+		{headerName: "상품코드", 			field: "goodsCd", 			width: 150,  cellClass: 'text-center'},
+		{headerName: "상품타입", 			field: "goodsTypeNm", 		width: 100,  cellClass: 'text-center'},
+		{headerName: "SKU-CODE", 		field: "optCd", 			width: 120,  cellClass: 'text-center'},
+		{headerName: "옵션1", 			field: "optCd1", 			width: 80,  cellClass: 'text-center'},
+		{headerName: "옵션2", 			field: "optCd2", 			width: 80,  cellClass: 'text-center'},
+		{headerName: "반품수량", 			field: "chgQty", 			width: 80,  cellClass: 'text-center'},
+		{headerName: "회수수량", 			field: "wdQty", 			width: 80,  cellClass: 'text-center'},
+		{headerName: "보내는사람", 		field: "maskingSenderNm", 	width: 100, cellClass: 'text-center'},
+		{headerName: "보낸연락처", 		field: "maskingSenderPhnno",width: 120, cellClass: 'text-center'}
 	];
 
 	// Get GridOptions
 	var withDrawGridOptions = gagaAgGrid.getGridOptions(columnDefs);
-
-	// Grid editable
-	//withDrawGridOptions.defaultColDef.editable = false;
-
-
 	/*************************************************************************
 	*  init
 	**************************************************************************/	
@@ -211,8 +273,6 @@
 		cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '조회');
 
 		gagajf.setDate('#terms', 'stDate', 'edDate', '7d');
-		
-
 	});
 
 	/*************************************************************************
@@ -248,7 +308,6 @@
 	*  조회 콜백
 	**************************************************************************/
 	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());
@@ -323,25 +382,112 @@
 		withDrawGridOptions.api.exportDataAsExcel(params);
 	});	
 	
-	/*   회수 삭제 필요성이 현재 없어보임!!!
-	// 회수 삭제
-	var fnWithdrawDelete = function(wdInvoiceNo, goodsCd, sizeCd) {
-		var params = new Object();
-		params.wdInvoiceNo = wdInvoiceNo;
-		params.goodsCd = goodsCd;
-		params.sizeCd = sizeCd;
+	var fnOpenOrderDetailPopup = function (ordNo) {
+		currOrdNo = ordNo;
+		cfnOpenOrderDetailPopup(ordNo);
+	};
+	
+	// 2021.01.25 추가
+	// 취소요청, 교환요청, 반품요청 일때는 요청 정보 확인 팝업 정보
+	var fnCancelRequest = function (paramData, ordChgSq) {
+		// 취소요청 구분 (orChgSq null 이면 취소요청화면 있으면 취소요청정보화면)
+		if (ordChgSq == null) {
+			ordChgSq = 0;
+		}
+		
+		var paramArr 	= paramData.split("@");
+		var param 		= "";
+		param += "&ordNo=" 			+ paramArr[0];
+		param += "&ordDtlNo=" 		+ paramArr[1];
+		param += "&delvFeeCd="		+ paramArr[2];
+		param += "&delvFeeCdGrp="	+ paramArr[3];
+		param += "&chgStat="		+ paramArr[4];
+		param += "&ordChgSq=" 		+ ordChgSq;
+		
+		var actionUrl = "/orderChange/cncl/req/form?" + param;
+		
+		// 2021.06.30 취소완료일때 취소완료정보 조회
+		if (paramArr[4] == "G685_17" || paramArr[4] == "G685_18") {
+			actionUrl = "/orderChange/cnclRtn/complete/view?" + param;	
+		}
+
+		cfnOpenModalPopup(actionUrl, 'popupCancelRequestForm');
+		
+		return false;
+	};
+
+	//2021.01.25 추가
+	// 반품요청
+	var fnReturnRequest = function (paramData, ordChgSq) {
+		
+		// 취소요청 구분 (orChgSq null 이면 취소요청화면 있으면 취소요청정보화면)
+		if (ordChgSq == null) {
+			ordChgSq = 0;
+		}
+		
+		var param 		= "";
+		var paramArr 	= paramData.split("@");
+		param += "&ordNo=" 			+ paramArr[0];
+		param += "&ordDtlNo=" 		+ paramArr[1];
+		param += "&delvFeeCd="		+ paramArr[2];
+		param += "&delvFeeCdGrp="	+ paramArr[3];
+		param += "&chgStat="		+ paramArr[4];
+		param += "&ordChgSq=" 		+ ordChgSq;
+
+		var actionUrl = "/orderChange/rtn/req/form?" + param;
+		
+		// 2021.06.30 취소완료일때 취소완료정보 조회
+		if (paramArr[4] == "G685_60") {
+			actionUrl = "/orderChange/cnclRtn/complete/view?" + param;
+		}
+		
+		cfnOpenModalPopup(actionUrl, 'popupReturnRequestForm');
+	};
+
+	// 교환요청
+	var fnExchangeRequest = function (paramData, ordChgSq) {
+		// 취소요청 구분 (orChgSq null 이면 취소요청화면 있으면 취소요청정보화면)
+		if (ordChgSq == null) {
+			ordChgSq = 0;
+		}
+		
+		var paramArr 	= paramData.split("@");
+		var param 		= "";
+		param += "&ordNo=" 			+ paramArr[0];
+		param += "&ordDtlNo=" 		+ paramArr[1];
+		param += "&delvFeeCd="		+ paramArr[2];
+		param += "&delvFeeCdGrp="	+ paramArr[3];
+		param += "&chgStat="		+ paramArr[4];
+		param += "&ordChgSq=" 		+ ordChgSq;
+		//param += "&ordChgGb=G681_20";
+		var actionUrl = "/orderChange/exchange/request/form?" + param;
+		cfnOpenModalPopup(actionUrl, 'popupExchangeRequestForm');
+	};
 
-		var jsonData = JSON.stringify(params);
-		mcxDialog.confirm('회수 데이터를 삭제 하시겠습니까?', {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function(){
-				gagajf.ajaxJsonSubmit('/withdraw/refund/Withdraw/delete', jsonData, fnSearch);
+	// 반품요청 철회
+	var fnReturnReqeustCancel = function (ordChgSq, ordDtlNo, rowIdx) {
+		mcxDialog.confirm('반품요청을 철회하시겠습니까?', {
+			cancelBtnText	: "취소",
+			sureBtnText		: "확인",
+			sureBtnClick	: function () {
+				var data = new Object();
+				data.ordChgSq = ordChgSq;
+				data.ordDtlNo = ordDtlNo;
+				
+				var jsonData = JSON.stringify(data);
+				gagajf.ajaxJsonSubmit(
+					'/order/return/request/cancel'
+					, jsonData
+					, function (result) {
+						if (result.message != '회수컨펌 된 내역이 있습니다.') {
+							var selectedRow = gridOptionsOrderChangeInfo.api.getRowNode(rowIdx).data;
+							gridOptionsOrderChangeInfo.api.updateRowData({remove: [selectedRow]});
+						}
+					}
+				);
 			}
 		});
-	}
-	*/
-
+	};
 /*]]>*/
 </script>
 </html>

+ 4 - 3
src/main/webapp/WEB-INF/views/withdraw/WithdrawExceptionListForm.html

@@ -211,8 +211,8 @@
 				return rtnStr;
 			}			
 		},
-		{headerName: "제휴몰명",				field: "extmallNm",			width: 80,	cellClass: 'text-center'},
-		{headerName: "제휴몰주문번호",			field: "extmallOrderId",	width: 80,	cellClass: 'text-center'},
+		{headerName: "제휴몰명",				field: "extmallNm",			width: 120,	cellClass: 'text-center'},
+		{headerName: "제휴몰주문번호",			field: "extmallOrderId",	width: 120,	cellClass: 'text-center'},
 		{headerName: "주문번호",				field: "orderNo",			width: 100,	cellClass: 'text-center', 
 			cellRenderer: function (params) {
 				if (roleCd.indexOf("C") < 0) {
@@ -270,7 +270,7 @@
 		{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: "chgRegDt",					width: 100,	cellClass: 'text-center'},
 		{headerName: "네이버 주문형",		field: "payGb",						width: 100,	cellClass: 'text-center'},
 		{headerName: "반품/사유변경",		field: "chgReason2",				width: 120,	cellClass: 'text-center',
 			cellRenderer: function(params) {
@@ -394,6 +394,7 @@
 		},
 		{headerName: "작업자",			field: "userNameCreated",	width: 100,	cellClass: 'text-center'},
 		{headerName: "브랜드명",			field: "brandNm",			width: 150,	cellClass: 'text-center'},
+		{headerName: "상품타입",			field: "goodsTypeNm",		width: 120,	cellClass: 'text-center'},
 		{headerName: "상품명",			field: "productName",		width: 100,	cellClass: 'text-center',
 			cellRenderer: function (params) {
 				var option;

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

@@ -56,8 +56,18 @@
 							<td class="dashR">
 								<input type="text" name="orderno" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');" placeholder="" maxlength="9" />
 							</td>
+							<th class="dashR" rowspan="4">키워드</th>
+							<td class="dashR" rowspan="4">
+								<select name="search" id="search">
+									<option value="shoplinkerOrderId">샵링커주문번호</option><!-- AGENT_ORDER_ID -->
+									<option value="mallOrderId">쇼핑몰주문번호</option><!-- EXTMALL_ORDER_ID -->
+								</select><br>
+								<textarea class="textareaR2 w90p" name="condition" id="condition"></textarea>
+							</td>
+						</tr>
+						<tr>
 							<th class="dashR">입고상태</th>
-							<td class="dashR">
+							<td class="dashR" colspan="3">
 								<select name="statuscd" id="statuscd">
 									<option value="" selected>전체</option>
 									<option value="입고대기">입고대기</option>
@@ -65,30 +75,6 @@
 								</select>
 							</td>
 						</tr>
-						
-						<!-- 2021.10.06 제휴몰 검색기능 추가 -->
-						<tr>
-							<th class="dashR">제휴몰명</th>
-							<td class="dashR">
-								<input type="hidden" 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="customername" placeholder="" maxlength="40"/>
-							</td>
-							<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 -->
-								</select><br>
-								<textarea class="textareaR2 w90p" name="condition" id="condition"></textarea>
-							</td>
-						</tr>
 						<tr>
 							<th class="dashR">반품구분</th>
 							<td class="dashR">
@@ -106,13 +92,32 @@
 									<option value="0" selected>N</option>
 								</select>
 							</td>
-						</tr>						
+						</tr>
 						<tr>
 							<th class="dashR">회수요청일</th>
 							<td class="dashR" colspan="3">
 								<span id="terms"></span>
 							</td>
 						</tr>
+						<!-- 2021.10.06 제휴몰 검색기능 추가 -->
+						<tr>
+							<th class="dashR">제휴몰명</th>
+							<td class="dashR">
+								<input type="hidden" 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="skucode" placeholder="" maxlength="40"/>
+							</td>
+						</tr>
 					</table>
 	
 					<ul class="panelBar">
@@ -161,15 +166,46 @@
 	/*************************************************************************
 	* AG-GRID 영역 
 	**************************************************************************/
-	var currOrdNo =0;
-	var uploadGoodsUrl = [[${@environment.getProperty('upload.goods.view')}]]; 
-	var roleCd = [[${sessionInfo.roleCd}]]; 
-
+	var currOrdNo 		= 0;
+	var uploadGoodsUrl 	= [[${@environment.getProperty('upload.goods.view')}]]; 
+	var roleCd 			= [[${sessionInfo.roleCd}]]; 
+	var extmallList 	= [[${extmallList}]];
+	var extmallCdList	= new Array();
+	
+	for (i=0 ; i<extmallList.length ; i++) {
+		var obj = new Object();
+		obj.cd 		= extmallList[i].extmallId;
+		obj.cdNm 	= extmallList[i].extmallNm;
+		extmallCdList.push(obj);
+	}
+	
 	var columnDefs = [
-		//{headerName: "No.",				field: "rnum",				width: 50,	cellClass: 'text-center'},
-		{headerName: "반품번호",			field: "recallno", 			width: 50,	cellClass: 'text-center', hide: true},
-		{headerName: "주문변경번호",		field: "orderexceptionno",	width: 100,	cellClass: 'text-center'},
-		{headerName: "주문번호",			field: "orderno",			width: 100,	cellClass: 'text-center',
+		{headerName: "반품번호",			field: "recallno", 					width: 50,	cellClass: 'text-center', hide: true},
+		{headerName: "상태",				field: "statuscd",					width: 100,	cellClass: 'text-center'},
+		{headerName: "몰구분",			field: "mallGbNm",					width: 100,	cellClass: 'text-center'},
+		{
+			headerName		: "제휴몰명"
+			, field			: "extmallId"
+			, width			: 120
+			, cellClass		: 'text-center'
+			, sortable		: true
+			, cellRenderer: function (params) {
+				var rtnStr 	= "";
+				var temp 	= true;
+				for (i=0 ; i<extmallList.length ; i++) {
+					if (temp) {
+						if (params.value == extmallList[i].extmallId) {
+							rtnStr = extmallList[i].extmallNm;
+							temp = false;
+						}
+					}
+				}
+				return rtnStr;
+			}
+		},
+		{headerName: "제휴몰주문번호",		field: "extmallOrderId",			width: 120,	cellClass: 'text-center'},
+		{headerName: "주문변경번호",		field: "orderexceptionno",			width: 100,	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>";
@@ -178,26 +214,23 @@
 				}
 			}		
 		},
-		{headerName: "주문상세번호",		field: "orderdtlno",		width: 100,	cellClass: 'text-center'},
-		{headerName: "상태",				field: "statuscd",			width: 100,	cellClass: 'text-center'},
-		{headerName: "반품구분",			field: "recalltypecdnm",	width: 80,	cellClass: 'text-center'},
-		{headerName: "수취인",			field: "maskingReceiver",			width: 100,	cellClass: 'text-center'},
-		{headerName: "수취인휴대폰번호",	field: "maskingReceivercellnum",	width: 120,	cellClass: 'text-center'},
-		{headerName: "우편번호",			field: "deliverypostalcode",width: 80,	cellClass: 'text-center'},
-		{headerName: "기본주소",			field: "deliveryaddr1",		width: 300,	cellClass: 'text-left'},
-		{headerName: "상세주소",			field: "maskingDeliveryaddr2",		width: 200,	cellClass: 'text-left'},
+		{headerName: "주문상세번호",		field: "orderdtlno",				width: 100,	cellClass: 'text-center'},
+		{headerName: "반품구분",			field: "recalltypecdnm",			width: 80,	cellClass: 'text-center'},
+		{headerName: "클레임접수일",		field: "chgRegDt",					width: 100,	cellClass: 'text-center'},
+		{headerName: "회수요청일",			field: "datecreated",				width: 100,	cellClass: 'text-center'},
+		{headerName: "입고완료일",			field: "datecompleted",				width: 100,	cellClass: 'text-center'},
 		{headerName: "주문자",			field: "maskingCustomername",		width: 100,	cellClass: 'text-center'},
 		{headerName: "ID",				field: "maskingLoginid",			width: 100,	cellClass: 'text-center'},
-		{headerName: "CS메모",			field: "csmemo",			width: 250,	cellClass: 'text-left'},	
-		{headerName: "CS메모 변경일",		field: "datecsmemoupdated",	width: 120,	cellClass: 'text-center'},
-		{headerName: "WMS메모",			field: "wmsmemo",			width: 250,	cellClass: 'text-left'},
-		{headerName: "WMS메모변경일",	field: "datewmsmemoupdated",width: 120,	cellClass: 'text-center'},
-		{headerName: "회수요청일",		field: "datecreated",		width: 100,	cellClass: 'text-center'},
-		{headerName: "삭제여부",			field: "isdeleted",			width: 80,	cellClass: 'text-center',
-			cellRenderer: function (params) { return params.value == '0' ? 'N' : 'Y'; }		
-		},
-		{headerName: "상품코드",			field: "goodsCd",			width: 100,	cellClass: 'text-center'},
-		{headerName: "상품명",			field: "productname",		width: 250,	cellClass: 'text-left',
+		{headerName: "수취인",			field: "maskingReceiver",			width: 100,	cellClass: 'text-center'},
+		{headerName: "수취인휴대폰번호",	field: "maskingReceivercellnum",	width: 120,	cellClass: 'text-center'},
+		{headerName: "CS메모",			field: "csmemo",					width: 250,	cellClass: 'text-left'},	
+		{headerName: "CS메모 변경일",		field: "datecsmemoupdated",			width: 120,	cellClass: 'text-center'},
+		{headerName: "WMS메모",			field: "wmsmemo",					width: 250,	cellClass: 'text-left'},
+		{headerName: "WMS메모변경일",		field: "datewmsmemoupdated",		width: 120,	cellClass: 'text-center'},
+		{headerName: "삭제여부",			field: "isdeleted",					width: 80,	cellClass: 'text-center'},
+		{headerName: "상품구분",			field: "goodsTypeNm",				width: 100,	cellClass: 'text-center'},
+		{headerName: "상품코드",			field: "goodsCd",					width: 100,	cellClass: 'text-center'},
+		{headerName: "상품명",			field: "productname",				width: 250,	cellClass: 'text-left',
 			cellRenderer: function (params) {
 				if (roleCd.indexOf("C") < 0) {
 					return "<a href=\"javascript:void(0);\" onclick=\"cfnOpenGoodsDetailPopup('U','" + params.data.goodsCd + "');\">" + params.value + "</a>";
@@ -206,24 +239,23 @@
 				}
 			}					
 		},
-		{headerName: "productno",			field: "productno",			width: 100,	cellClass: 'text-center'},
-		{headerName: "productcode",			field: "productcode",		width: 100,	cellClass: 'text-center'},		
+		{headerName: "productno",		field: "productno",			width: 100,	cellClass: 'text-center'},
+		{headerName: "productcode",		field: "productcode",		width: 100,	cellClass: 'text-center'},		
 		{headerName: "옵션코드",			field: "skucode",			width: 100,	cellClass: 'text-center'},
-		{headerName: "옵션 내용",		field: "skuvalue",			width: 100,	cellClass: 'text-center'},
-		{headerName: "수량",				field: "recallqty",			width: 100,	cellClass: 'text-center'},	
-		{headerName: "완료일",			field: "datecompleted",		width: 100,	cellClass: 'text-center'},
-		{headerName: "택배사 명",		field: "logisticsname",		width: 100,	cellClass: 'text-left'},
-		{headerName: "회수운송장번호",	field: "recallinvoiceno",	width: 120,	cellClass: 'text-center'},
+		{headerName: "옵션 내용",			field: "skuvalue",			width: 100,	cellClass: 'text-center'},
+		{headerName: "수량",				field: "recallqty",			width: 100,	cellClass: 'text-center'},
+		{headerName: "우편번호",			field: "deliverypostalcode",		width: 80,	cellClass: 'text-center'},
+		{headerName: "기본주소",			field: "deliveryaddr1",				width: 300,	cellClass: 'text-left'},
+		{headerName: "상세주소",			field: "maskingDeliveryaddr2",		width: 200,	cellClass: 'text-left',
+			cellRenderer: function (params) { return params.value == '0' ? 'N' : 'Y'; }	
+		},
+		{headerName: "택배사 명",			field: "logisticsname",		width: 100,	cellClass: 'text-left'},
+		{headerName: "회수운송장번호",		field: "recallinvoiceno",	width: 120,	cellClass: 'text-center'},
 		{headerName: "원운송장번호",		field: "invoiceno",			width: 120,	cellClass: 'text-center'}
-
 	];
 
 	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
-	//gridOptions.suppressRowTransform =true;
 	gridOptions.suppressRowClickSelection = true;
-	//gridOptions.rowSelection = 'multiple';
-	
-	//gridOptions.rowHeight = 35;
 	
 	/*************************************************************************
 	*  주문상세 팝업  
@@ -240,9 +272,7 @@
 		cfnOpenOrderDetailPopup(currOrdNo);
 		fnSearchList();
 	};
-	
-	
-	
+
 	/*************************************************************************
 	*  조회 버튼 클릭 시
 	**************************************************************************/
@@ -255,12 +285,12 @@
 	*  조회 
 	**************************************************************************/
 	var fnSearchList = function() {
-		if($('#stDate').val() == ''){
+		if ($('#stDate').val() == '') {
 			mcxDialog.alert('시작 기간을 입력하세요.');
 			return;
 		}
 
-		if($('#edDate').val() == ''){
+		if ($('#edDate').val() == '') {
 			mcxDialog.alert('종료 기간을 입력하세요.');
 			return;
 		}
@@ -279,7 +309,6 @@
 	*  조회 콜백
 	**************************************************************************/
 	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());