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.StringUtils; 024 import org.apache.commons.lang.builder.EqualsBuilder; 025 import org.apache.log4j.Logger; 026 import org.kuali.kfs.sys.context.SpringContext; 027 import org.kuali.kfs.vnd.document.service.VendorService; 028 import org.kuali.rice.kns.bo.Inactivateable; 029 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase; 030 import org.kuali.rice.kns.util.KualiDecimal; 031 import org.kuali.rice.kns.util.ObjectUtils; 032 import org.kuali.rice.kns.util.TypedArrayList; 033 034 /** 035 * Purchasing Contracts with specific Vendors. 036 */ 037 public class VendorContract extends PersistableBusinessObjectBase implements VendorRoutingComparable, Inactivateable { 038 private static Logger LOG = Logger.getLogger(VendorContract.class); 039 040 private Integer vendorContractGeneratedIdentifier; 041 private Integer vendorHeaderGeneratedIdentifier; 042 private Integer vendorDetailAssignedIdentifier; 043 private String vendorNumber; // not persisted in db, only for lookup page 044 private String vendorContractName; 045 private String vendorContractDescription; 046 private String vendorCampusCode; 047 private Date vendorContractBeginningDate; 048 private Date vendorContractEndDate; 049 private Integer contractManagerCode; 050 private String purchaseOrderCostSourceCode; 051 private String vendorPaymentTermsCode; 052 private String vendorShippingPaymentTermsCode; 053 private String vendorShippingTitleCode; 054 private Date vendorContractExtensionDate; 055 private Boolean vendorB2bIndicator; 056 private KualiDecimal organizationAutomaticPurchaseOrderLimit; 057 private boolean active; 058 059 private List<VendorContractOrganization> vendorContractOrganizations; 060 061 private VendorDetail vendorDetail; 062 private CampusParameter vendorCampus; 063 private ContractManager contractManager; 064 private PurchaseOrderCostSource purchaseOrderCostSource; 065 private PaymentTermType vendorPaymentTerms; 066 private ShippingPaymentTerms vendorShippingPaymentTerms; 067 private ShippingTitle vendorShippingTitle; 068 069 /** 070 * Default constructor. 071 */ 072 public VendorContract() { 073 vendorContractOrganizations = new TypedArrayList(VendorContractOrganization.class); 074 } 075 076 public Integer getVendorContractGeneratedIdentifier() { 077 078 return vendorContractGeneratedIdentifier; 079 } 080 081 public void setVendorContractGeneratedIdentifier(Integer vendorContractGeneratedIdentifier) { 082 this.vendorContractGeneratedIdentifier = vendorContractGeneratedIdentifier; 083 } 084 085 public Integer getVendorHeaderGeneratedIdentifier() { 086 087 return vendorHeaderGeneratedIdentifier; 088 } 089 090 public void setVendorHeaderGeneratedIdentifier(Integer vendorHeaderGeneratedIdentifier) { 091 this.vendorHeaderGeneratedIdentifier = vendorHeaderGeneratedIdentifier; 092 } 093 094 public Integer getVendorDetailAssignedIdentifier() { 095 096 return vendorDetailAssignedIdentifier; 097 } 098 099 public void setVendorDetailAssignedIdentifier(Integer vendorDetailAssignedIdentifier) { 100 this.vendorDetailAssignedIdentifier = vendorDetailAssignedIdentifier; 101 } 102 103 public String getVendorContractName() { 104 105 return vendorContractName; 106 } 107 108 public void setVendorContractName(String vendorContractName) { 109 this.vendorContractName = vendorContractName; 110 } 111 112 public String getVendorContractDescription() { 113 114 return vendorContractDescription; 115 } 116 117 public void setVendorContractDescription(String vendorContractDescription) { 118 this.vendorContractDescription = vendorContractDescription; 119 } 120 121 public String getVendorCampusCode() { 122 123 return vendorCampusCode; 124 } 125 126 public void setVendorCampusCode(String vendorCampusCode) { 127 this.vendorCampusCode = vendorCampusCode; 128 } 129 130 public Date getVendorContractBeginningDate() { 131 132 return vendorContractBeginningDate; 133 } 134 135 public void setVendorContractBeginningDate(Date vendorContractBeginningDate) { 136 this.vendorContractBeginningDate = vendorContractBeginningDate; 137 } 138 139 public Date getVendorContractEndDate() { 140 141 return vendorContractEndDate; 142 } 143 144 public void setVendorContractEndDate(Date vendorContractEndDate) { 145 this.vendorContractEndDate = vendorContractEndDate; 146 } 147 148 public Integer getContractManagerCode() { 149 150 return contractManagerCode; 151 } 152 153 public void setContractManagerCode(Integer contractManagerCode) { 154 this.contractManagerCode = contractManagerCode; 155 } 156 157 public String getPurchaseOrderCostSourceCode() { 158 159 return purchaseOrderCostSourceCode; 160 } 161 162 public void setPurchaseOrderCostSourceCode(String purchaseOrderCostSourceCode) { 163 this.purchaseOrderCostSourceCode = purchaseOrderCostSourceCode; 164 } 165 166 public String getVendorPaymentTermsCode() { 167 168 return vendorPaymentTermsCode; 169 } 170 171 public void setVendorPaymentTermsCode(String vendorPaymentTermsCode) { 172 this.vendorPaymentTermsCode = vendorPaymentTermsCode; 173 } 174 175 public String getVendorShippingPaymentTermsCode() { 176 177 return vendorShippingPaymentTermsCode; 178 } 179 180 public void setVendorShippingPaymentTermsCode(String vendorShippingPaymentTermsCode) { 181 this.vendorShippingPaymentTermsCode = vendorShippingPaymentTermsCode; 182 } 183 184 public String getVendorShippingTitleCode() { 185 186 return vendorShippingTitleCode; 187 } 188 189 public void setVendorShippingTitleCode(String vendorShippingTitleCode) { 190 this.vendorShippingTitleCode = vendorShippingTitleCode; 191 } 192 193 public Date getVendorContractExtensionDate() { 194 195 return vendorContractExtensionDate; 196 } 197 198 public void setVendorContractExtensionDate(Date vendorContractExtensionDate) { 199 this.vendorContractExtensionDate = vendorContractExtensionDate; 200 } 201 202 public Boolean getVendorB2bIndicator() { 203 204 return vendorB2bIndicator; 205 } 206 207 public void setVendorB2bIndicator(Boolean vendorB2bIndicator) { 208 this.vendorB2bIndicator = vendorB2bIndicator; 209 } 210 211 public KualiDecimal getOrganizationAutomaticPurchaseOrderLimit() { 212 213 return organizationAutomaticPurchaseOrderLimit; 214 } 215 216 public void setOrganizationAutomaticPurchaseOrderLimit(KualiDecimal organizationAutomaticPurchaseOrderLimit) { 217 this.organizationAutomaticPurchaseOrderLimit = organizationAutomaticPurchaseOrderLimit; 218 } 219 220 public boolean isActive() { 221 222 return active; 223 } 224 225 public void setActive(boolean active) { 226 this.active = active; 227 } 228 229 public VendorDetail getVendorDetail() { 230 231 return vendorDetail; 232 } 233 234 /** 235 * Sets the vendorDetail attribute. 236 * 237 * @param vendorDetail The vendorDetail to set. 238 * @deprecated 239 */ 240 public void setVendorDetail(VendorDetail vendorDetail) { 241 this.vendorDetail = vendorDetail; 242 } 243 244 245 public CampusParameter getVendorCampus() { 246 return vendorCampus; 247 } 248 249 /** 250 * Sets the vendorCampus attribute. 251 * 252 * @param vendorCampus The vendorCampus to set. 253 * @deprecated 254 */ 255 public void setVendorCampus(CampusParameter vendorCampus) { 256 this.vendorCampus = vendorCampus; 257 } 258 259 public ContractManager getContractManager() { 260 261 return contractManager; 262 } 263 264 /** 265 * Sets the contractManager attribute. 266 * 267 * @param contractManager The contractManager to set. 268 * @deprecated 269 */ 270 public void setContractManager(ContractManager contractManager) { 271 this.contractManager = contractManager; 272 } 273 274 public PurchaseOrderCostSource getPurchaseOrderCostSource() { 275 276 return purchaseOrderCostSource; 277 } 278 279 /** 280 * Sets the purchaseOrderCostSource attribute. 281 * 282 * @param purchaseOrderCostSource The purchaseOrderCostSource to set. 283 * @deprecated 284 */ 285 public void setPurchaseOrderCostSource(PurchaseOrderCostSource purchaseOrderCostSource) { 286 this.purchaseOrderCostSource = purchaseOrderCostSource; 287 } 288 289 public PaymentTermType getVendorPaymentTerms() { 290 291 return vendorPaymentTerms; 292 } 293 294 /** 295 * Sets the vendorPaymentTerms attribute. 296 * 297 * @param vendorPaymentTerms The vendorPaymentTerms to set. 298 * @deprecated 299 */ 300 public void setVendorPaymentTerms(PaymentTermType vendorPaymentTerms) { 301 this.vendorPaymentTerms = vendorPaymentTerms; 302 } 303 304 public ShippingPaymentTerms getVendorShippingPaymentTerms() { 305 306 return vendorShippingPaymentTerms; 307 } 308 309 /** 310 * Sets the vendorShippingPaymentTerms attribute. 311 * 312 * @param vendorShippingPaymentTerms The vendorShippingPaymentTerms to set. 313 * @deprecated 314 */ 315 public void setVendorShippingPaymentTerms(ShippingPaymentTerms vendorShippingPaymentTerms) { 316 this.vendorShippingPaymentTerms = vendorShippingPaymentTerms; 317 } 318 319 public ShippingTitle getVendorShippingTitle() { 320 321 return vendorShippingTitle; 322 } 323 324 /** 325 * Sets the vendorShippingTitle attribute. 326 * 327 * @param vendorShippingTitle The vendorShippingTitle to set. 328 * @deprecated 329 */ 330 public void setVendorShippingTitle(ShippingTitle vendorShippingTitle) { 331 this.vendorShippingTitle = vendorShippingTitle; 332 } 333 334 public List<VendorContractOrganization> getVendorContractOrganizations() { 335 336 return vendorContractOrganizations; 337 } 338 339 public void setVendorContractOrganizations(List<VendorContractOrganization> vendorContractOrganizations) { 340 this.vendorContractOrganizations = vendorContractOrganizations; 341 } 342 343 /** 344 * A concatenation of the vendorHeaderGeneratedIdentifier, a dash, and the vendorDetailAssignedIdentifier 345 * 346 * @return Returns the vendorNumber. 347 */ 348 public String getVendorNumber() { 349 String headerId = ""; 350 String detailId = ""; 351 String vendorNumber = ""; 352 if (ObjectUtils.isNotNull(this.vendorHeaderGeneratedIdentifier)) { 353 headerId = this.vendorHeaderGeneratedIdentifier.toString(); 354 } 355 if (ObjectUtils.isNotNull(this.vendorDetailAssignedIdentifier)) { 356 detailId = this.vendorDetailAssignedIdentifier.toString(); 357 } 358 if (!StringUtils.isEmpty(headerId) && !StringUtils.isEmpty(detailId)) { 359 vendorNumber = headerId + "-" + detailId; 360 } 361 362 return vendorNumber; 363 } 364 365 /** 366 * Sets the vendorNumber attribute value. 367 * 368 * @param vendorNumber The vendorNumber to set. 369 */ 370 public void setVendorNumber(String vendorNumber) { 371 if (!StringUtils.isEmpty(vendorNumber)) { 372 int dashInd = vendorNumber.indexOf("-"); 373 if (vendorNumber.length() >= dashInd) { 374 String vndrHdrGenId = vendorNumber.substring(0, dashInd); 375 String vndrDetailAssgnedId = vendorNumber.substring(dashInd + 1); 376 if (!StringUtils.isEmpty(vndrHdrGenId) && !StringUtils.isEmpty(vndrDetailAssgnedId)) { 377 this.vendorHeaderGeneratedIdentifier = new Integer(vndrHdrGenId); 378 this.vendorDetailAssignedIdentifier = new Integer(vndrDetailAssgnedId); 379 } 380 } 381 } 382 else { 383 this.vendorNumber = vendorNumber; 384 } 385 } 386 387 /** 388 * @see org.kuali.kfs.vnd.document.routing.VendorRoutingComparable#isEqualForRouting(java.lang.Object) 389 */ 390 public boolean isEqualForRouting(Object toCompare) { 391 if ((ObjectUtils.isNull(toCompare)) || !(toCompare instanceof VendorContract)) { 392 return false; 393 } 394 else { 395 VendorContract vc = (VendorContract) toCompare; 396 boolean eq = new EqualsBuilder().append(this.getVendorContractGeneratedIdentifier(), vc.getVendorContractGeneratedIdentifier()).append(this.getVendorHeaderGeneratedIdentifier(), vc.getVendorHeaderGeneratedIdentifier()).append(this.getVendorDetailAssignedIdentifier(), vc.getVendorDetailAssignedIdentifier()).append(this.getVendorContractName(), vc.getVendorContractName()).append(this.getVendorContractDescription(), vc.getVendorContractDescription()).append(this.getVendorCampusCode(), vc.getVendorCampusCode()).append(this.getVendorContractBeginningDate(), vc.getVendorContractBeginningDate()).append(this.getVendorContractEndDate(), vc.getVendorContractEndDate()).append(this.getContractManagerCode(), vc.getContractManagerCode()).append(this.getPurchaseOrderCostSourceCode(), vc.getPurchaseOrderCostSourceCode()).append(this.getVendorPaymentTermsCode(), vc.getVendorPaymentTermsCode()).append(this.getVendorShippingPaymentTermsCode(), vc.getVendorShippingPaymentTermsCode()).append( 397 this.getVendorShippingTitleCode(), vc.getVendorShippingTitleCode()).append(this.getVendorContractExtensionDate(), vc.getVendorContractExtensionDate()).append(this.getVendorB2bIndicator(), vc.getVendorB2bIndicator()).append(this.getOrganizationAutomaticPurchaseOrderLimit(), vc.getOrganizationAutomaticPurchaseOrderLimit()).isEquals(); 398 eq &= SpringContext.getBean(VendorService.class).equalMemberLists(this.getVendorContractOrganizations(), vc.getVendorContractOrganizations()); 399 400 return eq; 401 } 402 } 403 404 /** 405 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper() 406 */ 407 protected LinkedHashMap toStringMapper() { 408 LinkedHashMap m = new LinkedHashMap(); 409 if (this.vendorContractGeneratedIdentifier != null) { 410 m.put("vendorContractGeneratedIdentifier", this.vendorContractGeneratedIdentifier.toString()); 411 } 412 413 return m; 414 } 415 416 417 }