| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 | $(function () {    'use strict';    BemsWebApplication.Popup.PurchaseOrderStatusByPurchaseRequest = {        create: function (viewInfo, viewModel, forApprovalOptions) {            var materials = ko.observableArray();            var materialFactory = BWA.Factory.Material,                purchaseProgressCode = BWA.Code.PurchaseProgress,                                materialGridView,                materialDataGridOptions = undefined;            var materialsDataSource = materialFactory.getBasicDataSourceRef({                dbModeIId: 'FmsMaterialPurchaseRequestMaterial',                primaryKeyDataField: 'PurchaseRequestId'            }),                materialsForPurchaseOrderDataSource = materialFactory.getBasicDataSourceRef({                    dbModeIId: 'FmsMaterialPurchaseOrderMaterial',                    primaryKeyDataField: 'PurchaseOrderId',                    expand: ['FmsMaterialPurchaseOrder'],                    moreSelectFields: [                        'FmsMaterialPurchaseOrder/StoredDueDate',                        'FmsMaterialPurchaseOrder/OrderDate',                        'FmsMaterial/TradeCompanyId',                        'FmsMaterial/FinalPrice'                    ]                });            function handlePopupShowing(isNewInPopup, dataModel) {                $("#gridContainer2").dxDataGrid({                    paging: {                        pageSize: 12,                        enabled: true                    }                });                var userInfo = BWA.UserInfo;                if (isNewInPopup()) {                    var progressId = $Code.PurchaseProgress.PURCHASE_REQUEST;                    if (userInfo.isDependBusinessField(viewInfo.viewName)) {                        BWA.db.CmBusinessField.byKey({                            SiteId: userInfo.SiteId(),                            BusinessFieldId: userInfo.BusinessFieldId()                        }).done(function (businessField) {                            dataModel.BusinessFieldName(businessField.Name);                        });                    }                    dataModel.ProgressId(progressId);                    dataModel.ProgressName(purchaseProgressCode.getName(progressId));                    dataModel.BusinessFieldId(userInfo.BusinessFieldId());                    dataModel.RequestUserId(userInfo.UserId());                    dataModel.RequesterName(userInfo.Name());                    dataModel.RequestDate(new Date());                    dataModel.PurchaseHopeDate(moment().add(1, 'd').toDate());                }            }            function handleDeleteSelectedMaterials() {            }            function handlePopupShown(editMode, isNew, dataViewModel) {            }            // 구매신청 정보가 저장된 후에 호출 된다.             // 등록이면 responseKey가 있고, 수정이면 없다.            function handleAfterSave(responseKey) {            }            function handleAfterLoadingModelByKey(data, dataViewModel) {                if (dataViewModel.ProgressId() !== $Code.PurchaseProgress.PURCHASE_REQUEST) {                    viewModel.visibleEditButton(false);                    viewModel.visibleDeleteButton(false);                }                dataViewModel.ProgressName(purchaseProgressCode.getName(dataViewModel.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())                ]);                materialsForPurchaseOrderDataSource.filter([                    eq('SiteId', dataViewModel.SiteId()),                    and,                    eq('BusinessFieldId', dataViewModel.BusinessFieldId()),                    and,                    eq('FmsMaterialPurchaseOrder/PurchaseRequestId', dataViewModel.PurchaseRequestId())                ]);                $.when(                    materialsDataSource.load(),                    materialsForPurchaseOrderDataSource.load())                .done(function (dbRequestMaterials, dbOrderMaterials) {                    dbRequestMaterials = dbRequestMaterials[0];                    dbOrderMaterials = dbOrderMaterials[0];                    var materialArray = [];                    _.each(dbRequestMaterials, function (requestMaterial) {                        var materialId = requestMaterial.MaterialId();                        var material = BWA.DataUtil.convertViewModelToJS(requestMaterial);                        var orderMaterial = BWA.DataUtil.popFromArray(dbOrderMaterials, function (m) {                            return (m.MaterialId() === materialId);                        });                        if (orderMaterial) {                            material.PurchaseOrderCount = orderMaterial.MaterialCount();                            material.StoredDueDate = orderMaterial['FmsMaterialPurchaseOrder/StoredDueDate']();                            material.OrderDate = orderMaterial['FmsMaterialPurchaseOrder/OrderDate']();                        }                        materialArray.push(material);                    });                    if (_.isEmpty(dbOrderMaterials) === false) {                        _.each(dbOrderMaterials, function (m) {                            // 같은 자재에 대해 발주가 여러개라면 더해준다.                            var dupOrderMaterial = _.find(materialArray, function (mm) {                                return mm.MaterialId === m.MaterialId();                            });                            if (dupOrderMaterial) {                                dupOrderMaterial.PurchaseOrderCount += m.MaterialCount();                                return;                            }                            var material = BWA.DataUtil.convertViewModelToJS(m);                            material.PurchaseOrderCount = m.MaterialCount();                            delete material.MaterialCount;                            material.StoredDueDate = m['FmsMaterialPurchaseOrder/StoredDueDate']();                            material.OrderDate = m['FmsMaterialPurchaseOrder/OrderDate']();                            materialArray.push(material);                        });                    }                    materials(materialArray);                });            }            function handleBeforeShowingPopupForEdit(rowData, dataViewModel) {                dataViewModel.BusinessFieldName = $KoSet(dataViewModel.BusinessFieldName, rowData['CmBusinessField/Name']);                dataViewModel.RequesterName = $KoSet(dataViewModel.RequesterName, rowData['CmUser/Name']);                dataViewModel.ApprovalUserName = $KoSet(dataViewModel.ApprovalUserName, rowData['CmUser1/Name']);                dataViewModel.PurchaseTypeName = $KoSet(dataViewModel.PurchaseTypeName, rowData['FmsMaterialCodePurchaseType/Name']);            }            viewModel.popupVisible.subscribe(function (visible) {                if (!visible) {                    materials([]);                }            });            viewModel.dataModel.BusinessFieldName = ko.observable();            viewModel.dataModel.ProgressName = ko.observable();            viewModel.dataModel.RequesterName = ko.observable();            viewModel.dataModel.PurchaseTypeName = ko.observable();            var materialColumns = materialFactory.getColumns([                { dataField: 'MaterialCode', width: '20%' },                { dataField: 'Name', width: '30%' },                { dataField: 'Standard', width: '30%', alignment: 'center', caption: '규격' },                { dataField: 'Unit', width: '15%', alignment: 'center', caption: '단위' }            ]);            materialDataGridOptions = utils.datagrid.defaultOptions({                width: 840,                visible: viewModel.viewModeInPopup,                pager: {                    showPageSizeSelector: false,                    allowedPageSizes: []                },                dataSource: materials,                columns: materialColumns.concat([                    { dataField: 'MaterialCount', width: '15%', alignment: 'center', caption: '구매신청수량', format: 'currency' },                    { dataField: 'PurchaseOrderCount', width: '15%', alignment: 'center', caption: $G('purchaseOrderCount'), format: 'currency' },                    { dataField: 'StoredDueDate', width: '15%', alignment: 'center', caption: $G('storedDueDate') },                ]),                rowPrepared: function (rowElement, rowInfo) {                    if (rowInfo.rowType == 'data') {                        var data = rowInfo.data;                        if (data.MaterialCount !== data.PurchaseOrderCount) {                            rowElement.css('background-color', 'rgba(255,0,0,0.1)');                        }                    }                }            });            return {                materialDataGridOptions: materialDataGridOptions,                handleAfterLoadingModelByKey: handleAfterLoadingModelByKey,                handlePopupShowing: handlePopupShowing,                handlePopupShown: handlePopupShown,                handleBeforeShowingPopupForEdit: handleBeforeShowingPopupForEdit,            };        }    }});
 |