InvoiceCostline.java

package com.tradecloud.domain.costing;

import com.tradecloud.domain.document.DocumentCostline;
import com.tradecloud.domain.document.invoice.CommercialInvoice;

import javax.persistence.*;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import java.math.BigDecimal;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * InvoiceCostline generated by hbm2java.
 */
@Entity
@Table(name = "invoicecostline")
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
public class InvoiceCostline extends DocumentCostline {

    private static final long serialVersionUID = 1L;

    /**
     * Parent.
     */
    @ManyToOne
    @XmlElement(name = "CommercialInvoice")
    private CommercialInvoice invoice;

    @OneToMany
    @XmlElementWrapper(name = "CreditNoteCostLines")
    @XmlElement(name = "CreditNoteCostLine")
    private Set<CreditNoteCostLine> creditNoteCostlines = new HashSet<CreditNoteCostLine>();

    /**
     * Simple constructor of InvoiceCostline instances.
     */
    public InvoiceCostline() {
    }

    public CommercialInvoice getInvoice() {
        return invoice;
    }

    public void setInvoice(CommercialInvoice invoice) {
        this.invoice = invoice;
    }

    public Set<CreditNoteCostLine> getCreditNoteCostlines() {
        return creditNoteCostlines;
    }

    public void setCreditNoteCostlines(Set<CreditNoteCostLine> creditNoteCostlines) {
        this.creditNoteCostlines = creditNoteCostlines;
    }

    public void addCreditNoteCostline(CreditNoteCostLine creditNoteCostline) {
        creditNoteCostline.setInvoiceCostline(this);
        getCreditNoteCostlines().add(creditNoteCostline);
    }

    public BigDecimal getNettAmount() {
        BigDecimal creditedAmount = new BigDecimal("0.0");
        for (Iterator iter = getCreditNoteCostlines().iterator(); iter.hasNext(); ) {
            CreditNoteCostLine creditNoteCostline = (CreditNoteCostLine) iter.next();
            creditedAmount = creditedAmount.add(creditNoteCostline.getAmount());
        }
        return getAmount().subtract(creditedAmount);
    }

}