ConsignmentClientConfig.java

package com.tradecloud.domain.configuration;

import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.common.DecisionType;
import org.hibernate.annotations.ForeignKey;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.*;
import java.util.HashSet;
import java.util.Set;

/**
 * A holder for consignment client configuration values.
 */
@Entity
@Table(name = "consignmentclientconfig")
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "ConsignmentClientConfig")
public class ConsignmentClientConfig extends PersistenceBase {

    private static final long serialVersionUID = 1L;

    /**
     * Determines if the client requires validation or a warning at the point of consignment finalise and sign off.
     * Defaults to {@link DecisionType#NO}.
     */
    @Enumerated(value = EnumType.STRING)
    @XmlAttribute
    @NotNull
    private DecisionType allowLatestShippingDateInThePast;

    /**
     * Defaults to true.
     */
    @XmlAttribute
    @NotNull
    private boolean latestShipmentDateIncludesToday;

    /**
     * The number of days apart that the availability dates of two Orders can be before they are linked.
     * Valid values are 0-50 inclusive, defaults to 14
     */
    @XmlAttribute
    @NotNull
    private int availabilityDateSpread;

    /**
     * The number of days apart that the required onsite dates of two Orders can be before they are linked.
     * Valid values are 0-50 inclusive, defaults to 14
     */
    @XmlAttribute
    @NotNull
    private int requiredOnSiteDateSpread;

    /**
     * The number of days apart that the latest shipment dates of two Orders can be before they are linked.
     * Valid values are 0-50 inclusive, defaults to 14
     */
    @XmlAttribute
    @NotNull
    private int latestShipmentDateSpread;

    @XmlAttribute
    @NotNull
    private boolean autoGenerateConsignmentOnErpOrderIntegration;

    @XmlAttribute
    @NotNull
    private boolean autoGenerateConsignmentForManualOrder;

    @XmlAttribute
    private boolean lclContainerToIntegratedOrder;

    @XmlAttribute
    private boolean forceUnFinaliseReason;

    @ElementCollection
    @CollectionTable(name = "consignmentclientconfig_unfinalisereasons", joinColumns = {@JoinColumn(name = "config_id", unique = false)})
    @Column(name = "reason", unique = true)
    @ForeignKey(name = "fk_consignmentclientconfig_unfinalisereasons", inverseName = "fk_ unfinaliseReason")
    @XmlElementWrapper(name = "unfinaliseReasons")
    @XmlElement(name = "unfinaliseReason")
    private Set<String> unfinaliseReasons = new HashSet<>();

    public DecisionType getAllowLatestShippingDateInThePast() {
        return allowLatestShippingDateInThePast;
    }

    public void setAllowLatestShippingDateInThePast(DecisionType allowLatestShippingDateInThePast) {
        this.allowLatestShippingDateInThePast = allowLatestShippingDateInThePast;
    }

    public boolean isLatestShipmentDateIncludesToday() {
        return latestShipmentDateIncludesToday;
    }

    public void setLatestShipmentDateIncludesToday(boolean latestShipmentDateIncludesToday) {
        this.latestShipmentDateIncludesToday = latestShipmentDateIncludesToday;
    }

    public int getAvailabilityDateSpread() {
        return availabilityDateSpread;
    }

    public void setAvailabilityDateSpread(int availabilityDateSpread) {
        this.availabilityDateSpread = availabilityDateSpread;
    }

    public int getRequiredOnSiteDateSpread() {
        return requiredOnSiteDateSpread;
    }

    public void setRequiredOnSiteDateSpread(int requiredOnSiteDateSpread) {
        this.requiredOnSiteDateSpread = requiredOnSiteDateSpread;
    }

    public int getLatestShipmentDateSpread() {
        return latestShipmentDateSpread;
    }

    public void setLatestShipmentDateSpread(int latestShipmentDateSpread) {
        this.latestShipmentDateSpread = latestShipmentDateSpread;
    }

    public boolean isAutoGenerateConsignmentOnErpOrderIntegration() {
        return autoGenerateConsignmentOnErpOrderIntegration;
    }

    public void setAutoGenerateConsignmentOnErpOrderIntegration(boolean autoGenerateConsignmentOnErpOrderIntegration) {
        this.autoGenerateConsignmentOnErpOrderIntegration = autoGenerateConsignmentOnErpOrderIntegration;
    }

    public boolean isAutoGenerateConsignmentForManualOrder() {
        return autoGenerateConsignmentForManualOrder;
    }

    public void setAutoGenerateConsignmentForManualOrder(boolean autoGenerateConsignmentForManualOrder) {
        this.autoGenerateConsignmentForManualOrder = autoGenerateConsignmentForManualOrder;
    }

    public boolean isLclContainerToIntegratedOrder() {
        return lclContainerToIntegratedOrder;
    }

    public void setLclContainerToIntegratedOrder(boolean lclContainerToIntegratedOrder) {
        this.lclContainerToIntegratedOrder = lclContainerToIntegratedOrder;
    }

    public boolean isForceUnFinaliseReason() {
        return forceUnFinaliseReason;
    }

    public void setForceUnFinaliseReason(boolean forceUnFinaliseReason) {
        this.forceUnFinaliseReason = forceUnFinaliseReason;
    }

    public Set<String> getUnfinaliseReasons() {
        return unfinaliseReasons;
    }

    public void setUnfinaliseReasons(Set<String> unfinaliseReasons) {
        this.unfinaliseReasons = unfinaliseReasons;
    }
}