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 }