001 /*
002 * Copyright 2011 The Kuali Foundation.
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016
017 package org.kuali.kfs.vnd.businessobject;
018
019 import java.sql.Date;
020 import java.util.LinkedHashMap;
021 import java.util.List;
022
023 import org.apache.commons.lang.builder.EqualsBuilder;
024 import org.apache.log4j.Logger;
025 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
026 import org.kuali.rice.kns.util.TypedArrayList;
027
028 /**
029 * Contains information specific to a parent Vendor, which may be shared by its division Vendors if it has any. Contained by a
030 * <code>VendorDetail</code>.
031 *
032 * @see org.kuali.kfs.vnd.businessobject.VendorDetail
033 */
034 public class VendorHeader extends PersistableBusinessObjectBase {
035 private static Logger LOG = Logger.getLogger(VendorHeader.class);
036
037 private Integer vendorHeaderGeneratedIdentifier;
038 private String vendorTypeCode;
039 private String vendorTaxNumber;
040 private String vendorTaxTypeCode;
041 private String vendorOwnershipCode;
042 private String vendorOwnershipCategoryCode;
043 private Date vendorFederalWithholdingTaxBeginningDate;
044 private Date vendorFederalWithholdingTaxEndDate;
045 private Boolean vendorW9ReceivedIndicator;
046 private Boolean vendorW8BenReceivedIndicator;
047 private Boolean vendorDebarredIndicator;
048 private Boolean vendorForeignIndicator;
049
050 private VendorType vendorType;
051 private OwnershipType vendorOwnership;
052 private OwnershipCategory vendorOwnershipCategory;
053 private List<VendorSupplierDiversity> vendorSupplierDiversities;
054 private List<VendorTaxChange> vendorTaxChanges;
055
056 /**
057 * Default constructor.
058 */
059 public VendorHeader() {
060 vendorSupplierDiversities = new TypedArrayList(VendorSupplierDiversity.class);
061 }
062
063 public Integer getVendorHeaderGeneratedIdentifier() {
064
065 return vendorHeaderGeneratedIdentifier;
066 }
067
068 public void setVendorHeaderGeneratedIdentifier(Integer vendorHeaderGeneratedIdentifier) {
069 this.vendorHeaderGeneratedIdentifier = vendorHeaderGeneratedIdentifier;
070 }
071
072 public String getVendorTypeCode() {
073
074 return vendorTypeCode;
075 }
076
077 public void setVendorTypeCode(String vendorTypeCode) {
078 this.vendorTypeCode = vendorTypeCode;
079 }
080
081 public String getVendorTaxNumber() {
082
083 return vendorTaxNumber;
084 }
085
086 public void setVendorTaxNumber(String vendorTaxNumber) {
087 this.vendorTaxNumber = vendorTaxNumber;
088 }
089
090 public String getVendorTaxTypeCode() {
091
092 return vendorTaxTypeCode;
093 }
094
095 public void setVendorTaxTypeCode(String vendorTaxTypeCode) {
096 this.vendorTaxTypeCode = vendorTaxTypeCode;
097 }
098
099 public String getVendorOwnershipCode() {
100
101 return vendorOwnershipCode;
102 }
103
104 public void setVendorOwnershipCode(String vendorOwnershipCode) {
105 this.vendorOwnershipCode = vendorOwnershipCode;
106 }
107
108 public String getVendorOwnershipCategoryCode() {
109
110 return vendorOwnershipCategoryCode;
111 }
112
113 public void setVendorOwnershipCategoryCode(String vendorOwnershipCategoryCode) {
114 this.vendorOwnershipCategoryCode = vendorOwnershipCategoryCode;
115 }
116
117 public Date getVendorFederalWithholdingTaxBeginningDate() {
118
119 return vendorFederalWithholdingTaxBeginningDate;
120 }
121
122 public void setVendorFederalWithholdingTaxBeginningDate(Date vendorFederalWithholdingTaxBeginningDate) {
123 this.vendorFederalWithholdingTaxBeginningDate = vendorFederalWithholdingTaxBeginningDate;
124 }
125
126 public Date getVendorFederalWithholdingTaxEndDate() {
127
128 return vendorFederalWithholdingTaxEndDate;
129 }
130
131 public void setVendorFederalWithholdingTaxEndDate(Date vendorFederalWithholdingTaxEndDate) {
132 this.vendorFederalWithholdingTaxEndDate = vendorFederalWithholdingTaxEndDate;
133 }
134
135 public Boolean getVendorW9ReceivedIndicator() {
136
137 return vendorW9ReceivedIndicator;
138 }
139
140 public void setVendorW9ReceivedIndicator(Boolean vendorW9ReceivedIndicator) {
141 this.vendorW9ReceivedIndicator = vendorW9ReceivedIndicator;
142 }
143
144 public Boolean getVendorW8BenReceivedIndicator() {
145
146 return vendorW8BenReceivedIndicator;
147 }
148
149 public void setVendorW8BenReceivedIndicator(Boolean vendorW8BenReceivedIndicator) {
150 this.vendorW8BenReceivedIndicator = vendorW8BenReceivedIndicator;
151 }
152
153 public VendorType getVendorType() {
154 // refresh because proxy doesn't work properly and vendor type sometimes is null
155 if (vendorType == null)
156 this.refreshReferenceObject("vendorType");
157 return vendorType;
158 }
159
160 /**
161 * Sets the vendorType attribute.
162 *
163 * @param vendorType The vendorType to set.
164 * @deprecated
165 */
166 public void setVendorType(VendorType vendorType) {
167 this.vendorType = vendorType;
168 }
169
170 public OwnershipType getVendorOwnership() {
171
172 return vendorOwnership;
173 }
174
175 /**
176 * Sets the vendorOwnership attribute.
177 *
178 * @param vendorOwnership The vendorOwnership to set.
179 * @deprecated
180 */
181 public void setVendorOwnership(OwnershipType vendorOwnership) {
182 this.vendorOwnership = vendorOwnership;
183 }
184
185 public OwnershipCategory getVendorOwnershipCategory() {
186
187 return vendorOwnershipCategory;
188 }
189
190 /**
191 * Sets the vendorOwnershipCategory attribute.
192 *
193 * @param vendorOwnershipCategory The vendorOwnershipCategory to set.
194 * @deprecated
195 */
196 public void setVendorOwnershipCategory(OwnershipCategory vendorOwnershipCategory) {
197 this.vendorOwnershipCategory = vendorOwnershipCategory;
198 }
199
200 public Boolean getVendorDebarredIndicator() {
201
202 return vendorDebarredIndicator;
203 }
204
205 /**
206 * Sets the vendorDebarredIndicator attribute value.
207 *
208 * @param vendorDebarredIndicator The vendorDebarredIndicator to set.
209 */
210 public void setVendorDebarredIndicator(Boolean vendorDebarredIndicator) {
211 this.vendorDebarredIndicator = vendorDebarredIndicator;
212 }
213
214 public Boolean getVendorForeignIndicator() {
215
216 return vendorForeignIndicator;
217 }
218
219 /**
220 * Sets the vendorForeignIndicator attribute value.
221 *
222 * @param vendorForeignIndicator The vendorForeignIndicator to set.
223 */
224 public void setVendorForeignIndicator(Boolean vendorForeignIndicator) {
225 this.vendorForeignIndicator = vendorForeignIndicator;
226 }
227
228 public List<VendorSupplierDiversity> getVendorSupplierDiversities() {
229
230 return vendorSupplierDiversities;
231 }
232
233 public void setVendorSupplierDiversities(List<VendorSupplierDiversity> vendorSupplierDiversities) {
234 this.vendorSupplierDiversities = vendorSupplierDiversities;
235 }
236
237 /**
238 * Used by the Spring Framework to correctly retrieve the vendor supplier diversities as a single
239 * attribute. The vendorSupplierDiversities is a collection of diversities, and without this method,
240 * there was no way to get a single attribute for it.
241 *
242 * @return the vendor supplier diversities as a single attribute
243 */
244 public String getVendorSupplierDiversitiesAsString() {
245 StringBuilder sb = new StringBuilder("vendorSupplierDiversities=[");
246
247 boolean first = true;
248 for (VendorSupplierDiversity vsd : vendorSupplierDiversities) {
249 if (!first) {
250 sb.append(", ");
251 } else {
252 first = false;
253 }
254 sb.append(vsd.getVendorSupplierDiversityCode().toString());
255 }
256 sb.append(']');
257
258 return sb.toString();
259 }
260
261 public List<VendorTaxChange> getVendorTaxChanges() {
262
263 return vendorTaxChanges;
264 }
265
266 public void setVendorTaxChanges(List<VendorTaxChange> vendorTaxChanges) {
267 this.vendorTaxChanges = vendorTaxChanges;
268 }
269
270 /**
271 * This method is a predicate to test equality of all the persisted attributes of an instance of this class, including member
272 * collections. This is used to determine whether to route
273 *
274 * @param vh Another VendorHeader object
275 * @return True if all non-derived attributes of the given object are equal to this one's
276 */
277 public boolean isEqualForRouting(Object toCompare) {
278 LOG.debug("Entering isEqualForRouting.");
279 if (!(toCompare instanceof VendorHeader)) {
280 return false;
281 }
282 else {
283 VendorHeader vh = (VendorHeader) toCompare;
284 return new EqualsBuilder().append(this.getVendorTypeCode(), vh.getVendorTypeCode()).append(this.getVendorTaxNumber(), vh.getVendorTaxNumber()).append(this.getVendorOwnershipCode(), vh.getVendorOwnershipCode()).append(this.getVendorOwnershipCategoryCode(), vh.getVendorOwnershipCategoryCode()).append(this.getVendorFederalWithholdingTaxBeginningDate(), vh.getVendorFederalWithholdingTaxBeginningDate()).append(this.getVendorFederalWithholdingTaxEndDate(), vh.getVendorFederalWithholdingTaxEndDate()).append(this.getVendorW9ReceivedIndicator(), vh.getVendorW9ReceivedIndicator()).append(this.getVendorW8BenReceivedIndicator(), vh.getVendorW8BenReceivedIndicator()).append(this.getVendorDebarredIndicator(), vh.getVendorDebarredIndicator()).append(this.getVendorForeignIndicator(), vh.getVendorForeignIndicator()).isEquals();
285 }
286 }
287
288 /**
289 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
290 */
291 protected LinkedHashMap<String, String> toStringMapper() {
292 LinkedHashMap<String, String> m = new LinkedHashMap<String, String>();
293 if (this.vendorHeaderGeneratedIdentifier != null) {
294 m.put("vendorHeaderGeneratedIdentifier", this.vendorHeaderGeneratedIdentifier.toString());
295 }
296 return m;
297 }
298 }