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

Henrique Ribeiro kikeribeiro em gmail.com
Qua Set 18 10:52:40 -03 2013


Colegas,

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

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

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

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

Atenciosamente,
Henrique


Em 11 de setembro de 2013 08:54, Henrique Ribeiro
<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
>>
>
>



Mais detalhes sobre a lista de discussão lista