From 19d045232b99e15c1d96c1ddc1892046d7d9959c Mon Sep 17 00:00:00 2001 From: julio Date: Tue, 3 Sep 2013 15:53:29 +0000 Subject: [PATCH] =?UTF-8?q?Relatorio=20Receita=20diarias=20corre=C3=A7?= =?UTF-8?q?=C3=A3o=20no=20calculo=20do=20ICMS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@30527 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioReceitaDiariaAgencia.java | 29 +-- .../relatorios/impl/RelatorioTaxasLinha.java | 17 +- .../relatorios/negocio/CalculoImposto.java | 192 ++---------------- .../filtroRelatorioReceitaDiariaAgencia.zul | 2 +- 4 files changed, 49 insertions(+), 191 deletions(-) diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioReceitaDiariaAgencia.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioReceitaDiariaAgencia.java index cef593499..f308d2114 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioReceitaDiariaAgencia.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioReceitaDiariaAgencia.java @@ -121,7 +121,9 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio { BigDecimal motivoCancelacionId = this.resultSet.getBigDecimal("MOTIVOCANCELACION_ID"); Integer tipoVentaId = this.resultSet.getInt("TIPOVENTA_ID"); - HashMap configImposto = getConfigImposto(puntoVentaId); + Integer estadoId = this.resultSet.getInt("ORIGEM_ESTADO_ID"); + + HashMap configImposto = getConfigImposto(puntoVentaId, estadoId); if (configImposto == null) { return; } @@ -142,7 +144,7 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio { if ((Boolean) configComissao.get("PEDAGIORECEITA")) baseCalculo = baseCalculo.add(this.resultSet.getBigDecimal("IMPORTEPEDAGIO")); - System.out.println("configComissao "+configComissao); + System.out.println("configComissao " + configComissao); // Caso esteje setado na configuração de comissão que o calculo deve ser sobre o liquido, deduz o imposto. if (configComissao.get("RECEITA") != null && ((String) configComissao.get("RECEITA")).equals("RL") && (!tipoVentaId.equals(18) || (tipoVentaId.equals(18) && (Boolean) this.relatorio.getParametros().get("B_CONTEMPLAR_GAP")))) @@ -173,7 +175,7 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio { percComissao = isAltaTemporada ? (BigDecimal) configComissao.get("PASSAGEMALTA") : (BigDecimal) configComissao.get("PASSAGEMBAIXA"); - if(percComissao==null) + if (percComissao == null) return; // VALOR COMISSAO = BASE DE CALCULO * (PERCENTUAL COMISSAO / 100) valorComissao = baseCalculo.multiply(percComissao.divide(BigDecimal.valueOf(100))); @@ -202,7 +204,7 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio { rowDestino.put("EMPRESAPUNTOVENTA_ID", rowOrigem.get("EMPRESAPUNTOVENTA_ID")); rowDestino.put("ESTADO_ID", configComissao.get("ESTADO_ID")); rowDestino.put("TIPO_AGENCIA", configComissao.get("TIPO_AGENCIA")); - + mapDados.put(puntoVentaId, (HashMap) rowDestino); } } @@ -215,7 +217,6 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio { } else { - row = new HashMap(); row.put("TOTAL_BILHETES", BigDecimal.ZERO); row.put("TOTAL_BILHETES_CANC", BigDecimal.ZERO); @@ -252,7 +253,7 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio { { BigDecimal receitaBagagem = getValorReceitaBagagem(puntoVentaId); try { - row.put("IMPOSTOS", getValorImposto(puntoVentaId, rs.getString("INTERESTADUAL"), BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, receitaBagagem)); + row.put("IMPOSTOS", getValorImposto(rs.getInt("ORIGEM_ESTADO_ID"), puntoVentaId, rs.getString("INTERESTADUAL"), BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, receitaBagagem)); } catch (Exception e) { // Este erro não é tratado pois existem demais pontos no relatorio que fazem esta chamada com os mesmos parametros e fazer o tratamento correto. @@ -278,9 +279,11 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio { Integer puntoVentaId = this.resultSet.getInt("PUNTOVENTA_ID"); Integer motivoCancelacionId = this.resultSet.getInt("MOTIVOCANCELACION_ID"); Integer tipoVentaId = this.resultSet.getInt("TIPOVENTA_ID"); + Integer idEstado = this.resultSet.getInt("ORIGEM_ESTADO_ID"); // Inicializa a row atual Map row = this.getRow(puntoVentaId, this.resultSet); + this.mapDados.put((Integer) row.get("PUNTOVENTA_ID"), (HashMap) row); row.put("TOTAL_BILHETES", ((BigDecimal) row.get("TOTAL_BILHETES")).add(motivoCancelacionId == null && !tipoVentaId.equals(18) ? BigDecimal.ONE : BigDecimal.ZERO)); @@ -302,14 +305,14 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio { row.put("RECEITA_EMBARQUE", ((BigDecimal) row.get("RECEITA_EMBARQUE")).add(!tipoVentaId.equals(18) && !tipoVentaId.equals(39) && this.resultSet.getBigDecimal("IMPORTETAXAEMBARQUE") != null ? this.resultSet.getBigDecimal("IMPORTETAXAEMBARQUE") : BigDecimal.ZERO)); row.put("RECEITA_EMBARQUE_GAP", ((BigDecimal) row.get("RECEITA_EMBARQUE_GAP")).add((tipoVentaId.equals(18) || tipoVentaId.equals(39)) && this.resultSet.getBigDecimal("IMPORTETAXAEMBARQUE") != null ? this.resultSet.getBigDecimal("IMPORTETAXAEMBARQUE") : BigDecimal.ZERO)); - row.put("IMPOSTOS", ((BigDecimal) row.get("IMPOSTOS")).add(!tipoVentaId.equals(18) || (tipoVentaId.equals(18) && (Boolean) this.relatorio.getParametros().get("B_CONTEMPLAR_GAP")) ? getValorImposto(puntoVentaId, this.resultSet.getString("INTERESTADUAL"), this.resultSet.getBigDecimal("PRECIOPAGADO"), this.resultSet.getBigDecimal("IMPORTESEGURO"), this.resultSet.getBigDecimal("IMPORTETAXAEMBARQUE"), this.resultSet.getBigDecimal("IMPORTEPEDAGIO"), BigDecimal.ZERO) : BigDecimal.ZERO)); + row.put("IMPOSTOS", ((BigDecimal) row.get("IMPOSTOS")).add(!tipoVentaId.equals(18) || (tipoVentaId.equals(18) && (Boolean) this.relatorio.getParametros().get("B_CONTEMPLAR_GAP")) ? getValorImposto(idEstado, puntoVentaId, this.resultSet.getString("INTERESTADUAL"), this.resultSet.getBigDecimal("PRECIOPAGADO"), this.resultSet.getBigDecimal("IMPORTESEGURO"), this.resultSet.getBigDecimal("IMPORTETAXAEMBARQUE"), this.resultSet.getBigDecimal("IMPORTEPEDAGIO"), BigDecimal.ZERO) : BigDecimal.ZERO)); // Realiza os calculos de comissão se o tipo de venda não for "EM ABERTO" e se for venda normal, ou se for GAP e o check estiver marcado if (!tipoVentaId.equals(9) && ((!tipoVentaId.equals(18) && !tipoVentaId.equals(39)) || ((tipoVentaId.equals(18) || tipoVentaId.equals(39)) && (Boolean) this.relatorio.getParametros().get("B_CONTEMPLAR_GAP")))) this.setRowComissao(row); } else { // Verificia se a devolução é pra ser contabilizada na agência de destino ou de origem da venda - if (((Integer) this.relatorio.getParametros().get("ISDEVOLUCAODESTINO") == 1 )|| (((Integer) this.relatorio.getParametros().get("ISDEVOLUCAODESTINO")).equals(0) && this.resultSet.getInt("POSSUI_CANC") == 1)) { + if (((Integer) this.relatorio.getParametros().get("ISDEVOLUCAODESTINO") == 1) || (((Integer) this.relatorio.getParametros().get("ISDEVOLUCAODESTINO")).equals(0) && this.resultSet.getInt("POSSUI_CANC") == 1)) { row.put("TOTAL_DEVOL", ((BigDecimal) row.get("TOTAL_DEVOL")).add((motivoCancelacionId.equals(31) || motivoCancelacionId.equals(32)) && !tipoVentaId.equals(18) ? this.resultSet.getBigDecimal("PRECIOPAGADO") : BigDecimal.ZERO)); row.put("TOTAL_DEVOL_GAP", ((BigDecimal) row.get("TOTAL_DEVOL_GAP")).add((motivoCancelacionId.equals(31) || motivoCancelacionId.equals(32)) && tipoVentaId.equals(18) ? this.resultSet.getBigDecimal("PRECIOPAGADO") : BigDecimal.ZERO)); @@ -433,11 +436,11 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio { } - public HashMap getConfigImposto(Integer puntoVentaId) throws Exception { + public HashMap getConfigImposto(Integer puntoVentaId, Integer estadoId) throws Exception { HashMap cacheConfig = null; try { - cacheConfig = (HashMap) CalculoImposto.getConfigImpostoByPuntoVenta(this.getConexao(), puntoVentaId); + cacheConfig = (HashMap) CalculoImposto.getConfigImpostoByEstadoOrigem(this.getConexao(), estadoId, puntoVentaId); } catch (Exception e) { if (e instanceof ExceptionConfiguracao) this.addInfoMsg(e.getMessage()); @@ -448,7 +451,7 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio { return cacheConfig; } - public BigDecimal getValorImposto(Integer puntoVentaId, String indInterestadual, BigDecimal tarifa, BigDecimal seguro, BigDecimal embarque, BigDecimal pedagio, BigDecimal bagagem) throws Exception { + public BigDecimal getValorImposto(Integer estadoId, Integer puntoVentaId, String indInterestadual, BigDecimal tarifa, BigDecimal seguro, BigDecimal embarque, BigDecimal pedagio, BigDecimal bagagem) throws Exception { try { Integer tipoBaseCalculo = (Integer) this.getParametros().get("BASE_CALCULO_IMPOSTO"); Boolean indBaseTarifa = (tipoBaseCalculo == 1 || tipoBaseCalculo == 2 ? true : false); @@ -456,7 +459,7 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio { Boolean indBaseEmbarque = (tipoBaseCalculo == 1 || tipoBaseCalculo == 4 ? true : false); Boolean indBasePedagio = (tipoBaseCalculo == 1 || tipoBaseCalculo == 5 ? true : false); Boolean indBaseBagagem = (tipoBaseCalculo == 1 || tipoBaseCalculo == 6 ? true : false); - return CalculoImposto.getValorImpostoRelatorioReceitaDiaria(this.getConexao(), puntoVentaId, indInterestadual, tarifa, seguro, embarque, pedagio, bagagem, indBaseTarifa, indBaseSeguro, indBaseEmbarque, indBasePedagio, indBaseBagagem); + return CalculoImposto.getValorImpostoRelatorioReceitaDiaria(this.getConexao(), estadoId, puntoVentaId, indInterestadual, tarifa, seguro, embarque, pedagio, bagagem, indBaseTarifa, indBaseSeguro, indBaseEmbarque, indBasePedagio, indBaseBagagem); } catch (Exception e) { if (e instanceof ExceptionConfiguracao) this.addInfoMsg(e.getMessage()); @@ -545,6 +548,8 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio { sql.append(" ELSE "); sql.append(" 'N' "); sql.append(" END INTERESTADUAL, "); + sql.append(" CO.ESTADO_ID ORIGEM_ESTADO_ID, "); + sql.append(" CD.ESTADO_ID DESTINO_ESTADO_ID, "); sql.append(" CJ.PRECIOPAGADO, "); sql.append(" CJ.MOTIVOCANCELACION_ID, "); sql.append(" CJ.TIPOVENTA_ID, "); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioTaxasLinha.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioTaxasLinha.java index c1e7c4c5c..259f3453a 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioTaxasLinha.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioTaxasLinha.java @@ -71,30 +71,31 @@ public class RelatorioTaxasLinha extends Relatorio { BigDecimal valorIcms = BigDecimal.ZERO; String indInterestadual = this.resultSet.getString("INTERESTADUAL"); Integer idEstado = this.resultSet.getInt("ORIGEM_ESTADO_ID"); + Integer puntoVentaId = this.resultSet.getInt("PUNTOVENTA_ID"); try { if (fieldName.equals("IMPORTETAXAEMBARQUE") && this.resultSet.getBigDecimal("IMPORTETAXAEMBARQUE") != null && !this.resultSet.getBigDecimal("IMPORTETAXAEMBARQUE").equals(BigDecimal.ZERO)) { - valorIcms = CalculoImposto.getValorImpostoByEstadoOrigem(this.relatorio.getConexao(), idEstado, indInterestadual, BigDecimal.ZERO, BigDecimal.ZERO, this.resultSet.getBigDecimal("IMPORTETAXAEMBARQUE"), BigDecimal.ZERO); + valorIcms = CalculoImposto.getValorImposto(this.relatorio.getConexao(), idEstado, puntoVentaId, indInterestadual, BigDecimal.ZERO, BigDecimal.ZERO, this.resultSet.getBigDecimal("IMPORTETAXAEMBARQUE"), BigDecimal.ZERO); return this.resultSet.getBigDecimal("IMPORTETAXAEMBARQUE").subtract(valorIcms); } else if (fieldName.equals("IMPORTEPEDAGIO") && this.resultSet.getBigDecimal("IMPORTEPEDAGIO") != null && !this.resultSet.getBigDecimal("IMPORTEPEDAGIO").equals(BigDecimal.ZERO)) { - valorIcms = CalculoImposto.getValorImpostoByEstadoOrigem(this.relatorio.getConexao(), idEstado, indInterestadual, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, this.resultSet.getBigDecimal("IMPORTEPEDAGIO")); + valorIcms = CalculoImposto.getValorImposto(this.relatorio.getConexao(), idEstado, puntoVentaId, indInterestadual, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, this.resultSet.getBigDecimal("IMPORTEPEDAGIO")); return this.resultSet.getBigDecimal("IMPORTEPEDAGIO").subtract(valorIcms); } else if (fieldName.equals("IMPORTESEGURO") && this.resultSet.getBigDecimal("IMPORTESEGURO") != null && !this.resultSet.getBigDecimal("IMPORTESEGURO").equals(BigDecimal.ZERO)) { - valorIcms = CalculoImposto.getValorImpostoByEstadoOrigem(this.relatorio.getConexao(), idEstado, indInterestadual, BigDecimal.ZERO, this.resultSet.getBigDecimal("IMPORTESEGURO"), BigDecimal.ZERO, BigDecimal.ZERO); + valorIcms = CalculoImposto.getValorImposto(this.relatorio.getConexao(), idEstado, puntoVentaId, indInterestadual, BigDecimal.ZERO, this.resultSet.getBigDecimal("IMPORTESEGURO"), BigDecimal.ZERO, BigDecimal.ZERO); return this.resultSet.getBigDecimal("IMPORTESEGURO").subtract(valorIcms); } else if (fieldName.equals("TOTAL_EMBARQUE") && !this.resultSet.getBigDecimal("TOTAL_EMBARQUE").equals(BigDecimal.ZERO)) { - valorIcms = CalculoImposto.getValorImpostoByEstadoOrigem(this.relatorio.getConexao(), idEstado, indInterestadual, BigDecimal.ZERO, this.resultSet.getBigDecimal("TOTAL_EMBARQUE"), BigDecimal.ZERO, BigDecimal.ZERO); + valorIcms = CalculoImposto.getValorImposto(this.relatorio.getConexao(), idEstado, puntoVentaId, indInterestadual, BigDecimal.ZERO, this.resultSet.getBigDecimal("TOTAL_EMBARQUE"), BigDecimal.ZERO, BigDecimal.ZERO); return this.resultSet.getBigDecimal("TOTAL_EMBARQUE").subtract(valorIcms); } else if (fieldName.equals("TOTAL_PEDAGIO") && !this.resultSet.getBigDecimal("TOTAL_PEDAGIO").equals(BigDecimal.ZERO)) { - valorIcms = CalculoImposto.getValorImpostoByEstadoOrigem(this.relatorio.getConexao(), idEstado, indInterestadual, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, this.resultSet.getBigDecimal("TOTAL_PEDAGIO")); + valorIcms = CalculoImposto.getValorImposto(this.relatorio.getConexao(), idEstado, puntoVentaId, indInterestadual, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, this.resultSet.getBigDecimal("TOTAL_PEDAGIO")); return this.resultSet.getBigDecimal("TOTAL_PEDAGIO").subtract(valorIcms); } else if (fieldName.equals("TOTAL_SEGURO") && !this.resultSet.getBigDecimal("TOTAL_SEGURO").equals(BigDecimal.ZERO)) { - valorIcms = CalculoImposto.getValorImpostoByEstadoOrigem(this.relatorio.getConexao(), idEstado, indInterestadual, BigDecimal.ZERO, this.resultSet.getBigDecimal("TOTAL_SEGURO"), BigDecimal.ZERO, BigDecimal.ZERO); + valorIcms = CalculoImposto.getValorImposto(this.relatorio.getConexao(), idEstado, puntoVentaId, indInterestadual, BigDecimal.ZERO, this.resultSet.getBigDecimal("TOTAL_SEGURO"), BigDecimal.ZERO, BigDecimal.ZERO); return this.resultSet.getBigDecimal("TOTAL_SEGURO").subtract(valorIcms); } } catch (Exception e) { @@ -119,11 +120,11 @@ public class RelatorioTaxasLinha extends Relatorio { protected void processaParametros() throws Exception { } - public HashMap getConfigImposto(Integer idEstado) throws Exception { + public HashMap getConfigImposto(Integer idEstado, Integer puntoVentaId) throws Exception { HashMap cacheConfig = null; try { - cacheConfig = (HashMap) CalculoImposto.getConfigImpostoByEstadoOrigem(this.getConexao(), idEstado); + cacheConfig = (HashMap) CalculoImposto.getConfigImpostoByEstadoOrigem(this.getConexao(), idEstado, puntoVentaId); } catch (Exception e) { if (e instanceof ExceptionConfiguracao) this.addInfoMsg(e.getMessage()); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/negocio/CalculoImposto.java b/src/java/com/rjconsultores/ventaboletos/relatorios/negocio/CalculoImposto.java index a0a89a4b2..eaccc2db3 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/negocio/CalculoImposto.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/negocio/CalculoImposto.java @@ -21,93 +21,7 @@ public class CalculoImposto { static Map> mapCacheConfigImposto = new HashMap>(); - public static Map getConfigImpostoByPuntoVenta(Connection conexao, Integer puntoVentaId) throws SQLException, ExceptionConfiguracao { - - HashMap cacheConfig = null; - - // Verifica se já existe configuração na memoria, caso não exista, realiza busca no banco - if (!mapCacheConfigImposto.containsKey(puntoVentaId.toString())) { - - Boolean isBuscouConfig = false; - - StringBuilder sql = new StringBuilder(); - - sql.append("SELECT EI.*, ES.NOMBESTADO, EM.NOMBEMPRESA "); - sql.append(" FROM PUNTO_VENTA PV, PARADA PR, CIUDAD CD, EMPRESA_IMPOSTO EI, ESTADO ES, EMPRESA EM "); - sql.append("WHERE PV.PUNTOVENTA_ID = :PUNTOVENTA_ID "); - sql.append(" AND PV.PARADA_ID = PR.PARADA_ID "); - sql.append(" AND PR.CIUDAD_ID = CD.CIUDAD_ID "); - sql.append(" AND CD.ESTADO_ID = EI.ESTADO_ID (+) "); - sql.append(" AND PV.EMPRESA_ID = NVL(EI.EMPRESA_ID, PV.EMPRESA_ID) "); - sql.append(" AND CD.ESTADO_ID = ES.ESTADO_ID "); - sql.append(" AND PV.EMPRESA_ID = EM.EMPRESA_ID "); - sql.append(" AND NVL(EI.ACTIVO, 1) = 1 "); - - NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql.toString()); - stmt.setInt("PUNTOVENTA_ID", puntoVentaId); - - ResultSet rs = stmt.executeQuery(); - - if (rs.next()) { - - if (rs.getBigDecimal("ICMS") != null) { - isBuscouConfig = true; - cacheConfig = new HashMap(); - - cacheConfig.put("PORCREDBASEICMS", rs.getBigDecimal("PORCREDBASEICMS")); - cacheConfig.put("PORCREDESTADUAL", rs.getBigDecimal("PORCREDESTADUAL")); - cacheConfig.put("INDTARIFAESTADUAL", rs.getBoolean("INDTARIFAESTADUAL")); - cacheConfig.put("INDSEGUROESTADUAL", rs.getBoolean("INDSEGUROESTADUAL")); - cacheConfig.put("INDTXEMBARQUEESTADUAL", rs.getBoolean("INDTXEMBARQUEESTADUAL")); - cacheConfig.put("INDPEDAGIOESTDUAL", rs.getBoolean("INDPEDAGIOESTDUAL")); - cacheConfig.put("PORCREDMUNICIPAL", rs.getBigDecimal("PORCREDMUNICIPAL")); - cacheConfig.put("INDTARIFAMUNICIPAL", rs.getBoolean("INDTARIFAMUNICIPAL")); - cacheConfig.put("INDSEGUROMUNICIPAL", rs.getBoolean("INDSEGUROMUNICIPAL")); - cacheConfig.put("INDTXEMBARQUEMUNICIPAL", rs.getBoolean("INDTXEMBARQUEMUNICIPAL")); - cacheConfig.put("INDPEDAGIOMUNICIPAL", rs.getBoolean("INDPEDAGIOMUNICIPAL")); - - cacheConfig.put("INDJANEIRO", rs.getBoolean("INDJANEIRO")); - cacheConfig.put("INDFEVEREIRO", rs.getBoolean("INDFEVEREIRO")); - cacheConfig.put("INDMARCO", rs.getBoolean("INDMARCO")); - cacheConfig.put("INDABRIL", rs.getBoolean("INDABRIL")); - cacheConfig.put("INDMAIO", rs.getBoolean("INDMAIO")); - cacheConfig.put("INDJUNHO", rs.getBoolean("INDJUNHO")); - cacheConfig.put("INDJULHO", rs.getBoolean("INDJULHO")); - cacheConfig.put("INDAGOSTO", rs.getBoolean("INDAGOSTO")); - cacheConfig.put("INDSETEMBRO", rs.getBoolean("INDSETEMBRO")); - cacheConfig.put("INDOUTUBRO", rs.getBoolean("INDOUTUBRO")); - cacheConfig.put("INDNOVEMBRO", rs.getBoolean("INDNOVEMBRO")); - cacheConfig.put("INDDEZEMBRO", rs.getBoolean("INDDEZEMBRO")); - - cacheConfig.put("ICMS", rs.getBigDecimal("ICMS")); - cacheConfig.put("PORCREDBASEICMS", rs.getBigDecimal("PORCREDBASEICMS")); - } - String estado = rs.getString("NOMBESTADO"); - String empresa = rs.getString("NOMBEMPRESA"); - - if (!isBuscouConfig) - throw new ExceptionConfiguracao("Não foi possivel obter a configuração de imposto para o estado: " + estado + " empresa: " + empresa); - } - ; - - if (!rs.isClosed()) - rs.close(); - if (!stmt.isClosed()) - stmt.close(); - - if (!isBuscouConfig) - throw new ExceptionConfiguracao("Não foi possivel obter a configuração de imposto para agência " + puntoVentaId); - - mapCacheConfigImposto.put(puntoVentaId.toString(), cacheConfig); - - } else - cacheConfig = mapCacheConfigImposto.get(puntoVentaId.toString()); - - return cacheConfig; - - } - - public static BigDecimal getValorImpostoRelatorioReceitaDiaria(Connection conexao, Integer puntoVentaId, String indInterestadual, BigDecimal tarifa, BigDecimal seguro, BigDecimal embarque, BigDecimal pedagio, BigDecimal bagagem, Boolean indBaseTarifa, Boolean indBaseSeguro, Boolean indBaseEmbarque, Boolean indBasePedagio, Boolean indBaseBagagem) throws Exception { + public static BigDecimal getValorImpostoRelatorioReceitaDiaria(Connection conexao, Integer estadoId, Integer puntoVentaId, String indInterestadual, BigDecimal tarifa, BigDecimal seguro, BigDecimal embarque, BigDecimal pedagio, BigDecimal bagagem, Boolean indBaseTarifa, Boolean indBaseSeguro, Boolean indBaseEmbarque, Boolean indBasePedagio, Boolean indBaseBagagem) throws Exception { HashMap configImposto = new HashMap(); BigDecimal baseCalculo = BigDecimal.ZERO; @@ -117,7 +31,9 @@ public class CalculoImposto { BigDecimal valorIcms = BigDecimal.ZERO; - configImposto = (HashMap) getConfigImpostoByPuntoVenta(conexao, puntoVentaId); + // configImposto = (HashMap) getConfigImpostoByPuntoVenta(conexao, puntoVentaId); + + configImposto = (HashMap) getConfigImpostoByEstadoOrigem(conexao, estadoId, puntoVentaId); if (configImposto == null) return BigDecimal.ZERO; @@ -152,77 +68,7 @@ public class CalculoImposto { return valorIcms; } - public static BigDecimal getValorImposto(Connection conexao, Integer puntoVentaId, String indInterestadual, BigDecimal tarifa, BigDecimal seguro, BigDecimal embarque, BigDecimal pedagio) throws Exception { - HashMap configImposto = new HashMap(); - - BigDecimal baseCalculo = BigDecimal.ZERO; - BigDecimal icms; - BigDecimal porcRedEstadualMunicipal; - - BigDecimal porcRedBaseIcms; - - BigDecimal valorIcms = BigDecimal.ZERO; - - Boolean indTarifaMunicipal; - Boolean indSeguroMunicipal; - Boolean indTxEmbarqueMunicipal; - Boolean indPedagioMunicipal; - Boolean indTarifaEstadual; - Boolean indSeguroEstadual; - Boolean indTxEmbarqueEstadual; - Boolean indPedagioEstadual; - - configImposto = (HashMap) getConfigImpostoByPuntoVenta(conexao, puntoVentaId); - - if (configImposto == null) - return BigDecimal.ZERO; - - 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; - } - - // 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))); - - // Redução estadual - if (porcRedEstadualMunicipal != null && porcRedEstadualMunicipal.equals(BigDecimal.ZERO)) - valorIcms = valorIcms.subtract(porcRedEstadualMunicipal.divide(BigDecimal.valueOf(100)).multiply(valorIcms)); - - return valorIcms; - } - - public static Map getConfigImpostoByEstadoOrigem(Connection conexao, Integer idEstado) throws SQLException, ExceptionConfiguracao { + public static Map getConfigImpostoByEstadoOrigem(Connection conexao, Integer idEstado, Integer puntoVentaId) throws SQLException, ExceptionConfiguracao { HashMap cacheConfig = null; @@ -232,17 +78,23 @@ public class CalculoImposto { Boolean isBuscouConfig = false; StringBuilder sql = new StringBuilder(); - sql.append(" SELECT EI.*, ES.NOMBESTADO, EM.NOMBEMPRESA "); - sql.append(" FROM PUNTO_VENTA PV, PARADA PR, CIUDAD CD, EMPRESA_IMPOSTO EI, ESTADO ES, EMPRESA EM "); + sql.append("FROM PUNTO_VENTA PV, "); + sql.append(" PARADA PR, "); + sql.append(" ESTADO ES, "); + sql.append(" EMPRESA_IMPOSTO EI "); + sql.append(" INNER JOIN EMPRESA EM "); + sql.append(" ON ( EM.EMPRESA_ID = EI.EMPRESA_ID ) "); + sql.append(" LEFT JOIN CIUDAD CD "); + sql.append(" ON ( CD.ESTADO_ID = EI.ESTADO_ID ) "); sql.append(" WHERE ES.ESTADO_ID = :ORIGEM_ESTADO_ID "); - sql.append(" AND PV.PARADA_ID = PR.PARADA_ID "); - sql.append(" AND PR.CIUDAD_ID = CD.CIUDAD_ID "); - sql.append(" AND CD.ESTADO_ID = EI.ESTADO_ID (+) "); - sql.append(" AND PV.EMPRESA_ID = NVL(EI.EMPRESA_ID, PV.EMPRESA_ID) "); - sql.append(" AND CD.ESTADO_ID = ES.ESTADO_ID "); - sql.append(" AND PV.EMPRESA_ID = EM.EMPRESA_ID "); - sql.append(" AND NVL(EI.ACTIVO, 1) = 1 "); + sql.append(" AND EI.EMPRESA_ID = 25 "); + sql.append(" AND PV.PARADA_ID = PR.PARADA_ID "); + sql.append(" AND PR.CIUDAD_ID = CD.CIUDAD_ID "); + sql.append(" AND PV.EMPRESA_ID = NVL(EI.EMPRESA_ID, PV.EMPRESA_ID) "); + sql.append(" AND CD.ESTADO_ID = ES.ESTADO_ID "); + sql.append(" AND PV.EMPRESA_ID = EI.EMPRESA_ID "); + sql.append(" AND NVL(EI.ACTIVO, 1) = 1 "); NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql.toString()); stmt.setInt("ORIGEM_ESTADO_ID", idEstado); @@ -308,7 +160,7 @@ public class CalculoImposto { } - public static BigDecimal getValorImpostoByEstadoOrigem(Connection conexao, Integer idEstado, String indInterestadual, BigDecimal tarifa, BigDecimal seguro, BigDecimal embarque, BigDecimal pedagio) throws Exception { + public static BigDecimal getValorImposto(Connection conexao, Integer idEstado, Integer puntoVentaId, String indInterestadual, BigDecimal tarifa, BigDecimal seguro, BigDecimal embarque, BigDecimal pedagio) throws Exception { HashMap configImposto = new HashMap(); BigDecimal baseCalculo = BigDecimal.ZERO; @@ -328,7 +180,7 @@ public class CalculoImposto { Boolean indTxEmbarqueEstadual; Boolean indPedagioEstadual; - configImposto = (HashMap) getConfigImpostoByEstadoOrigem(conexao, idEstado); + configImposto = (HashMap) getConfigImpostoByEstadoOrigem(conexao, idEstado, puntoVentaId); if (configImposto == null) return BigDecimal.ZERO; diff --git a/web/gui/relatorios/filtroRelatorioReceitaDiariaAgencia.zul b/web/gui/relatorios/filtroRelatorioReceitaDiariaAgencia.zul index 364518561..d1e0af34f 100644 --- a/web/gui/relatorios/filtroRelatorioReceitaDiariaAgencia.zul +++ b/web/gui/relatorios/filtroRelatorioReceitaDiariaAgencia.zul @@ -7,7 +7,7 @@