SMRSD00450.js 121 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592
  1. /* ---------------------------------------------------------------------
  2. SMRSD00450_물품청구관리.xrw (SMRSD00450.xfm - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. : Create By Francis Choi
  6. : 2015.05.02
  7. ---------------------------------------------------------------------- */
  8. var xAuth = !(checkAuth("X"));
  9. var pAuth = !(checkAuth("P"));
  10. var vPurcAuth = "1";
  11. var gExeptionFlag = true;
  12. var gExeptionInstcd1 = "012";
  13. var gExeptionInstcd2 = "012";
  14. var gExeptionInstcd3 = "012";
  15. var gExeptionInstcd4 = "012";
  16. var gPurcDeptcd = "" ;
  17. var gcount = 0 ; //청구번호 읽기
  18. var gReqNoReadFlag = true; //청구번호 읽기
  19. var cmbworkflagold = "X" ; //작업구분콤보의 예전값을 가지고 있는 변수
  20. // --------------------------------------------------
  21. // Tree정보 가져오기
  22. // --------------------------------------------------
  23. function fInit() {
  24. // 화면 Control을 초기화한다
  25. fCheckAuth();
  26. fInitialize();
  27. return;
  28. }
  29. //------------------------------------------------
  30. // 화면 권한관리 CHECK
  31. //------------------------------------------------
  32. function fCheckAuth() {
  33. btn_search.disabled = !checkAuth("R") ;
  34. //btn_save.disabled = !checkAuth("X") ;
  35. //btn_prt.disabled = !checkAuth("P") ;
  36. }
  37. // --------------------------------------------------------------
  38. // 화면 open시와 초기화 버튼 클릭시 화면 초기화 기능을 수행한다.
  39. // --------------------------------------------------------------
  40. function fInitialize() {
  41. model.resetInstanceNode("/root/send");
  42. btn_save.disabled = true;
  43. btn_accept.disabled = true;
  44. ckb_accept.attribute("visibility") ="hidden";
  45. misfGridInit(grd_goodreq);
  46. misfMsterDetailSet(grd_goodreq,null, "TRRSD00451" ,"Y");
  47. //기관코드, 명 설정.
  48. model.setValue(opt_instcd.attribute("ref"), getUserInfo("dutplceinstcd"));
  49. model.setValue(opt_instcdnm.attribute("ref"), getUserInfo("dutplceinstnm"));
  50. gExeptionFlag = (gExeptionInstcd1 == model.getValue(opt_instcd.attribute("ref"))) ? true : false; // 권한Check 예외
  51. gExeptionFlag = (gExeptionInstcd2 == model.getValue(opt_instcd.attribute("ref"))) ? true : false; // 권한Check 예외
  52. gExeptionFlag = (gExeptionInstcd3 == model.getValue(opt_instcd.attribute("ref"))) ? true : false; // 권한Check 예외
  53. gExeptionFlag = (gExeptionInstcd4 == model.getValue(opt_instcd.attribute("ref"))) ? true : false; // 권한Check 예외
  54. model.setValue(opt_requser.attribute("ref" ) , getUserInfo("userid"));
  55. model.setValue(opt_requsernm.attribute("ref") , getUserInfo("usernm"));
  56. rszfUserReqFlagList(cmb_reqflag,getUserInfo("dutplceinstcd"),model.getValue(opt_requser.attribute("ref")), "1", "S" ); // preqpgmgubun : '1' :구매재고
  57. model.setValue(ipt_reqdd.attribute("ref") , getCurrentDate());
  58. model.setValue(ipt_reqddnew.attribute("ref") , getCurrentDate());
  59. // 입력방식 선택 및 col 제어
  60. // 일반청구:청구량입력 , 정량보충:재고량입력
  61. model.setValue(rdo_inputmethod.attribute("ref") , "1");
  62. // grd_goodreq.colDisabled(grd_goodreq.colRef("stocqty")) = true;
  63. // grd_goodreq.colDisabled(grd_goodreq.colRef("reqqty" )) = false;
  64. if (cmb_workflag.length> 0) cmb_workflag.select(0); // 작업구분
  65. grd_goodlist.fixedcellcheckbox(0,grd_goodlist.colRef("select"),false) = true;
  66. // if(cmb_bugtflag.length> 0) cmb_bugtflag.selectedindex= 0;
  67. grd_goodreq.explorerbar = "sortshow";
  68. // 해당 사용자의 청구&승인 목록을 가져오는 submit
  69. // model.setValue("/root/send/reqpsn/instcd", opt_instcd.value );
  70. model.setValue("/root/send/reqpsn/instcd", model.getValue(opt_instcd.attribute("ref")) );
  71. model.setValue("/root/send/reqpsn/emplno", model.getValue(opt_requser.attribute("ref")));
  72. submit("TRRSD00407");
  73. // misfComboComCdList('R0025', cmb_goodflag, "N"); //물품구분
  74. // fSetReqAuth(); // 청구권한설정 [20090129] YYJ fReqdeptCopy() 함수에서 호출 하기 때문에 제외 처리
  75. //부서가 구매팀인지 확인해서 구매팀일 경우 부서찾기 항목을 visibility true 아니면 false
  76. // -------------------------------------------------------------------------------------
  77. // 기관별 구매시스템 기본정보를 조회한다
  78. // vPathResult = "/root/init/RscsysinftLists";
  79. // -------------------------------------------------------------------------------------
  80. rszfRscsysinftLists(getUserInfo("dutplceinstcd"));
  81. // -------------------------------------------------------------------------------------
  82. // 구매 인터페이스 거래처정보를 조회한다
  83. // vPathResult = "/root/init/RscifcustLists";
  84. // pInstcd" : (조회값) 기관코드
  85. // pEntrregno" : (조회값) 거래처
  86. // pMaindeptcd" : (조회값) 관리부서코드
  87. // pCombo : 콤보구분
  88. // pAllYN : 전체구분
  89. // ------------------------------------------------------------------------------------*/
  90. gPurcDeptcd = getRscsysinftInfo("purcdept");
  91. fSetTempDept(); //부서찾기 기능 설정(구매팀일경우에만)
  92. //fReqFlagCheck();
  93. fReqdeptCopy();
  94. gReqNoReadFlag = false; //청구번호 읽기
  95. fDeptReqNoQuery(); // 청구부서별 청구번호를 조회한다
  96. model.refresh();
  97. }
  98. // -----------------------------------------------
  99. // 청구주기가 일청구이면 권한체크하지 않는다.
  100. // -----------------------------------------------
  101. function fSetReqAuth() {
  102. // btn 기본처리
  103. btn_excel.disabled = true;
  104. // btn_reqset.disabled = true;
  105. btn_insert.disabled = true;
  106. btn_delete.disabled = true;
  107. btn_choice.disabled = true;
  108. btn_accept.disabled = true;
  109. btn_save.disabled = true;
  110. model.setValue(ckb_accept.attribute("ref"), "N");
  111. ckb_accept.attribute("visibility") ="hidden" ;
  112. if(model.getValue(opt_instcd.attribute("ref") ).length==0) return;
  113. //if(model.getValue(cmb_reqflag.attribute("ref") ).length==0) return;
  114. if(model.getValue(cmb_reqdeptcd.attribute("ref") ).length==0) return;
  115. if(model.getValue(cmb_reqpridflag.attribute("ref")).length==0) return;
  116. // -----------------------------------------------
  117. // 청구주기가 일청구이면 권한체크하지 않는다.
  118. // -----------------------------------------------
  119. // if ((model.getValue(cmb_reqpridflag.attribute("ref")) == "1" ) &&
  120. // (model.getValue(opt_instcd.attribute("ref") ) == "012") ) {
  121. // -----------------------------------------------
  122. if ((model.getValue(cmb_reqpridflag.attribute("ref")) == "1") && gExeptionFlag ) {
  123. // -----------------------------------------------
  124. // rszfGetPurcReqFnlDeptcd(model.getValue(opt_instcd.attribute("ref")), model.getValue(cmb_reqflag.attribute("ref")) , model.getValue(cmb_reqdeptcd.attribute("ref")));
  125. // -----------------------------------------------
  126. btn_save.disabled = false;
  127. btn_accept.disabled = false;
  128. model.setValue(ckb_accept.attribute("ref"), "Y");
  129. ckb_accept.attribute("visibility") = "visible" ;
  130. btn_excel.disabled = false;
  131. // btn_reqset.disabled = false;
  132. btn_insert.disabled = false;
  133. btn_delete.disabled = false;
  134. btn_choice.disabled = false;
  135. } else {
  136. fPurcAuthInfo(); // 청구승인자 Check
  137. if (cmb_reqpridflag.value == "4") { // 월청구
  138. if (fLastDayCheck_2() ) {
  139. btn_save.disabled = true;
  140. } else {
  141. btn_save.disabled = false;
  142. }
  143. } else {
  144. btn_save.disabled = false;
  145. }
  146. btn_excel.disabled = false;
  147. // btn_reqset.disabled = false;
  148. btn_insert.disabled = false;
  149. btn_delete.disabled = false;
  150. btn_choice.disabled = false;
  151. // if (vPurcAuth == "2") { //1:청구자, 2:승인자
  152. // btn_accept.disabled = false;
  153. // model.setValue(ckb_accept.attribute("ref"), "Y");
  154. // ckb_accept.attribute("visibility") = "visible" ;
  155. // }
  156. }
  157. if (model.getValue("/root/send/goodlist/purcdeptflag") == "P") { //구매부서구분 : P
  158. btn_accept.disabled = false;
  159. model.setValue(ckb_accept.attribute("ref"), "Y");
  160. ckb_accept.attribute("visibility") = "visible" ;
  161. }
  162. // 로그인자의 부서와 취합부서정보가 같으면 청구부서를 open한다.
  163. // if (model.getValue(cmb_reqdeptcd.attribute("ref")) == model.getValue(opt_reqfinaldept.attribute("ref"))) {
  164. // cmb_reqdeptcd.disabled=false;
  165. // }
  166. fDeptReqNoQuery(); // 청구부서별 청구번호를 조회한다
  167. model.refresh();
  168. }
  169. // --------------------------------------------------------------
  170. // 불출부서 청구마지막 일자를 불러온다.청구마감일자 조회
  171. // --------------------------------------------------------------
  172. function fLastDaySearch() {
  173. model.setValue("/root/send/lastdatesearch/instcd" , model.getValue(opt_instcd.attribute("ref")) );
  174. model.setValue("/root/send/lastdatesearch/deldeptcd", model.getValue(cmb_reqdeptcd.attribute("ref")) );
  175. // model.setValue("/root/send/lastdatesearch/deldeptcd", opt_reqfinaldept.value );
  176. model.setValue("/root/send/lastdatesearch/reqym" , model.getValue(ipt_reqdd.attribute("ref")).substr(0,6));
  177. submit("TRRSC01701"); // 청구마감일자 조회 purcbaseweb
  178. ipt_todd.refresh();
  179. }
  180. // --------------------------------------------------------------
  181. // 청구일자가 불출부서의 청구마지막 일자안에 있는지 확인,
  182. // --------------------------------------------------------------
  183. function fLastDayCheck() {
  184. var fbool = false;
  185. if (model.getValue(ipt_todd.attribute("ref")) != '') {
  186. if (model.getValue(ipt_reqdd.attribute("ref")) > model.getValue(ipt_todd.attribute("ref")) ) {
  187. fbool = true;
  188. }
  189. }
  190. return fbool;
  191. }
  192. // --------------------------------------------------------------
  193. // 불출부서 청구마지막 일자를 불러온다.청구마감일자 조회
  194. // --------------------------------------------------------------
  195. function fLastDaySearch_2(pDate) {
  196. model.setValue("/root/send/lastdatesearch/instcd" , model.getValue(opt_instcd.attribute("ref")) );
  197. model.setValue("/root/send/lastdatesearch/deldeptcd", gPurcDeptcd );
  198. model.setValue("/root/send/lastdatesearch/reqym" , pDate.substr(0,6));
  199. submit("TRRSC01701"); // 청구마감일자 조회 purcbaseweb
  200. ipt_todd.refresh();
  201. }
  202. // --------------------------------------------------------------
  203. // 청구일자가 불출부서의 청구마지막 일자안에 있는지 확인,
  204. // --------------------------------------------------------------
  205. function fLastDayCheck_2() {
  206. var fbool = false;
  207. if (model.getValue(ipt_todd.attribute("ref")) == '') {
  208. return false;
  209. }
  210. //
  211. if (sel_goodflag.value == "PH") { // 약품
  212. return false;
  213. }
  214. //
  215. // alert(model.getValue(ipt_todd.attribute("ref")) +"=="+ getCurrentDate());
  216. //
  217. if (cmb_reqpridflag.value == "4") { // 월청구
  218. if (model.getValue(ipt_todd.attribute("ref")) < getCurrentDate()) {
  219. alert("청구 마감일이 지났습니다. 구매팀에 문의 하십시요!!");
  220. // messageBox("청구 마감일이 지났습니다. \n 구매팀에 문의 하십시요!!", "");
  221. return true;
  222. }
  223. }
  224. //
  225. // if (cmb_reqpridflag.value == "4") { // 월청구
  226. // if (model.getValue(ipt_todd.attribute("ref")) != '') {
  227. // if (chk_reqnonew.value == "Y" ) {
  228. // if (model.getValue(ipt_reqddnew.attribute("ref")) > model.getValue(ipt_todd.attribute("ref")) ) {
  229. // return true;
  230. //
  231. // }
  232. // } else if (model.getValue(ipt_reqdd.attribute("ref")) > model.getValue(ipt_todd.attribute("ref")) ) {
  233. // fbool = true;
  234. //
  235. // }
  236. // }
  237. // }
  238. //
  239. return fbool;
  240. }
  241. // --------------------------------------------------------------
  242. // 기본자료 SET
  243. // --------------------------------------------------------------
  244. function fDefaultSetting(prow) {
  245. // --------------------------------------------------------
  246. // 일반청구 와 정량보충에 따라서 col을 control한다.
  247. // --------------------------------------------------------
  248. grd_goodreq.colDisabled(grd_goodreq.colRef("stocqty")) = false;
  249. grd_goodreq.colDisabled(grd_goodreq.colRef("reqqty")) = false;
  250. var workflag = model.getValue(cmb_workflag.attribute("ref")) ;
  251. // --------------------------------------------------------
  252. //작업구분이 [수액청구] == [처방청구]일때 행 추가시 작업 구분은 [일반청구]로 지정
  253. // --------------------------------------------------------
  254. if (model.getValue(ckb_sapreq.attribute("ref" )) == "Y" ||
  255. model.getValue(cmb_workflag.attribute("ref")) == "6" ) workflag = "1";
  256. //
  257. model.setValue(grd_goodreq.nodeset +"[" + prow+ "]/workflag" , workflag );
  258. model.setValue(grd_goodreq.nodeset +"[" + prow + "]/instcd" , model.getValue(opt_instcd.attribute("ref" )));
  259. // --------------------------------------------------------
  260. // 불출구분 없앰... 기본값('1') settting한다
  261. // --------------------------------------------------------
  262. model.setValue(grd_goodreq.nodeset +"[" + prow + "]/deliveflag" , '1' );
  263. model.setValue(grd_goodreq.nodeset +"[" + prow + "]/reqdd" , model.getValue(ipt_reqdd.attribute("ref" )));
  264. model.setValue(grd_goodreq.nodeset +"[" + prow + "]/reqpridflag" , model.getValue(cmb_reqpridflag.attribute("ref" )));
  265. model.setValue(grd_goodreq.nodeset +"[" + prow + "]/reqdeptcd" , model.getValue(cmb_reqdeptcd.attribute("ref" )));
  266. model.setValue(grd_goodreq.nodeset +"[" + prow + "]/reqpsnid" , model.getValue(opt_requser.attribute("ref" )));
  267. model.setValue(grd_goodreq.nodeset +"[" + prow + "]/reqseqno" , fGetMaxReqNo() );
  268. model.setValue(grd_goodreq.nodeset +"[" + prow + "]/reqno" , model.getValue(cmb_reqno.attribute("ref" )));
  269. //-----------------------------------------------------------------------------------------------------------
  270. // 비승인자가 승인처리시 에러와 함꼐 OLD값을 넣어준다.
  271. // 행추가시 OLD값을 'N'으로 셋팅함으로 에러처리시 제대로 된다. HBH
  272. //-----------------------------------------------------------------------------------------------------------
  273. model.setValue(grd_goodreq.nodeset +"[" + prow + "]/predeptaprvyn","N");
  274. }
  275. // --------------------------------------------------------------
  276. // 최종 청구번호 가져오기
  277. // --------------------------------------------------------------
  278. function fGetMaxReqNo() {
  279. var vMax = 0;
  280. var maxreqseqno = "0";
  281. for (var currow = grd_goodreq.fixedRows ; currow < grd_goodreq.rows; currow++) {
  282. if (maxreqseqno < grd_goodreq.valueMatrix(currow, grd_goodreq.colRef("reqseqno"))) {
  283. maxreqseqno = grd_goodreq.valueMatrix(currow, grd_goodreq.colRef("reqseqno"));
  284. }
  285. }
  286. vMax = parseInt(maxreqseqno, 10);
  287. // alert(vMax+"::"+maxreqseqno);
  288. vMax += 1;
  289. maxreqseqno = "" + vMax;
  290. return maxreqseqno.getLeftPad(3,"0");
  291. }
  292. // --------------------------------------------------------------
  293. //
  294. // --------------------------------------------------------------
  295. function fSettingGoodList(pnode, nodename, userqtynm) {
  296. var vTarget = "";
  297. var vSource = "";
  298. var codynode = instance1.selectNodes(pnode + "/*");
  299. var addRow = grd_goodreq.rows - grd_goodreq.fixedRows;
  300. if(model.getValue(grd_goodreq.nodeset + "[" + addRow + "]/goodcd").length > 0) addRow = addRow + 1;
  301. //
  302. for (var j = 1; j <= codynode.length ; j++) {
  303. if((grd_goodreq.rows - grd_goodreq.fixedRows == 0) || (addRow > grd_goodreq.rows - grd_goodreq.fixedRows)) {
  304. misfGridIUD(grd_goodreq,"A" );
  305. addRow = grd_goodreq.rows - grd_goodreq.fixedRows;
  306. fDefaultSetting(addRow);
  307. }
  308. vTarget = grd_goodreq.nodeset + "[" + addRow + "]/";
  309. vSource = pnode +"/" + nodename + "[" + j + "]/";
  310. fSettingGoodData(vTarget, vSource, userqtynm, "deliveunit");
  311. if (model.getValue(vSource + "allsizeyn") == "Y") {
  312. grd_goodreq.cellstyle("background-color" , addRow, 9) = "#FFFF00";
  313. model.setValue(vTarget + "allsizespecid" , model.getValue(vSource + "allsizespecid" ));
  314. model.setValue(vTarget + "allsizespecidnm" , model.getValue(vSource + "allsizespecidnm"));
  315. if (model.getValue(vSource + "allsizespecid").length > 0 ) {
  316. model.setValue(vTarget + "goodspec" , model.getValue(vSource + "allsizespecidnm"));
  317. } else {
  318. model.setValue(vTarget + "allsizespecid" , "-");
  319. }
  320. }
  321. addRow = addRow + 1;
  322. }
  323. //model.removenode(pnode);
  324. model.refresh();
  325. }
  326. function fCheckRetrieveData(pmsg)
  327. {
  328. if(model.getValue(cmb_workflag.attribute("ref")).length== 0 )
  329. {
  330. if(pmsg == true)
  331. {
  332. messageBox("작업구분을 " ,"C002");
  333. model.setFocus("cmb_workflag");
  334. }
  335. return false;
  336. }
  337. if(model.getValue(opt_instcd.attribute("ref")).length== 0 )
  338. {
  339. if(pmsg == true)
  340. {
  341. messageBox("기관코드를 " ,"C002");
  342. model.setFocus("opt_instcd");
  343. }
  344. return false;
  345. }
  346. // if(model.getValue(cmb_reqflag.attribute("ref")).length== 0 )
  347. // {
  348. // if(pmsg == true)
  349. // {
  350. // messageBox("청구구분을 " ,"C002");
  351. // model.setFocus("cmb_reqflag");
  352. // }
  353. // return false;
  354. // }
  355. if(model.getValue(ipt_reqdd.attribute("ref")).length== 0 )
  356. {
  357. if(pmsg == true)
  358. {
  359. messageBox("청구일자를 " ,"C001");
  360. model.setFocus("ipt_reqdd");
  361. }
  362. return false;
  363. }
  364. if(model.getValue(cmb_reqpridflag.attribute("ref")).length== 0 )
  365. {
  366. if(pmsg == true)
  367. {
  368. messageBox("청구주기를 " ,"C002");
  369. model.setFocus("cmb_reqpridflag");
  370. }
  371. return false;
  372. }
  373. if(model.getValue(cmb_reqdeptcd.attribute("ref")).length== 0 )
  374. {
  375. if(pmsg == true)
  376. {
  377. messageBox("청구부서를 " ,"C002");
  378. model.setFocus("cmb_reqdeptcd");
  379. }
  380. return false;
  381. }
  382. if(model.getValue(opt_requser.attribute("ref")).length== 0 )
  383. {
  384. if(pmsg == true)
  385. {
  386. messageBox("청구자를 " ,"C002");
  387. model.setFocus("opt_requser");
  388. }
  389. return false;
  390. }
  391. return true;
  392. }
  393. //
  394. function fCheckLimitTime(pDate)
  395. {
  396. return true;
  397. }
  398. // 저장전 Data를 Check한다.
  399. function fCheckSaveData()
  400. {
  401. if (model.getValue(cmb_workflag.attribute("ref")).length== 0 ) {
  402. messageBox("작업구분을 " ,"C002");
  403. model.setFocus("cmb_workflag");
  404. return false;
  405. }
  406. //
  407. if (model.getValue(opt_instcd.attribute("ref")).length== 0 ) {
  408. messageBox("기관코드를 " ,"C002");
  409. model.setFocus("opt_instcd");
  410. return false;
  411. }
  412. // if(model.getValue(cmb_reqflag.attribute("ref")).length== 0 )
  413. // {
  414. // messageBox("청구구분을 " ,"C002");
  415. // model.setFocus("cmb_reqflag");
  416. // return false;
  417. // }
  418. if (model.getValue(ipt_reqdd.attribute("ref")).length== 0 ) {
  419. messageBox("청구일자를 " ,"C001");
  420. model.setFocus("ipt_reqdd");
  421. return false;
  422. }
  423. //
  424. if (model.getValue(cmb_reqpridflag.attribute("ref")).length== 0 ) {
  425. messageBox("청구주기를 " ,"C002");
  426. model.setFocus("cmb_reqpridflag");
  427. return false;
  428. }
  429. //
  430. var basevol = 0;
  431. var stocqty = 0;
  432. var reqqty = 0;
  433. var minexch = 0;
  434. for(var currow = grd_goodreq.fixedRows ; currow < grd_goodreq.rows ; currow++)
  435. {
  436. if (grd_goodreq.rowStatus( currow ) != "4" ) { // 저장 후 삭제일 경우 ( 4 ) check 하지 말자.
  437. if (grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("goodcd")).length == 0) {
  438. messageBox(currow + " 번째 물품코드를 " ,"C001");
  439. grd_goodreq.row = currow;
  440. grd_goodreq.col= grd_goodreq.colRef("goodcd");
  441. grd_goodreq.editCell();
  442. return false;
  443. }
  444. else {
  445. for(srcrow = currow + 1 ; srcrow < grd_goodreq.rows ; srcrow++) {
  446. if (grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("goodcd")) == grd_goodreq.valueMatrix(srcrow , grd_goodreq.colRef("goodcd")) &&
  447. grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("allsizeyn")) == "N" &&
  448. grd_goodreq.rowStatus( srcrow ) != "4" )
  449. {
  450. messageBox("동일 물품코드가1 [" + currow + "," +srcrow + "->" + grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("goodcd")) + "] 존재하여 저장 " ,"E001");
  451. return false;
  452. }
  453. else if(grd_goodreq.valueMatrix(currow ,grd_goodreq.colRef("goodcd" )) == grd_goodreq.valueMatrix(srcrow , grd_goodreq.colRef("goodcd" )) &&
  454. grd_goodreq.valueMatrix(currow ,grd_goodreq.colRef("allsizespecid")) == grd_goodreq.valueMatrix(srcrow , grd_goodreq.colRef("allsizespecid")) &&
  455. grd_goodreq.rowStatus( srcrow ) != "4" )
  456. {
  457. messageBox("동일 물품코드가 (ALL SIZE) [" + currow + "," +srcrow + "->" + grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("goodcd")) + "] 존재하여 저장 " ,"E001");
  458. return false;
  459. }
  460. }
  461. }
  462. // -----------------------------------------------------------------------------
  463. // Minuse 청구도 가능하게 한다. 06.19
  464. // if(grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("reqqty")) <= 0)
  465. // {
  466. // if ( grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("reqqty")) == 0 )
  467. // messageBox(currow + " 번째 청구량을 " ,"C001");
  468. // else
  469. // messageBox(currow + " 번째 올바른 청구량을 " ,"C001");
  470. // grd_goodreq.row = currow;
  471. // grd_goodreq.col= grd_goodreq.colRef("reqqty");
  472. // grd_goodreq.editCell();
  473. // return false;
  474. // }
  475. // -----------------------------------------------------------------------------
  476. if (grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("reqqty")) == 0 ) {
  477. messageBox(currow + " 번째 청구량을 " ,"C001");
  478. grd_goodreq.row = currow;
  479. grd_goodreq.col = grd_goodreq.colRef("stocqty");
  480. grd_goodreq.editCell();
  481. return false;
  482. }
  483. reqqty = grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("reqqty" ));
  484. if (cmb_workflag.value=="2" || cmb_workflag.value =="4") {
  485. if (reqqty > 0) {
  486. grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("reqqty" ))= reqqty * -1;
  487. }
  488. }
  489. // parseFloat(string)
  490. reqqty = grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("reqqty" ));
  491. basevol = grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("basevol"));
  492. stocqty = grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("stocqty"));
  493. reqqty = grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("reqqty" ));
  494. minexch = grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("minexch"));
  495. /********************************
  496. [20090409 YYJ] 최소 청구량 => 최소 처방량으로 변경 20090409 16:50 이혜숙 차장님 요청사항
  497. 기존 청구시점에서 청구시 수량에 대한 규제를 위해 설정 되었던 항목을
  498. 구매팀에서 물품에 대한 참고 치로 사용을 한다 함. ( EDI와의 환산 수량의 의미 ).. 최소 처방량에 대한 단위는 관리 하지 않는다 함
  499. ********************************/
  500. /*
  501. if(minexch > 0 && (reqqty%minexch != 0))
  502. {
  503. messageBox((currow) + "번째 물품은 최소청구량에 ["+ minexch + "]맞춰서" , "C001");
  504. grd_goodreq.row = currow;
  505. grd_goodreq.col= grd_goodreq.colRef("reqqty");
  506. grd_goodreq.editCell();
  507. return false;
  508. }
  509. */
  510. /* all size 미입력분 체크 2007.09.
  511. allsizeyn = 'Y' 인데.... allsizespecid선택을 안한경우
  512. */
  513. if(grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("allsizeyn")) == "Y" )
  514. {
  515. if (grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("allsizespecid")).length == 0 ||
  516. grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("allsizespecid")) == '-' )
  517. {
  518. messageBox(currow + " 번째 물품의 ALLSIZE선택을 " ,"C001");
  519. grd_goodreq.row = currow;
  520. grd_goodreq.col= grd_goodreq.colRef("goodspec");
  521. grd_goodreq.editCell();
  522. return false;
  523. }
  524. } else {
  525. grd_goodreq.valueMatrix(currow , grd_goodreq.colRef("allsizespecid")) = "-";
  526. }
  527. //
  528. if (model.getValue(grd_goodreq.nodeset + "[" + currow + "]/aprvyn") != "Y") {
  529. if (model.getValue(ckb_accept.attribute("ref")) == "Y") {
  530. if (model.getValue(grd_goodreq.nodeset + "[" + currow + "deptaprvyn") != "Y") {
  531. if (gPurcDeptcd == getUserInfo("dutplcecd") ){
  532. model.setValue(grd_goodreq.nodeset + "[" + currow + "]/deptaprvyn" ,"Y");
  533. model.setValue(grd_goodreq.nodeset + "[" + currow + "]/deptaprvdd" ,getCurrentDate());
  534. } else {
  535. if (model.getValue(grd_goodreq.nodeset + "[" + currow + "]/reqauth") == "2") {
  536. model.setValue(grd_goodreq.nodeset + "[" + currow + "]/deptaprvyn" ,"Y");
  537. model.setValue(grd_goodreq.nodeset + "[" + currow + "]/deptaprvdd" ,getCurrentDate());
  538. } else {
  539. model.setValue(grd_goodreq.nodeset + "[" + currow + "]/deptaprvyn" ,"N");
  540. model.setValue(grd_goodreq.nodeset + "[" + currow + "]/deptaprvdd","" );
  541. }
  542. }
  543. }
  544. }
  545. }
  546. } // status != 4
  547. } // end for
  548. /* 청구 번호가 없는 경우 즉 신규인 상황에서 신규체크를 하지 않았을 경우
  549. * 임의로 신규 체크 여부를 지정한다. [20081126] YYJ
  550. */
  551. if (model.getValue(cmb_reqno.attribute("ref")).length== 0 )
  552. {
  553. model.setValue(chk_reqnonew.attribute("ref"),'Y');
  554. chk_reqnonew.refresh();
  555. }
  556. return true;
  557. }
  558. //
  559. function fSetControlDisabled(pDisabled) {
  560. cmb_reqno.disabled = pDisabled;
  561. }
  562. //
  563. function fAfterRetr() {
  564. if (model.getValue("/root/main/list/goodreq/goodmaxreqno/reqfix") == "Y") {
  565. fSetControlDisabled("true");
  566. }
  567. else {
  568. fSetControlDisabled("false");
  569. }
  570. // model.setValue(cmb_reqno.attribute("ref"),model.getValue("/root/main/list/goodreq/goodmaxreqno/reqno"));
  571. model.refresh();
  572. }
  573. // --------------------------------------------------
  574. //
  575. // --------------------------------------------------
  576. function fRetrByReqNo() {
  577. if(fCheckRetrieveData(false) == false)return;
  578. model.removenode("/root/main/tmplist");
  579. model.makeNode("/root/main/tmplist/goodreq/goodreqlist");
  580. model.makeNode("/root/main/tmplist/goodreq/goodmaxreqno");
  581. model.copyNode("/root/main/tmplist", "/root/main/list");
  582. model.setValue("/root/send/goodreq/retrmaxreqnoyn","N");
  583. misfMsterDetailRetrieve();
  584. var rtncount = grd_goodreq.rows - grd_goodreq.fixedRows;
  585. if(rtncount == 0)
  586. {
  587. model.copyNode("/root/main/list","/root/main/tmplist");
  588. }
  589. return rtncount;
  590. }
  591. // --------------------------------------------------
  592. //
  593. // --------------------------------------------------
  594. function fSetReqNo(pReqControl,pAdd)
  595. {
  596. if(pAdd == "Y")
  597. {
  598. var reqno = model.getValue(cmb_reqno.attribute("ref"));
  599. reqno = parseInt(reqno) + 1;
  600. reqno = "" + reqno;
  601. reqno = reqno.getLeftPad(4,"0");
  602. }
  603. else
  604. {
  605. var reqno = model.getValue(cmb_reqno.attribute("ref"));
  606. reqno = parseInt(reqno) - 1;
  607. if(reqno == 0)reqno = 1;
  608. reqno = "" + reqno;
  609. reqno = reqno.getLeftPad(4,"0");
  610. }
  611. model.setValue(pReqControl.attribute("ref"), reqno);
  612. model.refresh();
  613. }
  614. // --------------------------------------------------
  615. // 승인전체/접수전체취소
  616. // --------------------------------------------------
  617. function fSettingReqAprv() {
  618. for (var liRow = grd_goodreq.fixedRows ; liRow < grd_goodreq.rows ; liRow++)
  619. {
  620. //----------------------------------------------------------------------------
  621. // 발주승인건 제외
  622. //----------------------------------------------------------------------------
  623. if (model.getValue(grd_goodreq.nodeset + "[" + liRow + "]/aprvyn") != "Y") {
  624. if ((gPurcDeptcd == getUserInfo("dutplcecd") ) ||
  625. (model.getValue(grd_goodreq.nodeset + "[" + liRow + "]/reqauth") == "2")) {
  626. if (model.getValue(grd_goodreq.nodeset + "[" + liRow + "]/deptaprvyn") == "Y") {
  627. model.setValue(grd_goodreq.nodeset + "[" + liRow + "]/deptaprvyn","N");
  628. model.setValue(grd_goodreq.nodeset + "[" + liRow + "]/deptaprvdd","" );
  629. if (grd_goodreq.rowStatus(liRow) == "0") grd_goodreq.rowStatus(liRow) = "2";
  630. } else {
  631. model.setValue(grd_goodreq.nodeset + "[" + liRow + "]/deptaprvyn" ,"Y");
  632. model.setValue(grd_goodreq.nodeset + "[" + liRow + "]/deptaprvdd" ,getCurrentDate());
  633. if (grd_goodreq.rowStatus(liRow) == "0") grd_goodreq.rowStatus(liRow) = "2";
  634. }
  635. }
  636. }
  637. }
  638. //
  639. model.refresh();
  640. }
  641. // --------------------------------------------------
  642. // 승인/미승인 처리
  643. // --------------------------------------------------
  644. function fSaveReqAprv()
  645. {
  646. model.removenode("/root/send/reqaprvlist");
  647. model.makeNode("/root/send/reqaprvlist" );
  648. model.setValue("/root/send/reqaprvlist" ,grd_goodreq.getUpdateData());
  649. submit("TXRSD07002");
  650. if (model.getValue(gvErrorMsgPath + "/type") != "error") misfMsterDetailRetrieve();
  651. }
  652. // --------------------------------------------------
  653. // 권한여부에 따른 승인체크 설정.
  654. // --------------------------------------------------
  655. function fGrantsCheck()
  656. {
  657. if (vPurcAuth == "2" || model.getValue(cmb_reqpridflag.attribute("ref")) =="1") {
  658. misfSetReadOnlyCol(grd_goodreq, "deptaprvyn", false);
  659. }else{
  660. misfSetReadOnlyCol(grd_goodreq, "deptaprvyn", true);
  661. }
  662. }
  663. // --------------------------------------------------
  664. // 물품청구 버튼 Click 처리하는 함수
  665. // --------------------------------------------------
  666. function fGoodreqButtonClick() {
  667. grp_allsize.attribute("visibility") ="hidden" ;
  668. if (grd_goodreq.col == grd_goodreq.colRef("goodcd") &&
  669. grd_goodreq.rowStatus(grd_goodreq.row) == "1" ) { //구성물품코드를 눌렀을 경우
  670. fViewToggle(2); // 1 :늘리기, 2 : 줄이기
  671. cmb_reqflag.select(0);
  672. fReqFagChange(model.getValue(cmb_reqflag.attribute("ref")));
  673. fGoodListReady(grd_goodreq.valueMatrix(grd_goodreq.row, grd_goodreq.col),""); // 물품찾기 처리하는 함수
  674. model.toggle("gd_find");
  675. bbt_good.selected = "true";
  676. }
  677. else if (grd_goodreq.col == grd_goodreq.colRef("goodspec") && grd_goodreq.valueMatrix(grd_goodreq.row , grd_goodreq.colRef("allsizeyn")) == "Y" )
  678. {
  679. fAllSizeRead(grd_goodreq.row ,grd_goodreq.col, event.clientY);
  680. }
  681. model.refresh();
  682. }
  683. // --------------------------------------------------
  684. // 물품청구 내용이 바뀌었을때 처리하는 함수
  685. // --------------------------------------------------
  686. function fGoodreqOnChange() {
  687. // -------------------------------------------------------------------------------------
  688. // basevol = grd_goodreq.valueMatrix(grd_goodreq.row , grd_goodreq.colRef("basevol"));
  689. // stocqty = grd_goodreq.valueMatrix(grd_goodreq.row , grd_goodreq.colRef("stocqty"));
  690. //
  691. // reqqty = basevol - stocqty;
  692. // grd_goodreq.valueMatrix(grd_goodreq.row , grd_goodreq.colRef("reqqty")) = reqqty;
  693. // vMax = parseInt(maxreqseqno, 10);
  694. // reqqty = grd_goodreq.valueMatrix(grd_goodreq.row , grd_goodreq.colRef("reqqty"));
  695. // -------------------------------------------------------------------------------------
  696. if (grd_goodreq.col == grd_goodreq.colRef("reqqty") ) {
  697. if (model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/acptflag") == "Y")
  698. {
  699. messageBox("구매접수된 내역은 수정","E001");
  700. return;
  701. }
  702. if (model.getValue(cmb_reqpridflag.attribute("ref")) !="1")
  703. {
  704. if (model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/reqauth" ) == "1" &&
  705. model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/predeptaprvyn") == "Y" )
  706. {
  707. grd_goodreq.rowStatus(grd_goodreq.row) = "0";
  708. messageBox("청구승인되었으므로 청구량을 수정" ,"E001");
  709. return;
  710. }
  711. }
  712. basevol = grd_goodreq.valueMatrix(grd_goodreq.row , grd_goodreq.colRef("basevol"));
  713. stocqty = grd_goodreq.valueMatrix(grd_goodreq.row , grd_goodreq.colRef("stocqty"));
  714. reqqty = basevol - stocqty;
  715. grd_goodreq.valueMatrix(grd_goodreq.row , grd_goodreq.colRef("reqqty")) =reqqty;
  716. // -------------------------------------------------------------------------------------
  717. // vMax = parseInt(maxreqseqno, 10);
  718. // reqqty = grd_goodreq.valueMatrix(grd_goodreq.row , grd_goodreq.colRef("reqqty"));
  719. // -------------------------------------------------------------------------------------
  720. minexch = grd_goodreq.valueMatrix(grd_goodreq.row , grd_goodreq.colRef("minexch"));
  721. // -------------------------------------------------------------------------------------
  722. // [20090409 YYJ] 최소 청구량 => 최소 처방량으로 변경 20090409 16:50 이혜숙 차장님 요청사항
  723. // 기존 청구시점에서 청구시 수량에 대한 규제를 위해 설정 되었던 항목을
  724. // 구매팀에서 물품에 대한 참고 치로 사용을 한다 함. ( EDI와의 환산 수량의 의미 ).. 최소 처방량에 대한 단위는 관리 하지 않는다 함
  725. // -------------------------------------------------------------------------------------
  726. // if(minexch > 0 && (reqqty%minexch != 0))
  727. // {
  728. // messageBox((grd_goodreq.row )+ "번째 물품은 최소청구량["+ minexch + "] 에 맞춰서" , "C001");
  729. // grd_goodreq.row = grd_goodreq.row;
  730. // grd_goodreq.col= grd_goodreq.colRef("reqqty");
  731. // model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/reqqty","");
  732. // grd_goodreq.editCell();
  733. // return;
  734. // }
  735. // -------------------------------------------------------------------------------------
  736. }
  737. // -----------------------------------------------------------------------------------
  738. // 청구수량을 정량보충으로 변경함. ( 재고/ 기준량을 입력한다) .2007.08.
  739. // -----------------------------------------------------------------------------------
  740. else if (grd_goodreq.col == grd_goodreq.colRef("stocqty") || grd_goodreq.col == grd_goodreq.colRef("basevol") )
  741. {//재고량조절할경우
  742. if (model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/acptflag") == "Y")
  743. {
  744. messageBox("구매접수된 내역은 수정","E001");
  745. return;
  746. }
  747. if(model.getValue(cmb_reqpridflag.attribute("ref")) !="1")
  748. {
  749. if (model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/reqauth" ) == "1" &&
  750. model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/predeptaprvyn") == "Y" )
  751. {
  752. grd_goodreq.rowStatus(grd_goodreq.row) = "0";
  753. messageBox("청구승인되었으므로 재고량을 수정" ,"E001");
  754. return;
  755. }
  756. }
  757. basevol = grd_goodreq.valueMatrix(grd_goodreq.row , grd_goodreq.colRef("basevol"));
  758. stocqty = grd_goodreq.valueMatrix(grd_goodreq.row , grd_goodreq.colRef("stocqty"));
  759. reqqty = grd_goodreq.valueMatrix(grd_goodreq.row , grd_goodreq.colRef("reqqty" ));
  760. minexch = grd_goodreq.valueMatrix(grd_goodreq.row , grd_goodreq.colRef("minexch"));
  761. calc_reqqty = basevol - stocqty;
  762. // -----------------------------------------------------------------------------------
  763. // if ( calc_reqqty < minexch ) calc_reqqty = minexch;
  764. // if ( calc_reqqty < minexch ) calc_reqqty = 0;
  765. // -----------------------------------------------------------------------------------
  766. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/reqqty",calc_reqqty);
  767. }
  768. else if(grd_goodreq.col == grd_goodreq.colRef("goodcd") && grd_goodreq.valueMatrix(grd_goodreq.row, grd_goodreq.colRef("goodcd")).length> 0)
  769. {
  770. model.removenode("/root/copynode");
  771. model.removenode(gvParamPath +"/SMRSD00400_/SMRSD00400_value");
  772. model.makeNode("/root/copynode");
  773. // -----------------------------------------------------------------------------------
  774. // rszfValidationCheck("TRRSD00191", "goodlist" , "refcond,instcd,goodflag,goodcd,goodnm,indexgb,indexnm,reqflag,reqdeptcd,reqprid","goodcd," + model.getValue(opt_instcd.attribute("ref")) + "," +model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/goodflag") + "," + model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/goodcd") + ",,,," + model.getValue(cmb_reqflag.attribute("ref")) + "," + model.getValue(cmb_reqdeptcd.attribute("ref")) + "," + model.getValue(cmb_reqpridflag.attribute("ref")) ,"","goodcd,goodnm,goodspec,goodmodel,prodcmpynm,purcunit,stocqty,minexch,goodflag,ddavguseqty,reqflag,allsizeyn",grd_goodreq,"SPRSD00190","instcd,goodflag,reqflag,reqdeptcd,reqprid","opt_instcd,opt_goodflag,cmb_reqflag,cmb_reqdeptcd,cmb_reqpridflag","Y");
  775. // model.refresh();
  776. // -----------------------------------------------------------------------------------
  777. // 2010.02.18 CHR
  778. rszfValidationCheck("TRRSD00191", "goodlist" , "refcond,instcd,goodflag,goodcd,goodnm,indexgb,indexnm,reqflag,reqdeptcd,reqprid"
  779. ,"goodcd," + model.getValue(opt_instcd.attribute("ref")) + ","
  780. + model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/goodflag") + ","
  781. + model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/goodcd" ) + ",,,,"
  782. + model.getValue(cmb_reqflag.attribute("ref" )) + ","
  783. + model.getValue(cmb_reqdeptcd.attribute("ref" )) + ","
  784. + model.getValue(cmb_reqpridflag.attribute("ref")) ,""
  785. , "goodcd,goodnm,goodspec,goodmodel,prodcmpynm,purcunit,stocqty,minexch,goodflag,ddavguseqty,reqflag,allsizeyn,delivedeptcd,setunit,constunit"
  786. , grd_goodreq,"SPRSD00190"
  787. , "instcd,goodflag,reqflag,reqdeptcd,reqprid","opt_instcd,opt_goodflag,cmb_reqflag,cmb_reqdeptcd,cmb_reqpridflag","Y");
  788. model.refresh();
  789. if (grd_goodreq.valueMatrix(cur_row, grd_goodreq.colRef("goodnm")).length > 0)
  790. {
  791. // -----------------------------------------------------------------------------------
  792. // [20090409 YYJ] 최소 청구량 => 최소 처방량으로 변경 20090409 16:50 이혜숙 차장님 요청사항
  793. // 기존 청구시점에서 청구시 수량에 대한 규제를 위해 설정 되었던 항목을
  794. // 구매팀에서 물품에 대한 참고 치로 사용을 한다 함. ( EDI와의 환산 수량의 의미 ).. 최소 처방량에 대한 단위는 관리 하지 않는다 함
  795. // -----------------------------------------------------------------------------------
  796. // if(model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/minexch") > 0)
  797. // model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/reqqty",model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/minexch") );
  798. // else model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/reqqty","1");
  799. // -----------------------------------------------------------------------------------
  800. // model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/basevol",model.getValue("/root/init/main/goodlist/minexch"));
  801. // model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/reqmthdflag",model.getValue("/root/init/main/goodlist/reqmthd"));
  802. // -----------------------------------------------------------------------------------
  803. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/reqqty","1");
  804. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/basevol","1");
  805. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/requnit",model.getValue("/root/init/main/goodlist/deliveunit"));
  806. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/exchqty",model.getValue("/root/init/main/goodlist/exchqty"));
  807. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/reqmthdflag","3");
  808. }
  809. model.refresh();
  810. var cur_row = grd_goodreq.row;
  811. var status = grd_goodreq.valueMatrix(cur_row, grd_goodreq.colRef("m"));
  812. var CSV = model.getValue(gvParamPath +"/SMRSD00400_/SMRSD00400_value");
  813. if(CSV.length == 0 && grd_goodreq.valueMatrix(cur_row, grd_goodreq.colRef("goodnm")).length == 0)
  814. {
  815. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/goodcd" , "");
  816. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/goodcd" , "");
  817. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/goodnm" , "");
  818. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/goodspec" , "");
  819. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/goodflag" , "");
  820. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/goodmodel" , "");
  821. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/prodcmpynm" , "");
  822. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/purcunit" , "");
  823. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/basevol" , "");
  824. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/stocqty" , "");
  825. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/reqqty" , "");
  826. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/requnit" , "");
  827. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/minexch" , "");
  828. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/ddavguseqty" , "");
  829. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/allsizeyn" , "");
  830. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/allsizespecid" , "");
  831. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/exchqty" , "");
  832. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/rgstqty" , "");
  833. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/reqauth" , "1");
  834. grd_goodreq.col = grd_goodreq.colRef("goodcd");
  835. grd_goodreq.editCell();
  836. }
  837. else if (CSV.length > 0)
  838. {
  839. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/goodcd","");
  840. setCSVToNode("/root/copynode", CSV, "goodreqlist");
  841. fSettingGoodList("/root/copynode", "goodreqlist" , "userqty");
  842. }
  843. }
  844. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  845. // 영양팀은 품목명칭에서 값을 입력할수 있다..
  846. // 입력값과 일치건이 1일경우 코드 REPLACE
  847. // 없을경우 FIND
  848. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  849. else if (grd_goodreq.col == grd_goodreq.colRef("goodnm")
  850. && grd_goodreq.valueMatrix(grd_goodreq.row, grd_goodreq.colRef("goodnm")).length > 0
  851. && grd_goodreq.valueMatrix(grd_goodreq.row, grd_goodreq.colRef("goodcd")).length == 0 )
  852. {
  853. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  854. // validation을 하기 위해 임시 column 을 둔다. HBH
  855. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  856. model.setValue(tmp_goodcd.attribute("ref") ,"%" );
  857. model.setValue(tmp_goodnm.attribute("ref") ,grd_goodreq.valueMatrix(grd_goodreq.row, grd_goodreq.colRef("goodnm")) );
  858. model.removenode("/root/copynode");
  859. model.removenode(gvParamPath +"/SMRSD00400_/SMRSD00400_value");
  860. model.makeNode("/root/copynode");
  861. // 2010.02.18 CHR
  862. rszfValidationCheck("TRRSD00191", "goodlist" , "refcond,instcd,goodflag,goodcd,goodnm,indexgb,indexnm,reqflag,reqdeptcd,reqprid"
  863. ,"goodcd," + model.getValue(opt_instcd.attribute("ref")) + ","
  864. + model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/goodflag") + ","
  865. + model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/goodcd" ) + ",,,,"
  866. + model.getValue(cmb_reqflag.attribute("ref" )) + ","
  867. + model.getValue(cmb_reqdeptcd.attribute("ref" )) + ","
  868. + model.getValue(cmb_reqpridflag.attribute("ref")) ,""
  869. , "goodcd,goodnm,goodspec,goodmodel,prodcmpynm,purcunit,stocqty,minexch,goodflag,ddavguseqty,reqflag,allsizeyn,delivedeptcd,setunit,constunit"
  870. , grd_goodreq,"SPRSD00190"
  871. , "instcd,goodflag,reqflag,reqdeptcd,reqprid","opt_instcd,opt_goodflag,cmb_reqflag,cmb_reqdeptcd,cmb_reqpridflag","Y");
  872. model.refresh();
  873. if(grd_goodreq.valueMatrix(grd_goodreq.row, grd_goodreq.colRef("goodcd")).length > 0)
  874. {
  875. model.removenode("/root/copynode");
  876. model.removenode(gvParamPath +"/SMRSD00400_/SMRSD00400_value");
  877. model.makeNode("/root/copynode");
  878. // rszfValidationCheck("TRRSD00191", "goodlist" , "refcond,instcd,goodflag,goodcd,goodnm,indexgb,indexnm,reqflag,reqdeptcd,reqprid","goodcd," + model.getValue(opt_instcd.attribute("ref")) + "," +model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/goodflag") + "," + model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/goodcd") + ",,,," + model.getValue(cmb_reqflag.attribute("ref")) + "," + model.getValue(cmb_reqdeptcd.attribute("ref")) + "," + model.getValue(cmb_reqpridflag.attribute("ref")) ,"","goodcd,goodnm,goodspec,goodmodel,prodcmpynm,purcunit,stocqty,minexch,goodflag,ddavguseqty,reqflag,allsizeyn",grd_goodreq,"SPRSD00190","instcd,goodflag,reqflag,reqdeptcd,reqprid","opt_instcd,opt_goodflag,cmb_reqflag,cmb_reqdeptcd,cmb_reqpridflag","Y");
  879. model.refresh();
  880. if (grd_goodreq.valueMatrix(cur_row, grd_goodreq.colRef("goodnm")).length> 0)
  881. {
  882. // -----------------------------------------------------------------------------------
  883. //
  884. // [20090409 YYJ] 최소 청구량 => 최소 처방량으로 변경 20090409 16:50 이혜숙 차장님 요청사항
  885. // 기존 청구시점에서 청구시 수량에 대한 규제를 위해 설정 되었던 항목을
  886. // 구매팀에서 물품에 대한 참고 치로 사용을 한다 함. ( EDI와의 환산 수량의 의미 ).. 최소 처방량에 대한 단위는 관리 하지 않는다 함
  887. // -----------------------------------------------------------------------------------
  888. // if(model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/minexch") > 0) model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/reqqty",model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/minexch") );
  889. // else model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/reqqty","1");
  890. // -----------------------------------------------------------------------------------
  891. // model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/basevol",model.getValue("/root/init/main/goodlist/minexch"));
  892. // model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/reqmthdflag",model.getValue("/root/init/main/goodlist/reqmthd"));
  893. // -----------------------------------------------------------------------------------
  894. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/reqqty" ,"1")
  895. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/basevol","1");
  896. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/requnit",model.getValue("/root/init/main/goodlist/deliveunit"));
  897. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/reqmthdflag","3");
  898. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/allsizespecid","YYY");
  899. }
  900. model.refresh();
  901. var cur_row = grd_goodreq.row;
  902. var status = grd_goodreq.valueMatrix(cur_row, grd_goodreq.colRef("m"));
  903. var CSV = model.getValue(gvParamPath +"/SMRSD00400_/SMRSD00400_value");
  904. if(CSV.length == 0 && grd_goodreq.valueMatrix(cur_row, grd_goodreq.colRef("goodnm")).length == 0)
  905. {
  906. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/goodcd" , "");
  907. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/goodcd" , "");
  908. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/goodnm" , "");
  909. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/goodspec" , "");
  910. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/goodflag" , "");
  911. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/goodmodel" , "");
  912. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/prodcmpynm" , "");
  913. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/purcunit" , "");
  914. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/basevol" , "");
  915. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/stocqty" , "");
  916. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/reqqty" , "");
  917. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/requnit" , "");
  918. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/minexch" , "");
  919. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/ddavguseqty" , "");
  920. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/allsizeyn" , "");
  921. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/allsizespecid" , "");
  922. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/rgstqty" , "");
  923. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/reqauth" , "1");
  924. grd_goodreq.col = grd_goodreq.colRef("goodcd");
  925. grd_goodreq.editCell();
  926. }
  927. else if (CSV.length > 0)
  928. {
  929. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/goodcd","");
  930. setCSVToNode("/root/copynode", CSV, "goodreqlist");
  931. fSettingGoodList("/root/copynode", "goodreqlist" , "userqty");
  932. }
  933. }
  934. }
  935. else if ((grd_goodreq.col == grd_goodreq.colRef("deptaprvyn"))) {
  936. if ((model.getValue(cmb_reqpridflag.attribute("ref")) != "1") &&
  937. (model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/reqauth")!="2" ) ) {
  938. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/deptaprvyn",model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/predeptaprvyn"));
  939. // insert 가 아니면..
  940. if (grd_goodreq.rowStatus(grd_goodreq.row) != '3') {
  941. grd_goodreq.rowStatus(grd_goodreq.row) = "0";
  942. }
  943. messageBox("청구승인권한이 없으므로 수정" ,"E001");
  944. } else if (model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/aprvyn") == "Y") {
  945. grd_goodreq.rowStatus(grd_goodreq.row) = "0";
  946. messageBox("발주승인이 되었으므로 수정" ,"E001");
  947. } else {
  948. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/deptaprvdd" ,getCurrentDate());
  949. }
  950. }
  951. }
  952. // --------------------------------------------------
  953. // 물품청구 내용이 바뀌었을때 처리하는 함수
  954. // --------------------------------------------------
  955. function fGoodreqOnKeyDown() {
  956. if(event.keyCode == 13)
  957. {
  958. if(grd_goodreq.col == grd_goodreq.colRef("reqqty"))
  959. {
  960. if(grd_goodreq.row < grd_goodreq.rows - grd_goodreq.fixedRows)
  961. {
  962. grd_goodreq.row = grd_goodreq.row + 1;
  963. grd_goodreq.select(grd_goodreq.row, grd_goodreq.colRef("reqqty")) = true;
  964. }
  965. }
  966. }
  967. if(event.keyCode == 9)
  968. {
  969. if(event.shiftKey)
  970. {
  971. if(grd_goodreq.colAttribute(grd_goodreq.col + 1, "type").indexOf ("input") > -1)
  972. {
  973. for(curcol = grd_goodreq.col -1 ; curcol > -1 ; curcol--)
  974. {
  975. if(grd_goodreq.colAttribute(curcol, "type").indexOf ("input") > -1)
  976. {
  977. grd_goodreq.col = curcol;
  978. grd_goodreq.editCell();
  979. return;
  980. }
  981. }
  982. }
  983. }
  984. else
  985. {
  986. if(grd_goodreq.colAttribute(grd_goodreq.col, "type").indexOf ("input") == -1)
  987. {
  988. if(grd_goodreq.col - 1 == grd_goodreq.colRef("goodcd") && grd_goodreq.valueMatrix(grd_goodreq.row, grd_goodreq.col - 1).length == 0)
  989. {
  990. grd_goodreq.col = grd_goodreq.colRef("goodcd");
  991. grd_goodreq.editCell();
  992. return;
  993. }
  994. for(curcol = grd_goodreq.col ; curcol <grd_goodreq.cols ; curcol++)
  995. {
  996. if(grd_goodreq.colAttribute(curcol, "type").indexOf ("input") > -1)
  997. {
  998. grd_goodreq.col = curcol;
  999. grd_goodreq.editCell();
  1000. return;
  1001. }
  1002. }
  1003. }
  1004. }
  1005. }
  1006. }
  1007. // --------------------------------------------------
  1008. // 물품청구 Cell 내용이 바뀌었을때 처리하는 함수
  1009. // --------------------------------------------------
  1010. function fGoodreqOnEnterCell() {
  1011. if((grd_goodreq.col == grd_goodreq.colRef("deptaprvyn")))
  1012. {
  1013. if (model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/reqauth" ) != "2" &&
  1014. model.getValue(cmb_reqpridflag.attribute("ref")) !="1" )
  1015. {
  1016. model.setValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/deptaprvyn",model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/predeptaprvyn") );
  1017. // insert 가 아니면..
  1018. if ( grd_goodreq.rowStatus(grd_goodreq.row) != '3')
  1019. {
  1020. grd_goodreq.rowStatus(grd_goodreq.row) = "0";
  1021. }
  1022. messageBox("청구승인권한이 없으므로 수정" ,"E001");
  1023. }
  1024. else
  1025. {
  1026. if(model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/aprvyn") == "Y")
  1027. {
  1028. grd_goodreq.rowStatus(grd_goodreq.row) = "0";
  1029. messageBox("발주승인이 되었으므로 수정" ,"E001");
  1030. }
  1031. }
  1032. }
  1033. else if(grd_goodreq.col == grd_goodreq.colRef("stocqty"))
  1034. // else if(grd_goodreq.col == grd_goodreq.colRef("reqqty"))
  1035. {
  1036. if (model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/acptflag") == "Y")
  1037. {
  1038. messageBox("구매접수된 내역은 수정","E001");
  1039. return;
  1040. }
  1041. if (model.getValue(cmb_reqpridflag.attribute("ref")) !="1")
  1042. {
  1043. if (model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/reqauth" ) == "1" &&
  1044. model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/predeptaprvyn") == "Y")
  1045. {
  1046. grd_goodreq.rowStatus(grd_goodreq.row) = "0";
  1047. messageBox("청구승인되었으므로 재고량을 수정" ,"E001");
  1048. return;
  1049. }
  1050. }
  1051. }
  1052. else if(grd_goodreq.col == grd_goodreq.colRef("reqqty"))
  1053. {
  1054. if (model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row+ "]/acptflag") == "Y")
  1055. {
  1056. messageBox("구매접수된 내역은 수정","E001");
  1057. return;
  1058. }
  1059. if (model.getValue(cmb_reqpridflag.attribute("ref")) !="1")
  1060. {
  1061. if (model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/reqauth" ) == "1" &&
  1062. model.getValue(grd_goodreq.nodeset + "[" + grd_goodreq.row + "]/predeptaprvyn") == "Y")
  1063. {
  1064. grd_goodreq.rowStatus(grd_goodreq.row) = "0";
  1065. messageBox("청구승인되었으므로 청구량을 수정" ,"E001");
  1066. return;
  1067. }
  1068. }
  1069. }
  1070. }
  1071. // --------------------------------------------------
  1072. // Switch 속성변경 처리하는 함수
  1073. // --------------------------------------------------
  1074. function fViewToggle(pCls) {
  1075. if (pCls == 1) { // 늘리기
  1076. // 메인 Grup
  1077. grp_main.attribute("left" ) = "1" ;
  1078. grp_main.attribute("width" ) = "1188";
  1079. // grp_main.attribute("top" ) = "90" ;
  1080. // grp_main.attribute("height" ) = "663" ;
  1081. // Data Grid
  1082. // grd_goodreq.attribute("left" ) = "1" ;
  1083. grd_goodreq.attribute("width" ) = "1183";
  1084. // grd_goodreq.attribute("top" ) = "29" ;
  1085. // grd_goodreq.attribute("height") = "628" ;
  1086. lin_main.attribute("x2" ) = "1182" ;
  1087. bbt_large.attribute("visibility") = "hidden" ;
  1088. bbt_right.attribute("visibility") = "hidden" ;
  1089. grp_button.attribute("left" ) = "589" ;
  1090. grp_allsize.attribute("left" ) = "544" ;
  1091. } else { // 줄이기
  1092. // 메인 Grup
  1093. grp_main.attribute("left" ) = "593" ;
  1094. grp_main.attribute("width" ) = "602" ;
  1095. // grp_main.attribute("top" ) = "90" ;
  1096. // grp_main.attribute("height" ) = "663" ;
  1097. // Data Grid
  1098. // grd_goodreq.attribute("left" ) = "3" ;
  1099. grd_goodreq.attribute("width" ) = "597" ;
  1100. // grd_goodreq.attribute("top" ) = "29" ;
  1101. // grd_goodreq.attribute("height") = "628" ;
  1102. // lin_main.attribute("x1" ) = "2";
  1103. lin_main.attribute("x2" ) = "595";
  1104. bbt_large.attribute("visibility") = "visible" ;
  1105. bbt_right.attribute("visibility") = "visible" ;
  1106. grp_button.attribute("left" ) = "3" ;
  1107. grp_allsize.attribute("left" ) = "174" ;
  1108. }
  1109. // swt_search.refresh();
  1110. grp_main.refresh();
  1111. }
  1112. // --------------------------------------------------
  1113. // 물품 찾기 속성변경 처리하는 함수
  1114. // --------------------------------------------------
  1115. function fGoodSearchToggle() {
  1116. if (cpt_cls.attribute("text") =="0") { // 상세접근 조회
  1117. // 메인 Grup
  1118. grd_goodlist.attribute("left" ) = "2" ;
  1119. grd_goodlist.attribute("top" ) = "83" ;
  1120. grd_goodlist.attribute("width" ) = "576";
  1121. grd_goodlist.attribute("height" ) = "574" ;
  1122. btn_dtail.attribute("top" ) = "56" ;
  1123. bbt_apply2.attribute("top" ) = "56" ;
  1124. lin_goodlist.attribute("y1" ) = "78";
  1125. lin_goodlist.attribute("y2" ) = "78";
  1126. grp_dtail.attribute("visibility") ="hidden" ;
  1127. cpt_cls.attribute("text") = "1";
  1128. } else { // 줄이기
  1129. // 메인 Grup
  1130. grd_goodlist.attribute("left" ) = "2" ;
  1131. grd_goodlist.attribute("top" ) = "285" ;
  1132. grd_goodlist.attribute("width" ) = "576";
  1133. grd_goodlist.attribute("height" ) = "372" ;
  1134. btn_dtail.attribute("top" ) = "258" ;
  1135. bbt_apply2.attribute("top" ) = "258" ;
  1136. lin_goodlist.attribute("y1" ) = "280";
  1137. lin_goodlist.attribute("y2" ) = "280";
  1138. grp_dtail.attribute("visibility") ="visible" ;
  1139. cpt_cls.attribute("text") = "0";
  1140. }
  1141. grd_goodlist.refresh();
  1142. }
  1143. // --------------------------------------------------
  1144. // 물품 찾기 속성변경 처리하는 함수
  1145. // --------------------------------------------------
  1146. var vInstcd = "";
  1147. var vReqdeptcd = "";
  1148. function fReqSetList() {
  1149. var vReqSetFlag = "N";
  1150. if (model.getValue(opt_instcd.attribute("ref")) == "") {
  1151. messageBox("기관을 " ,"C002");
  1152. return;
  1153. }
  1154. //
  1155. if (model.getValue(cmb_reqdeptcd.attribute("ref" )) == ""){
  1156. messageBox("청구 부서를 " ,"C002");
  1157. return;
  1158. }
  1159. //
  1160. if (vInstcd != model.getValue(opt_instcd.attribute("ref" ))) vReqSetFlag = "Y";
  1161. if (vReqdeptcd != model.getValue(cmb_reqdeptcd.attribute("ref" ))) vReqSetFlag = "Y";
  1162. if (vReqSetFlag == "N") return;
  1163. vInstcd = model.getValue(opt_instcd.attribute("ref" ));
  1164. vReqdeptcd = model.getValue(cmb_reqdeptcd.attribute("ref" ));
  1165. model.setValue("/root/send/reqmst/instcd" , model.getValue(opt_instcd.attribute("ref" )));
  1166. model.setValue("/root/send/reqmst/reqdeptcd" , model.getValue(cmb_reqdeptcd.attribute("ref" )));
  1167. grd_reqset.fixedcellcheckbox(0, grd_reqset.colRef("select"),false) = true;
  1168. misfGridInit(grd_reqset);
  1169. misfGridInit(grd_setlist);
  1170. submit("TRRSD00211");
  1171. if (grd_setlist.rows < 2) return;
  1172. if (model.getValue(grd_setlist.nodeset + "["+ 1 + "]/reqdeptcd" ) =="") return;
  1173. grd_setlist.row = 1;
  1174. fReqSetRead(grd_setlist.row);
  1175. misfMsterDetailRetrieve();
  1176. }
  1177. // 부서 청구SET 물품
  1178. function fReqSetRead(pRow) {
  1179. model.setValue("/root/send/reqset/instcd" , model.getValue(grd_setlist.nodeset + "["+ pRow + "]/instcd" ));
  1180. model.setValue("/root/send/reqset/reqdeptcd" , model.getValue(grd_setlist.nodeset + "["+ pRow + "]/reqdeptcd" ));
  1181. model.setValue("/root/send/reqset/reqprid" , model.getValue(grd_setlist.nodeset + "["+ pRow + "]/reqprid" ));
  1182. model.setValue("/root/send/reqset/goodsetcd" , model.getValue(grd_setlist.nodeset + "["+ pRow + "]/goodsetcd" ));
  1183. model.setValue("/root/send/reqset/goodsetnm" , model.getValue(grd_setlist.nodeset + "["+ pRow + "]/goodsetnm" ));
  1184. misfGridInit(grd_reqset);
  1185. submit("TRRSD00210"); // 청구마감일자 조회 purcbaseweb
  1186. }
  1187. // --------------------------------------------------
  1188. // 선택물품을 적용하는 처리하는 함수
  1189. // --------------------------------------------------
  1190. function fSelectDataApply(pGridSource, pGridTarget, pGridNm, pQtyNm) {
  1191. model.removenode("/root/copynode");
  1192. var vSelect = 0;
  1193. for ( var row = pGridSource.fixedRows ; row < pGridSource.rows; row++) {
  1194. if ((model.getValue(pGridSource.nodeset + "[" + row + "]/select" ) == "true" ) &&
  1195. (model.getValue(pGridSource.nodeset + "[" + row + "]/reqprid") == model.getValue(cmb_reqpridflag.attribute("ref")) ) )
  1196. {
  1197. if ((model.getValue(pGridTarget.nodeset +"[goodcd='"+ pGridSource.valueMatrix(row, pGridSource.colRef("goodcd")) + "']" +"/goodcd") == "") )
  1198. vSelect++;
  1199. else if ((model.getValue(pGridTarget.nodeset +"[goodcd='"+ pGridSource.valueMatrix(row, pGridSource.colRef("goodcd")) + "']" +"/goodcd") != "") &&
  1200. (model.getValue(pGridTarget.nodeset +"[allsizespecid='"+ pGridSource.valueMatrix(row, pGridSource.colRef("allsizespecid")) + "']" +"/allsizespecid") == "") )
  1201. vSelect++;
  1202. else
  1203. model.setValue(pGridSource.nodeset + "[" + row + "]/select" , "false");
  1204. } else {
  1205. model.setValue(pGridSource.nodeset + "[" + row + "]/select" , "false");
  1206. }
  1207. }
  1208. //
  1209. if (vSelect < 1) {
  1210. pGridSource.refresh();
  1211. return;
  1212. }
  1213. //
  1214. var nodelist = instance1.selectNodes(pGridSource.nodeset + "[select='true']");
  1215. // var nodelist = instance1.selectNodes(pGridSource.nodeset + "[select='true' and reqprid='"+cmb_reqpridflag.value+"']");
  1216. var rCVS = getNodeListCSV(nodelist);
  1217. var cur_row = pGridTarget.row;
  1218. var status = pGridTarget.valueMatrix(cur_row, pGridTarget.colRef("m"));
  1219. model.makeNode("/root/copynode");
  1220. setCSVToNode("/root/copynode", rCVS, pGridNm);
  1221. fSettingGoodList("/root/copynode", pGridNm , pQtyNm);
  1222. //----------------------------------------------------------
  1223. // 2008.07.08 YYJ 추가 물품 조회시 선택한 항목을 Clear 시켜준다.
  1224. //----------------------------------------------------------
  1225. for (var row = pGridSource.fixedRows ; row < pGridSource.rows; row++) {
  1226. model.setValue(pGridSource.nodeset + "[" + row + "]/select" , "false");
  1227. }
  1228. }
  1229. // --------------------------------------------------
  1230. // All Size 읽어오는 함수
  1231. // --------------------------------------------------
  1232. var vAllSizeCol = 0;
  1233. var vAllSizeRow = 0;
  1234. var vAllSizePath = "/root/main/codelist";
  1235. var vGoodReqPath = "/root/main/list/goodreq/goodreqlist";
  1236. function fAllSizeRead(pRow, pCol, pPos) {
  1237. var iClickY = pPos - 100;
  1238. vAllSizeCol = pCol;
  1239. vAllSizeRow = pRow;
  1240. if (iClickY > 375) iClickY = iClickY - 319;
  1241. grp_allsize.attribute("top") = iClickY+ "px";
  1242. grp_allsize.attribute("visibility") = "visible" ;
  1243. model.setValue("/root/send/allsize/instcd", model.getValue(opt_instcd.attribute("ref" )));
  1244. model.setValue("/root/send/allsize/goodcd", model.getValue(grd_goodreq.nodeset + "[" + pRow + "]/goodcd"));
  1245. submit("TRRSD00281");
  1246. grp_allsize.refresh();
  1247. }
  1248. // All Size 선택
  1249. function fAllSizeSelect() {
  1250. grp_allsize.attribute("visibility") = "hidden" ;
  1251. var vQty = "0";
  1252. var vSize = "";
  1253. var vSpec = "";
  1254. var vModel = "";
  1255. var vCheck = "";
  1256. var vPath = "";
  1257. var vTarget = "";
  1258. var vSource = "";
  1259. var vGoodcd = model.getValue(vGoodReqPath+"["+(vAllSizeRow)+"]/goodcd");
  1260. for (var i = 1; i < grd_codelist.rows; i++) {
  1261. if (model.getValue(vAllSizePath+"["+i+"]/chk") == "true") {
  1262. vSize = model.getValue(vAllSizePath+"["+ i +"]/allsizespecid");
  1263. vSpec = model.getValue(vAllSizePath+"["+ i +"]/goodspec" );
  1264. vModel = model.getValue(vAllSizePath+"["+ i +"]/goodmodel" );
  1265. vQty = model.getValue(vAllSizePath+"["+ i +"]/qty" );
  1266. if (model.getValue(vGoodReqPath +"[goodcd='"+ vGoodcd+"' and allsizespecid='"+vSize+"']" +"/goodcd") == "") {
  1267. if (vCheck == "") {
  1268. vCheck = "Y";
  1269. vTarget = vGoodReqPath+"["+(vAllSizeRow)+"]" ;
  1270. if (grd_goodreq.rowStatus(vAllSizeRow) == 0)
  1271. grd_goodreq.rowStatus(vAllSizeRow) = 2 ;
  1272. } else {
  1273. misfGridIUD(grd_goodreq,"A");
  1274. addRow = grd_goodreq.rows - grd_goodreq.fixedRows;
  1275. fDefaultSetting(addRow);
  1276. vTarget = grd_goodreq.nodeset + "[" + addRow + "]/";
  1277. vSource = vGoodReqPath + "[" + vAllSizeRow + "]/";
  1278. fSettingGoodData(vTarget, vSource, "basevol", "requnit", "S");
  1279. grd_goodreq.cellstyle("background-color" , addRow, 9) = "#FFFF00";
  1280. }
  1281. } else {
  1282. vPath = vGoodReqPath+"[goodcd='"+ vGoodcd+"' and allsizespecid='"+vSize+"']";
  1283. }
  1284. //
  1285. model.setValue(vTarget + "/allsizeyn" , "Y" );
  1286. model.setValue(vTarget + "/allsizespecid" , vSize );
  1287. model.setValue(vTarget + "/goodspec" , vSpec );
  1288. model.setValue(vTarget + "/goodmodel" , vModel);
  1289. if (vQty != "" && vQty != "0") {
  1290. model.setValue(vTarget + "/stocqty" , vQty );
  1291. }
  1292. }
  1293. }
  1294. grd_goodreq.refresh();
  1295. }
  1296. // 신규생성
  1297. function fNewReqNo() {
  1298. fNewReqNoVisibility(); //청구일자 및 청구순번 을 신규여부에 따라 셋팅한다.
  1299. if ( model.getValue(chk_reqnonew.attribute("ref")) == "Y" )
  1300. {
  1301. if (grd_goodreq.rows < 2) return;
  1302. RetCls = messageBox("조회된 자료를 현재일자로 신규 생성합니다","S001");
  1303. if ( RetCls == 6) //Yes
  1304. {
  1305. //model.resetInstanceNode("/root/send/save/autoaprv/reqnonew");
  1306. //chk_reqnonew.value = "";
  1307. model.setValue(chk_reqnonew.attribute("ref"), "Y"); // reqnonew 인스턴스값이 <> N Y </> 으로 나와서 해당부분에서 처리함(문제발생시 if문 삭제)
  1308. fNewReqNoVisibility();
  1309. for (var i = 1; i < grd_goodreq.rows; i++) {
  1310. //grd_goodreq.rowStatus(i) = 3 ;
  1311. model.setValue(grd_goodreq.nodeset + "[" + i + "]/deptaprvyn", "N");
  1312. model.setValue(grd_goodreq.nodeset + "[" + i + "]/deptaprvdd", "");
  1313. model.setValue(grd_goodreq.nodeset + "[" + i + "]/deptaprvnm", "");
  1314. //구매승인이 난 물품에 대해서도 신규생성시에 구매승인(acptflag)을 'N'로 셋팅해주어야 한다.
  1315. //나머지 노드도 처음 청구낼때와 같게 셋팅해 준다(acptflagnm , acptdd , acptcharid , purcdmnddd , purcdmndno , purcdmndseq , aprvyn , deliveprcsflag)
  1316. if ( model.getValue(grd_goodreq.nodeset + "[" + i + "]/acptflag" ) == "Y") {
  1317. model.setValue(grd_goodreq.nodeset + "[" + i + "]/acptflag" , "N");
  1318. model.setValue(grd_goodreq.nodeset + "[" + i + "]/acptflagnm" , "미접수");
  1319. model.setValue(grd_goodreq.nodeset + "[" + i + "]/acptdd" , "" );
  1320. model.setValue(grd_goodreq.nodeset + "[" + i + "]/acptcharid" , "" );
  1321. model.setValue(grd_goodreq.nodeset + "[" + i + "]/purcdmnddd" , "" );
  1322. model.setValue(grd_goodreq.nodeset + "[" + i + "]/purcdmndno" , "" );
  1323. model.setValue(grd_goodreq.nodeset + "[" + i + "]/purcdmndseq" , "" );
  1324. model.setValue(grd_goodreq.nodeset + "[" + i + "]/aprvyn" , "N");
  1325. model.setValue(grd_goodreq.nodeset + "[" + i + "]/deliveprcsflag", "1");
  1326. misfSetReadOnlyCol(grd_goodreq, "deptaprvyn", false); //승인체크란 ReadOnly false
  1327. grd_goodreq.isReadOnly( i , grd_goodreq.fixedCols-1, i , grd_goodreq.cols-1) = false; //전체 Grid ReadOnly false
  1328. }
  1329. }
  1330. }else if ( RetCls == 7) //No
  1331. {
  1332. // chk_reqnonew.value = "N";
  1333. fNewReqNoVisibility();
  1334. //데이터 그리드 클리어
  1335. misfGridInit(grd_goodreq);
  1336. }else{ //취소일경우
  1337. return;
  1338. }
  1339. }else
  1340. {
  1341. btn_search.dispatch("DOMActivate");
  1342. if (grd_goodreq.rows < 2) {
  1343. return;
  1344. }
  1345. }
  1346. grd_goodreq.refresh();
  1347. //alert(grd_goodreq.rows);
  1348. }
  1349. // 신규 Check 시 작업구분
  1350. function fNewReqNoVisibility() {
  1351. if ( model.getValue(chk_reqnonew.attribute("ref")) == "Y") {
  1352. // cmb_reqno.disabled = true;
  1353. ipt_reqdd.attribute("visibility") = "hidden";
  1354. ipt_reqddnew.attribute("visibility") = "visible" ;
  1355. // cmb_reqno.attribute("visibility") = "hidden" ;
  1356. // cmb_hidden.attribute("visibility") = "visible" ;
  1357. //model.setValue(ipt_reqddnew.attribute("ref"), getCurrentDate() ); //신규로 체크되면 무조건 오늘날짜로 셋팅된다
  1358. } else {
  1359. // cmb_reqno.disabled = false;
  1360. ipt_reqddnew.attribute("visibility") = "hidden";
  1361. ipt_reqdd.attribute("visibility") = "visible" ;
  1362. // cmb_reqno.attribute("visibility") = "visible" ;
  1363. // cmb_hidden.attribute("visibility") = "hidden" ;
  1364. }
  1365. model.refresh();
  1366. }
  1367. //
  1368. function fSettingGoodData(pTarget, pSource, pUserqtynm, pRequnit, pCls) {
  1369. var vReqDept = model.getValue(cmb_reqdeptcd.attribute("ref" )); // 청구부서
  1370. var vReqprid = model.getValue(cmb_reqpridflag.attribute("ref")); // 청구주기
  1371. vReqAuth = fPurcAuthInfoRow(vReqDept,vReqprid, model.getValue(pSource + "reqflag")); // 권한 Check
  1372. model.setValue(pTarget + "goodcd" , model.getValue(pSource + "goodcd" ));
  1373. model.setValue(pTarget + "goodnm" , model.getValue(pSource + "goodnm" ));
  1374. model.setValue(pTarget + "goodspec" , model.getValue(pSource + "goodspec" ));
  1375. model.setValue(pTarget + "reqflag" , model.getValue(pSource + "reqflag" ));
  1376. model.setValue(pTarget + "goodflag" , model.getValue(pSource + "goodflag" ));
  1377. model.setValue(pTarget + "goodmodel" , model.getValue(pSource + "goodmodel" ));
  1378. model.setValue(pTarget + "prodcmpynm" , model.getValue(pSource + "prodcmpynm" ));
  1379. model.setValue(pTarget + "purcunit" , model.getValue(pSource + "purcunit" ));
  1380. model.setValue(pTarget + "purcunit" , model.getValue(pSource + "purcunit" ));
  1381. model.setValue(pTarget + "basevol" , model.getValue(pSource + pUserqtynm ));
  1382. model.setValue(pTarget + "stocqty" , 0 );
  1383. model.setValue(pTarget + "reqqty" , model.getValue(pSource + pUserqtynm ));
  1384. model.setValue(pTarget + "reqauth" , vReqAuth );
  1385. // ---------------------------------------------------------------------------------
  1386. // 청구량 계산
  1387. // ---------------------------------------------------------------------------------
  1388. // model.setValue(pTarget + "basevol" , model.getValue(pSource + "minexch" ));
  1389. // basevol = model.getValue(pTarget + "basevol");
  1390. // stocqty = grd_goodreq.valueMatrix(grd_goodreq.row , grd_goodreq.colRef("stocqty"));
  1391. // reqqty = basevol - stocqty;
  1392. // grd_goodreq.valueMatrix(grd_goodreq.row , grd_goodreq.colRef("reqqty")) =reqqty;
  1393. // ---------------------------------------------------------------------------------
  1394. model.setValue(pTarget + "requnit" , model.getValue(pSource + pRequnit ));
  1395. model.setValue(pTarget + "minexch" , model.getValue(pSource + "minexch" ));
  1396. model.setValue(pTarget + "ddavguseqty" , model.getValue(pSource + "ddavguseqty" ));
  1397. model.setValue(pTarget + "exchqty" , model.getValue(pSource + "exchqty" ));
  1398. //model.setValue(pTarget + "reqmthdflag" , model.getValue(pSource + "reqmthd" ));
  1399. model.setValue(pTarget + "reqmthdflag" , "3" );
  1400. model.setValue(pTarget + "allsizeyn" , model.getValue(pSource + "allsizeyn" ));
  1401. model.setValue(pTarget + "reqcollcdeptcd", model.getValue(pSource + "reqcollcdeptcd"));
  1402. model.setValue(pTarget + "setunit" , model.getValue(pSource + "setunit" ));
  1403. //alert("delivedeptcd=1=>"+pCls+ "-"+model.getValue(pSource + "delivedeptcd"));
  1404. //alert("delivedeptcd=2=>"+pCls+ "-"+model.getValue(pSource + "reqfnldeptcd"));
  1405. if (pCls == "S") {
  1406. model.setValue(pTarget + "delivedeptcd", model.getValue(pSource + "delivedeptcd"));
  1407. }
  1408. else {
  1409. model.setValue(pTarget + "delivedeptcd", model.getValue(pSource + "reqfnldeptcd"));
  1410. }
  1411. model.setValue(pTarget + "rgstqty" , "0" );
  1412. if (vReqAuth == "2") {
  1413. misfSetReadOnlyCol(grd_goodreq, "deptaprvyn", false);
  1414. }else{
  1415. misfSetReadOnlyCol(grd_goodreq, "deptaprvyn", true);
  1416. }
  1417. }
  1418. // --------------------------------------------------
  1419. // 물품찾기 처리하는 함수
  1420. // --------------------------------------------------
  1421. function fGoodListReady(pGoodCd, pGoodName) {
  1422. misfGridInit(grd_goodlist);
  1423. //misfComboComCdList('R0025', cmb_goodflag,"Y"); //물품구분
  1424. fGoodListKeySet(); // 물품검색 기본 KEY SET
  1425. // -------------------------------------------------------------------------------------------
  1426. // sql문에 청구부서별 안전재고를 가져와야한다.
  1427. // 프로그램 call시 변경해야한다. 인자값이 없을경우 해당 user값으로 setting한다.
  1428. // -------------------------------------------------------------------------------------------
  1429. if (model.getValue(PURTARGET_NODE + "/reqdeptcd").length == 0 )
  1430. model.setValue("/root/send/goodlist/reqdeptcd", getUserInfo("dutplcecd"));
  1431. else model.setValue("/root/send/goodlist/reqdeptcd", model.getValue(cmb_reqdeptcd.attribute("ref")));
  1432. // --------------------------------------------------------------------------
  1433. // 영양팀 명칭검색으로 이 window 가 open시 기본값 셋팅한다.
  1434. // --------------------------------------------------------------------------
  1435. if (pGoodCd.length > 0) {
  1436. model.setValue("/root/send/goodlist/goodcd", pGoodCd);
  1437. model.refresh();
  1438. }
  1439. else if (pGoodName.length > 0)
  1440. {
  1441. model.setValue("/root/send/goodlist/goodnm", pGoodName);
  1442. model.refresh();
  1443. }
  1444. }
  1445. // 물품검색 기본 KEY SET
  1446. function fGoodListKeySet() {
  1447. model.setValue("/root/send/goodlist/lrgcd" , "");
  1448. model.setValue("/root/send/goodlist/mdlcd" , "");
  1449. model.setValue("/root/send/goodlist/instcd" , model.getValue(opt_instcd.attribute("ref" )));
  1450. model.setValue("/root/send/goodlist/reqprid" , model.getValue(cmb_reqpridflag.attribute("ref")));
  1451. // model.setValue("/root/send/goodlist/goodflag", model.getValue(opt_goodflag.attribute("ref" )));
  1452. // model.setValue("/root/send/goodlist/reqflag" , model.getValue(cmb_reqflag.attribute("ref" )));
  1453. rszfLMSComboList(model.getValue(cmb_goodflag.attribute("ref")), "", "", "ipt_lrgcd", "", "L","Y");
  1454. ipt_lrgcd.select(0);
  1455. model.setValue("/root/send/goodlist/instcdnm" , model.getValue(opt_instcdnm.attribute("ref")) );
  1456. model.setValue("/root/send/goodlist/reqflagnm" , cmb_reqflag.label );
  1457. model.setValue("/root/send/goodlist/reqpridnm" , cmb_reqpridflag.label);
  1458. }
  1459. // --------------------------------------------------
  1460. // 물품찾기 처리하는 함수
  1461. // --------------------------------------------------
  1462. function fGoodListSearch() {
  1463. misfGridInit(grd_goodlist);
  1464. model.setValue( tmpreqdeptcd.attribute("ref") , model.getValue(cmb_reqdeptcd.attribute("ref")) ); //청구부서 물품조회시 추가하는 부분
  1465. if(model.getValue(opt_instcd.attribute("ref")).length == 0 )return;
  1466. if (model.getValue(cmb_reqflag.attribute("ref")) == ""){
  1467. messageBox("청구구분을 선택하십시요!!", "");
  1468. return;
  1469. }
  1470. //
  1471. if (model.getValue("/root/send/goodnm") != "") {
  1472. model.setValue("/root/send/indexnm","");
  1473. }
  1474. model.setValue("/root/send/goodlist/reqprid" , "");
  1475. model.setValue("/root/send/goodlist/instcd" , model.getValue(opt_instcd.attribute("ref")));
  1476. // model.setValue("/root/send/goodlist/reqprid" , model.getValue(cmb_reqpridflag.attribute("ref")));
  1477. model.setValue("/root/send/goodlist/reqflag" , model.getValue(cmb_reqflag.attribute("ref")));
  1478. //작업구분에 따라서 일반청구인지 처방집계인지 구분
  1479. //청구와 반납일경우는 일반청구 즉 reqcheck Y
  1480. //상비품청구 와 상비품반납일 경우는 처방집계 즉 reqcheck null
  1481. model.setValue("/root/send/goodlist/workflag" , "N");
  1482. if (model.getValue(cmb_workflag.attribute("ref")) ==1 || model.getValue(cmb_workflag.attribute("ref")) ==2 || model.getValue(cmb_workflag.attribute("ref")) ==6 ) {
  1483. model.setValue("/root/send/goodlist/reqcheck" , "Y"); //청구화면임을 서버에 알리는 Key 값 ( -- 1:일반청구 / 2:일반청구반납 / 6:처방청구(작업구분이 처방 청구라도 행 추가 시 작업 구분을 "1" 일반청구로 지정 )
  1484. } else if (model.getValue(cmb_workflag.attribute("ref")) ==3 || model.getValue(cmb_workflag.attribute("ref")) ==4 || model.getValue(cmb_workflag.attribute("ref")) ==5) {
  1485. model.setValue("/root/send/goodlist/reqcheck" , ""); //청구화면임을 서버에 알리는 Key 값
  1486. model.setValue("/root/send/goodlist/workflag" , "A");
  1487. } else {
  1488. model.setValue("/root/send/goodlist/reqcheck" , "Y"); //청구화면임을 서버에 알리는 Key 값
  1489. }
  1490. submit("TRRSD00406");
  1491. model.setValue("/root/send/goodlist/reqflag", "");
  1492. grd_goodlist.refresh();
  1493. }
  1494. // --------------------------------------------------
  1495. // 물품찾기 처리하는 함수
  1496. // --------------------------------------------------
  1497. function fReqFlagCheck() {
  1498. //청구권/승인권 부서 조회.
  1499. rszfReqDeptGetComboList("cmb_reqdeptcd", model.getValue(opt_instcd.attribute("ref")), getUserInfo("userid"), cmb_reqflag.value);
  1500. //rszfReqDeptGetComboList("cmb_reqdeptcd", model.getValue(opt_instcd.attribute("ref")), '80030647', 'S');
  1501. //청구부서의 순서가 0번째인것을 선택하는데 여기서 부서와 비교해서 cmb_reqdeptcd.select()를
  1502. //해당부서와 동일하게 해서 보여지도록 한다
  1503. model.setValue(cmb_reqpridflag.attribute("ref"), "");
  1504. rszfComboReqPridList(cmb_reqpridflag,model.getValue(opt_instcd.attribute("ref")),model.getValue(cmb_reqflag.attribute("ref")));
  1505. cmb_reqpridflag.refresh();
  1506. cmb_reqpridflag.select(0);
  1507. // ----------------------------------------------------------------------------------------------------
  1508. // 위의 select(0); 에서 cmb_reqpridflag value가 있으면 reqpridflag xforms-value_changed 가 발생한다.
  1509. // ----------------------------------------------------------------------------------------------------
  1510. model.setValue(opt_goodflag.attribute("ref"), rszfGetGoodFlagByReqFlag(model.getValue(opt_instcd.attribute("ref")),model.getValue(cmb_reqflag.attribute("ref"))));
  1511. fGoodListKeySet(); // 물품검색 기본 KEY SET
  1512. if (model.getValue(cmb_reqpridflag.attribute("ref")).length == 0 ) {
  1513. fSetReqAuth();
  1514. btn_search.dispatch("DOMActivate");
  1515. }
  1516. //청구 마지막 일자 조회.
  1517. fLastDaySearch();
  1518. //청구일자 기한체크.
  1519. if (fLastDayCheck()) {
  1520. messageBox("불출부서의 청구일자기한을 벗어났습니다. \n 다시 입력 하세요.", "");
  1521. model.setValue(ipt_reqdd.attribute("ref"), model.getValue(ipt_todd.attribute("ref")) );
  1522. return;
  1523. }
  1524. }
  1525. // --------------------------------------------------
  1526. // 청구부서 Set
  1527. // --------------------------------------------------
  1528. function fReqdeptCopy(){
  1529. var cPath = "/root/init/CopyData"
  1530. var sPath = "/root/main/list/ReqpsnLists/reqpsnlist";
  1531. var tPath = "/root/init/ReqDeptLists/reqdeptlist";
  1532. var iDataCnt = getNodesetCount(sPath);
  1533. if (iDataCnt < 1) {
  1534. return;
  1535. }
  1536. model.removeNodeset(tPath);
  1537. var iDataCnt = getNodesetCount(sPath);
  1538. var Idx = 1;
  1539. // -----------------------------------------------------------------------------------------------
  1540. // 청구부서를 세션의 부서와 비교해서 cmb_reqdeptcd.select()를
  1541. // 해당부서와 동일하게 해서 보여지도록 한다. 부서가 없을 경우 0번째 부서가 콤보에 보여짐
  1542. // 사용자의 세션부서가 청구부서의 젤 상단에 위치하도록 노드셋 데이터 수정 하는 부분
  1543. // -----------------------------------------------------------------------------------------------
  1544. if (model.getValue(sPath+"[reqdeptcd='"+ getUserInfo("dutplcecd") + "']" +"/reqdeptnm") !="") {
  1545. model.setValue(cPath+"/value",model.getValue(sPath+"[reqdeptcd='"+ getUserInfo("dutplcecd") + "']" +"/reqdeptcd"));
  1546. model.setValue(cPath+"/label",model.getValue(sPath+"[reqdeptcd='"+ getUserInfo("dutplcecd") + "']" +"/reqdeptnm"));
  1547. model.makeNode(tPath+"["+ Idx +"]" );
  1548. model.copyNode(tPath+"["+ Idx +"]", cPath);
  1549. Idx++;
  1550. }
  1551. // 청구부서 Set
  1552. for (var k = 1; k <= iDataCnt; k++){
  1553. vReqDept = model.getValue(sPath+"["+k+"]/reqdeptcd");
  1554. vReqDeptNm = model.getValue(sPath+"["+k+"]/reqdeptnm");
  1555. if ((vReqDeptNm != "" ) &&
  1556. (model.getValue(tPath+"[value='"+ vReqDept + "']" +"/value") == "") ) {
  1557. model.setValue(cPath+"/value",vReqDept );
  1558. model.setValue(cPath+"/label",vReqDeptNm);
  1559. model.makeNode(tPath+"["+ Idx +"]" );
  1560. model.copyNode(tPath+"["+ Idx +"]", cPath);
  1561. Idx++;
  1562. } //end if
  1563. } //end for
  1564. cmb_reqdeptcd.refresh();
  1565. cmb_reqdeptcd.select(0);
  1566. fReqpridCopy(); // 청구 주기Set
  1567. // fDeptReqNoQuery(); // 청구부서별 청구번호를 조회한다 fReqpridCopy 안에서 실행 제외 시킴 [20090129 YYJ]
  1568. }
  1569. // --------------------------------------------------
  1570. // 청구 주기Set
  1571. // --------------------------------------------------
  1572. function fReqpridCopy(){
  1573. var cPath = "/root/init/CopyData"
  1574. var sPath = "/root/main/list/ReqpsnLists/reqpsnlist";
  1575. var tPath = "/root/init/ReqpridLists/reqpridlist";
  1576. if (model.getValue(cmb_reqdeptcd.attribute("ref")).length== 0 ) {
  1577. messageBox("청구부서를 " ,"C002");
  1578. model.setFocus("cmb_reqdeptcd");
  1579. return;
  1580. }
  1581. var iDataCnt = getNodesetCount(sPath);
  1582. if (iDataCnt < 1) {
  1583. return;
  1584. }
  1585. model.removeNodeset(tPath);
  1586. var Idx = 1;
  1587. var iDataCnt = getNodesetCount(sPath);
  1588. var tReqDept = model.getValue(cmb_reqdeptcd.attribute("ref"));
  1589. for (var k = 1; k <= iDataCnt; k++){
  1590. vReqDept = model.getValue(sPath+"["+k+"]/reqdeptcd");
  1591. if (vReqDept == tReqDept) {
  1592. vReqPrid = model.getValue(sPath+"["+k+"]/reqprid");
  1593. vReqPridNm = model.getValue(sPath+"["+k+"]/reqpridnm");
  1594. if ((vReqPridNm != "" ) &&
  1595. (model.getValue(tPath+"[value='"+ vReqPrid + "']" +"/value") == "") ) {
  1596. model.setValue(cPath+"/value",vReqPrid );
  1597. model.setValue(cPath+"/label",vReqPridNm);
  1598. model.makeNode(tPath+"["+ Idx +"]" );
  1599. model.copyNode(tPath+"["+ Idx +"]", cPath);
  1600. Idx++;
  1601. }
  1602. }
  1603. }
  1604. //
  1605. if (model.getValue("/root/send/goodlist/purcdeptflag") == "P") { //구매부서구분 : P
  1606. var codynode = instance1.selectNodes(tPath + "/*");
  1607. if (codynode.length < 1) {
  1608. model.setValue(cPath+"/value","1" );
  1609. model.setValue(cPath+"/label","일");
  1610. model.makeNode(tPath+"[1]" );
  1611. model.copyNode(tPath+"[1]" , cPath);
  1612. model.setValue(cPath+"/value","4" );
  1613. model.setValue(cPath+"/label","월");
  1614. model.makeNode(tPath+"[2]" );
  1615. model.copyNode(tPath+"[2]" , cPath);
  1616. model.setValue(cPath+"/value","2" );
  1617. model.setValue(cPath+"/label","주");
  1618. model.makeNode(tPath+"[3]" );
  1619. model.copyNode(tPath+"[3]" , cPath);
  1620. }
  1621. }
  1622. //
  1623. cmb_reqpridflag.select(0);
  1624. cmb_reqpridflag.refresh();
  1625. }
  1626. // 청구승인자 Check
  1627. function fPurcAuthInfo() {
  1628. vPurcAuth = "1";
  1629. model.setValue(ckb_accept.attribute("ref"), "");
  1630. var sPath = "/root/main/list/ReqpsnLists/reqpsnlist";
  1631. var iDataCnt = getNodesetCount(sPath);
  1632. if (iDataCnt < 1) {
  1633. return;
  1634. }
  1635. model.removeNodeset(tPath);
  1636. var iDataCnt = getNodesetCount(sPath);
  1637. var tReqDept = model.getValue(cmb_reqdeptcd.attribute("ref" )); // 청구부서
  1638. var tReqprid = model.getValue(cmb_reqpridflag.attribute("ref")); // 청구주기
  1639. for (var k = 1; k <= iDataCnt; k++){
  1640. vReqDept = model.getValue(sPath+"["+k+"]/reqdeptcd"); // 청구부서
  1641. vReqprid = model.getValue(sPath+"["+k+"]/reqprid" ); // 청구주기
  1642. if ((vReqDept == tReqDept) &&
  1643. (vReqprid == tReqprid) ) {
  1644. if (model.getValue(sPath+"["+k+"]/reqaprvflag") == "2") {
  1645. vPurcAuth = "2";
  1646. model.setValue(ckb_accept.attribute("ref"), "Y");
  1647. break;
  1648. }
  1649. }
  1650. }
  1651. }
  1652. // 청구승인자 Check Row별 Check
  1653. function fPurcAuthInfoRow(pReqDept,pReqprid,pReqFlag) {
  1654. var sPath = "/root/main/list/ReqpsnLists/reqpsnlist";
  1655. var vReqAuth = model.getValue(sPath+ "[reqdeptcd='"+ pReqDept
  1656. + "' and reqprid='" + pReqprid
  1657. + "' and reqflag='" + pReqFlag + "']/reqaprvflag"); // 청구권한
  1658. vReqAuth = (vReqAuth == "") ? "1" : vReqAuth;
  1659. return vReqAuth;
  1660. }
  1661. // 청구부서별 청구번호를 조회한다
  1662. function fDeptReqNoQuery() {
  1663. if (gReqNoReadFlag) return; //청구번호 읽기
  1664. // alert(++gcount);
  1665. if (model.getValue(cmb_reqdeptcd.attribute("ref")) != "" && // 청구부서
  1666. model.getValue(cmb_reqpridflag.attribute("ref")) != "" && // 청구주기
  1667. model.getValue(ipt_reqdd.attribute("ref")) != "" && // 청구일자
  1668. model.getValue(cmb_workflag.attribute("ref")) != "" ) // 작업구분 의 값이 모두 있을 때 청구 번호를 가져온다. [20080129 YYJ]
  1669. {
  1670. submit("TRRSD00408");
  1671. if (getNodesetCount("/root/main/DeptReqnoLists/reqnolist") < 1 ){
  1672. //model.setValue(chk_reqnonew.attribute("ref"), "Y");
  1673. fNewReqNoVisibility();
  1674. } else {
  1675. //model.setValue(chk_reqnonew.attribute("ref"), "");
  1676. fNewReqNoVisibility();
  1677. cmb_reqno.refresh();
  1678. cmb_reqno.select(0);
  1679. }
  1680. }
  1681. }
  1682. // 청구 구분 Check
  1683. function fReqFlagCheck(){
  1684. if(model.getValue(cmb_reqflag.attribute("ref")) == 'H'){
  1685. grd_goodreq.colHidden(grd_goodreq.colRef("rgstqty")) = false;
  1686. }else{
  1687. grd_goodreq.colHidden(grd_goodreq.colRef("rgstqty")) = true;
  1688. }
  1689. /* 위의 select(0); 에서 cmb_reqpridflag value가 있으면 reqpridflag xforms-value_changed 가 발생한다.
  1690. */
  1691. // opt_goodflag.value = rszfGetGoodFlagByReqFlag(opt_instcd.value,cmb_reqflag.value);
  1692. fGoodListKeySet(); // 물품검색 기본 KEY SET
  1693. if (model.getValue(cmb_reqpridflag.attribute("ref")).length == 0 ) {
  1694. fSetReqAuth();
  1695. btn_search.dispatch("DOMActivate");
  1696. }
  1697. //청구 마지막 일자 조회.
  1698. fLastDaySearch();
  1699. //청구일자 기한체크.
  1700. if(fLastDayCheck())
  1701. {
  1702. messageBox("불출부서의 청구일자기한을 벗어났습니다. \n 다시 입력 하세요.", "");
  1703. model.setValue(ipt_reqdd.attribute("ref"), model.getValue(ipt_todd.attribute("ref")) );
  1704. return;
  1705. }
  1706. }
  1707. // 청구 구분 Check
  1708. function fReqFlagCheck_bak(){
  1709. if(model.getValue(cmb_reqflag.attribute("ref")) == 'H'){
  1710. grd_goodreq.colHidden(grd_goodreq.colRef("rgstqty")) = false;
  1711. }else{
  1712. grd_goodreq.colHidden(grd_goodreq.colRef("rgstqty")) = true;
  1713. }
  1714. //청구부서 청구권/승인권 부서 조회.
  1715. rszfReqDeptGetComboList("cmb_reqdeptcd", model.getValue(opt_instcd.attribute("ref")), getUserInfo("userid"), model.getValue(cmb_reqflag.attribute("ref")));
  1716. model.setValue(cmb_reqpridflag.attribute("ref"), "");
  1717. rszfComboReqPridList(cmb_reqpridflag,model.getValue(opt_instcd.attribute("ref")),model.getValue(cmb_reqflag.attribute("ref")));
  1718. cmb_reqpridflag.refresh();
  1719. cmb_reqpridflag.select(0);
  1720. /* 위의 select(0); 에서 cmb_reqpridflag value가 있으면 reqpridflag xforms-value_changed 가 발생한다.
  1721. */
  1722. model.setValue(opt_goodflag.attribute("ref") , rszfGetGoodFlagByReqFlag(model.getValue(opt_instcd.attribute("ref")),model.getValue(cmb_reqflag.attribute("ref"))) );
  1723. fGoodListKeySet(); // 물품검색 기본 KEY SET
  1724. if (model.getValue(cmb_reqpridflag.attribute("ref")).length == 0 )
  1725. {
  1726. fSetReqAuth();
  1727. //btn_search.dispatch("DOMActivate");
  1728. }
  1729. //청구 마지막 일자 조회.
  1730. fLastDaySearch();
  1731. //청구일자 기한체크.
  1732. if(fLastDayCheck())
  1733. {
  1734. messageBox("불출부서의 청구일자기한을 벗어났습니다. \n 다시 입력 하세요.", "");
  1735. model.setValue(ipt_reqdd.attribute("ref"), model.getValue(ipt_todd.attribute("ref")) );
  1736. return;
  1737. }
  1738. }
  1739. // 청구구분
  1740. var tReqFlagData = "A." // 01 Y 의료소모품
  1741. + "B." // 02 Z 일반소모품
  1742. + "C." // 03 K 의료비품
  1743. + "D." // 04 G 일반비품
  1744. + "E." // 05 P 약품및재료
  1745. + "F." // 06 P 제제약품
  1746. + "G." // 07 E 장비
  1747. + "H." // 08 P 수액
  1748. + "I." // 09 P 조영제
  1749. + "S." // 10 B 수리관리
  1750. + "X." // 11 T 교환물품
  1751. + "Y." // 12 T 청구물품
  1752. + "Z" ; // 13 T 멸균의뢰
  1753. var tReqFlag = tReqFlagData.split(".");
  1754. // 물품구분
  1755. var tGoodFlagData = "Y." // 01 의료소모품
  1756. + "Z." // 02 일반소모품
  1757. + "U." // 03 의료비품
  1758. + "G." // 04 일반비품
  1759. + "P." // 05 약품
  1760. + "P." // 06 약품
  1761. + "P." // 07 약품및재료
  1762. + "P." // 08 약품
  1763. + "P." // 09 약품
  1764. + "B." // 10 수리부품
  1765. + "T." // 11 공급실물품
  1766. + "T." // 12 공급실물품
  1767. + "T" ; // 13 공급실물품
  1768. var tGoodFlag = tGoodFlagData.split(".");
  1769. var tPath = "/root/init/cmb_goodflag";
  1770. var sPath = "/root/init/cmb_goodflagcopy";
  1771. //
  1772. function fReqFagChange(pReqFlag) {
  1773. for (i = 0; i < tReqFlag.length; i++) {
  1774. if (tReqFlag[i] == pReqFlag) {
  1775. model.setValue(cmb_goodflag.attribute("ref"), tGoodFlag[i] );
  1776. // alert(tGoodFlag[i]);
  1777. cmb_goodflag.refresh();
  1778. break;
  1779. }
  1780. }
  1781. // cmb_goodflag.select(0); //청구구분
  1782. }
  1783. //부서찾기 기능 설정
  1784. function fSetTempDept() { //부서찾기 기능 설정(구매팀일경우에만)
  1785. // var nowdeptcd = rszfGetPurcDeptCd( getUserInfo("dutplceinstcd") );
  1786. if ( gPurcDeptcd == getUserInfo("dutplcecd") ){
  1787. cpt_dept.attribute("visibility") = "visible";
  1788. ipt_tempdeptcd.attribute("visibility") = "visible";
  1789. ipt_tempdeptnm.attribute("visibility") = "visible";
  1790. btn_tempdeptcd.attribute("visibility") = "visible";
  1791. model.setValue("/root/send/goodlist/purcdeptflag" , "P"); //구매부서구분 : P
  1792. }else {
  1793. cpt_dept.attribute("visibility") = "hidden";
  1794. ipt_tempdeptcd.attribute("visibility") = "hidden";
  1795. ipt_tempdeptnm.attribute("visibility") = "hidden";
  1796. btn_tempdeptcd.attribute("visibility") = "hidden"
  1797. model.setValue("/root/send/goodlist/purcdeptflag" , "X"); //구매부서구분 : P
  1798. }
  1799. }
  1800. //조회해온 부서를 청구부서 콤보에 붙이는 함수
  1801. function fAddReqDeptcdCombo() {
  1802. //tempdeptcd에 값을 reqdetpcd(청구부서) 콤보에 값을 부어준다 (makevaluie)
  1803. var cPath = "/root/init/CopyData" //임시카피노드
  1804. var sPath = "/root/tempdept"; //서버에서가져온부서정보노드
  1805. var tPath = "/root/init/ReqDeptLists/reqdeptlist"; //청구부서 콤보노드
  1806. var iDataCnt = getNodesetCount(sPath); //서버에서 가져온 부서정보노드(무조건 1 아님 0)
  1807. if ( iDataCnt < 1)
  1808. {
  1809. return;
  1810. }
  1811. //model.removeNodeset(tPath);
  1812. var ComboDataCnt = parseInt( getNodesetCount(tPath) ) +1 ; //콤보에 노드길이(숫자형으로형변환)
  1813. var vTempDeptCd = model.getValue(sPath+"[1]/tempdeptcd");
  1814. var vTempDeptNm = model.getValue(sPath+"[1]/tempdeptnm");
  1815. if ( vTempDeptCd != "" )
  1816. {
  1817. model.setValue(cPath+"/value" , vTempDeptCd );
  1818. model.setValue(cPath+"/label" , vTempDeptNm );
  1819. model.makeNode(tPath+"["+ComboDataCnt +"]" );
  1820. model.copyNode(tPath + "[" +ComboDataCnt +"]", cPath); //노드에 데이터 부어줌
  1821. cmb_reqdeptcd.refresh();
  1822. cmb_reqdeptcd.select(ComboDataCnt-1);
  1823. }
  1824. cmb_reqdeptcd.refresh();
  1825. }
  1826. function fSapReqSetting (fValue) {
  1827. var vPath = "/root/init/workflag/workflaglist";
  1828. var iDataCnt = parseInt( getNodesetCount(vPath) ); // 작업 구분 하위를 가져옴
  1829. var updtdata = getGridUpdateData(grd_goodreq);
  1830. if ( updtdata != "") {
  1831. var ret = messageBox("그리드에 작업 중인 내용이 있습니다. 수액청구를 변경","Q003");
  1832. if (ret != 6) {
  1833. if( fValue == "Y" )
  1834. ckb_sapreq.value = "N";
  1835. else
  1836. ckb_sapreq.value = "Y";
  1837. ckb_sapreq.refresh();
  1838. return;
  1839. } else {
  1840. misfGridInit(grd_goodreq);
  1841. fSapReqSetting (fValue);
  1842. if (cmb_reqno.value != "")
  1843. btn_search.dispatch("DOMActivate");
  1844. } // if not OK
  1845. }else{
  1846. if( fValue == "Y" || model.getXPathValue(vPath+"[value='6']/value") =="" ) {
  1847. cmb_workflag.disabled="true" ;
  1848. model.makeValue(vPath+"[" +(iDataCnt+1)+ "]/value", "6" ); // 작업구분 처방 청구 추가
  1849. model.makeValue(vPath+"[" +(iDataCnt+1)+ "]/label", "처방청구"); // 작업구분 처방 청구 추가
  1850. model.setValue("/root/send/goodreq/reqflag" , "H" ); // 청구방법 수액
  1851. cmb_workflag.refresh();
  1852. cmb_workflag.select(iDataCnt);
  1853. } else if (fValue != "Y" || model.getXPathValue(vPath+"[value='6']/value") !="") {
  1854. cmb_workflag.disabled="false" ;
  1855. model.removeNodeset(vPath+"["+ model.getXPathValue(vPath+"[value='6']/value") +"]");
  1856. model.setValue("/root/send/goodreq/reqflag","");
  1857. cmb_workflag.select(0);
  1858. }
  1859. } // if updtdata
  1860. }
  1861. // --------------------------------------------------
  1862. // 조회버튼 Click 처리
  1863. // --------------------------------------------------
  1864. function fSearchButtonClick(fValue) {
  1865. if(fCheckRetrieveData(false) == false)return;
  1866. misfGridInit(grd_goodreq);
  1867. //if(model.getValue(cmb_reqno.attribute("ref")).length == 0)
  1868. // model.setValue(ipt_reqdd.attribute("ref") , getCurrentDate());
  1869. // 조회시 신규 선택 여부에 따라 청구일자 선택
  1870. if (model.getValue(chk_reqnonew.attribute("ref")) == "Y"){
  1871. model.setValue(ipt_reqdd.attribute("ref"), model.getValue(ipt_reqddnew.attribute("ref")));
  1872. }
  1873. // model.setValue("/root/send/goodreq/retrmaxreqnoyn","Y");
  1874. //if (model.getValue(cmb_reqno.attribute("ref")) == "") return;
  1875. misfMsterDetailRetrieve();
  1876. // 권한여부에 따른 승인체크 설정.
  1877. fGrantsCheck();
  1878. fAfterRetr();
  1879. var vAcctCnt = 0;
  1880. var vReqAuth = "";
  1881. var vReqDept = model.getValue(cmb_reqdeptcd.attribute("ref" )); // 청구부서
  1882. var vReqprid = model.getValue(cmb_reqpridflag.attribute("ref")); // 청구주기
  1883. //
  1884. for (var fRow = grd_goodreq.fixedRows; fRow < grd_goodreq.rows ; fRow++ ) {
  1885. vReqFlag = model.getValue(grd_goodreq.nodeset + "[" + fRow + "]/reqflag") ;
  1886. vReqAuth = fPurcAuthInfoRow(vReqDept,vReqprid,vReqFlag); // 권한 Check
  1887. model.setValue(grd_goodreq.nodeset + "[" + fRow + "]/reqauth", vReqAuth) ;
  1888. // grd_goodreq.valueMatrix(fRow, grd_goodreq.colRef("reqauth")) = vReqAuth;
  1889. if (model.getValue(grd_goodreq.nodeset + "[" + fRow + "]/allsizeyn") =="Y") {
  1890. grd_goodreq.cellstyle("background-color" , fRow, 9) = "#FFFF00";
  1891. }
  1892. //
  1893. // alert(grd_goodreq.valueMatrix(fRow, grd_goodreq.colRef("acptflag"))+"<<=======>>"+vReqAuth);
  1894. if (grd_goodreq.valueMatrix(fRow, grd_goodreq.colRef("acptflag")) == "Y" ||
  1895. grd_goodreq.valueMatrix(fRow, grd_goodreq.colRef("acptflag")) == "R" ) {
  1896. grd_goodreq.isReadOnly(fRow, grd_goodreq.fixedCols-1, fRow, grd_goodreq.cols-1) = true;
  1897. } else {
  1898. if (vReqAuth =="2") {
  1899. grd_goodreq.isReadOnly( fRow , grd_goodreq.colRef("deptaprvyn"), fRow , grd_goodreq.colRef("deptaprvyn")) = false; // ReadOnly false
  1900. } else {
  1901. vAcctCnt++;
  1902. if (gPurcDeptcd != getUserInfo("dutplcecd") ){
  1903. grd_goodreq.isReadOnly( fRow , grd_goodreq.colRef("deptaprvyn"), fRow , grd_goodreq.colRef("deptaprvyn")) = true; // ReadOnly
  1904. }
  1905. }
  1906. }
  1907. }
  1908. //
  1909. if (vAcctCnt > 0) {
  1910. if (gPurcDeptcd != getUserInfo("dutplcecd") ){
  1911. ckb_accept.attribute("visibility") = "hidden";
  1912. }
  1913. model.setValue(ckb_accept.attribute("ref"), "N");
  1914. } else {
  1915. ckb_accept.attribute("visibility") = "visible";
  1916. }
  1917. //
  1918. if (model.getValue(ckb_sapreq.attribute("ref")) == "Y")
  1919. grd_goodreq.colHidden(grd_goodreq.colRef("rgstqty") ) = false;
  1920. else
  1921. grd_goodreq.colHidden(grd_goodreq.colRef("rgstqty") ) = true;
  1922. model.refresh();
  1923. }
  1924. // ----------------------------------
  1925. // Data를 저장한다.
  1926. // ----------------------------------
  1927. function fSaveData() {
  1928. //if (model.getValue(sel_goodflag.attribute("ref")) != "PH") {
  1929. // fConfirmSaveData(); // Data를 저장한다. //// 저장하는 부분
  1930. // return;
  1931. //}
  1932. //
  1933. var curdate = getCurrentDate();
  1934. var cvtdate = model.getValue("/root/send/save/autoaprv/reqdd");
  1935. if (curdate != cvtdate){
  1936. messageBox("금일 이외의 청구일자는 지정", "E001");
  1937. model.setValue("/root/send/goodreq/reqdd" , curdate);
  1938. model.setValue("/root/send/save/autoaprv/reqdd", curdate);
  1939. model.refresh();
  1940. return;
  1941. }
  1942. /// 마감 시간과 마감때 뿌려줄 Data를 가져다 놓음
  1943. model.resetInstanceNode("/root/main/messagelists/messagelist");
  1944. model.setValue("/root/send/message/instcd" , model.getValue(opt_instcd.attribute("ref")));
  1945. model.setValue("/root/send/message/goodflag", "PH");
  1946. submit("TRRSD00433");
  1947. var hDesc = "";
  1948. var HMagamTime = "";
  1949. /// 수액시간을 가져다 놓음
  1950. for (var fRow = grd_message.fixedRows; fRow < grd_message.rows; fRow++){
  1951. if (model.getValue(grd_message.nodeset +"["+ fRow +"]/reqflag") == "H" ) { //수액이 존재하면 수액마감시간을 가져다 놓는다
  1952. hDesc = model.getValue(grd_message.nodeset +"["+ fRow +"]/closdesc") +"\n" ;
  1953. HMagamTime = model.getValue(grd_message.nodeset +"["+ fRow +"]/clostm" );
  1954. break;
  1955. }
  1956. }
  1957. var vReqFlag = "";
  1958. var ReqflagE = 0 ; // 05 P 약품및재료
  1959. var ReqflagF = 0 ; // 06 P 제제약품
  1960. var ReqflagI = 0 ; // 09 P 조영제
  1961. var ReqflagH = 0 ; // 10 P 수액
  1962. if (model.getValue(chk_reqnonew.attribute("ref")) == "Y") { //
  1963. vReqdd = model.getValue(ipt_reqddnew.attribute("ref"));
  1964. } else {
  1965. vReqdd = model.getValue(ipt_reqdd.attribute("ref"));
  1966. }
  1967. //
  1968. for (var fRow = grd_goodreq.fixedRows; fRow < grd_goodreq.rows; fRow++){
  1969. vReqFlag = model.getValue(grd_goodreq.nodeset + "[" + fRow + "]/reqflag");
  1970. if (vReqFlag == "H"){ //수액인경우
  1971. // 만약에 수액 같은 경우에 blocking을 원하면
  1972. // 1) 현재시간을 체크 2) DB의 마감시간 체크 3) 1과2번을 비교하여 시간을 넘어가면 무조건 저장안되게 막음
  1973. if (getCurrentTime() > HMagamTime && vReqdd == getCurrentDate() && grd_goodreq.rowStatus(fRow) != "0" ){ //현재시간이 마감시간보다 크다면 무조건 Blocking
  1974. messageBox(hDesc, "I");
  1975. return;
  1976. }
  1977. ReqflagH = 1 ; // 09 P 수액
  1978. } else {
  1979. ReqflagE = (vReqFlag == "E") ? 1 : ReqflagE; // 05 P 약품및재료
  1980. ReqflagF = (vReqFlag == "F") ? 2 : ReqflagF; // 06 P 제제약품
  1981. ReqflagI = (vReqFlag == "I") ? 4 : ReqflagI; // 09 P 조영제
  1982. //if ((ReqflagE+ReqflagF+ReqflagI) == 7) break;
  1983. }
  1984. }
  1985. lastDesc = (ReqflagH == 1) ? model.getValue(grd_message.nodeset +"[reqflag='H']/closdesc") + "\n" : "";
  1986. lastDesc += (ReqflagE == 1) ? model.getValue(grd_message.nodeset +"[reqflag='E']/closdesc") + "\n" : "";
  1987. lastDesc += (ReqflagF == 2) ? model.getValue(grd_message.nodeset +"[reqflag='F']/closdesc") + "\n" : "";
  1988. lastDesc += (ReqflagI == 4) ? model.getValue(grd_message.nodeset +"[reqflag='I']/closdesc") + "\n" : "";
  1989. if (lastDesc !="") messageBox(lastDesc,"I");
  1990. //
  1991. fConfirmSaveData(); // Data를 저장한다. //// 저장하는 부분
  1992. }
  1993. //
  1994. // Data를 저장한다.
  1995. function fConfirmSaveData() {
  1996. // 저장전 Data를 Check한다.
  1997. if (fCheckSaveData() == false) return;
  1998. model.setValue("/root/send/save/autoaprv/instcd" ,model.getValue(opt_instcd.attribute("ref") )); // 기관코드
  1999. model.setValue("/root/send/save/autoaprv/reqdeptcd",model.getValue(cmb_reqdeptcd.attribute("ref"))); // 청구부서
  2000. var vReqdd = ""; // 청구일자
  2001. if (model.getValue(chk_reqnonew.attribute("ref")) == "Y") { //
  2002. vReqdd = model.getValue(ipt_reqddnew.attribute("ref"));
  2003. } else {
  2004. vReqdd = model.getValue(ipt_reqdd.attribute("ref"));
  2005. }
  2006. model.setValue("/root/send/save/autoaprv/reqdd", vReqdd); // 청구일자
  2007. // 청구 가능 시간을 CHECK한다.
  2008. // if (fCheckLimitTime(vReqdd) == false) return;
  2009. // 동시 승인여부
  2010. model.setValue("/root/send/save/goodreqlist", grd_goodreq.getUpdateData());
  2011. // 일청구는 자동 승인한다.
  2012. if (model.getValue(cmb_reqpridflag.attribute("ref"))=="1") {
  2013. model.setValue("/root/send/save/autoaprv/autoaprvyn","Y");
  2014. } else {
  2015. // ===============================================
  2016. // 구매팀의 경우는 동시 승인 가능하게 처리합니다.
  2017. // ===============================================
  2018. if (gPurcDeptcd == getUserInfo("dutplcecd") ){
  2019. if (model.getValue(ckb_accept.attribute("ref")) == "Y") {
  2020. var ret = messageBox("구매팀인 경우만 권한 상관없이 동시승인 가능합니다!! ","Q003");
  2021. if (ret == 6) {
  2022. model.setValue("/root/send/save/autoaprv/autoaprvyn", "Y");
  2023. } else {
  2024. model.setValue("/root/send/save/autoaprv/autoaprvyn", "N");
  2025. } // end if
  2026. } else {
  2027. model.setValue("/root/send/save/autoaprv/autoaprvyn", "N");
  2028. } // end if
  2029. } else {
  2030. model.setValue("/root/send/save/autoaprv/autoaprvyn","N");
  2031. } // end if
  2032. } // end if
  2033. alert("test111");
  2034. alert(model.getValue("/root/send/save"));
  2035. alert(instance1.selectNodesXml("/root/send/save"));
  2036. submit("TXRSD00411");
  2037. alert("test222");
  2038. if (model.getValue(gvErrorMsgPath + "/type") == "error") return;
  2039. if (model.getValue(chk_reqnonew.attribute("ref")) == "Y") {
  2040. if (model.getValue(ipt_reqdd.attribute("ref")) == model.getValue(ipt_reqddnew.attribute("ref"))) {
  2041. fDeptReqNoQuery();
  2042. } else {
  2043. model.setValue(ipt_reqdd.attribute("ref"), model.getValue(ipt_reqddnew.attribute("ref")));
  2044. ipt_reqdd.refresh();
  2045. }
  2046. //-----------------------------------------------------------
  2047. //chk_reqnonew.value = "N";
  2048. //-----------------------------------------------------------
  2049. fNewReqNoVisibility();
  2050. btn_search.dispatch("DOMActivate");
  2051. } else {
  2052. btn_search.dispatch("DOMActivate");
  2053. if (grd_goodreq.rows < 2) {
  2054. fDeptReqNoQuery(); // 청구부서별 청구번호를 조회한다
  2055. fNewReqNoVisibility();
  2056. }
  2057. }
  2058. }
  2059. /* ------------------------------------------------- */
  2060. /* ------End Of List ------------------------------- */
  2061. /* -------------------------------------------------- */