bug#20203

dev:valdir
qua:

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@103887 d1611594-4594-4d17-8e1d-87c2c4800839
master
wilian 2020-10-21 20:49:36 +00:00
parent 16efbd4b9c
commit 32a8cf3c99
4 changed files with 131 additions and 62 deletions

View File

@ -11,6 +11,8 @@ import java.util.Date;
import javax.persistence.Basic; import javax.persistence.Basic;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType; import javax.persistence.GenerationType;
import javax.persistence.Id; import javax.persistence.Id;
@ -22,6 +24,8 @@ import javax.persistence.Table;
import javax.persistence.Temporal; import javax.persistence.Temporal;
import javax.persistence.TemporalType; import javax.persistence.TemporalType;
import com.rjconsultores.ventaboletos.enums.ModeloComissaoImpressaoPosterior;
/** /**
* *
* @author Rafael * @author Rafael
@ -137,6 +141,22 @@ public class PtovtaComissao implements Serializable {
@Column(name = "INDPAGACOMISSAOBILHETEOS") @Column(name = "INDPAGACOMISSAOBILHETEOS")
private Boolean 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() { public PtovtaComissao() {
super(); super();
this.tarifaDev = Boolean.TRUE; this.tarifaDev = Boolean.TRUE;
@ -513,4 +533,45 @@ public class PtovtaComissao implements Serializable {
public void setIndPagaComissaoBilheteOS(Boolean indPagaComissaoBilheteOS) { public void setIndPagaComissaoBilheteOS(Boolean indPagaComissaoBilheteOS) {
this.indPagaComissaoBilheteOS = 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;
}
} }

View File

@ -0,0 +1,8 @@
package com.rjconsultores.ventaboletos.enums;
public enum ModeloComissaoImpressaoPosterior {
PADRAO,
COMPARTILHADA;
}

View File

@ -37,6 +37,7 @@ import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.enums.CtrlFechamentoCaixaStatus; import com.rjconsultores.ventaboletos.enums.CtrlFechamentoCaixaStatus;
import com.rjconsultores.ventaboletos.enums.IndStatusBoleto; import com.rjconsultores.ventaboletos.enums.IndStatusBoleto;
import com.rjconsultores.ventaboletos.enums.MimeType; import com.rjconsultores.ventaboletos.enums.MimeType;
import com.rjconsultores.ventaboletos.enums.ModeloComissaoImpressaoPosterior;
import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.exception.ComissaoException; import com.rjconsultores.ventaboletos.exception.ComissaoException;
import com.rjconsultores.ventaboletos.service.CalculoComissaoService; import com.rjconsultores.ventaboletos.service.CalculoComissaoService;
@ -266,17 +267,32 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
return realizarCalculoComissao(puntoVentaId, empresaId, periodo, isRetencaoDiaria, usuarioId, isRefazerCalculo); 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) // Comissão BPR = Receita Comissão * (% Com BPR)
BigDecimal recbpr = BigDecimal.ZERO; BigDecimal recbpr = BigDecimal.ZERO;
BigDecimal receitaBPR = MoneyHelper.somar(bpr, gap, 2); BigDecimal receitaBPR = MoneyHelper.somar(bpr, gap, 2);
BigDecimal percentualComissao = BigDecimal.ZERO;
if (isAltaTemporada) { 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 { } 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; return recbpr;
} }
@ -286,6 +302,8 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
BigDecimal entregaPassagem = BigDecimal.ZERO; BigDecimal entregaPassagem = BigDecimal.ZERO;
BigDecimal receitaEntrega = MoneyHelper.somar(gapImpressa, internet, 2); BigDecimal receitaEntrega = MoneyHelper.somar(gapImpressa, internet, 2);
log.info(String.format(":: Modelo Comissao Configurado Para Entrega Passagem: %s ::", ptovtaComissao.getModeloComissaoImpressaoPosterior()));
if(ModeloComissaoImpressaoPosterior.PADRAO.equals(ptovtaComissao.getModeloComissaoImpressaoPosterior())) {
if(isAltaTemporada) { if(isAltaTemporada) {
if(ptovtaComissao.getValorImpressaoGapAlta() != null) { if(ptovtaComissao.getValorImpressaoGapAlta() != null) {
if (BooleanUtils.toBoolean(ptovtaComissao.getIndimpressaogapporc())) { if (BooleanUtils.toBoolean(ptovtaComissao.getIndimpressaogapporc())) {
@ -303,6 +321,13 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
} }
} }
} }
} 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);
}
}
return entregaPassagem; return entregaPassagem;
} }
@ -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())) { if (rcc.getTipoVenta().equals(Constantes.TPV_BOLETO_REMOTO.intValue()) || rcc.getTipoVenta().equals(Constantes.TPV_CALL_CENTER.intValue())) {
receitaGAP = MoneyHelper.somar(receitaGAP, receitaItem); 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); 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())) { else if (rcc.getTipoVenta().equals(Constantes.TPV_POR_INTERNET.intValue())) {
internet = MoneyHelper.somar(internet, receitaItem); 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); comissaoBPR = MoneyHelper.somar(comissaoBPR, bpr, 4);
} }
@ -788,7 +813,7 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
else { else {
receitaBPR = MoneyHelper.somar(receitaBPR, receitaItem); 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); comissaoBPR = MoneyHelper.somar(comissaoBPR, bpr, 4);
} }
@ -876,7 +901,7 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
* Mantis #11015 * Mantis #11015
*/ */
if(rcc.getPtoVtaOrigem() || !isConsideraBilhetesDevolvidosEmOutraAgencia) { 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); comissaoBPR = MoneyHelper.subtrair(comissaoBPR, bpr, 4);
} }
} }

View File

@ -518,11 +518,6 @@ public class BoletoComissao {
} }
public Integer getTipoVentaOriginal() { public Integer getTipoVentaOriginal() {
/*if(isVendaBilheteTroca(tipoVenta) || isVendaBilheteTransferencia(tipoVenta)) {
return tipoVentaOriginal2 != null ? tipoVentaOriginal2
: tipoVentaOriginal1 != null ? tipoVentaOriginal1
: tipoventaAnteriorId != null ? tipoventaAnteriorId : tipoVenta;
}*/
return tipoVenta; return tipoVenta;
} }
@ -577,45 +572,45 @@ public class BoletoComissao {
} }
public boolean isVendaManual(Integer tipoVenta) { public boolean isVendaManual(Integer tipoVenta) {
return tipoVenta == Constantes.TPV_MANUAL.intValue(); return tipoVenta != null && tipoVenta == Constantes.TPV_MANUAL.intValue();
} }
public boolean isVendaGap(Integer tipoVenta) { 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_CALL_CENTER.intValue()
|| tipoVenta == Constantes.TPV_POR_INTERNET.intValue(); || tipoVenta == Constantes.TPV_POR_INTERNET.intValue());
} }
public boolean isVendaBilheteNormal(Integer tipoVenta) { 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) { public boolean isVendaBilheteTroca(Integer tipoVenta) {
return tipoVenta == Constantes.TPV_TRANSFERENCIAS.intValue(); return tipoVenta != null && tipoVenta == Constantes.TPV_TRANSFERENCIAS.intValue();
} }
public boolean isVendaBilheteTransferencia(Integer tipoVenta) { 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) { public boolean isVendaBilheteManual(Integer tipoVenta) {
return tipoVenta == Constantes.TPV_MANUAL.intValue(); return tipoVenta != null && tipoVenta == Constantes.TPV_MANUAL.intValue();
} }
public boolean isVendaBilheteAbertoManual(Integer tipoVenta) { 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) { 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) { 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) { public boolean isVendaBilheteCheckin(Integer tipoVenta) {
return tipoVenta == Constantes.TPV_CHECKIN_VIAGEM.intValue(); return tipoVenta != null && tipoVenta == Constantes.TPV_CHECKIN_VIAGEM.intValue();
} }
public boolean isSemMotivocancelacion() { public boolean isSemMotivocancelacion() {
@ -679,27 +674,27 @@ public class BoletoComissao {
} }
public boolean isStatusVendido() { public boolean isStatusVendido() {
return getIndstatusboletoEnum().equals(IndStatusBoleto.V); return IndStatusBoleto.V.equals(getIndstatusboletoEnum());
} }
public boolean isStatusCancelado() { public boolean isStatusCancelado() {
return getIndstatusboletoEnum().equals(IndStatusBoleto.C); return IndStatusBoleto.C.equals(getIndstatusboletoEnum());
} }
public boolean isStatusEntregue() { public boolean isStatusEntregue() {
return getIndstatusboletoEnum().equals(IndStatusBoleto.E); return IndStatusBoleto.E.equals(getIndstatusboletoEnum());
} }
public boolean isStatusTroca() { public boolean isStatusTroca() {
return getIndstatusboletoEnum().equals(IndStatusBoleto.T); return IndStatusBoleto.T.equals(getIndstatusboletoEnum());
} }
public boolean isStatusExtraviado() { public boolean isStatusExtraviado() {
return getIndstatusboletoEnum().equals(IndStatusBoleto.X); return IndStatusBoleto.X.equals(getIndstatusboletoEnum());
} }
public boolean isStatusMarcado() { public boolean isStatusMarcado() {
return getIndstatusboletoEnum().equals(IndStatusBoleto.M); return IndStatusBoleto.M.equals(getIndstatusboletoEnum());
} }
public String getNombpasajero() { public String getNombpasajero() {
@ -998,26 +993,6 @@ public class BoletoComissao {
return true; 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; return false;
} }