| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 | BemsWebApplication.BudgetPlan = function (params, viewInfo) {    'use strict';    var budgetPlanDataGridOptions,        modifiableBudgetPlanDataGridOptions = undefined    ;    var budgets = ko.observableArray(),        budgetsInView = ko.observableArray()    ;    var budgetGridView  = undefined;    var budgetCodeDataSource = BWA.DataUtil.createDataSource({        dataSourceOptions: {            paginate: false,            store: BemsWebApplication.odata.FmsBudgetCodeClassEx,            select: [                'FirstBudgetClassId',                'SecondBudgetClassId',                'ThirdBudgetClassId',                'FirstBudgetName',                'SecondBudgetName',                'ThirdBudgetName',                'YearlyBudget',                'MonthlyBudget',                'FirstBudgetNameWithSum',                'SecondBudgetNameWithSum',            ],        },    });    modifiableBudgetPlanDataGridOptions = utils.datagrid.defaultOptions({        //pager: {        //    showPageSizeSelector: false,        //    allowedPageSizes: []        //},        //pager: {        //    allowedPageSizes: false,        //},        //paging: {        //    enabled: false        //},        dataSource: budgetsInView,        columns: [            { dataField: 'FirstBudgetNameWithSum', caption: '대분류' , width: '1%', alignment: 'center', groupIndex: 0 },            { dataField: 'SecondBudgetNameWithSum', caption: '중분류', width: '1%', alignment: 'center', groupIndex: 1 },            { dataField: 'ThirdBudgetName', caption: '소분류', width: '50%', alignment: 'center', allowEditing: false },            {                dataField: 'YearlyBudget', caption: '연간예산', alignment: 'center'                , cellTemplate: utils.datagrid.getNumberBoxDataGridTemplateFunc({                    min: 0,                    max: Number.MAX_SAFE_INTEGER,                    //max: 100000000,                    dataField: 'YearlyBudget'                    , convertValueWhenValueChanged: function (data, value) {                        var monthlyValue = value / 12;                        data.MonthlyBudget(monthlyValue);                        reCalculateSummaryValue();                        return Math.max(0, value);                    }                })            },            {                dataField: 'MonthlyBudget', caption: '월간예산', alignment: 'center'                , cellTemplate: utils.datagrid.getNumberBoxDataGridTemplateFunc({                    min: 0,                    max: Number.MAX_SAFE_INTEGER,                    //max: 100000000,                    dataField: 'MonthlyBudget'                    , convertValueWhenValueChanged: function (data, value) {                        var yearlyValue = value * 12;                        data.YearlyBudget(yearlyValue);                        reCalculateSummaryValue();                        return Math.max(0, value);                    }                })            },        ],        cellClick: function (e) {            if(e.column.dataField === 'YearlyBudget' || e.column.dataField === 'MonthlyBudget' ){                utils.datagrid.cellClickEventForDataGridTemplate(e, e.column.dataField);            }        },              contentReadyAction: function (e) {            budgetGridView = e.component;        },    });    var dataSourceOptions = {        select: [            'SiteId',            'Year',        ],        expand: [            'FmsBudgetDetail',            'FmsBudgetDetail/FmsBudgetCodeClass', // FirstBudgetClass            'FmsBudgetDetail/FmsBudgetCodeClass1', // SecondBudgetClass            'FmsBudgetDetail/FmsBudgetCodeClass2', // ThridBudgetClass        ],        extendOptions: {            forceOriginalField: true        },        filter: [            ['SiteId', '=', BWA.UserInfo.SiteId()]        ]    };    var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsBudget', {        dataSourceOptions: dataSourceOptions,        columns: [            { dataField: 'Year', caption: $G('year'), width: '100%', alignment: 'center', allowFiltering: false, sortOrder: 'desc' },        ],        //searchViewItems: [{ id: 'Name' }],        handleViewShowing: function (dataModel) {            $.when(                budgetCodeDataSource.load()            ).done(function (budgetCodeResult) {                budgetsInView(budgetCodeResult);            });            viewModel.popupOptions.position = { offset: '0, -200' };        },        handlePopupShowing: function (isNewInPopup, dataViewModel) {            //if (isNewInPopup()) { // 신규등록인 경우             //    // UI 에는별도로 표시하지 않음            //    dataViewModel.PartnerTypeId(1);            //}        },    });    function reCalculateSummaryValue() {        // budgetsInView        var firstCodeList = _.keys(_.countBy(budgetsInView(), function (data) { return data.FirstBudgetClassId(); }));        var secondCodeList = _.keys(_.countBy(budgetsInView(), function (data) { return data.SecondBudgetClassId(); }));        //var firstCodeData = [];        //var secondCodeData = [];        var firstCodeYearlySumValue = 0;        var firstCodeMonthlySumValue = 0;        var secondCodeYearlySumValue = 0;        var secondCodeMonthlySumValue = 0;        // 1차 코드에 대한 계산         _.each(firstCodeList, function (x) {            _.each(budgetsInView(), function (b) {                if (x == b.FirstBudgetClassId()) {                    firstCodeYearlySumValue += b.YearlyBudget();                    firstCodeMonthlySumValue += b.MonthlyBudget();                }            });            //firstCodeData.push({            //    FirstBudgetClassId: x,            //    YearlyBudgetSum: firstCodeYearlySumValue,            //    MonthlyBudgetSum: firstCodeMonthlySumValue            //});            _.each(budgetsInView(), function (b) {                if (x == b.FirstBudgetClassId()) {                    b.FirstBudgetNameWithSum(b.FirstBudgetName() + '( 년간: \\' + firstCodeYearlySumValue + ') / (월간: \\' + firstCodeMonthlySumValue + ') ');                }            });            firstCodeYearlySumValue = 0;            firstCodeMonthlySumValue = 0;        });        // 2차 코드에 대한 계산         _.each(secondCodeList, function (x) {            _.each(budgetsInView(), function (b) {                if (x == b.SecondBudgetClassId()) {                    secondCodeYearlySumValue += b.YearlyBudget();                    secondCodeMonthlySumValue += b.MonthlyBudget();                }            });            _.each(budgetsInView(), function (b) {                if (x == b.SecondBudgetClassId()) {                    b.SecondBudgetNameWithSum(b.SecondBudgetName() + '(년간: \\' + secondCodeYearlySumValue + ') / (월간: \\' + secondCodeMonthlySumValue + ') ');                }            });            secondCodeYearlySumValue = 0;            secondCodeMonthlySumValue = 0;        });           budgetGridView.refresh();    }    // viewModel.budgetPlanDataGridOptions = budgetPlanDataGridOptions;    viewModel.modifiableBudgetPlanDataGridOptions = modifiableBudgetPlanDataGridOptions;        return viewModel;};
 |