BemsWebApplication.EquipHistory = function (params, viewInfo) { "use strict"; var codeTypeDataSource = BemsWebApplication.db.createDataSource('FmsEquipmentCodeType', true, false, true), codeStateTypeDataSource = BemsWebApplication.db.createDataSource('FmsEquipmentCodeStateType', false, false, true), warehouseDataSource = BemsWebApplication.db.createDataSource('FmsMaterialWarehouse', true, false, true); var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter; var equipmentExDataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: { store: BemsWebApplication.odata.FmsEquipmentEx, map: function (item) { return new BemsWebApplication.FmsEquipmentExViewModel(item); } }, filter: ([ eq('SiteId', BWA.UserInfo.SiteId()) ]), }); var codeTypes = ko.observableArray(), codeStateTypes = ko.observableArray(), warehouses = ko.observableArray(), equipmentExs = ko.observableArray(); var IsAdditionalEquipment = ko.observable(false); var codeTypesForSearch = ko.observableArray(), codeStateTypesForSearch = ko.observableArray(), warehousesForSearch = ko.observableArray(); var deferredForSearch = new $.Deferred(); var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsEquipmentHistory', { dataSourceOptions: { select: [ 'SiteId', 'EquipmentHistoryId', 'EquipmentId', 'TotalStockCount', 'CurrentStockCount', 'RentCount', 'CurrentRentCount', 'ReturnCount', 'LossCount', 'StoredCount', 'EquipmentRentId', 'EquipmentStateTypeId', 'AddDate', 'UpdateDate', 'IsReturned', 'FmsEquipment/FmsEquipmentCodeType/Name', 'FmsEquipment/FmsEquipmentCodeType/EquipmentTypeId', 'FmsEquipment/Name', 'FmsEquipment/CmUser/Name', 'FmsEquipmentCodeStateType/Name', 'FmsEquipment/Standard', 'FmsEquipment/Unit', 'FmsEquipmentRentInfo/RentUser', 'FmsEquipmentRentInfo/RentDate', 'FmsEquipmentRentInfo/ReturnDueDate', 'FmsEquipmentRentInfo/ReturnFixDate', 'FmsEquipment/FmsMaterialWarehouse/Name' ], expand: [ 'FmsEquipmentRentInfo/CmUser1', 'FmsEquipment/FmsEquipmentCodeType', 'FmsEquipmentCodeStateType', 'FmsEquipment/CmUser', 'FmsEquipmentRentInfo', 'FmsEquipmentRentInfo/CmUser1', 'FmsEquipment/FmsMaterialWarehouse', ], extendOptions: { forceOriginalField: true } }, columns: [ { dataField: 'EquipmentHistoryId', caption: $G('number'), width: '10%', alignment: 'center', sortOrder: 'desc' }, { dataField: 'FmsEquipmentCodeStateType/Name', caption: '구분', width: '8%', alignment: 'center' }, { dataField: 'FmsEquipment/FmsEquipmentCodeType/Name', caption: '분류', width: '8%', alignment: 'center' }, { dataField: 'FmsEquipment/Name', caption: '공기구명', width: '22%', alignment: 'center' }, { dataField: 'FmsEquipment/Standard', caption: '규격', width: '22%', alignment: 'center' }, { dataField: 'TotalStockCount', caption: '전체수량', width: '10%', alignment: 'center', format: 'fixedPoint' }, { dataField: 'StoredCount', caption: '입고수량', width: '10%', alignment: 'center', format: 'fixedPoint' }, { dataField: 'CurrentRentCount', caption: '대여수량', width: '10%', alignment: 'center', format: 'fixedPoint' }, { dataField: 'ReturnCount', caption: '반납수량', width: '10%', alignment: 'center', format: 'fixedPoint' }, { dataField: 'LossCount', caption: '손실수량', width: '10%', alignment: 'center', format: 'fixedPoint' }, { dataField: 'CurrentStockCount', caption: '보유수량', width: '10%', alignment: 'center', format: 'fixedPoint' }, { dataField: 'AddDate', caption: '등록일', width: '15%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd", customizeText: function (cellInfo) { return cellInfo.valueText; } }, { dataField: 'FmsEquipmentRentInfo/RentUser', caption: '대여자', width: '10%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd", customizeText: function (cellInfo) { return cellInfo.valueText; } }, { dataField: 'FmsEquipmentRentInfo/RentDate', caption: '대여일', width: '14%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd", customizeText: function (cellInfo) { return cellInfo.valueText; } }, { dataField: 'FmsEquipmentRentInfo/ReturnDueDate', caption: '반납예정일', width: '14%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd", customizeText: function (cellInfo) { return cellInfo.valueText; } }, { dataField: 'FmsEquipmentRentInfo/ReturnFixDate', caption: '반납일', width: '14%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd", customizeText: function (cellInfo) { return cellInfo.valueText; } } ], paging: { pageSize: 18, enabled: true }, pager: {}, "export": { enabled: true, fileName: '공기구 이력 목록', }, onExporting: function (e) { e.component.columnOption("EquipmentHistoryId", "visible", false); }, onExported: function (e) { e.component.columnOption("EquipmentHistoryId", "visible", true); }, cellPrepared: function (cellElement, cellInfo) { // 2 보다 큰 경우 대여수 0 if (cellInfo.rowType == 'data') { if (cellInfo.data.EquipmentStateTypeId() > 2) { if (cellInfo.columnIndex == 7) { $(cellElement).text('0'); } } } }, sort: { field: "EquipmentHistoryId", desc: true }, searchViewItems: [ { id: 'FmsEquipment/Name' }, { id: 'FmsEquipment/Standard' }, { id: 'FmsEquipmentRentInfo/RentUser' }, { id: 'EquipmentStateTypeId', ignoreValue: 0, defaultValue: 0, dataSource: codeStateTypesForSearch }, // 구분 { id: 'FmsEquipment/FmsEquipmentCodeType/EquipmentTypeId', ignoreValue: 0, defaultValue: 0, dataSource: codeTypesForSearch }, // 분류 { id: 'AddDate', type: 'dateRange', isOnlyDate: true }, ], popupWidth: 400, handleViewShowing: function (dataModel) { $.when( codeStateTypeDataSource.load(), codeTypeDataSource.load(), warehouseDataSource.load() ).done(function (codeStateTypeResult, codeTypeResult, warehouseResult) { codeStateTypes(codeStateTypeResult[0]); codeTypes(codeTypeResult[0]); warehouses(warehouseResult[0]); codeStateTypesForSearch($SearchView.createArrayOfSelectBox('EquipmentStateTypeId', codeStateTypes())); codeTypesForSearch($SearchView.createArrayOfSelectBox('EquipmentTypeId', codeTypes())); warehousesForSearch($SearchView.createArrayOfSelectBox('WarehouseId', warehouses())); deferredForSearch.resolve(); }); }, handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) { }, handlePopupShowing: function (isNewInPopup, dataViewModel) { // 저장 버튼 viewModel.toolbarItems[4].options.clickAction = this.handlePopupButtonSave; dataViewModel.RegisterUserId = $KoSet(dataViewModel.RegisterUserId, BWA.UserInfo.UserId()); dataViewModel.EquipmentTypeId = ko.observable(); dataViewModel.WarehouseId = ko.observable(); dataViewModel.Unit = ko.observable(); dataViewModel.Standard = ko.observable(); dataViewModel.SupplierName = ko.observable(); dataViewModel.SupplierPhoneNo = ko.observable(); }, handlePopupShown: function (isEditMode, isNew, dataViewModel) { $.when( equipmentExDataSource.load() ).done(function (equipmentExResult) { equipmentExs(equipmentExResult); }); if (isNew) { // 신규등록인 경우 dataViewModel.AddDate($G.date(new Date())); dataViewModel.UpdateDate($G.date(new Date())); dataViewModel.RegisterUserId(BWA.UserInfo.UserId()); dataViewModel.StoredCount(1); } }, handlePopupButtonSave: function () { var dataViewModel = viewModel.dataModel; if (IsAdditionalEquipment()) { if (dataViewModel.EquipmentId() == null) { utils.toast.show('추가입고할 공기구를 선택하세요.', 'error'); return; } } else { if (dataViewModel.EquipmentTypeId() == null) { utils.toast.show('입고할 공기구 분류를 선택하세요.', 'error'); return; } else if (dataViewModel.Name() == null) { utils.toast.show('입고할 공기구 이름을 입력하세요.', 'error'); return; } } if (dataViewModel.WarehouseId() == null) { utils.toast.show('입고될 창고위치를 선택하세요.', 'error'); return; } var parameters = { SiteId: dataViewModel.SiteId(), IsAdditionalEquipment: IsAdditionalEquipment() }; var postData = dataViewModel.toJS(); BWA.api.post('FmsEquipment', postData, parameters).done( function () { utils.toast.show($G('successDatabaseInsertionMsg')); viewModel.popupVisible(false); viewModel.gridView().refresh(); }); } }); function processValueChange(e) { var foundModel = _.find(equipmentExs(), function (x) { return x.EquipmentId() === e.value; }); if (foundModel !== undefined) { var dataViewModel = viewModel.dataModel; dataViewModel.EquipmentId(foundModel.EquipmentId()); dataViewModel.EquipmentTypeId(foundModel.EquipmentTypeId()); dataViewModel.WarehouseId(foundModel.WarehouseId()); dataViewModel.Unit(foundModel.Unit()); dataViewModel.Standard(foundModel.Standard()); dataViewModel.UpdateDate(new Date()); dataViewModel.SupplierName(foundModel.SupplierName()); dataViewModel.SupplierPhoneNo(foundModel.SupplierPhoneNo()); dataViewModel.TotalStockCount(foundModel.TotalStockCount()); dataViewModel.CurrentStockCount(foundModel.CurrentStockCount()); } } viewModel.processValueChange = processValueChange; viewModel.IsAdditionalEquipment = IsAdditionalEquipment; viewModel.equipmentExs = equipmentExs; viewModel.codeTypes = codeTypes; viewModel.codeStateTypes = codeStateTypes; viewModel.warehouses = warehouses; return viewModel; };