diff --git a/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java b/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java index ed64eb3a0..ba35ea50b 100644 --- a/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java @@ -49,7 +49,7 @@ public interface FiscalDAO { public List buscarRegistroRMDTipoDBP(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado); - public List getRegistroImpressaoRMDTipoDVB(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado, String rmd, String folio); + public List getRegistroImpressaoRMDTipoBPR(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado, String rmd, String folio); public List getRegistroImpressaoRMDTipoECF(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado, String rmd, String folio); diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java index 682a4cf43..41138aea3 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java @@ -32,6 +32,7 @@ import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.utilerias.MoneyHelper; import com.rjconsultores.ventaboletos.utilerias.StringHelper; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; +import com.rjconsultores.ventaboletos.utilerias.UtiliteriasFiscal; import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoECFTipoCCF; import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoECFTipoCFC; import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoECFTipoICF; @@ -63,7 +64,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO public FiscalHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { setSessionFactory(factory); } - + private boolean isEstadoTodos(Integer estadoId) { if (estadoId == -1 || estadoId == null) return true; @@ -181,7 +182,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO stmt.setTimestamp(1, new java.sql.Timestamp(DateUtil.inicioFecha(inicio).getTime())); stmt.setTimestamp(2, new java.sql.Timestamp(DateUtil.fimFecha(fim).getTime())); stmt.setInt(3, empresaId); - + if (!isEstadoTodos(estadoId)) stmt.setInt(4, estadoId); @@ -464,7 +465,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO stmt.setString(2, DateUtil.getStringDate(inicio, DATE_FORMAT_FISCAL)); stmt.setString(3, DateUtil.getStringDate(fim, DATE_FORMAT_FISCAL)); stmt.setInt(4, empresaId); - + if (!isEstadoTodos(estadoId)) stmt.setInt(5, estadoId); @@ -629,7 +630,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sql.append(" INNER JOIN ciudad co ON o.ciudad_id = co.ciudad_id "); sql.append(" INNER JOIN estado eo ON eo.estado_id = co.estado_id "); sql.append(" LEFT JOIN empresa_imposto ei ON ei.estado_id = eo.estado_id AND b.marca_id = ei.empresa_id "); - //sql.append(" LEFT JOIN empresa_imposto ei ON b.marca_id = ei.empresa_id ").append(isEstadoTodos ? "" : " AND ei.estado_id = eo.estado_id "); + // sql.append(" LEFT JOIN empresa_imposto ei ON b.marca_id = ei.empresa_id ").append(isEstadoTodos ? "" : " AND ei.estado_id = eo.estado_id "); sql.append(" INNER JOIN parada d ON coalesce(ase.aliasdestino_id, b.destino_id) = d.parada_id "); sql.append(" INNER JOIN ciudad cd ON d.ciudad_id = cd.ciudad_id "); sql.append(" INNER JOIN estado ed ON ed.estado_id = cd.estado_id "); @@ -1264,7 +1265,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO stmt.setInt(1, empresaId); stmt.setDate(2, new java.sql.Date(inicio.getTime())); stmt.setDate(3, new java.sql.Date(fim.getTime())); - + if (!isEstadoTodos(estadoId)) stmt.setInt(4, estadoId); @@ -1399,44 +1400,44 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO List retorno = new ArrayList(); StringBuilder sb = new StringBuilder(); - -// sb.append(" select distinct"); -// sb.append(" r5.numserie20 as ecf,"); -// sb.append(" r5.datamov as datamov,"); -// sb.append(" r5.coo as coo,"); -// sb.append(" r5.imptotalliquido as valortarifa,"); -// 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,"); -// sb.append(" (CASE WHEN s.aliasdestino_id IS NULL THEN ed.cveestado ELSE eds.cveestado END) as estado_destino,"); -// sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN ei.porcredbaseicms ELSE eis.porcredbaseicms END) as red_base_calc_icms,"); -// sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN ei.porcredmunicipal ELSE eis.porcredmunicipal END) as porc_red_municipal,"); -// 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(" r4.impsubtotal as valortotal,"); -// sb.append(" b.numfoliosistema as numfoliosistema"); -// sb.append(" from fiscal_r5 r5"); -// sb.append(" join fiscal_r4 r4 on r4.numserie20 = r5.numserie20 and r4.coo = r5.coo"); -// 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"); -// 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 parada pd on pd.parada_id = b.destino_id"); -// sb.append(" join ciudad cd on cd.ciudad_id = pd.ciudad_id"); -// sb.append(" join estado ed on ed.estado_id = cd.estado_id"); -// sb.append(" join empresa_imposto ei on ei.empresa_id = b.empresacorrida_id and ei.estado_id = eo.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 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 parada pds on pds.parada_id = s.aliasdestino_id"); -// 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 empresa_imposto eis on eis.empresa_id = b.empresacorrida_id and eis.estado_id = eos.estado_id"); -// sb.append(" where coalesce(r4.indcancelamento, 'N') <> 'S' and nvl(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1 and b.activo = 1 and r5.codproduto like '%-TA' and r5.datamov >= ? and r5.datamov <= ? and b.empresacorrida_id = ? and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)"); - + + // sb.append(" select distinct"); + // sb.append(" r5.numserie20 as ecf,"); + // sb.append(" r5.datamov as datamov,"); + // sb.append(" r5.coo as coo,"); + // sb.append(" r5.imptotalliquido as valortarifa,"); + // 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,"); + // sb.append(" (CASE WHEN s.aliasdestino_id IS NULL THEN ed.cveestado ELSE eds.cveestado END) as estado_destino,"); + // sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN ei.porcredbaseicms ELSE eis.porcredbaseicms END) as red_base_calc_icms,"); + // sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN ei.porcredmunicipal ELSE eis.porcredmunicipal END) as porc_red_municipal,"); + // 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(" r4.impsubtotal as valortotal,"); + // sb.append(" b.numfoliosistema as numfoliosistema"); + // sb.append(" from fiscal_r5 r5"); + // sb.append(" join fiscal_r4 r4 on r4.numserie20 = r5.numserie20 and r4.coo = r5.coo"); + // 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"); + // 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 parada pd on pd.parada_id = b.destino_id"); + // sb.append(" join ciudad cd on cd.ciudad_id = pd.ciudad_id"); + // sb.append(" join estado ed on ed.estado_id = cd.estado_id"); + // sb.append(" join empresa_imposto ei on ei.empresa_id = b.empresacorrida_id and ei.estado_id = eo.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 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 parada pds on pds.parada_id = s.aliasdestino_id"); + // 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 empresa_imposto eis on eis.empresa_id = b.empresacorrida_id and eis.estado_id = eos.estado_id"); + // sb.append(" where coalesce(r4.indcancelamento, 'N') <> 'S' and nvl(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1 and b.activo = 1 and r5.codproduto like '%-TA' and r5.datamov >= ? and r5.datamov <= ? and b.empresacorrida_id = ? and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)"); + sb.append(" select distinct"); sb.append(" r4.numserie20 as ecf,"); sb.append(" r4.datamov as datamov,"); @@ -1489,15 +1490,15 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO while (rs.next()) { BigDecimal valorTarifa = BigDecimal.ZERO; - + if (rs.getString("valortarifa") != null) { valorTarifa = BigDecimal.valueOf(Double.valueOf(rs.getString("valortarifa")) / 100); } else { valorTarifa = rs.getBigDecimal("preciopagado"); - + log.info("Tarifa nao encontrada na R5. (ECF: " + rs.getString("ecf") + " / DATAMOV: " + rs.getString("datamov") + " / COO: " + rs.getString("coo") + ")"); } - + registro = new ExportacaoECFTipoCCF(); registro.setEcf(rs.getString("ecf")); registro.setDataEmissao(rs.getString("datamov")); @@ -1562,9 +1563,9 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO } if (rs.getInt("isenta") == 1) { - valorBaseCalculoICMS= null; + valorBaseCalculoICMS = null; } - + registro.setValorTotal(valorTotal); // 1 - Demais; 2 - Região Metropolitanao ou seja, quando o campo CSTB for "40", esse campo deve vir "2". Do contrário, deve vir "1" @@ -2010,7 +2011,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sb.append(" join ciudad cd on cd.ciudad_id = po.ciudad_id"); sb.append(" left join parada pds on pds.parada_id = s.aliasdestino_id"); sb.append(" left join ciudad cds on cds.ciudad_id = pds.ciudad_id"); -// sb.append(" join aidf a on a.serie = substr(b.numseriepreimpresa, 1, 3) and a.estado_id = (CASE WHEN s.aliasorigen_id IS NULL THEN eo.estado_id ELSE eos.estado_id END)"); + // sb.append(" join aidf a on a.serie = substr(b.numseriepreimpresa, 1, 3) and a.estado_id = (CASE WHEN s.aliasorigen_id IS NULL THEN eo.estado_id ELSE eos.estado_id END)"); sb.append(" join aidf a on a.aidf_id = b.aidf_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 empresa_imposto eis on eis.empresa_id = b.empresacorrida_id and eis.estado_id = cos.estado_id"); @@ -2091,7 +2092,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO 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(" join aidf a on a.serie = substr(b.numseriepreimpresa, 1, 3) and a.estado_id = (CASE WHEN s.aliasorigen_id IS NULL THEN eo.estado_id ELSE eos.estado_id END)"); + // sb.append(" join aidf a on a.serie = substr(b.numseriepreimpresa, 1, 3) and a.estado_id = (CASE WHEN s.aliasorigen_id IS NULL THEN eo.estado_id ELSE eos.estado_id END)"); sb.append(" join aidf a on a.aidf_id = b.aidf_id"); sb.append(" join aidf r on r.aidf_id = b.rmd_id"); sb.append(" where"); @@ -2361,12 +2362,12 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO return retorno; } - + @Override public void cancelarRMDBoleto(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado, Aidf aidf, String folio) { String def = null; - for (DetalhadoRMD brp : buscarRegistroImpressaoRMD(connection, inicio, fim, empresaId, cveestado, aidf.getAidfId(), folio, false, false, true)) { + for (DetalhadoRMD brp : buscarRegistroImpressaoBPR(connection, inicio, fim, empresaId, cveestado, aidf.getAidfId(), folio, false, false, true)) { StringBuilder sb = new StringBuilder(); PreparedStatement pstmt = null; @@ -2401,7 +2402,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO rmdIterate++; cont = 0; } - + for (DetalhadoRMD det : imp.getDetalhada()) { StringBuilder sb = new StringBuilder(); @@ -2430,76 +2431,43 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO } @Override - public List getRegistroImpressaoRMDTipoDVB(Connection connection, Date inicio, Date fim, Integer empresaId, + public List getRegistroImpressaoRMDTipoBPR(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado, String rmd, String folio) { List list = new ArrayList(); // IMPRESSAO RMD MANUAL - String serie = null; Date data = null; - // int primeiroFolio = 0; - int anteriorFolio = 0; + String numPuntoVenta = null; ImpressaoRMD impRmd = null; - for (DetalhadoRMD brp : buscarRegistroImpressaoRMD(connection, inicio, fim, empresaId, cveestado, null, null, true, false, false)) { + for (DetalhadoRMD brp : buscarRegistroImpressaoBPR(connection, inicio, fim, empresaId, cveestado, null, null, true, false, false)) { - if (serie == null) { + if (numPuntoVenta == null) { impRmd = new ImpressaoRMD(brp.getEmpresa(), brp.getEnderecoEmpresa(), brp.getCnpjEmpresa(), brp.getIeEmpresa(), - brp.getFechorVenta(), rmd, "SERVIÇO DE TRANSPORTE", "DVB", "", brp.getSerie(), folio); - serie = brp.getSerie(); + brp.getFechorVenta(), rmd, "SERVIÇO DE TRANSPORTE", "DVB", null, null, folio); + numPuntoVenta = brp.getNumPuntoVenta(); data = brp.getFechorVenta(); - } else { - if (serie.equals(brp.getSerie()) && data.equals(brp.getFechorVenta())) { - if (anteriorFolio + 1 == brp.getFolio()) { - - } else { - impRmd.setNumero(brp.getFolio().toString()); - list.add(impRmd); - impRmd = new ImpressaoRMD(brp.getEmpresa(), brp.getEnderecoEmpresa(), brp.getCnpjEmpresa(), brp.getIeEmpresa(), - brp.getFechorVenta(), rmd, "SERVIÇO DE TRANSPORTE", "DVB", "", brp.getSerie(), folio); - serie = brp.getSerie(); - data = brp.getFechorVenta(); - } - - } else { - impRmd.setNumero(brp.getFolio().toString()); - list.add(impRmd); - impRmd = new ImpressaoRMD(brp.getEmpresa(), brp.getEnderecoEmpresa(), brp.getCnpjEmpresa(), brp.getIeEmpresa(), - brp.getFechorVenta(), rmd, "SERVIÇO DE TRANSPORTE", "DVB", "", brp.getSerie(), folio); - serie = brp.getSerie(); - data = brp.getFechorVenta(); - } - } - - BigDecimal valorContabil = impRmd.getValorContabil() == null ? BigDecimal.ZERO : impRmd.getValorContabil().add(somarTotalBilhete(brp)); - BigDecimal baseCalculo = impRmd.getBaseCalculo() == null ? BigDecimal.ZERO : impRmd.getBaseCalculo().add( - brp.getTarifa() == null ? BigDecimal.ZERO : brp.getTarifa()); - - BigDecimal aliquota = brp.getTributacaoImportacao(); - - BigDecimal icms = baseCalculo.multiply(aliquota.divide(BigDecimal.TEN.multiply(BigDecimal.TEN))); - - BigDecimal isentos = BigDecimal.ZERO; - BigDecimal outros = valorContabil.subtract(baseCalculo); - - impRmd.setValorContabil(valorContabil); - impRmd.setBaseCalculo(baseCalculo); - impRmd.setAliquota(aliquota); - impRmd.setIcms(icms); - impRmd.setIsentos(isentos); - impRmd.setOutros(outros); - impRmd.setNumero(brp.getNumPuntoVenta()); - impRmd.getDetalhada().add(brp); - - if (anteriorFolio == 0) + } else if (!(numPuntoVenta.equals(brp.getNumPuntoVenta()) && data.equals(brp.getFechorVenta()))) { + impRmd.setNumero(brp.getCcf()); list.add(impRmd); - anteriorFolio = brp.getFolio(); + impRmd = new ImpressaoRMD(brp.getEmpresa(), brp.getEnderecoEmpresa(), brp.getCnpjEmpresa(), brp.getIeEmpresa(), + brp.getFechorVenta(), rmd, "SERVIÇO DE TRANSPORTE", "DVB", null, null, folio); + numPuntoVenta = brp.getNumPuntoVenta(); + data = brp.getFechorVenta(); + } + + impRmd.getDetalhada().add(brp); } + if (impRmd != null) + list.add(impRmd); + + agruparImpressaoRMD(list); + return list; } @@ -2513,12 +2481,12 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO String serie = null; String datamov = null; ImpressaoRMD impRmd = null; - - for (DetalhadoRMD brp : buscarRegistroImpressaoRMD(connection, inicio, fim, empresaId, cveestado, null, null, false, true, false)) { + + for (DetalhadoRMD brp : buscarRegistroImpressaoBPR(connection, inicio, fim, empresaId, cveestado, null, null, false, true, false)) { if (serie == null) { impRmd = new ImpressaoRMD(brp.getEmpresa(), brp.getEnderecoEmpresa(), brp.getCnpjEmpresa(), brp.getIeEmpresa(), - brp.getFechorVenta(), rmd, "SERVIÇO DE TRANSPORTE", "ECF", brp.getEcf(), brp.getEstadoOrigem(), folio); + brp.getFechorVenta(), rmd, "SERVIÇO DE TRANSPORTE", "ECF", brp.getEcf(), brp.getEstadoImpressora(), folio); serie = brp.getEcf(); datamov = brp.getDatamov(); @@ -2527,7 +2495,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO list.add(impRmd); impRmd = new ImpressaoRMD(brp.getEmpresa(), brp.getEnderecoEmpresa(), brp.getCnpjEmpresa(), brp.getIeEmpresa(), - brp.getFechorVenta(), rmd, "SERVIÇO DE TRANSPORTE", "ECF", brp.getEcf(), brp.getEstadoOrigem(), folio); + brp.getFechorVenta(), rmd, "SERVIÇO DE TRANSPORTE", "ECF", brp.getEcf(), brp.getEstadoImpressora(), folio); serie = brp.getEcf(); datamov = brp.getDatamov(); } @@ -2560,13 +2528,17 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO if (brp.getIsenta()) { isentos = isentos == null ? BigDecimal.ZERO : isentos.add(somarTotalBilhete(brp)); } else { - valorContabil = valorContabil == null ? BigDecimal.ZERO : valorContabil.add(somarTotalBilhete(brp)); - baseCalculo = baseCalculo == null ? BigDecimal.ZERO : baseCalculo.add(brp.getTarifa() == null ? BigDecimal.ZERO : brp.getTarifa()); - aliquota = brp.getTributacaoImportacao(); + valorContabil = valorContabil == null ? BigDecimal.ZERO : valorContabil.add(brp.getTarifa() == null ? BigDecimal.ZERO : brp.getTarifa()); + + BigDecimal redBaseCalcIcms = brp.getRedBaseCalcIcms() == null ? BigDecimal.ONE : brp.getRedBaseCalcIcms().divide(UtiliteriasFiscal.CEM); + BigDecimal redutor = valorContabil.multiply(redBaseCalcIcms); + baseCalculo = valorContabil.subtract(redutor); + + aliquota = brp.getTributacaoImportacao() == null ? brp.getIcmsInterestadual() : brp.getTributacaoImportacao(); icms = baseCalculo.multiply(aliquota.divide(BigDecimal.TEN.multiply(BigDecimal.TEN))); - outros = outros.add(valorContabil.subtract(baseCalculo)); + outros = valorContabil.subtract(baseCalculo); } - cooFim = brp.getCoo(); + cooFim = brp.getCoo() == null ? brp.getNumPuntoVenta() : brp.getCoo(); } impRmd.setNumero(cooFim); impRmd.setValorContabil(valorContabil); @@ -2589,7 +2561,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO return total; } - public List buscarRegistroImpressaoRMD(Connection connection, Date inicio, Date fim, Integer empresaId, + public List buscarRegistroImpressaoBPR(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado, Long rmdId, String foliormd, boolean isManual, boolean isECF, boolean isCancelamento) { List list = new ArrayList(); @@ -2599,17 +2571,22 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sql = getSqlImpressaoRMDTipoECF(); } else if (isManual) { - sql = getSqlImpressaoRMDTipoDVB(); + sql = getSqlImpressaoRMDTipoBPR(); } else if (isCancelamento) { sql = getSqlCancelarRMDTipoECF(); } PreparedStatement ps = connection.prepareStatement(sql); - ps.setLong(1, Long.valueOf(empresaId)); - ps.setTimestamp(2, new java.sql.Timestamp(DateUtil.inicioFecha(inicio).getTime())); - ps.setTimestamp(3, new java.sql.Timestamp(DateUtil.fimFecha(fim).getTime())); + if (isECF) { + ps.setString(2, DateUtil.getStringDate(inicio, DATE_FORMAT_FISCAL)); + ps.setString(3, DateUtil.getStringDate(fim, DATE_FORMAT_FISCAL)); + } else { + ps.setTimestamp(2, new java.sql.Timestamp(DateUtil.inicioFecha(inicio).getTime())); + ps.setTimestamp(3, new java.sql.Timestamp(DateUtil.fimFecha(fim).getTime())); + } + ps.setString(4, cveestado); if (isCancelamento) { @@ -2657,6 +2634,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO brp.setCoo(rs.getString("coo")); brp.setCcf(rs.getString("ccf")); brp.setTotalFiscal(rs.getString("totalFiscal")); + brp.setEstadoImpressora(rs.getString("estadoImpressora")); } list.add(brp); @@ -2672,7 +2650,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO return list; } - private String getSqlImpressaoRMDTipoDVB() { + private String getSqlImpressaoRMDTipoBPR() { StringBuilder sql = new StringBuilder(); sql.append("select "); sql.append(" b.boleto_id as boletoId, "); @@ -2714,7 +2692,8 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sql.append(" coalesce(b.importeseguro, 0) as seguro, "); sql.append(" coalesce(b.importeoutros, 0) as outros "); sql.append("from boleto b "); - sql.append(" join empresa e on e.empresa_id = b.empresacorrida_id "); + sql.append(" join marca m on b.marca_id = m.marca_id "); + sql.append(" join empresa e on e.empresa_id = m.empresa_id "); sql.append(" join punto_venta pv on pv.puntoventa_id = b.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 "); @@ -2741,14 +2720,13 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sql.append(" and a.estado_id = (CASE WHEN s.aliasorigen_id IS NULL "); sql.append(" THEN eo.estado_id ELSE eos.estado_id END) "); sql.append("where "); - sql.append(" b.activo = 1 "); - sql.append(" and b.tipoventa_id = 3 "); + sql.append(" b.tipoventa_id = 3 "); sql.append(" and b.rmd_id is null "); sql.append(" and b.indstatusboleto = 'V' "); - sql.append(" and b.empresacorrida_id = ? "); + sql.append(" and e.empresa_id = ? "); sql.append(" and b.fechorventa between ? and ? "); sql.append(" and coalesce(eos.cveestado, eo.cveestado) = ? "); - sql.append("order by estadoId, serieCompl, folio, fechorVenta "); + sql.append("order by estadoId, fechorVenta, nombPuntoVenta, numPuntoVenta "); return sql.toString(); } @@ -2799,13 +2777,18 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sql.append(" r4.datamov as datamov, "); sql.append(" r4.coo as coo, "); sql.append(" r4.contador as ccf, "); - sql.append(" r4.impsubtotal as totalFiscal "); + sql.append(" r4.impsubtotal as totalFiscal, "); + sql.append(" epv.cveestado as estadoImpressora "); sql.append("from fiscal_r4 r4 "); sql.append(" join boleto b on b.boleto_id = r4.boleto_id "); - sql.append(" join empresa e on e.empresa_id = b.empresacorrida_id "); - sql.append(" join punto_venta pv on pv.puntoventa_id = b.puntoventa_id "); + sql.append(" join marca m on b.marca_id = m.marca_id "); + sql.append(" join empresa e on e.empresa_id = m.empresa_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 punto_venta pv on pv.puntoventa_id = b.puntoventa_id "); + sql.append(" left join parada ppv on ppv.parada_id = pv.parada_id "); + sql.append(" left join ciudad cpv on cpv.ciudad_id = ppv.ciudad_id "); + sql.append(" left join estado epv on epv.estado_id = cpv.estado_id "); sql.append(" join parada po on po.parada_id = b.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 "); @@ -2823,23 +2806,22 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sql.append(" left join estado eds on eds.estado_id = cds.estado_id "); sql.append(" join inscricao_estadual ie on e.empresa_id = ie.empresa_id "); sql.append(" and ie.estado_id = coalesce(eos.estado_id, eo.estado_id) and ie.activo = 1 "); - sql.append(" join empresa_imposto ei on ei.empresa_id = b.empresacorrida_id "); + sql.append(" join empresa_imposto ei on ei.empresa_id = e.empresa_id "); sql.append(" and ei.estado_id = coalesce(eos.estado_id, eo.estado_id) and ei.activo = 1 "); sql.append(" left join aidf a on a.serie = substr(b.numseriepreimpresa, 1, 3) "); sql.append(" and a.estado_id = (CASE WHEN s.aliasorigen_id IS NULL "); sql.append(" THEN eo.estado_id ELSE eos.estado_id END) "); sql.append("where "); - sql.append(" b.activo = 1 "); - sql.append(" and b.tipoventa_id <> 3 "); + sql.append(" b.tipoventa_id <> 3 "); sql.append(" and b.rmd_id is null "); - sql.append(" and b.empresacorrida_id = ? "); - sql.append(" and b.fechorventa between ? and ? "); + sql.append(" and e.empresa_id = ? "); + sql.append(" and r4.datamov between ? and ? "); sql.append(" and coalesce(eos.cveestado, eo.cveestado) = ? "); sql.append("order by estadoId, datamov, ecf, coo "); return sql.toString(); } - + private String getSqlCancelarRMDTipoECF() { StringBuilder sql = new StringBuilder(); @@ -2909,7 +2891,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sql.append(" left join aidf a on a.serie = substr(b.numseriepreimpresa, 1, 3) "); sql.append(" and a.estado_id = (CASE WHEN s.aliasorigen_id IS NULL "); sql.append(" THEN eo.estado_id ELSE eos.estado_id END) "); - sql.append("where b.empresacorrida_id = ? "); + sql.append("where e.empresa_id = ? "); sql.append(" and b.fechorventa between ? and ? "); sql.append(" and coalesce(eos.cveestado, eo.cveestado) = ? "); sql.append(" and b.rmd_id = ? "); diff --git a/src/com/rjconsultores/ventaboletos/service/FiscalService.java b/src/com/rjconsultores/ventaboletos/service/FiscalService.java index 29bce88e4..7cb57946e 100644 --- a/src/com/rjconsultores/ventaboletos/service/FiscalService.java +++ b/src/com/rjconsultores/ventaboletos/service/FiscalService.java @@ -46,7 +46,7 @@ public interface FiscalService { public File buscarArquivoExportacaoRMD(Date value, Date value2, Empresa empresa, Estado estado, String nomeArquivo); - public List getRegistroImpressaoRMDTipoDVB(Date inicio, Date fim, Empresa empresa, Estado estado, String rmd, String folio); + public List getRegistroImpressaoRMDTipoBPR(Date inicio, Date fim, Empresa empresa, Estado estado, String rmd, String folio); public List getRegistroImpressaoRMDTipoECF(Date inicio, Date fim, Empresa empresa, Estado estado, String rmd, String folio); diff --git a/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java index 489fff32c..b819450b0 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java @@ -131,11 +131,11 @@ public class FiscalServiceImpl implements FiscalService { } @Override - public List getRegistroImpressaoRMDTipoDVB(Date inicio, Date fim, Empresa empresa, Estado estado, String rmd, String folio) { + public List getRegistroImpressaoRMDTipoBPR(Date inicio, Date fim, Empresa empresa, Estado estado, String rmd, String folio) { Connection connection = null; try { connection = getConnection(); - return fiscalDAO.getRegistroImpressaoRMDTipoDVB(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado(), rmd, folio); + return fiscalDAO.getRegistroImpressaoRMDTipoBPR(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado(), rmd, folio); } catch (Exception e) { log.error(e.getMessage(), e); } finally { diff --git a/src/com/rjconsultores/ventaboletos/utilerias/impressaormd/vo/DetalhadoRMD.java b/src/com/rjconsultores/ventaboletos/utilerias/impressaormd/vo/DetalhadoRMD.java index bae66c7c3..1d9f005b4 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/impressaormd/vo/DetalhadoRMD.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/impressaormd/vo/DetalhadoRMD.java @@ -41,6 +41,7 @@ public class DetalhadoRMD { private String coo; private String ccf; private String totalFiscal; + private String estadoImpressora; public Long getBoletoId() { return boletoId; @@ -314,4 +315,12 @@ public class DetalhadoRMD { this.numPuntoVenta = numPuntoVenta; } + public String getEstadoImpressora() { + return estadoImpressora; + } + + public void setEstadoImpressora(String estadoImpressora) { + this.estadoImpressora = estadoImpressora; + } + }