diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioGratuidadeANTT.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioGratuidadeANTT.java index 231495016..62ce86042 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioGratuidadeANTT.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioGratuidadeANTT.java @@ -100,38 +100,145 @@ public class RelatorioGratuidadeANTT extends Relatorio { private String getSql(String fecInicioVenda, String fecFinalVenda, String linha, String tipoGratu, String empresa ) { - StringBuilder sql = new StringBuilder(); - - sql.append(" select "); - sql.append(" ca.DESCCATEGORIA AS categoria, "); - 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(" sum(case when (R.INDSENTIDOIDA = 1 ) then 1 else 0 end) as totalIda, "); - sql.append(" sum(case when (R.INDSENTIDOIDA = 0 ) then 1 else 0 end) as totalVolta "); - sql.append(" from BOLETO b "); - sql.append(" JOIN categoria ca ON b.categoria_id = ca.categoria_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(" WHERE b.fechorventa BETWEEN :fecInicioVenda AND :fecFinalVenda "); + + StringBuilder sb = new StringBuilder(); + + sb.append(" "); + sb.append(" select tabela.categoria, tabela.codOrigem, tabela.descorigem, tabela.codDestino, tabela.descDestino, "); + sb.append(" sum(CASE"); + sb.append(" WHEN (tabela.sentido = 1) THEN 1 "); + sb.append(" ELSE 0"); + sb.append(" END) AS totalIda,"); + sb.append(" sum(CASE"); + sb.append(" WHEN (tabela.sentido = 0) THEN 1 "); + sb.append(" ELSE 0"); + sb.append(" END) AS totalVolta from ( "); + sb.append(" "); + sb.append("SELECT ca.desccategoria as categoria, R.INDSENTIDOIDA as sentido, B.MOTIVOCANCELACION_ID, OC.DESCORGAO AS ORGAO, "); + sb.append(" O.CODEMPRESAPORORGAO AS empresa,"); + sb.append(" TO_DATE(B.FECHORVIAJE, 'DD/MM/YY hh24:mi:ss') || '' AS dataViagem,"); + sb.append(" TO_CHAR(b.FECHORVIAJE, 'HH24:MI') AS horaViagem,"); + sb.append(" ori.cveparada AS codorigem,"); + sb.append(" ori.descparada AS descorigem,"); + sb.append(" des.cveparada AS coddestino,"); + sb.append(" des.descparada AS descdestino,"); + sb.append(" B.NUMASIENTO AS POLTRONA,"); + sb.append(" b.NUMFOLIOSISTEMA AS NUMBILHETE,"); + sb.append(" b.NOMBPASAJERO AS NOMBPASAJERO,"); + sb.append(" CASE"); + sb.append(" WHEN b.DESCNUMDOC IS NOT NULL THEN b.DESCNUMDOC"); + sb.append(" ELSE c.NUMIDENTIFICAUNO"); + sb.append(" END AS RG,"); + sb.append(" c.TIPOIDENTIFICAUNO_ID AS TIPODOC1,"); + sb.append(" b.descorgaodoc uforgaodoc,"); + sb.append(" c.TIPOIDENTIFICADOS_ID AS TIPODOC2,"); + sb.append(" CASE"); + sb.append(" WHEN b.DESCNUMDOC2 IS NOT NULL THEN b.DESCNUMDOC2"); + sb.append(" ELSE c.NUMIDENTIFICADOS"); + sb.append(" END AS CPF,"); + sb.append(" r.PREFIXO AS LINHA,"); + sb.append(" cd.DESCCALLE || ', ' || cd.NUMEXTERIOR || '-' || cd.DESCIUDAD || '/' || cd.DESESTADO AS ENDERECO,"); + sb.append(" c.NUMTELEFONO AS tel,"); + sb.append(" c.DESCCORREO AS email,"); + sb.append(" CASE"); + sb.append(" WHEN B.MOTIVOCANCELACION_ID IN (31,"); + sb.append(" 32,"); + sb.append(" 90) THEN 1"); + sb.append(" ELSE 0"); + sb.append(" END AS DESISTENCIA,"); + sb.append(" (COALESCE(T.PRECIO, 0) + COALESCE(T.IMPORTEPEDAGIO, 0)) -(COALESCE(b.PRECIOPAGADO, 0) + COALESCE(b.IMPORTEPEDAGIO, 0)) AS vlrGratuidade "); + sb.append("FROM BOLETO b "); + sb.append("JOIN categoria ca ON b.categoria_id = ca.categoria_id "); + sb.append("JOIN empresa e ON e.empresa_id = b.EMPRESACORRIDA_ID "); + sb.append("JOIN marca m ON m.EMPRESA_ID = e.EMPRESA_ID "); + sb.append("JOIN parada ori ON ori.parada_id = b.origen_id "); + sb.append("JOIN parada des ON des.parada_id = b.destino_id "); + sb.append("JOIN ruta r ON r.ruta_id = b.ruta_id "); + sb.append("LEFT JOIN cliente c ON c.cliente_id = b.cliente_id "); + sb.append("LEFT JOIN CLIENTE_DIRECCION cd ON cd.cliente_id = c.cliente_id "); + sb.append("AND cd.ACTIVO = 1 "); + sb.append("JOIN ORGAO_CONCEDENTE OC ON r.ORGAOCONCEDENTE_ID = OC.ORGAOCONCEDENTE_ID "); + sb.append("JOIN ORGAO_EMP_PARAM O ON e.empresa_id = O.EMPRESA_ID "); + sb.append("AND OC.ORGAOCONCEDENTE_ID = O.ORGAOCONCEDENTE_ID "); + sb.append("AND O.ACTIVO = 1 "); + sb.append("JOIN TARIFA T ON r.RUTA_ID = T.RUTA_ID "); + sb.append("AND b.ORIGEN_ID = T.ORIGEN_ID "); + sb.append("AND b.DESTINO_ID = T.DESTINO_ID "); + sb.append("AND b.CLASESERVICIO_ID = T.CLASESERVICIO_ID "); + sb.append("AND m.MARCA_ID = T.MARCA_ID "); + sb.append("AND o.ORGAOCONCEDENTE_ID = T.ORGAOCONCEDENTE_ID "); + sb.append("JOIN VIGENCIA_TARIFA vt ON vt.VIGENCIATARIFA_ID = t.VIGENCIATARIFA_ID "); + sb.append("AND b.FECHORVIAJE BETWEEN vt.FECINICIOVIGENCIA AND vt.FECFINVIGENCIA "); + sb.append("WHERE b.fechorventa BETWEEN :fecInicioVenda AND :fecFinalVenda "); if( tipoGratu != null ) { - sql.append(" AND b.CATEGORIA_ID in (").append(tipoGratu).append(") "); + sb.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(") "); + sb.append(" AND r.ruta_id in (").append(linha).append(") "); } if (!empresa.isEmpty()){ - sql.append("AND b.empresacorrida_id = :empresa_id "); + sb.append("AND b.empresacorrida_id =:empresa_id "); } - - sql.append(" group by ca.DESCCATEGORIA, ori.CVEPARADA, ori.DESCPARADA, des.CVEPARADA, des.DESCPARADA "); - sql.append(" ORDER BY descOrigem, descDestino, categoria "); - return sql.toString(); + sb.append("GROUP BY OC.DESCORGAO,"); + sb.append(" O.CODEMPRESAPORORGAO,"); + sb.append(" B.FECHORVIAJE,"); + sb.append(" ca.desccategoria,"); + sb.append(" ori.cveparada,"); + sb.append(" ori.descparada,"); + sb.append(" des.cveparada,"); + sb.append(" B.NUMASIENTO,"); + sb.append(" des.descparada,"); + sb.append(" c.TIPOIDENTIFICAUNO_ID,"); + sb.append(" c.TIPOIDENTIFICADOS_ID,"); + sb.append(" b.FECCORRIDA,"); + sb.append(" C.NUMTELEFONO,"); + sb.append(" c.DESCCORREO,"); + sb.append(" CASE"); + sb.append(" WHEN b.DESCNUMDOC IS NOT NULL THEN b.DESCNUMDOC"); + sb.append(" ELSE c.NUMIDENTIFICAUNO"); + sb.append(" END,"); + sb.append(" b.NUMFOLIOSISTEMA,"); + sb.append(" CASE"); + sb.append(" WHEN b.DESCNUMDOC2 IS NOT NULL THEN b.DESCNUMDOC2"); + sb.append(" ELSE c.NUMIDENTIFICADOS"); + sb.append(" END,"); + sb.append(" b.NOMBPASAJERO,"); + sb.append(" b.NUMIDENTIFICACION,"); + sb.append(" T.PRECIO,"); + sb.append(" b.PRECIOPAGADO,"); + sb.append(" b.descorgaodoc,"); + sb.append(" r.PREFIXO,"); + sb.append(" cd.DESCCALLE || ', ' || cd.NUMEXTERIOR || '-' || cd.DESCIUDAD || '/' || cd.DESESTADO,"); + sb.append(" B.MOTIVOCANCELACION_ID,"); + sb.append(" T.IMPORTEOUTROS,"); + sb.append(" T.IMPORTEPEDAGIO,"); + sb.append(" T.IMPORTESEGURO,"); + sb.append(" T.IMPORTETAXAEMBARQUE,"); + sb.append(" T.IMPORTETPP,"); + sb.append(" b.descorgaodoc,"); + sb.append(" b.IMPORTECATEGORIA,"); + sb.append(" b.IMPORTEOUTROS,"); + sb.append(" b.IMPORTEPEDAGIO,"); + sb.append(" b.IMPORTESEGURO,"); + sb.append(" b.IMPORTETAXAEMBARQUE,"); + sb.append(" b.IMPORTETPP,R.INDSENTIDOIDA"); + sb.append(" ORDER BY "); + sb.append(" descorigem,"); + sb.append(" descdestino,OC.DESCORGAO,"); + sb.append(" O.CODEMPRESAPORORGAO,"); + sb.append(" b.FECHORVIAJE"); + sb.append(" "); + sb.append(" ) tabela"); + sb.append(" group by "); + sb.append(" tabela.categoria, tabela.codOrigem,tabela.descOrigem, tabela.codDestino, tabela.descDestino "); + sb.append(" ORDER BY tabela.descOrigem, tabela.descDestino, tabela.categoria "); + + + + return sb.toString(); } } \ No newline at end of file