package com.arrebol.taxiservicios.model.stocktaking;

import com.arrebol.taxiservicios.model.catalog.Product;
import com.arrebol.taxiservicios.model.core.User;
import com.arrebol.taxiservicios.model.enums.BasicType;
import java.io.Serializable;
import java.util.Date;

/**
 *
 * @author Carlos Janitzio Zavala Lopez
 */
public class InvoiceHasProduct implements Serializable {

    private static final long serialVersionUID = -1308028966372243450L;

    private InvoiceHasProductId id;
    private Invoice invoice;
    private Product product;
    private Float price;
    private Float priceMenudeo;
    private Integer quantity;
    private User createdBy;
    private Date createdOn;
    private User lastUpdatedBy;
    private Date lastUpdatedOn;
    private BasicType commercialInvoiceStatus;

    public InvoiceHasProduct() {
    }

    public InvoiceHasProduct(InvoiceHasProductId id, Invoice invoice, Product product) {
        this.id = id;
        this.invoice = invoice;
        this.product = product;
    }

    /**
     *
     * @param id
     * @param product
     * @param price
     * @param quantity
     */
    public InvoiceHasProduct(InvoiceHasProductId id, Product product, Float price, Integer quantity) {
        this.id = id;
        this.product = product;
        this.price = price;
        this.quantity = quantity;
    }
    
    public InvoiceHasProduct(InvoiceHasProductId id, Product product, Float priceMenudeo, Integer quantity, User createdBy) {
        this.id = id;
        this.product = product;
        this.priceMenudeo = priceMenudeo;
        this.quantity = quantity;
        this.createdBy = createdBy;
    }

    /**
     *
     * @param product
     */
    public InvoiceHasProduct(Product product) {
        this.product = product;
    }

    /**
     *
     * @param id Primary Key
     * @param price Price without Taxes.
     * @param quantity Quantity.
     * @param createdBy Created User
     * @param createdOn Date of creation.
     */
    public InvoiceHasProduct(InvoiceHasProductId id, Float price, Integer quantity, User createdBy, Date createdOn) {
        this.id = id;
        this.price = price;
        this.quantity = quantity;
        this.createdBy = createdBy;
        this.createdOn = createdOn;
    }
    
    public InvoiceHasProduct(InvoiceHasProductId id, Float price, Integer quantity, User createdBy, Date createdOn, Float priceMenudeo) {
        this.id = id;
        this.price = price;
        this.quantity = quantity;
        this.createdBy = createdBy;
        this.createdOn = createdOn;
        this.priceMenudeo = priceMenudeo;
    }
    
    public InvoiceHasProduct(InvoiceHasProductId id, Float price, Integer quantity, User createdBy, Date createdOn, Float priceMenudeo, BasicType commercialInvoiceStatus) {
        this.id = id;
        this.price = price;
        this.quantity = quantity;
        this.createdBy = createdBy;
        this.createdOn = createdOn;
        this.priceMenudeo = priceMenudeo;
        this.commercialInvoiceStatus = commercialInvoiceStatus;
    }

    public InvoiceHasProduct(InvoiceHasProductId id) {
        this.id = id;
    }

    public InvoiceHasProduct(Invoice invoice, Product product) {
        this.invoice = invoice;
        this.product = product;
    }

    public InvoiceHasProduct(Invoice invoice) {
    }

    public InvoiceHasProductId getId() {
        return id;
    }

    public void setId(InvoiceHasProductId id) {
        this.id = id;
    }

    public Invoice getInvoice() {
        return invoice;
    }

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

    public Product getProduct() {
        return product;
    }

    public void setProduct(Product product) {
        this.product = product;
    }

    public Float getPrice() {
        return price;
    }

    public void setPrice(Float price) {
        this.price = price;
    }

    public Integer getQuantity() {
        return quantity;
    }

    public void setQuantity(Integer quantity) {
        this.quantity = quantity;
    }

    public User getCreatedBy() {
        return createdBy;
    }

    public void setCreatedBy(User createdBy) {
        this.createdBy = createdBy;
    }

    public Date getCreatedOn() {
        return createdOn;
    }

    public void setCreatedOn(Date createdOn) {
        this.createdOn = createdOn;
    }

    public User getLastUpdatedBy() {
        return lastUpdatedBy;
    }

    public void setLastUpdatedBy(User lastUpdatedBy) {
        this.lastUpdatedBy = lastUpdatedBy;
    }

    public Date getLastUpdatedOn() {
        return lastUpdatedOn;
    }

    public void setLastUpdatedOn(Date lastUpdatedOn) {
        this.lastUpdatedOn = lastUpdatedOn;
    }

    public Float getPriceMenudeo() {
        return priceMenudeo;
    }

    public void setPriceMenudeo(Float priceMenudeo) {
        this.priceMenudeo = priceMenudeo;
    }

    public BasicType getCommercialInvoiceStatus() {
        return commercialInvoiceStatus;
    }

    public void setCommercialInvoiceStatus(BasicType commercialInvoiceStatus) {
        this.commercialInvoiceStatus = commercialInvoiceStatus;
    }
    
    

}
