1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.ole.gl.batch.service.impl;
17
18 import java.sql.Date;
19 import java.util.HashMap;
20 import java.util.Map;
21
22 import org.apache.commons.lang.StringUtils;
23 import org.kuali.ole.coa.businessobject.A21SubAccount;
24 import org.kuali.ole.coa.businessobject.Account;
25 import org.kuali.ole.coa.businessobject.AccountingPeriod;
26 import org.kuali.ole.coa.businessobject.BalanceType;
27 import org.kuali.ole.coa.businessobject.Chart;
28 import org.kuali.ole.coa.businessobject.IndirectCostRecoveryType;
29 import org.kuali.ole.coa.businessobject.ObjectCode;
30 import org.kuali.ole.coa.businessobject.ObjectLevel;
31 import org.kuali.ole.coa.businessobject.ObjectType;
32 import org.kuali.ole.coa.businessobject.OffsetDefinition;
33 import org.kuali.ole.coa.businessobject.Organization;
34 import org.kuali.ole.coa.businessobject.ProjectCode;
35 import org.kuali.ole.coa.businessobject.SubAccount;
36 import org.kuali.ole.coa.businessobject.SubFundGroup;
37 import org.kuali.ole.coa.businessobject.SubObjectCode;
38 import org.kuali.ole.gl.GeneralLedgerConstants;
39 import org.kuali.ole.gl.batch.dataaccess.LedgerPreparedStatementCachingDao;
40 import org.kuali.ole.gl.batch.service.AccountingCycleCachingService;
41 import org.kuali.ole.gl.businessobject.AccountBalance;
42 import org.kuali.ole.gl.businessobject.Balance;
43 import org.kuali.ole.gl.businessobject.Encumbrance;
44 import org.kuali.ole.gl.businessobject.Entry;
45 import org.kuali.ole.gl.businessobject.ExpenditureTransaction;
46 import org.kuali.ole.gl.businessobject.Reversal;
47 import org.kuali.ole.gl.businessobject.SufficientFundBalances;
48 import org.kuali.ole.gl.businessobject.Transaction;
49 import org.kuali.ole.sys.batch.service.AbstractBatchTransactionalCachingService;
50 import org.kuali.ole.sys.businessobject.OriginationCode;
51 import org.kuali.ole.sys.businessobject.SystemOptions;
52 import org.kuali.ole.sys.businessobject.UniversityDate;
53 import org.kuali.ole.sys.document.service.FinancialSystemDocumentTypeService;
54 import org.kuali.ole.sys.service.UniversityDateService;
55 import org.kuali.rice.core.api.datetime.DateTimeService;
56 import org.kuali.rice.krad.util.ObjectUtils;
57
58 public class AccountingCycleCachingServiceImpl extends AbstractBatchTransactionalCachingService implements AccountingCycleCachingService {
59 protected org.kuali.ole.sys.batch.dataaccess.LedgerReferenceValuePreparedStatementCachingDao systemReferenceValueDao;
60 protected org.kuali.ole.coa.batch.dataaccess.LedgerReferenceValuePreparedStatementCachingDao chartReferenceValueDao;
61 protected LedgerPreparedStatementCachingDao ledgerDao;
62
63 protected Map<String,Boolean> documentTypeValidCache;
64
65 protected UniversityDateService universityDateService;
66 protected FinancialSystemDocumentTypeService financialSystemDocumentTypeService;
67 protected DateTimeService dateTimeService;
68
69 public void initialize() {
70 super.initialize();
71 systemReferenceValueDao.initialize();
72 chartReferenceValueDao.initialize();
73 ledgerDao.initialize();
74 documentTypeValidCache = new HashMap<String,Boolean>();
75 previousValueCache.put(Balance.class, new PreviousValueReference<Balance>());
76 previousValueCache.put(Encumbrance.class, new PreviousValueReference<Encumbrance>());
77 previousValueCache.put(ExpenditureTransaction.class, new PreviousValueReference<ExpenditureTransaction>());
78 previousValueCache.put(SufficientFundBalances.class, new PreviousValueReference<SufficientFundBalances>());
79 previousValueCache.put(AccountBalance.class, new PreviousValueReference<AccountBalance>());
80 }
81
82 public void destroy() {
83 super.destroy();
84 systemReferenceValueDao.destroy();
85 chartReferenceValueDao.destroy();
86 ledgerDao.destroy();
87 documentTypeValidCache = null;
88 }
89
90 public boolean isCurrentActiveAccountingDocumentType(String documentTypeCode) {
91 Boolean documentTypeValid = documentTypeValidCache.get(documentTypeCode);
92 if (documentTypeValid == null) {
93 documentTypeValid = new Boolean(financialSystemDocumentTypeService.isCurrentActiveAccountingDocumentType(documentTypeCode));
94 documentTypeValidCache.put(documentTypeCode, documentTypeValid);
95 }
96 return documentTypeValid.booleanValue();
97 }
98
99 public OriginationCode getOriginationCode(final String financialSystemOriginationCode) {
100 return new ReferenceValueRetriever<OriginationCode>() {
101 @Override
102 protected OriginationCode useDao() {
103 return systemReferenceValueDao.getOriginationCode(financialSystemOriginationCode);
104 }
105 @Override
106 protected void retrieveReferences(OriginationCode originationCode) {}
107 }.get(OriginationCode.class, financialSystemOriginationCode);
108 }
109
110 public SystemOptions getSystemOptions(final Integer fiscalYear) {
111 return new ReferenceValueRetriever<SystemOptions>() {
112 @Override
113 protected SystemOptions useDao() {
114 return systemReferenceValueDao.getSystemOptions(fiscalYear);
115 }
116 @Override
117 protected void retrieveReferences(SystemOptions systemOptions) {}
118 }.get(SystemOptions.class, fiscalYear);
119 }
120
121 public UniversityDate getUniversityDate(final Date date) {
122 return new ReferenceValueRetriever<UniversityDate>() {
123 @Override
124 protected UniversityDate useDao() {
125 return systemReferenceValueDao.getUniversityDate(date);
126 }
127 @Override
128 protected void retrieveReferences(UniversityDate universityDate) {
129 universityDate.setAccountingPeriod(getAccountingPeriod(universityDate.getUniversityFiscalYear(), universityDate.getUniversityFiscalAccountingPeriod()));
130 }
131 }.get(UniversityDate.class, date);
132 }
133
134 public A21SubAccount getA21SubAccount(final String chartOfAccountsCode, final String accountNumber, final String subAccountNumber) {
135 return new ReferenceValueRetriever<A21SubAccount>() {
136 @Override
137 protected A21SubAccount useDao() {
138 A21SubAccount a21 = chartReferenceValueDao.getA21SubAccount(chartOfAccountsCode, accountNumber, subAccountNumber);
139 if (ObjectUtils.isNotNull(a21)){
140 a21.setA21IndirectCostRecoveryAccounts(chartReferenceValueDao.getA21IndirectCostRecoveryAccounts(chartOfAccountsCode, accountNumber, subAccountNumber));
141 }
142 return a21;
143 }
144 @Override
145 protected void retrieveReferences(A21SubAccount a21SubAccount) {}
146 }.get(A21SubAccount.class, chartOfAccountsCode, accountNumber, subAccountNumber);
147 }
148
149 public Account getAccount(final String chartCode, final String accountNumber) {
150 return new ReferenceValueRetriever<Account>() {
151 @Override
152 protected Account useDao() {
153 return chartReferenceValueDao.getAccount(chartCode, accountNumber);
154 }
155 @Override
156 protected void retrieveReferences(Account account) {}
157 }.get(Account.class, chartCode, accountNumber);
158 }
159
160 public AccountingPeriod getAccountingPeriod(final Integer fiscalYear, final String fiscalPeriodCode) {
161 return new ReferenceValueRetriever<AccountingPeriod>() {
162 @Override
163 protected AccountingPeriod useDao() {
164 return chartReferenceValueDao.getAccountingPeriod(fiscalYear, fiscalPeriodCode);
165 }
166 @Override
167 protected void retrieveReferences(AccountingPeriod accountingPeriod) {}
168 }.get(AccountingPeriod.class, fiscalYear, fiscalPeriodCode);
169 }
170
171 public BalanceType getBalanceType(final String financialBalanceTypeCode) {
172 return new ReferenceValueRetriever<BalanceType>() {
173 @Override
174 protected BalanceType useDao() {
175 return chartReferenceValueDao.getBalanceType(financialBalanceTypeCode);
176 }
177 @Override
178 protected void retrieveReferences(BalanceType balanceType) {}
179 }.get(BalanceType.class, financialBalanceTypeCode);
180 }
181
182 public Chart getChart(final String chartOfAccountsCode) {
183 return new ReferenceValueRetriever<Chart>() {
184 @Override
185 protected Chart useDao() {
186 return chartReferenceValueDao.getChart(chartOfAccountsCode);
187 }
188 @Override
189 protected void retrieveReferences(Chart chart) {
190 chart.setFundBalanceObject(getObjectCode(universityDateService.getCurrentFiscalYear(), chart.getChartOfAccountsCode(), chart.getFundBalanceObjectCode()));
191 }
192 }.get(Chart.class, chartOfAccountsCode);
193 }
194
195 public IndirectCostRecoveryType getIndirectCostRecoveryType(final String accountIcrTypeCode) {
196 return new ReferenceValueRetriever<IndirectCostRecoveryType>() {
197 @Override
198 protected IndirectCostRecoveryType useDao() {
199 return chartReferenceValueDao.getIndirectCostRecoveryType(accountIcrTypeCode);
200 }
201 @Override
202 protected void retrieveReferences(IndirectCostRecoveryType indirectCostRecoveryType) {}
203 }.get(IndirectCostRecoveryType.class, accountIcrTypeCode);
204 }
205
206 public ObjectCode getObjectCode(final Integer universityFiscalYear, final String chartOfAccountsCode, final String financialObjectCode) {
207 return new ReferenceValueRetriever<ObjectCode>() {
208 @Override
209 protected ObjectCode useDao() {
210 return chartReferenceValueDao.getObjectCode(universityFiscalYear, chartOfAccountsCode, financialObjectCode);
211 }
212 @Override
213 protected void retrieveReferences(ObjectCode objectCode) {}
214 }.get(ObjectCode.class, universityFiscalYear, chartOfAccountsCode, financialObjectCode);
215 }
216
217 public ObjectLevel getObjectLevel(final String chartOfAccountsCode, final String financialObjectLevelCode) {
218 return new ReferenceValueRetriever<ObjectLevel>() {
219 @Override
220 protected ObjectLevel useDao() {
221 return chartReferenceValueDao.getObjectLevel(chartOfAccountsCode, financialObjectLevelCode);
222 }
223 @Override
224 protected void retrieveReferences(ObjectLevel objectLevel) {}
225 }.get(ObjectLevel.class, chartOfAccountsCode, financialObjectLevelCode);
226 }
227
228 public ObjectType getObjectType(final String financialObjectTypeCode) {
229 return new ReferenceValueRetriever<ObjectType>() {
230 @Override
231 protected ObjectType useDao() {
232 return chartReferenceValueDao.getObjectType(financialObjectTypeCode);
233 }
234 @Override
235 protected void retrieveReferences(ObjectType objectType) {}
236 }.get(ObjectType.class, financialObjectTypeCode);
237 }
238
239 public OffsetDefinition getOffsetDefinition(final Integer universityFiscalYear, final String chartOfAccountsCode, final String financialDocumentTypeCode, final String financialBalanceTypeCode) {
240 return new ReferenceValueRetriever<OffsetDefinition>() {
241 @Override
242 protected OffsetDefinition useDao() {
243 return chartReferenceValueDao.getOffsetDefinition(universityFiscalYear, chartOfAccountsCode, financialDocumentTypeCode, financialBalanceTypeCode);
244 }
245 @Override
246 protected void retrieveReferences(OffsetDefinition offsetDefinition) {
247 offsetDefinition.setFinancialObject(getObjectCode(universityFiscalYear, chartOfAccountsCode, offsetDefinition.getFinancialObjectCode()));
248 }
249 }.get(OffsetDefinition.class, universityFiscalYear, chartOfAccountsCode, financialDocumentTypeCode, financialBalanceTypeCode);
250 }
251
252 public Organization getOrganization(final String chartOfAccountsCode, final String organizationCode) {
253 return new ReferenceValueRetriever<Organization>() {
254 @Override
255 protected Organization useDao() {
256 return chartReferenceValueDao.getOrganization(chartOfAccountsCode, organizationCode);
257 }
258 @Override
259 protected void retrieveReferences(Organization organization) {}
260 }.get(Organization.class, chartOfAccountsCode, organizationCode);
261 }
262
263 public ProjectCode getProjectCode(final String financialSystemProjectCode) {
264 return new ReferenceValueRetriever<ProjectCode>() {
265 @Override
266 protected ProjectCode useDao() {
267 return chartReferenceValueDao.getProjectCode(financialSystemProjectCode);
268 }
269 @Override
270 protected void retrieveReferences(ProjectCode projectCode) {}
271 }.get(ProjectCode.class, financialSystemProjectCode);
272 }
273
274 public SubAccount getSubAccount(final String chartOfAccountsCode, final String accountNumber, final String subAccountNumber) {
275 return new ReferenceValueRetriever<SubAccount>() {
276 @Override
277 protected SubAccount useDao() {
278 return chartReferenceValueDao.getSubAccount(chartOfAccountsCode, accountNumber, subAccountNumber);
279 }
280 @Override
281 protected void retrieveReferences(SubAccount subAccount) {
282 subAccount.setA21SubAccount(getA21SubAccount(chartOfAccountsCode, accountNumber, subAccountNumber));
283 }
284 }.get(SubAccount.class, chartOfAccountsCode, accountNumber, subAccountNumber);
285 }
286
287 public SubFundGroup getSubFundGroup(final String subFundGroupCode) {
288 return new ReferenceValueRetriever<SubFundGroup>() {
289 @Override
290 protected SubFundGroup useDao() {
291 return chartReferenceValueDao.getSubFundGroup(subFundGroupCode);
292 }
293 @Override
294 protected void retrieveReferences(SubFundGroup subFundGroup) {}
295 }.get(SubFundGroup.class, subFundGroupCode);
296 }
297
298 public SubObjectCode getSubObjectCode(final Integer universityFiscalYear, final String chartOfAccountsCode, final String accountNumber, final String financialObjectCode, final String financialSubObjectCode) {
299 return new ReferenceValueRetriever<SubObjectCode>() {
300 @Override
301 protected SubObjectCode useDao() {
302 return chartReferenceValueDao.getSubObjectCode(universityFiscalYear, chartOfAccountsCode, accountNumber, financialObjectCode, financialSubObjectCode);
303 }
304 @Override
305 protected void retrieveReferences(SubObjectCode subObjectCode) {}
306 }.get(SubObjectCode.class, universityFiscalYear, chartOfAccountsCode, accountNumber, financialObjectCode, financialSubObjectCode);
307 }
308
309
310 public int getMaxSequenceNumber(Transaction t) {
311 return ledgerDao.getMaxSequenceNumber(t);
312 }
313
314 public AccountBalance getAccountBalance(final Transaction t) {
315 return new PreviousValueRetriever<AccountBalance>() {
316 @Override
317 protected AccountBalance useDao() {
318 return ledgerDao.getAccountBalance(t);
319 }
320 }.get(AccountBalance.class, t.getUniversityFiscalYear(), t.getChartOfAccountsCode(), t.getAccountNumber(), t.getSubAccountNumber(), t.getFinancialObjectCode(), t.getFinancialSubObjectCode());
321 }
322
323 public Balance getBalance(final Transaction t) {
324 return new PreviousValueRetriever<Balance>() {
325 @Override
326 protected Balance useDao() {
327 return ledgerDao.getBalance(t);
328 }
329 }.get(Balance.class, t.getUniversityFiscalYear(), t.getChartOfAccountsCode(), t.getAccountNumber(), t.getSubAccountNumber(), t.getFinancialObjectCode(), t.getFinancialSubObjectCode(), t.getFinancialBalanceTypeCode(), t.getFinancialObjectTypeCode());
330 }
331
332 public Encumbrance getEncumbrance(final Entry entry) {
333 return new PreviousValueRetriever<Encumbrance>() {
334 @Override
335 protected Encumbrance useDao() {
336 return ledgerDao.getEncumbrance(entry);
337 }
338 }.get(Encumbrance.class, entry.getUniversityFiscalYear(), entry.getChartOfAccountsCode(), entry.getAccountNumber(), entry.getSubAccountNumber(), entry.getFinancialObjectCode(), entry.getFinancialSubObjectCode(), entry.getFinancialBalanceTypeCode(), entry.getFinancialDocumentTypeCode(), entry.getFinancialSystemOriginationCode(), entry.getDocumentNumber());
339 }
340
341 public ExpenditureTransaction getExpenditureTransaction(final Transaction t) {
342 return new PreviousValueRetriever<ExpenditureTransaction>() {
343 @Override
344 protected ExpenditureTransaction useDao() {
345 return ledgerDao.getExpenditureTransaction(t);
346 }
347 }.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());
348 }
349
350 public SufficientFundBalances getSufficientFundBalances(final Integer universityFiscalYear, final String chartOfAccountsCode, final String accountNumber, final String financialObjectCode) {
351 return new PreviousValueRetriever<SufficientFundBalances>() {
352 @Override
353 protected SufficientFundBalances useDao() {
354 return ledgerDao.getSufficientFundBalances(universityFiscalYear, chartOfAccountsCode, accountNumber, financialObjectCode);
355 }
356 }.get(SufficientFundBalances.class, universityFiscalYear, chartOfAccountsCode, accountNumber, financialObjectCode);
357 }
358
359
360 public void insertAccountBalance(AccountBalance accountBalance) {
361 ledgerDao.insertAccountBalance(accountBalance, dateTimeService.getCurrentTimestamp());
362 previousValueCache.get(AccountBalance.class).update(accountBalance, accountBalance.getUniversityFiscalYear(), accountBalance.getChartOfAccountsCode(), accountBalance.getAccountNumber(), accountBalance.getSubAccountNumber(), accountBalance.getObjectCode(), accountBalance.getSubObjectCode());
363 }
364
365 public void updateAccountBalance(AccountBalance accountBalance) {
366 ledgerDao.updateAccountBalance(accountBalance, dateTimeService.getCurrentTimestamp());
367 previousValueCache.get(AccountBalance.class).update(accountBalance, accountBalance.getUniversityFiscalYear(), accountBalance.getChartOfAccountsCode(), accountBalance.getAccountNumber(), accountBalance.getSubAccountNumber(), accountBalance.getObjectCode(), accountBalance.getSubObjectCode());
368 }
369
370 public void insertBalance(Balance balance) {
371 ledgerDao.insertBalance(balance, dateTimeService.getCurrentTimestamp());
372 previousValueCache.get(Balance.class).update(balance, balance.getUniversityFiscalYear(), balance.getChartOfAccountsCode(), balance.getAccountNumber(), balance.getSubAccountNumber(), balance.getObjectCode(), balance.getSubObjectCode(), balance.getBalanceTypeCode(), balance.getObjectTypeCode());
373 }
374
375 public void updateBalance(Balance balance) {
376 ledgerDao.updateBalance(balance, dateTimeService.getCurrentTimestamp());
377 previousValueCache.get(Balance.class).update(balance, balance.getUniversityFiscalYear(), balance.getChartOfAccountsCode(), balance.getAccountNumber(), balance.getSubAccountNumber(), balance.getObjectCode(), balance.getSubObjectCode(), balance.getBalanceTypeCode(), balance.getObjectTypeCode());
378 }
379
380 public void insertEncumbrance(Encumbrance encumbrance) {
381 ledgerDao.insertEncumbrance(encumbrance, dateTimeService.getCurrentTimestamp());
382 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());
383 }
384
385 public void updateEncumbrance(Encumbrance encumbrance) {
386 ledgerDao.updateEncumbrance(encumbrance, dateTimeService.getCurrentTimestamp());
387 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());
388 }
389
390 public void insertExpenditureTransaction(ExpenditureTransaction expenditureTransaction) {
391 ledgerDao.insertExpenditureTransaction(expenditureTransaction);
392 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());
393 }
394
395 public void updateExpenditureTransaction(ExpenditureTransaction expenditureTransaction) {
396 ledgerDao.updateExpenditureTransaction(expenditureTransaction);
397 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());
398 }
399
400 public void insertSufficientFundBalances(SufficientFundBalances sufficientFundBalances) {
401 ledgerDao.insertSufficientFundBalances(sufficientFundBalances, dateTimeService.getCurrentTimestamp());
402 previousValueCache.get(SufficientFundBalances.class).update(sufficientFundBalances, sufficientFundBalances.getUniversityFiscalYear(), sufficientFundBalances.getChartOfAccountsCode(), sufficientFundBalances.getAccountNumber(), sufficientFundBalances.getFinancialObjectCode());
403 }
404
405 public void updateSufficientFundBalances(SufficientFundBalances sufficientFundBalances) {
406 ledgerDao.updateSufficientFundBalances(sufficientFundBalances, dateTimeService.getCurrentTimestamp());
407 previousValueCache.get(SufficientFundBalances.class).update(sufficientFundBalances, sufficientFundBalances.getUniversityFiscalYear(), sufficientFundBalances.getChartOfAccountsCode(), sufficientFundBalances.getAccountNumber(), sufficientFundBalances.getFinancialObjectCode());
408 }
409
410 public void insertEntry(Entry entry) {
411 ledgerDao.insertEntry(entry, dateTimeService.getCurrentTimestamp());
412 }
413
414 public void insertReversal(Reversal reversal) {
415 ledgerDao.insertReversal(reversal);
416 }
417
418 public void setSystemReferenceValueDao(org.kuali.ole.sys.batch.dataaccess.LedgerReferenceValuePreparedStatementCachingDao systemReferenceValueDao) {
419 this.systemReferenceValueDao = systemReferenceValueDao;
420 }
421
422 public void setChartReferenceValueDao(org.kuali.ole.coa.batch.dataaccess.LedgerReferenceValuePreparedStatementCachingDao chartReferenceValueDao) {
423 this.chartReferenceValueDao = chartReferenceValueDao;
424 }
425
426 public void setLedgerDao(LedgerPreparedStatementCachingDao ledgerDao) {
427 this.ledgerDao = ledgerDao;
428 }
429
430 public void setUniversityDateService(UniversityDateService universityDateService) {
431 this.universityDateService = universityDateService;
432 }
433
434
435
436
437
438 public void setFinancialSystemDocumentTypeService(FinancialSystemDocumentTypeService financialSystemDocumentTypeService) {
439 this.financialSystemDocumentTypeService = financialSystemDocumentTypeService;
440 }
441
442
443
444
445
446
447 public void setDateTimeService(DateTimeService dateTimeService) {
448 this.dateTimeService = dateTimeService;
449 }
450 }