1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.ole.select.document.validation.impl;
17
18 import org.apache.commons.lang.StringUtils;
19 import org.kuali.ole.module.purap.PurapConstants;
20 import org.kuali.ole.module.purap.PurapKeyConstants;
21 import org.kuali.ole.module.purap.PurapParameterConstants;
22 import org.kuali.ole.module.purap.PurapRuleConstants;
23 import org.kuali.ole.module.purap.document.PurchasingDocument;
24 import org.kuali.ole.module.purap.document.PurchasingDocumentBase;
25 import org.kuali.ole.module.purap.document.validation.impl.PurchasingProcessVendorValidation;
26 import org.kuali.ole.select.OleSelectConstant;
27 import org.kuali.ole.select.service.OleForiegnVendorPhoneNumberService;
28 import org.kuali.ole.sys.OLEConstants;
29 import org.kuali.ole.sys.OLEKeyConstants;
30 import org.kuali.ole.sys.context.SpringContext;
31 import org.kuali.ole.sys.document.validation.event.AttributedDocumentEvent;
32 import org.kuali.ole.sys.service.impl.OleParameterConstants;
33 import org.kuali.ole.vnd.VendorKeyConstants;
34 import org.kuali.ole.vnd.VendorPropertyConstants;
35 import org.kuali.ole.vnd.businessobject.VendorAddress;
36 import org.kuali.ole.vnd.businessobject.VendorDetail;
37 import org.kuali.ole.vnd.businessobject.VendorHeader;
38 import org.kuali.ole.vnd.document.service.VendorService;
39 import org.kuali.rice.coreservice.framework.parameter.ParameterService;
40 import org.kuali.rice.kns.datadictionary.validation.fieldlevel.PhoneNumberValidationPattern;
41 import org.kuali.rice.kns.service.DataDictionaryService;
42 import org.kuali.rice.krad.util.GlobalVariables;
43 import org.kuali.rice.krad.util.MessageMap;
44 import org.kuali.rice.krad.util.ObjectUtils;
45
46 import java.util.ArrayList;
47 import java.util.List;
48
49 public class OlePurchasingProcessVendorValidation extends PurchasingProcessVendorValidation {
50
51 private VendorService vendorService;
52 private ParameterService parameterService;
53 private boolean currencyTypeIndicator = true;
54
55
56
57 @Override
58 public boolean validate(AttributedDocumentEvent event) {
59 boolean valid = true;
60 PurchasingDocument purDocument = (PurchasingDocument) event.getDocument();
61 MessageMap errorMap = GlobalVariables.getMessageMap();
62 errorMap.clearErrorPath();
63 errorMap.addToErrorPath(PurapConstants.VENDOR_ERRORS);
64 VendorDetail vendorDetail = vendorService.getVendorDetail(purDocument.getVendorHeaderGeneratedIdentifier(), purDocument.getVendorDetailAssignedIdentifier());
65 if (ObjectUtils.isNull(vendorDetail)) {
66 return valid;
67 }
68 VendorHeader vendorHeader = vendorDetail.getVendorHeader();
69
70
71
72
73
74
75
76 if (vendorDetail.isVendorDebarred()) {
77 if (parameterService.getParameterValueAsBoolean(OLEConstants.OptionalModuleNamespaces.PURCHASING_ACCOUNTS_PAYABLE, "Requisition", PurapParameterConstants.SHOW_DEBARRED_VENDOR_WARNING_IND)) {
78 if (StringUtils.isEmpty(((PurchasingDocumentBase) purDocument).getJustification())) {
79 errorMap.putWarning(VendorPropertyConstants.VENDOR_NAME, PurapKeyConstants.WARNING_DEBARRED_VENDOR, vendorDetail.getVendorName());
80 valid &= false;
81 }
82 } else {
83 errorMap.putError(VendorPropertyConstants.VENDOR_NAME, PurapKeyConstants.ERROR_DEBARRED_VENDOR);
84 valid &= false;
85 }
86 }
87
88
89 List<String> allowedVendorTypes = new ArrayList<String>(parameterService.getParameterValuesAsString(OleParameterConstants.PURCHASING_DOCUMENT.class, PurapRuleConstants.PURAP_VENDOR_TYPE_ALLOWED_ON_REQ_AND_PO));
90 if (allowedVendorTypes != null && !allowedVendorTypes.isEmpty()) {
91 if (ObjectUtils.isNotNull(vendorHeader) && ObjectUtils.isNotNull(vendorHeader.getVendorTypeCode()) && !allowedVendorTypes.contains(vendorHeader.getVendorTypeCode())) {
92 valid &= false;
93 errorMap.putError(VendorPropertyConstants.VENDOR_NAME, PurapKeyConstants.ERROR_INVALID_VENDOR_TYPE);
94 }
95 }
96
97 if (purDocument.getRequisitionSourceCode() != null && !purDocument.getRequisitionSourceCode().equals(PurapConstants.RequisitionSources.B2B)) {
98
99
100
101 if (purDocument.getVendorHeaderGeneratedIdentifier() != null && purDocument.getPurchaseOrderTransmissionMethodCode().equals(PurapConstants.POTransmissionMethods.FAX) && StringUtils.isBlank(purDocument.getVendorFaxNumber())) {
102 valid &= false;
103 String attributeLabel = SpringContext.getBean(DataDictionaryService.class).
104 getDataDictionary().getBusinessObjectEntry(VendorAddress.class.getName()).
105 getAttributeDefinition(VendorPropertyConstants.VENDOR_FAX_NUMBER).getLabel();
106 errorMap.putError(VendorPropertyConstants.VENDOR_FAX_NUMBER, OLEKeyConstants.ERROR_REQUIRED, attributeLabel);
107 }
108
109 if (vendorDetail.getCurrencyType()!=null){
110 if(vendorDetail.getCurrencyType().getCurrencyType().equalsIgnoreCase(OleSelectConstant.CURRENCY_TYPE_NAME)){
111 currencyTypeIndicator=true;
112 }
113 else{
114 currencyTypeIndicator=false;
115 }
116 }
117 if (StringUtils.isNotBlank(purDocument.getVendorFaxNumber())) {
118 PhoneNumberValidationPattern phonePattern = new PhoneNumberValidationPattern();
119 if (!currencyTypeIndicator) {
120 if (StringUtils.isNotEmpty(purDocument.getVendorFaxNumber()) && !SpringContext.getBean(OleForiegnVendorPhoneNumberService.class).isValidForiegnVendorPhoneNumber(purDocument.getVendorFaxNumber())) {
121 GlobalVariables.getMessageMap().putError(VendorPropertyConstants.VENDOR_FAX_NUMBER, VendorKeyConstants.ERROR_FORIEGN_VENDOR_FAX_NUMBER);
122 valid &= false;
123 }
124 } else {
125 if (!phonePattern.matches(purDocument.getVendorFaxNumber())) {
126 valid &= false;
127 errorMap.putError(VendorPropertyConstants.VENDOR_FAX_NUMBER, PurapKeyConstants.ERROR_FAX_NUMBER_INVALID);
128 }
129 }
130 }
131 }
132
133
134 if (!vendorDetail.isActiveIndicator()) {
135 valid &= false;
136 errorMap.putError(VendorPropertyConstants.VENDOR_NAME, PurapKeyConstants.ERROR_INACTIVE_VENDOR);
137 }
138
139 errorMap.clearErrorPath();
140 return valid;
141
142 }
143
144
145
146
147
148
149 @Override
150 public VendorService getVendorService() {
151 return vendorService;
152 }
153
154
155
156
157
158
159 @Override
160 public void setVendorService(VendorService vendorService) {
161 this.vendorService = vendorService;
162 }
163
164
165
166
167
168
169 @Override
170 public ParameterService getParameterService() {
171 return parameterService;
172 }
173
174
175
176
177
178
179 @Override
180 public void setParameterService(ParameterService parameterService) {
181 this.parameterService = parameterService;
182 }
183
184
185 }