ITP_POMNG01010.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441
  1. require(['config'], function() {
  2. require([
  3. ], function($) {
  4. pageObj.init();
  5. });
  6. });
  7. /********************************************************
  8. --------------------------------------------------------
  9. - Object 목록 -
  10. --------------------------------------------------------
  11. * const gridColModel = {} : 화면 Grid Object *
  12. * let pageObj = {} : 화면공통 Object *
  13. * let listObj = {} : 목록화면 Object *
  14. * let viewObj = {} : 상세화면 Object *
  15. * let modifyObj = {} : 수정화면 Object *
  16. * let createObj = {} : 신규화면 Object *
  17. *******************************************************/
  18. /*화면 변수*/
  19. /*
  20. const POMNG01010_GRID_ID = '#ITP_POMNG01010_jqGrid';
  21. const POMNG01010_GRID_LIST = '#ITP_POMNG01010_jqGrid_list';
  22. const POMNG01010_GRID_PAGER = '#ITP_POMNG01010_jqGridPager';
  23. const POMNG01010_GRID_EMPTY = '#ITP_POMNG01010_jqGridEmpty';
  24. const POMNG01010_VIEW_GRID_ID = '#ITP_POMNG01010_VIEW_jqGrid';
  25. const POMNG01010_VIEW_GRID_LIST = '#ITP_POMNG01010_VIEW_jqGrid_list';
  26. const POMNG01010_VIEW_GRID_PAGER = '#ITP_POMNG01010_VIEW_jqGridPager';
  27. const POMNG01010_VIEW_GRID_EMPTY = '#ITP_POMNG01010_VIEW_jqGridEmpty';
  28. */
  29. const POMNG01010_DETAIL_GRID_ID = '#ITP_POMNG01010_DETAIL_jqGrid';
  30. const POMNG01010_DETAIL_GRID_LIST = '#ITP_POMNG01010_DETAIL_jqGrid_list';
  31. const POMNG01010_DETAIL_GRID_PAGER = '#ITP_POMNG01010_DETAIL_jqGridPager';
  32. const POMNG01010_DETAIL_GRID_EMPTY = '#ITP_POMNG01010_DETAIL_jqGridEmpty'; // ==>dwkim html확인필요
  33. /*
  34. let ITP_FORM_POMNG01010_DETAIL_IS_DUPLICATE = false;
  35. let ITP_FORM_POMNG01010_DETAIL_IS_WRITING = false;
  36. */
  37. /*API URL*/
  38. let API_DETAIL_INIT_INFO = '/api/pomng/init-pchReq'
  39. //let API_DETAIL_GRID_LIST = '/api/affl/detail-grid-list';
  40. //let API_DETAIL_INFO = '/api/affl/info-affl';
  41. //let COMPANY_INFO_COMPANY = '/api/affl/info-affl';
  42. let API_DETAIL_SAVE = '/api/pomng/save-pchReq';
  43. //let API_CHECK_DUPLICATE = '/api/affl/check-duplicate';
  44. //let API_INTI_USERPW = '/api/user/inti-userpw';
  45. /*화면 Grid ColModel ==>선택박스 항목 추가 부분 */
  46. const gridColModel = {
  47. detail: [
  48. {
  49. index: 'VIEW_CD', name: 'viewCd',
  50. label: ITP_MSG_LOCALE.label.viewCd,
  51. width: '10', fixed: false, align: 'center',
  52. sortable: false, hidden: true
  53. },
  54. {
  55. index: 'ITEM_ID', name: 'itemId',
  56. label: ITP_MSG_LOCALE.label.itemId,
  57. width: '20', fixed: false, align: 'center',
  58. sortable: false, editable: false, edittype: 'text',
  59. editrules: { required: true }
  60. },
  61. {
  62. index: 'ITEM_NM', name: 'itemNm',
  63. label: ITP_MSG_LOCALE.label.itemNm,
  64. width: '30', fixed: false, align: 'center',
  65. sortable: true, editable: false, edittype: 'text',
  66. editrules: { required: true }
  67. },
  68. {
  69. index: 'UNIT', name: 'unit',
  70. label: ITP_MSG_LOCALE.label.unit,
  71. width: '10', fixed: false, align: 'center',
  72. sortable: false, editable: false, edittype: 'text'
  73. },
  74. {
  75. index: 'UNIT_AMT', name: 'unitAmt',
  76. label: ITP_MSG_LOCALE.label.unitAmt,
  77. width: '10', fixed: false, align: 'center',
  78. sortable: false, editable: false, edittype: 'text', hidden: false
  79. },
  80. {
  81. index: 'PCH_REQ_QTY', name: 'pchReqQty',
  82. label: ITP_MSG_LOCALE.label.pchReqQty, //수량
  83. width: '10', fixed: false, align: 'right',
  84. sortable: true, editable: true, edittype: 'text',
  85. editrules: { number:true}
  86. },
  87. {
  88. index: 'PCH_REQ_AMT', name: 'pchReqAmt',
  89. label: ITP_MSG_LOCALE.label.pchReqAmt,
  90. width: '10', fixed: false, align: 'right',
  91. sortable: false, editable: false, edittype: 'text', hidden: false
  92. },
  93. {
  94. index: 'BRAND_UNIT_UNQ_NO', name: 'brandUnitUnqNo',
  95. label: ITP_MSG_LOCALE.label.brandUnitUnqNo,
  96. width: '10', fixed: false, align: 'center',
  97. sortable: false, editable: false, edittype: 'text', hidden: true
  98. },
  99. {
  100. index: 'STORE_UNIT_UNQ_NO', name: 'storeUnitUnqNo',
  101. label: ITP_MSG_LOCALE.label.storeUnitUnqNo,
  102. width: '10', fixed: false, align: 'center',
  103. sortable: false, editable: false, edittype: 'text', hidden: true
  104. },
  105. {
  106. index: 'UNIT_GUBUN', name: 'unitGubun',
  107. label: ITP_MSG_LOCALE.label.unitGubun,
  108. width: '10', fixed: false, align: 'center',
  109. sortable: false, editable: false, edittype: 'text', hidden: true
  110. }
  111. ]
  112. };
  113. /*화면공통 Object*/
  114. let pageObj = {
  115. init: function() {
  116. this.ui.init();
  117. this.event.init();
  118. this.action();
  119. },
  120. action: function () {
  121. var _this = this;
  122. // 납품장소 조회 버튼 클릭
  123. $('#ITP_FORM_POMNG01010_SEARCH_WHS_NM').on('click', function() {
  124. _this.popup();
  125. });
  126. // 납품장소 텍스트 삭제 버튼 클릭
  127. $('#ITP_FORM_POMNG01010_DELETE_WHS_NM').on('click', function() {
  128. $('#ITP_FORM_POMNG01010_DETAIL_WHS_NM').val('');
  129. $('#ITP_FORM_POMNG01010_DETAIL_WHS_ID').val('');
  130. $('#ITP_FORM_POMNG01010_DETAIL_LOCATION_NM').val('');
  131. $('#ITP_FORM_POMNG01010_DETAIL_LOCATION').val('');
  132. });
  133. },
  134. popup: function () {
  135. // 팝업
  136. var popFn = this.callback.create;
  137. const key = {brandId:fn_make_user_info.get('brandId'),storeId:fn_make_user_info.get('storeId')};
  138. fn_call_popup('biz', 'BIZPOP_WHS_LOCATION', '#ITP_ASIDE', popFn, key, 'S');
  139. },
  140. callback: {
  141. create: function(rowDataPop) {
  142. console.log(rowDataPop);
  143. if(rowDataPop) {
  144. $('#ITP_FORM_POMNG01010_DETAIL_WHS_NM').val(rowDataPop.whsNm);
  145. $('#ITP_FORM_POMNG01010_DETAIL_WHS_ID').val(rowDataPop.whsId);
  146. $('#ITP_FORM_POMNG01010_DETAIL_LOCATION_NM').val(rowDataPop.locationNm);
  147. $('#ITP_FORM_POMNG01010_DETAIL_LOCATION').val(rowDataPop.location);
  148. }
  149. }
  150. },
  151. itp_POMNG01010_param: {}, // ==>dwkim
  152. itp_POMNG01010_search: false, // ==>dwkim
  153. ui: {
  154. init: function() {
  155. this.view();
  156. this.grid();
  157. this.ready();
  158. },
  159. view: function() {
  160. // 버튼 권한설정
  161. fn_proc_btn_auth('POMNG01010');
  162. // 공통코드 표시
  163. $('select').each(function() {
  164. if ($(this).data('select-code')) {
  165. fn_make_select(CODE_LIST, $(this).data('select-code'), $(this).attr('id'));
  166. }
  167. });
  168. // 조회일자 지정
  169. //var now = new Date(date.getDate() + 5);
  170. var now = new Date();
  171. $('#ITP_TAB_POMNG01010 .input-group.date').datepicker(ITP_DATE_LANGUAGE);
  172. $('#ITP_FORM_POMNG01010_DETAIL_DLV_REQ_DT').datepicker('setDate', new Date(now.setDate(now.getDate() + 5)));
  173. //납품장소 필드 readonly
  174. $('#ITP_FORM_POMNG01010_DETAIL_WHS_NM').attr('readonly', true);
  175. $('#ITP_FORM_POMNG01010_DETAIL_LOCATION_NM').attr('readonly', true);
  176. },
  177. grid: function() {
  178. itp_fn_jqgrid_resize(POMNG01010_DETAIL_GRID_ID, POMNG01010_DETAIL_GRID_LIST, 'lg');
  179. //listObj.empty.init();
  180. itp_fn_fire_window_resize();
  181. },
  182. ready: function() {
  183. createObj.init();
  184. }
  185. },
  186. event: {
  187. init: function() {
  188. this.button();
  189. },
  190. button: function() {
  191. // 버튼 클릭 이벤트
  192. $('button').each(function() {
  193. var id = $(this).attr('id');
  194. $(this).on('click', function() {
  195. switch (id) {
  196. case 'ITP_BTN_POMNG01010_SRH': createObj.button.save("PR20"); break; // 구매요청
  197. case 'ITP_BTN_POMNG01010_NEWREG': createObj.button.save("PR00"); break; // 임시저장
  198. case 'ITP_BTN_POMNG01010_DETAIL_ADDROW': pageObj.grid.button.addRow(); break; // 품목추가
  199. case 'ITP_BTN_POMNG01010_DETAIL_DELROW': pageObj.grid.button.delRow(); break; // 품목삭제
  200. }
  201. });
  202. });
  203. $('body').on('click', function(e) {
  204. // afflUserObj.grid.resetGrid(e);
  205. });
  206. }
  207. },
  208. grid: {
  209. init: function(mode, gridData) {
  210. this.mode = mode;
  211. this.gridId = POMNG01010_DETAIL_GRID_ID;
  212. this.unload(); // ==>dwkim
  213. this.load(gridData);
  214. },
  215. mode: 'DETAIL',
  216. gridId: '',
  217. button: {
  218. addRow: function() {
  219. // 팝업
  220. var popFn = function(rowDataPop) {
  221. console.log(rowDataPop);
  222. // 기존등록 데이터
  223. var exists = '';
  224. const rowData = $(POMNG01010_DETAIL_GRID_ID).getRowData();
  225. $.each(rowData, function(key, value) {
  226. exists = exists + value.brandUnitUnqNo + ';';
  227. });
  228. $.each(rowDataPop, function(key, value) {
  229. if (exists.indexOf(value.brandUnitUnqNo) < 0 && value.podrPssblDvsn == 'PO01') {
  230. value['viewCd'] = "C";
  231. $(POMNG01010_DETAIL_GRID_ID).jqGrid('addRowData', value.brandUnitUnqNo, value, 'last');
  232. }
  233. });
  234. $(POMNG01010_DETAIL_GRID_EMPTY).hide();
  235. };
  236. const key = {brandId:fn_make_user_info.get('brandId'),storeId:fn_make_user_info.get('storeId')};
  237. fn_call_popup('biz', 'BIZPOP_ITEM', '#ITP_ASIDE', popFn, key, 'S'); // ==>dwkim 추후 작업 진행 파라메타 설명필요
  238. },
  239. delRow: function() {
  240. itp_fn_grid_del_row(POMNG01010_DETAIL_GRID_ID);
  241. // 그리드 포문으로 금액 재계산후 구매요청금액에 넣어줌
  242. pageObj.grid.recal(); //==>dwkim 왜 호출이 안될까요
  243. }
  244. },
  245. load: function(gridData) { // ==>dwkim 오픈시 데이타 가져오는 부분 넣으면 되는건지 여부 gird가 아님
  246. var _this = this;
  247. var option = {
  248. gridId: this.gridId,
  249. colModel: gridColModel.detail,
  250. data: gridData,
  251. multiselect: true,
  252. cellEdit: true,
  253. loadComplete: function(data) {
  254. _this.clearData();
  255. },
  256. afterSaveCell: function(rowid,name,val,iRow,iCol) {
  257. // 구매요청금액 계산 (기존금액과 )
  258. var unitAmt = jQuery(POMNG01010_DETAIL_GRID_ID).jqGrid('getCell',rowid,iCol-1);
  259. jQuery(POMNG01010_DETAIL_GRID_ID).jqGrid('setRowData',rowid,{pchReqAmt: parseInt(val)*parseInt(unitAmt)});
  260. // 그리드 포문으로 금액 재계산후 구매요청금액에 넣어줌
  261. _this.recal();
  262. }
  263. };
  264. itp_fn_grid_make_local(option);
  265. },
  266. clearData: function() {
  267. console.log(this.gridId);
  268. $(POMNG01010_DETAIL_GRID_ID).jqGrid('clearGridData', true);
  269. $(POMNG01010_DETAIL_GRID_LIST).find('.ui-jqgrid .ui-jqgrid-bdiv').css('overflow-x', 'hidden');
  270. $(POMNG01010_DETAIL_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
  271. $(POMNG01010_DETAIL_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
  272. $(POMNG01010_DETAIL_GRID_EMPTY).show();
  273. },
  274. recal: function() {
  275. //PCH_REQ_AMT
  276. console.log("==========================================");
  277. const rowData = $(POMNG01010_DETAIL_GRID_ID).getRowData();
  278. console.log("####################################");
  279. var pchReqAmt = 0 ;
  280. $.each(rowData, function(key, value) {
  281. console.log(rowData);
  282. if (value.pchReqAmt != null && value.pchReqAmt != "" && value.viewCd != "D") {
  283. pchReqAmt = pchReqAmt + parseInt(value.pchReqAmt) ;
  284. }
  285. });
  286. $('#ITP_FORM_POMNG01010_DETAIL .fnPchReqAmt').text(pchReqAmt);
  287. },
  288. unload: function() {
  289. $.jgrid.gridUnload(this.gridId);
  290. }
  291. }
  292. };
  293. /*신규화면 Object*/
  294. let createObj = {
  295. init: function() {
  296. $('#ITP_FORM_POMNG01010_DETAIL_BRAND_ID').val(fn_make_user_info.get('brandId'));
  297. $('#ITP_FORM_POMNG01010_DETAIL_STORE_ID').val(fn_make_user_info.get('storeId'));
  298. //let param = 'brandId=' + LOGIN_USER_INFO.brandId + "&spplyId=" + LOGIN_USER_INFO.spplyId;
  299. this.load();
  300. },
  301. newinit: function() {
  302. $('#ITP_FORM_POMNG01010_DETAIL_BRAND_ID').val(fn_make_user_info.get('brandId'));
  303. $('#ITP_FORM_POMNG01010_DETAIL_STORE_ID').val(fn_make_user_info.get('storeId'));
  304. $('#ITP_FORM_POMNG01010_DETAIL_PCH_REQ_NM').val('');
  305. $('#ITP_FORM_POMNG01010_DETAIL_NOTE').val('');
  306. var now = new Date();
  307. $('#ITP_TAB_POMNG01010 .input-group.date').datepicker(ITP_DATE_LANGUAGE);
  308. $('#ITP_FORM_POMNG01010_DETAIL_DLV_REQ_DT').datepicker('setDate', new Date(now.setDate(now.getDate() + 5)));
  309. this.load(); //==>dwkim 초기화 하여 다시 초기 데이타 가져와 뿌려줌
  310. const key = {brandId:fn_make_user_info.get('brandId'),storeId:fn_make_user_info.get('storeId')};
  311. fn_ajax_call(API_DETAIL_INIT_INFO, key, this.callback, 'GET');
  312. },
  313. button: {
  314. save: function(arg) {
  315. const formId = '#ITP_FORM_POMNG01010_DETAIL';
  316. itp_fn_form_clear_validate(null, formId);
  317. $('#ITP_FORM_POMNG01010_DETAIL_PCH_REQ_ST_CD').val(arg);
  318. //정산 타입이 무정산이면 스킵
  319. var loanDvsn = $('#ITP_FORM_POMNG01010_DETAIL_LOAN_DVSN').val();
  320. if (loanDvsn != null && loanDvsn != "") {
  321. if (loanDvsn != 'LD03' && arg == 'PR20' ) {
  322. var pchActAtm = $('#ITP_FORM_POMNG01010_DETAIL .fnPchActAmt').text();
  323. var pchReqAtm = $('#ITP_FORM_POMNG01010_DETAIL .fnPchReqAmt').text();
  324. if (parseInt(pchActAtm) < parseInt(pchReqAtm)) {
  325. alert(ITP_MSG_LOCALE.message.ajax.lackReqAmt);
  326. return;
  327. }
  328. }
  329. }
  330. if (itp_fn_form_event.isValid(formId)) {
  331. // 품목대상 정보 확인 필요
  332. var records = $(POMNG01010_DETAIL_GRID_ID).getGridParam('reccount');
  333. if (records == 0) {
  334. alert( "요청할 품목내역이 없습니다.");
  335. return ;
  336. }
  337. var saveReq = {
  338. callBack: function(args) {
  339. $(formId).val(arg);
  340. let gridInsertData = [];
  341. let gridUpdateData = [];
  342. let gridDeleteData = [];
  343. const rowData = $(POMNG01010_DETAIL_GRID_ID).getRowData();
  344. $.each(rowData, function(key, value) {
  345. if (value.viewCd !== 'R') {
  346. if (value.viewCd === 'C') {
  347. gridInsertData.push(value);
  348. } else if (value.viewCd === 'U') {
  349. gridUpdateData.push(value);
  350. } else if (value.viewCd === 'D') {
  351. gridDeleteData.push(value);
  352. }
  353. }
  354. });
  355. let param = $(formId).serializeObject();
  356. param.gridInsertData = gridInsertData;
  357. param.gridUpdateData = gridUpdateData;
  358. param.gridDeleteData = gridDeleteData;
  359. console.log(JSON.stringify(param));
  360. var searhFn = function() {
  361. createObj.newinit();
  362. };
  363. fn_ajax_call(API_DETAIL_SAVE, JSON.stringify(param), searhFn, 'POST');
  364. }
  365. };
  366. if (arg == 'PR20') {
  367. itp_fn_modal_confirm(ITP_MSG_LOCALE.message.ajax.reqSave, saveReq, null);
  368. } else {
  369. itp_fn_modal_confirm(ITP_MSG_LOCALE.message.ajax.tmpSave, saveReq, null);
  370. }
  371. }
  372. }
  373. },
  374. load: function() {
  375. const key = {brandId:fn_make_user_info.get('brandId'),storeId:fn_make_user_info.get('storeId')};
  376. fn_ajax_call(API_DETAIL_INIT_INFO, key, this.callback, 'GET');
  377. },
  378. callback: function(result) {
  379. console.log(result);
  380. $('#ITP_FORM_POMNG01010_DETAIL #ITP_FORM_POMNG01010_DETAIL_VIEW_CD').val('C');
  381. $('#ITP_FORM_POMNG01010_DETAIL #ITP_FORM_POMNG01010_DETAIL_BRAND_ID').val(result.brandId);
  382. $('#ITP_FORM_POMNG01010_DETAIL #ITP_FORM_POMNG01010_DETAIL_STORE_ID').val(result.storeId);
  383. $('#ITP_FORM_POMNG01010_DETAIL #ITP_FORM_POMNG01010_DETAIL_LOAN_DVSN').val(result.loanDvsn);
  384. $('#ITP_FORM_POMNG01010_DETAIL #ITP_FORM_POMNG01010_DETAIL_LOAN_MGNT_UNQ_NO').val(result.loanMgntUnqNo);
  385. $('#ITP_FORM_POMNG01010_DETAIL #ITP_FORM_POMNG01010_DETAIL_PCH_REQ_DVSN').val(result.pchReqDvsn);
  386. $('#ITP_FORM_POMNG01010_DETAIL #ITP_FORM_POMNG01010_DETAIL_WHS_ID').val(result.whsId);
  387. $('#ITP_FORM_POMNG01010_DETAIL #ITP_FORM_POMNG01010_DETAIL_WHS_NM').val(result.whsNm);
  388. $('#ITP_FORM_POMNG01010_DETAIL #ITP_FORM_POMNG01010_DETAIL_LOCATION').val(result.location);
  389. $('#ITP_FORM_POMNG01010_DETAIL #ITP_FORM_POMNG01010_DETAIL_LOCATION_NM').val(result.locationNm);
  390. $('#ITP_FORM_POMNG01010_DETAIL .fnBrandNm').text(result.brandNm);
  391. $('#ITP_FORM_POMNG01010_DETAIL .fnPchReqDept').text(result.reqDept);
  392. $('#ITP_FORM_POMNG01010_DETAIL .fnPchReqMgrNm').text(result.userNm);
  393. $('#ITP_FORM_POMNG01010_DETAIL .fnPchReqAmt').text("0");
  394. $('#ITP_FORM_POMNG01010_DETAIL .fnLoanDvsnNm').text(result.loanDvsnNm);
  395. $('#ITP_FORM_POMNG01010_DETAIL .fnPchActAmt').text(result.ordUseAmt);
  396. pageObj.grid.init();
  397. }
  398. };