/*
 * 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.cosmodas.EntCosmos;


import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
//import org.codehaus.jackson.annotate.JsonIgnore;

/**
 * @author obper
 */
@Entity
@Table(name = "consultores")
@XmlRootElement
@NamedQueries({
        @NamedQuery(name = "Consultores.findAll", query = "SELECT c FROM Consultores c"),
        @NamedQuery(name = "Consultores.findByConsultorNombresCompletos", query = "SELECT c FROM Consultores c WHERE c.consultorNombre1 LIKE :consultorNombre1 AND c.consultorNombre2 LIKE :consultorNombre2 AND c.consultorApellido1 LIKE :consultorApellido1 AND c.consultorApellido2 LIKE :consultorApellido2"),
        @NamedQuery(name = "Consultores.findByConsultorCodigo", query = "SELECT c FROM Consultores c WHERE c.consultorCodigo = :consultorCodigo"),
        @NamedQuery(name = "Consultores.findByConsultorCodigoAnterior", query = "SELECT c FROM Consultores c WHERE c.consultorCodigoAnterior = :consultorCodigoAnterior"),
        @NamedQuery(name = "Consultores.findByConsultorSexo", query = "SELECT c FROM Consultores c WHERE c.consultorSexo = :consultorSexo"),
        @NamedQuery(name = "Consultores.findByConsultorApellido1", query = "SELECT c FROM Consultores c WHERE c.consultorApellido1 = :consultorApellido1"),
        @NamedQuery(name = "Consultores.findByConsultorApellido2", query = "SELECT c FROM Consultores c WHERE c.consultorApellido2 = :consultorApellido2"),
        @NamedQuery(name = "Consultores.findByConsultorApellidoC", query = "SELECT c FROM Consultores c WHERE c.consultorApellidoC = :consultorApellidoC"),
        @NamedQuery(name = "Consultores.findByConsultorNombre1", query = "SELECT c FROM Consultores c WHERE c.consultorNombre1 = :consultorNombre1"),
        @NamedQuery(name = "Consultores.findByConsultorNombre2", query = "SELECT c FROM Consultores c WHERE c.consultorNombre2 = :consultorNombre2"),
        @NamedQuery(name = "Consultores.findByConsultorTelefonoResidencia", query = "SELECT c FROM Consultores c WHERE c.consultorTelefonoResidencia = :consultorTelefonoResidencia"),
        @NamedQuery(name = "Consultores.findByConsultorTrabajoFijo", query = "SELECT c FROM Consultores c WHERE c.consultorTrabajoFijo = :consultorTrabajoFijo"),
        @NamedQuery(name = "Consultores.findByConsultorProfesion", query = "SELECT c FROM Consultores c WHERE c.consultorProfesion = :consultorProfesion"),
        @NamedQuery(name = "Consultores.findByConsultorNacimiento", query = "SELECT c FROM Consultores c WHERE c.consultorNacimiento = :consultorNacimiento"),
        @NamedQuery(name = "Consultores.findByConsultorDireccionNombreUbicacion", query = "SELECT c FROM Consultores c WHERE c.consultorDireccionNombreUbicacion = :consultorDireccionNombreUbicacion"),
        @NamedQuery(name = "Consultores.findByConsultorDireccionComplementoUbicacion", query = "SELECT c FROM Consultores c WHERE c.consultorDireccionComplementoUbicacion = :consultorDireccionComplementoUbicacion"),
        @NamedQuery(name = "Consultores.findByConsultorTipoPago", query = "SELECT c FROM Consultores c WHERE c.consultorTipoPago = :consultorTipoPago"),
        @NamedQuery(name = "Consultores.findByConsultorTipoLimite", query = "SELECT c FROM Consultores c WHERE c.consultorTipoLimite = :consultorTipoLimite"),
        @NamedQuery(name = "Consultores.findByConsultorMontoLimite", query = "SELECT c FROM Consultores c WHERE c.consultorMontoLimite = :consultorMontoLimite"),
        @NamedQuery(name = "Consultores.findByConsultorEstadoCredito", query = "SELECT c FROM Consultores c WHERE c.consultorEstadoCredito = :consultorEstadoCredito"),
        @NamedQuery(name = "Consultores.findByConsultorFechaIngreso", query = "SELECT c FROM Consultores c WHERE c.consultorFechaIngreso = :consultorFechaIngreso"),
        @NamedQuery(name = "Consultores.findByConsultorEstado", query = "SELECT c FROM Consultores c WHERE c.consultorEstado = :consultorEstado"),
        @NamedQuery(name = "Consultores.findByConsultorCelular", query = "SELECT c FROM Consultores c WHERE c.consultorCelular = :consultorCelular"),
        @NamedQuery(name = "Consultores.findByConsultorTipoDocumento", query = "SELECT c FROM Consultores c WHERE c.consultorTipoDocumento = :consultorTipoDocumento"),
        @NamedQuery(name = "Consultores.findByConsultorNit", query = "SELECT c FROM Consultores c WHERE c.consultorNit = :consultorNit"),
        @NamedQuery(name = "Consultores.findByFechaSolicitud", query = "SELECT c FROM Consultores c WHERE c.fechaSolicitud = :fechaSolicitud"),
        @NamedQuery(name = "Consultores.findByFechaAprobacion", query = "SELECT c FROM Consultores c WHERE c.fechaAprobacion = :fechaAprobacion"),
        @NamedQuery(name = "Consultores.findByConsultorEnProceso", query = "SELECT c FROM Consultores c WHERE c.consultorEnProceso = :consultorEnProceso"),
        @NamedQuery(name = "Consultores.findByConsultorListo", query = "SELECT c FROM Consultores c WHERE c.consultorListo = :consultorListo"),
        @NamedQuery(name = "Consultores.findByConsultorNumeroDocumento", query = "SELECT c FROM Consultores c WHERE c.consultorNumeroDocumento = :consultorNumeroDocumento"),
        @NamedQuery(name = "Consultores.findByMcard", query = "SELECT c FROM Consultores c WHERE c.mcard = :mcard")})
public class Consultores implements Serializable {

    @OneToMany(mappedBy = "consultorCodigo")
    private List<ProcesoPedidos> procesoPedidosList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "consultorCodigo")
    private Collection<Abonos> abonosCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "consultores", fetch = FetchType.EAGER)
    private Collection<EntregaPremios> entregaPremiosCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "consultorCodigo")
    private Collection<Cargos> cargosCollection;
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 6)
    @Column(name = "consultor_codigo")
    private String consultorCodigo;
    @Size(max = 6)
    @Column(name = "consultor_codigo_anterior")
    private String consultorCodigoAnterior;
    @Basic(optional = false)
    @NotNull
    @Column(name = "consultor_sexo")
    private boolean consultorSexo;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 17)
    @Column(name = "consultor_apellido1")
    private String consultorApellido1;
    @Size(max = 17)
    @Column(name = "consultor_apellido2")
    private String consultorApellido2;
    @Size(max = 17)
    @Column(name = "consultor_apellido_c")
    private String consultorApellidoC;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 15)
    @Column(name = "consultor_nombre1")
    private String consultorNombre1;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 15)
    @Column(name = "consultor_nombre2")
    private String consultorNombre2;
    @Size(max = 9)
    @Column(name = "consultor_telefono_residencia")
    private String consultorTelefonoResidencia;
    @Basic(optional = false)
    @NotNull
    @Column(name = "consultor_trabajo_fijo")
    private boolean consultorTrabajoFijo;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 15)
    @Column(name = "consultor_profesion")
    private String consultorProfesion;
    @Column(name = "consultor_nacimiento")
    @Temporal(TemporalType.DATE)
    private Date consultorNacimiento;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 30)
    @Column(name = "consultor_direccion_nombre_ubicacion")
    private String consultorDireccionNombreUbicacion;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 150)
    @Column(name = "consultor_direccion_complemento_ubicacion")
    private String consultorDireccionComplementoUbicacion;
    @Basic(optional = false)
    @NotNull
    @Column(name = "consultor_tipo_pago")
    private boolean consultorTipoPago;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 3)
    @Column(name = "consultor_tipo_limite")
    private String consultorTipoLimite;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Basic(optional = false)
    @NotNull
    @Column(name = "consultor_monto_limite")
    private BigDecimal consultorMontoLimite;
    @Basic(optional = false)
    @NotNull
    @Column(name = "consultor_estado_credito")
    private boolean consultorEstadoCredito;
    @Basic(optional = false)
    @NotNull
    @Column(name = "consultor_fecha_ingreso")
    @Temporal(TemporalType.DATE)
    private Date consultorFechaIngreso;
    @Basic(optional = false)
    @NotNull
    @Column(name = "consultor_estado")
    private boolean consultorEstado;
    @Size(max = 9)
    @Column(name = "consultor_celular")
    private String consultorCelular;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 3)
    @Column(name = "consultor_tipo_documento")
    private String consultorTipoDocumento;
    @Size(max = 14)
    @Column(name = "consultor_nit")
    private String consultorNit;
    @Column(name = "fecha_solicitud")
    @Temporal(TemporalType.DATE)
    private Date fechaSolicitud;
    @Column(name = "fecha_aprobacion")
    @Temporal(TemporalType.DATE)
    private Date fechaAprobacion;
    @Column(name = "consultor_en_proceso")
    private Boolean consultorEnProceso;
    @Column(name = "consultor_listo")
    private Boolean consultorListo;
    @Size(max = 14)
    @Column(name = "consultor_numero_documento")
    private String consultorNumeroDocumento;
    @Basic(optional = false)
    @NotNull
    @Column(name = "mcard")
    private boolean mcard;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "consultorCodigo", fetch = FetchType.LAZY)
    private Collection<Facturas> facturasCollection;
    @JoinColumn(name = "municipio_codigo", referencedColumnName = "depto_municipio_codigo")
    @ManyToOne(optional = false)
    private DeptoMunicipio municipioCodigo;
    @JoinColumn(name = "doc_pendiente_codigo", referencedColumnName = "doc_pendiente_codigo")
    @ManyToOne(optional = false)
    private DocPendiente docPendienteCodigo;
    @JoinColumn(name = "territorio_codigo", referencedColumnName = "codigo_territorio")
    @ManyToOne(optional = false)
    private Territorios territorioCodigo;
    @JoinColumn(name = "ubicacion_codigo", referencedColumnName = "ubicacion_codigo")
    @ManyToOne(optional = false)
    private Ubicacion ubicacionCodigo;

    public Consultores() {
    }

    public Consultores(String consultorCodigo) {
        this.consultorCodigo = consultorCodigo;
    }

    public Consultores(String consultorCodigo, boolean consultorSexo, String consultorApellido1, String consultorNombre1, String consultorNombre2, boolean consultorTrabajoFijo, String consultorProfesion, String consultorDireccionNombreUbicacion, String consultorDireccionComplementoUbicacion, boolean consultorTipoPago, String consultorTipoLimite, BigDecimal consultorMontoLimite, boolean consultorEstadoCredito, Date consultorFechaIngreso, boolean consultorEstado, String consultorTipoDocumento, boolean mcard) {
        this.consultorCodigo = consultorCodigo;
        this.consultorSexo = consultorSexo;
        this.consultorApellido1 = consultorApellido1;
        this.consultorNombre1 = consultorNombre1;
        this.consultorNombre2 = consultorNombre2;
        this.consultorTrabajoFijo = consultorTrabajoFijo;
        this.consultorProfesion = consultorProfesion;
        this.consultorDireccionNombreUbicacion = consultorDireccionNombreUbicacion;
        this.consultorDireccionComplementoUbicacion = consultorDireccionComplementoUbicacion;
        this.consultorTipoPago = consultorTipoPago;
        this.consultorTipoLimite = consultorTipoLimite;
        this.consultorMontoLimite = consultorMontoLimite;
        this.consultorEstadoCredito = consultorEstadoCredito;
        this.consultorFechaIngreso = consultorFechaIngreso;
        this.consultorEstado = consultorEstado;
        this.consultorTipoDocumento = consultorTipoDocumento;
        this.mcard = mcard;
    }

    public String getConsultorCodigo() {
        return consultorCodigo;
    }

    public void setConsultorCodigo(String consultorCodigo) {
        this.consultorCodigo = consultorCodigo;
    }

    public String getConsultorCodigoAnterior() {
        return consultorCodigoAnterior;
    }

    public void setConsultorCodigoAnterior(String consultorCodigoAnterior) {
        this.consultorCodigoAnterior = consultorCodigoAnterior;
    }

    public boolean getConsultorSexo() {
        return consultorSexo;
    }

    public void setConsultorSexo(boolean consultorSexo) {
        this.consultorSexo = consultorSexo;
    }

    public String getConsultorApellido1() {
        return consultorApellido1;
    }

    public void setConsultorApellido1(String consultorApellido1) {
        this.consultorApellido1 = consultorApellido1;
    }

    public String getConsultorApellido2() {
        return consultorApellido2;
    }

    public void setConsultorApellido2(String consultorApellido2) {
        this.consultorApellido2 = consultorApellido2;
    }

    public String getConsultorApellidoC() {
        return consultorApellidoC;
    }

    public void setConsultorApellidoC(String consultorApellidoC) {
        this.consultorApellidoC = consultorApellidoC;
    }

    public String getConsultorNombre1() {
        return consultorNombre1;
    }

    public void setConsultorNombre1(String consultorNombre1) {
        this.consultorNombre1 = consultorNombre1;
    }

    public String getConsultorNombre2() {
        return consultorNombre2;
    }

    public void setConsultorNombre2(String consultorNombre2) {
        this.consultorNombre2 = consultorNombre2;
    }

    public String getConsultorTelefonoResidencia() {
        return consultorTelefonoResidencia;
    }

    public void setConsultorTelefonoResidencia(String consultorTelefonoResidencia) {
        this.consultorTelefonoResidencia = consultorTelefonoResidencia;
    }

    public boolean getConsultorTrabajoFijo() {
        return consultorTrabajoFijo;
    }

    public void setConsultorTrabajoFijo(boolean consultorTrabajoFijo) {
        this.consultorTrabajoFijo = consultorTrabajoFijo;
    }

    public String getConsultorProfesion() {
        return consultorProfesion;
    }

    public void setConsultorProfesion(String consultorProfesion) {
        this.consultorProfesion = consultorProfesion;
    }

    public Date getConsultorNacimiento() {
        return consultorNacimiento;
    }

    public void setConsultorNacimiento(Date consultorNacimiento) {
        this.consultorNacimiento = consultorNacimiento;
    }

    public String getConsultorDireccionNombreUbicacion() {
        return consultorDireccionNombreUbicacion;
    }

    public void setConsultorDireccionNombreUbicacion(String consultorDireccionNombreUbicacion) {
        this.consultorDireccionNombreUbicacion = consultorDireccionNombreUbicacion;
    }

    public String getConsultorDireccionComplementoUbicacion() {
        return consultorDireccionComplementoUbicacion;
    }

    public void setConsultorDireccionComplementoUbicacion(String consultorDireccionComplementoUbicacion) {
        this.consultorDireccionComplementoUbicacion = consultorDireccionComplementoUbicacion;
    }

    public boolean getConsultorTipoPago() {
        return consultorTipoPago;
    }

    public void setConsultorTipoPago(boolean consultorTipoPago) {
        this.consultorTipoPago = consultorTipoPago;
    }

    public String getConsultorTipoLimite() {
        return consultorTipoLimite;
    }

    public void setConsultorTipoLimite(String consultorTipoLimite) {
        this.consultorTipoLimite = consultorTipoLimite;
    }

    public BigDecimal getConsultorMontoLimite() {
        return consultorMontoLimite;
    }

    public void setConsultorMontoLimite(BigDecimal consultorMontoLimite) {
        this.consultorMontoLimite = consultorMontoLimite;
    }

    public boolean getConsultorEstadoCredito() {
        return consultorEstadoCredito;
    }

    public void setConsultorEstadoCredito(boolean consultorEstadoCredito) {
        this.consultorEstadoCredito = consultorEstadoCredito;
    }

    public Date getConsultorFechaIngreso() {
        return consultorFechaIngreso;
    }

    public void setConsultorFechaIngreso(Date consultorFechaIngreso) {
        this.consultorFechaIngreso = consultorFechaIngreso;
    }

    public boolean getConsultorEstado() {
        return consultorEstado;
    }

    public void setConsultorEstado(boolean consultorEstado) {
        this.consultorEstado = consultorEstado;
    }

    public String getConsultorCelular() {
        return consultorCelular;
    }

    public void setConsultorCelular(String consultorCelular) {
        this.consultorCelular = consultorCelular;
    }

    public String getConsultorTipoDocumento() {
        return consultorTipoDocumento;
    }

    public void setConsultorTipoDocumento(String consultorTipoDocumento) {
        this.consultorTipoDocumento = consultorTipoDocumento;
    }

    public String getConsultorNit() {
        return consultorNit;
    }

    public void setConsultorNit(String consultorNit) {
        this.consultorNit = consultorNit;
    }

    public Date getFechaSolicitud() {
        return fechaSolicitud;
    }

    public void setFechaSolicitud(Date fechaSolicitud) {
        this.fechaSolicitud = fechaSolicitud;
    }

    public Date getFechaAprobacion() {
        return fechaAprobacion;
    }

    public void setFechaAprobacion(Date fechaAprobacion) {
        this.fechaAprobacion = fechaAprobacion;
    }

    public Boolean getConsultorEnProceso() {
        return consultorEnProceso;
    }

    public void setConsultorEnProceso(Boolean consultorEnProceso) {
        this.consultorEnProceso = consultorEnProceso;
    }

    public Boolean getConsultorListo() {
        return consultorListo;
    }

    public void setConsultorListo(Boolean consultorListo) {
        this.consultorListo = consultorListo;
    }

    public String getConsultorNumeroDocumento() {
        return consultorNumeroDocumento;
    }

    public void setConsultorNumeroDocumento(String consultorNumeroDocumento) {
        this.consultorNumeroDocumento = consultorNumeroDocumento;
    }

    public boolean getMcard() {
        return mcard;
    }

    public void setMcard(boolean mcard) {
        this.mcard = mcard;
    }

    @XmlTransient
    public Collection<Facturas> getFacturasCollection() {
        return facturasCollection;
    }

    public void setFacturasCollection(Collection<Facturas> facturasCollection) {
        this.facturasCollection = facturasCollection;
    }

    public DeptoMunicipio getMunicipioCodigo() {
        return municipioCodigo;
    }

    public void setMunicipioCodigo(DeptoMunicipio municipioCodigo) {
        this.municipioCodigo = municipioCodigo;
    }

    public DocPendiente getDocPendienteCodigo() {
        return docPendienteCodigo;
    }

    public void setDocPendienteCodigo(DocPendiente docPendienteCodigo) {
        this.docPendienteCodigo = docPendienteCodigo;
    }

    public Territorios getTerritorioCodigo() {
        return territorioCodigo;
    }

    public void setTerritorioCodigo(Territorios territorioCodigo) {
        this.territorioCodigo = territorioCodigo;
    }

    public Ubicacion getUbicacionCodigo() {
        return ubicacionCodigo;
    }

    public void setUbicacionCodigo(Ubicacion ubicacionCodigo) {
        this.ubicacionCodigo = ubicacionCodigo;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (consultorCodigo != null ? consultorCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Consultores)) {
            return false;
        }
        Consultores other = (Consultores) object;
        if ((this.consultorCodigo == null && other.consultorCodigo != null) || (this.consultorCodigo != null && !this.consultorCodigo.equals(other.consultorCodigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.cosmodas.dbcon.Consultores[ consultorCodigo=" + consultorCodigo + " ]";
    }

    @XmlTransient
    // @Js
    public Collection<Cargos> getCargosCollection() {
        return cargosCollection;
    }

    public void setCargosCollection(Collection<Cargos> cargosCollection) {
        this.cargosCollection = cargosCollection;
    }

    @XmlTransient
    public Collection<EntregaPremios> getEntregaPremiosCollection() {
        return entregaPremiosCollection;
    }

    public void setEntregaPremiosCollection(Collection<EntregaPremios> entregaPremiosCollection) {
        this.entregaPremiosCollection = entregaPremiosCollection;
    }

    @XmlTransient
    public Collection<Abonos> getAbonosCollection() {
        return abonosCollection;
    }

    public void setAbonosCollection(Collection<Abonos> abonosCollection) {
        this.abonosCollection = abonosCollection;
    }

    @XmlTransient
    public List<ProcesoPedidos> getProcesoPedidosList() {
        return procesoPedidosList;
    }

    public void setProcesoPedidosList(List<ProcesoPedidos> procesoPedidosList) {
        this.procesoPedidosList = procesoPedidosList;
    }


}
