SaleCustomer.java

package com.tradecloud.domain.party;

import com.tradecloud.domain.model.payment.ActualPaymentBasis;
import com.tradecloud.domain.model.payment.EstimatedPaymentBasis;
import com.tradecloud.domain.model.payment.PaymentMethod;
import com.tradecloud.domain.model.payment.PaymentTerm;
import com.tradecloud.domain.party.base.Company;
import org.hibernate.annotations.ForeignKey;
import org.springframework.stereotype.Component;

import javax.persistence.*;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@Entity
@Component(value = "saleCustomer")
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "SaleCustomer")
@Table(name = "salecustomer", uniqueConstraints = {@UniqueConstraint(columnNames = {"name"})})
public class SaleCustomer extends Company implements Comparable<SaleCustomer> {

    private static final long serialVersionUID = 1L;

    @XmlElement(name = "PaymentTerm", required = true)
    @ManyToOne
    @ForeignKey(name = "fk_paymentterm")
    private PaymentTerm paymentTerm;

    @ManyToOne
    @ForeignKey(name = "fk_paymentmethod")
    private PaymentMethod paymentMethod;

    @XmlElement(name = "EstimatedPaymentBasis", required = true)
    @ManyToOne
    @ForeignKey(name = "fk_estimatedpaymentbasis_code")
    private EstimatedPaymentBasis estimatedPaymentBasis;

    @XmlElement(name = "ActualPaymentBasis", required = true)
    @ManyToOne
    @ForeignKey(name = "fk_actualpaymentbasis_code")
    private ActualPaymentBasis actualPaymentBasis;

    @ManyToOne
    @ForeignKey(name = "fk_salecustomertype")
    private SaleCustomerType saleCustomerType;

    public PaymentTerm getPaymentTerm() {
        return paymentTerm;
    }

    public void setPaymentTerm(PaymentTerm paymentTerm) {
        this.paymentTerm = paymentTerm;
    }

    public PaymentMethod getPaymentMethod() {
        return paymentMethod;
    }

    public void setPaymentMethod(PaymentMethod paymentMethod) {
        this.paymentMethod = paymentMethod;
    }

    public EstimatedPaymentBasis getEstimatedPaymentBasis() {
        return estimatedPaymentBasis;
    }

    public void setEstimatedPaymentBasis(EstimatedPaymentBasis estimatedPaymentBasis) {
        this.estimatedPaymentBasis = estimatedPaymentBasis;
    }

    public ActualPaymentBasis getActualPaymentBasis() {
        return actualPaymentBasis;
    }

    public void setActualPaymentBasis(ActualPaymentBasis actualPaymentBasis) {
        this.actualPaymentBasis = actualPaymentBasis;
    }

    public SaleCustomerType getSaleCustomerType() {
        return saleCustomerType;
    }

    public void setSaleCustomerType(SaleCustomerType saleCustomerType) {
        this.saleCustomerType = saleCustomerType;
    }

    @Override
    public int compareTo(SaleCustomer saleCustomer) {
        if (getName() != null) {
            if (getName().compareTo(saleCustomer.getName()) != 0) {
                return getName().compareTo(saleCustomer.getName());
            }
        }
        return 0;
    }
}