package com.rjconsultores.ventaboletos.entidad;

import java.math.BigDecimal;
import java.util.Date;

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;

@Entity
@Table(name = "FECHAMENTO_PARAMGERAL")
public class FechamentoParamgeral implements java.io.Serializable {

	private static final long serialVersionUID = 1L;

	@SequenceGenerator(name = "FECHAMENTO_PARAMGERAL_SEQ", sequenceName = "FECHAMENTO_PARAMGERAL_SEQ", allocationSize = 1)
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "FECHAMENTO_PARAMGERAL_SEQ")
	@Column(name = "FECHAMENTOPARAMGERAL_ID", unique = true, nullable = false, precision = 15, scale = 0)
	private Long fechamentoparamgeralId;

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

	@Column(name = "BOLETO_BANCO_COD", length = 4)
	private String boletoBancoCod;

	@Column(name = "BOLETO_BANCO_AGENCIA", length = 10)
	private String boletoBancoAgencia;

	@Column(name = "BOLETO_BANCO_AGENCIA_DIGITO", length = 10)
	private String boletoBancoAgenciaDigito;

	@Column(name = "BOLETO_BANCO_CONTA", length = 10)
	private String boletoBancoConta;

	@Column(name = "BOLETO_BANCO_CONTA_DIGITO", length = 1)
	private String boletoBancoContaDigito;

	@Column(name = "BOLETO_BANCO_CARTEIRA", length = 3)
	private String boletoBancoCarteira;

	@Column(name = "BOLETO_BANCO_CARTEIRA_VARIAVEL", length = 3)
	private String boletoBancoCarteiraVariavel;

	@Column(name = "BOLETO_DIAS_VENC", length = 3)
	private Integer boletoDiasVenc;

	@Column(name = "BOLETO_JUROS", precision = 5, scale = 2)
	private BigDecimal boletoJuros;

	@Column(name = "BOLETO_MULTA", precision = 5, scale = 2)
	private BigDecimal boletoMulta;

	@Column(name = "COD_EMP_BANCO", precision = 7, scale = 0)
	private String codConvenio;

	@Column(name = "BOLETO_BANCO_INSTRUCAO", precision = 255)
	private String boletoBancoInstrucao;

	@Column(name = "BOLETO_BANCO_INSTRUCAO2", precision = 255)
	private String boletoBancoInstrucao2;

	@Column(name = "BOLETO_BANCO_INSTRUCAO3", precision = 255)
	private String boletoBancoInstrucao3;

	@Column(name = "BOLETO_BANCO_INSTRUCAO_SACADO", precision = 255)
	private String boletoBancoInstrucaoSacado;

	@Column(name = "COUNT_REMESSA", precision = 15, scale = 0)
	private Long countRemessa;

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

	@Column(name = "USUARIO_ID", precision = 7, scale = 0)
	private Integer usuarioId;

	@Column(name = "ACTIVO", precision = 1, scale = 0)
	private Boolean activo;

	public FechamentoParamgeral() {
		super();
	}

	public FechamentoParamgeral(Empresa empresa, String boletoBancoCod,
			String boletoBancoAgencia, String boletoBancoConta,
			String boletoBancoContaDigito, String boletoBancoCarteira,
			Integer boletoDiasVenc, Date fecmodif, Integer usuarioId,
			Boolean activo) {
		this();
		this.empresa = empresa;
		this.boletoBancoCod = boletoBancoCod;
		this.boletoBancoAgencia = boletoBancoAgencia;
		this.boletoBancoConta = boletoBancoConta;
		this.boletoBancoContaDigito = boletoBancoContaDigito;
		this.boletoBancoCarteira = boletoBancoCarteira;
		this.boletoDiasVenc = boletoDiasVenc;

		this.fecmodif = fecmodif;
		this.usuarioId = usuarioId;
		this.activo = activo;
	}

	public FechamentoParamgeral(Long fechamentoparamgeralId, Empresa empresa, String boletoBancoCod,
			String boletoBancoAgencia, String boletoBancoAgenciaDigito, String boletoBancoConta,
			String boletoBancoContaDigito, String boletoBancoCarteira, String boletoBancoCarteiraVariavel,
			Integer boletoDiasVenc, BigDecimal boletoJuros, BigDecimal boletoMulta,
			String codConvenio, String boletoBancoInstrucao, String boletoBancoInstrucao2,
			String boletoBancoInstrucao3, String boletoBancoInstrucaoSacado, Long countRemessa,
			Date fecmodif, Integer usuarioId, Boolean activo) {
		super();
		this.fechamentoparamgeralId = fechamentoparamgeralId;
		this.empresa = empresa;
		this.boletoBancoCod = boletoBancoCod;
		this.boletoBancoAgencia = boletoBancoAgencia;
		this.boletoBancoAgenciaDigito = boletoBancoAgenciaDigito;
		this.boletoBancoConta = boletoBancoConta;
		this.boletoBancoContaDigito = boletoBancoContaDigito;
		this.boletoBancoCarteira = boletoBancoCarteira;
		this.boletoBancoCarteiraVariavel = boletoBancoCarteiraVariavel;
		this.boletoDiasVenc = boletoDiasVenc;
		this.boletoJuros = boletoJuros;
		this.boletoMulta = boletoMulta;
		this.codConvenio = codConvenio;
		this.boletoBancoInstrucao = boletoBancoInstrucao;
		this.boletoBancoInstrucao2 = boletoBancoInstrucao2;
		this.boletoBancoInstrucao3 = boletoBancoInstrucao3;
		this.boletoBancoInstrucaoSacado = boletoBancoInstrucaoSacado;
		this.countRemessa = countRemessa;
		this.fecmodif = fecmodif;
		this.usuarioId = usuarioId;
		this.activo = activo;
	}

	public FechamentoParamgeral(Empresa empresa, String boletoBancoCod,
			String boletoBancoAgencia, String boletoBancoConta,
			String boletoBancoContaDigito, String boletoBancoCarteira,
			Integer boletoDiasVenc, Integer usuarioId) {
		this();
		this.empresa = empresa;
		this.boletoBancoCod = boletoBancoCod;
		this.boletoBancoAgencia = boletoBancoAgencia;
		this.boletoBancoConta = boletoBancoConta;
		this.boletoBancoContaDigito = boletoBancoContaDigito;
		this.boletoBancoCarteira = boletoBancoCarteira;
		this.boletoDiasVenc = boletoDiasVenc;

		this.fecmodif = new Date();
		this.usuarioId = usuarioId;
		this.activo = true;
	}

	public Long getFechamentoparamgeralId() {
		return fechamentoparamgeralId;
	}

	public void setFechamentoparamgeralId(Long fechamentoparamgeralId) {
		this.fechamentoparamgeralId = fechamentoparamgeralId;
	}

	public Empresa getEmpresa() {
		return empresa;
	}

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

	public String getBoletoBancoCod() {
		return boletoBancoCod;
	}

	public void setBoletoBancoCod(String boletoBancoCod) {
		this.boletoBancoCod = boletoBancoCod;
	}

	public String getBoletoBancoAgencia() {
		return boletoBancoAgencia;
	}

	public void setBoletoBancoAgencia(String boletoBancoAgencia) {
		this.boletoBancoAgencia = boletoBancoAgencia;
	}

	public String getBoletoBancoAgenciaDigito() {
		return boletoBancoAgenciaDigito;
	}

	public void setBoletoBancoAgenciaDigito(String boletoBancoAgenciaDigito) {
		this.boletoBancoAgenciaDigito = boletoBancoAgenciaDigito;
	}

	public String getBoletoBancoConta() {
		return boletoBancoConta;
	}

	public void setBoletoBancoConta(String boletoBancoConta) {
		this.boletoBancoConta = boletoBancoConta;
	}

	public String getBoletoBancoContaDigito() {
		return boletoBancoContaDigito;
	}

	public void setBoletoBancoContaDigito(String boletoBancoContaDigito) {
		this.boletoBancoContaDigito = boletoBancoContaDigito;
	}

	public String getBoletoBancoCarteira() {
		return boletoBancoCarteira;
	}

	public void setBoletoBancoCarteira(String boletoBancoCarteira) {
		this.boletoBancoCarteira = boletoBancoCarteira;
	}

	public String getBoletoBancoCarteiraVariavel() {
		return boletoBancoCarteiraVariavel;
	}

	public void setBoletoBancoCarteiraVariavel(String boletoBancoCarteiraVariavel) {
		this.boletoBancoCarteiraVariavel = boletoBancoCarteiraVariavel;
	}

	public Integer getBoletoDiasVenc() {
		return boletoDiasVenc;
	}

	public void setBoletoDiasVenc(Integer boletoDiasVenc) {
		this.boletoDiasVenc = boletoDiasVenc;
	}

	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 getCodConvenio() {
		return codConvenio;
	}

	public void setCodConvenio(String codConvenio) {
		this.codConvenio = codConvenio;
	}

	public String getBoletoBancoInstrucao() {
		return boletoBancoInstrucao;
	}

	public void setBoletoBancoInstrucao(String boletoBancoInstrucao) {
		this.boletoBancoInstrucao = boletoBancoInstrucao;
	}

	public String getBoletoBancoInstrucao2() {
		return boletoBancoInstrucao2;
	}

	public void setBoletoBancoInstrucao2(String boletoBancoInstrucao2) {
		this.boletoBancoInstrucao2 = boletoBancoInstrucao2;
	}

	public String getBoletoBancoInstrucao3() {
		return boletoBancoInstrucao3;
	}

	public void setBoletoBancoInstrucao3(String boletoBancoInstrucao3) {
		this.boletoBancoInstrucao3 = boletoBancoInstrucao3;
	}

	public String getBoletoBancoInstrucaoSacado() {
		return boletoBancoInstrucaoSacado;
	}

	public void setBoletoBancoInstrucaoSacado(String boletoBancoInstrucaoSacado) {
		this.boletoBancoInstrucaoSacado = boletoBancoInstrucaoSacado;
	}

	public Long getCountRemessa() {
		return countRemessa;
	}

	public void setCountRemessa(Long countRemessa) {
		this.countRemessa = countRemessa;
	}

	public BigDecimal getBoletoJuros() {
		return boletoJuros;
	}

	public void setBoletoJuros(BigDecimal boletoJuros) {
		this.boletoJuros = boletoJuros;
	}

	public BigDecimal getBoletoMulta() {
		return boletoMulta;
	}

	public void setBoletoMulta(BigDecimal boletoMulta) {
		this.boletoMulta = boletoMulta;
	}

	public Boolean getActivo() {
		return activo;
	}

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

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

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