ItemsAndOrdersClientConfig.java
package com.tradecloud.domain.configuration;
import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.common.Currency;
import com.tradecloud.domain.common.Incoterm;
import com.tradecloud.domain.configuration.orderintegration.OrderIntegrationConfig;
import com.tradecloud.domain.document.invoice.UnitPricePerItem;
import com.tradecloud.domain.item.PackageType;
import com.tradecloud.domain.item.UnitType;
import com.tradecloud.domain.item.VolumeUnitOfMeasure;
import com.tradecloud.domain.item.WeightUnitOfMeasure;
import com.tradecloud.domain.model.ordermanagement.OrderUpdateRejection;
import com.tradecloud.domain.model.payment.PaymentTerm;
import com.tradecloud.domain.model.shipment.ShippingMode;
import com.tradecloud.domain.party.ServiceProvider;
import com.tradecloud.domain.place.Country;
import com.tradecloud.domain.place.NamedPlace;
import com.tradecloud.domain.place.PlaceOfDischarge;
import com.tradecloud.domain.place.PlaceOfLoading;
import org.hibernate.annotations.ForeignKey;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.*;
import java.math.BigDecimal;
import java.util.HashSet;
import java.util.Set;
/**
* An entity representing item and order client configuration values.
*/
@Entity
@Table(name = "itemsandordersclientconfig")
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "ItemsAndOrdersClientConfig")
public class ItemsAndOrdersClientConfig extends PersistenceBase {
private static final long serialVersionUID = 1L;
/**
* Defaults to CHINA.
*/
@ManyToOne
@ForeignKey(name = "fk_countryoforigin")
@XmlElement(name = "CountryOfOrigin")
@NotNull(message = "Country of origin is required")
private Country countryOfOrigin;
/**
* Defaults to FOB.
*/
@ManyToOne
@ForeignKey(name = "fk_incoterm")
@XmlElement(name = "Incoterm")
@NotNull(message = "Incoterm is required")
private Incoterm incoterm;
/**
* Defaults to {@link UnitPricePerItem#FACTORY_PRICE}.
*/
@Enumerated(value = EnumType.STRING)
@XmlAttribute
@NotNull(message = "Unit price per item is required")
private UnitPricePerItem unitPricePerItem;
/**
* Defaults to USD.
*/
@ManyToOne
@ForeignKey(name = "fk_purchasecurrency")
@XmlElement(name = "PurchaseCurrency")
@NotNull(message = "Purchase currency is required")
private Currency purchaseCurrency;
/**
* Defaults to {@link ShippingMode#SEA}.
*/
@XmlAttribute
@NotNull(message = "Shipping mode is required")
@Enumerated(value = EnumType.STRING)
private ShippingMode shippingMode;
@XmlElement(name = "NamedPlace")
@ManyToOne
@ForeignKey(name = "fk_namedplace")
private NamedPlace namedPlace;
/**
* Defaults to Cape Town.
*/
@ManyToOne
@ForeignKey(name = "fk_placeofloading")
@XmlElement(name = "PlaceOfLoading")
private PlaceOfLoading placeOfLoading;
/**
* Defaults to Durban.
*/
@ManyToOne
@ForeignKey(name = "fk_placeofdischarge")
@XmlElement(name = "PlaceOfDischarge")
private PlaceOfDischarge placeOfDischarge;
/**
* Defaults to UNIT.
*/
@ManyToOne
@ForeignKey(name = "fk_unittype")
@XmlElement(name = "UnitType")
@NotNull(message = "Unit type is required")
private UnitType unitType;
/**
* Defaults to CARTON.
*/
@ManyToOne
@ForeignKey(name = "fk_packagetype")
@XmlElement(name = "PackageType")
@NotNull(message = "Package type is required")
private PackageType packageType;
/**
* Defaults to M3.
*/
@ManyToOne
@ForeignKey(name = "fk_volumeuom")
@XmlElement(name = "VolumeUnitOfMeasure")
private VolumeUnitOfMeasure volumeUOM;
/**
* Defaults to KG.
*/
@ManyToOne
@ForeignKey(name = "fk_weightuom")
@XmlElement(name = "WeightUnitOfMeasure")
private WeightUnitOfMeasure weightUOM;
// Should possibly be @NotNull. But have to there is the startup case
// Rename to freightForwarder
@ManyToOne
@ForeignKey(name = "fk_lsp")
@XmlElement(name = "LSP")
private ServiceProvider lsp;
// Should possibly be @NotNull. But have to there is the startup case
@ManyToOne
@ForeignKey(name = "fk_clearingagent")
@XmlElement(name = "ClearingAgent")
private ServiceProvider clearingAgent;
@ManyToOne
@ForeignKey(name = "fk_transporter")
@XmlElement(name = "Transporter")
private ServiceProvider transporter;
/**
* Defaults to true.
*/
@XmlAttribute
@NotNull
private boolean forceUnsignOffReason;
/**
* Defaults to true.
*/
@XmlAttribute
@NotNull
private boolean forceOrderDeleteReason;
/**
* Defaults to false.
*/
@XmlAttribute
@NotNull
private boolean orderDisabledUnitPricePerItem;
/**
* Defaults to true.
*/
@XmlAttribute
@NotNull
private boolean useOrderLeadTime;
/**
* Defaults to 10%.
*/
@XmlAttribute
@NotNull
private BigDecimal lcToleranceAbove;
/**
* Defaults to 0%.
*/
@XmlAttribute
@NotNull
private BigDecimal lcToleranceBelow;
/**
* Defaults to Day 7.
*/
@ManyToOne
@ForeignKey(name = "fk_paymentterm")
@XmlElement(name = "PaymentTerm")
@NotNull(message = "Payment term is required")
private PaymentTerm paymentTerm;
@ElementCollection
@CollectionTable(name = "itemsandordersclientconfig_unsignoffreasons", joinColumns = {@JoinColumn(name = "config_id", unique = false)})
@Column(name = "reason", unique = true)
@ForeignKey(name = "fk_itemsandordersclientconfig", inverseName = "fk_unsignedoffreason")
@XmlElementWrapper(name = "UnsignOffReasons")
@XmlElement(name = "UnsignOffReason")
private Set<String> unsignOffReasons = new HashSet<>();
@ElementCollection
@CollectionTable(name = "orderclientconfig_deletereasons", joinColumns = {@JoinColumn(name = "config_id", unique = false)})
@Column(name = "reason", unique = true)
@ForeignKey(name = "orderclientconfig_deletereasons_config_id_fkey", inverseName = "fk_orderdeletereason")
@XmlElementWrapper(name = "OrderDeleteReasons")
@XmlElement(name = "OrderDeleteReason")
private Set<String> orderDeleteReasons = new HashSet<>();
@OneToOne(cascade = CascadeType.ALL)
@ForeignKey(name = "fk_orderIntegrationConfig")
@XmlElement(name = "orderIntegrationConfig")
private OrderIntegrationConfig orderIntegrationConfig = new OrderIntegrationConfig();
/**
* Defaults to 'Warning Message'.
*/
@Enumerated(value = EnumType.STRING)
@XmlAttribute
@NotNull
private AmendCountryOfOriginOnItem amendCountryOfOriginOnItem;
/**
* Order update rejection setting.
*/
@Enumerated(value = EnumType.STRING)
@XmlAttribute
@NotNull
private OrderUpdateRejection orderUpdateRejection;
/**
* Maximum Supplier reference field length(item and product). Can be a whole number between 1
* and 75, defaults to 30.
*/
@XmlAttribute
@NotNull
private int maximumSupplierReferenceLengthItemAndProduct;
/**
* Defaults to true.
*/
@XmlAttribute
@NotNull
private boolean useSamples = true;
/**
* Maximum item and products reference field length. Can be a whole number between 1
* and 75, defaults to 30.
*/
@XmlAttribute
@NotNull
private int maximumItemAndProductReferenceLength;
/**
* Maximum item and products description field length. Can be a whole number between 1
* and 75, defaults to 40.
*/
@XmlAttribute
@NotNull
private int maximumItemAndProductDescriptionLength;
/**
* Defaults to false.
*/
@XmlAttribute
@NotNull
private boolean allocateCustomsDutyCostsToSamples;
/**
* Defaults to true.
*/
@XmlAttribute
@NotNull
private boolean useSpareParts = true;
@XmlAttribute
@NotNull
private boolean bondedItems = true;
private boolean ignoreTariffStatusOnInvoiceSignOff = false;
private boolean allowPurchaseOrderCreateWithLocalCurrency = false;
private boolean validateAllowedCurrencies = false;
/**
* Defaults to false.
*/
@XmlAttribute
@NotNull
private boolean downloadLineItemTemplate;
/**
* Defaults to false.
*/
@XmlAttribute
@NotNull
private boolean uploadLineItemTemplate;
/**
* Defaults to false.
*/
@XmlAttribute
@NotNull
private boolean allocateCustomsDutyCostsToSpareParts;
@XmlAttribute
@NotNull
private boolean integratedOrderItemsEditable;
@XmlAttribute
@NotNull
private boolean integratedOrderItemsEditOnCommercialInvoice;
@XmlAttribute
@NotNull
@Enumerated(value = EnumType.STRING)
private ProformaUniquenessConfig validateProformaInvoiceRefSupplierComb;
@XmlAttribute
@NotNull
private boolean disableDeleteReasonFreeText;
@ManyToOne
@ForeignKey(name = "fk_localCustomsAuthority")
@XmlElement(name = "LocalCustomsAuthority")
private ServiceProvider localCustomsAuthority;
@ManyToOne
@ForeignKey(name = "fk_localPortAuthority")
@XmlElement(name = "LocalPortAuthority")
private ServiceProvider localPortAuthority;
@XmlAttribute
@NotNull
private boolean gRNRequiresShipmentSignOff;
private boolean defaultFromFdType;
private boolean canEditItemType;
private boolean itemLinenumberOrdering;
private boolean setItemCategoryToItemProperty;
private boolean createChildOrders;
private boolean rebateCodeOptional;
private boolean autoSignOffUploaded;
private boolean autoFinaliseUploaded;
private boolean logisticsOrderUpdateRejectPriorToOrderSignOff;
private boolean itemCategoryRequired;
public Country getCountryOfOrigin() {
return countryOfOrigin;
}
public void setCountryOfOrigin(Country countryOfOrigin) {
this.countryOfOrigin = countryOfOrigin;
}
public Incoterm getIncoterm() {
return incoterm;
}
public void setIncoterm(Incoterm incoterm) {
this.incoterm = incoterm;
}
public UnitPricePerItem getUnitPricePerItem() {
return unitPricePerItem;
}
public void setUnitPricePerItem(UnitPricePerItem unitPricePerItem) {
this.unitPricePerItem = unitPricePerItem;
}
public Currency getPurchaseCurrency() {
return purchaseCurrency;
}
public void setPurchaseCurrency(Currency purchaseCurrency) {
this.purchaseCurrency = purchaseCurrency;
}
public ShippingMode getShippingMode() {
return shippingMode;
}
public void setShippingMode(ShippingMode shippingMode) {
this.shippingMode = shippingMode;
}
public NamedPlace getNamedPlace() {
return namedPlace;
}
public void setNamedPlace(NamedPlace namedPlace) {
this.namedPlace = namedPlace;
}
public PlaceOfLoading getPlaceOfLoading() {
return placeOfLoading;
}
public void setPlaceOfLoading(PlaceOfLoading placeOfLoading) {
this.placeOfLoading = placeOfLoading;
}
public PlaceOfDischarge getPlaceOfDischarge() {
return placeOfDischarge;
}
public void setPlaceOfDischarge(PlaceOfDischarge placeOfDischarge) {
this.placeOfDischarge = placeOfDischarge;
}
public UnitType getUnitType() {
return unitType;
}
public void setUnitType(UnitType unitType) {
this.unitType = unitType;
}
public PackageType getPackageType() {
return packageType;
}
public void setPackageType(PackageType packageType) {
this.packageType = packageType;
}
public VolumeUnitOfMeasure getVolumeUOM() {
return volumeUOM;
}
public void setVolumeUOM(VolumeUnitOfMeasure volumeUOM) {
this.volumeUOM = volumeUOM;
}
public WeightUnitOfMeasure getWeightUOM() {
return weightUOM;
}
public void setWeightUOM(WeightUnitOfMeasure weightUOM) {
this.weightUOM = weightUOM;
}
public ServiceProvider getLsp() {
return lsp;
}
public void setLsp(ServiceProvider lsp) {
this.lsp = lsp;
}
public ServiceProvider getFreightForwarder() {
return lsp;
}
public void setFreightForwarder(ServiceProvider serviceProvider) {
this.lsp = serviceProvider;
}
public ServiceProvider getClearingAgent() {
return clearingAgent;
}
public void setClearingAgent(ServiceProvider clearingAgent) {
this.clearingAgent = clearingAgent;
}
public ServiceProvider getTransporter() {
return transporter;
}
public void setTransporter(ServiceProvider transporter) {
this.transporter = transporter;
}
public boolean isForceUnsignOffReason() {
return forceUnsignOffReason;
}
public void setForceUnsignOffReason(boolean forceUnsignOffReason) {
this.forceUnsignOffReason = forceUnsignOffReason;
}
public boolean isForceOrderDeleteReason() {
return forceOrderDeleteReason;
}
public void setForceOrderDeleteReason(boolean forceOrderDeleteReason) {
this.forceOrderDeleteReason = forceOrderDeleteReason;
}
public boolean isOrderDisabledUnitPricePerItem() {
return orderDisabledUnitPricePerItem;
}
public void setOrderDisabledUnitPricePerItem(boolean orderDisabledUnitPricePerItem) {
this.orderDisabledUnitPricePerItem = orderDisabledUnitPricePerItem;
}
public boolean isUseOrderLeadTime() {
return useOrderLeadTime;
}
public void setUseOrderLeadTime(boolean useOrderLeadTime) {
this.useOrderLeadTime = useOrderLeadTime;
}
public Set<String> getUnsignOffReasons() {
return unsignOffReasons;
}
public void setUnsignOffReasons(Set<String> unsignOffReasons) {
this.unsignOffReasons = unsignOffReasons;
}
public Set<String> getOrderDeleteReasons() {
return orderDeleteReasons;
}
public void setOrderDeleteReasons(Set<String> orderDeleteReasons) {
this.orderDeleteReasons = orderDeleteReasons;
}
public OrderIntegrationConfig getOrderIntegrationConfig() {
return orderIntegrationConfig;
}
public void setOrderIntegrationConfig(OrderIntegrationConfig orderIntegrationConfig) {
this.orderIntegrationConfig = orderIntegrationConfig;
}
public AmendCountryOfOriginOnItem getAmendCountryOfOriginOnItem() {
return this.amendCountryOfOriginOnItem;
}
public void setAmendCountryOfOriginOnItem(AmendCountryOfOriginOnItem amendCountryOfOriginOnItem) {
this.amendCountryOfOriginOnItem = amendCountryOfOriginOnItem;
}
public BigDecimal getLcToleranceAbove() {
return lcToleranceAbove;
}
public void setLcToleranceAbove(BigDecimal lcToleranceAbove) {
this.lcToleranceAbove = lcToleranceAbove;
}
public BigDecimal getLcToleranceBelow() {
return lcToleranceBelow;
}
public void setLcToleranceBelow(BigDecimal lcToleranceBelow) {
this.lcToleranceBelow = lcToleranceBelow;
}
public PaymentTerm getPaymentTerm() {
return paymentTerm;
}
public void setPaymentTerm(PaymentTerm paymentTerm) {
this.paymentTerm = paymentTerm;
}
public OrderUpdateRejection getOrderUpdateRejection() {
return orderUpdateRejection;
}
public void setOrderUpdateRejection(OrderUpdateRejection orderUpdateRejection) {
this.orderUpdateRejection = orderUpdateRejection;
}
public int getMaximumSupplierReferenceLengthItemAndProduct() {
return maximumSupplierReferenceLengthItemAndProduct;
}
public void setMaximumSupplierReferenceLengthItemAndProduct(int maximumSupplierReferenceLengthItemAndProduct) {
this.maximumSupplierReferenceLengthItemAndProduct = maximumSupplierReferenceLengthItemAndProduct;
}
public int getMaximumItemAndProductReferenceLength() {
return maximumItemAndProductReferenceLength;
}
public void setMaximumItemAndProductReferenceLength(int maximumItemAndProductReferenceLength) {
this.maximumItemAndProductReferenceLength = maximumItemAndProductReferenceLength;
}
public int getMaximumItemAndProductDescriptionLength() {
return maximumItemAndProductDescriptionLength;
}
public void setMaximumItemAndProductDescriptionLength(int maximumItemAndProductDescriptionLength) {
this.maximumItemAndProductDescriptionLength = maximumItemAndProductDescriptionLength;
}
public boolean isUseSamples() {
return useSamples;
}
public void setUseSamples(boolean useSamples) {
this.useSamples = useSamples;
}
public boolean isAllocateCustomsDutyCostsToSamples() {
return allocateCustomsDutyCostsToSamples;
}
public void setAllocateCustomsDutyCostsToSamples(boolean allocateCustomsDutyCostsToSamples) {
this.allocateCustomsDutyCostsToSamples = !useSamples ? false : allocateCustomsDutyCostsToSamples;
}
public boolean isUseSpareParts() {
return useSpareParts;
}
public void setUseSpareParts(boolean useSpareParts) {
this.useSpareParts = useSpareParts;
}
public boolean isBondedItems() {
return bondedItems;
}
public void setBondedItems(boolean bondedItems) {
this.bondedItems = bondedItems;
}
public boolean isAllocateCustomsDutyCostsToSpareParts() {
return allocateCustomsDutyCostsToSpareParts;
}
public void setAllocateCustomsDutyCostsToSpareParts(boolean allocateCustomsDutyCostsToSpareParts) {
this.allocateCustomsDutyCostsToSpareParts = !useSpareParts ? false : allocateCustomsDutyCostsToSpareParts;
}
public boolean isIgnoreTariffStatusOnInvoiceSignOff() {
return ignoreTariffStatusOnInvoiceSignOff;
}
public void setIgnoreTariffStatusOnInvoiceSignOff(boolean ignoreTariffStatusOnInvoiceSignOff) {
this.ignoreTariffStatusOnInvoiceSignOff = ignoreTariffStatusOnInvoiceSignOff;
}
public boolean isAllowPurchaseOrderCreateWithLocalCurrency() {
return allowPurchaseOrderCreateWithLocalCurrency;
}
public void setAllowPurchaseOrderCreateWithLocalCurrency(boolean allowPurchaseOrderCreateWithLocalCurrency) {
this.allowPurchaseOrderCreateWithLocalCurrency = allowPurchaseOrderCreateWithLocalCurrency;
}
public boolean isUploadLineItemTemplate() {
return uploadLineItemTemplate;
}
public void setUploadLineItemTemplate(boolean uploadLineItemTemplate) {
this.uploadLineItemTemplate = uploadLineItemTemplate;
}
public boolean isDownloadLineItemTemplate() {
return downloadLineItemTemplate;
}
public void setDownloadLineItemTemplate(boolean downloadLineItemTemplate) {
this.downloadLineItemTemplate = downloadLineItemTemplate;
}
public boolean isIntegratedOrderItemsEditable() {
return integratedOrderItemsEditable;
}
public void setIntegratedOrderItemsEditable(boolean integratedOrderItemsEditable) {
this.integratedOrderItemsEditable = integratedOrderItemsEditable;
}
public boolean isIntegratedOrderItemsEditOnCommercialInvoice() {
return integratedOrderItemsEditOnCommercialInvoice;
}
public void setIntegratedOrderItemsEditOnCommercialInvoice(boolean integratedOrderItemsEditOnCommercialInvoice) {
this.integratedOrderItemsEditOnCommercialInvoice = integratedOrderItemsEditOnCommercialInvoice;
}
public ProformaUniquenessConfig getValidateProformaInvoiceRefSupplierComb() {
return validateProformaInvoiceRefSupplierComb;
}
public void setValidateProformaInvoiceRefSupplierComb(ProformaUniquenessConfig validateProformaInvoiceRefSupplierComb) {
this.validateProformaInvoiceRefSupplierComb = validateProformaInvoiceRefSupplierComb;
}
public boolean isDisableDeleteReasonFreeText() {
return disableDeleteReasonFreeText;
}
public void setDisableDeleteReasonFreeText(boolean disableDeleteReasonFreeText) {
this.disableDeleteReasonFreeText = disableDeleteReasonFreeText;
}
public ServiceProvider getLocalCustomsAuthority() {
return localCustomsAuthority;
}
public void setLocalCustomsAuthority(ServiceProvider localCustomsAuthority) {
this.localCustomsAuthority = localCustomsAuthority;
}
public ServiceProvider getLocalPortAuthority() {
return localPortAuthority;
}
public void setLocalPortAuthority(ServiceProvider localPortAuthority) {
this.localPortAuthority = localPortAuthority;
}
public boolean isDefaultFromFdType() {
return defaultFromFdType;
}
public void setDefaultFromFdType(boolean defaultFromFdType) {
this.defaultFromFdType = defaultFromFdType;
}
public boolean isCanEditItemType() {
return canEditItemType;
}
public void setCanEditItemType(boolean canEditItemType) {
this.canEditItemType = canEditItemType;
}
public boolean isItemLinenumberOrdering() {
return itemLinenumberOrdering;
}
public void setItemLinenumberOrdering(boolean itemLinenumberOrdering) {
this.itemLinenumberOrdering = itemLinenumberOrdering;
}
public boolean isgRNRequiresShipmentSignOff() {
return gRNRequiresShipmentSignOff;
}
public void setgRNRequiresShipmentSignOff(boolean gRNRequiresShipmentSignOff) {
this.gRNRequiresShipmentSignOff = gRNRequiresShipmentSignOff;
}
public boolean isSetItemCategoryToItemProperty() {
return setItemCategoryToItemProperty;
}
public void setSetItemCategoryToItemProperty(boolean setItemCategoryToItemProperty) {
this.setItemCategoryToItemProperty = setItemCategoryToItemProperty;
}
public boolean isValidateAllowedCurrencies() {
return validateAllowedCurrencies;
}
public void setValidateAllowedCurrencies(boolean validateAllowedCurrencies) {
this.validateAllowedCurrencies = validateAllowedCurrencies;
}
public boolean isCreateChildOrders() {
return createChildOrders;
}
public void setCreateChildOrders(boolean createChildOrders) {
this.createChildOrders = createChildOrders;
}
public boolean isRebateCodeOptional() {
return rebateCodeOptional;
}
public void setRebateCodeOptional(boolean rebateCodeOptional) {
this.rebateCodeOptional = rebateCodeOptional;
}
public boolean isLogisticsOrderUpdateRejectPriorToOrderSignOff() {
return logisticsOrderUpdateRejectPriorToOrderSignOff;
}
public void setLogisticsOrderUpdateRejectPriorToOrderSignOff(boolean logisticsOrderUpdateRejectPriorToOrderSignOff) {
this.logisticsOrderUpdateRejectPriorToOrderSignOff = logisticsOrderUpdateRejectPriorToOrderSignOff;
}
public boolean isAutoSignOffUploaded() {
return autoSignOffUploaded;
}
public void setAutoSignOffUploaded(boolean autoSignOffUploaded) {
this.autoSignOffUploaded = autoSignOffUploaded;
}
public boolean isAutoFinaliseUploaded() {
return autoFinaliseUploaded;
}
public void setAutoFinaliseUploaded(boolean autoFinaliseUploaded) {
this.autoFinaliseUploaded = autoFinaliseUploaded;
}
public boolean isItemCategoryRequired() {
return itemCategoryRequired;
}
public void setItemCategoryRequired(boolean itemCategoryRequired) {
this.itemCategoryRequired = itemCategoryRequired;
}
}