| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827 | BemsWebApplication.MaterialStored2 = function (params, viewInfo, forApprovalOptions) {    'use strict';    var materialClassForSearch = ko.observableArray();    var materialClass = ko.observableArray();    var MaterialCodeClassDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeClass');    var facilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()];    var searchFacilityClassValues = [ko.observable(), ko.observable(), ko.observable()];    var searchFacilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()];    var MenuPermission;    var defaultSearchClassArray = $SearchView.createDefaultArray('MaterialClassId');    var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true),        materialDataSource = BemsWebApplication.db.createDataSource('FmsMaterial', true, true),        warehouseDataSource = BWA.db.createDataSource('FmsMaterialWarehouse', true, true),        progressDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeProgress'),        warehouses = ko.observableArray(),        businessFields = ko.observableArray();    var materialStoredDatSource = BWA.db.createDataSource('FmsMaterialStored', true, true),        materials = ko.observableArray(),        dataModelMaterial = new BWA.FmsMaterialViewModel();    var materialFactory = BWA.Factory.Material;    var materialsForPurchaseOrderDataSource = materialFactory.getBasicDataSourceRef({        dbModeIId: 'FmsMaterialPurchaseOrderMaterial',        primaryKeyDataField: 'PurchaseOrderId',        moreSelectFields: [            'FmsMaterial/Unit', 'FmsMaterial/Standard',            'FmsMaterial/TradeCompanyId',            'FmsMaterial/FinalPrice',            'FmsMaterial/FirstClassId',            'FmsMaterial/SecondClassId',            'FmsMaterial/ThirdClassId'        ]    });    var forApprovalViewOptions,        forApprovalPopupOptions,        popup;    if (_.isObject(forApprovalOptions)) {        forApprovalViewOptions = forApprovalOptions.viewOptions;        forApprovalPopupOptions = forApprovalOptions.popupOptions;    }    var materialDataGridOptions = undefined;    var materialGridView;    var eq = BWA.DataUtil.constructEqualFilter,        and = BWA.DataUtil.andFilter;    var deferredForSearch = new $.Deferred();    var businessFieldsForSearch = ko.observableArray(),        progressesForSearch = ko.observableArray();    var dataSourceOptions = {        select: [            'SiteId',            'BusinessFieldId',            'StoredDate',            'MaterialStoredId',            'PurchaseOrderId',            'StoredCount',            'RemainStoredCount',            'ApprovalDate',            'IsApproval',            'CmBusinessField/Name',            'FmsMaterialWarehouse/Name',            'FmsMaterialPurchaseOrder/Title',            'FmsMaterialPurchaseOrder/Reason', // 2016 01 11 hcLee 추가            'FmsMaterial/MaterialCode',            'FmsMaterial/Name',            'FmsMaterial/Unit',            'FmsMaterial/Standard',            'LocationInWarehouse',            'CmUser/Name', 'CmUser1/Name',            'FmsMaterial/FirstClassId',            'FmsMaterial/SecondClassId',            'FmsMaterial/ThirdClassId'        ],        expand: [            'CmBusinessField',            'FmsMaterial',            'FmsMaterialWarehouse',            'FmsMaterialPurchaseOrder',            'CmUser', 'CmUser1'        ],        filter: [            ['SiteId', '=', BWA.UserInfo.SiteId()],        ],        extendOptions: { forceOriginalField: true, }    };    var viewModel;    var viewOptions = {        popupWidth: 1600,        dataSourceOptions: dataSourceOptions,        columns: [            { dataField: 'MaterialStoredId', caption: $G('number'), width: '8%', alignment: 'center', sortOrder: 'desc' },            { dataField: 'CmBusinessField/Name', caption: $G('businessFieldName'), width: '10%', alignment: 'center', },            {                dataField: 'FmsMaterial/FirstClassId', width: '12%', caption: '자재(대)', alignment: 'center',                customizeText: function (cellInfo) {                    for (var i = 1; i < materialClassForSearch().length; i++) {                        if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) {                            return materialClassForSearch()[i].Name();                        }                    }                }            },            {                dataField: 'FmsMaterial/SecondClassId', width: '12%', caption: '자재(중)', alignment: 'center',                customizeText: function (cellInfo) {                    for (var i = 1; i < materialClassForSearch().length; i++) {                        if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) {                            return materialClassForSearch()[i].Name();                        }                    }                }            },            {                dataField: 'FmsMaterial/ThirdClassId', width: '12%', caption: '자재(소)', alignment: 'center',                customizeText: function (cellInfo) {                    for (var i = 1; i < materialClassForSearch().length; i++) {                        if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) {                            return materialClassForSearch()[i].Name();                        }                    }                }            },            { dataField: 'FmsMaterial/MaterialCode', caption: $G('materialCode'), width: '20%', alignment: 'center', visible: false },            { dataField: 'FmsMaterial/Name', caption: $G('materialName'), width: '20%', alignment: 'center' },            { dataField: 'FmsMaterial/Standard', caption: '규격', width: '20%', alignment: 'center' },            { dataField: 'FmsMaterial/Unit', caption: $G('unit'), width: '8%', alignment: 'center' },            { dataField: 'StoredCount', caption: $G('storedCount'), width: '11%', alignment: 'center', format: 'fixedPoint' },            {                dataField: 'StoredDate', caption: $G('storedDateTime'), width: '20%', alignment: 'center', sortOrder: 'desc', dataType: "shortDate", format: "yyyy-MM-dd hh:mm:ss",                customizeText: function (cellInfo) {                    return cellInfo.valueText;                }            },            {                dataField: 'ApprovalDate', caption: $G('approvalDate'), width: '20%', alignment: 'center', sortOrder: 'desc', dataType: "shortDate", format: "yyyy-MM-dd hh:mm:ss",                customizeText: function (cellInfo) {                    return cellInfo.valueText;                }            },            { dataField: 'CmUser1/Name', caption: $G('approvalUserName'), width: '8%', alignment: 'center' }        ],        paging: {            pageSize: 18,            enabled: true        },        pager: {},        "export": {            enabled: true,            fileName: '자재 입고 목록',        },        onExporting: function (e) {            e.component.columnOption("MaterialStoredId", "visible", false);        },        onExported: function (e) {            e.component.columnOption("MaterialStoredId", "visible", true);        },        promiseDataInSearchView: deferredForSearch.promise(),        searchViewItems: [            { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: businessFieldsForSearch },            { id: 'FmsMaterial/MaterialCode' },            { id: 'FmsMaterial/FirstClassId', ignoreValue: 0, defaultValue: 0, value: searchFacilityClassValues[0], dataSource: searchFacilityClasses[0], handleChangedValue: handleFirstClassChangedValueInSearchView },            { id: 'FmsMaterial/SecondClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FmsMaterial/FirstClassId', value: searchFacilityClassValues[1], dataSource: searchFacilityClasses[1], handleChangedValue: handleSecondClassChangedValueInSearchView },            { id: 'FmsMaterial/ThirdClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FmsMaterial/FirstClassId', value: searchFacilityClassValues[2], dataSource: searchFacilityClasses[2] },            { id: 'FmsMaterial/Name' },            //hcLee 2015 11 18            { id: 'FmsMaterial/Standard' },            { id: 'StoredCount' },            { id: 'CmUser1/Name' },            { id: 'ProgressId', ignoreValue: 0, defaultValue: 0, dataSource: progressesForSearch },            { id: 'StoredDate', type: 'dateRange', isOnlyDate: true },            { id: 'ApprovalDate', type: 'dateRange', isOnlyDate: true },        ],        handleViewShowing: function (dataModel) {            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]);                    if (Result[i].Depth() == 0) {                        if (cnt == 0) {                            searchFacilityClasses[0](defaultSearchClassArray.slice(0).concat(Result[i]));                            cnt++;                        }                        else {                            searchFacilityClasses[0].push(Result[i]);                        }                    }                }                facilityClasses[0](Result[0]);                materialClassForSearch($SearchView.createArrayOfSelectBox('MaterialClassId', materialClass()));            });            var useBusinessFiltering = BWA.UserInfo.isDependBusinessField(viewInfo.viewName)            this.dataSourceOptions.filter.splice(0, this.dataSourceOptions.filter.length);            this.dataSourceOptions.filter.push([eq('SiteId', BWA.UserInfo.SiteId())]);            if (useBusinessFiltering) {                this.dataSourceOptions.filter.push('and');                this.dataSourceOptions.filter.push([eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId())]);                businessFieldDataSource.filter([                    eq('SiteId', BWA.UserInfo.SiteId()),                    'and',                    ['BusinessFieldId', '=', BWA.UserInfo.BusinessFieldId()],                    'and',                    ['BusinessFieldId', '<>', 1]                ]);            }            else {                this.dataSourceOptions.filter.push('and');                this.dataSourceOptions.filter.push(['BusinessFieldId', '<>', 1]);                businessFieldDataSource.filter([                    eq('SiteId', BWA.UserInfo.SiteId()),                    'and',                    ['BusinessFieldId', '<>', 1],                ]);            }            for (var i = 0; i < BWA.UserInfo.MenuPermissions().length; i++) {                if (BWA.UserInfo.MenuPermissions()[i].MenuId == 'MaterialStored2') {                    MenuPermission = BWA.UserInfo.MenuPermissions()[i].MenuPermission;                    break;                }            }            if (MenuPermission >= 4) {                warehouseDataSource.filter([                eq('SiteId', BWA.UserInfo.SiteId()),                and,                eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()),                and,                eq('IsUse', true),                and,                ['BusinessFieldId', '<>', 1],                ]);            }            else {                warehouseDataSource.filter([                eq('SiteId', BWA.UserInfo.SiteId()),                and,                eq('IsUse', true),                and,                ['BusinessFieldId', '<>', 1],                ]);            }            $.when(                businessFieldDataSource.load(),                warehouseDataSource.load(),                progressDataSource.load())            .done(function (dbBusinessField, dbWarehouses, dbProgresses) {                dbBusinessField = dbBusinessField[0];                dbWarehouses = dbWarehouses[0];                dbProgresses = dbProgresses[0];                businessFields(dbBusinessField);                warehouses(dbWarehouses);                businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', dbBusinessField));                progressesForSearch($SearchView.createArrayOfSelectBox('ProgressId', dbProgresses));                deferredForSearch.resolve();            });        },        handleViewShown: function () {        },        handlePopupShown: function (isEditMode, isNew, dataViewModel) {                        var warehouses = viewModel.warehouses();            if (!_.isEmpty(warehouses)) {                dataViewModel.WarehouseId(warehouses[0].WarehouseId());            }            if (isEditMode) {                if (isNew) {                    dataViewModel.IsApproval(false);                }                var userInfo = BWA.UserInfo;            }        },        handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {            dataGrid.clearSelection();            var data = clickRow.data;            var dataModel = viewModel.dataModel;            if (forApprovalViewOptions && forApprovalViewOptions.handleBeforeShowingPopupForEdit) {                forApprovalViewOptions.handleBeforeShowingPopupForEdit(data, dataModel);            }            dataModel.BusinessFieldName = $KoSet(dataModel.BusinessFieldName, data['CmBusinessField/Name']);            dataModel.StoredUserName = $KoSet(dataModel.StoredUserName, data['CmUser/Name']);            dataModel.PurchaseOrderTitle = $KoSet(dataModel.PurchaseOrderTitle, data['FmsMaterialPurchaseOrder/Title']);            //hcLee 2016 01 11            dataModel.PurchaseOrderReason = $KoSet(dataModel.PurchaseOrderReason, data['FmsMaterialPurchaseOrder/Reason']);            dataModel.ApprovalUserName = $KoSet(dataModel.ApprovalUserName, data['CmUser1/Name']);            dataModel.WarehouseName = $KoSet(dataModel.WarehouseName, data['FmsMaterialWarehouse/Name']);            dataModelMaterial.FirstClassId(data['FmsMaterial/FirstClassId']());            dataModelMaterial.SecondClassId(data['FmsMaterial/SecondClassId']());            dataModelMaterial.ThirdClassId(data['FmsMaterial/ThirdClassId']());            dataModelMaterial.Name(data['FmsMaterial/Name']());            dataModelMaterial.Unit(data['FmsMaterial/Unit']());            dataModelMaterial.Standard(data['FmsMaterial/Standard']());            popupVisible(true);        },        handleAfterLoadingModelByKey: function (data, dataViewModel) {            loadMaterials(dataViewModel);        },        // 팝업 화면이 나타날때 발생하는 이벤트         handlePopupShowing: function (isNewInPopup) {            var userInfo = BWA.UserInfo;            if (isNewInPopup()) {                materials([]);                viewModel.dataModel.BusinessFieldId(userInfo.BusinessFieldId());                viewModel.dataModel.StoredUserId(userInfo.UserId());                viewModel.dataModel.StoredUserName(userInfo.Name());                viewModel.dataModel.StoredDate(new Date());            }        }    };    if (_.isObject(forApprovalViewOptions)) {        _.extend(viewOptions, forApprovalViewOptions);    }    else {        // 승인 화면이 아니면 수정에 관련 기능이 필요없다.        _.extend(viewOptions, {            isValidateWithFunction: function (errorMessage) {                if (popup && popup.isValidateWithFunction) {                    return popup.isValidateWithFunction(errorMessage);                }                return true;            },            mandatoryFields: [                { dataField: 'PurchaseRequestId', name: $G('purchaseRequest') },                { dataField: 'MaterialId', name: $G('materialName') },                { dataField: 'WarehouseId', name: $G('warehouseName') },                { dataField: 'StoredCount', name: $G('storedCount') }            ],            handleSaveButtonInPopup: function (isInsert) {                if (isInsert === false) {                    if (popup && popup.handleAfterSave) {                        popup.handleAfterSave(undefined);                    }                }            },            handleAfterSaveInPopup: function (responseKey, response) {                if (popup && popup.handleAfterSave) {                    popup.handleAfterSave(responseKey, response);                }            },        });    }    function initializeSearchClasses(onlyThird) {        if (onlyThird === undefined || onlyThird === false) {            searchFacilityClasses[1](defaultSearchClassArray.slice(0));            searchFacilityClassValues[1](0);        }        searchFacilityClasses[2](defaultSearchClassArray.slice(0));        searchFacilityClassValues[2](0);    }    var handleFirstClassChangedValueInSearchView = function (e) {        if (e.value === 0) {            initializeSearchClasses();            return;        }        BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', e.value, searchFacilityClasses[1], defaultSearchClassArray);    };    var handleSecondClassChangedValueInSearchView = function (e) {        if (searchFacilityClassValues[1]() == null) {            initializeSearchClasses();            BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', 0, searchFacilityClasses[1], defaultSearchClassArray);        }        if (e.value === 0) {            initializeSearchClasses(true);            return;        }        BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', e.value, searchFacilityClasses[2], defaultSearchClassArray);    };    function loadMaterials(dataViewModel) {        var materialStoredId = dataViewModel.MaterialStoredId();        materialsForPurchaseOrderDataSource.filter([            eq('SiteId', dataViewModel.SiteId()),            and,            eq('BusinessFieldId', dataViewModel.BusinessFieldId()),            and,            eq('PurchaseOrderId', dataViewModel.PurchaseOrderId())        ]);        materialStoredDatSource.filter([            eq('SiteId', dataViewModel.SiteId()),            and,            eq('BusinessFieldId', dataViewModel.BusinessFieldId()),            and,            eq('PurchaseOrderId', dataViewModel.PurchaseOrderId())        ]);        materialStoredDatSource.load().done(function (dbStoredMaterials) {            materialsForPurchaseOrderDataSource.load().done(function (dbMaterials) {                materials(_.map(dbMaterials, function (m) {                    m.Unit = m.Unit();                    m.Standard = m.Standard();                    m.UnitCost = m['FmsMaterial/FinalPrice'];                    m.FirstClassId = m.FirstClassId();                    m.SecondClassId = m.SecondClassId();                    m.ThirdClassId = m.ThirdClassId();                    if (m.UnitCost() === null) {                        m.UnitCost(0);                    }                    m.StoredCount = ko.observable(0);                    m.PossibleStoredCount = ko.observable(0);                    if (_.isEmpty(dbStoredMaterials)) {                        m.PossibleStoredCount(m.MaterialCount());                    }                    // 입고가능수량 계산                     var currentStoredCountSum = 0;                    dbStoredMaterials.forEach(function (item) {                        if (m.MaterialId() == item.MaterialId() && item.StockCount !== undefined) {                            currentStoredCountSum += item.StoredCount();                        }                    });                    m.PossibleStoredCount(m.MaterialCount() - currentStoredCountSum);                    dbStoredMaterials.forEach(function (item) {                        if (m.MaterialId() == item.MaterialId() && item.MaterialStoredId() == materialStoredId) {                            if (item.StoredCount === undefined) {                                m.StoredCount(0);                            } else {                                m.StoredCount(item.StoredCount());                            }                            return false;                        }                    });                    return m;                }));            });        });    }    function loadMaterialsInPurchaseOrder(purchaseOrder) {        materialsForPurchaseOrderDataSource.filter([            eq('SiteId', purchaseOrder.SiteId),            and,            eq('BusinessFieldId', purchaseOrder.BusinessFieldId),            and,            eq('PurchaseOrderId', purchaseOrder.PurchaseOrderId)        ]);        // 선택된 구매요청에 대한 자재들을 로드한다.        var promise = materialsForPurchaseOrderDataSource.load();        promise.then(function (dbMaterials) {            var companies = [];            materialStoredDatSource.filter([                eq('SiteId', purchaseOrder.SiteId),                and,                eq('BusinessFieldId', purchaseOrder.BusinessFieldId),                and,                eq('PurchaseOrderId', purchaseOrder.PurchaseOrderId)            ]);            materialStoredDatSource.load().done(function (dbStoredMaterials) {                materials(_.map(dbMaterials, function (m) {                    m.Unit = m.Unit;                    m.Standard = m.Standard;                    m.UnitCost = m['FmsMaterial/FinalPrice'];                    m.FirstClassId = m.FirstClassId;                    m.SecondClassId = m.SecondClassId;                    m.ThirdClassId = m.ThirdClassId;                    m.MaxMaterialCount = ko.observable();                    m.StoredCount = ko.observable();                    m.PossibleStoredCount = ko.observable();                    if (_.isEmpty(dbStoredMaterials)) {                        m.PossibleStoredCount(m.MaterialCount());                    }                    // 입고가능수량 계산                     var currentStoredCountSum = 0;                    dbStoredMaterials.forEach(function (item) {                        if (m.MaterialId() == item.MaterialId() && item.StockCount !== undefined) {                            currentStoredCountSum += item.StoredCount();                        }                    });                    m.PossibleStoredCount(m.MaterialCount() - currentStoredCountSum);                    m.MaxMaterialCount(m.MaterialCount() - currentStoredCountSum);                    if (m.UnitCost() === null) { m.UnitCost(0); }                    m.StoredCount(m.PossibleStoredCount());                    return m;                }));            });        });    }    function handlePopupButtonClose() {        viewModel.popupVisible(false);        viewModel.gridView().refresh();    }    function handlePopupButtonCancel() {        viewModel.popupVisible(false);    }    function handlePopupButtonEdit() {    }    function handlePopupButtonDelete() {    }    viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsMaterialStored', viewOptions);    var materialStoredPopupToolbarItems = [        { location: 'before', text: '입고 등록' },        {            location: 'after',            widget: 'button',            options: {                text: $G('approval'), icon: 'save', type: 'success',                visible: viewModel.visibleApprovalButton,                disabled: viewModel.hasnotModificationPermission,                clickAction: function () {                }            }        },        {            location: 'after', widget: 'button', options: {                text: '입고', icon: 'save', visible: viewModel.isEditModeInPopup,                clickAction: handlePopupButtonSave            }        },        { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: materialStoredPopupButtonClose } }    ];    function materialStoredPopupButtonClose() {        viewModel.popupVisible(false);    }    function handlePopupButtonSave() {        if (viewModel.isNewInPopup()) {            var selectedRowCount = materialGridView.getSelectedRowsData().length;            if (selectedRowCount == 0) {                utils.toast.show('입고하려는 자재를 선택하시기 바랍니다.', 'error');                return;            }            for (var i = 0; i < selectedRowCount; i++) {                if (materialGridView.getSelectedRowsData()[i].PossibleStoredCount() < materialGridView.getSelectedRowsData()[i].StoredCount()) {                    utils.toast.show('입고가능수량을 초과하였습니다.', 'error');                    return;                }                if (materialGridView.getSelectedRowsData()[i].StoredCount() <= 0) {                    utils.toast.show('입고수량은 최소1개 이상입니다.', 'error');                    return;                }            }            for (var i = 0; i < selectedRowCount; i++) {                viewModel.dataModel.MaterialId(materialGridView.getSelectedRowsData()[i].MaterialId());                viewModel.dataModel.UnitCost(materialGridView.getSelectedRowsData()[i].UnitCost())                viewModel.dataModel.StoredCount(materialGridView.getSelectedRowsData()[i].StoredCount());                viewModel.dataModel.RemainStoredCount(materialGridView.getSelectedRowsData()[i].StoredCount());                var postData = viewModel.dataModel.toJS();                BWA.api.post('FmsMaterialStored/Store', viewModel.dataModel.toJS()).then(function () {                    utils.toast.show($G('successDatabaseProcessMsg'));                    viewModel.gridView().refresh();                    //var purchaseOrder = {                    //    SiteId: viewModel.dataModel.SiteId(),                    //    BusinessFieldId: viewModel.dataModel.BusinessFieldId(),                    //    PurchaseOrderId: viewModel.dataModel.PurchaseOrderId(),                    //};                    //loadMaterialsInPurchaseOrder(purchaseOrder);                });            }        }        viewModel.popupVisible(false);    }    viewModel.handleButtonSearchPurchaseOrder = function () {        viewModel.purchaseOrderSearchPopup.show();    };    viewModel.purchaseOrderSearchPopup = BWA.Popup.PurchaseOrderSearch.create(viewModel, {        filter: [            eq('SiteId', BWA.UserInfo.SiteId())        ],        onSelectedPurchaseOrder: function (purchaseOrder) {            var purchaseOrderId = purchaseOrder.PurchaseOrderId;            loadMaterialsInPurchaseOrder(purchaseOrder);            viewModel.dataModel.PurchaseOrderId(purchaseOrder.PurchaseOrderId);            viewModel.dataModel.PurchaseOrderTitle(purchaseOrder.Title);            // hcLee 2016 01 11            viewModel.dataModel.PurchaseOrderReason(purchaseOrder.Reason);            // JD Comment : 구매목록이 선택되면 비즈니스 필드를 변경             viewModel.dataModel.BusinessFieldId(purchaseOrder.BusinessFieldId);            var result = $.grep(businessFields(), function (e) { return e.BusinessFieldId() == purchaseOrder.BusinessFieldId; });            if (result.length != 0) {                viewModel.dataModel.BusinessFieldName(result[0].Name());            }            // hcLee 2016 05 02 창고도 변경            for (var i = 0; i < BWA.UserInfo.MenuPermissions().length; i++) {                if (BWA.UserInfo.MenuPermissions()[i].MenuId == 'MaterialStored') {                    MenuPermission = BWA.UserInfo.MenuPermissions()[i].MenuPermission;                    break;                }            }            if (MenuPermission >= 4) {                warehouseDataSource.filter([                eq('SiteId', BWA.UserInfo.SiteId()),                and,                eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()),                and,                eq('IsUse', true),                and,                ['BusinessFieldId', '<>', 1],                ]);            }            else {                warehouseDataSource.filter([                eq('SiteId', BWA.UserInfo.SiteId()),                and,                eq('IsUse', true),                and,                ['BusinessFieldId', '<>', 1],                ]);            }            $.when(                warehouseDataSource.load())            .done(function (dbWarehouses) {                viewModel.warehouses(dbWarehouses);                var warehouses = viewModel.warehouses();                if (!_.isEmpty(warehouses)) {                    viewModel.dataModel.WarehouseId(warehouses[0].WarehouseId());                }                deferredForSearch.resolve();            });            // hcLee 2016 05 02 창고도 변경        }    });    viewModel.popupVisible.subscribe(function (visible) {        if (!visible) {            materials([]);        }    });    viewModel.materialStoredPopupToolbarItems = materialStoredPopupToolbarItems;    viewModel.dataModel.PurchaseOrderTitle = ko.observable();    // 2016 01 11    viewModel.dataModel.PurchaseOrderReason = ko.observable();    viewModel.dataModel.BusinessFieldName = ko.observable();    viewModel.dataModel.ProgressName = ko.observable();    viewModel.dataModel.StoredUserName = ko.observable();    viewModel.dataModel.WarehouseName = ko.observable();    viewModel.dataModelMaterial = dataModelMaterial;    viewModel.businessFields = businessFields;    viewModel.warehouses = warehouses;    viewModel.materialDataGridOptions = utils.datagrid.defaultOptions({        width: 970,        visible: true,        selection: { mode: 'multiple', allowSelectAll: true }, // hcLee 2015 11 26추가        pager: {            //showPageSizeSelector: false,            //allowedPageSizes: []        },        paging: {            pageSize: 15,            enabled: true        },        dataSource: materials,        columns: materialFactory.getColumns([            { dataField: 'MaterialCode', width: '25%', visible: false },            {                dataField: 'FirstClassId', width: '15%', caption: '자재(대)', alignment: 'center',                customizeText: function (cellInfo) {                    for (var i = 1; i < materialClassForSearch().length; i++) {                        if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) {                            return materialClassForSearch()[i].Name();                        }                    }                }            },            {                dataField: 'SecondClassId', width: '15%', caption: '자재(중)', alignment: 'center',                customizeText: function (cellInfo) {                    for (var i = 1; i < materialClassForSearch().length; i++) {                        if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) {                            return materialClassForSearch()[i].Name();                        }                    }                }            },            {                dataField: 'ThirdClassId', width: '15%', caption: '자재(소)', alignment: 'center',                customizeText: function (cellInfo) {                    for (var i = 1; i < materialClassForSearch().length; i++) {                        if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) {                            return materialClassForSearch()[i].Name();                        }                    }                }            },            { dataField: 'Name', width: '30%' },            { dataField: 'Standard', width: '30%', alignment: 'center', caption: '규격' },            { dataField: 'Unit', width: '15%', alignment: 'center', caption: '단위' },            { dataField: 'MaterialCount', width: '15%', alignment: 'center', caption: '발주수량', format: 'currency' },            { dataField: 'PossibleStoredCount', width: '25%', alignment: 'center', caption: '입고가능수량', format: 'currency' },            {                dataField: 'StoredCount', width: '15%', alignment: 'center', caption: '입고수량',                cellTemplate: utils.datagrid.getNumberBoxDataGridTemplateFunc({                    min: 0,                    max: 1000000,                    dataField: 'StoredCount',                    convertValueWhenValueChanged: function (value) {                        return Math.max(1, value);                    }                })            },            {                dataField: 'UnitCost', width: '15%', alignment: 'center', caption: $G('unitCost'), format: 'currency'            }        ]),        cellClick: function (e) {            if (viewModel.isEditModeInPopup()) {                utils.datagrid.cellClickEventForDataGridTemplate(e, 'StoredCount');            }        },        contentReadyAction: function (e) { materialGridView = e.component; },        rowPrepared: function (rowElement, rowInfo) {            if (rowInfo.rowType == 'data') {                var data = rowInfo.data;                if (data.MaterialId() === viewModel.dataModel.MaterialId()) {                    var color;                    if (data.MaterialCount() === viewModel.dataModel.StoredCount()) { color = 'rgba(0,255,0,0.1)'; }                    else { color = 'rgba(255,0,0,0.1)'; }                    rowElement.css('background-color', color);                }            }        },        rowClick: function (clickRow) {            var data = clickRow.data;            if (viewModel.isEditModeInPopup()) {                dataModelMaterial.MaterialId(data.MaterialId());                dataModelMaterial.Name(data.Name());                dataModelMaterial.Unit(data.Unit());                dataModelMaterial.ThirdClassId(data.ThirdClassId());                dataModelMaterial.FirstClassId(data.FirstClassId());                dataModelMaterial.SecondClassId(data.SecondClassId());                dataModelMaterial.Standard(data.Standard());                viewModel.dataModel.StoredCount(data.StoredCount());                viewModel.dataModel.UnitCost(data.UnitCost());            }        }    });    viewModel.popup = popup;    viewModel.handleSecondClassChangedValueInSearchView = handleSecondClassChangedValueInSearchView;    viewModel.handleFirstClassChangedValueInSearchView = handleFirstClassChangedValueInSearchView;    viewModel.facilityClasses = facilityClasses;    return viewModel;};
 |