diff --git a/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java b/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java index 2e99088e2..b5ad3312d 100644 --- a/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java @@ -5,6 +5,7 @@ import java.sql.SQLException; import java.util.Date; import java.util.List; +import com.rjconsultores.ventaboletos.entidad.Aidf; import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoECFTipoCCF; import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoECFTipoCFC; @@ -49,4 +50,8 @@ 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); + + public List getRegistroImpressaoRMDTipoECF(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado, String rmd); + + public void gravarRMDBoleto(Connection connection, List rmds, Aidf aidf); } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java index 6c8fd6fd0..7b113d212 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java @@ -21,9 +21,11 @@ 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.EsquemaCorrida; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.utilerias.StringHelper; +import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoECFTipoCCF; import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoECFTipoCFC; import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoECFTipoICF; @@ -32,7 +34,7 @@ import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoRM import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoRMDTipoDBP; import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoRMDTipoPAR; import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoRMDTipoRMD; -import com.rjconsultores.ventaboletos.utilerias.impressaormd.vo.DetalhadoRMDTipoDVB; +import com.rjconsultores.ventaboletos.utilerias.impressaormd.vo.DetalhadoRMD; import com.rjconsultores.ventaboletos.utilerias.impressaormd.vo.ImpressaoRMD; import com.rjconsultores.ventaboletos.vo.impressaofiscal.ImportacionFiscalReducaoZVO; import com.rjconsultores.ventaboletos.vo.impressaofiscal.ImportacionFiscalVO; @@ -46,7 +48,7 @@ public class FiscalHibernateDAO implements FiscalDAO { public static final String DATE_FORMAT_FISCAL = "yyyyMMdd"; private static Logger log = Logger.getLogger(FiscalHibernateDAO.class); - + @Autowired private DataSource dataSource; @@ -1077,36 +1079,34 @@ public class FiscalHibernateDAO implements FiscalDAO { sb.append(" and c.feccorrida between :datIni and :datFim "); sb.append(" and c.corrida_id in (:corridaId) "); sb.append(" and CODPRODUTO(t.origen_id , t.destino_id , rc.ruta_id) not in (select codproduto from fiscal_p2) "); - //sb.append(" and ROWNUM < 50 "); + // sb.append(" and ROWNUM < 50 "); int qtd = 0; - + Connection connection = null; - try{ + try { connection = dataSource.getConnection(); - + connection.setAutoCommit(false); - + PreparedStatement ps = connection.prepareStatement(sb.toString()); - + ps.setDate(1, new java.sql.Date(dataDe.getTime())); ps.setDate(2, new java.sql.Date(dataAte.getTime())); - ps.setString(3,StringUtils.join(idsCorrida, ",")); - - qtd = ps.executeUpdate(); - + ps.setString(3, StringUtils.join(idsCorrida, ",")); + + qtd = ps.executeUpdate(); + connection.commit(); - }catch(Throwable t){ + } catch (Throwable t) { connection.rollback(); - }finally{ - if (connection != null){ + } finally { + if (connection != null) { connection.close(); } } - - - return qtd; + return qtd; } @@ -1144,36 +1144,35 @@ public class FiscalHibernateDAO implements FiscalDAO { sb.append(" and cto.fechorsalida between vt.feciniciovigencia and vt.fecfinvigencia "); sb.append(" and c.feccorrida between :datIni and :datFim "); sb.append(" and c.corrida_id in (:corridaId) "); - //sb.append(" and ROWNUM < 2 "); + // sb.append(" and ROWNUM < 2 "); Integer[] idsCorrida = getIdsCorrida(lsEsquemaCorrida); Connection connection = null; - + int qtd = 0; - - try{ + + try { connection = dataSource.getConnection(); - + connection.setAutoCommit(false); - + PreparedStatement ps = connection.prepareStatement(sb.toString()); - + ps.setDate(1, new java.sql.Date(dataDe.getTime())); ps.setDate(2, new java.sql.Date(dataAte.getTime())); - ps.setString(3,StringUtils.join(idsCorrida, ",")); - - qtd = ps.executeUpdate(); - + ps.setString(3, StringUtils.join(idsCorrida, ",")); + + qtd = ps.executeUpdate(); + connection.commit(); - - }catch(Throwable t){ + + } catch (Throwable t) { connection.rollback(); - }finally{ - if (connection != null){ + } finally { + if (connection != null) { connection.close(); } } - return qtd; } @@ -1226,7 +1225,7 @@ public class FiscalHibernateDAO implements FiscalDAO { @Override public List buscarRegistroECFTipoCFC(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) { List retorno = new ArrayList(); - + StringBuilder sb = new StringBuilder(); sb.append(" select distinct"); sb.append(" imp.numserie20 as ecf,"); @@ -1239,8 +1238,8 @@ public class FiscalHibernateDAO implements FiscalDAO { sb.append(" r2.coo as coo,"); sb.append(" nvl(CASE WHEN s.aliasorigen_id IS NULL THEN ei.codestabelecimento ELSE eis.codestabelecimento END, 0) as codestabelecimento,"); sb.append(" nvl(e.codestabelecimento, 0) 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(" 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"); @@ -1292,21 +1291,21 @@ public class FiscalHibernateDAO implements FiscalDAO { 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(); - + 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.getInt("codestabelecimento")); - registro.setDataEmissao(rs.getString("datamov")); + registro.setDataEmissao(rs.getString("datamov")); registro.setNumeroIdentificacaoECF(rs.getInt("numeroidentificacao") > 0 ? rs.getInt("numeroidentificacao") : rs.getInt("numserie")); registro.setEcf(rs.getString("ecf")); registro.setCooReducaoZ(Integer.valueOf(rs.getString("coo"))); @@ -1316,25 +1315,25 @@ public class FiscalHibernateDAO implements FiscalDAO { registro.setCro(Integer.valueOf(rs.getString("cro"))); registro.setValorTotal(BigDecimal.valueOf(Double.valueOf(rs.getString("vendabrutadiaria")) / 100)); registro.setValorIsentas(totalIsenta); - registro.setEstabelecimentoECF(rs.getInt("codestabelecimentoimpressora")); - + registro.setEstabelecimentoECF(rs.getInt("codestabelecimentoimpressora")); + retorno.add(registro); } - + rs.close(); ps.close(); - + } catch (Exception e) { log.error(e.getMessage(), e); } - + return retorno; } @Override public List buscarRegistroECFTipoCCF(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) { List retorno = new ArrayList(); - + StringBuilder sb = new StringBuilder(); sb.append(" select distinct"); sb.append(" r5.numserie20 as ecf,"); @@ -1378,33 +1377,33 @@ public class FiscalHibernateDAO implements FiscalDAO { 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(); - + ExportacaoECFTipoCCF registro = null; - + while (rs.next()) { registro = new ExportacaoECFTipoCCF(); registro.setEcf(rs.getString("ecf")); - registro.setDataEmissao(rs.getString("datamov")); + registro.setDataEmissao(rs.getString("datamov")); registro.setCoo(Integer.valueOf(rs.getString("coo"))); - registro.setValorServico(BigDecimal.valueOf(Double.valueOf(rs.getString("valortarifa")) / 100)); + registro.setValorServico(BigDecimal.valueOf(Double.valueOf(rs.getString("valortarifa")) / 100)); registro.setDescontoGlobal(null); registro.setCodigoParticipante(null); registro.setSituacaoCOO(0); // 0 - Documento Regular; 2 - Documento Cancelado registro.setAcrescimo(null); registro.setCodigoSituacaoTribColunaB(null); - + // 00 - tributação normal; 20 - tributação com redução na base de calculo; 40 - isentos if (rs.getInt("isenta") == 1) { - registro.setCodigoSituacaoTribColunaB(40); + registro.setCodigoSituacaoTribColunaB(40); } registro.setUfOrigem(rs.getString("estado_origem")); registro.setMunicipioOrigem(Integer.valueOf(rs.getString("municipio_origem"))); registro.setUfDestino(rs.getString("estado_destino")); - + // IM=5357; Serviço IE= 6357 if (rs.getString("estado_origem").equals(rs.getString("estado_destino"))) { registro.setCfop(5357); @@ -1416,15 +1415,15 @@ public class FiscalHibernateDAO implements FiscalDAO { if (registro.getCodigoSituacaoTribColunaB() == null) { registro.setCodigoSituacaoTribColunaB(rs.getInt("red_base_calc_icms") == 0 ? 0 : 20); } - + 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 { @@ -1442,32 +1441,32 @@ public class FiscalHibernateDAO implements FiscalDAO { } } } - - registro.setValorTotal(valorTotal); - + + 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" registro.setTributacaoICMS(registro.getCodigoSituacaoTribColunaB() == 40 ? 2 : 1); - - registro.setValorBaseCalculoICMS(valorBaseCalculoICMS); - registro.setAliquotaICMS(tributacao_importacao); + + registro.setValorBaseCalculoICMS(valorBaseCalculoICMS); + registro.setAliquotaICMS(tributacao_importacao); retorno.add(registro); } - + rs.close(); ps.close(); - + } catch (Exception e) { log.error(e.getMessage(), e); } - + return retorno; } @Override public List buscarRegistroECFTipoICF(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) { List retorno = new ArrayList(); - + StringBuilder sb = new StringBuilder(); sb.append(" select"); sb.append(" r4.numserie20 as ecf,"); @@ -1511,20 +1510,20 @@ public class FiscalHibernateDAO implements FiscalDAO { ps.setString(4, cveestado); ResultSet rs = ps.executeQuery(); - + ExportacaoECFTipoICF registro = null; - - Map group = new HashMap(); - + + 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 { @@ -1542,24 +1541,24 @@ public class FiscalHibernateDAO implements FiscalDAO { } } } - - BigDecimal valorICMSDebitado = (tributacao_importacao == null ? BigDecimal.ZERO : valorBaseCalculoICMS.multiply(tributacao_importacao)); - BigDecimal valorICMSIsento = BigDecimal.ZERO; - BigDecimal valorICMSOutros = BigDecimal.ZERO; - + + BigDecimal valorICMSDebitado = (tributacao_importacao == null ? BigDecimal.ZERO : valorBaseCalculoICMS.multiply(tributacao_importacao)); + BigDecimal valorICMSIsento = BigDecimal.ZERO; + BigDecimal valorICMSOutros = BigDecimal.ZERO; + String ecf = rs.getString("ecf"); String datamov = rs.getString("datamov"); String ufDestino = ""; String ufOrigem = ""; Integer municipioOrigem = 0; Integer cfop = 0; // IM=5357; Serviço IE= 6357 - + // 00 - tributação normal; 20 - tributação com redução na base de calculo; 40 - isentos Integer codigoSituacaoTribColunaB = null; - + if (rs.getInt("isenta") == 1) { - codigoSituacaoTribColunaB = 40; - + codigoSituacaoTribColunaB = 40; + valorICMSIsento = valorTotal; } @@ -1580,10 +1579,10 @@ public class FiscalHibernateDAO implements FiscalDAO { } String key = ecf + "|" + datamov + "|" + ufDestino + "|" + cfop.toString() + "|" + codigoSituacaoTribColunaB.toString(); - + if (group.containsKey(key)) { registro = group.get(key); - + valorTotal = valorTotal.add(registro.getValorTotal()); valorBaseCalculoICMS = valorBaseCalculoICMS.add(registro.getValorBaseCalculoICMS()); valorICMSDebitado = valorICMSDebitado.add(registro.getValorICMSDebitado()); @@ -1601,26 +1600,26 @@ public class FiscalHibernateDAO implements FiscalDAO { registro.setMunicipioOrigem(municipioOrigem); } - registro.setValorTotal(valorTotal); - registro.setValorBaseCalculoICMS(valorBaseCalculoICMS); - registro.setValorICMSDebitado(valorICMSDebitado); - registro.setValorICMSIsento(valorICMSIsento); - registro.setValorICMSOutros(valorICMSOutros); - + registro.setValorTotal(valorTotal); + registro.setValorBaseCalculoICMS(valorBaseCalculoICMS); + registro.setValorICMSDebitado(valorICMSDebitado); + registro.setValorICMSIsento(valorICMSIsento); + registro.setValorICMSOutros(valorICMSOutros); + group.put(key, registro); } for (Map.Entry entry : group.entrySet()) { - retorno.add(entry.getValue()); - } - + retorno.add(entry.getValue()); + } + rs.close(); ps.close(); - + } catch (Exception e) { log.error(e.getMessage(), e); } - + return retorno; } @@ -1766,16 +1765,16 @@ public class FiscalHibernateDAO implements FiscalDAO { sb.append(" left join estado eie on eie.cveestado like ?"); sb.append(" left join inscricao_estadual ie on ie.empresa_id = e.empresa_id and ie.estado_id = eie.estado_id"); sb.append(" where e.empresa_id = ?"); - + try { PreparedStatement ps = connection.prepareStatement(sb.toString()); ps.setString(1, cveestado); ps.setLong(2, Long.valueOf(empresaId)); - + ResultSet rs = ps.executeQuery(); - + ExportacaoRMDTipoPAR registro = null; - + while (rs.next()) { registro = new ExportacaoRMDTipoPAR(); registro.setCodigoParticipante(rs.getInt("cod_participante")); @@ -1788,17 +1787,17 @@ public class FiscalHibernateDAO implements FiscalDAO { registro.setComplemento(rs.getString("complemento")); registro.setBairro(rs.getString("bairro")); registro.setCep(rs.getString("cep") == null ? null : Integer.parseInt(rs.getString("cep").replace("-", "").replace(".", ""))); - + retorno.add(registro); } - + rs.close(); ps.close(); - + } catch (Exception e) { log.error(e.getMessage(), e); } - + return retorno; } @@ -1807,7 +1806,7 @@ public class FiscalHibernateDAO implements FiscalDAO { List retorno = new ArrayList(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); - + StringBuilder sb = new StringBuilder(); sb.append(" select"); sb.append(" ce.estado_id as cod_estabelecimento,"); @@ -1845,18 +1844,18 @@ public class FiscalHibernateDAO implements FiscalDAO { sb.append(" and b.empresacorrida_id = ?"); sb.append(" and (b.feccorrida >= ? and b.feccorrida <= ?)"); sb.append(" and (CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) like ?"); - + try { PreparedStatement ps = connection.prepareStatement(sb.toString()); ps.setLong(1, Long.valueOf(empresaId)); ps.setDate(2, new java.sql.Date(inicio.getTime())); ps.setDate(3, new java.sql.Date(fim.getTime())); ps.setString(4, cveestado); - + ResultSet rs = ps.executeQuery(); - + ExportacaoRMDTipoRMD registro = null; - + while (rs.next()) { registro = new ExportacaoRMDTipoRMD(); registro.setCodigoEstabelecimento(rs.getInt("cod_estabelecimento")); @@ -1872,14 +1871,14 @@ public class FiscalHibernateDAO implements FiscalDAO { retorno.add(registro); } - + rs.close(); ps.close(); - + } catch (Exception e) { log.error(e.getMessage(), e); } - + return retorno; } @@ -1888,7 +1887,7 @@ public class FiscalHibernateDAO implements FiscalDAO { List retorno = new ArrayList(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); - + StringBuilder sb = new StringBuilder(); sb.append(" select"); sb.append(" ce.estado_id as cod_estabelecimento,"); @@ -1924,26 +1923,26 @@ public class FiscalHibernateDAO implements FiscalDAO { sb.append(" and (b.feccorrida >= ? and b.feccorrida <= ?)"); sb.append(" and (CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) like ?"); sb.append(" order by b.feccreacion,a.acfiscal,b.numfoliopreimpreso"); - + try { PreparedStatement ps = connection.prepareStatement(sb.toString()); ps.setLong(1, Long.valueOf(empresaId)); ps.setDate(2, new java.sql.Date(inicio.getTime())); ps.setDate(3, new java.sql.Date(fim.getTime())); ps.setString(4, cveestado); - + ResultSet rs = ps.executeQuery(); - + Map group = new HashMap(); - + ExportacaoRMDTipoBPS registro = null; Integer numeroInicial = null; Integer numeroFinal = null; - + while (rs.next()) { String key = sdf.format(rs.getDate("data_emissao")) + "|" + rs.getInt("num_aidf") + "|" + rs.getInt("num_formulario"); - + if (group.containsKey(key)) { registro = group.get(key); @@ -1957,7 +1956,7 @@ public class FiscalHibernateDAO implements FiscalDAO { if (numeroFinal.intValue() < registro.getNumeroFinal().intValue()) { numeroFinal = registro.getNumeroFinal(); } - + } else { registro = new ExportacaoRMDTipoBPS(); registro.setCodigoEstabelecimento(rs.getInt("cod_estabelecimento")); @@ -1971,12 +1970,12 @@ public class FiscalHibernateDAO implements FiscalDAO { registro.setNumeroRMD(rs.getInt("num_rmd")); registro.setDataEmissao(sdf.format(rs.getDate("data_emissao"))); - + registro.setQuantidadeTotal(0); registro.setQuantidadeCancelados(0); registro.setValorTotal(BigDecimal.ZERO); registro.setResumoMovimentoDiario(null); - + numeroInicial = rs.getInt("num_formulario"); numeroFinal = rs.getInt("num_formulario"); } @@ -1990,36 +1989,36 @@ public class FiscalHibernateDAO implements FiscalDAO { if (rs.getInt("cancelado") == 0) { registro.setValorTotal(registro.getValorTotal().add(rs.getBigDecimal("valor_total"))); } - + group.put(key, registro); } for (Map.Entry entry : group.entrySet()) { - registro = entry.getValue(); - - if (registro.getQuantidadeTotal().intValue() == registro.getQuantidadeCancelados().intValue()) { - registro.setValorTotal(null); - } else { - registro.setResumoMovimentoDiario(Boolean.TRUE); - } - + registro = entry.getValue(); + + if (registro.getQuantidadeTotal().intValue() == registro.getQuantidadeCancelados().intValue()) { + registro.setValorTotal(null); + } else { + registro.setResumoMovimentoDiario(Boolean.TRUE); + } + retorno.add(registro); - } - + } + rs.close(); ps.close(); - + } catch (Exception e) { log.error(e.getMessage(), e); } - + return retorno; } @Override public List buscarRegistroRMDTipoDBP(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) { List retorno = new ArrayList(); - + StringBuilder sb = new StringBuilder(); sb.append(" select"); sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) as estado_origem,"); @@ -2066,16 +2065,16 @@ public class FiscalHibernateDAO implements FiscalDAO { ps.setDate(2, new java.sql.Date(inicio.getTime())); ps.setDate(3, new java.sql.Date(fim.getTime())); ps.setString(4, cveestado); - + ResultSet rs = ps.executeQuery(); - + ExportacaoRMDTipoDBP registro = null; - Map group = new HashMap(); - + Map group = new HashMap(); + while (rs.next()) { String key = rs.getString("estado_destino") + "|" + rs.getInt("cod_operacao") + "|" + rs.getString("estado_origem") + "|" + rs.getInt("municipio_origem"); - + if (group.containsKey(key)) { registro = group.get(key); } else { @@ -2089,19 +2088,19 @@ public class FiscalHibernateDAO implements FiscalDAO { // 00 - tributação normal; 20 - tributação com redução na base de calculo; 40 - isentos if (rs.getInt("isenta") == 1) { - registro.setCodigoSituacaoTribColunaB(40); + registro.setCodigoSituacaoTribColunaB(40); } // 00 - tributação normal; 20 - tributação com redução na base de calculo; 40 - isentos if (registro.getCodigoSituacaoTribColunaB() == null) { registro.setCodigoSituacaoTribColunaB(rs.getInt("red_base_calc_icms") == 0 ? 0 : 20); } - - registro.setValorBaseCalculoICMS(BigDecimal.ZERO); - registro.setValorTotal(BigDecimal.ZERO); + + registro.setValorBaseCalculoICMS(BigDecimal.ZERO); + registro.setValorTotal(BigDecimal.ZERO); registro.setValorICMS(BigDecimal.ZERO); - registro.setValorICMSIsento(BigDecimal.ZERO); - registro.setValorICMSOutros(BigDecimal.ZERO); + registro.setValorICMSIsento(BigDecimal.ZERO); + registro.setValorICMSOutros(BigDecimal.ZERO); } BigDecimal valorTotal = rs.getBigDecimal("valor_total"); @@ -2110,10 +2109,10 @@ public class FiscalHibernateDAO implements FiscalDAO { BigDecimal porc_red_estadual = rs.getBigDecimal("porc_red_estadual"); BigDecimal tributacao_importacao = rs.getBigDecimal("tributacao_importacao"); BigDecimal valorBaseCalculoICMS = BigDecimal.ZERO; - + BigDecimal valorIsenta = BigDecimal.ZERO; BigDecimal valorIsentaOutros = BigDecimal.ZERO; - + if (rs.getInt("reg_metropolitana") == 1) { valorIsenta = valorTotal; valorTotal = BigDecimal.ZERO; @@ -2138,12 +2137,12 @@ public class FiscalHibernateDAO implements FiscalDAO { } registro.setAliquotaICMS(tributacao_importacao); - + if (tributacao_importacao == null) { tributacao_importacao = BigDecimal.ZERO; } else { BigDecimal porc_red = BigDecimal.ZERO; - + if (rs.getString("estado_origem").equals(rs.getString("estado_destino"))) { if (porc_red_municipal != null) { porc_red = porc_red_municipal; @@ -2155,41 +2154,70 @@ public class FiscalHibernateDAO implements FiscalDAO { } BigDecimal porc = tributacao_importacao.subtract(porc_red); - + valorIsentaOutros = valorTotal.multiply(porc); } - + BigDecimal valorICMS = valorBaseCalculoICMS.multiply(tributacao_importacao); - - registro.setValorBaseCalculoICMS(registro.getValorBaseCalculoICMS().add(valorBaseCalculoICMS)); + + registro.setValorBaseCalculoICMS(registro.getValorBaseCalculoICMS().add(valorBaseCalculoICMS)); registro.setValorTotal(registro.getValorTotal().add(valorTotal)); registro.setValorICMS(registro.getValorICMS().add(valorICMS)); registro.setValorICMSIsento(registro.getValorICMSIsento().add(valorIsenta)); registro.setValorICMSOutros(registro.getValorICMSOutros().add(valorIsentaOutros)); - + group.put(key, registro); - } + } for (Map.Entry entry : group.entrySet()) { - retorno.add(entry.getValue()); - } - + retorno.add(entry.getValue()); + } + rs.close(); ps.close(); - + } catch (Exception e) { log.error(e.getMessage(), e); } - + return retorno; } - - public List getRegistroImpressaoRMDTipoDVB(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado, String rmd) { + + @Override + public void gravarRMDBoleto(Connection connection, List rmds, Aidf aidf) { + + for (ImpressaoRMD imp : rmds) { + for (DetalhadoRMD det : imp.getDetalhada()) { + + StringBuilder sb = new StringBuilder(); + PreparedStatement pstmt = null; + try { + sb.append(" update boleto set rmd_id = ").append(aidf.getAidfId()).append(", "); + sb.append(" fecmodif = SYSDATE, usuario_id = ").append(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + sb.append(" where boleto_id = ").append(det.getBoletoId()); + pstmt = connection.prepareStatement(sb.toString()); + + pstmt.executeUpdate(); + } catch (Exception e) { + log.error("", e); + } finally { + try { + pstmt.close(); + } catch (Exception e) { + log.error("", e); + } + } + } + } + } + + @Override + public List getRegistroImpressaoRMDTipoDVB(Connection connection, Date inicio, Date fim, Integer empresaId, + String cveestado, String rmd) { List list = new ArrayList(); // IMPRESSAO RMD MANUAL - String serie = null; Date data = null; // int primeiroFolio = 0; @@ -2197,7 +2225,7 @@ public class FiscalHibernateDAO implements FiscalDAO { ImpressaoRMD impRmd = null; - for (DetalhadoRMDTipoDVB brp : buscarRegistroImpressaoRMDTipoDVB(connection, inicio, fim, empresaId, cveestado)) { + for (DetalhadoRMD brp : buscarRegistroImpressaoRMD(connection, inicio, fim, empresaId, cveestado, false)) { if (serie == null) { impRmd = new ImpressaoRMD(brp.getEmpresa(), brp.getEnderecoEmpresa(), brp.getCnpjEmpresa(), brp.getIeEmpresa(), @@ -2257,7 +2285,83 @@ public class FiscalHibernateDAO implements FiscalDAO { return list; } - private BigDecimal somarTotalBilhete(DetalhadoRMDTipoDVB brp) { + @Override + public List getRegistroImpressaoRMDTipoECF(Connection connection, Date inicio, Date fim, Integer empresaId, + String cveestado, String rmd) { + + List list = new ArrayList(); + + // IMPRESSAO RMD ECF + String serie = null; + Date data = null; + int anteriorFolio = 0; + + ImpressaoRMD impRmd = null; + + for (DetalhadoRMD brp : buscarRegistroImpressaoRMD(connection, inicio, fim, empresaId, cveestado, true)) { + + 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()); + serie = brp.getEcf(); + data = brp.getFechorVenta(); + + } else { + + if (serie.equals(brp.getEcf()) && data.equals(brp.getFechorVenta())) { + int coo = Integer.parseInt(brp.getCoo()); + if (anteriorFolio + 1 == coo) { + + } else { + + impRmd.setNumero(brp.getCoo()); + 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()); + serie = brp.getEcf(); + data = brp.getFechorVenta(); + } + + } else { + + impRmd.setNumero(brp.getCoo()); + 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()); + serie = brp.getEcf(); + 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.getIcmsInterestadual(); + 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.getDetalhada().add(brp); + anteriorFolio = brp.getFolio(); + + } + + return list; + } + + private BigDecimal somarTotalBilhete(DetalhadoRMD brp) { BigDecimal total = BigDecimal.ZERO; total = total.add(brp.getTarifa() == null ? BigDecimal.ZERO : brp.getTarifa()); @@ -2268,84 +2372,19 @@ public class FiscalHibernateDAO implements FiscalDAO { return total; } - public List buscarRegistroImpressaoRMDTipoDVB(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) { + public List buscarRegistroImpressaoRMD(Connection connection, Date inicio, Date fim, + Integer empresaId, String cveestado, boolean isECF) { - List list = new ArrayList(); + List list = new ArrayList(); try { - StringBuilder sql = new StringBuilder(); - sql.append("select "); - sql.append(" b.boleto_id as boletoId, "); - sql.append(" b.numoperacion as numoperacion, "); - sql.append(" b.numseriepreimpresa as serieCompl, "); - sql.append(" b.numfoliopreimpreso as folio, "); - sql.append(" a.acfiscal as numAidf, "); - sql.append(" a.serie as serieAidf, "); - sql.append(" a.subserie as subSerieAidf, "); - sql.append(" trunc(b.fechorventa) as fechorVenta, "); - sql.append(" e.nombempresa as empresa, "); - sql.append(" e.cnpj as cnpjEmpresa, "); - sql.append(" e.logradouro || ', ' || e.numero || ' - ' || e.bairro || ', ' || ce.nombciudad "); - sql.append(" || ' - ' || ee.cveestado || ', ' || e.cep "); - sql.append(" as enderecoEmpresa, "); - sql.append(" ie.numinscricaoestadual as ieEmpresa, "); - sql.append(" coalesce(eos.estado_id, eo.estado_id) as estadoId, "); - sql.append(" coalesce(ei.icms, eo.icms) as icmsInterestadual, "); - sql.append(" ei.icmsim as icmsIntermunicipal, "); - sql.append(" coalesce(eos.cveestado, eo.cveestado) as estadoOrigem, "); - sql.append(" coalesce(eds.cveestado, ed.cveestado) as estadoDestino, "); - sql.append(" coalesce(cos.codibge, co.codibge) as municipioOrigem, "); - sql.append(" case when((coalesce(eos.cveestado, eo.cveestado)) = "); - sql.append(" (coalesce(eds.cveestado, ed.cveestado))) "); - sql.append(" then 0 else 1 "); - sql.append(" end as isInterEstadual, "); - sql.append(" ei.porcredbaseicms as redBaseCalcIcms, "); - sql.append(" ei.porcredmunicipal as porcRedMunicipal, "); - sql.append(" ei.porcredestadual as porcRedEstadual, "); - sql.append(" ei.tributacaoimportacao as tributacaoImportacao, "); - sql.append(" case when (coalesce(pos.regionmetropolitana_id, po.regionmetropolitana_id, -1) = "); - sql.append(" coalesce(pds.regionmetropolitana_id, pd.regionmetropolitana_id, -2)) "); - sql.append(" then 1 else 0 end as isenta, "); - sql.append(" coalesce(b.preciopagado, 0) as tarifa, "); - sql.append(" coalesce(b.importetaxaembarque, 0) as taxaEmbarque, "); - sql.append(" coalesce(b.importepedagio, 0) as pedagio, "); - 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 ciudad ce on ce.ciudad_id = e.ciudad_id "); - sql.append(" join estado ee on ee.estado_id = ce.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 "); - sql.append(" join parada pd on pd.parada_id = b.destino_id "); - sql.append(" join ciudad cd on cd.ciudad_id = pd.ciudad_id "); - sql.append(" join estado ed on ed.estado_id = cd.estado_id "); - sql.append(" left join alias_servico s on s.origen_id = b.origen_id "); - sql.append(" and s.destino_id = b.destino_id and s.corrida_id = b.corrida_id "); - sql.append(" and s.ruta_id = b.ruta_id "); - sql.append(" left join parada pos on pos.parada_id = s.aliasorigen_id "); - sql.append(" left join ciudad cos on cos.ciudad_id = pos.ciudad_id "); - sql.append(" left join estado eos on eos.estado_id = cos.estado_id "); - sql.append(" left join parada pds on pds.parada_id = s.aliasdestino_id "); - sql.append(" left join ciudad cds on cds.ciudad_id = pds.ciudad_id "); - 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(" 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(" and b.indstatusboleto like 'V' "); - sql.append(" and b.empresacorrida_id = ? "); - sql.append(" and b.fechorventa between ? and ? "); - sql.append(" and coalesce(eos.cveestado, eo.cveestado) = ? "); - sql.append("order by estadoId, fechorVenta "); + String sql = null; + if (isECF) { + sql = getSqlImpressaoRMDTipoECF(); + } else { + sql = getSqlImpressaoRMDTipoDVB(); + } - PreparedStatement ps = connection.prepareStatement(sql.toString()); + PreparedStatement ps = connection.prepareStatement(sql); ps.setLong(1, Long.valueOf(empresaId)); ps.setDate(2, new java.sql.Date(inicio.getTime())); ps.setDate(3, new java.sql.Date(fim.getTime())); @@ -2354,7 +2393,7 @@ public class FiscalHibernateDAO implements FiscalDAO { ResultSet rs = ps.executeQuery(); while (rs.next()) { - DetalhadoRMDTipoDVB brp = new DetalhadoRMDTipoDVB(); + DetalhadoRMD brp = new DetalhadoRMD(); brp.setBoletoId(rs.getLong("boletoId")); brp.setNumoperacion(rs.getString("numoperacion")); brp.setSerie(rs.getString("serieCompl")); @@ -2383,6 +2422,13 @@ public class FiscalHibernateDAO implements FiscalDAO { brp.setSeguro(rs.getBigDecimal("seguro")); brp.setOutros(rs.getBigDecimal("outros")); + if (isECF) { + brp.setEcf(rs.getString("ecf")); + brp.setDatamov(rs.getString("datamov")); + brp.setCoo(rs.getString("coo")); + brp.setTotalFiscal(rs.getString("totalFiscal")); + } + list.add(brp); } @@ -2395,4 +2441,166 @@ public class FiscalHibernateDAO implements FiscalDAO { return list; } + + public String getSqlImpressaoRMDTipoDVB() { + StringBuilder sql = new StringBuilder(); + sql.append("select "); + sql.append(" b.boleto_id as boletoId, "); + sql.append(" b.numoperacion as numoperacion, "); + sql.append(" b.numseriepreimpresa as serieCompl, "); + sql.append(" b.numfoliopreimpreso as folio, "); + sql.append(" a.acfiscal as numAidf, "); + sql.append(" a.serie as serieAidf, "); + sql.append(" a.subserie as subSerieAidf, "); + sql.append(" trunc(b.fechorventa) as fechorVenta, "); + sql.append(" e.nombempresa as empresa, "); + sql.append(" e.cnpj as cnpjEmpresa, "); + sql.append(" e.logradouro || ', ' || e.numero || ' - ' || e.bairro || ', ' || ce.nombciudad "); + sql.append(" || ' - ' || ee.cveestado || ', ' || e.cep "); + sql.append(" as enderecoEmpresa, "); + sql.append(" ie.numinscricaoestadual as ieEmpresa, "); + sql.append(" coalesce(eos.estado_id, eo.estado_id) as estadoId, "); + sql.append(" coalesce(ei.icms, eo.icms) as icmsInterestadual, "); + sql.append(" ei.icmsim as icmsIntermunicipal, "); + sql.append(" coalesce(eos.cveestado, eo.cveestado) as estadoOrigem, "); + sql.append(" coalesce(eds.cveestado, ed.cveestado) as estadoDestino, "); + sql.append(" coalesce(cos.codibge, co.codibge) as municipioOrigem, "); + sql.append(" case when((coalesce(eos.cveestado, eo.cveestado)) = "); + sql.append(" (coalesce(eds.cveestado, ed.cveestado))) "); + sql.append(" then 0 else 1 "); + sql.append(" end as isInterEstadual, "); + sql.append(" ei.porcredbaseicms as redBaseCalcIcms, "); + sql.append(" ei.porcredmunicipal as porcRedMunicipal, "); + sql.append(" ei.porcredestadual as porcRedEstadual, "); + sql.append(" ei.tributacaoimportacao as tributacaoImportacao, "); + sql.append(" case when (coalesce(pos.regionmetropolitana_id, po.regionmetropolitana_id, -1) = "); + sql.append(" coalesce(pds.regionmetropolitana_id, pd.regionmetropolitana_id, -2)) "); + sql.append(" then 1 else 0 end as isenta, "); + sql.append(" coalesce(b.preciopagado, 0) as tarifa, "); + sql.append(" coalesce(b.importetaxaembarque, 0) as taxaEmbarque, "); + sql.append(" coalesce(b.importepedagio, 0) as pedagio, "); + 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 ciudad ce on ce.ciudad_id = e.ciudad_id "); + sql.append(" join estado ee on ee.estado_id = ce.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 "); + sql.append(" join parada pd on pd.parada_id = b.destino_id "); + sql.append(" join ciudad cd on cd.ciudad_id = pd.ciudad_id "); + sql.append(" join estado ed on ed.estado_id = cd.estado_id "); + sql.append(" left join alias_servico s on s.origen_id = b.origen_id "); + sql.append(" and s.destino_id = b.destino_id and s.corrida_id = b.corrida_id "); + sql.append(" and s.ruta_id = b.ruta_id "); + sql.append(" left join parada pos on pos.parada_id = s.aliasorigen_id "); + sql.append(" left join ciudad cos on cos.ciudad_id = pos.ciudad_id "); + sql.append(" left join estado eos on eos.estado_id = cos.estado_id "); + sql.append(" left join parada pds on pds.parada_id = s.aliasdestino_id "); + sql.append(" left join ciudad cds on cds.ciudad_id = pds.ciudad_id "); + 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(" 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(" and b.rmd_id is null "); + sql.append(" and b.indstatusboleto = 'V' "); + sql.append(" and b.empresacorrida_id = ? "); + sql.append(" and b.fechorventa between ? and ? "); + sql.append(" and coalesce(eos.cveestado, eo.cveestado) = ? "); + sql.append("order by estadoId, serieCompl, folio, fechorVenta "); + + return sql.toString(); + } + + public String getSqlImpressaoRMDTipoECF() { + + StringBuilder sql = new StringBuilder(); + sql.append("select "); + sql.append(" b.boleto_id as boletoId, "); + sql.append(" b.numoperacion as numoperacion, "); + sql.append(" b.numseriepreimpresa as serieCompl, "); + sql.append(" b.numfoliopreimpreso as folio, "); + sql.append(" a.acfiscal as numAidf, "); + sql.append(" a.serie as serieAidf, "); + sql.append(" a.subserie as subSerieAidf, "); + sql.append(" trunc(b.fechorventa) as fechorVenta, "); + sql.append(" e.nombempresa as empresa, "); + sql.append(" e.cnpj as cnpjEmpresa, "); + sql.append(" e.logradouro || ', ' || e.numero || ' - ' || e.bairro || ', ' || ce.nombciudad "); + sql.append(" || ' - ' || ee.cveestado || ', ' || e.cep "); + sql.append(" as enderecoEmpresa, "); + sql.append(" ie.numinscricaoestadual as ieEmpresa, "); + sql.append(" coalesce(eos.estado_id, eo.estado_id) as estadoId, "); + sql.append(" coalesce(ei.icms, eo.icms) as icmsInterestadual, "); + sql.append(" ei.icmsim as icmsIntermunicipal, "); + sql.append(" coalesce(eos.cveestado, eo.cveestado) as estadoOrigem, "); + sql.append(" coalesce(eds.cveestado, ed.cveestado) as estadoDestino, "); + sql.append(" coalesce(cos.codibge, co.codibge) as municipioOrigem, "); + sql.append(" case when((coalesce(eos.cveestado, eo.cveestado)) = "); + sql.append(" (coalesce(eds.cveestado, ed.cveestado))) "); + sql.append(" then 0 else 1 "); + sql.append(" end as isInterEstadual, "); + sql.append(" ei.porcredbaseicms as redBaseCalcIcms, "); + sql.append(" ei.porcredmunicipal as porcRedMunicipal, "); + sql.append(" ei.porcredestadual as porcRedEstadual, "); + sql.append(" ei.tributacaoimportacao as tributacaoImportacao, "); + sql.append(" case when (coalesce(pos.regionmetropolitana_id, po.regionmetropolitana_id, -1) = "); + sql.append(" coalesce(pds.regionmetropolitana_id, pd.regionmetropolitana_id, -2)) "); + sql.append(" then 1 else 0 end as isenta, "); + sql.append(" coalesce(b.preciopagado, 0) as tarifa, "); + sql.append(" coalesce(b.importetaxaembarque, 0) as taxaEmbarque, "); + sql.append(" coalesce(b.importepedagio, 0) as pedagio, "); + sql.append(" coalesce(b.importeseguro, 0) as seguro, "); + sql.append(" coalesce(b.importeoutros, 0) as outros, "); + sql.append(" r4.numserie20 as ecf, "); + sql.append(" r4.datamov as datamov, "); + sql.append(" r4.coo as coo, "); + sql.append(" r4.impsubtotal as totalFiscal "); + 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 ciudad ce on ce.ciudad_id = e.ciudad_id "); + sql.append(" join estado ee on ee.estado_id = ce.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 "); + sql.append(" join parada pd on pd.parada_id = b.destino_id "); + sql.append(" join ciudad cd on cd.ciudad_id = pd.ciudad_id "); + sql.append(" join estado ed on ed.estado_id = cd.estado_id "); + sql.append(" left join alias_servico s on s.origen_id = b.origen_id "); + sql.append(" and s.destino_id = b.destino_id and s.corrida_id = b.corrida_id "); + sql.append(" and s.ruta_id = b.ruta_id "); + sql.append(" left join parada pos on pos.parada_id = s.aliasorigen_id "); + sql.append(" left join ciudad cos on cos.ciudad_id = pos.ciudad_id "); + sql.append(" left join estado eos on eos.estado_id = cos.estado_id "); + sql.append(" left join parada pds on pds.parada_id = s.aliasdestino_id "); + sql.append(" left join ciudad cds on cds.ciudad_id = pds.ciudad_id "); + 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(" 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(" and b.rmd_id is null "); + sql.append(" and b.indstatusboleto = 'V' "); + sql.append(" and b.empresacorrida_id = ? "); + sql.append(" and b.fechorventa between ? and ? "); + sql.append(" and coalesce(eos.cveestado, eo.cveestado) = ? "); + sql.append("order by estadoId, ecf, coo, fechorVenta "); + + return sql.toString(); + } } diff --git a/src/com/rjconsultores/ventaboletos/service/FiscalService.java b/src/com/rjconsultores/ventaboletos/service/FiscalService.java index 88b054607..4a82d321b 100644 --- a/src/com/rjconsultores/ventaboletos/service/FiscalService.java +++ b/src/com/rjconsultores/ventaboletos/service/FiscalService.java @@ -7,6 +7,7 @@ import java.util.Date; import java.util.HashMap; import java.util.List; +import com.rjconsultores.ventaboletos.entidad.Aidf; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; import com.rjconsultores.ventaboletos.entidad.Estado; @@ -47,4 +48,8 @@ public interface FiscalService { public File buscarArquivoExportacaoRMD(Date value, Date value2, Empresa empresa, Estado estado); public List getRegistroImpressaoRMDTipoDVB(Connection connection, Date inicio, Date fim, Empresa empresa, Estado estado, String rmd); + + public List getRegistroImpressaoRMDTipoECF(Connection connection, Date inicio, Date fim, Empresa empresa, Estado estado, String rmd); + + public void gravarRMDBoleto(Connection connection, List rmds, Aidf aidf); } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java index 9c561e10f..d195143c7 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java @@ -27,6 +27,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.rjconsultores.ventaboletos.dao.FiscalDAO; +import com.rjconsultores.ventaboletos.entidad.Aidf; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; import com.rjconsultores.ventaboletos.entidad.Estado; @@ -80,18 +81,28 @@ public class FiscalServiceImpl implements FiscalService { @Autowired private ExportacaoFiscal exportacaoFiscal; - + @Override @Transactional public int gerarRegistroP2_F2(List lsEsquemaCorrida, Date dataDe, Date dataAte) throws SQLException { return fiscalDAO.gerarRegistroP2_F2(lsEsquemaCorrida, dataDe, dataAte); } - + + @Override + public void gravarRMDBoleto(Connection connection, List rmds, Aidf aidf) { + fiscalDAO.gravarRMDBoleto(connection, rmds, aidf); + } + @Override public List getRegistroImpressaoRMDTipoDVB(Connection connection, Date inicio, Date fim, Empresa empresa, Estado estado, String rmd) { return fiscalDAO.getRegistroImpressaoRMDTipoDVB(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado(), rmd); } + @Override + public List getRegistroImpressaoRMDTipoECF(Connection connection, Date inicio, Date fim, Empresa empresa, Estado estado, String rmd) { + return fiscalDAO.getRegistroImpressaoRMDTipoECF(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado(), rmd); + } + @Override public File importacionFiscalECFManual(Date inicio, Date fim, Empresa empresa) { @@ -790,21 +801,21 @@ public class FiscalServiceImpl implements FiscalService { @Override public File buscarArquivoExportacaoECF(Date inicio, Date fim, Empresa empresa, Estado estado) { Connection connection = null; - + try { connection = getConnection(); - + List listaRegistroECFTipoCFC = fiscalDAO.buscarRegistroECFTipoCFC(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado()); List listaRegistroECFTipoCCF = fiscalDAO.buscarRegistroECFTipoCCF(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado()); List listaRegistroECFTipoICF = fiscalDAO.buscarRegistroECFTipoICF(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado()); List listaRegistroECFTipoPRC = fiscalDAO.buscarRegistroECFTipoPRC(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado()); - - return exportacaoFiscal.gerarArquivoECF(inicio, fim, empresa.getNombempresa(), listaRegistroECFTipoCFC, listaRegistroECFTipoCCF, listaRegistroECFTipoICF, + + return exportacaoFiscal.gerarArquivoECF(inicio, fim, empresa.getNombempresa(), listaRegistroECFTipoCFC, listaRegistroECFTipoCCF, listaRegistroECFTipoICF, listaRegistroECFTipoPRC); } catch (Exception e) { log.error(e.getMessage(), e); - + } finally { try { if (connection != null && !connection.isClosed()) { @@ -812,7 +823,7 @@ public class FiscalServiceImpl implements FiscalService { } } catch (SQLException e) { log.error("error fechar conexão", e); - + throw new RuntimeException(e); } } @@ -823,21 +834,21 @@ public class FiscalServiceImpl implements FiscalService { @Override public File buscarArquivoExportacaoRMD(Date inicio, Date fim, Empresa empresa, Estado estado) { Connection connection = null; - + try { connection = getConnection(); - + List listaRegistroRMDTipoPAR = fiscalDAO.buscarRegistroRMDTipoPAR(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado()); List listaRegistroRMDTipoRMD = fiscalDAO.buscarRegistroRMDTipoRMD(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado()); List listaRegistroRMDTipoBPS = fiscalDAO.buscarRegistroRMDTipoBPS(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado()); List listaRegistroRMDTipoDBP = fiscalDAO.buscarRegistroRMDTipoDBP(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado()); - - return exportacaoFiscal.gerarArquivoRMD(inicio, fim, empresa.getNombempresa(), listaRegistroRMDTipoPAR, listaRegistroRMDTipoRMD, listaRegistroRMDTipoBPS, + + return exportacaoFiscal.gerarArquivoRMD(inicio, fim, empresa.getNombempresa(), listaRegistroRMDTipoPAR, listaRegistroRMDTipoRMD, listaRegistroRMDTipoBPS, listaRegistroRMDTipoDBP); } catch (Exception e) { log.error(e.getMessage(), e); - + } finally { try { if (connection != null && !connection.isClosed()) { @@ -845,7 +856,7 @@ public class FiscalServiceImpl implements FiscalService { } } catch (SQLException e) { log.error("error fechar conexão", e); - + throw new RuntimeException(e); } } diff --git a/src/com/rjconsultores/ventaboletos/utilerias/impressaormd/vo/DetalhadoRMDTipoDVB.java b/src/com/rjconsultores/ventaboletos/utilerias/impressaormd/vo/DetalhadoRMD.java similarity index 84% rename from src/com/rjconsultores/ventaboletos/utilerias/impressaormd/vo/DetalhadoRMDTipoDVB.java rename to src/com/rjconsultores/ventaboletos/utilerias/impressaormd/vo/DetalhadoRMD.java index 37b0a5c6e..a8b6cf2a6 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/impressaormd/vo/DetalhadoRMDTipoDVB.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/impressaormd/vo/DetalhadoRMD.java @@ -3,7 +3,7 @@ package com.rjconsultores.ventaboletos.utilerias.impressaormd.vo; import java.math.BigDecimal; import java.util.Date; -public class DetalhadoRMDTipoDVB { +public class DetalhadoRMD { private Long boletoId; private String numoperacion; @@ -33,6 +33,12 @@ public class DetalhadoRMDTipoDVB { private BigDecimal seguro; private BigDecimal outros; + // CAMPOS ECF + private String ecf; + private String datamov; + private String coo; + private String totalFiscal; + public Long getBoletoId() { return boletoId; } @@ -249,4 +255,36 @@ public class DetalhadoRMDTipoDVB { this.outros = outros; } + public String getEcf() { + return ecf; + } + + public void setEcf(String ecf) { + this.ecf = ecf; + } + + public String getDatamov() { + return datamov; + } + + public void setDatamov(String datamov) { + this.datamov = datamov; + } + + public String getCoo() { + return coo; + } + + public void setCoo(String coo) { + this.coo = coo; + } + + public String getTotalFiscal() { + return totalFiscal; + } + + public void setTotalFiscal(String totalFiscal) { + this.totalFiscal = totalFiscal; + } + } diff --git a/src/com/rjconsultores/ventaboletos/utilerias/impressaormd/vo/ImpressaoRMD.java b/src/com/rjconsultores/ventaboletos/utilerias/impressaormd/vo/ImpressaoRMD.java index c786a1c83..57f536717 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/impressaormd/vo/ImpressaoRMD.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/impressaormd/vo/ImpressaoRMD.java @@ -25,7 +25,7 @@ public class ImpressaoRMD { private BigDecimal icms; private String obs; - private List detalhada; + private List detalhada; public ImpressaoRMD(String empresa, String enderecoEmpresa, String cnpjEmpresa, String ieEmpresa, Date data, String rmd, String naturezaOperacao, String tipo, String serie, String obs) { @@ -170,14 +170,14 @@ public class ImpressaoRMD { this.obs = obs; } - public List getDetalhada() { + public List getDetalhada() { if (detalhada == null) { - detalhada = new ArrayList(); + detalhada = new ArrayList(); } return detalhada; } - public void setDetalhada(List detalhada) { + public void setDetalhada(List detalhada) { this.detalhada = detalhada; }