From eb4f9600ce6ac7e7aab856117d3dc2de58883eae Mon Sep 17 00:00:00 2001 From: julio Date: Fri, 26 Jan 2018 20:23:57 +0000 Subject: [PATCH] fixes bug #10474 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@78393 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioFinanceiroAnalitico.java | 242 +++++++++++++++--- .../impl/RelatorioFinanceiroSintetico.java | 241 ++++++++++++++--- 2 files changed, 413 insertions(+), 70 deletions(-) diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroAnalitico.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroAnalitico.java index 0552c8f5e..82c7cc83f 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroAnalitico.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroAnalitico.java @@ -162,33 +162,27 @@ public class RelatorioFinanceiroAnalitico extends Relatorio { sql.append("select * from "); sql.append(" "); sql.append("(select "); - sql.append(" cd.estadoOrigem as uf, "); - sql.append(" cd.estadoId, "); - sql.append(" cd.codigo, "); - sql.append(" cd.puntoventaId, "); - sql.append(" cd.empresaId, "); - sql.append(" cd.fechorVenta, "); - sql.append(" sum(case when (cd.indreimpresion = 0 and cd.indstatusoperacion = 'F' and cd.motivocancelacion_id is null) then cd.pedagio else 0 end) as pedagio, "); - sql.append(" sum(case when (cd.indreimpresion = 0 and cd.indstatusoperacion = 'F' and cd.motivocancelacion_id is null) then cd.valorpago else 0 end) as receita_bpr, "); - sql.append(" sum(case when (cd.indstatusboleto in ('C', 'T') and cd.motivocancelacion_id in (32,10,37)) then cd.valorpago else 0 end) as receita_devol_bpr, "); - sql.append(" sum(case when (cd.indstatusboleto in ('C', 'T') and cd.motivocancelacion_id in (31)) then cd.valorpago else 0 end) as receita_cancel_bpr, "); - sql.append(" sum(case when (cd.indreimpresion = 0 and cd.indstatusboleto = 'V' and cd.tipoventa_id in (5,12,18,49)) then cd.valorpago else 0 end) as receita_gap, "); - sql.append(" sum(case when (cd.indstatusboleto in ('C', 'T') and cd.motivocancelacion_id in (32,10,37) and cd.numfoliosistema is null and cd.tipoventa_id in (5,12,18,49)) then cd.valorpago else 0 end) as receita_devol_gap, "); - sql.append(" sum(case when (cd.indreimpresion = 1 and cd.indstatusboleto = 'E' and cd.tipoventa_id in (5,12,18,49)) then cd.valorpago else 0 end) as entrega_gap, "); - sql.append(" sum(case when (cd.motivocancelacion_id is null and cd.indreimpresion = 0 and cd.indstatusoperacion = 'F' and cd.formapago_id in (2,25)) then cd.valorpago else 0 end) as cartao_credito, "); - sql.append(" sum(case when (cd.motivocancelacion_id is null and cd.indreimpresion = 0 and cd.indstatusoperacion = 'F' and cd.formapago_id in (3,26)) then cd.valorpago else 0 end) as cartao_debito, "); - sql.append(" sum(case when (cd.indstatusboleto = 'C' and cd.motivocancelacion_id in (35)) then cd.valorpago else 0 end) as receita_ocd_deb, "); - sql.append(" sum(case when (cd.indstatusboleto = 'C' and cd.motivocancelacion_id in (99) ) then cd.valorpago else 0 end) as receita_ocd_cred "); - sql.append(" "); + sql.append(" cdv.estadoOrigem as uf, "); + sql.append(" cdv.estadoId, "); + sql.append(" cdv.codigo, "); + sql.append(" cdv.puntoventaId, "); + sql.append(" cdv.empresaId, "); + sql.append(" cdv.fechorVenta, "); + sql.append(" sum(case when (cdv.indreimpresion = 0 and cdv.indstatusoperacion = 'F' and cdv.motivocancelacion_id is null) then cdv.pedagio else 0 end) as pedagio, "); + sql.append(" sum(case when (cdv.indreimpresion = 0 and cdv.indstatusoperacion = 'F' and cdv.motivocancelacion_id is null) then cdv.valorpago else 0 end) as receita_bpr, "); + sql.append(" sum(case when (cdv.indreimpresion = 0 and cdv.indstatusboleto = 'V' and cdv.tipoventa_id in (5,12,18,49)) then cdv.valorpago else 0 end) as receita_gap, "); + sql.append(" sum(case when (cdv.indreimpresion = 1 and cdv.indstatusboleto = 'E' and cdv.tipoventa_id in (5,12,18,49)) then cdv.valorpago else 0 end) as entrega_gap, "); + sql.append(" sum(case when (cdv.motivocancelacion_id is null and cdv.indreimpresion = 0 and cdv.indstatusoperacion = 'F' and cdv.formapago_id in (2,25)) then cdv.valorpago else 0 end) as cartao_credito, "); + sql.append(" sum(case when (cdv.motivocancelacion_id is null and cdv.indreimpresion = 0 and cdv.indstatusoperacion = 'F' and cdv.formapago_id in (3,26)) then cdv.valorpago else 0 end) as cartao_debito "); sql.append("from ( "); - sql.append(" select "); + sql.append(" select distinct "); sql.append(" c.caja_id as cajaid, "); sql.append(" trunc(c.feccreacion) as fechorVenta, "); sql.append(" e.empresa_id as empresaId, "); sql.append(" pv.puntoventa_id as puntoventaId, "); sql.append(" pv.numpuntoventa as codigo, "); - sql.append(" eo.estado_id as estadoId, "); - sql.append(" eo.cveestado as estadoOrigem, "); + sql.append(" (case when s.aliasorigen_id is null then eo.estado_id else eos.estado_id end) as estadoId, "); + sql.append(" (case when s.aliasorigen_id is null then eo.cveestado else eos.cveestado end) as estadoOrigem, "); sql.append(" c.indstatusboleto, "); sql.append(" c.indreimpresion, "); sql.append(" c.indcancelacion, "); @@ -202,23 +196,199 @@ public class RelatorioFinanceiroAnalitico extends Relatorio { sql.append(" coalesce(c.importeoutros, 0) as outros, "); sql.append(" cfp.formapago_id, "); sql.append(" c.motivocancelacion_id as motivocancelacion_id, "); - sql.append(" c.tipoventa_id as tipoventa_id "); - sql.append(" from caja c "); - sql.append(" inner join caja_formapago cfp on cfp.caja_id = c.caja_id "); - sql.append(" inner join punto_venta pv on pv.puntoventa_id = c.puntoventa_id "); - sql.append(" inner join forma_pago fp on cfp.formapago_id = fp.formapago_id "); - sql.append(" inner join marca m on c.marca_id = m.marca_id "); - sql.append(" inner join empresa e on e.empresa_id = m.empresa_id "); - sql.append(" inner join parada po on po.parada_id = pv.parada_id "); - sql.append(" inner join ciudad co on co.ciudad_id = po.ciudad_id "); - sql.append(" inner join estado eo on eo.estado_id = co.estado_id "); - sql.append(" where c.feccreacion between :DATE_INICIO and :DATE_FIM "); - sql.append(" and e.empresa_id = :EMPRESA_ID "); - sql.append(ufs == null ? "" : "and eo.estado_id in ( " + ufs + " ) "); + sql.append(" c.tipoventa_id as tipoventa_id, "); + sql.append(" c.indstatusoperacion "); + sql.append(" "); + sql.append(" from caja c "); + sql.append(" inner join caja_formapago cfp on cfp.caja_id = c.caja_id "); + sql.append(" inner join forma_pago fp on cfp.formapago_id = fp.formapago_id "); + sql.append(" inner join empresa e on e.empresa_id = c.empresacorrida_id "); + sql.append(" join ruta r on r.ruta_id = c.ruta_id "); + sql.append(" join parada po on po.parada_id = c.origen_id "); + sql.append(" join ciudad co on co.ciudad_id = po.ciudad_id "); + sql.append(" join estado eo on eo.estado_id = co.estado_id "); + 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(" join empresa_imposto ei on ei.empresa_id = c.empresacorrida_id and ei.estado_id = eo.estado_id "); + sql.append(" join fiscal_impressora imp on imp.numserie = c.serieimpfiscal "); + sql.append(" left join estado e on e.estado_id = imp.estadolocal_id "); + sql.append(" left join alias_servico s on s.origen_id = c.origen_id and s.destino_id = c.destino_id and (s.corrida_id = c.corrida_id or s.corrida_id is null) and s.ruta_id = c.ruta_id "); + 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 "); + sql.append(" left join parada pds on pds.parada_id = s.aliasdestino_id "); + 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(" left join empresa_imposto eis on eis.empresa_id = c.empresacorrida_id and eis.estado_id = eos.estado_id "); + sql.append(" left join fiscal_r4 r4 on r4.caja_id = c.caja_id "); + sql.append(" left join fiscal_r2 r2 on r2.numserie20 = imp.numserie20 and r2.datamov = to_char(c.feccreacion, 'YYYYMMDD') "); + sql.append(" join inscricao_estadual ie on c.empresacorrida_id = ie.empresa_id and ie.estado_id = coalesce(eos.estado_id, eo.estado_id) and ie.activo = 1 "); + sql.append(" join ciudad cie on cie.ciudad_id = ie.ciudad_id "); + sql.append(" join estado eie on eie.estado_id = cie.estado_id "); + sql.append(" join marca ma on c.marca_id = ma.marca_id "); + sql.append(" join empresa ep on ep.empresa_id = ma.empresa_id "); + sql.append(" join punto_venta pv on pv.puntoventa_id = c.puntoventa_id "); + sql.append(" left join parada ppv on ppv.parada_id = pv.parada_id "); + sql.append(" left join ciudad cpv on cpv.ciudad_id = ppv.ciudad_id "); + sql.append(" left join estado epv on epv.estado_id = cpv.estado_id "); + sql.append(" "); + sql.append(" where c.activo = 1 and po.activo = 1 and co.activo = 1 and eo.activo = 1 and ei.activo = 1 "); + sql.append(" and coalesce(case when s.aliasorigen_id is null then ei.activo else eis.activo end, 0) = 1 "); + sql.append(" and c.serieimpfiscal is not null "); + sql.append(" and ((c.indreimpresion = 0 and c.motivocancelacion_id is null and c.numfoliosistema is not null) or (c.indstatusboleto = 'E' and c.indreimpresion = 1)) "); + sql.append(" and (coalesce(c.preciopagado,0) + coalesce(c.importetaxaembarque,0) + coalesce(c.importeseguro,0) + coalesce(c.importepedagio,0) + coalesce(c.importeoutros,0)) > 0 "); + sql.append(" and c.feccreacion >= :DATE_INICIO and c.feccreacion <= :DATE_FIM "); + sql.append(" and c.empresacorrida_id = :EMPRESA_ID "); + sql.append(ufs == null ? "" : " and ((case when s.aliasorigen_id is null then eo.estado_id else eos.estado_id end) in ( " + ufs + " )) "); sql.append(pdvs == null ? "" : "and pv.puntoventa_id in ( " + pdvs + " ) "); sql.append(tipoptovtaId == -1 ? "" : "and pv.tipoptovta_id = " + tipoptovtaId); - sql.append(" ) cd "); - sql.append(" group by cd.estadoOrigem, cd.estadoId, cd.codigo, cd.puntoventaId, cd.empresaId, cd.fechorVenta ) agrc "); + sql.append(" "); + sql.append("union all "); + sql.append(" "); + sql.append(" select distinct "); + sql.append(" c.caja_id as cajaid, "); + sql.append(" trunc(c.feccreacion) as fechorVenta, "); + sql.append(" e.empresa_id as empresaId, "); + sql.append(" pv.puntoventa_id as puntoventaId, "); + sql.append(" pv.numpuntoventa as codigo, "); + sql.append(" coalesce(ae.estado_id, (case when s.aliasorigen_id is null then eo.estado_id else eos.estado_id end)) as estadoId, "); + sql.append(" coalesce(ae.cveestado,(case when s.aliasorigen_id is null then eo.cveestado else eos.cveestado end)) as estadoOrigem, "); + sql.append(" c.indstatusboleto, "); + sql.append(" c.indreimpresion, "); + sql.append(" c.indcancelacion, "); + sql.append(" c.numfoliosistema, "); + sql.append(" coalesce(cfp.importe, 0) as valorpago, "); + sql.append(" coalesce(c.preciobase, 0) as precobase, "); + sql.append(" coalesce(c.preciopagado, 0) as tarifa, "); + sql.append(" coalesce(c.importetaxaembarque, 0) as taxaEmbarque, "); + sql.append(" coalesce(c.importepedagio, 0) as pedagio, "); + sql.append(" coalesce(c.importeseguro, 0) as seguro, "); + sql.append(" coalesce(c.importeoutros, 0) as outros, "); + sql.append(" cfp.formapago_id, "); + sql.append(" c.motivocancelacion_id as motivocancelacion_id, "); + sql.append(" c.tipoventa_id as tipoventa_id, "); + sql.append(" c.indstatusoperacion "); + sql.append("from caja c "); + sql.append(" inner join caja_formapago cfp on cfp.caja_id = c.caja_id "); + sql.append(" inner join forma_pago fp on cfp.formapago_id = fp.formapago_id "); + sql.append(" join marca m on c.marca_id = m.marca_id "); + sql.append(" join empresa e on e.empresa_id = m.empresa_id "); + sql.append(" join aidf a on a.aidf_id = c.aidf_id "); + sql.append(" join punto_venta pv on pv.puntoventa_id = c.puntoventa_id "); + sql.append(" join ciudad ce on ce.ciudad_id = e.ciudad_id "); + sql.append(" join estado ee on ee.estado_id = ce.estado_id "); + sql.append(" join parada po on po.parada_id = c.origen_id "); + sql.append(" join ciudad co on co.ciudad_id = po.ciudad_id "); + sql.append(" join estado eo on eo.estado_id = co.estado_id "); + 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 and (s.corrida_id = c.corrida_id or s.corrida_id is null) "); + sql.append(" and s.ruta_id = c.ruta_id "); + 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 "); + sql.append(" left join parada pds on pds.parada_id = s.aliasdestino_id "); + 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(" left join estado ae on ae.estado_id = a.estado_id "); + sql.append(" join inscricao_estadual ie on e.empresa_id = ie.empresa_id "); + sql.append(" and ie.estado_id = coalesce(ae.estado_id, eos.estado_id) and ie.activo = 1 "); + sql.append(" join ciudad cie on cie.ciudad_id = ie.ciudad_id "); + sql.append(" join estado eie on eie.estado_id = cie.estado_id "); + sql.append(" join empresa_imposto ei on ei.empresa_id = c.empresacorrida_id "); + sql.append(" and ei.estado_id = coalesce(ae.estado_id, eos.estado_id) and ei.activo = 1 "); + sql.append("where ((c.tipoventa_id = 3 and c.indstatusboleto = 'V' and c.indreimpresion = 0) "); + sql.append(" or (c.tipoventa_id in (12,18) and c.indstatusboleto = 'E' and c.numfoliosistema = c.numfoliopreimpreso)) "); + sql.append(" and (c.motivocancelacion_id is null or c.motivocancelacion_id <> 35) "); + sql.append(" and c.indcancelacion = 0 "); + sql.append(" and c.indstatusboleto = 'V' and c.indreimpresion = 0 "); + sql.append(" and c.feccreacion >= :DATE_INICIO and c.feccreacion <= :DATE_FIM "); + sql.append(" and c.empresacorrida_id = :EMPRESA_ID "); + sql.append(ufs == null ? "" : " and coalesce(ae.estado_id, eos.estado_id) in ( " + ufs + " ) "); + sql.append(pdvs == null ? "" : "and pv.puntoventa_id in ( " + pdvs + " ) "); + sql.append(tipoptovtaId == -1 ? "" : "and pv.tipoptovta_id = " + tipoptovtaId); + sql.append(" ) cdv "); + sql.append(" group by cdv.estadoOrigem, cdv.estadoId, cdv.codigo, cdv.puntoventaId, cdv.empresaId, cdv.fechorVenta ) agrc "); + sql.append(" "); + sql.append("left join (select "); + sql.append(" cdc.estadoOrigem as uf, "); + sql.append(" cdc.estadoId, "); + sql.append(" cdc.codigo, "); + sql.append(" cdc.puntoventaId, "); + sql.append(" cdc.empresaId, "); + sql.append(" cdc.fechorVenta, "); + sql.append(" sum(case when (cdc.indstatusboleto in ('C', 'T') and cdc.motivocancelacion_id in (32,10,37)) then cdc.valorpago else 0 end) as receita_devol_bpr, "); + sql.append(" sum(case when (cdc.indstatusboleto in ('C', 'T') and cdc.motivocancelacion_id in (31)) then cdc.valorpago else 0 end) as receita_cancel_bpr, "); + sql.append(" sum(case when (cdc.indstatusboleto in ('C', 'T') and cdc.motivocancelacion_id in (32,10,37) and cdc.numfoliosistema is null and cdc.tipoventa_id in (5,12,18,49)) then cdc.valorpago else 0 end) as receita_devol_gap, "); + sql.append(" sum(case when (cdc.indstatusboleto = 'C' and cdc.motivocancelacion_id in (35)) then cdc.valorpago else 0 end) as receita_ocd_deb, "); + sql.append(" sum(case when (cdc.indstatusboleto = 'C' and cdc.motivocancelacion_id in (99) ) then cdc.valorpago else 0 end) as receita_ocd_cred "); + sql.append(" from ( "); + sql.append(" select distinct "); + sql.append(" c.caja_id as cajaid, "); + sql.append(" trunc(c.feccreacion) as fechorVenta, "); + sql.append(" e.empresa_id as empresaId, "); + sql.append(" ptv.puntoventa_id as puntoventaId, "); + sql.append(" ptv.numpuntoventa as codigo, "); + sql.append(" coalesce(esaidf.estado_id, eos.estado_id, est.estado_id) as estadoId, "); + sql.append(" coalesce(esaidf.cveestado, eos.cveestado, est.cveestado) as estadoOrigem, "); + sql.append(" c.indstatusboleto, "); + sql.append(" c.indreimpresion, "); + sql.append(" c.indcancelacion, "); + sql.append(" c.numfoliosistema, "); + sql.append(" coalesce(cfp.importe, 0) as valorpago, "); + sql.append(" coalesce(c.preciobase, 0) as precobase, "); + sql.append(" coalesce(c.preciopagado, 0) as tarifa, "); + sql.append(" coalesce(c.importetaxaembarque, 0) as taxaEmbarque, "); + sql.append(" coalesce(c.importepedagio, 0) as pedagio, "); + sql.append(" coalesce(c.importeseguro, 0) as seguro, "); + sql.append(" coalesce(c.importeoutros, 0) as outros, "); + sql.append(" cfp.formapago_id, "); + sql.append(" c.motivocancelacion_id as motivocancelacion_id, "); + sql.append(" c.tipoventa_id as tipoventa_id, "); + sql.append(" c.indstatusoperacion "); + sql.append(" "); + sql.append("from caja c "); + sql.append(" inner join caja_formapago cfp on cfp.caja_id = c.caja_id "); + sql.append(" inner join forma_pago fp on cfp.formapago_id = fp.formapago_id "); + sql.append("inner join marca m on m.marca_id = c.marca_id and m.activo = 1 "); + sql.append("inner join empresa e on e.empresa_id = m.empresa_id "); + sql.append("inner join punto_venta ptv on ptv.puntoventa_id = c.puntoventa_id "); + sql.append("inner join parada ori on (c.origen_id = ori.parada_id ) "); + sql.append("inner join parada des on (c.destino_id = des.parada_id ) "); + sql.append("inner join ciudad co on (co.ciudad_id = ori.ciudad_id ) "); + sql.append("inner join ciudad cd on (cd.ciudad_id = des.ciudad_id ) "); + sql.append("inner join estado est on est.estado_id = co.estado_id "); + sql.append("left join punto_venta ptvo on ptvo.puntoventa_id = c.ptovtaventa_id "); + sql.append("left join alias_servico s on s.origen_id = c.origen_id "); + sql.append(" and s.destino_id = c.destino_id and (s.corrida_id = c.corrida_id or s.corrida_id is null) "); + sql.append(" and s.ruta_id = c.ruta_id "); + 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 "); + sql.append("left join parada pds on pds.parada_id = s.aliasdestino_id "); + 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("left join aidf aidf on aidf.aidf_id = c.aidf_id and c.tipoventa_id = 3 "); + sql.append("left join estado esaidf on esaidf.estado_id = aidf.estado_id "); + sql.append("join inscricao_estadual ie on e.empresa_id = ie.empresa_id "); + sql.append(" and ie.estado_id = coalesce(aidf.estado_id, eos.estado_id, est.estado_id) and ie.activo = 1 "); + sql.append("join empresa_imposto ei on ei.empresa_id = e.empresa_id "); + sql.append(" and ei.estado_id = coalesce(aidf.estado_id, eos.estado_id, est.estado_id) and ei.activo = 1 "); + sql.append("where c.motivocancelacion_id in (31,32,10,37,99,36) "); + sql.append(" and c.indcancelacion = 1 "); + sql.append(" and c.numfoliopreimpreso is not null "); + sql.append(" and c.feccreacion >= :DATE_INICIO and c.feccreacion <= :DATE_FIM "); + sql.append(" and c.empresacorrida_id = :EMPRESA_ID "); + sql.append(ufs == null ? "" : " and coalesce(esaidf.estado_id, eos.estado_id, est.estado_id) in ( " + ufs + " ) "); + sql.append(pdvs == null ? "" : "and ptv.puntoventa_id in ( " + pdvs + " ) "); + sql.append(tipoptovtaId == -1 ? "" : "and ptv.tipoptovta_id = " + tipoptovtaId); + sql.append(" and c.categoria_id not in (select valorconstante from constante where nombconstante = 'GRATUIDADE_CRIANCA') "); + sql.append(" ) cdc "); + sql.append(" group by cdc.estadoOrigem, cdc.estadoId, cdc.codigo, cdc.puntoventaId, cdc.empresaId, cdc.fechorVenta "); + sql.append(") canc on agrc.empresaId = canc.empresaId and agrc.puntoventaId = canc.puntoventaId and agrc.estadoId = canc.estadoId and agrc.fechorVenta = canc.fechorVenta "); sql.append("left join ( "); sql.append(" select ed.puntoventaId, ed.estadoId, ed.empresaId, "); sql.append(" ed.fechorVenta, "); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroSintetico.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroSintetico.java index 95765b2be..67fcf2107 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroSintetico.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroSintetico.java @@ -168,36 +168,34 @@ public class RelatorioFinanceiroSintetico extends Relatorio { sql.append("select * from "); sql.append(" "); sql.append("(select "); - sql.append(" cd.estadoOrigem as uf, "); - sql.append(" cd.estadoId, "); - sql.append(" cd.codigo, "); - sql.append(" cd.puntoventaId, "); - sql.append(" cd.empresaId, "); - sql.append(" sum(case when (cd.indreimpresion = 0 and cd.indstatusoperacion = 'F' and cd.motivocancelacion_id is null) then cd.pedagio else 0 end) as pedagio, "); - sql.append(" sum(case when (cd.indreimpresion = 0 and cd.indstatusoperacion = 'F' and cd.motivocancelacion_id is null) then cd.valorpago else 0 end) as receita_bpr, "); - sql.append(" sum(case when (cd.indstatusboleto in ('C', 'T') and cd.motivocancelacion_id in (32,10,37)) then cd.valorpago else 0 end) as receita_devol_bpr, "); - sql.append(" sum(case when (cd.indstatusboleto in ('C', 'T') and cd.motivocancelacion_id in (31)) then cd.valorpago else 0 end) as receita_cancel_bpr, "); - sql.append(" sum(case when (cd.indreimpresion = 0 and cd.indstatusboleto = 'V' and cd.tipoventa_id in (5,12,18,49)) then cd.valorpago else 0 end) as receita_gap, "); - sql.append(" sum(case when (cd.indstatusboleto in ('C', 'T') and cd.motivocancelacion_id in (32,10,37) and cd.numfoliosistema is null and cd.tipoventa_id in (5,12,18,49)) then cd.valorpago else 0 end) as receita_devol_gap, "); - sql.append(" sum(case when (cd.indstatusboleto = 'E') then cd.valorpago else 0 end) as entrega_gap, "); - sql.append(" sum(case when (cd.indreimpresion = 0 and cd.indstatusoperacion = 'F' and cd.motivocancelacion_id is null and cd.formapago_id in (2,25)) then cd.valorpago else 0 end) as cartao_credito, "); - sql.append(" sum(case when (cd.indreimpresion = 0 and cd.indstatusoperacion = 'F' and cd.motivocancelacion_id is null and cd.formapago_id in (3,26)) then cd.valorpago else 0 end) as cartao_debito, "); - sql.append(" sum(case when (cd.indstatusboleto = 'C' and cd.motivocancelacion_id in (35)) then cd.valorpago else 0 end) as receita_ocd_deb, "); - sql.append(" sum(case when (cd.indstatusboleto = 'C' and cd.motivocancelacion_id in (99) ) then cd.valorpago else 0 end) as receita_ocd_cred "); + sql.append(" cdv.estadoOrigem as uf, "); + sql.append(" cdv.estadoId, "); + sql.append(" cdv.codigo, "); + sql.append(" cdv.puntoventaId, "); + sql.append(" cdv.empresaId, "); + sql.append(" cdv.fechorVenta, "); + sql.append(" sum(case when (cdv.indreimpresion = 0 and cdv.indstatusoperacion = 'F' and cdv.motivocancelacion_id is null) then cdv.pedagio else 0 end) as pedagio, "); + sql.append(" sum(case when (cdv.indreimpresion = 0 and cdv.indstatusoperacion = 'F' and cdv.motivocancelacion_id is null) then cdv.valorpago else 0 end) as receita_bpr, "); + sql.append(" sum(case when (cdv.indreimpresion = 0 and cdv.indstatusboleto = 'V' and cdv.tipoventa_id in (5,12,18,49)) then cdv.valorpago else 0 end) as receita_gap, "); + sql.append(" sum(case when (cdv.indreimpresion = 1 and cdv.indstatusboleto = 'E' and cdv.tipoventa_id in (5,12,18,49)) then cdv.valorpago else 0 end) as entrega_gap, "); + sql.append(" sum(case when (cdv.motivocancelacion_id is null and cdv.indreimpresion = 0 and cdv.indstatusoperacion = 'F' and cdv.formapago_id in (2,25)) then cdv.valorpago else 0 end) as cartao_credito, "); + sql.append(" sum(case when (cdv.motivocancelacion_id is null and cdv.indreimpresion = 0 and cdv.indstatusoperacion = 'F' and cdv.formapago_id in (3,26)) then cdv.valorpago else 0 end) as cartao_debito "); sql.append("from ( "); - sql.append(" select "); + sql.append(" select distinct "); sql.append(" c.caja_id as cajaid, "); + sql.append(" trunc(c.feccreacion) as fechorVenta, "); sql.append(" e.empresa_id as empresaId, "); sql.append(" pv.puntoventa_id as puntoventaId, "); sql.append(" pv.numpuntoventa as codigo, "); - sql.append(" eo.estado_id as estadoId, "); - sql.append(" eo.cveestado as estadoOrigem, "); + sql.append(" (case when s.aliasorigen_id is null then eo.estado_id else eos.estado_id end) as estadoId, "); + sql.append(" (case when s.aliasorigen_id is null then eo.cveestado else eos.cveestado end) as estadoOrigem, "); sql.append(" c.indstatusboleto, "); sql.append(" c.indreimpresion, "); sql.append(" c.indcancelacion, "); sql.append(" c.numfoliosistema, "); sql.append(" coalesce(cfp.importe, 0) as valorpago, "); sql.append(" coalesce(c.preciobase, 0) as precobase, "); + sql.append(" coalesce(c.preciopagado, 0) as tarifa, "); sql.append(" coalesce(c.importetaxaembarque, 0) as taxaEmbarque, "); sql.append(" coalesce(c.importepedagio, 0) as pedagio, "); sql.append(" coalesce(c.importeseguro, 0) as seguro, "); @@ -205,23 +203,198 @@ public class RelatorioFinanceiroSintetico extends Relatorio { sql.append(" cfp.formapago_id, "); sql.append(" c.motivocancelacion_id as motivocancelacion_id, "); sql.append(" c.tipoventa_id as tipoventa_id, "); - sql.append(" c.indstatusoperacion as indstatusoperacion "); - sql.append(" from caja c "); - sql.append(" inner join caja_formapago cfp on cfp.caja_id = c.caja_id "); - sql.append(" inner join punto_venta pv on pv.puntoventa_id = c.puntoventa_id "); - sql.append(" inner join forma_pago fp on cfp.formapago_id = fp.formapago_id "); - sql.append(" inner join marca m on c.marca_id = m.marca_id "); - sql.append(" inner join empresa e on e.empresa_id = m.empresa_id "); - sql.append(" inner join parada po on po.parada_id = pv.parada_id "); - sql.append(" inner join ciudad co on co.ciudad_id = po.ciudad_id "); - sql.append(" inner join estado eo on eo.estado_id = co.estado_id "); - sql.append(" where c.feccreacion between :DATE_INICIO and :DATE_FIM "); - sql.append(" and e.empresa_id = :EMPRESA_ID "); - sql.append(ufs == null ? "" : "and eo.estado_id in ( " + ufs + " ) "); + sql.append(" c.indstatusoperacion "); + sql.append(" "); + sql.append(" from caja c "); + sql.append(" inner join caja_formapago cfp on cfp.caja_id = c.caja_id "); + sql.append(" inner join forma_pago fp on cfp.formapago_id = fp.formapago_id "); + sql.append(" inner join empresa e on e.empresa_id = c.empresacorrida_id "); + sql.append(" join ruta r on r.ruta_id = c.ruta_id "); + sql.append(" join parada po on po.parada_id = c.origen_id "); + sql.append(" join ciudad co on co.ciudad_id = po.ciudad_id "); + sql.append(" join estado eo on eo.estado_id = co.estado_id "); + 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(" join empresa_imposto ei on ei.empresa_id = c.empresacorrida_id and ei.estado_id = eo.estado_id "); + sql.append(" join fiscal_impressora imp on imp.numserie = c.serieimpfiscal "); + sql.append(" left join estado e on e.estado_id = imp.estadolocal_id "); + sql.append(" left join alias_servico s on s.origen_id = c.origen_id and s.destino_id = c.destino_id and (s.corrida_id = c.corrida_id or s.corrida_id is null) and s.ruta_id = c.ruta_id "); + 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 "); + sql.append(" left join parada pds on pds.parada_id = s.aliasdestino_id "); + 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(" left join empresa_imposto eis on eis.empresa_id = c.empresacorrida_id and eis.estado_id = eos.estado_id "); + sql.append(" left join fiscal_r4 r4 on r4.caja_id = c.caja_id "); + sql.append(" left join fiscal_r2 r2 on r2.numserie20 = imp.numserie20 and r2.datamov = to_char(c.feccreacion, 'YYYYMMDD') "); + sql.append(" join inscricao_estadual ie on c.empresacorrida_id = ie.empresa_id and ie.estado_id = coalesce(eos.estado_id, eo.estado_id) and ie.activo = 1 "); + sql.append(" join ciudad cie on cie.ciudad_id = ie.ciudad_id "); + sql.append(" join estado eie on eie.estado_id = cie.estado_id "); + sql.append(" join marca ma on c.marca_id = ma.marca_id "); + sql.append(" join empresa ep on ep.empresa_id = ma.empresa_id "); + sql.append(" join punto_venta pv on pv.puntoventa_id = c.puntoventa_id "); + sql.append(" left join parada ppv on ppv.parada_id = pv.parada_id "); + sql.append(" left join ciudad cpv on cpv.ciudad_id = ppv.ciudad_id "); + sql.append(" left join estado epv on epv.estado_id = cpv.estado_id "); + sql.append(" "); + sql.append(" where c.activo = 1 and po.activo = 1 and co.activo = 1 and eo.activo = 1 and ei.activo = 1 "); + sql.append(" and coalesce(case when s.aliasorigen_id is null then ei.activo else eis.activo end, 0) = 1 "); + sql.append(" and c.serieimpfiscal is not null "); + sql.append(" and ((c.indreimpresion = 0 and c.motivocancelacion_id is null and c.numfoliosistema is not null) or (c.indstatusboleto = 'E' and c.indreimpresion = 1)) "); + sql.append(" and (coalesce(c.preciopagado,0) + coalesce(c.importetaxaembarque,0) + coalesce(c.importeseguro,0) + coalesce(c.importepedagio,0) + coalesce(c.importeoutros,0)) > 0 "); + sql.append(" and c.feccreacion >= :DATE_INICIO and c.feccreacion <= :DATE_FIM "); + sql.append(" and c.empresacorrida_id = :EMPRESA_ID "); + sql.append(ufs == null ? "" : " and ((case when s.aliasorigen_id is null then eo.estado_id else eos.estado_id end) in ( " + ufs + " )) "); sql.append(pdvs == null ? "" : "and pv.puntoventa_id in ( " + pdvs + " ) "); sql.append(tipoptovtaId == -1 ? "" : "and pv.tipoptovta_id = " + tipoptovtaId); - sql.append(" ) cd "); - sql.append(" group by cd.estadoOrigem, cd.estadoId, cd.codigo, cd.puntoventaId, cd.empresaId ) agrc "); + sql.append(" "); + sql.append("union all "); + sql.append(" "); + sql.append(" select distinct "); + sql.append(" c.caja_id as cajaid, "); + sql.append(" trunc(c.feccreacion) as fechorVenta, "); + sql.append(" e.empresa_id as empresaId, "); + sql.append(" pv.puntoventa_id as puntoventaId, "); + sql.append(" pv.numpuntoventa as codigo, "); + sql.append(" coalesce(ae.estado_id, (case when s.aliasorigen_id is null then eo.estado_id else eos.estado_id end)) as estadoId, "); + sql.append(" coalesce(ae.cveestado,(case when s.aliasorigen_id is null then eo.cveestado else eos.cveestado end)) as estadoOrigem, "); + sql.append(" c.indstatusboleto, "); + sql.append(" c.indreimpresion, "); + sql.append(" c.indcancelacion, "); + sql.append(" c.numfoliosistema, "); + sql.append(" coalesce(cfp.importe, 0) as valorpago, "); + sql.append(" coalesce(c.preciobase, 0) as precobase, "); + sql.append(" coalesce(c.preciopagado, 0) as tarifa, "); + sql.append(" coalesce(c.importetaxaembarque, 0) as taxaEmbarque, "); + sql.append(" coalesce(c.importepedagio, 0) as pedagio, "); + sql.append(" coalesce(c.importeseguro, 0) as seguro, "); + sql.append(" coalesce(c.importeoutros, 0) as outros, "); + sql.append(" cfp.formapago_id, "); + sql.append(" c.motivocancelacion_id as motivocancelacion_id, "); + sql.append(" c.tipoventa_id as tipoventa_id, "); + sql.append(" c.indstatusoperacion "); + sql.append("from caja c "); + sql.append(" inner join caja_formapago cfp on cfp.caja_id = c.caja_id "); + sql.append(" inner join forma_pago fp on cfp.formapago_id = fp.formapago_id "); + sql.append(" join marca m on c.marca_id = m.marca_id "); + sql.append(" join empresa e on e.empresa_id = m.empresa_id "); + sql.append(" join aidf a on a.aidf_id = c.aidf_id "); + sql.append(" join punto_venta pv on pv.puntoventa_id = c.puntoventa_id "); + sql.append(" join ciudad ce on ce.ciudad_id = e.ciudad_id "); + sql.append(" join estado ee on ee.estado_id = ce.estado_id "); + sql.append(" join parada po on po.parada_id = c.origen_id "); + sql.append(" join ciudad co on co.ciudad_id = po.ciudad_id "); + sql.append(" join estado eo on eo.estado_id = co.estado_id "); + 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 and (s.corrida_id = c.corrida_id or s.corrida_id is null) "); + sql.append(" and s.ruta_id = c.ruta_id "); + 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 "); + sql.append(" left join parada pds on pds.parada_id = s.aliasdestino_id "); + 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(" left join estado ae on ae.estado_id = a.estado_id "); + sql.append(" join inscricao_estadual ie on e.empresa_id = ie.empresa_id "); + sql.append(" and ie.estado_id = coalesce(ae.estado_id, eos.estado_id) and ie.activo = 1 "); + sql.append(" join ciudad cie on cie.ciudad_id = ie.ciudad_id "); + sql.append(" join estado eie on eie.estado_id = cie.estado_id "); + sql.append(" join empresa_imposto ei on ei.empresa_id = c.empresacorrida_id "); + sql.append(" and ei.estado_id = coalesce(ae.estado_id, eos.estado_id) and ei.activo = 1 "); + sql.append("where ((c.tipoventa_id = 3 and c.indstatusboleto = 'V' and c.indreimpresion = 0) "); + sql.append(" or (c.tipoventa_id in (12,18) and c.indstatusboleto = 'E' and c.numfoliosistema = c.numfoliopreimpreso)) "); + sql.append(" and (c.motivocancelacion_id is null or c.motivocancelacion_id <> 35) "); + sql.append(" and c.indcancelacion = 0 "); + sql.append(" and c.indstatusboleto = 'V' and c.indreimpresion = 0 "); + sql.append(" and c.feccreacion >= :DATE_INICIO and c.feccreacion <= :DATE_FIM "); + sql.append(" and c.empresacorrida_id = :EMPRESA_ID "); + sql.append(ufs == null ? "" : " and coalesce(ae.estado_id, eos.estado_id) in ( " + ufs + " ) "); + sql.append(pdvs == null ? "" : "and pv.puntoventa_id in ( " + pdvs + " ) "); + sql.append(tipoptovtaId == -1 ? "" : "and pv.tipoptovta_id = " + tipoptovtaId); + sql.append(" ) cdv "); + sql.append(" group by cdv.estadoOrigem, cdv.estadoId, cdv.codigo, cdv.puntoventaId, cdv.empresaId, cdv.fechorVenta ) agrc "); + sql.append(" "); + sql.append("left join (select "); + sql.append(" cdc.estadoOrigem as uf, "); + sql.append(" cdc.estadoId, "); + sql.append(" cdc.codigo, "); + sql.append(" cdc.puntoventaId, "); + sql.append(" cdc.empresaId, "); + sql.append(" cdc.fechorVenta, "); + sql.append(" sum(case when (cdc.indstatusboleto in ('C', 'T') and cdc.motivocancelacion_id in (32,10,37)) then cdc.valorpago else 0 end) as receita_devol_bpr, "); + sql.append(" sum(case when (cdc.indstatusboleto in ('C', 'T') and cdc.motivocancelacion_id in (31)) then cdc.valorpago else 0 end) as receita_cancel_bpr, "); + sql.append(" sum(case when (cdc.indstatusboleto in ('C', 'T') and cdc.motivocancelacion_id in (32,10,37) and cdc.numfoliosistema is null and cdc.tipoventa_id in (5,12,18,49)) then cdc.valorpago else 0 end) as receita_devol_gap, "); + sql.append(" sum(case when (cdc.indstatusboleto = 'C' and cdc.motivocancelacion_id in (35)) then cdc.valorpago else 0 end) as receita_ocd_deb, "); + sql.append(" sum(case when (cdc.indstatusboleto = 'C' and cdc.motivocancelacion_id in (99) ) then cdc.valorpago else 0 end) as receita_ocd_cred "); + sql.append(" from ( "); + sql.append(" select distinct "); + sql.append(" c.caja_id as cajaid, "); + sql.append(" trunc(c.feccreacion) as fechorVenta, "); + sql.append(" e.empresa_id as empresaId, "); + sql.append(" ptv.puntoventa_id as puntoventaId, "); + sql.append(" ptv.numpuntoventa as codigo, "); + sql.append(" coalesce(esaidf.estado_id, eos.estado_id, est.estado_id) as estadoId, "); + sql.append(" coalesce(esaidf.cveestado, eos.cveestado, est.cveestado) as estadoOrigem, "); + sql.append(" c.indstatusboleto, "); + sql.append(" c.indreimpresion, "); + sql.append(" c.indcancelacion, "); + sql.append(" c.numfoliosistema, "); + sql.append(" coalesce(cfp.importe, 0) as valorpago, "); + sql.append(" coalesce(c.preciobase, 0) as precobase, "); + sql.append(" coalesce(c.preciopagado, 0) as tarifa, "); + sql.append(" coalesce(c.importetaxaembarque, 0) as taxaEmbarque, "); + sql.append(" coalesce(c.importepedagio, 0) as pedagio, "); + sql.append(" coalesce(c.importeseguro, 0) as seguro, "); + sql.append(" coalesce(c.importeoutros, 0) as outros, "); + sql.append(" cfp.formapago_id, "); + sql.append(" c.motivocancelacion_id as motivocancelacion_id, "); + sql.append(" c.tipoventa_id as tipoventa_id, "); + sql.append(" c.indstatusoperacion "); + sql.append(" "); + sql.append("from caja c "); + sql.append(" inner join caja_formapago cfp on cfp.caja_id = c.caja_id "); + sql.append(" inner join forma_pago fp on cfp.formapago_id = fp.formapago_id "); + sql.append("inner join marca m on m.marca_id = c.marca_id and m.activo = 1 "); + sql.append("inner join empresa e on e.empresa_id = m.empresa_id "); + sql.append("inner join punto_venta ptv on ptv.puntoventa_id = c.puntoventa_id "); + sql.append("inner join parada ori on (c.origen_id = ori.parada_id ) "); + sql.append("inner join parada des on (c.destino_id = des.parada_id ) "); + sql.append("inner join ciudad co on (co.ciudad_id = ori.ciudad_id ) "); + sql.append("inner join ciudad cd on (cd.ciudad_id = des.ciudad_id ) "); + sql.append("inner join estado est on est.estado_id = co.estado_id "); + sql.append("left join punto_venta ptvo on ptvo.puntoventa_id = c.ptovtaventa_id "); + sql.append("left join alias_servico s on s.origen_id = c.origen_id "); + sql.append(" and s.destino_id = c.destino_id and (s.corrida_id = c.corrida_id or s.corrida_id is null) "); + sql.append(" and s.ruta_id = c.ruta_id "); + 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 "); + sql.append("left join parada pds on pds.parada_id = s.aliasdestino_id "); + 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("left join aidf aidf on aidf.aidf_id = c.aidf_id and c.tipoventa_id = 3 "); + sql.append("left join estado esaidf on esaidf.estado_id = aidf.estado_id "); + sql.append("join inscricao_estadual ie on e.empresa_id = ie.empresa_id "); + sql.append(" and ie.estado_id = coalesce(aidf.estado_id, eos.estado_id, est.estado_id) and ie.activo = 1 "); + sql.append("join empresa_imposto ei on ei.empresa_id = e.empresa_id "); + sql.append(" and ei.estado_id = coalesce(aidf.estado_id, eos.estado_id, est.estado_id) and ei.activo = 1 "); + sql.append("where c.motivocancelacion_id in (31,32,10,37,99,36) "); + sql.append(" and c.indcancelacion = 1 "); + sql.append(" and c.numfoliopreimpreso is not null "); + sql.append(" and c.feccreacion >= :DATE_INICIO and c.feccreacion <= :DATE_FIM "); + sql.append(" and c.empresacorrida_id = :EMPRESA_ID "); + sql.append(ufs == null ? "" : " and coalesce(esaidf.estado_id, eos.estado_id, est.estado_id) in ( " + ufs + " ) "); + sql.append(pdvs == null ? "" : "and ptv.puntoventa_id in ( " + pdvs + " ) "); + sql.append(tipoptovtaId == -1 ? "" : "and ptv.tipoptovta_id = " + tipoptovtaId); + sql.append(" and c.categoria_id not in (select valorconstante from constante where nombconstante = 'GRATUIDADE_CRIANCA') "); + sql.append(" ) cdc "); + sql.append(" group by cdc.estadoOrigem, cdc.estadoId, cdc.codigo, cdc.puntoventaId, cdc.empresaId, cdc.fechorVenta "); + sql.append(") canc on agrc.empresaId = canc.empresaId and agrc.puntoventaId = canc.puntoventaId and agrc.estadoId = canc.estadoId and agrc.fechorVenta = canc.fechorVenta "); sql.append("left join ( "); sql.append(" select ed.puntoventaId, ed.estadoId, ed.empresaId, "); sql.append(" sum(case when tipoeventoextra_id = 2 and indtipo = 1 then impingreso else 0 end) as taxaEmbarque, ");