ItacPermit.java

package com.tradecloud.domain.duties;

import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.item.ItemType;
import com.tradecloud.domain.item.UnitOfMeasure;

import javax.persistence.*;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import java.math.BigDecimal;
import java.util.Date;

@Entity
@Table(name = "ItacPermit")
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "ItacPermit")
public class ItacPermit extends PersistenceBase {

    @XmlAttribute
    @Enumerated(EnumType.STRING)
    private ItacPermitOptions itacPermit;

    @XmlAttribute
    private String itacPermitNumber;

    @XmlAttribute
    private Date expiryDate;

    @XmlAttribute
    private BigDecimal goodsToBeImportedValue;

    @XmlAttribute
    private BigDecimal quantityAllowed;

    @XmlAttribute
    @Enumerated(EnumType.STRING)
    private UnitOfMeasure.UnitType unitOfMeasure;

    @Enumerated(EnumType.STRING)
    @XmlAttribute(name = "rebateSchedule")
    private ItemType rebateSchedule;

    @Enumerated(EnumType.STRING)
    private LinkType integratedLinkType;

    public ItacPermitOptions getItacPermit() {
        return itacPermit;
    }

    public void setItacPermit(ItacPermitOptions itacPermit) {
        this.itacPermit = itacPermit;
    }

    public String getItacPermitNumber() {
        return itacPermitNumber;
    }

    public void setItacPermitNumber(String itacPermitNumber) {
        this.itacPermitNumber = itacPermitNumber;
    }

    public Date getExpiryDate() {
        return expiryDate;
    }

    public void setExpiryDate(Date expiryDate) {
        this.expiryDate = expiryDate;
    }

    public BigDecimal getGoodsToBeImportedValue() {
        return goodsToBeImportedValue;
    }

    public void setGoodsToBeImportedValue(BigDecimal goodsToBeImportedValue) {
        this.goodsToBeImportedValue = goodsToBeImportedValue;
    }

    public BigDecimal getQuantityAllowed() {
        return quantityAllowed;
    }

    public void setQuantityAllowed(BigDecimal quantityAllowed) {
        this.quantityAllowed = quantityAllowed;
    }

    public UnitOfMeasure.UnitType getUnitOfMeasure() {
        return unitOfMeasure;
    }

    public void setUnitOfMeasure(UnitOfMeasure.UnitType unitOfMeasure) {
        this.unitOfMeasure = unitOfMeasure;
    }

    public ItemType getRebateSchedule() {
        return rebateSchedule;
    }

    public boolean isS3P1Rebate() {
        return rebateSchedule == ItemType.INDUSTRIAL_REBATE;
    }

    public boolean isS4P1Rebate() {
        return rebateSchedule == ItemType.GENERAL_REBATE;
    }

    public void setRebateSchedule(ItemType itemType) {
        if (itemType == ItemType.GENERAL_REBATE || itemType == ItemType.INDUSTRIAL_REBATE) {
            this.rebateSchedule = itemType;
        }
    }

    public void copy(ItacPermit itacPermit) {
        if (getUnitOfMeasure() == null)
            setUnitOfMeasure(itacPermit.getUnitOfMeasure());
        if (getItacPermitNumber() == null)
            setItacPermitNumber(itacPermit.getItacPermitNumber());
        if (getGoodsToBeImportedValue() == null)
            setGoodsToBeImportedValue(itacPermit.getGoodsToBeImportedValue());
        if (getExpiryDate() == null)
            setExpiryDate(itacPermit.getExpiryDate());
        if (getQuantityAllowed() == null)
            setQuantityAllowed(itacPermit.getQuantityAllowed());
        if (getItacPermit() == null)
            setItacPermit(itacPermit.getItacPermit());
        if (getRebateSchedule() == null)
            setRebateSchedule(itacPermit.getRebateSchedule());
    }

    public LinkType getIntegratedLinkType() {
        return integratedLinkType;
    }

    public void setIntegratedLinkType(LinkType integratedLinkType) {
        this.integratedLinkType = integratedLinkType;
    }
}