bug#10939

dev: julio
qua: 

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@83352 d1611594-4594-4d17-8e1d-87c2c4800839
master
julio 2018-07-12 21:30:31 +00:00
parent fa919b8a27
commit cae18c4edb
1 changed files with 117 additions and 73 deletions

View File

@ -96,7 +96,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
StringBuilder sql = new StringBuilder();
sql.append("select distinct ");
sql.append(" (case when r2.numserie20 is null then '' else r2.numserie20 end) || imp.numserie20 as numImpressora, ");
sql.append(" coalesce(b.numfoliosistema, (case when r4.caja_id is null then '000001' else r4.coo end)) as coo, ");
sql.append(" coalesce(b.numfoliosistema, (case when r4.caja_id is null then '000001' else r4.coo end)) as coo, ");
sql.append(" to_char(b.feccreacion, 'yyyymmdd') as dataEmissao, ");
sql.append(" r4.cpfcnpjcliente as cnpjCliente, ");
sql.append(" b.caja_id as boletoId, ");
@ -131,7 +131,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
sql.append(" case b.importepedagio when 0 then null else b.importepedagio end as importepedagio, ");
sql.append(" case b.importeoutros when 0 then null else b.importeoutros end as importeoutros, ");
sql.append(" case b.importeseguro when 0 then null else b.importeseguro end as importeseguro ");
if (isBoletoHist)
sql.append("from caja_hist b ");
else
@ -207,15 +207,15 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
item.setTipoPassagem(rset.getString("tipoPassagem"));
item.setValorItem(rset.getBigDecimal("valorItem"));
item.setOrigenId(rset.getInt("origenId"));
Integer origenIbge = rset.getInt("origenUf");
item.setOrigenUf(origenIbge == null ? null : origenIbge.toString());
item.setDestinoId(rset.getInt("destinoId"));
Integer destinoIbge = rset.getInt("destinoUf");
item.setDestinoUf(destinoIbge == null ? null : destinoIbge.toString());
item.setDestinoUf(destinoIbge == null ? null : destinoIbge.toString());
item.setModeloImpressora(rset.getString("modeloImpressora"));
item.setNumCaixa(rset.getString("numCaixa"));
item.setStatus(rset.getString("status"));
@ -247,7 +247,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
sql.append(" r2.crz AS crz, ");
sql.append(" r2.numserie20 AS numserie20, ");
sql.append(" r2.coo AS coo, ");
sql.append(" r2.cro AS cro, ");
sql.append(" r2.cro AS cro, ");
sql.append(" r2.cooinicial AS cooinicial, ");
sql.append(" r2.coofinal AS coofinal, ");
sql.append(" r2.vendabrutadiaria AS vendabrutadiaria, ");
@ -393,7 +393,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
sql.append(" r2.crz AS crz, ");
sql.append(" r2.numserie20 AS numserie20, ");
sql.append(" r2.coo AS coo, ");
sql.append(" r2.cro AS cro, ");
sql.append(" r2.cro AS cro, ");
sql.append(" r2.cooinicial AS cooinicial, ");
sql.append(" r2.coofinal AS coofinal, ");
sql.append(" r2.vendabrutadiaria AS vendabrutadiaria, ");
@ -629,7 +629,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
sql.append(" from caja_hist c ");
else
sql.append(" from caja c ");
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 ");
@ -656,8 +656,8 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
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 ((case when coalesce(r.indtribtarifa,0) = 1 then c.preciopagado else 0 end) + (case when coalesce(r.indtribtaxaembarque,0) = 1 then c.importetaxaembarque else 0 end) + (case when coalesce(r.indtribpedagio,0) = 1 then c.importepedagio else 0 end)) > 0 ");
// 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 ((case when coalesce(r.indtribtarifa,0) = 1 then c.preciopagado else 0 end) + (case when coalesce(r.indtribtaxaembarque,0) = 1 then c.importetaxaembarque else 0 end) + (case when coalesce(r.indtribpedagio,0) = 1 then c.importepedagio else 0 end)) > 0 ");
sql.append(" and c.feccreacion >= to_date(:DATE_INICIO,'DD/MM/YYYY HH24:MI:SS') and c.feccreacion <= to_date(:DATE_FIM,'DD/MM/YYYY HH24:MI:SS') ");
sql.append(" and c.empresacorrida_id = :EMPRESA_ID ");
sql.append(isEstadoTodos ? "" : " and ((case when s.aliasorigen_id is null then eo.estado_id else eos.estado_id end) = :ESTADO_ID )");
@ -932,15 +932,15 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
item.setCnpjCliente(columns.contains("cnpjcliente") ? rset.getString("cnpjCliente") : null);
item.setCnpjImpressora(columns.contains("cnpjimpressora") ? rset.getString("cnpjImpressora") : null);
item.setOrigenId(columns.contains("origenid") ? rset.getInt("origenId") : null);
Integer origenIbge = (columns.contains("origenuf") ? rset.getInt("origenUf") : null);
item.setOrigenUf(origenIbge == null ? null : origenIbge.toString());
item.setDestinoId(columns.contains("destinoid") ? rset.getInt("destinoId") : null);
Integer destinoIbge = (columns.contains("destinouf") ? rset.getInt("destinoUf") : null);
item.setDestinoUf(destinoIbge == null ? null : destinoIbge.toString());
item.setNumpdv(columns.contains("numpdv") ? rset.getString("numpdv") : null);
item.setNumItem(columns.contains("numitem") ? rset.getString("numItem") : null);
item.setCodProduto(columns.contains("codproduto") ? rset.getString("codProduto") : null);
@ -2338,7 +2338,8 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
sb.append(" left join empresa_imposto eif on eif.activo = 1 and eif.empresa_id = f.empresa_id and eif.estado_id = eof.estado_id");
sb.append(" left join inscricao_estadual ie on ie.empresa_id = f.empresa_id and ie.estado_id = eof.estado_id and ie.activo = 1");
sb.append(" left join ciudad cie on cie.ciudad_id = ie.ciudad_id");
sb.append(" left join caja b on b.activo = 1 and b.rmd_id = (case when coalesce(f.indcancelacion, 0) = 1 then -1 else f.rmd_id end) and b.empresacorrida_id = f.empresa_id and b.foliormd = f.folio and to_char(b.fechorventa, 'ddmmyyyy') = to_char(f.fechorfolio, 'ddmmyyyy')");
// sb.append(" left join caja b on b.activo = 1 and b.rmd_id = (case when coalesce(f.indcancelacion, 0) = 1 then -1 else f.rmd_id end) and b.empresacorrida_id = f.empresa_id and b.foliormd = f.folio and to_char(b.fechorventa, 'ddmmyyyy') = to_char(f.fechorfolio, 'ddmmyyyy')");
sb.append(" left join caja b on b.activo = 1 and b.rmd_id = f.rmd_id and b.empresacorrida_id = f.empresa_id and b.foliormd = f.folio and to_char(b.fechorventa, 'ddmmyyyy') = to_char(f.fechorfolio, 'ddmmyyyy')");
sb.append(" left join parada po on po.parada_id = b.origen_id and po.activo = 1 ");
sb.append(" left join ciudad co on co.ciudad_id = po.ciudad_id and co.activo = 1 ");
sb.append(" left join estado eo on eo.estado_id = co.estado_id and eo.activo = 1 ");
@ -2355,7 +2356,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
sb.append(" left join ciudad cds on cds.ciudad_id = pds.ciudad_id");
sb.append(" left join estado eds on eds.estado_id = cds.estado_id");
sb.append(" left join aidf a on a.aidf_id = b.aidf_id");
sb.append(" where f.activo = 1 ");
sb.append(" where f.activo = 1 ");
sb.append(" and f.indinactivo = 0 ");
sb.append(" and f.indbpr = 1 ");
sb.append(" and f.fechorfolio >= to_date(?,'DD/MM/YYYY HH24:MI:SS') and f.fechorfolio <= to_date(?,'DD/MM/YYYY HH24:MI:SS') ");
@ -2365,7 +2366,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
sb.append(" or (b.tipoventa_id in (12,18) and b.indstatusboleto = 'E' and b.numfoliosistema = b.numfoliopreimpreso)) ");
sb.append(" and (b.motivocancelacion_id is null or b.motivocancelacion_id <> 35) ");
sb.append(" order by dataEmissaoRMD ");
try {
PreparedStatement ps = connection.prepareStatement(sb.toString());
ps.setString(1, DateUtil.getStringDate(inicio, DATE_FORMAT_DMY) + " 00:00:00");
@ -2596,7 +2597,6 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
sb.append(" and (f.fechorfolio >= to_date(?, 'dd/MM/YYYY hh24:mi:ss') and f.fechorfolio <= to_date(?, 'dd/MM/YYYY hh24:mi:ss'))");
sb.append(" and eo.cveestado like ?");
sb.append(" and f.indcancelacion = 1 and f.indbpr = 1 and f.activo = 1");
try {
PreparedStatement ps = connection.prepareStatement(sb.toString());
@ -3205,39 +3205,83 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
List<String> foliosRmd = new ArrayList<String>();
inativarFolioConsumoRmd(connection, empresaId, estado.getEstadoId(), aidf.getAidfId(), folioInicial, folioFinal);
if (isCancela) {
cancelaFolioConsumoRmd(connection, empresaId, estado.getEstadoId(), aidf.getAidfId(), folioInicial, folioFinal, inicio, fim);
} else {
inativarFolioConsumoRmd(connection, empresaId, estado.getEstadoId(), aidf.getAidfId(), folioInicial, folioFinal, inicio, fim);
for (DetalhadoRMD brp : buscarRegistroImpressaoBPR(connection, inicio, fim, empresaId, estado.getCveestado(), aidf.getAidfId(),
folioInicial, folioFinal, isBPR, isECF, true)) {
for (DetalhadoRMD brp : buscarRegistroImpressaoBPR(connection, inicio, fim, empresaId, estado.getCveestado(), aidf.getAidfId(),
folioInicial, folioFinal, isBPR, isECF, true)) {
if (!foliosRmd.contains(brp.getFoliormd()))
foliosRmd.add(brp.getFoliormd());
if (!foliosRmd.contains(brp.getFoliormd()))
foliosRmd.add(brp.getFoliormd());
if (cont == 999) {
boletos.add(boletoAgr);
boletoAgr = null;
cont = 0;
if (cont == 999) {
boletos.add(boletoAgr);
boletoAgr = null;
cont = 0;
}
if (boletoAgr == null)
boletoAgr = brp.getCajaId().toString();
else
boletoAgr = boletoAgr + " ," + brp.getCajaId();
cont++;
}
boletos.add(boletoAgr);
for (String folio : foliosRmd) {
insereConsulmoFolioRMD(connection, inicio, empresaId, estado.getEstadoId(), aidf, folio,
isCancela, isInativa, false, isECF, isBPR, null, null, null, null, null, null);
}
if (boletoAgr == null)
boletoAgr = brp.getCajaId().toString();
else
boletoAgr = boletoAgr + " ," + brp.getCajaId();
cont++;
marcarRMDCaja(connection, boletos, null, null);
}
boletos.add(boletoAgr);
}
for (String folio : foliosRmd) {
insereConsulmoFolioRMD(connection, inicio, empresaId, estado.getEstadoId(), aidf, folio,
isCancela, isInativa, false, isECF, isBPR, null, null, null, null, null, null);
private void cancelaFolioConsumoRmd(Connection connection, Integer empresaId, Integer estadoId,
Long rmdId, String folioInicial, String folioFinal, Date inicio, Date fim) {
PreparedStatement pstmt = null;
try {
StringBuilder sb = new StringBuilder();
sb.append(" update folio_consumo_rmd ");
sb.append(" set activo = 1, fecmodif = sysdate, indcancelacion = 1 ");
sb.append(" where activo = 1 ");
sb.append(" and indimpresso = 1 ");
sb.append(" and rmd_id = ? ");
sb.append(" and empresa_id = ? ");
sb.append(" and estado_id = ? ");
sb.append(" and folio between ? and ? ");
sb.append(" and fechorfolio between to_date(?,'dd/MM/yyyy HH24:MI:SS') and to_date(?,'dd/MM/yyyy HH24:MI:SS') ");
pstmt = connection.prepareStatement(sb.toString());
pstmt.setInt(1, rmdId.intValue());
pstmt.setInt(2, empresaId);
pstmt.setInt(3, estadoId);
pstmt.setString(4, folioInicial);
pstmt.setString(5, folioFinal);
pstmt.setString(6, DateUtil.getStringDate(inicio, DATE_FORMAT_DMY) + " 00:00:00");
pstmt.setString(7, DateUtil.getStringDate(fim, DATE_FORMAT_DMY) + " 23:59:59");
pstmt.executeUpdate();
} catch (Exception e) {
log.error("", e);
} finally {
try {
if (pstmt != null && !pstmt.isClosed()) {
pstmt.close();
}
} catch (Exception e) {
log.error("", e);
}
}
marcarRMDCaja(connection, boletos, null, null);
}
private void inativarFolioConsumoRmd(Connection connection, Integer empresaId, Integer estadoId,
Long rmdId, String folioInicial, String folioFinal) {
Long rmdId, String folioInicial, String folioFinal, Date inicio, Date fim) {
PreparedStatement pstmt = null;
try {
@ -3250,6 +3294,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
sb.append(" and empresa_id = ? ");
sb.append(" and estado_id = ? ");
sb.append(" and folio between ? and ? ");
sb.append(" and fechorfolio between to_date(?,'dd/MM/yyyy HH24:MI:SS') and to_date(?,'dd/MM/yyyy HH24:MI:SS') ");
pstmt = connection.prepareStatement(sb.toString());
pstmt.setInt(1, rmdId.intValue());
@ -3257,6 +3302,8 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
pstmt.setInt(3, estadoId);
pstmt.setString(4, folioInicial);
pstmt.setString(5, folioFinal);
pstmt.setString(6, DateUtil.getStringDate(inicio, DATE_FORMAT_DMY) + " 00:00:00");
pstmt.setString(7, DateUtil.getStringDate(fim, DATE_FORMAT_DMY) + " 23:59:59");
pstmt.executeUpdate();
@ -3658,7 +3705,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
brp.setRmdId(rs.getInt("rmd_id"));
brp.setFoliormd(rs.getString("foliormd"));
}
list.add(brp);
}
@ -3845,11 +3892,9 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
sql.append(" and ((case when s.aliasorigen_id is null then eo.cveestado else eos.cveestado end) = :CVEESTADO ) ");
sql.append(" and c.rmd_id is null ");
sql.append(" order by estadoId, datamov, ecf, coo ");
return sql.toString();
}
private String getSqlImpressaoRMDCancelados() {
@ -3868,7 +3913,6 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
return sql.toString();
}
@Override
public List<FiscalRdi> buscarRelatorioRDI(Connection connection, Date inicio, Date fim, Integer empresaId, List<Estado> estados, boolean isReceitaTerceiros) {
@ -4124,7 +4168,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
private String sqlRelatorioRDIVendidos(String ufs) {
StringBuilder sql = new StringBuilder();
sql.append("select distinct ");
sql.append(" c.caja_id as cajaId, ");
sql.append(" 'REC' as tipoReceita, ");
@ -4196,46 +4240,46 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
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.feccreacion >= :DATE_INICIO and c.feccreacion <= :DATE_FIM ");
sql.append(" and c.empresacorrida_id = :EMPRESA_ID ");
sql.append(" and ((case when s.aliasorigen_id is null then eo.cveestado else eos.cveestado end) in ( ").append(ufs).append(" )) ");
sql.append(" ");
sql.append("union all ");
sql.append(" ");
sql.append("select distinct ");
sql.append(" c.caja_id as cajaId, ");
sql.append(" 'REC' as tipoReceita, ");
sql.append(" c.numoperacion as numoperacion, ");
sql.append(" trunc(c.feccreacion) as fechorVenta, ");
sql.append(" c.caja_id as cajaId, ");
sql.append(" 'REC' as tipoReceita, ");
sql.append(" c.numoperacion as numoperacion, ");
sql.append(" trunc(c.feccreacion) as fechorVenta, ");
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(ei.icms, eos.icms) as icmsInterestadual, ");
sql.append(" coalesce(ei.icms, eos.icms) as icmsInterestadual, ");
sql.append(" ei.icmsim as icmsIntermunicipal, ");
sql.append(" coalesce(ae.cveestado,(case when s.aliasorigen_id is null then eo.cveestado else eos.cveestado end)) as estadoOrigem,");
sql.append(" (case when s.aliasdestino_id is null then ed.cveestado else eds.cveestado end) as estadoDestino,");
sql.append(" (case when s.aliasorigen_id is null then co.codibge else cos.codibge end) as municipioOrigem,");
sql.append(" case when(coalesce(ae.cveestado,(case when s.aliasorigen_id is null then eo.cveestado else eos.cveestado end)) = ");
sql.append(" (case when s.aliasdestino_id is null then ed.cveestado else eds.cveestado end) ) then 0 else 1 end as isInterEstadual, ");
sql.append(" ei.porcredbaseicms as redBaseCalcIcms, ");
sql.append(" ei.porcredmunicipal as porcRedMunicipal, ");
sql.append(" ei.porcredestadual as porcRedEstadual, ");
sql.append(" ei.indtarifamunicipal as indtarifamunicipal, ");
sql.append(" coalesce(ei.indseguromunicipal, 0) as indseguromunicipal, ");
sql.append(" coalesce(ei.indtxembarquemunicipal, 0) as indtxembarquemunicipal, ");
sql.append(" coalesce(ei.indpedagiomunicipal, 0) as indpedagiomunicipal, ");
sql.append(" coalesce(ei.indtarifaestadual, 0) as indtarifaestadual, ");
sql.append(" coalesce(ei.indseguroestadual, 0) as indseguroestadual, ");
sql.append(" coalesce(ei.indtxembarqueestadual, 0) as indtxembarqueestadual, ");
sql.append(" coalesce(ei.indpedagioestdual, 0) as indpedagioestdual, ");
sql.append(" ei.porcredbaseicms as redBaseCalcIcms, ");
sql.append(" ei.porcredmunicipal as porcRedMunicipal, ");
sql.append(" ei.porcredestadual as porcRedEstadual, ");
sql.append(" ei.indtarifamunicipal as indtarifamunicipal, ");
sql.append(" coalesce(ei.indseguromunicipal, 0) as indseguromunicipal, ");
sql.append(" coalesce(ei.indtxembarquemunicipal, 0) as indtxembarquemunicipal, ");
sql.append(" coalesce(ei.indpedagiomunicipal, 0) as indpedagiomunicipal, ");
sql.append(" coalesce(ei.indtarifaestadual, 0) as indtarifaestadual, ");
sql.append(" coalesce(ei.indseguroestadual, 0) as indseguroestadual, ");
sql.append(" coalesce(ei.indtxembarqueestadual, 0) as indtxembarqueestadual, ");
sql.append(" coalesce(ei.indpedagioestdual, 0) as indpedagioestdual, ");
sql.append(" ei.tributacaoimportacao as tributacaoImportacao, ");
sql.append(" (case when (coalesce(case when s.aliasorigen_id is null then po.regionmetropolitana_id ");
sql.append(" else pos.regionmetropolitana_id end, -1) = coalesce(case when s.aliasorigen_id is null ");
sql.append(" then pd.regionmetropolitana_id else pds.regionmetropolitana_id end, -2)) then 1 else 0 end) as isenta, ");
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(" to_char(trunc(c.feccreacion), 'yyyymmdd') as datamov ");
sql.append(" then pd.regionmetropolitana_id else pds.regionmetropolitana_id end, -2)) then 1 else 0 end) as isenta, ");
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(" to_char(trunc(c.feccreacion), 'yyyymmdd') as datamov ");
sql.append("from caja c ");
sql.append(" join marca m on c.marca_id = m.marca_id ");
sql.append(" join empresa e on e.empresa_id = m.empresa_id ");
@ -4339,7 +4383,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
sql.append("where b.motivocancelacion_id in (31,32,10,37,99,36) ");
sql.append(" and b.indstatusboleto = 'C' and b.indcancelacion = 1 ");
sql.append(" and b.numfoliopreimpreso is not null ");
sql.append(" and e.empresa_id = :EMPRESA_ID ");
sql.append(" and e.empresa_id = :EMPRESA_ID ");
sql.append(" and b.fechorventa >= :DATE_INICIO ");
sql.append(" and b.fechorventa <= :DATE_FIM ");
sql.append(" and b.categoria_id not in (select valorconstante from constante where nombconstante = 'GRATUIDADE_CRIANCA') ");