fixes bug#AL-4128
parent
593cc6ed9d
commit
8e9e64a92c
2
pom.xml
2
pom.xml
|
@ -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>
|
||||||
|
|
|
@ -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?
|
||||||
|
|
Loading…
Reference in New Issue