Linha digitável ABN 356 (Banco Real) está com dígitos a mais

Oct 23, 2008 at 6:17 PM
Senhores

Precisei imprimir boletos do banco real e os 3 primeiros campos da linha digitável vem com 5 números a mais.
Vejam

Banco Real (Errado com 5 dígitos a mais)
35690.0689103142.05577790765 77907.628869

Bradesco (linha digitável correta)
23791.23405 90100.000000 01012.345607

Alguém sabe de algo

Em ambos os casos eu somente mandei gerar os exemplos originais sem alterar nada.



Coordinator
Oct 27, 2008 at 9:55 PM
Você poderia enviar os parametros usados para gerar o boleto?

Oct 28, 2008 at 1:18 PM
Stiven

O que eu fiz pra resolver isso foi copiar a função "FormataLinhaDigitavel" da classe Banco_Bradesco.cs (já homologada) e subistituí-la na classe Banco_Real. Gerei 2 boletos: um eu paguei pela internet e outro paguei pelo caixa eletronico. Ambas funcionaram e compensaram sem problemas pois tenho conta empresa no banco real e carteira 57.

Uma dúvida minha é : Porque não colocar a função FormataLinhaDigitavel na classe base?

O código que eu usei foi:


        DateTime vencimento = DateTime.Now.AddDays(12);
        
        //string numerodoc = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString().PadLeft(2, '0') + DateTime.Now.Day.ToString().PadLeft(2, '0');

        string numerodoc = "3".PadLeft(8,'0');

        Cedente c = new Cedente("000.000.000-00", "EBENEZER BORRIGUEIRO CURVELLO", "0140", "3742791", "5");
        c.Codigo = 3742791;

        Boleto b = new Boleto(vencimento, 2, "57", numerodoc, c);
        b.NumeroDocumento = numerodoc;

        b.Sacado = new Sacado("000.000.000-00", "EBENEZER BORRIGUEIRO CURVELLO");
        b.Sacado.Endereco.End = "Rua da xxxxxxx";
        b.Sacado.Endereco.Bairro = "xxxxx";
        b.Sacado.Endereco.Cidade = "Rio de Janeiro";
        b.Sacado.Endereco.CEP = "21825-000";
        b.Sacado.Endereco.UF = "RJ";

        Instrucao instr = new Instrucao(341);
        instr.Descricao = "teste instrução";
        b.Instrucoes.Add(instr);

        real.Boleto = b;
        real.Boleto.Valida();

        real.MostrarComprovanteEntrega = (Request.Url.Query == "?show");

OBS:
1) OCULTEI MEU CPF POR MOTIVOS DE SEGURANÇA.
2) No momento de criar a instrução deixei o código do Itau 341 e funcionou sem problemas, o código do real gerava uma exception.

Nov 27, 2008 at 7:32 PM
Retiro o que disse no último reply de Oct 28 at 11:18 AM, Fui imprimir um boleto agora para vencto jan2009 e não funcionou

Dec 7, 2008 at 11:03 PM
ecurvello, vc conseguiu resolver o problema dos digitos a mais no banco real ?

Eu tbem estou com este problema e vou adotar a sua solução....


Vou ver se consigo gerar algo

Dec 7, 2008 at 11:46 PM
Já resolvi, o problema da linha digitavel, agora porém não consegui implementar a impressão do campo ESPECIE DCTO.

Outro detalhe eh q eu estou implementando isso no vb.net(winforms) e naum asp.net.


Dec 8, 2008 at 8:29 PM
Edited Dec 8, 2008 at 9:43 PM
bem, igualmente ao amigo ecurvello, tenho que ratificar o meu post anterior,

Fiz a troca da linha digitavel do banco real pela linha digitavel do bradesco (assim como sugeriu o amigo ecurvello). Num primeiro instante parece que havia corrigido o problema, porém notei que a formatação esta correta porém o segundo campo apresenta em seu segundo conjunto de dados alguma inconsistência que faz com que tal campo repita-se em todos os boletos emitido.

Acompanhando o código, cheguei a seguinte conclusão :

Na função que valida o boleto

public override void ValidaBoleto(Boleto boleto)........
.
.
.
.
          FormataCodigoBarra(boleto);
         .......


         boleto.CodigoBarra.Codigo = string.Format("{0}{1}{2}{3}{4}", Codigo, boleto.Moeda,
                    Utils.FatorVencimento(boleto), valorBoleto, CampoLivre(boleto));

//boleto.CodigoBarra.Codigo = "35694095000000000056600047671005650000558000001"

//
ao passar pela validação abaixo esse valor é alterado para : 35697000000000056600047671005650000558000001      
_dacBoleto = Utils.Mod11(Strings.Left(boleto.CodigoBarra.Codigo, 4) + Strings.Right(boleto.CodigoBarra.Codigo, 39), 9, 0);
 boleto.CodigoBarra.Codigo = Strings.Left(boleto.CodigoBarra.Codigo, 4) + _dacBoleto + Strings.Right(boleto.CodigoBarra.Codigo, 39);
.
.
.
.
//quando o código chega nesse ponto para formatar a linha digitavel o valor está vindo sem o fator de vencimento.
FormataLinhaDigitavel(boleto); // valor que está chegando aqui : "35697000000000056600047671005650000558000001"
//Acredito que deveria chegar nessa função o valor anterior (35691409000000056600047671005600000558000001 )

.
.
.
.


Linha digitavel gerada quando altero o valor boleto.CodigoBarra.Codigo para :
35691409000000056600047671005600000558000001
35690.04769 71005.600003 05580.000015 7 40950000005660




Linha digitavel gerada sem aleração do valor boleto.CodigoBarra.Codigo
(35697000000000056600047671005650000558000001)
35690.04769 71005.650008 05580.000015 7 40950000005660

Tenho aqui Boletos pré impresso do Banco Real e sua linha digitável é :
35690.04769 71005.600003 05580.000015 5 000xxxxxxxxxx

Bem, meu unico problema esta sendo a validação do segundo campo do segundo grupo, porém se eu passar para o codigodebarra o valor ja mencionando assima ele faz tudo certinho.


Gente tive que editar o post pois eu havia colado valores de boletos diferentes.....


Se alguém puder me dar uma ajuda eu fico agradecido.




Jan 9, 2009 at 11:19 AM

admilson

Desculpe não ter te respondido antes pois eu estava de férias. Voce conseguiu resolver o problema da linha digitável do banco real?

Vi que tem uma nova versão lá e em 11/dez

[]'s

Ebenezer Curvello
Jan 14, 2009 at 5:22 PM
Detectei mais um problema na linha digitável do real.


Toda linha digitável vem no último bloco de numeros um valor que corresponde a data de vencimento do boleto e depois o valor do boleto, mas a linha digitável do real está vindo com vários zeros onde deveria vir o numero que corresponde ao venvimento, veja o exemplo:

35691.23403 01234.510004 00001.234566 2 00000000000010

O bloco 00000000000010 veio com zeros onde deveria vir um número e depois veio o valor de 0,10.

Coordinator
Jan 15, 2009 at 1:38 PM
Quais carteiras que vocês estão precisando?
Jan 15, 2009 at 4:39 PM
Carteira 57
Jan 17, 2009 at 12:23 PM
Edited Jan 17, 2009 at 12:38 PM
Amigo tbem estive de ferias,


veja o link de um post meu onde eu consegui resolver

http://www.codeplex.com/boletonet/Thread/View.aspx?ThreadId=41853




Jan 19, 2009 at 12:27 PM
Admilson,

Boa dia

Li o post, mas o problema agora é outro.... No banco real a linha digitável agora funciona, mas o campo onde deveria vir a data de vencimento está com vários 0000000000000

Entendeu?

[]'s

Ebenezer
Jan 19, 2009 at 12:51 PM
O termo técnico para o problema que citei acima é "FATOR DE VENCIMENTO" da linha digitável que está vindo com zeros 0000000000

Segue abaixo o trecho extraído do manual do banco real:

<style> <!-- /* Font Definitions */ @font-face {font-family:"Arial\,Bold"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:auto; mso-font-signature:3 0 0 0 1 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:595.3pt 841.9pt; margin:70.85pt 3.0cm 70.85pt 3.0cm; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style>

4o.BLOCO: 14560000003500

Composto pelo fator de vencimento e valor do título:

Iniciando pelo fator 1000, que corresponde à data de vencimento 03.07.2000, e assim sucessivamente,

conforme tabela abaixo:

Fator de Vencimento

FATOR VENCIMENTO

1000 03/07/2000

1002 05/07/2000

1456 02/10/2001

4789 17/10/2010

9999 21/02/2025

Exemplo, considerando o vencimento dia 02/10/2001 e o valor 35,00

35690.50168              70325.510009               00000.030205            9          14560000003500

1 o bloco                2 o bloco                  3o bloco                 D/v        Fator vcto/valor

 

Observações:

1. Quando a primeira posição do Bloco 4 for zero, significa que esse título não contém o fator de vencimento no código de barras/linha digitável, tratando-se portanto as 14 (quatorze) posições como valor.

 

2. Divergência na data de vencimento

Caso ocorra divergência entre a data impressa no campo “data de vencimento” e a constante no código de barras, prevalecerá a data indicada no código de barras, pois o processo será automatizado.

 

3. Feriados

Nas praças com feriados, é permitido o pagamento, via compensação, no primeiro dia útil subseqüente à data de vencimento do bloqueto de cobrança.

Para os pagamentos através de terminais de Auto Atendimento, Internet, Home/Office Banking, deverá ser considerada a data da praça da agência de débito.

 

4. Valor superior a 10 posições

Bloquetos com valores superiores a R$ 99.999.999,99 (dez posições) não terão o fator de vencimento no código de barras, ou então, a critério do cedente, o valor poderá ser desmembrado em 2 (dois) bloquetos de cobrança.

 

5. Alteração de vencimento

Em caso de concessão de prorrogação da data de vencimento, não sendo possível a emissão de novo bloqueto, o sacado deverá ser orientado a efetuar o pagamento somente no Banco Real. Esta situação também será válida para casos de concessão de desconto do valor após a emissão do bloqueto ou qualquer outra alteração para recebimento não constante do bloqueto.

Nota: O Banco Real não se responsabilizará por encargos financeiros por eventual acolhimento de bloqueto fora do prazo, quando este for emitido sem a indicação do “fator de vencimento”.