From 9e485a64b8709836b896aaf4b316054f93def472 Mon Sep 17 00:00:00 2001 From: fabio Date: Wed, 14 Mar 2018 20:58:15 +0000 Subject: [PATCH] Fixes bug #10732 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@79920 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioFinanceiroSintetico.java | 610 +++++++++--------- 1 file changed, 316 insertions(+), 294 deletions(-) diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroSintetico.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroSintetico.java index 1155f765c..613b484f2 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroSintetico.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroSintetico.java @@ -156,308 +156,330 @@ public class RelatorioFinanceiroSintetico extends Relatorio { private String getSql(String ufs, String pdvs, Integer tipoptovtaId) { - StringBuilder sql = new StringBuilder(); - sql.append("select * from "); - sql.append(" "); - sql.append("(select "); - 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.taxaEmbarque else 0 end) as taxaEmbarque, "); - 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 in ('V', 'T') 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((select sum(cfp.importe) from caja_formapago cfp where cfp.caja_id = cdv.cajaid and cfp.activo = 1 and cfp.FORMAPAGO_ID in (2,25) and (cdv.motivocancelacion_id IS NULL AND cdv.indreimpresion = 0 AND cdv.indstatusoperacion = 'F')) ) as cartao_credito, "); - sql.append(" sum((select sum(cfp.importe) from caja_formapago cfp where cfp.caja_id = cdv.cajaid and cfp.activo = 1 and cfp.FORMAPAGO_ID in (3,26) and (cdv.motivocancelacion_id IS NULL AND cdv.indreimpresion = 0 AND cdv.indstatusoperacion = 'F')) ) as cartao_debito "); - 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(" pv.puntoventa_id as puntoventaId, "); - sql.append(" pv.numpuntoventa as codigo, "); - 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(c.preciopagado, 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(" ( select min(formapago_id) from caja_formapago cfp where cfp.caja_id = c.caja_id and cfp.activo = 1) as 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 CONTA_CORRENTE_PTOVTA ccp "); - sql.append(" INNER JOIN marca ma "); - sql.append(" ON ma.empresa_id = ccp.EMPRESA_ID "); - sql.append(" INNER JOIN CAJA c "); - sql.append(" ON c.FECCORTE = ccp.FECCORTE "); - sql.append(" AND c.TURNO_ID = ccp.TURNO_ID "); - sql.append(" AND c.PUNTOVENTA_ID = ccp.PUNTOVENTA_ID "); - sql.append(" AND c.marca_id = ma.marca_id "); - sql.append(" AND c.USUARIO_ID = ccp.USUARIO_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 AND ei.activo = 1 "); - sql.append(" left join fiscal_impressora imp on imp.numserie = c.serieimpfiscal "); - sql.append(" left join estado es on es.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 AND eis.activo = 1 "); - 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 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 "); + StringBuilder sql = new StringBuilder(20000); + sql.append(" SELECT * "); + sql.append(" FROM "); + sql.append(" (SELECT cdv.estadoOrigem AS uf, "); + sql.append(" cdv.estadoId, "); + sql.append(" cdv.codigo, "); + sql.append(" cdv.puntoventaId, "); + sql.append(" cdv.empresaId, "); + 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.taxaEmbarque ELSE 0 END) AS taxaEmbarque, "); + 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 IN ('V', 'T') 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( (SELECT SUM(cfp.importe) FROM caja_formapago cfp WHERE cfp.caja_id = cdv.cajaid AND cfp.activo = 1 AND cfp.FORMAPAGO_ID IN (2,25) AND (cdv.motivocancelacion_id IS NULL AND cdv.indreimpresion = 0 AND cdv.indstatusoperacion = 'F') ) ) AS cartao_credito, "); + sql.append(" SUM( (SELECT SUM(cfp.importe) FROM caja_formapago cfp WHERE cfp.caja_id = cdv.cajaid AND cfp.activo = 1 AND cfp.FORMAPAGO_ID IN (3,26) AND (cdv.motivocancelacion_id IS NULL AND cdv.indreimpresion = 0 AND cdv.indstatusoperacion = 'F') ) ) AS cartao_debito "); + sql.append(" FROM "); + sql.append(" ( SELECT DISTINCT c.caja_id AS cajaid, "); + 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(" c.indstatusboleto, "); + sql.append(" c.indreimpresion, "); + sql.append(" c.indcancelacion, "); + sql.append(" c.numfoliosistema, "); + sql.append(" COALESCE(c.preciopagado, 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(" (SELECT MIN(formapago_id) FROM caja_formapago cfp WHERE cfp.caja_id = c.caja_id AND cfp.activo = 1 ) AS 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 CONTA_CORRENTE_PTOVTA ccp "); + sql.append(" INNER JOIN marca ma "); + sql.append(" ON ma.empresa_id = ccp.EMPRESA_ID "); + sql.append(" INNER JOIN CAJA c "); + sql.append(" ON c.FECCORTE = ccp.FECCORTE "); + sql.append(" AND c.TURNO_ID = ccp.TURNO_ID "); + sql.append(" AND c.PUNTOVENTA_ID = ccp.PUNTOVENTA_ID "); + sql.append(" AND c.marca_id = ma.marca_id "); + sql.append(" AND c.USUARIO_ID = ccp.USUARIO_ID "); + sql.append(" INNER JOIN empresa e "); + sql.append(" ON e.empresa_id = c.empresacorrida_id "); + sql.append(" JOIN punto_venta pv "); + sql.append(" ON pv.puntoventa_id = c.puntoventa_id "); + sql.append(" JOIN parada po "); + sql.append(" ON po.parada_id = pv.parada_id "); + sql.append(" JOIN ciudad co "); + sql.append(" ON co.ciudad_id = po.ciudad_id "); + sql.append(" JOIN estado eo "); + sql.append(" ON eo.estado_id = co.estado_id "); + sql.append(" WHERE c.activo = 1 "); + sql.append(" AND po.activo = 1 "); + sql.append(" AND co.activo = 1 "); + sql.append(" AND eo.activo = 1 "); + sql.append(" AND c.motivocancelacion_id IS NULL "); + sql.append(" AND ccp.feccorte >= :DATE_INICIO "); + sql.append(" AND ccp.feccorte <= :DATE_FIM "); + sql.append(" AND ccp.empresa_id = :EMPRESA_ID "); - sql.append(" where c.activo = 1 AND po.activo = 1 AND co.activo = 1 AND eo.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.motivocancelacion_id is null "); - sql.append(" and ccp.feccorte >= :DATE_INICIO and ccp.feccorte <= :DATE_FIM "); - sql.append(" and ccp.empresa_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(ufs == null ? "" : " and eo.estado_id in ( " + ufs + " ) "); sql.append(pdvs == null ? "" : "and ccp.puntoventa_id in ( " + pdvs + " ) "); sql.append(tipoptovtaId == -1 ? "" : "and pv.tipoptovta_id = " + tipoptovtaId); - 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(" UNION ALL "); + sql.append(" SELECT DISTINCT c.caja_id AS cajaid, "); + 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(" 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 "); + sql.append(" ON cfp.caja_id = c.caja_id "); + sql.append(" INNER JOIN forma_pago fp "); + sql.append(" ON cfp.formapago_id = fp.formapago_id "); + sql.append(" JOIN marca m "); + sql.append(" ON c.marca_id = m.marca_id "); + sql.append(" JOIN empresa e "); + sql.append(" ON e.empresa_id = m.empresa_id "); + sql.append(" JOIN punto_venta pv "); + sql.append(" ON pv.puntoventa_id = c.puntoventa_id "); + sql.append(" JOIN parada po "); + sql.append(" ON po.parada_id = pv.parada_id "); + sql.append(" JOIN ciudad co "); + sql.append(" ON co.ciudad_id = po.ciudad_id "); + sql.append(" JOIN estado eo "); + sql.append(" ON eo.estado_id = co.estado_id "); + sql.append(" WHERE ((c.tipoventa_id = 3 "); + sql.append(" AND c.indstatusboleto = 'V' "); + sql.append(" AND c.indreimpresion = 0) "); + sql.append(" OR (c.tipoventa_id IN (12,18) "); + sql.append(" AND c.indstatusboleto = 'E' "); + sql.append(" AND c.numfoliosistema = c.numfoliopreimpreso)) "); + sql.append(" AND (c.motivocancelacion_id IS NULL "); + sql.append(" OR c.motivocancelacion_id <> 35) "); + sql.append(" AND c.indcancelacion = 0 "); + sql.append(" AND c.indstatusboleto = 'V' "); + sql.append(" AND c.indreimpresion = 0 "); + sql.append(" AND c.feccreacion >= :DATE_INICIO "); + sql.append(" AND c.feccreacion <= :DATE_FIM "); + sql.append(" AND c.empresacorrida_id = :EMPRESA_ID "); + + sql.append(ufs == null ? "" : " and eo.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 = 'C' AND cdc.motivocancelacion_id IN (32,10,37) or (cdc.indstatusboleto = 'T' AND cdc.motivocancelacion_id is null )) 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) or c.motivocancelacion_id is null) "); - sql.append(" and c.feccorte >= :DATE_INICIO and c.feccorte <= :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(" ) cdv "); + sql.append(" GROUP BY cdv.estadoOrigem, "); + sql.append(" cdv.estadoId, "); + sql.append(" cdv.codigo, "); + sql.append(" cdv.puntoventaId, "); + sql.append(" cdv.empresaId "); + sql.append(" ) agrc "); + sql.append(" LEFT JOIN "); + sql.append(" (SELECT cdc.estadoOrigem AS uf, "); + sql.append(" cdc.estadoId, "); + sql.append(" cdc.codigo, "); + sql.append(" cdc.puntoventaId, "); + sql.append(" cdc.empresaId, "); + 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 = 'C' AND cdc.motivocancelacion_id IN (32,10,37) OR (cdc.indstatusboleto = 'T' AND cdc.motivocancelacion_id IS NULL )) 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 c.caja_id AS cajaid, "); + 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(" 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 "); + sql.append(" ON cfp.caja_id = c.caja_id "); + sql.append(" INNER JOIN forma_pago fp "); + sql.append(" ON cfp.formapago_id = fp.formapago_id "); + sql.append(" INNER JOIN marca m "); + sql.append(" ON m.marca_id = c.marca_id "); + sql.append(" AND m.activo = 1 "); + sql.append(" INNER JOIN empresa e "); + sql.append(" ON e.empresa_id = m.empresa_id "); + sql.append(" INNER JOIN punto_venta pv "); + sql.append(" ON pv.puntoventa_id = c.puntoventa_id "); + sql.append(" JOIN parada po "); + sql.append(" ON po.parada_id = pv.parada_id "); + sql.append(" JOIN ciudad co "); + sql.append(" ON co.ciudad_id = po.ciudad_id "); + sql.append(" JOIN estado eo "); + sql.append(" ON eo.estado_id = co.estado_id "); + sql.append(" WHERE (c.motivocancelacion_id IN (31,32,10,37,99,36) "); + sql.append(" OR c.motivocancelacion_id IS NULL) "); + sql.append(" AND c.feccorte >= :DATE_INICIO "); + sql.append(" AND c.feccorte <= :DATE_FIM "); + sql.append(" AND c.empresacorrida_id = :EMPRESA_ID "); + + sql.append(ufs == null ? "" : " and eo.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 "); - sql.append(" ee.empresa_id AS empresaId, cd.puntoventa_id AS puntoventaId, eo.estado_id AS estadoId, trunc(ee.fechoringreso) as fechorVenta, "); - sql.append(" sum( case when tee.tipoeventoextra_id = 2 and indtipo = 1 then cdp.importe else 0 end) as taxaembarque, "); - sql.append(" sum( case when tee.tipoeventoextra_id = 25 and indtipo = 1 then cdp.importe else 0 end) as segurofac, "); - sql.append(" sum( case when tee.tipoeventoextra_id = 82 and indtipo = 1 then cdp.importe else 0 end) as receita_eb, "); - sql.append(" sum( case when tee.tipoeventoextra_id in (41) and indtipo = 1 then cdp.importe else 0 end) as receita_multa, "); - sql.append(" sum( case when tee.tipoeventoextra_id in (103,99978,99999) and indtipo = 1 then cdp.importe else 0 end) as receita_dif_troca_ocd, "); - sql.append(" sum( case when tee.tipoeventoextra_id in (43) and indtipo = 1 then cdp.importe else 0 end) as receita_dif_dif_tarifa_maior, "); - sql.append(" sum( case when tee.tipoeventoextra_id in (44) and indtipo = 0 then cdp.importe else 0 end) as receita_dif_dif_tarifa_menor, "); - sql.append(" sum( case when tee.tipoeventoextra_id not in (44) and indtipo = 0 then cdp.importe else 0 end) as despesas, "); - sql.append(" sum( case when (cdp.formapago_id in (2,25) and tee.tipoeventoextra_id in (2,25,82,41,43,103,99978,99999) and indtipo = 1) then cdp.importe else 0 end) as cartao_credito_ee, "); - sql.append(" sum( case when (cdp.formapago_id in (3,26) and tee.tipoeventoextra_id in (2,25,82,41,43,103,99978,99999) and indtipo = 1) then cdp.importe else 0 end) as cartao_debito_ee "); - sql.append(" from caja_diversos cd "); - sql.append(" join evento_extra ee on ee.eventoextra_id = cd.eventoextra_id "); - sql.append(" join tipo_evento_extra tee on tee.tipoeventoextra_id = ee.tipoeventoextra_id "); - sql.append(" join caja_diversos_pago cdp on cdp.cajadiversos_id = cd.cajadiversos_id "); - sql.append(" join conta_corrente_ptovta ccp on ccp.empresa_id = ee.empresa_id "); - sql.append(" and ccp.puntoventa_id = cd.puntoventa_id "); - sql.append(" and ccp.turno_id = cd.turno_id "); - sql.append(" and ccp.usuario_id = cd.usuario_id "); - sql.append(" and cd.feccorte = ccp.feccorte "); - sql.append(" join punto_venta pv on pv.puntoventa_id = ee.puntoventa_id "); - sql.append(" left join boleto b on b.boleto_id = ee.boleto_id "); - sql.append(" left join parada po on po.parada_id = coalesce(b.origen_id,pv.parada_id) "); - sql.append(" left join ciudad co on co.ciudad_id = po.ciudad_id "); - sql.append(" left join estado eo on eo.estado_id = co.estado_id "); - sql.append(" where "); - sql.append(" ( cd.indreimpresion = 0 or cd.indreimpresion is null ) "); - sql.append(" and ee.empresa_id = :EMPRESA_ID "); - sql.append(ufs == null ? "" : "and eo.estado_id in ( " + ufs + " ) "); - sql.append(pdvs == null ? "" : "and ccp.puntoventa_id in ( " + pdvs + " ) "); - sql.append(tipoptovtaId == -1 ? "" : "and pv.tipoptovta_id = " + tipoptovtaId); - sql.append(" and ccp.FECCORTE between :DATE_INICIO and :DATE_FIM "); - sql.append(" group by ee.empresa_id, cd.puntoventa_id, eo.estado_id, trunc(ee.fechoringreso) "); - sql.append(" ) eed on agrc.empresaId = eed.empresaId and agrc.puntoventaId = eed.puntoventaId and agrc.estadoId = eed.estadoId AND agrc.fechorVenta = eed.fechorVenta "); - sql.append("left join ( "); - sql.append(" select coalesce(sum(fd.valor), 0) as deposito, pv.puntoventa_id as puntoventaId, fcc.empresa_id as empresaId, eo.estado_id as estadoId, "); - sql.append(" trunc(fd.feccreacion) as fechorVenta "); - sql.append(" from fechamento_cntcorrente fcc "); - sql.append(" join fechamento_cct_deposito fcd on fcd.fechamentocntcorrente_id = fcc.fechamentocntcorrente_id "); - sql.append(" join fechamento_deposito fd on fd.fechamentocntcorrente_id = fcd.fechamentocntcorrente_id "); - sql.append(" join punto_venta pv on pv.puntoventa_id = fcc.puntoventa_id "); - sql.append(" join parada po on po.parada_id = pv.parada_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(" where fcc.activo = 1 and fcc.empresa_id = :EMPRESA_ID "); - sql.append(ufs == null ? "" : "and eo.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(" and fd.feccreacion between :DATE_INICIO and :DATE_FIM "); - sql.append(" group by pv.puntoventa_id, fcc.empresa_id, eo.estado_id, trunc(fd.feccreacion) "); - sql.append(" ) depd on agrc.empresaId = depd.empresaId and agrc.puntoventaId = depd.puntoventaId and agrc.estadoId = depd.estadoId and agrc.fechorVenta = depd.fechorVenta "); - sql.append("left join ( "); - sql.append(" select coalesce(sum(fb.valordocumento), 0) as boleto_bnc , pv.puntoventa_id as puntoventaId, fcc.empresa_id as empresaId, eo.estado_id as estadoId, "); - sql.append(" trunc(fcc.fecinifechamento) as fechorVenta "); - sql.append(" from fechamento_cntcorrente fcc "); - sql.append(" join fechamento_boleto fb on fb.fechamentocntcorrente_id = fcc.fechamentocntcorrente_id "); - sql.append(" join punto_venta pv on pv.puntoventa_id = fcc.puntoventa_id "); - sql.append(" join parada po on po.parada_id = pv.parada_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(" where fcc.activo = 1 and fcc.empresa_id = :EMPRESA_ID "); - sql.append(ufs == null ? "" : "and eo.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(" and fcc.fecinifechamento >= :DATE_INICIO and fcc.fecfinfechamento <= :DATE_FIM "); - sql.append(" group by pv.puntoventa_id, fcc.empresa_id, eo.estado_id, trunc(fcc.fecinifechamento) "); - sql.append(" ) bold on agrc.empresaId = bold.empresaId and agrc.puntoventaId = bold.puntoventaId and agrc.estadoId = bold.estadoId and agrc.fechorVenta = bold.fechorVenta "); + sql.append(" AND c.categoria_id NOT IN "); + sql.append(" (SELECT valorconstante FROM constante WHERE nombconstante = 'GRATUIDADE_CRIANCA' ) "); + sql.append(" ) cdc "); + sql.append(" GROUP BY cdc.estadoOrigem, "); + sql.append(" cdc.estadoId, "); + sql.append(" cdc.codigo, "); + sql.append(" cdc.puntoventaId, "); + sql.append(" cdc.empresaId "); + sql.append(" ) canc ON agrc.empresaId = canc.empresaId "); + sql.append(" AND agrc.puntoventaId = canc.puntoventaId "); + sql.append(" AND agrc.estadoId = canc.estadoId "); + sql.append(" LEFT JOIN "); + sql.append(" (SELECT ee.empresa_id AS empresaId, "); + sql.append(" cd.puntoventa_id AS puntoventaId, "); + sql.append(" eo.estado_id AS estadoId, "); + sql.append(" SUM( CASE WHEN tee.tipoeventoextra_id = 2 AND indtipo = 1 THEN cdp.importe ELSE 0 END) AS taxaembarque, "); + sql.append(" SUM( CASE WHEN tee.tipoeventoextra_id = 25 AND indtipo = 1 THEN cdp.importe ELSE 0 END) AS segurofac, "); + sql.append(" SUM( CASE WHEN tee.tipoeventoextra_id = 82 AND indtipo = 1 THEN cdp.importe ELSE 0 END) AS receita_eb, "); + sql.append(" SUM( CASE WHEN tee.tipoeventoextra_id IN (41) AND indtipo = 1 THEN cdp.importe ELSE 0 END) AS receita_multa, "); + sql.append(" SUM( CASE WHEN tee.tipoeventoextra_id IN (103,99978,99999) AND indtipo = 1 THEN cdp.importe ELSE 0 END) AS receita_dif_troca_ocd, "); + sql.append(" SUM( CASE WHEN tee.tipoeventoextra_id IN (43) AND indtipo = 1 THEN cdp.importe ELSE 0 END) AS receita_dif_dif_tarifa_maior, "); + sql.append(" SUM( CASE WHEN tee.tipoeventoextra_id IN (44) AND indtipo = 0 THEN cdp.importe ELSE 0 END) AS receita_dif_dif_tarifa_menor, "); + sql.append(" SUM( CASE WHEN tee.tipoeventoextra_id NOT IN (44) AND indtipo = 0 THEN cdp.importe ELSE 0 END) AS despesas, "); + sql.append(" SUM( CASE WHEN (cdp.formapago_id IN (2,25) AND tee.tipoeventoextra_id IN (2,25,82,41,43,103,99978,99999) AND indtipo = 1) THEN cdp.importe ELSE 0 END) AS cartao_credito_ee, "); + sql.append(" SUM( CASE WHEN (cdp.formapago_id IN (3,26) AND tee.tipoeventoextra_id IN (2,25,82,41,43,103,99978,99999) AND indtipo = 1) THEN cdp.importe ELSE 0 END) AS cartao_debito_ee "); + sql.append(" FROM caja_diversos cd "); + sql.append(" JOIN evento_extra ee "); + sql.append(" ON ee.eventoextra_id = cd.eventoextra_id "); + sql.append(" JOIN tipo_evento_extra tee "); + sql.append(" ON tee.tipoeventoextra_id = ee.tipoeventoextra_id "); + sql.append(" JOIN caja_diversos_pago cdp "); + sql.append(" ON cdp.cajadiversos_id = cd.cajadiversos_id "); + sql.append(" JOIN conta_corrente_ptovta ccp "); + sql.append(" ON ccp.empresa_id = ee.empresa_id "); + sql.append(" AND ccp.puntoventa_id = cd.puntoventa_id "); + sql.append(" AND ccp.turno_id = cd.turno_id "); + sql.append(" AND ccp.usuario_id = cd.usuario_id "); + sql.append(" AND cd.feccorte = ccp.feccorte "); + sql.append(" JOIN punto_venta pv "); + sql.append(" ON pv.puntoventa_id = ee.puntoventa_id "); + sql.append(" LEFT JOIN parada po "); + sql.append(" ON po.parada_id = pv.parada_id "); + sql.append(" LEFT JOIN ciudad co "); + sql.append(" ON co.ciudad_id = po.ciudad_id "); + sql.append(" LEFT JOIN estado eo "); + sql.append(" ON eo.estado_id = co.estado_id "); + sql.append(" WHERE ( cd.indreimpresion = 0 "); + sql.append(" OR cd.indreimpresion IS NULL ) "); + sql.append(" AND ee.empresa_id = :EMPRESA_ID "); + + sql.append(ufs == null ? "" : " and eo.estado_id in ( " + ufs + " ) "); + sql.append(pdvs == null ? "" : "and ccp.puntoventa_id in ( " + pdvs + " ) "); + sql.append(tipoptovtaId == -1 ? "" : "and pv.tipoptovta_id = " + tipoptovtaId); + + sql.append(" AND ccp.FECCORTE BETWEEN :DATE_INICIO AND :DATE_FIM "); + sql.append(" GROUP BY ee.empresa_id, "); + sql.append(" cd.puntoventa_id, "); + sql.append(" eo.estado_id "); + sql.append(" ) eed ON agrc.empresaId = eed.empresaId "); + sql.append(" AND agrc.puntoventaId = eed.puntoventaId "); + sql.append(" AND agrc.estadoId = eed.estadoId "); + sql.append(" LEFT JOIN "); + sql.append(" (SELECT COALESCE(SUM(fd.valor), 0) AS deposito, "); + sql.append(" pv.puntoventa_id AS puntoventaId, "); + sql.append(" fcc.empresa_id AS empresaId, "); + sql.append(" eo.estado_id AS estadoId "); + sql.append(" FROM fechamento_cntcorrente fcc "); + sql.append(" JOIN fechamento_cct_deposito fcd "); + sql.append(" ON fcd.fechamentocntcorrente_id = fcc.fechamentocntcorrente_id "); + sql.append(" JOIN fechamento_deposito fd "); + sql.append(" ON fd.fechamentocntcorrente_id = fcd.fechamentocntcorrente_id "); + sql.append(" JOIN punto_venta pv "); + sql.append(" ON pv.puntoventa_id = fcc.puntoventa_id "); + sql.append(" JOIN parada po "); + sql.append(" ON po.parada_id = pv.parada_id "); + sql.append(" JOIN ciudad co "); + sql.append(" ON co.ciudad_id = po.ciudad_id "); + sql.append(" JOIN estado eo "); + sql.append(" ON eo.estado_id = co.estado_id "); + sql.append(" WHERE fcc.activo = 1 "); + sql.append(" AND fcc.empresa_id = :EMPRESA_ID "); + + sql.append(ufs == null ? "" : " and eo.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(" AND fd.feccreacion BETWEEN :DATE_INICIO AND :DATE_FIM "); + sql.append(" GROUP BY pv.puntoventa_id, "); + sql.append(" fcc.empresa_id, "); + sql.append(" eo.estado_id "); + sql.append(" ) depd ON agrc.empresaId = depd.empresaId "); + sql.append(" AND agrc.puntoventaId = depd.puntoventaId "); + sql.append(" AND agrc.estadoId = depd.estadoId "); + + sql.append(" LEFT JOIN "); + sql.append(" (SELECT COALESCE(SUM(fb.valordocumento), 0) AS boleto_bnc , "); + sql.append(" pv.puntoventa_id AS puntoventaId, "); + sql.append(" fcc.empresa_id AS empresaId, "); + sql.append(" eo.estado_id AS estadoId "); + sql.append(" FROM fechamento_cntcorrente fcc "); + sql.append(" JOIN fechamento_boleto fb "); + sql.append(" ON fb.fechamentocntcorrente_id = fcc.fechamentocntcorrente_id "); + sql.append(" JOIN punto_venta pv "); + sql.append(" ON pv.puntoventa_id = fcc.puntoventa_id "); + sql.append(" JOIN parada po "); + sql.append(" ON po.parada_id = pv.parada_id "); + sql.append(" JOIN ciudad co "); + sql.append(" ON co.ciudad_id = po.ciudad_id "); + sql.append(" JOIN estado eo "); + sql.append(" ON eo.estado_id = co.estado_id "); + sql.append(" WHERE fcc.activo = 1 "); + sql.append(" AND fcc.empresa_id = :EMPRESA_ID "); + + sql.append(ufs == null ? "" : " and eo.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(" AND fcc.fecinifechamento >= :DATE_INICIO "); + sql.append(" AND fcc.fecfinfechamento <= :DATE_FIM "); + sql.append(" GROUP BY pv.puntoventa_id, "); + sql.append(" fcc.empresa_id, "); + sql.append(" eo.estado_id, "); + sql.append(" TRUNC(fcc.fecinifechamento) "); + sql.append(" ) bold ON agrc.empresaId = bold.empresaId "); + sql.append(" AND agrc.puntoventaId = bold.puntoventaId "); + sql.append(" AND agrc.estadoId = bold.estadoId "); + sql.append(" ORDER BY agrc.puntoventaId "); + + return sql.toString(); }