ElcConfig.java

package com.tradecloud.domain.model.elcordermanagement;

import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.common.Currency;
import com.tradecloud.domain.common.Incoterm;
import com.tradecloud.domain.container.ContainerType;
import com.tradecloud.domain.item.Product;
import com.tradecloud.domain.model.organisationalunit.OrganisationalUnit;
import com.tradecloud.domain.model.shipment.ShippingMode;
import com.tradecloud.domain.party.Employee;
import com.tradecloud.domain.party.ServiceProvider;
import com.tradecloud.domain.place.FinalDestination;
import com.tradecloud.domain.place.PlaceOfDischarge;

import javax.persistence.*;
import javax.xml.bind.annotation.*;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

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

    @ManyToOne(fetch = FetchType.EAGER)
    private ContainerType containerType;

    @ManyToOne(fetch = FetchType.EAGER)
    private PlaceOfDischarge placeOfDischarge;

    @ManyToOne(fetch = FetchType.EAGER)
    private FinalDestination finalDestination;

    @Enumerated(value = EnumType.STRING)
    private ShippingMode shippingMode;

    @ManyToOne
    private Incoterm incoterm;

    @ManyToOne
    private Currency currency;

    @XmlElement
    private BigDecimal financeInsuranceRate;

    @XmlElement
    private BigDecimal financeCollectionRate;

    @XmlElement
    private BigDecimal financeCollectionMin;

    @XmlElement
    private BigDecimal financeLCRate;

    @XmlElement
    private BigDecimal financeLCAdditionalValue;

    @XmlElement
    private BigDecimal financeLCMin;

    @XmlElement
    private BigDecimal financeOpenAccountValue;

    @XmlElement
    private BigDecimal financeOpenAccountRate;

    @XmlElement
    private BigDecimal financeOpenAccountMin;

    @XmlElement
    private BigDecimal financeOpenAccountMax;

    @XmlElement
    private BigDecimal warehousingRate;

    @XmlElement
    private boolean calculationOrFlatValue = false;

    @XmlElement
    private boolean supplierInvoicePercentage = false;

    @XmlElement
    private boolean packageDimensionMandatory;

    @XmlElement
    private BigDecimal woodenHangerDuty;

    @XmlElement
    private BigDecimal recyclablePlasticHangerDuty;

    @XmlElement
    private BigDecimal nonRecyclablePlasticHangerDuty;

    private boolean allowReportFormatOption;

    @Enumerated(value = EnumType.STRING)
    @XmlAttribute
    private ElcReports elcReportConfig;

    private boolean editSupplierCurrency;

    private boolean elcUsingProduct;

    @ManyToOne
    @XmlElement(name = "Buyer")
    private Employee buyer;

    @ManyToOne
    @XmlElement(name = "organisationalUnit")
    private OrganisationalUnit organisationalUnit;

    private boolean autoFinalise;

    private boolean autoSignOff;

    private boolean autoCalculateContainer;

    private boolean calculatePlannedSettlementDate;

    private boolean costOnUpdate;

    private boolean overridePlannedSettlementSpotRate;
    private boolean manualTariffing;

    @ManyToOne
    @XmlElement(name = "defaultProductTemplate")
    private Product defaultProductTemplate;

    /**
     * The freight forwarder used by this supplier.
     */
    @XmlElement(name = "FreightForwarder")
    @ManyToOne(fetch = FetchType.EAGER)
    private ServiceProvider freightForwarder;

    /**
     * The agent who will be responsible for clearing this supplier's goods.
     */
    @XmlElement(name = "ClearingAgent")
    @ManyToOne(fetch = FetchType.EAGER)
    private ServiceProvider clearingAgent;

    @XmlTransient
    @ElementCollection
    @JoinTable(name = "elcconfig_containerCost",
            joinColumns = {@JoinColumn(name = "elcconfig_id", referencedColumnName = "id")})
    @MapKeyJoinColumn(name = "containertype_code")
    @Column(name = "cost")
    private Map<ContainerType, BigDecimal> containerCostMap = new HashMap();

    public ContainerType getContainerType() {
        return containerType;
    }

    public void setContainerType(ContainerType containerType) {
        this.containerType = containerType;
    }

    public PlaceOfDischarge getPlaceOfDischarge() {
        return placeOfDischarge;
    }

    public void setPlaceOfDischarge(PlaceOfDischarge placeOfDischarge) {
        this.placeOfDischarge = placeOfDischarge;
    }

    public FinalDestination getFinalDestination() {
        return finalDestination;
    }

    public void setFinalDestination(FinalDestination finalDestination) {
        this.finalDestination = finalDestination;
    }

    public ShippingMode getShippingMode() {
        return shippingMode;
    }

    public void setShippingMode(ShippingMode shippingMode) {
        this.shippingMode = shippingMode;
    }

    public Incoterm getIncoterm() {
        return incoterm;
    }

    public void setIncoterm(Incoterm incoterm) {
        this.incoterm = incoterm;
    }

    public Currency getCurrency() {
        return currency;
    }

    public void setCurrency(Currency currency) {
        this.currency = currency;
    }

    public BigDecimal getFinanceInsuranceRate() {
        return financeInsuranceRate;
    }

    public void setFinanceInsuranceRate(BigDecimal financeInsuranceRate) {
        this.financeInsuranceRate = financeInsuranceRate;
    }

    public ElcReports getElcReportConfig() {
        return elcReportConfig;
    }

    public void setElcReportConfig(ElcReports elcReportConfig) {
        this.elcReportConfig = elcReportConfig;
    }

    public BigDecimal getFinanceCollectionRate() {
        return financeCollectionRate;
    }

    public void setFinanceCollectionRate(BigDecimal financeCollectionRate) {
        this.financeCollectionRate = financeCollectionRate;
    }

    public BigDecimal getFinanceCollectionMin() {
        return financeCollectionMin;
    }

    public void setFinanceCollectionMin(BigDecimal financeCollectionMin) {
        this.financeCollectionMin = financeCollectionMin;
    }

    public BigDecimal getFinanceLCRate() {
        return financeLCRate;
    }

    public void setFinanceLCRate(BigDecimal financeLCRate) {
        this.financeLCRate = financeLCRate;
    }

    public BigDecimal getFinanceLCAdditionalValue() {
        return financeLCAdditionalValue;
    }

    public void setFinanceLCAdditionalValue(BigDecimal financeLCAdditionalValue) {
        this.financeLCAdditionalValue = financeLCAdditionalValue;
    }

    public BigDecimal getFinanceLCMin() {
        return financeLCMin;
    }

    public void setFinanceLCMin(BigDecimal financeLCMin) {
        this.financeLCMin = financeLCMin;
    }

    public BigDecimal getFinanceOpenAccountRate() {
        return financeOpenAccountRate;
    }

    public void setFinanceOpenAccountRate(BigDecimal financeOpenAccountRate) {
        this.financeOpenAccountRate = financeOpenAccountRate;
    }

    public BigDecimal getFinanceOpenAccountMin() {
        return financeOpenAccountMin;
    }

    public void setFinanceOpenAccountMin(BigDecimal financeOpenAccountMin) {
        this.financeOpenAccountMin = financeOpenAccountMin;
    }

    public BigDecimal getFinanceOpenAccountMax() {
        return financeOpenAccountMax;
    }

    public void setFinanceOpenAccountMax(BigDecimal financeOpenAccountMax) {
        this.financeOpenAccountMax = financeOpenAccountMax;
    }

    public BigDecimal getFinanceOpenAccountValue() {
        return financeOpenAccountValue;
    }

    public void setFinanceOpenAccountValue(BigDecimal financeOpenAccountValue) {
        this.financeOpenAccountValue = financeOpenAccountValue;
    }

    public boolean isCalculationOrFlatValue() {
        return calculationOrFlatValue;
    }

    public void setCalculationOrFlatValue(boolean calculationOrFlatValue) {
        this.calculationOrFlatValue = calculationOrFlatValue;
    }

    public boolean isSupplierInvoicePercentage() {
        return supplierInvoicePercentage;
    }

    public void setSupplierInvoicePercentage(boolean supplierInvoicePercentage) {
        this.supplierInvoicePercentage = supplierInvoicePercentage;
    }

    public BigDecimal getWarehousingRate() {
        return warehousingRate;
    }

    public void setWarehousingRate(BigDecimal warehousingRate) {
        this.warehousingRate = warehousingRate;
    }

    public boolean isPackageDimensionMandatory() {
        return packageDimensionMandatory;
    }

    public void setPackageDimensionMandatory(boolean packageDimensionMandatory) {
        this.packageDimensionMandatory = packageDimensionMandatory;
    }

    public BigDecimal getNonRecyclablePlasticHangerDuty() {
        return nonRecyclablePlasticHangerDuty;
    }

    public void setNonRecyclablePlasticHangerDuty(BigDecimal nonRecyclablePlasticHangerDuty) {
        this.nonRecyclablePlasticHangerDuty = nonRecyclablePlasticHangerDuty;
    }

    public BigDecimal getWoodenHangerDuty() {
        return woodenHangerDuty;
    }

    public void setWoodenHangerDuty(BigDecimal woodenHangerDuty) {
        this.woodenHangerDuty = woodenHangerDuty;
    }

    public BigDecimal getRecyclablePlasticHangerDuty() {
        return recyclablePlasticHangerDuty;
    }

    public void setRecyclablePlasticHangerDuty(BigDecimal recyclablePlasticHangerDuty) {
        this.recyclablePlasticHangerDuty = recyclablePlasticHangerDuty;
    }

    public boolean isAllowReportFormatOption() {
        return allowReportFormatOption;
    }

    public void setAllowReportFormatOption(boolean allowReportFormatOption) {
        this.allowReportFormatOption = allowReportFormatOption;
    }

    public boolean isEditSupplierCurrency() {
        return editSupplierCurrency;
    }

    public void setEditSupplierCurrency(boolean editSupplierCurrency) {
        this.editSupplierCurrency = editSupplierCurrency;
    }

    public boolean isElcUsingProduct() {
        return elcUsingProduct;
    }

    public void setElcUsingProduct(boolean elcUsingProduct) {
        this.elcUsingProduct = elcUsingProduct;
    }

    public Employee getBuyer() {
        return buyer;
    }

    public void setBuyer(Employee buyer) {
        this.buyer = buyer;
    }

    public OrganisationalUnit getOrganisationalUnit() {
        return organisationalUnit;
    }

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

    public boolean isAutoFinalise() {
        return autoFinalise;
    }

    public void setAutoFinalise(boolean autoFinalise) {
        this.autoFinalise = autoFinalise;
    }

    public ServiceProvider getFreightForwarder() {
        return freightForwarder;
    }

    public void setFreightForwarder(ServiceProvider freightForwarder) {
        this.freightForwarder = freightForwarder;
    }

    public ServiceProvider getClearingAgent() {
        return clearingAgent;
    }

    public void setClearingAgent(ServiceProvider clearingAgent) {
        this.clearingAgent = clearingAgent;
    }

    public boolean isAutoSignOff() {
        return autoSignOff;
    }

    public void setAutoSignOff(boolean autoSignOff) {
        this.autoSignOff = autoSignOff;
    }

    public Map<ContainerType, BigDecimal> getContainerCostMap() {
        return containerCostMap;
    }

    public void setContainerCostMap(Map<ContainerType, BigDecimal> containerCostMap) {
        this.containerCostMap = containerCostMap;
    }

    public boolean isAutoCalculateContainer() {
        return autoCalculateContainer;
    }

    public void setAutoCalculateContainer(boolean autoCalculateContainer) {
        this.autoCalculateContainer = autoCalculateContainer;
    }

    public boolean isCalculatePlannedSettlementDate() {
        return calculatePlannedSettlementDate;
    }

    public void setCalculatePlannedSettlementDate(boolean calculatePlannedSettlementDate) {
        this.calculatePlannedSettlementDate = calculatePlannedSettlementDate;
    }

    public boolean isCostOnUpdate() {
        return costOnUpdate;
    }

    public void setCostOnUpdate(boolean costOnUpdate) {
        this.costOnUpdate = costOnUpdate;
    }

    public boolean isOverridePlannedSettlementSpotRate() {
        return overridePlannedSettlementSpotRate;
    }

    public void setOverridePlannedSettlementSpotRate(boolean overridePlannedSettlementSpotRate) {
        this.overridePlannedSettlementSpotRate = overridePlannedSettlementSpotRate;
    }

    public boolean isManualTariffing() {
        return manualTariffing;
    }

    public void setManualTariffing(boolean manualTariffing) {
        this.manualTariffing = manualTariffing;
    }

    public Product getDefaultProductTemplate() {
        return defaultProductTemplate;
    }

    public void setDefaultProductTemplate(Product defaultProductTemplate) {
        this.defaultProductTemplate = defaultProductTemplate;
    }
}