/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.arrebol.taxiservicios.model.stocktaking;

import com.arrebol.taxiservicios.model.admin.Expense;
import com.arrebol.taxiservicios.model.catalog.Product;
import com.arrebol.taxiservicios.model.core.User;
import com.arrebol.taxiservicios.model.enums.BasicType;
import com.arrebol.taxiservicios.model.view.report.PaymentClient;
import java.io.Serializable;
import java.util.Date;

/**
 *
 * @author Picasso
 */
public class ServiceOrderHasProduct implements Serializable {

    private static final long serialVersionUID = 9177232181467659679L;

    private ServiceOrderHasProductId id;
    private ServiceOrder serviceOrder;
    private Product product;
    private Integer quantity;
    private Float price;
    private Float total;
    private User createdBy;
    private Date createdOn;
    private User lastUpdatedBy;
    private Date lastUpdatedOn;
    private Float mayoreo;
    private BasicType cobrado;
    private BasicType financiado;
    private PaymentClient paymentClient;
    private Expense expense;
    private Date payDate;
    private User payCreatedBy;
    private Date financeDate;
    private User financeCreatedBy;
    private PaymentClient paymentClientFinance;
    private BasicType commercialInvoiceStatus;

    public ServiceOrderHasProduct() {
    }

    public ServiceOrderHasProduct(ServiceOrderHasProductId id) {
        this.id = id;
    }

    /**
     * Manager serivce order.
     *
     * @param id
     * @param product
     * @param quantity
     */
    public ServiceOrderHasProduct(ServiceOrderHasProductId id, Product product, Integer quantity) {
        this.id = id;
        this.product = product;
        this.quantity = quantity;
    }

    /**
     *
     * @param id
     * @param product
     * @param quantity
     * @param price
     * @param total
     */
    public ServiceOrderHasProduct(ServiceOrderHasProductId id, Product product,
            Integer quantity, Float price, Float total) {
        this.id = id;
        this.product = product;
        this.quantity = quantity;
        this.price = price;
        this.total = total;
    }
    
    public ServiceOrderHasProduct(ServiceOrderHasProductId id, Product product,
            Integer quantity, Float price, Float total, Float mayoreo) {
        this.id = id;
        this.product = product;
        this.quantity = quantity;
        this.price = price;
        this.total = total;
        this.mayoreo = mayoreo;
    }

    public ServiceOrderHasProduct(ServiceOrderHasProductId id, ServiceOrder serviceOrder, Product product, Integer quantity, Float price, Float total, User createdBy, Date createdOn, User lastUpdatedBy, Date lastUpdatedOn, Float mayoreo) {
        this.id = id;
        this.serviceOrder = serviceOrder;
        this.product = product;
        this.quantity = quantity;
        this.price = price;
        this.total = total;
        this.createdBy = createdBy;
        this.createdOn = createdOn;
        this.lastUpdatedBy = lastUpdatedBy;
        this.lastUpdatedOn = lastUpdatedOn;
        this.mayoreo = mayoreo;
    }

    public ServiceOrderHasProduct(ServiceOrderHasProductId id, ServiceOrder serviceOrder, Product product, Integer quantity, Float price, Float total, User createdBy, Date createdOn, User lastUpdatedBy, Date lastUpdatedOn, Float mayoreo, BasicType cobrado, BasicType financiado, PaymentClient paymentClient) {
        this.id = id;
        this.serviceOrder = serviceOrder;
        this.product = product;
        this.quantity = quantity;
        this.price = price;
        this.total = total;
        this.createdBy = createdBy;
        this.createdOn = createdOn;
        this.lastUpdatedBy = lastUpdatedBy;
        this.lastUpdatedOn = lastUpdatedOn;
        this.mayoreo = mayoreo;
        this.cobrado = cobrado;
        this.financiado = financiado;
        this.paymentClient = paymentClient;
    }

    public ServiceOrderHasProduct(ServiceOrderHasProductId id, ServiceOrder serviceOrder, Product product, Integer quantity, Float price, Float total, User createdBy, Date createdOn, User lastUpdatedBy, Date lastUpdatedOn, Float mayoreo, BasicType cobrado, BasicType financiado, PaymentClient paymentClient, Date payDate, User payCreatedBy, Date financeDate, User financeCreatedBy) {
        this.id = id;
        this.serviceOrder = serviceOrder;
        this.product = product;
        this.quantity = quantity;
        this.price = price;
        this.total = total;
        this.createdBy = createdBy;
        this.createdOn = createdOn;
        this.lastUpdatedBy = lastUpdatedBy;
        this.lastUpdatedOn = lastUpdatedOn;
        this.mayoreo = mayoreo;
        this.cobrado = cobrado;
        this.financiado = financiado;
        this.paymentClient = paymentClient;
        this.payDate = payDate;
        this.payCreatedBy = payCreatedBy;
        this.financeDate = financeDate;
        this.financeCreatedBy = financeCreatedBy;
    }

    public ServiceOrderHasProduct(ServiceOrderHasProductId id, ServiceOrder serviceOrder, Product product, Integer quantity, Float price, Float total, User createdBy, Date createdOn, User lastUpdatedBy, Date lastUpdatedOn, Float mayoreo, BasicType cobrado, BasicType financiado, PaymentClient paymentClient, Expense expense, Date payDate, User payCreatedBy, Date financeDate, User financeCreatedBy, PaymentClient paymentClientFinance) {
        this.id = id;
        this.serviceOrder = serviceOrder;
        this.product = product;
        this.quantity = quantity;
        this.price = price;
        this.total = total;
        this.createdBy = createdBy;
        this.createdOn = createdOn;
        this.lastUpdatedBy = lastUpdatedBy;
        this.lastUpdatedOn = lastUpdatedOn;
        this.mayoreo = mayoreo;
        this.cobrado = cobrado;
        this.financiado = financiado;
        this.paymentClient = paymentClient;
        this.expense = expense;
        this.payDate = payDate;
        this.payCreatedBy = payCreatedBy;
        this.financeDate = financeDate;
        this.financeCreatedBy = financeCreatedBy;
        this.paymentClientFinance = paymentClientFinance;
    }
    
    
    

    public BasicType getCobrado() {
        return cobrado;
    }

    public void setCobrado(BasicType cobrado) {
        this.cobrado = cobrado;
    }
    
    public ServiceOrderHasProduct(ServiceOrder serviceOrder) {
        this.serviceOrder = serviceOrder;
    }

    public ServiceOrderHasProduct(Product product) {
        this.product = product;
    }

    public ServiceOrderHasProduct(ServiceOrderHasProductId id, ServiceOrder serviceOrder, Product product) {
        this.id = id;
        this.serviceOrder = serviceOrder;
        this.product = product;
    }

    public Float getMayoreo() {
        return mayoreo;
    }

    public void setMayoreo(Float mayoreo) {
        this.mayoreo = mayoreo;
    }

    public ServiceOrderHasProductId getId() {
        return id;
    }

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

    public ServiceOrder getServiceOrder() {
        return serviceOrder;
    }

    public void setServiceOrder(ServiceOrder serviceOrder) {
        this.serviceOrder = serviceOrder;
    }

    public Product getProduct() {
        return product;
    }

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

    public Integer getQuantity() {
        return quantity;
    }

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

    public Float getPrice() {
        return price;
    }

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

    public Float getTotal() {
        return total;
    }

    public void setTotal(Float total) {
        this.total = total;
    }

    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 BasicType getFinanciado() {
        return financiado;
    }

    public void setFinanciado(BasicType financiado) {
        this.financiado = financiado;
    }

    public PaymentClient getPaymentClient() {
        return paymentClient;
    }

    public void setPaymentClient(PaymentClient paymenClient) {
        this.paymentClient = paymenClient;
    }

    public Date getPayDate() {
        return payDate;
    }

    public void setPayDate(Date payDate) {
        this.payDate = payDate;
    }

    public User getPayCreatedBy() {
        return payCreatedBy;
    }

    public void setPayCreatedBy(User payCreatedBy) {
        this.payCreatedBy = payCreatedBy;
    }

    public Date getFinanceDate() {
        return financeDate;
    }

    public void setFinanceDate(Date financeDate) {
        this.financeDate = financeDate;
    }

    public User getFinanceCreatedBy() {
        return financeCreatedBy;
    }

    public void setFinanceCreatedBy(User financeCreatedBy) {
        this.financeCreatedBy = financeCreatedBy;
    }

    public Expense getExpense() {
        return expense;
    }

    public void setExpense(Expense expense) {
        this.expense = expense;
    }

    public PaymentClient getPaymentClientFinance() {
        return paymentClientFinance;
    }

    public void setPaymentClientFinance(PaymentClient paymentClientFinance) {
        this.paymentClientFinance = paymentClientFinance;
    }

    public BasicType getCommercialInvoiceStatus() {
        return commercialInvoiceStatus;
    }

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

    
    @Override
    public String toString() {
        return "ServiceOrderHasProduct{" + "id=" + id + ", serviceOrder=" + serviceOrder + ", product=" + product + ", quantity=" + quantity + ", price=" + price + ", total=" + total + '}';
    }

}
