package com.rjconsultores.ventaboletos.entidad;

/// Generated 26/10/2013 14:51:58 by Hibernate Tools 3.4.0.CR1

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.GenericGenerator;

/**
 * Aidf generated by hbm2java
 */
@Entity
@Table(name = "AIDF")
public class Aidf implements java.io.Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id
	@GenericGenerator(name = "aidfgen_id", strategy = "com.rjconsultores.ventaboletos.dao.util.AidfGenerator")
	@GeneratedValue(generator = "aidfgen_id")
	@Column(name = "AIDF_ID", unique = true, nullable = false, precision = 15, scale = 0)
	private Long aidfId;
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "AIDFTIPO_ID")
	private AidfTipo aidfTipo;
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "AIDFESP_ID")
	private AidfEspecie aidfEspecie;
	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "PUNTOVENTA_ID")
	private PuntoVenta puntoVenta;
	@JoinColumn(name = "ESTADO_ID")
	@ManyToOne
	private Estado estado;
	@Column(name = "DOCFISCAL", length = 20)
	private String docfiscal;
	@Column(name = "ACFISCAL", length = 20)
	private String acfiscal;
	@Column(name = "SERIE", length = 20)
	private String serie;
	@Column(name = "SUBSERIE", length = 20)
	private String subserie;
	@Column(name = "FORMINICIAL", length = 12)
	private String forminicial;
	@Column(name = "FORMFINAL", length = 12)
	private String formfinal;
	@Temporal(TemporalType.DATE)
	@Column(name = "FECADQUISICION", length = 7)
	private Date fecadquisicion;
	@Temporal(TemporalType.DATE)
	@Column(name = "FECVENCIMIENTO", length = 7)
	private Date fecvencimiento;
	@Column(name = "INSCESTADUAL", length = 20)
	private String inscestadual;
	@JoinColumn(name = "EMPRESA_ID")
	@ManyToOne
	private Empresa empresa;
	@Column(name = "ACTIVO", precision = 1, scale = 0)
	private Boolean activo;
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "FECMODIF", length = 7)
	private Date fecmodif;
	@Column(name = "USUARIO_ID", precision = 7, scale = 0)
	private Integer usuarioId;
	@Column(name = "CNPJ", length = 20)
	private String cnpj;
	@Column(name = "TIPOVALIDAVENTA")
	private String tipoValidaVenta;

	public Aidf() {
	}

	public Aidf(AidfTipo aidfTipo, PuntoVenta puntoVenta, AidfEspecie aidfEspecie, Estado estado, String docfiscal, String acfiscal,
			String serie, String subserie, String forminicial, String formfinal, Date fecadquisicion, Date fecvencimiento,
			String inscestadual, Empresa empresa, Boolean activo, Date fecmodif, Integer usuarioId) {
		this.aidfTipo = aidfTipo;
		this.puntoVenta = puntoVenta;
		this.aidfEspecie = aidfEspecie;
		this.estado = estado;
		this.docfiscal = docfiscal;
		this.acfiscal = acfiscal;
		this.serie = serie;
		this.subserie = subserie;
		this.forminicial = forminicial;
		this.formfinal = formfinal;
		this.fecadquisicion = fecadquisicion;
		this.fecvencimiento = fecvencimiento;
		this.inscestadual = inscestadual;
		this.empresa = empresa;
		this.activo = activo;
		this.fecmodif = fecmodif;
		this.usuarioId = usuarioId;

	}

	public PuntoVenta getPuntoVenta() {
		return puntoVenta;
	}

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

	@Override
	public int hashCode() {
		int hash = 0;
		hash += (aidfId != null ? aidfId.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 Aidf))
			return false;

		Aidf other = (Aidf) object;
		if ((this.aidfId == null && other.aidfId != null) || (this.aidfId != null && !this.aidfId.equals(other.aidfId))) {
			return false;
		}
		return true;
	}

	public Long getAidfId() {
		return aidfId;
	}

	public void setAidfId(Long aidfId) {
		this.aidfId = aidfId;
	}

	public AidfTipo getAidfTipo() {
		return aidfTipo;
	}

	public void setAidfTipo(AidfTipo aidfTipo) {
		this.aidfTipo = aidfTipo;
	}

	public AidfEspecie getAidfEspecie() {
		return aidfEspecie;
	}

	public void setAidfEspecie(AidfEspecie aidfEspecie) {
		this.aidfEspecie = aidfEspecie;
	}

	public Estado getEstado() {
		return estado;
	}

	public void setEstado(Estado estado) {
		this.estado = estado;
	}

	public String getDocfiscal() {
		return docfiscal;
	}

	public void setDocfiscal(String docfiscal) {
		this.docfiscal = docfiscal;
	}

	public String getAcfiscal() {
		return acfiscal;
	}

	public void setAcfiscal(String acfiscal) {
		this.acfiscal = acfiscal;
	}

	public String getSerie() {
		return serie;
	}

	public void setSerie(String serie) {
		this.serie = serie;
	}

	public String getSubserie() {
		return subserie==null?"":subserie;
	}

	public void setSubserie(String subserie) {
		this.subserie = subserie;
	}

	public String getForminicial() {
		return forminicial;
	}

	public void setForminicial(String forminicial) {
		this.forminicial = forminicial;
	}

	public String getFormfinal() {
		return formfinal;
	}

	public void setFormfinal(String formfinal) {
		this.formfinal = formfinal;
	}

	public Date getFecadquisicion() {
		return fecadquisicion;
	}

	public void setFecadquisicion(Date fecadquisicion) {
		this.fecadquisicion = fecadquisicion;
	}

	public String getCnpj() {
		return cnpj;
	}

	public void setCnpj(String cnpj) {
		this.cnpj = cnpj;
	}

	public Date getFecvencimiento() {
		return fecvencimiento;
	}

	public void setFecvencimiento(Date fecvencimiento) {
		this.fecvencimiento = fecvencimiento;
	}

	public String getInscestadual() {
		return inscestadual;
	}

	public void setInscestadual(String inscestadual) {
		this.inscestadual = inscestadual;
	}

	public Empresa getEmpresa() {
		return empresa;
	}

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

	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 String getTipoValidaVenta() {
		return tipoValidaVenta;
	}

	public void setTipoValidaVenta(String tipoValidaVenta) {
		this.tipoValidaVenta = tipoValidaVenta;
	}
	
	public String obterSerieSubserieFormatada() {
		String serieInformada = this.getSerie();
		String subSerieInformada = this.getSubserie();
		
		if(serieInformada == null) {
			serieInformada = "";
		}
		
		return serieInformada
				.trim()
				.concat(
						subSerieInformada == null || subSerieInformada.isEmpty() 
						? "" 
						: "-".concat(subSerieInformada.trim()));
	}

	@Override
	public String toString() {
		return String.format("%s - %s", this.getAidfId(), obterSerieSubserieFormatada());
	}

}