package com.rjconsultores.ventaboletos.entidad;

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

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
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 = "CONTA_CORRENTE_PTOVTA")
@SequenceGenerator(name = "CONTA_CORRENTE_PTOVTA_SEQ", sequenceName = "CONTA_CORRENTE_PTOVTA_SEQ", allocationSize = 1)
public class ContaCorrentePtoVta implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@Basic(optional = false)
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "CONTA_CORRENTE_PTOVTA_SEQ")
	@Column(name = "CONTACORRENTEPTOVTA_ID")
	private Long contaCorrentePtoVtaId;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "PUNTOVENTA_ID")
	private PuntoVenta puntoVenta;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "EMPRESA_ID")
	private Empresa empresa;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "FECHOROPERACION")
	private Date fecHorOperacion;

	@Column(name = "DESCOPERACION")
	private String descOperacion;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "TURNO_ID")
	private Turno turno;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "FECCORTE")
	private Date fecCorte;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "USUARIO_ID")
	private Usuario usuario;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "TIPOOPERACIONCC_ID")
	private TipoOperacionCC tipoOperacionCC;

	@Column(name = "IMPORTE")
	private BigDecimal importe;

	@Column(name = "IMPORTETARIFA")
	private BigDecimal importeTotalTarifa;

	@Column(name = "IMPORTEPEDAGIO")
	private BigDecimal importeTotalPedagio;

	@Column(name = "IMPORTETAXAEMBARQUE")
	private BigDecimal importeTotalTasaAbordaje;

	@Column(name = "IMPORTESEGURO")
	private BigDecimal importeTotalSeguro;

	@Column(name = "IMPORTEINGRESO")
	private BigDecimal importeTotalIngreso;

	@Column(name = "IMPORTEEGRESO")
	private BigDecimal importeTotalEgreso;
	
	@Column(name = "IMPORTEDEVOLUCION")
	private BigDecimal importeTotalDevolucion;

	@Column(name = "IMPORTETROCA")
	private BigDecimal importeTotalTransferencia;

	@Column(name = "IMPORTETOTALEFECTIVO")
	private BigDecimal importeTotalEfectivo;
	
	@Column(name = "ACTIVO")
	private Boolean activo;
	
	@Column(name = "FECMODIF")
	private Date fecmodif;

	@Column(name = "USUARIOMODIF_ID")
	private Integer usuarioModifId;

	@Column(name = "TOTALVENTA_SEGOPCIONAL")
	private BigDecimal totalVentaSegOpcional;

	@Column(name = "TOTALCANC_SEGOPCIONAL")
	private BigDecimal totalCancSegOpcional;
	
	@Column(name = "FECHAMENTOCNTCORRENTE_ID")
	private Long fechamentocntcorrenteId;
	
	@Column(name = "IND_COMISSAO")
	private Boolean indComissao;
	
	@Column(name = "IMPORTETOTALDEBITO")
	private BigDecimal importetotalDebito;
		
	@Column(name = "IMPORTETOTALCREDITO")
	private BigDecimal importetotalCredito;	
	
	public ContaCorrentePtoVta() {
		super();
	}
	
	public ContaCorrentePtoVta(Long contaCorrentePtoVtaId) {
		this();
		this.contaCorrentePtoVtaId = contaCorrentePtoVtaId;
	}
	
	public Long getContaCorrentePtoVtaId() {
		return contaCorrentePtoVtaId;
	}

	public void setContaCorrentePtoVtaId(Long contaCorrentePtoVtaId) {
		this.contaCorrentePtoVtaId = contaCorrentePtoVtaId;
	}

	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 getFecHorOperacion() {
		return fecHorOperacion;
	}

	public void setFecHorOperacion(Date fecHorOperacion) {
		this.fecHorOperacion = fecHorOperacion;
	}

	public String getDescOperacion() {
		return descOperacion;
	}

	public void setDescOperacion(String descOperacion) {
		this.descOperacion = descOperacion;
	}

	public Turno getTurno() {
		return turno;
	}

	public void setTurno(Turno turno) {
		this.turno = turno;
	}

	public Date getFecCorte() {
		return fecCorte;
	}

	public void setFecCorte(Date fecCorte) {
		this.fecCorte = fecCorte;
	}

	public BigDecimal getImporte() {
		return importe;
	}

	public void setImporte(BigDecimal importe) {
		this.importe = importe;
	}

	public TipoOperacionCC getTipoOperacionCC() {
		return tipoOperacionCC;
	}

	public void setTipoOperacionCC(TipoOperacionCC tipoOperacionCC) {
		this.tipoOperacionCC = tipoOperacionCC;
	}

	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 getUsuarioModifId() {
		return usuarioModifId;
	}

	public void setUsuarioModifId(Integer usuarioModifId) {
		this.usuarioModifId = usuarioModifId;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public BigDecimal getImporteTotalTarifa() {
		return importeTotalTarifa;
	}

	public void setImporteTotalTarifa(BigDecimal importeTotalTarifa) {
		this.importeTotalTarifa = importeTotalTarifa;
	}

	public BigDecimal getImporteTotalPedagio() {
		return importeTotalPedagio;
	}

	public void setImporteTotalPedagio(BigDecimal importeTotalPedagio) {
		this.importeTotalPedagio = importeTotalPedagio;
	}

	public BigDecimal getImporteTotalTasaAbordaje() {
		return importeTotalTasaAbordaje;
	}

	public void setImporteTotalTasaAbordaje(BigDecimal importeTotalTasaAbordaje) {
		this.importeTotalTasaAbordaje = importeTotalTasaAbordaje;
	}

	public BigDecimal getImporteTotalSeguro() {
		return importeTotalSeguro;
	}

	public void setImporteTotalSeguro(BigDecimal importeTotalSeguro) {
		this.importeTotalSeguro = importeTotalSeguro;
	}

	public BigDecimal getImporteTotalIngreso() {
		return importeTotalIngreso;
	}

	public void setImporteTotalIngreso(BigDecimal importeTotalIngreso) {
		this.importeTotalIngreso = importeTotalIngreso;
	}

	public BigDecimal getImporteTotalEgreso() {
		return importeTotalEgreso;
	}

	public void setImporteTotalEgreso(BigDecimal importeTotalEgreso) {
		this.importeTotalEgreso = importeTotalEgreso;
	}

	public BigDecimal getImporteTotalDevolucion() {
		return importeTotalDevolucion;
	}

	public void setImporteTotalDevolucion(BigDecimal importeTotalDevolucion) {
		this.importeTotalDevolucion = importeTotalDevolucion;
	}

	public BigDecimal getImporteTotalTransferencia() {
		return importeTotalTransferencia;
	}

	public void setImporteTotalTransferencia(BigDecimal importeTotalTransferencia) {
		this.importeTotalTransferencia = importeTotalTransferencia;
	}

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

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

		return true;
	}

	@Override
	public String toString() {
		try {
			return "ContaCorrentePtoVta [contaCorrentePtoVtaId="
					+ contaCorrentePtoVtaId + ", puntoVenta=" + puntoVenta.getPuntoventaId()
					+ ", empresa=" + empresa.getEmpresaId() + ", fecHorOperacion="
					+ fecHorOperacion + ", descOperacion=" + descOperacion
					+ ", turno=" + turno.getTurnoId() + ", fecCorte=" + fecCorte + ", usuario="
					+ usuario.getUsuarioId() + ", tipoOperacionCC=" + tipoOperacionCC.getTipoOperacionCCId()
					+ ", importe=" + importe + ", importeTotalTarifa="
					+ importeTotalTarifa + ", importeTotalPedagio="
					+ importeTotalPedagio + ", importeTotalTasaAbordaje="
					+ importeTotalTasaAbordaje + ", importeTotalSeguro="
					+ importeTotalSeguro + ", importeTotalIngreso="
					+ importeTotalIngreso + ", importeTotalEgreso="
					+ importeTotalEgreso + ", importeTotalDevolucion="
					+ importeTotalDevolucion + ", importeTotalTransferencia="
					+ importeTotalTransferencia + ", activo=" + activo
					+ ", fecmodif=" + fecmodif + ", usuarioModifId="
					+ usuarioModifId + "]";
		} catch (Throwable e) {
			return super.toString();
		}
	}

	public BigDecimal getTotalVentaSegOpcional() {
		return totalVentaSegOpcional;
	}

	public void setTotalVentaSegOpcional(BigDecimal totalVentaSegOpcional) {
		this.totalVentaSegOpcional = totalVentaSegOpcional;
	}

	public BigDecimal getTotalCancSegOpcional() {
		return totalCancSegOpcional;
	}

	public void setTotalCancSegOpcional(BigDecimal totalCancSegOpcional) {
		this.totalCancSegOpcional = totalCancSegOpcional;
	}

	public BigDecimal getImporteTotalEfectivo() {
		return importeTotalEfectivo;
	}

	public void setImporteTotalEfectivo(BigDecimal importeTotalEfectivo) {
		this.importeTotalEfectivo = importeTotalEfectivo;
	}

	public Long getFechamentocntcorrenteId() {
		return fechamentocntcorrenteId;
	}

	public void setFechamentocntcorrenteId(Long fechamentocntcorrenteId) {
		this.fechamentocntcorrenteId = fechamentocntcorrenteId;
	}

	public Boolean getIndComissao() {
		return indComissao;
	}

	public void setIndComissao(Boolean indComissao) {
		this.indComissao = indComissao;
	}

	public BigDecimal getImportetotalDebito() {
		return importetotalDebito;
	}

	public void setImportetotalDebito(BigDecimal importetotalDebito) {
		this.importetotalDebito = importetotalDebito;
	}

	public BigDecimal getImportetotalCredito() {
		return importetotalCredito;
	}

	public void setImportetotalCredito(BigDecimal importetotalCredito) {
		this.importetotalCredito = importetotalCredito;
	}
	
}