View Javadoc
1   /*
2    * The Kuali Financial System, a comprehensive financial management system for higher education.
3    * 
4    * Copyright 2005-2014 The Kuali Foundation
5    * 
6    * This program is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU Affero General Public License as
8    * published by the Free Software Foundation, either version 3 of the
9    * License, or (at your option) any later version.
10   * 
11   * This program is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU Affero General Public License for more details.
15   * 
16   * You should have received a copy of the GNU Affero General Public License
17   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18   */
19  package org.kuali.kfs.module.cam.document.authorization;
20  
21  import java.util.HashSet;
22  import java.util.Set;
23  
24  import org.kuali.kfs.coa.service.AccountService;
25  import org.kuali.kfs.module.cam.CamsConstants;
26  import org.kuali.kfs.module.cam.CamsPropertyConstants;
27  import org.kuali.kfs.module.cam.businessobject.AssetGlobal;
28  import org.kuali.kfs.module.cam.businessobject.AssetGlobalDetail;
29  import org.kuali.kfs.module.cam.businessobject.AssetPaymentDetail;
30  import org.kuali.kfs.module.cam.document.service.AssetGlobalService;
31  import org.kuali.kfs.sys.KFSConstants;
32  import org.kuali.kfs.sys.KFSPropertyConstants;
33  import org.kuali.kfs.sys.context.SpringContext;
34  import org.kuali.kfs.sys.document.LedgerPostingDocument;
35  import org.kuali.kfs.sys.document.authorization.FinancialSystemMaintenanceDocumentPresentationControllerBase;
36  import org.kuali.kfs.sys.service.impl.KfsParameterConstants;
37  import org.kuali.rice.core.api.parameter.ParameterEvaluator;
38  import org.kuali.rice.core.api.parameter.ParameterEvaluatorService;
39  import org.kuali.rice.kns.datadictionary.MaintainableCollectionDefinition;
40  import org.kuali.rice.kns.document.MaintenanceDocument;
41  import org.kuali.rice.kns.service.MaintenanceDocumentDictionaryService;
42  import org.kuali.rice.krad.bo.BusinessObject;
43  import org.kuali.rice.krad.document.Document;
44  import org.kuali.rice.krad.util.KRADConstants;
45  
46  /**
47   * Presentation Controller for Asset Global Maintenance Documents
48   */
49  public class AssetGlobalPresentationController extends FinancialSystemMaintenanceDocumentPresentationControllerBase {
50  
51      @Override
52      public Set<String> getConditionallyHiddenPropertyNames(BusinessObject businessObject) {
53          Set<String> fields = super.getConditionallyHiddenPropertyNames(businessObject);
54          MaintenanceDocument document = (MaintenanceDocument) businessObject;
55          AssetGlobal assetGlobal = (AssetGlobal) document.getNewMaintainableObject().getBusinessObject();
56          MaintainableCollectionDefinition maintCollDef = SpringContext.getBean(MaintenanceDocumentDictionaryService.class).getMaintainableCollection("AA", "assetPaymentDetails");
57          boolean isAssetSeparate = SpringContext.getBean(AssetGlobalService.class).isAssetSeparate(assetGlobal);
58  
59          if (assetGlobal.isCapitalAssetBuilderOriginIndicator() || isAssetSeparate) {
60              // do not include payment add section within the payment details collection
61              maintCollDef.setIncludeAddLine(false);
62              // No update could be made to payment if it's created from CAB. Here, disable delete button if payment already added into
63              // collection.
64              for (AssetPaymentDetail payment : assetGlobal.getAssetPaymentDetails()) {
65                  payment.setNewCollectionRecord(false);
66              }
67          }
68          else {
69              // conversely allow add during any other case. This is important because the attribute is set on the DD and the DD is
70              // only loaded on project startup. Hence setting is important to avoid state related bugs
71              maintCollDef.setIncludeAddLine(true);
72          }
73  
74          AssetGlobalService assetGlobalService = SpringContext.getBean(AssetGlobalService.class);
75          if (!assetGlobalService.isAssetSeparateByPayment(assetGlobal)) {
76              // Show payment sequence number field only if a separate by payment was selected
77              fields.add(CamsPropertyConstants.AssetGlobal.SEPERATE_SOURCE_PAYMENT_SEQUENCE_NUMBER);
78          }
79  
80          if (!isAssetSeparate) {
81              fields.addAll(getAssetGlobalLocationHiddenFields(assetGlobal));
82  
83              if (assetGlobalService.existsInGroup(assetGlobalService.getNonNewAcquisitionCodeGroup(), assetGlobal.getAcquisitionTypeCode())) {
84                  // Fields in the add section
85                  fields.add(KFSConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "." + CamsPropertyConstants.AssetPaymentDetail.DOCUMENT_POSTING_DATE);
86                  fields.add(KFSConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "." + CamsPropertyConstants.AssetPaymentDetail.DOCUMENT_NUMBER);
87                  fields.add(KFSConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "." + CamsPropertyConstants.AssetPaymentDetail.DOCUMENT_TYPE_CODE);
88                  fields.add(KFSConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "." + CamsPropertyConstants.AssetPaymentDetail.ORIGINATION_CODE);
89  
90                  // Hiding some fields when the status of the document is not final.
91                  if (!document.getDocumentHeader().getWorkflowDocument().isFinal()) {
92                      fields.addAll(getAssetGlobalPaymentsHiddenFields(assetGlobal));
93                  }
94              }
95          }
96          // if no separate asset is added, hide the button
97          if (isAssetSeparate && (assetGlobal.getAssetSharedDetails().isEmpty() || assetGlobal.getAssetSharedDetails().get(0).getAssetGlobalUniqueDetails().isEmpty())) {
98              fields.add("calculateEqualSourceAmountsButton");
99          }
100 
101 
102 
103         return fields;
104     }
105 
106     @Override
107     public Set<String> getConditionallyReadOnlyPropertyNames(MaintenanceDocument document) {
108         Set<String> fields = super.getConditionallyReadOnlyPropertyNames(document);
109 
110         AssetGlobal assetGlobal = (AssetGlobal) document.getNewMaintainableObject().getBusinessObject();
111 
112         // "Asset Separate" document functionality
113         if (SpringContext.getBean(AssetGlobalService.class).isAssetSeparate(assetGlobal)) {
114             fields.addAll(getAssetGlobalDetailsReadOnlyFields());
115             fields.addAll(getAssetGlobalPaymentsReadOnlyFields(assetGlobal));
116         }
117         else if (assetGlobal.isCapitalAssetBuilderOriginIndicator()) {
118             // If asset global document is created from CAB, disallow add payment to collection.
119             fields.addAll(getAssetGlobalPaymentsReadOnlyFields(assetGlobal));
120         }
121 
122         // if accounts can't cross charts, then add the extra chartOfAccountsCode field to be displayed readOnly
123         if (!SpringContext.getBean(AccountService.class).accountsCanCrossCharts()) {
124             String COA_CODE_NAME = KRADConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "." + KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE;
125             fields.add(COA_CODE_NAME);
126         }
127 
128         return fields;
129     }
130 
131     @Override
132     public Set<String> getConditionallyHiddenSectionIds(BusinessObject businessObject) {
133         Set<String> fields = super.getConditionallyHiddenSectionIds(businessObject);
134 
135         MaintenanceDocument document = (MaintenanceDocument) businessObject;
136         AssetGlobal assetGlobal = (AssetGlobal) document.getNewMaintainableObject().getBusinessObject();
137 
138         // check account period selection is enabled
139         // PERFORMANCE: cache this setting - move call to service
140         // check accounting period is enabled for doc type in system parameter
141         String docType = document.getDocumentHeader().getWorkflowDocument().getDocumentTypeName();
142         // PERFORMANCE: cache this setting - move call to service
143         ParameterEvaluator evaluator = getParameterEvaluatorService().getParameterEvaluator(KFSConstants.CoreModuleNamespaces.KFS, KfsParameterConstants.YEAR_END_ACCOUNTING_PERIOD_PARAMETER_NAMES.DETAIL_PARAMETER_TYPE, KfsParameterConstants.YEAR_END_ACCOUNTING_PERIOD_PARAMETER_NAMES.FISCAL_PERIOD_SELECTION_DOCUMENT_TYPES, docType);
144         if (!evaluator.evaluationSucceeds()) {
145             fields.add(KFSConstants.ACCOUNTING_PERIOD_TAB_ID);
146         }
147         
148         // hide "Asset Information", "Recalculate Total Amount" tabs if not "Asset Separate" doc
149         if (!SpringContext.getBean(AssetGlobalService.class).isAssetSeparate(assetGlobal)) {
150             fields.add(CamsConstants.AssetGlobal.SECTION_ID_ASSET_INFORMATION);
151             fields.add(CamsConstants.AssetGlobal.SECTION_ID_RECALCULATE_SEPARATE_SOURCE_AMOUNT);
152         }
153 
154         return fields;
155     }
156 
157     /**
158      * @param assetGlobal
159      * @return Asset Location fields with index that are present on AssetGlobal. Includes add line. Useful for hiding them.
160      */
161     protected Set<String> getAssetGlobalLocationHiddenFields(AssetGlobal assetGlobal) {
162         Set<String> fields = new HashSet<String>();
163 
164         // hide it for the add line
165         int i = 0;
166         for (AssetGlobalDetail assetSharedDetail : assetGlobal.getAssetSharedDetails()) {
167             fields.add(KFSConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "." + CamsPropertyConstants.AssetGlobalDetail.REPRESENTATIVE_UNIVERSAL_IDENTIFIER); // representativeUniversalIdentifier
168             fields.add(KFSConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "." + CamsPropertyConstants.AssetGlobalDetail.CAPITAL_ASSET_TYPE_CODE); // capitalAssetTypeCode
169             fields.add(KFSConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "." + CamsPropertyConstants.AssetGlobalDetail.CAPITAL_ASSET_DESCRIPTION); // capitalAssetDescription
170             fields.add(KFSConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "." + CamsPropertyConstants.AssetGlobalDetail.MANUFACTURER_NAME); // manufacturerName
171             fields.add(KFSConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "." + CamsPropertyConstants.AssetGlobalDetail.ORGANIZATION_TEXT); // organizationText
172             fields.add(KFSConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "." + CamsPropertyConstants.AssetGlobalDetail.MANUFACTURER_MODEL_NUMBER); // manufacturerModelNumber
173             fields.add(KFSConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "." + CamsPropertyConstants.AssetGlobalDetail.SEPARATE_SOURCE_AMOUNT); // separateSourceAmount
174             // (Long)
175 
176             // hide it for the existing lines
177             int j = 0;
178             for (AssetGlobalDetail assetGlobalUniqueDetail : assetSharedDetail.getAssetGlobalUniqueDetails()) {
179                 fields.add(CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "[" + j + "]." + CamsPropertyConstants.AssetGlobalDetail.REPRESENTATIVE_UNIVERSAL_IDENTIFIER); // representativeUniversalIdentifier
180                 fields.add(CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "[" + j + "]." + CamsPropertyConstants.AssetGlobalDetail.CAPITAL_ASSET_TYPE_CODE); // capitalAssetTypeCode
181                 fields.add(CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "[" + j + "]." + CamsPropertyConstants.AssetGlobalDetail.CAPITAL_ASSET_DESCRIPTION); // capitalAssetDescription
182                 fields.add(CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "[" + j + "]." + CamsPropertyConstants.AssetGlobalDetail.MANUFACTURER_NAME); // manufacturerName
183                 fields.add(CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "[" + j + "]." + CamsPropertyConstants.AssetGlobalDetail.ORGANIZATION_TEXT); // organizationText
184                 fields.add(CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "[" + j + "]." + CamsPropertyConstants.AssetGlobalDetail.MANUFACTURER_MODEL_NUMBER); // manufacturerModelNumber
185                 fields.add(CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "[" + j + "]." + CamsPropertyConstants.AssetGlobalDetail.SEPARATE_SOURCE_AMOUNT); // separateSourceAmount
186                 // (Long)
187                 j++;
188             }
189 
190             i++;
191         }
192 
193         return fields;
194     }
195 
196     /**
197      * @param assetGlobal
198      * @return posting year and fiscal month on every payment. Useful for hiding them.
199      */
200     protected Set<String> getAssetGlobalPaymentsHiddenFields(AssetGlobal assetGlobal) {
201         Set<String> fields = new HashSet<String>();
202 
203         int i = 0;
204         for (AssetPaymentDetail assetPaymentDetail : assetGlobal.getAssetPaymentDetails()) {
205             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.DOCUMENT_POSTING_DATE);
206             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.DOCUMENT_NUMBER);
207             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.DOCUMENT_TYPE_CODE);
208             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.ORIGINATION_CODE);
209             i++;
210         }
211 
212         return fields;
213     }
214 
215     /**
216      * @return Asset Global Detail fields that should be read only
217      */
218     protected Set<String> getAssetGlobalDetailsReadOnlyFields() {
219         Set<String> fields = new HashSet<String>();
220 
221         fields.add(CamsPropertyConstants.Asset.ORGANIZATION_OWNER_CHART_OF_ACCOUNTS_CODE);
222         fields.add(CamsPropertyConstants.Asset.ORGANIZATION_OWNER_ACCOUNT_NUMBER);
223         fields.add(CamsPropertyConstants.Asset.ORGANIZATION_CODE);
224         fields.add(CamsPropertyConstants.Asset.AGENCY_NUMBER); // owner
225         fields.add(CamsPropertyConstants.Asset.ACQUISITION_TYPE_CODE);
226         fields.add(CamsPropertyConstants.Asset.INVENTORY_STATUS_CODE);
227         fields.add(CamsPropertyConstants.Asset.CONDITION_CODE);
228         fields.add(CamsPropertyConstants.AssetGlobal.CAPITAL_ASSET_DESCRIPTION);
229         fields.add(CamsPropertyConstants.Asset.CAPITAL_ASSET_TYPE_CODE);
230         fields.add(CamsPropertyConstants.Asset.VENDOR_NAME);
231         fields.add(CamsPropertyConstants.Asset.MANUFACTURER_NAME);
232         fields.add(CamsPropertyConstants.Asset.MANUFACTURER_MODEL_NUMBER);
233         fields.add(CamsPropertyConstants.AssetGlobal.ORGANIZATION_TEXT);
234         fields.add(CamsPropertyConstants.Asset.REP_USER_AUTH_ID);
235         fields.add(CamsPropertyConstants.Asset.LAST_INVENTORY_DATE);
236         fields.add(CamsPropertyConstants.Asset.CREATE_DATE);
237         fields.add(CamsPropertyConstants.Asset.ASSET_DATE_OF_SERVICE);
238         fields.add(CamsPropertyConstants.AssetGlobal.CAPITAL_ASSET_DEPRECIATION_DATE);
239         fields.add(CamsPropertyConstants.Asset.LAND_COUNTRY_NAME);
240         fields.add(CamsPropertyConstants.Asset.LAND_ACREAGE_SIZE);
241         fields.add(CamsPropertyConstants.Asset.LAND_PARCEL_NUMBER);
242 
243         return fields;
244     }
245 
246     /**
247      * @param assetGlobal
248      * @return Asset Global Payment lines with index that should be set to read only.
249      */
250     protected Set<String> getAssetGlobalPaymentsReadOnlyFields(AssetGlobal assetGlobal) {
251         Set<String> fields = new HashSet<String>();
252 
253         // set all payment detail fields to read only.
254         int i = 0;
255         for (AssetPaymentDetail assetPaymentDetail : assetGlobal.getAssetPaymentDetails()) {
256             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.SEQUENCE_NUMBER);
257             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.CHART_OF_ACCOUNTS_CODE);
258             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.ACCOUNT_NUMBER);
259             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.SUB_ACCOUNT_NUMBER);
260             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.FINANCIAL_OBJECT_CODE);
261             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.SUB_OBJECT_CODE);
262             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.PROJECT_CODE);
263             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.ORGANIZATION_REFERENCE_ID);
264             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.DOCUMENT_NUMBER);
265             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.DOCUMENT_TYPE_CODE);
266             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.PURCHASE_ORDER);
267             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.REQUISITION_NUMBER);
268             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.DOCUMENT_POSTING_DATE);
269             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.DOCUMENT_POSTING_FISCAL_YEAR);
270             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.DOCUMENT_POSTING_FISCAL_MONTH);
271             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.AMOUNT);
272             fields.add(CamsPropertyConstants.AssetGlobal.ASSET_PAYMENT_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetPaymentDetail.ORIGINATION_CODE);
273 
274             i++;
275         }
276 
277         return fields;
278     }
279 
280     // CSU 6702 BEGIN
281     /**
282      * @see org.kuali.rice.kns.document.authorization.DocumentPresentationControllerBase#getDocumentActions(org.kuali.rice.kns.document.Document)
283      */
284     @Override
285     public Set<String> getDocumentActions(Document document) {
286         Set<String> documentActions = super.getDocumentActions(document);
287 
288         if (document instanceof LedgerPostingDocument) {
289             // check accounting period is enabled for doc type in system parameter
290             String docType = document.getDocumentHeader().getWorkflowDocument().getDocumentTypeName();
291             ParameterEvaluatorService parameterEvaluatorService = SpringContext.getBean(ParameterEvaluatorService.class);
292             ParameterEvaluator evaluator = parameterEvaluatorService.getParameterEvaluator(KFSConstants.ParameterNamespaces.KFS, KfsParameterConstants.YEAR_END_ACCOUNTING_PERIOD_PARAMETER_NAMES.DETAIL_PARAMETER_TYPE, KfsParameterConstants.YEAR_END_ACCOUNTING_PERIOD_PARAMETER_NAMES.FISCAL_PERIOD_SELECTION_DOCUMENT_TYPES, docType);
293             if (evaluator.evaluationSucceeds()) {
294                 documentActions.add(KFSConstants.YEAR_END_ACCOUNTING_PERIOD_VIEW_DOCUMENT_ACTION);
295             }
296         }
297 
298         return documentActions;
299     }
300     // CSU 6702 END
301 
302 }