diff --git a/src/com/rjconsultores/ventaboletos/entidad/PtovtaComissao.java b/src/com/rjconsultores/ventaboletos/entidad/PtovtaComissao.java index 5eb6134f1..e11c394a6 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/PtovtaComissao.java +++ b/src/com/rjconsultores/ventaboletos/entidad/PtovtaComissao.java @@ -11,6 +11,8 @@ import java.util.Date; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @@ -22,6 +24,8 @@ import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; +import com.rjconsultores.ventaboletos.enums.ModeloComissaoImpressaoPosterior; + /** * * @author Rafael @@ -137,6 +141,22 @@ public class PtovtaComissao implements Serializable { @Column(name = "INDPAGACOMISSAOBILHETEOS") private Boolean indPagaComissaoBilheteOS; + @Column(name = "COMISSAOIMPPOSTERIOR") + @Enumerated(EnumType.STRING) + private ModeloComissaoImpressaoPosterior modeloComissaoImpressaoPosterior; + + @Column(name = "VALOR_IMP_GAP_COMP") + private BigDecimal valorImpGapComp; + + @Column(name = "VALOR_IMP_GAP_ALTA_COMP") + private BigDecimal valorImpGapCompAlta; + + @Column(name = "VALOR_VENDA_GAP_COMP") + private BigDecimal valorVendaGapComp; + + @Column(name = "VALOR_VENDA_GAP_ALTA_COMP") + private BigDecimal valorVendaGapCompAlta; + public PtovtaComissao() { super(); this.tarifaDev = Boolean.TRUE; @@ -513,4 +533,45 @@ public class PtovtaComissao implements Serializable { public void setIndPagaComissaoBilheteOS(Boolean indPagaComissaoBilheteOS) { this.indPagaComissaoBilheteOS = indPagaComissaoBilheteOS; } + + public ModeloComissaoImpressaoPosterior getModeloComissaoImpressaoPosterior() { + return modeloComissaoImpressaoPosterior; + } + + public void setModeloComissaoImpressaoPosterior(ModeloComissaoImpressaoPosterior modeloComissaoImpressaoPosterior) { + this.modeloComissaoImpressaoPosterior = modeloComissaoImpressaoPosterior; + } + + public BigDecimal getValorImpGapComp() { + return valorImpGapComp; + } + + public void setValorImpGapComp(BigDecimal valorImpGapComp) { + this.valorImpGapComp = valorImpGapComp; + } + + public BigDecimal getValorImpGapCompAlta() { + return valorImpGapCompAlta; + } + + public void setValorImpGapCompAlta(BigDecimal valorImpGapCompAlta) { + this.valorImpGapCompAlta = valorImpGapCompAlta; + } + + public BigDecimal getValorVendaGapComp() { + return valorVendaGapComp; + } + + public void setValorVendaGapComp(BigDecimal valorVendaGapComp) { + this.valorVendaGapComp = valorVendaGapComp; + } + + public BigDecimal getValorVendaGapCompAlta() { + return valorVendaGapCompAlta; + } + + public void setValorVendaGapCompAlta(BigDecimal valorVendaGapCompAlta) { + this.valorVendaGapCompAlta = valorVendaGapCompAlta; + } + } diff --git a/src/com/rjconsultores/ventaboletos/enums/ModeloComissaoImpressaoPosterior.java b/src/com/rjconsultores/ventaboletos/enums/ModeloComissaoImpressaoPosterior.java new file mode 100644 index 000000000..c0f70140b --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/enums/ModeloComissaoImpressaoPosterior.java @@ -0,0 +1,8 @@ +package com.rjconsultores.ventaboletos.enums; + +public enum ModeloComissaoImpressaoPosterior { + + PADRAO, + COMPARTILHADA; + +} diff --git a/src/com/rjconsultores/ventaboletos/service/impl/CalculoComissaoServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/CalculoComissaoServiceImpl.java index fe116052b..c104add6e 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/CalculoComissaoServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/CalculoComissaoServiceImpl.java @@ -37,6 +37,7 @@ import com.rjconsultores.ventaboletos.entidad.PuntoVenta; import com.rjconsultores.ventaboletos.enums.CtrlFechamentoCaixaStatus; import com.rjconsultores.ventaboletos.enums.IndStatusBoleto; import com.rjconsultores.ventaboletos.enums.MimeType; +import com.rjconsultores.ventaboletos.enums.ModeloComissaoImpressaoPosterior; import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.exception.ComissaoException; import com.rjconsultores.ventaboletos.service.CalculoComissaoService; @@ -266,16 +267,31 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService { return realizarCalculoComissao(puntoVentaId, empresaId, periodo, isRetencaoDiaria, usuarioId, isRefazerCalculo); } - private BigDecimal calculoComisssaoBPR(boolean isAltaTemporada, PtovtaComissao ptovtaComissao, BigDecimal bpr, BigDecimal gap) { + private BigDecimal calculoComisssaoBPR(boolean isAltaTemporada, PtovtaComissao ptovtaComissao, BigDecimal bpr, BigDecimal gap, boolean isBilheteGap) { // Comissão BPR = Receita Comissão * (% Com BPR) BigDecimal recbpr = BigDecimal.ZERO; BigDecimal receitaBPR = MoneyHelper.somar(bpr, gap, 2); + + BigDecimal percentualComissao = BigDecimal.ZERO; if (isAltaTemporada) { - recbpr = MoneyHelper.multiplicar(receitaBPR, MoneyHelper.dividir( ptovtaComissao.getPassagemAlta() != null ? ptovtaComissao.getPassagemAlta() : BigDecimal.ZERO,CEM,4), 4); + percentualComissao = ptovtaComissao.getPassagemAlta() != null ? ptovtaComissao.getPassagemAlta() : BigDecimal.ZERO; } else { - recbpr = MoneyHelper.multiplicar(receitaBPR, MoneyHelper.dividir( ptovtaComissao.getPassagemBaixa() != null ? ptovtaComissao.getPassagemBaixa() : BigDecimal.ZERO,CEM,4), 4); + percentualComissao = ptovtaComissao.getPassagemBaixa() != null ? ptovtaComissao.getPassagemBaixa() : BigDecimal.ZERO; } + + log.info(String.format(":: Percentual Comissão: %s ::", percentualComissao)); + + if(isBilheteGap && ModeloComissaoImpressaoPosterior.COMPARTILHADA.equals(ptovtaComissao.getModeloComissaoImpressaoPosterior())) { + if (isAltaTemporada) { + percentualComissao = ptovtaComissao.getValorVendaGapCompAlta() != null ? ptovtaComissao.getValorVendaGapCompAlta() : BigDecimal.ZERO; + } else { + percentualComissao = ptovtaComissao.getValorVendaGapComp() != null ? ptovtaComissao.getValorVendaGapComp() : BigDecimal.ZERO; + } + log.info(String.format(":: Comissao Compartilhada Configurada para Bilhetes Imp. Post. - Percentual Comissão Alterado para: %s ::", percentualComissao)); + } + + recbpr = MoneyHelper.multiplicar(receitaBPR, MoneyHelper.dividir(percentualComissao,CEM,4), 4); return recbpr; } @@ -286,21 +302,30 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService { BigDecimal entregaPassagem = BigDecimal.ZERO; BigDecimal receitaEntrega = MoneyHelper.somar(gapImpressa, internet, 2); - if(isAltaTemporada) { - if(ptovtaComissao.getValorImpressaoGapAlta() != null) { - if (BooleanUtils.toBoolean(ptovtaComissao.getIndimpressaogapporc())) { - entregaPassagem = MoneyHelper.multiplicar(receitaEntrega, ptovtaComissao.getValorImpressaoGapAlta() != null ? MoneyHelper.dividir(ptovtaComissao.getValorImpressaoGapAlta(),CEM,4) : BigDecimal.ZERO, 4); - } else { - entregaPassagem = ptovtaComissao.getValorImpressaoGapAlta() != null ? MoneyHelper.multiplicar(ptovtaComissao.getValorImpressaoGapAlta(),new BigDecimal(contImpressa), 2) : BigDecimal.ZERO; + log.info(String.format(":: Modelo Comissao Configurado Para Entrega Passagem: %s ::", ptovtaComissao.getModeloComissaoImpressaoPosterior())); + if(ModeloComissaoImpressaoPosterior.PADRAO.equals(ptovtaComissao.getModeloComissaoImpressaoPosterior())) { + if(isAltaTemporada) { + if(ptovtaComissao.getValorImpressaoGapAlta() != null) { + if (BooleanUtils.toBoolean(ptovtaComissao.getIndimpressaogapporc())) { + entregaPassagem = MoneyHelper.multiplicar(receitaEntrega, ptovtaComissao.getValorImpressaoGapAlta() != null ? MoneyHelper.dividir(ptovtaComissao.getValorImpressaoGapAlta(),CEM,4) : BigDecimal.ZERO, 4); + } else { + entregaPassagem = ptovtaComissao.getValorImpressaoGapAlta() != null ? MoneyHelper.multiplicar(ptovtaComissao.getValorImpressaoGapAlta(),new BigDecimal(contImpressa), 2) : BigDecimal.ZERO; + } + } + } else { + if(ptovtaComissao.getValorImpressaoGap() != null) { + if (BooleanUtils.toBoolean(ptovtaComissao.getIndimpressaogapporc())) { + entregaPassagem = MoneyHelper.multiplicar(receitaEntrega, ptovtaComissao.getValorImpressaoGap() != null ? MoneyHelper.dividir(ptovtaComissao.getValorImpressaoGap(),CEM,4) : BigDecimal.ZERO, 4); + } else { + entregaPassagem = ptovtaComissao.getValorImpressaoGap() != null ? MoneyHelper.multiplicar(ptovtaComissao.getValorImpressaoGap(),new BigDecimal(contImpressa), 2) : BigDecimal.ZERO; + } } } - } else { - if(ptovtaComissao.getValorImpressaoGap() != null) { - if (BooleanUtils.toBoolean(ptovtaComissao.getIndimpressaogapporc())) { - entregaPassagem = MoneyHelper.multiplicar(receitaEntrega, ptovtaComissao.getValorImpressaoGap() != null ? MoneyHelper.dividir(ptovtaComissao.getValorImpressaoGap(),CEM,4) : BigDecimal.ZERO, 4); - } else { - entregaPassagem = ptovtaComissao.getValorImpressaoGap() != null ? MoneyHelper.multiplicar(ptovtaComissao.getValorImpressaoGap(),new BigDecimal(contImpressa), 2) : BigDecimal.ZERO; - } + } else if(ModeloComissaoImpressaoPosterior.COMPARTILHADA.equals(ptovtaComissao.getModeloComissaoImpressaoPosterior())) { + if(isAltaTemporada) { + entregaPassagem = MoneyHelper.multiplicar(receitaEntrega, ptovtaComissao.getValorImpGapCompAlta() != null ? MoneyHelper.dividir(ptovtaComissao.getValorImpGapCompAlta(),CEM,4) : BigDecimal.ZERO, 4); + } else { + entregaPassagem = MoneyHelper.multiplicar(receitaEntrega, ptovtaComissao.getValorImpGapComp() != null ? MoneyHelper.dividir(ptovtaComissao.getValorImpGapComp(),CEM,4) : BigDecimal.ZERO, 4); } } @@ -771,7 +796,7 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService { if (rcc.getTipoVenta().equals(Constantes.TPV_BOLETO_REMOTO.intValue()) || rcc.getTipoVenta().equals(Constantes.TPV_CALL_CENTER.intValue())) { receitaGAP = MoneyHelper.somar(receitaGAP, receitaItem); - bpr = calculoComisssaoBPR(isAltaTemporada, ptovtaComissao, BigDecimal.ZERO, receitaItem); + bpr = calculoComisssaoBPR(isAltaTemporada, ptovtaComissao, BigDecimal.ZERO, receitaItem, rcc.isBilheteGap()); comissaoBPR = MoneyHelper.somar(comissaoBPR, bpr, 4); } @@ -779,7 +804,7 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService { else if (rcc.getTipoVenta().equals(Constantes.TPV_POR_INTERNET.intValue())) { internet = MoneyHelper.somar(internet, receitaItem); - bpr = calculoComisssaoBPR(isAltaTemporada, ptovtaComissao, BigDecimal.ZERO, receitaItem); + bpr = calculoComisssaoBPR(isAltaTemporada, ptovtaComissao, BigDecimal.ZERO, receitaItem, rcc.isBilheteGap()); comissaoBPR = MoneyHelper.somar(comissaoBPR, bpr, 4); } @@ -788,7 +813,7 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService { else { receitaBPR = MoneyHelper.somar(receitaBPR, receitaItem); - bpr = calculoComisssaoBPR(isAltaTemporada, ptovtaComissao, receitaItem, BigDecimal.ZERO); + bpr = calculoComisssaoBPR(isAltaTemporada, ptovtaComissao, receitaItem, BigDecimal.ZERO, rcc.isBilheteGap()); comissaoBPR = MoneyHelper.somar(comissaoBPR, bpr, 4); } @@ -876,7 +901,7 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService { * Mantis #11015 */ if(rcc.getPtoVtaOrigem() || !isConsideraBilhetesDevolvidosEmOutraAgencia) { - bpr = calculoComisssaoBPR(isAltaTemporada, ptovtaComissao, receitaDevItem, BigDecimal.ZERO); + bpr = calculoComisssaoBPR(isAltaTemporada, ptovtaComissao, receitaDevItem, BigDecimal.ZERO, rcc.isBilheteGap()); comissaoBPR = MoneyHelper.subtrair(comissaoBPR, bpr, 4); } } diff --git a/src/com/rjconsultores/ventaboletos/vo/comissao/BoletoComissao.java b/src/com/rjconsultores/ventaboletos/vo/comissao/BoletoComissao.java index 1331fa585..9f803916c 100644 --- a/src/com/rjconsultores/ventaboletos/vo/comissao/BoletoComissao.java +++ b/src/com/rjconsultores/ventaboletos/vo/comissao/BoletoComissao.java @@ -518,11 +518,6 @@ public class BoletoComissao { } public Integer getTipoVentaOriginal() { - /*if(isVendaBilheteTroca(tipoVenta) || isVendaBilheteTransferencia(tipoVenta)) { - return tipoVentaOriginal2 != null ? tipoVentaOriginal2 - : tipoVentaOriginal1 != null ? tipoVentaOriginal1 - : tipoventaAnteriorId != null ? tipoventaAnteriorId : tipoVenta; - }*/ return tipoVenta; } @@ -577,45 +572,45 @@ public class BoletoComissao { } public boolean isVendaManual(Integer tipoVenta) { - return tipoVenta == Constantes.TPV_MANUAL.intValue(); + return tipoVenta != null && tipoVenta == Constantes.TPV_MANUAL.intValue(); } public boolean isVendaGap(Integer tipoVenta) { - return tipoVenta == Constantes.TPV_BOLETO_REMOTO.intValue() + return tipoVenta != null && (tipoVenta == Constantes.TPV_BOLETO_REMOTO.intValue() || tipoVenta == Constantes.TPV_CALL_CENTER.intValue() - || tipoVenta == Constantes.TPV_POR_INTERNET.intValue(); + || tipoVenta == Constantes.TPV_POR_INTERNET.intValue()); } public boolean isVendaBilheteNormal(Integer tipoVenta) { - return tipoVenta == Constantes.TPV_DIRECTO_NORMAL.intValue(); + return tipoVenta != null && tipoVenta == Constantes.TPV_DIRECTO_NORMAL.intValue(); } public boolean isVendaBilheteTroca(Integer tipoVenta) { - return tipoVenta == Constantes.TPV_TRANSFERENCIAS.intValue(); + return tipoVenta != null && tipoVenta == Constantes.TPV_TRANSFERENCIAS.intValue(); } public boolean isVendaBilheteTransferencia(Integer tipoVenta) { - return tipoVenta == Constantes.TPV_CAMBIO_VIAJE.intValue(); + return tipoVenta != null && tipoVenta == Constantes.TPV_CAMBIO_VIAJE.intValue(); } public boolean isVendaBilheteManual(Integer tipoVenta) { - return tipoVenta == Constantes.TPV_MANUAL.intValue(); + return tipoVenta != null && tipoVenta == Constantes.TPV_MANUAL.intValue(); } public boolean isVendaBilheteAbertoManual(Integer tipoVenta) { - return tipoVenta == Constantes.TPV_VENDA_BOLETO_ABERTO_MANUAL.intValue(); + return tipoVenta != null && tipoVenta == Constantes.TPV_VENDA_BOLETO_ABERTO_MANUAL.intValue(); } public boolean isVendaBilheteAberto(Integer tipoVenta) { - return tipoVenta == Constantes.TPV_BOLETO_ABIERTO.intValue(); + return tipoVenta != null && tipoVenta == Constantes.TPV_BOLETO_ABIERTO.intValue(); } public boolean isVendaBilheteConfirmaAberto(Integer tipoVenta) { - return tipoVenta == Constantes.TPV_CONFIRMA_ABIERTO.intValue(); + return tipoVenta != null && tipoVenta == Constantes.TPV_CONFIRMA_ABIERTO.intValue(); } public boolean isVendaBilheteCheckin(Integer tipoVenta) { - return tipoVenta == Constantes.TPV_CHECKIN_VIAGEM.intValue(); + return tipoVenta != null && tipoVenta == Constantes.TPV_CHECKIN_VIAGEM.intValue(); } public boolean isSemMotivocancelacion() { @@ -679,27 +674,27 @@ public class BoletoComissao { } public boolean isStatusVendido() { - return getIndstatusboletoEnum().equals(IndStatusBoleto.V); + return IndStatusBoleto.V.equals(getIndstatusboletoEnum()); } public boolean isStatusCancelado() { - return getIndstatusboletoEnum().equals(IndStatusBoleto.C); + return IndStatusBoleto.C.equals(getIndstatusboletoEnum()); } public boolean isStatusEntregue() { - return getIndstatusboletoEnum().equals(IndStatusBoleto.E); + return IndStatusBoleto.E.equals(getIndstatusboletoEnum()); } public boolean isStatusTroca() { - return getIndstatusboletoEnum().equals(IndStatusBoleto.T); + return IndStatusBoleto.T.equals(getIndstatusboletoEnum()); } public boolean isStatusExtraviado() { - return getIndstatusboletoEnum().equals(IndStatusBoleto.X); + return IndStatusBoleto.X.equals(getIndstatusboletoEnum()); } public boolean isStatusMarcado() { - return getIndstatusboletoEnum().equals(IndStatusBoleto.M); + return IndStatusBoleto.M.equals(getIndstatusboletoEnum()); } public String getNombpasajero() { @@ -998,26 +993,6 @@ public class BoletoComissao { return true; } -/* if(isStatusTroca() && isVendaBilheteTransferencia(getTipoVenta())) { - return true; - } - - if(isStatusTroca() && isVendaBilheteCheckin(getTipoVenta())) { - return true; - } - - if(isStatusTroca() && isVendaBilheteConfirmaAberto(getTipoVenta())) { - return true; - } - - if(isStatusEntregue()) { - return true; - } - - if(isMotivocancelacionAgrupamento()) { - return true; - }*/ - return false; }