CommercialCreditNote.java
package com.tradecloud.domain.document;
import com.tradecloud.domain.document.invoice.BaseCommercialInvoice;
import com.tradecloud.domain.document.invoice.CommercialInvoice;
import com.tradecloud.domain.document.invoice.UnitPricePerItem;
import com.tradecloud.domain.model.organisationalunit.OrganisationalUnit;
import com.tradecloud.domain.settlement.PlannedSettlement;
import com.tradecloud.domain.supplier.OrganisationalUnitSupplier;
import org.apache.commons.collections4.keyvalue.MultiKey;
import org.springframework.stereotype.Component;
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.XmlRootElement;
import java.math.BigDecimal;
import java.util.List;
import java.util.Set;
@Entity
@Component(value = "commercialcreditnote")
@Table(name = "commercialcreditnote")
@NamedQueries({
@NamedQuery(name = "commercialCreditNote.byShipment", query = "from CommercialCreditNote where shipment.id = :id"),
@NamedQuery(name = "commercialCreditNote.byReference", query = "from CommercialCreditNote where reference = :reference"),
@NamedQuery(name = "commercialCreditNote.byReferenceAndSupplier",
query = "from CommercialCreditNote where reference = :reference and supplier = :supplier")})
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "CommercialCreditNote")
public class CommercialCreditNote extends BaseCommercialInvoice {
private static final long serialVersionUID = 1L;
public CommercialCreditNote() {
}
public CommercialCreditNote(OrganisationalUnit organisationalUnit, OrganisationalUnitSupplier supplier, BigDecimal quantity,
UnitPricePerItem unitPricePerItem, Set<PlannedSettlement> plannedSettlements) {
super(organisationalUnit, supplier, quantity, unitPricePerItem);
}
@OneToOne(cascade = {CascadeType.ALL})
@NotNull
private CommercialInvoice commercialInvoice;
@Override
public DocumentType getDocumentType() {
return DocumentType.COMMERCIAL_CREDIT_NOTE;
}
@Override
public Object getTraversalKey() {
return new MultiKey(CommercialCreditNote.class, reference);
}
@Override
public BigDecimal getWeightedAverageForwardRateOfExchange() {
return commercialInvoice.getWeightedAverageForwardRateOfExchange();
}
@Override
public BigDecimal getWeightedAverageSpotRateOfExchange() {
return commercialInvoice.getWeightedAverageSpotRateOfExchange();
}
public CommercialInvoice getCommercialInvoice() {
return commercialInvoice;
}
public void setCommercialInvoice(CommercialInvoice commercialInvoice) {
this.commercialInvoice = commercialInvoice;
}
@Override
public PaymentState getPaymentState() {
return PaymentState.UNSETTLED;
}
@Override
public boolean isSupplierInvoice() {
return true;
}
@Override
public List<PlannedSettlement> getPlannedSettlementList() {
return commercialInvoice.getPlannedSettlementList();
}
@Override
public Set<PlannedSettlement> getPlannedSettlements() {
return commercialInvoice.getPlannedSettlements();
}
@Override
public void setPlannedSettlements(Set<PlannedSettlement> plannedSettlements) {
}
@Transient
public String getType() {
return "CCN";
}
}