package com.rjconsultores.ventaboletos.vo.comissao;

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

import org.apache.commons.lang.StringUtils;

public class ComissaoReceita {

	private Date data;
	private BigDecimal receitaComissao;
	private BigDecimal receitaBPR;
	private BigDecimal receitaGAP;
	private BigDecimal gapImpressa;
	private BigDecimal internet;
	private BigDecimal cancelados;
	private BigDecimal canceladosGAP;
	private BigDecimal devolvidos;
	private BigDecimal devolvidosGAP;
	private BigDecimal devolucoesOrigem;
	private BigDecimal devolucoesOrigemGAP;
	private BigDecimal receitaExcessoBagagem;
	private BigDecimal receitaSeguro;
	private BigDecimal receitaSeguroOpcional;
	private BigDecimal receitaSeguroOutros;
	private Integer contImpressa;

	private BigDecimal comissaoBPRDiaria;
	private BigDecimal comissaoExcessoBagagemDiaria;
	private BigDecimal comissaoSegOpcionalDiaria;
	private BigDecimal comissaoEntregaPassagemDiaria;
	private BigDecimal comissaoOutrosDiaria;
	private BigDecimal comissaoSeguroObrigatorioDiaria;
	
	private String nombpuntoventa;
	private String numPuntoVenta;
	
	private List<ComissaoLogVO> lsComissaoLog;
	
	public ComissaoReceita() {
		super();
		this.receitaComissao = BigDecimal.ZERO;
		this.receitaBPR = BigDecimal.ZERO;
		this.receitaGAP = BigDecimal.ZERO;
		this.gapImpressa = BigDecimal.ZERO;
		this.internet = BigDecimal.ZERO;
		this.cancelados = BigDecimal.ZERO;
		this.canceladosGAP = BigDecimal.ZERO;
		this.devolvidos = BigDecimal.ZERO;
		this.devolvidosGAP = BigDecimal.ZERO;
		this.devolucoesOrigem = BigDecimal.ZERO;
		this.devolucoesOrigemGAP = BigDecimal.ZERO;
		this.receitaExcessoBagagem = BigDecimal.ZERO;
		this.receitaSeguro = BigDecimal.ZERO;
		this.receitaSeguroOpcional = BigDecimal.ZERO;
		this.receitaSeguroOutros = BigDecimal.ZERO;
		this.contImpressa = 0;
		this.comissaoBPRDiaria = BigDecimal.ZERO;
		this.comissaoExcessoBagagemDiaria = BigDecimal.ZERO;
		this.comissaoSegOpcionalDiaria = BigDecimal.ZERO;
		this.comissaoEntregaPassagemDiaria = BigDecimal.ZERO;
		this.comissaoOutrosDiaria = BigDecimal.ZERO;
		this.comissaoSeguroObrigatorioDiaria = BigDecimal.ZERO;
		this.lsComissaoLog = new ArrayList<ComissaoLogVO>();
	}

	public Date getData() {
		return data;
	}

	public void setData(Date data) {
		this.data = data;
	}

	public BigDecimal getReceitaComissao() {
		return receitaComissao;
	}

	public void setReceitaComissao(BigDecimal receitaComissao) {
		this.receitaComissao = receitaComissao;
	}

	public BigDecimal getReceitaBPR() {
		return receitaBPR;
	}

	public void setReceitaBPR(BigDecimal receitaBPR) {
		this.receitaBPR = receitaBPR;
	}

	public BigDecimal getReceitaGAP() {
		return receitaGAP;
	}

	public void setReceitaGAP(BigDecimal receitaGAP) {
		this.receitaGAP = receitaGAP;
	}

	public BigDecimal getGapImpressa() {
		return gapImpressa;
	}

	public void setGapImpressa(BigDecimal gapImpressa) {
		this.gapImpressa = gapImpressa;
	}

	public BigDecimal getInternet() {
		return internet;
	}

	public void setInternet(BigDecimal internet) {
		this.internet = internet;
	}

	public BigDecimal getCancelados() {
		return cancelados;
	}

	public void setCancelados(BigDecimal cancelados) {
		this.cancelados = cancelados;
	}

	public BigDecimal getCanceladosGAP() {
		return canceladosGAP;
	}

	public void setCanceladosGAP(BigDecimal canceladosGAP) {
		this.canceladosGAP = canceladosGAP;
	}

	public BigDecimal getDevolvidos() {
		return devolvidos;
	}

	public void setDevolvidos(BigDecimal devolvidos) {
		this.devolvidos = devolvidos;
	}
	
	public BigDecimal getDevolvidosRelatorio() {
		return getDevolvidos();
	}
	
	public BigDecimal getDevolvidosGAPRelatorio() {
		return getDevolvidosGAP();
	}

	public BigDecimal getDevolvidosGAP() {
		return devolvidosGAP;
	}

	public void setDevolvidosGAP(BigDecimal devolvidosGAP) {
		this.devolvidosGAP = devolvidosGAP;
	}

	public BigDecimal getDevolucoesOrigem() {
		return devolucoesOrigem;
	}

	public void setDevolucoesOrigem(BigDecimal devolucoesOrigem) {
		this.devolucoesOrigem = devolucoesOrigem;
	}

	public BigDecimal getDevolucoesOrigemGAP() {
		return devolucoesOrigemGAP;
	}

	public void setDevolucoesOrigemGAP(BigDecimal devolucoesOrigemGAP) {
		this.devolucoesOrigemGAP = devolucoesOrigemGAP;
	}

	public BigDecimal getReceitaExcessoBagagem() {
		return receitaExcessoBagagem;
	}

	public void setReceitaExcessoBagagem(BigDecimal receitaExcessoBagagem) {
		this.receitaExcessoBagagem = receitaExcessoBagagem;
	}

	public BigDecimal getReceitaSeguroOpcional() {
		return receitaSeguroOpcional;
	}

	public void setReceitaSeguroOpcional(BigDecimal receitaSeguroOpcional) {
		this.receitaSeguroOpcional = receitaSeguroOpcional;
	}

	public Integer getContImpressa() {
		return contImpressa;
	}

	public void setContImpressa(Integer contImpressa) {
		this.contImpressa = contImpressa;
	}

	public BigDecimal getComissaoBPRDiaria() {
		return comissaoBPRDiaria;
	}

	public void setComissaoBPRDiaria(BigDecimal comissaoBPRDiaria) {
		this.comissaoBPRDiaria = comissaoBPRDiaria;
	}

	public BigDecimal getComissaoExcessoBagagemDiaria() {
		return comissaoExcessoBagagemDiaria;
	}

	public void setComissaoExcessoBagagemDiaria(BigDecimal comissaoExcessoBagagemDiaria) {
		this.comissaoExcessoBagagemDiaria = comissaoExcessoBagagemDiaria;
	}

	public BigDecimal getComissaoSegOpcionalDiaria() {
		return comissaoSegOpcionalDiaria;
	}

	public void setComissaoSegOpcionalDiaria(BigDecimal comissaoSegOpcionalDiaria) {
		this.comissaoSegOpcionalDiaria = comissaoSegOpcionalDiaria;
	}

	public BigDecimal getComissaoEntregaPassagemDiaria() {
		return comissaoEntregaPassagemDiaria;
	}

	public void setComissaoEntregaPassagemDiaria(BigDecimal comissaoEntregaPassagemDiaria) {
		this.comissaoEntregaPassagemDiaria = comissaoEntregaPassagemDiaria;
	}

	public BigDecimal getReceitaSeguroOutros() {
		return receitaSeguroOutros;
	}

	public void setReceitaSeguroOutros(BigDecimal receitaSeguroOutros) {
		this.receitaSeguroOutros = receitaSeguroOutros;
	}

	public BigDecimal getComissaoOutrosDiaria() {
		return comissaoOutrosDiaria;
	}

	public void setComissaoOutrosDiaria(BigDecimal comissaoOutrosDiaria) {
		this.comissaoOutrosDiaria = comissaoOutrosDiaria;
	}

	@Override
	public String toString() {
		return "ComissaoReceita [data=" + data + ", receitaComissao=" + receitaComissao + ", receitaBPR=" + receitaBPR + ", receitaGAP=" + receitaGAP + ", gapImpressa=" + gapImpressa + ", internet=" + internet + ", cancelados=" + cancelados + ", canceladosGAP=" + canceladosGAP + ", devolvidos=" + devolvidos + ", devolvidosGAP=" + devolvidosGAP + ", devolucoesOrigem=" + devolucoesOrigem + ", devolucoesOrigemGAP=" + devolucoesOrigemGAP + ", receitaExcessoBagagem=" + receitaExcessoBagagem + ", receitaSeguroOpcional=" + receitaSeguroOpcional + ", contImpressa=" + contImpressa + ", comissaoBPRDiaria=" + comissaoBPRDiaria + ", comissaoExcessoBagagemDiaria=" + comissaoExcessoBagagemDiaria + ", comissaoSegOpcionalDiaria=" + comissaoSegOpcionalDiaria + ", comissaoEntregaPassagemDiaria=" + comissaoEntregaPassagemDiaria + "]";
	}
	
	public BigDecimal getTotal() {
		BigDecimal total = BigDecimal.ZERO;
		total = total.add(getReceitaBPR() != null ? getReceitaBPR() : BigDecimal.ZERO)
					 .add(getReceitaGAP() != null ? getReceitaGAP() : BigDecimal.ZERO)
					 .add(getInternet() != null ? getInternet() : BigDecimal.ZERO)
					 .subtract(getDevolvidos() != null ? getDevolvidos() : BigDecimal.ZERO)
					 .subtract(getDevolvidosGAP() != null ? getDevolvidosGAP() : BigDecimal.ZERO)
					 .subtract(getCancelados() != null ? getCancelados() : BigDecimal.ZERO)
					 .subtract(getCanceladosGAP() != null ? getCanceladosGAP() : BigDecimal.ZERO);
		return total;
	}
	
	public BigDecimal getTotalComissao() {
		BigDecimal totalComissao = BigDecimal.ZERO;
		totalComissao = totalComissao.add(getComissaoBPRDiaria() != null ? getComissaoBPRDiaria() : BigDecimal.ZERO)
					 				 .add(getComissaoEntregaPassagemDiaria() != null ? getComissaoEntregaPassagemDiaria() : BigDecimal.ZERO)
					 				 .add(getComissaoExcessoBagagemDiaria() != null ? getComissaoExcessoBagagemDiaria() : BigDecimal.ZERO)
					 				 .add(getComissaoOutrosDiaria() != null ? getComissaoOutrosDiaria() : BigDecimal.ZERO)
					 				 .add(getComissaoSeguroObrigatorioDiaria() != null ? getComissaoSeguroObrigatorioDiaria() : BigDecimal.ZERO)
					 				 .add(getComissaoSegOpcionalDiaria() != null ? getComissaoSegOpcionalDiaria() : BigDecimal.ZERO);
		return totalComissao;
	}

	public String getNombpuntoventa() {
		return nombpuntoventa;
	}

	public void setNombpuntoventa(String nombpuntoventa) {
		this.nombpuntoventa = nombpuntoventa;
	}

	public String getNumPuntoVenta() {
		return numPuntoVenta;
	}

	public void setNumPuntoVenta(String numPuntoVenta) {
		this.numPuntoVenta = numPuntoVenta;
	}
	
	public String getDescricaoPuntoVenta() {
		StringBuilder str = new StringBuilder();

		if(StringUtils.isNotBlank(nombpuntoventa)) {
			if(str.length() > 0) {
				str.append(" - ");
			}
			str.append(nombpuntoventa);
		}
		
		return str.toString();
	}

	public BigDecimal getComissaoSeguroObrigatorioDiaria() {
		return comissaoSeguroObrigatorioDiaria;
	}

	public void setComissaoSeguroObrigatorioDiaria(BigDecimal comissaoSeguroObrigatorioDiaria) {
		this.comissaoSeguroObrigatorioDiaria = comissaoSeguroObrigatorioDiaria;
	}

	public BigDecimal getReceitaSeguro() {
		return receitaSeguro;
	}

	public void setReceitaSeguro(BigDecimal receitaSeguro) {
		this.receitaSeguro = receitaSeguro;
	}

	public List<ComissaoLogVO> getLsComissaoLog() {
		return lsComissaoLog;
	}

	public void setLsComissaoLog(List<ComissaoLogVO> lsComissaoLog) {
		this.lsComissaoLog = lsComissaoLog;
	}

}
