GoodsReceivedReceiptItem.java

package com.tradecloud.domain.model.goodsreceivedreceipt;

import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.common.Currency;
import com.tradecloud.domain.item.PackageType;
import com.tradecloud.domain.item.VolumeUnitOfMeasure;
import com.tradecloud.domain.item.WeightUnitOfMeasure;
import com.tradecloud.domain.model.organisationalunit.OrganisationalUnit;
import com.tradecloud.domain.place.Country;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;

import javax.persistence.*;
import java.math.BigDecimal;

@Entity
@Table(name = "GoodsReceivedReceiptItem")
@Access(AccessType.FIELD)
public class GoodsReceivedReceiptItem extends PersistenceBase {

    private String reference;
    @ManyToOne(fetch = FetchType.LAZY)
    private OrganisationalUnit organisationalUnit;
    private String description;
    private BigDecimal unitPerPackageUnit;
    private BigDecimal unitVolume;
    private BigDecimal unitWeight;
    private BigDecimal quantity;
    private BigDecimal unitPrice;
    private BigDecimal localUnitCost;
    private Integer lineNumber;
    @ManyToOne
    private PackageType packageUnit;
    @ManyToOne
    private Country country;

    @ManyToOne
    protected Currency unitPriceCurrency;

    @ManyToOne
    protected Currency localUnitCostCurrency;

    @ManyToOne
    protected WeightUnitOfMeasure weightUOM;

    @ManyToOne
    protected VolumeUnitOfMeasure volumeUOM;

    private Long itemId;

    public GoodsReceivedReceiptItem() {
    }

    public GoodsReceivedReceiptItem(String reference, OrganisationalUnit organisationalUnit, String description, Country country, Long itemId) {
        new GoodsReceivedReceiptItem(reference, organisationalUnit, description, country, itemId, null);
    }

    public GoodsReceivedReceiptItem(String reference, OrganisationalUnit organisationalUnit, String description, Country country, Long itemId,
                                    Integer lineNumber) {
        this.reference = reference;
        this.organisationalUnit = organisationalUnit;
        this.description = description;
        this.country = country;
        this.itemId = itemId;
        this.lineNumber = lineNumber;
    }

    public String getReference() {
        return reference;
    }

    public void setReference(String reference) {
        this.reference = reference;
    }

    public OrganisationalUnit getOrganisationalUnit() {
        return organisationalUnit;
    }

    public void setOrganisationalUnit(OrganisationalUnit organisationalUnit) {
        this.organisationalUnit = organisationalUnit;
    }

    public Country getCountry() {
        return country;
    }

    public void setCountry(Country country) {
        this.country = country;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public BigDecimal getUnitPerPackageUnit() {
        return unitPerPackageUnit;
    }

    public void setUnitPerPackageUnit(BigDecimal unitPerPackageUnit) {
        this.unitPerPackageUnit = unitPerPackageUnit;
    }

    public BigDecimal getUnitVolume() {
        return unitVolume;
    }

    public void setUnitVolume(BigDecimal unitVolume) {
        this.unitVolume = unitVolume;
    }

    public BigDecimal getUnitWeight() {
        return unitWeight;
    }

    public void setUnitWeight(BigDecimal unitWeight) {
        this.unitWeight = unitWeight;
    }

    public BigDecimal getQuantity() {
        return quantity;
    }

    public void setQuantity(BigDecimal quantity) {
        this.quantity = quantity;
    }

    public BigDecimal getUnitPrice() {
        return unitPrice;
    }

    public void setUnitPrice(BigDecimal unitPrice) {
        this.unitPrice = unitPrice;
    }

    public BigDecimal getLocalUnitCost() {
        return localUnitCost;
    }

    public void setLocalUnitCost(BigDecimal localUnitCost) {
        this.localUnitCost = localUnitCost;
    }

    public PackageType getPackageUnit() {
        return packageUnit;
    }

    public void setPackageUnit(PackageType packageUnit) {
        this.packageUnit = packageUnit;
    }

    public Currency getUnitPriceCurrency() {
        return unitPriceCurrency;
    }

    public void setUnitPriceCurrency(Currency unitPriceCurrency) {
        this.unitPriceCurrency = unitPriceCurrency;
    }

    public Currency getLocalUnitCostCurrency() {
        return localUnitCostCurrency;
    }

    public void setLocalUnitCostCurrency(Currency localUnitCostCurrency) {
        this.localUnitCostCurrency = localUnitCostCurrency;
    }

    public WeightUnitOfMeasure getWeightUOM() {
        return weightUOM;
    }

    public void setWeightUOM(WeightUnitOfMeasure weightUOM) {
        this.weightUOM = weightUOM;
    }

    public VolumeUnitOfMeasure getVolumeUOM() {
        return volumeUOM;
    }

    public void setVolumeUOM(VolumeUnitOfMeasure volumeUOM) {
        this.volumeUOM = volumeUOM;
    }

    public Long getItemId() {
        return itemId;
    }

    public Integer getLineNumber() {
        return lineNumber;
    }

    public void setLineNumber(Integer lineNumber) {
        this.lineNumber = lineNumber;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        GoodsReceivedReceiptItem that = (GoodsReceivedReceiptItem) o;
        return new EqualsBuilder().append(reference, that.reference).append(organisationalUnit, that.organisationalUnit)
                .append(country, that.country).append(itemId, that.itemId).isEquals();
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder().append(reference).append(organisationalUnit).append(country).append(itemId).toHashCode();
    }
}