ITP_INOUTMNG02010.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441
  1. require(['config'], function() {
  2. require([
  3. ], function($) {
  4. pageObj.init();
  5. });
  6. });
  7. //화면변수
  8. const INOUTMNG02010_GRID_ID = '#ITP_INOUTMNG02010_jqGrid';
  9. const INOUTMNG02010_GRID_LIST = '#ITP_INOUTMNG02010_jqGrid_list';
  10. const INOUTMNG02010_GRID_PAGER = '#ITP_INOUTMNG02010_jqGridPager';
  11. const INOUTMNG02010_GRID_EMPTY = '#ITP_INOUTMNG02010_jqGridEmpty';
  12. let ITP_PODR_DTL_ST_CD = fn_make_common_cd_list(CODE_LIST, 'SHMT_REQ_ST_CD', true, '출하요청상태코드');
  13. //API URL
  14. let API_POMNG_INOUTMNG_OUTSEARCH_GRID_LIST = '/api/pomng/inoutmng/outsearch-grid-list';
  15. let API_POMNG_INOUTMNG_INFO_INV = '/api/pomng/inoutmng/info-inv';
  16. //화면 grid ColModel
  17. const gridColModel = {
  18. list:[
  19. {
  20. index: 'VIEW_CD', name: 'viewCd',
  21. label: ITP_MSG_LOCALE.label.viewCd,
  22. width: '10', fixed: false, align: 'center',
  23. sortable: false, hidden: true
  24. },
  25. {
  26. index: 'BRAND_NM', name: 'brandNm',
  27. label: ITP_MSG_LOCALE.label.brandNm, // 브랜드명
  28. minwidth: 100,
  29. width: '10', fixed: false, align: 'left',
  30. sortable: false, hidden: false
  31. },
  32. {
  33. index: 'SHMT_REQ_UNQ_NO', name: 'shmtReqUnqNo',
  34. label: ITP_MSG_LOCALE.label.shmtReqUnqNo, // 출하지시번호
  35. minwidth: 140,
  36. width: '10', fixed: false, align: 'center',
  37. sortable: false, hidden: false
  38. },
  39. {
  40. index: 'PCH_PODR_UNQ_NO', name: 'pchPodrUnqNo',
  41. label: ITP_MSG_LOCALE.label.pchPodrUnqNo, // 발주번호
  42. minwidth: 140,
  43. width: '10', fixed: false, align: 'center',
  44. sortable: false, hidden: false
  45. },
  46. {
  47. index: 'PCH_PODR_DTL_NO', name: 'pchPodrDtlNo',
  48. label: ITP_MSG_LOCALE.label.pchPodrDtlNo, // 발주항번
  49. width: '8', fixed: false, align: 'right',
  50. sortable: false, hidden: false
  51. },
  52. {
  53. index: 'SHMT_REQ_ST_CD', name: 'shmtReqStCd',
  54. label: ITP_MSG_LOCALE.label.shmtReqStCd, // 출하상태코드
  55. minwidth: 120,
  56. width: '10', fixed: false, align: 'center',
  57. sortable: false, hidden: false, formatter: 'select', edittype: 'select',
  58. editoptions: {value: ITP_PODR_DTL_ST_CD}
  59. },
  60. {
  61. index: 'ITEM_ID', name: 'itemId',
  62. label: ITP_MSG_LOCALE.label.itemId, // 품목번호
  63. minwidth: 140,
  64. width: '10', fixed: false, align: 'center',
  65. sortable: false, hidden: false
  66. },
  67. {
  68. index: 'ITEM_NM', name: 'itemNm',
  69. label: ITP_MSG_LOCALE.label.itemNm, // 품목명
  70. width: '10', fixed: false, align: 'left',
  71. minwidth: 100,
  72. sortable: false, hidden: false
  73. },
  74. {
  75. index: 'WHS_NM', name: 'whsNm',
  76. label: ITP_MSG_LOCALE.label.whsNm, // 납품장소
  77. width: '10', fixed: false, align: 'left',
  78. minwidth: 160,
  79. sortable: false, hidden: false
  80. },
  81. {
  82. index: 'SHMT_QTY', name: 'shmtQty',
  83. label: ITP_MSG_LOCALE.label.shmtQty, // 출하수량
  84. width: '8', fixed: false, align: 'right',
  85. sortable: false, hidden: false
  86. },
  87. {
  88. index: 'SHMT_AMT', name: 'shmtAmt',
  89. label: ITP_MSG_LOCALE.label.shmtAmt, // 출하금액
  90. width: '8', fixed: false, align: 'right',
  91. minwidth: 80,
  92. sortable: false, hidden: false
  93. },
  94. {
  95. index: 'WHS_QTY', name: 'whsQty',
  96. label: ITP_MSG_LOCALE.label.whsQty, // 입고수량
  97. width: '8', fixed: false, align: 'right',
  98. sortable: false, hidden: false
  99. },
  100. {
  101. index: 'WHS_AMT', name: 'whsAmt',
  102. label: ITP_MSG_LOCALE.label.whsAmt, // 입고금액
  103. width: '8', fixed: false, align: 'right',
  104. sortable: false, hidden: false
  105. },
  106. {
  107. index: 'WHS_CNFM_NM', name: 'whsCnfmNm',
  108. label: ITP_MSG_LOCALE.label.whsCnfmNm, // 입고확인자
  109. width: '10', fixed: false, align: 'center',
  110. minwidth: 100,
  111. sortable: false, hidden: false
  112. },
  113. {
  114. index: 'WHS_DT', name: 'whsDt',
  115. label: ITP_MSG_LOCALE.label.whsDt, // 입고일
  116. width: '10', fixed: false, align: 'center',
  117. minwidth: 100,
  118. sortable: false, hidden: false
  119. },
  120. {
  121. index: 'DLV_STTMT_UNQ_NO', name: 'dlvSttmtUnqNo',
  122. label: ITP_MSG_LOCALE.label.dlvSttmtUnqNo, // 납품번호
  123. width: '10', fixed: false, align: 'center',
  124. sortable: false, hidden: true
  125. }
  126. ],
  127. view: [],
  128. detail: []
  129. }
  130. /*화면공통 Object*/
  131. let pageObj = {
  132. init: function() {
  133. this.ui.init();
  134. this.event.init();
  135. this.action();
  136. },
  137. ui: {
  138. init: function() {
  139. this.view();
  140. this.grid();
  141. this.ready();
  142. },
  143. view: function() {
  144. // 버튼 권한설정
  145. fn_proc_btn_auth('INOUTMNG02010');
  146. // 공통코드 표시
  147. $('select').each(function() {
  148. if($(this).data('select-code')) {
  149. fn_make_select(CODE_LIST, $(this).data('select-code'), $(this).attr('id'));
  150. }
  151. });
  152. // 조회일자 지정
  153. var now = new Date();
  154. var defaultToDate = new Date(now);
  155. defaultToDate.setDate(now.getDate() + 7);
  156. $('#ITP_TAB_INOUTMNG02010 .input-group.date').datepicker(ITP_DATE_LANGUAGE);
  157. $('#ITP_FORM_INOUTMNG02010_SEARCH_FROM_DT').datepicker('setDate', now);
  158. $('#ITP_FORM_INOUTMNG02010_SEARCH_TO_DT').datepicker('setDate', defaultToDate);
  159. },
  160. grid: function() {
  161. itp_fn_jqgrid_resize(INOUTMNG02010_GRID_ID, INOUTMNG02010_GRID_LIST, 'lg');
  162. listObj.empty.init();
  163. itp_fn_fire_window_resize();
  164. },
  165. ready: function() {
  166. listObj.init();
  167. }
  168. },
  169. event: {
  170. init: function() {
  171. this.button();
  172. },
  173. button: function() {
  174. // 버튼 클릭 이벤트
  175. $('button').each(function() {
  176. var id = $(this).attr('id');
  177. $(this).on('click', function() {
  178. switch (id) {
  179. case 'ITP_BTN_INOUTMNG02010_SRH' : listObj.button.search(); break; // 조회 버튼 클릭
  180. case 'ITP_BTN_INOUTMNG02010_NEWREG' : listObj.button.create(); break; // 신규등록 버튼
  181. case 'ITP_BTN_INOUTMNG02010_MODIFY' : modifyObj.button.modify(); break; // 수정 버튼
  182. case 'ITP_BTN_INOUTMNG02010_CANCELLIST' : modifyObj.button.cancel(); break; // 취소/목록 버튼
  183. case 'ITP_BTN_INOUTMNG02010_DELETE' : modifyObj.button.del(); break; // 발주 취소 버튼(예정)
  184. }
  185. });
  186. });
  187. }
  188. },
  189. switchScreen: function(mode) {
  190. $('.itp_det_head').find('button[id^="ITP_BTN_INOUTMNG02010_"]').each(function(i) {
  191. $(this).hide();
  192. });
  193. $('#ITP_TAB_INOUTMNG02010').find('div[id$="_CONTAINER"]').each(function(i) {
  194. $(this).hide();
  195. });
  196. if(mode == 'LIST') { // 목록
  197. fn_show_btn_auth_array(['#ITP_BTN_INOUTMNG02010_SRH', '#ITP_BTN_INOUTMNG02010_NEWREG']);
  198. $('#ITP_AJAX_INOUTMNG02010_LIST_CONTAINER').show();
  199. $('#ITP_FORM_INOUTMNG02010_SEARCH #ITP_FORM_INOUTMNG02010_SEARCH_BRAND_ID').val(fn_make_user_info.get('brandId'));
  200. $('#ITP_BTN_INOUTMNG02010_PRINT').show();
  201. $('#ITP_BTN_INOUTMNG02010_SRH').show();
  202. $('#ITP_BTN_INOUTMNG02010_SEARCH_SHMT_WHS_ID').show();
  203. $('#ITP_BTN_INOUTMNG02010_DELETE_SHMT_WHS_NM').show();
  204. $('#ITP_BTN_INOUTMNG02010_SEARCH_WHS_ID').show();
  205. $('#ITP_BTN_INOUTMNG02010_DELETE_WHS_ID').show();
  206. } /*else if(mode == 'ADD') { // 등록
  207. $('#ITP_AJAX_INOUTMNG02010_DETAIL_CONTAINER').show();
  208. fn_show_btn_auth_array(['#ITP_BTN_INOUTMNG02010_CANCELLIST', '#ITP_BTN_INOUTMNG02010_SAVE']);
  209. $('#ITP_FORM_INOUTMNG02010_DETAIL').find('input, textarea, select, checkbox').each(function(i, elem) {
  210. $(this).attr('id') === 'ITP_FORM_INOUTMNG02010_DETAIL_VIEW_CD' ? $(this).val('C') : $(this).val('');
  211. if(elem.type === 'select') {
  212. $(this).val('').prop('selected', true);
  213. }
  214. });
  215. $('#ITP_FORM_INOUTMNG02010_DETAIL #ITP_FORM_INOUTMNG02010_DETAIL_FILE_NO').val('');
  216. $('#ITP_FORM_INOUTMNG02010_DETAIL_BRAND_ID').removeAttr('readonly');
  217. $('#ITP_FORM_INOUTMNG02010_DETAIL_BRAND_NM').removeAttr('readonly');
  218. $('#ITP_FORM_INOUTMNG02010_DETAIL_BSNS_REG_NO').removeAttr('readonly');
  219. $('#ITP_FORM_INOUTMNG02010_DETAIL_CORP_REG_NO').removeAttr('readonly');
  220. // $('#ITP_FORM_INOUTMNG02010_DETAIL_SEARCH_AFFL_SHOP').removeAttr('disabled');
  221. // $('#ITP_FORM_INOUTMNG02010_DETAIL_DELETE_AFFL_SHOP').removeAttr('disabled');
  222. $('#ITP_FORM_INOUTMNG02010_DETAIL_SEARCH_AFFL_SHOP').show();
  223. $('#ITP_FORM_INOUTMNG02010_DETAIL_DELETE_AFFL_SHOP').show();
  224. $('#ITP_FORM_INOUTMNG02010_DETAIL .itp_form_info').hide();
  225. $('#ITP_FORM_INOUTMNG02010_DETAIL .itp_form_change').show();
  226. $('#ITP_FORM_INOUTMNG02010_DETAIL #ITP_FORM_INOUTMNG02010_DETAIL_AFFL_SHOP_ID').val(fn_make_user_info.get('afflShopId'));
  227. $('#ITP_FORM_INOUTMNG02010_DETAIL #ITP_FORM_INOUTMNG02010_DETAIL_BRAND_ID').val(fn_make_user_info.get('brandId'));
  228. $('.fnBrandId').text('(자동부여)');
  229. } else if(mode == 'MODIFY') { // 수정
  230. $('#ITP_AJAX_INOUTMNG02010_DETAIL_CONTAINER').show();
  231. fn_show_btn_auth_array(['#ITP_BTN_INOUTMNG02010_CANCELLIST', '#ITP_BTN_INOUTMNG02010_SAVE']);
  232. $('#ITP_BTN_INOUTMNG02010_CANCELLIST').show();
  233. $('#ITP_BTN_INOUTMNG02010_DELETE').show();
  234. $('#ITP_FORM_INOUTMNG02010_DETAIL_BRAND_ID').attr('readonly', true);
  235. $('#ITP_FORM_INOUTMNG02010_DETAIL_BRAND_NM').attr('readonly', true);
  236. $('#ITP_FORM_INOUTMNG02010_DETAIL_BSNS_REG_NO').attr('readonly', true);
  237. $('#ITP_FORM_INOUTMNG02010_DETAIL_CORP_REG_NO').attr('readonly', true);
  238. // $('#ITP_FORM_INOUTMNG02010_DETAIL_SEARCH_AFFL_SHOP').attr('disabled', true);
  239. // $('#ITP_FORM_INOUTMNG02010_DETAIL_DELETE_AFFL_SHOP').attr('disabled', true);
  240. $('#ITP_FORM_INOUTMNG02010_DETAIL_SEARCH_AFFL_SHOP').hide();
  241. $('#ITP_FORM_INOUTMNG02010_DETAIL_DELETE_AFFL_SHOP').hide();
  242. $('#ITP_FORM_INOUTMNG02010_DETAIL .itp_form_info').show();
  243. $('#ITP_FORM_INOUTMNG02010_DETAIL .itp_form_change').hide();
  244. $('#ITP_FORM_INOUTMNG02010_DETAIL #ITP_FORM_INOUTMNG02010_DETAIL_BRAND_ID').val(fn_make_user_info.get('brandId'));
  245. } else if(mode == 'VIEW') { // 보기
  246. $('#ITP_AJAX_INOUTMNG02010_VIEW_CONTAINER').show();
  247. fn_show_btn_auth_array(['#ITP_BTN_INOUTMNG02010_MODIFY', '#ITP_BTN_INOUTMNG02010_CANCELLIST']);
  248. }*/
  249. },
  250. action: function() {
  251. var _this = this;
  252. // 출하창고 조회 버튼 클릭
  253. $('#ITP_BTN_INOUTMNG02010_PRINT').on('click', function() {
  254. _this.popup();
  255. });
  256. },
  257. popup: function() {
  258. var selectedIds = $(INOUTMNG02010_GRID_ID).getGridParam('selarrrow');
  259. if(selectedIds.length > 1) { // 1이상 선택시
  260. alert("납품서 하나만 선택해주세요 (대표 납품서번호)") ;//출력
  261. return; //리턴
  262. }
  263. var selRowData ; //변수선언
  264. for (var i=selectedIds.length-1; i>=0; i--) { //1개만 선택시
  265. selRowData = $(INOUTMNG02010_GRID_ID).jqGrid('getRowData', selectedIds[i]); //cell 선택
  266. }
  267. const key = {brandId: fn_make_user_info.get('brandId'), dlvSttmtUnqNo: selRowData.dlvSttmtUnqNo}; // popup key 값 설정
  268. fn_call_popup('biz', 'BIZPOP_DLV_STTMT_PRN', '#ITP_ASIDE', null, key, 'S');
  269. }
  270. };
  271. /*목록화면 Object*/
  272. let listObj = {
  273. init: function() {
  274. this.grid.init();
  275. this.action();
  276. },
  277. itp_INOUTMNG02010_param: {},
  278. itp_INOUTMNG02010_search: false,
  279. button: {
  280. search: function() {
  281. listObj.itp_INOUTMNG02010_search = true;
  282. let param = $('#ITP_FORM_INOUTMNG02010_SEARCH').serializeObject();
  283. param.gridSize = $.jgrid.defaults.rowNum;
  284. param.gridPage = $.jgrid.defaults.page;
  285. param.sidx = '0';
  286. console.log(JSON.stringify(param));
  287. $(INOUTMNG02010_GRID_ID).setGridParam({'postData': JSON.stringify(param)}).trigger('reloadGrid');
  288. }
  289. },
  290. empty: {
  291. init: function() {
  292. var _this = this;
  293. this.push();
  294. $(INOUTMNG02010_GRID_EMPTY).on('click', function() {
  295. _this.back();
  296. listObj.itp_INOUTMNG02010_param.gridSize = $.jgrid.defaults.rowNum;
  297. $(INOUTMNG02010_GRID_ID).setGridParam({'postData': JSON.stringify(listObj.itp_INOUTMNG02010_param)}).trigger('reloadGrid');
  298. });
  299. },
  300. push: function() {
  301. let param = $('#ITP_FORM_INOUTMNG02010_SEARCH').serializeObject();
  302. listObj.itp_INOUTMNG02010_param = param;
  303. param.sidx = '0';
  304. },
  305. back: function() {
  306. $('#ITP_FORM_INOUTMNG02010_SERVICE_BRAND_TYPE').val(listObj.itp_INOUTMNG02010_param.brandType);
  307. $('#ITP_FORM_INOUTMNG02010_SERVICE_ST_CD').val(listObj.itp_INOUTMNG02010_param.stCd);
  308. $('#ITP_FORM_INOUTMNG02010_SEARCH_BRAND_NM').val(listObj.itp_INOUTMNG02010_param.brandNm);
  309. }
  310. },
  311. grid: {
  312. init: function() {
  313. // 데이터 없을때
  314. listObj.empty.push();
  315. this.search();
  316. },
  317. colModel: gridColModel.list,
  318. search: function() {
  319. pageObj.switchScreen('LIST');
  320. this.unload();
  321. this.load();
  322. },
  323. load: function() {
  324. let param = $('#ITP_FORM_INOUTMNG02010_SEARCH').serializeObject();
  325. param.gridSize = $.jgrid.defaults.rowNum;
  326. param.sidx = '0';
  327. console.log(JSON.stringify(param));
  328. var option = {
  329. gridId: INOUTMNG02010_GRID_ID,
  330. colModel: gridColModel.list,
  331. param: param,
  332. url: DOMAIN + API_POMNG_INOUTMNG_OUTSEARCH_GRID_LIST,
  333. pager: INOUTMNG02010_GRID_PAGER,
  334. multiselect: true,
  335. multiboxonly : false,
  336. rownumbers: false,/*
  337. onCellSelect: function(rowId, cellIdx, cellValue) {
  338. var cm = $(this).jqGrid('getGridParam', 'colModel');
  339. var colNm = cm[cellIdx].name;
  340. if (colNm === 'pchPodrUnqNo') {
  341. const dlvSttmtUnqNoVal = $(this).jqGrid('getCell', rowId, 'dlvSttmtUnqNo');
  342. const brandIdVal = $(this).jqGrid('getCell', rowId, 'brandId');
  343. const key = {dlvSttmtUnqNo: dlvSttmtUnqNoVal, brandId: brandIdVal};
  344. var param = $.param(key);
  345. //modifyObj.init(param);
  346. }
  347. },*/
  348. loadComplete: function(data) {
  349. console.log(data);
  350. itp_fn_grid_load_complete(data, INOUTMNG02010_GRID_ID, true, 'number', 'INOUTMNG02010', listObj.itp_INOUTMNG02010_search, listObj.empty, true, data.gridRecords, true);
  351. },
  352. onPaging: function(action) {
  353. itp_fn_grid_paging(INOUTMNG02010_GRID_ID, action, param);
  354. }
  355. };
  356. itp_fn_grid_make_remote(option);
  357. },
  358. clearData: function() {
  359. $(INOUTMNG02010_GRID_ID).jqGrid('clearGridData', true);
  360. $(INOUTMNG02010_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
  361. $(INOUTMNG02010_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
  362. $(INOUTMNG02010_GRID_EMPTY).show();
  363. },
  364. unload: function() {
  365. $.jgrid.gridUnload(INOUTMNG02010_GRID_ID);
  366. }
  367. },
  368. action: function() {
  369. var _this = this;
  370. // 출하창고 조회 버튼 클릭
  371. $('#ITP_BTN_INOUTMNG02010_SEARCH_SHMT_WHS_ID').on('click', function() {
  372. _this.popup('shmtWhs');
  373. });
  374. // 출하창고 텍스트 삭제 버튼 클릭
  375. $('#ITP_BTN_INOUTMNG02010_DELETE_SHMT_WHS_NM').on('click', function() {
  376. $('#ITP_FORM_INOUTMNG02010_DETAIL_SHMT_WHS_ID').val('');
  377. $('#ITP_FORM_INOUTMNG02010_DETAIL_SHMT_WHS_NM').val('');
  378. });
  379. // 매장/창고 조회 버튼 클릭
  380. $('#ITP_BTN_INOUTMNG02010_SEARCH_WHS_ID').on('click', function() {
  381. _this.popup('whs');
  382. });
  383. // 매장/창고 텍스트 삭제 버튼 클릭
  384. $('#ITP_BTN_INOUTMNG02010_DELETE_WHS_ID').on('click', function() {
  385. $('#ITP_FORM_INOUTMNG02010_DETAIL_WHS_NM').val('');
  386. $('#ITP_FORM_INOUTMNG02010_DETAIL_WHS_ID').val('');
  387. });
  388. },
  389. popup: function(keyword) {
  390. var popFn ;
  391. if(keyword == 'shmtWhs') {
  392. popFn = this.callback.shmtWhs;
  393. } else if(keyword == 'whs'){
  394. popFn = this.callback.whs;
  395. }
  396. var whsDvsn = "";
  397. if(keyword == 'shmtWhs') {
  398. whsDvsn = "W01";
  399. } else if(keyword == 'whs'){
  400. whsDvsn = "W02";
  401. }
  402. const key = {brandId:fn_make_user_info.get('brandId'),storeId:fn_make_user_info.get('storeId'),whsDvsn: whsDvsn};
  403. fn_call_popup('biz', 'BIZPOP_WHS_LOCATION', '#ITP_ASIDE', popFn, key, 'S');
  404. },
  405. callback: {
  406. shmtWhs: function(rowDataPop) {
  407. console.log(rowDataPop);
  408. $('#ITP_FORM_INOUTMNG02010_DETAIL_SHMT_WHS_ID').val(rowDataPop.whsId);
  409. $('#ITP_FORM_INOUTMNG02010_DETAIL_SHMT_WHS_NM').val(rowDataPop.whsNm);
  410. },
  411. whs: function(rowDataPop) {
  412. console.log(rowDataPop);
  413. $('#ITP_FORM_INOUTMNG02010_DETAIL_WHS_ID').val(rowDataPop.whsId);
  414. $('#ITP_FORM_INOUTMNG02010_DETAIL_WHS_NM').val(rowDataPop.whsNm);
  415. }
  416. }
  417. }