ソースを参照

Merge branch 'develop' into bin2107

bin2107 4 年 前
コミット
4a632bddfb

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

@@ -966,15 +966,15 @@ public class TsaGoodsService {
 		goods.setRegNo(TsaSession.getInfo().getUserNo());
 		goods.setUpdNo(TsaSession.getInfo().getUserNo());
 
-		goods.setGoodsDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsDesc(), "&lt;", "<"), "&gt;", ">"));
-		goods.setGoodsPcTopDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsPcTopDesc(), "&lt;", "<"), "&gt;", ">"));
-		goods.setGoodsMobileTopDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsMobileTopDesc(), "&lt;", "<"), "&gt;", ">"));
-		goods.setGoodsPcDownDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsPcDownDesc(), "&lt;", "<"), "&gt;", ">"));
-		goods.setGoodsMobileDownDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsMobileDownDesc(), "&lt;", "<"), "&gt;", ">"));
+//		goods.setGoodsDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsDesc(), "&lt;", "<"), "&gt;", ">"));
+//		goods.setGoodsPcTopDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsPcTopDesc(), "&lt;", "<"), "&gt;", ">"));
+//		goods.setGoodsMobileTopDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsMobileTopDesc(), "&lt;", "<"), "&gt;", ">"));
+//		goods.setGoodsPcDownDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsPcDownDesc(), "&lt;", "<"), "&gt;", ">"));
+//		goods.setGoodsMobileDownDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsMobileDownDesc(), "&lt;", "<"), "&gt;", ">"));
 
-		goods.setGoodsNm(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsNm(), "&lt;", "<"), "&gt;", ">"));
-		goods.setGoodsTnm(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsTnm(), "&lt;", "<"), "&gt;", ">"));
-		goods.setGoodsSnm1(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsSnm1(), "&lt;", "<"), "&gt;", ">"));
+//		goods.setGoodsNm(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsNm(), "&lt;", "<"), "&gt;", ">"));
+//		goods.setGoodsTnm(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsTnm(), "&lt;", "<"), "&gt;", ">"));
+//		goods.setGoodsSnm1(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsSnm1(), "&lt;", "<"), "&gt;", ">"));
 
 		// 딜상품의 대표상품 변경여부 확인
 		if ("G056_D".equals(goods.getGoodsType())) {
@@ -3829,15 +3829,15 @@ public class TsaGoodsService {
 		goods.setRegNo(TsaSession.getInfo().getUserNo());
 		goods.setUpdNo(TsaSession.getInfo().getUserNo());
 
-		goods.setGoodsDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsDesc(), "&lt;", "<"), "&gt;", ">"));
-		goods.setGoodsPcTopDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsPcTopDesc(), "&lt;", "<"), "&gt;", ">"));
-		goods.setGoodsMobileTopDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsMobileTopDesc(), "&lt;", "<"), "&gt;", ">"));
-		goods.setGoodsPcDownDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsPcDownDesc(), "&lt;", "<"), "&gt;", ">"));
-		goods.setGoodsMobileDownDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsMobileDownDesc(), "&lt;", "<"), "&gt;", ">"));
-
-		goods.setGoodsNm(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsNm(), "&lt;", "<"), "&gt;", ">"));
-		goods.setGoodsTnm(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsTnm(), "&lt;", "<"), "&gt;", ">"));
-		goods.setGoodsSnm1(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsSnm1(), "&lt;", "<"), "&gt;", ">"));
+//		goods.setGoodsDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsDesc(), "&lt;", "<"), "&gt;", ">"));
+//		goods.setGoodsPcTopDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsPcTopDesc(), "&lt;", "<"), "&gt;", ">"));
+//		goods.setGoodsMobileTopDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsMobileTopDesc(), "&lt;", "<"), "&gt;", ">"));
+//		goods.setGoodsPcDownDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsPcDownDesc(), "&lt;", "<"), "&gt;", ">"));
+//		goods.setGoodsMobileDownDesc(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsMobileDownDesc(), "&lt;", "<"), "&gt;", ">"));
+//
+//		goods.setGoodsNm(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsNm(), "&lt;", "<"), "&gt;", ">"));
+//		goods.setGoodsTnm(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsTnm(), "&lt;", "<"), "&gt;", ">"));
+//		goods.setGoodsSnm1(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsSnm1(), "&lt;", "<"), "&gt;", ">"));
 
 		// 판매기간설정 eskim
 		goods.setSellStdt(goods.getSellStYMD().replaceAll("-", "") + goods.getSellStHH() + "0000");

+ 8 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsaBusiness.xml

@@ -426,7 +426,14 @@
 		     , UPD_DT
 		)
 		VALUES (
-		       #{delvLocCd}
+		        (CASE WHEN #{mode} = 'N' AND #{delvLocClsf} = 'G024_30' THEN /*입점업체*/
+		                  (SELECT CONCAT('DL',IFNULL(LPAD(SUBSTRING(MAX(DELV_LOC_CD),3) + 1,4,'0'),'0000'))
+		                   FROM   TB_DELIVERY_LOC Z
+		                   WHERE  DELV_LOC_CD LIKE 'DL%')
+		              ELSE
+		                  #{delvLocCd}
+		         END
+		        )
 		     , #{delvLocNm}
 		     , #{supplyCompCd}
 		     , #{delvLocClsf}

+ 21 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml

@@ -132,7 +132,7 @@
 	</update>
 	
 	<!-- 정보고시분류 목록 -->
-	<select id="getNotiInfoList" parameterType="NotiInfo" resultType="NotiInfo">
+	<select id="getNotiInfoList_org" parameterType="NotiInfo" resultType="NotiInfo">
 		/* TsaGoods.getNotiInfoList */
 		SELECT B.SUPPLY_COMP_CD
 		     , B.NI_CLSF_CD
@@ -154,6 +154,26 @@
 		ORDER BY B.NI_CLSF_CD, B.DISP_ORD
 	</select>
 	
+	<!-- 정보고시분류 목록 -->
+	<select id="getNotiInfoList" parameterType="NotiInfo" resultType="NotiInfo">
+		/* TsaGoods.getNotiInfoList */
+		SELECT DISTINCT B.SUPPLY_COMP_CD
+		     , B.NI_CLSF_CD
+		     , C.CD_NM AS NI_CLSF_NM
+		     , C.DISP_ORD
+		FROM TB_NOTI_INFO B
+		INNER JOIN TB_COMMON_CODE C ON B.NI_CLSF_CD = C.CD 
+		WHERE B.SUPPLY_COMP_CD = CASE #{supplyCompCd} 
+		                         WHEN '1' THEN '1'
+		                         WHEN '2' THEN '2'
+		                         WHEN '3' THEN '3'
+		                         WHEN '4' THEN '4'
+		                         WHEN '5' THEN '5'
+		                         ELSE 'E' END 
+		AND C.CD_GB = 'G004'   /*고시정보*/
+		ORDER BY C.DISP_ORD
+	</select>
+	
 	<!-- 정보고시 상세 목록 -->
 	<select id="getNotiInfoItemList" parameterType="NotiInfo" resultType="NotiInfo">
 		/* TsaGoods.getNotiInfoItemList */

+ 410 - 382
src/main/webapp/WEB-INF/views/business/DeliveryLocForm.html

@@ -1,382 +1,410 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : DeliveryLocForm.html
- * @desc    : 출고처관리 Page
- *============================================================================
- * STYLE24
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.10.14   gagamel     최초 작성
- *******************************************************************************
- -->
-	<div id="main">
-		<!-- 메인타이틀 영역 -->
-		<div class="main-title">
-		</div>
-		<!-- //메인타이틀 영역 -->
-		
-		<!-- 메뉴 설명 -->
-		<div class="infoBox menu-desc">
-		</div>
-		<!-- //메뉴 설명 -->
-		
-		<!-- 검색조건 영역 -->
-		<div class="panelStyle">
-			<form id="searchForm" name="searchForm" action="#" th:action="@{'/business/supply/company/delvloc/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
-				<table class="frmStyle" aria-describedby="검색조건">
-					<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/>
-					</colgroup>
-					<tr>
-						<th>공급업체</th>
-						<td>
-							<select name="supplyCompCd">
-								<option value="">[전체]</option>
-								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-						</td>
-						<th>출고처유형</th>
-						<td>
-							<select name="delvLocClsf">
-								<option value="">[전체]</option>
-								<option th:if="${delvLocClsfList}" th:each="oneData, status : ${delvLocClsfList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-						</td>
-						<th>출고처명</th>
-						<td>
-							<input type="text" name="delvLocNm" maxlength="50"/>
-						</td>
-						<th>사용여부</th>
-						<td>
-							<select name="useYn">
-								<option value="Y">Yes</option>
-								<option value="N">No</option>
-							</select>
-						</td>
-					</tr>
-				</table>
-				
-				<ul class="panelBar">
-					<li class="center">
-						<button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
-						<button type="button" class="btn btn-gray btn-lg" onclick="$('#searchForm')[0].reset();">초기화</button>
-					</li>
-				</ul>
-			</form>
-		</div>
-		<!-- 검색조건 영역 -->
-
-		<!-- 리스트 영역 -->
-		<div class="panelStyle">
-			<!-- 버튼 배치 영역 -->
-			<ul class="panelBar">
-				<li class="right">
-					<button type="button" class="btn btn-default btn-lg" id="btnExcel">엑셀다운로드</button>
-				</li>
-			</ul>
-			<!-- //버튼 배치 영역 -->
-			
-			<div id="gridList" style="width: 100%; height: 470px" class="ag-theme-balham"></div>
-		</div>
-		<!-- //리스트 영역 -->
-		
-		<!-- 등록/수정 -->
-		<div class="panelStyle">
-			<form id="detailForm" name="detailForm" action="#" th:action="@{'/business/supply/company/delvloc/save'}">
-				<table class="frmStyle" aria-describedby="등록/수정 폼">
-					<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>출고처코드<i class="required" title="필수"></i></th>
-						<td>
-							<input type="text" class="w100" name="delvLocCd" maxlength="20" placeholder="출고처코드" required="required" data-valid-type="alphaNumeric" data-valid-name="출고처코드"/>
-						</td>
-						<th>출고처명<i class="required" title="필수"></i></th>
-						<td>
-							<input type="text" class="w200" name="delvLocNm" maxlength="100" placeholder="출고처명" required="required" data-valid-name="출고처명"/>
-						</td>
-						<th>출고처유형<i class="required" title="필수"></i></th>
-						<td>
-							<select name="delvLocClsf" required="required" data-valid-name="출고처유형">
-								<option value="">[선택]</option>
-								<option th:if="${delvLocClsfList}" th:each="oneData, status : ${delvLocClsfList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-						</td>
-						<th>공급업체<i class="required" title="필수"></i></th>
-						<td>
-							<select name="supplyCompCd" required="required" data-valid-name="공급업체">
-								<option value="">[선택]</option>
-								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-						</td>
-					</tr>
-					<tr>
-						<th>재고적용율</th>
-						<td colspan="3">
-							<input type="text" class="w100 aR" name="stockApplRate" maxlength="5" data-valid-type="real"/>%
-							<span class="cBlue">* WMS부터 수신된 재고의 판매가용재고 적용율(%). 물류창고와 직송매장에 한함</span>
-						</td>
-						<th>출고수수료율</th>
-						<td colspan="3">
-							<input type="text" class="w100 aR" name="delvFeeRate" maxlength="5" data-valid-type="real"/>%
-							<span class="cBlue">* 직송매장 출고 시 적용할 출고수수료율(%)</span>
-						</td>
-					</tr>
-					<tr>
-						<th>출고지정순서</th>
-						<td colspan="3">
-							<input type="text" class="w100 aR" name="delvAssignOrd" maxlength="3" data-valid-type="integer"/>
-							<span class="cBlue">* 물류창고와 직송매장에 대해 출고지정되는 순서</span>
-						</td>
-<!-- 						<th>출고지정등급</th> -->
-<!-- 						<td> -->
-<!-- 							<select name="delvAssignGrade"> -->
-<!-- 								<option value="">[선택]</option> -->
-<!-- 								<option value="A">[A] A등급</option> -->
-<!-- 								<option value="B">[B] B등급</option> -->
-<!-- 								<option value="C">[C] C등급</option> -->
-<!-- 								<option value="Z">[Z] 출고지정제외</option> -->
-<!-- 							</select> -->
-<!-- 						</td> -->
-						<th>사용여부<i class="required" title="필수"></i></th>
-						<td colspan="3">
-							<label class="rdoBtn"><input type="radio" name="useYn" value="Y" checked="checked">Yes<span></span></label>
-							<label class="rdoBtn"><input type="radio" name="useYn" value="N">No<span></span></label>
-						</td>
-					</tr>
-					<tr>
-						<th>출고처주소<i class="required" title="필수"></i></th>
-						<td colspan="7">
-							<input type="text" class="w100" name="delvLocZipcode" data-valid-name="출고처 우편번호" readonly="readonly"/>
-							<button type="button" class="btn btn-info btn-sm" onclick="fnOpenDaumAddr('delvLoc');">우편번호찾기</button>
-							<input type="text" class="w300" name="delvLocBaseAddr" required="required" data-valid-name="출고처 기본주소" readonly="readonly"/>
-							-
-							<input type="text" class="w300" name="delvLocDtlAddr" maxlength="100" data-valid-name="출고처 상세주소"/>
-						</td>
-					</tr>
-					<tr>
-						<th>반품처명</th>
-						<td>
-							<input type="text" class="w200" name="rtnLocNm" maxlength="100" placeholder="반품처명"/>
-						</td>
-						<th>반품처주소<i class="required" title="필수"></i></th>
-						<td colspan="5">
-							<input type="text" class="w100" name="rtnLocZipcode" data-valid-name="반품처 우편번호" readonly="readonly"/>
-							<button type="button" class="btn btn-info btn-sm" onclick="fnOpenDaumAddr('rtnLoc');">우편번호찾기</button>
-							<input type="text" class="w300" name="rtnLocBaseAddr" required="required" data-valid-name="반품처 기본주소" readonly="readonly"/>
-							-
-							<input type="text" class="w300" name="rtnLocDtlAddr" maxlength="100" data-valid-name="반품처 상세주소"/>
-						</td>
-					</tr>
-				</table>
-			</form>
-			
-			<!-- 버튼 배치 영역 -->
-			<ul class="panelBar">
-				<li class="right">
-					<button type="button" class="btn btn-info btn-lg" id="btnNew">신규</button>
-					<button type="button" class="btn btn-success btn-lg" id="btnSave">저장</button>
-				</li>
-			</ul>
-			<!-- //버튼 배치 영역 -->
-		</div>
-		<!-- 등록/수정 -->
-	</div>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-	let supplyCompList = gagajf.convertToArray([[${supplyCompList}]]);
-	let delvLocClsfList = gagajf.convertToArray([[${delvLocClsfList}]]);
-	let delvGradeList = { "A":"A등급", "B":"B등급", "C":"C등급", "Z":"출고지정제외" };
-	let invoicePrintTypeList = gagajf.convertToArray([[${invoicePrintTypeList}]]);
-
-	let columnDefs = [
-		{ headerName: "출고처코드", field: "delvLocCd", width: 100, cellClass: 'text-center' },
-		{
-			headerName: "출고처명", field: "delvLocNm", width: 150, cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return '<a href="javascript:void(0);">' + params.value + '</a>';
-			}
-		},
-		{
-			headerName: "출고처유형", field: "delvLocClsf", width: 150, cellClass: 'text-center',
-			valueGetter: function (params) {
-				return gagaAgGrid.lookupValue(delvLocClsfList, params.data.delvLocClsf);
-			}
-		},
-		{
-			headerName: "매장POS", field: "btnPos", width: 120, cellClass: 'text-center',
-			cellRenderer: function(params) {
-				var btn = '';
-				//if (params.value === '21') {
-					btn ='<button type="button" class="btn btn-success btn-sm" onclick="cfnPopPos(\'' + params.data.delvLocCd + '\');\">매장[POS]</button>';
-				//}
-				return btn;
-			}
-		},
-		{
-			headerName: "공급업체", field: "supplyCompCd", width: 150, cellClass: 'text-center',
-			valueGetter: function (params) {
-				return gagaAgGrid.lookupValue(supplyCompList, params.data.supplyCompCd);
-			}
-		},
-		{ headerName: "재고적용율(%)", field: "stockApplRate", width: 120, cellClass: 'text-center' },
-		{ headerName: "출고수수료율(%)", field: "delvFeeRate", width:120, cellClass: 'text-center' },
-		{ headerName: "출고지정순서", field: "delvAssignOrd", width: 120, cellClass: 'text-center' },
-// 		{
-// 			headerName: "출고지정등급", field: "delvAssignGrade", width: 150, cellClass: 'text-center',
-// 			cellRenderer: function (params) {
-// 				return gagaAgGrid.lookupValue(delvGradeList, params.value);
-// 			}
-// 		},
-		{
-			headerName: "송장출력형태", field: "invoicePrintType", width:150 , cellClass: 'text-center',
-			valueGetter: function (params) {
-				return gagaAgGrid.lookupValue(invoicePrintTypeList, params.data.invoicePrintType);
-			}
-		},
-		{ headerName: "출고처우편번호", field: "delvLocZipcode", width: 150, cellClass: 'text-center', hide: true },
-		{ headerName: "출고처기본주소", field: "delvLocBaseAddr", width: 300, hide: true },
-		{ headerName: "출고처상세주소", field: "delvLocDtlAddr", width: 300, hide: true },
-		{ headerName: "반품처명", field: "rtnLocNm", width: 100, cellClass: 'text-center', hide: true },
-		{ headerName: "반품처우편번호", field: "rtnLocZipcode", width: 150, cellClass: 'text-center', hide: true },
-		{ headerName: "반품처기본주소", field: "rtnLocBaseAddr", width: 300, hide: true },
-		{ headerName: "반품처상세주소", field: "rtnLocDtlAddr", width: 300, hide: true },
-		{
-			headerName: "사용여부", field: "useYn", width: 100, cellClass: 'text-center',
-			valueGetter: function (params) { return params.data.useYn == 'Y' ? 'Yes' : 'No'; }
-		}
-	];
-
-	let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
-
-	// Cell click
-	gridOptions.onCellClicked = function(event) {
-		if (event.colDef.field != 'delvLocNm')
-			return;
-		
-		$('#detailForm input[name=delvLocCd]').attr('readonly', true);
-		$('#detailForm input[name=delvLocCd]').val(event.data.delvLocCd);
-		$('#detailForm input[name=delvLocNm]').val(event.data.delvLocNm);
-		$('#detailForm select[name=delvLocClsf]').val(event.data.delvLocClsf);
-		$('#detailForm select[name=supplyCompCd]').val(event.data.supplyCompCd);
-		$('#detailForm input[name=delvAssignOrd]').val(event.data.delvAssignOrd);
-		$('#detailForm select[name=delvAssignGrade]').val(event.data.delvAssignGrade);
-		$('#detailForm input[name=stockApplRate]').val(Number(event.data.stockApplRate).addComma());
-		$('#detailForm input[name=delvFeeRate]').val(Number(event.data.delvFeeRate).addComma());
-		$('#detailForm select[name=invoicePrintType]').val(event.data.invoicePrintType	);
-		$('#detailForm input[name=delvLocZipcode]').val(event.data.delvLocZipcode);
-		$('#detailForm input[name=delvLocBaseAddr]').val(event.data.delvLocBaseAddr);
-		$('#detailForm input[name=delvLocDtlAddr]').val(event.data.delvLocDtlAddr);
-		$('#detailForm input[name=rtnLocZipcode]').val(event.data.rtnLocZipcode);
-		$('#detailForm input[name=rtnLocBaseAddr]').val(event.data.rtnLocBaseAddr);
-		$('#detailForm input[name=rtnLocDtlAddr]').val(event.data.rtnLocDtlAddr);
-		$('#detailForm input[name=rtnLocNm]').val(event.data.rtnLocNm);
-		
-		if (event.data.useYn == 'Y') {
-			$('#detailForm input:radio[name=useYn]').eq(0).attr('checked', true);
-		} else {
-			$('#detailForm input:radio[name=useYn]').eq(1).attr('checked', true);
-		}
-	}
-
-	// 출고처유형 셀렉트박스 변경 시 이벤트
-	$('#detailForm select[name=delvLocClsf]').on('change', function() {
-		let val = $(this).val();
-		
-		if (val == 'G024_10' || val == 'G024_21') { // 물류창고, 직송매장
-			$('#detailForm input[name=stockApplRate]').val(100);
-		} else {
-			$('#detailForm input[name=stockApplRate]').val('');
-		}
-	});
-	
-	// 검색
-	$('#btnSearch').on('click', function() {
-		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
-	});
-
-	// 신규버튼
-	$('#btnNew').on('click', function() {
-		$("#detailForm")[0].reset();
-		$('#detailForm input[name=delvLocCd]').attr('readonly', false);
-		$('#detailForm input[name=delvLocCd]').focus();
-	});
-	
-	// 저장
-	$("#btnSave").on("click", function() {
-		// 필수값 체크
-		if (!gagajf.validation('#detailForm'))
-			return false;
-
-		mcxDialog.confirm("저장하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				gagajf.ajaxFormSubmit($('#detailForm').prop('action'), '#detailForm', function() {
-					$('#btnNew').trigger('click');
-					$('#btnSearch').trigger('click');
-				});
-			}
-		});
-	});
-	
-	// 엑셀다운로드
-	$('#btnExcel').on('click', function() {
-		gagaAgGrid.exportToExcel('출고처 목록', gridOptions);
-	});
-	
-	/**
-	 * DAUM을 이용한 우편번호 팝업 레이어
-	 * @param callbackPosition - 우편번호 정보를 설정할 위치
-	 */
-	var fnOpenDaumAddr = function(callbackPosition) {
-		let daumZip = new daum.Postcode({
-			oncomplete: function(data) {
-				// 우편번호와 주소 정보를 해당 필드에 넣는다.
-				if (callbackPosition == 'delvLoc') {
-					$('#detailForm input[name=delvLocZipcode]').val(data.zonecode);
-					$('#detailForm input[name=delvLocBaseAddr]').val(cfnGetDaumRoadAddr(data));
-					$('#detailForm input[name=delvLocDtlAddr]').focus();
-				} else if (callbackPosition == 'rtnLoc') {
-					$('#detailForm input[name=rtnLocZipcode]').val(data.zonecode);
-					$('#detailForm input[name=rtnLocBaseAddr]').val(cfnGetDaumRoadAddr(data));
-					$('#detailForm input[name=rtnLocDtlAddr]').focus();
-				}
-				
-				cfnCloseDaumAddr();
-			},
-			width: '100%'
-		});
-		
-		cfnOpenDaumAddr(daumZip);
-	}
-	
-	$(document).ready(function() {
-		// Create a agGrid
-		gagaAgGrid.createGrid('gridList', gridOptions);
-	});
-/*]]>*/
-</script>
-
-</html>
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : DeliveryLocForm.html
+ * @desc    : 출고처관리 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2020.10.14   gagamel     최초 작성
+ *******************************************************************************
+ -->
+	<div id="main">
+		<!-- 메인타이틀 영역 -->
+		<div class="main-title">
+		</div>
+		<!-- //메인타이틀 영역 -->
+		
+		<!-- 메뉴 설명 -->
+		<div class="infoBox menu-desc">
+		</div>
+		<!-- //메뉴 설명 -->
+		
+		<!-- 검색조건 영역 -->
+		<div class="panelStyle">
+			<form id="searchForm" name="searchForm" action="#" th:action="@{'/business/supply/company/delvloc/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
+				<table class="frmStyle" aria-describedby="검색조건">
+					<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/>
+					</colgroup>
+					<tr>
+						<th>공급업체</th>
+						<td>
+							<select name="supplyCompCd">
+								<option value="">[전체]</option>
+								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+							</select>
+						</td>
+						<th>출고처유형</th>
+						<td>
+							<select name="delvLocClsf">
+								<option value="">[전체]</option>
+								<option th:if="${delvLocClsfList}" th:each="oneData, status : ${delvLocClsfList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+							</select>
+						</td>
+						<th>출고처명</th>
+						<td>
+							<input type="text" name="delvLocNm" maxlength="50"/>
+						</td>
+						<th>사용여부</th>
+						<td>
+							<select name="useYn">
+								<option value="Y">Yes</option>
+								<option value="N">No</option>
+							</select>
+						</td>
+					</tr>
+				</table>
+				
+				<ul class="panelBar">
+					<li class="center">
+						<button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
+						<button type="button" class="btn btn-gray btn-lg" onclick="$('#searchForm')[0].reset();">초기화</button>
+					</li>
+				</ul>
+			</form>
+		</div>
+		<!-- 검색조건 영역 -->
+
+		<!-- 리스트 영역 -->
+		<div class="panelStyle">
+			<!-- 버튼 배치 영역 -->
+			<ul class="panelBar">
+				<li class="right">
+					<button type="button" class="btn btn-default btn-lg" id="btnExcel">엑셀다운로드</button>
+				</li>
+			</ul>
+			<!-- //버튼 배치 영역 -->
+			
+			<div id="gridList" style="width: 100%; height: 470px" class="ag-theme-balham"></div>
+		</div>
+		<!-- //리스트 영역 -->
+		
+		<!-- 등록/수정 -->
+		<div class="panelStyle">
+			<form id="detailForm" name="detailForm" action="#" th:action="@{'/business/supply/company/delvloc/save'}">
+				<input type="hidden" name="mode" value="N"/>
+				
+				<table class="frmStyle" aria-describedby="등록/수정 폼">
+					<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>출고처코드<i class="required" title="필수"></i></th>
+						<td colspan="7">
+							<input type="text" class="w100" name="delvLocCd" maxlength="20" placeholder="자동생성" required="required" data-valid-type="alphaNumeric" data-valid-name="출고처코드" readonly="readonly"/>
+							<span class="infoTxt cBlue">
+								<i class="fa fa-info-circle" aria-hidden="true"></i>물류창고 : ST0001, <i class="fa fa-info-circle" aria-hidden="true"></i>일반매장/직송매장 : ERP매장코드, <i class="fa fa-info-circle" aria-hidden="true"></i>입점업체 : DL+일련번호4자리로 자동생성
+							</span>
+						</td>
+					</tr>
+					<tr>
+						<th>출고처명<i class="required" title="필수"></i></th>
+						<td>
+							<input type="text" class="w200" name="delvLocNm" maxlength="100" placeholder="출고처명" required="required" data-valid-name="출고처명"/>
+						</td>
+						<th>출고처유형<i class="required" title="필수"></i></th>
+						<td>
+							<select name="delvLocClsf" required="required" data-valid-name="출고처유형">
+								<option value="">[선택]</option>
+								<option th:if="${delvLocClsfList}" th:each="oneData, status : ${delvLocClsfList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+							</select>
+						</td>
+						<th>공급업체<i class="required" title="필수"></i></th>
+						<td colspan="3">
+							<select name="supplyCompCd" required="required" data-valid-name="공급업체">
+								<option value="">[선택]</option>
+								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+							</select>
+						</td>
+					</tr>
+					<tr>
+						<th>재고적용율</th>
+						<td colspan="3">
+							<input type="text" class="w100 aR" name="stockApplRate" maxlength="5" data-valid-type="real"/>%
+							<span class="cBlue">* WMS부터 수신된 재고의 판매가용재고 적용율(%). 물류창고와 직송매장에 한함</span>
+						</td>
+						<th>출고수수료율</th>
+						<td colspan="3">
+							<input type="text" class="w100 aR" name="delvFeeRate" maxlength="5" data-valid-type="real"/>%
+							<span class="cBlue">* 직송매장 출고 시 적용할 출고수수료율(%)</span>
+						</td>
+					</tr>
+					<tr>
+						<th>출고지정순서</th>
+						<td colspan="3">
+							<input type="text" class="w100 aR" name="delvAssignOrd" maxlength="3" data-valid-type="integer"/>
+							<span class="cBlue">* 물류창고와 직송매장에 대해 출고지정되는 순서</span>
+						</td>
+<!-- 						<th>출고지정등급</th> -->
+<!-- 						<td> -->
+<!-- 							<select name="delvAssignGrade"> -->
+<!-- 								<option value="">[선택]</option> -->
+<!-- 								<option value="A">[A] A등급</option> -->
+<!-- 								<option value="B">[B] B등급</option> -->
+<!-- 								<option value="C">[C] C등급</option> -->
+<!-- 								<option value="Z">[Z] 출고지정제외</option> -->
+<!-- 							</select> -->
+<!-- 						</td> -->
+						<th>사용여부<i class="required" title="필수"></i></th>
+						<td colspan="3">
+							<label class="rdoBtn"><input type="radio" name="useYn" value="Y" checked="checked">Yes<span></span></label>
+							<label class="rdoBtn"><input type="radio" name="useYn" value="N">No<span></span></label>
+						</td>
+					</tr>
+					<tr>
+						<th>출고처주소<i class="required" title="필수"></i></th>
+						<td colspan="7">
+							<input type="text" class="w100" name="delvLocZipcode" data-valid-name="출고처 우편번호" readonly="readonly"/>
+							<button type="button" class="btn btn-info btn-sm" onclick="fnOpenDaumAddr('delvLoc');">우편번호찾기</button>
+							<input type="text" class="w300" name="delvLocBaseAddr" required="required" data-valid-name="출고처 기본주소" readonly="readonly"/>
+							-
+							<input type="text" class="w300" name="delvLocDtlAddr" maxlength="100" required="required" data-valid-name="출고처 상세주소"/>
+						</td>
+					</tr>
+					<tr>
+						<th>반품처명</th>
+						<td>
+							<input type="text" class="w200" name="rtnLocNm" maxlength="100" placeholder="반품처명"/>
+						</td>
+						<th>반품처주소<i class="required" title="필수"></i></th>
+						<td colspan="5">
+							<input type="text" class="w100" name="rtnLocZipcode" data-valid-name="반품처 우편번호" readonly="readonly"/>
+							<button type="button" class="btn btn-info btn-sm" onclick="fnOpenDaumAddr('rtnLoc');">우편번호찾기</button>
+							<input type="text" class="w300" name="rtnLocBaseAddr" required="required" data-valid-name="반품처 기본주소" readonly="readonly"/>
+							-
+							<input type="text" class="w300" name="rtnLocDtlAddr" maxlength="100" required="required" data-valid-name="반품처 상세주소"/>
+						</td>
+					</tr>
+				</table>
+			</form>
+			
+			<!-- 버튼 배치 영역 -->
+			<ul class="panelBar">
+				<li class="right">
+					<button type="button" class="btn btn-info btn-lg" id="btnNew">신규</button>
+					<button type="button" class="btn btn-success btn-lg" id="btnSave">저장</button>
+				</li>
+			</ul>
+			<!-- //버튼 배치 영역 -->
+		</div>
+		<!-- 등록/수정 -->
+	</div>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+	let supplyCompList = gagajf.convertToArray([[${supplyCompList}]]);
+	let delvLocClsfList = gagajf.convertToArray([[${delvLocClsfList}]]);
+	let delvGradeList = { "A":"A등급", "B":"B등급", "C":"C등급", "Z":"출고지정제외" };
+	let invoicePrintTypeList = gagajf.convertToArray([[${invoicePrintTypeList}]]);
+
+	let columnDefs = [
+		{ headerName: "출고처코드", field: "delvLocCd", width: 100, cellClass: 'text-center' },
+		{
+			headerName: "출고처명", field: "delvLocNm", width: 150, cellClass: 'text-center',
+			cellRenderer: function(params) {
+				return '<a href="javascript:void(0);">' + params.value + '</a>';
+			}
+		},
+		{
+			headerName: "출고처유형", field: "delvLocClsf", width: 150, cellClass: 'text-center',
+			valueGetter: function (params) {
+				return gagaAgGrid.lookupValue(delvLocClsfList, params.data.delvLocClsf);
+			}
+		},
+// 		{
+// 			headerName: "매장POS", field: "btnPos", width: 120, cellClass: 'text-center',
+// 			cellRenderer: function(params) {
+// 				var btn = '';
+// 				if (params.data.delvLocClsf === 'G024_21') {
+// 					btn ='<button type="button" class="btn btn-success btn-sm" onclick="cfnPopPos(\'' + params.data.delvLocCd + '\');\">매장[POS]</button>';
+// 				}
+// 				return btn;
+// 			}
+// 		},
+		{
+			headerName: "공급업체", field: "supplyCompCd", width: 150, cellClass: 'text-center',
+			valueGetter: function (params) {
+				return gagaAgGrid.lookupValue(supplyCompList, params.data.supplyCompCd);
+			}
+		},
+		{ headerName: "재고적용율(%)", field: "stockApplRate", width: 120, cellClass: 'text-center' },
+		{ headerName: "출고수수료율(%)", field: "delvFeeRate", width:120, cellClass: 'text-center' },
+		{ headerName: "출고지정순서", field: "delvAssignOrd", width: 120, cellClass: 'text-center' },
+// 		{
+// 			headerName: "출고지정등급", field: "delvAssignGrade", width: 150, cellClass: 'text-center',
+// 			cellRenderer: function (params) {
+// 				return gagaAgGrid.lookupValue(delvGradeList, params.value);
+// 			}
+// 		},
+// 		{
+// 			headerName: "송장출력형태", field: "invoicePrintType", width:150 , cellClass: 'text-center',
+// 			valueGetter: function (params) {
+// 				return gagaAgGrid.lookupValue(invoicePrintTypeList, params.data.invoicePrintType);
+// 			}
+// 		},
+		{ headerName: "출고처우편번호", field: "delvLocZipcode", width: 150, cellClass: 'text-center', hide: true },
+		{ headerName: "출고처기본주소", field: "delvLocBaseAddr", width: 300, hide: true },
+		{ headerName: "출고처상세주소", field: "delvLocDtlAddr", width: 300, hide: true },
+		{ headerName: "반품처명", field: "rtnLocNm", width: 100, cellClass: 'text-center', hide: true },
+		{ headerName: "반품처우편번호", field: "rtnLocZipcode", width: 150, cellClass: 'text-center', hide: true },
+		{ headerName: "반품처기본주소", field: "rtnLocBaseAddr", width: 300, hide: true },
+		{ headerName: "반품처상세주소", field: "rtnLocDtlAddr", width: 300, hide: true },
+		{
+			headerName: "사용여부", field: "useYn", width: 100, cellClass: 'text-center',
+			valueGetter: function (params) { return params.data.useYn == 'Y' ? 'Yes' : 'No'; }
+		}
+	];
+
+	let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+
+	// Cell click
+	gridOptions.onCellClicked = function(event) {
+		if (event.colDef.field != 'delvLocNm')
+			return;
+		
+		$('#detailForm input[name=mode]').val('U');
+		$('#detailForm input[name=delvLocCd]').attr('readonly', true);
+		$('#detailForm input[name=delvLocCd]').val(event.data.delvLocCd);
+		$('#detailForm input[name=delvLocNm]').val(event.data.delvLocNm);
+		$('#detailForm select[name=delvLocClsf]').val(event.data.delvLocClsf);
+		$('#detailForm select[name=supplyCompCd]').val(event.data.supplyCompCd);
+		$('#detailForm input[name=delvAssignOrd]').val(event.data.delvAssignOrd);
+		$('#detailForm select[name=delvAssignGrade]').val(event.data.delvAssignGrade);
+		$('#detailForm input[name=stockApplRate]').val(Number(event.data.stockApplRate).addComma());
+		$('#detailForm input[name=delvFeeRate]').val(Number(event.data.delvFeeRate).addComma());
+// 		$('#detailForm select[name=invoicePrintType]').val(event.data.invoicePrintType);
+		$('#detailForm input[name=delvLocZipcode]').val(event.data.delvLocZipcode);
+		$('#detailForm input[name=delvLocBaseAddr]').val(event.data.delvLocBaseAddr);
+		$('#detailForm input[name=delvLocDtlAddr]').val(event.data.delvLocDtlAddr);
+		$('#detailForm input[name=rtnLocZipcode]').val(event.data.rtnLocZipcode);
+		$('#detailForm input[name=rtnLocBaseAddr]').val(event.data.rtnLocBaseAddr);
+		$('#detailForm input[name=rtnLocDtlAddr]').val(event.data.rtnLocDtlAddr);
+		$('#detailForm input[name=rtnLocNm]').val(event.data.rtnLocNm);
+		
+		if (event.data.useYn == 'Y') {
+			$('#detailForm input:radio[name=useYn]').eq(0).attr('checked', true);
+		} else {
+			$('#detailForm input:radio[name=useYn]').eq(1).attr('checked', true);
+		}
+	}
+
+	// 출고처유형 셀렉트박스 변경 시 이벤트
+	$('#detailForm select[name=delvLocClsf]').on('change', function() {
+		let val = $(this).val();
+		let mode = $('#detailForm input[name=mode]').val();
+		
+		if (val == 'G024_10') { // 물류창고
+			if (mode == 'N') {
+				$('#detailForm input[name=delvLocCd]').attr('readonly', true); // 직접입력 불가
+				$('#detailForm input[name=delvLocCd]').val('ST0001');
+			}
+		
+			$('#detailForm input[name=stockApplRate]').val(100);
+		} else if (val == 'G024_20' || val == 'G024_21') { // 일반매장, 직송매장
+			if (mode == 'N') {
+				$('#detailForm input[name=delvLocCd]').attr('readonly', false); // 직접입력 가능
+				$('#detailForm input[name=delvLocCd]').val('');
+				$('#detailForm input[name=delvLocCd]').attr('placeholder', 'ERP매장코드');
+			}
+		
+			$('#detailForm input[name=stockApplRate]').val(100);
+		} else { // 입점업체
+			if (mode == 'N') {
+				$('#detailForm input[name=delvLocCd]').attr('readonly', true); // 직접입력 불가
+				$('#detailForm input[name=delvLocCd]').val('');
+				$('#detailForm input[name=delvLocCd]').attr('placeholder', '자동생성');
+			}
+		
+			$('#detailForm input[name=stockApplRate]').val('');
+		}
+	});
+	
+	// 검색
+	$('#btnSearch').on('click', function() {
+		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
+	});
+
+	// 신규버튼
+	$('#btnNew').on('click', function() {
+		$("#detailForm")[0].reset();
+		$('#detailForm input[name=delvLocCd]').attr('readonly', true);
+		$('#detailForm input[name=delvLocNm]').focus();
+	});
+	
+	// 저장
+	$("#btnSave").on("click", function() {
+		// 필수값 체크
+		if (!gagajf.validation('#detailForm'))
+			return false;
+
+		mcxDialog.confirm("저장하시겠습니까?", {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				gagajf.ajaxFormSubmit($('#detailForm').prop('action'), '#detailForm', function() {
+					$('#btnNew').trigger('click');
+					$('#btnSearch').trigger('click');
+				});
+			}
+		});
+	});
+	
+	// 엑셀다운로드
+	$('#btnExcel').on('click', function() {
+		gagaAgGrid.exportToExcel('출고처 목록', gridOptions);
+	});
+	
+	/**
+	 * DAUM을 이용한 우편번호 팝업 레이어
+	 * @param callbackPosition - 우편번호 정보를 설정할 위치
+	 */
+	var fnOpenDaumAddr = function(callbackPosition) {
+		let daumZip = new daum.Postcode({
+			oncomplete: function(data) {
+				// 우편번호와 주소 정보를 해당 필드에 넣는다.
+				if (callbackPosition == 'delvLoc') {
+					$('#detailForm input[name=delvLocZipcode]').val(data.zonecode);
+					$('#detailForm input[name=delvLocBaseAddr]').val(cfnGetDaumRoadAddr(data));
+					$('#detailForm input[name=delvLocDtlAddr]').focus();
+				} else if (callbackPosition == 'rtnLoc') {
+					$('#detailForm input[name=rtnLocZipcode]').val(data.zonecode);
+					$('#detailForm input[name=rtnLocBaseAddr]').val(cfnGetDaumRoadAddr(data));
+					$('#detailForm input[name=rtnLocDtlAddr]').focus();
+				}
+				
+				cfnCloseDaumAddr();
+			},
+			width: '100%'
+		});
+		
+		cfnOpenDaumAddr(daumZip);
+	}
+	
+	$(document).ready(function() {
+		// Create a agGrid
+		gagaAgGrid.createGrid('gridList', gridOptions);
+	});
+/*]]>*/
+</script>
+
+</html>

+ 1 - 1
src/main/webapp/WEB-INF/views/goods/GoodsWmsIncomelotSkuForm.html

@@ -108,7 +108,7 @@
 		{headerName: "상품코드", field: "goodsCd" , width: 120, cellClass: 'text-center'},
 		{headerName: "검품", field: "normalqty" , width: 120, cellClass: 'text-right'},
 		{headerName: "양품", field: "brokenqty" , width: 120, cellClass: 'text-right'},
-		{headerName: "량", field: "totalqty" , width: 120, cellClass: 'text-right'},
+		{headerName: "총수량", field: "totalqty" , width: 120, cellClass: 'text-right'},
 		{headerName: "등록일시", field: "dateincome", width: 150, cellClass: 'text-center',
 			cellRenderer: function(params) {
 				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDD").format("YYYY-MM-DD") : '';

+ 12 - 6
src/main/webapp/WEB-INF/views/marketing/CouponIssuePopupForm.html

@@ -193,7 +193,7 @@
 		},
 		{
 			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: "availPeriod", width: 300, cellClass: "text-center",
@@ -226,7 +226,6 @@
 	
 	gridOptionsCouponList.rowSelection = 'single';
 	gridOptionsCouponList.rowMultiSelectWithClick = true; // 클릭으로 선택 가능
-	//gridOptionsCouponList.suppressRowClickSelection = true;
 
 	// 셀 클릭 이벤트
 	gridOptionsCouponList.onCellClicked = function (event) {
@@ -264,6 +263,11 @@
 			}
 			custCoupon.availStdt = custCoupon.availStdt+' '+availStHH +':'+ availStMM + ':' +START_END_TIME;
 			custCoupon.availEddt = custCoupon.availEddt+' '+availEdHH +':'+ availEdMM + ':' +END_TIME;
+			let today = new Date().format('YYYY-MM-DD');
+			if (custCoupon.availStdt < today || custCoupon.availEddt < today) {
+				mcxDialog.alert("유효 시작일시 / 유효 종료일시는 오늘일자 보다 크거나 같아야 합니다.");
+				return;
+			}
 		}
 
 		if (custCoupon.pdGb === 'D') {
@@ -298,12 +302,14 @@
 		$('#couponIssueForm input[name=pdGb]').val(params.pdGb);
 
 		if (params.pdGb === 'P') {
+			let stdt = params.availStdt.split(' ')[1].replaceAll(':','');
+			let eddt = params.availEddt.split(' ')[1].replaceAll(':','');
 			$('#couponIssueForm input[name=availStdt]').val(gagaAgGrid.toDateFormat(params.availStdt));
-			$("#couponIssueForm select[name=availStHH]").val(params.availStdt.substring(8,10));
-			$("#couponIssueForm select[name=availStMM]").val(params.availStdt.substring(10,12));
+			$("#couponIssueForm select[name=availStHH]").val(stdt.substring(0, 2));
+			$("#couponIssueForm select[name=availStMM]").val(stdt.substring(2, 4));
 			$('#couponIssueForm input[name=availEddt]').val(gagaAgGrid.toDateFormat(params.availEddt));
-			$("#couponIssueForm select[name=availEdHH]").val(params.availEddt.substring(8,10));
-			$("#couponIssueForm select[name=availEdMM]").val(params.availEddt.substring(10,12));
+			$("#couponIssueForm select[name=availEdHH]").val(eddt.substring(0, 2));
+			$("#couponIssueForm select[name=availEdMM]").val(eddt.substring(2, 4));
 		} else {
 			$('#couponIssueForm input[name=availDays]').val(params.availDays);
 		}