fixes bug#0014812

dev: daniel
qua: wallysson
Implementação efetuada.

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@95252 d1611594-4594-4d17-8e1d-87c2c4800839
master
emerson 2019-07-01 13:07:28 +00:00
parent 984122c39a
commit e46b836e6c
1 changed files with 24 additions and 54 deletions

View File

@ -50,11 +50,7 @@ public class CalculoImposto {
else
porcRedEstadualMunicipal = (BigDecimal) configImposto.get("PORCREDMUNICIPAL");
// Criação da base de calculo
baseCalculo = indBaseTarifa && tarifa != null ? baseCalculo.add(tarifa) : baseCalculo;
baseCalculo = indBaseSeguro && seguro != null ? baseCalculo.add(seguro) : baseCalculo;
baseCalculo = indBaseEmbarque && embarque != null ? baseCalculo.add(embarque) : baseCalculo;
baseCalculo = indBasePedagio && pedagio != null ? baseCalculo.add(pedagio) : baseCalculo;
baseCalculo = obtemBaseCalculoICMS(tarifa, seguro, embarque, pedagio, indBaseTarifa, indBaseSeguro, indBaseEmbarque, indBasePedagio);
baseCalculo = indBaseBagagem && bagagem != null ? baseCalculo.add(bagagem) : baseCalculo;
//System.out.println("baseCalculo="+baseCalculo);
@ -166,27 +162,14 @@ public class CalculoImposto {
}
public static BigDecimal getValorImposto(Connection conexao, Integer idEstado, Integer empresaId, String indInterestadual, BigDecimal tarifa, BigDecimal seguro, BigDecimal embarque, BigDecimal pedagio) throws Exception {
HashMap<String, Object> configImposto = new HashMap<String, Object>();
public static BigDecimal getValorImposto(Connection conexao, Integer idEstado, Integer empresaId, String indInterestadual,
BigDecimal tarifa, BigDecimal seguro, BigDecimal embarque, BigDecimal pedagio) throws SQLException, ExceptionConfiguracao {
BigDecimal baseCalculo = BigDecimal.ZERO;
BigDecimal icms;
BigDecimal porcRedEstadualMunicipal;
BigDecimal porcRed;
BigDecimal porcRedBaseIcms;
BigDecimal valorIcms = BigDecimal.ZERO;
Boolean indTarifaMunicipal;
Boolean indSeguroMunicipal;
Boolean indTxEmbarqueMunicipal;
Boolean indPedagioMunicipal;
Boolean indTarifaEstadual;
Boolean indSeguroEstadual;
Boolean indTxEmbarqueEstadual;
Boolean indPedagioEstadual;
configImposto = (HashMap<String, Object>) getConfigImpostoByEstadoOrigem(conexao, idEstado, empresaId);
HashMap<String, Object> configImposto = (HashMap<String, Object>) getConfigImpostoByEstadoOrigem(conexao, idEstado, empresaId);
if (configImposto == null)
return BigDecimal.ZERO;
@ -194,48 +177,35 @@ public class CalculoImposto {
icms = (BigDecimal) configImposto.get("ICMS");
porcRedBaseIcms = (BigDecimal) configImposto.get("PORCREDBASEICMS");
if (indInterestadual.equals("S")) {
porcRedEstadualMunicipal = (BigDecimal) configImposto.get("PORCREDESTADUAL");
indTarifaEstadual = (Boolean) configImposto.get("INDTARIFAESTADUAL");
indSeguroEstadual = (Boolean) configImposto.get("INDSEGUROESTADUAL");
indTxEmbarqueEstadual = (Boolean) configImposto.get("INDTXEMBARQUEESTADUAL");
indPedagioEstadual = (Boolean) configImposto.get("INDPEDAGIOESTDUAL");
// Criação da base de calculo
baseCalculo = indTarifaEstadual && tarifa != null ? baseCalculo.add(tarifa) : baseCalculo;
baseCalculo = indSeguroEstadual && seguro != null ? baseCalculo.add(seguro) : baseCalculo;
baseCalculo = indTxEmbarqueEstadual && embarque != null ? baseCalculo.add(embarque) : baseCalculo;
baseCalculo = indPedagioEstadual && pedagio != null ? baseCalculo.add(pedagio) : baseCalculo;
} else {
porcRedEstadualMunicipal = (BigDecimal) configImposto.get("PORCREDMUNICIPAL");
indTarifaMunicipal = (Boolean) configImposto.get("INDTARIFAMUNICIPAL");
indSeguroMunicipal = (Boolean) configImposto.get("INDSEGUROMUNICIPAL");
indTxEmbarqueMunicipal = (Boolean) configImposto.get("INDTXEMBARQUEMUNICIPAL");
indPedagioMunicipal = (Boolean) configImposto.get("INDPEDAGIOMUNICIPAL");
baseCalculo = indTarifaMunicipal && tarifa != null ? baseCalculo.add(tarifa) : baseCalculo;
baseCalculo = indSeguroMunicipal && seguro != null ? baseCalculo.add(seguro) : baseCalculo;
baseCalculo = indTxEmbarqueMunicipal && embarque != null ? baseCalculo.add(embarque) : baseCalculo;
baseCalculo = indPedagioMunicipal && pedagio != null ? baseCalculo.add(pedagio) : baseCalculo;
}
porcRed = "S".equals(indInterestadual) ? (BigDecimal) configImposto.get("PORCREDESTADUAL") : (BigDecimal) configImposto.get("PORCREDMUNICIPAL");
// Criação da base de calculo
baseCalculo = tarifa != null ? baseCalculo.add(tarifa) : baseCalculo;
baseCalculo = seguro != null ? baseCalculo.add(seguro) : baseCalculo;
baseCalculo = embarque != null ? baseCalculo.add(embarque) : baseCalculo;
baseCalculo = pedagio != null ? baseCalculo.add(pedagio) : baseCalculo;
// Redução da base de calculo
if (porcRedBaseIcms != null && !porcRedBaseIcms.equals(BigDecimal.ZERO))
// BASE DE CALCULO = BASE DE CALCULO - ((PERCENTUAL DE REDUÇÃO / 100) * BASE DE CALCULO ))
baseCalculo = baseCalculo.subtract(porcRedBaseIcms.divide(BigDecimal.valueOf(100)).multiply(baseCalculo));
// Calcula o valor do ICMS
valorIcms = baseCalculo.multiply(icms.divide(BigDecimal.valueOf(100)));
BigDecimal valorIcms = baseCalculo.multiply(icms.divide(BigDecimal.valueOf(100)));
// Redução estadual/municipal
if (porcRedEstadualMunicipal != null && !porcRedEstadualMunicipal.equals(BigDecimal.ZERO))
valorIcms = valorIcms.subtract(porcRedEstadualMunicipal.divide(BigDecimal.valueOf(100)).multiply(valorIcms));
if (porcRed != null && !porcRed.equals(BigDecimal.ZERO))
valorIcms = valorIcms.subtract(porcRed.divide(BigDecimal.valueOf(100)).multiply(valorIcms));
return valorIcms;
}
private static BigDecimal obtemBaseCalculoICMS(BigDecimal tarifa, BigDecimal seguro, BigDecimal embarque, BigDecimal pedagio,
Boolean indTarifa, Boolean indSeguro, Boolean indTxEmbarque, Boolean indPedagio) {
BigDecimal baseCalculo = BigDecimal.ZERO;
baseCalculo = indTarifa && tarifa != null ? baseCalculo.add(tarifa) : baseCalculo;
baseCalculo = indSeguro && seguro != null ? baseCalculo.add(seguro) : baseCalculo;
baseCalculo = indTxEmbarque && embarque != null ? baseCalculo.add(embarque) : baseCalculo;
baseCalculo = indPedagio && pedagio != null ? baseCalculo.add(pedagio) : baseCalculo;
return baseCalculo;
}
}