fixes bug#AL-4128

master
celio.souza 2024-05-17 22:11:33 -03:00
parent 593cc6ed9d
commit 8e9e64a92c
2 changed files with 26 additions and 5 deletions

View File

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>br.com.rjconsultores</groupId> <groupId>br.com.rjconsultores</groupId>
<artifactId>ModelWeb</artifactId> <artifactId>ModelWeb</artifactId>
<version>1.58.0</version> <version>1.58.1</version>
<distributionManagement> <distributionManagement>
<repository> <repository>

View File

@ -16,6 +16,8 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import javax.persistence.criteria.CriteriaBuilder.Case;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@ -443,9 +445,28 @@ public class CalcularPeajeHibernateDAO extends GenericHibernateDAO<String, Strin
} }
} }
private static BigDecimal calculateImportePeajeAGER(BigDecimal km, OrgaoConcedente orgao) { private static BigDecimal calculateImportePeajeAGER(BigDecimal km, OrgaoConcedente orgao, BigDecimal importe,
BigDecimal rutaCantEixos, BigDecimal rutaCantAsientos) {
BigDecimal indicePejeOrgao = orgao!=null && orgao.getIndicePeaje() !=null ? orgao.getIndicePeaje() : new BigDecimal(INDICE_ORIGINAL_AGER_MT); BigDecimal indicePejeOrgao = orgao!=null && orgao.getIndicePeaje() !=null ? orgao.getIndicePeaje() : new BigDecimal(INDICE_ORIGINAL_AGER_MT);
return km.multiply(indicePejeOrgao).setScale(HIGH_PRECISION, RoundingMode.HALF_UP); // esse valor deveria vir do indice do orgao mas as casas decimais nao sao compativeis.. verificar se pode mudar a precisao do campo de indice.. // esse valor deveria vir do indice do orgao mas as casas decimais nao sao compativeis.. verificar se pode mudar a precisao do campo de indice..
return validaValorMaxPedagioAGR(km.multiply(indicePejeOrgao).setScale(HIGH_PRECISION, RoundingMode.HALF_UP),
indicePejeOrgao, importe, rutaCantEixos, rutaCantAsientos ); }
/* -- RESOLUÇÃO NORMATIVA AGER/MT N.º 002/2023 --
* O cálculo do valor a ser repassado ao passageiro não poderá ser superior ao
* valor obtido mediante a aplicação da seguinte fórmula:
* 𝐕𝐀𝐏 = 𝐕𝐏 𝐱 𝐧º𝐄 / 𝐋𝐎𝐓 𝐱 𝐈𝐀𝐏
* VAP - Valor a ser pago por passageiro
* VP Somatória do valor de pedágio no trecho percorrido pelo passageiro para 01 eixo simples
* NºE Número de Eixos
* LOT - Lotação total do veículo padrão - 46 lugares (Edital de Licitação STCRIP)
* IAP - Índice de Aproveitamento previsto na planilha tarifária - 60% (Edital de Licitação STCRIP)
* */
private static BigDecimal validaValorMaxPedagioAGR(BigDecimal pedagio, BigDecimal indicePejeOrgao, BigDecimal importe,
BigDecimal rutaCantEixos, BigDecimal rutaCantAsientos) {
BigDecimal valorCalculado = importe.multiply(rutaCantEixos)
.divide(indicePejeOrgao.multiply(rutaCantAsientos),HIGH_PRECISION, RoundingMode.HALF_UP);
return valorCalculado.min(pedagio);
} }
// ((importe * rutaCantEixos) / (indice)) / ( 1 - icms) // ((importe * rutaCantEixos) / (indice)) / ( 1 - icms)
@ -475,7 +496,7 @@ public class CalcularPeajeHibernateDAO extends GenericHibernateDAO<String, Strin
return calculateImportePeajeANTT(importe, icms, indice, rutaCantEixos, getRutaCantAsientos(ruta), usaICMS); return calculateImportePeajeANTT(importe, icms, indice, rutaCantEixos, getRutaCantAsientos(ruta), usaICMS);
} }
if (Constantes.ORGAOS_CONCEDENTES_CALCULO_AGER.contains(orgao.getOrgaoConcedenteId())) { if (Constantes.ORGAOS_CONCEDENTES_CALCULO_AGER.contains(orgao.getOrgaoConcedenteId())) {
return calculateImportePeajeAGER(km, orgao); return calculateImportePeajeAGER(km, orgao, importe, rutaCantEixos, getRutaCantAsientos(ruta));
} }
return BigDecimal.ZERO; // TODO throw an exception? como calcular quando é outro orgao concendente? return BigDecimal.ZERO; // TODO throw an exception? como calcular quando é outro orgao concendente?