| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 | $(function () {    'use strict';    BemsWebApplication.Popup.MaterialStored = {        create: function (viewInfo, viewModel, forApprovalOptions) {            var material = BWA.db.createDataSource('FmsMaterialStored', true, true),                                materials = ko.observableArray(),                dataModelMaterial = new BWA.FmsMaterialViewModel();            var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter;            var materialFactory = BWA.Factory.Material,                purchaseProgressCode = BWA.Code.PurchaseProgress,                materialGridView,                materialDataGridOptions = undefined;            var materialsDataSource = materialFactory.getBasicDataSourceRef({                dbModeIId: 'FmsMaterialPurchaseRequestMaterial',                primaryKeyDataField: 'PurchaseRequestId'            }),                 materialsForPurchaseRequestDataSource = materialFactory.getBasicDataSourceRef({                     dbModeIId: 'FmsMaterialPurchaseRequestMaterial',                     primaryKeyDataField: 'PurchaseRequestId',                     moreSelectFields: [                         'FmsMaterial/Unit', 'FmsMaterial/Standard',                         'FmsMaterial/TradeCompanyId',                         'FmsMaterial/FinalPrice']                 });            function loadMaterialsInPurchaseRequest(purchaseRequest) {                materialsForPurchaseRequestDataSource.filter([                    eq('SiteId', purchaseRequest.SiteId),                    and,                    eq('BusinessFieldId', purchaseRequest.BusinessFieldId),                    and,                    eq('PurchaseRequestId', purchaseRequest.PurchaseRequestId)                ]);                // 선택된 구매요청에 대한 자재들을 로드한다.                var promise = materialsForPurchaseRequestDataSource.load();                promise.then(function (dbMaterials) {                    var companies = [];                    materials(_.map(dbMaterials, function (m) {                        m.Unit = m['FmsMaterial/Unit'];                        m.Standard = m['FmsMaterial/Standard'];                        m.UnitCost = m['FmsMaterial/FinalPrice'];                        if (m.UnitCost() === null) {                            m.UnitCost(0);                        }                        return m;                    }));                });            }            // 구매신청 정보가 저장된 후에 호출 된다.             // 등록이면 responseKey가 있고, 수정이면 없다.            function handleAfterSave(responseKey, response) {                BWA.db.FmsMaterialPurchaseRequest.update({                    SiteId: response.SiteId,                    BusinessFieldId: response.BusinessFieldId,                    PurchaseRequestId: response.PurchaseRequestId                }, {                    ProgressId: $Code.PurchaseProgress.MATERIAL_STORED                });            }            function handlePopupShowing(isNewInPopup, dataModel) {                var userInfo = BWA.UserInfo;                if (isNewInPopup()) {                    var progressId = $Code.PurchaseProgress.MATERIAL_STORED;                    dataModel.ProgressName(purchaseProgressCode.getName(progressId));                    dataModel.BusinessFieldId(userInfo.BusinessFieldId());                    dataModel.StoredUserId(userInfo.UserId());                    dataModel.StoredUserName(userInfo.Name());                    dataModel.StoredDate(new Date());                }            }            function handlePopupShown(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;                    dataViewModel.BusinessFieldId(userInfo.BusinessFieldId());                    dataViewModel.BusinessFieldName(userInfo.BusinessFieldName());                }            }            function handleAfterLoadingModelByKey(data, dataViewModel) {                var progressId = dataViewModel.ProgressId();                if (progressId !== $Code.PurchaseProgress.MATERIAL_STORED) {                    viewModel.visibleEditButton(false);                    viewModel.visibleDeleteButton(false);                }                dataViewModel.ProgressName(purchaseProgressCode.getName(progressId));                var eq = BWA.DataUtil.constructEqualFilter;                var and = BWA.DataUtil.andFilter;                materialsDataSource.filter([                    eq('SiteId', dataViewModel.SiteId()),                    and,                    eq('BusinessFieldId', dataViewModel.BusinessFieldId()),                    and,                    eq('PurchaseRequestId', dataViewModel.PurchaseRequestId())                ]);                materialsDataSource.load().done(function (dbMaterials) {                    materials(dbMaterials);                });            }            function handleBeforeShowingPopupForEdit(rowData, dataViewModel) {                dataViewModel.BusinessFieldName = $KoSet(dataViewModel.BusinessFieldName, rowData['CmBusinessField/Name']);                dataViewModel.StoredUserName = $KoSet(dataViewModel.StoredUserName, rowData['CmUser/Name']);                dataViewModel.PurchaseRequestTitle = $KoSet(dataViewModel.PurchaseRequestTitle, rowData['FmsMaterialPurchaseRequest/Title']);                dataViewModel.ApprovalUserName = $KoSet(dataViewModel.ApprovalUserName, rowData['CmUser1/Name']);                dataViewModel.WarehouseName = $KoSet(dataViewModel.WarehouseName, rowData['FmsMaterialWarehouse/Name']);                dataViewModel.ProgressId = $KoSet(dataViewModel.ProgressId, rowData['FmsMaterialPurchaseRequest/ProgressId']);                dataViewModel.ProgressName = $KoSet(dataViewModel.ProgressName, rowData['FmsMaterialPurchaseRequest/FmsMaterialCodeProgress/Name']);                dataModelMaterial.Name(rowData['FmsMaterial/Name']());                dataModelMaterial.Unit(rowData['FmsMaterial/Unit']());                dataModelMaterial.Standard(rowData['FmsMaterial/Standard']());            }            function handleButtonSearchPurchaseRequest() {                viewModel.purchaseRequestSearchPopup.show();            }            function handleButtonSearchMaterial() {                viewModel.materialSearchPopup.show();            }            viewModel.popupVisible.subscribe(function (visible) {                if (!visible) {                    materials([]);                }            });            viewModel.dataModel.StoredCount.subscribe(function (count) {                viewModel.dataModel.StockCount(count);            });            viewModel.dataModel.PurchaseRequestTitle = ko.observable();            viewModel.dataModel.BusinessFieldName = ko.observable();            viewModel.dataModel.ProgressName = ko.observable();            viewModel.dataModel.StoredUserName = ko.observable();            viewModel.dataModel.WarehouseName = ko.observable();            materialDataGridOptions = utils.datagrid.defaultOptions({                width: 650,                visible: true,                pager: {                    showPageSizeSelector: false,                    allowedPageSizes: []                },                dataSource: materials,                columns: materialFactory.getColumns([                    { dataField: 'MaterialCode', width: '35%' },                    { dataField: 'Name', width: '40%' },                    { dataField: 'MaterialCount', width: '15%', alignment: 'center', caption: $G('materialCount') },                    {                        dataField: 'UnitCost', width: '20%', alignment: 'center', caption: $G('unitCost')                    }                ]),                contentReadyAction: function (e) {                    materialGridView = e.component;                },                rowPrepared: function (rowElement, rowInfo) {                    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.Standard(data.Standard());                        viewModel.dataModel.MaterialId(data.MaterialId());                        viewModel.dataModel.StoredCount(data.MaterialCount());                        viewModel.dataModel.UnitCost(data.UnitCost());                    }                }            });            if (_.isObject(forApprovalOptions) === false) {                viewModel.materialSearchPopup = BWA.Popup.Material.create(viewModel, {                    isMultipleSelect: false,                    onSelectedMaterials: function (selectedMaterial) {                        var purchaseRequestId = viewModel.dataModel.PurchaseRequestId();                        var dm = viewModel.dataModel;                        var m = selectedMaterial[0];                        viewModel.dataModel.MaterialId(m.MaterialId);                        viewModel.dataModel.UnitCost(m.FinalPrice);                        dataModelMaterial.fromJS(m);                        materialGridView.refresh();                    }                });                viewModel.purchaseRequestSearchPopup = BWA.Popup.PurchaseRequestSearch.create(viewModel, {                    filter: [                        eq('SiteId', BWA.UserInfo.SiteId()),                        and,                        [   // 구매요청에서 자재입고 승인 전까지 입고가 가능하다.                            ['ProgressId', '>=', $Code.PurchaseProgress.PURCHASE_REQUEST_APPROVAL],                            and,                            ['ProgressId', '<', $Code.PurchaseProgress.MATERIAL_STORED_APPROVAL]                        ]                    ],                    onSelectedPurchaseRequest: function (purchaseRequest) {                        var purchaseRequestId = purchaseRequest.PurchaseRequestId;                        loadMaterialsInPurchaseRequest(purchaseRequest);                        viewModel.dataModel.PurchaseRequestId(purchaseRequest.PurchaseRequestId);                        viewModel.dataModel.PurchaseRequestTitle(purchaseRequest.Title);                    }                });            }            return {                dataModelMaterial: dataModelMaterial,                materialDataGridOptions: materialDataGridOptions,                handleAfterLoadingModelByKey: handleAfterLoadingModelByKey,                handleAfterSave: handleAfterSave,                handlePopupShowing: handlePopupShowing,                handlePopupShown: handlePopupShown,                handleButtonSearchPurchaseRequest: handleButtonSearchPurchaseRequest,                handleBeforeShowingPopupForEdit: handleBeforeShowingPopupForEdit,                handleButtonSearchMaterial: handleButtonSearchMaterial,            };        }    }});
 |