ServiceProviderCreditNote.java

package com.tradecloud.domain.document;

import com.tradecloud.domain.document.invoice.BaseServiceProviderInvoice;
import com.tradecloud.domain.document.invoice.ServiceProviderInvoice;
import com.tradecloud.domain.settlement.RateDateSource;
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.XmlRootElement;
import java.math.BigDecimal;
import java.util.Date;

@Entity
@Table(name = "serviceprovidercreditnote")
@NamedQueries({
        @NamedQuery(name = "serviceProviderCreditNote.byReference",
                query = "from ServiceProviderCreditNote spcn where spcn.reference = :reference"),
        @NamedQuery(name = "serviceProviderCreditNote.byReferenceAndServiceProvider",
                query = "from ServiceProviderCreditNote spcn where spcn.reference = :reference and spcn.serviceProvider = :serviceProvider"),
        @NamedQuery(name = "serviceProviderCreditNote.byServiceProviderInvoice",
                query = "from ServiceProviderCreditNote spcn where spcn.serviceProviderInvoice = :serviceProviderInvoice")})
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "ServiceProviderCreditNote")
public class ServiceProviderCreditNote extends BaseServiceProviderInvoice {

    private static final long serialVersionUID = 1L;

    @NotNull
    @OneToOne
    private ServiceProviderInvoice serviceProviderInvoice;

    @Override
    public Date resolveRateDate(RateDateSource source) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public DocumentType getDocumentType() {
        return DocumentType.SERVICE_PROVIDER_CREDIT_NOTE;
    }

    @Override
    public Object getTraversalKey() {
        return new MultiKey(ServiceProviderCreditNote.class, reference);
    }

    @Override
    public BigDecimal getNetLocalVatable() {
        return null;
    }

    @Override
    public BigDecimal getNetLocalNonVatable() {
        return null;
    }

    public ServiceProviderInvoice getServiceProviderInvoice() {
        return serviceProviderInvoice;
    }

    public void setServiceProviderInvoice(ServiceProviderInvoice serviceProviderInvoice) {
        this.serviceProviderInvoice = serviceProviderInvoice;
    }

    @Override
    public String getSplitInvoiceReference() {
        return null;
    }

    @Transient
    public String getType() {
        return "SPCN";
    }
}