1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
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
61 maintCollDef.setIncludeAddLine(false);
62
63
64 for (AssetPaymentDetail payment : assetGlobal.getAssetPaymentDetails()) {
65 payment.setNewCollectionRecord(false);
66 }
67 }
68 else {
69
70
71 maintCollDef.setIncludeAddLine(true);
72 }
73
74 AssetGlobalService assetGlobalService = SpringContext.getBean(AssetGlobalService.class);
75 if (!assetGlobalService.isAssetSeparateByPayment(assetGlobal)) {
76
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
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
91 if (!document.getDocumentHeader().getWorkflowDocument().isFinal()) {
92 fields.addAll(getAssetGlobalPaymentsHiddenFields(assetGlobal));
93 }
94 }
95 }
96
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
113 if (SpringContext.getBean(AssetGlobalService.class).isAssetSeparate(assetGlobal)) {
114 fields.addAll(getAssetGlobalDetailsReadOnlyFields());
115 fields.addAll(getAssetGlobalPaymentsReadOnlyFields(assetGlobal));
116 }
117 else if (assetGlobal.isCapitalAssetBuilderOriginIndicator()) {
118
119 fields.addAll(getAssetGlobalPaymentsReadOnlyFields(assetGlobal));
120 }
121
122
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
139
140
141 String docType = document.getDocumentHeader().getWorkflowDocument().getDocumentTypeName();
142
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
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
159
160
161 protected Set<String> getAssetGlobalLocationHiddenFields(AssetGlobal assetGlobal) {
162 Set<String> fields = new HashSet<String>();
163
164
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);
168 fields.add(KFSConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "." + CamsPropertyConstants.AssetGlobalDetail.CAPITAL_ASSET_TYPE_CODE);
169 fields.add(KFSConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "." + CamsPropertyConstants.AssetGlobalDetail.CAPITAL_ASSET_DESCRIPTION);
170 fields.add(KFSConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "." + CamsPropertyConstants.AssetGlobalDetail.MANUFACTURER_NAME);
171 fields.add(KFSConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "." + CamsPropertyConstants.AssetGlobalDetail.ORGANIZATION_TEXT);
172 fields.add(KFSConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "." + CamsPropertyConstants.AssetGlobalDetail.MANUFACTURER_MODEL_NUMBER);
173 fields.add(KFSConstants.ADD_PREFIX + "." + CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "." + CamsPropertyConstants.AssetGlobalDetail.SEPARATE_SOURCE_AMOUNT);
174
175
176
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);
180 fields.add(CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "[" + j + "]." + CamsPropertyConstants.AssetGlobalDetail.CAPITAL_ASSET_TYPE_CODE);
181 fields.add(CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "[" + j + "]." + CamsPropertyConstants.AssetGlobalDetail.CAPITAL_ASSET_DESCRIPTION);
182 fields.add(CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "[" + j + "]." + CamsPropertyConstants.AssetGlobalDetail.MANUFACTURER_NAME);
183 fields.add(CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "[" + j + "]." + CamsPropertyConstants.AssetGlobalDetail.ORGANIZATION_TEXT);
184 fields.add(CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "[" + j + "]." + CamsPropertyConstants.AssetGlobalDetail.MANUFACTURER_MODEL_NUMBER);
185 fields.add(CamsPropertyConstants.AssetGlobal.ASSET_SHARED_DETAILS + "[" + i + "]." + CamsPropertyConstants.AssetGlobalDetail.ASSET_UNIQUE_DETAILS + "[" + j + "]." + CamsPropertyConstants.AssetGlobalDetail.SEPARATE_SOURCE_AMOUNT);
186
187 j++;
188 }
189
190 i++;
191 }
192
193 return fields;
194 }
195
196
197
198
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
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);
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
248
249
250 protected Set<String> getAssetGlobalPaymentsReadOnlyFields(AssetGlobal assetGlobal) {
251 Set<String> fields = new HashSet<String>();
252
253
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
281
282
283
284 @Override
285 public Set<String> getDocumentActions(Document document) {
286 Set<String> documentActions = super.getDocumentActions(document);
287
288 if (document instanceof LedgerPostingDocument) {
289
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
301
302 }