diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscais.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscais.java index 954963101..32635cf05 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscais.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscais.java @@ -1,6 +1,7 @@ package com.rjconsultores.ventaboletos.relatorios.impl; import java.math.BigDecimal; +import java.math.RoundingMode; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Timestamp; @@ -37,12 +38,13 @@ public class RelatorioDocumentosFiscais extends Relatorio { Map parametros = this.relatorio.getParametros(); Integer empresaId = (Integer) parametros.get("EMPRESA_ID"); + Integer estadoId = (Integer) parametros.get("ESTADO_ID"); String agencia = (String) parametros.get("PUNTOVENTA"); String tipoLinha = (String) parametros.get("TIPO_LINHA"); Aidf aidf = (Aidf) parametros.get("AIDF"); Boolean somenteCancelado = (Boolean) parametros.get("SOMENTE_CANCELADO"); - String sql = getSql(empresaId, agencia, somenteCancelado, tipoLinha, aidf); + String sql = getSql(empresaId, agencia, somenteCancelado, tipoLinha, aidf, estadoId); NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); @@ -53,8 +55,14 @@ public class RelatorioDocumentosFiscais extends Relatorio { rset = stmt.executeQuery(); lsDadosRelatorio = new ArrayList(); - BigDecimal saldo = BigDecimal.ZERO; - BigDecimal total = BigDecimal.ZERO; + + BigDecimal totalValorContabil = BigDecimal.ZERO; + BigDecimal totalValorBaseCalculo = BigDecimal.ZERO; + BigDecimal totalValorAliquiotaICMS = BigDecimal.ZERO; + BigDecimal totalValorICMS = BigDecimal.ZERO; + BigDecimal totalValorIsentas = BigDecimal.ZERO; + BigDecimal totalValorOutras = BigDecimal.ZERO; + BigDecimal totalValorCancelado = BigDecimal.ZERO; while (rset.next()) { @@ -70,16 +78,43 @@ public class RelatorioDocumentosFiscais extends Relatorio { bean.setValorICMS((BigDecimal) rset.getObject("valorICMS")); bean.setOutras((BigDecimal) rset.getObject("outras")); bean.setValorCancelado((BigDecimal) rset.getObject("valorCancelado")); - bean.setEstadoId((Integer) Integer.parseInt(rset.getObject("estadoId").toString())); + bean.setNomeEstado((String) rset.getObject("nomeEstado")); lsDadosRelatorio.add(bean); } if (lsDadosRelatorio.size() > 0) { + + for (RelatorioDocumentosFiscaisBean bean : lsDadosRelatorio) { + + bean.setValorContabil(bean.getValorContabil().setScale(2, RoundingMode.HALF_EVEN)); + bean.setValorBaseCalculo(bean.getValorBaseCalculo().setScale(2, RoundingMode.HALF_EVEN)); + bean.setValorAliquiotaICMS(bean.getValorAliquiotaICMS().setScale(2, RoundingMode.HALF_EVEN)); + bean.setValorICMS(bean.getValorICMS().setScale(2, RoundingMode.HALF_EVEN)); + bean.setOutras(bean.getOutras().setScale(2, RoundingMode.HALF_EVEN)); + // bean.setIsentas(bean.getIsentas().setScale(2, RoundingMode.HALF_EVEN)); + bean.setValorCancelado(bean.getValorCancelado().setScale(2, RoundingMode.HALF_EVEN)); + + totalValorContabil = totalValorContabil.add(bean.getValorContabil() != null ? bean.getValorContabil() : BigDecimal.ZERO); + totalValorBaseCalculo = totalValorBaseCalculo.add(bean.getValorBaseCalculo() != null ? bean.getValorBaseCalculo() : BigDecimal.ZERO); + totalValorAliquiotaICMS = totalValorAliquiotaICMS.add(bean.getValorAliquiotaICMS() != null ? bean.getValorAliquiotaICMS() : BigDecimal.ZERO); + totalValorICMS = totalValorICMS.add(bean.getValorICMS() != null ? bean.getValorICMS() : BigDecimal.ZERO); + // totalValorIsentas = totalValorIsentas.add(bean.getIsentas() != null ? bean.getIsentas() : BigDecimal.ZERO); + totalValorOutras = totalValorOutras.add(bean.getOutras() != null ? bean.getOutras() : BigDecimal.ZERO); + totalValorCancelado = totalValorCancelado.add(bean.getValorCancelado() != null ? bean.getValorCancelado() : BigDecimal.ZERO); + } setLsDadosRelatorio(lsDadosRelatorio); - parametros.put("SALDO", saldo.subtract(total)); - parametros.put("TOTAL", total); + + parametros.put("TOTAL_VALOR_CONTABIL", totalValorContabil); + parametros.put("TOTAL_VALOR_BASE_CALCULO", totalValorBaseCalculo); + parametros.put("TOTAL_VALOR_ALIQUIOTA_ICMS", totalValorAliquiotaICMS); + parametros.put("TOTAL_VALOR_ICMS", totalValorICMS); + parametros.put("TOTAL_VALOR_ISENTAS", totalValorIsentas); + parametros.put("TOTAL_VALOR_OUTRAS", totalValorOutras); + parametros.put("TOTAL_VALOR_CANCELADO", totalValorCancelado); + } + } }); @@ -90,21 +125,22 @@ public class RelatorioDocumentosFiscais extends Relatorio { this.lsDadosRelatorio = lsDadosRelatorio; } - private String getSql(Integer empresaId, String agencia, Boolean somenteCancelado, String tipoLinha, Aidf aidf) { + private String getSql(Integer empresaId, String agencia, Boolean somenteCancelado, String tipoLinha, Aidf aidf, Integer estadoId) { StringBuilder sql = new StringBuilder(); - sql.append("SELECT coalesce(tabela.numAidf, '') as numAidf, "); - sql.append(" tabela.formInicial as formInicial, "); - sql.append(" tabela.formFinal as formFinal, "); - sql.append(" tabela.serie as serie, "); - sql.append(" tabela.subSerie as subSerie , "); + + sql.append("SELECT coalesce(tabela.numAidf, '') AS numAidf, "); + sql.append(" tabela.formInicial AS formInicial, "); + sql.append(" tabela.formFinal AS formFinal, "); + sql.append(" tabela.serie AS serie, "); + sql.append(" tabela.subSerie AS subSerie, "); + sql.append(" tabela.nomeEstado AS nomeEstado, "); sql.append(" coalesce(sum(tabela.valorContabil),0) AS valorContabil, "); - sql.append(" (sum(tabela.valorContabil) - (sum(tabela.valorContabil) * tabela.redBaseCalcIcms)) AS valorBaseCalculo, "); - sql.append(" tabela.ICMS AS valorAliquiotaICMS, "); - sql.append(" (sum(tabela.valorContabil) - (sum(tabela.valorContabil) * tabela.redBaseCalcIcms)) * tabela.ICMS AS valorICMS, "); - sql.append(" sum(tabela.valorContabil) - (sum(tabela.valorContabil) - (sum(tabela.valorContabil) * tabela.redBaseCalcIcms)) AS outras, "); - sql.append(" coalesce(sum(tabela.valorCancelado),0) AS valorCancelado, "); - sql.append(" tabela.estadoId as estadoId "); + sql.append(" sum(valorBaseCalculo) AS valorBaseCalculo, "); + sql.append(" tabela.valorAliquiotaICMS AS valorAliquiotaICMS, "); + sql.append(" sum(tabela.valorICMS) AS valorICMS, "); + sql.append(" coalesce(sum(tabela.valorCancelado),0) AS valorCancelado, "); + sql.append(" sum(tabela.outras) AS outras "); sql.append("FROM "); sql.append(" (SELECT a.ACFISCAL AS numAidf, "); sql.append(" a.FORMINICIAL AS formInicial, "); @@ -113,15 +149,15 @@ public class RelatorioDocumentosFiscais extends Relatorio { sql.append(" a.SUBSERIE AS subSerie, "); sql.append(" c.MOTIVOCANCELACION_ID AS motivoCancelacion, "); sql.append(" c.PRECIOBASE AS tarifa, "); - sql.append(" ed.ICMS AS ICMS, "); - sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN c.PRECIOPAGADO ELSE 0 END AS valorContabil, "); - sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NOT NULL THEN c.PRECIOPAGADO ELSE 0 "); - sql.append(" END AS valorCancelado, "); + sql.append(" ed.ICMS AS valorAliquiotaICMS, "); + sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN c.PRECIOPAGADO ELSE 0 END AS valorContabil, "); + sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NOT NULL THEN c.PRECIOPAGADO ELSE 0 END AS valorCancelado, "); sql.append(" coalesce(ei.PORCREDBASEICMS / 100,0) AS redBaseCalcIcms, "); - sql.append(" ei.estado_id AS estadoId, "); - sql.append(" po.DESCPARADA AS origem, "); - sql.append(" pd.DESCPARADA AS destino, "); - sql.append(" CASE WHEN((coalesce(eos.cveestado, eo.cveestado)) = (coalesce(eds.cveestado, ed.cveestado))) then 0 else 1 end as isInterEstadual "); + sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN c.PRECIOPAGADO - (c.PRECIOPAGADO * coalesce(ei.PORCREDBASEICMS / 100,0)) ELSE 0 END AS valorBaseCalculo, "); + sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN ((c.PRECIOPAGADO - (c.PRECIOPAGADO * coalesce(ei.PORCREDBASEICMS / 100,0))) * ed.ICMS) / 100 ELSE 0 END AS valorICMS, "); + sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN c.PRECIOPAGADO - (c.PRECIOPAGADO - (c.PRECIOPAGADO * coalesce(ei.PORCREDBASEICMS / 100,0))) ELSE 0 END AS outras, "); + sql.append(" eo.estado_id AS estadoId, eo.NOMBESTADO AS nomeEstado, po.DESCPARADA AS origem, pd.DESCPARADA AS destino, "); + sql.append(" CASE WHEN((coalesce(eos.cveestado, eo.cveestado)) = (coalesce(eds.cveestado, ed.cveestado))) THEN 0 ELSE 1 END AS isInterEstadual "); sql.append(" FROM caja c "); sql.append(" INNER JOIN aidf a ON a.aidf_id = c.aidf_id "); sql.append(" JOIN marca m ON c.marca_id = m.marca_id "); @@ -144,21 +180,17 @@ public class RelatorioDocumentosFiscais extends Relatorio { sql.append(" LEFT JOIN ciudad cds ON cds.ciudad_id = pds.ciudad_id "); sql.append(" LEFT JOIN estado eds ON eds.estado_id = cds.estado_id "); sql.append(" INNER JOIN empresa_imposto ei ON ei.empresa_id = e.empresa_id "); - sql.append(" WHERE c.feccreacion between :DATA_INICIAL and :DATA_FINAL "); sql.append("AND c.EMPRESACORRIDA_ID =" + empresaId + " "); sql.append(somenteCancelado == true ? " AND c.INDCANCELACION = 1" : " "); - sql.append("AND a.AIDF_ID = " + aidf.getAidfId() + " "); - sql.append(" AND coalesce(eos.cveestado, eo.cveestado) IN ('BA') )tabela "); + // sql.append("AND a.AIDF_ID = " + aidf.getAidfId() + " "); + sql.append("AND coalesce(eos.estado_id, eo.estado_id) IN (" + estadoId + ") "); + sql.append(")tabela "); sql.append(tipoLinha.equals("INTERMUNICIPAL") ? " where tabela.isInterEstadual = 1" : tipoLinha.equals("INTERESTADUAL") ? " where tabela.isInterEstadual = 0" : " "); - sql.append("GROUP BY tabela.numAidf, "); - sql.append(" tabela.formInicial, "); - sql.append(" tabela.formFinal, "); - sql.append(" tabela.serie, "); - sql.append(" tabela.subSerie, "); - sql.append(" tabela.ICMS, "); - sql.append(" tabela.redBaseCalcIcms, "); - sql.append(" tabela.estadoId"); + sql.append("GROUP BY tabela.numAidf,tabela.formInicial, "); + sql.append(" tabela.formFinal,tabela.serie, tabela.subSerie,tabela.nomeEstado, "); + sql.append(" tabela.valorAliquiotaICMS "); + sql.append("ORDER BY tabela.nomeEstado"); return sql.toString(); } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.java new file mode 100644 index 000000000..8243e0258 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.java @@ -0,0 +1,200 @@ + +package com.rjconsultores.ventaboletos.relatorios.impl; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import com.rjconsultores.ventaboletos.entidad.Aidf; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.DataSource; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioDocumentosFiscaisBean; +import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; + +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; + +public class RelatorioDocumentosFiscaisAgrupadoPorLocalidade extends Relatorio { + + public RelatorioDocumentosFiscaisAgrupadoPorLocalidade(Map parametros, Connection conexao) { + super(parametros, conexao); + } + + private List lsDadosRelatorio; + + @Override + protected void processaParametros() throws Exception { + + this.setCustomDataSource(new DataSource(this) { + @Override + public void initDados() throws Exception { + + Connection conexao = this.relatorio.getConexao(); + + Map parametros = this.relatorio.getParametros(); + + Integer empresaId = (Integer) parametros.get("EMPRESA_ID"); + String agencia = (String) parametros.get("PUNTOVENTA"); + String tipoLinha = (String) parametros.get("TIPO_LINHA"); + Aidf aidf = (Aidf) parametros.get("AIDF"); + Boolean somenteCancelado = (Boolean) parametros.get("SOMENTE_CANCELADO"); + + String sql = getSql(empresaId, agencia, somenteCancelado, tipoLinha, aidf); + + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); + + stmt.setTimestamp("DATA_INICIAL", (Timestamp) parametros.get("DATA_INICIAL")); + stmt.setTimestamp("DATA_FINAL", (Timestamp) parametros.get("DATA_FINAL")); + + ResultSet rset = null; + rset = stmt.executeQuery(); + + lsDadosRelatorio = new ArrayList(); + + BigDecimal totalValorContabil = BigDecimal.ZERO; + BigDecimal totalValorBaseCalculo = BigDecimal.ZERO; + BigDecimal totalValorAliquiotaICMS = BigDecimal.ZERO; + BigDecimal totalValorICMS = BigDecimal.ZERO; + BigDecimal totalValorIsentas = BigDecimal.ZERO; + BigDecimal totalValorOutras = BigDecimal.ZERO; + BigDecimal totalValorCancelado = BigDecimal.ZERO; + + while (rset.next()) { + + RelatorioDocumentosFiscaisBean bean = new RelatorioDocumentosFiscaisBean(); + bean.setNumAIDF((String) (rset.getObject("numAIDF") == null ? "" : rset.getObject("numAIDF"))); + bean.setFormInicial((String) rset.getObject("formInicial")); + bean.setFormFinal((String) rset.getObject("formFinal")); + bean.setSerie((String) rset.getObject("serie")); + bean.setSubSerie((String) rset.getObject("subSerie")); + bean.setValorContabil((BigDecimal) rset.getObject("valorContabil")); + bean.setValorBaseCalculo((BigDecimal) rset.getObject("valorBaseCalculo")); + bean.setValorAliquiotaICMS((BigDecimal) rset.getObject("valorAliquiotaICMS")); + bean.setValorICMS((BigDecimal) rset.getObject("valorICMS")); + bean.setOutras((BigDecimal) rset.getObject("outras")); + bean.setValorCancelado((BigDecimal) rset.getObject("valorCancelado")); + bean.setNomeEstado((String) rset.getObject("nomeEstado")); + bean.setNomeOrigem((String) rset.getObject("nomeOrigem")); + bean.setNomeDestino((String) rset.getObject("nomeDestino")); + lsDadosRelatorio.add(bean); + + } + + if (lsDadosRelatorio.size() > 0) { + + for (RelatorioDocumentosFiscaisBean bean : lsDadosRelatorio) { + + bean.setValorContabil(bean.getValorContabil().setScale(2, RoundingMode.HALF_EVEN)); + bean.setValorBaseCalculo(bean.getValorBaseCalculo().setScale(2, RoundingMode.HALF_EVEN)); + bean.setValorAliquiotaICMS(bean.getValorAliquiotaICMS().setScale(2, RoundingMode.HALF_EVEN)); + bean.setValorICMS(bean.getValorICMS().setScale(2, RoundingMode.HALF_EVEN)); + bean.setOutras(bean.getOutras().setScale(2, RoundingMode.HALF_EVEN)); + //bean.setIsentas(bean.getIsentas().setScale(2, RoundingMode.HALF_EVEN)); + bean.setValorCancelado(bean.getValorCancelado().setScale(2, RoundingMode.HALF_EVEN)); + + totalValorContabil = totalValorContabil.add(bean.getValorContabil() != null ? bean.getValorContabil() : BigDecimal.ZERO); + totalValorBaseCalculo = totalValorBaseCalculo.add(bean.getValorBaseCalculo() != null ? bean.getValorBaseCalculo() : BigDecimal.ZERO); + totalValorAliquiotaICMS = totalValorAliquiotaICMS.add(bean.getValorAliquiotaICMS() != null ? bean.getValorAliquiotaICMS() : BigDecimal.ZERO); + totalValorICMS = totalValorICMS.add(bean.getValorICMS() != null ? bean.getValorICMS() : BigDecimal.ZERO); + //totalValorIsentas = totalValorIsentas.add(bean.getIsentas() != null ? bean.getIsentas() : BigDecimal.ZERO); + totalValorOutras = totalValorOutras.add(bean.getOutras() != null ? bean.getOutras() : BigDecimal.ZERO); + totalValorCancelado = totalValorCancelado.add(bean.getValorCancelado() != null ? bean.getValorCancelado() : BigDecimal.ZERO); + } + setLsDadosRelatorio(lsDadosRelatorio); + + parametros.put("TOTAL_VALOR_CONTABIL", totalValorContabil); + parametros.put("TOTAL_VALOR_BASE_CALCULO", totalValorBaseCalculo); + parametros.put("TOTAL_VALOR_ALIQUIOTA_ICMS", totalValorAliquiotaICMS); + parametros.put("TOTAL_VALOR_ICMS", totalValorICMS); + parametros.put("TOTAL_VALOR_ISENTAS", totalValorIsentas); + parametros.put("TOTAL_VALOR_OUTRAS", totalValorOutras); + parametros.put("TOTAL_VALOR_CANCELADO", totalValorCancelado); + + } + } + }); + + } + + public void setLsDadosRelatorio(List lsDadosRelatorio) { + this.setCollectionDataSource(new JRBeanCollectionDataSource(lsDadosRelatorio)); + this.lsDadosRelatorio = lsDadosRelatorio; + } + + private String getSql(Integer empresaId, String agencia, Boolean somenteCancelado, String tipoLinha, Aidf aidf) { + + StringBuilder sql = new StringBuilder(); + + sql.append("SELECT coalesce(tabela.numAidf, '') AS numAidf, "); + sql.append(" tabela.formInicial AS formInicial, "); + sql.append(" tabela.formFinal AS formFinal, "); + sql.append(" tabela.serie AS serie, "); + sql.append(" tabela.subSerie AS subSerie, "); + sql.append(" tabela.nomeEstado AS nomeEstado, "); + sql.append(" tabela.origem AS nomeOrigem, "); + sql.append(" tabela.destino AS nomeDestino, "); + sql.append(" coalesce(sum(tabela.valorContabil),0) AS valorContabil, "); + sql.append(" sum(valorBaseCalculo) AS valorBaseCalculo, "); + sql.append(" tabela.valorAliquiotaICMS AS valorAliquiotaICMS, "); + sql.append(" sum(tabela.valorICMS) AS valorICMS, "); + sql.append(" coalesce(sum(tabela.valorCancelado),0) AS valorCancelado, "); + sql.append(" sum(tabela.outras) AS outras "); + sql.append("FROM "); + sql.append(" (SELECT a.ACFISCAL AS numAidf, "); + sql.append(" a.FORMINICIAL AS formInicial, "); + sql.append(" a.FORMFINAL AS formFinal, "); + sql.append(" a.SERIE AS serie, "); + sql.append(" a.SUBSERIE AS subSerie, "); + sql.append(" c.MOTIVOCANCELACION_ID AS motivoCancelacion, "); + sql.append(" c.PRECIOBASE AS tarifa, "); + sql.append(" ed.ICMS AS valorAliquiotaICMS, "); + sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN c.PRECIOPAGADO ELSE 0 END AS valorContabil, "); + sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NOT NULL THEN c.PRECIOPAGADO ELSE 0 END AS valorCancelado, "); + sql.append(" coalesce(ei.PORCREDBASEICMS / 100,0) AS redBaseCalcIcms, "); + sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN c.PRECIOPAGADO - (c.PRECIOPAGADO * coalesce(ei.PORCREDBASEICMS / 100,0)) ELSE 0 END AS valorBaseCalculo, "); + sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN ((c.PRECIOPAGADO - (c.PRECIOPAGADO * coalesce(ei.PORCREDBASEICMS / 100,0))) * ed.ICMS) / 100ELSE 0 END AS valorICMS, "); + sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN c.PRECIOPAGADO - (c.PRECIOPAGADO - (c.PRECIOPAGADO * coalesce(ei.PORCREDBASEICMS / 100,0))) ELSE 0 END AS outras, "); + sql.append(" eo.estado_id AS estadoId, eo.NOMBESTADO AS nomeEstado, po.DESCPARADA AS origem, pd.DESCPARADA AS destino, "); + sql.append(" CASE WHEN((coalesce(eos.cveestado, eo.cveestado)) = (coalesce(eds.cveestado, ed.cveestado))) THEN 0 ELSE 1 END AS isInterEstadual "); + sql.append(" FROM caja c "); + sql.append(" INNER JOIN aidf a ON a.aidf_id = c.aidf_id "); + sql.append(" JOIN marca m ON c.marca_id = m.marca_id "); + sql.append(" JOIN empresa e ON e.empresa_id = m.empresa_id "); + sql.append(" JOIN parada po ON po.parada_id = c.origen_id "); + sql.append(" JOIN ciudad co ON co.ciudad_id = po.ciudad_id "); + sql.append(" JOIN estado eo ON eo.estado_id = co.estado_id "); + sql.append(" JOIN parada pd ON pd.parada_id = c.destino_id "); + sql.append(" JOIN ciudad cd ON cd.ciudad_id = pd.ciudad_id "); + sql.append(" JOIN estado ed ON ed.estado_id = cd.estado_id "); + sql.append(" LEFT JOIN alias_servico s ON s.origen_id = c.origen_id "); + sql.append(" AND s.destino_id = c.destino_id "); + sql.append(" AND (s.corrida_id = c.corrida_id "); + sql.append(" OR s.corrida_id IS NULL) "); + sql.append(" AND s.ruta_id = c.ruta_id "); + sql.append(" LEFT JOIN parada pos ON pos.parada_id = s.aliasorigen_id "); + sql.append(" LEFT JOIN ciudad cos ON cos.ciudad_id = pos.ciudad_id "); + sql.append(" LEFT JOIN estado eos ON eos.estado_id = cos.estado_id "); + sql.append(" LEFT JOIN parada pds ON pds.parada_id = s.aliasdestino_id "); + sql.append(" LEFT JOIN ciudad cds ON cds.ciudad_id = pds.ciudad_id "); + sql.append(" LEFT JOIN estado eds ON eds.estado_id = cds.estado_id "); + sql.append(" INNER JOIN empresa_imposto ei ON ei.empresa_id = e.empresa_id "); + sql.append(" WHERE c.feccreacion between :DATA_INICIAL and :DATA_FINAL "); + sql.append("AND c.EMPRESACORRIDA_ID =" + empresaId + " "); + sql.append(somenteCancelado == true ? " AND c.INDCANCELACION = 1" : " "); + // sql.append("AND a.AIDF_ID = " + aidf.getAidfId() + " "); + sql.append(")tabela "); + sql.append(tipoLinha.equals("INTERMUNICIPAL") ? " where tabela.isInterEstadual = 1" : tipoLinha.equals("INTERESTADUAL") ? " where tabela.isInterEstadual = 0" : " "); + sql.append("GROUP BY tabela.numAidf,tabela.formInicial, "); + sql.append(" tabela.formFinal,tabela.serie, tabela.subSerie,tabela.nomeEstado, "); + sql.append(" tabela.origem, tabela.destino, "); + sql.append(" tabela.valorAliquiotaICMS "); + sql.append("ORDER BY tabela.nomeEstado,tabela.origem, tabela.destino"); + + return sql.toString(); + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscaisAgrupadoPorLocalidade_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscaisAgrupadoPorLocalidade_es.properties new file mode 100644 index 000000000..779d3ef82 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscaisAgrupadoPorLocalidade_es.properties @@ -0,0 +1,28 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. + +#Labels cabeçalho +cabecalho.nome=Relatório Documentos Fiscais +cabecalho.relatorio=Relatório +label.periodo=Período: +label.UF=UF +label.especie=Espécie +label.empresa=Empresa: +label.formInicial=Nº Inicial +label.formFinal=Nº Final +label.numAIDF=AIDF +label.serie=Série +label.subSerie=SubSérie +label.valorContabil=Vlr Contábil +label.valorBaseCalculo=Vlr Base Cálc. +label.valorAliquiotaICMS=Alíquota ICMS +label.valorICMS=Valor ICMS +label.isentas=Isentas +label.outras=Outras +label.valorCancelado=Qtd. Cancec +label.origem=Origem +label.destino=Destino +label.estado=Estado +header.data=Período +header.a=a +header.tipoLinha=Tipo Linha diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscaisAgrupadoPorLocalidade_pt.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscaisAgrupadoPorLocalidade_pt.properties new file mode 100644 index 000000000..8e11cf111 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscaisAgrupadoPorLocalidade_pt.properties @@ -0,0 +1,30 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. + +#Labels cabeçalho +cabecalho.nome=Relatório Documentos Fiscais +cabecalho.relatorio=Relatório Documentos Fiscais +header.periodo=Período: +header.a=a +header.tipoLinha=Tipo Linha: +label.periodo=Período: +label.UF=UF +label.especie=Espécie: +label.empresa=Empresa: +label.formInicial=Nº Inicial +label.formFinal=Nº Final +label.numAIDF=AIDF +label.serie=Série +label.subSerie=SubSérie +label.valorContabil=Vlr Contábil +label.valorBaseCalculo=Vlr Base Cálc. +label.valorAliquiotaICMS=Alíquota ICMS +label.valorICMS=Valor ICMS +label.isentas=Isentas +label.outras=Outras +label.valorCancelado=Qtd. Cancec +label.origem=Origem +label.destino=Destino +label.estado=Estado: +label.totais=Totais: + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscais_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscais_pt_BR.properties index be959e3f3..2d7a90777 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscais_pt_BR.properties +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscais_pt_BR.properties @@ -7,7 +7,7 @@ cabecalho.relatorio=Relat label.periodo=Período: label.UF=UF label.especie=Espécie -label.empresa=Empresa +label.empresa=Empresa: label.formInicial=Nº Inicial label.formFinal=Nº Final label.numAIDF=AIDF @@ -20,4 +20,6 @@ label.valorICMS=Valor ICMS label.isentas=Isentas label.outras=Outras label.valorCancelado=Qtd. Cancec -header.data=Período +header.periodo=Período: +header.tipoLinha=Tipo Linha: +header.estado=Estado: diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscais.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscais.jasper index 4ee4bb4ff..453cb4be0 100644 Binary files a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscais.jasper and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscais.jasper differ diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscais.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscais.jrxml index 8edbd1591..c2c13ee1e 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscais.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscais.jrxml @@ -1,7 +1,7 @@ - - - + + + @@ -14,6 +14,16 @@ + + + + + + + + + + @@ -37,17 +47,28 @@ + + <band height="28"> + <textField> + <reportElement x="258" y="2" width="300" height="20" uuid="e15d26de-6873-4576-b49b-8dc546b39dbe"/> + <textElement textAlignment="Center"> + <font size="12"/> + </textElement> + <textFieldExpression><![CDATA[$P{TITULO}]]></textFieldExpression> + </textField> + </band> + - + - + - + @@ -67,13 +88,6 @@ - - - - - - - @@ -89,10 +103,10 @@ - + - + @@ -113,6 +127,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -156,49 +210,49 @@ - + - + - + - + - + - + - + @@ -208,8 +262,8 @@ - - + + @@ -222,8 +276,8 @@ - - + + @@ -236,41 +290,34 @@ - - + + - - + + - - + + - + - - - - - - - @@ -292,15 +339,61 @@ + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.jasper new file mode 100644 index 000000000..6aee91637 Binary files /dev/null and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.jasper differ diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.jrxml new file mode 100644 index 000000000..8ca9c8bcd --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.jrxml @@ -0,0 +1,424 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band height="22"> + <textField> + <reportElement x="231" y="0" width="231" height="20" uuid="652312bd-292a-424d-a234-5f157e3699c6"/> + <textElement textAlignment="Center"> + <font size="12"/> + </textElement> + <textFieldExpression><![CDATA[$P{TITULO}]]></textFieldExpression> + </textField> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioDocumentosFiscaisController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioDocumentosFiscaisController.java index e6d948eed..2dc7e9ab8 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioDocumentosFiscaisController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioDocumentosFiscaisController.java @@ -26,6 +26,7 @@ import com.rjconsultores.ventaboletos.entidad.Aidf; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Estado; import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioDocumentosFiscais; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioDocumentosFiscaisAgrupadoPorLocalidade; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.service.AidfService; import com.rjconsultores.ventaboletos.service.EmpresaService; @@ -33,8 +34,6 @@ import com.rjconsultores.ventaboletos.service.EstadoService; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEstandar; import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; -import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; -import com.rjconsultores.ventaboletos.web.utilerias.render.RenderEstadoUf; @Controller("relatorioDocumentosFiscaisController") @Scope("prototype") @@ -62,6 +61,7 @@ public class RelatorioDocumentosFiscaisController extends MyGenericForwardCompos private List aidfList; private Checkbox ckbSomenteCancelado; private Radiogroup rdgInterestadualMunicial; + private Radiogroup rdTipoAgrupamento; @Autowired private AidfService aidfService; private List lsAidf; @@ -92,19 +92,28 @@ public class RelatorioDocumentosFiscaisController extends MyGenericForwardCompos Radio radio = rdgInterestadualMunicial.getSelectedItem(); String tipoLinha; - if (radio.getValue().equals("1")) { + if (radio.getValue().equals("0")) { tipoLinha = "INTERMUNICIPAL"; - } - if (radio.getValue().equals("2")) { + } else if (radio.getValue().equals("1")) { tipoLinha = "INTERESTADUAL"; } else { tipoLinha = "TODOS"; } + Radio rdEspecie = rdgInterestadualMunicial.getSelectedItem(); + String especie; + if (rdEspecie.getValue().equals("0")) { + especie = "Bilhetes BPR"; + } else { + especie = "Excesso de Bagagem(EB)"; + } parametros.put("AIDF", aidf); parametros.put("ESTADO_ID", estado.getEstadoId()); + parametros.put("ESTADO", estado.getNombestado()); parametros.put("TIPO_LINHA", tipoLinha); parametros.put("SOMENTE_CANCELADO", somenteCancelado); + parametros.put("ESPECIE", especie); + if (empresa != null) { parametros.put("EMPRESA", empresa.getNombempresa()); parametros.put("EMPRESA_ID", empresa.getEmpresaId()); @@ -112,9 +121,12 @@ public class RelatorioDocumentosFiscaisController extends MyGenericForwardCompos parametros.put("EMPRESA", "TODOS"); } parametros.put("TITULO", Labels.getLabel("relatorioDocumentosFiscaisController.window.title")); - - relatorio = new RelatorioDocumentosFiscais(parametros, dataSourceRead.getConnection()); - + Radio radioAgrupamento = rdTipoAgrupamento.getSelectedItem(); + if (radioAgrupamento.getValue().equals("0")) { + relatorio = new RelatorioDocumentosFiscais(parametros, dataSourceRead.getConnection()); + } else { + relatorio = new RelatorioDocumentosFiscaisAgrupadoPorLocalidade(parametros, dataSourceRead.getConnection()); + } Map args = new HashMap(); args.put("relatorio", relatorio); diff --git a/web/gui/relatorios/filtroRelatorioDocumentosFiscais.zul b/web/gui/relatorios/filtroRelatorioDocumentosFiscais.zul index 08cca643a..3c9231851 100644 --- a/web/gui/relatorios/filtroRelatorioDocumentosFiscais.zul +++ b/web/gui/relatorios/filtroRelatorioDocumentosFiscais.zul @@ -40,9 +40,9 @@ value="${c:l('relatorioDocumentosFiscaisController.lbAgruparPor.label')}" /> - - @@ -52,9 +52,9 @@ value="${c:l('relatorioDocumentosFiscaisController.lbTrazerDados.label')}" /> - -