/*
 * 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.GeneralPublic;
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.User;
import com.arrebol.taxiservicios.model.enums.BasicType;
import com.arrebol.taxiservicios.model.enums.ExpenseStatusType;
import com.arrebol.taxiservicios.model.enums.PaymentMethodType;
import com.arrebol.taxiservicios.model.enums.ServiceOrderType;
import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;

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

    private String id;
    private String name;
    private Integer nameNumber;
    private Float km;
    private Float kmMaintenance;
    private Float subtotal;
    private Float iva;
    private Float total;
    private ServiceOrderType serviceOrderType;
    private PaymentMethodType paymentMethodType;
    private BasicType tallerExterno;
    private Taxi taxi;
    private Boolean active;
    private Date paseTallerDate;
    private Date pendingDate;
    private Date approvateDate;
    private Date progressDate;
    private Date finishDate;
    private String description;
    private User createdBy;
    private Date createdOn;
    private User lastUpdatedBy;
    private Date lastUpdatedOn;
    private User paseTallerUser;
    private User pendienteUser;
    private User aprobadoUser;
    private User progresoUser;
    private User terminadoUser;
    private Location location;
    private User payUser;
    private Date payDate;
    private BankCard bankCard;
    private ExpenseStatusType depositStatus;
    private Set serviceOrderHasProducts = new HashSet(0);

    private GeneralPublic generalPublic;

    public ServiceOrder() {
    }

    /**
     *
     * @param name Folio name.
     * @param progressDate Progress date time.
     * @param finishDate Finish date time.
     */
    public ServiceOrder(String name, Date progressDate, Date finishDate) {
        this.name = name;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
    }

    /**
     *
     * @param progressDate Progress date time.
     * @param finishDate Finish date time.
     */
    public ServiceOrder(Date progressDate, Date finishDate) {
        this.progressDate = progressDate;
        this.finishDate = finishDate;
    }

    /**
     *
     * @param id
     */
    public ServiceOrder(String id) {
        this.id = id;
    }

    /**
     *
     * @param id
     * @param name
     * @param serviceOrderType
     * @param taxi
     */
    public ServiceOrder(String id, String name, ServiceOrderType serviceOrderType, Taxi taxi) {
        this.id = id;
        this.name = name;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
    }

    /**
     *
     * @param id
     * @param name
     * @param serviceOrderType
     * @param taxi
     * @param createdOn
     */
    public ServiceOrder(String id, String name, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn) {
        this.id = id;
        this.name = name;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
    }

    /**
     *
     * @param id
     * @param name
     * @param serviceOrderType
     * @param taxi
     * @param createdOn
     * @param pendingDate
     * @param approvateDate
     * @param progressDate
     * @param finishDate
     * @param description
     */
    public ServiceOrder(String id, String name, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description) {
        this.id = id;
        this.name = name;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
    }

    /**
     *
     * @param id
     * @param name
     * @param serviceOrderType
     * @param taxi
     * @param createdOn
     * @param pendingDate
     * @param approvateDate
     * @param progressDate
     * @param finishDate
     * @param description
     * @param km
     */
    public ServiceOrder(String id, String name, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float km) {
        this.id = id;
        this.name = name;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.km = km;
    }

    public ServiceOrder(String id, String name, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float km, Date paseTallerDate) {
        this.id = id;
        this.name = name;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.km = km;
        this.paseTallerDate = paseTallerDate;
    }

    public ServiceOrder(String id, String name, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float km, Date paseTallerDate, BasicType tallerExterno) {
        this.id = id;
        this.name = name;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.km = km;
        this.paseTallerDate = paseTallerDate;
        this.tallerExterno = tallerExterno;
    }

    /**
     *
     * @param id
     * @param name
     * @param nameNumber
     * @param km
     * @param serviceOrderType
     */
    public ServiceOrder(String id, String name, Integer nameNumber, Float km, ServiceOrderType serviceOrderType) {
        this.id = id;
        this.name = name;
        this.nameNumber = nameNumber;
        this.km = km;
        this.serviceOrderType = serviceOrderType;
    }

    /**
     *
     * @param id
     * @param name
     * @param nameNumber
     * @param km
     * @param serviceOrderType
     * @param taxi
     */
    public ServiceOrder(String id, String name, Integer nameNumber, Float km, ServiceOrderType serviceOrderType, Taxi taxi) {
        this.id = id;
        this.name = name;
        this.nameNumber = nameNumber;
        this.km = km;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
    }

    /**
     *
     * @param id
     * @param name
     * @param nameNumber
     * @param km
     * @param serviceOrderType
     * @param taxi
     * @param createdOn
     */
    public ServiceOrder(String id, String name, Integer nameNumber, Float km, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn) {
        this.id = id;
        this.name = name;
        this.nameNumber = nameNumber;
        this.km = km;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
    }

    /**
     *
     * @param id
     * @param name
     * @param nameNumber
     * @param km
     * @param serviceOrderType
     * @param taxi
     * @param createdOn
     * @param pendingDate
     * @param approvateDate
     * @param progressDate
     * @param finishDate
     * @param description
     * @param kmMaintenance
     */
    public ServiceOrder(String id, String name, Integer nameNumber, Float km, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float kmMaintenance) {
        this.id = id;
        this.name = name;
        this.nameNumber = nameNumber;
        this.km = km;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.kmMaintenance = kmMaintenance;
    }

    public ServiceOrder(String id, String name, Integer nameNumber, Float km, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float kmMaintenance, Date paseTallerDate) {
        this.id = id;
        this.name = name;
        this.nameNumber = nameNumber;
        this.km = km;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.kmMaintenance = kmMaintenance;
        this.paseTallerDate = paseTallerDate;
    }

    public ServiceOrder(String id, String name, Integer nameNumber, Float km, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float kmMaintenance, Date paseTallerDate, User createdBy) {
        this.id = id;
        this.name = name;
        this.nameNumber = nameNumber;
        this.km = km;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.kmMaintenance = kmMaintenance;
        this.paseTallerDate = paseTallerDate;
        this.createdBy = createdBy;
    }
    
    public ServiceOrder(String id, String name, Integer nameNumber, Float km, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float kmMaintenance, Date paseTallerDate, User createdBy, 
            User paseTallerUser, User pendienteUser, User aprobadoUser, User progresoUser, User terminadoUser) {
        this.id = id;
        this.name = name;
        this.nameNumber = nameNumber;
        this.km = km;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.kmMaintenance = kmMaintenance;
        this.paseTallerDate = paseTallerDate;
        this.createdBy = createdBy;
        this.paseTallerUser = paseTallerUser;
        this.pendienteUser = pendienteUser;
        this.aprobadoUser = aprobadoUser;
        this.progresoUser = progresoUser;
        this.terminadoUser = terminadoUser;
    }
    
    public ServiceOrder(String id, String name, Integer nameNumber, Float km, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float kmMaintenance, Date paseTallerDate, User createdBy, 
            User paseTallerUser, User pendienteUser, User aprobadoUser, User progresoUser, User terminadoUser, Float subtotal) {
        this.id = id;
        this.name = name;
        this.nameNumber = nameNumber;
        this.km = km;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.kmMaintenance = kmMaintenance;
        this.paseTallerDate = paseTallerDate;
        this.createdBy = createdBy;
        this.paseTallerUser = paseTallerUser;
        this.pendienteUser = pendienteUser;
        this.aprobadoUser = aprobadoUser;
        this.progresoUser = progresoUser;
        this.terminadoUser = terminadoUser;
        this.subtotal = subtotal;
    }
    
    public ServiceOrder(String id, String name, Integer nameNumber, Float km, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float kmMaintenance, Date paseTallerDate, BasicType tallerExterno) {
        this.id = id;
        this.name = name;
        this.nameNumber = nameNumber;
        this.km = km;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.kmMaintenance = kmMaintenance;
        this.paseTallerDate = paseTallerDate;
        this.tallerExterno = tallerExterno;
    }

    /**
     *
     * @param id
     * @param name
     * @param nameNumber
     * @param km
     * @param serviceOrderType
     * @param taxi
     * @param createdOn
     * @param pendingDate
     * @param approvateDate
     * @param progressDate
     * @param finishDate
     * @param description
     * @param kmMaintenance
     * @param createdBy
     */
    public ServiceOrder(String id, String name, Integer nameNumber, Float km, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float kmMaintenance, User createdBy) {
        this.id = id;
        this.name = name;
        this.nameNumber = nameNumber;
        this.km = km;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.kmMaintenance = kmMaintenance;
        this.createdBy = createdBy;
    }

    public ServiceOrder(String id, String name, Integer nameNumber, Float km, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float kmMaintenance, User createdBy, Date paseTallerDate) {
        this.id = id;
        this.name = name;
        this.nameNumber = nameNumber;
        this.km = km;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.kmMaintenance = kmMaintenance;
        this.createdBy = createdBy;
        this.paseTallerDate = paseTallerDate;
    }

    public ServiceOrder(String id, String name, Integer nameNumber, Float km, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float kmMaintenance, User createdBy, Date paseTallerDate, BasicType tallerExterno) {
        this.id = id;
        this.name = name;
        this.nameNumber = nameNumber;
        this.km = km;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.kmMaintenance = kmMaintenance;
        this.createdBy = createdBy;
        this.paseTallerDate = paseTallerDate;
        this.tallerExterno = tallerExterno;
    }

    public ServiceOrder(String id, String name, Integer nameNumber, Float km, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float kmMaintenance, User createdBy, Date paseTallerDate, BasicType tallerExterno, GeneralPublic generalPublic) {
        this.id = id;
        this.name = name;
        this.nameNumber = nameNumber;
        this.km = km;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.kmMaintenance = kmMaintenance;
        this.createdBy = createdBy;
        this.paseTallerDate = paseTallerDate;
        this.tallerExterno = tallerExterno;
        this.generalPublic = generalPublic;
    }
    
    public ServiceOrder(String id, String name, Integer nameNumber, Float km, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float kmMaintenance, User createdBy, 
            Date paseTallerDate, BasicType tallerExterno, GeneralPublic generalPublic, User paseTallerUser, User pendienteUser, User aprobadoUser, User progresoUser,
            User terminadoUser) {
        this.id = id;
        this.name = name;
        this.nameNumber = nameNumber;
        this.km = km;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.kmMaintenance = kmMaintenance;
        this.createdBy = createdBy;
        this.paseTallerDate = paseTallerDate;
        this.tallerExterno = tallerExterno;
        this.generalPublic = generalPublic;
        this.paseTallerUser = paseTallerUser;
        this.pendienteUser = pendienteUser;
        this.aprobadoUser = aprobadoUser;
        this.progresoUser = progresoUser;
        this.terminadoUser = terminadoUser;
    }
    
    public ServiceOrder(String id, String name, Integer nameNumber, Float km, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float kmMaintenance, User createdBy, 
            Date paseTallerDate, BasicType tallerExterno, GeneralPublic generalPublic, User paseTallerUser, User pendienteUser, User aprobadoUser, User progresoUser,
            User terminadoUser, Date payDate, User payUser, Float subtotal) {
        this.id = id;
        this.name = name;
        this.nameNumber = nameNumber;
        this.km = km;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.kmMaintenance = kmMaintenance;
        this.createdBy = createdBy;
        this.paseTallerDate = paseTallerDate;
        this.tallerExterno = tallerExterno;
        this.generalPublic = generalPublic;
        this.paseTallerUser = paseTallerUser;
        this.pendienteUser = pendienteUser;
        this.aprobadoUser = aprobadoUser;
        this.progresoUser = progresoUser;
        this.terminadoUser = terminadoUser;
        this.payDate = payDate;
        this.payUser = payUser;
        this.subtotal = subtotal;
        
    }
    
     public ServiceOrder(String id, String name, Integer nameNumber, Float km, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float kmMaintenance, User createdBy, 
            Date paseTallerDate, BasicType tallerExterno, GeneralPublic generalPublic, User paseTallerUser, User pendienteUser, User aprobadoUser, User progresoUser,
            User terminadoUser, Date payDate, User payUser, Float subtotal,Float total) {
        this.id = id;
        this.name = name;
        this.nameNumber = nameNumber;
        this.km = km;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.kmMaintenance = kmMaintenance;
        this.createdBy = createdBy;
        this.paseTallerDate = paseTallerDate;
        this.tallerExterno = tallerExterno;
        this.generalPublic = generalPublic;
        this.paseTallerUser = paseTallerUser;
        this.pendienteUser = pendienteUser;
        this.aprobadoUser = aprobadoUser;
        this.progresoUser = progresoUser;
        this.terminadoUser = terminadoUser;
        this.payDate = payDate;
        this.payUser = payUser;
        this.subtotal = subtotal;
        this.total = total;
        
    }

    public ServiceOrder(String id, String name, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float km, User createdBy, Date paseTallerDate, BasicType tallerExterno) {
        this.id = id;
        this.name = name;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.km = km;
        this.createdBy = createdBy;
        this.paseTallerDate = paseTallerDate;
        this.tallerExterno = tallerExterno;

    }

    public ServiceOrder(String id, String name, ServiceOrderType serviceOrderType, Taxi taxi, Date createdOn,
            Date pendingDate, Date approvateDate, Date progressDate, Date finishDate, String description, Float km, User createdBy, Date paseTallerDate, BasicType tallerExterno, GeneralPublic generalPublic) {
        this.id = id;
        this.name = name;
        this.serviceOrderType = serviceOrderType;
        this.taxi = taxi;
        this.createdOn = createdOn;
        this.pendingDate = pendingDate;
        this.approvateDate = approvateDate;
        this.progressDate = progressDate;
        this.finishDate = finishDate;
        this.description = description;
        this.km = km;
        this.createdBy = createdBy;
        this.paseTallerDate = paseTallerDate;
        this.tallerExterno = tallerExterno;
        this.generalPublic = generalPublic;

    }

    public BasicType getTallerExterno() {
        return tallerExterno;
    }

    public void setTallerExterno(BasicType tallerExterno) {
        this.tallerExterno = tallerExterno;
    }

    public Date getPaseTallerDate() {
        return paseTallerDate;
    }

    public void setPaseTallerDate(Date paseTallerDate) {
        this.paseTallerDate = paseTallerDate;
    }

    public ServiceOrder(Taxi taxi) {
        this.taxi = taxi;
    }

    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getNameNumber() {
        return nameNumber;
    }

    public void setNameNumber(Integer nameNumber) {
        this.nameNumber = nameNumber;
    }

    public Float getKm() {
        return km;
    }

    public void setKm(Float km) {
        this.km = km;
    }

    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 ServiceOrderType getServiceOrderType() {
        return serviceOrderType;
    }

    public void setServiceOrderType(ServiceOrderType serviceOrderType) {
        this.serviceOrderType = serviceOrderType;
    }

    public PaymentMethodType getPaymentMethodType() {
        return paymentMethodType;
    }

    public void setPaymentMethodType(PaymentMethodType paymentMethodType) {
        this.paymentMethodType = paymentMethodType;
    }

    public Taxi getTaxi() {
        return taxi;
    }

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

    public Boolean getActive() {
        return active;
    }

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

    public Date getPendingDate() {
        return pendingDate;
    }

    public void setPendingDate(Date pendingDate) {
        this.pendingDate = pendingDate;
    }

    public Date getApprovateDate() {
        return approvateDate;
    }

    public void setApprovateDate(Date approvateDate) {
        this.approvateDate = approvateDate;
    }

    public Date getProgressDate() {
        return progressDate;
    }

    public void setProgressDate(Date progressDate) {
        this.progressDate = progressDate;
    }

    public Date getFinishDate() {
        return finishDate;
    }

    public void setFinishDate(Date finishDate) {
        this.finishDate = finishDate;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    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 getServiceOrderHasProducts() {
        return serviceOrderHasProducts;
    }

    public void setServiceOrderHasProducts(Set serviceOrderHasProducts) {
        this.serviceOrderHasProducts = serviceOrderHasProducts;
    }

    public Float getKmMaintenance() {
        return kmMaintenance;
    }

    public void setKmMaintenance(Float kmMaintenance) {
        this.kmMaintenance = kmMaintenance;
    }

    public GeneralPublic getGeneralPublic() {
        return generalPublic;
    }

    public void setGeneralPublic(GeneralPublic generalPublic) {
        this.generalPublic = generalPublic;
    }

    public User getPaseTallerUser() {
        return paseTallerUser;
    }

    public void setPaseTallerUser(User paseTallerUser) {
        this.paseTallerUser = paseTallerUser;
    }

    public User getPendienteUser() {
        return pendienteUser;
    }

    public void setPendienteUser(User pendienteUser) {
        this.pendienteUser = pendienteUser;
    }

    public User getAprobadoUser() {
        return aprobadoUser;
    }

    public void setAprobadoUser(User aprobadoUser) {
        this.aprobadoUser = aprobadoUser;
    }

    public User getProgresoUser() {
        return progresoUser;
    }

    public void setProgresoUser(User progresoUser) {
        this.progresoUser = progresoUser;
    }

    public User getTerminadoUser() {
        return terminadoUser;
    }

    public void setTerminadoUser(User terminadoUser) {
        this.terminadoUser = terminadoUser;
    }
    
    public Location getLocation(){
        location = taxi.getLocation();
        return location;
    }

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

    public User getPayUser() {
        return payUser;
    }

    public void setPayUser(User payUser) {
        this.payUser = payUser;
    }

    public Date getPayDate() {
        return payDate;
    }

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

    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;
    }
    
    

    private static final long serialVersionUID = 866372555297954243L;

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 97 * hash + Objects.hashCode(this.id);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final ServiceOrder other = (ServiceOrder) obj;
        if (!Objects.equals(this.id, other.id)) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "ServiceOrder{" + "pendingDate=" + pendingDate + ", finishDate=" + finishDate + '}';
    }

}
