Просмотр исходного кода

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

eskim 4 лет назад
Родитель
Сommit
affe5b6350

+ 96 - 93
src/main/java/com/style24/admin/biz/service/TsaShoplinkerService.java

@@ -175,72 +175,79 @@ public class TsaShoplinkerService {
 			// 상품기본정보
 			ShoplinkerGoods goodsMap = admShoplinkerDao.getGoods(shoplinkerGoods);
 
-			// 상품상세(퍼블) 세팅
-			String detailDesc = this.setDetailDesc(shoplinkerGoods, goodsMap);
-
-			// xml 데이터 세팅
-			StringBuilder sbRequest = new StringBuilder();
-			sbRequest.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n");
-			sbRequest.append("<shoplinker>\n");
-			sbRequest.append("	<productInfo>\n");
-			sbRequest.append("		<product>\n");
-
-			sbRequest.append("			<customer_id>").append(shoplinkerGoods.getCustomerId()).append("</customer_id>\n");
-			sbRequest.append("			<partner_product_id>").append(goodsMap.getGoodsCd()).append("</partner_product_id>\n");
-			sbRequest.append("			<attribute_title_code>").append("999999999").append("</attribute_title_code>\n");
-			sbRequest.append("			<attribute_partner_product_id>").append(goodsMap.getAttributePartnerProductId()).append("</attribute_partner_product_id>\n");
-			sbRequest.append("			<product_name>").append(goodsMap.getProductName()).append("</product_name>\n");
-			sbRequest.append("			<detail_desc>").append(detailDesc).append("</detail_desc>\n");
-
-			// 가격연계
-			if( "Y".equals(goodsMap.getSyncYn())) {
-				//sbRequest.append("			<new_desc_top>").append(goodsMap.getNewDescTop()).append("</new_desc_top>\n");
-				//sbRequest.append("			<market_price>").append(goodsMap.getMarketPrice()).append("</market_price>\n");
-				sbRequest.append("			<sale_price>").append(goodsMap.getSalePrice()).append("</sale_price>\n");
-				sbRequest.append("			<supply_price>").append(goodsMap.getSupplyPrice()).append("</supply_price>\n");
-				//sbRequest.append("			<market_price_p>").append(goodsMap.getMarketPriceP()).append("</market_price_p>\n");
-				//sbRequest.append("			<sale_price_p>").append(goodsMap.getSalePriceP()).append("</sale_price_p>\n");
-				//sbRequest.append("			<supply_price_p>").append(goodsMap.getSupplyPriceP()).append("</supply_price_p>\n");
-			}else{
-				//sbRequest.append("			<new_desc_top>").append(goodsMap.getNewDescTop()).append("</new_desc_top>\n");
-				//sbRequest.append("			<market_price>").append(goodsMap.getMarketPrice()).append("</market_price>\n");
-				sbRequest.append("			<sale_price>").append(0).append("</sale_price>\n");
-				sbRequest.append("			<supply_price>").append(0).append("</supply_price>\n");
-				//sbRequest.append("			<market_price_p>").append(goodsMap.getMarketPriceP()).append("</market_price_p>\n");
-				//sbRequest.append("			<sale_price_p>").append(goodsMap.getSalePriceP()).append("</sale_price_p>\n");
-				//sbRequest.append("			<supply_price_p>").append(goodsMap.getSupplyPriceP()).append("</supply_price_p>\n");
-			}
+			if( null != goodsMap) {
 
-			sbRequest.append("			<sale_status>").append("001").append("</sale_status>\n"); // 판매중
-			sbRequest.append("			<tax_yn>").append("001").append("</tax_yn>\n"); // 과세
-			sbRequest.append("			<salearea>전국</salearea>\n");
-			sbRequest.append("			<sex>").append(goodsMap.getSex()).append("</sex>\n");
-			sbRequest.append("			<model>").append(goodsMap.getModel()).append("</model>\n");
-			sbRequest.append("			<model_no>").append(goodsMap.getModelNo()).append("</model_no>\n");
-			sbRequest.append("			<brand>").append(goodsMap.getBrand()).append("</brand>\n");
-			sbRequest.append("			<auth_no>").append(goodsMap.getAuthNo()).append("</auth_no>\n");
-			sbRequest.append("			<expirydate>20991231</expirydate>\n");
-			sbRequest.append("			<maker>").append(goodsMap.getMaker()).append("</maker>\n");
-			sbRequest.append("			<origin>").append(goodsMap.getOrigin()).append("</origin>\n");
-			sbRequest.append("			<adult_info>").append(goodsMap.getAdultInfo()).append("</adult_info>\n");
-			sbRequest.append("			<ccategory_l>").append(goodsMap.getCcategoryL()).append("</ccategory_l>\n");
-			sbRequest.append("			<ccategory_m>").append(goodsMap.getCcategoryM()).append("</ccategory_m>\n");
-			sbRequest.append("			<ccategory_s>").append(goodsMap.getCcategoryS()).append("</ccategory_s>\n");
-			sbRequest.append("			<ccategory_d>").append(goodsMap.getCcategoryD()).append("</ccategory_d>\n");
-
-			sbRequest.append("		</product>\n");
-			sbRequest.append("	</productInfo>\n");
-			sbRequest.append("</shoplinker>\n");
-
-			if( null != goodsMap.getShoplinkerItemkindNm()) {
-				// api 호출 및 결과 history 저장
-				callGoodsRegApi(regMap , sbRequest, "product");
+				// 상품상세(퍼블) 세팅
+				String detailDesc = this.setDetailDesc(shoplinkerGoods, goodsMap);
 
+				// xml 데이터 세팅
+				StringBuilder sbRequest = new StringBuilder();
+				sbRequest.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n");
+				sbRequest.append("<shoplinker>\n");
+				sbRequest.append("	<productInfo>\n");
+				sbRequest.append("		<product>\n");
+
+				sbRequest.append("			<customer_id>").append(shoplinkerGoods.getCustomerId()).append("</customer_id>\n");
+				sbRequest.append("			<partner_product_id>").append(goodsMap.getGoodsCd()).append("</partner_product_id>\n");
+				sbRequest.append("			<attribute_title_code>").append("999999999").append("</attribute_title_code>\n");
+				sbRequest.append("			<attribute_partner_product_id>").append(goodsMap.getAttributePartnerProductId()).append("</attribute_partner_product_id>\n");
+				sbRequest.append("			<product_name>").append(goodsMap.getProductName()).append("</product_name>\n");
+				sbRequest.append("			<detail_desc>").append(detailDesc).append("</detail_desc>\n");
+
+				// 가격연계
+				if( "Y".equals(goodsMap.getSyncYn())) {
+					//sbRequest.append("			<new_desc_top>").append(goodsMap.getNewDescTop()).append("</new_desc_top>\n");
+					//sbRequest.append("			<market_price>").append(goodsMap.getMarketPrice()).append("</market_price>\n");
+					sbRequest.append("			<sale_price>").append(goodsMap.getSalePrice()).append("</sale_price>\n");
+					sbRequest.append("			<supply_price>").append(goodsMap.getSupplyPrice()).append("</supply_price>\n");
+					//sbRequest.append("			<market_price_p>").append(goodsMap.getMarketPriceP()).append("</market_price_p>\n");
+					//sbRequest.append("			<sale_price_p>").append(goodsMap.getSalePriceP()).append("</sale_price_p>\n");
+					//sbRequest.append("			<supply_price_p>").append(goodsMap.getSupplyPriceP()).append("</supply_price_p>\n");
+				}else{
+					//sbRequest.append("			<new_desc_top>").append(goodsMap.getNewDescTop()).append("</new_desc_top>\n");
+					//sbRequest.append("			<market_price>").append(goodsMap.getMarketPrice()).append("</market_price>\n");
+					sbRequest.append("			<sale_price>").append(0).append("</sale_price>\n");
+					sbRequest.append("			<supply_price>").append(0).append("</supply_price>\n");
+					//sbRequest.append("			<market_price_p>").append(goodsMap.getMarketPriceP()).append("</market_price_p>\n");
+					//sbRequest.append("			<sale_price_p>").append(goodsMap.getSalePriceP()).append("</sale_price_p>\n");
+					//sbRequest.append("			<supply_price_p>").append(goodsMap.getSupplyPriceP()).append("</supply_price_p>\n");
+				}
+
+				sbRequest.append("			<sale_status>").append("001").append("</sale_status>\n"); // 판매중
+				sbRequest.append("			<tax_yn>").append("001").append("</tax_yn>\n"); // 과세
+				sbRequest.append("			<salearea>전국</salearea>\n");
+				sbRequest.append("			<sex>").append(goodsMap.getSex()).append("</sex>\n");
+				sbRequest.append("			<model>").append(goodsMap.getModel()).append("</model>\n");
+				sbRequest.append("			<model_no>").append(goodsMap.getModelNo()).append("</model_no>\n");
+				sbRequest.append("			<brand>").append(goodsMap.getBrand()).append("</brand>\n");
+				sbRequest.append("			<auth_no>").append(goodsMap.getAuthNo()).append("</auth_no>\n");
+				sbRequest.append("			<expirydate>20991231</expirydate>\n");
+				sbRequest.append("			<maker>").append(goodsMap.getMaker()).append("</maker>\n");
+				sbRequest.append("			<origin>").append(goodsMap.getOrigin()).append("</origin>\n");
+				sbRequest.append("			<adult_info>").append(goodsMap.getAdultInfo()).append("</adult_info>\n");
+				sbRequest.append("			<ccategory_l>").append(goodsMap.getCcategoryL()).append("</ccategory_l>\n");
+				sbRequest.append("			<ccategory_m>").append(goodsMap.getCcategoryM()).append("</ccategory_m>\n");
+				sbRequest.append("			<ccategory_s>").append(goodsMap.getCcategoryS()).append("</ccategory_s>\n");
+				sbRequest.append("			<ccategory_d>").append(goodsMap.getCcategoryD()).append("</ccategory_d>\n");
+
+				sbRequest.append("		</product>\n");
+				sbRequest.append("	</productInfo>\n");
+				sbRequest.append("</shoplinker>\n");
+
+				if( null != goodsMap.getShoplinkerItemkindNm()) {
+					// api 호출 및 결과 history 저장
+					callGoodsRegApi(regMap , sbRequest, "product");
+
+				}else {
+					// 품목매핑정보 없음. 전송 안함
+					regMap.setXmlTxt(sbRequest.toString());
+					regMap.setApiResult("error");
+					regMap.setApiMessage("API 전송안함 : 샵링커 품목매핑정보가 없습니다. (자사품목코드: "+goodsMap.getItemkindCd()+")");
+					tscShoplinkerDao.insertShoplinerApiHst(regMap);
+				}
 			}else {
-				// 품목매핑정보 없음. 전송 안함
-				regMap.setXmlTxt(sbRequest.toString());
 				regMap.setApiResult("error");
-				regMap.setApiMessage("API 전송안함 : 샵링커 품목매핑정보가 없습니다. (자사품목코드: "+goodsMap.getItemkindCd()+")");
+				regMap.setApiMessage("상품정보가 없습니다. (자사상품만 등록가능)");
 				tscShoplinkerDao.insertShoplinerApiHst(regMap);
 			}
 
@@ -635,40 +642,36 @@ public class TsaShoplinkerService {
 
 			ShoplinkerGoods map = admShoplinkerDao.getCert(shoplinkerGoods);
 
-			if(null == map ) {
-				map = new ShoplinkerGoods();
-				map.setPartnerProductId(shoplinkerGoods.getGoodsCd());
-				map.setCertNo("");
-				map.setCertOrgan(".");
-			}
-
-			// xml 데이터 세팅
-			StringBuilder sbRequest = new StringBuilder();
-			sbRequest.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n");
-			sbRequest.append("<shoplinker>\n");
-			sbRequest.append("	<product>\n");
+			if(null != map ) {
 
-			sbRequest.append("		<customer_id>").append(shoplinkerGoods.getCustomerId()).append("</customer_id>\n");
-			sbRequest.append("		<partner_product_id>").append(map.getPartnerProductId()).append("</partner_product_id>\n");
-			sbRequest.append("		<certinfo>\n");
-			sbRequest.append("			<cert>\n");
+				// xml 데이터 세팅
+				StringBuilder sbRequest = new StringBuilder();
+				sbRequest.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n");
+				sbRequest.append("<shoplinker>\n");
+				sbRequest.append("	<product>\n");
 
-			//cert_item 의 경우 인증코드 값이 있으면 'C011', 없으면 'C010'
-			if("".equals(map.getCertNo())){
-				sbRequest.append("				<cert_item>").append("C010").append("</cert_item>\n");
-			}else {
-				sbRequest.append("				<cert_item>").append("C011").append("</cert_item>\n");
-			}
+				sbRequest.append("		<customer_id>").append(shoplinkerGoods.getCustomerId()).append("</customer_id>\n");
+				sbRequest.append("		<partner_product_id>").append(map.getPartnerProductId()).append("</partner_product_id>\n");
+				sbRequest.append("		<certinfo>\n");
+				sbRequest.append("			<cert>\n");
+
+				//cert_item 의 경우 인증코드 값이 있으면 'C011', 없으면 'C010'
+				if("".equals(map.getCertNo())){
+					sbRequest.append("				<cert_item>").append("C010").append("</cert_item>\n");
+				}else {
+					sbRequest.append("				<cert_item>").append("C011").append("</cert_item>\n");
+				}
 
-			sbRequest.append("				<cert_organ><![CDATA[").append(map.getCertOrgan()).append("]]></cert_organ>\n");
-			sbRequest.append("				<cert_no><![CDATA[").append(map.getCertNo()).append("]]></cert_no>\n");
-			sbRequest.append("			</cert>\n");
-			sbRequest.append("		</certinfo>\n");
-			sbRequest.append("	</product>\n");
-			sbRequest.append("</shoplinker>\n");
+				sbRequest.append("				<cert_organ><![CDATA[").append(map.getCertOrgan()).append("]]></cert_organ>\n");
+				sbRequest.append("				<cert_no><![CDATA[").append(map.getCertNo()).append("]]></cert_no>\n");
+				sbRequest.append("			</cert>\n");
+				sbRequest.append("		</certinfo>\n");
+				sbRequest.append("	</product>\n");
+				sbRequest.append("</shoplinker>\n");
 
-			// api 호출 및 결과 history 저장
-			callGoodsRegApi(regMap , sbRequest, "cert");
+				// api 호출 및 결과 history 저장
+				callGoodsRegApi(regMap , sbRequest, "cert");
+			}
 
 		}catch(Exception e) {
 			log.error("xml 생성오류 ", e);
@@ -702,7 +705,7 @@ public class TsaShoplinkerService {
 			shoplinkerGoods.setExtmallImgYn("Y");
 			Collection<ShoplinkerGoods> list = admShoplinkerDao.getGoodsImageList(shoplinkerGoods);
 
-			if(null != list) {
+			if(null != list && !list.isEmpty()) {
 
 				String imgUrl = "";
 				for (ShoplinkerGoods map : list) {

+ 26 - 3
src/main/java/com/style24/admin/biz/web/TsaShoplinkerController.java

@@ -1,12 +1,10 @@
 package com.style24.admin.biz.web;
 
 import java.io.File;
-import java.io.IOException;
 import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -145,6 +143,32 @@ public class TsaShoplinkerController extends TsaBaseController {
 		return result;
 	}
 
+	/**
+	 * 샵링커상품등록-상품등록엑셀업로드 수량체크
+	 *
+	 * @param paramMap
+	 * @return GagaMap
+	 * @throws Exception
+	 * @author jmh
+	 * @since 2021.5.20
+	 */
+	@PostMapping("/goods/send/excelupload/register/chk")
+	@ResponseBody
+	public GagaResponse shoplinkerGoodsRegisterChk(@RequestBody ShoplinkerGoods shoplinkerGoods) throws Exception {
+
+		String targetPath = GagaFileUtil.getConcatenationPath(env.getProperty("upload.excel.target.path"), "excel");
+		Collection<GagaMap> ecxelGoodsList = new ArrayList<>();
+		String[] goodsNames = {"goodsCd"};
+		ecxelGoodsList = GagaExcelUtil.getList(GagaFileUtil.getConcatenationPath(targetPath, shoplinkerGoods.getExcelFileNm()), 0, goodsNames, 0);
+
+		if (ecxelGoodsList != null && ecxelGoodsList.size() > EXCEL_ROW_COUNT) {
+			GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(targetPath, shoplinkerGoods.getExcelFileNm()));
+			throw new IllegalStateException("엑셀 파일의 건수를 " +EXCEL_ROW_COUNT + "건 이하로 사용하세요.");
+		}
+
+		return super.ok("");
+	}
+
 	/**
 	 * 샵링커상품등록-상품등록엑셀업로드
 	 *
@@ -208,7 +232,6 @@ log.info(" #### SHOPLINKER CHKE 1 - "+runMap.getRunCnt()+" | "+runMap.getSidOver
 				// 3. xml 데이터 생성
 				shoplinkerGoods.setCustomerId(env.getProperty("shoplinker.customer_id"));
 				shoplinkerGoods.setRegNo(TsaSession.getInfo().getUserNo());
-				log.info(" #### SHOPLINKER CHK2 ");
 				admShoplinkerService.createShoplinkerXml(ecxelGoodsList, shoplinkerGoods);
 
 				// 4. 파일 삭제

+ 14 - 7
src/main/java/com/style24/persistence/mybatis/shop/TsaDsiplay.xml

@@ -1490,7 +1490,7 @@
 		    </if>
 		</if>
 		<if test='contentsLoc != null and contentsLoc != ""'>
-		  <if test='contentsLoc != "SCM002" and contentsLoc != "SCM003"'>
+		  <if test='contentsLoc != "SCM002" and contentsLoc != "SCM003" and contentsLoc != "SOM003"'>
 		  AND A.USE_YN = 'Y'
 		  </if>
 		</if>
@@ -1564,13 +1564,20 @@
 			,#{contentsType}
 			,DATE_FORMAT(#{dispStdt}, '%Y-%m-%d %H:%i:%S')
 			,DATE_FORMAT(#{dispEddt}, '%Y-%m-%d %H:%i:%S')
+			<choose>
+				<when test="dispOrd != null and dispOrd != ''">
+			,#{dispOrd}
+				</when>
+				<otherwise>
 			,(SELECT DISP_ORD FROM (SELECT IFNULL((MAX(DISP_ORD) + 1), 1) AS DISP_ORD FROM	TB_CONTENTS_PREVIEW	WHERE CATE_NO = #{cateNo} AND CONTENTS_LOC = #{contentsLoc}
-			        <if test="contentsLoc != null and contentsLoc != '' and contentsLoc != 'SMM007'">
-			            <if test="brandGroupNo != null and brandGroupNo !=''">
-			                AND BRAND_GROUP_NO = #{brandGroupNo}
-			            </if>
-			        </if>
-			    ) TMP)
+			<if test="contentsLoc != null and contentsLoc != '' and contentsLoc != 'SMM007'">
+				<if test="brandGroupNo != null and brandGroupNo !=''">
+					AND BRAND_GROUP_NO = #{brandGroupNo}
+				</if>
+			</if>
+			) TMP)
+				</otherwise>
+			</choose>
 			,#{imgPath1}
 			,#{imgPath2}
 			,#{imgPath3}

+ 12 - 5
src/main/java/com/style24/persistence/mybatis/shop/TsaShoplinker.xml

@@ -18,10 +18,10 @@
 			, A.SELF_GOODS_YN
 			, VS.CURR_STOCK_QTY AS QUANTITY   	-- 현재고
 			, VS.BASE_STOCK_QTY 				-- 안전재고
-		FROM VW_STOCK VS inner join tb_goods A on VS.GOODS_CD = A.GOODS_CD
-		INNER JOIN tb_option B on VS.GOODS_CD = B.GOODS_CD AND A.GOODS_CD = B.GOODS_CD and VS.OPT_CD = B.OPT_CD
+		FROM VW_STOCK VS INNER JOIN TB_GOODS A ON VS.GOODS_CD = A.GOODS_CD
+		INNER JOIN TB_OPTION B ON VS.GOODS_CD = B.GOODS_CD AND A.GOODS_CD = B.GOODS_CD AND VS.OPT_CD = B.OPT_CD
 		WHERE VS.GOODS_CD = #{goodsCd}
-
+		AND A.SELF_GOODS_YN = 'Y'
 		ORDER BY cast(REPLACE(B.OPT_CD, '-', '') as unsigned)
 	</select>
 
@@ -115,6 +115,7 @@
 		FROM   TB_GOODS A INNER JOIN TB_GOODS_IMG B ON A.GOODS_CD = B.GOODS_CD
 				LEFT OUTER JOIN TB_COLOR C ON B.COLOR_CD = C.COLOR_CD
 		WHERE A.GOODS_CD = #{goodsCd}
+		AND A.SELF_GOODS_YN = 'Y'
 		<if test='extmallImgYn != null and extmallImgYn == "Y"'>
 			AND A.MAIN_COLOR_CD = B.COLOR_CD
         	AND (B.DEFAULT_IMG_YN = 'Y' OR B.EXTMALL_IMG_YN = 'Y')
@@ -162,6 +163,7 @@
 		ON A.GOODS_CD = B.GOODS_CD
 		AND B.NI_CLSF_CD = C.NI_CLSF_CD
 		AND B.NI_ITEM_CD = C.NI_ITEM_CD
+		AND A.SELF_GOODS_YN = 'Y'
 		AND A.GOODS_CD = #{goodsCd}
 	</select>
 
@@ -191,6 +193,7 @@
 		FROM TB_GOODS A INNER JOIN TB_GOODS_SAFE_NO B
 		ON A.GOODS_CD = B.GOODS_CD
 		WHERE A.GOODS_CD = #{goodsCd}
+		AND A.SELF_GOODS_YN = 'Y'
 	</select>
 
 	<!-- 상품등록-상품 목록 건수 -->
@@ -662,6 +665,8 @@
 				TB_ORDER_DETAIL OD
 				LEFT OUTER JOIN SHOPLINKER_SYNC_HST SL ON OD.ORD_DTL_NO = SL.ORD_DTL_NO AND SL.API_TYPE = 'INVOICE'
 			WHERE OD.VENDOR_ID = 'G003_V001'
+			AND OD.INVOICE_NO IS NOT NULL
+			AND OD.DELV_STDT IS NOT NULL
 
 			<include refid="getSlkInvoiceCondition_sql"/>
 		) A
@@ -698,6 +703,8 @@
 				TB_ORDER_DETAIL OD
 				LEFT OUTER JOIN SHOPLINKER_SYNC_HST SL ON OD.ORD_DTL_NO = SL.ORD_DTL_NO AND SL.API_TYPE = 'INVOICE'
 			WHERE OD.VENDOR_ID = 'G003_V001'
+			AND OD.INVOICE_NO IS NOT NULL
+			AND OD.DELV_STDT IS NOT NULL
 
 			<include refid="getSlkInvoiceCondition_sql"/>
 
@@ -759,10 +766,10 @@
             </if>
 
 	        <if test='apiResult != null and apiResult != "" and apiResult != "default"'>
-	        AND SL.API_RESULT = #{apiResult}
+	        AND IFNULL(SL.API_RESULT, 'wait') = #{apiResult}
 	        </if>
 	        <if test='apiResult != null and apiResult == "default"'>
-	        AND SL.API_RESULT != 'true'
+	        AND IFNULL(SL.API_RESULT, 'wait') != 'true'
 	        </if>
 
 			<if test='conditionList != null and conditionList.length>0'>

+ 7 - 1
src/main/webapp/WEB-INF/views/display/GoodsDispOrdChangePopupForm.html

@@ -145,7 +145,13 @@
 					html += '<span style="margin-left:5px;"><a href="javascript:void(0);" onclick="fnPopupRemoveGoods(\''+resultList[i].goodsCd+'\');">X</a></span>';
 				}
 				html += '</li>';
-				html += '<li class="title">'+resultList[i].goodsNm+'</li>';
+				if(resultList[i].goodsNm.length > 30){
+					html += '<li class="title">';
+					html += resultList[i].goodsNm.substring(0,30) + '...';
+					html += '</li>';
+				}else{
+					html += '<li class="title">'+resultList[i].goodsNm+'</li>';
+				}
 				html += '<li class="price"><span>가격 :</span><em>'+resultList[i].currPrice.addComma()+'</em>원</li>';
 				html += '<li><span>재고 :</span><em>'+resultList[i].currStockQty+'</em></li>';
 				html += '<li>';

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

@@ -487,9 +487,11 @@
 						html += fnAddLinkPopRow(strVar);
 					}
 					if(contentsLoc=='SBM005'){
-						if(subText!=null && subText!='null' && subText!='' ){
+						// if(subText!=null && subText!='null' && subText!='' ){
+						if(j==1){
 							html += fnAddBrandDescRow(subText);
 						}
+						// }
 					}else if(contentsLoc=='SMM001'){
 						if(subText!=null && subText!='null' && subText!='' ){
 							html += fnAddSubTextPopRow(subText);
@@ -937,7 +939,7 @@
 			changeYear: true,
 			defaultDate: $('.schDate').val()
 		});
-		if(contentsLoc=='SMM001' || contentsLoc=='SOM001' || contentsLoc=='SBM004' || contentsLoc=='SCM001'){
+		if(contentsLoc=='SMM001' || contentsLoc=='SOM001' || contentsLoc=='SBM004' || contentsLoc=='SCM001' || contentsLoc == 'SMM002'){
 			$("#addTitle"+dataIdx).click();
 			$("#addSubText"+dataIdx).click();
 			$("#addLink"+dataIdx).click();
@@ -946,8 +948,11 @@
 				$("#addMobImg"+dataIdx).click();
 			}
 		}
-		if(contentsLoc=='SGNB002'){
+		if(contentsLoc=='SGNB002' || contentsLoc=='SMM008' || contentsLoc=='SBM006' || contentsLoc=='SCM005' || contentsLoc=='SOM005' || contentsLoc=='SAD001'){
 			$("#addTitle"+dataIdx).click();
+			if(contentsLoc=='SMM008'|| contentsLoc=='SBM006' || contentsLoc=='SCM005' || contentsLoc=='SOM005' || contentsLoc=='SAD001'){
+				$("#addImg"+dataIdx).click();
+			}
 			$("#addLink"+dataIdx).click();
 		}
 
@@ -1095,6 +1100,7 @@
 	// 전시 일시 체크
 	function dateValidation(){
 		var dateBool = true;
+		let dupCnt = 0;
 		$(".mcTable").each(function(i){
 			var thisIdx = $(this).find("input[name=tableIdx]").val();
 			var dispStdt = $(this).find("[name=dispStdt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=stTimeHour]").val().replace('시', '') + "" +$(this).find("[name=stTimeMin]").val().replace('분', '') + "00";
@@ -1106,6 +1112,7 @@
 				mcxDialog.alert((i+1) +"번째 " +"시작일자는 종료일자 보다 클 수 없습니다.");
 				$(this).find('input[name=dispStdt]').focus();
 				// dateBool = false;
+				dupCnt++;
 				return false;
 			}
 		});
@@ -1114,7 +1121,9 @@
 		// }else{
 		// 	return true;
 		// }
-		return true;
+		if(dupCnt==0){
+			return true;
+		}
 	}
 
 	// 동영상 확장자 체크
@@ -1589,6 +1598,9 @@
 	 */
 	var fnAddSubTextPopRow = function (param){
 		var val = typeof param=='object'?'':param;
+		if(gagajf.isNull(val)){
+			val = '';
+		}
 		var html = '<tr name="subTextPopRow">'
 		html += '<th>서브텍스트</th>';
 		html += '<td><input type="text" name="subText" maxlength="200" value="'+val+'"/></td>';
@@ -1853,7 +1865,11 @@
 
 	let fnBrandDesc = function (){
 		$(".mcTable").each(function (idx){
-			cfnGetTextLength($(this).find('textarea[name=subText]'), 4000, $('#brandDescContent'+idx));
+			console.log('idx:'+idx);
+			if(!gagajf.isNull($(this).find('textarea[name=subText]').val())){
+				console.log('idx:>'+idx);
+				cfnGetTextLength($(this).find('textarea[name=subText]'), 4000, $('#brandDescContent'+idx));
+			}
 		});
 	}
 

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

@@ -150,7 +150,7 @@
 			html += '	<tr name="tabLinkTitleRow">';
 			html += '		<th>타이틀';
 			html += '		<br>';
-			html += '		<span id="titleByte'+addIdx+'">0</span>/20Byte';
+			html += '		<span id="titleByte'+addIdx+'">0</span>/30Byte';
 			html += '		</th>'
 			html += '		<td><input name="title" type="text" maxlength="15" data-valid-name="타이틀" value="" onkeyup="cfnGetTextLength(this, 30, $(\'#titleByte'+addIdx+'\'));"/></td>';
 			html += '	</tr>';
@@ -873,9 +873,9 @@
 				html += '	<tr name="tabLinkTitleRow">';
 				html += '		<th>타이틀';
 				html += '		<br>';
-				html += '		<span id="titleByte'+i+'">0</span>/20Byte';
+				html += '		<span id="titleByte'+i+'">0</span>/30Byte';
 				html += '		</th>';
-				html += '		<td><input name="title" type="text" maxlength="15" data-valid-name="타이틀" value="'+result[i].gtabNm+'" onkeyup="cfnGetTextLength(this, 20, $(\'#titleByte'+i+'\'));"/></td>';
+				html += '		<td><input name="title" type="text" maxlength="15" data-valid-name="타이틀" value="'+result[i].gtabNm+'" onkeyup="cfnGetTextLength(this, 30, $(\'#titleByte'+i+'\'));"/></td>';
 				html += '	</tr>';
 				html += '	<tr name="tabLinkRow">';
 				html += '		<th>링크 (없으면 #)<br>(메인은 /)</th>';

+ 6 - 6
src/main/webapp/WEB-INF/views/display/MainMultiContentsPopupForm.html

@@ -124,7 +124,7 @@ console.log('brandGroupNo:'+brandGroupNo);
 				html += '</tr>';
 				/*html += fnAddBrandImgRow(result[i].brandGroupImg);*/
 			}
-			if(contentsLoc=='SCM002' || contentsLoc=='SCM003'){
+			if(contentsLoc=='SCM002' || contentsLoc=='SCM003' || contentsLoc=='SOM003'){
 				html += '		<tr>';
 				html += '			<th>전시 설정</th>';
 				html += '			<td>';
@@ -136,7 +136,7 @@ console.log('brandGroupNo:'+brandGroupNo);
 					html += '				<label class="rdoBtn"><input type="radio" name="dispYn'+i+'" value="N" checked="checked"/>비노출</label>';
 				}
 				html += '			</td>';
-				if(result[i].contentsLoc=='SCM003'){
+				if(result[i].contentsLoc=='SCM003' || result[i].contentsLoc=='SOM003'){
 					html += '			<th>상품 노출 개수</th>';
 					html += '			<td>';
 					if(result[i].strVar1=='10'){
@@ -313,14 +313,14 @@ console.log('brandGroupNo:'+brandGroupNo);
 			html += '</td>';
 			html += '</tr>';*/
 		}
-		if(contentsLoc=='SCM002' || contentsLoc=='SCM003'){
+		if(contentsLoc=='SCM002' || contentsLoc=='SCM003' || contentsLoc=='SOM003'){
 			html += '		<tr>';
 			html += '			<th>전시 설정</th>';
 			html += '			<td>';
 			html += '				<label class="rdoBtn"><input type="radio" name="dispYn'+brandIdx+'" value="Y" checked="checked"/>노출</label>';
 			html += '				<label class="rdoBtn"><input type="radio" name="dispYn'+brandIdx+'" value="N"/>비노출</label>';
 			html += '			</td>';
-			if(contentsLoc=='SCM003'){
+			if(contentsLoc=='SCM003' || contentsLoc=='SOM003'){
 				html += '			<th>상품 노출 개수</th>';
 				html += '			<td>';
 				html += '				<label class="rdoBtn"><input type="radio" name="dispCnt'+brandIdx+'" value="10" checked="checked"/>10개</label>';
@@ -731,13 +731,13 @@ console.log('brandGroupNo:'+brandGroupNo);
 			var mdTitle = $(this).find("[name=mdTitle]").val();
 
 			var useYn = 'Y';
-			if(contentsLoc=='SCM002' || contentsLoc=='SCM003'){
+			if(contentsLoc=='SCM002' || contentsLoc=='SCM003' || contentsLoc=='SOM003'){
 				var thisIdx = $(this).find("input[name=tableIdx]").val();
 				useYn = $(this).find("input:radio[name=dispYn"+thisIdx+"]:checked").val();
 			}else{
 				useYn = 'Y';
 			}
-			if(contentsLoc=='SCM003'){
+			if(contentsLoc=='SCM003' || contentsLoc=='SOM003'){
 				var thisIdx = $(this).find("input[name=tableIdx]").val();
 				strVar1 = $(this).find("input:radio[name=dispCnt"+thisIdx+"]:checked").val();
 			}

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

@@ -34,7 +34,7 @@
 				
 				<div style="text-align:right; padding-bottom:5px; padding-top:5px;">
 					<button type="button" class="btn btn-success" th:unless="${ordChgSq > 0}" id="fnExchangeRequestSubmit" onclick="fnExchange()">교환요청</button>
-					<button type="button" class="btn btn-success" th:if="${ordChgSq > 0 and ordChgGb == ''}" id="fnExchangeCancelRequestSubmit" onclick="fnExchangeCancel()">교환철회</button>
+					<button type="button" class="btn btn-success" id="fnExchangeCancelRequestSubmit" onclick="fnExchangeCancel()">교환철회</button>
 					<button type="button" class="btn btn-success" th:if="${ordChgSq > 0 and (ordChgGb == 'G681_20' or ordChgGb == 'G681_40')}" id="fnReturnToExchangeSubmit" onclick="fnExchange()">교환변경</button>
 				</div>
 				
@@ -622,6 +622,11 @@ var fnChangeChgReason = function(reasonCd){
 			$('#wdBfSendYn').attr('disabled', false);
 		}
 	}
+	
+	// 2021.05.25 반품접수, 반품대기 상태에서만 철회가능
+	if (chgStat != "G685_20" && chgStat != "G685_21" && chgStat != "G685_30" && chgStat != "G685_31") {
+		$("#fnExchangeCancelRequestSubmit").css("display", "none");
+	}
 
 	$('#exchangeRequestFrm input[name=chgReason]').val(arrReasonCd[0]);
 	$('#exchangeRequestFrm input[name=chgReasonDesc]').val(arrReasonCd[1]);

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

@@ -1465,9 +1465,9 @@ $(document).ready(function() {
 		$("#rtnReqBtn").css("display", "none");
 		
 		// 2021.05.25 반품접수, 반품대기 상태에서만 철회가능
-		if (chgStat != "G685_50" && chgStat != "G685_51") {
-			$("#rtnReqCancelBtn").css("display", "none");
-		}
+		//if (chgStat != "G685_50" && chgStat != "G685_51" && chgStat != "G685_31") {
+			//$("#rtnReqCancelBtn").css("display", "none");
+		//}
 		
 		// 반품TO교환 버튼
 		if ((chgStat != "G685_50" && chgStat != "G685_51" && chgStat != "G685_30") || pgGb == 'NAVER_ORDER') {

+ 23 - 19
src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerGoodsSendForm.html

@@ -38,23 +38,24 @@
 				<div class="panelContent">
 					<table class="frmStyle">
 						<colgroup>
-							<col style="width: 10%;"/>
-							<col style="width: 40%;"/>
-							<col style="width: 10%;"/>
-							<col style="width: 40%;"/>
-							<!-- <col style="width: 10%;"/>
-							<col style="width: 20%;"/> -->
+							<col style="width: 8%;"/>
+							<col style="width: 18%;"/>
+							<col style="width: 8%;"/>
+							<col style="width: 18%;"/>
+							<col style="width: 8%;"/>
+							<col style="width: 19%;"/>
+							<col style="width: 8%;"/>
+							<col style="width: 13%;"/>
 						</colgroup>
 						<tr>
 							<th>전송일자<em class="required" title="필수"></em></th>
 							<td colspan="5" id="sellTerms"></td>
+							<th rowspan="2">상품코드<em class="required" title="필수"></em></th>
+							<td rowspan="2">
+								<textarea class="textareaR2 w90p" name="condition" id="condition"></textarea>
+							</td>
 						</tr>
 						<tr>
-							<th>상품코드<em class="required" title="필수"></em></th>
-							<td>
-								<textarea class="textareaR3 w30p" name="condition" id="condition"></textarea>
-							</td>
-
 							<th>브랜드</th>
 							<td>
 								<input type="text" class="w100" name="searchTxt" id="searchTxt" maxlength="20" />
@@ -63,8 +64,7 @@
 								<span id="brandText"></span>
 								<input type="hidden" name="brandList"/>
 							</td>
-						</tr>
-						<tr>
+
 							<th>API구분</th>
 							<td>
 								<select name="apiType" id="apiType" required="required" data-valid-name="API구분">
@@ -97,7 +97,7 @@
 							<!-- <button th:if="${sessionInfo.userId == 'jmh'}" type="button" class="btn btn-default btn-lg" onclick="fnTest();">테스트</button> -->
 						</li>
 					</ul>
-					<p class="dot">엑셀업로드시 한번에 최대 500개까지 가능합니다. (적정량 250개 이하)</p>
+					<p class="dot">엑셀업로드시 한번에 최대 500개까지 가능합니다.</p>
 					<p class="dot">업로드 후 약 10분 이상 작업소요시간이 걸릴 수 있습니다.</p>
 				</div>
 			</div>
@@ -282,7 +282,7 @@
 		var searchFlag = false;
 		var cnt = 0;
 
-		if( !gagajf.isNull($("#searchForm input[name=goodsCd]").val())
+		if( !gagajf.isNull($("#searchForm textarea[name=condition]").val())
 				|| (!gagajf.isNull($("#searchForm input[name=stDate]").val()) && !gagajf.isNull($("#searchForm input[name=edDate]").val()))
 			){
 			searchFlag = true;
@@ -358,7 +358,7 @@
 
 	/**************** 엑셀업로드 ********************************************************/
 	$('#btnGoodsUpload').on('click', function() {
-		console.log(" excel click");
+
 		var jsonData = JSON.stringify({apiType : "GOODS"});
 		gagajf.ajaxJsonSubmit('/shoplinker/check/api_runable', jsonData, function(result) {
 
@@ -374,15 +374,19 @@
 
 	var shoplinkerUploadGoods = function(result){
 		var dateStr = new Date().format("YYYYMMDDHHmmss");
-
 		var actionUrl = "/shoplinker/goods/send/excelupload/register";
 		let params = {};
 		params.procJob = result.procJob;
 		params.excelFileNm = result.excelFileNm;
 		params.sid = dateStr;
 
-		console.log(" excel post:" +params.sid);
-		$.post(actionUrl, $.param(params));
+		// 수량체크 로직 추가(500개 초과시 알림창 표시위함)
+		var jsonData = JSON.stringify(params);
+		gagajf.ajaxJsonSubmit(actionUrl+'/chk', jsonData, function(result2) {
+
+			// post 전송
+			$.post(actionUrl, $.param(params));
+	 	});
 	}
 	/**************** 엑셀업로드 // *****************************************************/
 

+ 18 - 18
src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerInvoiceSendForm.html

@@ -43,16 +43,27 @@
 					<table class="frmStyle">
 						<colgroup>
 							<col style="width:10%;"/>
-							<col/>
-							<col style="width:10%;"/>
-							<col style="width:13%;"/>
+							<col style="width:35%;"/>
 							<col style="width:10%;"/>
-							<col style="width:22%;"/>
+							<col/>
+							<col style="width:8%;"/>
+							<col style="width:12%;"/>
 						</colgroup>
 
 						<tr>
 							<th>배송시작일자</th>
-							<td colspan="5" id="sellTerms"></td>
+							<td colspan="3" id="sellTerms"></td>
+
+							<th rowspan="2">키워드</th>
+							<td rowspan="2">
+								<select name="search" id="search">
+									<option value="ordNo">스타일24주문번호</option>
+									<option value="agentOrderId">샵링커주문번호</option>
+									<option value="extmallOrderId">쇼핑몰주문번호</option>
+									<option value="deliveryInvoice">운송장번호</option>
+								</select>
+								<textarea class="textareaR2 w90p" name="condition" id="condition"></textarea>
+							</td>
 						</tr>
 						<tr>
 							<th>벤더/제휴몰</th>
@@ -77,16 +88,7 @@
 									<option value="error">오류</option>
 								</select>
 							</td>
-							<th>키워드</th>
-							<td>
-								<select name="search" id="search">
-									<option value="agentOrderId">샵링커주문번호</option>
-									<option value="extmallOrderId">쇼핑몰주문번호</option>
-									<option value="ordNo">스타일24주문번호</option>
-									<option value="deliveryInvoice">운송장번호</option>
-								</select>
-								<textarea class="textareaR3 w50p" name="condition" id="condition"></textarea>
-							</td>
+
 						</tr>
 					</table>
 
@@ -219,9 +221,7 @@
 		var searchFlag = false;
 		var cnt = 0;
 
-		if( !gagajf.isNull($("#searchForm input[name=agentOrderId]").val())
-				|| !gagajf.isNull($("#searchForm input[name=extmallOrderId]").val())
-				|| !gagajf.isNull($("#searchForm input[name=ordNo]").val())
+		if( !gagajf.isNull($("#searchForm textarea[name=condition]").val())
 				|| (!gagajf.isNull($("#searchForm input[name=stDate]").val()) && !gagajf.isNull($("#searchForm input[name=edDate]").val()))
 			){
 			searchFlag = true;

+ 22 - 19
src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerOrderForm.html

@@ -29,7 +29,7 @@
 
 			<div class="panelStyle">
 				<div class="panelTitle">
-					<h3><i class="fa fa-info-circle"></i>[배치주기] 평일: 5시~15시 한시간 단위 | (월) 5시: 전주 금요일 15 ~ 금일 5시 / (화~금) 5시: 전날 15 ~ 금일 5시 -v2</h3>
+					<h3><i class="fa fa-info-circle"></i>[배치주기] 평일: 5시~15시 한시간 단위 | (월) 5시: 전주 금요일 15 ~ 금일 5시 / (화~금) 5시: 전날 15 ~ 금일 5시 -v3</h3>
 					<span class="panelControl">
 						<i class="fa fa-chevron-up"></i>
 					</span>
@@ -68,21 +68,31 @@
 						<col style="width:10%;"/>
 						<col/>
 						<col style="width:10%;"/>
-						<col style="width:17%;"/>
-						<col style="width:10%;"/>
-						<col style="width:17%;"/>
+						<col style="width:25%;"/>
+						<col style="width:8%;"/>
+						<col style="width:12%;"/>
 					</colgroup>
 
 					<tr>
 						<th>주문수집일자<em class="required" title="필수"></em></th>
-						<td colspan="5">
+						<td colspan="3">
 							<span id="terms">
 							</span>
 						</td>
+
+						<th rowspan="3">키워드</th>
+						<td rowspan="3">
+							<select name="search" id="search">
+								<option value="ordNo">스타일24주문번호</option>
+								<option value="shoplinkerOrderId">샵링커주문번호</option>
+								<option value="mallOrderId">쇼핑몰주문번호</option>
+							</select><br>
+							<textarea class="textareaR2 w90p" name="condition" id="condition"></textarea>
+						</td>
 					</tr>
 					<tr>
 						<th>벤더/제휴몰</th>
-						<td>
+						<td colspan="4">
 							<select name="vendorId" required="required" data-valid-name="벤더">
 								<option th:if="${vendorList}" th:each="oneData, status : ${vendorList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>/
@@ -91,6 +101,8 @@
 								<option th:if="${extmallList}" th:each="oneData, status : ${extmallList}" th:value="${oneData.extmallId}" th:text="${'[' + oneData.extmallId + '] ' + oneData.extmallNm}"></option>
 							</select>
 						</td>
+					</tr>
+					<tr>
 						<th>제휴몰 주문등록 상태</th>
 						<td>
 							<select name="uploadStat">
@@ -99,24 +111,13 @@
 							</select>
 						</td>
 						<th>실패사유</th>
-						<td colspan="3">
+						<td colspan="2">
 							<select name="uploadFailCd">
 								<option value="">[전체]</option>
 								<option th:if="${uploadFailList}" th:each="oneData, status : ${uploadFailList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
 						</td>
 					</tr>
-					<tr>
-						<th>키워드</th>
-						<td colspan="5">
-							<select name="search" id="search">
-								<option value="shoplinkerOrderId">샵링커주문번호</option>
-								<option value="mallOrderId">쇼핑몰주문번호</option>
-								<option value="ordNo">스타일24주문번호</option>
-							</select>
-							<textarea class="textareaR3 w20p" name="condition" id="condition"></textarea>
-						</td>
-					</tr>
 				</table>
 
 				<ul class="panelBar">
@@ -319,7 +320,9 @@
 
 		var searchFlag = false;
 		var cnt = 0;
-		if((!gagajf.isNull($("#searchForm input[name=stDate]").val()) && !gagajf.isNull($("#searchForm input[name=edDate]").val()))){
+		if( !gagajf.isNull($("#searchForm textarea[name=condition]").val())
+				|| (!gagajf.isNull($("#searchForm input[name=stDate]").val()) && !gagajf.isNull($("#searchForm input[name=edDate]").val()))
+			){
 			searchFlag = true;
 		}
 

+ 12 - 14
src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerStockForm.html

@@ -44,24 +44,24 @@
 					<table class="frmStyle">
 						<colgroup>
 							<col style="width: 10%;"/>
-							<col style="width: 23%;"/>
+							<col style="width: 25%;"/>
 							<col style="width: 10%;"/>
-							<col style="width: 23%;"/>
-							<col style="width: 10%;"/>
-							<col style="width: 24%;"/>
+							<col/>
+							<col style="width: 8%;"/>
+							<col style="width: 12%;"/>
 							<col/>
 						</colgroup>
 
 						<tr>
 							<th>전송일자</th>
-							<td colspan="6" id="sellTerms"></td>
+							<td colspan="3" id="sellTerms"></td>
+
+							<th rowspan="2">상품코드<em class="required" title="필수"></em></th>
+							<td rowspan="2">
+								<textarea class="textareaR2 w90p" name="condition" id="condition"></textarea>
+							</td>
 						</tr>
 						<tr>
-							<th>상품코드<em class="required" title="필수"></em></th>
-							<td>
-								<textarea class="textareaR3 w50p" name="condition" id="condition"></textarea>
-							</td>
-
 							<th>브랜드</th>
 							<td>
 								<input type="text" class="w100" name="searchTxt" id="searchTxt" maxlength="20" />
@@ -72,7 +72,7 @@
 							</td>
 
 							<th>IF결과</th>
-							<td colspan="3">
+							<td>
 								<select name="apiResult" id="apiResult">
 									<option value="">[전체]</option>
 									<option value="true">전송완료</option>
@@ -211,9 +211,7 @@
 		var searchFlag = false;
 		var cnt = 0;
 
-		if( !gagajf.isNull($("#searchForm input[name=agentOrderId]").val())
-				|| !gagajf.isNull($("#searchForm input[name=extmallOrderId]").val())
-				|| !gagajf.isNull($("#searchForm input[name=ordNo]").val())
+		if( !gagajf.isNull($("#searchForm textarea[name=condition]").val())
 				|| (!gagajf.isNull($("#searchForm input[name=stDate]").val()) && !gagajf.isNull($("#searchForm input[name=edDate]").val()))
 			){
 			searchFlag = true;

+ 16 - 24
src/main/webapp/WEB-INF/views/withdraw/WithdrawExceptionListForm.html

@@ -491,7 +491,7 @@
 					}
 
 					
-				} else if (event.data.reasonCode == '02') { // 미착 
+				} else if (event.data.reasonCode == '02' || event.data.reasonCode == '03') { // 미착 , 과착 
 					param += "&ordNo=" 			+ event.data.orderNo;
 					param += "&ordDtlNo=" 		+ event.data.orderDtlNo;
 					param += "&ordChgSq=" 		+ event.data.ordChgSq;
@@ -509,35 +509,27 @@
 						
 						cfnOpenModalPopup(actionUrl, 'popupExchangeRequestForm');
 					}
-				} else if(event.data.reasonCode == '03' ){ // 과착 
+				} else if(event.data.reasonCode == '04'){ // 배송비 미동봉
+					actionUrl = "/withdraw/exception/change/form?ordChgSq=" + event.data.ordChgSq + '&chgGb=' + event.data.chgGb;
+					cfnOpenModalPopup(actionUrl, 'popupWithdrawChangeForm');
+				} else if(event.data.reasonCode == '05'){ // 다른상품 반품 
+					param += "&ordNo=" 			+ event.data.orderNo;
+					param += "&ordDtlNo=" 		+ event.data.orderDtlNo;
+					param += "&ordChgSq=" 		+ event.data.ordChgSq;
+					param += "&delvFeeCd="		+ event.data.delvFeeCd;
+					param += "&delvFeeCdGrp="	+ "WMS";
+					
 					if (event.data.chgGb == 'G680_30') { // 반품요청
+						param += "&ordChgGb=G681_30";    // 반품TO반품
+						actionUrl = "/orderChange/rtn/req/form?" + param;
 
-						var param 		= "";
-						param += "&ordNo=" 			+ event.data.orderNo;
-						param += "&ordDtlNo=" 		+ event.data.orderDtlNo;
-						param += "&delvFeeCd="		+ event.data.delvFeeCd;
-						param += "&delvFeeCdGrp="	+ "WMS";
-						
-						param += "&ordChgSq=" 		+ event.data.ordChgSq;
-						var actionUrl = "/orderChange/rtn/req/form?" + param;
 						cfnOpenModalPopup(actionUrl, 'popupReturnRequestForm');
-					
 					} else if (event.data.chgGb == 'G680_40') { // 교환요청
+						param += "&ordChgGb=G681_20";           // 교환TO교환
+						actionUrl = "/orderChange/exchange/request/form?" + param;
 						
-						var param 		= "";
-						param += "&ordNo=" 			+ event.data.orderNo;
-						param += "&ordDtlNo=" 		+ event.data.orderDtlNo;
-						param += "&delvFeeCd="		+ event.data.delvFeeCd;
-						param += "&delvFeeCdGrp="	+ "WMS";
-						param += "&ordChgSq=" 		+ event.data.ordChgSq;
-						
-						var actionUrl = "/orderChange/exchange/request/form?" + param;
 						cfnOpenModalPopup(actionUrl, 'popupExchangeRequestForm');
-					}
-				} else if(event.data.reasonCode == '04'){ // 배송비 미동봉
-					actionUrl = "/withdraw/exception/change/form?ordChgSq=" + event.data.ordChgSq + '&chgGb=' + event.data.chgGb;
-					cfnOpenModalPopup(actionUrl, 'popupWithdrawChangeForm');
-				} else if(event.data.reasonCode == '05'){ // 다른상품 반품 
+					}					
 					
 				} else if(event.data.reasonCode == '06'){ // 배송비 일부동봉