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 org.hibernate.Hibernate;

import br.com.rjconsultores.auditador.annotations.AuditarClasse;
import br.com.rjconsultores.auditador.annotations.NaoAuditar;
import br.com.rjconsultores.auditador.interfaces.Auditavel;

@AuditarClasse(nome = "HistoricoFormaPagoPuntoVenta", tela = "auditarClasse.HistoricoFormaPagoPuntoVenta")
@Entity
@SequenceGenerator(name = "HIST_FORMAPAGOPUNTOVENTA_SEQ", sequenceName = "HIST_FORMAPAGOPUNTOVENTA_SEQ", allocationSize = 1)
@Table(name = "HIST_FORMAPAGO_PUNTOVENTA")
public class HistoricoFormaPagoPuntoVenta implements Serializable, Auditavel<HistoricoFormaPagoPuntoVenta> {

	private static final long serialVersionUID = 1L;
	@Id
	@Basic(optional = false)
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "HIST_FORMAPAGOPUNTOVENTA_SEQ")
	@Column(name = "HIST_FORMAPAGO_PUNTOVENTA_ID")
	private Integer historicoFormaPagoPuntoVentaId;

	@Column(name = "IND_INCLUSAO")
	private Boolean indInclusao;
	
	@Column(name = "MOTIVO")
	private String motivo;

	@Column(name = "FEC_ALTERACAO")
	@Temporal(TemporalType.TIMESTAMP)
	private Date fecAlteracao;

	@NaoAuditar
	@ManyToOne
	@JoinColumn(name = "PUNTOVENTA_ID")
	private PuntoVenta puntoVenta;
	
	@Column(name = "FORMAPAGO_ID")
	private Integer formaPagoId;

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

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

	@Column(name = "USUARIO_ID")
	private Integer usuarioId;
	
	@Column(name = "EMPRESA_ID")
	private Integer empresaId;

	@Transient
	@NaoAuditar
	private HistoricoFormaPagoPuntoVenta historicoPuntoVentaClone;
	
	
	public Integer getHistoricoFormaPagoPuntoVentaId() {
		return historicoFormaPagoPuntoVentaId;
	}

	public void setHistoricoFormaPagoPuntoVentaId(Integer historicoFormaPagoPuntoVentaId) {
		this.historicoFormaPagoPuntoVentaId = historicoFormaPagoPuntoVentaId;
	}

	public Boolean getIndInclusao() {
		return indInclusao;
	}

	public void setIndInclusao(Boolean indInclusao) {
		this.indInclusao = indInclusao;
	}

	public Date getFecAlteracao() {
		return fecAlteracao;
	}

	public void setFecAlteracao(Date fecAlteracao) {
		this.fecAlteracao = fecAlteracao;
	}

	public HistoricoFormaPagoPuntoVenta getHistoricoPuntoVentaClone() {
		return historicoPuntoVentaClone;
	}

	public void setHistoricoPuntoVentaClone(HistoricoFormaPagoPuntoVenta historicoPuntoVentaClone) {
		this.historicoPuntoVentaClone = historicoPuntoVentaClone;
	}

	public PuntoVenta getPuntoVenta() {
		return puntoVenta;
	}

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

	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 Integer getUsuarioId() {
		return usuarioId;
	}

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

	public Integer getEmpresaId() {
		return empresaId;
	}

	public void setEmpresaId(Integer empresaId) {
		this.empresaId = empresaId;
	}

	public String getMotivo() {
		return motivo;
	}

	public void setMotivo(String motivo) {
		this.motivo = motivo;
	}

	public Integer getFormaPagoId() {
		return formaPagoId;
	}

	public void setFormaPagoId(Integer formaPagoId) {
		this.formaPagoId = formaPagoId;
	}

	@Override
	public void clonar() throws CloneNotSupportedException {
		historicoPuntoVentaClone = new HistoricoFormaPagoPuntoVenta();
		historicoPuntoVentaClone = (HistoricoFormaPagoPuntoVenta) this.clone();
		Hibernate.initialize(historicoPuntoVentaClone.getPuntoVenta());
		
	}

	@Override
	public HistoricoFormaPagoPuntoVenta getCloneObject() throws CloneNotSupportedException {
		return historicoPuntoVentaClone;
	}

	@Override
	public String getTextoInclusaoExclusao() {
		return String.format("ID [%s]", getHistoricoFormaPagoPuntoVentaId());
	}
	
	
	
}
