Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/develop' into jsh77b

tsit14 5 anni fa
parent
commit
0dbdf75c57
24 ha cambiato i file con 698 aggiunte e 163 eliminazioni
  1. 21 0
      src/main/java/com/style24/admin/biz/dao/TsaDeliveryDao.java
  2. 13 2
      src/main/java/com/style24/admin/biz/service/TsaDeliveryService.java
  3. 3 1
      src/main/java/com/style24/admin/biz/web/TsaCustomerController.java
  4. 2 0
      src/main/java/com/style24/admin/biz/web/TsaMarketingController.java
  5. 69 69
      src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java
  6. 37 0
      src/main/java/com/style24/admin/biz/web/TsaOrderController.java
  7. 11 0
      src/main/java/com/style24/persistence/domain/Delivery.java
  8. 37 2
      src/main/java/com/style24/persistence/mybatis/shop/TsaDelivery.xml
  9. 7 5
      src/main/java/com/style24/persistence/mybatis/shop/TsaDsiplay.xml
  10. 22 4
      src/main/webapp/WEB-INF/views/delivery/BangoodsListForm.html
  11. 7 4
      src/main/webapp/WEB-INF/views/delivery/DeliveryListForm.html
  12. 9 2
      src/main/webapp/WEB-INF/views/delivery/SaveInvoiceForm.html
  13. 10 2
      src/main/webapp/WEB-INF/views/display/LookbookBannerPopupForm.html
  14. 37 5
      src/main/webapp/WEB-INF/views/display/MainContentsPopupForm.html
  15. 2 2
      src/main/webapp/WEB-INF/views/display/MainMultiContentsPopupForm.html
  16. 1 0
      src/main/webapp/WEB-INF/views/marketing/CouponPubForCustPopupForm.html
  17. 29 17
      src/main/webapp/WEB-INF/views/marketing/CouponRetrievePopupForm.html
  18. 2 1
      src/main/webapp/WEB-INF/views/marketing/PlanCornerListForm.html
  19. 9 13
      src/main/webapp/WEB-INF/views/marketing/PlanDetailPopupForm.html
  20. 2 2
      src/main/webapp/WEB-INF/views/marketing/PlanTemplatePopupForm.html
  21. 1 0
      src/main/webapp/WEB-INF/views/marketing/SocialShoppingListForm.html
  22. 357 0
      src/main/webapp/WEB-INF/views/order/OrderSellerDelvEndListForm.html
  23. 6 28
      src/main/webapp/WEB-INF/views/order/OrderSellerDelvListForm.html
  24. 4 4
      src/main/webapp/WEB-INF/views/order/OrderSellerListForm.html

+ 21 - 0
src/main/java/com/style24/admin/biz/dao/TsaDeliveryDao.java

@@ -67,6 +67,17 @@ public interface TsaDeliveryDao {
 	 */
 	int saveChangeInvoice(Delivery delivery);
 	
+	/**
+	 * 송장번호 변경
+	 *
+	 * @param delivery 
+	 * @return int
+	 * @author moon
+	 * @since 2021. 06. 08
+	 */
+	int updateOrderDtlInvoice(Delivery delivery);
+	
+	
 	
 	/**
 	 * 주문 상태 값 변경
@@ -340,4 +351,14 @@ public interface TsaDeliveryDao {
 	 */
 	Collection<Delivery> getExchangeDelvFailList(Delivery delivery);
 	
+	/**
+	 * 수동 결품 
+	 *
+	 * @param delivery 
+	 * @return int
+	 * @author moon
+	 * @since 2021. 06. 08
+	 */
+	int updateSoldOut(Delivery delivery);
+	
 }

+ 13 - 2
src/main/java/com/style24/admin/biz/service/TsaDeliveryService.java

@@ -227,14 +227,16 @@ public class TsaDeliveryService {
 			oneDelivery.setRegNo(userId);
 			
 			// 송장번호 변경
-			deliveryDao.saveChangeInvoice(oneDelivery);
+			int rtn = deliveryDao.saveChangeInvoice(oneDelivery);
+			
+			deliveryDao.updateOrderDtlInvoice(oneDelivery);
 			
 			// 주문상세이력
 			Order order = new Order();
 			order.setOrdDtlNo(oneDelivery.getOrdDtlNo());
 			order.setUpdNo(userId);
 			order.setRegNo(userId);
-			orderDao.createOrderDetailHst(order);			
+			orderDao.createOrderDetailHst(order);
 		}
 	}	
 	
@@ -263,10 +265,19 @@ public class TsaDeliveryService {
 			param.setAccountNo(item.getAccountNo());
 			param.setOrdDtlNo(item.getOrdDtlNo());
 			param.setCnclRtnQty(item.getSaleQty());
+			param.setOrdPhnno(item.getOrdPhnno());
+			log.info("item.getOrdPhnno(): "+item.getOrdPhnno());
 			ordSoldoutList.add(param);
 			
 		}
 		coreDeliveryService.cancelSoldout(ordSoldoutList,userNo, "N"); 
+		
+		for(Delivery data : soldoutList) {
+			data.setSoldoutMemo("수동 품절처리");
+			data.setUpdNo(userNo);
+			deliveryDao.updateSoldOut(data);
+		}
+		
 	}	
 	
 	

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

@@ -307,7 +307,9 @@ public class TsaCustomerController extends TsaBaseController {
 		if ("custNm".equals(customerSearch.getSearchGb()) || "email".equals(customerSearch.getSearchGb())) {
 			customerSearch.setSearchTxt(CryptoUtils.encryptAES(customerSearch.getSearchTxt()));
 		}
-		customerSearch.setCpnPubPopYn("N");
+		if(!"Y".equals(customerSearch.getCpnPubPopYn())){
+			customerSearch.setCpnPubPopYn("N");
+		}
 		customerSearch.encryptData();	//데이터 암호화 필요
 		customerSearch.setRegNo(TsaSession.getInfo().getUserNo());
 		customerSearch.setPageable(new TscPageRequest(customerSearch.getPageNo()-1, customerSearch.getPageSize()));

+ 2 - 0
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -1382,6 +1382,8 @@ public class TsaMarketingController extends TsaBaseController {
 		// 할인방식 목록
 		mav.addObject("dcWayList", rendererService.getAvailCommonCodeList("G240"));
 
+		// 쿠폰상태 목록
+		mav.addObject("cpnStatList", rendererService.getAvailCommonCodeList("G232"));
 		mav.setViewName("marketing/CouponRetrievePopupForm");
 
 		return mav;

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

@@ -597,55 +597,55 @@ public class TsaOrderChangeController extends TsaBaseController {
 	 * @author jsh77b
 	 * @since 2021. 01. 20
 	 */
-	@PostMapping("/cnclReq")
-	@ResponseBody
-	public GagaResponse cnclReq(@RequestBody OrderChange cnclReq) {
-		
-		GagaMap mav = new GagaMap();
-		
-		if (cnclReq== null) {
-			throw new IllegalStateException(message.getMessage("FAIL_1001"));
-		}
-		
-		List<Order> cnclReqList = cnclReq.getCancelReqList(); // 취소요청정보목록
-		
-		// TODO
-		// @ 결품취소로직 추가
-		// @ 주문취소시 상태값 체크
-		// @ 취소, 반품시 배송비 체크 로직 (선결제 로직)
-		
-		// 1. 세션회원조회
-		int userNo = TsaSession.getInfo().getUserNo();
-		
-		// 2. 환불금액계산
-		// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
-		mav = orderRefundService.cnclRtnRefundAmt2(cnclReqList);
-		
-		// 3. 주문변경 기본정보 설정
-		mav.set("ordNo"			, cnclReq.getOrdNo());				// 주문번호
-		mav.set("chgReason"		, cnclReq.getChgReason());			// 변경사유
-		mav.set("chgMemo"		, cnclReq.getChgMemo());			// 변경메모
-		
-		mav.set("accountNo"		, cnclReq.getAccountNo());			// 환불계좌번호
-		mav.set("accountNm"		, cnclReq.getAccountNm());			// 환불계좌예금주명
-		mav.set("bankCd"		, cnclReq.getBankCd());				// 환불계좌은행코드
-		
-		mav.set("allCanYn"		, cnclReq.getAllCanYn());			// 무통장입금전 전체취소 여부
-		mav.set("isCustomer"	, cnclReq.getIsCustomer());			// 변경사유 (고객, 회사)
-		
-		// 4. 주문변경 회수지정보 추가
-		mav.set("chgerNm"		, cnclReq.getChgerNm());			// 변경자명
-		mav.set("chgerEmail"	, cnclReq.getChgerEmail());			// 변경자이메일주소
-		mav.set("chgerPhnno"	, cnclReq.getChgerPhnno());			// 변경자핸드폰번호
-		mav.set("chgerTelno"	, cnclReq.getChgerTelno());			// 변경자전화번호
-		
-		mav.set("reqGbn"		, cnclReq.getReqGbn());				// 신청구분
-						
-		// 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
-		orderChangeService.cnclComplete(mav, userNo);
-		
-		return super.ok("성공");
-	}
+	// @PostMapping("/cnclReq")
+	// @ResponseBody
+	// public GagaResponse cnclReq(@RequestBody OrderChange cnclReq) {
+	//	
+	// 	GagaMap mav = new GagaMap();
+	//	
+	// 	if (cnclReq== null) {
+	// 		throw new IllegalStateException(message.getMessage("FAIL_1001"));
+	// 	}
+	//	
+	// 	List<Order> cnclReqList = cnclReq.getCancelReqList(); // 취소요청정보목록
+	//	
+	// 	// TODO
+	// 	// @ 결품취소로직 추가
+	// 	// @ 주문취소시 상태값 체크
+	// 	// @ 취소, 반품시 배송비 체크 로직 (선결제 로직)
+	//	
+	// 	// 1. 세션회원조회
+	// 	int userNo = TsaSession.getInfo().getUserNo();
+	//	
+	// 	// 2. 환불금액계산
+	// 	// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
+	// 	mav = orderRefundService.cnclRtnRefundAmt2(cnclReqList);
+	//	
+	// 	// 3. 주문변경 기본정보 설정
+	// 	mav.set("ordNo"			, cnclReq.getOrdNo());				// 주문번호
+	// 	mav.set("chgReason"		, cnclReq.getChgReason());			// 변경사유
+	// 	mav.set("chgMemo"		, cnclReq.getChgMemo());			// 변경메모
+	//	
+	// 	mav.set("accountNo"		, cnclReq.getAccountNo());			// 환불계좌번호
+	// 	mav.set("accountNm"		, cnclReq.getAccountNm());			// 환불계좌예금주명
+	// 	mav.set("bankCd"		, cnclReq.getBankCd());				// 환불계좌은행코드
+	//	
+	// 	mav.set("allCanYn"		, cnclReq.getAllCanYn());			// 무통장입금전 전체취소 여부
+	// 	mav.set("isCustomer"	, cnclReq.getIsCustomer());			// 변경사유 (고객, 회사)
+	//	
+	// 	// 4. 주문변경 회수지정보 추가
+	// 	mav.set("chgerNm"		, cnclReq.getChgerNm());			// 변경자명
+	// 	mav.set("chgerEmail"	, cnclReq.getChgerEmail());			// 변경자이메일주소
+	// 	mav.set("chgerPhnno"	, cnclReq.getChgerPhnno());			// 변경자핸드폰번호
+	// 	mav.set("chgerTelno"	, cnclReq.getChgerTelno());			// 변경자전화번호
+	//	
+	// 	mav.set("reqGbn"		, cnclReq.getReqGbn());				// 신청구분
+	//					
+	// 	// 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
+	// 	orderChangeService.cnclComplete(mav, userNo);
+	//	
+	// 	return super.ok("성공");
+	// }
 	
 	/**
 	 * 취소요청승인 (관리자)
@@ -654,26 +654,26 @@ public class TsaOrderChangeController extends TsaBaseController {
 	 * @author jsh77b
 	 * @since 2021. 01. 20
 	 */
-	@PostMapping("/cnclReqComplete")
-	@ResponseBody
-	public GagaResponse cnclReqComplete(@RequestBody OrderChange cnclReq) {
-		
-		if (cnclReq== null) {
-			throw new IllegalStateException(message.getMessage("FAIL_1001"));
-		}
-		
-		// 1. 세션회원조회
-		int userNo = TsaSession.getInfo().getUserNo();
-		
-		GagaMap mav = new GagaMap();
-		mav.set("ordNo"			, cnclReq.getOrdNo());
-		mav.set("ordChgSq"		, cnclReq.getOrdChgSq());
-		
-		// 2.취소요청철회 
-		mav = orderChangeService.cnclComplete(mav, userNo);
-		
-		return super.ok("성공");
-	}
+	// @PostMapping("/cnclReqComplete")
+	// @ResponseBody
+	// public GagaResponse cnclReqComplete(@RequestBody OrderChange cnclReq) {
+	//	
+	// 	if (cnclReq== null) {
+	// 		throw new IllegalStateException(message.getMessage("FAIL_1001"));
+	// 	}
+	//	
+	// 	// 1. 세션회원조회
+	// 	int userNo = TsaSession.getInfo().getUserNo();
+	//	
+	// 	GagaMap mav = new GagaMap();
+	// 	mav.set("ordNo"			, cnclReq.getOrdNo());
+	// 	mav.set("ordChgSq"		, cnclReq.getOrdChgSq());
+	//	
+	// 	// 2.취소요청철회 
+	// 	mav = orderChangeService.cnclComplete(mav, userNo);
+	//	
+	// 	return super.ok("성공");
+	// }
 }
 
 

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

@@ -754,6 +754,43 @@ public class TsaOrderController extends TsaBaseController {
 		orderService.updateSellerDelvStartAndPartCancel(orderList, userNo);
 		return super.ok("");
 	}
+
+	/**
+	 * 입점 상품 주문 목록
+	 * @param orderList - 주문목록화면
+	 * @return ModelAndView
+	 * @author xodud1202
+	 * @since 2020. 06. 07
+	 */
+	@GetMapping("/seller/delv/list/form")
+	public ModelAndView sellerDelvListForm() {
+		ModelAndView mav = new ModelAndView();
+
+		mav.addObject("supplyCompList"	, rendererService.getSupplyCompanyList());				// 공급업제목록
+		mav.addObject("ordStatList"		, rendererService.getAvailCommonCodeList("G012"));		// 주문상태코드
+		mav.addObject("ordDtlStatList"	, rendererService.getAvailCommonCodeList("G013"));		// 주문상세상태코드
+		mav.addObject("shipCompanyList"	, rendererService.getShipCompanyList());				// 택배사 목록
+
+		mav.setViewName("order/OrderSellerDelvEndListForm");
+
+		return mav;
+	}
+
+	/**
+	 * 입점업체 주문 목록 조회
+	 *
+	 * @param order - 주문정보
+	 * @return Collection<Order>
+	 * @author xodud1202
+	 * @since 2021. 06. 07
+	 */
+	@PostMapping("/seller/order/list")
+	@ResponseBody
+	public Collection<Order> getOrderSellerOrderList(@RequestBody Order order) {
+		order.setIfYn("Y");			// 취소, 반품 신청/대기 건 제외하지 않도록 구분값 지정
+		Collection<Order> orderList = orderService.getOrderSellerUnorderList(order);
+		return orderList;
+	}
 }
 
 

+ 11 - 0
src/main/java/com/style24/persistence/domain/Delivery.java

@@ -1,5 +1,7 @@
 package com.style24.persistence.domain;
 
+import java.util.Collection;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.style24.persistence.TscBaseDomain;
 import com.style24.persistence.TscPageRequest;
@@ -72,6 +74,10 @@ public class Delivery extends TscBaseDomain {
 	private String termGb;
 	private String stDate;
 	private String edDate;
+	private String stDate2;
+	private String edDate2;
+	private String stDate3;
+	private String edDate3;
 	private String ordDt;       	// 주문일시
 	private String payDt;       	// 결제일시
 	private String extmallId;   	// 외부몰
@@ -105,6 +111,11 @@ public class Delivery extends TscBaseDomain {
 	private String bankCd;
 	private String accountNm;
 	private String accountNo;
+	private String invcTracking;
+	private String orgInvoiceNo;
+	private String soldoutMemo;
+	private String soldoutRegNo;
+	
 	
 	private Integer ordDtlNo;
 	private Integer ordNo;

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

@@ -73,6 +73,7 @@
 		    , (SELECT BD.BRAND_KNM FROM TB_BRAND BD WHERE BD.BRAND_CD = Z.BRAND_CD ) AS BRAND_NM
 		    , FN_GET_CODE_NM('G056', Z.GOODS_TYPE ) AS GOODS_TYPE_NM 
 		    , (SELECT SUPPLY_COMP_NM FROM TB_SUPPLY_COMPANY S WHERE S.SUPPLY_COMP_CD = Z.SUPPLY_COMP_CD) AS SUPPLY_COMP_NM 
+		    , IFNULL((SELECT SWT_TRC_SEND_YN FROM TB_ORDER_DETAIL_INVOICE V WHERE V.ORD_NO = Z.ORD_NO AND V.ORD_DTL_NO = Z.ORD_DTL_NO AND V.INVOICE_NO = Z.INVOICE_NO  ),'N') AS INVC_TRACKING 
 		FROM (
 		    SELECT A.*, ROW_NUMBER() OVER(ORDER BY  A.ORD_NO DESC, A.ORD_DTL_NO) RNUM 
 		    FROM (
@@ -128,6 +129,7 @@
 						    , A.BANK_CD 
 						    , A.ACCOUNT_NO 
 						    , A.ACCOUNT_NM 
+						    , A.ORD_PHNNO
 					  FROM (
 							SELECT 
 								  A.ORD_NO     -- 주문번호
@@ -175,6 +177,7 @@
 							    , T.BANK_CD 
 							    , T.ACCOUNT_NO 
 							    , T.ACCOUNT_NM 
+							    , A.ORD_PHNNO
 							FROM  TB_ORDER A 
 							      INNER JOIN TB_ORDER_DETAIL B        ON A.ORD_NO       = B.ORD_NO
 								  INNER JOIN TB_ORDER_DETAIL_ITEM ODI ON B.ORD_DTL_NO   = ODI.ORD_DTL_NO
@@ -234,6 +237,7 @@
 							    , T.BANK_CD 
 							    , T.ACCOUNT_NO 
 							    , T.ACCOUNT_NM 
+							    , A.ORD_PHNNO
 							FROM  TB_ORDER A 
 							      INNER JOIN TB_ORDER_DETAIL B        ON A.ORD_NO       = B.ORD_NO
 							      INNER JOIN TB_GOODS C               ON B.GOODS_CD     = C.GOODS_CD
@@ -407,7 +411,18 @@
 		WHERE  ORD_DTL_NO   = #{ordDtlNo}
 	</update>
 		
-
+	<!-- 송장번호  변경 -->
+	<update id="updateOrderDtlInvoice" parameterType="Delivery" >
+		/* TsaDelivery.updateOrderDtlInvoice */
+		 UPDATE TB_ORDER_DETAIL_INVOICE SET
+			   INVOICE_NO      = #{invoiceNo}
+			 , SWT_TRC_SEND_YN = 'N'
+			 , UPD_NO          = #{updNo}
+			 , UPD_DT          = NOW()
+		 WHERE ORD_DTL_NO = #{ordDtlNo}
+		   AND INVOICE_NO = #{orgInvoiceNo}
+	</update>
+			
 	
 	<!-- 출고금지상품 목록 -->
 	<select id="getBangoodsList" parameterType="Delivery" resultType="Delivery">
@@ -425,6 +440,7 @@
 			, DBG.DELV_BAN_STDT 
 			, DBG.DELV_BAN_EDDT	
 			, DBG.DELV_BAN_GOODS_SQ
+			, DBG.REG_DT
 		FROM  TB_DELIVERY_BAN_GOODS DBG
 		INNER JOIN TB_GOODS        G    ON DBG.GOODS_CD = G.GOODS_CD
 		INNER JOIN TB_BRAND        B    ON G.BRAND_CD = B.BRAND_CD
@@ -452,6 +468,12 @@
 		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
 			AND DBG.REG_DT BETWEEN STR_TO_DATE(CONCAT(#{stDate},' 000000'),'%Y-%m-%d %H%i%S') AND STR_TO_DATE(CONCAT(#{edDate},' 235959'), '%Y-%m-%d %H%i%S')
 		</if>
+		<if test="stDate2 != null and stDate2 != '' and edDate2 != null and edDate2 != ''">
+			AND DBG.DELV_BAN_STDT BETWEEN STR_TO_DATE(CONCAT(#{stDate2},' 000000'),'%Y-%m-%d %H%i%S') AND STR_TO_DATE(CONCAT(#{edDate2},' 235959'), '%Y-%m-%d %H%i%S')
+		</if>
+		<if test="stDate3 != null and stDate3 != '' and edDate3 != null and edDate3 != ''">
+			AND DBG.DELV_BAN_EDDT BETWEEN STR_TO_DATE(CONCAT(#{stDate3},' 000000'),'%Y-%m-%d %H%i%S') AND STR_TO_DATE(CONCAT(#{edDate3},' 235959'), '%Y-%m-%d %H%i%S')
+		</if>				
 	</select>
 
 	<!-- 출고금지상품 삭제 -->
@@ -1187,5 +1209,18 @@
 		ORDER  BY EDF.REG_DT ASC
 	</select>
 		
-	
+	<!-- 수동 품절  -->
+	<update id="updateSoldOut" parameterType="Delivery" >
+		/* TsaDelivery.updateSoldOut */
+		 UPDATE TB_ORDER_DETAIL SET
+			   SOLDOUT_YN     = 'Y'
+			 , SOLDOUT_MEMO   = #{soldoutMemo}
+			 , SOLDOUT_REG_NO = #{updNo}
+			 , SOLDOUT_REG_DT = NOW()
+			 , UPD_NO         = #{updNo}
+			 , UPD_DT         = NOW()
+		 WHERE ORD_NO     = #{ordNo} 
+		   AND ORD_DTL_NO = #{ordDtlNo}
+	</update>
+		
 </mapper>

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

@@ -903,7 +903,7 @@
 				FROM ( SELECT G.GOODS_CD
 							, G.GOODS_TNM
 							, G.GOODS_NM
-							, (SELECT SYS_IMG_NM FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND DEFAULT_IMG_YN = 'Y' ORDER BY REG_DT DESC LIMIT 1) AS IMG_PATH1
+							, (SELECT SYS_IMG_NM FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = G.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ORDER BY REG_DT DESC LIMIT 1) AS IMG_PATH1
 							, A.CATE_NO
 							, A.DISP_ORD
 							, FN_GET_CODE_NM('G056',G.GOODS_TYPE) AS GOODS_TYPE
@@ -1474,9 +1474,11 @@
 			,DATE_FORMAT(#{dispStdt}, '%Y-%m-%d %H:%i:%S')
 			,DATE_FORMAT(#{dispEddt}, '%Y-%m-%d %H:%i:%S')
 			,(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="brandGroupNo != null and brandGroupNo !=''">
-			        AND BRAND_GROUP_NO = #{brandGroupNo}
-			    </if>
+			        <if test="contentsLoc != null and contentsLoc != '' and contentsLoc != 'SMM007'">
+			            <if test="brandGroupNo != null and brandGroupNo !=''">
+			                AND BRAND_GROUP_NO = #{brandGroupNo}
+			            </if>
+			        </if>
 			    ) TMP)
 			,#{imgPath1}
 			,#{imgPath2}
@@ -1503,7 +1505,7 @@
 			,#{subText3}
 			,#{subText4}
 			,#{html}
-			,#{brandGroupNo}
+			,CASE WHEN #{brandGroupNo} = '' THEN NULL ELSE #{brandGroupNo} END
 			,#{brandGroupImg}
 			,#{mdTitle}
 			,#{useYn}

+ 22 - 4
src/main/webapp/WEB-INF/views/delivery/BangoodsListForm.html

@@ -39,9 +39,9 @@
 					<table class="frmStyle">
 						<colgroup>
 							<col style="width:8%;"/>
-							<col style="width:12%;"/>
+							<col style="width:30%;"/>
 							<col style="width:8%;"/>
-							<col style="width:12%;"/>
+							<col style="width:30%;"/>
 						</colgroup>
 						<tr>
 							<th class="dashR">업체/브랜드</th>
@@ -75,7 +75,8 @@
 							</td>
 							<th class="dashR">삭제여부</th>
 							<td class="dashR">
-								<select name="delYn" id="delYn">
+								<select name="delYn" id="delYn" class="w80">
+									<option value="">전체</option>
 									<option value="N">N</option>
 									<option value="Y">Y</option>
 								</select>
@@ -87,6 +88,16 @@
 								<span id="terms"></span>
 							</td>
 						</tr>
+						<tr>
+							<th class="dashR">출고금지시작일자</th>
+							<td colspan="" class="dashR">
+								<span id="terms2"></span>
+							</td>
+							<th class="dashR">출고금지종료일자</th>
+							<td colspan="" class="dashR">
+								<span id="terms3"></span>
+							</td>
+						</tr>			
 					</table>
 	
 					<ul class="panelBar">
@@ -162,7 +173,8 @@
 		{headerName: "옵션2",			field: "optCd2",		width: 80,	cellClass: 'text-center'},
 		{headerName: "상품상태",		field: "goodsStat",		width: 80,	cellClass: 'text-center'},
 		{headerName: "출고금지시작일자",	field: "delvBanStdt",	width: 150,	cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateFormat(params.value); }},
-		{headerName: "출고금지종료일자",	field: "delvBanEddt",	width: 150,	cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateFormat(params.value); }}
+		{headerName: "출고금지종료일자",	field: "delvBanEddt",	width: 150,	cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateFormat(params.value); }},
+		{headerName: "등록일자",		field: "regDt",			width: 100,	cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateFormat(params.value); }}
 		
 	];
 
@@ -314,7 +326,13 @@
 
 	$(document).ready(function() {
 		gagaAgGrid.createGrid('gridList', gridOptions);
+		var hideList = ["btnThisWeek", "btnYesterWeek", "btnRecentMonth", "btnThisMonth", "btnYesterMonth", "btnRecent3Month"];
+		
 		cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '출고금지상품관리');
+		cfnCreateCalendar('#terms2', 'stDate2', 'edDate2', true, '출고금지상품관리','',hideList);
+		cfnCreateCalendar('#terms3', 'stDate3', 'edDate3', true, '출고금지상품관리','',hideList);
+		
+		
 		//var hideList = ["btnThisWeek", "btnYesterWeek", "btnRecentMonth", "btnThisMonth", "btnYesterMonth", "btnRecent3Month"];
 		//cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '출고금지상품관리', '', hideList);
 		fnInitCalendar();

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

@@ -69,8 +69,8 @@
 
 						<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>
+							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnY" value="Y"  >자사</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>
@@ -281,13 +281,14 @@
 		{headerName: "몰구분", 		field: "mallGbNm", 		width: 70, cellClass: 'text-center'},
 		{headerName: "주문자", 		field: "ordNm", 		width: 100, cellClass: 'text-center',
 			cellRenderer: function (params) {
-				if (roleCd.indexOf("C") < 0 && !gagajf.isNull(params.value) && params.data.mallGb === 'G011_10') {
+				if (roleCd.indexOf("C") < 0 && !gagajf.isNull(params.value) && params.data.mallGb === 'G011_10' && params.data.custNo > 0) {
 					return '<a href="javascript:void(0);" onclick=\"cfnOpenCustDetailPopup(' + params.data.custNo + ');\">' + params.data.ordNm + '</a>';
 				} else {
 					return params.data.ordNm;
 				}
 			}
 		},
+		{headerName: "휴대번호", 		field: "ordPhnno", 		width: 100, cellClass: 'text-center'},
 		{headerName: "수령인", 		field: "recipNm", 		width: 100, cellClass: 'text-center'},
 		{headerName: "공급업체", 		field: "supplyCompNm", 	width: 150, cellClass: 'text-center'},
 		{headerName: "브랜드", 		field: "supplyCompNm", 	width: 150, cellClass: 'text-center'},
@@ -333,6 +334,7 @@
 		{headerName: "출고택배사", 	field: "shipCompCd", 	width: 170, cellClass: 'text-center'
 			, valueGetter: function (params) { return gagaAgGrid.lookupValue(shipCompanyList, params.data.shipCompCd); }
 		},
+		{headerName: "배송추적", 		field: "invcTracking", 	width: 80, cellClass: 'text-center'},
 		{headerName: "출고송장", 		field: "invoiceNo", 	width: 150, cellClass: 'text-left'},
 		{headerName: "송장등록수정", 	field: "invoiceNo", 	width: 120, cellClass: 'text-center'
 			, cellRenderer : function (params) {
@@ -591,7 +593,8 @@
 		$(".btnToday").trigger('click');
 		$('#searchForm select[name=mallGb]').trigger('change');
 		$("#searchForm input[name=selfYn]").trigger('click');
-		//uifnFitGrid('auto'); // TO-BE 지워야됨  
+		$("#searchForm input[name='selfYn']:radio[value='Y']").prop('checked',true);
+
 	});
 
 	/*]]>*/

+ 9 - 2
src/main/webapp/WEB-INF/views/delivery/SaveInvoiceForm.html

@@ -63,12 +63,17 @@
 /* 이벤트 바인딩 관련 */
 	var ordDtlNo = [[${ordDelivery.ordDtlNo}]];
 	var ordDtlStat = [[${ordDelivery.ordDtlStat}]];
-
+	var orgInvoiceNo  = [[${ordDelivery.invoiceNo}]];
+	var orgShipCompCd = [[${ordDelivery.shipCompCd}]];  
 	/* 환불계좌번호 저장 */
 	var fnSaveAccount = function(){
 		var shipCompCd = $("#saveInvoiceForm select[name=shipCompany]").val();
 		var invoiceNo = $("#saveInvoiceForm input[name=invoiceNo]").val();
-
+		
+		if(orgInvoiceNo == invoiceNo && orgShipCompCd == shipCompCd){
+			mcxDialog.alert('변경된 내역이 없습니다.');
+			return;
+		}
 
 		if(gagajf.isNull(shipCompCd)) {
 			mcxDialog.alert('택배사 선택을 해주세요.');
@@ -89,9 +94,11 @@
 					param.shipCompCd = shipCompCd;
 					param.invoiceNo  = invoiceNo;
 					param.ordDtlNo   = ordDtlNo;
+					param.orgInvoiceNo = orgInvoiceNo;
 
 				var jsonData = JSON.stringify([param]);
 				gagajf.ajaxJsonSubmit('/delivery/orderDetail/save', jsonData, function (result) {
+					$('#btnSearch').trigger('click');
 					uifnPopupClose('popupChangeInvoice');
 				});
 			}

+ 10 - 2
src/main/webapp/WEB-INF/views/display/LookbookBannerPopupForm.html

@@ -408,8 +408,11 @@
 		html += '					<img id="bannerPreViewUrl_'+bannerImgRow+'" src="'+src+'" style="height:100px; max-width:500px;"/>';
 		html += '				</div>';
 		html += '			</td>';
-		html += '			<th>이미지설명</th>';
-		html += '			<td><textarea class="textareaR4" name="imgDesc" id="imgDesc'+bannerImgRow+'">'+desc+'</textarea></td>';
+		html += '			<th>이미지설명';
+		html += '			<br/>';
+		html += '			<span id="dpLocAnsContent'+bannerImgRow+'">0</span>/4,000Byte';
+		html += '			</th>';
+		html += '			<td><textarea class="textareaR4" style="resize: none;" name="imgDesc" id="imgDesc'+bannerImgRow+'" onkeyup="cfnGetTextLength(this, 4000, $(\'#dpLocAnsContent\'+'+bannerImgRow+'));" >'+desc+'</textarea></td>';
 		html += '			<td><input name="dispOrd" type="text" class="w80" placeholder="전시순서" style="margin-left:5px; text-align:center" value="'+dispord+'"/>';
 		if(imgPath!=''){
 			html += '				<button type="button" class="btn btn-success btn-lg" onclick="fnAddPicker(this,\''+imgPath+'\');">피커추가</button>';
@@ -423,6 +426,7 @@
 			bannerImgRow++;
 			return html;
 		}
+
 	}
 
 	var fnAddPicker = function (obj, imgpath){
@@ -495,6 +499,10 @@
 				fnResetIdx();
 			}
 		});
+
+		$(".bannerTableC").each(function (idx){
+			cfnGetTextLength($(this).find('textarea[name=imgDesc]'), 4000, $('#dpLocAnsContent'+idx));
+		});
 	});
 /*]]>*/
 </script>

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

@@ -410,8 +410,14 @@
 					if(strVar!=null && strVar!='null' && strVar!='' ){
 						html += fnAddLinkPopRow(strVar);
 					}
-					if(subText!=null && subText!='null' && subText!='' ){
-						html += fnAddSubTextPopRow(subText);
+					if(contentsLoc=='SBM005'){
+						if(subText!=null && subText!='null' && subText!='' ){
+							html += fnAddBrandDescRow(subText);
+						}
+					}else{
+						if(subText!=null && subText!='null' && subText!='' ){
+							html += fnAddSubTextPopRow(subText);
+						}
 					}
 				}
 			}
@@ -431,6 +437,9 @@
 		if(contentsLoc=='SGNB001'){
 			fnOpenBannerSummernote();
 		}
+		if(contentsLoc=='SBM005'){
+			fnBrandDesc();
+		}
 
 		tableLen = $(".mcTable").length;
 	}
@@ -974,6 +983,7 @@
 				eval("strVar" + i + "='"+val+"'");
 				i++;
 			});
+
 			i = 1;
 			$(this).find('input[name=subText]').each(function(){
 				var subText = $(this).val().replace(/[\']/gi, "\\'");
@@ -981,6 +991,11 @@
 				i++;
 			});
 
+			if(contentsLoc=='SBM005'){
+				var thisIdx = $(this).find("input[name=tableIdx]").val();
+				subText1 = $(this).find("textarea[id=brandDesc"+thisIdx+"]").val();
+			}
+
 			if(contentsLoc=='SMM011' || contentsLoc=='SBM012' || contentsLoc=='SBMM012'){
 				var thisIdx = $(this).find("input[name=tableIdx]").val();
 				strVar1 = $(this).find("input:radio[name=tvPlayer"+thisIdx+"]:checked").val();
@@ -1110,7 +1125,7 @@
 		}
 
 		var jsonData = JSON.stringify(dataArr);
-		console.log('jsonData::'+jsonData);
+		// console.log('jsonData::'+jsonData);
 		mcxDialog.confirm('컨텐츠를 저장 하시겠습니까?', {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
@@ -1198,20 +1213,29 @@
 	/**
 	 * 브랜드 소개추가
 	 */
+	var brandDescIndex = 0;
 	var fnAddBrandDescRow = function (param){
+		console.log('here');
 		var val = typeof param=='object'?'':param;
 		var html = '<tr name="subTextPopRow">'
-		html += '<th>브랜드소개</th>';
-		html += '<td><input type="text" name="subText" maxlength="200" value="'+val+'"/></td>';
+		html += '<th>브랜드소개';
+		html += '<br/>';
+		html += '<span id="brandDescContent'+brandDescIndex+'">0</span>/4,000Byte';
+		html += '</th>';
+		html += '<td>';
+		html += '<textarea class="textareaR4" style="resize: none;" name="subText" id="brandDesc'+brandDescIndex+'" onkeyup="cfnGetTextLength(this, 4000, $(\'#brandDescContent'+brandDescIndex+'\'));" >'+val+'</textarea>';
+		html += '</td>';
 		html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
 		html += '</tr>';
 		if(typeof param == 'object'){
+			brandDescIndex++;
 			if($(param).closest("table").find("tbody").find("tr[name=subTextPopRow]").length>0){
 				mcxDialog.alert("브랜드소개는 1개까지 등록 가능합니다");
 				return;
 			}
 			$(param).closest("table").find("tbody").append(html);
 		}else{
+			brandDescIndex++;
 			return html;
 		}
 	}
@@ -1402,6 +1426,13 @@
 		});
 	}
 
+	let fnBrandDesc = function (){
+		$(".mcTable").each(function (idx){
+			console.log(idx);
+			// cfnGetTextLength($(this).find('textarea[name=subText]'), 4000, $('#brandDescContent'+idx));
+		});
+	}
+
 	$(document).ready(function() {
 		$("#popTitle").text("["+contentsLoc+"] "+gagaAgGrid.lookupValue(contentsLocArr, contentsLoc));
 
@@ -1414,6 +1445,7 @@
 				fnResetDispOrd();
 			}
 		});
+
 	});
 	/*]]>*/
 </script>

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

@@ -625,11 +625,11 @@ console.log('brandGroupNo:'+brandGroupNo);
 
 			var dispOrd = $(this).find("[name=dispOrd]").val();
 
-			var brandGroupNo = '';
+			var brandGroupNo;
 			if(contentsLoc=='SBM007'||contentsLoc=='SBM008'||contentsLoc=='SBM009'||contentsLoc=='SBM017'||contentsLoc=='SBM018'||contentsLoc=='SBM019'||contentsLoc=='SOM003'||contentsLoc=='SCM002'||contentsLoc=='SCM003'){
 				brandGroupNo = [[${brandGroupNo}]];
 			}else{
-				$(this).find("[name=brandGroupNo]").val();
+				brandGroupNo = $(this).find("[name=brandGroupNo]").val();
 			}
 			var brandGroupImg = $(this).find("[name=brandNewImgFile]").val();
 			var mdTitle = $(this).find("[name=mdTitle]").val();

+ 1 - 0
src/main/webapp/WEB-INF/views/marketing/CouponPubForCustPopupForm.html

@@ -23,6 +23,7 @@
 		<div class="panelContent">
 			<form id="custSearchForm" name="custSearchForm" action="#" th:action="@{'/customer/active/list'}" >
 				<input type="hidden" name="cpnPubPopYn" value="Y"/>
+				<input type="hidden" name="searchDateGb" value="joinDt"/>
 				<table class="frmStyle">
 					<colgroup>
 						<col width="10%">

+ 29 - 17
src/main/webapp/WEB-INF/views/marketing/CouponRetrievePopupForm.html

@@ -96,15 +96,23 @@
 	let usableCustGbList = gagajf.convertToArray([[${usableCustGbList}]]);
 	let cpnTypeList = gagajf.convertToArray([[${cpnTypeList}]]);
 	let dcWayList = gagajf.convertToArray([[${dcWayList}]]);
+	let cpnStatList = gagajf.convertToArray([[${cpnStatList}]]);
+	let pdGbList = { "P":"기간", "D":"일수" };
 	
 	let columnDefsCouponList = [
-// 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{width: 40, minWidth: 40, cellClass: 'text-center', pinned: 'left', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
 		{
 			headerName: "사이트", field: "siteCd", width: 80, cellClass: "text-center", pinned: 'left',
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(siteList, params.value); }
 		},
 		{headerName: "쿠폰ID", field: "cpnId", width: 90, cellClass: 'text-center', pinned: 'left'},
 		{headerName: "쿠폰명", field: "cpnNm", width: 150, pinned: 'left'},
+		{headerName: "쿠폰상태", field: "cpnStat", width: 140, cellClass: 'text-center' ,
+			cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(cpnStatList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(cpnStatList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(cpnStatList, params.newValue); }
+		},
 		{
 			headerName: "사용가능고객", field: "usableCustGb", width: 120, cellClass: "text-center",
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(usableCustGbList, params.value); }
@@ -127,25 +135,29 @@
 		},
 		{
 			headerName: "최고할인값", field: "maxDcAmt", width: 100, cellClass: "text-center",
-			cellRenderer: function(params) { return (!gagajf.isNull(params.value) ? gagaAgGrid.toAddComma(params.value) : '') + (params.data.dcWay == 'G240_10' ? '원' : '%'); }
+			cellRenderer: function(params) { return (!gagajf.isNull(params.value) ? gagaAgGrid.toAddComma(params.value) : '') + ('원'); }
 		},
+		{headerName: "기간/일수구분", field: "pdGb", width: 140, cellClass: 'text-center' ,
+			cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(pdGbList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(pdGbList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(pdGbList, params.newValue); }
+		},
+		{headerName: "유효시작일시", field: "availStdt", width: 140, cellClass: 'text-center' ,
+			cellRenderer: function(params) {
+				return !gagajf.isNull(params.value) ? params.value.toDate("YYYY-MM-DD HH:mm:ss").format("YYYY-MM-DD HH:mm:ss") : '';
+			}
+		},
+		{headerName: "유효종료일시", field: "availEddt", width: 140, cellClass: 'text-center' ,
+			cellRenderer: function(params) {
+				return !gagajf.isNull(params.value) ? params.value.toDate("YYYY-MM-DD HH:mm:ss").format("YYYY-MM-DD HH:mm:ss") : '';
+			}
+		},
+		{headerName: "유효일수", field: "availDays", width: 140, cellClass: 'text-center'},
 // 		{
-// 			headerName: "기간/일수", field: "pdGb", width: 100, cellClass: "text-center", hide: true,
-// 			cellRenderer: function(params) { return (params.value == 'P' ? '기간' : '일수'); }
-// 		},
-// 		{
-// 			headerName: "유효시작일시", field: "availStdt", width: 150, cellClass: "text-center", hide: true,
-// 			cellRenderer: function(params) { return !gagajf.isNull(params.value) ? gagaAgGrid.toDateTimeFormat(params.value) : ''; }
-// 		},
-// 		{
-// 			headerName: "유효종료일시", field: "availEddt", width: 150, cellClass: "text-center", hide: true,
-// 			cellRenderer: function(params) { return !gagajf.isNull(params.value) ? gagaAgGrid.toDateTimeFormat(params.value) : ''; }
+// 			headerName: "유효기간", field: "availPeriod", width: 300, cellClass: "text-center",
+// 			cellRenderer: function(params) { return params.data.pdGb == 'P' ? gagaAgGrid.toDateTimeFormat(params.data.availStdt) + '~' + gagaAgGrid.toDateTimeFormat(params.data.availStdt) : gagaAgGrid.toAddComma(params.data.availDays) + '일'; }
 // 		},
-// 		{headerName: "유효일수", field: "availDays", width: 100, cellClass: "text-center", hide: true},
-		{
-			headerName: "유효기간", field: "availPeriod", width: 300, cellClass: "text-center",
-			cellRenderer: function(params) { return params.data.pdGb == 'P' ? gagaAgGrid.toDateTimeFormat(params.data.availStdt) + '~' + gagaAgGrid.toDateTimeFormat(params.data.availStdt) : gagaAgGrid.toAddComma(params.data.availDays) + '일'; }
-		},
 		{headerName: "발행제한여부", field: "pubLimitYn", width: 100, cellClass: "text-center"},
 		{
 			headerName: "고객당발행제한수량", field: "custPubLimitQty", width: 100, cellClass: "text-center",

+ 2 - 1
src/main/webapp/WEB-INF/views/marketing/PlanCornerListForm.html

@@ -172,6 +172,7 @@
 		}
 	}
 
+	
 	// 코너 상품 조회
 	var fnConnerGoodsSearch = function() {
 		var actionUrl = '/marketing/planning/corner/goods/list';
@@ -438,7 +439,7 @@
 					,excelFileNm : result.excelFileNm
 					};
 		var jsonData = JSON.stringify(data);
-		gagajf.ajaxJsonSubmit('/marketing/planning/corner/goods/excelupload', jsonData, fnCornerSearch);
+		gagajf.ajaxJsonSubmit('/marketing/planning/corner/goods/excelupload', jsonData, fnConnerGoodsSearch);
 	}
 
 	var fnOpenGoodsPopup = function() {

+ 9 - 13
src/main/webapp/WEB-INF/views/marketing/PlanDetailPopupForm.html

@@ -532,7 +532,7 @@
 						<th>노출여부<em class="required" title="필수"></em></th>
 						<td colspan="3">
 							<select name="openYn" required="required" data-valid-name="오픈여부">
-								<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:selected="${oneData.cd} == 'Y'" th:text="|${oneData.cdNm}|"></option>
+								<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:selected="${oneData.cd} == 'N'" th:text="|${oneData.cdNm}|"></option>
 							</select>
 						</td>
 					</tr>
@@ -622,8 +622,8 @@
 						<th class="custJoinTr" colspan="1">신규회원여부<em class="required" title="필수"></em></th>
 						<td>
 							<select name="newCustYn" id="newCustYn" onchange="newCustYnChange(this)" required="required" data-valid-name="신규회원여부">
-								<option value="Y" selected="selected">Y</option>
-								<option value="N" >N</option>
+								<option value="Y" >Y</option>
+								<option value="N" selected="selected">N</option>
 							</select>
 						</td>
 						<th>댓글여부<em class="required" title="필수"></em></th>
@@ -855,7 +855,7 @@
 		$("#searchTxt").val("[" + result[0].planSq + "] " +result[0].planNm);
 		
 	}
-	
+
 	// 댓글여부에 입력창 추가
 	/* $('select[name=replyYn]').on('change', function() {
 		if($('select[name=replyYn]').val() == 'Y'){
@@ -887,15 +887,6 @@
 				}
 			}
 			
-			if(planInfo.newCustYn == 'Y'){
-				$('.custJoinDateTr').css('display' , '');
-				$('#custJoinStdt').attr('required' , true);
-				$('#custJoinEddt').attr('required' , true);
-			} else {
-				$('.custJoinDateTr').css('display' , 'none');
-				$('#custJoinStdt').attr('required' , false);
-				$('#custJoinEddt').attr('required' , false);
-			}
 			
 			if(planInfo.replyLoc == "D"){
 				$('#planUpdateForm input:radio[name=replyLoc]:radio[value="D"]').prop('checked', true);
@@ -1726,6 +1717,11 @@
 		gagaAgGrid.createGrid("gridAfPlanList", gridOptionsAfList);
 		gagaAgGrid.createGrid("gridAttendPlanList", gridOptionsAttendList);
 		
+		$('.custJoinDateTr').css('display' , 'none');
+		$('#custJoinStdt').attr('required' , false);
+		$('#custJoinEddt').attr('required' , false);
+		
+		
 		 if (mode =='U') {
 			 if(planInfo.newCustYn == 'Y'){
 				 $("#planUpdateForm input[name=custJoinStDay]").val(planInfo.custJoinStdt.split(' ')[0]);

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

@@ -207,7 +207,7 @@
 															</td>                                                                                                                    
 														</tr>        
 														<tr>
-															<th>상품 링크</th>
+															<th>이미지 링크</th>
 															<td><input type="text" th:name="${'fileLinkUrl' + num}" class="w300 aL">
 															</td>
 														</tr>
@@ -1688,7 +1688,7 @@
 			}else{
 				multiPlanFile.push($('#fileItemVal'+(i+1)).val());
 				multiPlanFile2.push($('#planTemplateForm input[name=fileLinkUrl'+(i+1)+']').val());
-				multiPlanFile3.push($('#planTemplateForm input:radio[name=linkOpenGb'+(i+1)+']:checked').val());
+				multiPlanFile3.push($('#planTemplateForm input:radio[name=fileLinkOpenGb'+(i+1)+']:checked').val());
 			}
 		}
 		

+ 1 - 0
src/main/webapp/WEB-INF/views/marketing/SocialShoppingListForm.html

@@ -661,6 +661,7 @@
 			}
 		}
 		mcxDialog.alert('상품이 적용되었습니다.');
+		uifnPopupClose('popupGoods')
 		gridOptionsGoods.api.setRowData(oldGoodsList);
 	}
 	

+ 357 - 0
src/main/webapp/WEB-INF/views/order/OrderSellerDelvEndListForm.html

@@ -0,0 +1,357 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : OrderSellerListForm.html
+ * @desc    : 입점업체미발주목록조회 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2020.11.16   jsh77b       최초 작성
+ *******************************************************************************
+ -->
+
+<div id="main">
+	<!-- 메인타이틀 영역 -->
+	<div class="main-title">
+	</div>
+	<!-- //메인타이틀 영역 -->
+
+	<!-- 메뉴 설명 -->
+	<div class="infoBox menu-desc">
+	</div>
+
+	<form id="searchForm" name="searchForm" action="#" th:action="@{'/order/seller/order/list'}">
+		<input type="hidden" id="searchGb" name="searchGb" />
+		<input type="hidden" id="imageViewYn" name="imageViewYn" />
+
+		<!-- 패널 영역1 -->
+		<div class="panelStyle" >
+			<!-- 검색조건 영역 -->
+			<!-- TITLE -->
+			<div class="panelTitle">
+				<h3>
+					<i class="fa fa-info-circle"></i>아래 검색조건 중 <font color="red">주문번호</font> 또는 <font color="red">검색조건</font> 하나를 꼭 입력해 주세요.
+				</h3>
+				<span class="panelControl">
+					<i class="fa fa-chevron-up"></i>
+				</span>
+			</div>
+
+			<div class="panelContent">
+				<table class="frmStyle">
+					<colgroup>
+						<col style="width:10%;"/>
+						<col style="width:15%;"/>
+						<col style="width:10%;"/>
+						<col style="width:15%;"/>
+						<col style="width:10%;"/>
+						<col style="width:15%;"/>
+						<col style="width:10%;"/>
+						<col style="width:15%;"/>
+					</colgroup>
+					<tr>
+						<th>업체/브랜드<em class="required" title="필수"></em></th>
+						<td colspan="7">
+							<!-- <label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnY" value="N" />자사</label> -->
+							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnN" value="Y" checked/>입점</label>
+							<select name="supplyCompCd" id="supplyCompCd">
+								<option value="" th:if="${sessionInfo.roleCd} != 'G001_B000'">[전체]</option>
+								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+							</select>
+							<span id="multiBrand"></span>
+						</td>
+					</tr>
+					<tr>
+						<th>주문번호</th>
+						<td>
+							<input type="text" name="ordNo" placeholder="" maxlength="20"/>
+						</td>
+						<th>주문자명</th>
+						<td>
+							<input type="text" name="ordNm" placeholder="" maxlength="20"/>
+						</td>
+						<th>상품코드</th>
+						<td>
+							<input type="text" name="goodsCd" placeholder="" maxlength="20"/>
+						</td>
+						<th>주문상세상태</th>
+						<td>
+							<select name="ordDtlStat" id="ordDtlStat">
+								<option value="G013_20">결제완료</option>
+								<option value="G013_30">상품준비중</option>
+								<option value="G013_40">배송준비중</option>
+								<option value="G013_50" selected>배송중</option>
+								<option value="G013_60">배송완료</option>
+								<option value="G013_70">구매확정</option>
+							</select>
+						</td>
+					</tr>
+					<tr>
+						<th>조회일자</th>
+						<td colspan="7">
+							<select name="searchDateGb">
+								<option value="ordDt">주문일자</option>
+							</select>
+							<span id="terms"></span>
+						</td>
+					</tr>
+				</table>
+
+				<ul class="panelBar">
+					<li class="center">
+						<button type="button" class="btn btn-info btn-lg" id="btnOrderSearch">조회</button>
+						<button type="button" class="btn btn-gray btn-lg" id="btnInit">초기화</button>
+					</li>
+				</ul>
+
+			</div>
+		</div>
+
+		<div class="panelStyle">
+			<!--<ul class="panelBar">
+				<li>
+					<button type="button" class="btn btn-info btn-lg" onclick="cfnDownloadSampleFile('SF020');">입점송장번호등록다운로드</button>
+				</li>
+				<li class="aR">
+					<button type="button" id="btnExcelDown" class="btn btn-info btn-lg">엑셀다운로드</button>
+					<button type="button" id="btnInvoiceExcelUpLoad" class="btn btn-success btn-lg">송장엑셀업로드</button>
+					<button type="button" id="btnSave" class="btn btn-success btn-lg">저장</button>
+				</li>
+			</ul>-->
+
+			<div class="panelContent" style="overflow: hidden;">
+				<div id="gridList" style="width: 100%; height: 600px;" class="ag-theme-balham lh30"></div>
+			</div>
+		</div>
+
+		<!-- //리스트 영역 -->
+		<label class="off">
+			<a href="javascript:void(0);" id="excelList" style="display: none;">엑셀다운로드</a>
+		</label>
+
+	</form>
+</div>
+
+<label class="off">
+	<a href="javascript:void(0);" id="hdOrderExcelList" style="display: none;">엑셀다운로드</a>
+</label>
+
+<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=2019072202"></script>
+
+<script th:inline="javascript">
+	/*<![CDATA[*/
+	var sessRoleCd 		= [[${sessionInfo.roleCd}]];
+	var shipCompanyList = gagajf.convertToArray([[${shipCompanyList}]]);
+
+	var columnDefs = [
+		{width: 40, minWidth: 40, cellClass: 'text-right', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
+		{headerName: "입점업체",			field:"supplyCompNm",		width:100, cellClass: 'text-center'},
+		{headerName: "입점업체코드",		field:"supplyCompCd",		width:100, cellClass: 'text-center', hide: true},
+		{headerName: "브랜드",			field:"brandKnm",			width:100, cellClass: 'text-center'},
+		{headerName: "주문번호",			field:"ordNo",				width:100, cellClass: 'text-center'},
+		{headerName: "주문상세번호",		field:"ordDtlNo",			width:100, cellClass: 'text-center'},
+		{headerName: "주문상세상태",		field:"ordDtlStatNm", 		width:100, cellClass: 'text-center'},
+		{headerName: "주문자명",			field:"ordNm",				width:100, cellClass: 'text-center'},
+		{headerName: "주문일시",			field:"ordDt",				width:100, cellClass: 'text-center',
+			cellRenderer		: function (params) {
+				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
+			}
+		},
+		{headerName: "결제수단",			field:"payMeansNm",			width:100, cellClass: 'text-center'},
+		{headerName: "주문자휴대전화",		field:"ordPhnno",			width:100, cellClass: 'text-center'},
+		{headerName: "수령자명",			field:"recipNm",			width:100, cellClass: 'text-center'},
+		{headerName: "수령자휴대전화",		field:"recipPhnno",			width:120, cellClass: 'text-center'},
+		{headerName: "수령자우편번호",		field:"recipZipcode",		width:120, cellClass: 'text-center'},
+		{headerName: "수령자기본주소",		field:"recipBaseAddr",		width:120, cellClass: 'text-center'},
+		{headerName: "수령자상세주소",		field:"recipDtlAddr",		width:120, cellClass: 'text-center'},
+		{headerName: "업체상품코드",		field:"supplyGoodsCd",		width:100, cellClass: 'text-center'},
+		{headerName: "상품코드",			field:"goodsCd",			width:100, cellClass: 'text-center'},
+		{headerName: "상품명",			field:"goodsNm",			width:100, cellClass: 'text-center'},
+		{headerName: "사이즈",			field:"optCd2",				width:100, cellClass: 'text-center'},
+		{headerName: "주문수량",			field:"ordQty",				width:100, cellClass: 'text-center'},
+		{headerName: "취소수량",			field:"cnclRtnQty",			width:100, cellClass: 'text-center'},
+		{headerName: "주문금액",			field:"ordAmt",				width:100, cellClass: 'text-center'},
+		{headerName: "할인금액",			field:"totDcAmt",			width:100, cellClass: 'text-center'},
+		{headerName: "실결제금액",		field:"realOrdAmt",			width:100, cellClass: 'text-center'},
+		{headerName: "배송업체",			field:"shipCompCd",			width:150, cellClass: 'text-center'},
+		{headerName: "송장",				field:"invoiceNo",			width:150, cellClass: 'text-center'}
+	];
+
+	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+	gridOptions.suppressRowClickSelection = true;
+	gridOptions.rowSelection = 'multiple';
+	gridOptions.stopEditingWhenGridLosesFocus = true;
+
+	// 조회버튼
+	$('#btnOrderSearch').on('click', function() {
+		fnSearch();
+	});
+
+	// 검색
+	var fnSearch = function() {
+		var formId = '#searchForm';
+		var ordNo = $('#searchForm input[name=ordNo]').val();
+		var stDate = $('#stDate').val();
+		var edDate = $('#edDate').val();
+
+		if (gagajf.isNull(ordNo)) {
+			if (gagajf.isNull(stDate)) {
+				mcxDialog.alert('시작 기간을 입력하세요.');
+				return;
+			}
+
+			if (gagajf.isNull(edDate)) {
+				mcxDialog.alert('종료 기간을 입력하세요.');
+				return;
+			}
+		}
+
+		gagaAgGrid.fetch($(formId).prop('action'), gridOptions, formId);
+	}
+
+	// 엑셀다운로드 시 주문상태 변경
+	$('#btnExcelDown').on('click', function () {
+		var selectedData = gridOptions.api.getSelectedRows();
+
+		if (selectedData.length == 0) {
+			mcxDialog.alert('선택된 행이 없습니다.');
+			return;
+		}
+
+		mcxDialog.confirm('엑셀 다운로드 하시겠습니까?', {
+			cancelBtnText	: "취소",
+			sureBtnText		: "확인",
+			sureBtnClick	: function(){
+				var jsonData = JSON.stringify(selectedData);
+				gagajf.ajaxJsonSubmit('/order/seller/unorder/status/save', jsonData, fnExcelDownCollback);
+			}
+		});
+	});
+
+	// 엑셀다운로드
+	var fnExcelDownCollback = function(flag){
+		$('#excelList').attr({ href : '/order/seller/unorder/excel/list' }).get(0).click();
+	}
+
+	// 송장 엑셀 업로드
+	$('#btnInvoiceExcelUpLoad').on('click', function() {
+		cfnExcelUploadPopup('invoiceExcelUpload', 'invoiceExcelUpload');
+	});
+
+	var invoiceExcelUpload = function(result){
+		mcxDialog.confirm('송장 변경을 진행하시겠습니까?', {
+			cancelBtnText	: "취소"
+			, sureBtnText	: "확인"
+			, sureBtnClick	: function(){
+				var data = {
+					procJob 		: result.procJob
+					, excelFileNm 	: result.excelFileNm
+				};
+
+				var jsonData = JSON.stringify(data);
+				gagajf.ajaxJsonSubmit('/order/seller/unorder/invoice/excelupload/save', jsonData, fnInvoiceSaveCollback);
+			}
+		});
+	}
+
+	// 송장번호 저장후
+	var fnInvoiceSaveCollback = function(result){
+		mcxDialog.alert(result.msg);
+		fnSearch();
+		return;
+	}
+
+	// 송장번호 저장시
+	$('#btnSave').on('click', function () {
+		var selectedData = gridOptions.api.getSelectedRows();
+
+		if (selectedData.length == 0) {
+			mcxDialog.alert('선택된 행이 없습니다.');
+			return;
+		}
+
+		var checkFlag = false;
+		$.each(selectedData, function(idx, item) {
+			if (gagajf.isNull(item.shipCompCd)){
+				checkFlag = true;
+				mcxDialog.alert('배송업체를 선택하세요.');
+				return;
+			}
+
+			if (gagajf.isNull(item.invoiceNo)){
+				checkFlag = true;
+				mcxDialog.alert('송장번호를 입력하세요.');
+				return;
+			}
+		});
+
+		if (checkFlag){
+			return false;
+		}
+
+		mcxDialog.confirm('저장 하시겠습니까?', {
+			cancelBtnText	: "취소",
+			sureBtnText		: "확인",
+			sureBtnClick	: function(){
+				var jsonData = JSON.stringify(selectedData);
+				gagajf.ajaxJsonSubmit('/order/seller/unorder/invoice/save', jsonData, fnInvoiceSaveCollback);
+
+			}
+		});
+
+	});
+
+	// 초기화 클릭시
+	$('#btnInit').on('click', function() {
+		$('#searchForm')[0].reset();
+		$("#multiBrand").empty();
+	});
+
+	// 자사/입점 변경여부
+	$("#searchForm input[name=selfYn]").bind('click change', function () {
+		var radioValue = $(this).val();
+		var selfGb = "S";	// 자사 공급 업체
+
+		if (radioValue == "N"){
+			selfGb = "E";	//입점 공급업체
+		}
+
+		var actionUrl = '/renderer/supply/company/list/'+ selfGb;
+
+		$('#searchForm').find('#multiBrand').empty();
+
+		cfnCreateCombo(actionUrl, $('#searchForm select[name=supplyCompCd]'), "[전체]", "");
+	});
+
+	// 업체변경시
+	$('#searchForm select[name=supplyCompCd]').on('change', function() {
+		var actionUrl = '/renderer/supplyCompany/brand/list/' + $(this).val();
+
+		if (sessRoleCd == "G001_B000") {
+			actionUrl = '/renderer/brand/AuthBrandlist';
+		}
+
+		cfnCreateMultiCombo(actionUrl,"multiBrand",  "[전체]",null, 'Y');
+	});
+
+	//초기설정
+	$(document).ready(function() {
+		// 달력기능 활성화
+		cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '주문');
+		gagaAgGrid.createGrid('gridList', gridOptions);
+		gridOptions.api.hideOverlay();
+	});
+
+</script>
+
+</html>
+
+
+
+
+

+ 6 - 28
src/main/webapp/WEB-INF/views/order/OrderSellerDelvListForm.html

@@ -48,14 +48,14 @@ var columnDefs = [
 	{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
 	{headerName: "입점업체",			field:"supplyCompNm",		width:70, cellClass: 'text-center'},
 	{headerName: "입점업체코드",		field:"supplyCompCd",		width:80, cellClass: 'text-center', hide: true},
-	{headerName: "브랜드",				field:"brandKnm",			width:80, cellClass: 'text-center'},
+	{headerName: "브랜드",			field:"brandKnm",			width:80, cellClass: 'text-center'},
 	{headerName: "주문번호",			field:"ordNo",				width:70, cellClass: 'text-center'},
 	{headerName: "주문상세번호",		field:"ordDtlNo",			width:100, cellClass: 'text-center'},
 	{headerName: "업체상품코드",		field:"supplyGoodsCd",		width:100, cellClass: 'text-center'},
 	{headerName: "상품코드",			field:"goodsCd",			width:100, cellClass: 'text-center'},
-	{headerName: "상품명",				field:"goodsNm",			width:100, cellClass: 'text-center'},
-	{headerName: "옵션1",				field:"optCd1",				width:100, cellClass: 'text-center'},
-	{headerName: "옵션2",				field:"optCd2",				width:100, cellClass: 'text-center'},
+	{headerName: "상품명",			field:"goodsNm",			width:300, cellClass: 'text-center'},
+	{headerName: "옵션1",			field:"optCd1",				width:100, cellClass: 'text-center'},
+	{headerName: "옵션2",			field:"optCd2",				width:100, cellClass: 'text-center'},
 	{headerName: "배송업체",			field:"shipCompCd",			width:120, cellClass: 'text-center'
 		, valueFormatter: function (params) {
 			return gagaAgGrid.lookupValue(shipCompanyList, params.value);
@@ -67,33 +67,11 @@ var columnDefs = [
 	{headerName: "송장",				field:"invoiceNo",			width:120, cellClass: 'text-center'},
 	{headerName: "주문수량",			field:"ordQty",				width:100, cellClass: 'text-center'},
 	{headerName: "취소수량",			field:"cnclRtnQty",			width:100, cellClass: 'text-center'},
-	{headerName: "출고수량",			field:"delvQty",			width:100, cellClass: 'text-center'},
-	{headerName: "미출고수량",		field:"cancelQty",			width:100, cellClass: 'text-center'
-		, editable 			: true
-		, cellEditor		: 'agRichSelectCellEditor'
-		, cellStyle			: {color: '#fffff', 'background-color': '#aaaaff'}
-		, cellEditorParams	: function(params){
-			if(params.data.ordExchGb == "E") {
-				return {value : [0]};
-			} else {
-				var qtyList = new Array();
-				for(var i = 0 ; i <= params.data.ordQty ; i++) qtyList.push(i);
-				return {values: qtyList};
-			}
-		},
-		onCellValueChanged : function(params) {
-			if(params.data.cancelQty > -1) {
-				params.data.cnclRtnQty = params.data.cancelQty;
-				params.data.delvQty = params.data.ordQty - params.data.cancelQty;
-				gridOptions.api.refreshCells();
-			}
-		}
-	},
 	{headerName: "결품수량",			field: "cnclRtnQty",		width: 100, cellClass: 'text-center', hide: true},
-	{headerName: "결제PG",				field: "pgGb",				width: 100, cellClass: 'text-center', hide: true},
+	{headerName: "결제PG",			field: "pgGb",				width: 100, cellClass: 'text-center', hide: true},
 	{headerName: "결제수단",			field: "payMeans",			width: 100, cellClass: 'text-center', hide: true},
 	{headerName: "고객번호",			field: "custNo",			width: 100, cellClass: 'text-center', hide: true},
-	{headerName: "주문고객명",			field: "ordNm",				width: 100, cellClass: 'text-center', hide: true},
+	{headerName: "주문고객명",		field: "ordNm",				width: 100, cellClass: 'text-center', hide: true},
 	{headerName: "환불계좌은행코드",	field: "bankCd",			width: 100, cellClass: 'text-center', hide: true},
 	{headerName: "환불계좌예금주명",	field: "accountNm",			width: 100, cellClass: 'text-center', hide: true},
 	{headerName: "환불계좌번호",		field: "accountNo",			width: 100, cellClass: 'text-center', hide: true}

+ 4 - 4
src/main/webapp/WEB-INF/views/order/OrderSellerListForm.html

@@ -108,8 +108,8 @@
 			</div>
 		</div>
 
-		<!--<div class="panelStyle">
-			<ul class="panelBar">
+		<div class="panelStyle">
+			<!--<ul class="panelBar">
 				<li>
 					<button type="button" class="btn btn-info btn-lg" onclick="cfnDownloadSampleFile('SF020');">입점송장번호등록다운로드</button>
 				</li>
@@ -118,12 +118,12 @@
 					<button type="button" id="btnInvoiceExcelUpLoad" class="btn btn-success btn-lg">송장엑셀업로드</button>
 					<button type="button" id="btnSave" class="btn btn-success btn-lg">저장</button>
 				</li>
-			</ul>
+			</ul>-->
 			
 			<div class="panelContent" style="overflow: hidden;">
 				<div id="gridList" style="width: 100%; height: 600px;" class="ag-theme-balham lh30"></div>
 			</div>
-		</div>-->
+		</div>
 		
 		<!-- //리스트 영역 -->
 		<label class="off">