romulosanttos / gerar-boletos Goto Github PK
View Code? Open in Web Editor NEWBiblioteca em Node.js para geração de boletos utilizando PDFKit.
License: GNU Affero General Public License v3.0
Biblioteca em Node.js para geração de boletos utilizando PDFKit.
License: GNU Affero General Public License v3.0
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.
Ó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.
Olá a todos.
esse projeto está ativo?
gostaria de contribuir com algumas ideias
o código não está terminado
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:
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?
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...
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.
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.
Boa tarde, gostaria de saber se a lib gera remessa e processa retorno dos bancos que já estão implementados.
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
mesmo com o teste passando, apresenta error ao gerar arquivo de boleto
tests/boleto/bancos/caixa-test.js
Olá, existe uma forma de gerar mais de uma parcela em um arquivo só?
mesmo com o teste passando, apresenta error ao gerar arquivo de boleto
tests/boleto/bancos/itau-test.js
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 =(
A pois remodelagem do projeto é encapsulamento do código legado, acabou não ajustando alterando os novos caminhos dos arquivos
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?
Alguma previsao pra implementacao desses arquivos ?
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.
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
O campo Outras Deduções do boleto está impresso à esquerda, quando deveria ser impresso alinhado à direita.
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.
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".
Olá,
como faço para incluir a descrição do Locais de Pagamento ?
"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: 41 Valor encontrado: 00391565700004000000000000006128324568997."
Estou utilizando os dados reais para a geração do boleto, mas estou recebendo esse erro, alguém poderia me ajudar? Obrigado.
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?
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.