/*
* The Kuali Financial System, a comprehensive financial management system for higher education.
*
* Copyright 2005-2014 The Kuali Foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.kuali.kfs.vnd.businessobject;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.log4j.Logger;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.kfs.vnd.document.service.VendorService;
import org.kuali.rice.core.api.mo.common.active.MutableInactivatable;
import org.kuali.rice.core.api.util.type.KualiDecimal;
import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
import org.kuali.rice.krad.util.ObjectUtils;
/**
* Purchasing Contracts with specific Vendors.
*/
public class VendorContract extends PersistableBusinessObjectBase implements VendorRoutingComparable, MutableInactivatable {
protected static final Logger LOG = Logger.getLogger(VendorContract.class);
protected Integer vendorContractGeneratedIdentifier;
protected Integer vendorHeaderGeneratedIdentifier;
protected Integer vendorDetailAssignedIdentifier;
protected String vendorNumber; // not persisted in db, only for lookup page
protected String vendorContractName;
protected String vendorContractDescription;
protected String vendorCampusCode;
protected Date vendorContractBeginningDate;
protected Date vendorContractEndDate;
protected Integer contractManagerCode;
protected String purchaseOrderCostSourceCode;
protected String vendorPaymentTermsCode;
protected String vendorShippingPaymentTermsCode;
protected String vendorShippingTitleCode;
protected Date vendorContractExtensionDate;
protected Boolean vendorB2bIndicator;
protected KualiDecimal organizationAutomaticPurchaseOrderLimit;
protected boolean active;
protected List<VendorContractOrganization> vendorContractOrganizations;
protected VendorDetail vendorDetail;
protected CampusParameter vendorCampus;
protected ContractManager contractManager;
protected PurchaseOrderCostSource purchaseOrderCostSource;
protected PaymentTermType vendorPaymentTerms;
protected ShippingPaymentTerms vendorShippingPaymentTerms;
protected ShippingTitle vendorShippingTitle;
/**
* Default constructor.
*/
public VendorContract() {
vendorContractOrganizations = new ArrayList<VendorContractOrganization>();
}
public Integer getVendorContractGeneratedIdentifier() {
return vendorContractGeneratedIdentifier;
}
public void setVendorContractGeneratedIdentifier(Integer vendorContractGeneratedIdentifier) {
this.vendorContractGeneratedIdentifier = vendorContractGeneratedIdentifier;
}
public Integer getVendorHeaderGeneratedIdentifier() {
return vendorHeaderGeneratedIdentifier;
}
public void setVendorHeaderGeneratedIdentifier(Integer vendorHeaderGeneratedIdentifier) {
this.vendorHeaderGeneratedIdentifier = vendorHeaderGeneratedIdentifier;
}
public Integer getVendorDetailAssignedIdentifier() {
return vendorDetailAssignedIdentifier;
}
public void setVendorDetailAssignedIdentifier(Integer vendorDetailAssignedIdentifier) {
this.vendorDetailAssignedIdentifier = vendorDetailAssignedIdentifier;
}
public String getVendorContractName() {
return vendorContractName;
}
public void setVendorContractName(String vendorContractName) {
this.vendorContractName = vendorContractName;
}
public String getVendorContractDescription() {
return vendorContractDescription;
}
public void setVendorContractDescription(String vendorContractDescription) {
this.vendorContractDescription = vendorContractDescription;
}
public String getVendorCampusCode() {
return vendorCampusCode;
}
public void setVendorCampusCode(String vendorCampusCode) {
this.vendorCampusCode = vendorCampusCode;
}
public Date getVendorContractBeginningDate() {
return vendorContractBeginningDate;
}
public void setVendorContractBeginningDate(Date vendorContractBeginningDate) {
this.vendorContractBeginningDate = vendorContractBeginningDate;
}
public Date getVendorContractEndDate() {
return vendorContractEndDate;
}
public void setVendorContractEndDate(Date vendorContractEndDate) {
this.vendorContractEndDate = vendorContractEndDate;
}
public Integer getContractManagerCode() {
return contractManagerCode;
}
public void setContractManagerCode(Integer contractManagerCode) {
this.contractManagerCode = contractManagerCode;
}
public String getPurchaseOrderCostSourceCode() {
return purchaseOrderCostSourceCode;
}
public void setPurchaseOrderCostSourceCode(String purchaseOrderCostSourceCode) {
this.purchaseOrderCostSourceCode = purchaseOrderCostSourceCode;
}
public String getVendorPaymentTermsCode() {
return vendorPaymentTermsCode;
}
public void setVendorPaymentTermsCode(String vendorPaymentTermsCode) {
this.vendorPaymentTermsCode = vendorPaymentTermsCode;
}
public String getVendorShippingPaymentTermsCode() {
return vendorShippingPaymentTermsCode;
}
public void setVendorShippingPaymentTermsCode(String vendorShippingPaymentTermsCode) {
this.vendorShippingPaymentTermsCode = vendorShippingPaymentTermsCode;
}
public String getVendorShippingTitleCode() {
return vendorShippingTitleCode;
}
public void setVendorShippingTitleCode(String vendorShippingTitleCode) {
this.vendorShippingTitleCode = vendorShippingTitleCode;
}
public Date getVendorContractExtensionDate() {
return vendorContractExtensionDate;
}
public void setVendorContractExtensionDate(Date vendorContractExtensionDate) {
this.vendorContractExtensionDate = vendorContractExtensionDate;
}
public Boolean getVendorB2bIndicator() {
return vendorB2bIndicator;
}
public void setVendorB2bIndicator(Boolean vendorB2bIndicator) {
this.vendorB2bIndicator = vendorB2bIndicator;
}
public KualiDecimal getOrganizationAutomaticPurchaseOrderLimit() {
return organizationAutomaticPurchaseOrderLimit;
}
public void setOrganizationAutomaticPurchaseOrderLimit(KualiDecimal organizationAutomaticPurchaseOrderLimit) {
this.organizationAutomaticPurchaseOrderLimit = organizationAutomaticPurchaseOrderLimit;
}
@Override
public boolean isActive() {
return active;
}
@Override
public void setActive(boolean active) {
this.active = active;
}
public VendorDetail getVendorDetail() {
return vendorDetail;
}
/**
* Sets the vendorDetail attribute.
*
* @param vendorDetail The vendorDetail to set.
* @deprecated
*/
public void setVendorDetail(VendorDetail vendorDetail) {
this.vendorDetail = vendorDetail;
}
public CampusParameter getVendorCampus() {
return vendorCampus;
}
/**
* Sets the vendorCampus attribute.
*
* @param vendorCampus The vendorCampus to set.
* @deprecated
*/
public void setVendorCampus(CampusParameter vendorCampus) {
this.vendorCampus = vendorCampus;
}
public ContractManager getContractManager() {
return contractManager;
}
/**
* Sets the contractManager attribute.
*
* @param contractManager The contractManager to set.
* @deprecated
*/
public void setContractManager(ContractManager contractManager) {
this.contractManager = contractManager;
}
public PurchaseOrderCostSource getPurchaseOrderCostSource() {
return purchaseOrderCostSource;
}
/**
* Sets the purchaseOrderCostSource attribute.
*
* @param purchaseOrderCostSource The purchaseOrderCostSource to set.
* @deprecated
*/
public void setPurchaseOrderCostSource(PurchaseOrderCostSource purchaseOrderCostSource) {
this.purchaseOrderCostSource = purchaseOrderCostSource;
}
public PaymentTermType getVendorPaymentTerms() {
return vendorPaymentTerms;
}
/**
* Sets the vendorPaymentTerms attribute.
*
* @param vendorPaymentTerms The vendorPaymentTerms to set.
* @deprecated
*/
public void setVendorPaymentTerms(PaymentTermType vendorPaymentTerms) {
this.vendorPaymentTerms = vendorPaymentTerms;
}
public ShippingPaymentTerms getVendorShippingPaymentTerms() {
return vendorShippingPaymentTerms;
}
/**
* Sets the vendorShippingPaymentTerms attribute.
*
* @param vendorShippingPaymentTerms The vendorShippingPaymentTerms to set.
* @deprecated
*/
public void setVendorShippingPaymentTerms(ShippingPaymentTerms vendorShippingPaymentTerms) {
this.vendorShippingPaymentTerms = vendorShippingPaymentTerms;
}
public ShippingTitle getVendorShippingTitle() {
return vendorShippingTitle;
}
/**
* Sets the vendorShippingTitle attribute.
*
* @param vendorShippingTitle The vendorShippingTitle to set.
* @deprecated
*/
public void setVendorShippingTitle(ShippingTitle vendorShippingTitle) {
this.vendorShippingTitle = vendorShippingTitle;
}
public List<VendorContractOrganization> getVendorContractOrganizations() {
return vendorContractOrganizations;
}
public void setVendorContractOrganizations(List<VendorContractOrganization> vendorContractOrganizations) {
this.vendorContractOrganizations = vendorContractOrganizations;
}
/**
* A concatenation of the vendorHeaderGeneratedIdentifier, a dash, and the vendorDetailAssignedIdentifier
*
* @return Returns the vendorNumber.
*/
public String getVendorNumber() {
String headerId = "";
String detailId = "";
String vendorNumber = "";
if (ObjectUtils.isNotNull(this.vendorHeaderGeneratedIdentifier)) {
headerId = this.vendorHeaderGeneratedIdentifier.toString();
}
if (ObjectUtils.isNotNull(this.vendorDetailAssignedIdentifier)) {
detailId = this.vendorDetailAssignedIdentifier.toString();
}
if (!StringUtils.isEmpty(headerId) && !StringUtils.isEmpty(detailId)) {
vendorNumber = headerId + "-" + detailId;
}
return vendorNumber;
}
/**
* Sets the vendorNumber attribute value.
*
* @param vendorNumber The vendorNumber to set.
*/
public void setVendorNumber(String vendorNumber) {
if (!StringUtils.isEmpty(vendorNumber)) {
int dashInd = vendorNumber.indexOf("-");
if (vendorNumber.length() >= dashInd) {
String vndrHdrGenId = vendorNumber.substring(0, dashInd);
String vndrDetailAssgnedId = vendorNumber.substring(dashInd + 1);
if (!StringUtils.isEmpty(vndrHdrGenId) && !StringUtils.isEmpty(vndrDetailAssgnedId)) {
this.vendorHeaderGeneratedIdentifier = new Integer(vndrHdrGenId);
this.vendorDetailAssignedIdentifier = new Integer(vndrDetailAssgnedId);
}
}
}
else {
this.vendorNumber = vendorNumber;
}
}
/**
* @see org.kuali.kfs.vnd.document.routing.VendorRoutingComparable#isEqualForRouting(java.lang.Object)
*/
@Override
public boolean isEqualForRouting(Object toCompare) {
if ((ObjectUtils.isNull(toCompare)) || !(toCompare instanceof VendorContract)) {
return false;
}
else {
VendorContract vc = (VendorContract) toCompare;
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(this.getVendorShippingTitleCode(), vc.getVendorShippingTitleCode()).append(this.getVendorContractExtensionDate(), vc.getVendorContractExtensionDate()).append(this.getVendorB2bIndicator(), vc.getVendorB2bIndicator()).append(this.getOrganizationAutomaticPurchaseOrderLimit(), vc.getOrganizationAutomaticPurchaseOrderLimit()).isEquals();
eq &= SpringContext.getBean(VendorService.class).equalMemberLists(this.getVendorContractOrganizations(), vc.getVendorContractOrganizations());
return eq;
}
}
}