eduardokum / laravel-boleto

Pacote para gerar boletos e remessas
MIT License
606 stars 395 forks source link

Boleto Santander #160

Closed wafgomes closed 7 years ago

wafgomes commented 7 years ago

Tive problema em utilizar o último commit https://github.com/eduardokum/laravel-boleto/commit/6afcb1fe6e9270dcc4d5fc90c9c6dedb206587a5

No boleto Santander o nosso número tem 13 dígitos e percebi que ao passar os dados para gerar o boleto um ultimo digito era sempre adicionado ao final, exemplo:

nosso número: 1 nosso numero após gerar boleto: 0000000000018

por fim, isso altera o código de barras e a linha digitável.

para resolver o problema fiz as seguintes alterações: arquivo src\Boleto\Banco\Santander.php - linha 128: alterado do segundo parâmetro do método numberFormatGeral de 12 para 13 linha 129: excluída

nos testes que fiz comparando boletos emitidos pelo site do banco e pelo pacote, ambos estavam iguais e a linha digitável e código de barras batendo.

busquei informações no grupo, pesquisei aqui em issues e no grupo do Telegram mas não consegui nenhuma informação.

não sei se a alteração é valida e serve para todas as carteiras do Santander, ao menos até onde testei está tudo ok, utilizando carteira 101, cnab240

não vou enviar nenhuma correção pois não sei como fazer, e também não sei o motivo de no nosso número o último digito utilizar o modulo 11

se alguém tiver mais informações ou quiser utilizar essa solução estou deixando registrado aqui.

eduardokum commented 7 years ago

No manual diz que tem que passar com o digito

image

image Agora não sei porque nao esta batendo

wafgomes commented 7 years ago

certo, isso pode ser válido para o arquivo de remessa (ainda não testei!). mas não estava funcionando para o boleto.

não encontrei ninguém que já utiliza esse boleto para confirmar isso, o fato é que para o boleto acabei alterando o método

protected function gerarNossoNumero() { $numero_boleto = $this->getNumero(); $nossoNumero = Util::numberFormatGeral($numero_boleto, 13); //$nossoNumero .= Util::modulo11($numero_boleto); return $nossoNumero; }

preciso verificar com a remessa, ainda não gerei nenhum arquivo pois hoje é registrado direto pelo próprio site do banco, sem o envio de arquivo. depois adiciono mais informações.

eduardokum commented 7 years ago

Pelo que entendi lendo as documentações do boleto o numero é de 12 casas + DV e em todos os lugares do codigo de barras ele pede o NN de 13 posições, acredito que seja com o DV mesmo que ele vai no codigo de barras

wafgomes commented 7 years ago

no santander essa carteira o nosso número vai sempre com 13 posições mesmo. o que eu verifiquei foi que o primeiro boleto, emitido pelo site, o nosso numero era 0000000000001, não havia nenhum DV e a sequencia dos outros boletos foram apenas somando 1 .

0000000000002 0000000000003 0000000000004

sem utilizar o DV no nosso numero, o boleto emitido pelo sistema do banco e o boleto emitido pelo pacote ficam exatamente iguais

não é nenhuma ciência comprovada, apenas registrei aqui pois é assim que está funcionando corretamente aqui

eduardokum commented 7 years ago

Entendi. Na verdade o problema seria que na linha digitavel seria para usar somente o numero e nao o nosso numero... vou olhar no manual do boleto pra ver se acho alguma informação

eduardokum commented 7 years ago

Pelo que me parece na linha digitavel tem que ir com dv sim

image Veja os 12 numero + dv (2)

A menos que meu manual estava antigo, tenha mudado algo, não sei, você não tem como pedir um manual de boleto + remessa para seu gerente, ai agente consegue conferir isso??

wafgomes commented 7 years ago

como falei antes não tenho certeza absoluta sobre isso, mas estou usando como passei anteriormente. a partir dessa semana vou utilizar em homologação.

consigo pedir o manual para o gerente sim, quando tiver envio aqui.

Wagner Andrade wafgomes@gmail.com

Em 26 de junho de 2017 09:45, Eduardo Gusmão notifications@github.com escreveu:

Pelo que me parece na linha digitavel tem que ir com dv sim

[image: image] https://user-images.githubusercontent.com/2566340/27539730-fb9770d8-5a53-11e7-8a77-2e546238380f.png Veja os 12 numero + dv (2)

A menos que meu manual estava antigo, tenha mudado algo, não sei, você não tem como pedir um manual de boleto + remessa para seu gerente, ai agente consegue conferir isso??

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/eduardokum/laravel-boleto/issues/160#issuecomment-311048599, or mute the thread https://github.com/notifications/unsubscribe-auth/AD-6lZXop_pinsi-WhDbPXWNjJOwPUjaks5sH6fvgaJpZM4N1o1Y .

eduardokum commented 7 years ago

Blza so pra ter certeza.

vlw

wafgomes commented 7 years ago

44308.pdf segue o manual do boleto. consta a mesma informação que tu passou

eullercdr commented 7 years ago

Pessoal, homologuei junto ao Santander e realmente a linha digitavel, carteira 101, correta é gerada apartir da função

$numero_boleto = $this->getNumero(); $nossoNumero = Util::numberFormatGeral($numero_boleto, 13); //$nossoNumero .= Util::modulo11($numero_boleto); return $nossoNumero;

Observação: O método acima é usado para exibir o boleto na tela, usando o xml online, não testei para remessas.

wellingtonferraz23 commented 1 year ago

@eullercdr Estou com um problema na linha digitavel do Santander tbm. Poderia por gentileza encaminha a função completa? No momento utilizo essa abaixo mas tem algo de errado. function formula() { var linhaDigitavel = ''; var codigoBarras = chamarFormula.texto('codigoBarras'); var parteCdBarras = funcoes.texto.cortar(codigoBarras, 0, 4) + funcoes.texto.cortar(codigoBarras, 19, 24);

linhaDigitavel += funcoes.texto.cortar(codigoBarras, 0, 4);
linhaDigitavel += funcoes.texto.cortar(codigoBarras, 19, 20);
linhaDigitavel += '.';
linhaDigitavel += funcoes.texto.cortar(codigoBarras, 20, 24);
linhaDigitavel += funcoes.moduloDez.calcularModuloDez(parteCdBarras);
linhaDigitavel += ' ';

parteCdBarras = funcoes.texto.cortar(codigoBarras, 24, 34);
linhaDigitavel += funcoes.texto.cortar(codigoBarras, 24, 29);
linhaDigitavel += '.';
linhaDigitavel += funcoes.texto.cortar(codigoBarras, 29, 34);
linhaDigitavel += funcoes.moduloDez.calcularModuloDez(parteCdBarras);
linhaDigitavel += ' ';

parteCdBarras = funcoes.texto.cortar(codigoBarras, 34, 44);
linhaDigitavel += funcoes.texto.cortar(codigoBarras, 34, 39);
linhaDigitavel += '.';
linhaDigitavel += funcoes.texto.cortar(codigoBarras, 39, 44);
linhaDigitavel += funcoes.moduloDez.calcularModuloDez(parteCdBarras);
linhaDigitavel += ' ';
linhaDigitavel += funcoes.texto.cortar(codigoBarras, 4, 5);
linhaDigitavel += ' ';

parteCdBarras = funcoes.texto.cortar(codigoBarras, 5, 19);
linhaDigitavel += parteCdBarras;

return linhaDigitavel;

}