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.Arrays;
019 import java.util.Collections;
020 import java.util.List;
021
022 import javax.servlet.http.HttpServletRequest;
023
024 import org.kuali.kfs.coa.service.OrganizationService;
025 import org.kuali.kfs.module.bc.BCConstants;
026 import org.kuali.kfs.module.bc.BCPropertyConstants;
027 import org.kuali.kfs.module.bc.businessobject.BudgetConstructionHeader;
028 import org.kuali.kfs.module.bc.document.service.BudgetConstructionProcessorService;
029 import org.kuali.kfs.module.bc.document.service.BudgetDocumentService;
030 import org.kuali.kfs.module.bc.document.service.SalarySettingService;
031 import org.kuali.kfs.sys.context.SpringContext;
032 import org.kuali.kfs.sys.identity.KfsKimAttributes;
033 import org.kuali.rice.kim.bo.types.dto.AttributeSet;
034 import org.kuali.rice.kim.service.IdentityManagementService;
035 import org.kuali.rice.kns.service.PersistenceService;
036 import org.kuali.rice.kns.util.GlobalVariables;
037
038
039 /**
040 * This class...
041 */
042 public class BudgetConstructionSelectionForm extends BudgetExpansionForm {
043 private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(BudgetConstructionSelectionForm.class);
044
045 private BudgetConstructionHeader budgetConstructionHeader;
046 private boolean hideDetails = false;
047 private boolean accountReportsExist;
048 private boolean rootApprover;
049 private boolean sessionInProgressDetected = false;
050
051 public BudgetConstructionSelectionForm() {
052 super();
053 setBudgetConstructionHeader(new BudgetConstructionHeader());
054 }
055
056 /**
057 * @see org.kuali.rice.kns.web.struts.form.KualiForm#populate(javax.servlet.http.HttpServletRequest)
058 */
059 @Override
060 public void populate(HttpServletRequest request) {
061
062 super.populate(request);
063
064 final List REFRESH_FIELDS = Collections.unmodifiableList(Arrays.asList(new String[] { "chartOfAccounts", "account", "subAccount", "budgetConstructionAccountReports" }));
065 SpringContext.getBean(PersistenceService.class).retrieveReferenceObjects(this.getBudgetConstructionHeader(), REFRESH_FIELDS);
066
067 }
068
069 /**
070 * Gets the budgetConstructionHeader attribute.
071 *
072 * @return Returns the budgetConstructionHeader.
073 */
074 public BudgetConstructionHeader getBudgetConstructionHeader() {
075 return budgetConstructionHeader;
076 }
077
078 /**
079 * Sets the budgetConstructionHeader attribute value.
080 *
081 * @param budgetConstructionHeader The budgetConstructionHeader to set.
082 */
083 public void setBudgetConstructionHeader(BudgetConstructionHeader budgetConstructionHeader) {
084 this.budgetConstructionHeader = budgetConstructionHeader;
085 }
086
087 /**
088 * Gets the hideDetails attribute.
089 *
090 * @return Returns the hideDetails.
091 */
092 public boolean isHideDetails() {
093 return hideDetails;
094 }
095
096 /**
097 * Sets the hideDetails attribute value.
098 *
099 * @param hideDetails The hideDetails to set.
100 */
101 public void setHideDetails(boolean hideDetails) {
102 this.hideDetails = hideDetails;
103 }
104
105 /**
106 * Gets the accountReportsExist attribute.
107 *
108 * @return Returns the accountReportsExist.
109 */
110 public boolean isAccountReportsExist() {
111 accountReportsExist = false;
112
113 if (this.budgetConstructionHeader.getAccountNumber() != null && this.budgetConstructionHeader.getChartOfAccountsCode() != null) {
114 if (SpringContext.getBean(BudgetDocumentService.class).isAccountReportsExist(this.budgetConstructionHeader.getChartOfAccountsCode(), this.budgetConstructionHeader.getAccountNumber())){
115 accountReportsExist = true;
116 }
117 }
118 return accountReportsExist;
119 }
120
121 /**
122 * Sets the accountReportsExist attribute value.
123 *
124 * @param accountReportsExist The accountReportsExist to set.
125 */
126 public void setAccountReportsExist(boolean accountReportsExist) {
127 this.accountReportsExist = accountReportsExist;
128 }
129
130 /**
131 * Gets the salarySettingDisabled attribute.
132 *
133 * @return Returns the salarySettingDisabled.
134 */
135 public boolean isSalarySettingDisabled() {
136 return SpringContext.getBean(SalarySettingService.class).isSalarySettingDisabled();
137 }
138
139 /**
140 * Checks whether the user has permission to do payrate import/export
141 */
142 public boolean getCanPerformPayrateImportExport() {
143 String[] rootOrg = SpringContext.getBean(OrganizationService.class).getRootOrganizationCode();
144 AttributeSet qualification = new AttributeSet();
145 qualification.put(BCPropertyConstants.ORGANIZATION_CHART_OF_ACCOUNTS_CODE, rootOrg[0]);
146 qualification.put(KfsKimAttributes.ORGANIZATION_CODE, rootOrg[1]);
147
148 return SpringContext.getBean(IdentityManagementService.class).isAuthorized(GlobalVariables.getUserSession().getPerson().getPrincipalId(), BCConstants.BUDGET_CONSTRUCTION_NAMESPACE, BCConstants.KimConstants.IMPORT_EXPORT_PAYRATE_PERMISSION_NAME, null, qualification);
149 }
150
151 /**
152 * Gets the sessionInProgressDetected attribute.
153 * @return Returns the sessionInProgressDetected.
154 */
155 public boolean isSessionInProgressDetected() {
156 return sessionInProgressDetected;
157 }
158
159 /**
160 * Sets the sessionInProgressDetected attribute value.
161 * @param sessionInProgressDetected The sessionInProgressDetected to set.
162 */
163 public void setSessionInProgressDetected(boolean sessionInProgressDetected) {
164 this.sessionInProgressDetected = sessionInProgressDetected;
165 }
166
167 }
168