BemsWebApplication.MaterialWarehouse = function(params, viewInfo) { 'use strict'; var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true); var businessFieldsForSearch = ko.observableArray(), BusinessFieldName = ko.observableArray(), businessFields = ko.observableArray(); var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter; var deferredForSearch = new $.Deferred(); var MaterialWarehouseInfo = ko.observableArray(); var FmsMaterialWarehouseDataSource = BemsWebApplication.db.createDataSource('FmsMaterialWarehouse'); var RowBusinessFieldId, RowName; var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsMaterialWarehouse', { dataSourceOptions: { select: ['SiteId', 'WarehouseId', 'BusinessFieldId', 'Name', 'IsUse', 'CmBusinessField/Name'], expand: ["CmBusinessField"], extendOptions: { forceOriginalField: true }, filter: [ eq('SiteId', BWA.UserInfo.SiteId()), // 2016 05 02 hcLee and, ['BusinessFieldId', '<>', 1], ] }, columns: [ { dataField: 'WarehouseId', caption: $G('number'), width: '20%', alignment: 'center' ,sortOrder:'desc' }, { dataField: 'CmBusinessField/Name', caption: $G('businessField'), width: '20%', alignment: 'center' }, { dataField: 'Name', caption: $G('warehouseName'), width: '40%', alignment: 'center' }, utils.datagrid.columnIsUse('20%') ], searchViewItems: [ { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: businessFieldsForSearch }, { id: 'Name' } ], promiseDataInSearchView: deferredForSearch.promise(), handleViewShowing: function (dataModel) { var useBusinessFiltering = BWA.UserInfo.isDependBusinessField(viewInfo.viewName) if (useBusinessFiltering) { this.dataSourceOptions.filter.push('and'); //this.dataSourceOptions.filter.push([eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('BusinessFieldId', 1)]); this.dataSourceOptions.filter.push([eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId())]); businessFieldDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), and, //[eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('BusinessFieldId', 1)] [eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'and', ['BusinessFieldId', '<>', 1]] ]); } else { businessFieldDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), and, ['BusinessFieldId', '<>', 1]]); } businessFieldDataSource.load().done(function (dbBusinessFields) { businessFields(dbBusinessFields); businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', dbBusinessFields)); }); }, handleViewShown: function() { }, handleDataGridRowClick: function(id, dataGrid, clickRow, popupVisible) { dataGrid.clearSelection(); var data = clickRow.data; var dataModel = viewModel.dataModel; BusinessFieldName($KoSet(dataModel.BusinessFieldName, data['CmBusinessField/Name'])); RowName = data.Name; RowBusinessFieldId = data.BusinessFieldId; popupVisible(true); }, popupWidth: 480, // 이름 중복 방지 handlePopupShowing: function () { FmsMaterialWarehouseDataSource.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()] ]); FmsMaterialWarehouseDataSource.load().done(function (result) { MaterialWarehouseInfo(result); }); }, beforeInsertingDataViewModel: function (dataModel, dbModelId) { var dfd = $.Deferred(); var isDuplicated = false; for (var i = 0; i < MaterialWarehouseInfo().length; i++) { if (dataModel.Name() == MaterialWarehouseInfo()[i].Name() && dataModel.BusinessFieldId() == MaterialWarehouseInfo()[i].BusinessFieldId()) { isDuplicated = true; } } if (!BWA.DataUtil.isValidInputValue(dataModel.Name())) return dfd.resolve(false, '저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)'); else { if (isDuplicated) return dfd.resolve(false, '동일 정보가 존재합니다.'); else return dfd.resolve(true); } }, beforeUpdateDataViewModel: function () { var isDuplicated = false; for (var i = 0; i < MaterialWarehouseInfo().length; i++) { if (viewModel.dataModel.Name() == MaterialWarehouseInfo()[i].Name() && viewModel.dataModel.BusinessFieldId() == MaterialWarehouseInfo()[i].BusinessFieldId() && (RowName() != MaterialWarehouseInfo()[i].Name() || RowBusinessFieldId() != MaterialWarehouseInfo()[i].BusinessFieldId())) { isDuplicated = true; } } if (!BWA.DataUtil.isValidInputValue(viewModel.dataModel.Name())) { utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error'); return 0; } else { if (isDuplicated) { utils.toast.show('동일 정보가 존재합니다.', 'error'); return 0; } else return 2; } } }); viewModel.businessFields = businessFields; viewModel.BusinessFieldName = BusinessFieldName; return viewModel; };