Gerar Boletos a partir de um arquivo CVS

118 views
Skip to first unread message

Marcelo Cardoso de Oliveira

unread,
Jun 28, 2017, 3:17:05 PM6/28/17
to JRimum Community
Olá,
Sou novato em tudo, Java/Bopepo e estou tomando uma surra...rsrsrss...
Consegui gerar um boleto da Caixa seguindo o tutorial e esse grupo e deu tudo certo. Está até homologado no banco porém agora precisava gerar centenas a partir de um arquivo CSV. 
Tentei seguindo o tutorial que tem aqui mesmo mas sem sucesso.
Esse arquivo CSV contem os dados do Pagante (Número do Documento, Nome, CPF, Endereço, etc...)
Queria que quando executar (RUN) gerace um PDF com todos os registros que há nesse arquivo CSV.
É possível?

A pergunta que pode vir. Porque de um CSV? Sempre os dados chegaram por CSV e não havé necessidade posterior de guardar essas informações.

Minha ideia seria:
- Salvar esse arquivo em um diretório
- ler esse arquivo
- gerar um PDF com todos (Serão impressos)

OBS: App desktop.

Muito obrigado,

Gilberto

unread,
Jun 28, 2017, 4:31:37 PM6/28/17
to jrimum-c...@googlegroups.com
Inclusive ele menciona essa biblioteca http://opencsv.sourceforge.net/

Até,

Gilberto

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "JRimum
Community" nos Grupos do Google.
Para postar neste grupo, envie um e-mail para
jrimum-community@googlegroups.com
ANTES DE POSTAR... leia:
https://groups.google.com/d/topic/jrimum-community/ULU8QHHgaBs/discussion
Para cancelar a sua inscrição neste grupo, envie um e-mail para
jrimum-community+unsubscribe@googlegroups.com
Para ver mais opções, visite este grupo em
http://groups.google.com/group/jrimum-community?hl=pt-BR?hl=pt-BR

---
Você recebeu essa mensagem porque está inscrito no grupo "JRimum Community" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jrimum-community+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Marcelo Cardoso de Oliveira

unread,
Jun 29, 2017, 6:21:36 AM6/29/17
to jrimum-c...@googlegroups.com
Muito Obrigado Gilberto... Vou estudar e coloco aqui o resiultado!!!



  Sent with Mailtrack


Marcelo Cardoso de Oliveira

unread,
Jun 29, 2017, 3:14:28 PM6/29/17
to JRimum Community
Olá Gilberto,

Segui aquele tuto e fiz algo assim: (Deu 1/2 certo
Os dados do cedente, valor do titulo e vencimento são fixos. O que deve variar e gerar vários pdf é o sacado. Ele já lé e mostra os dados do csv no print do console
               // Pagador
Sacado sacado = new Sacado("ELTON TADEU DOS SANTOS","256.743.278-74");
                //sacado.setNome("ELTON TADEU DOS SANTOS","256.743.278-");
                String arquivo = "I:\\OMBPR\\data\\in\\ombpr-cep.csv";
                
Endereco endereco = new Endereco();
                /*
                                    endereco.setUF(UnidadeFederativa.PR);
                                    endereco.setLocalidade("PINHAIS");
                                    endereco.setCep(new CEP("83331-090"));
                                    endereco.setBairro("Centro");
                                    endereco.setLogradouro("RUA CARLOS POULHMANN ");
                                    endereco.setNumero("9019");
                */
                sacado.addEndereco(endereco);
                
                         try{
           BufferedReader in = new BufferedReader(new FileReader(arquivo));
           String linha;
           int contador_linhas = 0;

           while ((linha = in.readLine()) != null) {
            System.out.println("line == "+linha);
               if (contador_linhas == 0) {
                 
               } else {
                   
                String temp = linha;
                        String partes[] = temp.split(";");
                        String matricula = partes[0]; // obtém a carteira
                        String nome = partes[1]; // obtém o banco
                        String logradouro = partes[2]; // obtém o vencimento
                        String bairro = partes[3]; // obtém a agência
                        String cidade = partes[4]; // obtém a conta
                        String uf = partes[5]; // obtém o valor do documento
                        String cep = partes[6]; // obtém o nosso número do documento
                                 String cpf = partes[7];
                                 
                                 
               }

               contador_linhas++;
           }

           
           in.close();
                            
                            
       } catch (IOException e) {
           System.out.println("Erro");
                            e.printStackTrace();
       }

---------------------------------------------------------------------------------------------------------------

Mas não gera o PDF com eles...
Veja a saída:

                BoletoViewer boletoViewer = new BoletoViewer(boleto);
                boletoViewer.setTemplate("C:\\Users\\ivali\\Desktop\\BoletoCaixa.pdf");
                
File arquivoPdf = boletoViewer.getPdfAsFile("boleto.pdf");
mostrarNaTela(arquivoPdf);
                System.out.println(boleto.getLinhaDigitavel());

ANTES DE POSTAR... leia:
https://groups.google.com/d/topic/jrimum-community/ULU8QHHgaBs/discussion
Para cancelar a sua inscrição neste grupo, envie um e-mail para

Para ver mais opções, visite este grupo em
http://groups.google.com/group/jrimum-community?hl=pt-BR?hl=pt-BR

---
Você recebeu essa mensagem porque está inscrito no grupo "JRimum Community" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jrimum-communi...@googlegroups.com.

Marcelo Cardoso de Oliveira

unread,
Jul 3, 2017, 1:12:18 PM7/3/17
to JRimum Community
Olá,

Estou quase lá:
ele lé o arquivo CSV porém ná hora de exportar só apresenta o último registro;

O que eu devo estar fazendo de errado?

Vejam:


package com.ivalix.geraboleto;

import com.ivalix.geraboleto.util.CampoLivreCefSIGCB;
import static com.ivalix.geraboleto.BoletoCaixa.calculeDVModulo11;
import java.awt.Desktop;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigDecimal;
import java.nio.charset.Charset;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

import org.jrimum.bopepo.BancosSuportados;
import org.jrimum.bopepo.Boleto;
import org.jrimum.bopepo.view.BoletoViewer;
import org.jrimum.domkee.comum.pessoa.endereco.CEP;
import org.jrimum.domkee.comum.pessoa.endereco.Endereco;
import org.jrimum.domkee.financeiro.banco.ParametrosBancariosMap;
import org.jrimum.domkee.financeiro.banco.febraban.Agencia;
import org.jrimum.domkee.financeiro.banco.febraban.Carteira;
import org.jrimum.domkee.financeiro.banco.febraban.Cedente;
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
import org.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
import org.jrimum.domkee.financeiro.banco.febraban.Sacado;
import org.jrimum.domkee.financeiro.banco.febraban.TipoDeCobranca;
import org.jrimum.domkee.financeiro.banco.febraban.TipoDeTitulo;
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
import org.jrimum.domkee.financeiro.banco.febraban.Titulo.Aceite;

public class BoletosCSV {
        Locale ptBr = new Locale("pt", "BR"); //Locale para o Brasil
public static void main(String[] args) {
// Beneficiário
Cedente cedente = new Cedente("CLIENTE", "XX.0X0.XXX/0001-05");
      
// Pagador
                //sacado.setNome("ELTON TADEU DOS SANTOS","256.743.278-");
                String arquivo = "I:\\OMBPR\\data\\in\\ombpr-cep.csv";
                
Endereco endereco = new Endereco();
                
                Sacado sacado = new Sacado(null);
                sacado.addEndereco(endereco);
                
                         try{
           BufferedReader in = new BufferedReader(new FileReader(arquivo));
           String linha;
           int contador_linhas = 0;

           while ((linha = in.readLine()) != null) {
            System.out.println("line == "+linha);
               if (contador_linhas == 0) {
                 
               } else {
                   
                String temp = linha;
                        String partes[] = temp.split(";");
                        String matricula = partes[0]; 
                        String nome = partes[1]; 
                                 String logradouro = partes[2]; 
                        String bairro = partes[3]; 
                        String cidade = partes[4]; 
                        String uf = partes[5]; 
                        String cep = partes[6]; 
                                 String cpf = partes[7];
                                 
                                 sacado.setNome(nome);
                                 //sacado.setCPRF(cprf);
                                 endereco.setLogradouro(logradouro);
                                 endereco.setBairro(bairro);
                                 endereco.setLocalidade(cidade);
               }
                                
               contador_linhas++;
           }

           
           in.close();
                            
                            
       } catch (IOException e) {
           System.out.println("Erro");
                            e.printStackTrace();
       }
// Criando o título
ContaBancaria contaBancaria = new ContaBancaria(BancosSuportados.CAIXA_ECONOMICA_FEDERAL.create());
contaBancaria.setAgencia(new Agencia(999, "0"));
contaBancaria.setNumeroDaConta(new NumeroDaConta(1122334, "5"));
                
//contaBancaria.setCarteira(new Carteira(8));
                contaBancaria.setCarteira(new Carteira(24, TipoDeCobranca.SEM_REGISTRO));
                
Titulo titulo = new Titulo(contaBancaria, sacado, cedente);
titulo.setNumeroDoDocumento("30467");
titulo.setNossoNumero("24000000000030467");
                //titulo.setNossoNumero(titulo.getNumeroDoDocumento());
titulo.setDigitoDoNossoNumero(calculeDVModulo11(titulo.getNossoNumero()) + "");
                //titulo.setParametrosBancarios(new ParametrosBancariosMap("CodigoOperacao",870));
titulo.setValor(BigDecimal.valueOf(3.05));
titulo.setDataDoDocumento(new Date());
Calendar calendar = Calendar.getInstance();
calendar.set(2017, 6, 10);
titulo.setDataDoVencimento(calendar.getTime());
titulo.setTipoDeDocumento(TipoDeTitulo.DM_DUPLICATA_MERCANTIL);
titulo.setAceite(Aceite.N);
                
                /**
* Parametros: Numero do Beneficiário com 6 dígitos, Digito verificador do
* código do beneficiário, Nosso Número
*/
CampoLivreCefSIGCB campoLivreCefSIGCB = new CampoLivreCefSIGCB("1122334", "5", titulo.getNossoNumero());
// Dados do boleto
//Boleto boleto = new Boleto(titulo);
                Boleto boleto = new Boleto(titulo, campoLivreCefSIGCB);
boleto.setLocalPagamento("EXCLUSIVAMENTE NAS AGÊNCIAS DA CAIXA E CASAS LOTÉRICAS ATÉ O VALOR LIMITE");
boleto.setInstrucaoAoSacado("Evite multas, pague em dias suas contas.");
boleto.setInstrucao1("Após o vencimento, aplicar juros de 1,00% ao mês");
                
                
                boleto.addTextosExtras("txtFcAgenciaCodigoCedente", "9999/1122334-5");
boleto.addTextosExtras("txtRsAgenciaCodigoCedente", "9999/1122334-5");
                
                boleto.addTextosExtras("txtFcCarteira", "SR");
                
                boleto.addTextosExtras("txtFcCpfCnpj","XX.0XX.XX8/0001-05");
BoletoViewer boletoViewer = new BoletoViewer(boleto);
                boletoViewer.setTemplate("C:\\Users\\ivali\\Desktop\\BoletoCaixa.pdf");
                
File arquivoPdf = boletoViewer.getPdfAsFile("boleto.pdf");
mostrarNaTela(arquivoPdf);
                System.out.println(boleto.getLinhaDigitavel());
}
private static void mostrarNaTela(File arquivo) {
Desktop desktop = Desktop.getDesktop();
                
try {
desktop.open(arquivo);
} catch (IOException e) {
e.printStackTrace();
}
}
        public static int calculeDVModulo11(String numero) {
int dv = 0;
int[] values = new int[numero.length()];
for (int i = 0; i < numero.length(); i++) {
values[i] = Integer.parseInt(numero.charAt(i) + "");
}
int soma = 0;
int vetpos = numero.length() - 1;
while (vetpos >= 0) {
for (int i = 2; i < 10; i++) {
soma += values[vetpos] * i;
vetpos--;
if (vetpos < 0)
break;
}
}

if (soma < 11) {
dv = soma - 11;
} else {
int resto = soma % 11;
dv = 11 - resto;
}

if (dv > 9)
dv = 0;

return dv;
Reply all
Reply to author
Forward
0 new messages