001 /*
002 * Copyright 2011 The Kuali Foundation.
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.kfs.module.bc.document.web.struts;
017
018 import java.util.HashMap;
019 import java.util.Iterator;
020 import java.util.List;
021
022 import javax.servlet.http.HttpServletRequest;
023
024 import org.apache.commons.lang.StringUtils;
025 import org.kuali.kfs.coa.businessobject.Organization;
026 import org.kuali.kfs.module.bc.BCConstants;
027 import org.kuali.kfs.module.bc.businessobject.BCKeyLabelPair;
028 import org.kuali.kfs.module.bc.businessobject.BudgetConstructionAccountOrganizationHierarchy;
029 import org.kuali.kfs.module.bc.businessobject.PendingBudgetConstructionGeneralLedger;
030 import org.kuali.kfs.module.bc.document.BudgetConstructionDocument;
031 import org.kuali.kfs.module.bc.document.service.BenefitsCalculationService;
032 import org.kuali.kfs.module.bc.document.service.BudgetConstructionProcessorService;
033 import org.kuali.kfs.module.bc.document.service.BudgetDocumentService;
034 import org.kuali.kfs.module.bc.document.service.BudgetParameterService;
035 import org.kuali.kfs.module.bc.document.service.SalarySettingService;
036 import org.kuali.kfs.module.bc.util.BudgetParameterFinder;
037 import org.kuali.kfs.sys.KFSConstants;
038 import org.kuali.kfs.sys.context.SpringContext;
039 import org.kuali.kfs.sys.document.web.struts.FinancialSystemTransactionalDocumentFormBase;
040 import org.kuali.kfs.sys.service.OptionsService;
041 import org.kuali.rice.kns.service.BusinessObjectDictionaryService;
042 import org.kuali.rice.kns.service.PersistenceService;
043 import org.kuali.rice.kns.util.GlobalVariables;
044 import org.kuali.rice.kns.util.KNSConstants;
045 import org.kuali.rice.kns.util.KualiDecimal;
046 import org.kuali.rice.kns.util.KualiInteger;
047 import org.kuali.rice.kns.util.TypedArrayList;
048
049
050 public class BudgetConstructionForm extends FinancialSystemTransactionalDocumentFormBase {
051 protected static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(BudgetConstructionForm.class);
052
053 protected PendingBudgetConstructionGeneralLedger newRevenueLine;
054 protected PendingBudgetConstructionGeneralLedger newExpenditureLine;
055
056 protected static String revenueObjectTypeCodesLookup = SpringContext.getBean(BudgetParameterService.class).getLookupObjectTypes(true);
057 protected static String expenditureObjectTypeCodesLookup = SpringContext.getBean(BudgetParameterService.class).getLookupObjectTypes(false);
058
059 protected boolean closingDocument = false;
060
061 protected boolean hideDetails = false;
062 protected boolean pickListClose = false;
063 protected boolean securityNoAccess = false;
064 protected boolean hideAdjustmentMeasurement = true;
065 protected KualiDecimal revenueAdjustmentAmount;
066 protected KualiDecimal expenditureAdjustmentAmount;
067
068 protected List<BCKeyLabelPair> pushdownLevelKeyLabels;
069 protected List<BCKeyLabelPair> pullupLevelKeyLabels;
070 protected String pushdownKeyCode;
071 protected String pullupKeyCode;
072 protected List<BudgetConstructionAccountOrganizationHierarchy> accountOrgHierLevels;
073
074 // a flag set during initial load to force a benefits calc and 2plg adjustment
075 // at the first instance a BC doc becomes editable - which is detected in action execute
076 protected boolean checkTwoPlugAdjustment = false;
077
078 // holds Salary Setting associated rows as they looked before applying any DB changes from performSalarySetting
079 // this is used to compare before and after state.
080 protected HashMap<String, PendingBudgetConstructionGeneralLedger> preSalarySettingRows;
081
082 // passed parms
083 protected String backLocation;
084 protected String returnAnchor;
085 protected String returnFormKey;
086 protected Integer universityFiscalYear;
087 protected String chartOfAccountsCode;
088 protected String accountNumber;
089 protected String subAccountNumber;
090 protected boolean pickListMode;
091 protected boolean accountReportsExist;
092 protected boolean mainWindow = false;
093
094 // holds anchor value to return to when doing doing balance inquiry
095 // it is only set when setting up to do balance inquiry and reset in refresh
096 protected String balanceInquiryReturnAnchor;
097
098 public BudgetConstructionForm() {
099 super();
100
101 // create objects used to hold data filled later either from this.populate or Action.loadDocument
102 this.setNewExpenditureLine(new PendingBudgetConstructionGeneralLedger());
103 this.setNewRevenueLine(new PendingBudgetConstructionGeneralLedger());
104 this.setAccountOrgHierLevels(new TypedArrayList(BudgetConstructionAccountOrganizationHierarchy.class));
105 this.setPullupLevelKeyLabels(new TypedArrayList(BCKeyLabelPair.class));
106 this.setPushdownLevelKeyLabels(new TypedArrayList(BCKeyLabelPair.class));
107
108 LOG.debug("creating BudgetConstructionForm");
109 }
110
111 @Override
112 protected String getDefaultDocumentTypeName() {
113 return BCConstants.BUDGET_CONSTRUCTION_DOCUMENT_NAME;
114 }
115
116 /**
117 * calls super.populate, then populates revenue and expenditure lines
118 *
119 * @see org.kuali.rice.kns.web.struts.form.KualiDocumentFormBase#populate(javax.servlet.http.HttpServletRequest)
120 */
121 @Override
122 public void populate(HttpServletRequest request) {
123
124 super.populate(request);
125 String methodToCall = this.getMethodToCall();
126
127 // now run through PBGL rev and exp lines
128 BudgetConstructionDocument bcDoc = this.getBudgetConstructionDocument();
129 if (StringUtils.isNotBlank(methodToCall)) {
130 if (methodToCall.equals(BCConstants.INSERT_REVENUE_LINE_METHOD)) {
131 PendingBudgetConstructionGeneralLedger revLine = getNewRevenueLine();
132
133 // do uppercase on added lines only, since users can only update amounts on existing lines
134 // this should only affect the line since the DD has auto-update=false on refs and collections
135 // and only affect fields where xml attribute has forceUppercase="true"
136 SpringContext.getBean(BusinessObjectDictionaryService.class).performForceUppercase(revLine);
137
138 populateRevenueLine(bcDoc, this.getNewRevenueLine());
139
140 }
141 else {
142 this.populatePBGLLine(this.getNewRevenueLine());
143 }
144
145 if (methodToCall.equals(BCConstants.INSERT_EXPENDITURE_LINE_METHOD)) {
146 PendingBudgetConstructionGeneralLedger expLine = getNewExpenditureLine();
147
148 // do uppercase on added lines only, since users can only update amounts on existing lines
149 // this should only affect the line since the DD has auto-update=false on refs and collections
150 // and only affect fields where xml attribute has forceUppercase="true"
151 SpringContext.getBean(BusinessObjectDictionaryService.class).performForceUppercase(expLine);
152
153 populateExpenditureLine(bcDoc, this.getNewExpenditureLine());
154
155 }
156 else {
157 this.populatePBGLLine(this.getNewExpenditureLine());
158 }
159
160 // this is needed to retrieve ref objects, esp budgetConstructionMonthly
161 populatePBGLLines();
162
163 setDocTypeName(discoverDocumentTypeName());
164
165 }
166
167 }
168
169 /**
170 * Sets the persisted request amount to the actual request amount. This is normally used right after a save to the DB If
171 * initSalarySetting is true, this also scrapes the current set of Salary Setting lines, including any 2PLG line into
172 * preSalarySettingRows. preSalarySettingRows is used after return from Salary Setting to allow detection of any changes
173 *
174 * @param initSalarySetting
175 */
176 public void initializePersistedRequestAmounts(boolean initSalarySetting) {
177
178 if (initSalarySetting) {
179 this.setPreSalarySettingRows(new HashMap<String, PendingBudgetConstructionGeneralLedger>());
180 }
181
182 BudgetConstructionDocument bcDoc = this.getBudgetConstructionDocument();
183
184 Iterator revenueLines = bcDoc.getPendingBudgetConstructionGeneralLedgerRevenueLines().iterator();
185 while (revenueLines.hasNext()) {
186 PendingBudgetConstructionGeneralLedger revenueLine = (PendingBudgetConstructionGeneralLedger) revenueLines.next();
187 revenueLine.setPersistedAccountLineAnnualBalanceAmount(revenueLine.getAccountLineAnnualBalanceAmount());
188 }
189 Iterator expenditureLines = bcDoc.getPendingBudgetConstructionGeneralLedgerExpenditureLines().iterator();
190 while (expenditureLines.hasNext()) {
191 PendingBudgetConstructionGeneralLedger expenditureLine = (PendingBudgetConstructionGeneralLedger) expenditureLines.next();
192 expenditureLine.setPersistedAccountLineAnnualBalanceAmount(expenditureLine.getAccountLineAnnualBalanceAmount());
193
194 if (initSalarySetting) {
195 if ((expenditureLine.getLaborObject() != null && expenditureLine.getLaborObject().isDetailPositionRequiredIndicator()) || expenditureLine.getFinancialObjectCode().equalsIgnoreCase(KFSConstants.BudgetConstructionConstants.OBJECT_CODE_2PLG)) {
196 this.getPreSalarySettingRows().put(expenditureLine.getFinancialObjectCode() + expenditureLine.getFinancialSubObjectCode(), expenditureLine);
197 }
198 }
199 }
200 }
201
202 /**
203 * Sets the persisted request amount to the actual request amount. This is normally used right after a save to the DB.
204 */
205 public void initializePersistedRequestAmounts() {
206
207 this.initializePersistedRequestAmounts(false);
208 }
209
210 /**
211 * Populates the push or pull selection lists displayed in the drop down controls used by the pullup or pushdown actions. The
212 * population considers the current level of the document and the user's BudgetConstructionDocument type approvals setup in
213 * WorkFlow.
214 *
215 * @param bcDoc
216 * @param levels
217 * @param isPull
218 */
219 public void populatePushPullLevelKeyLabels(BudgetConstructionDocument bcDoc, List<BudgetConstructionAccountOrganizationHierarchy> levels, boolean isPull) {
220
221 if (!levels.isEmpty()) {
222 // sanity check
223 if (bcDoc.getOrganizationLevelCode() >= 0 && bcDoc.getOrganizationLevelCode() < levels.size()) {
224 if (isPull) {
225 pullupLevelKeyLabels.clear();
226
227 // get the keys to search
228 HashMap<String, BudgetConstructionAccountOrganizationHierarchy> rvwHierMap = new HashMap<String, BudgetConstructionAccountOrganizationHierarchy>();
229
230 // start at level above current level and get any levels where the user is an approver
231 for (int i = (bcDoc.getOrganizationLevelCode() + 1); i < levels.size(); i++) {
232 BudgetConstructionAccountOrganizationHierarchy rvwHier = levels.get(i);
233 rvwHierMap.put(rvwHier.getOrganizationChartOfAccountsCode() + rvwHier.getOrganizationCode(), rvwHier);
234 }
235 if (!rvwHierMap.isEmpty()) {
236 try {
237 List<Organization> povOrgs = SpringContext.getBean(BudgetConstructionProcessorService.class).getProcessorOrgs(GlobalVariables.getUserSession().getPerson());
238 if (!povOrgs.isEmpty()) {
239 for (Organization povOrg : povOrgs) {
240 if (rvwHierMap.containsKey(povOrg.getChartOfAccountsCode() + povOrg.getOrganizationCode())) {
241 BudgetConstructionAccountOrganizationHierarchy level = rvwHierMap.get(povOrg.getChartOfAccountsCode() + povOrg.getOrganizationCode());
242 SpringContext.getBean(PersistenceService.class).retrieveReferenceObject(level, "organization");
243 pullupLevelKeyLabels.add(new BCKeyLabelPair(level.getOrganizationLevelCode().toString(), level.getOrganizationLevelCode().toString() + ":" + level.getOrganizationChartOfAccountsCode() + "-" + level.getOrganizationCode() + " " + level.getOrganization().getOrganizationName()));
244 }
245 }
246 }
247 }
248 catch (Exception e) {
249 // any exception just leaves an empty pullup list
250 }
251 }
252 }
253 else {
254 pushdownLevelKeyLabels.clear();
255
256 // start at current doc level and add all that are below current level
257 for (int i = (bcDoc.getOrganizationLevelCode() - 1); i >= 0; i--) {
258 BudgetConstructionAccountOrganizationHierarchy level = levels.get(i);
259 SpringContext.getBean(PersistenceService.class).retrieveReferenceObject(level, "organization");
260 if (level.getOrganizationLevelCode() == 0) {
261 // push list level zero case needs special desc
262 pushdownLevelKeyLabels.add(new BCKeyLabelPair(level.getOrganizationLevelCode().toString(), level.getOrganizationLevelCode().toString() + ":" + level.getOrganizationChartOfAccountsCode() + "-" + level.getOrganizationCode() + " " + "Fiscal Officer Access Level"));
263 }
264 else {
265 pushdownLevelKeyLabels.add(new BCKeyLabelPair(level.getOrganizationLevelCode().toString(), level.getOrganizationLevelCode().toString() + ":" + level.getOrganizationChartOfAccountsCode() + "-" + level.getOrganizationCode() + " " + level.getOrganization().getOrganizationName()));
266 }
267 }
268 }
269 }
270 }
271 }
272
273
274 /**
275 * This method iterates over all of the rev and exp lines in the BC document. This is called to refresh ref objects for use by
276 * validation
277 */
278 public void populatePBGLLines() {
279
280 BudgetConstructionDocument bcDoc = this.getBudgetConstructionDocument();
281 bcDoc.zeroTotals();
282
283 Iterator revenueLines = bcDoc.getPendingBudgetConstructionGeneralLedgerRevenueLines().iterator();
284 while (revenueLines.hasNext()) {
285 PendingBudgetConstructionGeneralLedger revenueLine = (PendingBudgetConstructionGeneralLedger) revenueLines.next();
286 this.populateRevenueLine(bcDoc, revenueLine);
287 }
288 Iterator expenditureLines = bcDoc.getPendingBudgetConstructionGeneralLedgerExpenditureLines().iterator();
289 while (expenditureLines.hasNext()) {
290 PendingBudgetConstructionGeneralLedger expenditureLine = (PendingBudgetConstructionGeneralLedger) expenditureLines.next();
291 this.populateExpenditureLine(bcDoc, expenditureLine);
292 }
293 }
294
295 /**
296 * Populates a PBGL revenue line bo using values from the struts form. This is in place to make sure that all of the composite
297 * key objects have the correct values in them. This also adds line amounts to the revenue totals.
298 *
299 * @param revenueLine
300 */
301 public void populateRevenueLine(BudgetConstructionDocument bcDoc, PendingBudgetConstructionGeneralLedger revenueLine) {
302 populatePBGLLine(revenueLine);
303 if (revenueLine.getFinancialBeginningBalanceLineAmount() != null) {
304 bcDoc.setRevenueFinancialBeginningBalanceLineAmountTotal(bcDoc.getRevenueFinancialBeginningBalanceLineAmountTotal().add(revenueLine.getFinancialBeginningBalanceLineAmount()));
305 }
306 if (revenueLine.getAccountLineAnnualBalanceAmount() != null) {
307 bcDoc.setRevenueAccountLineAnnualBalanceAmountTotal(bcDoc.getRevenueAccountLineAnnualBalanceAmountTotal().add(revenueLine.getAccountLineAnnualBalanceAmount()));
308 }
309 }
310
311 /**
312 * Populates a PBGL expenditure line bo using values from the struts form. This is in place to make sure that all of the
313 * composite key objects have the correct values in them. This also adds line amounts to the expenditure totals.
314 *
315 * @param expenditureLine
316 */
317 public void populateExpenditureLine(BudgetConstructionDocument bcDoc, PendingBudgetConstructionGeneralLedger expenditureLine) {
318 populatePBGLLine(expenditureLine);
319 if (expenditureLine.getFinancialBeginningBalanceLineAmount() != null) {
320 bcDoc.setExpenditureFinancialBeginningBalanceLineAmountTotal(bcDoc.getExpenditureFinancialBeginningBalanceLineAmountTotal().add(expenditureLine.getFinancialBeginningBalanceLineAmount()));
321 }
322 if (expenditureLine.getAccountLineAnnualBalanceAmount() != null) {
323 bcDoc.setExpenditureAccountLineAnnualBalanceAmountTotal(bcDoc.getExpenditureAccountLineAnnualBalanceAmountTotal().add(expenditureLine.getAccountLineAnnualBalanceAmount()));
324 }
325 if ((expenditureLine.getFinancialObjectCode() != null) && (expenditureLine.getFinancialObjectCode().contentEquals(KFSConstants.BudgetConstructionConstants.OBJECT_CODE_2PLG))) {
326 // 2plg record exists
327 bcDoc.setContainsTwoPlug(true);
328 }
329 }
330
331 /**
332 * Populates the dependent fields of objects contained within the PBGL line
333 *
334 * @param line
335 */
336 protected void populatePBGLLine(PendingBudgetConstructionGeneralLedger line) {
337
338 SpringContext.getBean(BudgetDocumentService.class).populatePBGLLine(line);
339
340 // // final List REFRESH_FIELDS = Collections.unmodifiableList(Arrays.asList(new String[] { "financialObject",
341 // // "financialSubObject", "laborObject", "budgetConstructionMonthly"}));
342 // final List REFRESH_FIELDS;
343 // if (StringUtils.isNotBlank(line.getFinancialSubObjectCode())) {
344 // REFRESH_FIELDS = Collections.unmodifiableList(Arrays.asList(new String[] { KFSPropertyConstants.FINANCIAL_OBJECT,
345 // KFSPropertyConstants.FINANCIAL_SUB_OBJECT, BCPropertyConstants.BUDGET_CONSTRUCTION_MONTHLY }));
346 // }
347 // else {
348 // REFRESH_FIELDS = Collections.unmodifiableList(Arrays.asList(new String[] { KFSPropertyConstants.FINANCIAL_OBJECT,
349 // BCPropertyConstants.BUDGET_CONSTRUCTION_MONTHLY }));
350 // }
351 // // SpringContext.getBean(PersistenceService.class).retrieveReferenceObjects(line, REFRESH_FIELDS);
352 // SpringContext.getBean(PersistenceService.class).retrieveReferenceObjects(line, REFRESH_FIELDS);
353
354 }
355
356 /**
357 * Gets the budgetConstructionDocument
358 *
359 * @return
360 */
361 public BudgetConstructionDocument getBudgetConstructionDocument() {
362 return (BudgetConstructionDocument) getDocument();
363 }
364
365 /**
366 * Sets the budgetConstructionDocument
367 *
368 * @param budgetConstructionDocument
369 */
370 public void setBudgetConstructionDocument(BudgetConstructionDocument budgetConstructionDocument) {
371 setDocument(budgetConstructionDocument);
372 }
373
374 /**
375 * Gets the newExpenditureLine attribute.
376 *
377 * @return Returns the newExpenditureLine.
378 */
379 public PendingBudgetConstructionGeneralLedger getNewExpenditureLine() {
380 return newExpenditureLine;
381 }
382
383 /**
384 * Sets the newExpenditureLine attribute value.
385 *
386 * @param newExpenditureLine The newExpenditureLine to set.
387 */
388 public void setNewExpenditureLine(PendingBudgetConstructionGeneralLedger newExpenditureLine) {
389 this.newExpenditureLine = newExpenditureLine;
390 }
391
392 /**
393 * Gets the newRevenueLine attribute.
394 *
395 * @return Returns the newRevenueLine.
396 */
397 public PendingBudgetConstructionGeneralLedger getNewRevenueLine() {
398 return newRevenueLine;
399 }
400
401 /**
402 * Sets the newRevenueLine attribute value.
403 *
404 * @param newRevenueLine The newRevenueLine to set.
405 */
406 public void setNewRevenueLine(PendingBudgetConstructionGeneralLedger newRevenueLine) {
407 this.newRevenueLine = newRevenueLine;
408 }
409
410 /**
411 * Sets the defaults for fields not setable by the user for added lines. This assumes the document has been explictly loaded and
412 * contains primary and candidate key values as in BudgetConstructionAction.loadDocument() or that populate reloads the values
413 * from the JSP.
414 *
415 * @param line
416 * @param isRevenue
417 */
418 public void initNewLine(PendingBudgetConstructionGeneralLedger line, boolean isRevenue) {
419
420 OptionsService optionsService = SpringContext.getBean(OptionsService.class);
421 BudgetConstructionDocument tdoc = this.getBudgetConstructionDocument();
422
423 line.setDocumentNumber(tdoc.getDocumentNumber());
424 line.setUniversityFiscalYear(tdoc.getUniversityFiscalYear());
425 line.setChartOfAccountsCode(tdoc.getChartOfAccountsCode());
426 line.setAccountNumber(tdoc.getAccountNumber());
427 line.setSubAccountNumber(tdoc.getSubAccountNumber());
428 line.setFinancialBalanceTypeCode(optionsService.getOptions(tdoc.getUniversityFiscalYear()).getBaseBudgetFinancialBalanceTypeCd());
429 line.setFinancialBeginningBalanceLineAmount(KualiInteger.ZERO);
430 line.setAccountLineAnnualBalanceAmount(KualiInteger.ZERO);
431
432 if (isRevenue) {
433 line.setFinancialObjectTypeCode(optionsService.getOptions(tdoc.getUniversityFiscalYear()).getFinObjectTypeIncomecashCode());
434 }
435 else {
436 line.setFinancialObjectTypeCode(optionsService.getOptions(tdoc.getUniversityFiscalYear()).getFinObjTypeExpenditureexpCd());
437 }
438
439 }
440
441 /**
442 * Gets getBudgetConstructionDocument().isBudgetableDocument attribute.
443 *
444 * @return Returns getBudgetConstructionDocument().isBudgetableDocument.
445 */
446 public boolean isBudgetableDocument() {
447 return this.getBudgetConstructionDocument().isBudgetableDocument();
448 }
449
450 /**
451 * Gets the hideDetails attribute.
452 *
453 * @return Returns the hideDetails.
454 */
455 public boolean isHideDetails() {
456 return hideDetails;
457 }
458
459 /**
460 * @return hideDetails attribute
461 * @see #isHideDetails()
462 */
463 public boolean getHideDetails() {
464 return isHideDetails();
465 }
466
467 /**
468 * Sets the hideDetails attribute value.
469 *
470 * @param hideDetails The hideDetails to set.
471 */
472 public void setHideDetails(boolean hideDetails) {
473 this.hideDetails = hideDetails;
474 }
475
476 /**
477 * Gets the accountNumber attribute.
478 *
479 * @return Returns the accountNumber.
480 */
481 public String getAccountNumber() {
482 return accountNumber;
483 }
484
485 /**
486 * Sets the accountNumber attribute value.
487 *
488 * @param accountNumber The accountNumber to set.
489 */
490 public void setAccountNumber(String accountNumber) {
491 this.accountNumber = accountNumber;
492 }
493
494 /**
495 * Gets the chartOfAccountsCode attribute.
496 *
497 * @return Returns the chartOfAccountsCode.
498 */
499 public String getChartOfAccountsCode() {
500 return chartOfAccountsCode;
501 }
502
503 /**
504 * Sets the chartOfAccountsCode attribute value.
505 *
506 * @param chartOfAccountsCode The chartOfAccountsCode to set.
507 */
508 public void setChartOfAccountsCode(String chartOfAccountsCode) {
509 this.chartOfAccountsCode = chartOfAccountsCode;
510 }
511
512 /**
513 * Gets the subAccountNumber attribute.
514 *
515 * @return Returns the subAccountNumber.
516 */
517 public String getSubAccountNumber() {
518 return subAccountNumber;
519 }
520
521 /**
522 * Sets the subAccountNumber attribute value.
523 *
524 * @param subAccountNumber The subAccountNumber to set.
525 */
526 public void setSubAccountNumber(String subAccountNumber) {
527 this.subAccountNumber = subAccountNumber;
528 }
529
530 /**
531 * Gets the universityFiscalYear attribute.
532 *
533 * @return Returns the universityFiscalYear.
534 */
535 public Integer getUniversityFiscalYear() {
536 return universityFiscalYear;
537 }
538
539 /**
540 * Sets the universityFiscalYear attribute value.
541 *
542 * @param universityFiscalYear The universityFiscalYear to set.
543 */
544 public void setUniversityFiscalYear(Integer universityFiscalYear) {
545 this.universityFiscalYear = universityFiscalYear;
546 }
547
548 /**
549 * Gets the hideAdjustmentMeasurement attribute.
550 *
551 * @return Returns the hideAdjustmentMeasurement.
552 */
553 public boolean isHideAdjustmentMeasurement() {
554 return hideAdjustmentMeasurement;
555 }
556
557 /**
558 * Sets the hideAdjustmentMeasurement attribute value.
559 *
560 * @param hideAdjustmentMeasurement The hideAdjustmentMeasurement to set.
561 */
562 public void setHideAdjustmentMeasurement(boolean hideAdjustmentMeasurement) {
563 this.hideAdjustmentMeasurement = hideAdjustmentMeasurement;
564 }
565
566 /**
567 * Gets the revenueAdjustmentAmount attribute.
568 *
569 * @return Returns the revenueAdjustmentAmount.
570 */
571 public KualiDecimal getRevenueAdjustmentAmount() {
572 return revenueAdjustmentAmount;
573 }
574
575 /**
576 * Sets the revenueAdjustmentAmount attribute value.
577 *
578 * @param revenueAdjustmentAmount The revenueAdjustmentAmount to set.
579 */
580 public void setRevenueAdjustmentAmount(KualiDecimal adjustmentAmount) {
581 this.revenueAdjustmentAmount = adjustmentAmount;
582 }
583
584 /**
585 * Gets the expenditureAdjustmentAmount attribute.
586 *
587 * @return Returns the expenditureAdjustmentAmount.
588 */
589 public KualiDecimal getExpenditureAdjustmentAmount() {
590 return expenditureAdjustmentAmount;
591 }
592
593 /**
594 * Sets the expenditureAdjustmentAmount attribute value.
595 *
596 * @param expenditureAdjustmentAmount The expenditureAdjustmentAmount to set.
597 */
598 public void setExpenditureAdjustmentAmount(KualiDecimal expenditureAdjustmentAmount) {
599 this.expenditureAdjustmentAmount = expenditureAdjustmentAmount;
600 }
601
602 /**
603 * Gets the benefitsCalculationDisabled attribute.
604 *
605 * @return Returns the benefitsCalculationDisabled.
606 */
607 public boolean isBenefitsCalculationDisabled() {
608 return SpringContext.getBean(BenefitsCalculationService.class).isBenefitsCalculationDisabled();
609 }
610
611 /**
612 * Gets the salarySettingDisabled attribute.
613 *
614 * @return Returns the salarySettingDisabled.
615 */
616 public boolean isSalarySettingDisabled() {
617 return SpringContext.getBean(SalarySettingService.class).isSalarySettingDisabled();
618 }
619
620 /**
621 * Gets the pickListMode attribute.
622 *
623 * @return Returns the pickListMode.
624 */
625 public boolean isPickListMode() {
626 return pickListMode;
627 }
628
629 /**
630 * Sets the pickListMode attribute value.
631 *
632 * @param pickListMode The pickListMode to set.
633 */
634 public void setPickListMode(boolean pickListMode) {
635 this.pickListMode = pickListMode;
636 }
637
638 /**
639 * Gets the accountReportsExist attribute.
640 *
641 * @return Returns the accountReportsExist.
642 */
643 public boolean isAccountReportsExist() {
644 accountReportsExist = false;
645
646 if (this.getBudgetConstructionDocument().getDocumentNumber() != null) {
647 if (SpringContext.getBean(BudgetDocumentService.class).isAccountReportsExist(this.getChartOfAccountsCode(), this.getAccountNumber())) {
648 accountReportsExist = true;
649 }
650 }
651 return accountReportsExist;
652 }
653
654 /**
655 * Sets the accountReportsExist attribute value.
656 *
657 * @param accountReportsExist The accountReportsExist to set.
658 */
659 public void setAccountReportsExist(boolean accountReportsExist) {
660 this.accountReportsExist = accountReportsExist;
661 }
662
663 /**
664 * Gets the pickListClose attribute.
665 *
666 * @return Returns the pickListClose.
667 */
668 public boolean isPickListClose() {
669 return pickListClose;
670 }
671
672 /**
673 * Sets the pickListClose attribute value.
674 *
675 * @param pickListClose The pickListClose to set.
676 */
677 public void setPickListClose(boolean pickListClose) {
678 this.pickListClose = pickListClose;
679 }
680
681 /**
682 * Gets the securityNoAccess attribute.
683 *
684 * @return Returns the securityNoAccess.
685 */
686 public boolean isSecurityNoAccess() {
687 return securityNoAccess;
688 }
689
690 /**
691 * Sets the securityNoAccess attribute value.
692 *
693 * @param securityNoAccess The securityNoAccess to set.
694 */
695 public void setSecurityNoAccess(boolean securityNoAccess) {
696 this.securityNoAccess = securityNoAccess;
697 }
698
699 /**
700 * Gets the backLocation attribute.
701 *
702 * @return Returns the backLocation.
703 */
704 public String getBackLocation() {
705 return backLocation;
706 }
707
708 /**
709 * Sets the backLocation attribute value.
710 *
711 * @param backLocation The backLocation to set.
712 */
713 public void setBackLocation(String backLocation) {
714 this.backLocation = backLocation;
715 }
716
717 /**
718 * Gets the returnAnchor attribute.
719 *
720 * @return Returns the returnAnchor.
721 */
722 public String getReturnAnchor() {
723 return returnAnchor;
724 }
725
726 /**
727 * Sets the returnAnchor attribute value.
728 *
729 * @param returnAnchor The returnAnchor to set.
730 */
731 public void setReturnAnchor(String returnAnchor) {
732 this.returnAnchor = returnAnchor;
733 }
734
735 /**
736 * Gets the returnFormKey attribute.
737 *
738 * @return Returns the returnFormKey.
739 */
740 public String getReturnFormKey() {
741 return returnFormKey;
742 }
743
744 /**
745 * Sets the returnFormKey attribute value.
746 *
747 * @param returnFormKey The returnFormKey to set.
748 */
749 public void setReturnFormKey(String returnFormKey) {
750 this.returnFormKey = returnFormKey;
751 }
752
753 /**
754 * Gets the balanceInquiryReturnAnchor attribute.
755 *
756 * @return Returns the balanceInquiryReturnAnchor.
757 */
758 public String getBalanceInquiryReturnAnchor() {
759 return balanceInquiryReturnAnchor;
760 }
761
762 /**
763 * Sets the balanceInquiryReturnAnchor attribute value.
764 *
765 * @param balanceInquiryReturnAnchor The balanceInquiryReturnAnchor to set.
766 */
767 public void setBalanceInquiryReturnAnchor(String balanceInquiryReturnAnchor) {
768 this.balanceInquiryReturnAnchor = balanceInquiryReturnAnchor;
769 }
770
771 /**
772 * Gets the pullupKeyCode attribute.
773 *
774 * @return Returns the pullupKeyCode.
775 */
776 public String getPullupKeyCode() {
777 return pullupKeyCode;
778 }
779
780 /**
781 * Sets the pullupKeyCode attribute value.
782 *
783 * @param pullupKeyCode The pullupKeyCode to set.
784 */
785 public void setPullupKeyCode(String pullupKeyCode) {
786 this.pullupKeyCode = pullupKeyCode;
787 }
788
789 /**
790 * Gets the pullupLevelKeyLabels attribute.
791 *
792 * @return Returns the pullupLevelKeyLabels.
793 */
794 public List<BCKeyLabelPair> getPullupLevelKeyLabels() {
795 return pullupLevelKeyLabels;
796 }
797
798 /**
799 * Sets the pullupLevelKeyLabels attribute value.
800 *
801 * @param pullupLevelKeyLabels The pullupLevelKeyLabels to set.
802 */
803 public void setPullupLevelKeyLabels(List<BCKeyLabelPair> pullupLevelKeyLabels) {
804 this.pullupLevelKeyLabels = pullupLevelKeyLabels;
805 }
806
807 /**
808 * Gets the accountOrgHierLevels attribute.
809 *
810 * @return Returns the accountOrgHierLevels.
811 */
812 public List<BudgetConstructionAccountOrganizationHierarchy> getAccountOrgHierLevels() {
813 return this.accountOrgHierLevels;
814 }
815
816 /**
817 * Sets the accountOrgHierLevels attribute value.
818 *
819 * @param accountOrgHierLevels The accountOrgHierLevels to set.
820 */
821 public void setAccountOrgHierLevels(List<BudgetConstructionAccountOrganizationHierarchy> accountOrgHierLevels) {
822 this.accountOrgHierLevels = accountOrgHierLevels;
823 }
824
825 /**
826 * Gets the pushdownKeyCode attribute.
827 *
828 * @return Returns the pushdownKeyCode.
829 */
830 public String getPushdownKeyCode() {
831 return pushdownKeyCode;
832 }
833
834 /**
835 * Sets the pushdownKeyCode attribute value.
836 *
837 * @param pushdownKeyCode The pushdownKeyCode to set.
838 */
839 public void setPushdownKeyCode(String pushdownKeyCode) {
840 this.pushdownKeyCode = pushdownKeyCode;
841 }
842
843 /**
844 * Gets the pushdownLevelKeyLabels attribute.
845 *
846 * @return Returns the pushdownLevelKeyLabels.
847 */
848 public List<BCKeyLabelPair> getPushdownLevelKeyLabels() {
849 return pushdownLevelKeyLabels;
850 }
851
852 /**
853 * Sets the pushdownLevelKeyLabels attribute value.
854 *
855 * @param pushdownLevelKeyLabels The pushdownLevelKeyLabels to set.
856 */
857 public void setPushdownLevelKeyLabels(List<BCKeyLabelPair> pushdownLevelKeyLabels) {
858 this.pushdownLevelKeyLabels = pushdownLevelKeyLabels;
859 }
860
861 /**
862 * Gets the checkTwoPlugAdjustment attribute.
863 *
864 * @return Returns the checkTwoPlugAdjustment.
865 */
866 public boolean isCheckTwoPlugAdjustment() {
867 return checkTwoPlugAdjustment;
868 }
869
870 /**
871 * Sets the checkTwoPlugAdjustment attribute value.
872 *
873 * @param checkTwoPlugAdjustment The checkTwoPlugAdjustment to set.
874 */
875 public void setCheckTwoPlugAdjustment(boolean checkTwoPlugAdjustment) {
876 this.checkTwoPlugAdjustment = checkTwoPlugAdjustment;
877 }
878
879 /**
880 * Gets the preSalarySettingRows attribute.
881 *
882 * @return Returns the preSalarySettingRows.
883 */
884 public HashMap<String, PendingBudgetConstructionGeneralLedger> getPreSalarySettingRows() {
885 return preSalarySettingRows;
886 }
887
888 /**
889 * Sets the preSalarySettingRows attribute value.
890 *
891 * @param preSalarySettingRows The preSalarySettingRows to set.
892 */
893 public void setPreSalarySettingRows(HashMap<String, PendingBudgetConstructionGeneralLedger> preSalarySettingRows) {
894 this.preSalarySettingRows = preSalarySettingRows;
895 }
896
897 /**
898 * Gets the closingDocument attribute.
899 *
900 * @return Returns the closingDocument.
901 */
902 public boolean isClosingDocument() {
903 return closingDocument;
904 }
905
906 /**
907 * Sets the closingDocument attribute value.
908 *
909 * @param closingDocument The closingDocument to set.
910 */
911 public void setClosingDocument(boolean closingDocument) {
912 this.closingDocument = closingDocument;
913 }
914
915 /**
916 * Helper method to check edit mode Map for system view only entry
917 */
918 public boolean isSystemViewOnly() {
919 return getEditingMode().containsKey(BCConstants.EditModes.SYSTEM_VIEW_ONLY);
920 }
921
922 /**
923 * Helper method to check document actions Map for can edit entry
924 */
925 public boolean isEditAllowed() {
926 return getDocumentActions().keySet().contains(KNSConstants.KUALI_ACTION_CAN_EDIT);
927 }
928
929 /**
930 * Gets the mainWindow attribute.
931 *
932 * @return Returns the mainWindow.
933 */
934 public boolean isMainWindow() {
935 return mainWindow;
936 }
937
938 /**
939 * Sets the mainWindow attribute value.
940 *
941 * @param mainWindow The mainWindow to set.
942 */
943 public void setMainWindow(boolean mainWindow) {
944 this.mainWindow = mainWindow;
945 }
946
947 /**
948 * Gets the revenueObjectTypeCodesLookup attribute.
949 * @return Returns the revenueObjectTypeCodesLookup.
950 */
951 public static String getRevenueObjectTypeCodesLookup() {
952 return revenueObjectTypeCodesLookup;
953 }
954
955 /**
956 * Gets the expenditureObjectTypeCodesLookup attribute.
957 * @return Returns the expenditureObjectTypeCodesLookup.
958 */
959 public static String getExpenditureObjectTypeCodesLookup() {
960 return expenditureObjectTypeCodesLookup;
961 }
962 }