/*
 * 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.Taxi;
import com.arrebol.taxiservicios.model.catalog.BankCard;
import com.arrebol.taxiservicios.model.catalog.Location;
import com.arrebol.taxiservicios.model.core.Person;
import com.arrebol.taxiservicios.model.core.User;
import com.arrebol.taxiservicios.model.enums.BasicType;
import com.arrebol.taxiservicios.model.enums.ExpenseStatusType;
import com.arrebol.taxiservicios.model.enums.StatusType;
import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

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

    private static final long serialVersionUID = -7926002164459925566L;

    private String id;
    private String folio;
    private Date buyDate;
    private String comment;
    private Float subtotal;
    private Float iva;
    private Float total;
    private StatusType statusType;
    private Boolean active;
    private Person person;
    private Person driver;
    private User createdBy;
    private Date createdOn;
    private User lastUpdatedBy;
    private Date lastUpdatedOn;
    private Taxi taxi;
    private Location location;
    private Location locationSend;
    private BasicType paid;
    private Set invoiceHasProducts = new HashSet(0);
    private Set productInvoiceBks = new HashSet(0);
    private StatusType authorize;
    private BankCard bankCard;
    private ExpenseStatusType depositStatus;

    public Invoice() {
    }

    public Invoice(String id, String folio, Date buyDate, Person person, Float subtotal, Float iva, Float total, StatusType statusType, Date createdOn, String comment, StatusType authorize,Taxi taxi) {
        this.id = id;
        this.folio = folio;
        this.buyDate = buyDate;
        this.person = person;
        this.subtotal = subtotal;
        this.iva = iva;
        this.total = total;
        this.statusType = statusType;
        this.createdOn = createdOn;
        this.comment = comment;
        this.authorize = authorize;
        this.taxi = taxi;
    }

    /**
     *
     * @param id
     * @param folio
     * @param buyDate
     * @param comment
     * @param subtotal
     * @param iva
     * @param total
     * @param statusType
     * @param active
     * @param person
     * @param createdBy
     * @param createdOn
     */
    public Invoice(String id, String folio, Date buyDate, String comment, Float subtotal, Float iva, Float total, StatusType statusType, Boolean active, Person person, User createdBy, Date createdOn) {
        this.id = id;
        this.folio = folio;
        this.buyDate = buyDate;
        this.comment = comment;
        this.subtotal = subtotal;
        this.iva = iva;
        this.total = total;
        this.statusType = statusType;
        this.active = active;
        this.person = person;
        this.createdBy = createdBy;
        this.createdOn = createdOn;
    }

    public Invoice(String id) {
        this.id = id;
    }

    public String getId() {
        return id;
    }

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

    public String getFolio() {
        return folio;
    }

    public void setFolio(String folio) {
        this.folio = folio;
    }

    public Date getBuyDate() {
        return buyDate;
    }

    public void setBuyDate(Date buyDate) {
        this.buyDate = buyDate;
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }

    public Float getSubtotal() {
        return subtotal;
    }

    public void setSubtotal(Float subtotal) {
        this.subtotal = subtotal;
    }

    public Float getIva() {
        return iva;
    }

    public void setIva(Float iva) {
        this.iva = iva;
    }

    public Float getTotal() {
        return total;
    }

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

    public StatusType getStatusType() {
        return statusType;
    }

    public void setStatusType(StatusType statusType) {
        this.statusType = statusType;
    }

    public Boolean getActive() {
        return active;
    }

    public void setActive(Boolean active) {
        this.active = active;
    }

    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }

    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 Set getInvoiceHasProducts() {
        return invoiceHasProducts;
    }

    public void setInvoiceHasProducts(Set invoiceHasProducts) {
        this.invoiceHasProducts = invoiceHasProducts;
    }

    public Set getProductInvoiceBks() {
        return productInvoiceBks;
    }

    public void setProductInvoiceBks(Set productInvoiceBks) {
        this.productInvoiceBks = productInvoiceBks;
    }

    public Taxi getTaxi() {
        return taxi;
    }

    public void setTaxi(Taxi taxi) {
        this.taxi = taxi;
    }

    public Location getLocation() {
        return location;
    }

    public void setLocation(Location location) {
        this.location = location;
    }

    public Person getDriver() {
        return driver;
    }

    public void setDriver(Person driver) {
        this.driver = driver;
    }

    public BasicType getPaid() {
        return paid;
    }

    public void setPaid(BasicType paid) {
        this.paid = paid;
    }

    public Location getLocationSend() {
        return locationSend;
    }

    public void setLocationSend(Location locationSend) {
        this.locationSend = locationSend;
    }

    @Override
    public String toString() {
        return "Invoice{" + "id=" + id + ", folio=" + folio + ", buyDate=" + buyDate + ", comment=" + comment + ", subtotal=" + subtotal + ", iva=" + iva + ", total=" + total + ", active=" + active + ", statusType=" + statusType + '}';
    }

    public StatusType getAuthorize() {
        return authorize;
    }

    public void setAuthorize(StatusType authorize) {
        this.authorize = authorize;
    }

    public BankCard getBankCard() {
        return bankCard;
    }

    public void setBankCard(BankCard bankCard) {
        this.bankCard = bankCard;
    }

    public ExpenseStatusType getDepositStatus() {
        return depositStatus;
    }

    public void setDepositStatus(ExpenseStatusType depositStatus) {
        this.depositStatus = depositStatus;
    }
    
    
}
