1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.kfs.module.tem.document.authorization;
20
21 import java.util.Set;
22
23 import org.apache.commons.lang.StringUtils;
24 import org.kuali.kfs.module.tem.TemConstants;
25 import org.kuali.kfs.module.tem.TemConstants.TravelAuthorizationParameters;
26 import org.kuali.kfs.module.tem.TemConstants.TravelEditMode;
27 import org.kuali.kfs.module.tem.TemWorkflowConstants;
28 import org.kuali.kfs.module.tem.document.TravelAuthorizationDocument;
29 import org.kuali.kfs.module.tem.document.TravelDocument;
30 import org.kuali.kfs.module.tem.document.service.TravelDocumentService;
31 import org.kuali.kfs.module.tem.service.TemProfileService;
32 import org.kuali.kfs.module.tem.service.TemRoleService;
33 import org.kuali.kfs.sys.KFSConstants;
34 import org.kuali.kfs.sys.KfsAuthorizationConstants;
35 import org.kuali.kfs.sys.context.SpringContext;
36 import org.kuali.kfs.sys.document.authorization.FinancialSystemTransactionalDocumentPresentationControllerBase;
37 import org.kuali.rice.core.api.config.property.ConfigurationService;
38 import org.kuali.rice.coreservice.framework.parameter.ParameterService;
39 import org.kuali.rice.kew.api.WorkflowDocument;
40 import org.kuali.rice.kew.api.action.ActionRequest;
41 import org.kuali.rice.kim.api.identity.Person;
42 import org.kuali.rice.kns.document.authorization.DocumentAuthorizer;
43 import org.kuali.rice.kns.service.DocumentHelperService;
44 import org.kuali.rice.krad.document.Document;
45 import org.kuali.rice.krad.util.GlobalVariables;
46
47
48
49
50
51 public class TravelDocumentPresentationController extends FinancialSystemTransactionalDocumentPresentationControllerBase{
52 protected volatile TravelDocumentService travelDocumentService;
53
54
55
56
57 @Override
58 public Set<String> getEditModes(Document document) {
59 Set<String> editModes = super.getEditModes(document);
60 ParameterService paramService = SpringContext.getBean(ParameterService.class);
61
62 if (paramService.getParameterValueAsBoolean(TravelAuthorizationDocument.class, TravelAuthorizationParameters.DISPLAY_EMERGENCY_CONTACT_IND)) {
63 editModes.add(TemConstants.DISPLAY_EMERGENCY_CONTACT_TAB);
64 }
65
66 editModes.add(KfsAuthorizationConstants.TransactionalEditMode.IMMEDIATE_DISBURSEMENT_ENTRY);
67 editModes.add(TemConstants.EditModes.CHECK_AMOUNT_ENTRY);
68
69 if (document.getDocumentHeader().getWorkflowDocument().getNodeNames().contains(KFSConstants.RouteLevelNames.PAYMENT_METHOD)) {
70 editModes.add(KfsAuthorizationConstants.TransactionalEditMode.WIRE_ENTRY);
71 editModes.add(KfsAuthorizationConstants.TransactionalEditMode.FRN_ENTRY);
72 }
73
74 if (document.getDocumentHeader().getWorkflowDocument().isInitiated() || document.getDocumentHeader().getWorkflowDocument().isSaved() || isActionRequestedOfCurrentUser(document)) {
75 editModes.add(TemConstants.EditModes.CONVERSION_RATE_ENTRY);
76 }
77 return editModes;
78 }
79
80
81
82
83
84
85 protected boolean isActionRequestedOfCurrentUser(Document document) {
86 final Person currentUser = GlobalVariables.getUserSession().getPerson();
87 for (ActionRequest request : document.getDocumentHeader().getWorkflowDocument().getRootActionRequests()) {
88 if (request.getActionTaken() == null) {
89 if (StringUtils.equals(currentUser.getPrincipalId(), request.getPrincipalId())) {
90 return true;
91 }
92 if (request.getChildRequests() != null && !request.getChildRequests().isEmpty()) {
93 for (ActionRequest childRequest : request.getChildRequests()) {
94 if (StringUtils.equals(currentUser.getPrincipalId(), childRequest.getPrincipalId())) {
95 return true;
96 }
97 }
98 }
99 }
100 }
101 return false;
102 }
103
104
105
106
107
108
109
110
111
112
113 protected void addFullEntryEditMode(Document document, Set<String> editModes) {
114 WorkflowDocument workflowDocument = document.getDocumentHeader().getWorkflowDocument();
115 Person currentUser = GlobalVariables.getUserSession().getPerson();
116
117 DocumentAuthorizer authorizer = getDocumentHelperService().getDocumentAuthorizer(document);
118 TravelArrangeableAuthorizer travelAuthorizer = (TravelArrangeableAuthorizer)authorizer;
119
120
121 if ((workflowDocument.isInitiated() || workflowDocument.isSaved())) {
122
123 if (travelAuthorizer.canEditDocument(document, currentUser)){
124 editModes.add(TravelEditMode.FULL_ENTRY);
125 }
126 } else if(isAtNode(workflowDocument, getDocumentManagerApprovalNode())){
127 if (travelAuthorizer.canEditDocument(document, currentUser)){
128 editModes.add(TravelEditMode.FULL_ENTRY);
129 }
130 }
131 }
132
133
134
135
136
137
138
139
140 public boolean isAtNode(WorkflowDocument workflowDocument, String nodeName) {
141 Set<String> nodeNames = workflowDocument.getNodeNames();
142 for (String nodeNamesNode : nodeNames) {
143 if (nodeName.equals(nodeNamesNode)) {
144 return true;
145 }
146 }
147 return false;
148 }
149
150
151
152
153
154
155
156
157 public String getDocumentManagerApprovalNode(){
158 return TemWorkflowConstants.RouteNodeNames.AP_TRAVEL;
159 }
160
161
162
163
164
165
166
167 public boolean isInitiator(WorkflowDocument workflowDocument){
168 String docInitiator = workflowDocument.getInitiatorPrincipalId();
169 Person currentUser = GlobalVariables.getUserSession().getPerson();
170 return docInitiator.equals(currentUser.getPrincipalId());
171 }
172
173
174
175
176
177
178 protected boolean isRootTravelDocument(TravelDocument travelDoc) {
179 if (StringUtils.isBlank(travelDoc.getTravelDocumentIdentifier())) {
180
181 return true;
182 }
183 final TravelDocument baseTravelDocument = getTravelDocumentService().getParentTravelDocument(travelDoc.getTravelDocumentIdentifier());
184 return baseTravelDocument == null || StringUtils.equals(baseTravelDocument.getDocumentNumber(), travelDoc.getDocumentNumber());
185 }
186
187 public ParameterService getParamService() {
188 return SpringContext.getBean(ParameterService.class);
189 }
190
191 protected TemRoleService getTemRoleService() {
192 return SpringContext.getBean(TemRoleService.class);
193 }
194
195 protected TemProfileService getTemProfileService() {
196 return SpringContext.getBean(TemProfileService.class);
197 }
198
199 protected DocumentHelperService getDocumentHelperService() {
200 return SpringContext.getBean(DocumentHelperService.class);
201 }
202
203 protected ConfigurationService getConfigurationService() {
204 return SpringContext.getBean(ConfigurationService.class);
205 }
206
207 protected TravelDocumentService getTravelDocumentService() {
208 if (travelDocumentService == null) {
209 travelDocumentService = SpringContext.getBean(TravelDocumentService.class);
210 }
211 return travelDocumentService;
212 }
213 }