[firebase-br] OFF-TOPPIC - modulo11 Banco do Brasil

Carlos H. Cantu listas em warmboot.com.br
Qua Set 18 14:36:08 -03 2013


Favor enviar sua duvida para listas de Delphi. Aqui falamos de
Firebird.

[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br

HR> Colegas,

HR> Por favor, seria possível me encaminhar as funções para Delphi 7 - para o
HR> Banco Do Brasil:

HR> function GetLinhaDigitavel: string;
HR> function GerarCodigoBarra: TgbCobCodBar;
HR> function GerarCodigoBarraDV: TgbCobCodBar;

HR> *Peço perdão pela impertinência*, mas estou entre a cruz e a espada e já
HR> fiz dezenas de testes com a central do BB sem êxito.

HR> Agradeço desde já e desejo tudo de bom para vocês.

HR> Atenciosamente,
HR> Henrique


HR> Em 11 de setembro de 2013 08:54, Henrique Ribeiro
HR> <kikeribeiro em gmail.com>escreveu:

>> Bom dia pessoal,
>>
>> Obrigado pelo apoio. Obrigado mesmo.
>>
>> Fernando,
>>
>> Executei a tua função e percebi que ela não "exclui" a posição "5" como
>> indica o manual do BB:
>>
>>
>> b) para calcular o D.V. considerar 43 posições do Código de Barras sendo
>> da posição 1 a 4 e da posição 6 a 44;
>> c) multiplicar cada algarismo que compõe o número pelo seu respectivo
>> multiplicador (peso), iniciando-se pela 44a posição e saltando a 5a posição;
>>
>> Será que pode comprometer o resultado? É que falta somente este DV geral
>> para homologar minha rotina de bloquetos com eles (BB).
>>
>> Muito obrigado a você e ao Auriston pela ajuda.
>>
>> Att,
>> Henrique
>>
>>
>> Em 11 de setembro de 2013 08:00, Fernando Correa <fjcnando em ig.com.br>escreveu:
>>
>> Henrique,
>>>
>>> Segue uma rotina que tenha há mais de 12 anos, veja se poderá te ajudar:
>>>
>>> Declaração:
>>>
>>>
>>> function Modulo11(Numero: string): string;
>>>
>>>
>>> function Modulo11(Numero: string): string;
>>> var
>>>   i, j, k: Integer;
>>>   Soma: Integer;
>>>   Digito: Integer;
>>> begin
>>>   Numero := Trim(Numero);
>>>   for j := 1 to 1 do
>>>   begin
>>>     k := 2;
>>>     Soma := 0;
>>>     for i := Length(Numero) downto 1 do
>>>     begin
>>>       Soma := Soma + (Ord(Numero[i]) - Ord('0')) * k;
>>>       Inc(k);
>>>       if (k > 9) then
>>>         k := 2; //2
>>>     end;
>>>     Digito := 11 - Soma mod 11;
>>>     if Digito >= 10 then
>>>       Digito := 0;
>>>     Result := Result + Chr(Digito + Ord('0'));
>>>   end;
>>> end;
>>>
>>>
>>> Basta passar o que você quer para a função que o retorno será o digito
>>> conforme módulo de calculo.
>>>
>>> Uso para: BB, Banestes, HSBC, CEF, Real, Itau ...
>>>
>>>
>>>
>>> Espero ter ajudado.
>>>
>>> Atenciosamente
>>> Fernando Correa
>>>
>>>
>>> Em 10 de setembro de 2013 16:30, Henrique Ribeiro
>>> <kikeribeiro em gmail.com>escreveu:
>>>
>>> > Boa tarde colegas,
>>> >
>>> > Estou com certa dificuldade em ajustar o módulo11 em Delphi da unit
>>> > gbCobranca.pas.
>>> >
>>> > Encaminho a função e agradeço desde já qualquer ajuda que aparecer.
>>> >
>>> > Função:
>>> >
>>> > function Modulo11BB(Valor: string; Base: Integer = 9): string;
>>> > {
>>> >    Rotina muito usada para calcular dígitos verificadores
>>> >    Pega-se cada um dos dígitos contidos no parâmetro VALOR, da direita
>>> para
>>> > a
>>> >    esquerda e multiplica-se pela seqüência de pesos 2, 3, 4 ... até
>>> BASE.
>>> >    Por exemplo: se a base for 9, os pesos serão
>>> 2,3,4,5,6,7,8,9,2,3,4,5...
>>> >    Se a base for 7, os pesos serão 2,3,4,5,6,7,2,3,4...
>>> >    Soma-se cada um dos subprodutos.
>>> >    Divide-se a soma por 11.
>>> >    Faz-se a operação 11-Resto da divisão e devolve-se o resultado dessa
>>> > operação
>>> >    como resultado da função Modulo11.
>>> >    Obs.: Caso o resultado seja maior que 9, deverá ser substituído por 0
>>> > (ZERO).
>>> > }
>>> > var
>>> >   iSoma: Integer;
>>> >   iContador: Integer;
>>> >
>>> >   iFator: Integer;
>>> > begin
>>> >   iFator := Base;
>>> >   iSoma := 0;
>>> >
>>> >   for iContador := Length(Valor) downto 1 do
>>> >     begin
>>> >       if iContador <> 5 then
>>> >       begin
>>> >         iSoma := iSoma + (StrToInt(Valor[iContador]) * iFator);
>>> >
>>> >         Dec(iFator);
>>> >
>>> >         if iFator = 1 then
>>> >           iFator := Base;
>>> >       end;
>>> >     end;
>>> >
>>> >   Result := IntToStr(iSoma mod 11);
>>> > end;
>>> >
>>> >
>>> > Orientação do Manual Bloquetos ago_2011 do Banco do Brasil:
>>> >
>>> > ANEXO 10
>>> > CÁLCULO DO DÍGITO VERIFICADOR (DV) DO CÓDIGO DE BARRAS (MÓDULO 11)
>>> > Por definição do BACEN, na 5ª posição do código de barras, deve ser
>>> > indicado, obrigatoriamente, o “dígito verificador”(DV), do Código de
>>> > Barras, calculado pelo
>>> > módulo 11, conforme segue:
>>> > a) o código de barras possui 44 (quarenta e quatro) posições, incluindo
>>> o
>>> > D.V.;
>>> > b) para calcular o D.V. considerar 43 posições do Código de Barras
>>> sendo da
>>> > posição 1 a 4 e da posição 6 a 44;
>>> > c) multiplicar cada algarismo que compõe o número pelo seu respectivo
>>> > multiplicador (peso), iniciando-se pela 44a posição e saltando a 5a
>>> > posição;
>>> > d) os multiplicadores (pesos) variam de 2 a 9;
>>> > e) o primeiro dígito da direita para a esquerda deverá ser multiplicado
>>> por
>>> > 2, o segundo por 3 e assim sucessivamente;
>>> > f) os resultados das multiplicações devem ser somados:
>>> > Exemplo:(6 X 2) + (3 X 1) + (4 X 8) + ...+(4 X 0) = 712;
>>> > g) o total da soma deverá ser dividido por 11:
>>> > Exemplo: 712/11 = 64. Resto igual a 8;
>>> > h) o resto da divisão deverá ser subtraído de 11:
>>> > Exemplo: 11 - 8 = 3, Portando “3” é o Dígito verificador
>>> > i) se o resultado da subtração for:
>>> > I - igual a 0.....................D.V. igual a 1
>>> > II - igual a 10....................D.V. igual a 1
>>> > III - igual a 11....................D.V. igual a 1
>>> > IV - diferente de 10 e 11..........D.V. será o próprio dígito, no caso
>>> do
>>> > exemplo “3”
>>> > OBS: EM NENHUMA HIPOTESE PODERÁ SER UTILIZADO O DÍGITO "0"(/ZERO) NA
>>> QUINTA
>>> > POSIÇÃO DO CÓDIGO DE BARRAS.
>>> > j) o resultado deste cálculo deverá ser incluído na 5a posição do
>>> código de
>>> > barras.
>>> >
>>> > Obrigado para todos e sucesso na jornada!
>>> > Henrique
>>> > ______________________________________________
>>> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> > Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> > http://www.firebase.com.br/fb/artigo.php?id=1107
>>> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>> >
>>>
>>>
>>>
>>> --
>>> Atenciosamente
>>> Fernando Correa
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>
>>
HR> ______________________________________________
HR> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
HR> Para saber como gerenciar/excluir seu cadastro na lista, use:
HR> http://www.firebase.com.br/fb/artigo.php?id=1107
HR> Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista