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 }