BemsWebApplication.MaterialStoredApproval = function (params, viewInfo) { 'use strict'; var viewModel, gridView, options; var visibleApprovalButton = ko.observable(); function postMaterialStoredApproval(materialStoredList) { var progressId = $Code.PurchaseProgress.MATERIAL_STORED_APPROVAL; var list = _.reject(materialStoredList, function (x) { try { return x.IsApproval(); } catch (e) { return x.IsApproval; } }); if (_.isEmpty(list)) { utils.toast.show('승인 할 입고 항목이 없습니다. 이미 승인되었거나 선택된 항목이 없습니다.', 'error'); return; } var postData = undefined; try { postData = { UserId: BWA.UserInfo.UserId(), MaterialStoredList: _.map(list, function (x) { return { SiteId: x.SiteId(), BusinessFieldId: x.BusinessFieldId(), MaterialStoredId: x.MaterialStoredId(), PurchaseOrderId: x.PurchaseOrderId() } }) }; } catch (e) { postData = { UserId: BWA.UserInfo.UserId(), MaterialStoredList: _.map(list, function (x) { return { SiteId: x.SiteId, BusinessFieldId: x.BusinessFieldId, MaterialStoredId: x.MaterialStoredId, PurchaseOrderId: x.PurchaseOrderId } }) }; } return BWA.api.post('FmsMaterialStored/Approval', postData).then(function () { // 자재 테이블 업데이트 필요, 입고정보 승인 API 에서 처리 viewModel.refreshList(); utils.toast.show('성공적으로 승인 처리되었습니다.'); }); }; function handleApproveSelectedItem() { var rows = gridView().getSelectedRowsData(); postMaterialStoredApproval(rows); } options = { viewOptions: { isModifiable: false, selection: { mode: 'multiple', allowSelectAll: false }, handleBeforeShowingPopupForEdit: function (data, dataModel) { visibleApprovalButton(!data.IsApproval()); // 툴바에 버튼이 추가되지 않아 강제로 수정함 viewModel.materialStoredPopupToolbarItems[1].options.text = $G('approval'); viewModel.materialStoredPopupToolbarItems[1].options.icon = 'save'; viewModel.materialStoredPopupToolbarItems[1].options.type = 'success'; viewModel.materialStoredPopupToolbarItems[1].options.visible = visibleApprovalButton; viewModel.materialStoredPopupToolbarItems[1].options.disabled = viewModel.hasnotModificationPermission; viewModel.materialStoredPopupToolbarItems[1].options.clickAction = this.handlePopupButtonSave; }, handlePopupButtonSave: function () { var promise = postMaterialStoredApproval([viewModel.dataModel]); promise.then(function () { viewModel.popupVisible(false); }); }, getAddedToolbarItemsInPopup: function (e) { var hasnotModificationPermission = e.hasnotModificationPermission, dataViewModel = e.dataViewModel, popupVisible = e.popupVisible; return [{ location: 'after', widget: 'button', options: { text: $G('approval'), icon: 'save', type: 'success', visible: visibleApprovalButton, disabled: hasnotModificationPermission, clickAction: function () { var promise = postMaterialStoredApproval([dataViewModel]); promise.then(function () { popupVisible(false); }); } } }, { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: function () { popupVisible(false); } } } ]; }, }, popupOptions: { } } viewModel = BWA.MaterialStored2(params, viewInfo, options); gridView = viewModel.gridView; viewModel.approvalButtonOptions = { icon: 'add', id: 'create', title: $G('approval'), action: handleApproveSelectedItem, disabled: viewModel.hasnotModificationPermission }; viewModel.visibleApprovalButton = visibleApprovalButton; return viewModel; };