ソースを参照

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

gagamel 4 年 前
コミット
538627d3ba
28 ファイル変更680 行追加430 行削除
  1. 10 8
      src/main/java/com/style24/admin/biz/service/TsaGoodsService.java
  2. 96 93
      src/main/java/com/style24/admin/biz/service/TsaShoplinkerService.java
  3. 3 0
      src/main/java/com/style24/admin/biz/web/TsaCustomerController.java
  4. 5 6
      src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java
  5. 29 0
      src/main/java/com/style24/admin/biz/web/TsaOrderController.java
  6. 1 0
      src/main/java/com/style24/persistence/domain/CustomerSearch.java
  7. 6 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaCustomer.xml
  8. 14 7
      src/main/java/com/style24/persistence/mybatis/shop/TsaDsiplay.xml
  9. 16 11
      src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml
  10. 6 3
      src/main/java/com/style24/persistence/mybatis/shop/TsaShoplinker.xml
  11. 9 1
      src/main/webapp/WEB-INF/views/customer/CustomerActiveListForm.html
  12. 7 1
      src/main/webapp/WEB-INF/views/display/GoodsDispOrdChangePopupForm.html
  13. 21 5
      src/main/webapp/WEB-INF/views/display/MainContentsPopupForm.html
  14. 3 3
      src/main/webapp/WEB-INF/views/display/MainGnbContentsPopupForm.html
  15. 1 1
      src/main/webapp/WEB-INF/views/display/MainListForm.html
  16. 150 18
      src/main/webapp/WEB-INF/views/display/MainMultiContentsPopupForm.html
  17. 62 49
      src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html
  18. 51 49
      src/main/webapp/WEB-INF/views/goods/GoodsSalfRegisterForm.html
  19. 9 1
      src/main/webapp/WEB-INF/views/order/ExchangeRequestForm.html
  20. 9 40
      src/main/webapp/WEB-INF/views/order/OrderDetailForm.html
  21. 92 51
      src/main/webapp/WEB-INF/views/order/OrderListForm.html
  22. 1 1
      src/main/webapp/WEB-INF/views/order/OrderMemoRegistForm.html
  23. 3 1
      src/main/webapp/WEB-INF/views/order/RtnReqForm.html
  24. 14 14
      src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerGoodsSendForm.html
  25. 17 15
      src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerInvoiceSendForm.html
  26. 18 17
      src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerOrderForm.html
  27. 11 11
      src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerStockForm.html
  28. 16 24
      src/main/webapp/WEB-INF/views/withdraw/WithdrawExceptionListForm.html

+ 10 - 8
src/main/java/com/style24/admin/biz/service/TsaGoodsService.java

@@ -1105,14 +1105,16 @@ public class TsaGoodsService {
 		this.saveGoodsNotiInfo(goods);
 
 		// 안전인증정보
-		GoodsSafeNo goodsSafeNo = new GoodsSafeNo();
-		goodsSafeNo.setGoodsCd(goods.getGoodsCd());
-		goodsSafeNo.setCertFormGb(goods.getCertFormGb());
-		goodsSafeNo.setCertTargetGb(goods.getCertTargetGb());
-		goodsSafeNo.setCertType(goods.getCertType());
-		goodsSafeNo.setCertNum(goods.getCertNum());
-		log.info("goodsSafeNo ==>{}", goodsSafeNo);
-		this.saveGoodsDetailCertNum(goodsSafeNo);
+		if (!StringUtils.isEmpty(goods.getCertTargetGb())) {
+			GoodsSafeNo goodsSafeNo = new GoodsSafeNo();
+			goodsSafeNo.setGoodsCd(goods.getGoodsCd());
+			goodsSafeNo.setCertFormGb(goods.getCertFormGb());
+			goodsSafeNo.setCertTargetGb(goods.getCertTargetGb());
+			goodsSafeNo.setCertType(goods.getCertType());
+			goodsSafeNo.setCertNum(goods.getCertNum());
+			log.info("goodsSafeNo ==>{}", goodsSafeNo);
+			this.saveGoodsDetailCertNum(goodsSafeNo);	
+		}
 
 		// 상품 구매등급 적용
 		if (goods.getGoodsOrderGrade() != null && goods.getGoodsOrderGrade().length > 0) {

+ 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) {

+ 3 - 0
src/main/java/com/style24/admin/biz/web/TsaCustomerController.java

@@ -321,6 +321,9 @@ public class TsaCustomerController extends TsaBaseController {
 		// 관리대상
 		mav.addObject("managedRsnList", rendererService.getCommonCodeList("G103", "Y"));
 
+		// 간편가입유형
+		mav.addObject("snsTypeList", rendererService.getCommonCodeList("G105","Y"));
+
 		mav.setViewName("customer/CustomerActiveListForm");
 
 		return mav;

+ 5 - 6
src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java

@@ -364,7 +364,8 @@ public class TsaOrderChangeController extends TsaBaseController {
 		ordDtlStatArr[3] = TscConstants.OrderDetailStat.DELIVERY_PREPARE.value();
 		order.setOrdDtlStatArr(ordDtlStatArr);
 
-		// 2. 변경신청된 주문상세번호를 체크 후 있으면 해당 취소가능수량값 업데이트 
+		// 2. 변경신청된 주문상세번호를 체크 후 있으면 해당 취소가능수량값 업데이트
+		order.setChgGb(TscConstants.OrderChangeGb.RETURN.value());
 		List<Order> cancelRequestTargetList 		= coreOrderChangeService.getCancelRequestTargetList2(order);
 		List<Order> orderChangeDetailList 			= coreOrderChangeService.getOrderChangeDetailList(order);
 		Collection<Order> orderInfoList 			= coreOrderService.getOrderInfoList(order);
@@ -384,6 +385,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 			// Collection<Order> exchangeInfoList = coreOrderChangeService.getExchangeInfo(order);
 			// mav.addObject("exchangeInfoList"		, exchangeInfoList);											// 교환정보
 			mav.addObject("ordChgGb"				, StringUtils.isBlank(ordChgGb) ? "" : ordChgGb.toUpperCase());	// 주문변경요쳥변경구분
+			mav.addObject("recallExceptionInfo"		, coreOrderChangeService.getRecallExceptionInfo(order));		// 회수 예외 정보
 
 			// 반품상세 정보 설정
 			List<Integer> ordDtlNoList = new ArrayList<>();
@@ -693,13 +695,8 @@ public class TsaOrderChangeController extends TsaBaseController {
 	 */
 	@GetMapping("/exchange/request/form")
 	public ModelAndView exchangeRequestFrom(Order order) {
-
-		// Order order = new Order();
 		ModelAndView mav = new ModelAndView();
 
-		// order.setOrdNo(ordNo);
-		// order.setOrdChgSq(ordChgSq);
-
 		// 교환가능 주문상세상탭값 설정
 		String[] ordDtlStatArr = new String[3];
 		ordDtlStatArr[0] = TscConstants.OrderDetailStat.SHIPPING.value();
@@ -707,6 +704,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		ordDtlStatArr[2] = TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value();
 		order.setOrdDtlStatArr(ordDtlStatArr);
 
+		order.setChgGb(TscConstants.OrderChangeGb.EXCHANGE.value());
 		Collection<Order> cancelRequestTargetList = coreOrderChangeService.getCancelRequestTargetList(order);
 		Collection<Order> orderChangeDetailList = coreOrderChangeService.getOrderChangeDetailList(order);
 		Collection<Order> orderInfoList = coreOrderService.getOrderInfoList(order);
@@ -759,6 +757,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 			mav.addObject("exchangeInfoList"		, exchangeInfoList);											// 교환정보
 			mav.addObject("ordChgGb"				, StringUtils.isBlank(ordChgGb) ? "" : ordChgGb.toUpperCase());	// 주문변경요쳥변경정보
 			mav.addObject("chgOrdDtlStat"			, chgOrdDtlStat);												// 교환상품상세상태
+			mav.addObject("recallExceptionInfo"		, coreOrderChangeService.getRecallExceptionInfo(order));		// 회수 예외 정보
 		}
 
 		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G689"));				// 교환사유

+ 29 - 0
src/main/java/com/style24/admin/biz/web/TsaOrderController.java

@@ -7,6 +7,7 @@ import java.util.Collection;
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.core.io.InputStreamResource;
@@ -67,6 +68,9 @@ public class TsaOrderController extends TsaBaseController {
 	
 	@Autowired
 	private TsaPgService pgService;
+	
+	@Autowired
+	private ObjectMapper mapper;
 
 	/**
 	 * 주문목록조회
@@ -122,6 +126,31 @@ public class TsaOrderController extends TsaBaseController {
 				order.getMultiOrdStat()[i] = ordStat;
 			}
 		}
+		
+		// 2021.07.13 업체,브랜드 검색방법 변경
+		if (!StringUtils.isBlank(order.getBrandList())) {
+			try {
+				String[] arrBrandCd = mapper.readValue(order.getBrandList(), String[].class);
+				order.setMultiBrand(arrBrandCd);
+			} catch (Exception e) {
+				e.printStackTrace();
+				throw new IllegalStateException("브랜드코드 검색중 오류로 인해 조회되지 않았습니다.");
+			}
+		}
+
+		if (!StringUtils.isBlank(order.getSupplyCompList())) {
+			try {
+				String[] arrSupplyComp = mapper.readValue(order.getSupplyCompList(), String[].class);
+				order.setMultiSupplyCompCd(arrSupplyComp);
+			} catch (Exception e) {
+				e.printStackTrace();
+				throw new IllegalStateException("업체코드 검색중 오류로 인해 조회되지 않았습니다.");
+			}
+		}
+
+		if (!StringUtils.isBlank(order.getCondition())) {
+			order.setConditions(order.getCondition().replaceAll("\r", "").trim().split("\n"));
+		}
 
 		// 주문전체건수 조회
 		int totalCount = orderService.getOrderListCount(order);

+ 1 - 0
src/main/java/com/style24/persistence/domain/CustomerSearch.java

@@ -37,6 +37,7 @@ public class CustomerSearch extends TscBaseDomain {
 	private String email;
 	private String custId;
 	private Integer custNo;
+	private String snsType;
 
 	// 쿠폰발행팝업
 	private String cpnPubPopYn;		// 쿠폰발행팝업

+ 6 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaCustomer.xml

@@ -56,6 +56,9 @@
 		<if test="appAgreeYn != null and appAgreeYn != ''">
 		AND   APP_AGREE_YN = #{appAgreeYn}
 		</if>
+		<if test="snsType != null and snsType != ''">
+		AND   SNS_TYPE = #{snsType}
+		</if>
 		<if test="stDate != null and edDate != '' and stDate != null and edDate != ''">
 		     <if test="searchDateGb == 'joinDt'">
 		AND   JOIN_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
@@ -190,6 +193,9 @@
 		<if test="mkAgreeYn != null and mkAgreeYn != ''">
 		AND   MK_AGREE_YN = #{mkAgreeYn}
 		</if>
+		<if test="snsType != null and snsType != ''">
+		AND  SNS_TYPE = #{snsType}
+		</if>
 		<if test="stDate != null and edDate != '' and stDate != null and edDate != ''">
 		     <if test="searchDateGb == 'joinDt'">
 		AND   JOIN_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')

+ 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}

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

@@ -4895,17 +4895,22 @@
 		<!-- wms 상품정보 조회 -->
 	<select  id="getWmsGoodsInfo" parameterType="Goods" resultType="WmsGoods" >
 		/* TssGoods.getWmsGoodsInfo */
-		SELECT PRODUCT_NO
-		     , PRODUCT_CODE
-		     , PRODUCT_NAME
-		     , MODEL_NO
-		     , PROVIDER_NO
-		     , PROVIDER_NAME
-		     , BRAND_NO
-		     , BRAND_NAME
-		     , GOODS_REG_DT
-		     , GOODS_REG_GB
-		FROM TB_WMS_GOODS
+		SELECT A.PRODUCT_NO
+		     , A.PRODUCT_CODE
+		     , A.PRODUCT_NAME
+		     , A.MODEL_NO
+		     , A.PROVIDER_NO
+		     , A.PROVIDER_NAME
+		     , A.BRAND_NO
+		     , A.BRAND_NAME
+		     , A.GOODS_REG_DT
+		     , A.GOODS_REG_GB
+		FROM TB_WMS_GOODS A
+		INNER JOIN TB_BRAND B ON A.BRAND_NO = B.BRAND_NO 
+		                      AND B.SELF_YN  = 'Y'
+		                      AND B.USE_YN  = 'Y'
+		                      AND B.BRAND_CD = #{brandCd}
+		INNER JOIN TB_BRAND_SUPPLY S ON B.BRAND_CD = S.BRAND_CD
 		WHERE MODEL_NO = #{goodsCd}
 		LIMIT 1
 	</select>

+ 6 - 3
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>
 
 	<!-- 상품등록-상품 목록 건수 -->

+ 9 - 1
src/main/webapp/WEB-INF/views/customer/CustomerActiveListForm.html

@@ -97,9 +97,17 @@
 					</tr>
 					<tr>
 						<th class="dashR">휴대폰번호</th>
-						<td class="dashR" colspan="5">
+						<td class="dashR">
 							<input type="text" class="w200" name="cellPhnno" id="cellPhnno"/>
 						</td>
+
+						<th class="dashR">간편가입유형</th>
+						<td class="dashR">
+							<select name="snsType">
+								<option value="">전체</option>
+								<option th:if="${snsTypeList}" th:each="oneData, status : ${snsTypeList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+							</select>
+						</td>
 					</tr>
 					<tr>
 						<th class="dashR">조회일자</th>

+ 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>';

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

@@ -693,7 +693,7 @@
 
 		// 브랜드픽, MD추천 다른 팝업 사용
 		if(contentsLoc=='SMM007'||contentsLoc=='SMM009'||contentsLoc=='SMM012'||contentsLoc=='SMM003'||contentsLoc=='SBM007'||contentsLoc=='SBM008'||contentsLoc=='SBM009'
-			||contentsLoc=='SBM017'||contentsLoc=='SBM018'||contentsLoc=='SBM019'||contentsLoc=='SOM003'||contentsLoc=='SCM002'||contentsLoc=='SCM003'){
+			||contentsLoc=='SBM017'||contentsLoc=='SBM018'||contentsLoc=='SBM019'||contentsLoc=='SOM002'||contentsLoc=='SOM003'||contentsLoc=='SCM002'||contentsLoc=='SCM003'){
 			cfnOpenMainMultiContentsPopup(cateNo, contentsLoc, brandGroupNo);
 		}else if(contentsLoc=='STAB001' || contentsLoc=='STAB002' || contentsLoc=='SBM002' || contentsLoc=='SBMM002'){
 			cfnOpenMainGnbContentsPopup(cateNo, contentsLoc, brandGroupNo);

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

@@ -29,7 +29,7 @@
 						<button type="button" class="btn btn btn-base btn-sm" th:if="${contentsLoc == 'SMM007'}" onclick="fnAddBrand(this);">브랜드 추가</button> <!--id="btnBrandAddRow"-->
 						<button type="button" class="btn btn btn-base btn-sm" th:if="${contentsLoc == 'SMM009' or contentsLoc == 'SMM012'}" onclick="fnAddBrand(this);">MD 탭 추가</button>
 						<button type="button" class="btn btn btn-base btn-sm"
-								th:if="${contentsLoc == 'SMM003' or contentsLoc == 'SBM007' or contentsLoc == 'SBM008' or contentsLoc == 'SBM009' or contentsLoc == 'SBM017' or contentsLoc == 'SBM018' or contentsLoc == 'SBM019' or contentsLoc == 'SOM003' or contentsLoc == 'SCM002' or contentsLoc == 'SCM003'}"
+								th:if="${contentsLoc == 'SMM003' or contentsLoc == 'SBM007' or contentsLoc == 'SBM008' or contentsLoc == 'SBM009' or contentsLoc == 'SBM017' or contentsLoc == 'SBM018' or contentsLoc == 'SBM019' or contentsLoc == 'SOM002' or contentsLoc == 'SOM003' or contentsLoc == 'SCM002' or contentsLoc == 'SCM003'}"
 								onclick="fnAddBrand(this);">컨텐츠 추가</button>
 						<button type="button" class="btn btn btn-dark btn-sm" id="btnMultiPopSave">임시저장</button>
 						<input type="hidden" name="uploadDefaultUrlMultiPop" id="uploadDefaultUrlMultiPop" th:value="${@environment.getProperty('upload.image.view') + '/contents/'}"/>
@@ -102,9 +102,10 @@ console.log('brandGroupNo:'+brandGroupNo);
 			html += '</td>';
 			html += '<td class="aL">';
 			if(contentsLoc=='SMM007') {
-				html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddPlanRow(\'#\',this);">기획전/배너추가</button>';
-				html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddTitlePopRow(this);">타이틀추가</button>';
-				html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddSubTextPopRow(this);">서브텍스트추가</button>';
+				html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddPlanRow2(\'#\',this, '+i+');">기획전/배너추가</button>';
+				// html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddPlanRow(\'#\',this);">기획전/배너추가</button>';
+				// html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddTitlePopRow(this);">타이틀추가</button>';
+				// html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddSubTextPopRow(this);">서브텍스트추가</button>';
 			}
 			html += '<button type="button" class="btn btn-base btn-lg" id="addGoodsBtn'+i+'" onclick="fnAddGoodsRow(this);">상품추가</button>';
 			html += '<button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteBrandRow(this);">삭제</button></td>';
@@ -124,7 +125,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 +137,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'){
@@ -163,14 +164,49 @@ console.log('brandGroupNo:'+brandGroupNo);
 					var strVar = eval("result[" + i + "].strVar" + j);
 					var strTitle = eval("result["+i+"].strTitle" + j);
 					var subText = eval("result["+i+"].subText" + j);
+
 					if (!gagajf.isNull(strVar) || !gagajf.isNull(imgPath)) {
-						html += fnAddPlanRow(strVar, imgPath);
+						// html += fnAddPlanRow(strVar, imgPath);
 					}
 					if(strTitle!=null && strTitle!='null' && strTitle!='' ){
-						html += fnAddTitlePopRow(strTitle);
+						// html += fnAddTitlePopRow(strTitle);
 					}
 					if(subText!=null && subText!='null' && subText!='' ){
-						html += fnAddSubTextPopRow(subText);
+						// html += fnAddSubTextPopRow(subText);
+					}
+					if(!gagajf.isNull(strVar) || !gagajf.isNull(imgPath) || (strTitle!=null && strTitle!='null' && strTitle!='') || (subText!=null && subText!='null' && subText!='')){
+						var src = '';
+						var img_Path = '';
+						if(!gagajf.isNull(imgPath)){
+							src = $("#uploadDefaultPlanUrlPop").val().replace('/contents/planning/', '')+imgPath;
+							img_Path = imgPath;
+						}
+						html += '<tr name="planRow" class="planTr'+i+'">';
+
+						html += '<th rowspan="3">링크/이미지 <br> 타이틀 <br> 서브텍스트</th>';
+						html += '<td><input type="text" name="planLink" id="planLink'+i+'" value="'+strVar+'" placeholder="링크"></td>';
+						html += '<td><div class="uFile w300">';
+						html += '<input id="planFile_'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnPlanFileUpload(this, '+i+')"/>';
+						html += '<label for="planFile_'+i+'" class="uFileLabel">파일선택</label>';
+						html += '<input type="hidden" name="planImgPath" value="'+img_Path+'"/>';
+						html += '<input type="hidden" name="planNewImgFile" value="" />';
+						html += '</div>';
+						html += '<div id="planImgViewPop_'+i+'" class=';
+						if(src!=''){
+							html += '"on">';
+						}else{
+							html += '"off">';
+						}
+						html += '<img id="planPreViewUrlPop_'+i+'" src="'+src+'" style="height:100px; max-width:500px;"  onclick="cfnOpenImagePreViewPopup(\'planPreimgViewPop\',$(this).attr(\'src\'));"/>';
+						html += '</div></td>';
+						html += '<td class="aL"><button type="button" class="btn icn" onclick="fnBrandPickDeleteTrRow(this,'+i+', '+i+');"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
+						html += '</tr>';
+						html += '<tr class="planTr'+i+'">';
+						html += '<td><input name="title" type="text" maxlength="200" placeholder="타이틀" value="'+strTitle+'"/></td>';
+						html += '</tr>';
+						html += '<tr class="planTr'+i+'">';
+						html += '<td><input type="text" name="subText" maxlength="200" placeholder="서브텍스트" value="'+subText+'"/></td>';
+						html += '</tr>';
 					}
 				}
 			}
@@ -178,6 +214,40 @@ console.log('brandGroupNo:'+brandGroupNo);
 				// console.log(fnAddGoodsRow(result[i].contentsGoodsList));
 				html += fnAddGoodsRow(result[i].contentsGoodsList , i);
 			}
+
+			// var src = '';
+			// var imgPath = '';
+			// if(!gagajf.isNull(result[i].imgPath1)){
+			// 	src = $("#uploadDefaultPlanUrlPop").val().replace('/contents/planning/', '')+result[i].imgPath1;
+			// 	imgPath = result[i].imgPath1;
+			// }
+			// html += '<tr name="planRow" class="planTr'+i+'">';
+			//
+			// html += '<th rowspan="3">링크/이미지 <br> 타이틀 <br> 서브텍스트</th>';
+			// html += '<td><input type="text" name="planLink" id="planLink'+i+'" value="'+result[i].strVar1+'" placeholder="링크"></td>';
+			// html += '<td><div class="uFile w300">';
+			// html += '<input id="planFile_'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnPlanFileUpload(this, '+i+')"/>';
+			// html += '<label for="planFile_'+i+'" class="uFileLabel">파일선택</label>';
+			// html += '<input type="hidden" name="planImgPath" value="'+imgPath+'"/>';
+			// html += '<input type="hidden" name="planNewImgFile" value="" />';
+			// html += '</div>';
+			// html += '<div id="planImgViewPop_'+i+'" class=';
+			// if(src!=''){
+			// 	html += '"on">';
+			// }else{
+			// 	html += '"off">';
+			// }
+			// html += '<img id="planPreViewUrlPop_'+i+'" src="'+src+'" style="height:100px; max-width:500px;"  onclick="cfnOpenImagePreViewPopup(\'planPreimgViewPop\',$(this).attr(\'src\'));"/>';
+			// html += '</div></td>';
+			// html += '<td class="aL"><button type="button" class="btn icn" onclick="fnBrandPickDeleteTrRow(this,'+i+', '+i+');"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
+			// html += '</tr>';
+			// html += '<tr class="planTr'+i+'">';
+			// html += '<td><input name="title" type="text" maxlength="200" placeholder="타이틀" value="'+result[i].strTitle1+'"/></td>';
+			// html += '</tr>';
+			// html += '<tr class="planTr'+i+'">';
+			// html += '<td><input type="text" name="subText" maxlength="200" placeholder="서브텍스트" value="'+result[i].subText1+'"/></td>';
+			// html += '</tr>';
+
 			html += '</tbody></table>';
 		}
 		$("#multiPopSortable").append(html);
@@ -198,6 +268,7 @@ console.log('brandGroupNo:'+brandGroupNo);
 			defaultDate: $('.schDate').val()
 		});
 		tableLen = $(".tableTest").length;
+		planImgIndex2 = $(".tableTest").length;
 	}
 
 	/**
@@ -273,9 +344,10 @@ console.log('brandGroupNo:'+brandGroupNo);
 		html += '</td>';
 		html += '<td class="aL">';
 		if(contentsLoc=='SMM007') {
-			html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddPlanRow(\'#\',this);">기획전/배너추가</button>';
-			html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddTitlePopRow(this);">타이틀추가</button>';
-			html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddSubTextPopRow(this);">서브텍스트추가</button>';
+			html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddPlanRow2(\'#\',this, '+brandIdx+');">기획전/배너추가</button>';
+			// html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddPlanRow(\'#\',this);">기획전/배너추가</button>';
+			// html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddTitlePopRow(this);">타이틀추가</button>';
+			// html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddSubTextPopRow(this);">서브텍스트추가</button>';
 		}
 		html += '<button type="button" class="btn btn-base btn-lg" id="addGoodsBtn'+brandIdx+'" onclick="fnAddGoodsRow(this);">상품추가</button>';
 		html += '<button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteBrandRow(this);">삭제</button></td>';
@@ -313,14 +385,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>';
@@ -351,7 +423,7 @@ console.log('brandGroupNo:'+brandGroupNo);
 			defaultDate: $('.schDate').val()
 		});
 		if(contentsLoc == 'SBM007' || contentsLoc == 'SBM008' || contentsLoc == 'SBM009' || contentsLoc == 'SMM003' || contentsLoc == 'SMM007' || contentsLoc == 'SMM009'
-				|| contentsLoc == 'SCM002' || contentsLoc == 'SCM003' || contentsLoc == 'SOM003'){
+				|| contentsLoc == 'SCM002' || contentsLoc == 'SCM003' || contentsLoc == 'SOM002' || contentsLoc == 'SOM003'){
 			$("#addGoodsBtn"+brandIdx).click();
 		}
 
@@ -412,6 +484,60 @@ console.log('brandGroupNo:'+brandGroupNo);
 		$("#"+tblNm).find("input[name=brandGroupNo]").val(result[0].brandGroupNo);
 	}
 
+	/**
+	 * 기획전/배너 추가
+	 */
+	var planImgIndex2 = 0;
+	var fnAddPlanRow2 = function (strvar, param , tableIdx){
+		var src = '';
+		var imgPath = '';
+		if(typeof param!='object'){
+			src = $("#uploadDefaultPlanUrlPop").val().replace('/contents/planning/', '')+param;
+			imgPath = param;
+		}
+		var html = '<tr name="planRow" class="planTr'+planImgIndex2+'">';
+
+		html += '<th rowspan="3">링크/이미지 <br> 타이틀 <br> 서브텍스트</th>';
+		html += '<td><input type="text" name="planLink" id="planLink'+planImgIndex2+'" value="'+strvar+'" placeholder="링크"></td>';
+		html += '<td><div class="uFile w300">';
+		html += '<input id="planFile_'+planImgIndex2+'" name="file" type="file" class="uFileInput w300" onchange="fnPlanFileUpload(this, '+planImgIndex2+')"/>';
+		html += '<label for="planFile_'+planImgIndex2+'" class="uFileLabel">파일선택</label>';
+		html += '<input type="hidden" name="planImgPath" value="'+imgPath+'"/>';
+		html += '<input type="hidden" name="planNewImgFile" value="" />';
+		html += '</div>';
+		html += '<div id="planImgViewPop_'+planImgIndex2+'" class=';
+		if(src!=''){
+			html += '"on">';
+		}else{
+			html += '"off">';
+		}
+		html += '<img id="planPreViewUrlPop_'+planImgIndex2+'" src="'+src+'" style="height:100px; max-width:500px;"  onclick="cfnOpenImagePreViewPopup(\'planPreimgViewPop\',$(this).attr(\'src\'));"/>';
+		html += '</div></td>';
+		html += '<td class="aL"><button type="button" class="btn icn" onclick="fnBrandPickDeleteTrRow(this,'+planImgIndex2+', '+tableIdx+');"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
+		html += '</tr>';
+
+		html += '<tr class="planTr'+planImgIndex2+'">';
+		html += '<td><input name="title" type="text" maxlength="200" placeholder="타이틀" value=""/></td>';
+		html += '</tr>';
+
+		html += '<tr class="planTr'+planImgIndex2+'">';
+		html += '<td><input type="text" name="subText" maxlength="200" placeholder="서브텍스트" value=""/></td>';
+
+		html += '</tr>';
+
+		if(typeof param == 'object'){
+			if($(param).closest("table").find("tbody").find("tr[name=planRow]").length>4){
+				mcxDialog.alert("기획전/배너는 5개까지 등록 가능합니다");
+				return;
+			}
+			planImgIndex2++;
+			$(param).closest("table").find("tbody").append(html);
+		}else{
+			planImgIndex2++;
+			return html;
+		}
+	}
+
 	/**
 	 * 기획전/배너 추가
 	 */
@@ -533,6 +659,12 @@ console.log('brandGroupNo:'+brandGroupNo);
 		$(obj).closest("tr").remove();
 	}
 
+	var fnBrandPickDeleteTrRow = function (obj, planIdx, tableIdx){
+		$("#tabTable"+tableIdx).find('.planTr'+planIdx).each(function (i){
+			$(this).remove();
+		});
+	}
+
 	// 컨텐츠 추가 날짜 설정
 	var fnCreateTimeOption = function(val, sel) {
 		var html = '';
@@ -631,7 +763,7 @@ console.log('brandGroupNo:'+brandGroupNo);
 		}
 
 		if(contentsLoc == 'SBM007' || contentsLoc == 'SBM008' || contentsLoc == 'SBM009' || contentsLoc == 'SMM003' || contentsLoc == 'SMM007' || contentsLoc == 'SMM009'
-				|| contentsLoc == 'SCM002' || contentsLoc == 'SCM003' || contentsLoc == 'SOM003'){
+				|| contentsLoc == 'SCM002' || contentsLoc == 'SCM003' || contentsLoc == 'SOM002' || contentsLoc == 'SOM003'){
 			if(!goodsArrValidation()){
 				return false;
 			}
@@ -731,13 +863,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();
 			}

+ 62 - 49
src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -1099,7 +1099,7 @@
 			cfnCreateCombo('/renderer/delvFee/list/' + result.supplyCompCd, $('#goodsDetailForm select[name=delvFeeCd]'), "[선택]", result.delvFeeCd);
 			$('#goodsDetailForm input[name=delvFeeCdOrg]').val(result.delvFeeCd);
 			cfnCreateCombo('/renderer/delvloc/list/' + result.supplyCompCd, $('#goodsDetailForm select[name=delvLocCd]'), "[선택]", result.delvLocCd);
-			$('#goodsDetailForm input[name=delvLocdOrg]').val(result.delvLocCd);
+			$('#goodsDetailForm input[name=delvLocCdOrg]').val(result.delvLocCd);
 			
 		//	$('#goodsDetailForm input[name=certNum]').val(result.certNum);
 		//	$('#goodsDetailForm input[name=certNumOrg]').val(result.certNum);
@@ -1325,9 +1325,54 @@
 		$('#goodsDetailForm').find('#certOrganNameTxt').html(result.certOrganName);
 		$('#goodsDetailForm').find('#certDivTxt').html(result.certDiv);
 		$('#goodsDetailForm').find('#certDtTxt').html(!gagajf.isNull(result.certDt) ? result.certDt.toDate("YYYYMMDD").format("YYYY-MM-DD") : '');
-
+		
+		if (!gagajf.isNull($("#goodsDetailForm select[name=selCertTargetGb]").val()) ){
+			if ("G081_1" != $("#goodsDetailForm select[name=certType]").val() &&  "G081_2" != $("#goodsDetailForm select[name=certType]").val()){
+				$("#goodsDetailForm input[name=certNum]").attr('readonly', true);
+			}
+		}
 	}
 	
+	// 인증대상 변경시
+	$("#goodsDetailForm input[name=selCertTargetGb]").bind('click', function () {
+		var certTargetGb = $(this).val();
+		if (certTargetGb == "G083_1"){ 
+			$("#goodsDetailForm select[name=certFormGb]").attr('readonly', false);
+			$("#goodsDetailForm select[name=certType]").attr('readonly', false);
+			$("#goodsDetailForm input[name=certNum]").attr('readonly', false);
+		}else{
+			$("#goodsDetailForm select[name=certFormGb]").val('');
+			$("#goodsDetailForm select[name=certType]").val('');
+			$("#goodsDetailForm input[name=certNum]").val('');
+			$("#goodsDetailForm select[name=certFormGb]").attr('readonly', true);
+			$("#goodsDetailForm select[name=certType]").attr('readonly', true);
+			$("#goodsDetailForm input[name=certNum]").attr('readonly', true);
+			
+			$("#goodsDetailForm").find("#certStateTxt").html('');
+			$("#goodsDetailForm").find("#certOrganNameTxt").html('');
+			$("#goodsDetailForm").find("#certDtTxt").html('');
+			$("#goodsDetailForm").find("#certDivTxt").html('');
+			
+		}
+	});
+	
+	// 인증타입 변경시
+	$("#goodsDetailForm select[name=certType]").bind('click change', function () {
+		var certType = $(this).val();
+		if (certType == "G081_1" || certType == "G081_2"){ 
+			$("#goodsDetailForm input[name=certNum]").attr('readonly', false);
+		}else{
+			$("#goodsDetailForm input[name=certNum]").val('');
+			$("#goodsDetailForm input[name=certNum]").attr('readonly', true);
+			
+			$("#goodsDetailForm").find("#certStateTxt").html('');
+			$("#goodsDetailForm").find("#certOrganNameTxt").html('');
+			$("#goodsDetailForm").find("#certDtTxt").html('');
+			$("#goodsDetailForm").find("#certDivTxt").html('');
+			
+		}
+	});
+	
 	//상품명 길이표시
 	$("#goodsDetailForm input[name=goodsNm]").bind('focus focusout input keyup keydown paste change', function () {
 		fnDataLengthCheck('goodsNm',200);
@@ -2044,7 +2089,7 @@
 		if (!fnGoodsSafetyCertNumCheck()) return false;
 		
 		//인증번호 있는데 인증작업 했는지 여부 확인
-		if (!gagajf.isNull($("#goodsDetailForm input[name=certNum]").val())){
+	/* 	if (!gagajf.isNull($("#goodsDetailForm input[name=certNum]").val())){
 			
 			if ("G084_4" == $("#goodsDetailForm select[name=certFormGb]").val() || 
 				"G084_5" == $("#goodsDetailForm select[name=certFormGb]").val() || 
@@ -2056,12 +2101,12 @@
 					return false;
 				}
 			}
-		}
+		} */
 		
-		if (!gagajf.isNull($("#goodsDetailForm input[name=certNum]").val()) && ($("#goodsDetailForm input[name=certNum]").val() != $("#goodsDetailForm input[name=certNumOrg]").val())){
+		/* if (!gagajf.isNull($("#goodsDetailForm input[name=certNum]").val()) && ($("#goodsDetailForm input[name=certNum]").val() != $("#goodsDetailForm input[name=certNumOrg]").val())){
 			mcxDialog.alert("안전인증작업을 하거나 인증번호를 확인해주세요.");
 			return false;
-		}
+		} */
 		
 		var basicColor = $("#goodsDetailForm input[name=basicColor]:checked").val();
 		var dcRate = 0;
@@ -2526,6 +2571,11 @@
 	// 안전인증
 	$("#btnGoodsSafetyCertNum").on("click", function(){
 		
+		if (gagajf.isNull($("#goodsDetailForm input[name=selCertTargetGb]:checked").val())){
+			mcxDialog.alert("안전인증대상를 선택해 주세요.");
+			return false;
+		}
+		
 		if (!fnGoodsSafetyCertNumCheck()) return false;
 
 		mcxDialog.confirm('안전인증정보(API)를 변경 하시겠습니까?', {
@@ -2546,52 +2596,15 @@
 	
 	var fnGoodsSafetyCertNumCheck = function(){
 		
-		// 유아용품 확인  
-		if ("G004_23" == $("#goodsDetailForm input[name=niClsfCd]").val()){
-			if (gagajf.isNull($("#goodsDetailForm input[name=selCertTargetGb]:checked").val())){
-				mcxDialog.alert("안전인증대상을 선택해 주세요.");
-				return false;	
-			}
-		}else{
-			if ((!gagajf.isNull($("#goodsDetailForm input[name=selCertTargetGb]:checked").val()) && "G083_1" != $("#goodsDetailForm input[name=selCertTargetGb]:checked").val())){
-				
-			}else{
-				if ((!gagajf.isNull($("#goodsDetailForm input[name=selCertTargetGb]:checked").val()) && "G083_1" == $("#goodsDetailForm input[name=selCertTargetGb]:checked").val())||
-					!gagajf.isNull($("#goodsDetailForm select[name=certFormGb]").val()) ||
-					!gagajf.isNull($("#goodsDetailForm select[name=certType]").val()) ||
-					!gagajf.isNull($("#goodsDetailForm input[name=certNum]").val())){
-					mcxDialog.alert("인즌대상이 아닌 상품은 인증대상아님을 선택해주세요");
-					return false;	
-				}else{
-					return true;
-				}	
-			}
-			
-		}
-			
-		if(gagajf.isNull($("#goodsDetailForm input[name=selCertTargetGb]:checked").val())){
-			
-			if (!gagajf.isNull($("#goodsDetailForm select[name=certFormGb]").val()) ||
-				!gagajf.isNull($("#goodsDetailForm select[name=certType]").val()) ||
-				!gagajf.isNull($("#goodsDetailForm input[name=certNum]").val())){
-				mcxDialog.alert("안전인증대상을 선택해 주세요.");
-				return false;	
-			}
-			
+		if (gagajf.isNull($("#goodsDetailForm input[name=selCertTargetGb]:checked").val())){
+			return true;	
 		}
 		
-		// 인증대상이 아니면 스킵
-		if ("G083_1" != $("#goodsDetailForm input[name=selCertTargetGb]:checked").val()){
+		$("#goodsDetailForm input[name=certTargetGb]").val($("#goodsDetailForm input[name=selCertTargetGb]:checked").val());
+		
+		if ((!gagajf.isNull($("#goodsDetailForm input[name=selCertTargetGb]:checked").val()) && "G083_1" != $("#goodsDetailForm input[name=selCertTargetGb]:checked").val())){
 			
-			if (!gagajf.isNull($("#goodsDetailForm select[name=certFormGb]").val()) ||
-				!gagajf.isNull($("#goodsDetailForm select[name=certType]").val()) ||
-				!gagajf.isNull($("#goodsDetailForm input[name=certNum]").val())){
-				mcxDialog.alert("인즌대상이 아닐경우 정보를 입력하지 마세요.");
-				return false;	
-			}else{
-				$("#goodsDetailForm input[name=certTargetGb]").val($("#goodsDetailForm input[name=selCertTargetGb]:checked").val());
-				return true;	
-			}
+			return true;	
 		}
 		
 		if(gagajf.isNull($("#goodsDetailForm select[name=certFormGb]").val())){

+ 51 - 49
src/main/webapp/WEB-INF/views/goods/GoodsSalfRegisterForm.html

@@ -515,6 +515,46 @@
 <script th:inline="javascript">
 /*<![CDATA[*/
 	
+	// 인증대상 변경시
+	$("#goodsDetailForm input[name=selCertTargetGb]").bind('click', function () {
+		var certTargetGb = $(this).val();
+		if (certTargetGb == "G083_1"){ 
+			$("#goodsDetailForm select[name=certFormGb]").attr('readonly', false);
+			$("#goodsDetailForm select[name=certType]").attr('readonly', false);
+			$("#goodsDetailForm input[name=certNum]").attr('readonly', false);
+		}else{
+			$("#goodsDetailForm select[name=certFormGb]").val('');
+			$("#goodsDetailForm select[name=certType]").val('');
+			$("#goodsDetailForm input[name=certNum]").val('');
+			$("#goodsDetailForm select[name=certFormGb]").attr('readonly', true);
+			$("#goodsDetailForm select[name=certType]").attr('readonly', true);
+			$("#goodsDetailForm input[name=certNum]").attr('readonly', true);
+			
+			$("#goodsDetailForm").find("#certStateTxt").html('');
+			$("#goodsDetailForm").find("#certOrganNameTxt").html('');
+			$("#goodsDetailForm").find("#certDtTxt").html('');
+			$("#goodsDetailForm").find("#certDivTxt").html('');
+			
+		}
+	});
+	
+	// 인증타입 변경시
+	$("#goodsDetailForm select[name=certType]").bind('click change', function () {
+		var certType = $(this).val();
+		if (certType == "G081_1" || certType == "G081_2"){ 
+			$("#goodsDetailForm input[name=certNum]").attr('readonly', false);
+		}else{
+			$("#goodsDetailForm input[name=certNum]").val('');
+			$("#goodsDetailForm input[name=certNum]").attr('readonly', true);
+			
+			$("#goodsDetailForm").find("#certStateTxt").html('');
+			$("#goodsDetailForm").find("#certOrganNameTxt").html('');
+			$("#goodsDetailForm").find("#certDtTxt").html('');
+			$("#goodsDetailForm").find("#certDivTxt").html('');
+			
+		}
+	});
+	
 	//상품명 길이표시
 	$("#goodsDetailForm input[name=goodsNm]").bind('focus focusout input keyup keydown paste change', function () {
 		fnDataLengthCheck('goodsNm',200);
@@ -734,52 +774,14 @@
 	//안전인증관련 체크
 	var fnGoodsSafetyCertNumCheck = function(){
 		
-		$("#goodsDetailForm input[name=certTargetGb]").val($("#goodsDetailForm input[name=selCertTargetGb]:checked").val());
-		
-		// 유아용품 확인  
-		if ("G004_23" == $("#goodsDetailForm input[name=safeNiClsfCd]").val()){
-			if (gagajf.isNull($("#goodsDetailForm input[name=selCertTargetGb]:checked").val())){
-				mcxDialog.alert("안전인증대상을 선택해 주세요.");
-				return false;	
-			}
-		}else{
-			if ((!gagajf.isNull($("#goodsDetailForm input[name=selCertTargetGb]:checked").val()) && "G083_1" != $("#goodsDetailForm input[name=selCertTargetGb]:checked").val())){
-				
-			}else{
-				if ((!gagajf.isNull($("#goodsDetailForm input[name=selCertTargetGb]:checked").val()) && "G083_1" == $("#goodsDetailForm input[name=selCertTargetGb]:checked").val())||
-					!gagajf.isNull($("#goodsDetailForm select[name=certFormGb]").val()) ||
-					!gagajf.isNull($("#goodsDetailForm select[name=certType]").val()) ||
-					!gagajf.isNull($("#goodsDetailForm input[name=certNum]").val())){
-					mcxDialog.alert("인즌대상이 아닌 상품은 인증대상아님을 선택해주세요");
-					return false;	
-				}else{
-					return true;
-				}	
-			}
-		}
-			
-		if(gagajf.isNull($("#goodsDetailForm input[name=selCertTargetGb]:checked").val())){
-			
-			if (!gagajf.isNull($("#goodsDetailForm select[name=certFormGb]").val()) ||
-				!gagajf.isNull($("#goodsDetailForm select[name=certType]").val()) ||
-				!gagajf.isNull($("#goodsDetailForm input[name=certNum]").val())){
-				mcxDialog.alert("안전인증대상을 선택해 주세요.");
-				return false;	
-			}
-			
+		if (gagajf.isNull($("#goodsDetailForm input[name=selCertTargetGb]:checked").val())){
+			return true;	
 		}
 		
-		// 인증대상이 아니면 스킵
-		if ("G083_1" != $("#goodsDetailForm input[name=selCertTargetGb]:checked").val()){
-			
-			if (!gagajf.isNull($("#goodsDetailForm select[name=certFormGb]").val()) ||
-				!gagajf.isNull($("#goodsDetailForm select[name=certType]").val()) ||
-				!gagajf.isNull($("#goodsDetailForm input[name=certNum]").val())){
-				mcxDialog.alert("인즌대상이 아닐경우 정보를 입력하지 마세요.");
-				return false;	
-			}else{
-				return true;	
-			}
+		$("#goodsDetailForm input[name=certTargetGb]").val($("#goodsDetailForm input[name=selCertTargetGb]:checked").val());
+
+		if ((!gagajf.isNull($("#goodsDetailForm input[name=selCertTargetGb]:checked").val()) && "G083_1" != $("#goodsDetailForm input[name=selCertTargetGb]:checked").val())){
+			return true;	
 		}
 		
 		if(gagajf.isNull($("#goodsDetailForm select[name=certFormGb]").val())){
@@ -817,7 +819,7 @@
 		
 		return true;
 	}
-
+	
 	//상품저장 버튼 클릭 시
 	$('#btnGoodsDetailSave').click(function() {
 
@@ -1017,15 +1019,15 @@
 		$('#goodsDetailForm  input[name=sellEdYMD]').val("2030-12-31");
 		
 		// Create a summernote
-//		var snOptions1 = gagaSn.getToolbarOptions('media');
-//		var snOptions2 = gagaSn.getToolbarOptions('media');
+		var snOptions1 = gagaSn.getToolbarOptions('media');
+		var snOptions2 = gagaSn.getToolbarOptions('media');
 		var snOptions3 = gagaSn.getToolbarOptions('media');
 		var snOptions4 = gagaSn.getToolbarOptions('media');
 		var snOptions5 = gagaSn.getToolbarOptions('media');
 		var snOptions6 = gagaSn.getToolbarOptions('media');
 		var snOptions7 = gagaSn.getToolbarOptions('media');
-//		gagaSn.createSummernote(snOptions1, '#goodsContentsDesc');
-//		gagaSn.createSummernote(snOptions2, '#goodsCharacterDesc');
+		gagaSn.createSummernote(snOptions1, '#goodsContentsDesc');
+		gagaSn.createSummernote(snOptions2, '#goodsCharacterDesc');
 		gagaSn.createSummernote(snOptions3, '#goodsDesc');
 		gagaSn.createSummernote(snOptions4, '#goodsPcTopDesc');
 		gagaSn.createSummernote(snOptions5, '#goodsMobileTopDesc');

+ 9 - 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>
 				
@@ -202,6 +202,7 @@ var chgStat					= [[${chgStat}]];								// 변경상태
 var orderInfoList 			= [[${orderInfoList}]];							// 주문기본정보
 var payMeans 				= orderInfoList[0].payMeans;					// 결제수단
 var orderDelvAddrInfo		= [[${orderDelvAddrInfo}]];						// 회수지정보
+var recallExceptionInfo		= [[${recallExceptionInfo}]];					// 회수 예외 정보
 var addDelvFee				= 0;											// 추가배송비
 var addDelvFeeList			= [];											// 추가배송비정보
 var exchangeRequestList		= [];											// 교환요청목록
@@ -622,6 +623,12 @@ var fnChangeChgReason = function(reasonCd){
 			$('#wdBfSendYn').attr('disabled', false);
 		}
 	}
+	
+	// 2021.05.25 반품접수, 반품대기 상태에서만 철회가능
+	// 2021.07.13 회수예외정보가 있고 회수요청, 상품검수중 상태에서 철회 가능 처리
+	if (chgStat != "G685_20" && chgStat != "G685_21" && (recallExceptionInfo == null || (chgStat != "G685_30" && chgStat != "G685_31"))) {
+		$("#fnExchangeCancelRequestSubmit").css("display", "none");
+	}
 
 	$('#exchangeRequestFrm input[name=chgReason]').val(arrReasonCd[0]);
 	$('#exchangeRequestFrm input[name=chgReasonDesc]').val(arrReasonCd[1]);
@@ -808,6 +815,7 @@ var fnExchange = function () {
 		,"delvMemo"			: $("#exchangeRequestFrm textarea[name=delvMemo]").val()
 		,"ordChgSq"			: ordChgSq
 		,"wdBfSendYn"		: wdBfSendYn
+		,"ordChgGb"			: ordChgGb
 	}
 
 	// 주문번호, 교환사유, 교환메모, (취소, 반품, 교환 신청 정보 목록)

+ 9 - 40
src/main/webapp/WEB-INF/views/order/OrderDetailForm.html

@@ -129,7 +129,14 @@
 					<h4>환불정보</h4>
 					<div id="gridOrderRefundInfo" style="width:100%; height: 100px;" class="ag-theme-balham"></div>
 				</div>
-
+				
+				<div>
+					<h4>관리자메모</h4>
+					<button type="button" id="btnCreateOrderMemo" class="btn btnRight btn-base btn-sm" style="margin-left:10px;"> +</button>
+					<div id="gridOrderMemoInfo" style="width:100%; height: 100px;" class="ag-theme-balham"></div>
+				</div>
+				
+				<!-- 
 				<table style="width:100%;">
 					<colgroup>
 						<col style="width:65%;"/>
@@ -149,6 +156,7 @@
 						</tr>
 					</tbody>
 				</table>
+				 -->
 				
 			</form>
 		</div>
@@ -907,42 +915,6 @@ var columnDefsRefundInfo = [
 ];
 var gridOptionsRefundInfo = gagaAgGrid.getGridOptions(columnDefsRefundInfo);
 
-// 8.상담내역
-var columnDefsOrderCounselInfo = [
-	{headerName: "상담구분"		, field: "counselClsfNm"	, width: 120	, cellClass: 'text-center'},
-	{headerName: "상품코드"		, field: "goodsCd"			, width: 120	, cellClass: 'text-center'},
-	{
-		headerName		: "질문제목"
-		, field			: "questTitle"
-		, width			: 250
-		, cellClass		: 'text-center'
-		, cellRenderer	: function (params) {
-			return '<a href="javascript:void(0);" onclick="cfnOpenOneToOneAskDetailPopup(\'' + params.data.counselSq + '\')">' + params.value + '</a>';
-		}
-	},
-	{
-		headerName		: "등록일"			
-		, field			: "questDt"	
-		, width			: 120	
-		, cellClass		: 'text-center'
-		, cellRenderer	: function(params) {
-			return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmm").format("YYYY-MM-DD HH:mm") : '';
-		}
-	},
-	{
-		headerName		: "답변일"			
-		, field			: "ansDt"	
-		, width			: 120	
-		, cellClass		: 'text-center'
-		, cellRenderer	: function(params) {
-			return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmm").format("YYYY-MM-DD HH:mm") : '';
-		}
-	},
-	{headerName: "답변자"			, field: "ansNm"	, width: 80		, cellClass: 'text-center'},
-	{headerName: "삭제여부"		, field: "delYn"	, width: 80		, cellClass: 'text-center'}
-];
-var gridOptionsOrderCounselInfo = gagaAgGrid.getGridOptions(columnDefsOrderCounselInfo);
-
 // 9.주문메모
 var columnDefsOrderMemoInfo = [
 	{headerName: "등록일시"		, field: "regDt"	, width: 135	, cellClass: 'text-center'},
@@ -1024,7 +996,6 @@ $(document).ready(function () {
 	gagaAgGrid.createGrid('gridDeliveryFeeInfo'				, gridOptionsDeliveryFeeInfo);		// 배송비정보
 	gagaAgGrid.createGrid('gridOrderChangeInfo'				, gridOptionsOrderChangeInfo);		// 취소/반품/교환 요청 정보
 	gagaAgGrid.createGrid('gridOrderRefundInfo'				, gridOptionsRefundInfo);			// 환불정보
-	gagaAgGrid.createGrid('gridOrderCounselInfo'			, gridOptionsOrderCounselInfo);		// 상담내역
 	gagaAgGrid.createGrid('gridOrderMemoInfo'				, gridOptionsOrderMemoInfo);		// 관리자메모
 	
 	// 2. 그리드 데이터 바인딩
@@ -1035,7 +1006,6 @@ $(document).ready(function () {
 	gridOptionsDeliveryFeeInfo.api.setRowData(orderDeliveryFeeInfo);				// 배송비정보
 	gridOptionsOrderChangeInfo.api.setRowData(orderChangeInfo);						// 취소/반품/교환요청 정보
 	gridOptionsRefundInfo.api.setRowData(orderRefundInfo);							// 환불정보
-	gridOptionsOrderCounselInfo.api.setRowData(orderCounselInfo);					// 상담내역
 	gridOptionsOrderMemoInfo.api.setRowData(orderAdminMemoInfo);					// 관리자메모
 	
 	// 2.1 TOTAL ROWS 없애기
@@ -1046,7 +1016,6 @@ $(document).ready(function () {
 	gagaAgGrid.hideStatusBar('gridDeliveryFeeInfo');
 	gagaAgGrid.hideStatusBar('gridOrderChangeInfo');
 	gagaAgGrid.hideStatusBar('gridOrderRefundInfo');
-	gagaAgGrid.hideStatusBar('gridOrderCounselInfo');
 	gagaAgGrid.hideStatusBar('gridOrderMemoInfo');
 	
 	// 3. 그리드 높이 설정

+ 92 - 51
src/main/webapp/WEB-INF/views/order/OrderListForm.html

@@ -78,15 +78,19 @@
 										th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
 							</select>
 						</td>
-						<th>업체/브랜드<em class="required" title="필수"></em></th>
-						<td colspan="3">
-							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnY" value="Y"  checked/>자사</label>
-							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnN" value="N"/>입점</label>
-							<select name="supplyCompCd" id="supplyCompCd">
-								<option value="" th:if="${sessionInfo.roleCd} != 'G001_B000'">[전체]</option>
-								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-							<span id="multiBrand"></span>
+						<th>업체</th>
+						<td>
+							<input type="text" class="w100" name="supplyCompSearchTxt" id="supplyCompSearchTxt" maxlength="20" />
+							<button type="button" class="btn icn" id="btnSearchSupplyComp"><i class="fa fa-search"></i></button>
+							<span id="supplyCompText"></span>
+							<input type="hidden" name="supplyCompList"/>
+						</td>
+						<th>브랜드</th>
+						<td>
+							<input type="text" class="w100" name="searchTxt" id="searchTxt" maxlength="20" />
+							<button type="button" class="btn icn" id="btnSearchBrand"><i class="fa fa-search"></i></button>
+							<span id="brandText"></span>
+							<input type="hidden" name="brandList"/>
 						</td>
 					</tr>
 					<tr>
@@ -151,7 +155,7 @@
 							</select>
 						</td>
 						<th>변경요청처리상태</th>
-						<td colspan="3">
+						<td>
 							<select name="chgStat">
 								<option value="">[전체]</option>
 								<option value="9999">[품절취소]</option>
@@ -159,6 +163,10 @@
 										th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
 							</select>
 						</td>
+						<th>상품코드</th>
+						<td>
+							<input type="text" name="goodsCd" placeholder="" maxlength="20"/>
+						</td>
 					</tr>
 					<tr>
 						<th>주문자명</th>
@@ -174,12 +182,6 @@
 							<input type="text" name="orderPhnno" placeholder="" maxlength="20"/>
 						</td>
 					</tr>
-					<tr>
-						<th>상품코드</th>
-						<td colspan="5">
-							<input type="text" name="goodsCd" placeholder="" maxlength="20"/>
-						</td>
-					</tr>
 					<tr>
 						<th>수취인명</th>
 						<td>
@@ -225,7 +227,9 @@
 			<ul class="panelBar">
 				<li>
 					<button type="button" class="btn btn-info btn-lg" onclick="fnOrderExcelList();">엑셀다운로드</button>
+					<!-- 
 					<button type="button" class="btn btn-info btn-lg" th:if="${userNo == 8 or userNo == 14 or userNo == 11}" onclick="fnCreateSampleOrder();">주문생성</button>
+					 -->
 				</li>
 				<li class="aR">
 					검색결과 : <strong><span id="rowCntOrderList">0</span> 건</strong>&nbsp;
@@ -292,7 +296,7 @@ var columnDefsOrderList = [
 	},
 	{
 		headerName		: "주문자"
-		, field			: "ordNm"
+		, field			: "maskingOrdNm"
 		, width			: 140
 		, cellClass		: 'text-left'
 		, sortable		: true
@@ -310,9 +314,9 @@ var columnDefsOrderList = [
 			}
 		}
 	},
-	{headerName: "고객고유번호", field: "custNo"		, width: 120, cellClass: 'text-center', hide: true},
-	{headerName: "외부몰"		, field: "extmallNm"	, width: 100, cellClass: 'text-center', sortable: true},
-	{headerName: "휴대폰번호"	, field: "orderPhnno"	, width: 120, cellClass: 'text-center', hide: true},
+	{headerName: "고객고유번호", field: "custNo"				, width: 120, cellClass: 'text-center', hide: true},
+	{headerName: "외부몰"		, field: "extmallNm"			, width: 100, cellClass: 'text-center', sortable: true},
+	{headerName: "휴대폰번호"	, field: "maskingOrderPhnno"	, width: 120, cellClass: 'text-center', hide: true},
 	{
 		headerName		: "사이트"
 		, field			: "siteCd"
@@ -399,7 +403,7 @@ var columnDefsOrderList = [
 		}
 	},
 	{headerName: "외부몰주문번호"	, field: "extmallOrderId"	, width: 120, cellClass: 'textFormat', sortable: true},
-	{headerName: "에이전트주문번호"	, field: "agentOrderId"		, width: 120, cellClass: 'textFormat', sortable: true},
+	{headerName: "샵링커주문번호"	, field: "agentOrderId"		, width: 120, cellClass: 'textFormat', sortable: true},
 	{
 		headerName		: "주문수량"
 		, field			: "ordQty"
@@ -483,36 +487,7 @@ var columnDefsOrderList = [
 		, valueGetter: function (params) { 
 			return gagaAgGrid.toDateTimeFormat(params.data.delvStDt); 
 		}
-	},
-	{headerName: "품절여부"		, field: "soldoutYn"	, width: 90		, cellClass: 'text-center', sortable: true},
-	{headerName: "품절메모"		, field: "soldoutMemo"	, width: 120	, cellClass: 'text-left'},
-	{
-		headerName		: "품절일시"
-		, field			: "soldoutRegDt"
-		, width			: 150
-		, cellClass		: 'text-center'
-		, valueGetter	: function (params) { 
-			return gagaAgGrid.toDateTimeFormat(params.data.soldoutRegDt); 
-		}
-	},
-	{headerName: "품절처리자", field: "soldoutRegId", width: 120, cellClass: 'text-center'},
-	{headerName: "수취인명"		, field: "recipNm"				, width: 100, cellClass: 'text-center'},
-	{headerName: "수취인연락처"		, field: "recipPhnno"			, width: 120, cellClass: 'text-center'},
-	{headerName: "수취인주소"		, field: "recipAddr"			, width: 400, cellClass: 'text-left'},
-	{
-		headerName		: "배송메모"
-		, field			: "delvMemo"
-		, width			: 200
-		, cellClass		: 'left'
-		, valueGetter: function (params) {
-			var delvMemo = '';
-			if (!gagajf.isNull(params.data.delvMemo)) {
-				delvMemo = fnRemoveEmojis(params.data.delvMemo);
-			}
-			return delvMemo;
-		}
-	},
-	{headerName: "출고메모", field: "dstrbtNote", width: 200, cellClass: 'left'}
+	}
 ];
 
 var gridOptionsOrderList = gagaAgGrid.getGridOptions(columnDefsOrderList);
@@ -582,6 +557,10 @@ var fnExcelUpoadCallback = function (data) {
 $('#btnInit').on('click', function() {
 	$('#searchForm')[0].reset();
 	$("#multiBrand").empty();
+	$("#searchForm #supplyCompText").text("");
+	$("#searchForm #supplyCompText").text();
+	$('#searchForm input[name=brandText]').val('');
+	$('#searchForm input[name=supplyCompList]').val('');
 });
 
 // 엑셀 다운로드
@@ -666,6 +645,68 @@ $('#searchForm input[name=orderPhnno], #searchForm input[name=condition]').on('k
 $('#searchForm input[name=orderPhnno]').on('input keyup keydown paste change', function () {
 	cfnCellPhonnHypen(this);
 });
+
+//2021.07.13 업체,브랜드 검색방법 변경
+// 업체 조회 선택시
+$('#btnSearchSupplyComp').on('click', function() {
+	cfnOpenCompanyListPopup('fnSetSupplyCompInfo', 'M');
+});
+
+// 업체 조회 팝업에서 호출
+var fnSetSupplyCompInfo = function(result) {
+	var arrSupplyComp 	= [];
+	var supplyCompText 	= "";
+	var sIndex 			= 0;
+	
+	$('#searchForm').find('#supplyCompText').html('');
+	$('#searchForm input[name=supplyCompSearchTxt]').val('');
+	
+	result.forEach(function(supplyComp){
+		sIndex++;
+		arrSupplyComp.push(supplyComp.supplyCompCd);
+	});
+
+	// 조회값이 하나일 경우 화면에 코드 노출 그외는 갯수 처리 
+	if (sIndex == 1) {
+		$('#searchForm input[name=supplyCompSearchTxt]').val(arrSupplyComp[0]);
+	} else {
+		supplyCompText = sIndex + " 개";
+		$('#searchForm').find('#supplyCompText').html(supplyCompText);
+	}
+	
+	var jsonData = JSON.stringify(arrSupplyComp);
+	$("#searchForm input[name=supplyCompList]").val(jsonData);
+}
+
+// 브랜드 조회 선택시
+$('#btnSearchBrand').on('click', function() {
+	cfnOpenBrandListPopup('fnSetBrandInfo', 'M');
+});
+
+// 브랜드 조회 팝업에서 호출
+var fnSetBrandInfo = function(result) {
+	var arrbrandCd 	= [];
+	var brandText 	= "";
+	var bIndex 		= 0;
+	
+	$('#searchForm').find('#brandText').html('');
+	$('#searchForm input[name=searchTxt]').val('');
+	
+	result.forEach(function(brand){
+		bIndex++; 
+		arrbrandCd.push(brand.brandCd);
+	});
+
+	// 조회값이 하나일 경우 화면에 코드 노출 그외는 갯수 처리 
+	if (bIndex == 1) {
+		$('#searchForm input[name=searchTxt]').val(arrbrandCd[0]);
+	}else{
+		brandText = bIndex + " 개";
+		$('#searchForm').find('#brandText').html(brandText);	
+	}
+	var jsonData = JSON.stringify(arrbrandCd);
+	$("#searchForm input[name=brandList]").val(jsonData);
+}
 </script>
 
 </html>

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

@@ -63,7 +63,7 @@
 								</td>
 							</tr>
 						</th:block>
-						<th:block th:text="|${uploadImageUrl}/Order/${orderMemo.sysFileNm}|"></th:block>
+						<!-- <th:block th:text="|${uploadImageUrl}/Order/${orderMemo.sysFileNm}|"></th:block> -->
 					</tbody>
 				</table>
 				<div>

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

@@ -244,6 +244,7 @@ var orderInfoList 			= [[${orderInfoList}]];							// 주문기본정보
 var orderDelvRtnAddrInfo	= [[${orderDelvRtnAddrInfo}]];					// 회수지정보
 var orderChangeDetailList 	= [[${orderChangeDetailList}]];					// 취소/반품/교환요청 정보
 var chgStat					= [[${chgStat}]];								// 변경상태
+var recallExceptionInfo		= [[${recallExceptionInfo}]];					// 회수 예외 정보
 var payGb 					= orderInfoList[0].payGb;						// 결제수단
 var payMeans 				= orderInfoList[0].payMeans;					// 결제방법
 var pgGb					= orderInfoList[0].pgGb;						// PG구분
@@ -1465,7 +1466,8 @@ $(document).ready(function() {
 		$("#rtnReqBtn").css("display", "none");
 		
 		// 2021.05.25 반품접수, 반품대기 상태에서만 철회가능
-		if (chgStat != "G685_50" && chgStat != "G685_51") {
+		// 2021.07.13 회수예외정보가 있고 회수요청, 상품검수중 상태에서 철회 가능 처리
+		if (chgStat != "G685_50" && chgStat != "G685_51" && (recallExceptionInfo == null || (chgStat != "G685_30" && chgStat != 'G685_31'))) {
 			$("#rtnReqCancelBtn").css("display", "none");
 		}
 		

+ 14 - 14
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구분">
@@ -380,7 +380,7 @@
 		params.excelFileNm = result.excelFileNm;
 		params.sid = dateStr;
 
-		// 수량체크 로직 추가(500개 초가사 알림창 표시위함)
+		// 수량체크 로직 추가(500개 초과시 알림창 표시위함)
 		var jsonData = JSON.stringify(params);
 		gagajf.ajaxJsonSubmit(actionUrl+'/chk', jsonData, function(result2) {
 

+ 17 - 15
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>
 

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

@@ -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">

+ 11 - 11
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>

+ 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'){ // 배송비 일부동봉