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.io.File;
19 import java.io.FileNotFoundException;
20 import java.io.PrintStream;
21 import java.sql.Date;
22 import java.util.HashMap;
23 import java.util.Iterator;
24 import java.util.Map;
25 import java.util.Set;
26
27 import org.kuali.ole.coa.service.BalanceTypeService;
28 import org.kuali.ole.coa.service.ObjectTypeService;
29 import org.kuali.ole.coa.service.PriorYearAccountService;
30 import org.kuali.ole.coa.service.SubFundGroupService;
31 import org.kuali.ole.gl.GeneralLedgerConstants;
32 import org.kuali.ole.gl.batch.BalanceForwardRuleHelper;
33 import org.kuali.ole.gl.batch.NominalActivityClosingHelper;
34 import org.kuali.ole.gl.batch.dataaccess.YearEndDao;
35 import org.kuali.ole.gl.batch.service.EncumbranceClosingOriginEntryGenerationService;
36 import org.kuali.ole.gl.batch.service.YearEndService;
37 import org.kuali.ole.gl.batch.service.impl.exception.FatalErrorException;
38 import org.kuali.ole.gl.businessobject.Balance;
39 import org.kuali.ole.gl.businessobject.Encumbrance;
40 import org.kuali.ole.gl.businessobject.OriginEntryFull;
41 import org.kuali.ole.gl.dataaccess.EncumbranceDao;
42 import org.kuali.ole.gl.report.LedgerSummaryReport;
43 import org.kuali.ole.gl.service.BalanceService;
44 import org.kuali.ole.gl.service.OriginEntryGroupService;
45 import org.kuali.ole.gl.service.OriginEntryService;
46 import org.kuali.ole.sys.OLEConstants;
47 import org.kuali.ole.sys.OLEKeyConstants;
48 import org.kuali.ole.sys.service.ReportWriterService;
49 import org.kuali.rice.core.api.config.property.ConfigurationService;
50 import org.kuali.rice.core.api.datetime.DateTimeService;
51 import org.kuali.rice.coreservice.framework.parameter.ParameterService;
52 import org.kuali.rice.krad.service.PersistenceService;
53 import org.springframework.transaction.annotation.Transactional;
54
55
56
57
58 @Transactional
59 public class YearEndServiceImpl implements YearEndService {
60 private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(YearEndServiceImpl.class);
61
62 private EncumbranceDao encumbranceDao;
63 private OriginEntryService originEntryService;
64 private OriginEntryGroupService originEntryGroupService;
65 private DateTimeService dateTimeService;
66 private BalanceService balanceService;
67 private BalanceTypeService balanceTypeService;
68 private ObjectTypeService objectTypeService;
69 private ParameterService parameterService;
70 private ConfigurationService configurationService;
71 private PriorYearAccountService priorYearAccountService;
72 private SubFundGroupService subFundGroupService;
73 private PersistenceService persistenceService;
74 private YearEndDao yearEndDao;
75 private String batchFileDirectoryName;
76 private EncumbranceClosingOriginEntryGenerationService encumbranceClosingOriginEntryGenerationService;
77 private ReportWriterService nominalActivityClosingReportWriterService;
78 private ReportWriterService balanceForwardReportWriterService;
79 private ReportWriterService encumbranceClosingReportWriterService;
80
81 public static final String TRANSACTION_DATE_FORMAT_STRING = "yyyy-MM-dd";
82
83
84
85
86 public YearEndServiceImpl() {
87 super();
88 }
89
90
91
92
93
94
95
96
97
98
99 public void closeNominalActivity(String nominalClosingFileName, Map nominalClosingJobParameters) {
100
101 Integer varFiscalYear = (Integer) nominalClosingJobParameters.get(GeneralLedgerConstants.ColumnNames.UNIVERSITY_FISCAL_YEAR);
102 NominalActivityClosingHelper closingHelper = new NominalActivityClosingHelper(varFiscalYear, (Date) nominalClosingJobParameters.get(GeneralLedgerConstants.ColumnNames.UNIV_DT), parameterService, configurationService);
103
104 closingHelper.addNominalClosingJobParameters(nominalClosingJobParameters);
105
106 Map<String, Integer> nominalActivityClosingCounts = new HashMap<String, Integer>();
107
108 nominalActivityClosingCounts.put("globalReadCount", new Integer(balanceService.countBalancesForFiscalYear(varFiscalYear)));
109 Iterator<Balance> balanceIterator = balanceService.findNominalActivityBalancesForFiscalYear(varFiscalYear);
110
111 String accountNumberHold = null;
112
113 boolean selectSw = false;
114
115 nominalActivityClosingCounts.put("globalSelectCount", new Integer(0));
116 nominalActivityClosingCounts.put("sequenceNumber", new Integer(0));
117 nominalActivityClosingCounts.put("sequenceWriteCount", new Integer(0));
118 nominalActivityClosingCounts.put("sequenceCheckCount", new Integer(0));
119
120 boolean nonFatalErrorFlag = false;
121
122
123 File nominalClosingFile = new File(batchFileDirectoryName + File.separator + nominalClosingFileName);
124 PrintStream nominalClosingPs = null;
125
126 try {
127 nominalClosingPs = new PrintStream(nominalClosingFile);
128 } catch (FileNotFoundException e) {
129 throw new RuntimeException("nominalClosingFile Files doesn't exist " + nominalClosingFileName);
130 }
131
132 LedgerSummaryReport ledgerReport = new LedgerSummaryReport();
133
134 while (balanceIterator.hasNext()) {
135
136 Balance balance = balanceIterator.next();
137 balance.refreshReferenceObject("option");
138
139 selectSw = true;
140
141 try {
142 if (LOG.isDebugEnabled()) {
143 LOG.debug("Balance selected.");
144 }
145 if (balance.getAccountNumber().equals(accountNumberHold)) {
146 incrementCount(nominalActivityClosingCounts, "sequenceNumber");
147 }
148 else {
149 nominalActivityClosingCounts.put("sequenceNumber", new Integer(1));
150 }
151 incrementCount(nominalActivityClosingCounts, "globalSelectCount");
152 OriginEntryFull activityEntry = closingHelper.generateActivityEntry(balance, new Integer(1));
153 originEntryService.createEntry(activityEntry, nominalClosingPs);
154 ledgerReport.summarizeEntry(activityEntry);
155 incrementCount(nominalActivityClosingCounts, "sequenceWriteCount");
156 nominalActivityClosingCounts.put("sequenceCheckCount", new Integer(nominalActivityClosingCounts.get("sequenceWriteCount").intValue()));
157 if (0 == nominalActivityClosingCounts.get("sequenceCheckCount").intValue() % 1000) {
158 LOG.info(new StringBuffer(" SEQUENTIAL RECORDS WRITTEN = ").append(nominalActivityClosingCounts.get("sequenceCheckCount")).toString());
159 }
160 OriginEntryFull offsetEntry = closingHelper.generateOffset(balance, new Integer(1));
161 originEntryService.createEntry(offsetEntry, nominalClosingPs);
162 ledgerReport.summarizeEntry(offsetEntry);
163 incrementCount(nominalActivityClosingCounts, "sequenceWriteCount");
164 nominalActivityClosingCounts.put("sequenceCheckCount", new Integer(nominalActivityClosingCounts.get("sequenceWriteCount").intValue()));
165 if (0 == nominalActivityClosingCounts.get("sequenceCheckCount").intValue() % 1000) {
166 LOG.info(new StringBuffer(" ORIGIN ENTRIES INSERTED = ").append(nominalActivityClosingCounts.get("sequenceCheckCount")).toString());
167 }
168 if (nominalActivityClosingCounts.get("globalSelectCount").intValue() % 1000 == 0) {
169
170 }
171 accountNumberHold = balance.getAccountNumber();
172 }
173 catch (FatalErrorException fee) {
174 LOG.warn("Failed to create entry pair for balance.", fee);
175 }
176 }
177 nominalActivityClosingCounts.put("nonFatalCount", closingHelper.getNonFatalErrorCount());
178 nominalClosingPs.close();
179
180
181 for (Object jobParameterKeyAsObject : nominalClosingJobParameters.keySet()) {
182 if (jobParameterKeyAsObject != null) {
183 final String jobParameterKey = jobParameterKeyAsObject.toString();
184 getNominalActivityClosingReportWriterService().writeParameterLine("%32s %10s", jobParameterKey, nominalClosingJobParameters.get(jobParameterKey));
185 }
186 }
187
188
189 getNominalActivityClosingReportWriterService().writeStatisticLine("NUMBER OF GLBL RECORDS READ %9d", nominalActivityClosingCounts.get("globalReadCount"));
190 getNominalActivityClosingReportWriterService().writeStatisticLine("NUMBER OF GLBL RECORDS SELECTED %9d", nominalActivityClosingCounts.get("globalSelectCount"));
191 getNominalActivityClosingReportWriterService().writeStatisticLine("NUMBER OF SEQ RECORDS WRITTEN %9d", nominalActivityClosingCounts.get("sequenceWriteCount"));
192 getNominalActivityClosingReportWriterService().pageBreak();
193
194
195 getNominalActivityClosingReportWriterService().writeSubTitle(configurationService.getPropertyValueAsString(OLEKeyConstants.MESSAGE_REPORT_YEAR_END_NOMINAL_ACTIVITY_CLOSING_LEDGER_TITLE_LINE));
196 ledgerReport.writeReport(getNominalActivityClosingReportWriterService());
197 }
198
199
200
201
202
203
204
205
206 protected int incrementCount(Map<String, Integer> counts, String countName) {
207 Integer value = counts.get(countName);
208 int incremented = value.intValue() + 1;
209 counts.put(countName, new Integer(incremented));
210 return incremented;
211 }
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226 public void forwardBalances(String balanceForwardsUnclosedFileName, String balanceForwardsclosedFileName, BalanceForwardRuleHelper balanceForwardRuleHelper) {
227 LOG.debug("forwardBalances() started");
228
229
230
231
232
233 balanceForwardRuleHelper.setPriorYearAccountService(priorYearAccountService);
234 balanceForwardRuleHelper.setSubFundGroupService(subFundGroupService);
235 balanceForwardRuleHelper.setOriginEntryService(originEntryService);
236 balanceForwardRuleHelper.getState().setGlobalReadCount(balanceService.countBalancesForFiscalYear(balanceForwardRuleHelper.getClosingFiscalYear()));
237
238 Balance balance;
239
240
241 File unclosedOutputFile = new File(batchFileDirectoryName + File.separator + balanceForwardsUnclosedFileName);
242 File closedOutputFile = new File(batchFileDirectoryName + File.separator + balanceForwardsclosedFileName);
243 PrintStream unclosedPs = null;
244 PrintStream closedPs = null;
245
246 try {
247 unclosedPs = new PrintStream(unclosedOutputFile);
248 closedPs = new PrintStream(closedOutputFile);
249 } catch (FileNotFoundException e) {
250 throw new RuntimeException("balanceForwards Files don't exist " + balanceForwardsUnclosedFileName + " and " + balanceForwardsclosedFileName);
251 }
252
253
254 Iterator<Balance> generalBalances = balanceService.findGeneralBalancesToForwardForFiscalYear(balanceForwardRuleHelper.getClosingFiscalYear());
255 while (generalBalances.hasNext()) {
256 balance = generalBalances.next();
257 balanceForwardRuleHelper.processGeneralForwardBalance(balance, closedPs, unclosedPs);
258 if (balanceForwardRuleHelper.getState().getGlobalSelectCount() % 1000 == 0) {
259
260 }
261 }
262
263
264 Iterator<Balance> cumulativeBalances = balanceService.findCumulativeBalancesToForwardForFiscalYear(balanceForwardRuleHelper.getClosingFiscalYear());
265 while (cumulativeBalances.hasNext()) {
266 balance = cumulativeBalances.next();
267 balanceForwardRuleHelper.processCumulativeForwardBalance(balance, closedPs, unclosedPs);
268 if (balanceForwardRuleHelper.getState().getGlobalSelectCount() % 1000 == 0) {
269
270 }
271 }
272
273
274 getBalanceForwardReportWriterService().writeParameterLine("%32s %10s", GeneralLedgerConstants.ANNUAL_CLOSING_TRANSACTION_DATE_PARM, balanceForwardRuleHelper.getTransactionDate().toString());
275 getBalanceForwardReportWriterService().writeParameterLine("%32s %10s", GeneralLedgerConstants.ANNUAL_CLOSING_FISCAL_YEAR_PARM, balanceForwardRuleHelper.getClosingFiscalYear().toString());
276 getBalanceForwardReportWriterService().writeParameterLine("%32s %10s", OLEConstants.SystemGroupParameterNames.GL_ANNUAL_CLOSING_DOC_TYPE, balanceForwardRuleHelper.getAnnualClosingDocType());
277 getBalanceForwardReportWriterService().writeParameterLine("%32s %10s", OLEConstants.SystemGroupParameterNames.GL_ORIGINATION_CODE, balanceForwardRuleHelper.getGlOriginationCode());
278
279
280 getBalanceForwardReportWriterService().writeStatisticLine("NUMBER OF GLBL RECORDS READ....: %10d", balanceForwardRuleHelper.getState().getGlobalReadCount());
281 getBalanceForwardReportWriterService().writeStatisticLine("NUMBER OF GLBL RECORDS SELECTED: %10d", balanceForwardRuleHelper.getState().getGlobalSelectCount());
282 getBalanceForwardReportWriterService().writeStatisticLine("NUMBER OF SEQ RECORDS WRITTEN..: %10d", balanceForwardRuleHelper.getState().getSequenceWriteCount());
283 getBalanceForwardReportWriterService().writeStatisticLine("RECORDS FOR CLOSED ACCOUNTS....: %10d", balanceForwardRuleHelper.getState().getSequenceClosedCount());
284 getBalanceForwardReportWriterService().pageBreak();
285
286
287 getBalanceForwardReportWriterService().writeSubTitle(configurationService.getPropertyValueAsString(OLEKeyConstants.MESSAGE_REPORT_YEAR_END_BALANCE_FORWARD_OPEN_ACCOUNT_LEDGER_TITLE_LINE));
288 balanceForwardRuleHelper.writeOpenAccountBalanceForwardLedgerSummaryReport(getBalanceForwardReportWriterService());
289 getBalanceForwardReportWriterService().writeNewLines(4);
290 getBalanceForwardReportWriterService().writeSubTitle(configurationService.getPropertyValueAsString(OLEKeyConstants.MESSAGE_REPORT_YEAR_END_BALANCE_FORWARD_CLOSED_ACCOUNT_LEDGER_TITLE_LINE));
291 balanceForwardRuleHelper.writeClosedAccountBalanceForwardLedgerSummaryReport(getBalanceForwardReportWriterService());
292 }
293
294
295
296
297
298
299
300
301
302 public void forwardEncumbrances(String encumbranceForwardFileName, Map jobParameters, Map<String, Integer> counts) {
303 LOG.debug("forwardEncumbrances() started");
304
305
306 counts.put("encumbrancesRead", new Integer(0));
307 counts.put("encumbrancesSelected", new Integer(0));
308 counts.put("originEntriesWritten", new Integer(0));
309
310 LedgerSummaryReport forwardEncumbranceLedgerReport = new LedgerSummaryReport();
311
312
313 File encumbranceForwardFile = new File(batchFileDirectoryName + File.separator + encumbranceForwardFileName);
314 PrintStream encumbranceForwardPs = null;
315
316 try {
317 encumbranceForwardPs = new PrintStream(encumbranceForwardFile);
318 } catch (FileNotFoundException e) {
319 throw new RuntimeException("nominalClosingFile Files doesn't exist " + encumbranceForwardFileName);
320 }
321
322
323 Iterator encumbranceIterator = encumbranceDao.getEncumbrancesToClose((Integer) jobParameters.get(GeneralLedgerConstants.ColumnNames.UNIVERSITY_FISCAL_YEAR));
324 while (encumbranceIterator.hasNext()) {
325
326 Encumbrance encumbrance = (Encumbrance) encumbranceIterator.next();
327 incrementCount(counts, "encumbrancesRead");
328
329
330 if (getEncumbranceClosingOriginEntryGenerationService().shouldForwardEncumbrance(encumbrance)) {
331
332 incrementCount(counts, "encumbrancesSelected");
333
334
335 OriginEntryOffsetPair beginningBalanceEntryPair = getEncumbranceClosingOriginEntryGenerationService().createBeginningBalanceEntryOffsetPair(encumbrance, (Integer) jobParameters.get(GeneralLedgerConstants.ColumnNames.UNIVERSITY_FISCAL_YEAR), (Date) jobParameters.get(GeneralLedgerConstants.ColumnNames.UNIV_DT));
336
337 if (beginningBalanceEntryPair.isFatalErrorFlag()) {
338
339 continue;
340
341 }
342 else {
343
344 originEntryService.createEntry(beginningBalanceEntryPair.getEntry(), encumbranceForwardPs);
345 forwardEncumbranceLedgerReport.summarizeEntry(beginningBalanceEntryPair.getEntry());
346 originEntryService.createEntry(beginningBalanceEntryPair.getOffset(), encumbranceForwardPs);
347 forwardEncumbranceLedgerReport.summarizeEntry(beginningBalanceEntryPair.getOffset());
348 incrementCount(counts, "originEntriesWritten");
349 incrementCount(counts, "originEntriesWritten");
350 if (0 == counts.get("originEntriesWritten").intValue() % 1000) {
351 LOG.info(new StringBuffer(" ORIGIN ENTRIES INSERTED = ").append(counts.get("originEntriesWritten")).toString());
352 }
353 }
354
355
356 boolean isEligibleForCostShare = false;
357 try {
358 isEligibleForCostShare = this.getEncumbranceClosingOriginEntryGenerationService().shouldForwardCostShareForEncumbrance(beginningBalanceEntryPair.getEntry(), beginningBalanceEntryPair.getOffset(), encumbrance, beginningBalanceEntryPair.getEntry().getFinancialObjectTypeCode());
359 }
360 catch (FatalErrorException fee) {
361 LOG.info(fee.getMessage());
362 }
363
364 if (isEligibleForCostShare) {
365
366 OriginEntryOffsetPair costShareBeginningBalanceEntryPair = getEncumbranceClosingOriginEntryGenerationService().createCostShareBeginningBalanceEntryOffsetPair(encumbrance, (Date) jobParameters.get(GeneralLedgerConstants.ColumnNames.UNIV_DT));
367 if (!costShareBeginningBalanceEntryPair.isFatalErrorFlag()) {
368
369 originEntryService.createEntry(costShareBeginningBalanceEntryPair.getEntry(), encumbranceForwardPs);
370 forwardEncumbranceLedgerReport.summarizeEntry(costShareBeginningBalanceEntryPair.getEntry());
371 originEntryService.createEntry(costShareBeginningBalanceEntryPair.getOffset(), encumbranceForwardPs);
372 forwardEncumbranceLedgerReport.summarizeEntry(costShareBeginningBalanceEntryPair.getOffset());
373 incrementCount(counts, "originEntriesWritten");
374 incrementCount(counts, "originEntriesWritten");
375 if (0 == counts.get("originEntriesWritten").intValue() % 1000) {
376 LOG.info(new StringBuffer(" ORIGIN ENTRIES INSERTED = ").append(counts.get("originEntriesWritten")).toString());
377 }
378 }
379 }
380 }
381 if (counts.get("encumbrancesSelected").intValue() % 1000 == 0) {
382
383 }
384 }
385 encumbranceForwardPs.close();
386
387
388 for (Object jobParameterKeyAsObject : jobParameters.keySet()) {
389 if (jobParameterKeyAsObject != null) {
390 final String jobParameterKey = jobParameterKeyAsObject.toString();
391 getEncumbranceClosingReportWriterService().writeParameterLine("%32s %10s", jobParameterKey, jobParameters.get(jobParameterKey));
392 }
393 }
394
395
396 getEncumbranceClosingReportWriterService().writeStatisticLine("NUMBER OF ENCUMBRANCE RECORDS READ: %10d", counts.get("encumbrancesRead"));
397 getEncumbranceClosingReportWriterService().writeStatisticLine("NUMBER OF ENCUMBRANCE RECORDS SELECTED %10d", counts.get("encumbrancesSelected"));
398 getEncumbranceClosingReportWriterService().writeStatisticLine("NUMBER OF SEQ RECORDS WRITTEN %10d", counts.get("originEntriesWritten"));
399 getEncumbranceClosingReportWriterService().pageBreak();
400
401
402 getEncumbranceClosingReportWriterService().writeSubTitle(configurationService.getPropertyValueAsString(OLEKeyConstants.MESSAGE_REPORT_YEAR_END_ENCUMBRANCE_FORWARDS_LEDGER_TITLE_LINE));
403 forwardEncumbranceLedgerReport.writeReport(getEncumbranceClosingReportWriterService());
404 }
405
406
407
408
409
410 public void logAllMissingPriorYearAccounts(Integer fiscalYear) {
411 Set<Map<String, String>> missingPriorYearAccountKeys = yearEndDao.findKeysOfMissingPriorYearAccountsForBalances(fiscalYear);
412 missingPriorYearAccountKeys.addAll(yearEndDao.findKeysOfMissingPriorYearAccountsForOpenEncumbrances(fiscalYear));
413 for (Map<String, String> key : missingPriorYearAccountKeys) {
414 LOG.info("PRIOR YEAR ACCOUNT MISSING FOR " + key.get("chartOfAccountsCode") + "-" + key.get("accountNumber"));
415 }
416 }
417
418
419
420
421
422 public void logAllMissingSubFundGroups(Integer fiscalYear) {
423 Set missingSubFundGroupKeys = yearEndDao.findKeysOfMissingSubFundGroupsForBalances(fiscalYear);
424 missingSubFundGroupKeys.addAll(yearEndDao.findKeysOfMissingSubFundGroupsForOpenEncumbrances(fiscalYear));
425 for (Object key : missingSubFundGroupKeys) {
426 LOG.info("SUB FUND GROUP MISSING FOR " + (String) ((Map) key).get("subFundGroupCode"));
427 }
428
429 }
430
431
432
433
434
435
436
437
438 public void setEncumbranceDao(EncumbranceDao encumbranceDao) {
439 this.encumbranceDao = encumbranceDao;
440 }
441
442
443
444
445
446
447
448 public void setOriginEntryService(OriginEntryService originEntryService) {
449 this.originEntryService = originEntryService;
450 }
451
452 public void setDateTimeService(DateTimeService dateTimeService) {
453 this.dateTimeService = dateTimeService;
454 }
455
456 public void setOriginEntryGroupService(OriginEntryGroupService originEntryGroupService) {
457 this.originEntryGroupService = originEntryGroupService;
458 }
459
460 public void setBalanceService(BalanceService balanceService) {
461 this.balanceService = balanceService;
462 }
463
464 public void setBalanceTypeService(BalanceTypeService balanceTypeService) {
465 this.balanceTypeService = balanceTypeService;
466 }
467
468 public void setObjectTypeService(ObjectTypeService objectTypeService) {
469 this.objectTypeService = objectTypeService;
470 }
471
472
473 public void setParameterService(ParameterService parameterService) {
474 this.parameterService = parameterService;
475 }
476
477 public void setPriorYearAccountService(PriorYearAccountService priorYearAccountService) {
478 this.priorYearAccountService = priorYearAccountService;
479 }
480
481 public void setSubFundGroupService(SubFundGroupService subFundGroupService) {
482 this.subFundGroupService = subFundGroupService;
483 }
484
485
486
487
488
489
490 public void setPersistenceService(PersistenceService persistenceService) {
491 this.persistenceService = persistenceService;
492 }
493
494 public void setYearEndDao(YearEndDao yearEndDao) {
495 this.yearEndDao = yearEndDao;
496 }
497
498 public void setConfigurationService(ConfigurationService configurationService) {
499 this.configurationService = configurationService;
500 }
501
502 public void setBatchFileDirectoryName(String batchFileDirectoryName) {
503 this.batchFileDirectoryName = batchFileDirectoryName;
504 }
505
506
507
508
509
510 public EncumbranceClosingOriginEntryGenerationService getEncumbranceClosingOriginEntryGenerationService() {
511 return encumbranceClosingOriginEntryGenerationService;
512 }
513
514
515
516
517
518 public void setEncumbranceClosingOriginEntryGenerationService(EncumbranceClosingOriginEntryGenerationService encumbranceClosingOriginEntryGenerationService) {
519 this.encumbranceClosingOriginEntryGenerationService = encumbranceClosingOriginEntryGenerationService;
520 }
521
522
523
524
525
526 public ReportWriterService getNominalActivityClosingReportWriterService() {
527 return nominalActivityClosingReportWriterService;
528 }
529
530
531
532
533
534 public void setNominalActivityClosingReportWriterService(ReportWriterService nominalActivityClosingReportWriterService) {
535 this.nominalActivityClosingReportWriterService = nominalActivityClosingReportWriterService;
536 }
537
538
539
540
541
542 public ReportWriterService getBalanceForwardReportWriterService() {
543 return balanceForwardReportWriterService;
544 }
545
546
547
548
549
550 public void setBalanceForwardReportWriterService(ReportWriterService balanceForwardReportWriterService) {
551 this.balanceForwardReportWriterService = balanceForwardReportWriterService;
552 }
553
554
555
556
557
558 public ReportWriterService getEncumbranceClosingReportWriterService() {
559 return encumbranceClosingReportWriterService;
560 }
561
562
563
564
565
566 public void setEncumbranceClosingReportWriterService(ReportWriterService encumbranceClosingReportWriterService) {
567 this.encumbranceClosingReportWriterService = encumbranceClosingReportWriterService;
568 }
569 }