/*
 * 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 javax.naming.spi.DirStateFactory.Result;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.ColumnResult;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedNativeQuery;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.QueryHint;
import javax.persistence.SqlResultSetMapping;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * @author obper
 */
@NamedNativeQuery(name = "ProPremTab.PRO_PREMIOS", query = "CALL PRO_PREMIOS('P1254', 'ENE', '2014-01-01', '2014-01-31')",
        hints = {
                @QueryHint(name = "org.hibernate.callable", value = "true"),
                @QueryHint(name = "org.hibernate.readOnly", value = "true")
        }, resultSetMapping = "scalar", resultClass = Result.class)

@SqlResultSetMapping(name = "scalar", columns = @ColumnResult(name = "result"))
@Entity
@Table(name = "proPremTab")
@XmlRootElement
@NamedQueries({
        @NamedQuery(name = "ProPremTab.findAll", query = "SELECT p FROM ProPremTab p"),
        @NamedQuery(name = "ProPremTab.findByConsultorCodigo", query = "SELECT p FROM ProPremTab p WHERE p.consultorCodigo = :consultorCodigo"),
        @NamedQuery(name = "ProPremTab.findByNombreConsultor", query = "SELECT p FROM ProPremTab p WHERE p.nombreConsultor = :nombreConsultor"),
        @NamedQuery(name = "ProPremTab.findByTerritorioCodigo", query = "SELECT p FROM ProPremTab p WHERE p.territorioCodigo = :territorioCodigo"),
        @NamedQuery(name = "ProPremTab.findByProgramaCodigo", query = "SELECT p FROM ProPremTab p WHERE p.programaCodigo = :programaCodigo"),
        @NamedQuery(name = "ProPremTab.findByVentaProgramaTotalSinDescuento", query = "SELECT p FROM ProPremTab p WHERE p.ventaProgramaTotalSinDescuento = :ventaProgramaTotalSinDescuento"),
        @NamedQuery(name = "ProPremTab.findByNombrePremio", query = "SELECT p FROM ProPremTab p WHERE p.nombrePremio = :nombrePremio"),
        @NamedQuery(name = "ProPremTab.findByPremioSiguiente", query = "SELECT p FROM ProPremTab p WHERE p.premioSiguiente = :premioSiguiente"),
        @NamedQuery(name = "ProPremTab.findByDiasPago", query = "SELECT p FROM ProPremTab p WHERE p.diasPago = :diasPago")})
public class ProPremTab implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 6)
    @Column(name = "consultor_codigo")
    private String consultorCodigo;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 50)
    @Column(name = "nombre_consultor")
    private String nombreConsultor;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 2)
    @Column(name = "territorio_codigo")
    private String territorioCodigo;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 3)
    @Column(name = "programa_codigo")
    private String programaCodigo;
    @Basic(optional = false)
    @NotNull
    @Column(name = "venta_programa_total_sin_descuento")
    private short ventaProgramaTotalSinDescuento;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 25)
    @Column(name = "nombre_premio")
    private String nombrePremio;
    @Basic(optional = false)
    @NotNull
    @Column(name = "premio_siguiente")
    private short premioSiguiente;
    @Basic(optional = false)
    @NotNull
    @Column(name = "dias_pago")
    private int diasPago;

    public ProPremTab() {
    }

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

    public ProPremTab(String consultorCodigo, String nombreConsultor, String territorioCodigo, String programaCodigo, short ventaProgramaTotalSinDescuento, String nombrePremio, short premioSiguiente, int diasPago) {
        this.consultorCodigo = consultorCodigo;
        this.nombreConsultor = nombreConsultor;
        this.territorioCodigo = territorioCodigo;
        this.programaCodigo = programaCodigo;
        this.ventaProgramaTotalSinDescuento = ventaProgramaTotalSinDescuento;
        this.nombrePremio = nombrePremio;
        this.premioSiguiente = premioSiguiente;
        this.diasPago = diasPago;
    }

    public String getConsultorCodigo() {
        return consultorCodigo;
    }

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

    public String getNombreConsultor() {
        return nombreConsultor;
    }

    public void setNombreConsultor(String nombreConsultor) {
        this.nombreConsultor = nombreConsultor;
    }

    public String getTerritorioCodigo() {
        return territorioCodigo;
    }

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

    public String getProgramaCodigo() {
        return programaCodigo;
    }

    public void setProgramaCodigo(String programaCodigo) {
        this.programaCodigo = programaCodigo;
    }

    public short getVentaProgramaTotalSinDescuento() {
        return ventaProgramaTotalSinDescuento;
    }

    public void setVentaProgramaTotalSinDescuento(short ventaProgramaTotalSinDescuento) {
        this.ventaProgramaTotalSinDescuento = ventaProgramaTotalSinDescuento;
    }

    public String getNombrePremio() {
        return nombrePremio;
    }

    public void setNombrePremio(String nombrePremio) {
        this.nombrePremio = nombrePremio;
    }

    public short getPremioSiguiente() {
        return premioSiguiente;
    }

    public void setPremioSiguiente(short premioSiguiente) {
        this.premioSiguiente = premioSiguiente;
    }

    public int getDiasPago() {
        return diasPago;
    }

    public void setDiasPago(int diasPago) {
        this.diasPago = diasPago;
    }

    @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 ProPremTab)) {
            return false;
        }
        ProPremTab other = (ProPremTab) 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.conector.cosmodas.ProPremTab[ consultorCodigo=" + consultorCodigo + " ]";
    }

}
