BemsWebApplication.MonthlyStoredReleaseStatus3 = function (params, viewInfo) { "use strict"; var materialClassForSearch = ko.observableArray(); var materialClass = ko.observableArray(); var searchFacilityClassValues = [ko.observable(), ko.observable(), ko.observable()]; var searchFacilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()]; var facilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()]; var MaterialCodeClassDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeClass'); var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true), materialClassDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeClass', true, true), materialTypeDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeType', true, true), tradeCompanyDataSource = BemsWebApplication.db.createDataSource('FmsMaterialTradeCompany', true, true), warehouseDataSource = BemsWebApplication.db.createDataSource('FmsMaterialWarehouse', true, true), locationDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeLocation', true, true); var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter; var materialClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()], businessFields = ko.observableArray(), materialTypes = ko.observableArray(), tradeCompanies = ko.observableArray(), warehouses = ko.observableArray(), locations = ko.observableArray(); var materialClassesForSearch = [ko.observableArray(), ko.observableArray(), ko.observableArray()], materialTypesForSearch = ko.observableArray(), materialClassValuesForSearch = [ko.observable(), ko.observable(), ko.observable()], businessFieldsForSearch = ko.observableArray(), materialTypeIdForSearch = ko.observable(), businessFieldIdForSearch = ko.observable(); var deferredForSearch = new $.Deferred(); var defaultSearchClassArray = $SearchView.createDefaultArray('MaterialClassId'); function initializeSearchClasses(onlyThird) { if (onlyThird === undefined || onlyThird === false) { searchFacilityClasses[1](defaultSearchClassArray.slice(0)); searchFacilityClassValues[1](0); } searchFacilityClasses[2](defaultSearchClassArray.slice(0)); searchFacilityClassValues[2](0); } var handleFirstClassChangedValueInSearchView = function (e) { if (e.value === 0) { initializeSearchClasses(); return; } BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', e.value, searchFacilityClasses[1], defaultSearchClassArray); }; var handleSecondClassChangedValueInSearchView = function (e) { if (searchFacilityClassValues[1]() == null) { initializeSearchClasses(); BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', 0, searchFacilityClasses[1], defaultSearchClassArray); } if (e.value === 0) { initializeSearchClasses(true); return; } BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', e.value, searchFacilityClasses[2], defaultSearchClassArray); }; var tempDate = new Date(); var paramDate = new Date(tempDate.getFullYear(), tempDate.getMonth(), 1, 0, 0, 0, 0); var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsMaterialStockHistoryMonthly', { dataSourceOptions: { store: BemsWebApplication.odata.FmsMaterialStockHistoryMonthly, select: [ 'HistoryId', 'SiteId', 'BusinessFieldId', 'MaterialId', 'MaterialCode', 'MaterialName', 'Unit', 'YearMonth', 'YearMonthDate', 'StoredCount', 'ReleaseCount', 'ReleaseLossCount', 'ReleaseReturnCount', 'FirstClassId', 'SecondClassId', 'ThirdClassId', 'WarehouseId', 'StockCount', 'StockAmount', 'Standard', 'BusinessFieldName' ], filter: [ eq('SiteId', BWA.UserInfo.SiteId()) ], }, columns: [ { dataField: 'HistoryId', caption: $G('number'), width: '10%', alignment: 'center', allowFiltering: false }, { dataField: 'BusinessFieldName', caption: $G('businessFieldName'), width: '15%', alignment: 'center', }, { dataField: 'MaterialCode', caption: '자재코드', width: '20%', alignment: 'center', visible: false }, { dataField: 'FirstClassId', width: '15%', caption: '자재(대)', alignment: 'center', customizeText: function (cellInfo) { for (var i = 1; i < materialClassForSearch().length; i++) { if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) { return materialClassForSearch()[i].Name(); } } } }, { dataField: 'SecondClassId', width: '15%', caption: '자재(중)', alignment: 'center', customizeText: function (cellInfo) { for (var i = 1; i < materialClassForSearch().length; i++) { if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) { return materialClassForSearch()[i].Name(); } } } }, { dataField: 'ThirdClassId', width: '15%', caption: '자재(소)', alignment: 'center', customizeText: function (cellInfo) { for (var i = 1; i < materialClassForSearch().length; i++) { if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) { return materialClassForSearch()[i].Name(); } } } }, { dataField: 'MaterialName', caption: '자재명', width: '20%', alignment: 'center' }, { dataField: 'Standard', caption: '규격', width: '20%', alignment: 'center' }, { dataField: 'Unit', caption: '단위', width: '10%', alignment: 'center' }, { dataField: 'YearMonth', caption: '년/월', width: '15%', alignment: 'center', sortOrder: 'desc', dataType: 'string', customizeText: function (cellInfo) { if (cellInfo.value.getMonth() >= 9) { return cellInfo.value.getFullYear() + "-" + (cellInfo.value.getMonth() + 1); } else { return cellInfo.value.getFullYear() + "-0" + (cellInfo.value.getMonth() + 1); } } }, { dataField: 'StoredCount', caption: '입고수량', width: '15%', alignment: 'center', format: 'fixedPoint' }, { dataField: 'ReleaseCount', caption: '정상출고', width: '15%', alignment: 'center', format: 'fixedPoint' }, { dataField: 'ReleaseLossCount', caption: '조정출고손실', width: '20%', alignment: 'center', format: 'fixedPoint' }, { dataField: 'ReleaseReturnCount', caption: '조정출고반납', width: '20%', alignment: 'center', format: 'fixedPoint' }, { dataField: 'StockCount', caption: '재고수량', width: '15%', alignment: 'center', format: 'fixedPoint' }, { dataField: 'StockAmount', caption: '재고금액', width: '15%', alignment: 'center', format: 'fixedPoint' }, ], paging: { pageSize: 18, enabled: true }, pager:{}, "export": { enabled: true, fileName: '월별 입출고 목록', }, onExporting: function (e) { e.component.columnOption("HistoryId", "visible", false); }, onExported: function (e) { e.component.columnOption("HistoryId", "visible", true); }, wordWrapEnabled: true, searchViewItems: [ { id: 'MaterialCode' }, { id: 'MaterialName' }, { id: 'Standard' }, { id: 'Unit' }, { id: 'YearMonthDate', type: 'dateRange', isOnlyDate: true }, { id: 'FirstClassId', ignoreValue: 0, defaultValue: 0, value: searchFacilityClassValues[0], dataSource: searchFacilityClasses[0], handleChangedValue: handleFirstClassChangedValueInSearchView }, { id: 'SecondClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[1], dataSource: searchFacilityClasses[1], handleChangedValue: handleSecondClassChangedValueInSearchView }, { id: 'ThirdClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[2], dataSource: searchFacilityClasses[2] }, ], promiseDataInSearchView: deferredForSearch.promise(), handleViewShowing: function () { MaterialCodeClassDataSource.filter([ ['SiteId', '=', BWA.UserInfo.SiteId()] ]); $.when( MaterialCodeClassDataSource.load() ).done(function (Result) { materialClass = ko.observableArray(); var cnt = 0; for (var i = 0; i < Result.length; i++) { materialClass.push(Result[i]); if (Result[i].Depth() == 0) { if (cnt == 0) { searchFacilityClasses[0](defaultSearchClassArray.slice(0).concat(Result[i])); cnt++; } else { searchFacilityClasses[0].push(Result[i]); } } } facilityClasses[0](Result[0]); materialClassForSearch($SearchView.createArrayOfSelectBox('MaterialClassId', materialClass())); }); materialClassDataSource.filter([ ['SiteId', '=', BWA.UserInfo.SiteId()], 'and', ['ParentMaterialClassId', '=', null] ]); 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)]); businessFieldDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), and, [eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('BusinessFieldId', 1)] ]); } $.when( businessFieldDataSource.load(), materialClassDataSource.load(), materialTypeDataSource.load(), tradeCompanyDataSource.load(), warehouseDataSource.load(), locationDataSource.load() ).done(function (dbBusinessFields, dbMaterialClasses, dbMaterialTypes, dbTradeCompanies, dbWarehouses, dbLocations) { dbBusinessFields = dbBusinessFields[0]; dbMaterialClasses = dbMaterialClasses[0]; dbMaterialTypes = dbMaterialTypes[0]; dbTradeCompanies = dbTradeCompanies[0]; dbWarehouses = dbWarehouses[0]; dbLocations = dbLocations[0]; materialClasses[0](dbMaterialClasses); materialClassesForSearch[0]($SearchView.createArrayOfSelectBox('MaterialClassId', dbMaterialClasses)); initializeSearchClasses(); businessFields(dbBusinessFields); materialTypes(dbMaterialTypes); tradeCompanies(dbTradeCompanies); warehouses(dbWarehouses); locations(dbLocations); businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', dbBusinessFields)); materialTypesForSearch($SearchView.createArrayOfSelectBox('MaterialTypeId', dbMaterialTypes)); deferredForSearch.resolve(); }); }, handleViewShown: function (dataViewModel, isEditModeInPopup) { }, handleSaveSuccess: function () { }, handleAfterLoadingModelByKey: function (data, dataViewModel, isNewInPopup) { if (isNewInPopup() == false) { BWA.DataUtil.setArrayDataSourceFilter(materialClassDataSource, 'ParentMaterialClassId', dataViewModel.FirstClassId(), materialClasses[1]).done(function () { BWA.DataUtil.setArrayDataSourceFilter(materialClassDataSource, 'ParentMaterialClassId', dataViewModel.SecondClassId(), materialClasses[2]); }); BWA.DataUtil.setArrayDataSourceFilter(warehouseDataSource, 'BusinessFieldId', dataViewModel.BusinessFieldId(), warehouses); } } }); viewModel.handleSelectBoxChangeBusinessField = function (e) { BWA.DataUtil.setArrayDataSourceFilter(warehouseDataSource, 'BusinessFieldId', e.value, warehouses); viewModel.dataModel.WarehouseId(null); } viewModel.handleSelectBoxChangeFirstClass = function (e) { BWA.DataUtil.setArrayDataSourceFilter(materialClassDataSource, 'ParentMaterialClassId', e.value, materialClasses[1]); viewModel.dataModel.SecondClassId(null); viewModel.dataModel.ThirdClassId(null); } viewModel.handleSelectBoxChangeSecondClass = function (e) { BWA.DataUtil.setArrayDataSourceFilter(materialClassDataSource, 'ParentMaterialClassId', e.value, materialClasses[2]); viewModel.dataModel.ThirdClassId(null); } viewModel.dataModel.ClassName = ko.observable(); viewModel.materialClasses = materialClasses; viewModel.materialTypes = materialTypes; viewModel.tradeCompanies = tradeCompanies; viewModel.warehouses = warehouses; viewModel.locations = locations; viewModel.businessFields = businessFields; viewModel.handleFirstClassChangedValueInSearchView = handleFirstClassChangedValueInSearchView; viewModel.handleSecondClassChangedValueInSearchView = handleSecondClassChangedValueInSearchView; return viewModel; };