SMMNP04300.js 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. /* ---------------------------------------------------------------------
  2. 물품분류체계등록(SMMNP04300.xfm - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. : Create By kim bo sung
  6. : 2007.09.19
  7. ---------------------------------------------------------------------- */
  8. var xPathData = "/root/main/gubnlist" ; //
  9. var xSendReqData = "/root/send/reqdata"; //보내는값
  10. var xSendSaveData = "/root/send/savedata"; //받은 리스트 갯수값
  11. var xCondData = "/root/main/cond"; //조건항목들
  12. var xErrMsg = "/root/properties/error/msg";
  13. // --------------------------------------------------
  14. // 화면 초기화
  15. // --------------------------------------------------
  16. function fInit(){
  17. grd_lrglist.fixedcellcheckbox(0,1) = true; //그리드 헤더에 체크버튼 추가
  18. grd_mdllist.fixedcellcheckbox(0,1) = true; //그리드 헤더에 체크버튼 추가
  19. grd_smllist.fixedcellcheckbox(0,1) = true; //그리드 헤더에 체크버튼 추가
  20. model.removeNodeset("/root/init/mdllists/mdllist");
  21. model.removeNodeset("/root/init/smllists/smllist");
  22. flrgComboCall();//대분류콤보 자료 추출
  23. //fGubnList_Read();//물품분류리스트조회
  24. }
  25. // --------------------------------------------------
  26. // 대분류콤보 자료 추출
  27. // --------------------------------------------------
  28. function flrgComboCall(){
  29. //대분류코드 조회
  30. model.copyNode("/root/send/reqdata", "/root/main/cond");
  31. submit("TRMNP04301");
  32. }
  33. // --------------------------------------------------
  34. // 중분류콤보 자료 추출
  35. // --------------------------------------------------
  36. function fmdlComboCall() {
  37. var lrgcd = model.getValue("/root/init/lrglists/lrglist[" + grd_lrglist.row + "]/lrgcd");//대분류
  38. if(lrgcd == null || lrgcd == ""){
  39. return;
  40. }else{
  41. model.setValue("/root/main/cond/lrgcd", lrgcd);
  42. model.removeNodeset("/root/init/mdllists/mdllist");
  43. model.removenode("/root/send");
  44. model.makeValue("/root/send/reqdata/lrgcd", lrgcd);
  45. submit("TRMNP04302");
  46. }
  47. }
  48. // --------------------------------------------------
  49. // 소분류콤보 자료 추출
  50. // --------------------------------------------------
  51. function fsmlComboCall() {
  52. var mdlcd = model.getValue("/root/init/mdllists/mdllist[" + grd_mdllist.row + "]/mdlcd");//중분류
  53. if( mdlcd == null || mdlcd == "" ){
  54. return;
  55. }else{
  56. model.setValue("/root/main/cond/mdlcd", mdlcd);
  57. model.removeNodeset("/root/init/smllists/smllist");
  58. model.removenode("/root/send");
  59. model.makeValue("/root/send/reqdata/lrgcd", model.getValue("/root/main/cond/lrgcd"));
  60. model.makeValue("/root/send/reqdata/mdlcd", mdlcd);
  61. submit("TRMNP04304");
  62. }
  63. }
  64. // --------------------------------------------------
  65. // 대중소분류구분 찾기
  66. // --------------------------------------------------
  67. function fGetClsflag(){
  68. var clsflag; // 대,중,소 분류 구분 clsflag = 1, 2, 3
  69. var lrgcd = model.getValue('/root/main/cond/lrgcd');//대분류
  70. if(lrgcd == null || lrgcd ==''){
  71. model.setValue('/root/main/cond/mdlcd', '')
  72. model.refresh();
  73. }
  74. var mdlcd = model.getValue('/root/main/cond/mdlcd');//중분류
  75. //아무것도 선택되지 않음 --> 대분류테이블 조회
  76. if((lrgcd == null || lrgcd =='') && (mdlcd == null || mdlcd == '')){
  77. clsflag = '1';
  78. }
  79. //대분류 선택됨 -->중분류테이블 조회
  80. if(lrgcd != null && lrgcd != ''){
  81. clsflag = '2';
  82. }
  83. //중분류 선택됨-> 소분류테이블 조회
  84. if(mdlcd != null && mdlcd != ''){
  85. clsflag = '3';
  86. }
  87. return clsflag;
  88. }
  89. // --------------------------------------------------
  90. // 그리드 조회
  91. // --------------------------------------------------
  92. function fGubnList_Read() {
  93. var clsflag = fGetClsflag();//대,중,소 분류 조회구분
  94. model.setValue('/root/main/cond/clsflag', clsflag);
  95. model.copyNode(xSendReqData, xCondData);//(1:대분류,2:중분류,3:소분류)
  96. if(!submit("TRMNP04304")){
  97. messageBox('물품분류조회를', 'E009');
  98. return false;
  99. }else{
  100. var refMsg = model.getValue(xErrMsg);
  101. var refMsgCnt = refMsg.substring(0, 1);
  102. if( refMsgCnt == "0" ) {
  103. messageBox("조회된 결과가", "I004");
  104. }else{
  105. //대,중,소 테이블조회에 따라 그리드에 대분류명, 소분류명 추가한다.
  106. //전체조회일때는 대분류, 소분류명 hidden
  107. if(clsflag == '1'){
  108. grd_lrglist.colHidden(1) = true;
  109. grd_lrglist.colHidden(2) = true;
  110. }
  111. //대분류명 조회일때는 대분류 display , 소분류 hidden
  112. else if(clsflag == '2'){
  113. grd_lrglist.colHidden(1) = false;
  114. grd_lrglist.colHidden(2) = true;
  115. }
  116. //소분류명 조회일때는 대분류, 소분류 display
  117. else if(clsflag = '3'){
  118. grd_lrglist.colHidden(1) = false;
  119. grd_lrglist.colHidden(2) = false;
  120. }
  121. }
  122. }
  123. }
  124. // --------------------------------------------------
  125. // 행추가시 체크기능
  126. // --------------------------------------------------
  127. function finsertCheck(clsflag) {
  128. switch (clsflag) {
  129. case "1":
  130. break;
  131. case "2"://중분류를 클릭하면 대분류콤보를 재조회한다.
  132. if (cmb_lrglist.value == "") {
  133. messageBox("대분류를 ", "C002");
  134. return false;
  135. }
  136. break;
  137. case "3"://소분류를 클릭하면 중분류콤보를 재조회한다.
  138. if (cmb_lrglist.value == "") {
  139. messageBox("대분류를 ", "C002");
  140. return false;
  141. }
  142. if (cmb_mdllist.value == "") {
  143. messageBox("중분류를 ", "C002");
  144. return false;
  145. }
  146. fmdlComboCall();
  147. break;
  148. }
  149. return true;
  150. }
  151. // --------------------------------------------------
  152. // 저장(신규/수정)
  153. // --------------------------------------------------
  154. function fSave(pGrd){
  155. var iRows = -1;
  156. var clscd, clsflag, lrgcd, mdlcd, clsnm, updtflag, sortseq;
  157. var SendData = "m▦clscd▦clsflag▦lrgcd▦mdlcd▦clsnm▦uedt▦sortseq";
  158. //체크
  159. var clsflag = fGetClsflag(); //대중소 분류코드 가져옴
  160. var sinsertChk = finsertCheck(clsflag); //조회조건 콤보박스 선택여부 체크
  161. if(sinsertChk == false )
  162. return;
  163. iRows = pGrd.rows;
  164. for( var row = 0; row < iRows; row++ ) {
  165. clscd = model.getValue(xPathData + "[" + row + "]/clscd");
  166. clsflag = model.getValue("/root/main/cond/clsflag");
  167. lrgcd = model.getValue("/root/main/cond/lrgcd");
  168. mdlcd = model.getValue("/root/main/cond/mdlcd");
  169. updtflag = model.getValue(xPathData + "[" + row + "]/updtflag");
  170. clsnm = model.getValue(xPathData + "[" + row + "]/clsnm");
  171. uedt = model.getValue(xPathData + "[" + row + "]/uedt");
  172. sortseq = model.getValue(xPathData + "[" + row + "]/sortseq");
  173. SendData = SendData + "▩" + updtflag + "▦" + clscd + "▦" + clsflag + "▦" + lrgcd + "▦" + mdlcd + "▦" + clsnm + "▦" + uedt + "▦" + sortseq;
  174. }
  175. model.setValue(xSendSaveData, SendData);
  176. model.copyNode(xSendReqData, xCondData);
  177. //node에 해당하는 노드 하나만 남기고, 같은 node Name 을 갖는 노드들은 삭제시켜준다.
  178. //다른 노드들을 삭제시키고 남겨진 노드의 속성이나 value 값은공백으로 세팅이 된다
  179. model.resetInstanceNode(xPathData);
  180. if(submit("TXMNP04307")){ //저장(신규,수정)
  181. fGubnList_Read();
  182. }else{
  183. messageBox('저장을', 'E009');
  184. }
  185. }
  186. // --------------------------------------------------
  187. // 행추가
  188. // --------------------------------------------------
  189. function fAddRow(pGrd) {
  190. var clsflag = fGetClsflag();
  191. var sinsertChk = finsertCheck(clsflag);
  192. if ( sinsertChk == false ) return;
  193. pGrd.addRow();
  194. //코드값 자동생성 시작
  195. var iRow = pGrd.row;
  196. var iClscd = '00';
  197. var iClsTempcd = '00';
  198. for (var row=pGrd.fixedRows;row<pGrd.rows-1;row++) {
  199. if (row != iRow ) {
  200. iClsTempcd = model.getValue(xPathData+"["+row+"]/clscd");
  201. if (iClsTempcd != 99 && iClscd < iClsTempcd ) {
  202. iClscd = iClsTempcd ;
  203. }
  204. }
  205. }
  206. iClscd=Number(iClscd)+1 ; //자동증가(문자로 인식하여 숫자로 형변환한다.)
  207. if (iClscd.toString().length == 1) {
  208. iClscd = "0" + iClscd.toString(); //문자열로변환
  209. }
  210. //코드값 자동생성 종료
  211. model.setValue(xPathData+"["+iRow+"]/clscd", iClscd); // 분류코드
  212. model.setValue(xPathData+"["+iRow+"]/uedt", "Y"); // 사용여부
  213. model.setValue(xPathData+"["+iRow+"]/updtflag", "i"); // 수정구분
  214. }
  215. // --------------------------------------------------
  216. // 사용여부 라디오 버튼 변경시
  217. // --------------------------------------------------
  218. function frdo_uedtflagChanged() {
  219. var uedtflag = rdo_uedtflag.value;
  220. btn_addrow.visible = true;
  221. btn_query.visible = true;
  222. btn_save.visible = true;
  223. if (uedtflag == "N") {
  224. btn_query.visible = false;
  225. }
  226. fGubnList_Read(); //조회
  227. }
  228. // --------------------------------------------------
  229. // 그리드의 cell 포커스시
  230. // --------------------------------------------------
  231. function fgrd_onentercell() {
  232. var pGrd = grd_lrglist;
  233. var row = pGrd.row;
  234. var col = pGrd.col;
  235. var colclsnm = pGrd.colAttribute(col,"ref");
  236. var suedt = model1.getValue("/root/main/gubnlist[" + row + "]/uedt");
  237. switch (colclsnm) {
  238. case "clsnm":
  239. if (suedt != "Y") {
  240. pGrd.colDisabled(col) = true; //uedt가 'N'이면 clsnm은 입력불가
  241. } else {
  242. pGrd.colDisabled(col) = false; //모두입력가능
  243. }
  244. break;
  245. }
  246. }
  247. /* ------------------------------------------------- */
  248. /* ------End Of List ------------------------------- */
  249. /* -------------------------------------------------- */