From 6d37c76826f3469015ed86a68776da58a1a534e5 Mon Sep 17 00:00:00 2001 From: "igor.rodrigo" Date: Wed, 23 Dec 2015 17:21:24 +0000 Subject: [PATCH] =?UTF-8?q?fixes=20bug=206555=20corre=C3=A7=C3=B5es=20dive?= =?UTF-8?q?rsas(Nome=20do=20estabelecimento=20do=20Ponto=20de=20Venda,=20D?= =?UTF-8?q?ata=20da=20compra=20de=20acordo=20com=20o=20boleto=20antigo=20n?= =?UTF-8?q?o=20caso=20do=20mesmo=20ter=20sofrido=20transfer=C3=AAncia,=20C?= =?UTF-8?q?oluna=20com=20valor=20total=20da=20compra=20incluindo=20o=20val?= =?UTF-8?q?or=20do=20seguro=20opcional(tabela=20eventos=20extra).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@51517 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../RelatorioCancelamentoVendaCartao.java | 99 ++++++++++++++----- 1 file changed, 75 insertions(+), 24 deletions(-) diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioCancelamentoVendaCartao.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioCancelamentoVendaCartao.java index a73b24b04..7d96c7df2 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioCancelamentoVendaCartao.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioCancelamentoVendaCartao.java @@ -65,7 +65,7 @@ public class RelatorioCancelamentoVendaCartao extends Relatorio { //Esses boletos sofreram transferência. //O intuito dessa query é recuperar os dados originais de cartões de crédito sql.append(" WITH boletos_originais AS "); - sql.append(" (SELECT distinct b.boleto_id as boleto_id_bo, ctj.numtarjeta as numtarjeta_bo, ptovta.numsitef as numsitef_bo, "); + sql.append(" (SELECT distinct b.boleto_id as boleto_id_bo, ctj.numtarjeta as numtarjeta_bo, ptovta.numsitef as numsitef_bo, c.caja_id, c.fechorventa AS fechorventa_bo, "); sql.append(" CASE WHEN ctj.numautorizacion IS NULL THEN '-' ELSE ctj.numautorizacion END AS numautorizacion_bo, "); sql.append(" ctj.nsu as nsu_bo, c.numoperacion AS numoperacion "); sql.append(" FROM boleto b, caja_det_pago cdt, caja c, caja_tarjeta ctj, ptovta_empresa ptovta "); @@ -76,22 +76,56 @@ public class RelatorioCancelamentoVendaCartao extends Relatorio { sql.append(" AND b.numfoliosistema = c.numfoliosistema "); sql.append(" AND o.fecinc between :data_inicial and :data_final "); if (parametros.get("EMPRESA_ID") != null) { - sql.append(" inner join marca ma on ma.marca_id = c.marca_id"); - sql.append(" inner join empresa e on e.empresa_id = ma.empresa_id and ma.empresa_id = " + parametros.get("EMPRESA_ID")); + sql.append(" INNER JOIN marca ma on ma.marca_id = b.marca_id"); + sql.append(" AND ma.empresa_id = " + parametros.get("EMPRESA_ID")); } if (parametros.get("NUMPUNTOVENTA") != null) { - sql.append(" INNER JOIN punto_venta p "); - sql.append(" ON p.puntoventa_id = o.puntoventa_id "); - sql.append(" and p.puntoventa_id IN (" + parametros.get("NUMPUNTOVENTA").toString() + ")"); + sql.append(" AND o.puntoventa_id IN (" + parametros.get("NUMPUNTOVENTA").toString() + ")"); } + sql.append(" AND b.boletooriginal_id IS NOT NULL "); sql.append(")"); - sql.append(" AND c.numoperacion = b.numoperacion "); - //sql.append(" AND b.numfoliosistema = c.numfoliosistema "); + sql.append(" AND c.numoperacion = b.numoperacion "); + //Para venda pela internet aparecer é preciso descomentar a linha abaixo + sql.append(" AND b.numfoliosistema = c.numfoliosistema "); sql.append(" AND cdt.caja_id = c.caja_id "); sql.append(" AND cdt.cajadetpago_id = ctj.cajadetpago_id "); sql.append(" AND cdt.formapago_id IN (2) "); - sql.append(" AND b.puntoventa_id = ptovta.puntoventa_id),"); + sql.append(" AND b.puntoventa_id = ptovta.puntoventa_id "); + if (parametros.get("EMPRESA_ID") != null) { + //Para venda pela internet aparecer é preciso descomentar a linha abaixo + sql.append(" AND ptovta.empresa_id = " + parametros.get("EMPRESA_ID")); + } + sql.append("), "); + //Busca os boletos que foram vendidos pela internet(boleto originais) + sql.append(" boletos_o_venda_internet AS( "); + sql.append(" SELECT DISTINCT b.boleto_id AS boleto_id_bo_vi, ctj.numtarjeta AS numtarjeta_bo_vi, "); + sql.append(" ptovta.numsitef AS numsitef_bo_vi, c.caja_id, c.fechorventa AS fechorventa_bo_vi, "); + sql.append(" CASE WHEN ctj.numautorizacion IS NULL THEN '-' ELSE ctj.numautorizacion END AS numautorizacion_bo_vi, "); + sql.append(" ctj.nsu AS nsu_bo_vi, c.numoperacion AS numoperacion FROM boleto b, caja_det_pago cdt, caja c, "); + sql.append(" caja_tarjeta ctj, ptovta_empresa ptovta WHERE b.boleto_id IN(SELECT b.boletooriginal_id "); + sql.append(" FROM OCD o INNER JOIN boleto b ON o.BOLETO_ID = b.BOLETO_ID INNER JOIN caja c ON c.numoperacion = b.numoperacion "); + sql.append(" AND b.numfoliosistema = c.numfoliosistema "); + sql.append(" AND o.fecinc between :data_inicial and :data_final "); + if (parametros.get("EMPRESA_ID") != null) { + sql.append(" INNER JOIN marca ma on ma.marca_id = b.marca_id"); + sql.append(" AND ma.empresa_id = " + parametros.get("EMPRESA_ID")); + } + if (parametros.get("NUMPUNTOVENTA") != null) { + sql.append(" AND o.puntoventa_id IN (" + parametros.get("NUMPUNTOVENTA").toString() + ")"); + } + sql.append(" AND b.boletooriginal_id IS NOT NULL "); + sql.append(")"); + sql.append(" AND c.numoperacion = b.numoperacion "); + sql.append(" AND cdt.caja_id = c.caja_id "); + sql.append(" AND cdt.cajadetpago_id = ctj.cajadetpago_id "); + sql.append(" AND cdt.formapago_id IN (2) "); + sql.append(" AND b.puntoventa_id = ptovta.puntoventa_id "); + sql.append(" AND b.feccorrida = c.feccorrida "); + sql.append(" AND b.corrida_id = c.corrida_id "); + sql.append(" AND b.numasiento = c.numasiento "); + sql.append(" AND b.puntoventa_id = 301 ),"); //É o código do puntoventa de compras pela internet + //Busca os boletos novos após a transferência e geração de OCD sql.append(" boletos_novos AS( "); sql.append(" SELECT c.caja_id as caja_id_bn, b.boleto_id as boleto_id_bn, b.boletooriginal_id as boleto_id_original_bn, "); @@ -105,12 +139,12 @@ public class RelatorioCancelamentoVendaCartao extends Relatorio { sql.append(" INNER JOIN caja c ON c.numoperacion = b.numoperacion "); sql.append(" AND b.numfoliosistema = c.numfoliosistema "); sql.append(" INNER JOIN punto_venta p "); - sql.append(" ON p.puntoventa_id = o.puntoventa_id "); + sql.append(" ON p.puntoventa_id = b.puntoventa_id "); //sql.append(" AND o.VALOR_TARJETA <> 0 "); sql.append(" AND o.fecinc between :data_inicial and :data_final "); if (parametros.get("EMPRESA_ID") != null) { - sql.append(" inner join marca ma on ma.marca_id = c.marca_id"); - sql.append(" inner join empresa e on e.empresa_id = ma.empresa_id and ma.empresa_id = " + parametros.get("EMPRESA_ID")); + sql.append(" INNER JOIN marca ma on ma.marca_id = b.marca_id"); + sql.append(" AND ma.empresa_id = " + parametros.get("EMPRESA_ID")); } if (parametros.get("NUMPUNTOVENTA") != null) { sql.append(" and p.puntoventa_id IN (" + parametros.get("NUMPUNTOVENTA").toString() + ")"); @@ -118,7 +152,7 @@ public class RelatorioCancelamentoVendaCartao extends Relatorio { sql.append("),"); //Busca todas as OCD's exceto os boletos que foram transferidos antes da geração da OCD - sql.append(" ocds AS(select distinct c.caja_id, p.nombpuntoventa, ctj.numtarjeta, c.fechorventa, ptovta.numsitef,"); + sql.append(" ocds AS(select distinct c.caja_id, b.boleto_id, p.nombpuntoventa, ctj.numtarjeta, c.fechorventa, ptovta.numsitef,"); sql.append(" (coalesce(c.preciopagado,0) + coalesce(c.importeoutros,0)+ coalesce(c.importepedagio,0)+ coalesce(c.importeseguro,0) + coalesce(c.importetaxaembarque,0)) as valor_venda,"); sql.append(" TO_CHAR(coalesce(o.VALOR_TARJETA,0),'FM9999999.90') as valor_cancelar,"); sql.append(" 'OCD' as descmotivo, ctj.numautorizacion, ctj.nsu, c.numfoliosistema, o.fecinc as datadevolucao, c.numoperacion "); @@ -127,7 +161,7 @@ public class RelatorioCancelamentoVendaCartao extends Relatorio { sql.append(" inner join caja c on c.numoperacion = b.numoperacion and b.numfoliosistema = c.numfoliosistema"); sql.append(" inner join caja_det_pago cdt ON cdt.caja_id = c.caja_id and cdt.formapago_id in (:formaPago1)"); sql.append(" inner join caja_tarjeta ctj on cdt.cajadetpago_id = ctj.cajadetpago_id"); - sql.append(" inner join punto_venta p on p.puntoventa_id = o.puntoventa_id"); + sql.append(" inner join punto_venta p on p.puntoventa_id = b.puntoventa_id"); sql.append(" inner join ptovta_empresa ptovta on b.puntoventa_id = ptovta.puntoventa_id"); sql.append(" inner join marca m on m.marca_id = b.marca_id "); sql.append(" and m.EMPRESA_ID = ptovta.EMPRESA_ID "); @@ -143,16 +177,24 @@ public class RelatorioCancelamentoVendaCartao extends Relatorio { sql.append(" ocds_total_compra AS "); //Busca com base no numoperacion da consulta "ocds" os valores totais da compra(Cesta de compras) sql.append(" (SELECT c.numoperacion AS numoperacion_cc,"); - sql.append(" SUM((COALESCE(c.preciopagado,0) + COALESCE(c.importeoutros,0)+ COALESCE(c.importepedagio,0)+ COALESCE(c.importeseguro,0) + COALESCE(c.importetaxaembarque,0)))AS valor_cesta "); - sql.append(" FROM CAJA c WHERE c.numoperacion IN (SELECT c.numoperacion FROM ocds)"); + sql.append(" SUM((COALESCE(c.preciopagado,0) + COALESCE(c.importeoutros,0)+ COALESCE(c.importepedagio,0)+ COALESCE(c.importeseguro,0) + COALESCE(c.importetaxaembarque,0) + COALESCE(e.impingreso,0)))AS valor_cesta "); + sql.append(" FROM CAJA c INNER JOIN ocds o on c.caja_id = o.caja_id "); + sql.append(" INNER JOIN evento_extra e on e.boleto_id = o.boleto_id "); sql.append(" GROUP BY c.numoperacion),"); sql.append(" total_compra_bo_originais AS"); //Busca com base no numoperacion da consulta "boletos_originais" os valores totais da compra(Cesta de compras) sql.append(" (SELECT c.numoperacion AS numoperacion_cc, "); - sql.append(" SUM((COALESCE(c.preciopagado,0) + COALESCE(c.importeoutros,0)+ COALESCE(c.importepedagio,0)+ COALESCE(c.importeseguro,0) + COALESCE(c.importetaxaembarque,0)))AS valor_cesta "); + sql.append(" SUM((COALESCE(c.preciopagado,0) + COALESCE(c.importeoutros,0)+ COALESCE(c.importepedagio,0)+ COALESCE(c.importeseguro,0) + COALESCE(c.importetaxaembarque,0) + COALESCE(e.impingreso,0)))AS valor_cesta "); sql.append(" FROM CAJA c"); - sql.append(" WHERE c.numoperacion IN (SELECT c.numoperacion FROM boletos_originais) "); - sql.append(" GROUP BY c.numoperacion)"); + sql.append(" INNER JOIN boletos_originais bo on c.caja_id = bo.caja_id "); + sql.append(" LEFT JOIN evento_extra e on e.boleto_id = bo.boleto_id_bo "); + sql.append(" GROUP BY c.numoperacion), "); + //Busca com base no numoperacion da consulta "boletos_o_venda_internet" os valores totais da compra(Cesta de compras) + sql.append(" total_compra_bo_internet AS "); + sql.append(" (SELECT c.numoperacion AS numoperacion_cc, SUM((COALESCE(c.preciopagado,0) + COALESCE(c.importeoutros,0)+ COALESCE(c.importepedagio,0)+ "); + sql.append(" COALESCE(c.importeseguro,0) + COALESCE(c.importetaxaembarque,0) + COALESCE(e.impingreso,0)))AS valor_cesta "); + sql.append(" FROM CAJA c INNER JOIN boletos_o_venda_internet bo ON c.caja_id = bo.caja_id LEFT JOIN evento_extra e"); + sql.append(" ON e.boleto_id = bo.boleto_id_bo_vi GROUP BY c.numoperacion)"); //Realiza o join entre as Views 'ocds' e ocds_total_compra afim de obter o total da cesta de compras sql.append(" SELECT caja_id, nombpuntoventa, numtarjeta, fechorventa, numsitef, valor_venda, valor_cancelar, "); @@ -161,12 +203,11 @@ public class RelatorioCancelamentoVendaCartao extends Relatorio { sql.append(" INNER JOIN ocds_total_compra ocdst "); sql.append(" ON ocds.numoperacion = ocdst.numoperacion_cc "); - sql.append(" UNION "); - + sql.append(" UNION "); //Realiza o join entre as Views 'boletos_originais' e total_compra_bo_originais afim de obter o total da cesta de compras //Realiza também o join com as Views boletos_novos com o intuito de exibir os boletos transferidos os quais foram //geradas OCD´s - sql.append(" SELECT bn.caja_id_bn, bn.nombpuntoventa_bn, bo.numtarjeta_bo, bn.fechorventa_bn, "); + sql.append(" SELECT bn.caja_id_bn, bn.nombpuntoventa_bn, bo.numtarjeta_bo, bo.fechorventa_bo, "); sql.append(" bo.numsitef_bo, bn.valor_venda_bn, bn.valor_cancelar_bn, 'OCD' AS descmotivo, "); sql.append(" bo.numautorizacion_bo, bo.nsu_bo, numfoliosistema_bn, datadevolucao_bn, total_c_bo_originais.valor_cesta"); sql.append(" FROM boletos_originais bo "); @@ -174,9 +215,19 @@ public class RelatorioCancelamentoVendaCartao extends Relatorio { sql.append(" ON total_c_bo_originais.numoperacion_cc = bo.numoperacion "); sql.append(" INNER JOIN boletos_novos bn "); sql.append(" ON bo.boleto_id_bo = bn.boleto_id_original_bn "); - + + sql.append(" UNION "); + + //Realiza o join entre as Views 'boletos_o_venda_internet' e total_compra_bo_internet afim de obter o total da cesta de compras + //Realiza também o join com as Views boletos_novos com o intuito de exibir os boletos novos os quais foram + //geradas OCD´s + sql.append(" SELECT bn.caja_id_bn, bn.nombpuntoventa_bn, bo.numtarjeta_bo_vi, bo.fechorventa_bo_vi, bo.numsitef_bo_vi, "); + sql.append(" bn.valor_venda_bn, bn.valor_cancelar_bn, 'OCD' AS descmotivo, bo.numautorizacion_bo_vi, bo.nsu_bo_vi, "); + sql.append(" numfoliosistema_bn, datadevolucao_bn, total_c_bo_internet.valor_cesta FROM boletos_o_venda_internet bo "); + sql.append(" INNER JOIN total_compra_bo_internet total_c_bo_internet ON total_c_bo_internet.numoperacion_cc = bo.numoperacion "); + sql.append(" INNER JOIN boletos_novos bn ON bo.boleto_id_bo_vi = bn.boleto_id_original_bn "); + return sql.toString(); - }