SMRPH00600_정기승급처리.xrw 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <?xml-stylesheet href="../../../com/commonweb/css/common.css" type="text/css" ?>
  3. <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2002/01/xforms" xmlns:ev="http://www.w3.org/2001/xml-events">
  4. <xhtml:head>
  5. <xhtml:title>정기승급처리</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <main>
  10. <promotnflaglist>
  11. <gradupym/>
  12. <instcd/>
  13. <payclsprfshipflag/>
  14. <deptnm/>
  15. <emplno/>
  16. <emplnm/>
  17. <jobrespnm/>
  18. <jobposnm/>
  19. <jobkindnm/>
  20. <ojobgradnm/>
  21. <njobgradnm/>
  22. <payclscd/>
  23. <graduppaycls/>
  24. <gradupmm/>
  25. <anual/>
  26. <limyn/>
  27. <limcd/>
  28. <limresn/>
  29. <cmt/>
  30. <entcodd/>
  31. <grupjoblncd/>
  32. <joblncd/>
  33. <preststatcd/>
  34. <brthdd/>
  35. <gndr/>
  36. <gvnoffcordtretyn/>
  37. <promotngradupflag/>
  38. <deptcd/>
  39. <teamcd/>
  40. <unitcd/>
  41. <jobkindcd/>
  42. <jobposcd/>
  43. <jobrespcd/>
  44. <ojobgradcd/>
  45. <njobgradcd/>
  46. <oldlimyn/>
  47. <oldgvnoffcordtretyn/>
  48. </promotnflaglist>
  49. <listdetail>
  50. <gradupym/>
  51. <instcd/>
  52. <payclsprfshipflag/>
  53. <deptnm/>
  54. <emplno/>
  55. <emplnm/>
  56. <jobrespnm/>
  57. <jobposnm/>
  58. <jobkindnm/>
  59. <ojobgradnm/>
  60. <njobgradnm/>
  61. <payclscd/>
  62. <graduppaycls/>
  63. <gradupmm/>
  64. <anual/>
  65. <limyn/>
  66. <limcd/>
  67. <limresn/>
  68. <cmt/>
  69. <entcodd/>
  70. <grupjoblncd/>
  71. <joblncd/>
  72. <preststatcd/>
  73. <brthdd/>
  74. <gndr/>
  75. <gvnoffcordtretyn/>
  76. <promotngradupflag/>
  77. <deptcd/>
  78. <teamcd/>
  79. <unitcd/>
  80. <jobkindcd/>
  81. <jobposcd/>
  82. <jobrespcd/>
  83. <ojobgradcd/>
  84. <njobgradcd/>
  85. <oldlimyn/>
  86. <oldgvnoffcordtretyn/>
  87. <prfshipflag/>
  88. <adjtyearno/>
  89. <dutunitcd/>
  90. <dutunitnm/>
  91. <dutplceinst/>
  92. </listdetail>
  93. </main>
  94. <send>
  95. <searchcond>
  96. <gradupym/>
  97. <instcd/>
  98. <deptcd/>
  99. <deptnm/>
  100. <emplno/>
  101. <emplnm/>
  102. <limyn/>
  103. <limcd/>
  104. <workgbn/>
  105. <payclsprfshipflag/>
  106. <promotngradupflag/>
  107. <iudflag/>
  108. </searchcond>
  109. <promotnflaglist/>
  110. </send>
  111. <init>
  112. <promconf>
  113. <label>예</label>
  114. <value>Y</value>
  115. <label>아니오</label>
  116. <value>N</value>
  117. </promconf>
  118. <cnfmyn>
  119. <label>전체</label>
  120. <value/>
  121. <label>예</label>
  122. <value>Y</value>
  123. <label>아니오</label>
  124. <value>N</value>
  125. </cnfmyn>
  126. <spref/>
  127. <totcount/>
  128. </init>
  129. <hidden/>
  130. <spreflist>
  131. <spref>
  132. <errormsg/>
  133. <errflag/>
  134. </spref>
  135. </spreflist>
  136. </root>
  137. </instance>
  138. <script type="javascript" ev:event="xforms-ready">
  139. <![CDATA[
  140. misfMsterDetailSet(grd_promotnflaglist,null,"TRRPH00600","Y");
  141. misfGridInit(grd_promotnflaglist);
  142. var curdate = getCurrentDate();
  143. var cvtdate = curdate.toDate("YYYYMM");
  144. model.setValue(ipt_gradupym.attribute("ref") , cvtdate.getAddDate(0,"M").getDateFormat("YYYYMM"));
  145. misfComboComCdList('R0211', cmb_limcd_rsn,'');
  146. misfComboComCdList('R0211', cmb_limcd,'Y');
  147. misfComboComCdList("R0058",cmb_payclsprfshipflag,'Y');
  148. misfComboComCdList("R0058",cmb_payclsprfshipflag_d,'');
  149. misfComboComCdList("R0098",cmb_graduppaycls,'');
  150. misfComboComCdList("R0098",cmb_payclscd,'');
  151. // misfComboComCdList('Z0007', cmb_instcd,'Y');
  152. misfComboInstCdListMulti("cmb_instcd",getCurrentDate(),"","Y","N");
  153. misfComboCopyItemSet(cmb_instcd, "", cmb_instcd_d, "");
  154. misfComboCopyItemSet(cmb_limcd_rsn, "", grd_promotnflaglist, "limcd");
  155. misfComboCopyItemSet(cmb_payclsprfshipflag_d, "", grd_promotnflaglist, "payclsprfshipflag");
  156. misfComboCopyItemSet(cmb_instcd, "", grd_promotnflaglist, "instcd");
  157. model.setValue(cmb_instcd.attribute("ref") , getUserInfo("dutplceinstcd"));
  158. btn_save.disabled = !(checkAuth("X"));
  159. misfGetUserAuth();
  160. if(DUTY_RANK_YN =='Y'){
  161. btn_gnvoffcanbnt.disabled = false;
  162. btn_gnvoffentbnt.disabled = false;
  163. btn_traget.disabled = false;
  164. btn_save.disabled =false;
  165. if(getUserInfo("dutplceinstcd") =='001'){
  166. cmb_instcd.disabled = false;
  167. }else{
  168. cmb_instcd.disabled = true;
  169. }
  170. //misfSetReadOnlyCol(grd_grd01, "trgtpsncnfmyn", false);
  171. }else{
  172. btn_gnvoffcanbnt.disabled = true;
  173. btn_gnvoffentbnt.disabled = true;
  174. btn_traget.disabled = true;
  175. cmb_instcd.disabled = true;
  176. btn_save.disabled =true;
  177. //misfSetReadOnlyCol(grd_grd01, "trgtpsncnfmyn", true);
  178. }
  179. model.refresh();
  180. ]]>
  181. </script>
  182. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  183. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  184. <script type="javascript" src="../../../mis/miscommonweb/js/MIS.js"/>
  185. <script type="javascript" src="../../../mis/promotnmngtweb/js/RPH001.js"/>
  186. <script type="javascript" src="../../../mis/purccommonweb/js/PURC.js"/>
  187. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  188. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  189. <script type="javascript" src="../../../mis/humtrafactmngtweb/js/RPB001.js"/>
  190. <script type="javascript" src="../../../mis/valuationmngtweb/js/RPV001.js"/>
  191. <script type="javascript">
  192. <![CDATA[
  193. function fEnableUpdateButton() {
  194. btn_insert.disabled = true;
  195. btn_update.disabled = false;
  196. }
  197. function fEnableInsertButton(){
  198. btn_insert.disabled = false;
  199. btn_update.disabled = true;
  200. ipt_emplno_d.disabled=false;
  201. ipt_emplnm_d.disabled=false;
  202. btn_emplno.disabled=false;
  203. ipt_gradupym_d.disabled = false;
  204. }
  205. ]]>
  206. </script>
  207. <submission id="TRRPH00600" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/searchcond" resultref="/root/main/promotnflaglist"/>
  208. <submission id="TXRPH00601" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/searchcond" resultref="/root/spreflist"/>
  209. <submission id="TXRPH00600" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/promotnflaglist"/>
  210. </model>
  211. </xhtml:head>
  212. <xhtml:body guideline="2,474;2,589;2,591;1,1433;" style="margin-left:8; margin-right:8; ">
  213. <group id="group1" style="left:0px; top:0px; width:1195px; height:13px; ">
  214. <caption id="caption6" class="tit_1" style="left:0px; top:0px; width:800px; height:14px; ">정기승급처리</caption>
  215. </group>
  216. <group id="group2" scroll="auto" style="left:0px; top:38px; width:1195px; height:732px; ">
  217. <shape id="roundrect1" appearance="roundrect" ellipsewidth="10" ellipseheight="10" style="left:0px; top:10px; width:1195px; height:60px; background-color:#fffbf2; border-color:#ffd799; "/>
  218. <caption id="cap_gradupym" class="search_name" style="left:15px; top:19px; width:86px; height:17px; ">승급년월 :</caption>
  219. <button id="btn_search" class="btn1_letter2" style="left:1125px; top:27px; width:56px; height:22px; ">
  220. <caption>조회</caption>
  221. <script type="javascript" ev:event="DOMActivate">
  222. <![CDATA[
  223. if ( !isRequiredControls("ipt_gradupym") ) return;
  224. model.setValue("/root/send/searchcond/promotngradupflag","1");
  225. misfMsterDetailRetrieve();
  226. var totcount=0;
  227. for(var i = grd_promotnflaglist.fixedRows ; i < grd_promotnflaglist.rows ; i++ ){
  228. totcount=totcount+1;
  229. }
  230. totcount= totcount;
  231. model.setValue("/root/init/totcount",totcount);
  232. model.refresh();
  233. ]]>
  234. </script>
  235. </button>
  236. <line id="line13" class="line_4" style="x1:1110px; y1:17px; x2:1110px; y2:61px; "/>
  237. <caption id="caption278" class="tit_2" style="left:5px; top:79px; width:87px; height:13px; ">후보자 목록</caption>
  238. <line id="line207" class="line_1" style="x1:0px; y1:98px; x2:1195px; y2:98px; "/>
  239. <!--datagrid id="promotnflaglist" nodeset="/root/main/promotnflaglist" caption="기관^부서" colwidth="60, 65" dataheight="25" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowheader="seq" rowheight="25" rowsep="|" colsep="^" style="left:0px; top:74px; width:1195px; height:433px; ">
  240. <col ref="instcd"/>
  241. <col ref="deptcd"/>
  242. </datagrid-->
  243. <line id="line205" class="line_2" style="x1:0px; y1:638px; x2:1193px; y2:638px; "/>
  244. <line id="line206" class="line_2" style="x1:0px; y1:663px; x2:1193px; y2:663px; "/>
  245. <line id="line204" class="line_2" style="x1:0px; y1:613px; x2:1193px; y2:613px; "/>
  246. <caption id="caption283" class="tit_2" style="left:5px; top:567px; width:118px; height:13px; ">등록 및 수정사항</caption>
  247. <line id="line203" class="line_1" style="x1:0px; y1:585px; x2:1193px; y2:585px; "/>
  248. <caption id="cap_instnm" class="search_name" style="left:250px; top:19px; width:110px; height:17px; ">기 관 :</caption>
  249. <input id="ipt_gradupym" ref="/root/send/searchcond/gradupym" class="input_s_essential" inputtype="date" format="yyyy-mm" style="left:105px; top:18px; width:125px; height:19px; ">
  250. <script type="javascript" ev:event="xforms-value-changed">
  251. <![CDATA[
  252. var instcd = cmb_instcd.value;
  253. if( getStringLength(ipt_gradupym.value) == "6" ) {
  254. misfComboInstCdListMulti("cmb_instcd",ipt_gradupym.value+"31","","Y","N");
  255. cmb_instcd.value = instcd;
  256. cmb_instcd.refresh();
  257. }
  258. ]]>
  259. </script>
  260. </input>
  261. <button id="btn_emplnohelp" class="icon_search" style="left:689px; top:44px; width:16px; height:16px; ">
  262. <caption>
  263. <script type="javascript" ev:event="DOMActivate">
  264. <![CDATA[
  265. var precv_list = "emplno" + "," + "emplnm";
  266. //alert(precv_list);
  267. rpbfOpenPopUpList("SPRPB00101", ipt_emplno,precv_list,"ipt_systemflag",'Y');
  268. model.refresh();
  269. ]]>
  270. </script>
  271. </caption>
  272. </button>
  273. <caption id="caption16" class="search_name" style="left:520px; top:45px; width:86px; height:17px; ">사원번호 :</caption>
  274. <input id="ipt_emplno" ref="/root/send/searchcond/emplno" class="input_default" style="left:606px; top:43px; width:80px; height:19px; "/>
  275. <input id="ipt_emplnm" ref="/root/send/searchcond/emplnm" class="input_default" imemode="hangul" style="left:710px; top:43px; width:127px; height:19px; "/>
  276. <button id="btn_emplno" class="icon_search" style="left:154px; top:617px; width:16px; height:16px; ">
  277. <caption/>
  278. <script type="javascript" ev:event="DOMActivate">
  279. <![CDATA[
  280. var recv_list = "emplno,emplnm,dutplceinst,anual,dutunitcd,dutunitnm,teamcd,unitcd,jobkindcd,jobkindnm,jobposcd,jobposnm,jobrespcd,jobrespnm";
  281. recv_list = recv_list+",payclscd,entcodd,grupjoblncd,joblncd,preststatcd,brthdd,gndr,njobgradcd,njobgradnm,prfshipflag,gradupmm,ojobgradcd,ojobgradnm";
  282. payclsprfshipflag
  283. rpbfOpenPopUpList("SPRPB00101", ipt_emplno_d, recv_list,"","N");
  284. cmb_payclsprfshipflag_d.value=ipt_prfshipflag.value;
  285. var dutplceinst = model.getValue("/root/main/listdetail/dutplceinst");
  286. var dutnuitcd = model.getValue("/root/main/listdetail/dutunitcd");
  287. var dutnuitnm = model.getValue("/root/main/listdetail/dutunitnm");
  288. model.makeValue("/root/main/listdetail/instcd",dutplceinst);
  289. model.makeValue("/root/main/listdetail/deptcd",dutnuitcd);
  290. model.makeValue("/root/main/listdetail/deptnm",dutnuitnm);
  291. model.refresh();
  292. //misfOpenPopUpList("01", ipt_emplno,"", recv_list) ;
  293. ]]>
  294. </script>
  295. </button>
  296. <caption id="caption10" style="left:772px; top:616px; width:26px; height:20px; text-align:center; vertical-align:bottom; ">년차</caption>
  297. <select1 id="cmb_instcd" ref="/root/send/searchcond/instcd" class="combo_default" appearance="minimal" itemcount="10" style="left:364px; top:18px; width:140px; height:19px; ">
  298. <choices>
  299. <itemset>
  300. <label/>
  301. <value/>
  302. </itemset>
  303. </choices>
  304. </select1>
  305. <line id="line6" class="line_3" style="x1:0px; y1:718px; x2:1193px; y2:718px; "/>
  306. <button id="button19" class="btn2_letter4" style="left:1120px; top:75px; width:64px; height:19px; ">
  307. <caption>엑셀저장</caption>
  308. <script type="javascript" ev:event="DOMActivate">
  309. <![CDATA[
  310. var fileName = window.fileDialog("save", ",", false, "excel", "xls", "Excel Files(*.xls)|*.xls|All Files (*.*)|*.*");
  311. if (fileName != "")
  312. {
  313. grd_promotnflaglist.saveExcel(fileName, "SheetName", true, true, "", "");
  314. }
  315. ]]>
  316. </script>
  317. </button>
  318. <!--button id="button3" class="btn2_letter3" style="left:955px; top:48px; width:53px; height:19px; ">
  319. <caption>행추가</caption>
  320. <script type="javascript" ev:event="DOMActivate">
  321. <![CDATA[
  322. ]]>
  323. </script>
  324. </button>
  325. <button id="button4" class="btn2_letter3" style="left:1010px; top:48px; width:53px; height:19px; ">
  326. <caption>행삭제</caption>
  327. <script type="javascript" ev:event="DOMActivate">
  328. <![CDATA[
  329. ]]>
  330. </script>
  331. </button-->
  332. <input id="input7" ref="/root/main/listdetail/ojobgradnm" class="input_default" editable="false" style="left:658px; top:616px; width:104px; height:19px; "/>
  333. <input id="input8" ref="/root/main/listdetail/anual" class="input_default" editable="false" style="left:806px; top:616px; width:47px; height:19px; "/>
  334. <input id="input20" ref="/root/main/listdetail/limresn" class="input_default" style="left:860px; top:667px; width:285px; height:19px; "/>
  335. <caption id="caption11" class="cell_1" style="left:0px; top:665px; width:82px; height:23px; vertical-align:middle; ">부서</caption>
  336. <input id="ipt_emplno_d" ref="/root/main/listdetail/emplno" class="input_default" disabled="false" editable="false" style="left:85px; top:616px; width:65px; height:19px; "/>
  337. <caption id="cap_promotnflag_d" class="cell_1" style="left:857px; top:590px; width:82px; height:23px; vertical-align:middle; ">직위</caption>
  338. <caption id="caption4" class="cell_1" style="left:572px; top:615px; width:82px; height:23px; vertical-align:middle; ">직급</caption>
  339. <caption id="cap_ojobgradcd_d" class="cell_1" style="left:285px; top:615px; width:82px; height:23px; vertical-align:middle; ">신직급</caption>
  340. <select1 id="cmb_limcd_rsn" ref="/root/main/listdetail/limcd" class="combo_default" appearance="minimal" style="left:658px; top:667px; width:195px; height:19px; ">
  341. <choices>
  342. <itemset>
  343. <label/>
  344. <value/>
  345. </itemset>
  346. </choices>
  347. </select1>
  348. <input id="input2" ref="/root/main/listdetail/jobkindnm" class="input_default" editable="false" style="left:658px; top:591px; width:195px; height:19px; "/>
  349. <input id="input3" ref="/root/main/listdetail/deptnm" class="input_default" editable="false" style="left:85px; top:667px; width:195px; height:19px; "/>
  350. <input id="ipt_emplnm_d" ref="/root/main/listdetail/emplnm" class="input_default" editable="false" style="left:175px; top:616px; width:105px; height:19px; "/>
  351. <caption id="cap_emplno_d" class="cell_1" style="left:0px; top:615px; width:82px; height:23px; vertical-align:middle; ">사번</caption>
  352. <caption id="caption9" class="cell_1" style="left:0px; top:640px; width:82px; height:23px; vertical-align:middle; ">기관</caption>
  353. <input id="input4" ref="/root/main/listdetail/jobposnm" class="input_default" editable="false" style="left:944px; top:591px; width:195px; height:19px; "/>
  354. <input id="input5" ref="/root/main/listdetail/jobrespnm" class="input_default" editable="false" style="left:944px; top:615px; width:195px; height:19px; "/>
  355. <caption id="caption20" class="cell_1" style="left:285px; top:590px; width:82px; height:23px; vertical-align:middle; ">교직구분</caption>
  356. <caption id="caption21" class="cell_1" style="left:572px; top:590px; width:82px; height:23px; vertical-align:middle; ">직종</caption>
  357. <caption id="cap_limyn" class="cell_1" style="left:857px; top:640px; width:82px; height:23px; vertical-align:middle; ">처리여부</caption>
  358. <select1 id="cmb_instcd_d" ref="/root/main/listdetail/instcd" class="combo_default" appearance="minimal" itemcount="10" style="left:85px; top:642px; width:195px; height:19px; ">
  359. <choices>
  360. <itemset>
  361. <label/>
  362. <value/>
  363. </itemset>
  364. </choices>
  365. </select1>
  366. <select1 id="rdo_limyn" ref="/root/main/listdetail/limyn" class="radio_search" appearance="full" cols="2" overflow="visible" style="left:944px; top:643px; width:180px; height:16px; text-align:center; border-style:none; ">
  367. <choices>
  368. <itemset nodeset="/root/init/promconf">
  369. <label ref="label"/>
  370. <value ref="value"/>
  371. </itemset>
  372. </choices>
  373. </select1>
  374. <button id="btn_update" class="btn2_letter2" navindex="13" style="left:1090px; top:563px; width:42px; height:19px; ">
  375. <caption>수정</caption>
  376. <script type="javascript" ev:event="DOMActivate">
  377. <![CDATA[
  378. if(!isRequiredControls("ipt_gradupym_d","ipt_emplno_d" ,"ipt_graduppaycls", "rdo_limyn"))return;
  379. if(rdo_limyn.value=='N' && cmb_limcd_rsn.value==""){
  380. messageBox("승급불가 사유는 ","I003");
  381. return;
  382. }
  383. var cur_row = grd_promotnflaglist.row; // 행 번호 가져오기
  384. if (cur_row > 0) {
  385. // 그리드에 추가
  386. model.copyNode("/root/main/promotnflaglist["+cur_row+"]","/root/main/listdetail");
  387. grd_promotnflaglist.valueMatrix(cur_row,grd_promotnflaglist.colRef("graduppayclsnm"))=cmb_graduppaycls.label;
  388. grd_promotnflaglist.valueMatrix(cur_row,grd_promotnflaglist.colRef("payclsnm"))=cmb_payclscd.label;
  389. grd_promotnflaglist.addStatus(cur_row,"update"); // 행을 업데이트 상태로 변경
  390. model.refresh();
  391. }
  392. ]]>
  393. </script>
  394. </button>
  395. <button id="button4" class="btn2_letter3" navindex="14" style="left:1135px; top:563px; width:53px; height:19px; ">
  396. <caption>지우기</caption>
  397. <script type="javascript" ev:event="DOMActivate">
  398. <![CDATA[
  399. fEnableInsertButton();
  400. model.resetInstanceNode("/root/main/listdetail");
  401. model.refresh();
  402. ]]>
  403. </script>
  404. </button>
  405. <button id="btn_insert" class="btn2_letter2" navindex="12" style="left:1045px; top:563px; width:42px; height:19px; ">
  406. <caption>추가</caption>
  407. <script type="javascript" ev:event="DOMActivate">
  408. <![CDATA[
  409. if(!isRequiredControls("ipt_gradupym_d","ipt_emplno_d" ,"ipt_graduppaycls","rdo_limyn"))return;
  410. if(rdo_limyn.value=='N' && cmb_limcd_rsn.value==""){
  411. messageBox("승급불가 사유는 ","I003");
  412. return;
  413. }
  414. ipt_promotngradupflag.value='1';
  415. //if (!fnullCheck()) return;
  416. grd_promotnflaglist.addrow(); // 입력할 행 추가.
  417. var cur_row = grd_promotnflaglist.row; // 추가된 행 번호 가져오기
  418. // 그리드에 추가
  419. model.copyNode("/root/main/promotnflaglist["+(cur_row-1)+"]","/root/main/listdetail");
  420. grd_promotnflaglist.valueMatrix(cur_row,grd_promotnflaglist.colRef("graduppayclsnm"))=cmb_graduppaycls.label;
  421. grd_promotnflaglist.valueMatrix(cur_row,grd_promotnflaglist.colRef("payclsnm"))=cmb_payclscd.label;
  422. fEnableUpdateButton();
  423. model.refresh();
  424. ]]>
  425. </script>
  426. </button>
  427. <datagrid id="grd_promotnflaglist" nodeset="/root/main/promotnflaglist" caption="승진년월^기관^교직구분^근무부서^사원번호^성명^직책^직위^직종^직급^신직급^현재&#xA;호봉^승급&#xA;호봉^승급월^년차^처리&#xA;여부^발령&#xA;여부^불가&#xA;사유^불가사유기타사항^비고^입사일^직군^직렬^현근무상태^생일^성별^승급구분코드^부서코드^팀코드^유닛코드^직종코드^직위코드^직책코드^현직급코드^신직급코드^조정년차^이전처리구분|승진년월^기관^교직구분^근무부서^사원번호^성명^직책^직위^직종^직급^신직급^현재&#xA;호봉^승급&#xA;호봉^승급월^년차^처리&#xA;여부^발령&#xA;여부^불가&#xA;사유^불가사유기타사항^비고^입사일^직군^직렬^현근무상태^생일^성별^승급구분코드^부서코드^팀코드^유닛코드^직종코드^직위코드^직책코드^현직급코드^신직급코드^조정년차^이전처리구분" colsep="^" colwidth="21, 100, 81, 100, 81, 73, 67, 58, 73, 65, 53, 42, 42, 45, 41, 41, 46, 87, 107, 92, 67, 47, 35, 72, 50, 40, 39, 100, 65, 57, 57, 100, 100, 100, 100, 57, 100, 100, 100, 100" explorerbar="sortshow" frozencols="6" mergecellsfixedrows="bycolrec" rowheader="update" rowsep="|" style="left:0px; top:103px; width:1190px; height:440px; ">
  428. <col ref="gradupym" visibility="hidden" format="yyyy-mm"/>
  429. <col id="instcd" ref="instcd" type="combo">
  430. <choices>
  431. <itemset>
  432. <label/>
  433. <value/>
  434. </itemset>
  435. </choices>
  436. </col>
  437. <col id="payclsprfshipflag" ref="payclsprfshipflag" type="combo">
  438. <choices>
  439. <itemset>
  440. <label/>
  441. <value/>
  442. </itemset>
  443. </choices>
  444. </col>
  445. <col ref="deptnm"/>
  446. <col ref="emplno"/>
  447. <col ref="emplnm"/>
  448. <col ref="jobrespnm"/>
  449. <col ref="jobposnm"/>
  450. <col ref="jobkindnm"/>
  451. <col ref="ojobgradnm"/>
  452. <col ref="njobgradnm"/>
  453. <col ref="payclsnm" style="text-align:center; "/>
  454. <col ref="graduppayclsnm" style="text-align:center; "/>
  455. <col ref="gradupmm" style="text-align:center; "/>
  456. <col ref="anual"/>
  457. <col checkvalue="Y,N" ref="limyn" type="checkbox" style="text-align:center; "/>
  458. <col ref="gvnoffcordtretyn" style="text-align:center; "/>
  459. <col id="limcd" ref="limcd" type="combo">
  460. <choices>
  461. <itemset>
  462. <label/>
  463. <value/>
  464. </itemset>
  465. </choices>
  466. </col>
  467. <col ref="limresn" type="input"/>
  468. <col ref="cmt" type="input"/>
  469. <col ref="entcodd" format="yyyy-mm-dd" style="text-align:center; "/>
  470. <col ref="grupjoblncd" visibility="hidden"/>
  471. <col ref="joblncd" visibility="hidden"/>
  472. <col ref="preststatcd" visibility="hidden"/>
  473. <col ref="brthdd" visibility="hidden"/>
  474. <col ref="gndr" visibility="hidden"/>
  475. <col ref="promotngradupflag" visibility="hidden"/>
  476. <col ref="deptcd" visibility="hidden"/>
  477. <col ref="teamcd" visibility="hidden"/>
  478. <col ref="unitcd" visibility="hidden"/>
  479. <col ref="jobkindcd" visibility="hidden"/>
  480. <col ref="jobposcd" visibility="hidden"/>
  481. <col ref="jobrespcd" visibility="hidden"/>
  482. <col ref="ojobgradcd" visibility="hidden"/>
  483. <col ref="njobgradcd" visibility="hidden"/>
  484. <col ref="adjtyearno" visibility="hidden"/>
  485. <col ref="oldlimyn" visibility="hidden"/>
  486. <col ref="oldgvnoffcordtretyn" visibility="hidden"/>
  487. <col ref="payclscd" visibility="hidden"/>
  488. <col ref="graduppaycls" visibility="hidden"/>
  489. <script type="javascript" ev:event="onclick">
  490. <![CDATA[
  491. var cur_row = grd_promotnflaglist.row;
  492. if ( cur_row > 0 ) {
  493. fEnableUpdateButton();
  494. model.copyNode("/root/main/listdetail","/root/main/promotnflaglist["+(cur_row-1)+"]");
  495. ipt_emplno_d.disabled=true;
  496. ipt_emplnm_d.disabled=true;
  497. btn_emplno.disabled=true;
  498. ipt_gradupym_d.disabled = true;
  499. model.refresh();
  500. }
  501. ]]>
  502. </script>
  503. <script type="javascript" ev:event="onaftersort">
  504. <![CDATA[
  505. grd_promotnflaglist.gridToInstance();
  506. ]]>
  507. </script>
  508. </datagrid>
  509. <caption id="cap_prom_rsn" class="cell_1" style="left:572px; top:665px; width:82px; height:23px; vertical-align:middle; ">승급불가사유</caption>
  510. <input id="ipt_gradupym_d" ref="/root/main/listdetail/gradupym" inputtype="date" format="yyyy-mm" style="left:85px; top:591px; width:195px; height:19px; "/>
  511. <input id="input9" ref="/root/main/listdetail/deptcd" visibility="hidden" style="left:415px; top:560px; width:20; height:19px; "/>
  512. <input id="input12" ref="/root/main/listdetail/teamcd" visibility="hidden" style="left:445px; top:560px; width:20; height:19px; "/>
  513. <input id="input13" ref="/root/main/listdetail/unitcd" visibility="hidden" style="left:475px; top:560px; width:20; height:19px; "/>
  514. <input id="input14" ref="/root/main/listdetail/jobkindcd" visibility="hidden" style="left:505px; top:560px; width:20; height:19px; "/>
  515. <input id="input15" ref="/root/main/listdetail/jobposcd" visibility="hidden" style="left:535px; top:560px; width:20; height:19px; "/>
  516. <input id="input16" ref="/root/main/listdetail/jobrespcd" visibility="hidden" style="left:560px; top:560px; width:20; height:19px; "/>
  517. <input id="input17" ref="/root/main/listdetail/ojobgradcd" visibility="hidden" style="left:585px; top:560px; width:20; height:19px; "/>
  518. <input id="input18" ref="/root/main/listdetail/njobgradnm" style="left:372px; top:616px; width:193px; height:19px; "/>
  519. <input id="input21" ref="/root/main/listdetail/njobgradcd" visibility="hidden" style="left:670px; top:560px; width:20; height:19px; "/>
  520. <input id="input24" ref="/root/main/listdetail/gndr" visibility="hidden" style="left:850px; top:558px; width:20; height:19px; "/>
  521. <input id="input26" ref="/root/main/listdetail/entcodd" visibility="hidden" style="left:695px; top:558px; width:20; height:19px; "/>
  522. <input id="input27" ref="/root/main/listdetail/grupjoblncd" visibility="hidden" style="left:725px; top:558px; width:20; height:19px; "/>
  523. <input id="input28" ref="/root/main/listdetail/joblncd" visibility="hidden" style="left:755px; top:558px; width:20; height:19px; "/>
  524. <input id="input31" ref="/root/main/listdetail/preststatcd" visibility="hidden" style="left:780px; top:558px; width:20; height:19px; "/>
  525. <input id="input32" ref="/root/main/listdetail/brthdd" visibility="hidden" style="left:820px; top:558px; width:20; height:19px; "/>
  526. <line id="line1" class="line_2" style="x1:0px; y1:688px; x2:1193px; y2:688px; "/>
  527. <caption id="cap_gradupym_d" class="cell_1" style="left:0px; top:590px; width:82px; height:23px; vertical-align:middle; ">승급년월</caption>
  528. <input id="input33" ref="/root/main/listdetail/cmt" class="input_default" style="left:85px; top:693px; width:1060px; height:19px; "/>
  529. <caption id="caption7" class="cell_1" style="left:0px; top:690px; width:82px; height:23px; vertical-align:middle; ">비고</caption>
  530. <caption id="caption8" class="search_name" style="left:855px; top:20px; width:86px; height:17px; ">확정여부 :</caption>
  531. <select1 id="rdo_limyn_s" ref="/root/send/searchcond/limyn" class="radio_search" appearance="full" cellspacing="5" cols="3" overflow="visible" style="left:940px; top:20px; width:145px; height:16px; text-align:center; border-style:none; ">
  532. <choices>
  533. <itemset nodeset="/root/init/cnfmyn">
  534. <label ref="label"/>
  535. <value ref="value"/>
  536. </itemset>
  537. </choices>
  538. </select1>
  539. <caption id="caption12" class="search_name" style="left:250px; top:43px; width:135px; height:17px; ">승급제한사유 :</caption>
  540. <select1 id="cmb_limcd" ref="/root/send/searchcond/limcd" class="combo_default" appearance="minimal" style="left:364px; top:41px; width:140px; height:19px; ">
  541. <choices>
  542. <itemset>
  543. <label/>
  544. <value/>
  545. </itemset>
  546. </choices>
  547. </select1>
  548. <button id="button5" class="btn5_letter3" style="left:1065px; top:75px; width:53px; height:19px; ">
  549. <caption>행삭제</caption>
  550. <script type="javascript" ev:event="DOMActivate">
  551. <![CDATA[
  552. misfGridIUD(grd_promotnflaglist,"D");
  553. model.refresh();
  554. ]]>
  555. </script>
  556. </button>
  557. <caption id="caption1" class="search_name" style="left:520px; top:20px; width:85px; height:17px; ">부 서 :</caption>
  558. <input id="ipt_deptnm" ref="/root/send/searchcond/deptnm" class="input_default" style="left:710px; top:20px; width:125px; height:19px; ">
  559. <script type="javascript" ev:event="xforms-value-changed">
  560. <![CDATA[
  561. var pre_deptcd = model.getValue(ipt_deptcd.attribute("ref"))
  562. misfValidationCheck("02", "", "deptcd,deptnm" );
  563. model.refresh();
  564. ]]>
  565. </script>
  566. </input>
  567. <input id="ipt_deptcd" ref="/root/send/searchcond/deptcd" class="input_default" style="left:605px; top:20px; width:80px; height:19px; ">
  568. <script type="javascript" ev:event="xforms-value-changed">
  569. <![CDATA[
  570. var recv_list = "deptcd,deptnm";
  571. var instcd = cmb_instcd.value;
  572. var pre_deptcd = model.getValue(ipt_deptcd.attribute("ref"))
  573. misfValidationCheck("02", "", "deptcd,deptnm" );
  574. ]]>
  575. </script>
  576. </input>
  577. <button id="btn_deptcd" class="icon_search" style="left:689px; top:21px; width:16px; height:16px; ">
  578. <caption/>
  579. <script type="javascript" ev:event="DOMActivate">
  580. <![CDATA[
  581. var recv_list = "deptcd,deptnm";
  582. var instcd = cmb_instcd.value;
  583. var pre_deptcd = model.getValue(ipt_deptcd.attribute("ref"))
  584. rpvfOpenDeptCdHelp(ipt_deptnm,recv_list, instcd, "instcd");
  585. var cur_deptcd = model.getValue(ipt_deptcd.attribute("ref"));
  586. model.refresh();
  587. ]]>
  588. </script>
  589. </button>
  590. <select1 id="cmb_payclsprfshipflag" ref="/root/send/searchcond/payclsprfshipflag" class="combo_default" appearance="minimal" itemcount="10" style="left:105px; top:41px; width:125px; height:19px; ">
  591. <choices>
  592. <itemset>
  593. <label/>
  594. <value/>
  595. </itemset>
  596. </choices>
  597. </select1>
  598. <caption id="caption2" class="search_name" style="left:15px; top:40px; width:86px; height:17px; ">교직구분 :</caption>
  599. <caption id="cap_graduppaycls" class="cell_1" style="left:285px; top:640px; width:82px; height:23px; vertical-align:middle; ">승급호봉</caption>
  600. <caption id="caption5" class="cell_1" style="left:572px; top:640px; width:82px; height:23px; vertical-align:middle; ">현호봉</caption>
  601. <select1 id="cmb_payclsprfshipflag_d" ref="/root/main/listdetail/payclsprfshipflag" class="combo_default" appearance="minimal" itemcount="10" style="left:372px; top:591px; width:193px; height:19px; ">
  602. <choices>
  603. <itemset>
  604. <label/>
  605. <value/>
  606. </itemset>
  607. </choices>
  608. </select1>
  609. <caption id="caption13" class="cell_1" style="left:857px; top:615px; width:82px; height:23px; vertical-align:middle; ">직책</caption>
  610. <caption id="caption14" class="cell_1" style="left:285px; top:665px; width:82px; height:23px; vertical-align:middle; ">승급월</caption>
  611. <input id="input10" ref="/root/main/listdetail/gradupmm" inputtype="date" format="mm" style="left:372px; top:667px; width:193px; height:19px; "/>
  612. <input id="input6" ref="/root/main/listdetail/gvnoffcordtretyn" visibility="hidden" style="left:880px; top:565px; width:20px; height:19px; "/>
  613. <input id="ipt_promotngradupflag" ref="/root/main/listdetail/promotngradupflag" visibility="hidden" style="left:910px; top:565px; width:20px; height:19px; "/>
  614. <input id="input19" ref="/root/main/listdetail/oldgvnoffcordtretyn" visibility="hidden" style="left:965px; top:565px; width:20px; height:19px; "/>
  615. <input id="input22" ref="/root/main/listdetail/oldlimyn" visibility="hidden" style="left:935px; top:565px; width:20px; height:19px; "/>
  616. <button id="button6" class="btn2_letter4" style="left:999px; top:75px; width:64px; height:19px; ">
  617. <caption>전체취소</caption>
  618. <script type="javascript" ev:event="DOMActivate">
  619. <![CDATA[
  620. var updtdata = getGridUpdateData(grd_promotnflaglist);
  621. if (updtdata != "") {
  622. var ret = messageBox("그리드에 작업 중인 내용이 있습니다. 저장후","C002");
  623. return;
  624. }
  625. for (var i = grd_promotnflaglist.fixedRows; i < grd_promotnflaglist.rows; i++ ) {
  626. grd_promotnflaglist.valueMatrix(i, grd_promotnflaglist.colRef("limyn")) = 'N';
  627. var limyn = grd_promotnflaglist.valueMatrix(i, grd_promotnflaglist.colRef("limyn")) ;
  628. var oldlimyn = grd_promotnflaglist.valueMatrix(i, grd_promotnflaglist.colRef("oldlimyn"));
  629. if(oldlimyn!=limyn){
  630. grd_promotnflaglist.addStatus(i,"update");
  631. }else{
  632. grd_promotnflaglist.rowStatus(i) =0;
  633. }
  634. }
  635. ]]>
  636. </script>
  637. </button>
  638. <button id="button12" class="btn2_letter4" style="left:932px; top:75px; width:64px; height:19px; ">
  639. <caption>전체선택</caption>
  640. <script type="javascript" ev:event="DOMActivate">
  641. <![CDATA[
  642. var updtdata = getGridUpdateData(grd_promotnflaglist);
  643. if (updtdata != "") {
  644. var ret = messageBox("그리드에 작업 중인 내용이 있습니다. 저장후","C002");
  645. return;
  646. }
  647. for (var i = grd_promotnflaglist.fixedRows; i < grd_promotnflaglist.rows; i++ ) {
  648. grd_promotnflaglist.valueMatrix(i, grd_promotnflaglist.colRef("limyn")) = 'Y';
  649. var limyn = grd_promotnflaglist.valueMatrix(i, grd_promotnflaglist.colRef("limyn")) ;
  650. var oldlimyn = grd_promotnflaglist.valueMatrix(i, grd_promotnflaglist.colRef("oldlimyn"));
  651. if(oldlimyn!=limyn){
  652. grd_promotnflaglist.addStatus(i,"update");
  653. }else{
  654. grd_promotnflaglist.rowStatus(i) =0;
  655. // alert(limyn+"==="+oldlimyn);
  656. //grd_promotnflaglist.clearStatus(i);
  657. }
  658. }
  659. ]]>
  660. </script>
  661. </button>
  662. <caption id="caption3" style="left:125px; top:75px; width:95px; height:20px; font-weight:bold; color:#0000ff; ">* 조회인원수:</caption>
  663. <output id="output1" ref="/root/init/totcount" style="left:210px; top:75px; width:110px; height:19px; font-weight:bold; color:#0000ff; "/>
  664. <input id="ipt_prfshipflag" ref="/root/main/listdetail/prfshipflag" visibility="hidden" style="left:390px; top:565px; width:20px; height:19px; "/>
  665. <input id="input1" ref="/root/main/listdetail/adjtyearno" visibility="hidden" style="left:360px; top:565px; width:20px; height:19px; "/>
  666. <input id="input11" ref="/root/main/listdetail/dutunitcd" visibility="hidden" style="left:255px; top:565px; width:20px; height:15px; "/>
  667. <input id="input25" ref="/root/main/listdetail/dutunitnm" visibility="hidden" style="left:285px; top:565px; width:20px; height:15px; "/>
  668. <input id="input29" ref="/root/main/listdetail/dutplceinst" visibility="hidden" style="left:230px; top:565px; width:20px; height:19px; "/>
  669. <select1 id="cmb_payclscd" ref="/root/main/listdetail/payclscd" class="combo_default" appearance="minimal" style="left:658px; top:642px; width:195px; height:19px; ">
  670. <choices>
  671. <itemset>
  672. <label/>
  673. <value/>
  674. </itemset>
  675. </choices>
  676. </select1>
  677. <select1 id="cmb_graduppaycls" ref="/root/main/listdetail/graduppaycls" class="combo_default" appearance="minimal" style="left:371px; top:642px; width:195px; height:19px; ">
  678. <choices>
  679. <itemset>
  680. <label/>
  681. <value/>
  682. </itemset>
  683. </choices>
  684. </select1>
  685. </group>
  686. <group id="grp_btn" scroll="auto" style="left:0px; top:12px; width:1195px; height:28px; ">
  687. <button id="button16" class="btn3_letter2" style="left:0px; top:3px; width:56px; height:22px; ">
  688. <caption>출력</caption>
  689. </button>
  690. <line id="line4" class="line_6" style="x1:0px; y1:25; x2:1195px; y2:25; "/>
  691. <button id="btn_traget" class="btn4_letter5" selected="dksemffudy?" style="left:1037px; top:3px; width:92px; height:22px; ">
  692. <caption>대상자산출</caption>
  693. <script type="javascript" ev:event="DOMActivate">
  694. <![CDATA[
  695. if ( !isRequiredControls("ipt_gradupym") ) return;
  696. var ret = messageBox("대상자산출 작업을 ","Q004");
  697. if (ret != 6) { // not OK
  698. return;
  699. } else {
  700. model.setValue("/root/send/searchcond/promotngradupflag","1");
  701. model.setValue("/root/send/searchcond/workgbn","D");
  702. submit("TXRPH00601");
  703. }
  704. var errormsg=model.getValue("/root/spreflist/spref/errormsg");
  705. var errflag=model.getValue("/root/spreflist/spref/errflag");
  706. if(errflag =='Y'){
  707. messageBox(errormsg,"E001");
  708. return;
  709. }
  710. if (model.getValue(gvErrorMsgPath + "/type") != "error"){
  711. messageBox("대상자산출 작업이 ","I002");
  712. btn_search.dispatch("DOMActivate");
  713. }
  714. ]]>
  715. </script>
  716. </button>
  717. <button id="btn_save" class="btn4_letter2" style="left:1130px; top:3px; width:56px; height:22px; ">
  718. <caption>저장</caption>
  719. <script type="javascript" ev:event="DOMActivate">
  720. <![CDATA[
  721. var updtdata = getGridUpdateData(grd_promotnflaglist);
  722. if (updtdata == "" ) {
  723. messageBox("변경된 데이터가","I004");
  724. return;
  725. }
  726. //alert(model.getValue("/root/send/uptprom/emplno"));
  727. var ret = messageBox("저장합니다.","Q003");
  728. if (ret != 6) { // not OK
  729. return;
  730. } else {
  731. misfSave("TXRPH00600");
  732. }
  733. model.setValue("/root/send/searchcond/promotngradupflag","1");
  734. misfMsterDetailRetrieve();
  735. fEnableInsertButton();
  736. model.refresh();
  737. ]]>
  738. </script>
  739. </button>
  740. <button id="btn_gnvoffentbnt" class="btn4_letter6" style="left:932px; top:3px; width:104px; height:22px; ">
  741. <caption>일괄승급발령</caption>
  742. <script type="javascript" ev:event="DOMActivate">
  743. <![CDATA[
  744. var updtdata = getGridUpdateData(grd_promotnflaglist);
  745. if (updtdata != "") {
  746. var ret = messageBox("그리드에 작업 중인 내용이 있습니다. 저장후","C002");
  747. return;
  748. }
  749. if ( !isRequiredControls("ipt_gradupym") ) return;
  750. var ret = messageBox("승급발령 작업을 ","Q004");
  751. if (ret != 6) { // not OK
  752. return;
  753. } else {
  754. model.setValue("/root/send/searchcond/promotngradupflag","1");
  755. model.setValue("/root/send/searchcond/iudflag",'U');
  756. model.setValue("/root/send/searchcond/workgbn","G");
  757. submit("TXRPH00601");
  758. }
  759. var errormsg=model.getValue("/root/spreflist/spref/errormsg");
  760. var errflag=model.getValue("/root/spreflist/spref/errflag");
  761. if(errflag =='0'){
  762. messageBox(errormsg,"I004");
  763. return;
  764. }
  765. if (model.getValue(gvErrorMsgPath + "/type") != "error"){
  766. messageBox("승급발령 작업이 ","I002");
  767. btn_search.dispatch("DOMActivate");
  768. }
  769. ]]>
  770. </script>
  771. </button>
  772. <button id="btn_gnvoffcanbnt" class="btn4_letter6" style="left:827px; top:3px; width:104px; height:22px; ">
  773. <caption>일괄발령취소</caption>
  774. <script type="javascript" ev:event="DOMActivate">
  775. <![CDATA[
  776. var updtdata = getGridUpdateData(grd_promotnflaglist);
  777. if (updtdata != "") {
  778. var ret = messageBox("그리드에 작업 중인 내용이 있습니다. 저장후","C002");
  779. return;
  780. }
  781. if ( !isRequiredControls("ipt_gradupym") ) return;
  782. var ret = messageBox("승급발령 작업을 ","Q004");
  783. if (ret != 6) { // not OK
  784. return;
  785. } else {
  786. model.setValue("/root/send/searchcond/promotngradupflag","1");
  787. model.setValue("/root/send/searchcond/iudflag",'C');
  788. model.setValue("/root/send/searchcond/workgbn","G");
  789. submit("TXRPH00601");
  790. }
  791. var errormsg=model.getValue("/root/spreflist/spref/errormsg");
  792. var errflag=model.getValue("/root/spreflist/spref/errflag");
  793. if(errflag =='0'){
  794. messageBox(errormsg,"I004");
  795. return;
  796. }
  797. messageBox("승급발령취소 작업이 ","I002");
  798. btn_search.dispatch("DOMActivate");
  799. ]]>
  800. </script>
  801. </button>
  802. </group>
  803. </xhtml:body>
  804. </xhtml:html>