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