Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problema ao gerar boleto banco do brasil. #288

Open
GabrielDevLoper opened this issue May 24, 2023 · 2 comments
Open

Problema ao gerar boleto banco do brasil. #288

GabrielDevLoper opened this issue May 24, 2023 · 2 comments

Comments

@GabrielDevLoper
Copy link

está apresentando o seguinte erro ao gerar boleto.

br.com.caelum.stella.boleto.exception.GeracaoBoletoException: net.sf.jasperreports.engine.JRException: Error retrieving field value from bean: linhaDigitavel.

SERVICE:

public Boleto imprimirBoleto(Long id){
        try {
            Datas datas = Datas.novasDatas()
                    .comVencimento(2, 5, 2006);

            Endereco enderecoBeneficiario = Endereco.novoEndereco()
                    .comLogradouro("Av das Empresas, 123")
                    .comBairro("Bairro Grande")
                    .comCep("01234-555")
                    .comCidade("São Paulo")
                    .comUf("SP");

            //Quem emite o boleto
            Beneficiario beneficiario = Beneficiario.novoBeneficiario()
                    .comNomeBeneficiario("Fulano de Tal")
                    .comAgencia("1824").comDigitoAgencia("4")
                    .comCodigoBeneficiario("76000")
                    .comDigitoCodigoBeneficiario("5")
                    .comNumeroConvenio("1207113")
                    .comCarteira("18")
                    .comEndereco(enderecoBeneficiario)
                    .comNossoNumero("005000")
                    .comDigitoNossoNumero("347-1");

            Endereco enderecoPagador = Endereco.novoEndereco()
                    .comLogradouro("Av dos testes, 111 apto 333")
                    .comBairro("Bairro Teste")
                    .comCep("01234-111")
                    .comCidade("São Paulo")
                    .comUf("SP");

            Pagador pagador = Pagador.novoPagador()
                    .comNome("Fulano da Silva")
                    .comDocumento("277.654.118-02")
                    .comEndereco(enderecoPagador);

            Banco banco = new BancoDoBrasil();

            Boleto boleto = Boleto.novoBoleto()
                    .comBanco(banco)
                    .comDatas(datas)
                    .comBeneficiario(beneficiario)
                    .comPagador(pagador)
                    .comValorBoleto("200.00")
                    .comNumeroDoDocumento("5900010")
                    .comInstrucoes("instrução 1", "instrução 2", "instrução 3", "instrução 4", "instrução 5")
                    .comLocaisDePagamento("local 1", "local 2");

            return boleto;
        }catch (GeracaoBoletoException exception){
            throw new GeracaoBoletoException(exception);
        }
    }

CONTROLLER:

@GetMapping("/boleto/{id}")
    public ResponseEntity<byte[]> downloadBoleto(@PathVariable Long id) {
        Boleto boleto = guiaService.imprimirBoleto(id);

        GeradorDeBoleto gerador = new GeradorDeBoleto(boleto);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        gerador.geraPDF(baos);

        byte[] contents = baos.toByteArray();

        HttpHeaders headers = new HttpHeaders();
        headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=boleto.pdf");

        return ResponseEntity
                .ok()
                .headers(headers)
                .body(contents);
    }
@gilbertoca
Copy link
Contributor

@GabrielDevLoper Já estou a um bom tempo sem manter código que usa essa biblioteca, mas entendo que cada banco monta sua linha digitável a partir do método Banco.geraCodigoDeBarrasPara(), nisso creio que não pode faltar nenhum argumento e o Nosso Número precisar ter exatamente o tamanho optado pelo beneficiário:

        //Quem emite o boleto
        Beneficiario beneficiario = Beneficiario.novoBeneficiario()
                .comNomeBeneficiario(titular.getNome())
                .comAgencia(conta.getAgencia().toString()).comDigitoAgencia(conta.getAgenciaDigito())
                //CNPJ 00000000000000
                .comDocumento(titular.getCnpj())
                .comCodigoBeneficiario(conta.getConta().toString())
                .comDigitoCodigoBeneficiario(conta.getContaDigito())
                .comNumeroConvenio(conta.getNumeroConvenio())
                .comCarteira(conta.getNumeroCarteira())
                .comEndereco(enderecoBeneficiario)
                //.comModalidade('C') padrão
                //Nosso Número de 17 posições
                .comNossoNumero(nossoNumero);

@joaovagmacker
Copy link

Estou com o mesmo problema. Alguém encontrou a solução ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants