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; };