SMMNP01700.js 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932
  1. /* ---------------------------------------------------------------------
  2. Cart 물품대체(SMMNP01700.xfm - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. : Create By Francis Choi
  6. : 2015.05.02
  7. ---------------------------------------------------------------------- */
  8. var ExCount = 0;
  9. var sPathTot = "/root/WorkData/codelist" ; // 전체
  10. var wPathNode = "/root/WorkData/codelists" ; // Save Cart Master
  11. var cPathNode = "/root/WorkData/MnphcagoLists"; // Save 물품 내역
  12. var ListPathM = "/root/MnphcagoLists" ;
  13. var ListPathC = "/root/CMnphcagoLists";
  14. var ListPathD = "/root/WorkData/DelMnphcagoLists";
  15. var tPathName = "/root/MnpmcartList/orddeptcd" + " " // 0 진료과
  16. + "/root/MnpmcartList/perfid" + " " // 1 집도의
  17. + "/root/MnpmcartList/opcd" + " " // 2 수술코드
  18. + "/root/MnpmcartList/lrgcdlist" + " " // 3 대분류
  19. + "/root/MnpmcartList/mdlcdlist" + " " // 4 중분류
  20. + "/root/MnpmcartList/smlcdlist" + " " // 5 중분류
  21. + "/root/MnphcagoLists/mnphcagolist" + " " // 6 물품
  22. + "/root/MnpmcartList/goodflaglist" ; // 7 물품분류
  23. var gPathName = "/root/MnphcagoLists" + " " // 0 Cart물품
  24. + "/root/CMnphcagoLists" ; // 1 Cart물품
  25. var PathClearNm = "/root/MnpmcartList/orddeptcd/codelist" + " " // 0 진료과
  26. + "/root/MnpmcartList/perfid/codelist" + " " // 1 집도의
  27. + "/root/MnpmcartList/opcd/codelist" + " " // 2 수술코드
  28. + "/root/MnpmcartList/lrgcdlist/codelist" + " " // 3 대분류
  29. + "/root/MnpmcartList/mdlcdlist/codelist" + " " // 4 중분류
  30. + "/root/MnphcagoLists/mnphcagolist" + " " // 5 물품
  31. + "/root/MnpmcartList/goodflaglist/codelist" + " " // 6 물품분류
  32. + "/root/main/MnpmcartData/MnpmcartList" + " " // 7 사용 Cart List
  33. + "/root/main/CMnpmcartData/MnpmcartList" + " " // 8 대상 Cart List
  34. + "/root/HistData/exedata/exedatalist" ; // 9 실행 대상 List
  35. var wRefreshDoc = "cmb_orddept" + " " // 0 진료과
  36. + "cmb_perfdr" + " " // 1 집도의
  37. + "cmb_opcd" + " " // 2 수술코드
  38. + "cmb_lrgcd" + " " // 3 대분류
  39. + "cmb_mdlcd" + " " // 4 중분류
  40. + "cmb_good" + " " // 5 물품
  41. + "cmb_goodflag" + " " // 6 물품분류
  42. + "grd_scart" + " " // 7 사용 Cart List
  43. + "grd_tcart" + " " // 8 대상 Cart List
  44. + "grd_exe" ; // 9 실행 대상 List
  45. var InsertMode = "I:추가" ; // 추가
  46. var UpdateMode = "U:대체" ; // 대체
  47. var DeleteMode = "D:삭제" ; // 삭제
  48. var tPathNode = tPathName.split(" ");
  49. var gPathNode = gPathName.split(" ");
  50. var wRefresh = wRefreshDoc.split(" ");
  51. var PathClear = PathClearNm.split(" ");
  52. /* ------------------------------------------------- */
  53. /* SMMNP01700_물품대체등록 */
  54. /* On Load 시 Call */
  55. /* ------------------------------------------------- */
  56. /* group : EMR 간호 수술마취 */
  57. /* ver : 2015.05.15 */
  58. /* by : 최학록 */
  59. /* --------------------------------------------------*/
  60. /* type : function */
  61. /* access : public */
  62. /* desc : xforms-ready시 수행한다 */
  63. /* return : */
  64. /* --------------------------------------------------*/
  65. function fFormInit() {
  66. model.removenodeset('/root/main/RscdgoodData/RscdgoodList');//물품리스트 reset
  67. model.removenodeset('/root/main/MnpmcartData/MnpmcartList');//사용cartlist reset
  68. model.removenodeset('/root/main/CMnpmcartData/MnpmcartList');//대상caertlist reset
  69. model.removenodeset('/root/HistData/exedata/exedatalist');//물품 추가/대체/삭제 실행대상 reset
  70. model.removenodeset('/root/HistData/qrydata/qrydatalist');//물품 추가/대체/삭제 변경이력 list reset
  71. button56.visible = false;
  72. button55.visible = false;
  73. img1.visible = true; //변경대상 펼치기
  74. img2.visible = false; //변경대상 닫기
  75. img3.visible = true; //변경이력 펼치기
  76. img4.visible = false; //변경이력 닫기
  77. img5.visible = true; //집도의 수술명 펼치기
  78. img6.visible = false; //집도의 수술명 닫기
  79. img7.visible = true; //CART 추가/대체/삭제 물품 검색 펼치기
  80. img8.visible = false; //CART 추가/대체/삭제 물품 검색 닫기
  81. grd_scart.fixedcellcheckbox(0, grd_scart.colRef("checkyn")) = true;
  82. grd_tcart.fixedcellcheckbox(0, grd_tcart.colRef("checkyn")) = true;
  83. grd_scart.explorerbar = "sort";
  84. grd_tcart.explorerbar = "sort";
  85. grd_good.explorerbar = "sort";
  86. grd_exe.explorerbar = "sort";
  87. grd_hist.explorerbar = "sort";
  88. fGoodGubunData_Read(7, cmb_goodflag, 4 ); // 물품분류
  89. fMnpmcartData_Read( 0 , cmb_orddept); // Cart Master
  90. var todd = getCurrentDate();
  91. inp_fromdd.value = todd; // 조회 from
  92. inp_todd.value = todd; // 조회 to
  93. rdo_useflag.value = 'A';
  94. grd_scart.colHidden(grd_scart.colRef("goodqty")) = true;
  95. grd_tcart.colHidden(grd_tcart.colRef("goodqty")) = true;
  96. rdo_copyflag.value = "1";
  97. }
  98. /* ----------------------------------------------------*/
  99. /* type : function */
  100. /* access : public */
  101. /* desc : cart구분이 변경될 때마다 조회조건 및 라벨을 변경 */
  102. /* 수술선택시는 집도의로, 마취선택시는 마취의로 변경*/
  103. /* param : */
  104. /* return : */
  105. /* ----------------------------------------------------*/
  106. function fsetCartGubn(){
  107. //구분이 마취일때는 진료과를 마취통증의학과로 setting
  108. //2090000000
  109. model.removeNodeset("/root/main/MnpmcartData/MnpmcartList");//사용cart list 초기화
  110. model.removeNodeset('/root/main/CMnpmcartData/MnpmcartList');//대상 cartlist 초기화
  111. model.removeNodeset('/root/HistData/exedata/exedatalist');//물품추가/대체/삭제 실행대상 list 초기화
  112. model.removeNodeset('/root/HistData/qrydata/qrydatalist');//물품 추가/대체/삭제 변경이력 list 초기화
  113. var cartgubn = model.getValue('/root/WorkData/cond/cartgubn');
  114. var cartgubnStr;
  115. if(cartgubn == 'A'){//마취
  116. //model.setValue('/root/WorkData/cond/orddept', '2090000000');
  117. //cmb_orddept.disabled = true;
  118. //마취통증의학과의 마취의 조회
  119. fRemoveNode(1);
  120. //fRemoveNode(2);
  121. model.setValue("/root/WorkData/cond/perfdr" ,"");
  122. model.setValue("/root/WorkData/cond/opcd" ,"");
  123. //model.setValue("/root/WorkData/cond/qryflag", "2" );
  124. //fMnpmcartData_Read(1, cmb_perfdr,"/root/WorkData/cond/orddept");
  125. //라벨변경
  126. cartgubnStr = '마취의';
  127. }else if(cartgubn == 'O'){//수술
  128. cmb_orddept.disabled = false;
  129. //라벨변경
  130. cartgubnStr = '집도의';
  131. }
  132. //라벨변경
  133. cpt_1.text = cartgubnStr + '별 수술명 검색';
  134. cpt_2.text = cartgubnStr;
  135. grd_exe.valuematrix(1, 2) = cartgubnStr;
  136. grd_exe.valuematrix(1, 6) = cartgubnStr;
  137. grd_hist.valuematrix(1, 3) = cartgubnStr;
  138. grd_hist.valuematrix(1, 7) = cartgubnStr;
  139. model.refresh();
  140. }
  141. /* --------------------------------------------------*/
  142. /* type : function */
  143. /* access : public */
  144. /* desc : 콤보아이템 제거 */
  145. /* param : */
  146. /* return : */
  147. /* --------------------------------------------------*/
  148. function removeComboItem( comboID ) {
  149. var comboObj = document.all.item(comboID);
  150. var comboItemNodeSet = comboObj.choices.itemset.attribute("nodeset");
  151. model.removenode(comboItemNodeSet + "[1]");
  152. model.refresh();
  153. }
  154. /* ------------------------------------------------- */
  155. /* SMMNP01700_물품등록 */
  156. /* On Load 시 Call */
  157. /* ------------------------------------------------- */
  158. /* group : EMR 간호 수술마취 */
  159. /* ver : 2015.05.15 */
  160. /* by : 최학록 */
  161. /* ------------------------------------------------- */
  162. /* SMMNP01700_Case Cart 물품 */
  163. /* On Load 시 Call */
  164. /* desc :Case Cart MASTER 정보 가져오기 */
  165. /* --------------------------------------------------*/
  166. function fMnpmcartData_Read(pIdx, pId, pDept, pDr ,pCcrtno ) {
  167. model.removenode("/root/send");
  168. model.makeValue("/root/send/orddeptcd" , model.getValue(pDept ) ); // 진료과
  169. model.makeValue("/root/send/perfid" , model.getValue(pDr ) ); // 집도의
  170. model.makeValue("/root/send/ccrtno" , model.getValue(pCcrtno) ); // CaseCart 번호
  171. model.makeValue("/root/send/useflag" , model.getValue("/root/WorkData/cond/useflag")); // 사용여부
  172. model.makeValue("/root/send/qryflag" , model.getValue("/root/WorkData/cond/qryflag" )); // Query 구분 1:진료과,2:집도의,2:CART 코드
  173. model.makeValue("/root/send/cartgubn" , model.getValue("/root/WorkData/cond/cartgubn" )); // cart 구분 O: 수술, A: 마취
  174. model.removenode(PathClear[pIdx]);
  175. submit("TRMNP01601"); // Cart MASTER 정보를 가져온다.
  176. model.copyNode(tPathNode[pIdx], wPathNode);
  177. if( pIdx == 2 ) return;
  178. addComboItem(wRefresh[pIdx], "전 체", "", "above" );
  179. model.removenode(wPathNode);
  180. //pId.refresh();
  181. }
  182. /* ------------------------------------------------- */
  183. /* SMMNP01700_물품등록 */
  184. /* ------------------------------------------------- */
  185. /* group : EMR 간호 수술마취 */
  186. /* ver : 2009.01.19 */
  187. /* by : 김진명 */
  188. /* ------------------------------------------------- */
  189. /* desc : 집도과, 집도의별 카트리스트 조회 */
  190. /* --------------------------------------------------*/
  191. function fSearchCartList() {
  192. model.removenode("/root/send");
  193. model.makeValue("/root/send/orddeptcd" , model.getValue("/root/WorkData/cond/orddept")); // 진료과
  194. model.makeValue("/root/send/perfid" , model.getValue("/root/WorkData/cond/perfdr")); // 집도의
  195. model.makeValue("/root/send/useflag" , "Y"); // 사용여부
  196. model.makeValue("/root/send/cartgubn" , model.getValue("/root/WorkData/cond/cartgubn" )); // cart 구분 O: 수술, A: 마취
  197. model.makeValue("/root/send/goodcd" , model.getValue("/root/WorkData/cond/goodcd" )); // cart 구분 O: 수술, A: 마취
  198. model.makeValue("/root/send/allsizespecid" , model.getValue("/root/WorkData/cond/sizecd" )); // cart 구분 O: 수술, A: 마취
  199. submit("TRMNP01704");
  200. }
  201. // -------------------------------------------------
  202. // SMMNP01700_물품 분류 READ
  203. // --------------------------------------------------
  204. function fGoodGubunData_Read(pIdx, pId, pRead, pGoodFlag, pLrgCd, pMdlCd) {
  205. model.removenode("/root/send");
  206. model.makeValue("/root/send/lrgcd" , model.getValue(pLrgCd )); //대분류
  207. model.makeValue("/root/send/mdlcd" , model.getValue(pMdlCd )); //중분류
  208. model.makeValue("/root/send/goodflag", model.getValue(pGoodFlag)); //물품구분
  209. model.makeValue("/root/send/refnm" , "" ); //검색어
  210. model.makeValue("/root/send/refflag" , "0" ); //검색구분
  211. model.makeValue("/root/send/readcls" , pRead ); //검색Table
  212. submit("TRMNP01700"); // 물품분류 정보를 가져온다.
  213. // model.duplicate(wPathNode , sPathTot);
  214. model.copyNode(tPathNode[pIdx], wPathNode);
  215. if (pIdx < 7) {
  216. addComboItem(wRefresh[pIdx], "전 체", "", "above" );
  217. }
  218. // alert(wPathNode);
  219. model.removenode(wPathNode);
  220. pId.refresh();
  221. }
  222. // -------------------------------------------------
  223. // SMMNP01700_변경이력 READ
  224. // --------------------------------------------------
  225. function fCGHSData_Read() {
  226. model.removenode("/root/send");
  227. model.makeValue("/root/send/fromudd" , inp_fromdd.value ); //의뢰일자 from
  228. model.makeValue("/root/send/toudd" , inp_todd.value ); //의뢰일자 to
  229. model.makeValue("/root/send/updgbn" , rdo_useflag.value ); //변경구분
  230. submit("TRMNP01703"); // 물품분류 정보를 가져온다.
  231. // cmb_goodflag.focusIndex = 0;
  232. //addComboItem(wRefresh[pIdx], "전 체", "", "above" );
  233. }
  234. // -------------------------------------------------
  235. // SMMNP01700_물품 정보 READ
  236. // --------------------------------------------------
  237. function fRscdgoodData_Read() {
  238. xPath = "/root/WorkData/cond";
  239. if( model.getValue(xPath+"/goodcd") == "" ) {//물품코드
  240. if( model.getValue(xPath+"/goodnm") == "" ) {
  241. if( model.getValue(xPath+"/goodflag")== "" ){
  242. messageBox(" 물품 구분은 " , "I003"); // 물품구분
  243. return;
  244. }else if( model.getValue(xPath+"/lrgcd" )== "" ){
  245. messageBox(" 대분류 코드는 ", "I003"); // 대분류코드
  246. return;
  247. }else if( model.getValue(xPath+"/mdlcd" )== "" ){
  248. messageBox(" 중분류 코드는 ", "I003"); // 중분류코드
  249. return;
  250. }
  251. }
  252. }
  253. model.removenode("/root/send");
  254. model.makeValue("/root/send/lrgcd" , model.getValue(xPath+"/lrgcd" )); // 대분류코
  255. model.makeValue("/root/send/mdlcd" , model.getValue(xPath+"/mdlcd" )); // 중분류코
  256. model.makeValue("/root/send/smlcd" , model.getValue(xPath+"/smlcd" )); // 중분류코
  257. model.makeValue("/root/send/goodcd" , model.getValue(xPath+"/goodcd" )); // 물품코드
  258. model.makeValue("/root/send/cartgubn" , model.getValue(xPath+"/cartgubn" )); // CARTGUBN
  259. model.makeValue("/root/send/goodflag", model.getValue(xPath+"/goodflag")); // 물품구분
  260. submit("TRMNP01701"); // 물품 정보를 가져온다.
  261. fRemoveNode(7); // 사용 Cart 리스트 초기화
  262. fRemoveNode(8); // 대상 리스트 초기화
  263. }
  264. // -------------------------------------------------
  265. // POPUP 물품 정보
  266. // --------------------------------------------------
  267. function fPopupGood(pPath, pGood, pGoodNm, pSizeCd, menuparam) {
  268. var refflag = model.getValue("/root/temp/refflag");
  269. setParameter("openflag", "STOC");
  270. if( refflag == "1" ) { /*물품명으로 검색*/
  271. setParameter("refnm", model.getValue("/root/main/cond/goodnm"));
  272. setParameter("refflag", "1");
  273. }else if( refflag == "2" ) { /*물품코드으로 검색*/
  274. setParameter("refnm", "CCR");
  275. setParameter("refflag", "2");
  276. }
  277. setParameter("tabflag", "CCR");
  278. setParameter("menuparam", menuparam);
  279. setParameter("cartgubn", model.getValue("/root/WorkData/cond/cartgubn"));
  280. modal("SMMNP04460" ,"", "100", "100", "SMMNP04460", "", "");
  281. var getData = model.getValue("/root/properties/parameters/SendData/SendDatavalue");
  282. if( getData == "") {
  283. return;
  284. }else {
  285. var getDataTemp1 = getData.split("▩");
  286. var getData = model.getValue("/root/properties/parameters/SendData/SendDatavalue");
  287. var getDataTemp = getData.split("|");
  288. model.setValue(pPath + "/goodcd" , getDataTemp[0]);
  289. model.setValue(pPath + "/goodnm" , getDataTemp[1]);
  290. model.setValue(pPath + "/sizecd" , getDataTemp[2]);
  291. model.setValue(pPath + "/goodspec" , getDataTemp[5]);
  292. model.setValue(pPath + "/goodmodel" , getDataTemp[6]);
  293. model.setValue("/root/WorkData/InputGood/goodqty", 0);
  294. if( model.getValue(pPath + "/goodcls") == "" ) {
  295. model.setValue(pPath + "/goodcls" , getDataTemp[4]);
  296. }
  297. pGood.refresh();
  298. pGoodNm.refresh();
  299. pSizeCd.refresh();
  300. inp_goodqty.refresh();
  301. }
  302. if( menuparam == "M" ) {//메인 물품 조회시만
  303. fRscdgoodData_Read();
  304. }
  305. }
  306. // -------------------------------------------------
  307. // SMMNP01700_사용 Cart List
  308. // --------------------------------------------------
  309. function fUseCartData_Read() {
  310. if(grd_good.row < 1){
  311. messageBox(" 물품정보를 " , "C002"); // 물품구분
  312. return;
  313. }else if(model.getValue("/root/main/RscdgoodData/RscdgoodList["+grd_good.row+"]/goodcd")==""){
  314. messageBox(" 물품정보를 " , "C002"); // 물품코드
  315. return;
  316. }
  317. model.removenode("/root/send");
  318. model.makeValue("/root/send/orddeptcd" , model.getValue("/root/WorkData/cond/orddept" )); // 진료과코드
  319. model.makeValue("/root/send/perfid" , model.getValue("/root/WorkData/cond/perfdr" )); // 집도의ID
  320. model.makeValue("/root/send/opcd" , model.getValue("/root/WorkData/cond/opcd" )); // 수술코드
  321. model.makeValue("/root/send/goodcd" , model.getValue("/root/main/RscdgoodData/RscdgoodList["+grd_good.row+"]/goodcd" )); // 물품코드
  322. model.makeValue("/root/send/allsizespecid" , model.getValue("/root/main/RscdgoodData/RscdgoodList["+grd_good.row+"]/allsizespecid" )); // SIZE
  323. submit("TRMNP01702"); // 물품 정보를 가져온다.
  324. fRemoveNode(8); // 물품 추가/대체/삭제 대상 리스트 초기화
  325. fRemoveNode(9); // 물품 추가/대체/삭제 실행대상 리스트 초기화
  326. if(grd_good.row > 0) {
  327. grd_scart.colHidden(grd_scart.colRef("goodqty")) = false;
  328. grd_tcart.colHidden(grd_tcart.colRef("goodqty")) = false;
  329. } else {
  330. grd_scart.colHidden(grd_scart.colRef("goodqty")) = true;
  331. grd_tcart.colHidden(grd_tcart.colRef("goodqty")) = true;
  332. }
  333. }
  334. // -------------------------------------------------
  335. // SMMNP01700_대상 Cart List를 실행대상으로 Move
  336. // --------------------------------------------------
  337. function fMove(pFlag,pSNode,pTNode) {
  338. //--------------- 1. 대상 Cart List를 실행대상 List로 이동
  339. if(grd_tcart.rows < 1 ) return;
  340. var goodrow = grd_good.selectedrow(0);
  341. var oldgoodcd = model.getValue("/root/main/RscdgoodData/RscdgoodList["+goodrow+"]/goodcd");
  342. var oldgoodhngnm = model.getValue("/root/main/RscdgoodData/RscdgoodList["+goodrow+"]/goodhngnm");
  343. var oldgoodspec = model.getValue("/root/main/RscdgoodData/RscdgoodList["+goodrow+"]/goodspec");
  344. var oldgoodmodel = model.getValue("/root/main/RscdgoodData/RscdgoodList["+goodrow+"]/goodmodel");
  345. var oldallsizespecid = model.getValue("/root/main/RscdgoodData/RscdgoodList["+goodrow+"]/allsizespecid");
  346. var newgoodhngnm = model.getValue("/root/WorkData/InputGood/goodnm");
  347. var newgoodspec = model.getValue("/root/WorkData/InputGood/goodspec");
  348. var newgoodmodel = model.getValue("/root/WorkData/InputGood/goodmodel");
  349. var newgoodcd = model.getValue("/root/WorkData/InputGood/goodcd");
  350. var newallsizespcid = model.getValue("/root/WorkData/InputGood/sizecd");
  351. var fromdd = model.getValue("/root/WorkData/InputGood/usedate");
  352. var goodcls = model.getValue("/root/WorkData/InputGood/goodcls");
  353. var arrFlag = pFlag.split(":");//저장 상태값(I:추가, U:대체, D:삭제)
  354. var goodqty = model.getValue("/root/WorkData/InputGood/goodqty");
  355. if( goodcls == "" ) {
  356. //goodcls = model.getValue("/root/main/RscdgoodData/RscdgoodList/goodcls");
  357. messageBox("물품 구분값이 없습니다. 물품을 다시 조회하십시오!", "I000");
  358. return;
  359. }
  360. if( arrFlag[0] == "I" ) {//추가일 경우 이전 정보 초기화
  361. if( (oldgoodcd == newgoodcd)&&(oldallsizespecid == newallsizespcid) ) {//추가일경우 이전 물품코드가 같을 경우 추가 할수 없음
  362. messageBox("추가하실 물품을 조회해 주십시요!", "I000");
  363. return;
  364. }
  365. oldgoodhngnm = "";
  366. oldgoodcd = "";
  367. oldallsizespecid = "";
  368. oldgoodspec = "";
  369. oldgoodmodel = "";
  370. if(goodqty == "" || goodqty == "0") {
  371. messageBox("추가할 물품의 수량을 입력하십시오. ", "E");
  372. return;
  373. }
  374. }
  375. var oldgoodname = oldgoodhngnm + "( " + oldgoodspec + ", " + oldgoodmodel + ")";
  376. if( (oldgoodhngnm == "")&&(oldgoodspec == "")&&(oldgoodmodel == "") ) {//물품추가의 경우 빈값 셋팅
  377. oldgoodname = "";
  378. }
  379. var newgoodname = newgoodhngnm + "( " + newgoodspec + ", " + newgoodmodel + ")";
  380. if( (arrFlag[0] == "U")||(arrFlag[0] == "D") ) {
  381. if( oldgoodcd == "" ) {
  382. messageBox("물품대체나 물품삭제는 대상 물품을 선택하십시오!", "I000");
  383. return;
  384. }
  385. }
  386. model.setValue("/root/HistData/cond/updgbn", arrFlag[0]);
  387. for (var i = 1; i < grd_tcart.rows; i++) {
  388. var pernm = model.getValue(pSNode+"["+ i +"]/usernm");
  389. var wCheckYn = model.getValue(pSNode+"["+ i +"]/checkyn");
  390. if (wCheckYn == "true") {
  391. grd_exe.addRow(false);
  392. var j = grd_exe.rows - grd_exe.fixedRows ;
  393. model.setValue(pTNode+"["+j+"]/recstat" , arrFlag[0]); // 변경구분
  394. model.setValue(pTNode+"["+j+"]/updflagnm" , arrFlag[1]); // 변경구분명
  395. model.setValue(pTNode+"["+j+"]/deptabbr" , model.getValue(pSNode+"["+i+"]/deptabbr")); // 집도과
  396. model.setValue(pTNode+"["+j+"]/perfnm" , model.getValue(pSNode+"["+i+"]/perfnm")); // 집도의
  397. model.setValue(pTNode+"["+j+"]/opkname" , model.getValue(pSNode+"["+i+"]/opkname")); // 수술명
  398. model.setValue(pTNode+"["+j+"]/bfgoodnm" , oldgoodname); // 변경전 물품명(규격,모델)
  399. if( arrFlag[0] == "I" ) {//추가일 경우 이전 정보 초기화
  400. model.setValue(pTNode+"["+j+"]/bfqty" , ""); // 변경전 수량
  401. }else {
  402. model.setValue(pTNode+"["+j+"]/bfqty" , model.getValue(pSNode+"["+i+"]/goodqty")); // 변경전 수량
  403. }
  404. model.setValue(pTNode+"["+j+"]/bfgoodcd" , oldgoodcd); // 변경전 물품코드
  405. model.setValue(pTNode+"["+j+"]/bfallsizespecid" , oldallsizespecid); // 변경전 allsize규격ID
  406. model.setValue(pTNode+"["+j+"]/ccrtno" , model.getValue(pSNode+"["+i+"]/ccrtno")); // CaseCart번호
  407. model.setValue(pTNode+"["+j+"]/cartgoodseq" , model.getValue(pSNode+"["+i+"]/cartgoodseq")); // Cart순번
  408. model.setValue(pTNode+"["+j+"]/fromdd" , fromdd); // 적용일자
  409. model.setValue(pTNode+"["+j+"]/goodcls" , goodcls); // 적용일자
  410. if (pFlag==InsertMode||pFlag==UpdateMode){
  411. model.setValue(pTNode+"["+j+"]/afgoodnm" , newgoodname); // 변경후 물품명(규격,모델)
  412. //if( pFlag == UpdateMode ) {
  413. //if( model.getValue("/root/WorkData/InputGood/goodqty") == "0" ) {
  414. // model.setValue(pTNode+"["+j+"]/afqty" , model.getValue(pSNode+"["+i+"]/goodqty")); // 대체 물품 수량이 0이면 기존 수량 그래로
  415. //}else {
  416. if(model.getValue("/root/WorkData/InputGood/copyflag") == "1") {
  417. model.setValue(pTNode+"["+j+"]/afqty" , model.getValue("/root/WorkData/InputGood/goodqty")); // 변경후 수량
  418. } else {
  419. model.setValue(pTNode+"["+j+"]/afqty" , model.getValue(pSNode+"["+i+"]/goodqty")); // 변경후 수량
  420. }
  421. //}
  422. // }
  423. model.setValue(pTNode+"["+j+"]/afgoodcd" , model.getValue("/root/WorkData/InputGood/goodcd")); // 변경후 물품코드
  424. model.setValue(pTNode+"["+j+"]/afallsizespecid" , model.getValue("/root/WorkData/InputGood/sizecd")); // 변경후 allsize규격ID
  425. }
  426. }
  427. }
  428. //--------------- 2. 대상 Cart List 내용 중 이동된 Cart 삭제
  429. //fRemoveNode(7);
  430. fRemoveCart(1, grd_tcart.rows, "/root/main/CMnpmcartData");
  431. model.refresh();
  432. }
  433. // -------------------------------------------------
  434. // SMMNP01700_물품 선택
  435. // --------------------------------------------------
  436. function fSelectGood() {
  437. if(grd_good.row < 1 ) return;
  438. if(model.getValue("/root/main/RscdgoodData/RscdgoodList["+grd_good.row+"]/goodcd")=='') return;
  439. model.setValue("/root/WorkData/InputGood/goodcd" ,model.getValue("/root/main/RscdgoodData/RscdgoodList["+grd_good.row+"]/goodcd"));
  440. model.setValue("/root/WorkData/InputGood/goodnm" ,model.getValue("/root/main/RscdgoodData/RscdgoodList["+grd_good.row+"]/goodhngnm"));
  441. model.setValue("/root/WorkData/InputGood/sizecd" ,model.getValue("/root/main/RscdgoodData/RscdgoodList["+grd_good.row+"]/sizecd"));
  442. model.setValue("/root/WorkData/InputGood/allsizespecid" ,model.getValue("/root/main/RscdgoodData/RscdgoodList["+grd_good.row+"]/allsizespecid"));
  443. model.setValue("/root/WorkData/InputGood/goodspec" ,model.getValue("/root/main/RscdgoodData/RscdgoodList["+grd_good.row+"]/goodspec"));
  444. model.setValue("/root/WorkData/InputGood/goodmodel" ,model.getValue("/root/main/RscdgoodData/RscdgoodList["+grd_good.row+"]/goodmodel"));
  445. model.setValue("/root/WorkData/InputGood/goodcls" ,model.getValue("/root/main/RscdgoodData/RscdgoodList["+grd_good.row+"]/goodcls"));
  446. model.setValue("/root/WorkData/InputGood/goodqty" ,"0");
  447. model.setValue("/root/WorkData/InputGood/usedate" ,getCurrentDate() );
  448. model.setValue("/root/WorkData/cond/sizecd" ,model.getValue("/root/main/RscdgoodData/RscdgoodList["+grd_good.row+"]/allsizespecid"));
  449. model.setValue("/root/WorkData/cond/goodnm" ,model.getValue("/root/main/RscdgoodData/RscdgoodList["+grd_good.row+"]/goodhngnm"));
  450. model.setValue("/root/WorkData/cond/goodcd" ,model.getValue("/root/main/RscdgoodData/RscdgoodList["+grd_good.row+"]/goodcd"));
  451. grd_scart.colHidden(grd_scart.colRef("goodqty")) = false;
  452. grd_tcart.colHidden(grd_tcart.colRef("goodqty")) = false;
  453. grp_good.refresh();
  454. }
  455. function fMnphcagoRead(pIdx, pId, pCcrtno, pCartGoodseq ) {
  456. model.removenode("/root/send");
  457. model.makeValue("/root/send/ccrtno" , pCcrtno ); // CaseCart 번호
  458. model.makeValue("/root/send/cartgoodseq" , pCartGoodseq ); // Cart물품순번
  459. model.makeValue("/root/send/instcd" , model.getValue("/root/WorkData/cond/instcd" )); // 기관코드
  460. submit("TRMNP01602"); // Cart MASTER 정보를 가져온다.
  461. model.copyNode(gPathNode[pIdx] , cPathNode);
  462. pId.refresh();
  463. }
  464. // Grid 선택 / 취소
  465. function fGridCheckToggle(pGrid, pGridNode, pCheck, pValue){
  466. var wValue = "";
  467. // 그리드 이벤트가 발생하면 그리드에서 선택된 로우들의 index를 받아옴
  468. var iRow = pGrid.row; // Grid의 첫 선택 Row
  469. var sRow = pGrid.selectedRows; // 선택 Grid 수
  470. var eRow = pGrid.selectedRow(0); // Grid의 첫 선택 Row
  471. var tRow = pGrid.rows; // Grid의 전체수
  472. if (instance1.selectSingleNode(pGridNode).childNodes.length == 0) return;
  473. if (event.ctrlKey == 1) { // ctrlKey 를 누르고 row 선택시 각 그리드의 상태값 변경
  474. wValue = model.getValue(pGridNode+"/MnpmcartList["+pGrid.row+"]/"+pCheck );
  475. model.setValue(pGridNode+"/MnpmcartList["+pGrid.row+"]/"+pCheck,((wValue == pValue) ? "" : pValue));
  476. }
  477. else if (event.shiftKey == 1) { // shiftKey를 누르고 처음위치와 마지막 위치를 선택하면 선택된 row의 상태값이 변경
  478. fGridCheckClear(pGridNode,tRow, pCheck);
  479. if (iRow == eRow){
  480. fGridCheckSetting(pGridNode, iRow, iRow+sRow,pCheck, pValue);
  481. } else{
  482. fGridCheckSetting(pGridNode, eRow, iRow ,pCheck, pValue);
  483. }
  484. } else { // 마우스를 클릭한 상태에서 드래하면 처음 위치부터 마지막 위치까지 선택된 row의 상태값이 변경
  485. fGridCheckClear(pGridNode,tRow, pCheck);
  486. if (sRow == "1"){
  487. wValue = model.getValue(pGridNode+"/MnpmcartList["+pGrid.row+"]/"+pCheck );
  488. model.setValue(pGridNode+"/MnpmcartList["+pGrid.row+"]/"+pCheck ,((wValue == pValue) ? "" : pValue));
  489. } else {
  490. if (iRow == eRow){
  491. fGridCheckSetting(pGridNode, iRow, iRow+sRow-1, pCheck, pValue);
  492. }else{
  493. fGridCheckSetting(pGridNode, eRow, iRow , pCheck, pValue);
  494. }
  495. }
  496. }
  497. pGrid.refresh();
  498. }
  499. // Grid 전 선택값을 Clear 한다.
  500. function fGridCheckClear(pGNode, pRow, pCheck){
  501. // alert( pGNode);
  502. for(ii=1 ; ii < pRow ; ii++){
  503. model.setValue(pGNode+"/MnpmcartList["+ii+"]/"+pCheck , "");
  504. }
  505. }
  506. // Grid 전선택값을 Settting 한다.
  507. function fGridCheckSetting(pGNode, pSRow, pERow, pCheck, pVal){
  508. for (j = pSRow ; j <= pERow ; j++) {
  509. model.setValue(pGNode+"/MnpmcartList["+j+"]/"+pCheck , pVal);
  510. }
  511. }
  512. // 물품 추가 Check
  513. function fCopyCartData(pGrid, pSNode, pTNode, pCls){
  514. var frRow = 1;
  515. var toRow = parseInt(getNodesetCount("/root/main/MnpmcartData/MnpmcartList"));
  516. if (frRow < 1) return;
  517. if (toRow < 1) return;
  518. var wCheckYn = "";
  519. for( var iRow = 1; iRow <= toRow; iRow++) {
  520. wCheckYn = model.getValue("/root/main/MnpmcartData/MnpmcartList["+ iRow +"]/checkyn");
  521. if (wCheckYn == "true") {
  522. model.duplicate(pTNode, "/root/main/MnpmcartData/MnpmcartList["+ iRow +"]");
  523. }
  524. }
  525. for( var iRow = toRow; iRow >= 1; iRow--) {
  526. wCheckYn = model.getValue("/root/main/MnpmcartData/MnpmcartList["+ iRow +"]/checkyn");
  527. if (wCheckYn == "true") {
  528. model.removenode("/root/main/MnpmcartData/MnpmcartList["+ iRow +"]");
  529. }
  530. }
  531. //fRemoveCart(frRow, toRow, pSNode);
  532. grd_scart.refresh();
  533. grd_tcart.refresh();
  534. }
  535. //
  536. // 물품 삭제
  537. //
  538. function fRemoveCart(pFIdx, pTIdx, pRNode){
  539. var wCnt = 1 ;
  540. var wIdx = pFIdx;
  541. while ( wCnt < pTIdx){
  542. if (model.getValue(pRNode+ "/MnpmcartList["+ wIdx +"]/checkyn") == "Y") {
  543. model.removeNodeset(pRNode + "/MnpmcartList["+ wIdx +"]");
  544. } else {
  545. wIdx++;
  546. }
  547. wCnt++;
  548. }
  549. }
  550. function fRemoveNode(pIdx){
  551. model.removeNodeset(PathClear[pIdx]);
  552. eval(wRefresh[pIdx]).refresh();
  553. }
  554. // 물품 복사
  555. function fNodeDuplicate(pIdx, pStat, pCcrtno, sPath, tPath){
  556. model.setValue(sPath + "/mnphcagolist["+pIdx+"]/ccrtno" , pCcrtno);
  557. model.setValue(sPath + "/mnphcagolist["+pIdx+"]/recstat", pStat );
  558. model.duplicate(tPath, sPath+"/mnphcagolist["+pIdx+"]");
  559. }
  560. //
  561. // 물품 삭제
  562. //
  563. function fDeleteGood(){
  564. var sIdx = grd_good.row;
  565. if (sIdx < 1) {
  566. return;
  567. }
  568. var wCcrtNo = model.getValue("/root/WorkData/scond/ccrtno");
  569. fNodeDuplicate(sIdx, "D", wCcrtNo, ListPathM, ListPathD);
  570. model.removeNodeset(ListPathM + "/mnphcagolist["+sIdx+"]");
  571. grd_good.deleteRow(sIdx);
  572. }
  573. // 물품 UPDATE
  574. function fUpdateGood(){
  575. var sIdx = grd_good.row;
  576. if (sIdx < 1) {
  577. return;
  578. }
  579. model.setValue(ListPathM + "/mnphcagolist["+sIdx+"]/goodqty",model.getValue("/root/WorkData/InputGood/goodqty"));
  580. if (model.getValue("/root/WorkData/InputGood/recstat") == "N") {
  581. model.setValue(ListPathM + "/mnphcagolist["+sIdx+"]/recstat", "U");
  582. }
  583. grd_good.refresh();
  584. grd_good.row = sIdx;
  585. }
  586. //
  587. // 물품 중복 Check
  588. //
  589. function fCheckCode(pGood){
  590. var GoodCd = "";
  591. var GoodChk = true;
  592. var xNode = instance1.selectSingleNode(ListPathM);
  593. var nLen = xNode.childNodes.length;
  594. for (i = 1; i <= nLen; i++) {
  595. GoodCd = model.getValue(ListPathM + "/mnphcagolist["+i+"]/goodcd");
  596. if (pGood == GoodCd) {
  597. GoodChk = false ;
  598. break;
  599. }
  600. }
  601. return GoodChk;
  602. }
  603. function fOpCodePopup() {
  604. var xpos = event.screenX;
  605. var ypos = event.screenY-300;
  606. modal("SMMNP04460", 1, xpos, ypos);
  607. var iProperties = getParameter("SendData");
  608. var iSplit_Value = iProperties.split("|");
  609. if (iSplit_Value.length > 0) {
  610. model.setValue("/root/WorkData/InputGood/goodengnm", iSplit_Value[3]);
  611. model.setValue("/root/WorkData/InputGood/makernm" , iSplit_Value[6]);
  612. model.setValue("/root/WorkData/InputGood/sizecd" , iSplit_Value[4]);
  613. model.setValue("/root/WorkData/InputGood/goodcd" , iSplit_Value[0]);
  614. }
  615. }
  616. //
  617. // 물품수량 조절
  618. //
  619. function fPrevNext(flag){
  620. var curval = eval(inp_goodqty.value);
  621. if(flag=='P'&& curval >= 1.0 ){
  622. inp_goodqty.value = eval(inp_goodqty.value) - 1.0;
  623. }else if(flag=='N' && curval < 99999.0){
  624. inp_goodqty.value = eval(inp_goodqty.value) + 1.0;
  625. }
  626. }
  627. //
  628. // Cart 물품 저장
  629. //
  630. function fSave(){
  631. if(model.getValue("/root/HistData/exedata/exedatalist[1]/updflagnm")=="") return;
  632. model.removenode("/root/send");
  633. var SaveData = "ccrtno" // 1 CaseCart 번호
  634. + "▦cartgoodseq" // 2 Cart물품순번
  635. + "▦afgoodcd" // 4 물품코드
  636. + "▦afallsizespecid" // 5 Size코드
  637. + "▦bfgoodcd" // 5 Size코드
  638. + "▦bfallsizespecid" // 5 Size코드
  639. + "▦afqty" // 6 물품수량
  640. + "▦goodcls" // 6 물품구분
  641. + "▦recstat" // 9 저장상태
  642. + "▦fromdd" // 8 적용일자
  643. + "▦cartgubn"
  644. + "▩" ; // 10 Record(Row) 분리기호
  645. // var SendData = "ccrtno" + "▦" + "recstat" + "▩";
  646. ExCount = 0;
  647. SaveData += fDataConstruct("/root/HistData/exedata");
  648. // SendData += fSendDataConstruct("/root/HistData/exedata");
  649. model.makeValue("/root/send/mnphcagolist",SaveData);
  650. //model.makeValue("/root/send/senddata",SendData);
  651. if (ExCount > 0) {
  652. submit("TXMNP01700");
  653. fUseCartData_Read();
  654. }
  655. // 변경실행후 변경이력리스트 조회 (검색조건의 의뢰일자가 당일을 포함하는 경우)
  656. var today = getCurrentDate() ;
  657. if(inp_fromdd.value<=today&&today<=inp_todd.value){
  658. fCGHSData_Read(); //Cart 물품 이력조회
  659. }
  660. fRemoveNode(8); // 대상 Cart List
  661. fRemoveNode(9); // 실행 대상 List
  662. }
  663. function fDataConstruct(pPath) {
  664. var sData = "";
  665. var sCond = "";
  666. var xNode = instance1.selectSingleNode(pPath);
  667. var nLen = xNode.childNodes.length;
  668. var sCcrtno = "" ; // 1 CaseCart 번호
  669. var sCartgoodseq = "" ; // 2 Cart물품순번
  670. var sGoodcd = "" ; // 4 물품코드
  671. var sSizecd = "" ; // 5 Size코드
  672. var sOldGoodcd = "";
  673. var sOldAllsizespecid = "";
  674. var sGoodqty = "" ; // 6 물품수량
  675. var sGoodcls = "";
  676. var sPayflagcd = "" ; // 7 급여구분
  677. var sFromdd = "" ; // 8 적용일자
  678. var sRecstat = "" ; // 9 저장상태
  679. var sCartGubn = model.getValue("/root/WorkData/cond/cartgubn") ;
  680. for (i = 1; i <= nLen; i++) {
  681. sCcrtno = model.getValue(pPath + "/exedatalist["+i+"]/ccrtno" );
  682. sCartgoodseq = model.getValue(pPath + "/exedatalist["+i+"]/cartgoodseq" );
  683. sGoodcd = model.getValue(pPath + "/exedatalist["+i+"]/afgoodcd");
  684. sSizecd = model.getValue(pPath + "/exedatalist["+i+"]/afallsizespecid");
  685. sGoodqty = model.getValue(pPath + "/exedatalist["+i+"]/afqty" );
  686. sOldGoodcd = model.getValue(pPath + "/exedatalist["+i+"]/bfgoodcd");
  687. sOldAllsizespecid = model.getValue(pPath + "/exedatalist["+i+"]/bfallsizespecid");
  688. sGoodcls = model.getValue(pPath + "/exedatalist["+i+"]/goodcls");
  689. sFromdd = model.getValue(pPath + "/exedatalist["+i+"]/fromdd");
  690. sRecstat = model.getValue(pPath + "/exedatalist["+i+"]/recstat");
  691. sData += sCcrtno + "▦" // 1 CaseCart 번호
  692. + sCartgoodseq + "▦" // 2 Cart물품순번
  693. + sGoodcd + "▦" // 4 물품코드
  694. + sSizecd + "▦" // 5 Size코드
  695. + sOldGoodcd + "▦" // 4 물품코드
  696. + sOldAllsizespecid + "▦" // 5 Size코드
  697. + sGoodqty + "▦" // 6 물품수량
  698. + sGoodcls + "▦" // 7
  699. + sRecstat + "▦" // 8 저장상태
  700. + sFromdd + "▦" // 9 적용일자
  701. + sCartGubn + "▩"; // 10 수술마취구분
  702. ExCount++;
  703. }
  704. return sData;
  705. }
  706. /* ------------------------------------------------- */
  707. /* desc : 수술명 추가 */
  708. /* param : */
  709. /* */
  710. /* return : */
  711. /* -------------------------------------------------- */
  712. function fAddUseCartList() {
  713. model.removenode("/root/send");
  714. model.makeValue("/root/send/orddeptcd", model.getValue("/root/WorkData/cond/orddept"));
  715. model.makeValue("/root/send/perfid", model.getValue("/root/WorkData/cond/perfdr"));
  716. model.makeValue("/root/send/opcd", model.getValue("/root/WorkData/cond/opcd"));
  717. model.makeValue("/root/send/opnm", model.getValue("/root/WorkData/cond/opnm"));
  718. submit("TRMNP01704");
  719. grd_scart.colHidden(grd_scart.colRef("goodqty")) = true;
  720. grd_tcart.colHidden(grd_tcart.colRef("goodqty")) = true;
  721. }
  722. /* ------------------------------------------------- */
  723. /* ------End Of List ------------------------------- */
  724. /* -------------------------------------------------- */