BemsWebApplication.EquipReturnInfo = 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 codeTypes = ko.observableArray(), codeStateTypes = ko.observableArray(), warehouses = 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', 'FmsEquipment/WarehouseId', 'FmsEquipment/Unit', 'FmsEquipment/Standard', 'FmsEquipment/Name', 'FmsEquipmentCodeStateType/Name', 'FmsEquipment/Standard', 'FmsEquipmentRentInfo/Title', 'FmsEquipmentRentInfo/CmUser1/Name', // 대여자 'FmsEquipmentRentInfo/RentDate', 'FmsEquipmentRentInfo/ReturnDueDate' ], expand: [ 'FmsEquipment', 'FmsEquipmentRentInfo', 'FmsEquipmentRentInfo/CmUser1', 'FmsEquipmentCodeStateType' ], extendOptions: { forceOriginalField: true, }, filter: [ ['SiteId', '=', BWA.UserInfo.SiteId()] , //'and', //['EquipmentStateTypeId', '=', 2], 'and', ['IsReturned', '=', false] ] }, columns: [ { dataField: 'Number', caption: $G('number'), width: '10%', alignment: 'center' }, { dataField: 'EquipmentRentId', caption: '대여고유번호', width: '15%', alignment: 'center', sortOrder: 'desc' }, { dataField: 'FmsEquipment/Name', caption: $G('name'), width: '30%', alignment: 'center' }, // { dataField: 'FmsEquipmentCodeStateType/Name', caption: '상태', width: '20%', alignment: 'center' }, { dataField: 'FmsEquipment/Standard', caption: '규격', width: '15%', alignment: 'center' }, { dataField: 'FmsEquipment/Unit', caption: '단위', width: '15%', alignment: 'center' }, { dataField: 'CurrentRentCount', caption: '대여수량', width: '10%', alignment: 'center', format: 'currency' }, //{ dataField: 'CurrentStockCount', caption: '보유수량', width: '10%', alignment: 'center' }, //{ dataField: 'TotalStockCount', caption: '전체수량', width: '10%', alignment: 'center' }, { dataField: 'FmsEquipmentRentInfo/CmUser1/Name', caption: '대여자', width: '20%', alignment: 'center' }, { dataField: 'FmsEquipmentRentInfo/RentDate', caption: '대여일', width: '20%', alignment: 'center', customizeText: function (cellInfo) { return $G.date(cellInfo.value); } }, { dataField: 'FmsEquipmentRentInfo/ReturnDueDate', caption: '반납예정일', width: '20%', alignment: 'center', customizeText: function (cellInfo) { return $G.date(cellInfo.value); } }, ], sort: { field: "EquipmentRentId", desc: true }, searchViewItems: [{ id: 'Name' }, { id: 'Name' }], popupWidth: 740, handleViewShowing: function (dataModel) { codeStateTypeDataSource.filter([ ['EquipmentStateTypeId', '>', 2], // 입고,출고 유형제외 ]); $.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) { dataGrid.clearSelection(); var data = clickRow.data; var dataModel = viewModel.dataModel; dataModel.EquipmentName = $KoSet(dataModel.EquipmentName, data['FmsEquipment/Name']()); dataModel.Standard = $KoSet(dataModel.Standard, data['FmsEquipment/Standard']()); dataModel.Title = $KoSet(dataModel.Title, data['FmsEquipmentRentInfo/Title']()); if (data['FmsEquipmentRentInfo/CmUser1/Name'] !== undefined) { dataModel.RentUserName = $KoSet(dataModel.RentUserName, data['FmsEquipmentRentInfo/CmUser1/Name']()); } dataModel.RentDate = $KoSet(dataModel.RentDate, data['FmsEquipmentRentInfo/RentDate']()); dataModel.ReturnDueDate = $KoSet(dataModel.ReturnDueDate, data['FmsEquipmentRentInfo/ReturnDueDate']()); //dataModel.NewReturnCount(0); //dataModel.NewLossCount(0); popupVisible(true); }, handlePopupShowing: function (isNewInPopup, dataViewModel) { // 저장 버튼 viewModel.toolbarItems[4].options.clickAction = this.handlePopupButtonSave; // Admin 계정만 활성화 되는 이상 현상으로 인한 코드 viewModel.toolbarItems[4].options.disabled(false); }, handlePopupButtonSave: function () { var dataViewModel = viewModel.dataModel; 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); }); }, handlePopupShown: function (isEditMode, isNew, dataViewModel) { setEditMode(); dataViewModel.ReturnCount(0); dataViewModel.LossCount(0); } }); function setEditMode() { viewModel.visibleEditButton(false); viewModel.visibleDeleteButton(false); viewModel.viewModeInPopup(false); viewModel.isEditModeInPopup(true); } viewModel.dataModel.NewReturnCount = ko.observable(0); viewModel.dataModel.NewLossCount = ko.observable(0); viewModel.codeTypes = codeTypes; viewModel.codeStateTypes = codeStateTypes; viewModel.warehouses = warehouses; return viewModel; };