eduardokum / laravel-boleto

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

A que se refere codigoCliente na remessa Santander e Bradesco? #49

Closed tperrelli closed 7 years ago

tperrelli commented 7 years ago

Bom dia. Dei uma olhada na documentação do santander e não encontrei algo relacionado ao codigo do cliente. Essa numeração seria composta de quais números?

eduardokum commented 7 years ago

Código do cliente é um número que o gerente fornece, com ele compõe o código de transmissão que é agencia+codigo_cliente+conta

tperrelli commented 7 years ago

Show! Se eu tiver alguns arquivos de remessa comigo, tem como eu fazer o processo inverso, descobrindo assim esse código do cliente? Ou realmente só é possível obtendo através do gerente do banco?

eduardokum commented 7 years ago

No santander no header (0) fica na posicao 27-46 o codigo de transmissão, e o codigo do cliente fica entre a agencia e conta agencia_4_digitos+codigo_cliente_8_digitos+conta_8_digitos

No Bradesco fica no header(0) na mesma posição, mais o bradesco é o codigo inteiro 20 posições.

tperrelli commented 7 years ago

O que acontece:

Embora Agência + Cod Cli + Conta resulte no total de 20 posições, no arquivo ta sendo gerado um range no total de apenas 15 posições.

Aí fiz um teste adicionando um código de cliente qualquer só para verificar qual resultado de fato é escrito no arquivo da remessa.

Aí tá ficando dessa forma:

agencia (4) digitos + Cod cli (8) digitos + 00 + primeiro digito da conta

Explicando melhor:

Agencia: 3333 Cod cli: 1 Conta: 888888

3333 + 00000001 + 008 (totalizando em 15, conforme na documentação 240 e a implementação)

Tô usando Cnab 240, e realmente a implementação na linha 245 da classe Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab240\Banco está de acordo com a documentação do santander.

033 – 047 Código de Transmissão N 015 $this->add(33, 47, Util::formatCnab(9, $this->getCodigoTransmissao(), 15)); // Codigo de Transmissão

Então eu compreendi que o script pega apenas os três primeiros dígitos da conta. E quanto a conta tem menos do que 8 dígitos, o script completa com dois zeros a frente, resultando como está no exemplo acima.

Todavia, na remessa real que tenho em mãos que o pessoal do financeiro me passou, range está no seguinte formato:

agência + 0000 + conta + conta div

É como se o código do cliente fosse 0.

Porém, no plugin não pode aplicar "0" no código do cliente. E independente disso, o número da conta vem completo seguido pelo dígito.

Pergunta:

O range total deve de fato ser 20 posições?

O range deve ser de 15 (obtendo os três primeiros dígitos da conta ou completando com três zeros quando a conta for menor que 8 caracteres)?

ou existe alguma outra informação que eu estou esquecendo?

Valeu!

eduardokum commented 7 years ago

Desculpe, é que esse cnab 240 não sei se esta funcional, ele esta em testes, pois eu nunca utilizei, foi @leonardopinho que enviou o PR, não sei onde e se utiliza esse código de cliente para ele, teria que ver na documentação do banco onde fica e se realmente existe essa informação na remessa.

tperrelli commented 7 years ago

Entendi! Vou fazer uns testes aqui. Se funcionar mando PR.

eduardokum commented 7 years ago

Certo.