001 /* 002 * Copyright 2011 The Kuali Foundation. 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.kfs.module.bc.document.service.impl; 017 018 import java.math.BigDecimal; 019 import java.util.ArrayList; 020 import java.util.Collection; 021 import java.util.List; 022 023 import org.kuali.kfs.module.bc.BCConstants; 024 import org.kuali.kfs.module.bc.BCKeyConstants; 025 import org.kuali.kfs.module.bc.businessobject.BudgetConstructionAccountSummary; 026 import org.kuali.kfs.module.bc.businessobject.BudgetConstructionOrgSubFundSummaryReport; 027 import org.kuali.kfs.module.bc.businessobject.BudgetConstructionOrgSubFundSummaryReportTotal; 028 import org.kuali.kfs.module.bc.document.dataaccess.BudgetConstructionAccountSummaryReportDao; 029 import org.kuali.kfs.module.bc.document.service.BudgetConstructionReportsServiceHelper; 030 import org.kuali.kfs.module.bc.document.service.BudgetConstructionSubFundSummaryReportService; 031 import org.kuali.kfs.module.bc.report.BudgetConstructionReportHelper; 032 import org.kuali.kfs.sys.KFSPropertyConstants; 033 import org.kuali.rice.kns.service.KualiConfigurationService; 034 import org.springframework.transaction.annotation.Transactional; 035 036 /** 037 * Service implementation of BudgetConstructionAccountSummaryReportService. 038 */ 039 @Transactional 040 public class BudgetConstructionSubFundSummaryReportServiceImpl implements BudgetConstructionSubFundSummaryReportService { 041 042 private BudgetConstructionAccountSummaryReportDao budgetConstructionAccountSummaryReportDao; 043 private KualiConfigurationService kualiConfigurationService; 044 private BudgetConstructionReportsServiceHelper budgetConstructionReportsServiceHelper; 045 private boolean trExist = false; 046 047 /** 048 * @see org.kuali.kfs.module.bc.document.service.BudgetReportsControlListService#updateSubFundSummaryReport(java.lang.String) 049 */ 050 public void updateSubFundSummaryReport(String principalName) { 051 budgetConstructionAccountSummaryReportDao.cleanReportsAccountSummaryTable(principalName); 052 budgetConstructionAccountSummaryReportDao.updateSubFundSummaryReport(principalName); 053 } 054 055 /** 056 * @see org.kuali.kfs.module.bc.document.service.BudgetConstructionSubFundSummaryReportService#buildReports(java.lang.Integer, 057 * java.util.Collection) 058 */ 059 public Collection<BudgetConstructionOrgSubFundSummaryReport> buildReports(Integer universityFiscalYear, String principalName) { 060 Collection<BudgetConstructionOrgSubFundSummaryReport> reportSet = new ArrayList(); 061 062 // build order list 063 Collection<BudgetConstructionAccountSummary> subFundSummaryList = budgetConstructionReportsServiceHelper.getDataForBuildingReports(BudgetConstructionAccountSummary.class, principalName, buildOrderByList()); 064 065 // Making a list with same organizationChartOfAccountsCode, organizationCode, chartOfAccountsCode, subFundGroupCode 066 List subTotalList = BudgetConstructionReportHelper.deleteDuplicated((List) subFundSummaryList, fieldsForSubTotal()); 067 List totalList = BudgetConstructionReportHelper.deleteDuplicated((List) subFundSummaryList, fieldsForTotal()); 068 069 // Calculate Total Section 070 List<BudgetConstructionOrgSubFundSummaryReportTotal> orgSubFundSummaryReportSubTotalList = calculateSubTotal((List) subFundSummaryList, subTotalList); 071 List<BudgetConstructionOrgSubFundSummaryReportTotal> orgSubFundSummaryReportTotalList = calculateTotal((List) subFundSummaryList, totalList); 072 073 for (BudgetConstructionAccountSummary subFundSummaryEntry : subFundSummaryList) { 074 BudgetConstructionOrgSubFundSummaryReport orgSubFundSummaryReportEntry = new BudgetConstructionOrgSubFundSummaryReport(); 075 buildReportsHeader(universityFiscalYear, orgSubFundSummaryReportEntry, subFundSummaryEntry); 076 buildReportsBody(orgSubFundSummaryReportEntry, subFundSummaryEntry); 077 buildReportsTotal(orgSubFundSummaryReportEntry, subFundSummaryEntry, orgSubFundSummaryReportSubTotalList, orgSubFundSummaryReportTotalList); 078 reportSet.add(orgSubFundSummaryReportEntry); 079 } 080 081 return reportSet; 082 } 083 084 /** 085 * builds report Header 086 * 087 * @param universityFiscalYear 088 * @param orgSubFundSummaryReportEntry 089 * @param subFundSummaryList 090 */ 091 public void buildReportsHeader(Integer universityFiscalYear, BudgetConstructionOrgSubFundSummaryReport orgSubFundSummaryReportEntry, BudgetConstructionAccountSummary subFundSummaryList) { 092 String orgChartDesc = subFundSummaryList.getOrganizationChartOfAccounts().getFinChartOfAccountDescription(); 093 String chartDesc = subFundSummaryList.getChartOfAccounts().getFinChartOfAccountDescription(); 094 String orgName = subFundSummaryList.getOrganization().getOrganizationName(); 095 String reportChartDesc = subFundSummaryList.getChartOfAccounts().getReportsToChartOfAccounts().getFinChartOfAccountDescription(); 096 String subFundGroupName = subFundSummaryList.getFundGroup().getName(); 097 String subFundGroupDes = subFundSummaryList.getSubFundGroup().getSubFundGroupDescription(); 098 Integer prevFiscalyear = universityFiscalYear - 1; 099 orgSubFundSummaryReportEntry.setFiscalYear(prevFiscalyear.toString() + "-" + universityFiscalYear.toString().substring(2, 4)); 100 orgSubFundSummaryReportEntry.setOrgChartOfAccountsCode(subFundSummaryList.getOrganizationChartOfAccountsCode()); 101 if (orgChartDesc == null) { 102 orgSubFundSummaryReportEntry.setOrgChartOfAccountDescription(kualiConfigurationService.getPropertyString(BCKeyConstants.ERROR_REPORT_GETTING_CHART_DESCRIPTION)); 103 } 104 else { 105 orgSubFundSummaryReportEntry.setOrgChartOfAccountDescription(orgChartDesc); 106 } 107 orgSubFundSummaryReportEntry.setOrganizationCode(subFundSummaryList.getOrganizationCode()); 108 if (orgName == null) { 109 orgSubFundSummaryReportEntry.setOrganizationName(kualiConfigurationService.getPropertyString(BCKeyConstants.ERROR_REPORT_GETTING_ORGANIZATION_NAME)); 110 } 111 else { 112 orgSubFundSummaryReportEntry.setOrganizationName(orgName); 113 } 114 orgSubFundSummaryReportEntry.setChartOfAccountsCode(subFundSummaryList.getChartOfAccountsCode()); 115 if (chartDesc == null) { 116 orgSubFundSummaryReportEntry.setChartOfAccountDescription(kualiConfigurationService.getPropertyString(BCKeyConstants.ERROR_REPORT_GETTING_CHART_DESCRIPTION)); 117 } 118 else { 119 orgSubFundSummaryReportEntry.setChartOfAccountDescription(chartDesc); 120 } 121 orgSubFundSummaryReportEntry.setFundGroupCode(subFundSummaryList.getFundGroupCode()); 122 if (subFundGroupName == null) { 123 orgSubFundSummaryReportEntry.setFundGroupName(kualiConfigurationService.getPropertyString(BCKeyConstants.ERROR_REPORT_GETTING_FUNDGROUP_NAME)); 124 } 125 else { 126 orgSubFundSummaryReportEntry.setFundGroupName(subFundGroupName); 127 } 128 orgSubFundSummaryReportEntry.setSubFundGroupCode(subFundSummaryList.getSubFundGroupCode()); 129 if (subFundGroupName == null) { 130 orgSubFundSummaryReportEntry.setSubFundGroupDescription(kualiConfigurationService.getPropertyString(BCKeyConstants.ERROR_REPORT_GETTING_SUBFUNDGROUP_DESCRIPTION)); 131 } 132 else { 133 orgSubFundSummaryReportEntry.setSubFundGroupDescription(subFundGroupDes); 134 } 135 Integer prevPrevFiscalyear = prevFiscalyear - 1; 136 orgSubFundSummaryReportEntry.setBaseFy(prevPrevFiscalyear.toString() + "-" + prevFiscalyear.toString().substring(2, 4)); 137 orgSubFundSummaryReportEntry.setReqFy(prevFiscalyear.toString() + "-" + universityFiscalYear.toString().substring(2, 4)); 138 orgSubFundSummaryReportEntry.setHeader1(kualiConfigurationService.getPropertyString(BCKeyConstants.MSG_REPORT_HEADER_SUBFUND)); 139 orgSubFundSummaryReportEntry.setHeader2(kualiConfigurationService.getPropertyString(BCKeyConstants.MSG_REPORT_HEADER_SUBFUND_DESCRIPTION)); 140 orgSubFundSummaryReportEntry.setHeader3(kualiConfigurationService.getPropertyString(BCKeyConstants.MSG_REPORT_HEADER_BASE_AMOUNT)); 141 orgSubFundSummaryReportEntry.setHeader4(kualiConfigurationService.getPropertyString(BCKeyConstants.MSG_REPORT_HEADER_REQ_AMOUNT)); 142 orgSubFundSummaryReportEntry.setHeader5(kualiConfigurationService.getPropertyString(BCKeyConstants.MSG_REPORT_HEADER_CHANGE)); 143 orgSubFundSummaryReportEntry.setHeader6(kualiConfigurationService.getPropertyString(BCKeyConstants.MSG_REPORT_HEADER_CHANGE)); 144 orgSubFundSummaryReportEntry.setConsHdr(""); 145 } 146 147 /** 148 * builds report body 149 * 150 * @param orgSubFundSummaryReportEntry 151 * @param subFundSummary 152 */ 153 public void buildReportsBody(BudgetConstructionOrgSubFundSummaryReport orgSubFundSummaryReportEntry, BudgetConstructionAccountSummary subFundSummary) { 154 155 // build income expense description 156 if (subFundSummary.getIncomeExpenseCode().equals(BCConstants.Report.INCOME_EXP_TYPE_A)) { 157 orgSubFundSummaryReportEntry.setIncExpDesc(kualiConfigurationService.getPropertyString(BCKeyConstants.MSG_REPORT_INCOME_EXP_DESC_REVENUE)); 158 } 159 else if (subFundSummary.getIncomeExpenseCode().equals(BCConstants.Report.INCOME_EXP_TYPE_E)) { 160 orgSubFundSummaryReportEntry.setIncExpDesc(kualiConfigurationService.getPropertyString(BCKeyConstants.MSG_REPORT_INCOME_EXP_DESC_EXP_GROSS)); 161 } 162 else if (subFundSummary.getIncomeExpenseCode().equals(BCConstants.Report.INCOME_EXP_TYPE_T)) { 163 trExist = true; 164 orgSubFundSummaryReportEntry.setIncExpDesc(kualiConfigurationService.getPropertyString(BCKeyConstants.MSG_REPORT_INCOME_EXP_DESC_TRNFR_IN)); 165 } 166 else { 167 if (trExist) { 168 trExist = false; 169 orgSubFundSummaryReportEntry.setIncExpDesc(kualiConfigurationService.getPropertyString(BCKeyConstants.MSG_REPORT_INCOME_EXP_DESC_EXP_NET_TRNFR)); 170 } 171 else { 172 orgSubFundSummaryReportEntry.setIncExpDesc(kualiConfigurationService.getPropertyString(BCKeyConstants.MSG_REPORT_INCOME_EXP_DESC_EXPENDITURE)); 173 } 174 } 175 orgSubFundSummaryReportEntry.setBaseAmount(BudgetConstructionReportHelper.convertKualiInteger(subFundSummary.getFinancialBeginningBalanceLineAmount())); 176 orgSubFundSummaryReportEntry.setReqAmount(BudgetConstructionReportHelper.convertKualiInteger(subFundSummary.getAccountLineAnnualBalanceAmount())); 177 orgSubFundSummaryReportEntry.setAmountChange(orgSubFundSummaryReportEntry.getReqAmount() - orgSubFundSummaryReportEntry.getBaseAmount()); 178 orgSubFundSummaryReportEntry.setPercentChange(BudgetConstructionReportHelper.calculatePercent(orgSubFundSummaryReportEntry.getAmountChange(), orgSubFundSummaryReportEntry.getBaseAmount())); 179 } 180 181 /** 182 * builds report total 183 * 184 * @param orgSubFundSummaryReportEntry 185 * @param subFundSummaryList 186 * @param reportTotalList 187 */ 188 public void buildReportsTotal(BudgetConstructionOrgSubFundSummaryReport orgSubFundSummaryReportEntry, BudgetConstructionAccountSummary subFundSummaryList, List<BudgetConstructionOrgSubFundSummaryReportTotal> reportSubTotalList, List<BudgetConstructionOrgSubFundSummaryReportTotal> reportTotalList) { 189 for (BudgetConstructionOrgSubFundSummaryReportTotal subTotalEntry : reportSubTotalList) { 190 if (BudgetConstructionReportHelper.isSameEntry(subFundSummaryList, subTotalEntry.getBcas(), fieldsForSubTotal())) { 191 orgSubFundSummaryReportEntry.setSubFundTotalRevenueBaseAmount(subTotalEntry.getSubFundTotalRevenueBaseAmount()); 192 orgSubFundSummaryReportEntry.setSubFundTotalRevenueReqAmount(subTotalEntry.getSubFundTotalRevenueReqAmount()); 193 orgSubFundSummaryReportEntry.setSubFundTotalRevenueAmountChange(subTotalEntry.getSubFundTotalRevenueReqAmount() - subTotalEntry.getSubFundTotalRevenueBaseAmount()); 194 BigDecimal percentChange = BigDecimal.ZERO; 195 percentChange = BudgetConstructionReportHelper.calculatePercent(orgSubFundSummaryReportEntry.getSubFundTotalRevenueAmountChange(), orgSubFundSummaryReportEntry.getSubFundTotalRevenueBaseAmount()); 196 orgSubFundSummaryReportEntry.setSubFundTotalRevenuePercentChange(percentChange); 197 } 198 199 200 for (BudgetConstructionOrgSubFundSummaryReportTotal totalEntry : reportTotalList) { 201 if (BudgetConstructionReportHelper.isSameEntry(subFundSummaryList, totalEntry.getBcas(), fieldsForTotal())) { 202 BigDecimal percentChange = BigDecimal.ZERO; 203 orgSubFundSummaryReportEntry.setTotalRevenueBaseAmount(totalEntry.getTotalRevenueBaseAmount()); 204 orgSubFundSummaryReportEntry.setTotalGrossBaseAmount(totalEntry.getTotalGrossBaseAmount()); 205 orgSubFundSummaryReportEntry.setTotalTransferInBaseAmount(totalEntry.getTotalTransferInBaseAmount()); 206 orgSubFundSummaryReportEntry.setTotalNetTransferBaseAmount(totalEntry.getTotalNetTransferBaseAmount()); 207 208 orgSubFundSummaryReportEntry.setTotalRevenueReqAmount(totalEntry.getTotalRevenueReqAmount()); 209 orgSubFundSummaryReportEntry.setTotalGrossReqAmount(totalEntry.getTotalGrossReqAmount()); 210 orgSubFundSummaryReportEntry.setTotalTransferInReqAmount(totalEntry.getTotalTransferInReqAmount()); 211 orgSubFundSummaryReportEntry.setTotalNetTransferReqAmount(totalEntry.getTotalNetTransferReqAmount()); 212 orgSubFundSummaryReportEntry.setTotalRevenueAmountChange(orgSubFundSummaryReportEntry.getTotalRevenueReqAmount() - orgSubFundSummaryReportEntry.getTotalRevenueBaseAmount()); 213 percentChange = BudgetConstructionReportHelper.calculatePercent(orgSubFundSummaryReportEntry.getTotalRevenueAmountChange(), orgSubFundSummaryReportEntry.getTotalRevenueBaseAmount()); 214 orgSubFundSummaryReportEntry.setTotalRevenuePercentChange(percentChange); 215 216 orgSubFundSummaryReportEntry.setTotalGrossAmountChange(orgSubFundSummaryReportEntry.getTotalGrossReqAmount() - orgSubFundSummaryReportEntry.getTotalGrossBaseAmount()); 217 percentChange = BudgetConstructionReportHelper.calculatePercent(orgSubFundSummaryReportEntry.getTotalGrossAmountChange(), orgSubFundSummaryReportEntry.getTotalGrossBaseAmount()); 218 orgSubFundSummaryReportEntry.setTotalGrossPercentChange(percentChange); 219 220 orgSubFundSummaryReportEntry.setTotalTransferAmountChange(orgSubFundSummaryReportEntry.getTotalTransferInReqAmount() - orgSubFundSummaryReportEntry.getTotalTransferInBaseAmount()); 221 percentChange = BudgetConstructionReportHelper.calculatePercent(orgSubFundSummaryReportEntry.getTotalTransferAmountChange(), orgSubFundSummaryReportEntry.getTotalTransferInBaseAmount()); 222 orgSubFundSummaryReportEntry.setTotalTransferInPercentChange(percentChange); 223 224 225 orgSubFundSummaryReportEntry.setTotalNetTransferAmountChange(orgSubFundSummaryReportEntry.getTotalNetTransferReqAmount() - orgSubFundSummaryReportEntry.getTotalNetTransferBaseAmount()); 226 percentChange = BudgetConstructionReportHelper.calculatePercent(orgSubFundSummaryReportEntry.getTotalNetTransferAmountChange(), orgSubFundSummaryReportEntry.getTotalNetTransferBaseAmount()); 227 orgSubFundSummaryReportEntry.setTotalNetTransferPercentChange(percentChange); 228 229 orgSubFundSummaryReportEntry.setRevExpDifferenceBaseAmount(orgSubFundSummaryReportEntry.getTotalRevenueBaseAmount() - orgSubFundSummaryReportEntry.getTotalNetTransferBaseAmount()); 230 orgSubFundSummaryReportEntry.setRevExpDifferenceReqAmount(orgSubFundSummaryReportEntry.getTotalRevenueReqAmount() - orgSubFundSummaryReportEntry.getTotalNetTransferReqAmount()); 231 orgSubFundSummaryReportEntry.setRevExpDifferenceAmountChange(orgSubFundSummaryReportEntry.getRevExpDifferenceReqAmount() - orgSubFundSummaryReportEntry.getRevExpDifferenceBaseAmount()); 232 percentChange = BudgetConstructionReportHelper.calculatePercent(orgSubFundSummaryReportEntry.getRevExpDifferenceAmountChange(), orgSubFundSummaryReportEntry.getRevExpDifferenceBaseAmount()); 233 orgSubFundSummaryReportEntry.setRevExpDifferencePercentChange(percentChange); 234 } 235 } 236 } 237 } 238 239 240 /** 241 * Calculates total part of report 242 * 243 * @param List bcasList 244 * @param List simpleList 245 */ 246 public List calculateSubTotal(List<BudgetConstructionAccountSummary> bcasList, List<BudgetConstructionAccountSummary> subTotalList) { 247 Integer subFundTotalRevenueBaseAmount = 0; 248 Integer subFundTotalRevenueReqAmount = 0; 249 250 List returnList = new ArrayList(); 251 for (BudgetConstructionAccountSummary simpleBcasEntry : subTotalList) { 252 BudgetConstructionOrgSubFundSummaryReportTotal bcSubFundTotal = new BudgetConstructionOrgSubFundSummaryReportTotal(); 253 for (BudgetConstructionAccountSummary bcasListEntry : bcasList) { 254 if (BudgetConstructionReportHelper.isSameEntry(simpleBcasEntry, bcasListEntry, fieldsForSubTotal())) { 255 if (bcasListEntry.getIncomeExpenseCode().equals(BCConstants.Report.INCOME_EXP_TYPE_A)) { 256 subFundTotalRevenueBaseAmount -= BudgetConstructionReportHelper.convertKualiInteger(bcasListEntry.getFinancialBeginningBalanceLineAmount()); 257 subFundTotalRevenueReqAmount -= BudgetConstructionReportHelper.convertKualiInteger(bcasListEntry.getAccountLineAnnualBalanceAmount()); 258 } 259 else if (bcasListEntry.getIncomeExpenseCode().equals(BCConstants.Report.INCOME_EXP_TYPE_X)) { 260 subFundTotalRevenueBaseAmount += BudgetConstructionReportHelper.convertKualiInteger(bcasListEntry.getFinancialBeginningBalanceLineAmount()); 261 subFundTotalRevenueReqAmount += BudgetConstructionReportHelper.convertKualiInteger(bcasListEntry.getAccountLineAnnualBalanceAmount()); 262 } 263 } 264 } 265 bcSubFundTotal.setBcas(simpleBcasEntry); 266 bcSubFundTotal.setSubFundTotalRevenueBaseAmount(subFundTotalRevenueBaseAmount); 267 bcSubFundTotal.setSubFundTotalRevenueReqAmount(subFundTotalRevenueReqAmount); 268 subFundTotalRevenueBaseAmount = 0; 269 subFundTotalRevenueReqAmount = 0; 270 returnList.add(bcSubFundTotal); 271 272 } 273 return returnList; 274 } 275 276 277 /** 278 * Calculates total part of report 279 * 280 * @param List bcasList 281 * @param List simpleList 282 */ 283 public List calculateTotal(List<BudgetConstructionAccountSummary> bcasList, List<BudgetConstructionAccountSummary> totalList) { 284 Integer totalRevenueBaseAmount = 0; 285 Integer totalGrossBaseAmount = 0; 286 Integer totalTransferInBaseAmount = 0; 287 Integer totalNetTransferBaseAmount = 0; 288 Integer totalRevenueReqAmount = 0; 289 Integer totalGrossReqAmount = 0; 290 Integer totalTransferInReqAmount = 0; 291 Integer totalNetTransferReqAmount = 0; 292 293 List returnList = new ArrayList(); 294 for (BudgetConstructionAccountSummary simpleBcasEntry : totalList) { 295 BudgetConstructionOrgSubFundSummaryReportTotal bcSubFundTotal = new BudgetConstructionOrgSubFundSummaryReportTotal(); 296 for (BudgetConstructionAccountSummary bcasListEntry : bcasList) { 297 if (BudgetConstructionReportHelper.isSameEntry(simpleBcasEntry, bcasListEntry, fieldsForTotal())) { 298 if (bcasListEntry.getIncomeExpenseCode().equals(BCConstants.Report.INCOME_EXP_TYPE_A)) { 299 totalRevenueBaseAmount += BudgetConstructionReportHelper.convertKualiInteger(bcasListEntry.getFinancialBeginningBalanceLineAmount()); 300 totalRevenueReqAmount += BudgetConstructionReportHelper.convertKualiInteger(bcasListEntry.getAccountLineAnnualBalanceAmount()); 301 } 302 else if (bcasListEntry.getIncomeExpenseCode().equals(BCConstants.Report.INCOME_EXP_TYPE_E)) { 303 totalGrossBaseAmount += BudgetConstructionReportHelper.convertKualiInteger(bcasListEntry.getFinancialBeginningBalanceLineAmount()); 304 totalGrossReqAmount += BudgetConstructionReportHelper.convertKualiInteger(bcasListEntry.getAccountLineAnnualBalanceAmount()); 305 306 } 307 else if (bcasListEntry.getIncomeExpenseCode().equals(BCConstants.Report.INCOME_EXP_TYPE_T)) { 308 totalTransferInBaseAmount += BudgetConstructionReportHelper.convertKualiInteger(bcasListEntry.getFinancialBeginningBalanceLineAmount()); 309 totalTransferInReqAmount += BudgetConstructionReportHelper.convertKualiInteger(bcasListEntry.getAccountLineAnnualBalanceAmount()); 310 } 311 else if (bcasListEntry.getIncomeExpenseCode().equals(BCConstants.Report.INCOME_EXP_TYPE_X)) { 312 totalNetTransferBaseAmount += BudgetConstructionReportHelper.convertKualiInteger(bcasListEntry.getFinancialBeginningBalanceLineAmount()); 313 totalNetTransferReqAmount += BudgetConstructionReportHelper.convertKualiInteger(bcasListEntry.getAccountLineAnnualBalanceAmount()); 314 } 315 } 316 } 317 bcSubFundTotal.setBcas(simpleBcasEntry); 318 bcSubFundTotal.setTotalGrossBaseAmount(totalGrossBaseAmount); 319 bcSubFundTotal.setTotalGrossReqAmount(totalGrossReqAmount); 320 bcSubFundTotal.setTotalNetTransferBaseAmount(totalNetTransferBaseAmount); 321 bcSubFundTotal.setTotalNetTransferReqAmount(totalNetTransferReqAmount); 322 bcSubFundTotal.setTotalRevenueBaseAmount(totalRevenueBaseAmount); 323 bcSubFundTotal.setTotalRevenueReqAmount(totalRevenueReqAmount); 324 bcSubFundTotal.setTotalTransferInBaseAmount(totalTransferInBaseAmount); 325 bcSubFundTotal.setTotalTransferInReqAmount(totalTransferInReqAmount); 326 returnList.add(bcSubFundTotal); 327 totalGrossBaseAmount = 0; 328 totalGrossReqAmount = 0; 329 totalNetTransferBaseAmount = 0; 330 totalNetTransferReqAmount = 0; 331 totalRevenueBaseAmount = 0; 332 totalRevenueReqAmount = 0; 333 totalTransferInBaseAmount = 0; 334 totalTransferInReqAmount = 0; 335 } 336 return returnList; 337 } 338 339 protected List<String> fieldsForSubTotal() { 340 List<String> fieldList = fieldsForTotal(); 341 fieldList.add(KFSPropertyConstants.SUB_FUND_GROUP_CODE); 342 return fieldList; 343 } 344 345 346 protected List<String> fieldsForTotal() { 347 List<String> fieldList = new ArrayList(); 348 fieldList.add(KFSPropertyConstants.ORGANIZATION_CHART_OF_ACCOUNTS_CODE); 349 fieldList.add(KFSPropertyConstants.ORGANIZATION_CODE); 350 fieldList.add(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE); 351 fieldList.add(KFSPropertyConstants.FUND_GROUP_CODE); 352 return fieldList; 353 } 354 355 356 /** 357 * builds orderByList for sort order. 358 * 359 * @return returnList 360 */ 361 public List<String> buildOrderByList() { 362 List<String> returnList = new ArrayList(); 363 returnList.add(KFSPropertyConstants.ORGANIZATION_CHART_OF_ACCOUNTS_CODE); 364 returnList.add(KFSPropertyConstants.ORGANIZATION_CODE); 365 returnList.add(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE); 366 returnList.add(KFSPropertyConstants.SUB_FUND_SORT_CODE); 367 returnList.add(KFSPropertyConstants.FUND_GROUP_CODE); 368 returnList.add(KFSPropertyConstants.SUB_FUND_GROUP_CODE); 369 returnList.add(KFSPropertyConstants.ACCOUNT_NUMBER); 370 returnList.add(KFSPropertyConstants.SUB_ACCOUNT_NUMBER); 371 returnList.add(KFSPropertyConstants.INCOME_EXPENSE_CODE); 372 return returnList; 373 } 374 375 376 /** 377 * sets budgetConstructionAccountSummaryReportDao 378 * 379 * @param budgetConstructionAccountSummaryReportDao 380 */ 381 public void setBudgetConstructionAccountSummaryReportDao(BudgetConstructionAccountSummaryReportDao budgetConstructionAccountSummaryReportDao) { 382 this.budgetConstructionAccountSummaryReportDao = budgetConstructionAccountSummaryReportDao; 383 } 384 385 public void setKualiConfigurationService(KualiConfigurationService kualiConfigurationService) { 386 this.kualiConfigurationService = kualiConfigurationService; 387 } 388 389 public void setBudgetConstructionReportsServiceHelper(BudgetConstructionReportsServiceHelper budgetConstructionReportsServiceHelper) { 390 this.budgetConstructionReportsServiceHelper = budgetConstructionReportsServiceHelper; 391 } 392 } 393