BemsWebApplication.MaterialStored2 = function (params, viewInfo, forApprovalOptions) { '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 MenuPermission; var defaultSearchClassArray = $SearchView.createDefaultArray('MaterialClassId'); var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, 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 materialStoredDatSource = BWA.db.createDataSource('FmsMaterialStored', true, true), materials = ko.observableArray(), dataModelMaterial = new BWA.FmsMaterialViewModel(); var materialFactory = BWA.Factory.Material; var materialsForPurchaseOrderDataSource = materialFactory.getBasicDataSourceRef({ dbModeIId: 'FmsMaterialPurchaseOrderMaterial', primaryKeyDataField: 'PurchaseOrderId', moreSelectFields: [ 'FmsMaterial/Unit', 'FmsMaterial/Standard', 'FmsMaterial/TradeCompanyId', 'FmsMaterial/FinalPrice', 'FmsMaterial/FirstClassId', 'FmsMaterial/SecondClassId', 'FmsMaterial/ThirdClassId' ] }); var forApprovalViewOptions, forApprovalPopupOptions, popup; if (_.isObject(forApprovalOptions)) { forApprovalViewOptions = forApprovalOptions.viewOptions; forApprovalPopupOptions = forApprovalOptions.popupOptions; } var materialDataGridOptions = undefined; var materialGridView; var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter; var deferredForSearch = new $.Deferred(); var businessFieldsForSearch = ko.observableArray(), progressesForSearch = ko.observableArray(); var dataSourceOptions = { select: [ 'SiteId', 'BusinessFieldId', 'StoredDate', 'MaterialStoredId', 'PurchaseOrderId', 'StoredCount', 'RemainStoredCount', 'ApprovalDate', 'IsApproval', 'CmBusinessField/Name', 'FmsMaterialWarehouse/Name', 'FmsMaterialPurchaseOrder/Title', 'FmsMaterialPurchaseOrder/Reason', // 2016 01 11 hcLee 추가 'FmsMaterial/MaterialCode', 'FmsMaterial/Name', 'FmsMaterial/Unit', 'FmsMaterial/Standard', 'LocationInWarehouse', 'CmUser/Name', 'CmUser1/Name', 'FmsMaterial/FirstClassId', 'FmsMaterial/SecondClassId', 'FmsMaterial/ThirdClassId' ], expand: [ 'CmBusinessField', 'FmsMaterial', 'FmsMaterialWarehouse', 'FmsMaterialPurchaseOrder', 'CmUser', 'CmUser1' ], filter: [ ['SiteId', '=', BWA.UserInfo.SiteId()], ], extendOptions: { forceOriginalField: true, } }; var viewModel; var viewOptions = { popupWidth: 1600, dataSourceOptions: dataSourceOptions, columns: [ { dataField: 'MaterialStoredId', caption: $G('number'), width: '8%', alignment: 'center', sortOrder: 'desc' }, { dataField: 'CmBusinessField/Name', caption: $G('businessFieldName'), width: '10%', alignment: 'center', }, { dataField: 'FmsMaterial/FirstClassId', width: '12%', 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: '12%', 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: '12%', 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/MaterialCode', caption: $G('materialCode'), width: '20%', alignment: 'center', visible: false }, { dataField: 'FmsMaterial/Name', caption: $G('materialName'), width: '20%', alignment: 'center' }, { dataField: 'FmsMaterial/Standard', caption: '규격', width: '20%', alignment: 'center' }, { dataField: 'FmsMaterial/Unit', caption: $G('unit'), width: '8%', alignment: 'center' }, { dataField: 'StoredCount', caption: $G('storedCount'), width: '11%', alignment: 'center', format: 'fixedPoint' }, { dataField: 'StoredDate', caption: $G('storedDateTime'), width: '20%', alignment: 'center', sortOrder: 'desc', dataType: "shortDate", format: "yyyy-MM-dd hh:mm:ss", customizeText: function (cellInfo) { return cellInfo.valueText; } }, { dataField: 'ApprovalDate', caption: $G('approvalDate'), width: '20%', alignment: 'center', sortOrder: 'desc', dataType: "shortDate", format: "yyyy-MM-dd hh:mm:ss", customizeText: function (cellInfo) { return cellInfo.valueText; } }, { dataField: 'CmUser1/Name', caption: $G('approvalUserName'), width: '8%', alignment: 'center' } ], paging: { pageSize: 18, enabled: true }, pager: {}, "export": { enabled: true, fileName: '자재 입고 목록', }, onExporting: function (e) { e.component.columnOption("MaterialStoredId", "visible", false); }, onExported: function (e) { e.component.columnOption("MaterialStoredId", "visible", true); }, promiseDataInSearchView: deferredForSearch.promise(), searchViewItems: [ { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: businessFieldsForSearch }, { id: 'FmsMaterial/MaterialCode' }, { 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] }, { id: 'FmsMaterial/Name' }, //hcLee 2015 11 18 { id: 'FmsMaterial/Standard' }, { id: 'StoredCount' }, { id: 'CmUser1/Name' }, { id: 'ProgressId', ignoreValue: 0, defaultValue: 0, dataSource: progressesForSearch }, { id: 'StoredDate', type: 'dateRange', isOnlyDate: true }, { id: 'ApprovalDate', type: 'dateRange', isOnlyDate: true }, ], handleViewShowing: function (dataModel) { 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())); }); var useBusinessFiltering = BWA.UserInfo.isDependBusinessField(viewInfo.viewName) this.dataSourceOptions.filter.splice(0, this.dataSourceOptions.filter.length); this.dataSourceOptions.filter.push([eq('SiteId', BWA.UserInfo.SiteId())]); if (useBusinessFiltering) { this.dataSourceOptions.filter.push('and'); this.dataSourceOptions.filter.push([eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId())]); businessFieldDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), 'and', ['BusinessFieldId', '=', BWA.UserInfo.BusinessFieldId()], 'and', ['BusinessFieldId', '<>', 1] ]); } else { this.dataSourceOptions.filter.push('and'); this.dataSourceOptions.filter.push(['BusinessFieldId', '<>', 1]); businessFieldDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), 'and', ['BusinessFieldId', '<>', 1], ]); } for (var i = 0; i < BWA.UserInfo.MenuPermissions().length; i++) { if (BWA.UserInfo.MenuPermissions()[i].MenuId == 'MaterialStored2') { MenuPermission = BWA.UserInfo.MenuPermissions()[i].MenuPermission; break; } } if (MenuPermission >= 4) { warehouseDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), and, eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), and, eq('IsUse', true), and, ['BusinessFieldId', '<>', 1], ]); } else { warehouseDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), 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 () { }, handlePopupShown: function (isEditMode, isNew, dataViewModel) { var warehouses = viewModel.warehouses(); if (!_.isEmpty(warehouses)) { dataViewModel.WarehouseId(warehouses[0].WarehouseId()); } if (isEditMode) { if (isNew) { dataViewModel.IsApproval(false); } var userInfo = BWA.UserInfo; } }, handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) { dataGrid.clearSelection(); var data = clickRow.data; var dataModel = viewModel.dataModel; if (forApprovalViewOptions && forApprovalViewOptions.handleBeforeShowingPopupForEdit) { forApprovalViewOptions.handleBeforeShowingPopupForEdit(data, dataModel); } dataModel.BusinessFieldName = $KoSet(dataModel.BusinessFieldName, data['CmBusinessField/Name']); dataModel.StoredUserName = $KoSet(dataModel.StoredUserName, data['CmUser/Name']); dataModel.PurchaseOrderTitle = $KoSet(dataModel.PurchaseOrderTitle, data['FmsMaterialPurchaseOrder/Title']); //hcLee 2016 01 11 dataModel.PurchaseOrderReason = $KoSet(dataModel.PurchaseOrderReason, data['FmsMaterialPurchaseOrder/Reason']); dataModel.ApprovalUserName = $KoSet(dataModel.ApprovalUserName, data['CmUser1/Name']); dataModel.WarehouseName = $KoSet(dataModel.WarehouseName, data['FmsMaterialWarehouse/Name']); dataModelMaterial.FirstClassId(data['FmsMaterial/FirstClassId']()); dataModelMaterial.SecondClassId(data['FmsMaterial/SecondClassId']()); dataModelMaterial.ThirdClassId(data['FmsMaterial/ThirdClassId']()); dataModelMaterial.Name(data['FmsMaterial/Name']()); dataModelMaterial.Unit(data['FmsMaterial/Unit']()); dataModelMaterial.Standard(data['FmsMaterial/Standard']()); popupVisible(true); }, handleAfterLoadingModelByKey: function (data, dataViewModel) { loadMaterials(dataViewModel); }, // 팝업 화면이 나타날때 발생하는 이벤트 handlePopupShowing: function (isNewInPopup) { var userInfo = BWA.UserInfo; if (isNewInPopup()) { materials([]); viewModel.dataModel.BusinessFieldId(userInfo.BusinessFieldId()); viewModel.dataModel.StoredUserId(userInfo.UserId()); viewModel.dataModel.StoredUserName(userInfo.Name()); viewModel.dataModel.StoredDate(new Date()); } } }; 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); } }, }); } 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); }; function loadMaterials(dataViewModel) { var materialStoredId = dataViewModel.MaterialStoredId(); materialsForPurchaseOrderDataSource.filter([ eq('SiteId', dataViewModel.SiteId()), and, eq('BusinessFieldId', dataViewModel.BusinessFieldId()), and, eq('PurchaseOrderId', dataViewModel.PurchaseOrderId()) ]); materialStoredDatSource.filter([ eq('SiteId', dataViewModel.SiteId()), and, eq('BusinessFieldId', dataViewModel.BusinessFieldId()), and, eq('PurchaseOrderId', dataViewModel.PurchaseOrderId()) ]); materialStoredDatSource.load().done(function (dbStoredMaterials) { materialsForPurchaseOrderDataSource.load().done(function (dbMaterials) { materials(_.map(dbMaterials, function (m) { m.Unit = m.Unit(); m.Standard = m.Standard(); m.UnitCost = m['FmsMaterial/FinalPrice']; m.FirstClassId = m.FirstClassId(); m.SecondClassId = m.SecondClassId(); m.ThirdClassId = m.ThirdClassId(); if (m.UnitCost() === null) { m.UnitCost(0); } m.StoredCount = ko.observable(0); m.PossibleStoredCount = ko.observable(0); if (_.isEmpty(dbStoredMaterials)) { m.PossibleStoredCount(m.MaterialCount()); } // 입고가능수량 계산 var currentStoredCountSum = 0; dbStoredMaterials.forEach(function (item) { if (m.MaterialId() == item.MaterialId() && item.StockCount !== undefined) { currentStoredCountSum += item.StoredCount(); } }); m.PossibleStoredCount(m.MaterialCount() - currentStoredCountSum); dbStoredMaterials.forEach(function (item) { if (m.MaterialId() == item.MaterialId() && item.MaterialStoredId() == materialStoredId) { if (item.StoredCount === undefined) { m.StoredCount(0); } else { m.StoredCount(item.StoredCount()); } return false; } }); return m; })); }); }); } function loadMaterialsInPurchaseOrder(purchaseOrder) { materialsForPurchaseOrderDataSource.filter([ eq('SiteId', purchaseOrder.SiteId), and, eq('BusinessFieldId', purchaseOrder.BusinessFieldId), and, eq('PurchaseOrderId', purchaseOrder.PurchaseOrderId) ]); // 선택된 구매요청에 대한 자재들을 로드한다. var promise = materialsForPurchaseOrderDataSource.load(); promise.then(function (dbMaterials) { var companies = []; materialStoredDatSource.filter([ eq('SiteId', purchaseOrder.SiteId), and, eq('BusinessFieldId', purchaseOrder.BusinessFieldId), and, eq('PurchaseOrderId', purchaseOrder.PurchaseOrderId) ]); materialStoredDatSource.load().done(function (dbStoredMaterials) { materials(_.map(dbMaterials, function (m) { m.Unit = m.Unit; m.Standard = m.Standard; m.UnitCost = m['FmsMaterial/FinalPrice']; m.FirstClassId = m.FirstClassId; m.SecondClassId = m.SecondClassId; m.ThirdClassId = m.ThirdClassId; m.MaxMaterialCount = ko.observable(); m.StoredCount = ko.observable(); m.PossibleStoredCount = ko.observable(); if (_.isEmpty(dbStoredMaterials)) { m.PossibleStoredCount(m.MaterialCount()); } // 입고가능수량 계산 var currentStoredCountSum = 0; dbStoredMaterials.forEach(function (item) { if (m.MaterialId() == item.MaterialId() && item.StockCount !== undefined) { currentStoredCountSum += item.StoredCount(); } }); m.PossibleStoredCount(m.MaterialCount() - currentStoredCountSum); m.MaxMaterialCount(m.MaterialCount() - currentStoredCountSum); if (m.UnitCost() === null) { m.UnitCost(0); } m.StoredCount(m.PossibleStoredCount()); return m; })); }); }); } function handlePopupButtonClose() { viewModel.popupVisible(false); viewModel.gridView().refresh(); } function handlePopupButtonCancel() { viewModel.popupVisible(false); } function handlePopupButtonEdit() { } function handlePopupButtonDelete() { } viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsMaterialStored', viewOptions); var materialStoredPopupToolbarItems = [ { location: 'before', text: '입고 등록' }, { location: 'after', widget: 'button', options: { text: $G('approval'), icon: 'save', type: 'success', visible: viewModel.visibleApprovalButton, disabled: viewModel.hasnotModificationPermission, clickAction: function () { } } }, { location: 'after', widget: 'button', options: { text: '입고', icon: 'save', visible: viewModel.isEditModeInPopup, clickAction: handlePopupButtonSave } }, { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: materialStoredPopupButtonClose } } ]; function materialStoredPopupButtonClose() { viewModel.popupVisible(false); } function handlePopupButtonSave() { if (viewModel.isNewInPopup()) { var selectedRowCount = materialGridView.getSelectedRowsData().length; if (selectedRowCount == 0) { utils.toast.show('입고하려는 자재를 선택하시기 바랍니다.', 'error'); return; } for (var i = 0; i < selectedRowCount; i++) { if (materialGridView.getSelectedRowsData()[i].PossibleStoredCount() < materialGridView.getSelectedRowsData()[i].StoredCount()) { utils.toast.show('입고가능수량을 초과하였습니다.', 'error'); return; } if (materialGridView.getSelectedRowsData()[i].StoredCount() <= 0) { utils.toast.show('입고수량은 최소1개 이상입니다.', 'error'); return; } } for (var i = 0; i < selectedRowCount; i++) { viewModel.dataModel.MaterialId(materialGridView.getSelectedRowsData()[i].MaterialId()); viewModel.dataModel.UnitCost(materialGridView.getSelectedRowsData()[i].UnitCost()) viewModel.dataModel.StoredCount(materialGridView.getSelectedRowsData()[i].StoredCount()); viewModel.dataModel.RemainStoredCount(materialGridView.getSelectedRowsData()[i].StoredCount()); var postData = viewModel.dataModel.toJS(); BWA.api.post('FmsMaterialStored/Store', viewModel.dataModel.toJS()).then(function () { utils.toast.show($G('successDatabaseProcessMsg')); viewModel.gridView().refresh(); //var purchaseOrder = { // SiteId: viewModel.dataModel.SiteId(), // BusinessFieldId: viewModel.dataModel.BusinessFieldId(), // PurchaseOrderId: viewModel.dataModel.PurchaseOrderId(), //}; //loadMaterialsInPurchaseOrder(purchaseOrder); }); } } viewModel.popupVisible(false); } viewModel.handleButtonSearchPurchaseOrder = function () { viewModel.purchaseOrderSearchPopup.show(); }; viewModel.purchaseOrderSearchPopup = BWA.Popup.PurchaseOrderSearch.create(viewModel, { filter: [ eq('SiteId', BWA.UserInfo.SiteId()) ], onSelectedPurchaseOrder: function (purchaseOrder) { var purchaseOrderId = purchaseOrder.PurchaseOrderId; loadMaterialsInPurchaseOrder(purchaseOrder); viewModel.dataModel.PurchaseOrderId(purchaseOrder.PurchaseOrderId); viewModel.dataModel.PurchaseOrderTitle(purchaseOrder.Title); // hcLee 2016 01 11 viewModel.dataModel.PurchaseOrderReason(purchaseOrder.Reason); // JD Comment : 구매목록이 선택되면 비즈니스 필드를 변경 viewModel.dataModel.BusinessFieldId(purchaseOrder.BusinessFieldId); var result = $.grep(businessFields(), function (e) { return e.BusinessFieldId() == purchaseOrder.BusinessFieldId; }); if (result.length != 0) { viewModel.dataModel.BusinessFieldName(result[0].Name()); } // hcLee 2016 05 02 창고도 변경 for (var i = 0; i < BWA.UserInfo.MenuPermissions().length; i++) { if (BWA.UserInfo.MenuPermissions()[i].MenuId == 'MaterialStored') { MenuPermission = BWA.UserInfo.MenuPermissions()[i].MenuPermission; break; } } if (MenuPermission >= 4) { warehouseDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), and, eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), and, eq('IsUse', true), and, ['BusinessFieldId', '<>', 1], ]); } else { warehouseDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), and, eq('IsUse', true), and, ['BusinessFieldId', '<>', 1], ]); } $.when( warehouseDataSource.load()) .done(function (dbWarehouses) { viewModel.warehouses(dbWarehouses); var warehouses = viewModel.warehouses(); if (!_.isEmpty(warehouses)) { viewModel.dataModel.WarehouseId(warehouses[0].WarehouseId()); } deferredForSearch.resolve(); }); // hcLee 2016 05 02 창고도 변경 } }); viewModel.popupVisible.subscribe(function (visible) { if (!visible) { materials([]); } }); viewModel.materialStoredPopupToolbarItems = materialStoredPopupToolbarItems; viewModel.dataModel.PurchaseOrderTitle = ko.observable(); // 2016 01 11 viewModel.dataModel.PurchaseOrderReason = ko.observable(); viewModel.dataModel.BusinessFieldName = ko.observable(); viewModel.dataModel.ProgressName = ko.observable(); viewModel.dataModel.StoredUserName = ko.observable(); viewModel.dataModel.WarehouseName = ko.observable(); viewModel.dataModelMaterial = dataModelMaterial; viewModel.businessFields = businessFields; viewModel.warehouses = warehouses; viewModel.materialDataGridOptions = utils.datagrid.defaultOptions({ width: 970, visible: true, selection: { mode: 'multiple', allowSelectAll: true }, // hcLee 2015 11 26추가 pager: { //showPageSizeSelector: false, //allowedPageSizes: [] }, paging: { pageSize: 15, enabled: true }, dataSource: materials, columns: materialFactory.getColumns([ { dataField: 'MaterialCode', width: '25%', 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: 'Name', width: '30%' }, { dataField: 'Standard', width: '30%', alignment: 'center', caption: '규격' }, { dataField: 'Unit', width: '15%', alignment: 'center', caption: '단위' }, { dataField: 'MaterialCount', width: '15%', alignment: 'center', caption: '발주수량', format: 'currency' }, { dataField: 'PossibleStoredCount', width: '25%', alignment: 'center', caption: '입고가능수량', format: 'currency' }, { dataField: 'StoredCount', width: '15%', alignment: 'center', caption: '입고수량', cellTemplate: utils.datagrid.getNumberBoxDataGridTemplateFunc({ min: 0, max: 1000000, dataField: 'StoredCount', convertValueWhenValueChanged: function (value) { return Math.max(1, value); } }) }, { dataField: 'UnitCost', width: '15%', alignment: 'center', caption: $G('unitCost'), format: 'currency' } ]), cellClick: function (e) { if (viewModel.isEditModeInPopup()) { utils.datagrid.cellClickEventForDataGridTemplate(e, 'StoredCount'); } }, contentReadyAction: function (e) { materialGridView = e.component; }, rowPrepared: function (rowElement, rowInfo) { if (rowInfo.rowType == 'data') { var data = rowInfo.data; if (data.MaterialId() === viewModel.dataModel.MaterialId()) { var color; if (data.MaterialCount() === viewModel.dataModel.StoredCount()) { color = 'rgba(0,255,0,0.1)'; } else { color = 'rgba(255,0,0,0.1)'; } rowElement.css('background-color', color); } } }, rowClick: function (clickRow) { var data = clickRow.data; if (viewModel.isEditModeInPopup()) { dataModelMaterial.MaterialId(data.MaterialId()); dataModelMaterial.Name(data.Name()); dataModelMaterial.Unit(data.Unit()); dataModelMaterial.ThirdClassId(data.ThirdClassId()); dataModelMaterial.FirstClassId(data.FirstClassId()); dataModelMaterial.SecondClassId(data.SecondClassId()); dataModelMaterial.Standard(data.Standard()); viewModel.dataModel.StoredCount(data.StoredCount()); viewModel.dataModel.UnitCost(data.UnitCost()); } } }); viewModel.popup = popup; viewModel.handleSecondClassChangedValueInSearchView = handleSecondClassChangedValueInSearchView; viewModel.handleFirstClassChangedValueInSearchView = handleFirstClassChangedValueInSearchView; viewModel.facilityClasses = facilityClasses; return viewModel; };