XSMRSD05400_약품청구관리(X).xrw 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755
  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>Untitle</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <main>
  10. <list>
  11. <gooddmnd>
  12. <gooddmndlist/>
  13. </gooddmnd>
  14. </list>
  15. <item/>
  16. </main>
  17. <send>
  18. <save>
  19. <gooddmndlist/>
  20. </save>
  21. <gooddmnd>
  22. <purcreqflag/>
  23. <instcd/>
  24. <goodflag/>
  25. <lrgcd/>
  26. <lrgnm/>
  27. <purcdmnddd/>
  28. <purcdmndno/>
  29. <reqdeptcd/>
  30. <reqdeptnm/>
  31. <reqpsn/>
  32. <reqpsnnm/>
  33. <acptcharid/>
  34. <acptcharnm/>
  35. </gooddmnd>
  36. </send>
  37. <init>
  38. <purcreqflag>
  39. <label>정기분</label>
  40. <value>1</value>
  41. <label>추가분</label>
  42. <value>2</value>
  43. <label>반품</label>
  44. <value>3</value>
  45. </purcreqflag>
  46. <reqcnt/>
  47. <reqamt/>
  48. <lrgcd>
  49. <label>
  50. <내복약/>
  51. </label>
  52. <value>01</value>
  53. </lrgcd>
  54. </init>
  55. <hidden>
  56. <goodflag>
  57. <value>P</value>
  58. </goodflag>
  59. <reqflag/>
  60. </hidden>
  61. <temp/>
  62. <copynode/>
  63. </root>
  64. </instance>
  65. <bind id="reqqty" ref="/root/main/list/gooddmnd/gooddmndlist/reqqty" calculate="../reqpackcnt *../reqpackcntperunit"/>
  66. <bind id="reqfla" ref="/root/main/list/gooddmnd/gooddmndlist/reqfla" calculate="(../reqpackcnt *../reqpackcntperunit) * ../goodunitcost"/>
  67. <script type="javascript" ev:event="xforms-ready">
  68. <![CDATA[
  69. //화면 Control을 초기화한다
  70. fCheckAuth();
  71. fInitialize();
  72. ]]>
  73. </script>
  74. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  75. <submission id="TRRSR00301" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/gooddmnd" resultref="/root/main/list/gooddmnd"/>
  76. <submission id="TXRSR00301" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/save" resultref="/root/hidden/temp"/>
  77. <submission id="TXRSR01501" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/aprvlist" resultref="/root/temp"/>
  78. </model>
  79. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  80. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  81. <script type="javascript" src="../../../mis/miscommonweb/js/MIS.js"/>
  82. <script type="javascript" src="../../../mis/miscommonweb/js/RSZ001.js"/>
  83. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  84. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  85. <script type="javascript">
  86. <![CDATA[
  87. function fInitialize() {
  88. model.resetInstanceNode("/root/send");
  89. rszfUserGoodFlagList(cmb_goodflag,getUserInfo("userid"));
  90. rszfUserInstList(cmb_instcd,getUserInfo("userid"));
  91. rszfGridComboLrgcdList("P", cmb_lrgcd, "lrgcd");
  92. // misfComboComCdListMulti("Z0007,R0025","cmb_instcd,cmb_goodflag");
  93. misfGridInit(grd_gooddmnd);
  94. misfMsterDetailSet(grd_gooddmnd,null, "TRRSR00301" ,"Y");
  95. rbo_purcreqflag.select(0);
  96. model.setValue(ipt_purcdmnddd.attribute("ref") , getCurrentDate());
  97. model.setValue(ipt_purcdmndno.attribute("ref") , "0001");
  98. model.setValue(opt_sumreqqty.attribute("ref"),0);
  99. model.setValue(opt_sumreqfla.attribute("ref"),0);
  100. //getUserInfo("dutplceinstcd")
  101. //if(cmb_instcd.length > 0) cmb_instcd.selectedindex= 0;
  102. //model.setValue(cmb_instcd.attribute("ref") , getUserInfo("dutplceinstcd"));
  103. model.setValue(cmb_instcd.attribute("ref") , getUserInfo("dutplceinstcd"));
  104. // model.setValue(opt_reqdeptcd.attribute("ref") , getUserInfo("dutplcecd"));
  105. // model.setValue(opt_reqdeptnm.attribute("ref") , getUserInfo("dutplcenm"));
  106. model.setValue(opt_reqdeptcd.attribute("ref") , '3242107000');
  107. model.setValue(opt_reqdeptnm.attribute("ref") , "병동약국UNIT");
  108. model.setValue(opt_reqpsn.attribute("ref") , getUserInfo("userid"));
  109. model.setValue(opt_reqpsnnm.attribute("ref") , getUserInfo("usernm"));
  110. model.setvalue(cmb_goodflag.attribute("ref"),"PH"); // hiden column -> default value setting
  111. model.setvalue(ipt_reqflag.attribute("ref"),"E"); // hiden column -> default value setting('E','약품'..SET처리시 필요)
  112. model.refresh();
  113. }
  114. function fCheckAuth() {
  115. btn_search.disabled = !checkAuth("R") ;
  116. btn_save.disabled = !checkAuth("X") ;
  117. }
  118. function fCheckRetrieveData(pmsg)
  119. {
  120. if(model.getValue(rbo_purcreqflag.attribute("ref")).length== 0 )
  121. {
  122. if(pmsg == true)
  123. {
  124. messageBox("발주구분을 " ,"C002");
  125. model.setFocus("rbo_purcreqflag");
  126. }
  127. return false;
  128. }
  129. if(model.getValue(cmb_instcd.attribute("ref")).length== 0 )
  130. {
  131. if(pmsg == true)
  132. {
  133. messageBox("기관코드를 " ,"C002");
  134. model.setFocus("cmb_instcd");
  135. }
  136. return false;
  137. }
  138. if(model.getValue(cmb_goodflag.attribute("ref")).length== 0 )
  139. {
  140. if(pmsg == true)
  141. {
  142. messageBox("물품구분을 " ,"C002");
  143. model.setFocus("cmb_goodflag");
  144. }
  145. return false;
  146. }
  147. if(model.getValue(ipt_purcdmnddd.attribute("ref")).length== 0 )
  148. {
  149. if(pmsg == true)
  150. {
  151. messageBox("발주일자를 " ,"C001");
  152. model.setFocus("ipt_purcdmnddd");
  153. }
  154. return false;
  155. }
  156. if(model.getValue(opt_reqdeptcd.attribute("ref")).length== 0 )
  157. {
  158. if(pmsg == true)
  159. {
  160. messageBox("발주부서를 " ,"C001");
  161. model.setFocus("opt_reqdeptcd");
  162. }
  163. return false;
  164. }
  165. if(model.getValue(opt_reqpsn.attribute("ref")).length== 0 )
  166. {
  167. if(pmsg == true)
  168. {
  169. messageBox("발주자를 " ,"C001");
  170. model.setFocus("opt_reqpsn");
  171. }
  172. return false;
  173. }
  174. return true;
  175. }
  176. function fDefaultSetting(prow)
  177. {
  178. model.setValue(grd_gooddmnd.nodeset+"["+prow+"]/purcreqflag",model.getValue("/root/send/gooddmnd/purcreqflag"));
  179. model.setValue(grd_gooddmnd.nodeset+"["+prow+"]/instcd",model.getValue("/root/send/gooddmnd/instcd"));
  180. model.setValue(grd_gooddmnd.nodeset+"["+prow+"]/goodflag",model.getValue("/root/send/gooddmnd/goodflag"));
  181. model.setValue(grd_gooddmnd.nodeset+"["+prow+"]/purcdmnddd",model.getValue("/root/send/gooddmnd/purcdmnddd"));
  182. model.setValue(grd_gooddmnd.nodeset+"["+prow+"]/reqdeptcd",model.getValue("/root/send/gooddmnd/reqdeptcd"));
  183. model.setValue(grd_gooddmnd.nodeset+"["+prow+"]/reqpsn",model.getValue("/root/send/gooddmnd/reqpsn"));
  184. model.setValue(grd_gooddmnd.nodeset+"["+prow+"]/purcdmndseq",prow);
  185. model.setValue(grd_gooddmnd.nodeset+"["+prow+"]/prcsstat","3");
  186. }
  187. function fSettingGoodList(pnode, nodename, userqtynm){
  188. var codynode = instance1.selectNodes(pnode + "/*");
  189. var addRow = grd_gooddmnd.rows - grd_gooddmnd.fixedRows;
  190. if(model.getValue(grd_gooddmnd.nodeset + "[" + addRow + "]/goodcd").length > 0)addRow = addRow + 1;
  191. for (var j = 1; j <= codynode.length ; j++) {
  192. if(addRow > grd_gooddmnd.rows - grd_gooddmnd.fixedRows)
  193. {
  194. misfGridIUD(grd_gooddmnd,"A");
  195. addRow = grd_gooddmnd.rows - grd_gooddmnd.fixedRows;
  196. fDefaultSetting(addRow );
  197. }
  198. model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/goodcd" , model.getValue(pnode +"/" + nodename + "[" + j + "]/goodcd"));
  199. model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/goodnm" , model.getValue(pnode +"/" + nodename + "[" + j + "]/goodnm"));
  200. model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/goodspec" , model.getValue(pnode +"/" + nodename + "[" + j + "]/goodspec"));
  201. // model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/goodmodel" , model.getValue(pnode +"/" + nodename + "[" + j + "]/goodmodel"));
  202. // model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/prodcmpynm" , model.getValue(pnode +"/" + nodename + "[" + j + "]/prodcmpynm"));
  203. model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/reqpackunit" , model.getValue(pnode +"/" + nodename + "[" + j + "]/purcunit"));
  204. model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/reqpackcnt" , model.getValue(pnode +"/" + nodename + "[" + j + "]/" + userqtynm));
  205. model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/requnit" , model.getValue(pnode +"/" + nodename + "[" + j + "]/purcunit"));
  206. model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/reqqty" , model.getValue(pnode +"/" + nodename + "[" + j + "]/" + userqtynm));
  207. model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/suplplcecd" , model.getValue(pnode +"/" + nodename + "[" + j + "]/maincustlastsuplplce"));
  208. model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/subsuplplcecd" , model.getValue(pnode +"/" + nodename + "[" + j + "]/suppcustcd"));
  209. //hbh model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/reqpackcntperunit" ,1);
  210. model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/goodunitcost" , model.getValue(pnode +"/" + nodename + "[" + j + "]/goodunitcost"));
  211. model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/reqpackcntperunit" ,model.getValue(pnode +"/" + nodename + "[" + j + "]/exchqty"));
  212. model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/stocqty" , model.getValue(pnode +"/" + nodename + "[" + j + "]/stocqty"));
  213. model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/safestocqty" , model.getValue(pnode +"/" + nodename + "[" + j + "]/safestocqty"));
  214. // 계산량 : 안전재고량-재고량
  215. model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/calcqty" ,
  216. model.getValue(pnode +"/" + nodename + "[" + j + "]/safestocqty") - model.getValue(pnode +"/" + nodename + "[" + j + "]/stocqty"));
  217. // 기본 발주량 : 계산량 / 환산수량 의 올림.
  218. var pcalcreqpackcnt = (model.getValue(pnode +"/" + nodename + "[" + j + "]/safestocqty") - model.getValue(pnode +"/" + nodename + "[" + j + "]/stocqty") ) / model.getValue(pnode +"/" + nodename + "[" + j + "]/exchqty") ;
  219. // 기본 계산량이 0 일경우 '1'
  220. if ( pcalcreqpackcnt == 0 )
  221. {
  222. pcalcreqpackcnt = 1;
  223. }
  224. // 1.3 은 -> 2
  225. else if ( pcalcreqpackcnt > Math.round(pcalcreqpackcnt) )
  226. {
  227. pcalcreqpackcnt = Math.round(pcalcreqpackcnt) + 1;
  228. }
  229. model.setValue(grd_gooddmnd.nodeset + "[" + addRow + "]/reqpackcnt" , pcalcreqpackcnt);
  230. addRow = addRow + 1;
  231. }
  232. model.recalculate();
  233. model.refresh();
  234. }
  235. function fCheckSaveData()
  236. {
  237. if(model.getValue(rbo_purcreqflag.attribute("ref")).length== 0 )
  238. {
  239. messageBox("발주구분을 " ,"C002");
  240. model.setFocus("rbo_purcreqflag");
  241. return false;
  242. }
  243. if(model.getValue(cmb_instcd.attribute("ref")).length== 0 )
  244. {
  245. messageBox("기관코드를 " ,"C002");
  246. model.setFocus("cmb_instcd");
  247. return false;
  248. }
  249. if(model.getValue(cmb_goodflag.attribute("ref")).length== 0 )
  250. {
  251. messageBox("물품구분을 " ,"C002");
  252. model.setFocus("cmb_goodflag");
  253. return false;
  254. }
  255. if(model.getValue(ipt_purcdmnddd.attribute("ref")).length== 0 )
  256. {
  257. messageBox("발주일자를 " ,"C001");
  258. model.setFocus("ipt_purcdmnddd");
  259. return false;
  260. }
  261. /*
  262. if(model.getValue(opt_reqdeptcd.attribute("ref")).length== 0 )
  263. {
  264. messageBox("발주부서를 " ,"C001");
  265. model.setFocus("opt_reqdeptcd");
  266. return false;
  267. }
  268. if(model.getValue(opt_reqpsn.attribute("ref")).length== 0 )
  269. {
  270. messageBox("발주자를 " ,"C001");
  271. model.setFocus("opt_reqpsn");
  272. return false;
  273. }
  274. */
  275. for(var currow = grd_gooddmnd.fixedRows ; currow < grd_gooddmnd.rows ; currow++)
  276. {
  277. if(grd_gooddmnd.valueMatrix(currow , grd_gooddmnd.colRef("goodcd")).length == 0)
  278. {
  279. messageBox((currow )+ " 번째 물품코드를 " ,"C001");
  280. grd_gooddmnd.row = currow;
  281. grd_gooddmnd.col= grd_gooddmnd.colRef("goodcd");
  282. grd_gooddmnd.editCell();
  283. return false;
  284. }
  285. else
  286. {
  287. for(srcrow = currow + 1 ; srcrow < grd_gooddmnd.rows ; srcrow++)
  288. {
  289. if(grd_gooddmnd.valueMatrix(currow , grd_gooddmnd.colRef("goodcd")) == grd_gooddmnd.valueMatrix(srcrow , grd_gooddmnd.colRef("goodcd")))
  290. {
  291. messageBox("동일 물품코드가 [" + currow + "," +srcrow + "->" + grd_gooddmnd.valueMatrix(currow , grd_gooddmnd.colRef("goodcd")) + "] 존재하여 저장 " ,"E001");
  292. return false;
  293. }
  294. }
  295. }
  296. if(grd_gooddmnd.valueMatrix(currow , grd_gooddmnd.colRef("reqqty")).length == 0)
  297. {
  298. messageBox((currow)+ " 번째 발주량을 " ,"C001");
  299. grd_gooddmnd.row = currow;
  300. grd_gooddmnd.col= grd_gooddmnd.colRef("reqqty");
  301. grd_gooddmnd.editCell();
  302. return false;
  303. }
  304. if(grd_gooddmnd.valueMatrix(currow , grd_gooddmnd.colRef("goodunitcost")) == 0)
  305. {
  306. messageBox((currow)+ " 번째 단가를 " ,"C001");
  307. grd_gooddmnd.row = currow;
  308. grd_gooddmnd.col= grd_gooddmnd.colRef("goodunitcost");
  309. grd_gooddmnd.editCell();
  310. return false;
  311. }
  312. if(grd_gooddmnd.valueMatrix(currow , grd_gooddmnd.colRef("reqfla")) == 0)
  313. {
  314. messageBox((currow -1)+ " 번째 금액을 " ,"C001");
  315. grd_gooddmnd.row = currow;
  316. grd_gooddmnd.col= grd_gooddmnd.colRef("reqfla");
  317. grd_gooddmnd.editCell();
  318. return false;
  319. }
  320. }
  321. return true;
  322. }
  323. function fAfterRetrieve()
  324. {
  325. var reqqty = 0;
  326. var reqfla = 0;
  327. for(var currow = grd_gooddmnd.fixedRows ; currow < grd_gooddmnd.rows ; currow++)
  328. {
  329. reqqty = reqqty + parseFloat( grd_gooddmnd.valueMatrix(currow , grd_gooddmnd.colRef("reqqty")));
  330. reqfla = reqfla + 0 + parseFloat(grd_gooddmnd.valueMatrix(currow , grd_gooddmnd.colRef("reqfla")));
  331. }
  332. model.setValue(opt_sumreqqty.attribute("ref"),reqqty);
  333. model.setValue(opt_sumreqfla.attribute("ref"),reqfla);
  334. model.refresh();
  335. }
  336. function fSettingReqAprv()
  337. {
  338. for(var liRow = grd_gooddmnd.fixedRows ; liRow < grd_gooddmnd.rows ; liRow++)
  339. {
  340. if(model.getValue(grd_gooddmnd.nodeset + "[" + (liRow - grd_gooddmnd.fixedRows + 1)+ "]/aprvyn") == "Y")
  341. {
  342. model.setValue(grd_gooddmnd.nodeset + "[" + (liRow - grd_gooddmnd.fixedRows + 1)+ "]/aprvyn","N");
  343. grd_gooddmnd.rowStatus(liRow) = "2";
  344. }
  345. else
  346. {
  347. model.setValue(grd_gooddmnd.nodeset + "[" + (liRow - grd_gooddmnd.fixedRows + 1)+ "]/aprvyn" ,"Y");
  348. grd_gooddmnd.rowStatus(liRow) = "2";
  349. }
  350. }
  351. model.refresh();
  352. }
  353. function fSaveReqAprv()
  354. {
  355. model.removenode("/root/send/aprvlist");
  356. model.makeNode("/root/send/aprvlist");
  357. model.setValue("/root/send/aprvlist" ,grd_gooddmnd.getUpdateData());
  358. submit("TXRSR01501");
  359. if (model.getValue(gvErrorMsgPath + "/type") != "error")misfMsterDetailRetrieve();
  360. }
  361. ]]>
  362. </script>
  363. </xhtml:head>
  364. <xhtml:body style="margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">
  365. <group id="grp_tle" style="left:0px; top:0px; width:1195px; height:13px; ">
  366. <caption id="caption6" class="tit_1" style="left:0px; top:0px; width:186px; height:14px; ">약품발주관리</caption>
  367. </group>
  368. <group id="grp_biz" scroll="auto" style="left:0px; top:38px; width:1195px; height:744px; ">
  369. <line id="line6" class="line_2" style="x1:0px; y1:77px; x2:1195px; y2:77px; "/>
  370. <line id="line4" class="line_2" style="x1:0px; y1:53px; x2:1195px; y2:53px; "/>
  371. <line id="line2" class="line_3" style="x1:0px; y1:81px; x2:1195px; y2:81px; "/>
  372. <line id="line1" class="line_1" style="x1:0px; y1:107px; x2:1195px; y2:107px; "/>
  373. <datagrid id="grd_gooddmnd" nodeset="/root/main/list/gooddmnd/gooddmndlist" caption="순번^약품코드^약품명^함량^재고량^안전재고량^계산량^발주량^발주량^발주량^발주량^발주량^단가^금액^승인^승인^기관코드^물품구분^발주일자^발주번호^발주구분^발주부서^접수자^발주자|순번^약품코드^약품명^함량^재고량^안전재고량^계산량^포장^단위^포장개수^낱개^단위^단가^금액^승인^승인^기관코드^물품구분^발주일자^발주번호^발주구분^발주부서^접수자^발주자" colsep="^" colwidth="30, 105, 216, 86, 59, 74, 62, 53, 48, 57, 57, 43, 100, 100, 37, 38, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100" dataheight="25" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowheader="update" rowheight="25" rowsep="|" style="left:5px; top:112px; width:1185px; height:618px; ">
  374. <col ref="purcdmndseq" _key="true" style="text-align:center; "/>
  375. <col ref="goodcd" type="inputbutton" _key="true"/>
  376. <col ref="goodnm"/>
  377. <col ref="goodspec"/>
  378. <col ref="stocqty" style="text-align:right; "/>
  379. <col ref="safestocqty" style="text-align:right; "/>
  380. <col ref="calcqty" style="text-align:right; "/>
  381. <col ref="reqpackcntperunit" type="output" format="#,###" maxlength="9" style="text-align:right; "/>
  382. <col ref="reqpackunit" style="text-align:center; "/>
  383. <col ref="reqpackcnt" type="input" format="#,###" maxlength="9" style="text-align:right; "/>
  384. <col ref="reqqty" type="input" format="#,###" style="text-align:right; "/>
  385. <col ref="requnit" style="text-align:center; "/>
  386. <col ref="goodunitcost" type="input" format="#,###" maxlength="14" style="text-align:right; "/>
  387. <col ref="reqfla" format="#,###" maxlength="14" style="left:1038px; top:23px; width:100px; height:23px; text-align:right; "/>
  388. <col checkvalue="Y,N" ref="aprvyn" type="checkbox"/>
  389. <col ref="aprvynnm"/>
  390. <col ref="instcd" visibility="hidden" _key="true"/>
  391. <col ref="goodflag" visibility="hidden" _key="true"/>
  392. <col ref="purcdmnddd" visibility="hidden" _key="true"/>
  393. <col ref="purcdmndno" visibility="hidden"/>
  394. <col ref="purcreqflag" visibility="hidden"/>
  395. <col ref="reqdeptcd" visibility="hidden" _key="true"/>
  396. <col ref="acptcharid" visibility="hidden"/>
  397. <col ref="reqpsn" visibility="hidden"/>
  398. <col ref="minexch" visibility="hidden"/>
  399. <col ref="subsuplplcecd" visibility="hidden"/>
  400. <col ref="suplplcecd" visibility="hidden"/>
  401. <col ref="prcsstat" visibility="hidden"/>
  402. <script type="javascript" ev:event="onbuttonclick">
  403. <![CDATA[
  404. if (grd_gooddmnd.col == grd_gooddmnd.colRef("goodcd") && grd_gooddmnd.rowStatus(grd_gooddmnd.row) == "1" ) {//구성물품코드를 눌렀을 경우
  405. model.removenode("/root/copynode");
  406. model.removenode(gvParamPath +"/SMRSD00400_/SMRSD00400_value");
  407. model.makeNode("/root/copynode");
  408. rszfOpenPopUpListByWndName(grd_gooddmnd,"","goodcd,goodnm","SPRSD00190","instcd,goodflag","cmb_instcd,cmb_goodflag");
  409. var cur_row = grd_gooddmnd.row;
  410. var status = grd_gooddmnd.valueMatrix(cur_row, grd_gooddmnd.colRef("m"));
  411. var CSV = model.getValue(gvParamPath +"/SMRSD00400_/SMRSD00400_value");
  412. setCSVToNode("/root/copynode", CSV, "gooddmndlist");
  413. fSettingGoodList("/root/copynode", "gooddmndlist" , "userqty");
  414. }
  415. ]]>
  416. </script>
  417. <script type="javascript" ev:event="xforms-value-changed">
  418. <![CDATA[
  419. if(grd_gooddmnd.col == grd_gooddmnd.colRef("goodcd") && grd_gooddmnd.valueMatrix(grd_gooddmnd.row, grd_gooddmnd.colRef("goodcd")).length> 0) {
  420. model.removenode("/root/copynode");
  421. model.removenode(gvParamPath +"/SMRSD00400_/SMRSD00400_value");
  422. model.makeNode("/root/copynode");
  423. rszfValidationCheck("TRRSD00191", "goodlist" , "refcond,instcd,goodflag,goodcd,goodnm,indexgb,indexnm","goodcd," + model.getValue(cmb_instcd.attribute("ref")) + "," +model.getValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1)+ "]/goodflag") + "," + model.getValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1)+ "]/goodcd") + ",,,," ,"","goodcd,goodnm,goodspec,goodmodel,prodcmpynm,minexch,maincustlastsuplplce,suplplcecd,goodunitcost",grd_gooddmnd,"SPRSD00190","instcd,goodflag","cmb_instcd,cmb_goodflag" ,"Y");
  424. model.refresh();
  425. if( grd_gooddmnd.valueMatrix(cur_row, grd_gooddmnd.colRef("goodnm")).length> 0)
  426. {
  427. if(model.getValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1)+ "]/minexch") > 0)model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1)+ "]/reqpackcnt",model.getValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1)+ "]/minexch") );
  428. else model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1)+ "]/reqpackcnt","1");
  429. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/reqpackunit" ,model.getValue("/root/init/main/goodlist/purcunit"));
  430. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/requnit" , model.getValue("/root/init/main/goodlist/purcunit"));
  431. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/reqpackcntperunit" ,model.getValue("/root/init/main/goodlist/exchqty"));
  432. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/suplplcecd" , model.getValue("/root/init/main/goodlist/maincustlastsuplplce"));
  433. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/subsuplplcecd" , model.getValue("/root/init/main/goodlist/suppcustcd"));
  434. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/goodunitcost" , model.getValue("/root/init/main/goodlist/goodunitcost"));
  435. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/stocqty" , model.getValue("/root/init/main/goodlist/stocqty"));
  436. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/safestocqty" , model.getValue("/root/init/main/goodlist/safestocqty"));
  437. // 계산량 : 안전재고량-재고량
  438. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/calcqty",
  439. model.getValue("/root/init/main/goodlist/safestocqty") - model.getValue("/root/init/main/goodlist/stocqty") );
  440. // 기본 발주량 : 계산량 / 환산수량
  441. var pcalcreqpackcnt = (model.getValue("/root/init/main/goodlist/safestocqty") - model.getValue("/root/init/main/goodlist/stocqty") ) / model.getValue("/root/init/main/goodlist/exchqty") ;
  442. if ( pcalcreqpackcnt > Math.round(pcalcreqpackcnt) )
  443. {
  444. pcalcreqpackcnt = Math.round(pcalcreqpackcnt) + 1;
  445. }
  446. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/reqpackcnt",pcalcreqpackcnt);
  447. }
  448. model.recalculate();
  449. model.refresh();
  450. var cur_row = grd_gooddmnd.row;
  451. var status = grd_gooddmnd.valueMatrix(cur_row, grd_gooddmnd.colRef("m"));
  452. var CSV = model.getValue(gvParamPath +"/SMRSD00400_/SMRSD00400_value");
  453. if(CSV.length == 0 && grd_gooddmnd.valueMatrix(cur_row, grd_gooddmnd.colRef("goodnm")).length == 0)
  454. {
  455. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/goodcd" , "");
  456. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/goodnm" , "");
  457. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/goodspec" , "");
  458. // model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/goodmodel" , "");
  459. // model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/prodcmpynm" , "");
  460. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/reqpackunit" , "");
  461. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/reqpackcnt" , "");
  462. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/requnit" , "");
  463. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/reqqty" , "");
  464. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/reqpackcntperunit" , "");
  465. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/goodunitcost" , "");
  466. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/reqfla" , "");
  467. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/stocqty" , "");
  468. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1) + "]/safestocqty" , "");
  469. grd_gooddmnd.col = grd_gooddmnd.colRef("goodcd");
  470. grd_gooddmnd.editCell();
  471. }
  472. else if(CSV.length > 0)
  473. {
  474. model.setValue(grd_gooddmnd.nodeset + "[" + (grd_gooddmnd.row - grd_gooddmnd.fixedRows + 1)+ "]/goodcd","");
  475. setCSVToNode("/root/copynode", CSV, "gooddmndlist");
  476. fSettingGoodList("/root/copynode", "gooddmndlist" , "userqty");
  477. }
  478. }
  479. ]]>
  480. </script>
  481. <script type="javascript" ev:event="onkeydown">
  482. <![CDATA[
  483. if(event.keyCode == 9)
  484. {
  485. if(event.shiftKey)
  486. {
  487. if(grd_gooddmnd.colAttribute(grd_gooddmnd.col + 1, "type").indexOf ("input") > -1)
  488. {
  489. for(curcol = grd_gooddmnd.col -1 ; curcol > -1 ; curcol--)
  490. {
  491. if(grd_gooddmnd.colAttribute(curcol, "type").indexOf ("input") > -1)
  492. {
  493. grd_gooddmnd.col = curcol;
  494. grd_gooddmnd.editCell();
  495. return;
  496. }
  497. }
  498. }
  499. }
  500. else
  501. {
  502. if(grd_gooddmnd.colAttribute(grd_gooddmnd.col, "type").indexOf ("input") == -1)
  503. {
  504. if(grd_gooddmnd.col - 1 == grd_gooddmnd.colRef("goodcd") && grd_gooddmnd.valueMatrix(grd_gooddmnd.row, grd_gooddmnd.col - 1).length == 0)
  505. {
  506. grd_gooddmnd.col = grd_gooddmnd.colRef("goodcd");
  507. grd_gooddmnd.editCell();
  508. return;
  509. }
  510. for(curcol = grd_gooddmnd.col ; curcol <grd_gooddmnd.cols ; curcol++)
  511. {
  512. if(grd_gooddmnd.colAttribute(curcol, "type").indexOf ("input") > -1)
  513. {
  514. grd_gooddmnd.col = curcol;
  515. grd_gooddmnd.editCell();
  516. return;
  517. }
  518. }
  519. }
  520. }
  521. }
  522. ]]>
  523. </script>
  524. </datagrid>
  525. <button id="btn_choidel" class="btn2_letter3" style="left:920px; top:87px; width:53px; height:19px; ">
  526. <caption>행삭제</caption>
  527. <script type="javascript" ev:event="DOMActivate">
  528. <![CDATA[
  529. misfGridIUD(grd_gooddmnd, "D");
  530. ]]>
  531. </script>
  532. </button>
  533. <button id="btn_insert" class="btn2_letter3" style="left:866px; top:87px; width:53px; height:19px; ">
  534. <caption>행추가</caption>
  535. <script type="javascript" ev:event="DOMActivate">
  536. <![CDATA[
  537. if(fCheckRetrieveData(true) == false)return;
  538. misfGridIUD(grd_gooddmnd, "A");
  539. grd_gooddmnd.row = grd_gooddmnd.rows -grd_gooddmnd.fixedRows ;
  540. fDefaultSetting(grd_gooddmnd.row);
  541. model.setFocus("grd_gooddmnd");
  542. grd_gooddmnd.col = grd_gooddmnd.colRef("goodcd");
  543. grd_gooddmnd.editCell();
  544. ]]>
  545. </script>
  546. </button>
  547. <caption id="caption4" class="tit_2" style="left:5px; top:92px; width:110px; height:13px; ">약품 발주 내역</caption>
  548. <caption id="caption1" class="tit_2" style="left:5px; top:11px; width:111px; height:14px; ">약품발주</caption>
  549. <line id="line3" class="line_1" style="x1:0px; y1:26px; x2:1194px; y2:26px; "/>
  550. <input id="ipt_purcdmndno" ref="/root/send/gooddmnd/purcdmndno" class="input_default" maxlength="4" style="left:192px; top:57px; width:56px; height:19px; ">
  551. <script type="javascript" ev:event="onkeyup">
  552. <![CDATA[
  553. inputEnterKey("btn_search", "DOMActivate");
  554. ]]>
  555. </script>
  556. </input>
  557. <select1 id="rbo_purcreqflag" ref="/root/send/gooddmnd/purcreqflag" appearance="full" cols="3" overflow="visible" style="left:88px; top:34px; width:167px; height:15px; background-color:transparent; border-style:none; ">
  558. <choices>
  559. <itemset nodeset="/root/init/purcreqflag">
  560. <label ref="label"/>
  561. <value ref="value"/>
  562. </itemset>
  563. </choices>
  564. <script type="javascript" ev:event="xforms-value-changed">
  565. <![CDATA[
  566. btn_search.dispatch("DOMActivate");
  567. ]]>
  568. </script>
  569. </select1>
  570. <select1 id="cmb_instcd" ref="/root/send/gooddmnd/instcd" class="combo_default" visibility="hidden" appearance="minimal" style="left:1045px; top:35px; width:30px; height:19px; ">
  571. <choices>
  572. <itemset nodeset="/root/init/instcd">
  573. <label ref="cdnm"/>
  574. <value ref="cdid"/>
  575. </itemset>
  576. </choices>
  577. <script type="javascript" ev:event="xforms-value-changed">
  578. <![CDATA[
  579. btn_search.dispatch("DOMActivate");
  580. ]]>
  581. </script>
  582. </select1>
  583. <select1 id="cmb_goodflag" ref="/root/send/gooddmnd/goodflag" class="combo_default" visibility="hidden" appearance="minimal" style="left:1075px; top:35px; width:35px; height:19px; ">
  584. <choices>
  585. <itemset nodeset="/root/hidden/goodflag">
  586. <label ref="cdnm"/>
  587. <value ref="cdid"/>
  588. </itemset>
  589. </choices>
  590. <script type="javascript" ev:event="xforms-value-changed">
  591. <![CDATA[
  592. btn_search.dispatch("DOMActivate");
  593. ]]>
  594. </script>
  595. </select1>
  596. <output id="opt_reqdeptcd" ref="/root/send/gooddmnd/reqdeptcd" class="output_fix" appearance="input" maxlength="10" style="left:363px; top:57px; width:57px; height:19px; "/>
  597. <output id="opt_reqdeptnm" ref="/root/send/gooddmnd/reqdeptnm" class="output_fix" appearance="output" style="left:422px; top:57px; width:135px; height:19px; "/>
  598. <output id="opt_reqpsn" ref="/root/send/gooddmnd/reqpsn" class="output_fix" appearance="input" maxlength="10" style="left:663px; top:57px; width:57px; height:19px; "/>
  599. <output id="opt_reqpsnnm" ref="/root/send/gooddmnd/reqpsnnm" class="output_fix" appearance="output" style="left:722px; top:57px; width:166px; height:19px; "/>
  600. <button id="button27" class="btn2_letter7" style="left:890px; top:56px; width:103px; height:19px; ">
  601. <caption>발주대상량 조회</caption>
  602. </button>
  603. <caption id="caption5" class="cell_1" style="left:0px; top:55px; width:85px; height:23px; vertical-align:middle; ">발주일자</caption>
  604. <caption id="caption12" class="cell_1" style="left:260px; top:55px; width:100px; height:23px; vertical-align:middle; ">발주부서</caption>
  605. <caption id="caption3" class="cell_1" style="left:560px; top:55px; width:100px; height:23px; vertical-align:middle; ">발 주 자</caption>
  606. <caption id="caption2" class="cell_1" style="left:0px; top:31px; width:85px; height:23px; vertical-align:middle; ">발주구분</caption>
  607. <output id="opt_sumreqqty" ref="/root/init/reqcnt" class="output_default" format="#,###" style="left:443px; top:87px; width:70px; height:19px; font-weight:bold; "/>
  608. <caption id="caption25" style="left:377px; top:87px; width:69px; height:20px; font-weight:bold; vertical-align:middle; ">발주건수 :</caption>
  609. <output id="opt_sumreqfla" ref="/root/init/reqamt" class="output_default" format="#,###" style="left:588px; top:87px; width:125px; height:19px; font-weight:bold; "/>
  610. <caption id="caption7" style="left:521px; top:87px; width:75px; height:20px; font-weight:bold; vertical-align:middle; ">발주금액 :</caption>
  611. <button id="btn_excel" class="btn2_letter2" style="left:823px; top:87px; width:42px; height:19px; ">
  612. <caption>엑셀</caption>
  613. <script type="javascript" ev:event="DOMActivate">
  614. <![CDATA[
  615. misfSaveExcel(grd_gooddmnd);
  616. ]]>
  617. </script>
  618. </button>
  619. <input id="ipt_purcdmnddd" ref="/root/send/gooddmnd/purcdmnddd" class="input_s_essential" inputtype="date" style="left:88px; top:57px; width:100px; height:19px; ">
  620. <script type="javascript" ev:event="xforms-value-changed">
  621. <![CDATA[
  622. btn_search.dispatch("DOMActivate");
  623. ]]>
  624. </script>
  625. </input>
  626. <input id="ipt_acptcharid" ref="/root/send/gooddmnd/acptcharid" class="input_default" visibility="hidden" maxlength="10" appearance="input" style="left:1020px; top:35px; width:22px; height:19px; "/>
  627. <caption id="caption8" class="cell_1" style="left:260px; top:30px; width:100px; height:23px; vertical-align:middle; ">약품대분류</caption>
  628. <button id="btn_search" class="btn1_letter2" navindex="7" style="left:1138px; top:3px; width:56px; height:22px; text-align:left; ">
  629. <caption>조회</caption>
  630. <script type="javascript" ev:event="DOMActivate">
  631. <![CDATA[
  632. if(fCheckRetrieveData(false) == false)return;
  633. misfGridInit(grd_gooddmnd);
  634. misfMsterDetailRetrieve();
  635. fAfterRetrieve();
  636. ]]>
  637. </script>
  638. </button>
  639. <select1 id="cmb_lrgcd" ref="/root/send/gooddmnd/lrgcd" class="combo_default" appearance="minimal" style="left:364px; top:32px; width:100px; height:19px; ">
  640. <choices>
  641. <itemset nodeset="/root/init/lrgcd">
  642. <label ref="label"/>
  643. <value ref="value"/>
  644. </itemset>
  645. </choices>
  646. </select1>
  647. <button id="btn_reqset" class="btn2_letter10" style="left:692px; top:87px; width:130px; height:19px; ">
  648. <caption>청구 Set 목록조회</caption>
  649. <script type="javascript" ev:event="DOMActivate">
  650. <![CDATA[
  651. if(fCheckRetrieveData(true) == false)return;
  652. model.removenode("/root/copynode");
  653. model.removenode(gvParamPath +"/SMRSD00210_/SMRSD00210_value");
  654. model.makeNode("/root/copynode");
  655. rszfOpenPopUpListByWndName(grd_gooddmnd,"","goodcd,goodnm","SMRSD00210","instcd,reqdeptcd,reqprid,reqflag","cmb_instcd,opt_reqdeptcd,cmb_reqpridflag,ipt_reqflag");
  656. var cur_row = grd_gooddmnd.row;
  657. var status = grd_gooddmnd.valueMatrix(cur_row, grd_gooddmnd.colRef("m"));
  658. var CSV = model.getValue(gvParamPath + "/SMRSD00210_/SMRSD00210_value");
  659. setCSVToNode("/root/copynode", CSV, "gooddmndlist");
  660. fSettingGoodList("/root/copynode", "gooddmndlist" , "goodqty");
  661. ]]>
  662. </script>
  663. </button>
  664. <input id="ipt_reqflag" ref="/root/hidden/reqflag" visibility="hidden" style="left:1110px; top:35px; width:30px; height:19px; "/>
  665. <button id="btn_accept" class="btn4_letter5" visibility="visible" style="left:1101px; top:85px; width:92px; height:22px; ">
  666. <caption>승인/미승인</caption>
  667. <script type="javascript" ev:event="DOMActivate">
  668. <![CDATA[
  669. fSaveReqAprv();
  670. ]]>
  671. </script>
  672. </button>
  673. <button id="button4" class="btn2_letter10" visibility="visible" style="left:973px; top:87px; width:130px; height:19px; ">
  674. <caption>승인전체/접수전체취소</caption>
  675. <script type="javascript" ev:event="DOMActivate">
  676. <![CDATA[
  677. fSettingReqAprv();
  678. ]]>
  679. </script>
  680. </button>
  681. </group>
  682. <group id="group1" style="left:0px; top:12; width:1195px; height:27px; ">
  683. <button id="button1" class="btn3_letter4" style="left:0px; top:3px; width:80px; height:22px; ">
  684. <caption>화면이동</caption>
  685. </button>
  686. <button id="btn_save" class="btn4_letter2" style="left:1070px; top:3px; width:56px; height:22px; ">
  687. <caption>저장</caption>
  688. <script type="javascript" ev:event="DOMActivate">
  689. <![CDATA[
  690. if(fCheckSaveData() == false)return;
  691. misfSave("TXRSR00301");
  692. if (model.getValue(gvErrorMsgPath + "/type") != "error")btn_search.dispatch("DOMActivate");
  693. ]]>
  694. </script>
  695. </button>
  696. <button id="btn_init" class="btn4_letter3" style="left:1127px; top:3px; width:68px; height:22px; ">
  697. <caption>초기화</caption>
  698. <script type="javascript" ev:event="DOMActivate">
  699. <![CDATA[
  700. fInitialize();
  701. ]]>
  702. </script>
  703. </button>
  704. <line id="line17" class="line_2" style="x1:0px; y1:25px; x2:1194px; y2:25px; "/>
  705. </group>
  706. </xhtml:body>
  707. </xhtml:html>