fixes bug#23491

qua:debora
dev:

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
master
walace 2021-11-16 19:39:52 +00:00
parent b6d179ca88
commit 415a2de4b5
5 changed files with 148 additions and 8 deletions

View File

@ -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();
}
}

View File

@ -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<Categoria> 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();

View File

@ -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

View File

@ -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

View File

@ -7,7 +7,7 @@
<zk xmlns="http://www.zkoss.org/2005/zul">
<window id="winFiltroRelatorioGratuidadeARTESP"
apply="${relatorioGratuidadeARTESPController}"
contentStyle="overflow:auto" height="600px" width="550px"
contentStyle="overflow:auto" height="620px" width="550px"
border="normal">
<grid fixedLayout="true">
@ -55,6 +55,17 @@
use="com.rjconsultores.ventaboletos.web.utilerias.MyListbox">
</listbox>
</row>
<row spans="1, 3">
<label
value="${c:l('relatorioGratuidadeARTESPController.lbTabelaPreco.value')}" />
<hlayout>
<checkbox id="chkIndTabelaPreco" width="100%"
checked="true" />
<image src="/gui/img/Question_mark_1.png"
tooltiptext="${c:l('relatorioGratuidadeARTESPController.lbTooltiptextTabelaPreco.value')}"
style="cursor: help" />
</hlayout>
</row>
<row>
<label
value="${c:l('relatorioGratuidadeARTESPController.lbLinha.value')}" />