Quellcode durchsuchen

한세ERP매출반영 추가

gagamel vor 4 Jahren
Ursprung
Commit
73528738d0

+ 27 - 0
src/main/java/com/style24/admin/biz/dao/TsaSettleDao.java

@@ -5,6 +5,7 @@ import java.util.Collection;
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.AflinkFee;
 import com.style24.persistence.domain.DelvFeeSettle;
+import com.style24.persistence.domain.Erp;
 import com.style24.persistence.domain.GiftcardSettle;
 import com.style24.persistence.domain.GoodsSettle;
 import com.style24.persistence.domain.SettleConfirm;
@@ -113,4 +114,30 @@ public interface TsaSettleDao {
 	 */
 	Collection<AflinkFee> getAfLinkFeeList(AflinkFee afLinkFee);
 
+	/**
+	 * 한세ERP매출반영 목록
+	 * @param erp - 한세ERP 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 11. 1
+	 */
+	Collection<Erp> getHansaeSalesUploadList(Erp erp);
+
+	/**
+	 * 한세스타일매핑 정보
+	 * @param erp - 한세ERP 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 11. 1
+	 */
+	Erp getHansaeStyleMapping(Erp erp);
+
+	/**
+	 * 한세스타일매핑 정보 등록
+	 * @param erp - 한세ERP 정보
+	 * @author gagamel
+	 * @since 2021. 11. 1
+	 */
+	void saveHansaeStyleMapping(Erp erp);
+
 }

+ 36 - 0
src/main/java/com/style24/admin/biz/service/TsaSettleService.java

@@ -13,6 +13,7 @@ import com.style24.admin.support.env.TsaConstants;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.persistence.domain.AflinkFee;
 import com.style24.persistence.domain.DelvFeeSettle;
+import com.style24.persistence.domain.Erp;
 import com.style24.persistence.domain.GiftcardSettle;
 import com.style24.persistence.domain.GoodsSettle;
 import com.style24.persistence.domain.SettleConfirm;
@@ -196,4 +197,39 @@ public class TsaSettleService {
 		return settleDao.getAfLinkFeeList(afLinkFee);
 	}
 
+	/**
+	 * 한세ERP매출반영 목록
+	 * @param erp - 한세ERP 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 11. 1
+	 */
+	public Collection<Erp> getHansaeSalesUploadList(Erp erp) {
+		return settleDao.getHansaeSalesUploadList(erp);
+	}
+
+	/**
+	 * 한세스타일매핑 정보
+	 * @param erp - 한세ERP 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 11. 1
+	 */
+	public Erp getHansaeStyleMapping(Erp erp) {
+		return settleDao.getHansaeStyleMapping(erp);
+	}
+
+	/**
+	 * 한세스타일매핑 정보 등록
+	 * @param erp - 한세ERP 정보
+	 * @author gagamel
+	 * @since 2021. 11. 1
+	 */
+	@Transactional("shopTxnManager")
+	public void saveHansaeStyleMapping(Erp erp) {
+		erp.setRegNo(TsaSession.getInfo().getUserNo());
+		erp.setUpdNo(TsaSession.getInfo().getUserNo());
+		settleDao.saveHansaeStyleMapping(erp);
+	}
+
 }

+ 84 - 0
src/main/java/com/style24/admin/biz/web/TsaSettleController.java

@@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
@@ -26,6 +27,7 @@ import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.domain.AflinkFee;
 import com.style24.persistence.domain.DelvFeeSettle;
+import com.style24.persistence.domain.Erp;
 import com.style24.persistence.domain.GiftcardSettle;
 import com.style24.persistence.domain.GoodsSettle;
 import com.style24.persistence.domain.SettleConfirm;
@@ -415,4 +417,86 @@ public class TsaSettleController extends TsaBaseController {
 		return settleService.getAfLinkFeeList(aflinkFee);
 	}
 
+	/**
+	 * 한세ERP매출반영 화면
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 11. 1
+	 */
+	@GetMapping("/hansae/sales/upload/form")
+	public ModelAndView hansaeSalesUploadForm() {
+		ModelAndView mav = new ModelAndView();
+
+		mav.setViewName("settle/HansaeSalesUploadForm");
+
+		return mav;
+	}
+
+	/**
+	 * 한세ERP매출반영 목록
+	 * @param erp - 한세ERP 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 11. 1
+	 */
+	@PostMapping("/hansae/sales/upload/list")
+	@ResponseBody
+	public Collection<Erp> getHansaeSalesUploadList(@RequestBody Erp erp) {
+		return settleService.getHansaeSalesUploadList(erp);
+	}
+
+	/**
+	 * 한세스타일매핑 화면
+	 * @param erpGb - ERP구분(hsmk: 한세MK, hsdr: 한세드림)
+	 * @param cdStyle - 스타일코드
+	 * @param color - 색상코드
+	 * @param sizeCd - 사이즈코드
+	 * @param dsError - 실패메시지
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 11. 1
+	 */
+	@GetMapping("/hansae/style/mapping/form")
+	public ModelAndView hansaeStyleMappingForm(@RequestParam(value = "erpGb") String erpGb, @RequestParam(value = "cdStyle") String cdStyle, @RequestParam(value = "cdColor") String cdColor, @RequestParam(value = "cdSize") String cdSize, @RequestParam(value = "dsError") String dsError) {
+		ModelAndView mav = new ModelAndView();
+
+		Erp erp = new Erp();
+		erp.setErpGb(erpGb);
+		erp.setCdStyle(cdStyle);
+		erp.setCdColor(cdColor);
+		erp.setCdSize(cdSize);
+
+		Erp styleInfo = settleService.getHansaeStyleMapping(erp);
+
+		if (styleInfo == null) {
+			styleInfo = new Erp();
+			styleInfo.setErpGb(erpGb);
+			styleInfo.setCdStyle(cdStyle);
+			styleInfo.setCdColor(cdColor);
+			styleInfo.setCdSize(cdSize);
+		}
+
+		styleInfo.setDsError(dsError);
+
+		mav.addObject("styleInfo", styleInfo);
+
+		mav.setViewName("settle/HansaeStyleMappingForm");
+
+		return mav;
+	}
+
+	/**
+	 * 한세스타일매핑 저장 처리
+	 * @param erp - 한세ERP 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 11. 1
+	 */
+	@PostMapping("/hansae/style/mapping/save")
+	@ResponseBody
+	public GagaResponse saveHansaeStyleMapping(@RequestBody Erp erp) {
+		settleService.saveHansaeStyleMapping(erp);
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+
 }

+ 95 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaSettle.xml

@@ -793,5 +793,100 @@
 		GROUP  BY AF_CHANNEL, AF_LINK_CD, AF_LINK_NM, OCCUR_DT, ORD_NO, ORD_DTL_STAT
 		ORDER  BY AF_CHANNEL, AF_LINK_CD, AF_LINK_NM, OCCUR_DT, ORD_NO, ORD_DTL_STAT
 	</select>
+	
+	<!-- 한세ERP매출반영 목록 -->
+	<select id="getHansaeSalesUploadList" parameterType="Erp" resultType="Erp">
+		/* TsaSettle.getHansaeSalesUploadList */
+		SELECT ERP_GB                                     /*ERP구분*/
+		     , DATE_FORMAT(DT_SALE,'%Y-%m-%d') AS DT_SALE /*판매일자*/
+		     , TP_SALE                                    /*판매구분(1:판매, 2:환불)*/
+		     , CD_STYLE                                   /*스타일코드*/
+		     , CD_COLOR                                   /*색상코드*/
+		     , CD_SIZE                                    /*사이즈코드*/
+		     , BRAND_CD                                   /*브랜드코드*/
+		     , QT_SALE                                    /*판매수량*/
+		     , AM_ACSALE                                  /*실판매금액*/
+		     , DS_REMARK                                  /*비고*/
+		     , NO_IF                                      /*I/F번호*/
+		     , CD_SALEBILL                                /*판매전표번호*/
+		     , DS_ERROR                                   /*실패메시지*/
+		     , CASE WHEN DS_ERROR IS NOT NULL
+		                 AND
+		                 IFNULL((SELECT COUNT(*)
+		                         FROM   TB_HANSAE_STYLE
+		                         WHERE  ERP_GB = HS.ERP_GB
+		                         AND    CD_STYLE = HS.CD_STYLE
+		                         AND    CD_COLOR = HS.CD_COLOR
+		                         AND    CD_SIZE = HS.CD_SIZE
+		                        ),0) > 0 THEN 'Y'
+		            ELSE
+		                'N'
+		       END                             MAPPING_YN /*매핑등록여부*/
+		FROM   TB_HANSAE_SALES HS
+		WHERE  ERP_GB = #{erpGb}
+		AND    DT_SALE BETWEEN REPLACE(#{startDt},'-','') AND REPLACE(#{endDt},'-','')
+		<if test='status == "S"'> <!-- 성공건 -->
+		AND    CD_SALEBILL IS NOT NULL
+		AND    DS_ERROR IS NULL
+		</if>
+		<if test='status == "F"'> <!-- 실패건 -->
+		AND    CD_SALEBILL IS NULL
+		AND    DS_ERROR IS NOT NULL
+		</if>
+	</select>
+	
+	<!-- 한세스타일매핑 정보 -->
+	<select id="getHansaeStyleMapping" parameterType="Erp" resultType="Erp">
+		/* TsaSettle.getHansaeStyleMapping */
+		SELECT ERP_GB        /*ERP구분*/
+		     , CD_STYLE      /*스타일코드*/
+		     , CD_COLOR      /*색상코드*/
+		     , CD_SIZE       /*사이즈코드*/
+		     , ERP_CD_STYLE  /*ERP스타일코드*/
+		     , ERP_CD_COLOR  /*ERP색상코드*/
+		     , ERP_CD_SIZE   /*ERP사이즈코드*/
+		FROM   TB_HANSAE_STYLE
+		WHERE  ERP_GB = #{erpGb}
+		AND    CD_STYLE = #{cdStyle}
+		AND    CD_COLOR = #{cdColor}
+		AND    CD_SIZE = #{cdSize}
+	</select>
+	
+	<!-- 한세스타일매핑 정보 등록 -->
+	<update id="saveHansaeStyleMapping" parameterType="Erp">
+		/* TsaSettle.saveHansaeStyleMapping */
+		INSERT INTO TB_HANSAE_STYLE (
+		       ERP_GB
+		     , CD_STYLE
+		     , CD_COLOR
+		     , CD_SIZE
+		     , ERP_CD_STYLE
+		     , ERP_CD_COLOR
+		     , ERP_CD_SIZE
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       #{erpGb}
+		     , #{cdStyle}
+		     , #{cdColor}
+		     , #{cdSize}
+		     , #{erpCdStyle}
+		     , #{erpCdColor}
+		     , #{erpCdSize}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+		ON DUPLICATE KEY UPDATE
+		       ERP_CD_STYLE = #{erpCdStyle}
+		     , ERP_CD_COLOR = #{erpCdColor}
+		     , ERP_CD_SIZE = #{erpCdSize}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+	</update>
 
 </mapper>

+ 198 - 0
src/main/webapp/WEB-INF/views/settle/HansaeSalesUploadForm.html

@@ -0,0 +1,198 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : HansaeSalesUploadForm.html
+ * @desc    : 한세ERP매출반영 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.11.01   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="@{'/settle/hansae/sales/upload/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/>
+					</colgroup>
+					<tr>
+						<th>ERP구분<i class="required" title="필수" aria-hidden="true"></i></th>
+						<td>
+							<select name="erpGb">
+								<option value="hsmk">[hsmk] 한세MK</option>
+								<option value="hsdr">[hsdr] 한세드림</option>
+							</select>
+						</td>
+						<th>판매기간<i class="required" title="필수" aria-hidden="true"></i></th>
+						<td id="terms">
+						</td>
+					</tr>
+					<tr>
+						<th>업로드결과</th>
+						<td colspan="3">
+							<select name="status">
+								<option value="">[전체]</option>
+								<option value="S">[S] 성공</option>
+								<option value="F">[F] 실패</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>
+					<p>
+<!-- 						<span class="infoTxt cBlue"><i class="fa fa-info-circle" aria-hidden="true"></i>매출반영이 아직 전송되지 않은 건은 <strong>[미전송건업로드]</strong> 버튼을 클릭해 전송하세요. <u>(전일자 매출은 배치를 통해 자동으로 ERP로 전송됩니다.)</u></span><br/> -->
+						<span class="infoTxt cRed"><i class="fa fa-info-circle" aria-hidden="true"></i>실패건들은 <u>"실패메시지"를 클릭해 옵션을 올바르게 변경</u>하고 그 후 <strong>[실패건업로드]</strong> 버튼을 클릭해 재전송 하세요.</span>
+					</p>
+				</li>
+				<li class="right">
+<!-- 					<button type="button" class="btn btn-base btn-lg" id="btnSendNoUploadedSales">미전송건업로드</button> -->
+					<button type="button" class="btn btn-warning btn-lg" id="btnResendFailSales">실패건업로드</button>
+					<button type="button" class="btn btn-default btn-lg" id="btnExcel">엑셀다운로드</button>
+				</li>
+			</ul>
+			<!-- //버튼 배치 영역 -->
+			
+			<div id="gridList" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
+		</div>
+		<!-- //리스트 영역 -->
+	</div>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+	let columnDefs = [
+		{
+			width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false,
+			checkboxSelection: function (params) { return !gagajf.isNull(params.data.dsError) ? true : false; }
+		},
+		{
+			headerName: "ERP구분", field: "erpGb", width: 80, cellClass: 'text-center',
+			cellRenderer: function(params) { return params.value == 'hsmk' ? '한세MK' : '한세드림'; }
+		},
+		{ headerName: "판매일자", field: "dtSale", width: 100, cellClass: 'text-center' },
+		{
+			headerName: "판매구분", field: "tpSale", width: 80, cellClass: 'text-center',
+			cellRenderer: function(params) { return params.value == '1' ? '판매' : '환불'; }
+		},
+		{ headerName: "스타일코드", field: "cdStyle", width: 120, cellClass: 'text-center' },
+		{ headerName: "색상코드", field: "cdColor", width: 100, cellClass: 'text-center' },
+		{ headerName: "사이즈코드", field: "cdSize", width: 100, cellClass: 'text-center' },
+		{
+			headerName: "판매수량", field: "qtSale", width: 100, cellClass: 'text-center',
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); },
+			cellStyle : function(params) { if (Number(params.value) < 0) return { 'color' : 'red' } }
+		},
+		{
+			headerName: "실판매금액", field: "amAcsale", width: 100, cellClass: 'text-right',
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); },
+			cellStyle : function(params) { if (Number(params.value) < 0) return { 'color' : 'red' } }
+		},
+		{ headerName: "I/F번호", field: "ifNo", width: 200, cellClass: 'text-center' },
+		{ headerName: "판매전표번호", field: "cdSalebill", width: 150, cellClass: 'text-center' },
+		{ 
+			headerName: "실패메시지", field: "dsError", width: 300,
+			cellRenderer: function(params) { return gagajf.isNull(params.value) ? '' : ('<a href="javascript:void(0);">' + params.value + '</a>'); }
+		},
+		{ 
+			headerName: "매핑여부", field: "mappingYn", width: 80, cellClass: 'text-center',
+			cellRenderer: function(params) {
+				if (gagajf.isNull(params.data.dsError)) return '';
+				return params.value == 'Y' ? 'Y' : '';
+			}
+		},
+		{ headerName: "반영일시", field: "regDt", width: 150, cellClass: 'text-center' }
+	];
+
+	let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+
+	// 셀 클릭 이벤트
+	gridOptions.onCellClicked = function(event) {
+		if (event.colDef.field != 'dsError')
+			return;
+		
+		if (gagajf.isNull(event.data.dsError))
+			return;
+		
+		let actionUrl = '/settle/hansae/style/mapping/form'
+				+ '?erpGb=' + event.data.erpGb
+				+ '&cdStyle=' + encodeURIComponent(event.data.cdStyle)
+				+ '&cdColor=' + encodeURIComponent(event.data.cdColor)
+				+ '&cdSize=' + encodeURIComponent(event.data.cdSize)
+				+ '&dsError=' + encodeURIComponent(event.data.dsError);
+		cfnOpenModalPopup(actionUrl, 'popupHansaeStyleMapping');
+	}
+	
+	// 검색
+	$('#btnSearch').on('click', function() {
+		// 입력 값 체크
+		if (!gagajf.validation('#searchForm'))
+			return false;
+		
+		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
+	});
+	
+	// 미전송건업로드
+	$('#btnSendNoUploadedSales').on('click', function() {
+		
+	});
+	
+	// 실패건업로드
+	$('#btnResendFailSales').on('click', function() {
+		
+	});
+	
+	// 엑셀다운로드
+	$('#btnExcel').on('click', function() {
+		if (gridOptions.api.getDisplayedRowCount() <= 0) {
+			mcxDialog.alert("조회된 데이터가 없습니다. 조회 후 다운로드 하세요.");
+			return false;
+		}
+		
+		gagaAgGrid.exportToExcel('한세ERP매출반영 목록', gridOptions);
+	});
+	
+	$(document).ready(function() {
+		cfnCreateCalendar('#terms', 'startDt', 'endDt', true, '판매');
+		$('.btnToday').trigger('click');
+		
+		// Create a agGrid
+		gagaAgGrid.createGrid('gridList', gridOptions);
+	});
+/*]]>*/
+</script>
+
+</html>

+ 122 - 0
src/main/webapp/WEB-INF/views/settle/HansaeStyleMappingForm.html

@@ -0,0 +1,122 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : HansaeStyleMappingForm.html
+ * @desc    : 한세ERP스타일매핑 팝업 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.11.01   gagamel     최초 작성
+ *******************************************************************************
+ -->
+<div class="modalPopup" data-width="900" id="popupHansaeStyleMapping">
+	<div class="panelStyle">
+		<!-- TITLE -->
+		<div class="panelTitle">
+			<strong>한세ERP 스타일 매핑</strong>
+			<button type="button" class="close" onclick="uifnPopupClose('popupHansaeStyleMapping');"><em class="fa fa-times"></em></button>
+		</div>
+		<!-- //TITLE -->
+		
+		<!-- CONTENT -->
+		<div class="panelContent">
+			<form id="styleMappingForm" name="styleMappingForm" action="#" th:action="@{'/settle/hansae/style/mapping/save'}" th:method="post">
+				<table class="frmStyle" aria-describedby="상세폼">
+					<colgroup>
+						<col style="width:10%;"/>
+						<col/>
+						<col style="width:10%;"/>
+						<col style="width:15%;"/>
+						<col style="width:10%;"/>
+						<col style="width:15%;"/>
+					</colgroup>
+					<tbody>
+						<tr>
+							<th>ERP구분</th>
+							<td colspan="5">
+								<select name="erpGb">
+									<option value="hsmk" th:selected="${styleInfo.erpGb == 'hsmk'}">[hsmk] 한세MK</option>
+									<option value="hsdr" th:selected="${styleInfo.erpGb == 'hsdr'}">[hsdr] 한세드림</option>
+								</select>
+							</td>
+						</tr>
+						<tr>
+							<th>스타일코드</th>
+							<td>
+								<input type="text" name="cdStyle" maxlength="20" readonly="readonly" th:value="${styleInfo.cdStyle}"/>
+							</td>
+							<th>색상코드</th>
+							<td>
+								<input type="text" name="cdColor" maxlength="20" readonly="readonly" th:value="${styleInfo.cdColor}"/>
+							</td>
+							<th>사이즈코드</th>
+							<td>
+								<input type="text" name="cdSize" maxlength="20" readonly="readonly" th:value="${styleInfo.cdSize}"/>
+							</td>
+						</tr>
+						<tr>
+							<th>ERP스타일코드<i class="required" title="필수" aria-hidden="true"></i></th>
+							<td>
+								<input type="text" name="erpCdStyle" maxlength="20" th:value="${styleInfo?.erpCdStyle}" required="required" data-valid-name="ERP스타일코드"/>
+							</td>
+							<th>ERP색상코드<i class="required" title="필수" aria-hidden="true"></i></th>
+							<td>
+								<input type="text" name="erpCdColor" maxlength="20" th:value="${styleInfo?.erpCdColor}" required="required" data-valid-name="ERP색상코드"/>
+							</td>
+							<th>ERP사이즈코드<i class="required" title="필수" aria-hidden="true"></i></th>
+							<td>
+								<input type="text" name="erpCdSize" maxlength="20" th:value="${styleInfo?.erpCdSize}" required="required" data-valid-name="ERP사이즈코드"/>
+							</td>
+						</tr>
+						<tr>
+							<th>실패메시지</th>
+							<td colspan="5" th:utext="${#strings.replace(#strings.replace(styleInfo.dsError,'&amplt;','<'),'&ampgt;','>')}"></td>
+						</tr>
+					</tbody>
+				</table>
+			</form>
+		</div>
+		<!-- //CONTENT -->
+
+		<!-- 버튼 배치 영역 -->
+		<ul class="panelBar">
+			<li class="right">
+				<button type="button" class="btn btn-info btn-lg" id="btnSaveStyleMapping">저장</button>
+			</li>
+		</ul>
+		<!-- //버튼 배치 영역 -->
+	</div>
+</div>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+	// 저장
+	$('#btnSaveStyleMapping').on('click', function() {
+		// 입력 값 체크
+		if (!gagajf.validation('#styleMappingForm'))
+			return false;
+		
+		mcxDialog.confirm("저장하시겠습니까?", {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				gagajf.ajaxFormSubmit($('#styleMappingForm').prop('action'), '#styleMappingForm', function() {
+					uifnPopupClose('popupHansaeStyleMapping');
+					$('#btnSearch').trigger('click');
+				});
+			}
+		});
+	});
+	
+	$(document).ready(function() {
+		
+	});
+/*]]>*/
+</script>
+
+</html>