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