BemsWebApplication.EquipReturnInfo2 = 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 equipments = ko.observableArray(), equipmentGridView, equipmentDataGridOptions = undefined; var equipmentRentDataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: { select: [ 'SiteId', 'EquipmentHistoryId', 'EquipmentId', 'TotalStockCount', 'CurrentStockCount', 'RentCount', 'CurrentRentCount', 'ReturnCount', 'LossCount', 'StoredCount', 'EquipmentRentId', 'EquipmentStateTypeId', 'AddDate', 'UpdateDate', 'FmsEquipment/WarehouseId', 'FmsEquipment/Unit', 'FmsEquipment/Standard', 'FmsEquipment/Name', 'FmsEquipmentCodeStateType/Name', 'FmsEquipment/Standard', 'FmsEquipmentRentInfo/Title', 'FmsEquipmentRentInfo/RentUser', // 대여자 'FmsEquipmentRentInfo/RentDate', 'FmsEquipmentRentInfo/ReturnDueDate' ], expand: ['FmsEquipment', 'FmsEquipmentRentInfo', 'FmsEquipmentRentInfo/CmUser1', 'FmsEquipmentCodeStateType'], extendOptions: { forceOriginalField: true }, filter: [ ['SiteId', '=', BWA.UserInfo.SiteId()], 'and', ['IsReturned', '=', false] ], paginate: false, // 페이징을 하지 않음 } }, 'FmsEquipmentHistory'); var codeTypes = ko.observableArray(), codeStateTypes = ko.observableArray(), warehouses = ko.observableArray(), equipmentExs = ko.observableArray(); 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: [ 'FmsEquipment/FmsEquipmentCodeType', 'FmsEquipmentCodeStateType', 'FmsEquipment/CmUser', 'FmsEquipmentRentInfo', 'FmsEquipmentRentInfo/CmUser1', 'FmsEquipment/FmsMaterialWarehouse', ], extendOptions: { forceOriginalField: true }, filter: [ eq('SiteId', BWA.UserInfo.SiteId()), 'and', [['EquipmentStateTypeId', '>=', 3], 'and', ['EquipmentStateTypeId', '<=', 5]] ] }, columns: [ { dataField: 'EquipmentHistoryId', caption: $G('number'), width: '10%', alignment: 'center' }, { dataField: 'FmsEquipmentCodeStateType/Name', caption: '구분', width: '10%', alignment: 'center' }, { dataField: 'FmsEquipment/FmsEquipmentCodeType/Name', caption: '분류', width: '10%', alignment: 'center' }, { dataField: 'FmsEquipment/Name', caption: '공기구명', width: '22%', alignment: 'center' }, { dataField: 'FmsEquipment/Standard', caption: '규격', width: '22%', alignment: 'center' }, { dataField: 'FmsEquipment/Unit', caption: '단위', width: '11%', alignment: 'center' }, { dataField: 'ReturnCount', caption: '반납수량', width: '10%', alignment: 'center', format: 'fixedPoint' }, { dataField: 'LossCount', caption: '손실수량', width: '10%', alignment: 'center', format: 'fixedPoint' }, { dataField: 'UpdateDate', caption: '등록일', width: '20%', alignment: 'center', sortOrder: 'desc', dataType: "shortDate", format: "yyyy-MM-dd hh:mm:ss", customizeText: function (cellInfo) { return cellInfo.valueText; } }, { dataField: 'FmsEquipmentRentInfo/RentUser', caption: '대여자', width: '15%', alignment: 'center' }, { dataField: 'FmsEquipment/CmUser/Name', caption: '관리자', width: '10%', alignment: 'center', visible: false } ], 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); }, 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: 'UpdateDate', type: 'dateRange', isOnlyDate: true }, ], popupWidth: 950, 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) { // 저장 버튼 dataViewModel.ReturnCount(0); dataViewModel.LossCount(0); dataViewModel.Title(''); dataViewModel.RentUser(''); dataViewModel.RentDate(''); dataViewModel.ReturnDueDate(''); dataViewModel.CurrentRentCount(''); dataViewModel.EquipmentId(0); dataViewModel.EquipmentRentId(0); dataViewModel.SiteId(0); }, handlePopupShown: function (isEditMode, isNew, dataViewModel) { $.when( equipmentRentDataSource.load() ).done(function (equipmentRentInfoResult) { equipments(equipmentRentInfoResult); }); } }); var equipPopupToolbarItems = [ { location: 'before', text: '공기구 반납/손실' }, { location: 'after', widget: 'button', options: { text: $G('save'), icon: 'save', visible: viewModel.isEditModeInPopup, clickAction: handlePopupButtonSave } }, { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: equipPopupButtonClose } } ]; function handlePopupButtonSave() { var dataViewModel = viewModel.dataModel; if (dataViewModel.LossCount() == null || dataViewModel.ReturnCount() == null) { utils.toast.show('반납/손실 수량을 확인하시기 바랍니다.2', 'warning'); return; } if (dataViewModel.LossCount() == 0 && dataViewModel.ReturnCount() == 0) { utils.toast.show('반납/손실 수량을 확인하시기 바랍니다.', 'warning'); return; } if (dataViewModel.CurrentRentCount() < (dataViewModel.LossCount() + dataViewModel.ReturnCount())) { utils.toast.show('현재 대여 수량보다 반납/손실 수량이 더 많습니다. 반납/손실 수량을 확인하시기 바랍니다.', 'warning'); return; } var postData = dataViewModel.toJS(); BWA.api.post('FmsEquipmentHistory/AddHistory', postData).done( function () { viewModel.gridView().refresh(); utils.toast.show($G('successDatabaseProcessMsg')); viewModel.popupVisible(false); }); } function equipPopupButtonClose() { viewModel.popupVisible(false); } function processValueChange(e) { } equipmentDataGridOptions = utils.datagrid.defaultOptions({ width: 900, visible: true, pager: { showPageSizeSelector: false, allowedPageSizes: [] }, dataSource: equipments, columns: [ { dataField: 'FmsEquipment/Name', caption: '공기구명', width: '27%', alignment: 'center' }, { dataField: 'FmsEquipment/Standard', caption: '규격', width: '27%', alignment: 'center' }, { dataField: 'FmsEquipment/Unit', caption: '단위', width: '13%', alignment: 'center' }, { dataField: 'CurrentRentCount', caption: '대여수량', width: '13%', alignment: 'center' }, { dataField: 'FmsEquipmentRentInfo/RentUser', caption: '대여자', width: '14%', alignment: 'center' }, { dataField: 'FmsEquipmentRentInfo/RentDate', caption: '대여일', width: '18%', alignment: 'center', sortOrder: 'desc', customizeText: function (cellInfo) { return $G.date(cellInfo.value); } }, { dataField: 'FmsEquipmentRentInfo/ReturnDueDate', caption: '반납예정일', width: '18%', alignment: 'center', customizeText: function (cellInfo) { return $G.date(cellInfo.value); } }, ], paging: { pageSize: 8 }, contentReadyAction: function (e) { equipmentGridView = e.component; }, rowClick: function (clickRow) { var data = clickRow.data; var dataModel = viewModel.dataModel; viewModel.dataModel.Title = $KoSet(viewModel.dataModel.Title, data['FmsEquipmentRentInfo/Title']()); if (data['FmsEquipmentRentInfo/RentUser'] === undefined) { viewModel.dataModel.RentUser(''); } else { viewModel.dataModel.RentUser(data['FmsEquipmentRentInfo/RentUser']()); } if (data['FmsEquipmentRentInfo/RentDate'] === undefined) { viewModel.dataModel.RentDate(''); } else { viewModel.dataModel.RentDate($G.date(moment(data['FmsEquipmentRentInfo/RentDate']()))); } if (data['FmsEquipmentRentInfo/ReturnDueDate'] === undefined) { viewModel.dataModel.ReturnDueDate(''); } else { viewModel.dataModel.ReturnDueDate($G.date(moment(data['FmsEquipmentRentInfo/ReturnDueDate']()))); } viewModel.dataModel.ReturnCount(0); viewModel.dataModel.EqName(data['FmsEquipment/Name']()); viewModel.dataModel.LossCount(0); viewModel.dataModel.CurrentRentCount(data['CurrentRentCount']()); viewModel.dataModel.EquipmentId(data['EquipmentId']()); viewModel.dataModel.EquipmentRentId(data['EquipmentRentId']()); viewModel.dataModel.SiteId(data['SiteId']()); } }); viewModel.equipPopupToolbarItems = equipPopupToolbarItems; viewModel.dataModel.Title = ko.observable(); viewModel.dataModel.RentUser = ko.observable(); viewModel.dataModel.RentDate = ko.observable(); viewModel.dataModel.ReturnDueDate = ko.observable(); // hcLee 2016 01 14 viewModel.dataModel.EqName = ko.observable(); viewModel.equipmentDataGridOptions = equipmentDataGridOptions; viewModel.processValueChange = processValueChange; viewModel.equipmentExs = equipmentExs; viewModel.codeTypes = codeTypes; viewModel.codeStateTypes = codeStateTypes; viewModel.warehouses = warehouses; return viewModel; };