Giter Club home page Giter Club logo

gerar-boletos's Introduction

gerar-boletos

NPM badges

NPM gerar-boletos package npm downloads npm downloads

Biblioteca em Node.js para geração de boletos utilizando PDFKit

Geração de boletos para bancos:

  • Bradesco
  • Caixa
  • Ailos (Cecred)
  • Itaú
  • Sicoob
  • Sicredi
  • Santander
  • Banco do Brasil

Install

npm i gerar-boletos
yarn add gerar-boletos

Exemplos de uso

npm run gerarBrasil
npm run gerarBradesco
npm run gerarCecred

Run tests

npm run test

gerar-boletos's People

Contributors

dependabot[bot] avatar igordepaula avatar romulosanttos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

gerar-boletos's Issues

Error ao fazer require ou import.

ao utilizar o pacote diretamente pelo link do repositório, e fazer o uso da função require. o mesmo apresenta o seguinte error
Please verify that the package.json has a valid "main" entry

testes não funcionando

A pois remodelagem do projeto é encapsulamento do código legado, acabou não ajustando alterando os novos caminhos dos arquivos

revisar testes itau

mesmo com o teste passando, apresenta error ao gerar arquivo de boleto
tests/boleto/bancos/itau-test.js

Ao gerar um boleto do Itau o código

Ao gerar boleto Itau o código não batia

gerava o numero 6 ao invés do 0
AAABC.CCDDX DDDDD.DEFFFY FGGGG.GGHHHZ K UUUUVVVVVVVVVV
E = DAC do campo [ Agência/Conta/Carteira/ Nosso Número ]
estava pegando um nomero a menos do campoLivre no primeiro mod10
// var digito2 = GeradorDeDigitoPadrao.mod10(campoLivre.substring(11, 20) + campoLivre.substring(0, 11));
var digito2 = GeradorDeDigitoPadrao.mod10(campoLivre.substring(11, 21) + campoLivre.substring(0, 11));
no caso desse boleto, o código deu certo.

Posso gerar boleto sem um cnpj?

Gostaria de saber se consigo gerar um boleto sem ter o cnpj, que parece ser obrigatório. Os exemplos não mostram um caso sem cnpj

Atualizar versao no npm

Bom dia, eu fui testar sua lib mas acabei nao conseguindo, pois os exemplos estao pra versao 1.4.4, mas no npm so consigo baixar a versao 1.3.3.

Boleto Santander

Boa tarde, está gerando o erro:
(node:13120) UnhandledPromiseRejectionWarning: Error: Erro na geração do código de barras. Número de dígitos diferente de 44. Verifique se todos os dados foram preenchidos corretamente. Tamanho encontrado: 46

Isso é ao gerar o boleto Santander.

Erro de data ao criar um boleto

Estou tentando criar um boleto do Banco do Brasil conforme o exemplo dado, porem sempre recebo o mesmo erro:

{
  "message": "O ano do documento deve ser maior que 1997 e menor que 2024"
}

estou fazendo assim:

const today = new Date(Date.now());
const dueDate = new Date(data.charge.dueDate);

const boleto: IBilletProps = {
      banco: new Bancos.BancoBrasil(),
      pagador: {
        endereco: {
          cep: data.order.user_zip_code,
          cidade: data.order.user_city,
          estadoUF: data.order.user_state,
          logradouro: data.order.user_address,
          bairro: data.order.user_address_extension,
        },
        nome: data.order.user_name,
        registroNacional: data.order.user_document,
      },
      instrucoes: ['Nao receber apos vencimento'],
      boleto: {
        datas: {
          documentos: today,
          processamento: today,
          vencimento: dueDate,
        },
        especieDocumento: 'DM',
        numeroDocumento: '',
        valor: data.order.total_price,
      },
      beneficiario: {
        nome: '',
        cnpj: '',
        endereco: {
          bairro: '',
          cep: '',
          cidade: '',
          estadoUF: '',
          logradouro: '',
        },
        dadosBancarios: {
          agencia: '',
          agenciaDigito: '',
          conta: '',
          contaDigito: '',
          nossoNumero: ourNumber,
          nossoNumeroDigito: ourNumberDigit,
        },
      },
    };

o que estou fazendo de errado?

Erro ao tentar mudar o caminho padrão de criação do PDF.

Não consigo mudar os parâmetros no método pdfFile da classe Boletos.

no código da lib está assim:

   pdfFile(dir = './tmp/boletos', filename='boleto') {
       if (!fs.existsSync(dir)) fs.mkdirSync(dir); 
   }

Só que eu passo para dentro do meu código assim:

import { Boletos, Bancos, StreamToPromise } from "gerar-boletos/lib/index.js"

const filepath = pathLib.join(__dirname, "../../../../public/bankslips/")  // caminho que planejo aramzenar os pdf´s
const path = `${pagadoresList[i].RegistroNacional}-${Date.now()}`;   // titulo de cada PDF

const newBoleto = new Boletos(boleto);
newBoleto.gerarBoleto();
newBoleto
    .pdfFile(filepath, path)
    .then(async ({ stream }) => {
       await StreamToPromise(stream);
    })
   .catch(error => {
      console.error(error);
   return new Error(error);
   });

O erro que me ocorre é : "Error: ENOENT: no such file or directory, mkdir './tmp/boletos'"
pois o "fs.mkdirSync(dir)" no código está seguindo o padrão "./tmp/boletos", mesmo após eu estar mudando o caminho com 'filePath'.

Para tentar contornar tentei tipar os metodos em um arquivo separado com 'interface', mas sem sucesso.

streamToPromise não resolve a Promise

Nos exemplos de uso, na parte do código abaixo:

novoBoleto.pdfFile().then(async ({ stream }) => {
  // ctx.res.set('Content-type', 'application/pdf');	
  await streamToPromise(stream); <<< ==== Não resolve a Promise
}).catch((error) => {
  return error;
});

Se colocarmos algo para aguardar o retorno da Promise: await streamToPromise(stream);, o codigo não ira rodar porque a Promise não esta sendo resolvida, ficando assim aguardando o termino do Promise eternamente. Ex.:

novoBoleto.pdfFile().then(async ({ stream }) => {
  // ctx.res.set('Content-type', 'application/pdf');	
  await streamToPromise(stream);
  fazerQualquerCoisa(); <<<< ==== não vai chamar a função porque a Promise da linha acima não esta sendo resolvida, mesmo o PDF sendo gerado
}).catch((error) => {
  return error;
});

Tentei corrigir mas não tive capacidade de fazer =(

Caractere inválido

Olá, emiti um boleto e fui validar no sistema do banco do Itaú, como teste para validação.
O sistema retornou: Caractere inválido 162 código 1
Pelo que vi na documentação na página 22 o erro se refere a isto:
(F) Informar o valor por dia de atraso nas posições 161 a 173 e a data nas posições 386 a 391.

Porém nao achei onde coloco este valor, nao sei se realmente é isso também, poderia me ajudar/informar?

pdfkit generate invalid pdf

ao gerar o pdf do itaú me deparei com um problema aparentemente o adobe reader identifica o pdf como inválido, porem abrindo no navegador está funcionando normalmente, pelo que identifiquei a versão atual do pdfkit tem um issue quando utiliza uma dotted-line fazendo downgrade do pdfkit para a 0.9.1 deve resolver o problema.

foliojs/pdfkit#1060

Passar via parametro o patch do arquivo a ser salvo, ou o diretorio.

No modelo atual o endereço que o pdf é salvo está constante, surge a necessidade para uso em aplicação que seja informado qual o nome do arquivo e o caminho.

Esta mudença deve ser feita de tal forma que como está funcionando hoje inclusive nos testes não quebrem. Desta forma, a função pode aceitar valor vazio, ou não passagem de parametro, e neste caso aceitar um valor constante, mas o usuario tambem pode informar via parametro da função estes valores.

Tempo para alteração, pouco mais que 30 minutos.

Remessa e retorno

Boa tarde, gostaria de saber se a lib gera remessa e processa retorno dos bancos que já estão implementados.

Validação Datas

Boa tarde!

No fonte gerar-boletos\lib\boletoUtils.js, há a função validarData, que valida apenas o ano da data e de forma fixa, valida se o ano está entre 1997 e 2024.

Acredito que esta validação poderia ser melhorada, validar se a data em si é uma data válida e também validar o ano dinamicamente, pois após 2024 sempre será lançada a exceção informando que "O ano do documento deve ser maior que 1997 e menor que 2024".

Adequação para Caixa Econômica Federal

Recentemente, a Caixa alterou seu manual de pagamentos eletrônicos: http://www.caixa.gov.br/Downloads/cobranca-caixa/Manual_de_Leiaute_de_Arquivo_Eletronico_CNAB_240.pdf

Segundo o documento, proponho a adequação dos módulos destinados à boletos da Caixa de modo que suportem:

  • Conta do Beneficiário com 7 dígitos;
  • A não informação do DV do Nosso Número (passa a ser calculado automaticamente por mod11 com aceitação de 0);
  • A não informação do DV da Conta do Beneficiário (DigitoCodigoBeneficiario passa a ser calculado automaticamente por mod11 com aceitação de 0)

Teste boleto Sicoob

Estou tentando testar a geração de boletos pelo Sicoob porém está acontecendo um problema com as datas. Ao rodar o npm run test com a package.json configurada para pegar o script do sicoob-test.js é dado o seguinte erro:

TypeError: data.getFullYear is not a function
at validarData (gerar-boletos-master/lib/utils/functions/boletoUtils.js:361:18)
at Datas.comDocumento (gerar-boletos-master/lib/utils/functions/boletoUtils.js:377:8)
at Object.setUp (gerar-boletos-master/tests/boleto/bancos/sicoob-test.js:21:9) [ etc...]

Sabe por que?

revisar testes caixa

mesmo com o teste passando, apresenta error ao gerar arquivo de boleto
tests/boleto/bancos/caixa-test.js

Banco Sicoob

Ótima noite!

alguém poderia me auxiliar com este erro?

Error: Erro na geração do código de barras. Número de dígitos diferente de 44. Verifique se todos os dados foram preenchidos corretamente. Tamanho encontrado: 45 Valor encontrado.

Exemplo Caixa

Por gentileza, poderia criar um exemplo pro banco Caixa?
Estou tentando gerar, porém não estou conseguindo e quando consigo, não dá pra pagar...
Agradeço a atenção...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.