/*
 * 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 javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
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;

/**
 * @author obper
 */
@Entity
@Table(name = "territorios")
@XmlRootElement
@NamedQueries({
        @NamedQuery(name = "Territorios.findAll", query = "SELECT t FROM Territorios t"),
        @NamedQuery(name = "Territorios.findByCodigoTerritorio", query = "SELECT t FROM Territorios t WHERE t.codigoTerritorio = :codigoTerritorio"),
        @NamedQuery(name = "Territorios.findBySucursalCodigo", query = "SELECT t FROM Territorios t WHERE t.sucursalCodigo = :sucursalCodigo"),
        @NamedQuery(name = "Territorios.findByTerritorioNombre", query = "SELECT t FROM Territorios t WHERE t.territorioNombre = :territorioNombre"),
        @NamedQuery(name = "Territorios.findByTerritorioNorte", query = "SELECT t FROM Territorios t WHERE t.territorioNorte = :territorioNorte"),
        @NamedQuery(name = "Territorios.findByTerritorioSur", query = "SELECT t FROM Territorios t WHERE t.territorioSur = :territorioSur"),
        @NamedQuery(name = "Territorios.findByTerritorioEste", query = "SELECT t FROM Territorios t WHERE t.territorioEste = :territorioEste"),
        @NamedQuery(name = "Territorios.findByTerritorioOeste", query = "SELECT t FROM Territorios t WHERE t.territorioOeste = :territorioOeste"),
        @NamedQuery(name = "Territorios.findByTerritorioApellido1Supervisora", query = "SELECT t FROM Territorios t WHERE t.territorioApellido1Supervisora = :territorioApellido1Supervisora"),
        @NamedQuery(name = "Territorios.findByTerritorioApellido2Supervisora", query = "SELECT t FROM Territorios t WHERE t.territorioApellido2Supervisora = :territorioApellido2Supervisora"),
        @NamedQuery(name = "Territorios.findByTerritorioApellidoC", query = "SELECT t FROM Territorios t WHERE t.territorioApellidoC = :territorioApellidoC"),
        @NamedQuery(name = "Territorios.findByTerritorioNombre1", query = "SELECT t FROM Territorios t WHERE t.territorioNombre1 = :territorioNombre1"),
        @NamedQuery(name = "Territorios.findByTerritorioNombre2", query = "SELECT t FROM Territorios t WHERE t.territorioNombre2 = :territorioNombre2"),
        @NamedQuery(name = "Territorios.findByTerritorioSupervisoraCatagoria", query = "SELECT t FROM Territorios t WHERE t.territorioSupervisoraCatagoria = :territorioSupervisoraCatagoria"),
        @NamedQuery(name = "Territorios.findByLimiteReparto", query = "SELECT t FROM Territorios t WHERE t.limiteReparto = :limiteReparto"),
        @NamedQuery(name = "Territorios.findByRecepcion", query = "SELECT t FROM Territorios t WHERE t.recepcion = :recepcion")})
public class Territorios implements Serializable {
    //    @OneToMany(cascade = CascadeType.ALL, mappedBy = "territorios")
//    private Collection<RutaReparto> rutaRepartoCollection;
//    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 2)
    @Column(name = "codigo_territorio")
    private String codigoTerritorio;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 2)
    @Column(name = "sucursal_codigo")
    private String sucursalCodigo;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 200)
    @Column(name = "territorio_nombre")
    private String territorioNombre;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 200)
    @Column(name = "territorio_norte")
    private String territorioNorte;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 200)
    @Column(name = "territorio_sur")
    private String territorioSur;
    @Size(max = 200)
    @Column(name = "territorio_este")
    private String territorioEste;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 200)
    @Column(name = "territorio_oeste")
    private String territorioOeste;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 15)
    @Column(name = "territorio_apellido1_supervisora")
    private String territorioApellido1Supervisora;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 15)
    @Column(name = "territorio_apellido2_supervisora")
    private String territorioApellido2Supervisora;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 15)
    @Column(name = "territorio_apellido_c")
    private String territorioApellidoC;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 15)
    @Column(name = "territorio_nombre1")
    private String territorioNombre1;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 45)
    @Column(name = "territorio_nombre2")
    private String territorioNombre2;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 6)
    @Column(name = "territorio_supervisora_catagoria")
    private String territorioSupervisoraCatagoria;
    // @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 = "limite_reparto")
    private BigDecimal limiteReparto;
    @Basic(optional = false)
    @NotNull
    @Column(name = "recepcion")
    @Temporal(TemporalType.DATE)
    private Date recepcion;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "territorioCodigo")
    private Collection<Consultores> consultoresCollection;

    public Territorios() {
    }

    public Territorios(String codigoTerritorio) {
        this.codigoTerritorio = codigoTerritorio;
    }

    public Territorios(String codigoTerritorio, String sucursalCodigo, String territorioNombre, String territorioNorte, String territorioSur, String territorioOeste, String territorioApellido1Supervisora, String territorioApellido2Supervisora, String territorioApellidoC, String territorioNombre1, String territorioNombre2, String territorioSupervisoraCatagoria, BigDecimal limiteReparto, Date recepcion) {
        this.codigoTerritorio = codigoTerritorio;
        this.sucursalCodigo = sucursalCodigo;
        this.territorioNombre = territorioNombre;
        this.territorioNorte = territorioNorte;
        this.territorioSur = territorioSur;
        this.territorioOeste = territorioOeste;
        this.territorioApellido1Supervisora = territorioApellido1Supervisora;
        this.territorioApellido2Supervisora = territorioApellido2Supervisora;
        this.territorioApellidoC = territorioApellidoC;
        this.territorioNombre1 = territorioNombre1;
        this.territorioNombre2 = territorioNombre2;
        this.territorioSupervisoraCatagoria = territorioSupervisoraCatagoria;
        this.limiteReparto = limiteReparto;
        this.recepcion = recepcion;
    }

    public String getCodigoTerritorio() {
        return codigoTerritorio;
    }

    public void setCodigoTerritorio(String codigoTerritorio) {
        this.codigoTerritorio = codigoTerritorio;
    }

    public String getSucursalCodigo() {
        return sucursalCodigo;
    }

    public void setSucursalCodigo(String sucursalCodigo) {
        this.sucursalCodigo = sucursalCodigo;
    }

    public String getTerritorioNombre() {
        return territorioNombre;
    }

    public void setTerritorioNombre(String territorioNombre) {
        this.territorioNombre = territorioNombre;
    }

    public String getTerritorioNorte() {
        return territorioNorte;
    }

    public void setTerritorioNorte(String territorioNorte) {
        this.territorioNorte = territorioNorte;
    }

    public String getTerritorioSur() {
        return territorioSur;
    }

    public void setTerritorioSur(String territorioSur) {
        this.territorioSur = territorioSur;
    }

    public String getTerritorioEste() {
        return territorioEste;
    }

    public void setTerritorioEste(String territorioEste) {
        this.territorioEste = territorioEste;
    }

    public String getTerritorioOeste() {
        return territorioOeste;
    }

    public void setTerritorioOeste(String territorioOeste) {
        this.territorioOeste = territorioOeste;
    }

    public String getTerritorioApellido1Supervisora() {
        return territorioApellido1Supervisora;
    }

    public void setTerritorioApellido1Supervisora(String territorioApellido1Supervisora) {
        this.territorioApellido1Supervisora = territorioApellido1Supervisora;
    }

    public String getTerritorioApellido2Supervisora() {
        return territorioApellido2Supervisora;
    }

    public void setTerritorioApellido2Supervisora(String territorioApellido2Supervisora) {
        this.territorioApellido2Supervisora = territorioApellido2Supervisora;
    }

    public String getTerritorioApellidoC() {
        return territorioApellidoC;
    }

    public void setTerritorioApellidoC(String territorioApellidoC) {
        this.territorioApellidoC = territorioApellidoC;
    }

    public String getTerritorioNombre1() {
        return territorioNombre1;
    }

    public void setTerritorioNombre1(String territorioNombre1) {
        this.territorioNombre1 = territorioNombre1;
    }

    public String getTerritorioNombre2() {
        return territorioNombre2;
    }

    public void setTerritorioNombre2(String territorioNombre2) {
        this.territorioNombre2 = territorioNombre2;
    }

    public String getTerritorioSupervisoraCatagoria() {
        return territorioSupervisoraCatagoria;
    }

    public void setTerritorioSupervisoraCatagoria(String territorioSupervisoraCatagoria) {
        this.territorioSupervisoraCatagoria = territorioSupervisoraCatagoria;
    }

    public BigDecimal getLimiteReparto() {
        return limiteReparto;
    }

    public void setLimiteReparto(BigDecimal limiteReparto) {
        this.limiteReparto = limiteReparto;
    }

    public Date getRecepcion() {
        return recepcion;
    }

    public void setRecepcion(Date recepcion) {
        this.recepcion = recepcion;
    }

    @XmlTransient
    public Collection<Consultores> getConsultoresCollection() {
        return consultoresCollection;
    }

    public void setConsultoresCollection(Collection<Consultores> consultoresCollection) {
        this.consultoresCollection = consultoresCollection;
    }

//    @Override
//    public int hashCode() {
//        int hash = 0;
//        hash += (codigoTerritorio != null ? codigoTerritorio.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 Territorios)) {
            return false;
        }
        Territorios other = (Territorios) object;
        if ((this.codigoTerritorio == null && other.codigoTerritorio != null) || (this.codigoTerritorio != null && !this.codigoTerritorio.equals(other.codigoTerritorio))) {
            return false;
        }
        return true;
    }

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

//    @XmlTransient
//    public Collection<RutaReparto> getRutaRepartoCollection() {
//        return rutaRepartoCollection;
//    }
//
//    public void setRutaRepartoCollection(Collection<RutaReparto> rutaRepartoCollection) {
//        this.rutaRepartoCollection = rutaRepartoCollection;
//    }

}
