1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.kfs.pdp.businessobject.lookup;
20
21 import java.util.ArrayList;
22 import java.util.Collections;
23 import java.util.List;
24 import java.util.Map;
25
26 import org.apache.commons.lang.StringUtils;
27 import org.kuali.kfs.fp.businessobject.DisbursementPayee;
28 import org.kuali.kfs.fp.businessobject.lookup.AbstractPayeeLookupableHelperServiceImpl;
29 import org.kuali.kfs.pdp.PdpConstants;
30 import org.kuali.kfs.pdp.PdpKeyConstants;
31 import org.kuali.kfs.pdp.businessobject.ACHPayee;
32 import org.kuali.kfs.sys.KFSKeyConstants;
33 import org.kuali.kfs.sys.KFSPropertyConstants;
34 import org.kuali.kfs.vnd.businessobject.VendorDetail;
35 import org.kuali.rice.kim.api.identity.Person;
36 import org.kuali.rice.kim.impl.KIMPropertyConstants;
37 import org.kuali.rice.kns.web.ui.ResultRow;
38 import org.kuali.rice.krad.bo.BusinessObject;
39 import org.kuali.rice.krad.exception.ValidationException;
40 import org.kuali.rice.krad.lookup.CollectionIncomplete;
41 import org.kuali.rice.krad.util.BeanPropertyComparator;
42 import org.kuali.rice.krad.util.GlobalVariables;
43
44
45
46
47
48 public class ACHPayeeLookupableHelperServiceImpl extends AbstractPayeeLookupableHelperServiceImpl {
49
50
51
52
53
54
55
56
57
58 @Override
59 public List<? extends BusinessObject> getSearchResults(Map<String, String> fieldValues) {
60 List<DisbursementPayee> searchResults = new ArrayList<DisbursementPayee>();
61
62 String payeeTypeCode = fieldValues.get(KFSPropertyConstants.PAYEE_TYPE_CODE);
63 if (StringUtils.isBlank(payeeTypeCode)) {
64 GlobalVariables.getMessageMap().putInfo(KFSPropertyConstants.PAYEE_TYPE_CODE, PdpKeyConstants.MESSAGE_PDP_ACH_PAYEE_LOOKUP_NO_PAYEE_TYPE);
65 }
66
67 if (StringUtils.isNotBlank(fieldValues.get(KFSPropertyConstants.VENDOR_NUMBER)) || StringUtils.isNotBlank(fieldValues.get(KFSPropertyConstants.VENDOR_NAME)) || (StringUtils.isNotBlank(payeeTypeCode) && PdpConstants.PayeeIdTypeCodes.VENDOR_ID.equals(payeeTypeCode))) {
68 searchResults.addAll(this.getVendorsAsPayees(fieldValues));
69 }
70 else if (StringUtils.isNotBlank(fieldValues.get(KIMPropertyConstants.Person.EMPLOYEE_ID)) || StringUtils.isNotBlank(fieldValues.get(KIMPropertyConstants.Person.ENTITY_ID)) || (StringUtils.isNotBlank(payeeTypeCode) && (PdpConstants.PayeeIdTypeCodes.EMPLOYEE.equals(payeeTypeCode) || PdpConstants.PayeeIdTypeCodes.ENTITY.equals(payeeTypeCode)))) {
71 searchResults.addAll(this.getPersonAsPayees(fieldValues));
72 }
73 else {
74 searchResults.addAll(this.getVendorsAsPayees(fieldValues));
75 searchResults.addAll(this.getPersonAsPayees(fieldValues));
76 }
77
78 CollectionIncomplete results = new CollectionIncomplete(searchResults, Long.valueOf(searchResults.size()));
79
80
81 List<String> defaultSortColumns = getDefaultSortColumns();
82 if (defaultSortColumns.size() > 0) {
83 Collections.sort(results, new BeanPropertyComparator(getDefaultSortColumns(), true));
84 }
85
86 return results;
87 }
88
89
90
91
92
93
94
95
96 @Override
97 protected DisbursementPayee getPayeeFromPerson(Person personDetail, Map<String, String> fieldValues) {
98 DisbursementPayee payee = super.getPayeeFromPerson(personDetail, fieldValues);
99
100 String payeeTypeCode = fieldValues.get(KFSPropertyConstants.PAYEE_TYPE_CODE);
101
102 ACHPayee achPayee = new ACHPayee();
103
104 if (PdpConstants.PayeeIdTypeCodes.ENTITY.equals(payeeTypeCode)) {
105 achPayee.setPayeeIdNumber(personDetail.getEntityId());
106 achPayee.setPayeeTypeCode(PdpConstants.PayeeIdTypeCodes.ENTITY);
107 }
108 else {
109 achPayee.setPayeeIdNumber(personDetail.getEmployeeId());
110 achPayee.setPayeeTypeCode(PdpConstants.PayeeIdTypeCodes.EMPLOYEE);
111 }
112
113 achPayee.setPayeeName(payee.getPayeeName());
114 achPayee.setPrincipalId(payee.getPrincipalId());
115 achPayee.setTaxNumber(payee.getTaxNumber());
116 achPayee.setAddress(payee.getAddress());
117 achPayee.setActive(payee.isActive());
118
119 return achPayee;
120 }
121
122
123
124
125
126
127 @Override
128 protected DisbursementPayee getPayeeFromVendor(VendorDetail vendorDetail, Map<String, String> fieldValues) {
129 DisbursementPayee payee = super.getPayeeFromVendor(vendorDetail, fieldValues);
130
131 ACHPayee achPayee = new ACHPayee();
132
133 achPayee.setPayeeIdNumber(payee.getPayeeIdNumber());
134 achPayee.setPayeeTypeCode(PdpConstants.PayeeIdTypeCodes.VENDOR_ID);
135 achPayee.setPayeeName(payee.getPayeeName());
136 achPayee.setPrincipalId(payee.getPrincipalId());
137 achPayee.setTaxNumber(payee.getTaxNumber());
138 achPayee.setAddress(payee.getAddress());
139 achPayee.setActive(payee.isActive());
140
141 return achPayee;
142 }
143
144
145
146
147
148 @Override
149 public void validateSearchParameters(Map fieldValues) {
150 super.validateSearchParameters(fieldValues);
151
152 String vendorName = (String) fieldValues.get(KFSPropertyConstants.VENDOR_NAME);
153 String vendorNumber = (String) fieldValues.get(KFSPropertyConstants.VENDOR_NUMBER);
154 String employeeId = (String) fieldValues.get(KIMPropertyConstants.Person.EMPLOYEE_ID);
155 String entityId = (String) fieldValues.get(KIMPropertyConstants.Person.ENTITY_ID);
156 String payeeTypeCode = (String) fieldValues.get(KFSPropertyConstants.PAYEE_TYPE_CODE);
157
158
159 boolean isVendorInfoEntered = StringUtils.isNotBlank(vendorName) || StringUtils.isNotBlank(vendorNumber);
160 if (StringUtils.isNotBlank(entityId) && isVendorInfoEntered) {
161 String messageKey = KFSKeyConstants.ERROR_DV_VENDOR_EMPLOYEE_CONFUSION;
162
163 String vendorNameLabel = this.getAttributeLabel(KFSPropertyConstants.VENDOR_NAME);
164 String vendorNumberLabel = this.getAttributeLabel(KFSPropertyConstants.VENDOR_NUMBER);
165 String entityIdLabel = this.getAttributeLabel(KIMPropertyConstants.Person.ENTITY_ID);
166
167 GlobalVariables.getMessageMap().putError(KIMPropertyConstants.Person.ENTITY_ID, messageKey, entityIdLabel, vendorNameLabel, vendorNumberLabel);
168 }
169
170 boolean isEmployeeInfoEntered = StringUtils.isNotBlank(employeeId) || StringUtils.isNotBlank(entityId);
171 boolean payeeTypeEntered = StringUtils.isNotBlank(payeeTypeCode);
172
173 if (payeeTypeEntered && PdpConstants.PayeeIdTypeCodes.VENDOR_ID.equals(payeeTypeCode) && isEmployeeInfoEntered) {
174 String messageKey = PdpKeyConstants.ERROR_PAYEE_LOOKUP_VENDOR_EMPLOYEE_CONFUSION;
175
176 String employeeIdLabel = this.getAttributeLabel(KIMPropertyConstants.Person.EMPLOYEE_ID);
177 String entityIdLabel = this.getAttributeLabel(KIMPropertyConstants.Person.ENTITY_ID);
178 String payeeTypeLabel = this.getAttributeLabel(KFSPropertyConstants.PAYEE_TYPE_CODE);
179
180 GlobalVariables.getMessageMap().putError(KFSPropertyConstants.PAYEE_TYPE_CODE, messageKey, payeeTypeLabel, payeeTypeCode, employeeIdLabel, entityIdLabel);
181 }
182 else if (payeeTypeEntered && (PdpConstants.PayeeIdTypeCodes.EMPLOYEE.equals(payeeTypeCode) || PdpConstants.PayeeIdTypeCodes.ENTITY.equals(payeeTypeCode)) && isVendorInfoEntered) {
183 String messageKey = PdpKeyConstants.ERROR_PAYEE_LOOKUP_VENDOR_EMPLOYEE_CONFUSION;
184
185 String vendorNameLabel = this.getAttributeLabel(KFSPropertyConstants.VENDOR_NAME);
186 String vendorNumberLabel = this.getAttributeLabel(KFSPropertyConstants.VENDOR_NUMBER);
187 String payeeTypeLabel = this.getAttributeLabel(KFSPropertyConstants.PAYEE_TYPE_CODE);
188
189 GlobalVariables.getMessageMap().putError(KFSPropertyConstants.PAYEE_TYPE_CODE, messageKey, payeeTypeLabel, payeeTypeCode, vendorNameLabel, vendorNumberLabel);
190 }
191
192 if (GlobalVariables.getMessageMap().hasErrors()) {
193 throw new ValidationException("errors in search criteria");
194 }
195 }
196
197
198
199
200
201
202
203
204
205
206 @Override
207
208 protected void filterReturnUrl(List<ResultRow> resultRowList, List<DisbursementPayee> payeeList, String paymentReasonCode) {
209 }
210
211 }