/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.rjconsultores.ventaboletos.entidad;

import java.io.Serializable;
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.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Rafael
 */
@Entity
@SequenceGenerator(name = "PTOVTA_AGENCIA_SEQ", sequenceName = "PTOVTA_AGENCIA_SEQ", allocationSize = 1)
@Table(name = "PTOVTA_AGENCIA")

public class PtovtaAgencia implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "PTOVTA_AGENCIA_SEQ")
    @Column(name = "PTOVTAAGENCIA_ID")
    private Integer ptovtaAgenciaId;
    
    @Column(name = "NUMAGENCIA")
    private String numagencia;
    
    @Column(name = "NUMCONTA")
    private String numconta;
    
    @Column(name = "DIGITO")
    private String digito;

    @Column(name = "PESSOA")
    private String pessoa;

    @Column(name = "TIPO")
    private String tipo;

    @Column(name = "BILHETES")
    private String bilhetes;

    @Column(name = "CARGA")
    private String carga;
    
    @Column(name = "ACTIVO")
    private Boolean activo;
    
    @Column(name = "FECMODIF")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fecmodif;
    
    @Column(name = "USUARIO_ID")
    private int usuarioId;
   
    @JoinColumn(name = "INSTIFINANCEIRA_ID", referencedColumnName = "INSTIFINANCEIRA_ID")
    @ManyToOne
    private InstiFinanceira instiFinanceiraId;
  
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "agenciaId")
    private List<PuntoVenta> puntoVentaList;

    public PtovtaAgencia() {
    }

    public PtovtaAgencia(Integer ptovtaAgenciaId) {
        this.ptovtaAgenciaId = ptovtaAgenciaId;
    }
    

    
    public enum enumTipoConta {
    	// Declaração dos enum  
    	CONTACORRENTE ("CONTA CORRENTE C/C", "CC"),
    
    	POUPANCA ("POUPANCA", "P");
    	
    	
   
    	// Definição das constantes
    	public final String valor;
    	public final String descricao;
    	
   
    	public String valor() {
			return this.valor;
		}
    	public String descricao() {
			return this.descricao;
		}
		private enumTipoConta( String descricao, String valor) {
			this.descricao = descricao;
			this.valor = valor;
		}
    	
    		 
    }
    
    public enum enumTipoPessoa {
    	// Declaração dos enum  
    	PESSOAFISICA  ("PESSOA FÍSICA", "F"),
    
    	PESSOAJURIDICA ("PESSOA JURÍDICA", "J");
    	
    	
   
    	// Definição das constantes
    	public final String valor;
    	public final String descricao;
    	
   
    	public String valor() {
			return this.valor;
		}
    	public String descricao() {
			return this.descricao;
		}
		private enumTipoPessoa( String descricao, String valor) {
			this.descricao = descricao;
			this.valor = valor;
		}
    	
    		 
    }

    public PtovtaAgencia(Integer ptovtaAgenciaId, String numagencia, String digito, String numconta, String pessoa, String tipo, String bilhetes, String carga, Boolean activo, Date fecmodif, int usuarioId) {
        this.ptovtaAgenciaId = ptovtaAgenciaId;
        this.numagencia = numagencia;
        this.numconta = numconta;
        this.digito = digito;
        this.pessoa = pessoa;
        this.tipo = tipo;
        this.bilhetes = bilhetes;
        this.carga = carga;
        this.activo = activo;
        this.fecmodif = fecmodif;
        this.usuarioId = usuarioId;
    }

   

    public Integer getPtovtaAgenciaId() {
		return ptovtaAgenciaId;
	}

	public void setPtovtaAgenciaId(Integer ptovtaAgenciaId) {
		this.ptovtaAgenciaId = ptovtaAgenciaId;
	}

	public String getNumagencia() {
        return numagencia;
    }

    public void setNumagencia(String numagencia) {
        this.numagencia = numagencia;
    }

    public String getNumconta() {
        return numconta;
    }

    public void setNumconta(String numconta) {
        this.numconta = numconta;
    }

    public String getDigito() {
		return digito;
	}

	public void setDigito(String digito) {
		this.digito = digito;
	}

	public String getPessoa() {
        return pessoa;
    }

    public void setPessoa(String pessoa) {
        this.pessoa = pessoa;
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public String getBilhetes() {
        return bilhetes;
    }

    public void setBilhetes(String bilhetes) {
        this.bilhetes = bilhetes;
    }

    public String getCarga() {
        return carga;
    }

    public void setCarga(String carga) {
        this.carga = carga;
    }

    public Boolean getActivo() {
        return activo;
    }

    public void setActivo(Boolean activo) {
        this.activo = activo;
    }

    public Date getFecmodif() {
        return fecmodif;
    }

    public void setFecmodif(Date fecmodif) {
        this.fecmodif = fecmodif;
    }

    public int getUsuarioId() {
        return usuarioId;
    }

    public void setUsuarioId(int usuarioId) {
        this.usuarioId = usuarioId;
    }

    
    
    public InstiFinanceira getInstiFinanceiraId() {
		return instiFinanceiraId;
	}

	public void setInstiFinanceiraId(InstiFinanceira instiFinanceiraId) {
		this.instiFinanceiraId = instiFinanceiraId;
	}

	public List<PuntoVenta> getPuntoVentaList() {
        return puntoVentaList;
    }

    public void setPuntoVentaList(List<PuntoVenta> puntoVentaList) {
        this.puntoVentaList = puntoVentaList;
    }
    
    
//    public static List<String> getPessoaList() {
//        return pessoaList;
//    }
//    
//    public static List<String> getTipoContaList() {
//        return tpContaList;
//    }

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

    @Override
    public String toString() {
        return "com.rjconsultores.ventaboletos.entidad.PtovtaAgencia[ ptovtaAgenciaId=" + ptovtaAgenciaId + " ]";
    }
}
