BemsWebApplication.Material = function (params, viewInfo) { "use strict"; var MaterialCodeClassDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeClass'); var materialClass = ko.observableArray(); var materialClassForSearch = ko.observableArray(); var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true), materialClassDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeClass', true, true), materialClassDataSource2 = BemsWebApplication.db.createDataSource('FmsMaterialCodeClass', true, true), materialTypeDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeType', true, true), tradeCompanyDataSource = BemsWebApplication.db.createDataSource('FmsMaterialTradeCompany', true, true), warehouseDataSource = BemsWebApplication.db.createDataSource('FmsMaterialWarehouse', true, true), locationDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeLocation', true, true); var filePath = "/App_Data/files/form/자재등록양식.xlsx"; var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter; var FmsMaterialDataSource = BemsWebApplication.db.createDataSource('FmsMaterial'); var MaterialInfo = ko.observableArray(); var RowName, RowBusinessFieldId, RowMaterialTypeId; var userMaterialCode1st = ko.observable(''), userMaterialCode2nd = ko.observable(''), userMaterialCode3rd = ko.observable(''), userMateialSeq = ko.observable(''); var isEditModeInPopup = ko.observable(false); var materialCodesDataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: { paginate: false, select: [ 'SiteId', 'BusinessFieldId', 'MaterialCode', 'FirstClassId', 'SecondClassId', 'ThirdClassId', 'Name', 'Standard', 'FmsMaterialCodeClass/Name', 'FmsMaterialCodeClass1/Name', 'FmsMaterialCodeClass2/Name', 'FmsMaterialCodeClass/Abbreviation', 'FmsMaterialCodeClass1/Abbreviation', 'FmsMaterialCodeClass2/Abbreviation', 'Note', ], expand: ['FmsMaterialCodeClass', 'FmsMaterialCodeClass1', 'FmsMaterialCodeClass2'] } }, 'FmsMaterial'); var materialClasses2 = ko.observableArray(), materialClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()], businessFields = ko.observableArray(), materialTypes = ko.observableArray(), tradeCompanies = ko.observableArray(), warehouses = ko.observableArray(), locations = ko.observableArray(), materialCodes = ko.observableArray(); var materialClassesForSearch = [ko.observableArray(), ko.observableArray(), ko.observableArray()], materialTypesForSearch = ko.observableArray(), materialClassValuesForSearch = [ko.observable(), ko.observable(), ko.observable()], businessFieldsForSearch = ko.observableArray(), materialTypeIdForSearch = ko.observable(), businessFieldIdForSearch = ko.observable(); var imagefileUrl = ko.observable(), uploadedFileInfo = {}, dropZone = null; var deferredForSearch = new $.Deferred(); var defaultSearchClassArray = $SearchView.createDefaultArray('MaterialClassId'); function handleFirstClassChangedValueInSearchView(e) { if (e.value === 0) { initializeSearchClasses(); return; } BWA.DataUtil.setArrayDataSourceFilter(materialClassDataSource, 'ParentMaterialClassId', e.value, materialClassesForSearch[1], defaultSearchClassArray); }; function handleSecondClassChangedValueInSearchView(e) { if (e.value === 0) { initializeSearchClasses(true); return; } BWA.DataUtil.setArrayDataSourceFilter(materialClassDataSource, 'ParentMaterialClassId', e.value, materialClassesForSearch[2], defaultSearchClassArray); }; function initializeSearchClasses(onlyThird) { if (onlyThird === undefined || onlyThird === false) { materialClassesForSearch[1](defaultSearchClassArray.slice(0)); materialClassValuesForSearch[1](0); } materialClassesForSearch[2](defaultSearchClassArray.slice(0)); materialClassValuesForSearch[2](0); } function setupDropZone(isEditModeInPopup, dataViewModel) {//2019-10-14 변경 var timer = null; isEditModeInPopup.subscribe(function (value) { if (value) { if (timer) { clearInterval(timer); } timer = setInterval(function () { if ($('#materialDropZone').length) { if (_.isNull(dropZone)) { dropZone = BWA.DropZone.create({ id: '#materialDropZone', categoryId: $Code.FileCategory.MATERIAL, uploadedFileInfo: uploadedFileInfo, handleRemoveBeforePromise: function () { var keys = BWA.db.extractKeysObject('FmsMaterial', dataViewModel); return BWA.db.FmsMaterial.update(keys, { ImageFileId: null }); }, handleSuccess: function (fileInfo) { if (uploadedFileInfo.FileId) { dataViewModel.ImageFileId(uploadedFileInfo.FileId); var keys = BWA.db.extractKeysObject('FmsMaterial', dataViewModel); if (keys.MaterialId != null) { return BWA.db.FmsMaterial.update(keys, { ImageFileId: uploadedFileInfo.FileId }); } } }, handleRemovedFile: function () { dataViewModel.ImageFileId(null); } }); } } }, 100); } else { if (timer) { clearInterval(timer); timer = null; } dropZone = null; } }); } var materialFactory = BemsWebApplication.Factory.Material; var materialFactorydataSourceOptions = materialFactory.getDataSourceForDataGrid(); // 2016 05 10 추가 hcLee materialFactorydataSourceOptions.filter = []; // 2016 05 10 추가 hcLee var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsMaterial', { dataSourceOptions: materialFactorydataSourceOptions, // 2016 05 10 추가 hcLee columns: materialFactory.defaultColumns, paging: { pageSize: 18, enabled: true }, pager:{}, "export": { enabled: true, fileName: '자재 목록', }, onExporting: function (e) { e.component.columnOption("MaterialId", "visible", false); }, onExported: function (e) { e.component.columnOption("MaterialId", "visible", true); }, popupWidth: '700px', wordWrapEnabled: true, cellPrepared: materialFactory.cellPrepared, searchViewItems: [ { id: 'FirstClassId', ignoreValue: 0, defaultValue: 0, value: materialClassValuesForSearch[0], dataSource: materialClassesForSearch[0], handleChangedValue: handleFirstClassChangedValueInSearchView }, { id: 'SecondClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: materialClassValuesForSearch[1], dataSource: materialClassesForSearch[1], handleChangedValue: handleSecondClassChangedValueInSearchView }, { id: 'ThirdClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: materialClassValuesForSearch[2], dataSource: materialClassesForSearch[2] }, { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: businessFieldsForSearch }, { id: 'Name' }, { id: 'Standard' }, { id: 'Manufecturer' }, { id: 'IsDiscontinued' }, { id: 'IsUse', ignoreValue: 0, defaultValue: true, isChecked: false } ], promiseDataInSearchView: deferredForSearch.promise(), 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]); } materialClassForSearch($SearchView.createArrayOfSelectBox('MaterialClassId', materialClass())); }); var useBusinessFiltering = BWA.UserInfo.isDependBusinessField(viewInfo.viewName) materialFactorydataSourceOptions.filter.splice(0, materialFactorydataSourceOptions.filter.length); materialFactorydataSourceOptions.filter.push([eq('SiteId', BWA.UserInfo.SiteId())]); if (useBusinessFiltering) { materialFactorydataSourceOptions.filter.push('and'); materialFactorydataSourceOptions.filter.push([eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'and', ['BusinessFieldId', '<>', 1]]); materialCodesDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), 'and', [eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'and', ['BusinessFieldId', '<>', 1]] // 2016 05 02 hcLee ]); businessFieldDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), 'and', ['BusinessFieldId', '=', BWA.UserInfo.BusinessFieldId()], 'and', ['BusinessFieldId', '<>', 1] ]); } else { materialFactorydataSourceOptions.filter.push('and'); materialFactorydataSourceOptions.filter.push(['BusinessFieldId', '<>', 1]); materialCodesDataSource.filter([ ['SiteId', '=', BWA.UserInfo.SiteId()], 'and', ['BusinessFieldId', '<>', 1] // 2016 05 02 hcLee ]); businessFieldDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), 'and', ['BusinessFieldId', '<>', 1], ]); } materialClassDataSource.filter([ ['SiteId', '=', BWA.UserInfo.SiteId()], 'and', ['ParentMaterialClassId', '=', null] ]); $.when( businessFieldDataSource.load(), materialClassDataSource.load(), materialTypeDataSource.load(), tradeCompanyDataSource.load(), warehouseDataSource.load(), locationDataSource.load(), materialCodesDataSource.load() ).done(function (dbBusinessFields, dbMaterialClasses, dbMaterialTypes, dbTradeCompanies, dbWarehouses, dbLocations, dbMaterialCodes) { dbBusinessFields = dbBusinessFields[0]; dbMaterialClasses = dbMaterialClasses[0]; dbMaterialTypes = dbMaterialTypes[0]; dbTradeCompanies = dbTradeCompanies[0]; dbWarehouses = dbWarehouses[0]; dbLocations = dbLocations[0]; materialClasses[0](dbMaterialClasses); materialClassesForSearch[0]($SearchView.createArrayOfSelectBox('MaterialClassId', dbMaterialClasses)); initializeSearchClasses(); businessFields(dbBusinessFields); materialTypes(dbMaterialTypes); tradeCompanies(dbTradeCompanies); warehouses(dbWarehouses); locations(dbLocations); businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', dbBusinessFields)); materialTypesForSearch($SearchView.createArrayOfSelectBox('MaterialTypeId', dbMaterialTypes)); materialCodes(dbMaterialCodes[0]); deferredForSearch.resolve(); }); materialClassDataSource2.filter([ ['SiteId', '=', BWA.UserInfo.SiteId()], ]); $.when( materialClassDataSource2.load() ).done(function (dbMaterialClasses2) { materialClasses2(dbMaterialClasses2); }); }, handleViewShown: function (dataViewModel, isEditModeInPopup) { setupDropZone(isEditModeInPopup, dataViewModel); }, handlePopupShowing: function (isEditMode, isNew, dataViewModel) { imagefileUrl(undefined); if (_.isNull(dropZone) === false) dropZone.resetUploadedFileInfo(); if (isNew) { // 신규등록인 경우 dropZone = null; } FmsMaterialDataSource.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()] ]); FmsMaterialDataSource.load().done(function (result) { MaterialInfo(result); }); }, handlePopupShown: function (isEditMode, isNew, dataViewModel) { isEditModeInPopup(false); if (isNew) { isEditModeInPopup(true); dataViewModel.FinalStockCount(0); dataViewModel.FinalTotalStockAmount(0); } }, handleCancelInPopup: function () { isEditModeInPopup(false); }, handlePopupButtonClose: function () { isEditModeInPopup(false); }, handlePopupButtonEdit: function (dataModel) { isEditModeInPopup(true); }, handleSaveSuccess: function () { if (_.isNull(dropZone) === false) { dropZone.resetUploadedFileInfo(); } isEditModeInPopup(false); }, beforeInsertingDataViewModel: function (dataModel, dbModelId) { var dfd = $.Deferred(); var isDuplicated = false; var PopMaterialName = $("#materialName").dxTextBox('instance').option('value'); var PopMaterialType = $("#materialType").dxSelectBox('instance').option('value'); var PopBusinessField = $("#businessField").dxSelectBox('instance').option('value'); var PopmaterialClass = $("#materialClass").dxSelectBox('instance').option('value'); for (var i = 0; i < MaterialInfo().length; i++) { if (dataModel.Name() == MaterialInfo()[i].Name() && dataModel.BusinessFieldId() == MaterialInfo()[i].BusinessFieldId()) { isDuplicated = true; } } if (!BWA.DataUtil.isValidInputValue(dataModel.Name()) || PopMaterialType == null || PopBusinessField == null || PopmaterialClass == null) return dfd.resolve(false, '저장 혹은 수정 반드시 필수 입력 정보(*)를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)'); else { if (isDuplicated) return dfd.resolve(false, '이미 동일 정보가 존재합니다.'); else return dfd.resolve(true); } }, beforeUpdateDataViewModel: function () { var dataModel = viewModel.dataModel; var PopMaterialName = $("#materialName").dxTextBox('instance').option('value'); var PopMaterialType = $("#materialType").dxSelectBox('instance').option('value'); var PopBusinessField = $("#businessField").dxSelectBox('instance').option('value'); var PopmaterialClass = $("#materialClass").dxSelectBox('instance').option('value'); var isDuplicated = false; for (var i = 0; i < MaterialInfo().length; i++) { if (viewModel.dataModel.Name() == MaterialInfo()[i].Name() && viewModel.dataModel.BusinessFieldId() == MaterialInfo()[i].BusinessFieldId() && (RowName() != MaterialInfo()[i].Name() || RowBusinessFieldId() != MaterialInfo()[i].BusinessFieldId())) { isDuplicated = true; break; } } if (!BWA.DataUtil.isValidInputValue(dataModel.Name()) || PopMaterialType == null || PopBusinessField == null || PopmaterialClass == null) { utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보(*)를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error'); return 0; } else { if (isDuplicated) { utils.toast.show('이미 동일 정보가 존재합니다.', 'error'); return 0; } else return 2; } }, handleAfterSaveInPopup: function (responseKey, response) {//2019-10-14 변경 viewModel.dataModel.MaterialId(responseKey.MaterialId); materialCodesDataSource.load().done(function (dbMaterialCodes) { materialCodes(dbMaterialCodes); }); }, handleSaveButtonInPopup: function (isInsert) {//2019-10-14 변경 if (isInsert === false) {//추가, 변경 여부 if (_.isNull(dropZone) === false) { if (viewModel.dataModel.ImageFileId() != null) { //변경 - 그림삭제 var temp = { SiteId: BWA.UserInfo.SiteId(), FileId: viewModel.dataModel.ImageFileId() } BWA.db.CmFile.byKey(temp).done(function (data) { dropZone.removeFile(data); dropZone.processQueue(); }); } else { dropZone.processQueue();//변경 - 그림 삭제 필요없음 } } } else { if (_.isNull(dropZone) === false) { //추가 if (viewModel.dataModel.ImageFileId() == null) { dropZone.processQueue(); } } } }, handleBeforeDelete: function () {//2019-10-14 변경 var temp = { SiteId: BWA.UserInfo.SiteId(), FileId: viewModel.dataModel.ImageFileId() } BWA.db.CmFile.byKey(temp).done(function (data) { if ($('#materialDropZone1').length) { if (_.isNull(dropZone)) { dropZone = BWA.DropZone.create({ id: '#materialDropZone1', categoryId: $Code.FileCategory.MATERIAL }); if (viewModel.dataModel.ImageFileId() != null) dropZone.removeFile(data); console.log('here'); dropZone = null; } } }); }, handleAfterLoadingModelByKey: function (data, dataViewModel, isNewInPopup) { if (isNewInPopup() == false) { BWA.DataUtil.setArrayDataSourceFilter(materialClassDataSource, 'ParentMaterialClassId', dataViewModel.FirstClassId(), materialClasses[1]).done(function () { BWA.DataUtil.setArrayDataSourceFilter(materialClassDataSource, 'ParentMaterialClassId', dataViewModel.SecondClassId(), materialClasses[2]); }); BWA.DataUtil.setArrayDataSourceFilter(warehouseDataSource, 'BusinessFieldId', dataViewModel.BusinessFieldId(), warehouses); if (_.isNull(dataViewModel.ImageFileId()) === false) { imagefileUrl('{0}/CmFile(SiteId={1},FileId={2})/$value'.formati(BWA.db._url, dataViewModel.SiteId(), dataViewModel.ImageFileId())); } else { imagefileUrl("images/default.png"); } } }, handleAfterDelete: function () { materialCodesDataSource.load().done(function (dbMaterialCodes) { materialCodes(dbMaterialCodes); }); }, handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) { dataGrid.clearSelection(); viewModel.isNewInPopup(false); // var data = clickRow.data; var dataModel = viewModel.dataModel; RowName = data.Name; RowBusinessFieldId = data.BusinessFieldId; RowMaterialTypeId = data.MaterialTypeId; if (data.SecondClassId() != null) { data.SecondClassName(data['SecondClassName']()); } if (data.ThirdClassId() != null) { data.ThirdClassName(data['ThirdClassName']()); } dataModel.ClassName = $KoSet(dataModel.ClassName, materialFactory.formatClassName(data.FirstClassName(), data.SecondClassName(), data.ThirdClassName())); dataModel.MaterialTypeName = $KoSet(dataModel.MaterialTypeName, data['FmsMaterialCodeType/Name']); dataModel.BusinessFieldName = $KoSet(dataModel.BusinessFieldName, data['CmBusinessField/Name']); dataModel.WarehouseName = $KoSet(dataModel.WarehouseName, data['FmsMaterialWarehouse/Name']); dataModel.TradeCompanyName = $KoSet(dataModel.TradeCompanyName, data['FmsMaterialTradeCompany/Name']); dataModel.LocationName = $KoSet(dataModel.LocationName, data['FmsMaterialCodeLocation/Name']); // hcLee 2016 01 15 dataModel.Note = $KoSet(dataModel.Note, data['Note']); dataModel.MaterialId(data.MaterialId());//2019-10-14 변경 popupVisible(true); } }); viewModel.handleSelectBoxChangeBusinessField = function (e) { BWA.DataUtil.setArrayDataSourceFilter(warehouseDataSource, 'BusinessFieldId', e.value, warehouses); viewModel.dataModel.WarehouseId(null); } viewModel.handleSelectBoxChangeFirstClass = function (e) { BWA.DataUtil.setArrayDataSourceFilter(materialClassDataSource, 'ParentMaterialClassId', e.value, materialClasses[1]); viewModel.dataModel.SecondClassId(null); viewModel.dataModel.ThirdClassId(null); if (e.value != null) { var iniCodeName = e.selectedItem.Abbreviation(); userMaterialCode1st(iniCodeName); userMaterialCode2nd(''); userMaterialCode3rd(''); viewModel.dataModel.MaterialCode(userMaterialCode1st()); } } viewModel.handleSelectBoxChangeSecondClass = function (e) { BWA.DataUtil.setArrayDataSourceFilter(materialClassDataSource, 'ParentMaterialClassId', e.value, materialClasses[2]); viewModel.dataModel.ThirdClassId(null); if (e.value != null) { if (e.selectedItem != null) { var iniCodeName = e.selectedItem.Abbreviation(); userMaterialCode2nd(iniCodeName); viewModel.dataModel.MaterialCode(userMaterialCode1st() + '-' + userMaterialCode2nd()); } } } viewModel.handleSelectBoxChangeThirdClass = function (e) { if (e.value != null) { if (e.selectedItem != null) { var iniCodeName = e.selectedItem.Abbreviation(); userMaterialCode3rd(iniCodeName); viewModel.dataModel.MaterialCode(userMaterialCode1st() + '-' + userMaterialCode2nd() + '-' + userMaterialCode3rd()); } } } function MaterialImport() { var inputFileControl = document.getElementById("FILE_IMPORT"); $(document).ready(function () { function changeValue(e) { if (e.currentTarget.value == "") { } else if (!checkFileType(e.currentTarget.value)) { utils.toast.show('정해진 양식으로만 올려주세요!', 'error'); return; } else { var files = e.target.files; //input file 객체를 가져온다. var i, f; for (i = 0; i != files.length; ++i) { f = files[i]; var reader = new FileReader(); //FileReader를 생성한다. //성공적으로 읽기 동작이 완료된 경우 실행되는 이벤트 핸들러를 설정한다. reader.onload = function (e) { if (e) { var data = e.target.result; data = new Uint8Array(data); var EXCELarray = []; var tempEXCELarray = []; var workbook = XLSX.read(data, { type: 'array' }); workbook.SheetNames.forEach(function (item, index, array) { EXCELarray.push(XLSX.utils.sheet_to_json(workbook.Sheets[item])); }); for (var i = 0; i < EXCELarray[0].length; i++) { var tempmaterial = { SiteId: BWA.UserInfo.SiteId(), BusinessFieldId: EXCELarray[0][i]['업무분야(*)'], MaterialId: null, MaterialCode: null, Name: EXCELarray[0][i]['자재명(*)'], FirstClassId: EXCELarray[0][i]['자재 대분류(*)'], SecondClassId: EXCELarray[0][i]['자재 중분류'], ThirdClassId: EXCELarray[0][i]['자재 소분류'], LocationId: null, MaterialTypeId: EXCELarray[0][i]['자재구분(*)'], TradeCompanyId: null, WarehouseId: null, Rfid: EXCELarray[0][i]['RFID'], Unit: EXCELarray[0][i]['단위'], DurableYears: EXCELarray[0][i]['내용연수'], ReasonableStockCount: EXCELarray[0][i]['적정재고량'], Manufacturer: EXCELarray[0][i]['제조사'], Standard: EXCELarray[0][i]['규격'], FinalPrice: EXCELarray[0][i]['단가'], ImageFileId: null, Note: EXCELarray[0][i]['비고'], IsDiscontinued: EXCELarray[0][i]['단종여부(*)[예 or 아니오]'], IsUse: EXCELarray[0][i]['사용여부(*)[사용 or 미사용]'], FinalStockCount: 0, FinalTotalStockAmount: 0, } // 업무분야 if (tempmaterial.BusinessFieldId == null) { utils.toast.show('업무 분야를 입력해야합니다(' + (i + 1) + '번 행)', 'error'); return; } else { var cnt = 0; for (var j = 0; j < businessFields().length; j++) { if (tempmaterial.BusinessFieldId == businessFields()[j].Name()) { tempmaterial.BusinessFieldId = businessFields()[j].BusinessFieldId(); break; } else { cnt++; if (cnt == businessFields().length) { utils.toast.show('잘못된 업무 분야 내용을 입력하였습니다(' + (i + 1) + '번 행)', 'error'); return; } } } } // 자재명 if (tempmaterial.Name == null) { utils.toast.show('자재명을 입력해야합니다(' + (i + 1) + '번 행)', 'error'); return; } else { if (tempmaterial.Standard != null) tempmaterial.Standard = tempmaterial.Standard.toString(); for (var j = 0; j < materialCodes().length; j++) { if (tempmaterial.Name == materialCodes()[j].Name()) { if (tempmaterial.Standard != null) { tempmaterial.Standard = tempmaterial.Standard.toString(); if (tempmaterial.Standard == materialCodes()[j].Standard()) { utils.toast.show('동일한 자매명과 규격을 입력할수 없습니다(' + (i + 1) + '번 행)', 'error'); return; } } else { if (materialCodes()[j].Standard() == null) { utils.toast.show('동일한 자매명과 규격을 입력할수 없습니다(' + (i + 1) + '번 행)', 'error'); return; } } } } } //자재구분 if (tempmaterial.MaterialTypeId == null) { utils.toast.show('자재 구분을 입력해야합니다(' + (i + 1) + '번 행)', 'error'); return; } else { var cnt = 0; for (var j = 0; j < materialTypes().length; j++) { if (tempmaterial.MaterialTypeId == materialTypes()[j].Name()) { tempmaterial.MaterialTypeId = materialTypes()[j].MaterialTypeId(); break; } else { cnt++; if (cnt == materialTypes().length) { utils.toast.show('잘못된 자재 구분 내용을 입력하였습니다(' + (i + 1) + '번 행)', 'error'); return; } } } } //단종여부 if (tempmaterial.IsDiscontinued == null) { utils.toast.show('단종여부를 입력해야합니다(' + (i + 1) + '번 행)[예 or 아니오]', 'error'); return; } else { if (tempmaterial.IsDiscontinued == "예") { tempmaterial.IsDiscontinued = true; } else if (tempmaterial.IsDiscontinued == "아니오") { tempmaterial.IsDiscontinued = false; } else { utils.toast.show('단종여부를 정확히 입력해야합니다(' + (i + 1) + '번 행)[사용 or 미사용]', 'error'); return; } } //사용여부 if (tempmaterial.IsUse == null) { utils.toast.show('사용여부를 입력해야합니다(' + (i + 1) + '번 행)[사용 or 미사용]', 'error'); return; } else { if (tempmaterial.IsUse == "사용") { tempmaterial.IsUse = true; } else if (tempmaterial.IsUse == "미사용") { tempmaterial.IsUse = false; } else { utils.toast.show('사용여부를 정확히 입력해야합니다(' + (i + 1) + '번 행)[사용 or 미사용]', 'error'); return; } } //자재 대분류 if (tempmaterial.FirstClassId == null) { utils.toast.show('자재 대분류를 입력해야합니다(' + (i + 1) + '번 행)', 'error'); return; } else { var cnt = 0; for (var j = 0; j < materialClasses2().length; j++) { if ((tempmaterial.FirstClassId == materialClasses2()[j].Name()) && materialClasses2()[j].Depth() == 0) { tempmaterial.MaterialCode = tempmaterial.FirstClassId; tempmaterial.FirstClassId = materialClasses2()[j].MaterialClassId(); break; } else { cnt++; if (cnt == materialClasses2().length) { utils.toast.show('잘못된 자재 대분류 내용을 입력하였습니다(' + (i + 1) + '번 행)', 'error'); return; } } } } //자재 중분류 if (tempmaterial.SecondClassId != null) { var cnt = 0; for (var j = 0; j < materialClasses2().length; j++) { if ((tempmaterial.SecondClassId == materialClasses2()[j].Name()) && (tempmaterial.FirstClassId == materialClasses2()[j].ParentMaterialClassId()) && (materialClasses2()[j].Depth() == 1)) { tempmaterial.MaterialCode = tempmaterial.MaterialCode + "-" + tempmaterial.SecondClassId; tempmaterial.SecondClassId = materialClasses2()[j].MaterialClassId(); break; } else { cnt++; if (cnt == materialClasses2().length) { utils.toast.show('잘못된 자재 중분류 내용을 입력하였습니다(' + (i + 1) + '번 행)', 'error'); return; } } } } //자재 소분류 if (tempmaterial.ThirdClassId != null) { var cnt = 0; for (var j = 0; j < materialClasses2().length; j++) { if ((tempmaterial.ThirdClassId == materialClasses2()[j].Name()) && (tempmaterial.SecondClassId == materialClasses2()[j].ParentMaterialClassId()) && (materialClasses2()[j].Depth() == 2)) { tempmaterial.MaterialCode = tempmaterial.MaterialCode + "-" + tempmaterial.ThirdClassId; tempmaterial.ThirdClassId = materialClasses2()[j].MaterialClassId(); break; } else { cnt++; if (cnt == materialClasses2().length) { utils.toast.show('잘못된 자재 소분류 내용을 입력하였습니다(' + (i + 1) + '번 행)', 'error'); return; } } } } if (tempmaterial.Name != null) tempmaterial.Name = tempmaterial.Name.toString(); if (tempmaterial.Rfid != null) tempmaterial.Rfid = tempmaterial.Rfid.toString(); if (tempmaterial.Unit != null) tempmaterial.Unit = tempmaterial.Unit.toString(); if (tempmaterial.DurableYears != null) { if (typeof (tempmaterial.DurableYears) == "string") { utils.toast.show('내용연수는 숫자만 입력가능합니다(' + (i + 1) + '번 행)', 'error'); return; } else { tempmaterial.DurableYears = parseInt(tempmaterial.DurableYears); } } if (tempmaterial.ReasonableStockCount != null) { if (typeof (tempmaterial.ReasonableStockCount) == "string") { utils.toast.show('적정재고량은 숫자만 입력가능합니다(' + (i + 1) + '번 행)', 'error'); return; } else { tempmaterial.ReasonableStockCount = parseInt(tempmaterial.ReasonableStockCount); } } if (tempmaterial.FinalPrice != null) { if (typeof (tempmaterial.FinalPrice) == "string") { utils.toast.show('단가는 숫자만 입력가능합니다(' + (i + 1) + '번 행)', 'error'); return; } else { tempmaterial.FinalPrice = parseInt(tempmaterial.FinalPrice); } } if (tempmaterial.Manufacturer != null) tempmaterial.Manufacturer = tempmaterial.Manufacturer.toString(); if (tempmaterial.Note != null) tempmaterial.Note = tempmaterial.Note.toString(); tempEXCELarray.push(tempmaterial); } for (var k = 0; k < tempEXCELarray.length; k++) { BWA.db.FmsMaterial.insert(tempEXCELarray[k]).done(function (response, responseKey) { if (k == tempEXCELarray.length) { materialCodesDataSource.load().done(function (dbMaterialCodes) { materialCodes(dbMaterialCodes); utils.toast.show($G('successDatabaseInsertionMsg')); $('#gridContainer').dxDataGrid('instance').refresh(); }); } }).fail(function (error) { utils.toast.show(error); }); } } }; //파일객체를 읽는다. 완료되면 원시 이진 데이터가 문자열로 포함됨. reader.readAsArrayBuffer(f); }//end. for } $("#FILE_IMPORT").val(""); } $("#FILE_IMPORT").on("change", changeValue); }); inputFileControl.click(); } function checkFileType(filePath) { var fileLen = filePath.length; var lastDot = filePath.lastIndexOf('.'); var fileFormat = filePath.substring(lastDot, fileLen).toLowerCase(); if (fileFormat == ".xls" || fileFormat == ".xlsx") { return true; } else { return false; } } function MaterialDownload() { var url = ""; if (BemsWebApplication.config.mode == "production") { url = BemsWebApplication.config.endpoints.service.production + filePath; } else { url = BemsWebApplication.config.endpoints.service.local + filePath; } window.location.assign(url); } viewModel.dataModel.ClassName = ko.observable(); viewModel.materialClasses = materialClasses; viewModel.materialTypes = materialTypes; viewModel.tradeCompanies = tradeCompanies; viewModel.warehouses = warehouses; viewModel.locations = locations; viewModel.businessFields = businessFields; viewModel.isEditModeInPopup = isEditModeInPopup; // hcLee 2016 03 02 viewModel.dataModel.ClassName = ko.observable(); viewModel.dataModel.MaterialTypeName = ko.observable(); viewModel.dataModel.BusinessFieldName = ko.observable(); viewModel.dataModel.WarehouseName = ko.observable(); viewModel.dataModel.TradeCompanyName = ko.observable(); viewModel.dataModel.LocationName = ko.observable(); // hcLee 2016 01 15 viewModel.dataModel.Note = ko.observable(); viewModel.MaterialImport = MaterialImport; viewModel.MaterialDownload = MaterialDownload; // hcLee 2015 12 16 hcLee !!!!!! viewModel.imagefileUrl = imagefileUrl; return viewModel; };