From 415a2de4b53922049ecb1fda4200dd4dbaada38c Mon Sep 17 00:00:00 2001 From: walace Date: Tue, 16 Nov 2021 19:39:52 +0000 Subject: [PATCH] fixes bug#23491 qua:debora dev: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implementado a flag, para buscar a tarifa na tabela caja em vez da tabela tarifa, pois podem ter tarifas inativas para um período antigo, quando uma tabela não está mais em vigencia. Obs è importante lembrar o cliente , que a tabela BPE na homologação, não está completamente atualizada, quanto na produção. Exemplo de Boleto ID: select * from bpe where boleto_id = 10000002994945; Evidencia também anexa. git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@109631 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioGratuidadeARTESP.java | 136 +++++++++++++++++- .../RelatorioGratuidadeARTESPController.java | 3 + web/WEB-INF/i3-label_es_MX.label | 2 + web/WEB-INF/i3-label_pt_BR.label | 2 + .../filtroRelatorioGratuidadeARTESP.zul | 13 +- 5 files changed, 148 insertions(+), 8 deletions(-) diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioGratuidadeARTESP.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioGratuidadeARTESP.java index e7d054d87..d3d7ef54f 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioGratuidadeARTESP.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioGratuidadeARTESP.java @@ -7,6 +7,7 @@ import java.util.Date; import java.util.List; import java.util.Map; +import org.apache.commons.lang.BooleanUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -49,9 +50,16 @@ public class RelatorioGratuidadeARTESP extends Relatorio { String empresa = parametros.get("empresa") != null ? parametros.get("empresa").toString() : ""; String codOrgaoConcedente = parametros.get("CodOrgaoConcedente").toString(); String estados = (String) parametros.get("ESTADOS_ID"); - - String sql = getSql(fecInicioVenda, fecFinalVenda, linhaIds, tipGratuIds, empresa, codOrgaoConcedente, estados); - + Boolean indTabelaPreco = (Boolean) parametros.get("indTabelaPreco"); + + String sql = null; + + if(BooleanUtils.toBoolean(indTabelaPreco)){ + sql = getSqlTabelaPreco(fecInicioVenda, fecFinalVenda, linhaIds, tipGratuIds, empresa, codOrgaoConcedente, estados); + }else{ + sql = getSqlNoTabelaPreco(fecInicioVenda, fecFinalVenda, linhaIds, tipGratuIds, empresa, codOrgaoConcedente, estados); + } + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); if (fecInicioVenda != null) { @@ -170,7 +178,7 @@ public class RelatorioGratuidadeARTESP extends Relatorio { protected void processaParametros() throws Exception { } - private String getSql(String fecInicioVenda, String fecFinalVenda, String linha, String tipoGratu, String empresa, String codOrgaoConcedente, String estados) { + private String getSqlTabelaPreco(String fecInicioVenda, String fecFinalVenda, String linha, String tipoGratu, String empresa, String codOrgaoConcedente, String estados) { StringBuilder sql = new StringBuilder(); @@ -204,7 +212,7 @@ public class RelatorioGratuidadeARTESP extends Relatorio { sql.append("COALESCE(c.numtelefono, CAJA.DESCTELEFONO) AS tel,"); sql.append("c.DESCCORREO AS email, "); sql.append("CASE "); - sql.append("WHEN B.MOTIVOCANCELACION_ID IN (31, 32, 90, 23) "); + sql.append("WHEN B.MOTIVOCANCELACION_ID IN (31, 32, 90, 23,10) "); sql.append("THEN 1 ELSE 0 "); sql.append("END AS DESISTENCIA, "); sql.append(" (COALESCE(T.PRECIO, 0) + COALESCE(T.IMPORTEPEDAGIO,0)) "); @@ -224,12 +232,12 @@ public class RelatorioGratuidadeARTESP extends Relatorio { sql.append("LEFT JOIN CLIENTE_DIRECCION cd ON cd.cliente_id = c.cliente_id AND cd.ACTIVO = 1 "); sql.append("LEFT JOIN ORGAO_CONCEDENTE OC ON r.ORGAOCONCEDENTE_ID = OC.ORGAOCONCEDENTE_ID "); sql.append("JOIN ORGAO_EMP_PARAM O ON e.empresa_id = O.EMPRESA_ID AND OC.ORGAOCONCEDENTE_ID = O.ORGAOCONCEDENTE_ID AND O.ACTIVO = 1 "); - sql.append("JOIN TARIFA T ON r.RUTA_ID = T.RUTA_ID AND b.ORIGEN_ID = T.ORIGEN_ID AND b.DESTINO_ID = T.DESTINO_ID AND b.CLASESERVICIO_ID = T.CLASESERVICIO_ID AND m.MARCA_ID = T.MARCA_ID AND oc.ORGAOCONCEDENTE_ID = T.ORGAOCONCEDENTE_ID AND T.TRAMO_ID=tr.TRAMO_ID "); + sql.append("JOIN TARIFA T ON r.RUTA_ID = T.RUTA_ID AND b.ORIGEN_ID = T.ORIGEN_ID AND b.DESTINO_ID = T.DESTINO_ID AND b.CLASESERVICIO_ID = T.CLASESERVICIO_ID AND m.MARCA_ID = T.MARCA_ID AND oc.ORGAOCONCEDENTE_ID = T.ORGAOCONCEDENTE_ID AND T.TRAMO_ID=tr.TRAMO_ID AND T.ACTIVO=1 "); sql.append("JOIN VIGENCIA_TARIFA vt ON vt.VIGENCIATARIFA_ID = t.VIGENCIATARIFA_ID AND b.FECHORVIAJE BETWEEN vt.FECINICIOVIGENCIA AND vt.FECFINVIGENCIA "); sql.append(" left JOIN BPE bpe ON bpe.BOLETO_ID = b.BOLETO_ID and bpe.activo = 1 "); sql.append(" left JOIN estado e ON e.CODIBGE = bpe.UF "); sql.append("WHERE b.fechorviaje BETWEEN to_date(:fecInicioVenda,'dd/mm/yyyy hh24:mi') AND to_date(:fecFinalVenda,'dd/mm/yyyy hh24:mi') "); - sql.append("AND (b.MOTIVOCANCELACION_ID not in (4,10) or b.MOTIVOCANCELACION_ID is null) "); + sql.append("AND (b.MOTIVOCANCELACION_ID not in (4) or b.MOTIVOCANCELACION_ID is null) "); if (tipoGratu != null) { sql.append(" AND b.CATEGORIA_ID in (").append(tipoGratu).append(") "); @@ -261,4 +269,118 @@ public class RelatorioGratuidadeARTESP extends Relatorio { return sql.toString(); } + + + private String getSqlNoTabelaPreco(String fecInicioVenda, String fecFinalVenda, String linha, String tipoGratu, String empresa, String codOrgaoConcedente, String estados) { + + + StringBuilder sql = new StringBuilder(); + + sql.append("SELECT OC.DESCORGAO AS ORGAO,"); + sql.append(" O.CODEMPRESAPORORGAO AS empresa,"); + sql.append(" B.FECHORVIAJE AS fechorviaje,"); + sql.append(" ori.cveparada AS codorigem,"); + sql.append(" ori.descparada AS descorigem,"); + sql.append(" des.cveparada AS coddestino,"); + sql.append(" des.descparada AS descdestino,"); + sql.append(" B.NUMASIENTO AS POLTRONA,"); + sql.append(" b.NUMFOLIOSISTEMA AS NUMBILHETE,"); + sql.append(" b.NOMBPASAJERO AS NOMBPASAJERO,"); + sql.append(" CASE"); + sql.append(" WHEN b.DESCNUMDOC IS NOT NULL THEN b.DESCNUMDOC"); + sql.append(" ELSE c.NUMIDENTIFICAUNO"); + sql.append(" END AS RG,"); + sql.append(" c.TIPOIDENTIFICAUNO_ID AS TIPODOC1,"); + sql.append(" b.descorgaodoc uforgaodoc,"); + sql.append(" c.TIPOIDENTIFICADOS_ID AS TIPODOC2,"); + sql.append(" CASE"); + sql.append(" WHEN b.DESCNUMDOC2 IS NOT NULL THEN b.DESCNUMDOC2"); + sql.append(" ELSE c.NUMIDENTIFICADOS"); + sql.append(" END AS CPF,"); + sql.append(" r.PREFIXO AS LINHA,"); + sql.append(" LISTAGG(cd.DESCCALLE || ', ' || cd.NUMEXTERIOR || '-' || cd.DESCIUDAD || '/' || cd.DESESTADO, ';;;;') WITHIN GROUP("); + sql.append(" ORDER BY cd.CLIENTEDIRECCION_ID ASC) AS ENDERECO, "); + sql.append(" COALESCE(c.numtelefono, CAJA.DESCTELEFONO) AS tel,"); + sql.append(" c.DESCCORREO AS email,"); + sql.append(" CASE"); + sql.append(" WHEN B.MOTIVOCANCELACION_ID IN (31,32, 90, 23) THEN 1 ELSE 0 END AS DESISTENCIA, "); + sql.append(" (COALESCE(NULL, b.preciobase) + COALESCE(NULL, 0)) -(COALESCE(b.PRECIOPAGADO, 0) + COALESCE(b.IMPORTEPEDAGIO, 0)) AS vlrGratuidade,"); + sql.append(" bpe.chbpe AS chaveBPE "); + sql.append("FROM BOLETO b "); + sql.append("LEFT JOIN CAJA ON B.BOLETO_ID = CAJA.TRANSACAO_ID ") ; + sql.append("JOIN categoria ca ON b.categoria_id = ca.categoria_id "); + sql.append("JOIN empresa e ON e.empresa_id = b.EMPRESACORRIDA_ID "); + sql.append("JOIN marca m ON m.EMPRESA_ID = e.EMPRESA_ID "); + sql.append("JOIN parada ori ON ori.parada_id = b.origen_id "); + sql.append("JOIN parada des ON des.parada_id = b.destino_id "); + sql.append("JOIN ruta r ON r.ruta_id = b.ruta_id "); + sql.append("LEFT JOIN cliente c ON c.cliente_id = b.cliente_id "); + sql.append("LEFT JOIN CLIENTE_DIRECCION cd ON cd.cliente_id = c.cliente_id AND cd.ACTIVO = 1 "); + sql.append("LEFT JOIN ORGAO_CONCEDENTE OC ON r.ORGAOCONCEDENTE_ID = OC.ORGAOCONCEDENTE_ID "); + sql.append("JOIN ORGAO_EMP_PARAM O ON e.empresa_id = O.EMPRESA_ID AND OC.ORGAOCONCEDENTE_ID = O.ORGAOCONCEDENTE_ID AND O.ACTIVO = 1 "); + sql.append("LEFT JOIN BPE bpe ON bpe.BOLETO_ID = b.BOLETO_ID "); + sql.append("LEFT JOIN estado e ON e.CODIBGE = bpe.UF AND e.ACTIVO =1 "); + sql.append("WHERE b.fechorviaje BETWEEN to_date(:fecInicioVenda,'dd/mm/yyyy hh24:mi') AND to_date(:fecFinalVenda,'dd/mm/yyyy hh24:mi') "); + sql.append("AND (b.MOTIVOCANCELACION_ID not in (4) or b.MOTIVOCANCELACION_ID is null) "); + + if (tipoGratu != null) { + sql.append(" AND b.CATEGORIA_ID in (").append(tipoGratu).append(") "); + } + + if (linha != null && !linha.equals("Todas")) { + sql.append(" AND r.ruta_id in (").append(linha).append(") "); + } + + if (!empresa.isEmpty()) { + sql.append("AND b.empresacorrida_id = :empresa_id "); + } + + if(codOrgaoConcedente != null && Integer.valueOf(codOrgaoConcedente) > -1) { + sql.append(" AND OC.ORGAOCONCEDENTE_ID = :codOrgaoConcedente "); + } + if (estados != null) { + sql.append(" AND e.ESTADO_ID IN ( " + estados + " )"); + } + + sql.append("GROUP BY OC.DESCORGAO,"); + sql.append(" O.CODEMPRESAPORORGAO,"); + sql.append(" B.FECHORVIAJE,"); + sql.append(" ori.cveparada,"); + sql.append(" ori.descparada,"); + sql.append(" des.cveparada,"); + sql.append(" des.descparada,"); + sql.append(" B.NUMASIENTO,"); + sql.append(" b.NUMFOLIOSISTEMA,"); + sql.append(" b.NOMBPASAJERO,"); + sql.append(" CASE"); + sql.append(" WHEN b.DESCNUMDOC IS NOT NULL THEN b.DESCNUMDOC"); + sql.append(" ELSE c.NUMIDENTIFICAUNO"); + sql.append(" END,"); + sql.append(" c.TIPOIDENTIFICAUNO_ID,"); + sql.append(" b.descorgaodoc,"); + sql.append(" c.TIPOIDENTIFICADOS_ID,"); + sql.append(" CASE"); + sql.append(" WHEN b.DESCNUMDOC2 IS NOT NULL THEN b.DESCNUMDOC2"); + sql.append(" ELSE c.NUMIDENTIFICADOS"); + sql.append(" END,"); + sql.append(" r.PREFIXO,"); + sql.append(" c.DESCCORREO,"); + sql.append(" CASE"); + sql.append(" WHEN B.MOTIVOCANCELACION_ID IN (31,"); + sql.append(" 32,"); + sql.append(" 90,"); + sql.append(" 23,10) THEN 1"); + sql.append(" ELSE 0"); + sql.append(" END,"); + sql.append(" COALESCE(c.numtelefono, CAJA.DESCTELEFONO),"); + sql.append(" (COALESCE(NULL, b.preciobase) + COALESCE(NULL, 0)) -(COALESCE(b.PRECIOPAGADO, 0) + COALESCE(b.IMPORTEPEDAGIO, 0)), "); + sql.append(" bpe.chbpe "); + sql.append("ORDER BY OC.DESCORGAO, "); + sql.append(" O.CODEMPRESAPORORGAO,"); + sql.append(" b.FECHORVIAJE,"); + sql.append(" descorigem,"); + sql.append(" descdestino "); + + return sql.toString(); + } } \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioGratuidadeARTESPController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioGratuidadeARTESPController.java index 4c2f82fed..c2281b63e 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioGratuidadeARTESPController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioGratuidadeARTESPController.java @@ -16,6 +16,7 @@ import org.zkoss.util.resource.Labels; import org.zkoss.zhtml.Messagebox; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.Event; +import org.zkoss.zul.Checkbox; import org.zkoss.zul.Datebox; import org.zkoss.zul.Textbox; @@ -68,6 +69,7 @@ public class RelatorioGratuidadeARTESPController extends MyGenericForwardCompose private MyListbox linhaListSelList; private MyListbox selectedTipoGratuidadeList; private MyListbox estadoList; + private Checkbox chkIndTabelaPreco; private List listSelectedTipoGratuidade; private static Logger log = Logger.getLogger(RelatorioGratuidadeARTESPController.class); @@ -183,6 +185,7 @@ public class RelatorioGratuidadeARTESPController extends MyGenericForwardCompose parametros.put("tipGratu", tipGratu.append(";").toString()); parametros.put("tipGratuIds", tipGratuIds.toString()); + parametros.put("indTabelaPreco", chkIndTabelaPreco.isChecked()); StringBuilder linhas = new StringBuilder(); StringBuilder linhaIds = new StringBuilder(); diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index a04a2f440..4f4dc6e7f 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -8533,6 +8533,8 @@ relatorioGratuidadeARTESPController.lbTipoGratuidade.value = Tipo de alojamiento relatorioGratuidadeARTESPController.lbDataIni.value = Fecha Inicio Viaje relatorioGratuidadeARTESPController.lbDataFin.value = Fecha Final Viaje relatorioGratuidadeARTESPController.lbOrgao.value = Instituición concedente +relatorioGratuidadeARTESPController.lbTabelaPreco.value = Tabla de precios +relatorioGratuidadeARTESPController.lbTooltiptextTabelaPreco.value = Se recomienda la opción cuando existe una lista de precios vigente para el período informado. Durante un período en el que no hay una lista de precios actual, es recomendable desmarcar la bandera. # Reporte Exportacao Idoso AGER relatorioGratuidadeAGERController.window.title = Reporte Gratuidad AGER diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index ea6ef2f29..4094d6344 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -9279,6 +9279,8 @@ relatorioGratuidadeARTESPController.lbNumRuta.value = Num. Linha relatorioGratuidadeARTESPController.lbPrefixo.value = Prefixo relatorioGratuidadeARTESPController.lvVenda = Venda relatorioGratuidadeARTESPController.lbOrgao.value = Orgão Concedente +relatorioGratuidadeARTESPController.lbTabelaPreco.value = Tabela de Preço +relatorioGratuidadeARTESPController.lbTooltiptextTabelaPreco.value = A opção é aconselhada quando existe tabela de preço vigente para o periodo informado. Para um período que não existe tabela de preço vigente, é aconselhado desmarcar a flag. # Relatório Exportacao Idoso AGER relatorioGratuidadeAGERController.window.title = Relatório Gratuidade AGER diff --git a/web/gui/relatorios/filtroRelatorioGratuidadeARTESP.zul b/web/gui/relatorios/filtroRelatorioGratuidadeARTESP.zul index 75c7c7bc5..938895326 100644 --- a/web/gui/relatorios/filtroRelatorioGratuidadeARTESP.zul +++ b/web/gui/relatorios/filtroRelatorioGratuidadeARTESP.zul @@ -7,7 +7,7 @@ @@ -55,6 +55,17 @@ use="com.rjconsultores.ventaboletos.web.utilerias.MyListbox"> + +