DeclarationInvoice.java
package com.tradecloud.domain.document.invoice;
import com.tradecloud.domain.configuration.SPICostlineCurrency;
import com.tradecloud.domain.costing.CostableCostDefinition;
import com.tradecloud.domain.costing.clean.ActualCostSummary;
import com.tradecloud.domain.costing.clean.Costed;
import com.tradecloud.domain.costing.clean.CostingVisitor;
import com.tradecloud.domain.document.DocumentType;
import com.tradecloud.domain.settlement.PlannedSettlement;
import com.tradecloud.domain.shipment.clearing.CustomsDeclaration;
import com.tradecloud.domain.supplier.Creditor;
import org.apache.commons.collections4.keyvalue.MultiKey;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
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.ArrayList;
import java.util.List;
import java.util.Set;
@Entity
@NamedQueries({
@NamedQuery(name = "declarationInvoice.byReference",
query = "from DeclarationInvoice spi where spi.reference = :reference and spi.state != 'DELETED'")})
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "declarationInvoice")
public class DeclarationInvoice extends CostsInvoice {
@OneToOne(fetch = FetchType.LAZY)
@NotNull
private CommercialInvoice commercialInvoice;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
private CustomsDeclaration customsDeclaration;
@NotNull(message = "quantity is required")
@XmlAttribute
private BigDecimal quantity;
private transient ActualCostSummary actualCostSummary;
@Override
public BigDecimal getWeightedAverageForwardRateOfExchange() {
return null;
}
@Override
public BigDecimal getWeightedAverageSpotRateOfExchange() {
return null;
}
@Override
public String getType() {
return null;
}
@Override
public void accept(CostingVisitor costingVisitor) {
for (ActualConsignment actualConsignment : getActualConsignments()) {
actualConsignment.accept(costingVisitor);
}
costingVisitor.visit(this);
}
@Override
public void acceptVisitParentFirst(CostingVisitor costingVisitor) {
costingVisitor.visit(this);
for (ActualConsignment actualConsignment : getActualConsignments()) {
actualConsignment.acceptVisitParentFirst(costingVisitor);
}
}
@Override
public List getCostedChildren() {
return new ArrayList<Costed>(getActualConsignments());
}
@Override
public DocumentType getDocumentType() {
return DocumentType.CUSTOM_DECLARATION_INVOICE;
}
@Override
public Creditor getCreditor() {
return null;
}
@Override
public Object getTraversalKey() {
return new MultiKey(DeclarationInvoice.class, reference);
}
@Override
public Set<PlannedSettlement> getPlannedSettlements() {
return null;
}
@Override
public void setPlannedSettlements(Set<PlannedSettlement> plannedSettlements) {
}
public CommercialInvoice getCommercialInvoice() {
return commercialInvoice;
}
public void setCommercialInvoice(CommercialInvoice commercialInvoice) {
this.commercialInvoice = commercialInvoice;
}
public CustomsDeclaration getCustomsDeclaration() {
return customsDeclaration;
}
public void setCustomsDeclaration(CustomsDeclaration customsDeclaration) {
this.customsDeclaration = customsDeclaration;
}
public BigDecimal getQuantity() {
return quantity;
}
public void setQuantity(BigDecimal quantity) {
this.quantity = quantity;
}
public ActualCostSummary getActualCostSummary() {
return actualCostSummary;
}
public void setActualCostSummary(ActualCostSummary actualCostSummary) {
this.actualCostSummary = actualCostSummary;
}
@Override
public SPICostlineCurrency getSpiCostlineCurrency() {
return SPICostlineCurrency.MIXED_CURRENCIES;
}
@Override
public CostableCostDefinition getCostableCostDefinition() {
return shipment.getClearingCostableCostDefinition();
}
@Override
public void setCostableCostDefinition(CostableCostDefinition costableCostDefinition) {
this.shipment.setClearingCostableCostDefinition(costableCostDefinition);
}
}