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.util.ArrayList; 019 import java.util.Collection; 020 import java.util.HashMap; 021 import java.util.List; 022 import java.util.Map; 023 024 import org.kuali.kfs.module.bc.businessobject.BudgetConstructionAccountMonthlyDetailReport; 025 import org.kuali.kfs.module.bc.businessobject.BudgetConstructionMonthly; 026 import org.kuali.kfs.module.bc.document.service.BudgetConstructionAccountMonthlyDetailReportService; 027 import org.kuali.kfs.module.bc.document.service.BudgetConstructionReportsServiceHelper; 028 import org.kuali.kfs.module.bc.report.BudgetConstructionReportHelper; 029 import org.kuali.kfs.sys.KFSPropertyConstants; 030 import org.kuali.rice.kns.service.KualiConfigurationService; 031 import org.springframework.transaction.annotation.Transactional; 032 033 /** 034 * Service implementation of BudgetConstructionLevelSummaryReportService. 035 */ 036 @Transactional 037 public class BudgetConstructionAccountMonthlyDetailReportServiceImpl implements BudgetConstructionAccountMonthlyDetailReportService { 038 039 private KualiConfigurationService kualiConfigurationService; 040 private BudgetConstructionReportsServiceHelper budgetConstructionReportsServiceHelper; 041 042 /** 043 * @see org.kuali.kfs.module.bc.document.service.BudgetConstructionLevelSummaryReportService#buildReports(java.lang.Integer, 044 * java.util.Collection) 045 */ 046 public Collection<BudgetConstructionAccountMonthlyDetailReport> buildReports(String documentNumber, Integer universityFiscalYear, String chartOfAccountsCode, String accountNumber, String subAccountNumber) { 047 Collection<BudgetConstructionAccountMonthlyDetailReport> reportSet = new ArrayList(); 048 049 BudgetConstructionAccountMonthlyDetailReport accountMonthlyDetailReport; 050 // build searchCriteria 051 Map searchCriteria = new HashMap(); 052 searchCriteria.put(KFSPropertyConstants.DOCUMENT_NUMBER, documentNumber); 053 searchCriteria.put(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR, universityFiscalYear); 054 searchCriteria.put(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE, chartOfAccountsCode); 055 searchCriteria.put(KFSPropertyConstants.ACCOUNT_NUMBER, accountNumber); 056 searchCriteria.put(KFSPropertyConstants.SUB_ACCOUNT_NUMBER, subAccountNumber); 057 058 059 // build order list 060 List<String> orderList = buildOrderByList(); 061 Collection<BudgetConstructionMonthly> budgetConstructionMonthlyList = budgetConstructionReportsServiceHelper.getDataForBuildingReports(BudgetConstructionMonthly.class, searchCriteria, orderList); 062 063 064 for (BudgetConstructionMonthly bcMonthly : budgetConstructionMonthlyList) { 065 accountMonthlyDetailReport = new BudgetConstructionAccountMonthlyDetailReport(); 066 buildReportsHeader(bcMonthly, accountMonthlyDetailReport); 067 buildReportsBody(bcMonthly, accountMonthlyDetailReport); 068 069 reportSet.add(accountMonthlyDetailReport); 070 } 071 072 return reportSet; 073 } 074 075 /** 076 * builds report Header 077 * 078 * @param BudgetConstructionObjectSummary bcas 079 */ 080 protected void buildReportsHeader(BudgetConstructionMonthly bcMonthly, BudgetConstructionAccountMonthlyDetailReport accountMonthlyDetailReport) { 081 accountMonthlyDetailReport.setUniversityFiscalYear(bcMonthly.getUniversityFiscalYear()); 082 accountMonthlyDetailReport.setChartOfAccountsCode(bcMonthly.getChartOfAccountsCode()); 083 accountMonthlyDetailReport.setAccountNumber(bcMonthly.getAccountNumber()); 084 accountMonthlyDetailReport.setSubAccountNumber(bcMonthly.getSubAccountNumber()); 085 accountMonthlyDetailReport.setAccountName(bcMonthly.getAccount().getAccountName()); 086 try { 087 accountMonthlyDetailReport.setSubAccountName(bcMonthly.getSubAccount().getSubAccountName()); 088 } catch (Exception e){ 089 accountMonthlyDetailReport.setSubAccountName(""); 090 } 091 } 092 093 /** 094 * builds report body 095 * 096 * @param BudgetConstructionLevelSummary bcas 097 */ 098 protected void buildReportsBody(BudgetConstructionMonthly bcMonthly, BudgetConstructionAccountMonthlyDetailReport accountMonthlyDetailReport) { 099 accountMonthlyDetailReport.setFinancialObjectCode(bcMonthly.getFinancialObjectCode()); 100 accountMonthlyDetailReport.setFinancialSubObjectCode(bcMonthly.getFinancialSubObjectCode()); 101 accountMonthlyDetailReport.setFinancialObjectCodeShortName(bcMonthly.getFinancialObject().getFinancialObjectCodeShortName()); 102 accountMonthlyDetailReport.setObjCodeSubObjCode(accountMonthlyDetailReport.getFinancialObjectCode() + accountMonthlyDetailReport.getFinancialSubObjectCode()); 103 104 Integer financialDocumentMonth1LineAmount = BudgetConstructionReportHelper.convertKualiInteger(bcMonthly.getFinancialDocumentMonth1LineAmount()); 105 Integer financialDocumentMonth2LineAmount = BudgetConstructionReportHelper.convertKualiInteger(bcMonthly.getFinancialDocumentMonth2LineAmount()); 106 Integer financialDocumentMonth3LineAmount = BudgetConstructionReportHelper.convertKualiInteger(bcMonthly.getFinancialDocumentMonth3LineAmount()); 107 Integer financialDocumentMonth4LineAmount = BudgetConstructionReportHelper.convertKualiInteger(bcMonthly.getFinancialDocumentMonth4LineAmount()); 108 Integer financialDocumentMonth5LineAmount = BudgetConstructionReportHelper.convertKualiInteger(bcMonthly.getFinancialDocumentMonth5LineAmount()); 109 Integer financialDocumentMonth6LineAmount = BudgetConstructionReportHelper.convertKualiInteger(bcMonthly.getFinancialDocumentMonth6LineAmount()); 110 Integer financialDocumentMonth7LineAmount = BudgetConstructionReportHelper.convertKualiInteger(bcMonthly.getFinancialDocumentMonth7LineAmount()); 111 Integer financialDocumentMonth8LineAmount = BudgetConstructionReportHelper.convertKualiInteger(bcMonthly.getFinancialDocumentMonth8LineAmount()); 112 Integer financialDocumentMonth9LineAmount = BudgetConstructionReportHelper.convertKualiInteger(bcMonthly.getFinancialDocumentMonth9LineAmount()); 113 Integer financialDocumentMonth10LineAmount = BudgetConstructionReportHelper.convertKualiInteger(bcMonthly.getFinancialDocumentMonth10LineAmount()); 114 Integer financialDocumentMonth11LineAmount = BudgetConstructionReportHelper.convertKualiInteger(bcMonthly.getFinancialDocumentMonth11LineAmount()); 115 Integer financialDocumentMonth12LineAmount = BudgetConstructionReportHelper.convertKualiInteger(bcMonthly.getFinancialDocumentMonth12LineAmount()); 116 117 Integer annualAmount = financialDocumentMonth1LineAmount + financialDocumentMonth2LineAmount + financialDocumentMonth3LineAmount 118 + financialDocumentMonth4LineAmount + financialDocumentMonth5LineAmount + financialDocumentMonth6LineAmount 119 + financialDocumentMonth7LineAmount + financialDocumentMonth8LineAmount + financialDocumentMonth9LineAmount 120 + financialDocumentMonth10LineAmount + financialDocumentMonth11LineAmount +financialDocumentMonth12LineAmount; 121 122 accountMonthlyDetailReport.setAnnualAmount(annualAmount); 123 accountMonthlyDetailReport.setFinancialDocumentMonth1LineAmount(financialDocumentMonth1LineAmount); 124 accountMonthlyDetailReport.setFinancialDocumentMonth2LineAmount(financialDocumentMonth2LineAmount); 125 accountMonthlyDetailReport.setFinancialDocumentMonth3LineAmount(financialDocumentMonth3LineAmount); 126 accountMonthlyDetailReport.setFinancialDocumentMonth4LineAmount(financialDocumentMonth4LineAmount); 127 accountMonthlyDetailReport.setFinancialDocumentMonth5LineAmount(financialDocumentMonth5LineAmount); 128 accountMonthlyDetailReport.setFinancialDocumentMonth6LineAmount(financialDocumentMonth6LineAmount); 129 accountMonthlyDetailReport.setFinancialDocumentMonth7LineAmount(financialDocumentMonth7LineAmount); 130 accountMonthlyDetailReport.setFinancialDocumentMonth8LineAmount(financialDocumentMonth8LineAmount); 131 accountMonthlyDetailReport.setFinancialDocumentMonth9LineAmount(financialDocumentMonth9LineAmount); 132 accountMonthlyDetailReport.setFinancialDocumentMonth10LineAmount(financialDocumentMonth10LineAmount); 133 accountMonthlyDetailReport.setFinancialDocumentMonth11LineAmount(financialDocumentMonth11LineAmount); 134 accountMonthlyDetailReport.setFinancialDocumentMonth12LineAmount(financialDocumentMonth12LineAmount); 135 136 } 137 138 /** 139 * builds orderByList for sort order. 140 * 141 * @return returnList 142 */ 143 protected List<String> buildOrderByList() { 144 List<String> returnList = new ArrayList(); 145 returnList.add(KFSPropertyConstants.FINANCIAL_OBJECT_CODE); 146 returnList.add(KFSPropertyConstants.FINANCIAL_SUB_OBJECT_CODE); 147 return returnList; 148 } 149 150 public void setKualiConfigurationService(KualiConfigurationService kualiConfigurationService) { 151 this.kualiConfigurationService = kualiConfigurationService; 152 } 153 154 public void setBudgetConstructionReportsServiceHelper(BudgetConstructionReportsServiceHelper budgetConstructionReportsServiceHelper) { 155 this.budgetConstructionReportsServiceHelper = budgetConstructionReportsServiceHelper; 156 } 157 158 }