SMRSM01200_물류물품코드MSDS여부수정.xrw 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <?xml-stylesheet type="text/css" href="../../../com/commonweb/css/common.css" ?>
  3. <xhtml:html xmlns:ex="http://www.comsquare.co.kr/xforms/excel" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:ms="urn:schemas-microsoft-com:xslt" xmlns:my="http://www.comsquare.co.kr/example" 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" xmlns:cs="http://www.comsquare.co.kr/xforms">
  4. <xhtml:head>
  5. <xhtml:title>MSDS 정보 수정(물류)</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <main>
  10. <condition>
  11. <goodcd/>
  12. <goodnm/>
  13. </condition>
  14. <goodlist>
  15. <fromdd/>
  16. <goodcd/>
  17. <goodnm/>
  18. <goodspec/>
  19. <prodcmpycd/>
  20. <prodcmpynm/>
  21. <maincustlastsuplplce/>
  22. <maincustlastsuplplcenm/>
  23. <frgstdd/>
  24. <lastpurcdd/>
  25. <mainusedeptnm/>
  26. <msdsflag/>
  27. <msdsflag_old/>
  28. </goodlist>
  29. <goodinfo>
  30. <fromdd/>
  31. <goodcd/>
  32. <goodnm/>
  33. <goodspec/>
  34. <prodcmpycd/>
  35. <prodcmpynm/>
  36. <maincustlastsuplplce/>
  37. <maincustlastsuplplcenm/>
  38. <frgstdd/>
  39. <lastpurcdd/>
  40. <mainusedeptnm/>
  41. <msdsflag/>
  42. </goodinfo>
  43. </main>
  44. <send/>
  45. <init/>
  46. <hidden>
  47. </hidden>
  48. <temp>
  49. </temp>
  50. </root>
  51. </instance>
  52. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  53. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  54. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  55. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  56. <script type="javascript" src="../../../mis/miscommonweb/js/MIS.js"/>
  57. <script type="javascript" src="../../../mis/miscommonweb/js/RAC001.js"/>
  58. <script type="javascript" src="../../../com/zipcodeweb/js/ZBP001.js"/>
  59. <script type="javascript" src="../../../mis/miscommonweb/js/RSZ001.js"/>
  60. <!--script type="javascript" src="../../../mis/purcbaseweb/js/SMRSC05302.js"/-->
  61. <script type="javascript" ev:event="xforms-ready">
  62. <![CDATA[
  63. fOpenForm();
  64. ]]>
  65. </script>
  66. <script type="javascript">
  67. <![CDATA[
  68. //========================================================================================
  69. //화면 로드시 초기화 함수
  70. //========================================================================================
  71. function fOpenForm() {
  72. //model.removenode("/root/main/goodlist");
  73. //model.removenode("/root/main/deptlist");
  74. //model.refresh();
  75. misfGridInit(grd_goodlist);
  76. //model.setValue("/root/main/condition/fromdd" , getCurrentDate().toDate().getAddDate(-1, "M").getDateFormat("YYYYMMDD") ); //기간 설정 //getCurrentDate() //.substr(0,6)); //.toDate().getAddDate(-1, "D").getDateFormat("YYYYMMDD")
  77. //model.setValue("/root/main/condition/todd" , getCurrentDate() ); //기간 설정 //.substr(0,6));
  78. model.refresh();
  79. //2014.07.09 박준범 - 화면 open시 지연되는 것 방지위해 조회는 comment처리
  80. //fGetGoodList();//코드 목록 조회
  81. // if(model.getValue("/root/main/goodlist[1]/matrcd") != "") {
  82. // grd_goodlist.isSelected(1) = true;
  83. // fGetGoodInfo(1);
  84. // }else {
  85. // fCopyInstance();
  86. // }
  87. }
  88. //========================================================================================
  89. //인스턴스 Copy 함수
  90. //========================================================================================
  91. function fCopyInstance() {
  92. //----model.copyNode("/root/hidden/goodinfo", "/root/main/goodinfo");
  93. model.refresh();
  94. }
  95. //========================================================================================
  96. //코드 목록 조회 함수
  97. //========================================================================================
  98. function fGetGoodList() {
  99. misfGridInit(grd_goodlist);
  100. model.resetInstanceNode("/root/main/goodinfo");//조회시 기존 데이터 삭제
  101. model.copyNode("/root/send", "/root/main/condition");
  102. submit("TRRSM01201");
  103. model.refresh();
  104. }
  105. //========================================================================================
  106. //목록 -> 상세내역
  107. //========================================================================================
  108. function fGetGoodInfo(pRow) {
  109. if ( pRow > 0 ) {
  110. model.copyNode("/root/main/goodinfo", "/root/main/goodlist[" + pRow + "]");
  111. //model.refresh();
  112. opt_goodcd.refresh();
  113. opt_goodnm.refresh();
  114. opt_goodspec.refresh();
  115. opt_prodcmpycd.refresh();
  116. opt_prodcmpynm.refresh();
  117. opt_maincustlastsuplplce.refresh();
  118. opt_maincustlastsuplplcenm.refresh();
  119. opt_frgstdd.refresh();
  120. opt_lastpurcdd.refresh();
  121. opt_mainusedeptnm.refresh();
  122. rdo_msdsflag.refresh();
  123. }
  124. }
  125. //========================================================================================
  126. //상세내역 -> 목록
  127. //========================================================================================
  128. function fPutGoodInfo() {
  129. if ( true ) {
  130. var iRow = grd_goodlist.findRow(opt_goodcd.value, 1, grd_goodlist.colRef("goodcd"), true, true);
  131. //alert(iRow);
  132. model.setValue(grd_goodlist.nodeset + "[" + iRow + "]/msdsflag", rdo_msdsflag.value);
  133. if(model.getValue(grd_goodlist.nodeset + "[" + iRow + "]/msdsflag") !=
  134. model.getValue(grd_goodlist.nodeset + "[" + iRow + "]/msdsflag_old") ) {
  135. grd_goodlist.rowStatus(iRow) = 2; //0:new, 2:upadte
  136. } else {
  137. grd_goodlist.rowStatus(iRow) = 0;
  138. }
  139. //model.refresh();
  140. grd_goodlist.refresh();
  141. }
  142. }
  143. //========================================================================================
  144. //신규 버턴 클릭시 인스턴스 초기화
  145. //========================================================================================
  146. function fSetMatrInfo() {
  147. ipt_matrcd.disabled = false;
  148. // 아래 두줄로 변경
  149. //model.resetInstanceNode("/root/main/goodinfo");
  150. model.resetInstanceNode("/root/main/goodinfo");
  151. //model.resetInstanceNode("/root/main/goodinfo/deptlist");
  152. misfGridInit(grd_deptlist);
  153. //return;
  154. model.setFocus("ipt_matrcd");
  155. model.setValue("/root/main/goodinfo/status", "i");
  156. model.setValue("/root/main/goodinfo/msdsflag", "Y");
  157. // 서식에서 징수의무자 상호(법인명)으로 쓰임. 기본값으로 경북대학교병원장 셋팅.
  158. //model.setValue("/root/main/goodinfo/prntnm1" , "경북대학교병원장");
  159. fCopyInstance();
  160. }
  161. //========================================================================================
  162. // 저장버튼 클릭시 저장 수행 함수
  163. //========================================================================================
  164. function fClickSaveBtn() {
  165. /*
  166. var iCheckCount = 0;
  167. for(var i = 1; i < grd_goodlist.rows; i++) {
  168. if(grd_goodlist.valueMatrix(i, grd_goodlist.colRef("checkflag")) == "Y") {
  169. iCheckCount = 1;
  170. break;
  171. }
  172. }
  173. if(iCheckCount == 0) {
  174. messageBox("선택된 물품이 없습니다. 먼저 코드 등록할 물품을 선택하십시요. ", "E999", "");
  175. return false;
  176. }
  177. */
  178. if(opt_goodcd.value != "") {
  179. fPutGoodInfo();
  180. }
  181. //if(!fIsValidForSave())//저장전 유효성 검사
  182. // return;
  183. //model.resetInstanceNode("/root/send");
  184. //model.makeNode("root/send/detail");
  185. //model.copyNode("/root/send", "/root/main/goodinfo");
  186. model.makeValue("/root/send/goodlist", grd_goodlist.getUpdateData());
  187. //return;
  188. if(submit("TXRSM01201")) {
  189. btn_search.dispatch("DOMActivate");
  190. //fGetGoodList();//코드 목록 재조회
  191. //model.copyNode("/root/send", "/root/main/goodinfo");
  192. //submit("TRRSM00102"); //상세내역 및 조사표 재조회
  193. //model.setValue("/root/main/goodinfo/status", "-");
  194. //grd_deptlist.clearStatus();
  195. //--model.makeNode("/root/hidden/goodinfo");
  196. //model.makeNode("/root/hidden/goodinfo");
  197. //fCopyInstance();
  198. //ipt_matrcd.disabled = true;
  199. messageBox("정상적으로 처리되었습니다. .", "I999", "");
  200. }
  201. }
  202. //========================================================================================
  203. //저장전 유효성 검사
  204. //========================================================================================
  205. function fIsValidForSave() {
  206. //필수 입력 항목 체크(공통 ftHelper.js)
  207. //if(!isRequiredControls("ipt_matrcd","ipt_matrnm")) { //,"ipt_prodcmpycd"
  208. // return false;
  209. //}
  210. //var sStatus = model.getValue("/root/main/goodinfo/status");
  211. //var sNewData = fGetNodeText("/root/main/goodinfo");
  212. //var sOldData = fGetNodeText("/root/hidden/goodinfo");
  213. for(var i = 1; i < grd_goodlist.rows; i++) {
  214. if(grd_goodlist.valueMatrix(i, grd_goodlist.colRef("checkflag")) == "N") continue;
  215. if(grd_goodlist.valueMatrix(i, grd_goodlist.colRef("matrnm")) == "" ){
  216. messageBox("물품코드 " + grd_goodlist.valueMatrix(i, grd_goodlist.colRef("goodcd")) + " 의 물질명이 등록되지 않았습니다. ", "E999", "");
  217. return false;
  218. }
  219. /*
  220. if(grd_goodlist.valueMatrix(i, grd_goodlist.colRef("prodcmpycd")) == "" ){
  221. messageBox("물품코드 " + grd_goodlist.valueMatrix(i, grd_goodlist.colRef("goodcd")) + " 의 제조회사가 등록되지 않았습니다. ", "E999", "");
  222. return false;
  223. }
  224. */
  225. }
  226. return true;
  227. /*
  228. //상세내역에 변경된 정보가 있는지 확인
  229. if(sNewData != sOldData && sStatus == "-") { // 데이터 수정일 경우
  230. model.setValue("/root/main/goodinfo/status","u");
  231. return true;
  232. } else if(sNewData == sOldData && sStatus == "-" ) { //변경된 값이 없을경우
  233. //messageBox("변경된 정보가 ", "I004");
  234. //return false;
  235. return true;
  236. }else if(sStatus == "i") { //데이터 입력일 경우
  237. return true;
  238. }else if(sStatus = "d") { //데이터 삭제일 경우
  239. return true;
  240. }
  241. */
  242. }
  243. //========================================================================================
  244. //엑셀입력(excel file을 그리드에 입력)
  245. //========================================================================================
  246. function fInputExcel(pGrid) {
  247. var fileName = window.fileDialog("open", ",", false, "", "xls", "All Files (*.*)|*.*|Excel Files(*.xls)|*.xls");
  248. if(fileName != "") {
  249. pGrid.loadExcel(fileName, 1, true);
  250. pGrid.deleteRow(1);
  251. pGrid.refresh();
  252. }
  253. }
  254. //========================================================================================
  255. //동일한 Depth의 인스턴스의 값을 스트링형으로 변환
  256. //========================================================================================
  257. function fGetNodeText(pNode) {
  258. var trgNdoe = instance1.selectSingleNode(pNode);
  259. var trgNdoeList = trgNdoe.childNodes;
  260. var childNode;
  261. var allText = "";
  262. while( childNode = trgNdoeList.nextNode() ) {
  263. allText += childNode.text;
  264. }
  265. return allText;
  266. }
  267. function fOpenPopupDeptHelp(pControl, pInstance)
  268. {
  269. misfOpenPopUpList("02", pControl, "", pInstance);
  270. model.refresh();
  271. }
  272. ]]>
  273. </script>
  274. <submission id="TRRSM01201" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/goodlist"/>
  275. <submission id="TXRSM01201" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/temp"/>
  276. </model>
  277. </xhtml:head>
  278. <xhtml:body guideline="1,1193;1,1406;" style="margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">
  279. <group id="group1" style="left:0px; top:0px; width:1195px; height:13px; ">
  280. <caption id="caption6" class="tit_1" style="left:0px; top:0px; width:331px; height:14px; ">MSDS 정보 수정(물류)</caption>
  281. <caption id="caption4" class="patient_text_black" style="left:922px; top:0px; width:272px; "/>
  282. </group>
  283. <group id="group3" scroll="auto" style="left:0px; top:40; width:1195px; height:744px; ">
  284. <group id="grp_sea" style="left:0px; top:10px; width:1194; height:35px; vertical-align:top; ">
  285. <shape id="roundrect1" class="roundrect_search" appearance="roundrect" ellipsewidth="10" ellipseheight="10" style="left:0px; top:0px; width:1194; height:35px; background-color:#fffbf2; border-color:#ffd799; "/>
  286. <caption id="caption7" class="search_name" style="left:56px; top:9px; width:79px; height:17px; ">물품코드</caption>
  287. <line id="line5" class="line_4" style="x1:510px; y1:6px; x2:510px; y2:28px; border-color:#ffe4bb; border-left-style:solid; "/>
  288. <button id="btn_search" class="btn1_letter2" navindex="4" style="left:528px; top:7px; width:56px; height:22px; text-align:left; ">
  289. <caption>조회</caption>
  290. <script type="javascript" ev:event="DOMActivate">
  291. <![CDATA[
  292. if(ipt_goodcd.value == "" && ipt_goodnm.value == "") {
  293. messageBox("조회조건을 입력하십시요. ", "E999", "");
  294. model.setFocus("ipt_goodcd");
  295. return;
  296. }
  297. fGetGoodList();
  298. ]]>
  299. </script>
  300. </button>
  301. <input id="ipt_goodcd" ref="/root/main/condition/goodcd" class="input_default" navindex="1" style="left:134px; top:8px; width:91px; height:19px; "/>
  302. <caption id="caption1" class="search_name" style="left:256px; top:9px; width:64px; height:17px; ">물품명</caption>
  303. <input id="ipt_goodnm" ref="/root/main/condition/goodnm" class="input_default" navindex="1" style="left:321px; top:8px; width:154px; height:19px; "/>
  304. </group>
  305. <line id="line3" class="line_1" style="x1:0px; y1:75px; x2:765px; y2:75px; "/>
  306. <line id="line1" class="line_1" style="x1:770px; y1:75px; x2:1190px; y2:75px; "/>
  307. <caption id="caption21" class="tit_2" style="left:5px; top:60px; width:214px; height:14px; ">물품 목록</caption>
  308. <caption id="caption20" class="tit_2" style="left:774px; top:60px; width:84px; height:13px; ">상세내역</caption>
  309. <datagrid id="grd_goodlist" nodeset="/root/main/goodlist" caption="물품코드^물품명^규격^제조회사^주거래처^MSDS여부^MSDS여부_old^제조회사코드^주거래처코드^최초등록일^최종구매일^사용부서^적용일자" colsep="^" colwidth="77, 188, 86, 94, 94, 72, 100, 87, 84, 77, 82, 100, 100" mergecellsfixedrows="bycolrec" rowheader="update" rowheight="16" rowsep="|" navindex="5" style="left:0px; top:80px; width:765px; height:630px; ">
  310. <col class="text_center" ref="goodcd" style="text-align:center; "/>
  311. <col ref="goodnm"/>
  312. <col ref="goodspec"/>
  313. <col ref="prodcmpynm"/>
  314. <col ref="maincustlastsuplplcenm"/>
  315. <col ref="msdsflag" style="text-align:center; "/>
  316. <col ref="msdsflag_old" visibility="hidden"/>
  317. <col ref="prodcmpycd" visibility="hidden"/>
  318. <col ref="maincustlastsuplplce" visibility="hidden"/>
  319. <col ref="frgstdd" format="yyyy-mm-dd" style="text-align:center; "/>
  320. <col ref="lastpurcdd" format="yyyy-mm-dd" style="text-align:center; "/>
  321. <col ref="mainusedeptnm"/>
  322. <col ref="fromdd"/>
  323. <script type="javascript" ev:event="onclick">
  324. <![CDATA[
  325. if(grd_goodlist.row == 0 || grd_goodlist.col < 1) return;
  326. if(opt_goodcd.value != "") {
  327. fPutGoodInfo();
  328. }
  329. var cur_row = grd_goodlist.row;
  330. fGetGoodInfo(cur_row);
  331. ]]>
  332. </script>
  333. <script type="javascript" ev:event="onaftersort">
  334. <![CDATA[
  335. grd_goodlist.gridToInstance();
  336. ]]>
  337. </script>
  338. </datagrid>
  339. <line id="line17" class="line_2" style="x1:770px; y1:241px; x2:1190px; y2:241px; "/>
  340. <caption id="caption25" class="cell_1" style="left:770px; top:81px; width:108px; height:25px; text-align:center; vertical-align:middle; ">물품코드</caption>
  341. <caption id="caption29" class="cell_1" style="left:770px; top:216px; width:108px; height:25px; text-align:center; vertical-align:middle; ">최초등록일</caption>
  342. <line id="line19" class="line_2" style="x1:770px; y1:106px; x2:1190px; y2:106px; "/>
  343. <caption id="caption2" class="cell_1" style="left:770px; top:108px; width:108px; height:25px; text-align:center; vertical-align:middle; ">물품명</caption>
  344. <line id="line7" class="line_2" style="x1:770px; y1:133px; x2:1191px; y2:133px; "/>
  345. <line id="line20" class="line_2" style="x1:770px; y1:160px; x2:1191px; y2:160px; "/>
  346. <caption id="caption11" class="cell_1" style="left:770px; top:135px; width:108px; height:25px; text-align:center; vertical-align:middle; ">규 격</caption>
  347. <line id="line9" class="line_2" style="x1:770px; y1:187px; x2:1191px; y2:187px; "/>
  348. <caption id="caption8" class="cell_1" style="left:770px; top:162px; width:108px; height:25px; text-align:center; vertical-align:middle; ">제조회사</caption>
  349. <line id="line10" class="line_2" style="x1:770px; y1:214px; x2:1191px; y2:214px; "/>
  350. <caption id="caption12" class="cell_1" style="left:770px; top:189px; width:108px; height:25px; text-align:center; vertical-align:middle; ">주거래처</caption>
  351. <output id="opt_maincustlastsuplplcenm" ref="/root/main/goodinfo/maincustlastsuplplcenm" class="output_fix" appearance="output" style="left:930px; top:192px; width:255px; height:19px; "/>
  352. <output id="opt_goodcd" ref="/root/main/goodinfo/goodcd" class="output_fix" appearance="output" style="left:881px; top:84px; width:93px; height:19px; "/>
  353. <output id="opt_goodnm" ref="/root/main/goodinfo/goodnm" class="output_fix" appearance="output" style="left:881px; top:111px; width:305px; height:19px; "/>
  354. <output id="opt_goodspec" ref="/root/main/goodinfo/goodspec" class="output_fix" appearance="output" style="left:881px; top:137px; width:305px; height:19px; "/>
  355. <line id="line6" class="line_2" style="x1:770px; y1:268px; x2:1190px; y2:268px; "/>
  356. <caption id="caption5" class="cell_1" style="left:770px; top:243px; width:108px; height:25px; text-align:center; vertical-align:middle; ">최종구매일</caption>
  357. <caption id="caption9" class="cell_1" style="left:770px; top:270px; width:108px; height:25px; text-align:center; vertical-align:middle; ">사용부서</caption>
  358. <line id="line4" class="line_2" style="x1:770px; y1:295px; x2:1190px; y2:295px; "/>
  359. <line id="line8" class="line_2" style="x1:769px; y1:322px; x2:1189px; y2:322px; "/>
  360. <caption id="caption10" class="cell_1" style="left:770px; top:297px; width:108px; height:25px; text-align:center; vertical-align:middle; ">MSDS여부</caption>
  361. <output id="opt_maincustlastsuplplce" ref="/root/main/goodinfo/maincustlastsuplplce" class="output_fix" appearance="output" style="left:881px; top:192px; width:44px; height:19px; "/>
  362. <output id="opt_prodcmpycd" ref="/root/main/goodinfo/prodcmpycd" class="output_fix" appearance="output" style="left:881px; top:165px; width:44px; height:19px; "/>
  363. <output id="opt_prodcmpynm" ref="/root/main/goodinfo/prodcmpynm" class="output_fix" appearance="output" style="left:930px; top:165px; width:255px; height:19px; "/>
  364. <output id="opt_frgstdd" ref="/root/main/goodinfo/frgstdd" class="output_fix" format="yyyy-mm-dd" appearance="output" style="left:881px; top:219px; width:93px; height:19px; "/>
  365. <output id="opt_lastpurcdd" ref="/root/main/goodinfo/lastpurcdd" class="output_fix" format="yyyy-mm-dd" appearance="output" style="left:881px; top:246px; width:93px; height:19px; "/>
  366. <output id="opt_mainusedeptnm" ref="/root/main/goodinfo/mainusedeptnm" class="output_fix" appearance="output" style="left:881px; top:273px; width:255px; height:19px; "/>
  367. <select1 id="rdo_msdsflag" ref="/root/main/goodinfo/msdsflag" navindex="-1" appearance="full" cellspacing="4" cols="2" overflow="visible" style="left:885px; top:300px; width:95px; height:20px; background-color:transparent; border-style:none; ">
  368. <choices>
  369. <item>
  370. <label>Yes</label>
  371. <value>Y</value>
  372. </item>
  373. <item>
  374. <label>No</label>
  375. <value>N</value>
  376. </item>
  377. </choices>
  378. </select1>
  379. <caption id="caption3" style="left:5px; top:715px; width:1050px; height:20px; color:#ff0000; ">※ 물류 물품마스터의 MSDS여부를 수정합니다.</caption>
  380. </group>
  381. <group id="group4" scroll="auto" style="left:0px; top:13; width:1195px; height:27px; ">
  382. <line id="line2" class="line_6" style="x1:0px; y1:25px; x2:1194px; y2:25px; "/>
  383. <button id="btn_save" class="btn4_letter4" style="left:1113px; top:3px; width:80px; height:22px; ">
  384. <caption>일괄저장</caption>
  385. <script type="javascript" ev:event="DOMActivate">
  386. <![CDATA[
  387. fClickSaveBtn();
  388. ]]>
  389. </script>
  390. </button>
  391. </group>
  392. </xhtml:body>
  393. </xhtml:html>