| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861 | 
							- 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;
 
- };
 
 
  |