BemsWebApplication.MaterialStored = function(params, viewInfo, forApprovalOptions) { 'use strict'; var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true), materialDataSource = BemsWebApplication.db.createDataSource('FmsMaterial', true, true), warehouseDataSource = BWA.db.createDataSource('FmsMaterialWarehouse', true, true), progressDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeProgress'), warehouses = ko.observableArray(), businessFields = ko.observableArray() ; var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter; var forApprovalViewOptions, forApprovalPopupOptions, popup ; if (_.isObject(forApprovalOptions)) { forApprovalViewOptions = forApprovalOptions.viewOptions; forApprovalPopupOptions = forApprovalOptions.popupOptions; } var deferredForSearch = new $.Deferred(); var businessFieldsForSearch = ko.observableArray(), progressesForSearch = ko.observableArray() ; var viewModel; var viewOptions = { popupWidth: 1300, dataSourceOptions: { select: [ 'SiteId', 'BusinessFieldId', 'StoredDate', 'MaterialStoredId', 'PurchaseRequestId', 'StoredCount', 'ApprovalDate', 'IsApproval', 'CmBusinessField/Name', 'FmsMaterialWarehouse/Name', 'FmsMaterialPurchaseRequest/Title', 'FmsMaterialPurchaseRequest/ProgressId', 'FmsMaterialPurchaseRequest/FmsMaterialCodeProgress/Name', 'FmsMaterial/MaterialCode', 'FmsMaterial/Name', 'FmsMaterial/Unit', 'FmsMaterial/Standard', 'CmUser/Name', 'CmUser1/Name' ], expand: [ 'CmBusinessField', 'FmsMaterial', 'FmsMaterialWarehouse', 'FmsMaterialPurchaseRequest', 'FmsMaterialPurchaseRequest/FmsMaterialCodeProgress', 'CmUser', 'CmUser1' ], extendOptions: { forceOriginalField: true, // FK 순서상 CmUser : StoredUserId, CmUser1: ApprovalUserId } }, columns: [ { dataField: 'MaterialStoredId', caption: $G('number'), width: '8%', alignment: 'center', sortOrder: 'desc' }, { dataField: 'CmBusinessField/Name', caption: $G('businessFieldName'), width: '10%', alignment: 'center' }, { dataField: 'StoredDate', caption: $G('storedDateTime'), width: '20%', alignment: 'center', customizeText: utils.datagrid.customizeTextForDateTimeFunc }, { dataField: 'FmsMaterialPurchaseRequest/FmsMaterialCodeProgress/Name', caption: $G('progressStatus'), width: '10%', alignment: 'center' }, { dataField: 'FmsMaterial/MaterialCode', caption: $G('materialCode'), width: '20%', alignment: 'center' }, { dataField: 'FmsMaterial/Name', caption: $G('materialName'), width: '20%', alignment: 'center' }, { dataField: 'FmsMaterial/Unit', caption: $G('unit'), width: '8%', alignment: 'center' }, { dataField: 'StoredCount', caption: $G('storedCount'), width: '8%', alignment: 'center' }, { dataField: 'ApprovalDate', caption: $G('approvalDate'), width: '20%', alignment: 'center', customizeText: utils.datagrid.customizeTextForDateTimeFunc }, { dataField: 'CmUser1/Name', caption: $G('approvalUserName'), width: '8%', alignment: 'center' } ], promiseDataInSearchView: deferredForSearch.promise(), searchViewItems: [ { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: businessFieldsForSearch }, { id: 'StoredDate', type: 'dateRange', isOnlyDate: true }, { id: 'FmsMaterial/MaterialTypeId' }, { id: 'FmsMaterial/Name' , filterFormatString: 'FmsMaterialPurchaseRequestMaterial/any(c: substringof(\'{0}\', c/FmsMaterial/Name))', type: 'formatting' }, { id: 'CmUser/Name' }, { id: 'ProgressId', ignoreValue: 0, defaultValue: 0, dataSource: progressesForSearch }, ], handleDataGridRowClick: function(id, dataGrid, clickRow, popupVisible) { dataGrid.clearSelection(); var data = clickRow.data; var dataModel = viewModel.dataModel; if (forApprovalViewOptions && forApprovalViewOptions.handleBeforeShowingPopupForEdit) { forApprovalViewOptions.handleBeforeShowingPopupForEdit(data, dataModel); } if (popup && popup.handleBeforeShowingPopupForEdit) { popup.handleBeforeShowingPopupForEdit(data, dataModel); } popupVisible(true); }, handleAfterLoadingModelByKey: function(data, dataViewModel) { if (popup && popup.handleAfterLoadingModelByKey) { popup.handleAfterLoadingModelByKey(data, dataViewModel); } }, handlePopupShowing: function(isNewInPopup, dataViewModel) { if (popup && popup.handlePopupShowing) { popup.handlePopupShowing(isNewInPopup, dataViewModel); } }, handlePopupShown: function(editMode, isNew, dataViewModel) { if (popup && popup.handlePopupShown) { popup.handlePopupShown(editMode, isNew, dataViewModel); } }, handleViewShowing: function(dataModel) { warehouseDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), and, eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), and, eq('IsUse', true), and, ['BusinessFieldId', '<>', 1], ]) $.when( businessFieldDataSource.load(), warehouseDataSource.load(), progressDataSource.load()) .done(function(dbBusinessField, dbWarehouses, dbProgresses) { dbBusinessField = dbBusinessField[0]; dbWarehouses = dbWarehouses[0]; dbProgresses = dbProgresses[0]; businessFields(dbBusinessField); warehouses(dbWarehouses); businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', dbBusinessField)); progressesForSearch($SearchView.createArrayOfSelectBox('ProgressId', dbProgresses)); deferredForSearch.resolve(); }); }, handleViewShown: function() { } }; if (_.isObject(forApprovalViewOptions)) { _.extend(viewOptions, forApprovalViewOptions); } else { // 승인 화면이 아니면 수정에 관련 기능이 필요없다. _.extend(viewOptions, { isValidateWithFunction: function(errorMessage) { if (popup && popup.isValidateWithFunction) { return popup.isValidateWithFunction(errorMessage); } return true; }, mandatoryFields: [ { dataField: 'PurchaseRequestId', name: $G('purchaseRequest') }, { dataField: 'MaterialId', name: $G('materialName') }, { dataField: 'WarehouseId', name: $G('warehouseName') }, { dataField: 'StoredCount', name: $G('storedCount') } ], handleSaveButtonInPopup: function(isInsert) { if (isInsert === false) { if (popup && popup.handleAfterSave) { popup.handleAfterSave(undefined); } } }, handleAfterSaveInPopup: function(responseKey, response) { if (popup && popup.handleAfterSave) { popup.handleAfterSave(responseKey, response); } }, }); } viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsMaterialStored', viewOptions); viewModel.businessFields = businessFields; viewModel.warehouses = warehouses; var isUsePopup = forApprovalPopupOptions && forApprovalPopupOptions.isUsePopup !== false; if ((forApprovalPopupOptions && _.isFunction(forApprovalPopupOptions.popupCreatorFunc))) { popup = viewModel.popup = forApprovalPopupOptions.popupCreatorFunc(viewInfo, viewModel, forApprovalPopupOptions); } else { popup = viewModel.popup = BWA.Popup.MaterialStored.create(viewInfo, viewModel, forApprovalPopupOptions); } return viewModel; };