PfOrderNotShippedSearchResult.java

package com.tradecloud.dto.order;

import lombok.Getter;
import lombok.Setter;

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 javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Optional;

/**
 * Created by ds on 2014/04/29.
 */
@XmlRootElement(name = "PfOrderNotShippedSearchResult")
@XmlAccessorType(XmlAccessType.FIELD)
@Getter
@Setter
public class PfOrderNotShippedSearchResult extends OrderSearchResult {
    /*@XmlAttribute(required = true)
    String latestShipmentDate;*/
    @XmlAttribute(required = true)
    String consignmentReference;
    @XmlAttribute(required = true)
    String orderReference;
    @XmlAttribute(required = true)
    String proFormaReference;
    @XmlAttribute(required = true)
    String shippingReference;
    //originally, and ideally, originalLatestShipmentDate should be a Date object.  But, is now inactive at the moment.
    //So, in future, change to Date.  If this date is null it does not make it to the xml output.
    @XmlJavaTypeAdapter(value = XmlAdapterDate.class, type = java.util.Date.class)
    Date originalLatestShipmentDate;
    @XmlJavaTypeAdapter(value = XmlAdapterDate.class, type = java.util.Date.class)
    Date requiredOnSiteDate;
    @XmlAttribute(required = true)
    String freightForwarderName;
    @XmlAttribute(required = true)
    String carrierName;
    @XmlAttribute(required = true)
    String organisationalUnitName;
    @XmlAttribute(required = true)
    String buyerName;
    @XmlAttribute(required = true)
    String supplierName;
    @XmlAttribute(required = true)
    BigDecimal supplierInvoiceValue;
    @XmlAttribute(required = true)
    String supplierInvoiceCurrency;
    @XmlAttribute(required = true)
    String paymentMethod;
    @XmlAttribute(required = true)
    String paymentTerm;
    @XmlAttribute(required = true)
    String lcBankName;
    @XmlAttribute(required = true)
    String lcBankReference;
    @XmlAttribute(required = true)
    String lcNumber;
    @XmlJavaTypeAdapter(value = XmlAdapterDate.class, type = java.util.Date.class)
    Date lcEstablishedDate;
    @XmlAttribute(required = true)
    String placeOfLoading;
    @XmlAttribute(required = true)
    String placeOfDischarge;
    @XmlAttribute(required = true)
    String finalDestination;
    @XmlAttribute(required = true)
    String shippingMode;
    @XmlAttribute(required = true)
    String multiModalShippingMode;
    @XmlAttribute(required = true)
    String incoTerm;
    @XmlJavaTypeAdapter(value = XmlAdapterDate.class, type = java.util.Date.class)
    Date plannedShipmentDate;
    @XmlJavaTypeAdapter(value = XmlAdapterDate.class, type = java.util.Date.class)
    Date estimatedArrivalDate;
    @XmlAttribute(required = true)
    String vesselName;
    @XmlAttribute(required = true)
    BigDecimal totalWeight;
    @XmlAttribute(required = true)
    BigDecimal totalVolume;
    @XmlAttribute(required = true)
    String forwardRate;
    @XmlAttribute(required = true)
    String spotRate;
    private BigDecimal TEUs;
    @XmlAttribute(required = true)
    private BigDecimal containerFCL20GPquantity;
    @XmlAttribute(required = true)
    private BigDecimal containerFCL20REEFERGPquantity;
    @XmlAttribute(required = true)
    private BigDecimal containerFCL40GPquantity;
    @XmlAttribute(required = true)
    private BigDecimal containerFCL40REEFERGPquantity;
    @XmlAttribute(required = true)
    private BigDecimal containerFCL40HIGHCUBEquantity;
    @XmlAttribute(required = true)
    private BigDecimal containerFCL40REEFERHIGHCUBEquantity;
    @XmlAttribute(required = true)
    private BigDecimal containerLCLSEAquantity;
    @XmlAttribute(required = true)
    private BigDecimal noDaysToLatestShipmentDate;
    @XmlAttribute(required = true)
    private String status;
    @XmlAttribute(required = true)
    private String businessState;
    @XmlAttribute(required = true)
    private String orderComments;
    @XmlAttribute(required = true)
    private String consignmentComments;

    @XmlJavaTypeAdapter(value = XmlAdapterDate.class, type = java.util.Date.class)
    private Date bookingDate;

    @XmlJavaTypeAdapter(value = XmlAdapterDate.class, type = java.util.Date.class)
    private Date cargoReadyDate;

    @XmlJavaTypeAdapter(value = XmlAdapterDate.class, type = java.util.Date.class)
    private Date originalCargoReadyDate;

    @XmlAttribute(required = true)
    String plannedCargoCarrier;

    @XmlAttribute(required = true)
    String plannedPortOfDischarge;

    @XmlJavaTypeAdapter(value = XmlAdapterDate.class, type = java.util.Date.class)
    private Date freightReceivedDate;

    @XmlAttribute(required = true)
    private String styleReference;
    @XmlAttribute(required = true)
    private String styleDescription;
    @XmlAttribute(required = true)
    private String lspBookingReference;

    @XmlAttribute(required = true)
    String country;

    @XmlAttribute(required = true)
    private String previouslyBooked;

    private BigDecimal totalQuantity;

    private BigDecimal retailValueOfOrders;

    private BigDecimal customsDuty;
    private BigDecimal customsVat;

    private Date availabilityDate;

    private Date supplierBookingRequestDate;

    private Long organisationalUnitId;

    public String getPreviouslyBooked() {
        return previouslyBooked;
    }

    public void setPreviouslyBooked(String previouslyBooked) {
        this.previouslyBooked = previouslyBooked;
    }

    public String getConsignmentReference() {
        return consignmentReference;
    }

    public void setConsignmentReference(String consignmentReference) {
        this.consignmentReference = consignmentReference;
    }

    public String getOrderReference() {
        return orderReference;
    }

    public Date getCargoReadyDate() {
        return cargoReadyDate;
    }

    public void setCargoReadyDate(Date cargoReadyDate) {
        this.cargoReadyDate = cargoReadyDate;
    }

    public String getPlannedCargoCarrier() {
        return plannedCargoCarrier;
    }

    public void setPlannedCargoCarrier(String plannedCargoCarrier) {
        this.plannedCargoCarrier = plannedCargoCarrier;
    }

    public String getPlannedPortOfDischarge() {
        return plannedPortOfDischarge;
    }

    public void setPlannedPortOfDischarge(String plannedPortOfDischarge) {
        this.plannedPortOfDischarge = plannedPortOfDischarge;
    }

    public Date getOriginalCargoReadyDate() {
        return originalCargoReadyDate;
    }

    public void setOriginalCargoReadyDate(Date originalCargoReadyDate) {
        this.originalCargoReadyDate = originalCargoReadyDate;
    }

    public void setOrderReference(String orderReference) {
        this.orderReference = orderReference;
    }

    public String getProFormaReference() {
        return proFormaReference;
    }

    public void setProFormaReference(String proFormaReference) {
        this.proFormaReference = proFormaReference;
    }

    public String getShippingReference() {
        return shippingReference;
    }

    public void setShippingReference(String shippingReference) {
        this.shippingReference = shippingReference;
    }

    public Date getOriginalLatestShipmentDate() {
        return originalLatestShipmentDate;
    }

    public void setOriginalLatestShipmentDate(Date originalLatestShipmentDate) {
        this.originalLatestShipmentDate = originalLatestShipmentDate;
    }

    public Date getRequiredOnSiteDate() {
        return requiredOnSiteDate;
    }

    public void setRequiredOnSiteDate(Date requiredOnSiteDate) {
        this.requiredOnSiteDate = requiredOnSiteDate;
    }

    public String getFreightForwarderName() {
        return freightForwarderName;
    }

    public void setFreightForwarderName(String freightForwarderName) {
        this.freightForwarderName = freightForwarderName;
    }

    public String getCarrierName() {
        return carrierName;
    }

    public void setCarrierName(String carrierName) {
        this.carrierName = carrierName;
    }

    public String getOrganisationalUnitName() {
        return organisationalUnitName;
    }

    public void setOrganisationalUnitName(String organisationalUnitName) {
        this.organisationalUnitName = organisationalUnitName;
    }

    public String getBuyerName() {
        return buyerName;
    }

    public void setBuyerName(String buyerName) {
        this.buyerName = buyerName;
    }

    public String getSupplierName() {
        return supplierName;
    }

    public void setSupplierName(String supplierName) {
        this.supplierName = supplierName;
    }

    public BigDecimal getSupplierInvoiceValue() {
        return supplierInvoiceValue;
    }

    public void setSupplierInvoiceValue(BigDecimal supplierInvoiceValue) {
        this.supplierInvoiceValue = supplierInvoiceValue;
    }

    public String getSupplierInvoiceCurrency() {
        return supplierInvoiceCurrency;
    }

    public void setSupplierInvoiceCurrency(String supplierInvoiceCurrency) {
        this.supplierInvoiceCurrency = supplierInvoiceCurrency;
    }

    public String getPaymentMethod() {
        return paymentMethod;
    }

    public void setPaymentMethod(String paymentMethod) {
        this.paymentMethod = paymentMethod;
    }

    public String getPaymentTerm() {
        return paymentTerm;
    }

    public void setPaymentTerm(String paymentTerm) {
        this.paymentTerm = paymentTerm;
    }

    public String getLcBankName() {
        return lcBankName;
    }

    public void setLcBankName(String lcBankName) {
        this.lcBankName = lcBankName;
    }

    public String getLcBankReference() {
        return lcBankReference;
    }

    public void setLcBankReference(String lcBankReference) {
        this.lcBankReference = lcBankReference;
    }

    public String getLcNumber() {
        return lcNumber;
    }

    public void setLcNumber(String lcNumber) {
        this.lcNumber = lcNumber;
    }

    public Date getLcEstablishedDate() {
        return lcEstablishedDate;
    }

    public void setLcEstablishedDate(Date lcEstablishedDate) {
        this.lcEstablishedDate = lcEstablishedDate;
    }

    public String getPlaceOfLoading() {
        return placeOfLoading;
    }

    public void setPlaceOfLoading(String placeOfLoading) {
        this.placeOfLoading = placeOfLoading;
    }

    public String getPlaceOfDischarge() {
        return placeOfDischarge;
    }

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

    public String getFinalDestination() {
        return finalDestination;
    }

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

    public String getShippingMode() {
        return shippingMode;
    }

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

    public String getIncoTerm() {
        return incoTerm;
    }

    public void setIncoTerm(String incoTerm) {
        this.incoTerm = incoTerm;
    }

    public Date getPlannedShipmentDate() {
        return plannedShipmentDate;
    }

    public void setPlannedShipmentDate(Date plannedShipmentDate) {
        this.plannedShipmentDate = plannedShipmentDate;
    }

    public Date getEstimatedArrivalDate() {
        return estimatedArrivalDate;
    }

    public void setEstimatedArrivalDate(Date estimatedArrivalDate) {
        this.estimatedArrivalDate = estimatedArrivalDate;
    }

    public String getVesselName() {
        return vesselName;
    }

    public void setVesselName(String vesselName) {
        this.vesselName = vesselName;
    }

    public BigDecimal getTotalWeight() {
        return totalWeight;
    }

    public void setTotalWeight(BigDecimal totalWeight) {
        this.totalWeight = totalWeight;
    }

    public BigDecimal getTotalVolume() {
        return totalVolume;
    }

    public void setTotalVolume(BigDecimal totalVolume) {
        this.totalVolume = totalVolume;
    }

    public BigDecimal getTEUs() {
        return TEUs;
    }

    public void setTEUs(BigDecimal TEUs) {
        this.TEUs = TEUs;
    }

    public BigDecimal getContainerFCL20GPquantity() {
        return containerFCL20GPquantity;
    }

    public void setContainerFCL20GPquantity(BigDecimal containerFCL20GPquantity) {
        this.containerFCL20GPquantity = containerFCL20GPquantity;
    }

    public BigDecimal getContainerFCL20REEFERGPquantity() {
        return containerFCL20REEFERGPquantity;
    }

    public void setContainerFCL20REEFERGPquantity(BigDecimal containerFCL20REEFERGPquantity) {
        this.containerFCL20REEFERGPquantity = containerFCL20REEFERGPquantity;
    }

    public BigDecimal getContainerFCL40GPquantity() {
        return containerFCL40GPquantity;
    }

    public void setContainerFCL40GPquantity(BigDecimal containerFCL40GPquantity) {
        this.containerFCL40GPquantity = containerFCL40GPquantity;
    }

    public BigDecimal getContainerFCL40REEFERGPquantity() {
        return containerFCL40REEFERGPquantity;
    }

    public void setContainerFCL40REEFERGPquantity(BigDecimal containerFCL40REEFERGPquantity) {
        this.containerFCL40REEFERGPquantity = containerFCL40REEFERGPquantity;
    }

    public BigDecimal getContainerFCL40HIGHCUBEquantity() {
        return containerFCL40HIGHCUBEquantity;
    }

    public void setContainerFCL40HIGHCUBEquantity(BigDecimal containerFCL40HIGHCUBEquantity) {
        this.containerFCL40HIGHCUBEquantity = containerFCL40HIGHCUBEquantity;
    }

    public BigDecimal getContainerFCL40REEFERHIGHCUBEquantity() {
        return containerFCL40REEFERHIGHCUBEquantity;
    }

    public void setContainerFCL40REEFERHIGHCUBEquantity(BigDecimal containerFCL40REEFERHIGHCUBEquantity) {
        this.containerFCL40REEFERHIGHCUBEquantity = containerFCL40REEFERHIGHCUBEquantity;
    }

    public BigDecimal getContainerLCLSEAquantity() {
        return containerLCLSEAquantity;
    }

    public void setContainerLCLSEAquantity(BigDecimal containerLCLSEAquantity) {
        this.containerLCLSEAquantity = containerLCLSEAquantity;
    }

    public BigDecimal getNoDaysToLatestShipmentDate() {
        return noDaysToLatestShipmentDate;
    }

    public void setNoDaysToLatestShipmentDate(BigDecimal noDaysToLatestShipmentDate) {
        this.noDaysToLatestShipmentDate = noDaysToLatestShipmentDate;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getBusinessState() {
        return businessState;
    }

    public void setBusinessState(String businessState) {
        this.businessState = businessState;
    }

    public String getOrderComments() {
        return orderComments;
    }

    public void setOrderComments(String orderComments) {
        this.orderComments = orderComments;
    }

    public String getConsignmentComments() {
        return consignmentComments;
    }

    public void setConsignmentComments(String consignmentComments) {
        this.consignmentComments = consignmentComments;
    }

    public Date getBookingDate() {
        return bookingDate;
    }

    public void setBookingDate(Date bookingDate) {
        this.bookingDate = bookingDate;
    }

    public Date getFreightReceivedDate() {
        return freightReceivedDate;
    }

    public void setFreightReceivedDate(Date freightReceivedDate) {
        this.freightReceivedDate = freightReceivedDate;
    }

    public String getStyleReference() {
        return styleReference;
    }

    public void setStyleReference(String styleReference) {
        this.styleReference = styleReference;
    }

    public String getStyleDescription() {
        return styleDescription;
    }

    public void setStyleDescription(String styleDescription) {
        this.styleDescription = styleDescription;
    }

    public String getLspBookingReference() {
        return lspBookingReference;
    }

    public void setLspBookingReference(String lspBookingReference) {
        this.lspBookingReference = lspBookingReference;
    }

    public String getForwardRate() {
        return forwardRate;
    }

    public void setForwardRate(String forwardRate) {
        this.forwardRate = forwardRate;
    }

    public String getSpotRate() {
        return spotRate;
    }

    public void setSpotRate(String spotRate) {
        this.spotRate = spotRate;
    }

    public String getCountry() {
        return country;
    }

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

    public BigDecimal getTotalQuantity() {
        return totalQuantity;
    }

    public void setTotalQuantity(BigDecimal totalQuantity) {
        this.totalQuantity = totalQuantity;
    }

    public BigDecimal getCostValue() {
        String rate = Optional.ofNullable(getForwardRate()).orElse("0.00");
        return new BigDecimal(rate).multiply(getSupplierInvoiceValue());
    }

    public BigDecimal getRetailValueOfOrders() {
        return retailValueOfOrders;
    }

    public void setRetailValueOfOrders(BigDecimal retailValueOfOrders) {
        this.retailValueOfOrders = retailValueOfOrders;
    }

    public BigDecimal getCustomsDuty() {
        return customsDuty;
    }

    public void setCustomsDuty(BigDecimal customsDuty) {
        this.customsDuty = customsDuty;
    }

    public BigDecimal getCustomsVat() {
        return customsVat;
    }

    public void setCustomsVat(BigDecimal customsVat) {
        this.customsVat = customsVat;
    }

    public Date getAvailabilityDate() {
        return availabilityDate;
    }

    public void setAvailabilityDate(Date availabilityDate) {
        this.availabilityDate = availabilityDate;
    }

    public Date getSupplierBookingRequestDate() {
        return supplierBookingRequestDate;
    }

    public void setSupplierBookingRequestDate(Date supplierBookingRequestDate) {
        this.supplierBookingRequestDate = supplierBookingRequestDate;
    }

    public Long getOrganisationalUnitId() {
        return organisationalUnitId;
    }

    public void setOrganisationalUnitId(Long organisationalUnitId) {
        this.organisationalUnitId = organisationalUnitId;
    }
}