Exportação Fiscal : ECF e RMD (issue 8120)

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@62831 d1611594-4594-4d17-8e1d-87c2c4800839
master
alberto 2016-11-23 20:44:43 +00:00
parent 32f6eb6183
commit 011608943e
2 changed files with 216 additions and 98 deletions

View File

@ -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<ExportacaoRMDTipoPAR> buscarRegistroRMDTipoPAR(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) {
List<ExportacaoRMDTipoPAR> retorno = new ArrayList<ExportacaoRMDTipoPAR>();
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<ExportacaoRMDTipoRMD> buscarRegistroRMDTipoRMD(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) {
List<ExportacaoRMDTipoRMD> retorno = new ArrayList<ExportacaoRMDTipoRMD>();
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;
}

View File

@ -289,108 +289,111 @@ public class ExportacaoFiscal {
}
private void adicionarRegistroRMDTipoPAR(PrintWriter writer, List<ExportacaoRMDTipoPAR> 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<ExportacaoRMDTipoRMD> 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<ExportacaoRMDTipoBPS> listaRegistroRMDTipoBPS) {