diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java index 2ed1d921e..814b5b52d 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java @@ -6,6 +6,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; @@ -1706,6 +1707,57 @@ public class FiscalHibernateDAO implements FiscalDAO { @Override public List buscarRegistroRMDTipoPAR(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) { List retorno = new ArrayList(); + + StringBuilder sb = new StringBuilder(); + sb.append(" select"); + sb.append(" c.estado_id as cod_participante,"); + sb.append(" e.nombempresa as nombempresa,"); + sb.append(" e.cveestado as cveestado,"); + sb.append(" e.cnpj as cnpj,"); + sb.append(" ie.numinscricaoestadual as numinscricaoestadual,"); + sb.append(" ie.logradouro as logradouro,"); + sb.append(" ie.numero as numero,"); + sb.append(" ie.complemento as complemento,"); + sb.append(" ie.bairro as bairro,"); + sb.append(" ie.cep as cep"); + sb.append(" from empresa e"); + sb.append(" join ciudad c on c.ciudad_id = e.ciudad_id"); + sb.append(" join estado e on e.estado_id = c.estado_id"); + 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")); + registro.setNomeParticipante(rs.getString("nombempresa")); + registro.setUfParticipante(rs.getString("cveestado")); + registro.setCpfParticipante(rs.getString("cnpj")); + registro.setIeParticipante(rs.getString("numinscricaoestadual")); + registro.setLogradouro(rs.getString("logradouro")); + registro.setNumero(rs.getInt("numero")); + 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; } @@ -1713,6 +1765,69 @@ public class FiscalHibernateDAO implements FiscalDAO { @Override public List buscarRegistroRMDTipoRMD(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) { List retorno = new ArrayList(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + + StringBuilder sb = new StringBuilder(); + sb.append(" select"); + sb.append(" ce.estado_id as cod_estabelecimento,"); + sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN eo.estado_id ELSE eos.estado_id END) as cod_participante,"); + sb.append(" a.acfiscal as num_aidf,"); + sb.append(" a.serie as serie,"); + sb.append(" a.subserie as subserie,"); + sb.append(" b.numfoliosistema as num_bilhete,"); + sb.append(" b.numfoliopreimpreso as num_formulario,"); + sb.append(" b.feccreacion as data_emissao,"); + sb.append(" (CASE WHEN b.indstatusboleto like 'C' THEN 'S' ELSE 'N' END) as doc_cancelado"); + sb.append(" from boleto b"); + sb.append(" join empresa e on e.empresa_id = b.empresacorrida_id"); + sb.append(" join ciudad ce on ce.ciudad_id = e.ciudad_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(" 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(" 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(" where"); + sb.append(" b.tipoventa_id = 3"); + sb.append(" and (b.indstatusboleto like 'V' or b.indstatusboleto like 'C')"); + 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.setString(1, cveestado); + ps.setLong(2, Long.valueOf(empresaId)); + + ResultSet rs = ps.executeQuery(); + + ExportacaoRMDTipoRMD registro = null; + + while (rs.next()) { + registro = new ExportacaoRMDTipoRMD(); + registro.setCodigoEstabelecimento(rs.getInt("cod_estabelecimento")); + registro.setNumeroAIDF(rs.getInt("num_aidf")); + registro.setSerieAIDF(rs.getString("serie")); + registro.setSubSerieAIDF(rs.getString("subserie")); + registro.setNumeroBilheteAIDF(rs.getInt("num_bilhete")); + registro.setNumeroFormularioAIDF(rs.getInt("num_formulario")); + registro.setDataEmissao(sdf.format(rs.getDate("data_emissao"))); + registro.setCancelado(rs.getString("doc_cancelado").equals("S") ? Boolean.TRUE : Boolean.FALSE); + registro.setCodigoParticipante(rs.getInt("cod_participante")); + registro.setCodigoContabil(""); //FIXME: Falta definir - registro.setCodigoContabil(rs.getString("doc_cancelado").equals("S") ? "" : rs.getString("")); + + retorno.add(registro); + } + + 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 b8e726684..3f0ecf8f6 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java @@ -289,108 +289,111 @@ public class ExportacaoFiscal { } private void adicionarRegistroRMDTipoPAR(PrintWriter writer, List listaRegistroRMDTipoPAR) { - Integer codigoParticipante = 7; - String nomeParticipante = "EXPRESSO GUANABARA S/A"; - String ufParticipante = "AL"; - String cpfParticipante = "41550112004514"; - String ieParticipante = "241034574"; - String imParticipante = ""; - String logradouro = "AV. GOV. LAMENHA FILHO. TERM.RODOV. MACEIO/AL"; - Integer numero = 10; - String complemento = ""; - String bairro = ""; - Integer cep = 0; - - StringBuilder sb = new StringBuilder(); - sb.append("PAR").append(SEPARADOR); - sb.append(formataNumerico(codigoParticipante, true, 9)).append(SEPARADOR); - sb.append(formataCaracter(nomeParticipante, false, 60)).append(SEPARADOR); - sb.append(formataCaracter(ufParticipante, false, 2)).append(SEPARADOR); - sb.append(formataCaracter(cpfParticipante, true, 14)).append(SEPARADOR); - sb.append(formataCaracter(ieParticipante, true, 14)).append(SEPARADOR); - sb.append(formataCaracter(imParticipante, true, 20)).append(SEPARADOR); - sb.append("N").append(SEPARADOR); - sb.append("N").append(SEPARADOR); - sb.append("N").append(SEPARADOR); - sb.append("N").append(SEPARADOR); - sb.append("N").append(SEPARADOR); - sb.append("N").append(SEPARADOR); - sb.append("N").append(SEPARADOR); - sb.append("0").append(SEPARADOR); - sb.append(formataCaracter(logradouro, false, 60)).append(SEPARADOR); - sb.append(formataNumerico(numero, true, 6)).append(SEPARADOR); - sb.append(formataCaracter(complemento, false, 60)).append(SEPARADOR); - sb.append("0").append(SEPARADOR); - sb.append(formataCaracter(bairro, false, 50)).append(SEPARADOR); - sb.append(formataNumerico(cep, true, 8)).append(SEPARADOR); - sb.append(formataCaracter(VAZIO, false, 5)).append(SEPARADOR); // Posição 23 - sb.append(formataCaracter(VAZIO, false, 3)).append(SEPARADOR); // Posição 24 - sb.append(formataCaracter(VAZIO, false, 9)).append(SEPARADOR); // Posição 25 - sb.append(formataCaracter(VAZIO, false, 14)).append(SEPARADOR); // Posição 26 - sb.append("N").append(SEPARADOR); - sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 28 - sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 29 - sb.append("1558").append(SEPARADOR); - sb.append("N").append(SEPARADOR); - sb.append("N").append(SEPARADOR); - sb.append(formataCaracter(VAZIO, false, 60)).append(SEPARADOR); // Posição 33 - sb.append(VAZIO).append(SEPARADOR); // Posição 34 - sb.append(VAZIO).append(SEPARADOR); // Posição 35 - sb.append(formataCaracter(VAZIO, false, 7)); // Posição 36 - - writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA); + for (ExportacaoRMDTipoPAR registro : listaRegistroRMDTipoPAR) { + Integer codigoParticipante = registro.getCodigoParticipante(); + String nomeParticipante = registro.getNomeParticipante(); + String ufParticipante = registro.getUfParticipante(); + String cpfParticipante = registro.getCpfParticipante(); + String ieParticipante = registro.getIeParticipante(); + String logradouro = registro.getLogradouro(); + Integer numero = registro.getNumero(); + String complemento = registro.getComplemento(); + String bairro = registro.getBairro(); + Integer cep = registro.getCep(); + + StringBuilder sb = new StringBuilder(); + sb.append("PAR").append(SEPARADOR); + sb.append(formataNumerico(codigoParticipante, true, 9)).append(SEPARADOR); + sb.append(formataCaracter(nomeParticipante, false, 60)).append(SEPARADOR); + sb.append(formataCaracter(ufParticipante, false, 2)).append(SEPARADOR); + sb.append(formataCaracter(cpfParticipante, true, 14)).append(SEPARADOR); + sb.append(formataCaracter(ieParticipante, true, 14)).append(SEPARADOR); + sb.append(formataCaracter(VAZIO, false, 20)).append(SEPARADOR); // Posição 7 + sb.append("N").append(SEPARADOR); + sb.append("N").append(SEPARADOR); + sb.append("N").append(SEPARADOR); + sb.append("N").append(SEPARADOR); + sb.append("N").append(SEPARADOR); + sb.append("N").append(SEPARADOR); + sb.append("N").append(SEPARADOR); + sb.append("0").append(SEPARADOR); + sb.append(formataCaracter(logradouro, false, 60)).append(SEPARADOR); + sb.append(formataNumerico(numero, true, 6)).append(SEPARADOR); + sb.append(formataCaracter(complemento, false, 60)).append(SEPARADOR); + sb.append("0").append(SEPARADOR); + sb.append(formataCaracter(bairro, false, 50)).append(SEPARADOR); + sb.append(formataNumerico(cep, true, 8)).append(SEPARADOR); + sb.append(formataCaracter(VAZIO, false, 5)).append(SEPARADOR); // Posição 23 + sb.append(formataCaracter(VAZIO, false, 3)).append(SEPARADOR); // Posição 24 + sb.append(formataCaracter(VAZIO, false, 9)).append(SEPARADOR); // Posição 25 + sb.append(formataCaracter(VAZIO, false, 14)).append(SEPARADOR); // Posição 26 + sb.append("N").append(SEPARADOR); + sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 28 + sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 29 + sb.append("1558").append(SEPARADOR); + sb.append("N").append(SEPARADOR); + sb.append("N").append(SEPARADOR); + sb.append(formataCaracter(VAZIO, false, 60)).append(SEPARADOR); // Posição 33 + sb.append(VAZIO).append(SEPARADOR); // Posição 34 + sb.append(VAZIO).append(SEPARADOR); // Posição 35 + sb.append(formataCaracter(VAZIO, false, 7)); // Posição 36 + + writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA); + } } private void adicionarRegistroRMDTipoRMD(PrintWriter writer, List listaRegistroRMDTipoRMD) { - Integer codigoEstabelecimento = 8; - Integer numeroAIDF = 114034303; - String serieAIDF = "F"; - String subSerieAIDF = ""; - Integer numeroBilheteAIDF = 2723; - Integer numeroFormularioAIDF = 2723; - String dataEmissao = "20160501"; - Boolean cancelado = Boolean.FALSE; - Integer codigoParticipante = 7; - String codigoContabil = "31102010010001"; + for (ExportacaoRMDTipoRMD registro : listaRegistroRMDTipoRMD) { + Integer codigoEstabelecimento = registro.getCodigoEstabelecimento(); + Integer numeroAIDF = registro.getNumeroAIDF(); + String serieAIDF = registro.getSerieAIDF(); + String subSerieAIDF = registro.getSubSerieAIDF(); + Integer numeroBilheteAIDF = registro.getNumeroBilheteAIDF(); + Integer numeroFormularioAIDF = registro.getNumeroFormularioAIDF(); + String dataEmissao = registro.getDataEmissao(); + Boolean cancelado = registro.getCancelado(); + Integer codigoParticipante = registro.getCodigoParticipante(); + String codigoContabil = registro.getCodigoContabil(); - StringBuilder sb = new StringBuilder(); - sb.append("RMD").append(SEPARADOR); - sb.append(formataNumerico(codigoEstabelecimento, true, 9)).append(SEPARADOR); - sb.append(formataNumerico(numeroAIDF, true, 25)).append(SEPARADOR); - sb.append(formataCaracter(serieAIDF, false, 3)).append(SEPARADOR); - sb.append(formataCaracter(subSerieAIDF, false, 3)).append(SEPARADOR); - sb.append(formataNumerico(numeroBilheteAIDF, true, 6)).append(SEPARADOR); - sb.append(formataNumerico(numeroFormularioAIDF, true, 6)).append(SEPARADOR); - sb.append(formataCaracter(dataEmissao, false, 6)).append(SEPARADOR); - sb.append(cancelado ? "S" : "N").append(SEPARADOR); - sb.append("").append(SEPARADOR); // Posição 10 - sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 11 - sb.append(formataCaracter(VAZIO, false, 4)).append(SEPARADOR); // Posição 12 - sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 13 - sb.append(formataCaracter(VAZIO, false, 5)).append(SEPARADOR); // Posição 14 - sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 15 - sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 16 - sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 17 - sb.append(formataNumerico(codigoParticipante, true, 9)).append(SEPARADOR); - sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 19 - sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 20 - sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 21 - sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 22 - sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 23 - sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 24 - sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 25 - sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 26 - sb.append("01").append(SEPARADOR); - sb.append("01").append(SEPARADOR); - sb.append(formataNumerico(codigoContabil, true, 9)).append(SEPARADOR); - sb.append(formataCaracter(VAZIO, false, 9)).append(SEPARADOR); // Posição 30 - sb.append(formataCaracter(VAZIO, false, 9)).append(SEPARADOR); // Posição 31 - sb.append(formataCaracter(VAZIO, false, 9)).append(SEPARADOR); // Posição 32 - sb.append(formataCaracter(VAZIO, false, 8)).append(SEPARADOR); // Posição 33 - sb.append(formataCaracter(VAZIO, false, 3)).append(SEPARADOR); // Posição 32 - sb.append(formataCaracter(VAZIO, false, 3)); // Posição 33 - - writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA); + StringBuilder sb = new StringBuilder(); + sb.append("RMD").append(SEPARADOR); + sb.append(formataNumerico(codigoEstabelecimento, true, 9)).append(SEPARADOR); + sb.append(formataNumerico(numeroAIDF, true, 25)).append(SEPARADOR); + sb.append(formataCaracter(serieAIDF, false, 3)).append(SEPARADOR); + sb.append(formataCaracter(subSerieAIDF, false, 3)).append(SEPARADOR); + sb.append(formataNumerico(numeroBilheteAIDF, true, 6)).append(SEPARADOR); + sb.append(formataNumerico(numeroFormularioAIDF, true, 6)).append(SEPARADOR); + sb.append(formataCaracter(dataEmissao, false, 6)).append(SEPARADOR); + sb.append(cancelado ? "S" : "N").append(SEPARADOR); + sb.append("").append(SEPARADOR); // Posição 10 + sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 11 + sb.append(formataCaracter(VAZIO, false, 4)).append(SEPARADOR); // Posição 12 + sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 13 + sb.append(formataCaracter(VAZIO, false, 5)).append(SEPARADOR); // Posição 14 + sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 15 + sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 16 + sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 17 + sb.append(formataNumerico(codigoParticipante, true, 9)).append(SEPARADOR); + sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 19 + sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 20 + sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 21 + sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 22 + sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 23 + sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 24 + sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 25 + sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 26 + sb.append("01").append(SEPARADOR); + sb.append("01").append(SEPARADOR); + sb.append(formataNumerico(codigoContabil, true, 9)).append(SEPARADOR); + sb.append(formataCaracter(VAZIO, false, 9)).append(SEPARADOR); // Posição 30 + sb.append(formataCaracter(VAZIO, false, 9)).append(SEPARADOR); // Posição 31 + sb.append(formataCaracter(VAZIO, false, 9)).append(SEPARADOR); // Posição 32 + sb.append(formataCaracter(VAZIO, false, 8)).append(SEPARADOR); // Posição 33 + sb.append(formataCaracter(VAZIO, false, 3)).append(SEPARADOR); // Posição 32 + sb.append(formataCaracter(VAZIO, false, 3)); // Posição 33 + + writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA); + } } private void adicionarRegistroRMDTipoBPS(PrintWriter writer, List listaRegistroRMDTipoBPS) {