From f86fdd9f81df93592990220604cd518930373092 Mon Sep 17 00:00:00 2001 From: julio Date: Wed, 3 Oct 2018 14:45:47 +0000 Subject: [PATCH] bug#11600 dev: julio qua: git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@85857 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioDocumentosFiscais.java | 136 ++++++++++++++---- .../RelatorioDocumentosFiscaisController.java | 13 +- 2 files changed, 112 insertions(+), 37 deletions(-) diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscais.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscais.java index d54d13618..b93572c4c 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscais.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDocumentosFiscais.java @@ -13,7 +13,6 @@ 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.utilerias.DateUtil; import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; @@ -43,8 +42,14 @@ public class RelatorioDocumentosFiscais 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"); - String sql = getSql(empresaId, agencia, somenteCancelado, tipoLinha, aidf, estadoId); + 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); @@ -71,7 +76,9 @@ public class RelatorioDocumentosFiscais extends Relatorio { bean.setFormInicial((String) rset.getObject("formInicial")); bean.setFormFinal((String) rset.getObject("formFinal")); bean.setSerie((String) rset.getObject("serie")); - bean.setSubSerie((String) rset.getObject("subSerie")); + // datamov + // bean.setSubSerie((String) rset.getObject("subSerie")); + bean.setValorContabil((BigDecimal) rset.getObject("valorContabil")); bean.setValorBaseCalculo((BigDecimal) rset.getObject("valorBaseCalculo")); bean.setValorAliquiotaICMS((BigDecimal) rset.getObject("valorAliquiotaICMS")); @@ -125,38 +132,42 @@ public class RelatorioDocumentosFiscais extends Relatorio { this.lsDadosRelatorio = lsDadosRelatorio; } - private String getSql(Integer empresaId, String agencia, Boolean somenteCancelado, String tipoLinha, Aidf aidf, Integer estadoId) { + 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("SELECT "); + // sql.append(" tabela.datamov, "); + sql.append(" coalesce(tabela.numAidf, '') AS numAidf, "); + 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(" 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(" 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(" (SELECT DISTINCT "); + sql.append(" c.caja_id, "); + // sql.append(" TRUNC(c.feccreacion) as datamov, "); + sql.append(" a.ACFISCAL AS numAidf, "); + sql.append(" c.NUMFOLIOPREIMPRESO as folio, "); + sql.append(" c.NUMSERIEPREIMPRESA as serie, "); sql.append(" c.MOTIVOCANCELACION_ID AS motivoCancelacion, "); sql.append(" c.PRECIOBASE AS tarifa, "); - sql.append(" ed.ICMS AS valorAliquiotaICMS, "); + sql.append(" ei.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) / 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(" (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) )) * 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, 0) / 100.0) )) ELSE 0 END AS outras, "); + sql.append(" coalesce(eos.estado_id, eo.estado_id) AS estadoId, "); + sql.append(" coalesce(eos.NOMBESTADO, eo.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(" FROM caja c "); sql.append(" INNER JOIN aidf a ON a.aidf_id = c.aidf_id "); @@ -168,11 +179,8 @@ public class RelatorioDocumentosFiscais 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,17 +188,83 @@ 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 = coalesce(eos.estado_id, eo.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("AND e.empresa_id = " + empresaId + " "); sql.append(somenteCancelado == true ? " AND c.INDCANCELACION = 1" : " "); sql.append(aidf != null ? " AND a.AIDF_ID = " + aidf.getAidfId() + " " : " "); sql.append("AND coalesce(eos.estado_id, eo.estado_id) IN (" + estadoId + ") "); - sql.append(")tabela "); + 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("GROUP BY tabela.numAidf, "); + // sql.append(" tabela.datamov, "); + sql.append(" tabela.serie, "); + sql.append(" tabela.nomeEstado, "); sql.append(" tabela.valorAliquiotaICMS "); - sql.append("ORDER BY tabela.nomeEstado"); + sql.append("ORDER BY tabela.nomeEstado, tabela.numAidf "); + + 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 coalesce(tabela.numAidf, '') AS numAidf, "); + // sql.append(" tabela.datamov, "); + sql.append(" min(tabela.folio) AS formInicial, "); + sql.append(" max(tabela.folio) AS formFinal, "); + sql.append(" tabela.serie AS serie, "); + 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.valorCancelado),0) AS valorCancelado, "); + sql.append(" sum(tabela.outras) AS outras "); + sql.append("FROM "); + sql.append(" (SELECT DISTINCT "); + sql.append(" coalesce(cdv.NUMSERIEPREIMPRESA, 'X') AS numAidf, "); + sql.append(" coalesce(cdv.NUMFOLIOPREIMPRESO, '0') AS folio, "); + sql.append(" coalesce(cdv.NUMSERIEPREIMPRESA, 'X') AS serie, "); + // sql.append(" trunc(ee.fechoringreso) as datamov, "); + 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(" ed.ICMS 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 - (cdv.precio * COALESCE(ed.PORCREDBASEICMS / 100,0)) * ed.ICMS) / 100ELSE 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(" es.estado_id AS estadoId, "); + sql.append(" es.NOMBESTADO AS nomeEstado, "); + sql.append(" '' AS origem, "); + sql.append(" '' AS destino, "); + sql.append(" 0 AS isInterEstadual "); + sql.append("from evento_extra ee "); + sql.append(" join caja_diversos cdv on cdv.eventoextra_id = ee.eventoextra_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("where ee.tipoeventoextra_id in (1,81,82) "); + sql.append(" and ee.fechoringreso between :DATA_INICIAL and :DATA_FINAL "); + sql.append(" and ee.empresa_id = " + empresaId + " "); + sql.append(" and es.estado_id IN (" + estadoId + ") "); + // sql.append(somenteCancelado == true ? " AND c.INDCANCELACION = 1" : " "); + // sql.append(aidf != null ? " AND a.AIDF_ID = " + aidf.getAidfId() + " " : " "); + + sql.append(" "); + 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.datamov, "); + sql.append(" tabela.serie, "); + sql.append(" tabela.nomeEstado, "); + sql.append(" tabela.valorAliquiotaICMS "); + sql.append("ORDER BY tabela.nomeEstado, tabela.numAidf "); return sql.toString(); } 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 b1afae4bf..3a8ff0e86 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,4 +1,4 @@ - package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios; +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios; import java.sql.Timestamp; import java.util.HashMap; @@ -43,8 +43,8 @@ public class RelatorioDocumentosFiscaisController extends MyGenericForwardCompos * */ private static final long serialVersionUID = 1L; - private static final String TODOS_VALUE = new Integer(-1).toString(); - private static final String TODOS = "TODAS"; + // private static final String TODOS_VALUE = new Integer(-1).toString(); + // private static final String TODOS = "TODAS"; @Autowired private EmpresaService empresaService; @Autowired @@ -62,6 +62,7 @@ public class RelatorioDocumentosFiscaisController extends MyGenericForwardCompos private Checkbox ckbSomenteCancelado; private Radiogroup rdgInterestadualMunicial; private Radiogroup rdTipoAgrupamento; + private Radiogroup rdEspecie; @Autowired private AidfService aidfService; private List lsAidf; @@ -88,7 +89,7 @@ public class RelatorioDocumentosFiscaisController extends MyGenericForwardCompos Empresa empresa = (Empresa) cmbEmpresa.getSelectedItem().getValue(); Estado estado = (Estado) cmbEstado.getSelectedItem().getValue(); Aidf aidf = null; - if( cmbAidf.getSelectedItem() != null){ + if (cmbAidf.getSelectedItem() != null) { aidf = (Aidf) cmbAidf.getSelectedItem().getValue(); } Boolean somenteCancelado = ckbSomenteCancelado.isChecked(); @@ -103,9 +104,9 @@ public class RelatorioDocumentosFiscaisController extends MyGenericForwardCompos tipoLinha = "TODOS"; } - Radio rdEspecie = rdgInterestadualMunicial.getSelectedItem(); + Radio rdEsp = rdEspecie.getSelectedItem(); String especie; - if (rdEspecie.getValue().equals("0")) { + if (rdEsp.getValue().equals("0")) { especie = "Bilhetes BPR"; } else { especie = "Excesso de Bagagem(EB)";