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.gl.batch.service.impl; 017 018 import java.sql.Date; 019 import java.util.HashMap; 020 import java.util.Map; 021 022 import org.apache.commons.lang.StringUtils; 023 import org.kuali.kfs.coa.businessobject.A21SubAccount; 024 import org.kuali.kfs.coa.businessobject.Account; 025 import org.kuali.kfs.coa.businessobject.AccountingPeriod; 026 import org.kuali.kfs.coa.businessobject.BalanceType; 027 import org.kuali.kfs.coa.businessobject.Chart; 028 import org.kuali.kfs.coa.businessobject.IndirectCostRecoveryType; 029 import org.kuali.kfs.coa.businessobject.ObjectCode; 030 import org.kuali.kfs.coa.businessobject.ObjectLevel; 031 import org.kuali.kfs.coa.businessobject.ObjectType; 032 import org.kuali.kfs.coa.businessobject.OffsetDefinition; 033 import org.kuali.kfs.coa.businessobject.Organization; 034 import org.kuali.kfs.coa.businessobject.ProjectCode; 035 import org.kuali.kfs.coa.businessobject.SubAccount; 036 import org.kuali.kfs.coa.businessobject.SubFundGroup; 037 import org.kuali.kfs.coa.businessobject.SubObjectCode; 038 import org.kuali.kfs.gl.GeneralLedgerConstants; 039 import org.kuali.kfs.gl.batch.dataaccess.LedgerPreparedStatementCachingDao; 040 import org.kuali.kfs.gl.batch.service.AccountingCycleCachingService; 041 import org.kuali.kfs.gl.businessobject.AccountBalance; 042 import org.kuali.kfs.gl.businessobject.Balance; 043 import org.kuali.kfs.gl.businessobject.Encumbrance; 044 import org.kuali.kfs.gl.businessobject.Entry; 045 import org.kuali.kfs.gl.businessobject.ExpenditureTransaction; 046 import org.kuali.kfs.gl.businessobject.Reversal; 047 import org.kuali.kfs.gl.businessobject.SufficientFundBalances; 048 import org.kuali.kfs.gl.businessobject.Transaction; 049 import org.kuali.kfs.sys.batch.service.AbstractBatchTransactionalCachingService; 050 import org.kuali.kfs.sys.businessobject.OriginationCode; 051 import org.kuali.kfs.sys.businessobject.SystemOptions; 052 import org.kuali.kfs.sys.businessobject.UniversityDate; 053 import org.kuali.kfs.sys.document.service.FinancialSystemDocumentService; 054 import org.kuali.kfs.sys.document.service.FinancialSystemDocumentTypeService; 055 import org.kuali.kfs.sys.service.UniversityDateService; 056 057 public class AccountingCycleCachingServiceImpl extends AbstractBatchTransactionalCachingService implements AccountingCycleCachingService { 058 protected org.kuali.kfs.sys.batch.dataaccess.LedgerReferenceValuePreparedStatementCachingDao systemReferenceValueDao; 059 protected org.kuali.kfs.coa.batch.dataaccess.LedgerReferenceValuePreparedStatementCachingDao chartReferenceValueDao; 060 protected LedgerPreparedStatementCachingDao ledgerDao; 061 062 protected Map<String,Boolean> documentTypeValidCache; 063 064 protected UniversityDateService universityDateService; 065 protected FinancialSystemDocumentTypeService financialSystemDocumentTypeService; 066 067 public void initialize() { 068 super.initialize(); 069 systemReferenceValueDao.initialize(); 070 chartReferenceValueDao.initialize(); 071 ledgerDao.initialize(); 072 documentTypeValidCache = new HashMap<String,Boolean>(); 073 previousValueCache.put(Balance.class, new PreviousValueReference<Balance>()); 074 previousValueCache.put(Encumbrance.class, new PreviousValueReference<Encumbrance>()); 075 previousValueCache.put(ExpenditureTransaction.class, new PreviousValueReference<ExpenditureTransaction>()); 076 previousValueCache.put(SufficientFundBalances.class, new PreviousValueReference<SufficientFundBalances>()); 077 previousValueCache.put(AccountBalance.class, new PreviousValueReference<AccountBalance>()); 078 } 079 080 public void destroy() { 081 super.destroy(); 082 systemReferenceValueDao.destroy(); 083 chartReferenceValueDao.destroy(); 084 ledgerDao.destroy(); 085 documentTypeValidCache = null; 086 } 087 088 public boolean isCurrentActiveAccountingDocumentType(String documentTypeCode) { 089 Boolean documentTypeValid = documentTypeValidCache.get(documentTypeCode); 090 if (documentTypeValid == null) { 091 documentTypeValid = new Boolean(financialSystemDocumentTypeService.isCurrentActiveAccountingDocumentType(documentTypeCode)); 092 documentTypeValidCache.put(documentTypeCode, documentTypeValid); 093 } 094 return documentTypeValid.booleanValue(); 095 } 096 097 public OriginationCode getOriginationCode(final String financialSystemOriginationCode) { 098 return new ReferenceValueRetriever<OriginationCode>() { 099 @Override 100 protected OriginationCode useDao() { 101 return systemReferenceValueDao.getOriginationCode(financialSystemOriginationCode); 102 } 103 @Override 104 protected void retrieveReferences(OriginationCode originationCode) {} 105 }.get(OriginationCode.class, financialSystemOriginationCode); 106 } 107 108 public SystemOptions getSystemOptions(final Integer fiscalYear) { 109 return new ReferenceValueRetriever<SystemOptions>() { 110 @Override 111 protected SystemOptions useDao() { 112 return systemReferenceValueDao.getSystemOptions(fiscalYear); 113 } 114 @Override 115 protected void retrieveReferences(SystemOptions systemOptions) {} 116 }.get(SystemOptions.class, fiscalYear); 117 } 118 119 public UniversityDate getUniversityDate(final Date date) { 120 return new ReferenceValueRetriever<UniversityDate>() { 121 @Override 122 protected UniversityDate useDao() { 123 return systemReferenceValueDao.getUniversityDate(date); 124 } 125 @Override 126 protected void retrieveReferences(UniversityDate universityDate) { 127 universityDate.setAccountingPeriod(getAccountingPeriod(universityDate.getUniversityFiscalYear(), universityDate.getUniversityFiscalAccountingPeriod())); 128 } 129 }.get(UniversityDate.class, date); 130 } 131 132 public A21SubAccount getA21SubAccount(final String chartOfAccountsCode, final String accountNumber, final String subAccountNumber) { 133 return new ReferenceValueRetriever<A21SubAccount>() { 134 @Override 135 protected A21SubAccount useDao() { 136 return chartReferenceValueDao.getA21SubAccount(chartOfAccountsCode, accountNumber, subAccountNumber); 137 } 138 @Override 139 protected void retrieveReferences(A21SubAccount a21SubAccount) {} 140 }.get(A21SubAccount.class, chartOfAccountsCode, accountNumber, subAccountNumber); 141 } 142 143 public Account getAccount(final String chartCode, final String accountNumber) { 144 return new ReferenceValueRetriever<Account>() { 145 @Override 146 protected Account useDao() { 147 return chartReferenceValueDao.getAccount(chartCode, accountNumber); 148 } 149 @Override 150 protected void retrieveReferences(Account account) {} 151 }.get(Account.class, chartCode, accountNumber); 152 } 153 154 public AccountingPeriod getAccountingPeriod(final Integer fiscalYear, final String fiscalPeriodCode) { 155 return new ReferenceValueRetriever<AccountingPeriod>() { 156 @Override 157 protected AccountingPeriod useDao() { 158 return chartReferenceValueDao.getAccountingPeriod(fiscalYear, fiscalPeriodCode); 159 } 160 @Override 161 protected void retrieveReferences(AccountingPeriod accountingPeriod) {} 162 }.get(AccountingPeriod.class, fiscalYear, fiscalPeriodCode); 163 } 164 165 public BalanceType getBalanceType(final String financialBalanceTypeCode) { 166 return new ReferenceValueRetriever<BalanceType>() { 167 @Override 168 protected BalanceType useDao() { 169 return chartReferenceValueDao.getBalanceType(financialBalanceTypeCode); 170 } 171 @Override 172 protected void retrieveReferences(BalanceType balanceType) {} 173 }.get(BalanceType.class, financialBalanceTypeCode); 174 } 175 176 public Chart getChart(final String chartOfAccountsCode) { 177 return new ReferenceValueRetriever<Chart>() { 178 @Override 179 protected Chart useDao() { 180 return chartReferenceValueDao.getChart(chartOfAccountsCode); 181 } 182 @Override 183 protected void retrieveReferences(Chart chart) { 184 chart.setFundBalanceObject(getObjectCode(universityDateService.getCurrentFiscalYear(), chart.getChartOfAccountsCode(), chart.getFundBalanceObjectCode())); 185 } 186 }.get(Chart.class, chartOfAccountsCode); 187 } 188 189 public IndirectCostRecoveryType getIndirectCostRecoveryType(final String accountIcrTypeCode) { 190 return new ReferenceValueRetriever<IndirectCostRecoveryType>() { 191 @Override 192 protected IndirectCostRecoveryType useDao() { 193 return chartReferenceValueDao.getIndirectCostRecoveryType(accountIcrTypeCode); 194 } 195 @Override 196 protected void retrieveReferences(IndirectCostRecoveryType indirectCostRecoveryType) {} 197 }.get(IndirectCostRecoveryType.class, accountIcrTypeCode); 198 } 199 200 public ObjectCode getObjectCode(final Integer universityFiscalYear, final String chartOfAccountsCode, final String financialObjectCode) { 201 return new ReferenceValueRetriever<ObjectCode>() { 202 @Override 203 protected ObjectCode useDao() { 204 return chartReferenceValueDao.getObjectCode(universityFiscalYear, chartOfAccountsCode, financialObjectCode); 205 } 206 @Override 207 protected void retrieveReferences(ObjectCode objectCode) {} 208 }.get(ObjectCode.class, universityFiscalYear, chartOfAccountsCode, financialObjectCode); 209 } 210 211 public ObjectLevel getObjectLevel(final String chartOfAccountsCode, final String financialObjectLevelCode) { 212 return new ReferenceValueRetriever<ObjectLevel>() { 213 @Override 214 protected ObjectLevel useDao() { 215 return chartReferenceValueDao.getObjectLevel(chartOfAccountsCode, financialObjectLevelCode); 216 } 217 @Override 218 protected void retrieveReferences(ObjectLevel objectLevel) {} 219 }.get(ObjectLevel.class, chartOfAccountsCode, financialObjectLevelCode); 220 } 221 222 public ObjectType getObjectType(final String financialObjectTypeCode) { 223 return new ReferenceValueRetriever<ObjectType>() { 224 @Override 225 protected ObjectType useDao() { 226 return chartReferenceValueDao.getObjectType(financialObjectTypeCode); 227 } 228 @Override 229 protected void retrieveReferences(ObjectType objectType) {} 230 }.get(ObjectType.class, financialObjectTypeCode); 231 } 232 233 public OffsetDefinition getOffsetDefinition(final Integer universityFiscalYear, final String chartOfAccountsCode, final String financialDocumentTypeCode, final String financialBalanceTypeCode) { 234 return new ReferenceValueRetriever<OffsetDefinition>() { 235 @Override 236 protected OffsetDefinition useDao() { 237 return chartReferenceValueDao.getOffsetDefinition(universityFiscalYear, chartOfAccountsCode, financialDocumentTypeCode, financialBalanceTypeCode); 238 } 239 @Override 240 protected void retrieveReferences(OffsetDefinition offsetDefinition) { 241 offsetDefinition.setFinancialObject(getObjectCode(universityFiscalYear, chartOfAccountsCode, offsetDefinition.getFinancialObjectCode())); 242 } 243 }.get(OffsetDefinition.class, universityFiscalYear, chartOfAccountsCode, financialDocumentTypeCode, financialBalanceTypeCode); 244 } 245 246 public Organization getOrganization(final String chartOfAccountsCode, final String organizationCode) { 247 return new ReferenceValueRetriever<Organization>() { 248 @Override 249 protected Organization useDao() { 250 return chartReferenceValueDao.getOrganization(chartOfAccountsCode, organizationCode); 251 } 252 @Override 253 protected void retrieveReferences(Organization organization) {} 254 }.get(Organization.class, chartOfAccountsCode, organizationCode); 255 } 256 257 public ProjectCode getProjectCode(final String financialSystemProjectCode) { 258 return new ReferenceValueRetriever<ProjectCode>() { 259 @Override 260 protected ProjectCode useDao() { 261 return chartReferenceValueDao.getProjectCode(financialSystemProjectCode); 262 } 263 @Override 264 protected void retrieveReferences(ProjectCode projectCode) {} 265 }.get(ProjectCode.class, financialSystemProjectCode); 266 } 267 268 public SubAccount getSubAccount(final String chartOfAccountsCode, final String accountNumber, final String subAccountNumber) { 269 return new ReferenceValueRetriever<SubAccount>() { 270 @Override 271 protected SubAccount useDao() { 272 return chartReferenceValueDao.getSubAccount(chartOfAccountsCode, accountNumber, subAccountNumber); 273 } 274 @Override 275 protected void retrieveReferences(SubAccount subAccount) { 276 subAccount.setA21SubAccount(getA21SubAccount(chartOfAccountsCode, accountNumber, subAccountNumber)); 277 } 278 }.get(SubAccount.class, chartOfAccountsCode, accountNumber, subAccountNumber); 279 } 280 281 public SubFundGroup getSubFundGroup(final String subFundGroupCode) { 282 return new ReferenceValueRetriever<SubFundGroup>() { 283 @Override 284 protected SubFundGroup useDao() { 285 return chartReferenceValueDao.getSubFundGroup(subFundGroupCode); 286 } 287 @Override 288 protected void retrieveReferences(SubFundGroup subFundGroup) {} 289 }.get(SubFundGroup.class, subFundGroupCode); 290 } 291 292 public SubObjectCode getSubObjectCode(final Integer universityFiscalYear, final String chartOfAccountsCode, final String accountNumber, final String financialObjectCode, final String financialSubObjectCode) { 293 return new ReferenceValueRetriever<SubObjectCode>() { 294 @Override 295 protected SubObjectCode useDao() { 296 return chartReferenceValueDao.getSubObjectCode(universityFiscalYear, chartOfAccountsCode, accountNumber, financialObjectCode, financialSubObjectCode); 297 } 298 @Override 299 protected void retrieveReferences(SubObjectCode subObjectCode) {} 300 }.get(SubObjectCode.class, universityFiscalYear, chartOfAccountsCode, accountNumber, financialObjectCode, financialSubObjectCode); 301 } 302 303 304 public int getMaxSequenceNumber(Transaction t) { 305 return ledgerDao.getMaxSequenceNumber(t); 306 } 307 308 public AccountBalance getAccountBalance(final Transaction t) { 309 return new PreviousValueRetriever<AccountBalance>() { 310 @Override 311 protected AccountBalance useDao() { 312 return ledgerDao.getAccountBalance(t); 313 } 314 }.get(AccountBalance.class, t.getUniversityFiscalYear(), t.getChartOfAccountsCode(), t.getAccountNumber(), t.getSubAccountNumber(), t.getFinancialObjectCode(), t.getFinancialSubObjectCode()); 315 } 316 317 public Balance getBalance(final Transaction t) { 318 return new PreviousValueRetriever<Balance>() { 319 @Override 320 protected Balance useDao() { 321 return ledgerDao.getBalance(t); 322 } 323 }.get(Balance.class, t.getUniversityFiscalYear(), t.getChartOfAccountsCode(), t.getAccountNumber(), t.getSubAccountNumber(), t.getFinancialObjectCode(), t.getFinancialSubObjectCode(), t.getFinancialBalanceTypeCode(), t.getFinancialObjectTypeCode()); 324 } 325 326 public Encumbrance getEncumbrance(final Entry entry) { 327 return new PreviousValueRetriever<Encumbrance>() { 328 @Override 329 protected Encumbrance useDao() { 330 return ledgerDao.getEncumbrance(entry); 331 } 332 }.get(Encumbrance.class, entry.getUniversityFiscalYear(), entry.getChartOfAccountsCode(), entry.getAccountNumber(), entry.getSubAccountNumber(), entry.getFinancialObjectCode(), entry.getFinancialSubObjectCode(), entry.getFinancialBalanceTypeCode(), entry.getFinancialDocumentTypeCode(), entry.getFinancialSystemOriginationCode(), entry.getDocumentNumber()); 333 } 334 335 public ExpenditureTransaction getExpenditureTransaction(final Transaction t) { 336 return new PreviousValueRetriever<ExpenditureTransaction>() { 337 @Override 338 protected ExpenditureTransaction useDao() { 339 return ledgerDao.getExpenditureTransaction(t); 340 } 341 }.get(ExpenditureTransaction.class, t.getUniversityFiscalYear(), t.getChartOfAccountsCode(), t.getAccountNumber(), t.getSubAccountNumber(), t.getFinancialObjectCode(), t.getFinancialSubObjectCode(), t.getFinancialBalanceTypeCode(), t.getFinancialObjectTypeCode(), t.getUniversityFiscalPeriodCode(), t.getProjectCode(), StringUtils.isBlank(t.getOrganizationReferenceId()) ? GeneralLedgerConstants.getDashOrganizationReferenceId() : t.getOrganizationReferenceId()); 342 } 343 344 public SufficientFundBalances getSufficientFundBalances(final Integer universityFiscalYear, final String chartOfAccountsCode, final String accountNumber, final String financialObjectCode) { 345 return new PreviousValueRetriever<SufficientFundBalances>() { 346 @Override 347 protected SufficientFundBalances useDao() { 348 return ledgerDao.getSufficientFundBalances(universityFiscalYear, chartOfAccountsCode, accountNumber, financialObjectCode); 349 } 350 }.get(SufficientFundBalances.class, universityFiscalYear, chartOfAccountsCode, accountNumber, financialObjectCode); 351 } 352 353 354 public void insertAccountBalance(AccountBalance accountBalance) { 355 ledgerDao.insertAccountBalance(accountBalance); 356 previousValueCache.get(AccountBalance.class).update(accountBalance, accountBalance.getUniversityFiscalYear(), accountBalance.getChartOfAccountsCode(), accountBalance.getAccountNumber(), accountBalance.getSubAccountNumber(), accountBalance.getObjectCode(), accountBalance.getSubObjectCode()); 357 } 358 359 public void updateAccountBalance(AccountBalance accountBalance) { 360 ledgerDao.updateAccountBalance(accountBalance); 361 previousValueCache.get(AccountBalance.class).update(accountBalance, accountBalance.getUniversityFiscalYear(), accountBalance.getChartOfAccountsCode(), accountBalance.getAccountNumber(), accountBalance.getSubAccountNumber(), accountBalance.getObjectCode(), accountBalance.getSubObjectCode()); 362 } 363 364 public void insertBalance(Balance balance) { 365 ledgerDao.insertBalance(balance); 366 previousValueCache.get(Balance.class).update(balance, balance.getUniversityFiscalYear(), balance.getChartOfAccountsCode(), balance.getAccountNumber(), balance.getSubAccountNumber(), balance.getObjectCode(), balance.getSubObjectCode(), balance.getBalanceTypeCode(), balance.getObjectTypeCode()); 367 } 368 369 public void updateBalance(Balance balance) { 370 ledgerDao.updateBalance(balance); 371 previousValueCache.get(Balance.class).update(balance, balance.getUniversityFiscalYear(), balance.getChartOfAccountsCode(), balance.getAccountNumber(), balance.getSubAccountNumber(), balance.getObjectCode(), balance.getSubObjectCode(), balance.getBalanceTypeCode(), balance.getObjectTypeCode()); 372 } 373 374 public void insertEncumbrance(Encumbrance encumbrance) { 375 ledgerDao.insertEncumbrance(encumbrance); 376 previousValueCache.get(Encumbrance.class).update(encumbrance, encumbrance.getUniversityFiscalYear(), encumbrance.getChartOfAccountsCode(), encumbrance.getAccountNumber(), encumbrance.getSubAccountNumber(), encumbrance.getObjectCode(), encumbrance.getSubObjectCode(), encumbrance.getBalanceTypeCode(), encumbrance.getDocumentTypeCode(), encumbrance.getOriginCode(), encumbrance.getDocumentNumber()); 377 } 378 379 public void updateEncumbrance(Encumbrance encumbrance) { 380 ledgerDao.updateEncumbrance(encumbrance); 381 previousValueCache.get(Encumbrance.class).update(encumbrance, encumbrance.getUniversityFiscalYear(), encumbrance.getChartOfAccountsCode(), encumbrance.getAccountNumber(), encumbrance.getSubAccountNumber(), encumbrance.getObjectCode(), encumbrance.getSubObjectCode(), encumbrance.getBalanceTypeCode(), encumbrance.getDocumentTypeCode(), encumbrance.getOriginCode(), encumbrance.getDocumentNumber()); 382 } 383 384 public void insertExpenditureTransaction(ExpenditureTransaction expenditureTransaction) { 385 ledgerDao.insertExpenditureTransaction(expenditureTransaction); 386 previousValueCache.get(ExpenditureTransaction.class).update(expenditureTransaction, expenditureTransaction.getUniversityFiscalYear(), expenditureTransaction.getChartOfAccountsCode(), expenditureTransaction.getAccountNumber(), expenditureTransaction.getSubAccountNumber(), expenditureTransaction.getObjectCode(), expenditureTransaction.getSubObjectCode(), expenditureTransaction.getBalanceTypeCode(), expenditureTransaction.getObjectTypeCode(), expenditureTransaction.getUniversityFiscalAccountingPeriod(), expenditureTransaction.getProjectCode(), expenditureTransaction.getOrganizationReferenceId()); 387 } 388 389 public void updateExpenditureTransaction(ExpenditureTransaction expenditureTransaction) { 390 ledgerDao.updateExpenditureTransaction(expenditureTransaction); 391 previousValueCache.get(ExpenditureTransaction.class).update(expenditureTransaction, expenditureTransaction.getUniversityFiscalYear(), expenditureTransaction.getChartOfAccountsCode(), expenditureTransaction.getAccountNumber(), expenditureTransaction.getSubAccountNumber(), expenditureTransaction.getObjectCode(), expenditureTransaction.getSubObjectCode(), expenditureTransaction.getBalanceTypeCode(), expenditureTransaction.getObjectTypeCode(), expenditureTransaction.getUniversityFiscalAccountingPeriod(), expenditureTransaction.getProjectCode(), expenditureTransaction.getOrganizationReferenceId()); 392 } 393 394 public void insertSufficientFundBalances(SufficientFundBalances sufficientFundBalances) { 395 ledgerDao.insertSufficientFundBalances(sufficientFundBalances); 396 previousValueCache.get(SufficientFundBalances.class).update(sufficientFundBalances, sufficientFundBalances.getUniversityFiscalYear(), sufficientFundBalances.getChartOfAccountsCode(), sufficientFundBalances.getAccountNumber(), sufficientFundBalances.getFinancialObjectCode()); 397 } 398 399 public void updateSufficientFundBalances(SufficientFundBalances sufficientFundBalances) { 400 ledgerDao.updateSufficientFundBalances(sufficientFundBalances); 401 previousValueCache.get(SufficientFundBalances.class).update(sufficientFundBalances, sufficientFundBalances.getUniversityFiscalYear(), sufficientFundBalances.getChartOfAccountsCode(), sufficientFundBalances.getAccountNumber(), sufficientFundBalances.getFinancialObjectCode()); 402 } 403 404 public void insertEntry(Entry entry) { 405 ledgerDao.insertEntry(entry); 406 } 407 408 public void insertReversal(Reversal reversal) { 409 ledgerDao.insertReversal(reversal); 410 } 411 412 public void setSystemReferenceValueDao(org.kuali.kfs.sys.batch.dataaccess.LedgerReferenceValuePreparedStatementCachingDao systemReferenceValueDao) { 413 this.systemReferenceValueDao = systemReferenceValueDao; 414 } 415 416 public void setChartReferenceValueDao(org.kuali.kfs.coa.batch.dataaccess.LedgerReferenceValuePreparedStatementCachingDao chartReferenceValueDao) { 417 this.chartReferenceValueDao = chartReferenceValueDao; 418 } 419 420 public void setLedgerDao(LedgerPreparedStatementCachingDao ledgerDao) { 421 this.ledgerDao = ledgerDao; 422 } 423 424 public void setUniversityDateService(UniversityDateService universityDateService) { 425 this.universityDateService = universityDateService; 426 } 427 428 /** 429 * Sets the financialSystemDocumentTypeService attribute value. 430 * @param financialSystemDocumentTypeService The financialSystemDocumentTypeService to set. 431 */ 432 public void setFinancialSystemDocumentTypeService(FinancialSystemDocumentTypeService financialSystemDocumentTypeService) { 433 this.financialSystemDocumentTypeService = financialSystemDocumentTypeService; 434 } 435 }