From d41c4af725e28c783bb299657e7f5c32990020c9 Mon Sep 17 00:00:00 2001 From: alberto Date: Wed, 16 Aug 2017 17:00:18 +0000 Subject: [PATCH] =?UTF-8?q?Exporta=C3=A7=C3=A3o=20Fiscal=20:=20ECF=20e=20R?= =?UTF-8?q?MD=20(issue=208120)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@72623 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../dao/hibernate/FiscalHibernateDAO.java | 128 ++++++++++++++---- 1 file changed, 98 insertions(+), 30 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java index 9b0cee28d..952612af5 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java @@ -1387,7 +1387,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO 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(" 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, sum(totaldesconto) as totaldesconto"); sb.append(" from ("); sb.append(" select distinct"); sb.append(" imp.numserie20 as ecf,"); @@ -1405,14 +1405,13 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sb.append(" ("); sb.append(" select sum(coalesce(to_number(r5i.imptotalliquido)/100,ci.preciopagado))"); sb.append(" from fiscal_r4 r4i"); - 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(" join caja ci on ci.caja_id = r4i.caja_id"); + sb.append(" join parada poi on poi.parada_id = ci.origen_id"); + sb.append(" join parada pdi on pdi.parada_id = ci.destino_id"); sb.append(" left join fiscal_r5 r5i on r5i.numserie20 = r4i.numserie20 and r5i.datamov = r4i.datamov and r5i.coo = r4i.coo and r5i.contador = r4i.contador and r5i.totparcial not like 'N1'"); - 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 alias_servico si on si.origen_id = ci.origen_id and si.destino_id = ci.destino_id and (si.corrida_id = ci.corrida_id or si.corrida_id is null) and si.ruta_id = ci.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(" left join caja ci on ci.caja_id = r4i.caja_id"); sb.append(" where r4i.numserie20 = r4.numserie20 and r4i.datamov = r2.datamov"); 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,"); @@ -1421,19 +1420,32 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sb.append(" ("); sb.append(" select sum(coalesce(to_number(r5i.imptotalliquido)/100,ci.preciopagado))"); sb.append(" from fiscal_r4 r4i"); - 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 caja ci on ci.caja_id = r4i.caja_id"); + sb.append(" join parada poi on poi.parada_id = ci.origen_id"); sb.append(" join ciudad coi on coi.ciudad_id = poi.ciudad_id"); sb.append(" join estado eoi on eoi.estado_id = coi.estado_id"); sb.append(" left join fiscal_r5 r5i on r5i.numserie20 = r4i.numserie20 and r5i.datamov = r4i.datamov and r5i.coo = r4i.coo and r5i.contador = r4i.contador and r5i.totparcial not like 'N1'"); - 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 alias_servico si on si.origen_id = ci.origen_id and si.destino_id = ci.destino_id and (si.corrida_id = ci.corrida_id or si.corrida_id is null) and si.ruta_id = ci.ruta_id"); sb.append(" left join parada posi on posi.parada_id = si.aliasorigen_id"); sb.append(" left join ciudad cosi on cosi.ciudad_id = posi.ciudad_id"); sb.append(" left join estado eosi on eosi.estado_id = cosi.estado_id"); - sb.append(" left join caja ci on ci.caja_id = r4i.caja_id"); sb.append(" where r4i.numserie20 = r2.numserie20 and r4i.datamov = r2.datamov"); sb.append(" and ((CASE WHEN si.aliasorigen_id IS NULL THEN eoi.cveestado ELSE eosi.cveestado END) = (CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END))"); sb.append(" ) as totalvenda,"); + sb.append(" ("); + sb.append(" select sum(coalesce(ci.descuentoamparado,0))"); + sb.append(" from fiscal_r4 r4i"); + sb.append(" join caja ci on ci.caja_id = r4i.caja_id"); + sb.append(" join parada poi on poi.parada_id = ci.origen_id"); + sb.append(" join ciudad coi on coi.ciudad_id = poi.ciudad_id"); + sb.append(" join estado eoi on eoi.estado_id = coi.estado_id"); + sb.append(" left join alias_servico si on si.origen_id = ci.origen_id and si.destino_id = ci.destino_id and (si.corrida_id = ci.corrida_id or si.corrida_id is null) and si.ruta_id = ci.ruta_id"); + sb.append(" left join parada posi on posi.parada_id = si.aliasorigen_id"); + sb.append(" left join ciudad cosi on cosi.ciudad_id = posi.ciudad_id"); + sb.append(" left join estado eosi on eosi.estado_id = cosi.estado_id"); + sb.append(" where r4i.numserie20 = r2.numserie20 and r4i.datamov = r2.datamov"); + sb.append(" and ((CASE WHEN si.aliasorigen_id IS NULL THEN eoi.cveestado ELSE eosi.cveestado END) = (CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END))"); + sb.append(" ) as totaldesconto,"); 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"); @@ -1470,27 +1482,32 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO 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(" select nvl(sum(ci.preciopagado), 0)"); + sb.append(" from caja ci"); + sb.append(" join parada poi on poi.parada_id = ci.origen_id"); + sb.append(" join parada pdi on pdi.parada_id = ci.destino_id"); + sb.append(" left join alias_servico si on si.origen_id = ci.origen_id and si.destino_id = ci.destino_id and (si.corrida_id = ci.corrida_id or si.corrida_id is null) and si.ruta_id = ci.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(" where ci.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(" select nvl(sum(ci.preciopagado + ci.importetaxaembarque + ci.importeseguro + ci.importepedagio + ci.importeoutros), 0)"); + sb.append(" from caja ci"); + sb.append(" where ci.caja_id = c.caja_id"); sb.append(" ) as totgeral,"); sb.append(" ("); - sb.append(" select nvl(sum(c.preciopagado), 0)"); - sb.append(" from caja bi"); - sb.append(" where bi.caja_id = c.caja_id"); + sb.append(" select nvl(sum(ci.preciopagado), 0)"); + sb.append(" from caja ci"); + sb.append(" where ci.caja_id = c.caja_id"); sb.append(" ) as totalvenda,"); + sb.append(" ("); + sb.append(" select nvl(sum(ci.descuentoamparado), 0)"); + sb.append(" from caja ci"); + sb.append(" where ci.caja_id = c.caja_id"); + sb.append(" ) as totaldesconto,"); sb.append(" c.caja_id"); sb.append(" from caja c"); sb.append(" join parada po on po.parada_id = c.origen_id"); @@ -1535,11 +1552,23 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO while (rs.next()) { BigDecimal totalIsenta = BigDecimal.ZERO; + BigDecimal totalvenda = BigDecimal.ZERO; + BigDecimal totalDesconto = BigDecimal.ZERO; if (rs.getBigDecimal("totalisenta") != null) { totalIsenta = rs.getBigDecimal("totalisenta"); } + if (rs.getBigDecimal("totalvenda") != null) { + totalvenda = rs.getBigDecimal("totalvenda"); + } + + if (rs.getBigDecimal("totaldesconto") != null) { + totalDesconto = rs.getBigDecimal("totaldesconto"); + } + + totalvenda = MoneyHelper.subtrair(totalvenda, totalDesconto); + registro = new ExportacaoECFTipoCFC(); registro.setEstabelecimento(rs.getString("codestabelecimento")); registro.setDataEmissao(rs.getString("datamov")); @@ -1550,7 +1579,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO 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")))); + registro.setValorTotal(totalvenda); registro.setValorIsentas(totalIsenta); registro.setEstabelecimentoECF(rs.getString("codestabelecimentoimpressora")); registro.setNumeroSerie(rs.getString("numserie")); @@ -1574,14 +1603,15 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO List retorno = new ArrayList(); 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(" select ecf, datamov, coo, sum(valortarifa) as valortarifa, sum(preciopagado) as preciopagado, sum(desconto) as totaldesconto, 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(" r4.numserie20 as ecf,"); sb.append(" r4.datamov as datamov,"); sb.append(" r4.coo as coo,"); - sb.append(" to_number(r5.imptotalliquido)/100 as valortarifa,"); + sb.append(" (select sum(to_number(r5x.imptotalliquido)/100) from fiscal_r5 r5x where r5x.numserie20 = r4.numserie20 and r5x.coo = r4.coo and r5x.totparcial not like 'N1') as valortarifa,"); sb.append(" c.preciopagado as preciopagado,"); + sb.append(" coalesce(c.descuentoamparado,0) as desconto,"); 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,"); sb.append(" (CASE WHEN s.aliasdestino_id IS NULL THEN cd.codibge ELSE cds.codibge END) as municipio_destino,"); @@ -1622,6 +1652,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sb.append(" '000001' as coo,"); sb.append(" c.preciopagado as valortarifa,"); sb.append(" c.preciopagado as preciopagado,"); + sb.append(" coalesce(c.descuentoamparado,0) as desconto,"); 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,"); sb.append(" (CASE WHEN s.aliasdestino_id IS NULL THEN cd.codibge ELSE cds.codibge END) as municipio_destino,"); @@ -1681,7 +1712,8 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO while (rs.next()) { BigDecimal valorTributado = BigDecimal.ZERO; - + BigDecimal totalDesconto = BigDecimal.ZERO; + if (rs.getString("valortarifa") != null) { valorTributado = BigDecimal.valueOf(Double.valueOf(rs.getString("valortarifa"))); } else { @@ -1690,6 +1722,12 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO log.info("Tarifa nao encontrada na R5. (ECF: " + rs.getString("ecf") + " / DATAMOV: " + rs.getString("datamov") + " / COO: " + rs.getString("coo") + ")"); } + if (rs.getBigDecimal("totaldesconto") != null) { + totalDesconto = rs.getBigDecimal("totaldesconto"); + } + + valorTributado = MoneyHelper.subtrair(valorTributado, totalDesconto); + registro = new ExportacaoECFTipoCCF(); registro.setEcf(rs.getString("ecf")); registro.setDataEmissao(rs.getString("datamov")); @@ -1790,7 +1828,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO List retorno = new ArrayList(); 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(" 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, sum(totaldesconto) as totaldesconto"); sb.append(" from ("); sb.append(" select distinct"); sb.append(" r4.numserie20 as ecf,"); @@ -1811,7 +1849,13 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sb.append(" left join fiscal_r5 r5i on r5i.numserie20 = r4i.numserie20 and r5i.datamov = r4i.datamov and r5i.coo = r4i.coo and r5i.totparcial not like 'N1'"); sb.append(" left join caja ci on ci.caja_id = r4i.caja_id"); sb.append(" where r4i.numserie20 = r4.numserie20 and r4i.datamov = r4.datamov and r4i.coo = r4.coo"); - sb.append(" ) as valortotal"); + sb.append(" ) as valortotal,"); + sb.append(" ("); + sb.append(" select sum(coalesce(ci.descuentoamparado, 0))"); + sb.append(" from fiscal_r4 r4i"); + sb.append(" left join caja ci on ci.caja_id = r4i.caja_id"); + sb.append(" where r4i.numserie20 = r4.numserie20 and r4i.datamov = r4.datamov and r4i.coo = r4.coo"); + sb.append(" ) as totaldesconto"); 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 boleto b on b.boleto_id = r4.boleto_id"); @@ -1845,7 +1889,8 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN ei.porcredestadual ELSE eis.porcredestadual END) as porc_red_estadual,"); sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN ei.tributacaoimportacao ELSE eis.tributacaoimportacao END) as tributacao_importacao,"); sb.append(" (CASE WHEN (nvl((CASE WHEN s.aliasorigen_id IS NULL THEN po.regionmetropolitana_id ELSE pos.regionmetropolitana_id END),-1) = nvl((CASE WHEN s.aliasdestino_id IS NULL THEN pd.regionmetropolitana_id ELSE pds.regionmetropolitana_id END),-2)) THEN 1 ELSE 0 END) as isenta,"); - sb.append(" (c.preciopagado) as valortotal"); + sb.append(" (c.preciopagado) as valortotal,"); + sb.append(" coalesce(c.descuentoamparado, 0) as totaldesconto"); 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"); @@ -1900,6 +1945,14 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO if (valorTotal.doubleValue() == 0) { continue; } + + BigDecimal totalDesconto = BigDecimal.ZERO; + + if (rs.getBigDecimal("totaldesconto") != null) { + totalDesconto = rs.getBigDecimal("totaldesconto"); + } + + valorTotal = MoneyHelper.subtrair(valorTotal, totalDesconto); BigDecimal red_base_calc_icms = MoneyHelper.instanciar(rs.getBigDecimal("red_base_calc_icms")); BigDecimal porc_red_municipal = MoneyHelper.instanciar(rs.getBigDecimal("porc_red_municipal")); @@ -2040,7 +2093,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO final List retorno = new ArrayList(); 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(" 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, sum(totaldesconto) as totaldesconto"); sb.append(" from ("); sb.append(" select distinct"); sb.append(" r4.coo as coo,"); @@ -2060,6 +2113,12 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sb.append(" left join caja ci on ci.caja_id = r4i.caja_id"); sb.append(" where r4i.numserie20 = r4.numserie20 and r4i.datamov = r4.datamov and r4i.coo = r4.coo"); sb.append(" ) as valortotal,"); + sb.append(" ("); + sb.append(" select sum(coalesce(ci.descuentoamparado, 0))"); + sb.append(" from fiscal_r4 r4i"); + sb.append(" left join caja ci on ci.caja_id = r4i.caja_id"); + sb.append(" where r4i.numserie20 = r4.numserie20 and r4i.datamov = r4.datamov and r4i.coo = r4.coo"); + sb.append(" ) as totaldesconto,"); 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"); @@ -2093,6 +2152,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN ei.porcredestadual ELSE eis.porcredestadual END) as porc_red_estadual,"); sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN ei.tributacaoimportacao ELSE eis.tributacaoimportacao END) as tributacao_importacao,"); sb.append(" c.preciopagado as valortotal,"); + sb.append(" coalesce(c.descuentoamparado, 0) as totaldesconto,"); sb.append(" c.caja_id"); sb.append(" from caja c"); sb.append(" join parada po on po.parada_id = c.origen_id"); @@ -2149,6 +2209,14 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO while (rs.next()) { BigDecimal valorTotal = MoneyHelper.instanciar(rs.getString("valortotal")); + + BigDecimal totalDesconto = BigDecimal.ZERO; + + if (rs.getBigDecimal("totaldesconto") != null) { + totalDesconto = rs.getBigDecimal("totaldesconto"); + } + + valorTotal = MoneyHelper.subtrair(valorTotal, totalDesconto); BigDecimal red_base_calc_icms = MoneyHelper.instanciar(rs.getBigDecimal("red_base_calc_icms")); // BigDecimal porc_red_municipal = MoneyHelper.instanciar(rs.getBigDecimal("porc_red_municipal"));