package com.rjconsultores.ventaboletos.vo.comissao;

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

import org.apache.commons.lang.StringUtils;
import org.zkoss.util.resource.Labels;

import com.rjconsultores.ventaboletos.entidad.Conferencia;
import com.rjconsultores.ventaboletos.enums.comissao.StatusLogConferencia;
import com.rjconsultores.ventaboletos.utilerias.BigDecimalUtil;
import com.rjconsultores.ventaboletos.utilerias.LocaleUtil;

public class OcdVO {

	private Long ocdId;

	private Long boletoId;
	private Integer puntoventaId;

	private String numoperacion;

	private Date fecpagar;
	private BigDecimal valorPagar;
	private BigDecimal penalizacion;

	private Integer usuarioIncId;
	private Date fecinc;

	private Boolean indpago;
	private Integer usuarioPagoId;
	private Date fecpago;
	private Integer puntoventapagoId;

	private Date fecmodif;
	private Integer usuarioId;
	private Boolean activo;
	private String nombusuario;
	private String login;
	private String numFolioSistema;
	
	private Integer status;
	private Long logconferenciaId;
	private boolean conferido;
	
	private boolean exigeConferenciaAba;
	
	private Conferencia conferencia;

	public Long getOcdId() {
		return ocdId;
	}

	public void setOcdId(Long ocdId) {
		this.ocdId = ocdId;
	}

	public Long getBoletoId() {
		return boletoId;
	}

	public void setBoletoId(Long boletoId) {
		this.boletoId = boletoId;
	}

	public Integer getPuntoventaId() {
		return puntoventaId;
	}

	public void setPuntoventaId(Integer puntoventaId) {
		this.puntoventaId = puntoventaId;
	}

	public String getNumoperacion() {
		return numoperacion;
	}

	public void setNumoperacion(String numoperacion) {
		this.numoperacion = numoperacion;
	}

	public Date getFecpagar() {
		return fecpagar;
	}

	public void setFecpagar(Date fecpagar) {
		this.fecpagar = fecpagar;
	}

	public BigDecimal getValorPagar() {
		return valorPagar;
	}

	public void setValorPagar(BigDecimal valorPagar) {
		this.valorPagar = valorPagar;
	}

	public BigDecimal getPenalizacion() {
		return penalizacion;
	}

	public void setPenalizacion(BigDecimal penalizacion) {
		this.penalizacion = penalizacion;
	}

	public Integer getUsuarioIncId() {
		return usuarioIncId;
	}

	public void setUsuarioIncId(Integer usuarioIncId) {
		this.usuarioIncId = usuarioIncId;
	}

	public Date getFecinc() {
		return fecinc;
	}

	public void setFecinc(Date fecinc) {
		this.fecinc = fecinc;
	}

	public Boolean getIndpago() {
		return indpago;
	}

	public void setIndpago(Boolean indpago) {
		this.indpago = indpago;
	}

	public Integer getUsuarioPagoId() {
		return usuarioPagoId;
	}

	public void setUsuarioPagoId(Integer usuarioPagoId) {
		this.usuarioPagoId = usuarioPagoId;
	}

	public Date getFecpago() {
		return fecpago;
	}

	public void setFecpago(Date fecpago) {
		this.fecpago = fecpago;
	}

	public Integer getPuntoventapagoId() {
		return puntoventapagoId;
	}

	public void setPuntoventapagoId(Integer puntoventapagoId) {
		this.puntoventapagoId = puntoventapagoId;
	}

	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 Boolean getActivo() {
		return activo;
	}

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

	public Integer getStatus() {
		return status;
	}

	public void setStatus(Integer status) {
		this.status = status;
	}
	
	public String getStatusDescricao() {
		StatusLogConferencia statusLogConferencia = StatusLogConferencia.getStatusLogConferencia(status);
		if(statusLogConferencia != null) {
			return statusLogConferencia.toString();
		}
		return "";
	}
	
	public String getDescindpago() {
		return getIndpago() != null && getIndpago() ? Labels.getLabel("conferenciaController.lbl.sim") : Labels.getLabel("conferenciaController.lbl.nao");
	}

	public String getNombusuario() {
		return nombusuario;
	}

	public void setNombusuario(String nombusuario) {
		this.nombusuario = nombusuario;
	}
	
	public String getValorPagarFormatado() {
		return BigDecimalUtil.getBigDecimalToStringDouble2CasasDecimaisFormatado(getValorPagar(), LocaleUtil.getLocale());
	}

	public String getPenalizacionFormatado() {
		return BigDecimalUtil.getBigDecimalToStringDouble2CasasDecimaisFormatado(getPenalizacion(), LocaleUtil.getLocale());
	}

	public Long getLogconferenciaId() {
		return logconferenciaId;
	}

	public void setLogconferenciaId(Long logconferenciaId) {
		this.logconferenciaId = logconferenciaId;
	}

	public boolean isConferido() {
		return conferido;
	}

	public void setConferido(boolean conferido) {
		this.conferido = conferido;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getNumFolioSistema() {
		return numFolioSistema;
	}

	public void setNumFolioSistema(String numFolioSistema) {
		this.numFolioSistema = numFolioSistema;
	}
	
	public String getNombusuarioLogin() {
		StringBuilder nombusuarioLogin = new StringBuilder();
		
		nombusuarioLogin.append(StringUtils.isNotBlank(getNombusuario()) ? getNombusuario() : "");
		
		if(nombusuarioLogin.length() > 0) {
			nombusuarioLogin.append(" - ")
							.append(StringUtils.isNotBlank(getLogin()) ? getLogin() : "");
		}
		
		return nombusuarioLogin.toString();
	}

	public boolean isExigeConferenciaAba() {
		return exigeConferenciaAba;
	}

	public void setExigeConferenciaAba(boolean exigeConferenciaAba) {
		this.exigeConferenciaAba = exigeConferenciaAba;
	}
	
	public String getOrderExigeConferencia() {
		if(isExigeConferenciaAba()) {
			if(!isConferido()) {
				return "A";
			} else if (isConferido()){
				return "B";
			}
		}
		return "C";
	}

	public Conferencia getConferencia() {
		return conferencia;
	}

	public void setConferencia(Conferencia conferencia) {
		this.conferencia = conferencia;
	}
	
	public Date getOrderDataMovimento(){
		return conferencia.getDatamovimento();
	}
	
}
