package com.rjconsultores.ventaboletos.entidad;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Basic;
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.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import com.rjconsultores.ventaboletos.enums.comissao.CoresConferencia;

@Entity
@Table(name = "CONFERENCIA")
@SequenceGenerator(name = "CONFERENCIA_SEQ", sequenceName = "CONFERENCIA_SEQ", allocationSize = 1)
public class Conferencia implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@Basic(optional = false)
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "CONFERENCIA_SEQ")
	@Column(name = "CONFERENCIA_ID")
	private Long conferenciaId;

	@Temporal(TemporalType.DATE)
	@Column(name = "DATAMOVIMENTO")
	private Date datamovimento;

	@Column(name = "INDBOLETOGERADO")
	private Boolean indboletogerado;

	@Column(name = "INDCONFERIDO")
	private Boolean indconferido;

	@Column(name = "INDPENDENCIA")
	private Boolean indpendencia;

	@Column(name = "INDSEMMOVIMENTO")
	private Boolean indsemmovimento;

	@Column(name = "INDMALOTERECEBIDO")
	private Boolean indmaloterecebido;

	@ManyToOne
	@JoinColumn(name = "PUNTOVENTA_ID")
	private PuntoVenta puntoVenta;

	@ManyToOne
	@JoinColumn(name = "EMPRESA_ID")
	private Empresa empresa;

	@Column(name = "ACTIVO")
	private Boolean activo;

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "FECMODIF")
	private Date fecmodif;

	@Column(name = "USUARIO_ID")
	private Integer usuarioId;
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "DATAMALOTE")
	private Date datamalote;
	
	@Column(name = "USUARIO_MALOTE_ID")
	private Integer usuarioMaloteId;
	
	@Transient
	private CoresConferencia cor;
	
	@Transient
	private String numfoliosistema;
	
	@Transient
	private boolean semPendenciaConferencia;
	
	@Transient
	private String competencia;
	
	@Transient
	private Date dataInicial;

	@Transient
	private Date dataFinal;
	
	public Conferencia() {
		super();
		this.indboletogerado = Boolean.FALSE;
		this.indconferido = Boolean.FALSE;
		this.indpendencia = Boolean.FALSE;
		this.indsemmovimento = Boolean.FALSE;
		this.indmaloterecebido = Boolean.FALSE;
	}

	public Long getConferenciaId() {
		return conferenciaId;
	}

	public void setConferenciaId(Long conferenciaId) {
		this.conferenciaId = conferenciaId;
	}

	public Date getDatamovimento() {
		return datamovimento;
	}

	public void setDatamovimento(Date datamovimento) {
		this.datamovimento = datamovimento;
	}

	public Boolean getIndboletogerado() {
		return indboletogerado;
	}

	public void setIndboletogerado(Boolean indboletogerado) {
		this.indboletogerado = indboletogerado;
	}

	public Boolean getIndconferido() {
		return indconferido;
	}

	public void setIndconferido(Boolean indconferido) {
		this.indconferido = indconferido;
	}

	public Boolean getIndpendencia() {
		return indpendencia;
	}

	public void setIndpendencia(Boolean indpendencia) {
		this.indpendencia = indpendencia;
	}

	public Boolean getIndsemmovimento() {
		return indsemmovimento;
	}

	public void setIndsemmovimento(Boolean indsemmovimento) {
		this.indsemmovimento = indsemmovimento;
	}

	public Boolean getIndmaloterecebido() {
		return indmaloterecebido;
	}

	public void setIndmaloterecebido(Boolean indmaloterecebido) {
		this.indmaloterecebido = indmaloterecebido;
	}

	public PuntoVenta getPuntoVenta() {
		return puntoVenta;
	}

	public void setPuntoVenta(PuntoVenta puntoVenta) {
		this.puntoVenta = puntoVenta;
	}

	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	public Date getFecmodif() {
		return fecmodif;
	}

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

	public Integer getUsuarioId() {
		return usuarioId;
	}

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

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((conferenciaId == null) ? 0 : conferenciaId.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		Conferencia other = (Conferencia) obj;
		if (conferenciaId == null) {
			if (other.conferenciaId != null)
				return false;
		} else if (!conferenciaId.equals(other.conferenciaId))
			return false;
		return true;
	}

	public CoresConferencia getCor() {
		return cor;
	}

	public void setCor(CoresConferencia cor) {
		this.cor = cor;
	}

	public Boolean getActivo() {
		return activo;
	}

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

	public String getNumfoliosistema() {
		return numfoliosistema;
	}

	public void setNumfoliosistema(String numfoliosistema) {
		this.numfoliosistema = numfoliosistema;
	}

	public Date getDatamalote() {
		return datamalote;
	}

	public void setDatamalote(Date datamalote) {
		this.datamalote = datamalote;
	}

	public Integer getUsuarioMaloteId() {
		return usuarioMaloteId;
	}

	public void setUsuarioMaloteId(Integer usuarioMaloteId) {
		this.usuarioMaloteId = usuarioMaloteId;
	}

	public boolean isSemPendenciaConferencia() {
		return semPendenciaConferencia;
	}

	public void setSemPendenciaConferencia(boolean semPendenciaConferencia) {
		this.semPendenciaConferencia = semPendenciaConferencia;
	}

	public String getCompetencia() {
		return competencia;
	}

	public void setCompetencia(String competencia) {
		this.competencia = competencia;
	}

	public Date getDataInicial() {
		return dataInicial;
	}

	public void setDataInicial(Date dataInicial) {
		this.dataInicial = dataInicial;
	}

	public Date getDataFinal() {
		return dataFinal;
	}

	public void setDataFinal(Date dataFinal) {
		this.dataFinal = dataFinal;
	}

}
