From 542f2c9369f6898c24f1ca05397ebea82665105d Mon Sep 17 00:00:00 2001 From: julio Date: Tue, 27 Oct 2015 17:18:54 +0000 Subject: [PATCH] fixes bug #6669 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@49494 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../DescontoComissaoHibernateDAO.java | 5 +- .../service/CalculoComissaoService.java | 2 +- .../impl/CalculoComissaoServiceImpl.java | 176 +++++++++--------- 3 files changed, 97 insertions(+), 86 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/DescontoComissaoHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/DescontoComissaoHibernateDAO.java index 33ab39b01..4ac1cd179 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/DescontoComissaoHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/DescontoComissaoHibernateDAO.java @@ -13,7 +13,7 @@ import com.rjconsultores.ventaboletos.dao.DescontoComissaoDAO; import com.rjconsultores.ventaboletos.entidad.DescontoComissao; @Repository("descontoComissaoDAO") -public class DescontoComissaoHibernateDAO extends GenericHibernateDAOimplements DescontoComissaoDAO { +public class DescontoComissaoHibernateDAO extends GenericHibernateDAO implements DescontoComissaoDAO { @Autowired public DescontoComissaoHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { @@ -26,7 +26,8 @@ public class DescontoComissaoHibernateDAO extends GenericHibernateDAO= :datainicial "); sql.append(" and (dc.datafinal <= :datafinal or dc.datafinal is null)"); diff --git a/src/com/rjconsultores/ventaboletos/service/CalculoComissaoService.java b/src/com/rjconsultores/ventaboletos/service/CalculoComissaoService.java index bc91d3810..bbc04ebc1 100644 --- a/src/com/rjconsultores/ventaboletos/service/CalculoComissaoService.java +++ b/src/com/rjconsultores/ventaboletos/service/CalculoComissaoService.java @@ -7,7 +7,7 @@ import com.rjconsultores.ventaboletos.vo.comissao.RegistroCalculo; public interface CalculoComissaoService { - public RegistroCalculo relatorioCalculoComissao(Integer puntoVentId, Integer empresaId, Date periodo); + public RegistroCalculo relatorioCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo) throws ComissaoException; public void registrarCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo) throws ComissaoException; diff --git a/src/com/rjconsultores/ventaboletos/service/impl/CalculoComissaoServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/CalculoComissaoServiceImpl.java index f6a2be7dd..d70d75d12 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/CalculoComissaoServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/CalculoComissaoServiceImpl.java @@ -9,6 +9,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.commons.lang.BooleanUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -119,7 +120,7 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService { } @Override - public RegistroCalculo relatorioCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo) { + public RegistroCalculo relatorioCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo) throws ComissaoException { return realizarCalculoComissao(puntoVentaId, empresaId, periodo); } @@ -142,7 +143,7 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService { // EntregaPassagem (Internet/Venda Impressão Posterior/Outros) BigDecimal entregaPassagem = BigDecimal.ZERO; BigDecimal receitaEntrega = cr.getGapImpressa().add(cr.getInternet()); - if (ptovtaComissao.getIndimpressaogapporc()) { + if (BooleanUtils.toBoolean(ptovtaComissao.getIndimpressaogapporc())) { entregaPassagem = receitaEntrega.multiply(ptovtaComissao.getValorImpressaoGap().divide(CEM)); } else { entregaPassagem = ptovtaComissao.getValorImpressaoGap().multiply(new BigDecimal(cr.getContImpressa())); @@ -222,99 +223,108 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService { } @SuppressWarnings("unchecked") - public RegistroCalculo realizarCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo) { + public RegistroCalculo realizarCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo) throws ComissaoException { PtovtaComissao ptovtaComissao = ptovtaComissaoService.buscarPuntaVentaEmpresa(puntoVentaId, empresaId); + if (ptovtaComissao != null) { - List receitasBoleto = comissaoDAO.buscarReceitasComissoes(puntoVentaId, empresaId, periodo); + List receitasBoleto = comissaoDAO.buscarReceitasComissoes(puntoVentaId, empresaId, periodo); - Calendar calendario = Calendar.getInstance(); - calendario.setTime(periodo); + Calendar calendario = Calendar.getInstance(); + calendario.setTime(periodo); - int ultimodia = calendario.getActualMaximum(Calendar.DAY_OF_MONTH); - int mes = calendario.get(Calendar.MONTH) + 1; - int ano = calendario.get(Calendar.YEAR); + int ultimodia = calendario.getActualMaximum(Calendar.DAY_OF_MONTH); + int mes = calendario.get(Calendar.MONTH) + 1; + int ano = calendario.get(Calendar.YEAR); - List receitas = calculaReceitaComissao(ptovtaComissao, receitasBoleto, ultimodia, mes, ano); + List receitas = calculaReceitaComissao(ptovtaComissao, receitasBoleto, ultimodia, mes, ano); - RegistroCalculo rc = new RegistroCalculo(); + RegistroCalculo rc = new RegistroCalculo(); - BigDecimal comissaoBPR = BigDecimal.ZERO; - BigDecimal comissaoExcessoBagagem = BigDecimal.ZERO; - BigDecimal comissaoSegOpcional = BigDecimal.ZERO; - BigDecimal comissaoEntregaPassagem = BigDecimal.ZERO; - BigDecimal comissaoOutros = BigDecimal.ZERO; + BigDecimal comissaoBPR = BigDecimal.ZERO; + BigDecimal comissaoExcessoBagagem = BigDecimal.ZERO; + BigDecimal comissaoSegOpcional = BigDecimal.ZERO; + BigDecimal comissaoEntregaPassagem = BigDecimal.ZERO; + BigDecimal comissaoOutros = BigDecimal.ZERO; - BigDecimal receitaTotal = BigDecimal.ZERO; + BigDecimal receitaTotal = BigDecimal.ZERO; - for (ComissaoReceita cr : receitas) { + for (ComissaoReceita cr : receitas) { - // Está parte esta encapsulada, posteriormente será implementada a validação de alta e baixa temporada - // Inicialmente só será validado os calculos de comissão em baixa temporada - boolean isAltaTemporada = false; + // Está parte esta encapsulada, posteriormente será implementada a validação de alta e baixa temporada + // Inicialmente só será validado os calculos de comissão em baixa temporada + boolean isAltaTemporada = false; - receitaTotal = receitaTotal.add(cr.getReceitaComissao()); + receitaTotal = receitaTotal.add(cr.getReceitaComissao()); - BigDecimal bpr = calculoComisssaoBPR(isAltaTemporada, ptovtaComissao, cr); - cr.setComissaoBPRDiaria(bpr); - comissaoBPR = comissaoBPR.add(bpr); + BigDecimal bpr = calculoComisssaoBPR(isAltaTemporada, ptovtaComissao, cr); + cr.setComissaoBPRDiaria(bpr); + comissaoBPR = comissaoBPR.add(bpr); - BigDecimal entregaPassagem = calculoEntregaPassagem(isAltaTemporada, ptovtaComissao, cr); - cr.setComissaoEntregaPassagemDiaria(entregaPassagem); - comissaoEntregaPassagem = comissaoEntregaPassagem.add(entregaPassagem); + BigDecimal entregaPassagem = calculoEntregaPassagem(isAltaTemporada, ptovtaComissao, cr); + cr.setComissaoEntregaPassagemDiaria(entregaPassagem); + comissaoEntregaPassagem = comissaoEntregaPassagem.add(entregaPassagem); - BigDecimal excessoBagagem = calculoExcessoBagagem(isAltaTemporada, ptovtaComissao, cr); - cr.setComissaoExcessoBagagemDiaria(excessoBagagem); - comissaoExcessoBagagem = comissaoExcessoBagagem.add(excessoBagagem); + BigDecimal excessoBagagem = calculoExcessoBagagem(isAltaTemporada, ptovtaComissao, cr); + cr.setComissaoExcessoBagagemDiaria(excessoBagagem); + comissaoExcessoBagagem = comissaoExcessoBagagem.add(excessoBagagem); - BigDecimal segOpcional = calculoSeguroOpcional(isAltaTemporada, ptovtaComissao, cr); - cr.setComissaoSegOpcionalDiaria(segOpcional); - comissaoSegOpcional = comissaoSegOpcional.add(segOpcional); + BigDecimal segOpcional = calculoSeguroOpcional(isAltaTemporada, ptovtaComissao, cr); + cr.setComissaoSegOpcionalDiaria(segOpcional); + comissaoSegOpcional = comissaoSegOpcional.add(segOpcional); - BigDecimal outros = calculoOutros(isAltaTemporada, ptovtaComissao, cr); - cr.setComissaoOutrosDiaria(outros); - comissaoOutros = comissaoOutros.add(outros); + BigDecimal outros = calculoOutros(isAltaTemporada, ptovtaComissao, cr); + cr.setComissaoOutrosDiaria(outros); + comissaoOutros = comissaoOutros.add(outros); + } + + rc.setLsReceitas(receitas); + + rc.setComissaoBPR(comissaoBPR); + rc.setComissaoExcessoBagagem(comissaoExcessoBagagem); + rc.setComissaoSegOpcional(comissaoSegOpcional); + rc.setComissaoEntregaPassagem(comissaoEntregaPassagem); + rc.setComissaoOutros(comissaoOutros); + + // Descontos (Fixos e Eventuais) + Map respDescontos = calculoDescontos(puntoVentaId, empresaId, periodo, ptovtaComissao); + rc.setDescontos((BigDecimal) respDescontos.get("VALOR_DESCONTOS")); + rc.setLsDescontos((List) respDescontos.get("LISTA_DESCONTOS")); + + /** + * Bonificação Metas + * - Meta = Eh o valor estipulado de receita dentro do periodo que a agencia deve alcançar. + * - Bonificação = Eh uma porcentagem paga encima da comissao, por alcançar a meta. + */ + BigDecimal comissaoBonificaoMetas = BigDecimal.ZERO; + rc.setComissaoBonificaoMetas(comissaoBonificaoMetas); + + // Royaties + BigDecimal royaties = BigDecimal.ZERO; + royaties = receitaTotal.multiply(ptovtaComissao.getRoyalties().divide(CEM)); + rc.setRoyaties(royaties); + + // ISS retido + BigDecimal issRetido = BigDecimal.ZERO; + issRetido = receitaTotal.multiply(ptovtaComissao.getIssretido().divide(CEM)); + rc.setRetidoISS(issRetido); + + // Comissão à pagar = Comissão BPR + Comissão Excesso Bagagem + Comissão Seg. Opcional + Bonificação Metas + Internet(EntregaPassagem) + BigDecimal comissaoPagar = BigDecimal.ZERO; + comissaoPagar = comissaoPagar.add(comissaoBPR).add(comissaoExcessoBagagem).add(comissaoSegOpcional); + comissaoPagar = comissaoPagar.add(comissaoEntregaPassagem).add(comissaoOutros); + comissaoPagar = comissaoPagar.add(comissaoBonificaoMetas); + + // - Descontos (Fixos e Eventuais) - Royaties - ISS retido + comissaoPagar = comissaoPagar.add(rc.getDescontos().negate()).add(royaties.negate()).add(issRetido.negate()); + rc.setComissaoPagar(comissaoPagar); + + return rc; + } else { + throw new ComissaoException("busquedaCalculoComissaoController.PtovtaComissao.exception"); } - rc.setLsReceitas(receitas); - - rc.setComissaoBPR(comissaoBPR); - rc.setComissaoExcessoBagagem(comissaoExcessoBagagem); - rc.setComissaoSegOpcional(comissaoSegOpcional); - rc.setComissaoEntregaPassagem(comissaoEntregaPassagem); - rc.setComissaoOutros(comissaoOutros); - - // Descontos (Fixos e Eventuais) - Map respDescontos = calculoDescontos(puntoVentaId, empresaId, periodo, ptovtaComissao); - rc.setDescontos((BigDecimal) respDescontos.get("VALOR_DESCONTOS")); - rc.setLsDescontos((List) respDescontos.get("LISTA_DESCONTOS")); - - // Bonificação Metas - BigDecimal comissaoBonificaoMetas = BigDecimal.ZERO; - rc.setComissaoBonificaoMetas(comissaoBonificaoMetas); - - // Royaties - BigDecimal royaties = BigDecimal.ZERO; - royaties = receitaTotal.multiply(ptovtaComissao.getRoyalties().divide(CEM)); - rc.setRoyaties(royaties); - - // ISS retido - BigDecimal issRetido = BigDecimal.ZERO; - issRetido = receitaTotal.multiply(ptovtaComissao.getIssretido().divide(CEM)); - rc.setRetidoISS(issRetido); - - // Comissão à pagar = Comissão BPR + Comissão Excesso Bagagem + Comissão Seg. Opcional + Bonificação Metas + Internet(EntregaPassagem) - BigDecimal comissaoPagar = BigDecimal.ZERO; - comissaoPagar = comissaoPagar.add(comissaoBPR).add(comissaoExcessoBagagem).add(comissaoSegOpcional); - comissaoPagar = comissaoPagar.add(comissaoEntregaPassagem).add(comissaoOutros); - comissaoPagar = comissaoPagar.add(comissaoBonificaoMetas); - - // - Descontos (Fixos e Eventuais) - Royaties - ISS retido - comissaoPagar = comissaoPagar.add(rc.getDescontos().negate()).add(royaties.negate()).add(issRetido.negate()); - rc.setComissaoPagar(comissaoPagar); - - return rc; } private List calculaReceitaComissao(PtovtaComissao ptovtaComissao, List receitasBoleto, Integer ultimodia, Integer mes, Integer ano) { @@ -365,36 +375,36 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService { BigDecimal receitaDevItem = BigDecimal.ZERO; // Totais - if (ptovtaComissao.getTarifaReceita()) { + if (BooleanUtils.toBoolean(ptovtaComissao.getTarifaReceita())) { receitaItem = receitaItem.add(rcc.getValorpagado()); } - if (ptovtaComissao.getTaxaReceita()) { + if (BooleanUtils.toBoolean(ptovtaComissao.getTaxaReceita())) { receitaItem = receitaItem.add(rcc.getEmbarque()); } - if (ptovtaComissao.getSeguroReceita()) { + if (BooleanUtils.toBoolean(ptovtaComissao.getSeguroReceita())) { receitaItem = receitaItem.add(rcc.getSeguro()); } - if (ptovtaComissao.getPedagioReceita()) { + if (BooleanUtils.toBoolean(ptovtaComissao.getPedagioReceita())) { receitaItem = receitaItem.add(rcc.getPedagio()); } // Totais de Devolução / Cancelamento - if (ptovtaComissao.getTarifaDev()) { + if (BooleanUtils.toBoolean(ptovtaComissao.getTarifaDev())) { receitaDevItem = receitaDevItem.add(rcc.getValorpagado()); } - if (ptovtaComissao.getTaxaDev()) { + if (BooleanUtils.toBoolean(ptovtaComissao.getTaxaDev())) { receitaDevItem = receitaDevItem.add(rcc.getEmbarque()); } - if (ptovtaComissao.getSeguroDev()) { + if (BooleanUtils.toBoolean(ptovtaComissao.getSeguroDev())) { receitaDevItem = receitaDevItem.add(rcc.getSeguro()); } - if (ptovtaComissao.getPedagioDev()) { + if (BooleanUtils.toBoolean(ptovtaComissao.getPedagioDev())) { receitaDevItem = receitaDevItem.add(rcc.getPedagio()); }