diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java index 59076c1ce..282c9f5b8 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java @@ -17,11 +17,13 @@ import javax.sql.DataSource; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; +import org.hibernate.jdbc.Work; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import com.rjconsultores.ventaboletos.dao.FiscalDAO; import com.rjconsultores.ventaboletos.entidad.Aidf; +import com.rjconsultores.ventaboletos.entidad.EsquemaAgrupacion; import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.utilerias.StringHelper; @@ -44,7 +46,7 @@ import com.rjconsultores.ventaboletos.vo.impressaofiscal.ItemFiscalVO; import com.rjconsultores.ventaboletos.vo.impressaofiscal.SituacaoTributaria; @Repository("fiscalDAO") -public class FiscalHibernateDAO implements FiscalDAO { +public class FiscalHibernateDAO extends GenericHibernateDAO implements FiscalDAO { public static final String DATE_FORMAT_FISCAL = "yyyyMMdd"; private static Logger log = Logger.getLogger(FiscalHibernateDAO.class); @@ -1624,10 +1626,10 @@ public class FiscalHibernateDAO implements FiscalDAO { } @Override - public List buscarRegistroECFTipoPRC(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) { - List retorno = new ArrayList(); + public List buscarRegistroECFTipoPRC(Connection connection, final Date inicio, final Date fim, final Integer empresaId, final String cveestado) { + final List retorno = new ArrayList(); - StringBuilder sb = new StringBuilder(); + 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 ("); @@ -1665,81 +1667,86 @@ public class FiscalHibernateDAO implements FiscalDAO { sb.append(" ) group by ecf, datamov, municipio_origem, estado_origem, estado_destino, red_base_calc_icms, porc_red_municipal, porc_red_estadual, tributacao_importacao"); try { - PreparedStatement ps = connection.prepareStatement(sb.toString()); - ps.setLong(1, Long.valueOf(DateUtil.getStringDate(inicio, DATE_FORMAT_FISCAL))); - ps.setLong(2, Long.valueOf(DateUtil.getStringDate(fim, DATE_FORMAT_FISCAL))); - ps.setLong(3, Long.valueOf(empresaId)); - ps.setString(4, cveestado); - - ResultSet rs = ps.executeQuery(); - - ExportacaoECFTipoPRC registro = null; + getSession().doWork(new Work() { + @Override + public void execute(Connection conn) throws SQLException { + PreparedStatement ps = conn.prepareStatement(sb.toString()); + ps.setLong(1, Long.valueOf(DateUtil.getStringDate(inicio, DATE_FORMAT_FISCAL))); + ps.setLong(2, Long.valueOf(DateUtil.getStringDate(fim, DATE_FORMAT_FISCAL))); + ps.setLong(3, Long.valueOf(empresaId)); + ps.setString(4, cveestado); - Map group = new HashMap(); - - while (rs.next()) { - BigDecimal valorTotal = BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100); - - BigDecimal red_base_calc_icms = rs.getBigDecimal("red_base_calc_icms"); - BigDecimal porc_red_municipal = rs.getBigDecimal("porc_red_municipal"); - BigDecimal porc_red_estadual = rs.getBigDecimal("porc_red_estadual"); - BigDecimal tributacao_importacao = rs.getBigDecimal("tributacao_importacao"); - BigDecimal valorBaseCalculoICMS = BigDecimal.ZERO; - - if (red_base_calc_icms != null) { - valorBaseCalculoICMS = valorTotal.subtract(valorTotal.multiply(red_base_calc_icms.divide(BigDecimal.valueOf(100d)))); - } else { - if (tributacao_importacao != null) { - if (rs.getString("estado_origem").equals(rs.getString("estado_destino"))) { - if (porc_red_municipal != null) { - BigDecimal porc = tributacao_importacao.subtract(tributacao_importacao.multiply(porc_red_municipal.divide(BigDecimal.valueOf(100d)))); - valorBaseCalculoICMS = valorTotal.multiply(porc.divide(BigDecimal.valueOf(100d))); - } + ResultSet rs = ps.executeQuery(); + + ExportacaoECFTipoPRC registro = null; + + Map group = new HashMap(); + + while (rs.next()) { + BigDecimal valorTotal = BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100); + + BigDecimal red_base_calc_icms = rs.getBigDecimal("red_base_calc_icms"); + BigDecimal porc_red_municipal = rs.getBigDecimal("porc_red_municipal"); + BigDecimal porc_red_estadual = rs.getBigDecimal("porc_red_estadual"); + BigDecimal tributacao_importacao = rs.getBigDecimal("tributacao_importacao"); + BigDecimal valorBaseCalculoICMS = BigDecimal.ZERO; + + if (red_base_calc_icms != null) { + valorBaseCalculoICMS = valorTotal.subtract(valorTotal.multiply(red_base_calc_icms.divide(BigDecimal.valueOf(100d)))); } else { - if (porc_red_estadual != null) { - BigDecimal porc = tributacao_importacao.subtract(tributacao_importacao.multiply(porc_red_estadual.divide(BigDecimal.valueOf(100d)))); - valorBaseCalculoICMS = valorTotal.multiply(porc.divide(BigDecimal.valueOf(100d))); + if (tributacao_importacao != null) { + if (rs.getString("estado_origem").equals(rs.getString("estado_destino"))) { + if (porc_red_municipal != null) { + BigDecimal porc = tributacao_importacao.subtract(tributacao_importacao.multiply(porc_red_municipal.divide(BigDecimal.valueOf(100d)))); + valorBaseCalculoICMS = valorTotal.multiply(porc.divide(BigDecimal.valueOf(100d))); + } + } else { + if (porc_red_estadual != null) { + BigDecimal porc = tributacao_importacao.subtract(tributacao_importacao.multiply(porc_red_estadual.divide(BigDecimal.valueOf(100d)))); + valorBaseCalculoICMS = valorTotal.multiply(porc.divide(BigDecimal.valueOf(100d))); + } + } } } + + BigDecimal valorICMS = (tributacao_importacao == null ? BigDecimal.ZERO : valorBaseCalculoICMS.multiply(tributacao_importacao)); + + String key = rs.getString("ecf") + "|" + rs.getString("datamov") + "|" + rs.getString("estado_origem") + "|" + rs.getString("municipio_origem"); + + if (group.containsKey(key)) { + registro = group.get(key); + + registro.setValorTotal(registro.getValorTotal().add(valorTotal)); + registro.setValorBaseCalculoICMS(registro.getValorBaseCalculoICMS().add(valorBaseCalculoICMS)); + registro.setValorICMS(registro.getValorICMS().add(valorICMS)); + + } else { + registro = new ExportacaoECFTipoPRC(); + registro.setEcf(rs.getString("ecf")); + registro.setDataEmissao(rs.getString("datamov")); + registro.setUfOrigem(rs.getString("estado_origem")); + registro.setMunicipioOrigem(Integer.valueOf(rs.getString("municipio_origem"))); + registro.setValorTotal(valorTotal); + registro.setValorBaseCalculoICMS(valorBaseCalculoICMS); + registro.setValorICMS(valorICMS); + } + + group.put(key, registro); } + + for (Map.Entry entry : group.entrySet()) { + retorno.add(entry.getValue()); + } + + rs.close(); + ps.close(); } - - BigDecimal valorICMS = (tributacao_importacao == null ? BigDecimal.ZERO : valorBaseCalculoICMS.multiply(tributacao_importacao)); - - String key = rs.getString("ecf") + "|" + rs.getString("datamov") + "|" + rs.getString("estado_origem") + "|" + rs.getString("municipio_origem"); - - if (group.containsKey(key)) { - registro = group.get(key); + }); - registro.setValorTotal(registro.getValorTotal().add(valorTotal)); - registro.setValorBaseCalculoICMS(registro.getValorBaseCalculoICMS().add(valorBaseCalculoICMS)); - registro.setValorICMS(registro.getValorICMS().add(valorICMS)); - - } else { - registro = new ExportacaoECFTipoPRC(); - registro.setEcf(rs.getString("ecf")); - registro.setDataEmissao(rs.getString("datamov")); - registro.setUfOrigem(rs.getString("estado_origem")); - registro.setMunicipioOrigem(Integer.valueOf(rs.getString("municipio_origem"))); - registro.setValorTotal(valorTotal); - registro.setValorBaseCalculoICMS(valorBaseCalculoICMS); - registro.setValorICMS(valorICMS); - } - - group.put(key, registro); - } - - for (Map.Entry entry : group.entrySet()) { - retorno.add(entry.getValue()); - } - - rs.close(); - ps.close(); - } catch (Exception e) { log.error(e.getMessage(), e); } - + return retorno; } diff --git a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java index 9b85ba26d..e0292dfa1 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java @@ -55,8 +55,6 @@ public class ExportacaoFiscal { writer.print("-- " + tempo + UtiliteriasFiscal.QUEBRA_LINHA); } - long begin = Calendar.getInstance().getTimeInMillis(); - adicionarRegistroECFTipoCAB(writer, dataInicial, dataFinal, nomeEmpresa); // adicionarRegistroECFTipoCFC(writer, listaRegistroECFTipoCFC); // adicionarRegistroECFTipoCCF(writer, listaRegistroECFTipoCCF); @@ -64,8 +62,6 @@ public class ExportacaoFiscal { // adicionarRegistroECFTipoPRC(writer, listaRegistroECFTipoPRC); adicionarRegistroECF(writer, listaRegistroECFTipoCFC, listaRegistroECFTipoCCF, listaRegistroECFTipoICF, listaRegistroECFTipoPRC); - writer.print("-- " + infoTempo("Arquivo", begin) + UtiliteriasFiscal.QUEBRA_LINHA); - writer.close(); return arquivo; @@ -76,13 +72,6 @@ public class ExportacaoFiscal { return null; } - - private String infoTempo(final String descricao, final Long inicio) { - final Long termino = Calendar.getInstance().getTimeInMillis(); - final Long tempo = termino - inicio; - - return descricao + ": " + String.format("%dm %ds", TimeUnit.MILLISECONDS.toMinutes(tempo), TimeUnit.MILLISECONDS.toSeconds(tempo) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(tempo))); - } private void adicionarRegistroECFTipoCAB(final PrintWriter writer, final Date dataInicial, final Date dataFinal, final String nomeEmpresa) { StringBuilder sb = new StringBuilder();