From 62b4a88a04b502a7b7f183866224fc43915dbdb3 Mon Sep 17 00:00:00 2001 From: julio Date: Thu, 29 Nov 2018 21:32:06 +0000 Subject: [PATCH] fixes bug#12811 dev:julio qua: git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@87536 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioDocumentosFiscais.java | 29 ++- ...ocumentosFiscaisAgrupadoPorLocalidade.java | 198 ++++++++++++++---- ...FiscaisAgrupadoPorLocalidade_es.properties | 23 +- ...FiscaisAgrupadoPorLocalidade_pt.properties | 13 +- .../RelatorioDocumentosFiscais.jasper | Bin 46706 -> 46616 bytes .../RelatorioDocumentosFiscais.jrxml | 85 ++++---- ...umentosFiscaisAgrupadoPorLocalidade.jasper | Bin 48158 -> 48242 bytes ...cumentosFiscaisAgrupadoPorLocalidade.jrxml | 108 +++++----- .../RelatorioDocumentosFiscaisController.java | 14 +- .../filtroRelatorioDocumentosFiscais.zul | 2 +- 10 files changed, 294 insertions(+), 178 deletions(-) diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscais.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscais.java index 47bf5c6cb..63c8ebe3d 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscais.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscais.java @@ -156,7 +156,7 @@ public class RelatorioDocumentosFiscais extends Relatorio { sql.append("FROM "); sql.append(" (SELECT DISTINCT "); sql.append(" c.caja_id, "); - sql.append(" a.ACFISCAL AS numAidf, "); + sql.append(" a.docfiscal AS numAidf, "); sql.append(" to_number(c.numfoliopreimpreso) as folio, "); sql.append(" a.serie AS serie, "); sql.append(" a.subserie AS subserie, "); @@ -174,7 +174,7 @@ public class RelatorioDocumentosFiscais extends Relatorio { sql.append(" eai.NOMBESTADO AS nomeEstado, "); sql.append(" coalesce(pos.DESCPARADA, po.DESCPARADA) AS origem, "); sql.append(" coalesce(pds.DESCPARADA, 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((coalesce(eai.cveestado, eos.cveestado, eo.cveestado)) = (coalesce(eds.cveestado, ed.cveestado))) THEN 0 ELSE 1 END AS isInterEstadual, "); sql.append(" COALESCE((IMPORTETAXAEMBARQUE + IMPORTEPEDAGIO + IMPORTESEGURO),0) AS vlrisento "); sql.append(" FROM caja c "); sql.append(" INNER JOIN aidf a ON a.aidf_id = c.aidf_id "); @@ -196,13 +196,13 @@ 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(" and ei.estado_id = a.estado_id and ei.activo = 1 "); + sql.append(" and ei.estado_id = eai.estado_id and ei.activo = 1 "); sql.append(" WHERE c.feccreacion between :DATA_INICIAL and :DATA_FINAL "); sql.append(" AND e.empresa_id = " + empresaId + " "); sql.append(" AND a.aidfesp_id = 1 "); - sql.append(somenteCancelado == true ? " AND c.INDCANCELACION = 1 " : " "); - sql.append(aidf != null ? " AND a.AIDF_ID = " + aidf.getAidfId() + " " : " "); - sql.append(estadoId != null ? " AND a.ESTADO_ID IN (" + estadoId + ") " : " "); + sql.append(somenteCancelado == true ? " AND c.indcancelacion = 1 " : " "); + sql.append(aidf != null ? " AND a.aidf_id = " + aidf.getAidfId() + " " : " "); + sql.append(estadoId != null && !isEstadoTodos(estadoId) ? " AND eai.estado_id IN (" + estadoId + ") " : " "); sql.append(" ORDER BY a.ACFISCAL, to_number(c.numfoliopreimpreso) "); sql.append(" ) tabela "); sql.append(tipoLinha.equals(" INTERMUNICIPAL") ? " where tabela.isInterEstadual = 1 " : tipoLinha.equals("INTERESTADUAL") ? " where tabela.isInterEstadual = 0 " : " "); @@ -229,12 +229,12 @@ public class RelatorioDocumentosFiscais extends Relatorio { 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(" coalesce(sum(tabela.qntancelados),0) AS valorCancelado, "); sql.append(" sum(tabela.outras) AS outras, "); sql.append(" sum(tabela.vlrisento) AS isentas "); sql.append("FROM "); sql.append(" (SELECT DISTINCT "); - sql.append(" aidf.DOCFISCAL, "); + sql.append(" a.docfiscal, "); sql.append(" aidf.forminicial, "); sql.append(" aidf.formfinal, "); sql.append(" coalesce(cdv.NUMSERIEPREIMPRESA, 'X') AS numAidf, "); @@ -244,6 +244,7 @@ public class RelatorioDocumentosFiscais extends Relatorio { sql.append(" case when cdv.precio < 0 then 31 else null end AS motivoCancelacion, "); sql.append(" cdv.precio AS tarifa, "); sql.append(" cdv.precio as valor, "); + sql.append(" CASE WHEN cdv.precio < 0 THEN 1 ELSE 0 END AS qntancelados, "); sql.append(" ed.tributacaoimportacao AS valorAliquiotaICMS, "); sql.append(" CASE WHEN cdv.precio >= 0 THEN cdv.precio ELSE 0 END AS valorContabil, "); sql.append(" CASE WHEN cdv.precio < 0 THEN cdv.precio ELSE 0 END AS valorCancelado, "); @@ -260,17 +261,17 @@ public class RelatorioDocumentosFiscais extends Relatorio { sql.append("from evento_extra ee "); sql.append(" join caja_diversos cdv on cdv.eventoextra_id = ee.eventoextra_id "); sql.append(" join aidf aidf on aidf.serie = cdv.numseriepreimpresa and cdv.numfoliopreimpreso between aidf.forminicial and aidf.formfinal "); - sql.append(" LEFT JOIN estado eai ON aidf.estado_id = eai.estado_id "); + sql.append(" left join estado eai ON aidf.estado_id = eai.estado_id "); sql.append(" join punto_venta pv on pv.puntoventa_id = cdv.puntoventa_id "); sql.append(" join parada pp on pp.parada_id = pv.parada_id "); sql.append(" join ciudad cc on cc.ciudad_id = pp.ciudad_id "); sql.append(" join estado es on es.estado_id = cc.estado_id "); - sql.append(" join empresa_imposto ed ON ed.empresa_id = ee.empresa_id and es.estado_id = ed.estado_id and ed.activo = 1 "); + sql.append(" join empresa_imposto ed ON ed.empresa_id = ee.empresa_id and ed.estado_id = coalesce(aidf.estado_id, es.estado_id) and ed.activo = 1 "); sql.append("where ee.tipoeventoextra_id in (1,81,82) "); sql.append(" and ee.fechoringreso between :DATA_INICIAL and :DATA_FINAL "); sql.append(" and aidf.aidfesp_id = 2 "); sql.append(" and ee.empresa_id = " + empresaId + " "); - sql.append(" and eai.estado_id IN (" + estadoId + ") "); + sql.append(estadoId != null && !isEstadoTodos(estadoId) ? " and eai.estado_id IN (" + estadoId + ") " : ""); sql.append(aidf != null ? " and aidf.aidf_id = " + aidf.getAidfId() + " " : " "); // sql.append(somenteCancelado == true ? " AND c.INDCANCELACION = 1" : " "); sql.append(" )tabela "); @@ -288,4 +289,10 @@ public class RelatorioDocumentosFiscais extends Relatorio { return sql.toString(); } + private boolean isEstadoTodos(Integer estadoId) { + if (estadoId == -1 || estadoId == null) + return true; + else + return false; + } } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.java index b4b1c6b80..4047fd52a 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.java @@ -42,8 +42,15 @@ public class RelatorioDocumentosFiscaisAgrupadoPorLocalidade extends Relatorio { String tipoLinha = (String) parametros.get("TIPO_LINHA"); Aidf aidf = (Aidf) parametros.get("AIDF"); Boolean somenteCancelado = (Boolean) parametros.get("SOMENTE_CANCELADO"); + String especie = (String) parametros.get("ESPECIE"); + Integer estadoId = (Integer) parametros.get("ESTADO_ID"); - String sql = getSql(empresaId, agencia, somenteCancelado, tipoLinha, aidf); + String sql = null; + if (especie.equals("Bilhetes BPR")) { + sql = getSqlBPR(empresaId, agencia, somenteCancelado, tipoLinha, aidf, estadoId); + } else { + sql = getSqlExcessoBagagem(empresaId, agencia, somenteCancelado, tipoLinha, aidf, estadoId); + } NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); @@ -67,8 +74,13 @@ public class RelatorioDocumentosFiscaisAgrupadoPorLocalidade extends Relatorio { 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")); + + BigDecimal formInicial = (BigDecimal) rset.getObject("formInicial"); + bean.setFormInicial(formInicial.toString()); + + BigDecimal formFinal = (BigDecimal) rset.getObject("formFinal"); + bean.setFormFinal(formFinal.toString()); + bean.setSerie((String) rset.getObject("serie")); bean.setSubSerie((String) rset.getObject("subSerie")); bean.setValorContabil((BigDecimal) rset.getObject("valorContabil")); @@ -78,10 +90,13 @@ public class RelatorioDocumentosFiscaisAgrupadoPorLocalidade extends Relatorio { 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 (especie.equals("Bilhetes BPR")) { + bean.setNomeOrigem((String) rset.getObject("nomeOrigem")); + bean.setNomeDestino((String) rset.getObject("nomeDestino")); + } + lsDadosRelatorio.add(bean); } if (lsDadosRelatorio.size() > 0) { @@ -123,43 +138,51 @@ public class RelatorioDocumentosFiscaisAgrupadoPorLocalidade extends Relatorio { this.lsDadosRelatorio = lsDadosRelatorio; } - private String getSql(Integer empresaId, String agencia, Boolean somenteCancelado, String tipoLinha, Aidf aidf) { + private String getSqlBPR(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(" TABELA.nomeEstado AS nomeEstado, "); - sql.append(" TABELA.origem AS nomeOrigem, "); - sql.append(" TABELA.destino AS nomeDestino, "); + sql.append(" min(tabela.folio) AS formInicial, "); + sql.append(" max(tabela.folio) 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(" tabela.valorAliquiotaICMS AS valorAliquiotaICMS, "); + sql.append(" SUM(tabela.valorICMS) AS valorICMS, "); + sql.append(" sum(tabela.qntancelados) AS valorCancelado, "); + sql.append(" SUM(tabela.outras) AS outras, "); + sql.append(" sum(tabela.vlrisento) AS isentas "); 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(" (SELECT DISTINCT "); + sql.append(" c.caja_id, "); + sql.append(" a.docfiscal AS numAidf, "); + sql.append(" to_number(c.numfoliopreimpreso) as folio, "); + 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(" ei.tributacaoimportacao AS valorAliquiotaICMS, "); + sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NOT NULL THEN 1 ELSE 0 END AS qntancelados, "); 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(" (coalesce(ei.PORCREDBASEICMS, 0) / 100.0) AS redBaseCalcIcms, "); + sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN c.PRECIOPAGADO - (c.PRECIOPAGADO * (coalesce(ei.PORCREDBASEICMS, 0) / 100.0) ) ELSE 0 END AS valorBaseCalculo, "); + sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN ((c.PRECIOPAGADO - (c.PRECIOPAGADO * (coalesce(ei.PORCREDBASEICMS, 0) / 100.0) )) * ei.TRIBUTACAOIMPORTACAO) / 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, 0) / 100.0) )) ELSE 0 END AS outras, "); + sql.append(" eai.estado_id AS estadoId, "); + sql.append(" eai.NOMBESTADO AS nomeEstado, "); + sql.append(" coalesce(pos.DESCPARADA, po.DESCPARADA) AS origem, "); + sql.append(" coalesce(pds.DESCPARADA, pd.DESCPARADA) AS destino, "); + sql.append(" CASE WHEN((coalesce(eai.cveestado, eos.cveestado, eo.cveestado)) = (coalesce(eds.cveestado, ed.cveestado))) THEN 0 ELSE 1 END AS isInterEstadual, "); + sql.append(" COALESCE((IMPORTETAXAEMBARQUE + IMPORTEPEDAGIO + IMPORTESEGURO),0) AS vlrisento "); sql.append(" FROM caja c "); sql.append(" INNER JOIN aidf a ON a.aidf_id = c.aidf_id "); + sql.append(" LEFT JOIN estado eai ON a.estado_id = eai.estado_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 "); @@ -168,11 +191,8 @@ public class RelatorioDocumentosFiscaisAgrupadoPorLocalidade extends Relatorio { 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 alias_servico s ON s.origen_id = c.origen_id AND s.destino_id = c.destino_id "); + sql.append(" AND (s.corrida_id = c.corrida_id OR s.corrida_id IS NULL) AND s.ruta_id = c.ruta_id AND s.activo = 1 "); 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 "); @@ -180,19 +200,105 @@ public class RelatorioDocumentosFiscaisAgrupadoPorLocalidade 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(" and ei.estado_id = eai.estado_id and ei.activo = 1 "); 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(aidf != null ? " AND a.AIDF_ID = " + aidf.getAidfId() + " " : " "); - sql.append(")TABELA "); + sql.append(" AND e.empresa_id = " + empresaId + " "); + sql.append(" AND a.aidfesp_id = 1 "); + sql.append(somenteCancelado == true ? " AND c.indcancelacion = 1" : " "); + sql.append(aidf != null ? " AND a.aidf_id = " + aidf.getAidfId() + " " : " "); + sql.append(estadoId != null && !isEstadoTodos(estadoId) ? " and eai.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,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"); + sql.append("GROUP BY tabela.numAidf, "); + sql.append(" tabela.serie, "); + sql.append(" tabela.subserie, "); + sql.append(" tabela.nomeestado, "); + sql.append(" tabela.origem, "); + sql.append(" tabela.destino, "); + sql.append(" tabela.valoraliquiotaicms "); + sql.append("ORDER BY tabela.nomeEstado, tabela.numAidf, tabela.origem, tabela.destino "); return sql.toString(); } + private String getSqlExcessoBagagem(Integer empresaId, String agencia, Boolean somenteCancelado, String tipoLinha, Aidf aidf, Integer estadoId) { + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT tabela.docfiscal AS numAidf, "); + sql.append(" to_number(tabela.forminicial) AS formInicial, "); + sql.append(" to_number(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(valorBaseCalculo) AS valorBaseCalculo, "); + sql.append(" tabela.valorAliquiotaICMS AS valorAliquiotaICMS, "); + sql.append(" sum(tabela.valorICMS) AS valorICMS, "); + sql.append(" coalesce(sum(tabela.qntancelados),0) AS valorCancelado, "); + sql.append(" sum(tabela.outras) AS outras, "); + sql.append(" sum(tabela.vlrisento) AS isentas "); + sql.append("FROM "); + sql.append(" (SELECT DISTINCT "); + sql.append(" aidf.docfiscal, "); + sql.append(" aidf.forminicial, "); + sql.append(" aidf.formfinal, "); + sql.append(" coalesce(cdv.NUMSERIEPREIMPRESA, 'X') AS numAidf, "); + sql.append(" aidf.serie AS serie, "); + sql.append(" aidf.subserie AS subserie, "); + sql.append(" coalesce(cdv.NUMFOLIOPREIMPRESO, '0') AS folio, "); + sql.append(" case when cdv.precio < 0 then 31 else null end AS motivoCancelacion, "); + sql.append(" cdv.precio AS tarifa, "); + sql.append(" cdv.precio as valor, "); + sql.append(" CASE WHEN cdv.precio < 0 THEN 1 ELSE 0 END AS qntancelados, "); + sql.append(" ed.tributacaoimportacao AS valorAliquiotaICMS, "); + sql.append(" CASE WHEN cdv.precio >= 0 THEN cdv.precio ELSE 0 END AS valorContabil, "); + sql.append(" CASE WHEN cdv.precio < 0 THEN cdv.precio ELSE 0 END AS valorCancelado, "); + sql.append(" COALESCE(ed.PORCREDBASEICMS / 100,0) AS redBaseCalcIcms, "); + sql.append(" CASE WHEN cdv.precio >= 0 THEN cdv.precio - (cdv.precio * COALESCE(ed.PORCREDBASEICMS / 100,0)) ELSE 0 END AS valorBaseCalculo, "); + sql.append(" CASE WHEN cdv.precio >= 0 THEN ((cdv.precio * ((ed.TRIBUTACAOIMPORTACAO - (COALESCE(ed.PORCREDBASEICMS * ed.TRIBUTACAOIMPORTACAO /100,0))))) / 100) ELSE 0 END AS valorICMS, "); + sql.append(" CASE WHEN cdv.precio >= 0 THEN cdv.precio - (cdv.precio - (cdv.precio * COALESCE(ed.PORCREDBASEICMS / 100,0))) ELSE 0 END AS outras, "); + sql.append(" eai.estado_id AS estadoId, "); + sql.append(" eai.NOMBESTADO AS nomeEstado, "); + sql.append(" '' AS origem, "); + sql.append(" '' AS destino, "); + sql.append(" 0 AS isInterEstadual, "); + sql.append(" 0 AS vlrisento "); + sql.append("from evento_extra ee "); + sql.append(" join caja_diversos cdv on cdv.eventoextra_id = ee.eventoextra_id "); + sql.append(" join aidf aidf on aidf.serie = cdv.numseriepreimpresa and cdv.numfoliopreimpreso between aidf.forminicial and aidf.formfinal "); + sql.append(" left join estado eai ON aidf.estado_id = eai.estado_id "); + sql.append(" join punto_venta pv on pv.puntoventa_id = cdv.puntoventa_id "); + sql.append(" join parada pp on pp.parada_id = pv.parada_id "); + sql.append(" join ciudad cc on cc.ciudad_id = pp.ciudad_id "); + sql.append(" join estado es on es.estado_id = cc.estado_id "); + sql.append(" join empresa_imposto ed ON ed.empresa_id = ee.empresa_id and ed.estado_id = coalesce(aidf.estado_id, es.estado_id) and ed.activo = 1 "); + sql.append("where ee.tipoeventoextra_id in (1,81,82) "); + sql.append(" and ee.fechoringreso between :DATA_INICIAL and :DATA_FINAL "); + sql.append(" and aidf.aidfesp_id = 2 "); + sql.append(" and ee.empresa_id = " + empresaId + " "); + sql.append(estadoId != null && !isEstadoTodos(estadoId) ? " and eai.estado_id IN (" + estadoId + ") " : ""); + sql.append(aidf != null ? " and aidf.aidf_id = " + aidf.getAidfId() + " " : " "); + // sql.append(somenteCancelado == true ? " AND c.INDCANCELACION = 1" : " "); + 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.serie, "); + sql.append(" tabela.subSerie, "); + sql.append(" tabela.nomeEstado, "); + sql.append(" tabela.valorAliquiotaICMS, "); + sql.append(" tabela.docfiscal, "); + sql.append(" tabela.forminicial, "); + sql.append(" tabela.formfinal "); + sql.append("ORDER BY tabela.nomeEstado, tabela.numAidf "); + + return sql.toString(); + } + + private boolean isEstadoTodos(Integer estadoId) { + if (estadoId == -1 || estadoId == null) + return true; + else + return false; + } + } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscaisAgrupadoPorLocalidade_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscaisAgrupadoPorLocalidade_es.properties index 779d3ef82..8a6619c49 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscaisAgrupadoPorLocalidade_es.properties +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscaisAgrupadoPorLocalidade_es.properties @@ -3,26 +3,27 @@ msg.noData=N #Labels cabeçalho cabecalho.nome=Relatório Documentos Fiscais -cabecalho.relatorio=Relatório +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.especie=Espécie: label.empresa=Empresa: -label.formInicial=Nº Inicial -label.formFinal=Nº Final +label.formInicial=Inicial +label.formFinal=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.valorBaseCalculo=Base Cálc. +label.valorAliquiotaICMS=ICMS label.valorICMS=Valor ICMS label.isentas=Isentas label.outras=Outras -label.valorCancelado=Qtd. Cancec +label.valorCancelado=Cant label.origem=Origem label.destino=Destino -label.estado=Estado -header.data=Período -header.a=a -header.tipoLinha=Tipo Linha +label.estado=Estado: +label.totais=Totais: \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscaisAgrupadoPorLocalidade_pt.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscaisAgrupadoPorLocalidade_pt.properties index 8e11cf111..8a6619c49 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscaisAgrupadoPorLocalidade_pt.properties +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDocumentosFiscaisAgrupadoPorLocalidade_pt.properties @@ -11,20 +11,19 @@ label.periodo=Per label.UF=UF label.especie=Espécie: label.empresa=Empresa: -label.formInicial=Nº Inicial -label.formFinal=Nº Final +label.formInicial=Inicial +label.formFinal=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.valorBaseCalculo=Base Cálc. +label.valorAliquiotaICMS=ICMS label.valorICMS=Valor ICMS label.isentas=Isentas label.outras=Outras -label.valorCancelado=Qtd. Cancec +label.valorCancelado=Cant label.origem=Origem label.destino=Destino label.estado=Estado: -label.totais=Totais: - +label.totais=Totais: \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscais.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscais.jasper index 79e6f61756b686d8a3f2da2c3ad8778625272f45..b96b86552796b17c75e8f265299654d78c00fc86 100644 GIT binary patch delta 5310 zcmZ{ne@t7~702H-#6VnHf*}O+D>!K&8v%^@nFN9Bn8aZ4Pso-5jxi23u`$>tNdp5y zlVzDERqM^Bt?JrMU0ZdUrevPhX;Pce?uWEC&Hm`7b=nUl|D~f_)2W)ebU*Gn_dfh= zza`S)oclfRe!lnE&wl=BQ}fMD&9&Pm`c|MQZ~Oc_{e!7d*SH|95Da^1eTTk|*YgRs zEIlqsZ~Erhzpb7|dZ$INI=fQDfJX}ngUaRF%}1)7{P+JJ&~ zyTgp9+t-hGKA_c0PGU_D-)p+>jEY3H8gW)Q2c&)k7{I`uA^xjcx3n+eJU@&%O^fK*VqZsk~O9asjC#1*)7f>J0_e_*f%*uM9ml zTg*OF7(wy_hJUWyh7`jsB=TB?$OR;d6o_)lh_}+j)U(#_=kL5XpOkc`V)3YbE*uO8 zA_+ik((z-}Wgr!SG!ULs3MC+HON8R#P`X& zror9h9zATYWH^@BKw~L3S|Z_v#c(Vcuv>?{0>L`CA?(N$cEF|D*kUpsNTk~t7o_%z9rNHWcvQMoOGD^uh2Bwpu(=%Q~7y>R9d=sbTpni)Q-ekvc_p zEq!~WgsuJwJ06T2>M;|7SdY!+^!WS^r`6)HA(n7RN!pMj77Ro}vZt66JW=Ofw%<>k zK>VGvmgOHije^)rO$F7o#jU0Nu2Q2Q=>^H^uz0b1O$PCi{-ATPh} zYGV8T)m6_J#qJ)KA9VvS^&_P{`&@jS}%n;t`@nMg3Y?MEy=3qy}s95R`yjEt(* zXZMXdoU*d%t==h=0^6|5WAj=R65D>kt7qG1w0T`Nt6hFgK-wbv>@KI@VIMh`wMmf= z{F(;qH0-_O@PT1g6lnz6K%cr|*qW|r`=bv=$_g!SqrW*{q20QfaHomUy7acsjT*7o zO*T_^N1r3BZ?I9!2WCRYLV@W}oPEYl> zlkvq6=r@y6UVCdBq`y!sZzLts3X4A%i{}z?sc9~hY)+g?{rC8Ke)SMeQ}doAo&B36 z5eb_Ag3oW7yY$=RF5^9RrOR^E210i83M~GaJ~Ck=cj@TFh~a&;E?E1RzBbXznjTCz z3?KdfrobdLJwNGugkiN-r(<+@1iR_KCnwpX-?+b@RMNnVfxhbR)73C34?`6tC-quh z)B35c^t(ZQ8(+m^N-@O)Ex)n`9&h1Qlj4xUj#acidVs!o@;*6$sOtfT4knw2p#@RA zMwCba#ZwiO5OPp0i2A|Q34y8)))Eu#5AN0V0T4qk0(p%=A4IN5P`f#phyA8Qx%{Pa)5&jSVxyas{&YlNcUnQ7I{0Sv<|!g!4^kphgTDlj4Bz-AHl#N%;sI&HYNz=Uri z2X)7dx@Ev(IFDFfBUYq<<*5o*2szmEi2XD?Bd{y8jpPb_dA38;|C}}8)7n0GE788w z+sRh}PbW?XS+;R{q0GbX^)5-04ER`80ygo@o;n%nBW1^#dPPmW6?GAEAXOV%Vt;6D z%#ix=d;n6oC0pY)8iL4FBEC&-pou|J_KLtYDR8O#Niz`-mG3X?eyCre;eOFG@_xDp zU=YJ6I7eRN97PIqGsSm7VTh_2;;M=vrI2BW3us96)K2$-k`3tD=Vk23iLl?h5R`6qC<05=rZmc(st%F+(YbtKJs^V5DWVq!5x)nV+ zZr5;puU`7F>H~*VIvrrY$wEnMEIJ>KgpRO^IU*m>H@@^J`4uIX_4x3sfpq`FpZ@wk zKYN{hgEW(uh}1&6FV~itJK8!;-Q6ALR=?TY)7ow>kO*~O-Isdm^0%5R%l)Q~_MDca M)P_Ha#(%Q&fBRpIUH||9 delta 5748 zcmZ{odrVu`9mnrA1_BNQYQn=fJYpy$OTZZOY#2CT5(gVUFv+qIi~$Esj19)*)r3b$ zX|=A>l3yzApS41JNt?EIV#>4^BWasIrfylLsp_<@Q>6WoEi_A~PMf-F+Bv^-FFrTE z;g6qw=YD_Zd_U*sbFVM{`j+OOTbj4-Ho!@f4*t|otE-t67DNnHaIINi&c-uyMU`KB@R`F&6dh<03 zZ>ffQ+hy;yCbzutv%K+fYK*~;#%!!&%mg&%YZS&(4K?=5#&px2EwAyOLaLz@S9ywmKlfeU^EK*;0nn3; zRXmx1o_vkMQ>vk!zPU}X9D{3H41;JhWf8@ z{?|Ki@RmQKmKfedOEy-qWCB|9H400qhFZSKS;G0Qeel>~f?sy^@!p%%8^Z>Av$2Xd z6VRKlQFu!=)O&;XerT)Jl7lt_KWHxn%V9;oe@g){yoUg6tOCFU1mJ5F08$MFc#i{E z4|RV}D?Wg{qXptaSUzejctB2l)|ps*x;GpRM(_qfA&&~_bD?-Rl)R{?7kA9fj}9oW z7t`xG=Yo+~ygL?61V_X2O1B&prBuvA@o;c1)E$hB%|~L=qC_V+U5-+MLvn_LwT^Dr zK(Z*GE|L+OPsD?B$*U#wYA*8)M#n;t;5fJNZmMQSW78q~Tq3EET_+WHJUkJaPVTUf z&e731J)yZoI4Uo<-Kw$J_>*(kYD7qx@(f)qGdvd}J&~~2EBn4ClFfeX-3xzk>N6~& zNFF>ea;+#6KWZZBTqU9fs$HhchvcXv1TzHt_CUl{Vr0ca&N177$L>jtzFHc)@ zS;@5bU1em6f4Ry#q~bhQ6>!NXOXR=0`dL+&b)FT3}U{0(;* z$v514Nq*nmPI9BCg5({ZN|FaWH6(w@bAaSO_EbvyKL`z(M);41EDm{Ix=Nk5g5+** zv6*!!7q>B=2uJFi;kksg2kfkn(d%&f?LN6nwC_Ll>dExqcRJL)6t~zZbHx|;`1R|^{a%C z*3f35={wxz&4eJD>BYC#Z=SfJH6BA$%?E;T{*fSv0+l|(S5D1+I5Xtg`+!XL*pAq# z@MQ4gf(r^v-Fg;ghEq?H{H^lf&);Vw=(Jb`HAw zS@l9(IE2U8ydxd9hFi&NX7*JR?3~B~Z=gUdhI?Il=$guer9h|7NamzrFu=W_K7)kpmR|K3=TwKV?HIOHbw}RszC690zwi}Acn9HzdLi1gXozk%Qep|5PM;m+&)fwFD#9lbkmdvLl}A3 z7_=v zyc?d_2B{ZchMB3R?Qte-P8qWCt~w`gi4a(_-8BFEp$EUM< zv}v!hJ88Woo-UW2m^&sGL?wU&Y5;c=C1P4a5a5Ti6_9gI$L+K6Tyjy}=ad`6XV`r< z#_qFJrTe^~=)NSRbpNyM#_c{E>SqU%zNfr`x9Iud-Teq$C&&Y%v81Qz;2PuC>xrnSWeME2xmL z$)q1llONYw10KhvOHJ&*<^07GsHo3`_b=%QCOHzIeSVK7?Nt~yeW6;rpYma-RpDbQ zc8aB}M#0AmicU$Bu~W6&e-^Og@(|as#mkC@(Vtng7@Adpn2HT!sR|G;D1am(rD4t3 zu<0unxnUKsd4)DhzEd7uQ6TnGL<~JDh)hL9mZ~7~f&x(zQV@F(@xukHjM&KG1r`-} zeu{^Iy~-*NKT{Epr7C#5pum%a6g(f|xt63KXz~{;;Ki0_G}>eff4`()9HopHMpRnJ zRAgkS3L`Hl7$qTvaReDRm)qqQ(ob0n4b6y|RByMK+eIu^eY&Ua^}R=f=VSUDvwZlBK3Rp~oV z2(V|)3f%yPWtHYK6*s_Al@0KMVgr(pvVmo6?x`0ai(BAaEy>z)3Wd|baI^ - + @@ -113,11 +113,11 @@ - + - + @@ -149,7 +149,7 @@ - + @@ -262,87 +262,87 @@ - + - - + + - + - - + + - + - - + + - - + + - + - - + + - + - - + + - - + + - + - - + + - - + + - + - - + + - - + + - + @@ -356,9 +356,8 @@ - + - @@ -368,27 +367,23 @@ - + - - + - - + - - + - - + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.jasper index 6aee916375a368b4fa3965fa492bcaa814c7d2e5..f262b630a6496dd95309545e77133ecd8f738b05 100644 GIT binary patch literal 48242 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 literal 48158 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 NkHu^)dUrwB{{vbjWo!Td diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.jrxml index 8ca9c8bcd..2df2c6e3a 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDocumentosFiscaisAgrupadoPorLocalidade.jrxml @@ -1,7 +1,7 @@ - + @@ -58,7 +58,7 @@ - + @@ -164,113 +164,113 @@ - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - + + + + + + + + + + + - - + + @@ -278,13 +278,13 @@ - + - + @@ -292,34 +292,34 @@ - + - + - + - + - + @@ -333,7 +333,7 @@ - + @@ -341,30 +341,30 @@ - + - + - - - + + + - + - + - + - + @@ -372,7 +372,7 @@ - + @@ -383,32 +383,32 @@ - + - + - + - + - + - - - + + + 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 3a8ff0e86..82c2122a4 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 @@ -1,12 +1,14 @@ package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios; import java.sql.Timestamp; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.sql.DataSource; +import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; @@ -71,7 +73,13 @@ public class RelatorioDocumentosFiscaisController extends MyGenericForwardCompos public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); lsEmpresa = empresaService.obtenerTodos(); - lsEstado = estadoService.obtenerTodos(); + + lsEstado = new ArrayList(); + Estado estadoTodos = new Estado(-1); + estadoTodos.setNombestado("TODOS"); + lsEstado.add(estadoTodos); + + lsEstado.addAll(estadoService.obtenerTodos()); } @SuppressWarnings({ "rawtypes", "unchecked" }) @@ -95,12 +103,12 @@ public class RelatorioDocumentosFiscaisController extends MyGenericForwardCompos Boolean somenteCancelado = ckbSomenteCancelado.isChecked(); Radio radio = rdgInterestadualMunicial.getSelectedItem(); - String tipoLinha; + String tipoLinha = StringUtils.EMPTY; if (radio.getValue().equals("0")) { tipoLinha = "INTERMUNICIPAL"; } else if (radio.getValue().equals("1")) { tipoLinha = "INTERESTADUAL"; - } else { + } else if (radio.getValue().equals("2")) { tipoLinha = "TODOS"; } diff --git a/web/gui/relatorios/filtroRelatorioDocumentosFiscais.zul b/web/gui/relatorios/filtroRelatorioDocumentosFiscais.zul index 441aaa8ab..401a4733c 100644 --- a/web/gui/relatorios/filtroRelatorioDocumentosFiscais.zul +++ b/web/gui/relatorios/filtroRelatorioDocumentosFiscais.zul @@ -57,7 +57,7 @@