BemsWebApplication.MaterialReleaseHistory = function (params, viewInfo) { "use strict"; var materialClassForSearch = ko.observableArray(); var materialClass = ko.observableArray(); var MaterialCodeClassDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeClass'); var facilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()]; var searchFacilityClassValues = [ko.observable(), ko.observable(), ko.observable()]; var searchFacilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()]; var first = true; var workResultCheckItemMaterialPopup, popup, addWorkResultCheckItemPopup = null; var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter; var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true), materialClassDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeClass', true, true), warehouseDataSource = BemsWebApplication.db.createDataSource('FmsMaterialWarehouse', true, true), releaseTypeDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeReleaseType'); var materialClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()], businessFields = ko.observableArray(), releaseTypes = ko.observableArray(), warehouses = ko.observableArray(); var materialClassesForSearch = [ko.observableArray(), ko.observableArray(), ko.observableArray()], materialClassValuesForSearch = [ko.observable(), ko.observable(), ko.observable()], businessFieldsForSearch = ko.observableArray(), businessFieldIdForSearch = ko.observable(), warehousesForSearch = ko.observableArray(), releaseTypesForSearch = ko.observableArray(), warehousesIdForSearch = 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 (first == true && e.value == null) { e.value = 0; first = false; searchFacilityClassValues[0](0); } if (e.value === 0) { initializeSearchClasses(); return; } BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', e.value, searchFacilityClasses[1], defaultSearchClassArray); }; var handleSecondClassChangedValueInSearchView = function (e) { if (e.value === 0) { initializeSearchClasses(true); return; } BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', e.value, searchFacilityClasses[2], defaultSearchClassArray); }; var dataSourceOptions = { select: [ 'SiteId', 'BusinessFieldId', 'MaterialId', 'FmsMaterial/MaterialCode', 'FmsMaterial/Name', 'FmsMaterial/Standard', 'FmsMaterial/Unit', 'MaterialReleaseId', 'ReleaseTypeId', 'FmsMaterialCodeReleaseType/Name', 'ReleaseDate', 'MaterialCount', 'WarehouseId', 'FmsWorkResult/WorkerUserId', 'FmsWorkResult/CmUser/Name', 'FmsWorkResult/ConfirmedUserId', 'FmsWorkResult/CmUser1/Name', 'FmsWorkResult/FmsWorkOrder/Title', 'FmsWorkResult/FmsWorkRequest/RequestUserId', 'FmsWorkResult/ConfirmedUserId', 'FmsMaterial/FirstClassId', 'FmsMaterial/SecondClassId', 'FmsMaterial/ThirdClassId', 'CmBusinessField/Name' ], filter: [ ['SiteId', '=', BWA.UserInfo.SiteId()], 'and', ['AdjustmentTypeId', '=', 0] ], expand: [ 'FmsMaterial', 'FmsMaterialCodeReleaseType', 'FmsWorkResult', 'FmsWorkResult/CmUser', 'FmsWorkResult/CmUser1', 'FmsWorkResult/FmsWorkOrder', 'FmsWorkResult/FmsWorkRequest', 'CmBusinessField' ], extendOptions: { forceOriginalField: true } }; var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsMaterialRelease', { dataSourceOptions: dataSourceOptions, columns: [ { dataField: 'MaterialReleaseId', caption: $G('number'), width: '10%', alignment: 'center', allowFiltering: false }, { dataField: 'CmBusinessField/Name', caption: $G('businessFieldName'), width: '15%', alignment: 'center', }, { dataField: 'FmsMaterialCodeReleaseType/Name', caption: '출고구분', width: '15%', alignment: 'center', visible: false }, { dataField: 'FmsWorkResult/FmsWorkOrder/Title', caption: '작업명', width: '40%', alignment: 'center' }, { dataField: 'FmsMaterial/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: 'FmsMaterial/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: 'FmsMaterial/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: 'FmsMaterial/Name', caption: '자재명', width: '20%', alignment: 'center' }, { dataField: 'FmsMaterial/Standard', caption: '규격', width: '20%', alignment: 'center' }, { dataField: 'FmsMaterial/Unit', caption: '단위', width: '10%', alignment: 'center' }, { dataField: 'MaterialCount', caption: '사용수량', width: '15%', alignment: 'center', format: 'fixedPoint' }, { dataField: 'ReleaseDate', caption: '출고일', width: '15%', alignment: 'center', sortOrder: 'desc', dataType: 'string', customizeText: function (cellInfo) { if (cellInfo.value.getMonth() >= 9) { if (cellInfo.value.getDate() >= 10) { return cellInfo.value.getFullYear() + "-" + (cellInfo.value.getMonth() + 1) + "-" + cellInfo.value.getDate(); } else { return cellInfo.value.getFullYear() + "-" + (cellInfo.value.getMonth() + 1) + "-0" + cellInfo.value.getDate(); } } else { if (cellInfo.value.getDate() >= 10) { return cellInfo.value.getFullYear() + "-0" + (cellInfo.value.getMonth() + 1) + "-" + cellInfo.value.getDate(); } else { return cellInfo.value.getFullYear() + "-0" + (cellInfo.value.getMonth() + 1) + "-0" + cellInfo.value.getDate(); } } } }, { dataField: 'FmsWorkResult/CmUser/Name', caption: '작업자', width: '15%', alignment: 'center' }, { dataField: 'FmsWorkResult/CmUser1/Name', caption: '승인자', width: '15%', alignment: 'center' }, ], pager: { }, paging: { pageSize: 18, enabled: true }, searchViewItems: [ { id: 'ReleaseTypeId', ignoreValue: 0, defaultValue: 0, dataSource: releaseTypesForSearch }, { id: 'FmsMaterial/MaterialCode' }, { id: 'FmsMaterial/Name' }, { id: 'FmsMaterial/Standard' }, { id: 'FmsMaterial/Unit' }, { id: 'ReleaseDate', type: 'dateRange', isOnlyDate: true }, { id: 'CmUser/Name' }, { id: 'CmUser1/Name' }, { id: 'FmsMaterial/FirstClassId', ignoreValue: 0, defaultValue: 0, value: searchFacilityClassValues[0], dataSource: searchFacilityClasses[0], handleChangedValue: handleFirstClassChangedValueInSearchView }, { id: 'FmsMaterial/SecondClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FmsMaterial/FirstClassId', value: searchFacilityClassValues[1], dataSource: searchFacilityClasses[1], handleChangedValue: handleSecondClassChangedValueInSearchView }, { id: 'FmsMaterial/ThirdClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FmsMaterial/FirstClassId', value: searchFacilityClassValues[2], dataSource: searchFacilityClasses[2] }, ], "export": { enabled: true, fileName: '자재 사용 내역', }, onExporting: function (e) { e.component.columnOption("MaterialReleaseId", "visible", false); }, onExported: function (e) { e.component.columnOption("MaterialReleaseId", "visible", true); }, 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(), warehouseDataSource.load(), releaseTypeDataSource.load() ).done(function (dbBusinessFields, dbMaterialClasses, dbWarehouses, dbreleaseTypes) { dbBusinessFields = dbBusinessFields[0]; dbMaterialClasses = dbMaterialClasses[0]; dbWarehouses = dbWarehouses[0]; materialClasses[0](dbMaterialClasses); materialClassesForSearch[0]($SearchView.createArrayOfSelectBox('MaterialClassId', dbMaterialClasses)); initializeSearchClasses(); releaseTypes(dbreleaseTypes[0]); businessFields(dbBusinessFields); warehouses(dbWarehouses); releaseTypesForSearch($SearchView.createArrayOfSelectBox('ReleaseTypeId', releaseTypes())); businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', dbBusinessFields)); warehousesForSearch($SearchView.createArrayOfSelectBox('WarehouseId', dbWarehouses)); deferredForSearch.resolve(); }); }, //handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) { //추가 // //dataGrid.clearSelection(); // //var data = clickRow.data; // //var dataModel = viewModel.dataModel; // popupVisible(true); // //workResultCheckItemMaterialPopup.visible(true); //}, handleViewShown: function () { } }); addWorkResultCheckItemPopup = viewModel.addWorkResultCheckItemPopup = BWA.Popup.AddWorkResultCheckItem.create(viewInfo, viewModel); popup = viewModel.popup = BWA.Popup.WorkHistory.create(viewInfo, viewModel); workResultCheckItemMaterialPopup = viewModel.workResultCheckItemMaterialPopup = BWA.Popup.WorkResultCheckItemMaterial.create(viewInfo, viewModel); viewModel.popupOptions.position = { offset: '-200 0' }; viewModel.popupOptions.height = '930px'; viewModel.handleSecondClassChangedValueInSearchView = handleSecondClassChangedValueInSearchView; viewModel.handleFirstClassChangedValueInSearchView = handleFirstClassChangedValueInSearchView; return viewModel; };