diff --git a/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java b/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java index 1bf4ed19f..0a0f8ae72 100644 --- a/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java @@ -36,6 +36,8 @@ public interface FiscalDAO { public List buscaDatosNaoFiscais(Date inicio, Date fim, Integer empresaId, Integer estadoId, Connection connection) throws SQLException; + public List buscarRegistroECFTipoCFCHibrido(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado); + public List buscarRegistroECFTipoCFC(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado); public List buscarRegistroECFTipoCFC_Boleto(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado); diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java index 868876aae..e21613ad6 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java @@ -1383,6 +1383,188 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO } @Override + public List buscarRegistroECFTipoCFCHibrido(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) { + List retorno = new ArrayList(); + + StringBuilder sb = new StringBuilder(); + sb.append(" select ecf, numserie, datamov, cooinicial, coofinal, crz, cro, coo, codestabelecimento, codestabelecimentoimpressora, numeroidentificacao, estadoorigem, sum(totalisenta) as totalisenta, sum(vendabrutadiaria) as vendabrutadiaria, sum(totgeral) as totgeral, sum(totalvenda) as totalvenda"); + sb.append(" from ("); + sb.append(" select distinct"); + sb.append(" imp.numserie20 as ecf,"); + sb.append(" imp.numserie as numserie,"); + sb.append(" r2.datamov as datamov,"); + sb.append(" r2.cooinicial as cooinicial,"); + sb.append(" r2.coofinal as coofinal,"); + sb.append(" r2.crz as crz,"); + sb.append(" r2.cro as cro,"); + sb.append(" r2.coo as coo,"); + sb.append(" CASE WHEN s.aliasorigen_id IS NULL THEN ei.codestabelecimento ELSE eis.codestabelecimento END as codestabelecimento,"); + sb.append(" e.codestabelecimento as codestabelecimentoimpressora,"); + sb.append(" imp.numeroidentificacao as numeroidentificacao,"); + sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) as estadoorigem,"); + sb.append(" ("); + sb.append(" select nvl(sum(r5i.imptotalliquido), 0)"); + sb.append(" from fiscal_r5 r5i"); + sb.append(" join fiscal_r4 r4i on r4i.numserie20 = r5i.numserie20 and r4i.datamov = r5i.datamov and r4i.coo = r5i.coo and r4i.contador = r5i.contador"); + sb.append(" join boleto bi on bi.boleto_id = r4i.boleto_id"); + sb.append(" join parada poi on poi.parada_id = bi.origen_id"); + sb.append(" join parada pdi on pdi.parada_id = bi.destino_id"); + sb.append(" left join alias_servico si on si.origen_id = bi.origen_id and si.destino_id = bi.destino_id and (si.corrida_id = bi.corrida_id or si.corrida_id is null) and si.ruta_id = bi.ruta_id"); + sb.append(" left join parada posi on posi.parada_id = si.aliasorigen_id"); + sb.append(" left join parada pdsi on pdsi.parada_id = si.aliasdestino_id"); + sb.append(" where r5i.numserie20 = r4.numserie20 and r5i.datamov = r2.datamov and r5i.codproduto like '%-TA'"); + sb.append(" and (nvl(case when si.aliasorigen_id is null then poi.regionmetropolitana_id else posi.regionmetropolitana_id end, -1) = nvl(case when si.aliasorigen_id is null then pdi.regionmetropolitana_id else pdsi.regionmetropolitana_id end, -2))"); + sb.append(" ) as totalisenta,"); + sb.append(" to_number(r2.vendabrutadiaria)/100 as vendabrutadiaria,"); + sb.append(" to_number(r2.totgeral)/100 as totgeral,"); + sb.append(" ("); + sb.append(" select nvl(sum(r4t.impsubtotal), 0)"); + sb.append(" from fiscal_r4 r4t"); + sb.append(" join boleto bt on bt.boleto_id = r4t.boleto_id"); + sb.append(" join parada pot on pot.parada_id = bt.origen_id"); + sb.append(" join ciudad cot on cot.ciudad_id = pot.ciudad_id"); + sb.append(" join estado eot on eot.estado_id = cot.estado_id"); + sb.append(" left join alias_servico st on st.origen_id = bt.origen_id and st.destino_id = bt.destino_id and (st.corrida_id = bt.corrida_id or st.corrida_id is null) and st.ruta_id = bt.ruta_id"); + sb.append(" left join parada post on post.parada_id = st.aliasorigen_id"); + sb.append(" left join ciudad cost on cost.ciudad_id = post.ciudad_id"); + sb.append(" left join estado eost on eost.estado_id = cost.estado_id"); + sb.append(" where coalesce(r4t.indcancelamento, 'N') <> 'S' and r4t.numserie20 = r2.numserie20 and r4t.datamov = r2.datamov and ((CASE WHEN st.aliasorigen_id IS NULL THEN eot.cveestado ELSE eost.cveestado END) = (CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END))"); + sb.append(" ) as totalvenda,"); + sb.append(" 0 as caja_id"); + sb.append(" from fiscal_r4 r4"); + sb.append(" join fiscal_r2 r2 on r2.numserie20 = r4.numserie20 and r2.datamov = r4.datamov"); + sb.append(" join fiscal_impressora imp on imp.numserie20 = r4.numserie20"); + sb.append(" join boleto b on b.boleto_id = r4.boleto_id"); + sb.append(" join parada po on po.parada_id = b.origen_id"); + sb.append(" join ciudad co on co.ciudad_id = po.ciudad_id"); + sb.append(" join estado eo on eo.estado_id = co.estado_id"); + sb.append(" join empresa_imposto ei on ei.empresa_id = b.empresacorrida_id and ei.estado_id = co.estado_id"); + sb.append(" left join alias_servico s on s.origen_id = b.origen_id and s.destino_id = b.destino_id and (s.corrida_id = b.corrida_id or s.corrida_id is null) and s.ruta_id = b.ruta_id"); + sb.append(" left join parada pos on pos.parada_id = s.aliasorigen_id"); + sb.append(" left join ciudad cos on cos.ciudad_id = pos.ciudad_id"); + sb.append(" left join estado eos on eos.estado_id = cos.estado_id"); + sb.append(" left join empresa_imposto eis on eis.empresa_id = b.empresacorrida_id and eis.estado_id = cos.estado_id"); + sb.append(" left join estado e on e.estado_id = imp.estadolocal_id"); + sb.append(" where b.activo = 1"); + sb.append(" and nvl(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1"); + sb.append(" and coalesce(r4.indcancelamento, 'N') <> 'S'"); + sb.append(" and r4.datamov >= ? and r4.datamov <= ?"); + sb.append(" and b.empresacorrida_id = ?"); + sb.append(" and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)"); + sb.append(" UNION"); + sb.append(" select distinct"); + sb.append(" imp.numserie20 as ecf,"); + sb.append(" imp.numserie as numserie,"); + sb.append(" to_char(c.feccreacion, 'YYYYMMDD') as datamov,"); + sb.append(" case when r2.numserie20 is null then '000001' else r2.cooinicial end as cooinicial,"); + sb.append(" case when r2.numserie20 is null then '000001' else r2.coofinal end as coofinal,"); + sb.append(" case when r2.numserie20 is null then '0000' else r2.crz end as crz,"); + sb.append(" case when r2.numserie20 is null then '0000' else r2.cro end as cro,"); + sb.append(" case when r2.numserie20 is null then '000000' else r2.coo end as coo,"); + sb.append(" CASE WHEN s.aliasorigen_id IS NULL THEN ei.codestabelecimento ELSE eis.codestabelecimento END as codestabelecimento,"); + sb.append(" e.codestabelecimento as codestabelecimentoimpressora,"); + sb.append(" imp.numeroidentificacao as numeroidentificacao,"); + sb.append(" CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END as estadoorigem,"); + sb.append(" ("); + sb.append(" select nvl(sum(c.preciopagado), 0)"); + sb.append(" from caja bi"); + sb.append(" join parada poi on poi.parada_id = bi.origen_id"); + sb.append(" join parada pdi on pdi.parada_id = bi.destino_id"); + sb.append(" left join alias_servico si on si.origen_id = bi.origen_id and si.destino_id = bi.destino_id and (si.corrida_id = bi.corrida_id or si.corrida_id is null) and si.ruta_id = bi.ruta_id"); + sb.append(" left join parada posi on posi.parada_id = si.aliasorigen_id"); + sb.append(" left join parada pdsi on pdsi.parada_id = si.aliasdestino_id"); + sb.append(" where bi.caja_id = c.caja_id"); + sb.append(" and (nvl(case when si.aliasorigen_id is null then poi.regionmetropolitana_id else posi.regionmetropolitana_id end, -1) = nvl(case when si.aliasorigen_id is null then pdi.regionmetropolitana_id else pdsi.regionmetropolitana_id end, -2))"); + sb.append(" ) as totalisenta,"); + sb.append(" 0 as vendabrutadiaria,"); + sb.append(" ("); + sb.append(" select nvl(sum(c.preciopagado + c.importetaxaembarque + c.importeseguro + c.importepedagio + c.importeoutros), 0)"); + sb.append(" from caja bi"); + sb.append(" where bi.caja_id = c.caja_id"); + sb.append(" ) as totgeral,"); + sb.append(" ("); + sb.append(" select nvl(sum(c.preciopagado + c.importetaxaembarque + c.importeseguro + c.importepedagio + c.importeoutros), 0)"); + sb.append(" from caja bi"); + sb.append(" where bi.caja_id = c.caja_id"); + sb.append(" ) as totalvenda,"); + sb.append(" c.caja_id"); + sb.append(" from caja c"); + sb.append(" join parada po on po.parada_id = c.origen_id"); + sb.append(" join ciudad co on co.ciudad_id = po.ciudad_id"); + sb.append(" join estado eo on eo.estado_id = co.estado_id"); + sb.append(" join empresa_imposto ei on ei.empresa_id = c.empresacorrida_id and ei.estado_id = co.estado_id"); + sb.append(" join fiscal_impressora imp on imp.numserie = c.serieimpfiscal"); + sb.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"); + sb.append(" left join parada pos on pos.parada_id = s.aliasorigen_id"); + sb.append(" left join ciudad cos on cos.ciudad_id = pos.ciudad_id"); + sb.append(" left join estado eos on eos.estado_id = cos.estado_id"); + sb.append(" left join empresa_imposto eis on eis.empresa_id = c.empresacorrida_id and eis.estado_id = cos.estado_id"); + sb.append(" left join fiscal_r4 r4 on r4.caja_id = c.caja_id"); + sb.append(" left join estado e on e.estado_id = imp.estadolocal_id"); + sb.append(" left join fiscal_r2 r2 on r2.numserie20 = imp.numserie20 and r2.datamov = to_char(c.feccreacion, 'YYYYMMDD')"); + sb.append(" where c.activo = 1 and s.activo = 1 and po.activo = 1 and co.activo = 1 and eo.activo = 1 and ei.activo = 1 and pos.activo = 1 and cos.activo = 1 and eos.activo = 1"); + sb.append(" and c.serieimpfiscal is not null and r4.caja_id is null"); + sb.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))"); + sb.append(" and coalesce(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1"); + sb.append(" and trunc(c.feccreacion) >= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS')) and trunc(c.feccreacion) <= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS'))"); + sb.append(" and c.empresacorrida_id = ?"); + sb.append(" and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)"); + sb.append(" )"); + sb.append(" having sum(totalvenda) > 0"); + sb.append(" group by ecf, numserie, datamov, cooinicial, coofinal, crz, cro, coo, codestabelecimento, codestabelecimentoimpressora, numeroidentificacao, estadoorigem"); + + try { + PreparedStatement ps = connection.prepareStatement(sb.toString()); + ps.setString(1, DateUtil.getStringDate(inicio, DATE_FORMAT_FISCAL)); + ps.setString(2, DateUtil.getStringDate(fim, DATE_FORMAT_FISCAL)); + ps.setLong(3, Long.valueOf(empresaId)); + ps.setString(4, cveestado); + ps.setString(5, DateUtil.getStringDate(inicio, DATE_FORMAT_DMYHMS)); + ps.setString(6, DateUtil.getStringDate(fim, DATE_FORMAT_DMYHMS)); + ps.setLong(7, Long.valueOf(empresaId)); + ps.setString(8, cveestado); + + ResultSet rs = ps.executeQuery(); + + ExportacaoECFTipoCFC registro = null; + + while (rs.next()) { + BigDecimal totalIsenta = BigDecimal.ZERO; + + if (rs.getBigDecimal("totalisenta") != null) { + totalIsenta = rs.getBigDecimal("totalisenta").divide(BigDecimal.valueOf(100d)); + } + + registro = new ExportacaoECFTipoCFC(); + registro.setEstabelecimento(rs.getString("codestabelecimento")); + registro.setDataEmissao(rs.getString("datamov")); + registro.setNumeroIdentificacaoECF(rs.getString("numeroidentificacao") == null || rs.getString("numeroidentificacao").isEmpty() ? "0" : rs.getString("numeroidentificacao")); + registro.setEcf(rs.getString("ecf")); + registro.setCooReducaoZ(Integer.valueOf(rs.getString("coo"))); + registro.setCooInicial(Integer.valueOf(rs.getString("cooinicial"))); + registro.setCooFinal(Integer.valueOf(rs.getString("coofinal"))); + registro.setContadorReducao(Integer.valueOf(rs.getString("crz"))); + registro.setCro(Integer.valueOf(rs.getString("cro"))); + registro.setValorTotal(BigDecimal.valueOf(Double.valueOf(rs.getString("totalvenda")) / 100)); + registro.setValorIsentas(totalIsenta); + registro.setEstabelecimentoECF(rs.getString("codestabelecimentoimpressora")); + registro.setNumeroSerie(rs.getString("numserie")); + registro.setInfoPadraoBilhetePassagem(CODIGO_INDICADOR_CONTR_PREVIDENCIARIA); + + retorno.add(registro); + } + + rs.close(); + ps.close(); + + } catch (Exception e) { + log.error(e.getMessage(), e); + } + + return retorno; + } + + @Override @Deprecated public List buscarRegistroECFTipoCFC(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) { List retorno = new ArrayList(); @@ -1492,13 +1674,14 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO return retorno; } - @Override + @Override @Deprecated public List buscarRegistroECFTipoCFC_Boleto(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) { List retorno = new ArrayList(); StringBuilder sb = new StringBuilder(); sb.append(" select ecf, numserie, datamov, cooinicial, coofinal, crz, cro, coo, codestabelecimento, codestabelecimentoimpressora, numeroidentificacao, estadoorigem, sum(totalisenta) as totalisenta, sum(vendabrutadiaria) as vendabrutadiaria, sum(totgeral) as totgeral, sum(totalvenda) as totalvenda"); sb.append(" from ("); + sb.append(" select distinct"); sb.append(" 'X' || imp.numserie20 as ecf,"); sb.append(" imp.numserie as numserie,"); @@ -1521,7 +1704,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sb.append(" left join parada posi on posi.parada_id = si.aliasorigen_id"); sb.append(" left join parada pdsi on pdsi.parada_id = si.aliasdestino_id"); sb.append(" where bi.caja_id = c.caja_id"); - sb.append(" and (nvl(case when si.aliasorigen_id is null then poi.regionmetropolitana_id else posi.regionmetropolitana_id end, -1) = nvl(case when si.aliasorigen_id is null then pdi.regionmetropolitana_id else pdsi.regionmetropolitana_id end, -2))"); + sb.append(" and (nvl(case when si.aliasorigen_id is null then poi.regionmetropolitana_id else posi.regionmetropolitana_id end, -1) = nvl(case when si.aliasorigen_id is null then pdi.regionmetropolitana_id else pdsi.regionmetropolitana_id end, -2))"); sb.append(" ) as totalisenta,"); sb.append(" 0 as vendabrutadiaria,"); sb.append(" ("); @@ -1548,7 +1731,14 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sb.append(" left join empresa_imposto eis on eis.empresa_id = c.empresacorrida_id and eis.estado_id = cos.estado_id"); sb.append(" left join fiscal_r4 r4 on r4.caja_id = c.caja_id"); sb.append(" left join estado e on e.estado_id = imp.estadolocal_id"); - sb.append(" where s.activo = 1 and po.activo = 1 and co.activo = 1 and eo.activo = 1 and ei.activo = 1 and pos.activo = 1 and cos.activo = 1 and eos.activo = 1 and c.serieimpfiscal is not null and r4.caja_id is null and c.motivocancelacion_id is null and coalesce(c.indreimpresion, 0) = 0 and nvl(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1 and c.activo = 1 and trunc(c.feccreacion) >= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS')) and trunc(c.feccreacion) <= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS')) and c.empresacorrida_id = ? and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)"); + sb.append(" where c.activo = 1 and s.activo = 1 and po.activo = 1 and co.activo = 1 and eo.activo = 1 and ei.activo = 1 and pos.activo = 1 and cos.activo = 1 and eos.activo = 1"); + sb.append(" and c.serieimpfiscal is not null and r4.caja_id is null"); + sb.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))"); + sb.append(" and coalesce(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1"); + sb.append(" and trunc(c.feccreacion) >= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS')) and trunc(c.feccreacion) <= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS'))"); + sb.append(" and c.empresacorrida_id = ?"); + sb.append(" and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)"); + sb.append(" )"); sb.append(" having sum(totalvenda) > 0"); sb.append(" group by ecf, numserie, datamov, cooinicial, coofinal, crz, cro, coo, codestabelecimento, codestabelecimentoimpressora, numeroidentificacao, estadoorigem"); @@ -1765,8 +1955,9 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO StringBuilder sb = new StringBuilder(); sb.append(" select ecf, datamov, coo, sum(valortarifa) as valortarifa, sum(preciopagado) as preciopagado, municipio_origem, estado_origem, municipio_destino, estado_destino, red_base_calc_icms, porc_red_municipal, porc_red_estadual, tributacao_importacao, isenta, numfoliosistema, sum(valortotal) as valortotal"); sb.append(" from ("); + sb.append(" select distinct"); - sb.append(" 'X' || imp.numserie20 as ecf,"); + sb.append(" imp.numserie20 as ecf,"); sb.append(" to_char(c.feccreacion, 'YYYYMMDD') as datamov,"); sb.append(" '000001' as coo,"); sb.append(" c.preciopagado as valortarifa,"); @@ -1801,7 +1992,15 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sb.append(" left join estado eds on eds.estado_id = cds.estado_id"); sb.append(" left join empresa_imposto eis on eis.empresa_id = c.empresacorrida_id and eis.estado_id = eos.estado_id"); sb.append(" left join fiscal_r4 r4 on r4.caja_id = c.caja_id"); - sb.append(" where s.activo = 1 and po.activo = 1 and co.activo = 1 and eo.activo = 1 and ei.activo = 1 and pos.activo = 1 and cos.activo = 1 and eos.activo = 1 and c.activo = 1 and (c.preciopagado + c.importetaxaembarque + c.importeseguro + c.importepedagio + c.importeoutros) > 0 and nvl(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1 and c.serieimpfiscal is not null and r4.caja_id is null and c.motivocancelacion_id is null and coalesce(c.indreimpresion, 0) = 0 and trunc(c.feccreacion) >= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS')) and trunc(c.feccreacion) <= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS')) and c.empresacorrida_id = ? and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)"); + sb.append(" where c.activo = 1 and s.activo = 1 and po.activo = 1 and co.activo = 1 and eo.activo = 1 and ei.activo = 1 and pos.activo = 1 and cos.activo = 1 and eos.activo = 1"); + sb.append(" and coalesce(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1"); + sb.append(" and c.serieimpfiscal is not null and r4.caja_id is null"); + sb.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))"); + sb.append(" and (c.preciopagado + c.importetaxaembarque + c.importeseguro + c.importepedagio + c.importeoutros) > 0"); + sb.append(" and trunc(c.feccreacion) >= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS')) and trunc(c.feccreacion) <= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS'))"); + sb.append(" and c.empresacorrida_id = ?"); + sb.append(" and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)"); + sb.append(" )"); sb.append(" group by ecf, datamov, coo, municipio_origem, estado_origem, municipio_destino, estado_destino, red_base_calc_icms, porc_red_municipal, porc_red_estadual, tributacao_importacao, isenta, numfoliosistema"); @@ -2118,8 +2317,9 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO StringBuilder sb = new StringBuilder(); sb.append(" select ecf, datamov, coo, municipio_origem, estado_origem, municipio_destino, estado_destino, red_base_calc_icms, porc_red_municipal, porc_red_estadual, tributacao_importacao, isenta, sum(valortotal) as valortotal"); sb.append(" from ("); + sb.append(" select distinct"); - sb.append(" 'X' || imp.numserie20 as ecf,"); + sb.append(" imp.numserie20 as ecf,"); sb.append(" to_char(c.feccreacion, 'YYYYMMDD') as datamov,"); sb.append(" '000001' as coo,"); sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN co.codibge ELSE cos.codibge END) as municipio_origem,"); @@ -2150,8 +2350,16 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sb.append(" left join estado eds on eds.estado_id = cds.estado_id"); sb.append(" left join empresa_imposto eis on eis.empresa_id = c.empresacorrida_id and eis.estado_id = eos.estado_id"); sb.append(" left join fiscal_r4 r4 on r4.caja_id = c.caja_id"); - sb.append(" where s.activo = 1 and po.activo = 1 and co.activo = 1 and eo.activo = 1 and ei.activo = 1 and pos.activo = 1 and cos.activo = 1 and eos.activo = 1 and (c.preciopagado + c.importetaxaembarque + c.importeseguro + c.importepedagio + c.importeoutros) > 0 and c.serieimpfiscal is not null and r4.caja_id is null and nvl(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1 and c.activo = 1 and trunc(c.feccreacion) >= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS')) and trunc(c.feccreacion) <= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS')) and c.empresacorrida_id = ? and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)"); + sb.append(" where c.activo = 1 and s.activo = 1 and po.activo = 1 and co.activo = 1 and eo.activo = 1 and ei.activo = 1 and pos.activo = 1 and cos.activo = 1 and eos.activo = 1"); + sb.append(" and coalesce(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1"); + sb.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))"); + sb.append(" and (c.preciopagado + c.importetaxaembarque + c.importeseguro + c.importepedagio + c.importeoutros) > 0"); + sb.append(" and c.serieimpfiscal is not null and r4.caja_id is null"); + sb.append(" and trunc(c.feccreacion) >= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS')) and trunc(c.feccreacion) <= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS'))"); + sb.append(" and c.empresacorrida_id = ?"); + sb.append(" and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)"); sb.append(" order by to_char(c.feccreacion, 'YYYYMMDD')"); + sb.append(" )"); sb.append(" group by ecf, datamov, coo, municipio_origem, estado_origem, municipio_destino, estado_destino, red_base_calc_icms, porc_red_municipal, porc_red_estadual, tributacao_importacao, isenta"); @@ -2469,9 +2677,10 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO final StringBuilder sb = new StringBuilder(); sb.append(" select ecf, datamov, municipio_origem, estado_origem, estado_destino, red_base_calc_icms, porc_red_municipal, porc_red_estadual, tributacao_importacao, SUM(valortotal) as valortotal"); sb.append(" from ("); + sb.append(" select distinct"); sb.append(" '000001' as coo,"); - sb.append(" 'X' || imp.numserie20 as ecf,"); + sb.append(" imp.numserie20 as ecf,"); sb.append(" to_char(c.feccreacion, 'YYYYMMDD') as datamov,"); sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN co.codibge ELSE cos.codibge END) as municipio_origem,"); sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) as estado_origem,"); @@ -2500,7 +2709,15 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sb.append(" left join estado eds on eds.estado_id = cds.estado_id"); sb.append(" left join empresa_imposto eis on eis.empresa_id = c.empresacorrida_id and eis.estado_id = eos.estado_id"); sb.append(" left join fiscal_r4 r4 on r4.caja_id = c.caja_id"); - sb.append(" where s.activo = 1 and po.activo = 1 and co.activo = 1 and eo.activo = 1 and ei.activo = 1 and pos.activo = 1 and cos.activo = 1 and eos.activo = 1 and (c.preciopagado + c.importetaxaembarque + c.importeseguro + c.importepedagio + c.importeoutros) > 0 and c.serieimpfiscal is not null and r4.caja_id is null and c.motivocancelacion_id is null and coalesce(c.indreimpresion, 0) = 0 and nvl(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1 and c.activo = 1 and trunc(c.feccreacion) >= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS')) and trunc(c.feccreacion) <= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS')) and c.empresacorrida_id = ? and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)"); + sb.append(" where c.activo = 1 and s.activo = 1 and po.activo = 1 and co.activo = 1 and eo.activo = 1 and ei.activo = 1 and pos.activo = 1 and cos.activo = 1 and eos.activo = 1"); + sb.append(" and coalesce(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1"); + sb.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))"); + sb.append(" and (c.preciopagado + c.importetaxaembarque + c.importeseguro + c.importepedagio + c.importeoutros) > 0"); + sb.append(" and c.serieimpfiscal is not null and r4.caja_id is null"); + sb.append(" and trunc(c.feccreacion) >= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS')) and trunc(c.feccreacion) <= trunc(TO_DATE(?,'DD/MM/YYYY HH24:MI:SS'))"); + sb.append(" and c.empresacorrida_id = ?"); + sb.append(" and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)"); + sb.append(" ) group by ecf, datamov, municipio_origem, estado_origem, estado_destino, red_base_calc_icms, porc_red_municipal, porc_red_estadual, tributacao_importacao"); Session session = null; diff --git a/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java index 07b8f4df1..8fefcef55 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java @@ -905,10 +905,12 @@ public class FiscalServiceImpl implements FiscalService { begin = Calendar.getInstance().getTimeInMillis(); log.info("Buscando os registros CFC (ECF)"); List listaRegistroECFTipoCFC = new ArrayList(0); - listaRegistroECFTipoCFC.addAll(fiscalDAO.buscarRegistroECFTipoCFC(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado())); - log.info("Total de registros: " + listaRegistroECFTipoCFC.size()); - log.info("Buscando os registros CFC via Boletos (ECF)"); - listaRegistroECFTipoCFC.addAll(fiscalDAO.buscarRegistroECFTipoCFC_Boleto(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado())); +// listaRegistroECFTipoCFC.addAll(fiscalDAO.buscarRegistroECFTipoCFC(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado())); +// log.info("Total de registros: " + listaRegistroECFTipoCFC.size()); +// log.info("Buscando os registros CFC via Boletos (ECF)"); +// listaRegistroECFTipoCFC.addAll(fiscalDAO.buscarRegistroECFTipoCFC_Boleto(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado())); +// log.info("Total de registros: " + listaRegistroECFTipoCFC.size()); + listaRegistroECFTipoCFC.addAll(fiscalDAO.buscarRegistroECFTipoCFCHibrido(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado())); log.info("Total de registros: " + listaRegistroECFTipoCFC.size()); tempo = infoTempo("CFC", begin); log.info("Tempo na busca dos registros " + tempo); diff --git a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java index ffe29e540..137c67ddb 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java @@ -165,7 +165,7 @@ public class ExportacaoFiscal { groupPRC.put(registro.getEcf() + "|" + registro.getDataEmissao(), itensPRC); } - int linhas = listaRegistroECFTipoCFC.size() + listaRegistroECFTipoCCF.size() + listaRegistroECFTipoICF.size() + listaRegistroECFTipoPRC.size() + 1 + 1; + int linhas = 2; Map valoresBaseCalculoICMS = new HashMap(0); @@ -173,7 +173,17 @@ public class ExportacaoFiscal { for (ExportacaoECFTipoCFC registro : listaRegistroECFTipoCFC) { adicionarLinhaCFC(writer, registro); + + linhas++; + if (registro.getEstabelecimentoECF() == null) { + log.info("- Estabelecimento da ECF indefinido para a ECF [" + registro.getEcf() + "]"); + } + + if (registro.getNumeroIdentificacaoECF() == null) { + log.info("- Número de identificação da ECF indefinido para a ECF [" + registro.getEcf() + "]"); + } + itensCCF = groupCCF.get(registro.getEcf() + "|" + registro.getDataEmissao()); totalBaseCalculoICMS.clear(); @@ -194,6 +204,8 @@ public class ExportacaoFiscal { adicionarLinhaCCF(writer, itemCCF); + linhas++; + BigDecimal valor = BigDecimal.ZERO; if (totalBaseCalculoICMS.containsKey(itemCCF.getMunicipioOrigem())) { @@ -219,6 +231,8 @@ public class ExportacaoFiscal { } adicionarLinhaICF(writer, itemICF, valorBaseCalculoICMS); + + linhas++; } } @@ -227,6 +241,8 @@ public class ExportacaoFiscal { if (itensPRC != null) { for (ExportacaoECFTipoPRC itemPRC : itensPRC) { adicionarLinhaPRC(writer, itemPRC, totalBaseCalculoICMS); + + linhas++; } } }