| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 | BemsWebApplication.PurchaseOrder = function (params, viewInfo) {    'use strict';    var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true),        materialDataSource = BemsWebApplication.db.createDataSource('FmsMaterial', true, true),        progressDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeProgress'),        businessFields = ko.observableArray();    var popup;    var deferredForSearch = new $.Deferred();    var businessFieldsForSearch = ko.observableArray(), progressesForSearch = ko.observableArray();    var eq = BWA.DataUtil.constructEqualFilter;    var and = BWA.DataUtil.andFilter;    var dataSourceOptions = {        select: [            'SiteId', 'BusinessFieldId', 'PurchaseOrderId', 'Title', 'OrderDate', 'StoredDueDate',            'CmFile/Name',            'FmsMaterialTradeCompany/Name',            'FmsMaterialPurchaseRequest/Title',            'FmsMaterialPurchaseRequest/Reason',            'FmsMaterialPurchaseRequest/FmsMaterialCodeProgress/Name',            'CmBusinessField/Name', 'CmUser/Name'        ],        filter: [            eq('SiteId', BWA.UserInfo.SiteId()),            and,            [                eq('FmsMaterialPurchaseRequest/ProgressId', $Code.PurchaseProgress.PURCHASE_REQUEST_APPROVAL),                'or',                eq('FmsMaterialPurchaseRequest/ProgressId', $Code.PurchaseProgress.PURCHASE_ORDER_REQUEST)            ]        ],        expand: [            'CmUser', 'FmsMaterialTradeCompany', 'CmFile',            'FmsMaterialPurchaseRequest', 'CmBusinessField',            'FmsMaterialPurchaseRequest/FmsMaterialCodeProgress',            'FmsMaterialPurchaseOrderMaterial/FmsMaterial'        ],        extendOptions: {            forceOriginalField: true        }    }    var viewModel;    var viewOptions = {        popupWidth: 1450,        dataSourceOptions: dataSourceOptions,        columns: [            { dataField: 'PurchaseOrderId', caption: $G('number'), width: '10%', alignment: 'center' },            { dataField: 'CmBusinessField/Name', caption: $G('businessField'), width: '10%', alignment: 'center' },            { dataField: 'FmsMaterialPurchaseRequest/FmsMaterialCodeProgress/Name', caption: $G('progressStatus'), width: '10%', alignment: 'center' },            { dataField: 'Title', caption: $G('purchaseOrderTitle'), width: '40%', alignment: 'center' },            { dataField: 'CmUser/Name', caption: $G('purchaseOrdererName'), width: '10%', alignment: 'center' },            {                dataField: 'OrderDate', caption: $G('purchaseOrderDate'), width: '15%', alignment: 'center', sortOrder: 'desc', dataType: "shortDate", format: "yyyy-MM-dd",                customizeText: function (cellInfo) {                    return cellInfo.valueText;                }            },            {                dataField: 'StoredDueDate', caption: $G('storedDueDate'), width: '15%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd",                customizeText: function (cellInfo) {                    return cellInfo.valueText;                }            }        ],        paging: {            pageSize: 18,            enabled: true        },        pager: {},        "export": {            enabled: true,            fileName: '발주 신청 목록',        },        onExporting: function (e) {            e.component.columnOption("PurchaseOrderId", "visible", false);        },        onExported: function (e) {            e.component.columnOption("PurchaseOrderId", "visible", true);        },        promiseDataInSearchView: deferredForSearch.promise(),        searchViewItems: [            { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: businessFieldsForSearch },            { id: 'OrderDate', type: 'dateRange', isOnlyDate: true },            { id: 'Title' },            { id: 'CmUser/Name' },            //{ id: 'FmsMaterialTradeCompany/Name' },            { id: 'FmsMaterial/Name', filterFormatString: 'FmsMaterialPurchaseOrderMaterial/any(c: substringof(\'{0}\', c/FmsMaterial/Name))', type: 'formatting' },            //{ id: 'FmsMaterial/Name'},            { id: 'FmsMaterialPurchaseRequest/ProgressId', ignoreValue: 0, defaultValue: 0, dataSource: progressesForSearch }        ],        handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {            dataGrid.clearSelection();            var data = clickRow.data;            var dataModel = viewModel.dataModel;            popup.handleBeforeShowingPopupForEdit(data, dataModel);            popupVisible(true);        },        handleAfterLoadingModelByKey: function (data, dataViewModel) {            popup.handleAfterLoadingModelByKey(data, dataViewModel);        },        handlePopupShowing: function (isNewInPopup, dataViewModel) {            popup.handlePopupShowing(isNewInPopup, dataViewModel);        },        handleSaveInPopup: function () {            if (_.isEmpty(viewModel.popup.materials())) {                utils.toast.show('선택된 발주등록 자재가 없습니다.', 'error');                return false;            }            if ($G.date(viewModel.dataModel.StoredDueDate()) < $G.date(viewModel.dataModel.OrderDate())) {                utils.toast.show('입고예정일은 발주일 이후로 설정하시기 바랍니다.', 'error');                return;            }            if (_.isEmpty(viewModel.dataModel.PurchaseRequestTitle())) {                utils.toast.show('선택된 구매요청 제목이 없습니다.', 'error');                return;            }            BWA.db.FmsMaterialPurchaseOrder.insert(viewModel.dataModel.toJS()).done(function (response, responseKey) {                if (popup && popup.handleAfterSave) {                    popup.handleAfterSave(response, responseKey);                }            });        },        beforeUpdateDataViewModel: function () {            if (_.isEmpty(viewModel.popup.materials())) {                utils.toast.show('선택된 발주등록 자재가 없습니다.', 'error');                return 0;            }            if ($G.date(viewModel.dataModel.StoredDueDate()) < $G.date(viewModel.dataModel.OrderDate())) {                utils.toast.show('입고예정일은 발주일 이후로 설정하시기 바랍니다.', 'error');                return 0;            }            var keys = BWA.db.extractKeysObject('FmsMaterialPurchaseOrder', viewModel.dataModel);            BWA.db.FmsMaterialPurchaseOrder.update(keys, viewModel.dataModel.toJS()).done(function (response, responseKey) {                if (popup && popup.handleAfterSave) {                    popup.handleAfterSave(response, responseKey);                }            });            return 1;        },        handleAfterSaveInPopup: function (responseKey, response) {            popup.handleAfterSave(responseKey, response);        },        handlePopupShown: function (editMode, isNew, dataViewModel) {            popup.handlePopupShown(editMode, isNew, dataViewModel);        },        handleViewShowing: function (dataModel) {            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()],                ]);            }            else {                this.dataSourceOptions.filter.push('and');                this.dataSourceOptions.filter.push(['BusinessFieldId', '<>', 1]);                businessFieldDataSource.filter([                    eq('SiteId', BWA.UserInfo.SiteId()),                    'and',                    ['BusinessFieldId', '<>', 1]                ]);            }            $.when(                businessFieldDataSource.load(),                progressDataSource.load())            .done(function (dbBusinessField, dbProgresses) {                dbBusinessField = dbBusinessField[0];                dbProgresses = dbProgresses[0];                businessFields(dbBusinessField);                businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', dbBusinessField));                progressesForSearch($SearchView.createArrayOfSelectBox('ProgressId', dbProgresses));                deferredForSearch.resolve();            });        },        handleViewShown: function (dataViewModel, isEditModeInPopup) {            popup.handleViewShown(dataViewModel, isEditModeInPopup);        },        handleSaveSuccess: function () {            popup.handleSaveSuccess();        },        isValidateWithFunction: function (errorMessage) {            return popup.isValidateWithFunction(errorMessage);        },        mandatoryFields: [            { dataField: 'BusinessFieldId', name: $G('businessField') },            { dataField: 'Title', name: $G('requestTitle') }        ],        getAddedToolbarItemsInPopup: function (e) {            var isEditModeInPopup = e.isEditModeInPopup,                 isNewInPopup = e.isNewInPopup;            return [{                location: 'after', widget: 'button', options: {                    text: $G('materialInsertion'), icon: 'search', visible: isNewInPopup, //isEditModeInPopup,                    clickAction: function () {                        viewModel.materialSearchPopup.show();                    }                }            }, {                location: 'after', widget: 'button', options: {                    text: $G('materialDeletion'), icon: 'remove', type: 'danger', visible: isNewInPopup,//isEditModeInPopup,                    clickAction: function () {                        popup.handleDeleteSelectedMaterials();                    }                }            }];        }    };    viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsMaterialPurchaseOrder', viewOptions);    viewModel.businessFields = businessFields;    popup = viewModel.popup = BWA.Popup.PurchaseOrder.create(viewInfo, viewModel);    return viewModel;};
 |