Simbologia codigo de barras 2 de 5 Intercalado

Discussão em 'Progress 4GL' iniciado por andreluisbrandao, Abril 9, 2012.

  1. andreluisbrandao

    andreluisbrandao Membro Participativo

    Bom dia senhores,

    Estou desenvolvendo a impressão de boleto bancario pelo Excel e gostaria da ajuda de voces mais experientes. Ja montei todo o boleto inclusive com o nosso numero, linha de digitavel e a linha do codigo de barras e esta perfeito, a minha ultima dificuldade é a impressão do codigo de barras no excel. A Totvs disponibiliza na pasta ems206b\interfac\bcodefont os fontes necessarios para impressão de codigos de barras, sei que o formato para impressão de boletos é o 2 de 5 intercalado, la tem esse, a questão é: Para cada par de numeros existe um simbolo a ser impresso do codigo de barras. Gostaria de saber se algum pode me ajudar com o mapeamento desses simbolos ex:

    codigo : 237980 = {+93}

    Não tenho esse mapa de simbolos para esse fonte e gostaria que me ajudassem com relação a isso.

    Obrigado

    André.
  2. leandrol360

    leandrol360 Membro Participativo

  3. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Teste o código abaixo:

    Código:
    
    def var c-cod-barras-aux        as character        no-undo.
    def var c-cod-barras            as character        no-undo.
    
    assign c-cod-barras-aux = "" /***** Insira Aqui o Código de Barras *****/.
    
    run pi-generatei2of5 (input  c-cod-barras-aux,
                          output c-cod-barras    ).
    
    message c-cod-barras-aux    skip
            c-cod-barras        view-as alert-box.
    
    /******************************************************************************************************************/
    procedure pi-generatei2of5 :
    /*------------------------------------------------------------------------------
      purpose:     
      parameters:  <none>
      notes:       
    ------------------------------------------------------------------------------*/
    
        def input  param pvalor     as char     no-undo.
        def output param pchars     as char     no-undo.
        
        /* localização dos caracteres no fonte -----------------------------------*/
        &scop asc_0031          192
        &scop asc_3399          33
        &scop asc_32            159
        &scop chr_start         chr(123)
        &scop chr_stop          chr(125)
    
        /* variaveis de trabalho -------------------------------------------------*/
        def var vcont       as inte         no-undo.
        def var vindex      as inte         no-undo.
        
        /* i2of5 somente aceita caracteres numericos -----------------------------*/
        do vcont = 1 to length(pvalor):
    
            if index("0123456789":u, substr(pvalor, vcont, 1)) = 0 then do:
    
                message " I2OF5: ENcontrado caracter não numérico no código de barras: " skip
                        pvalor view-as alert-box.
    
                return trim(return-value) + ' ':u + substr(pvalor, vcont, 1).
    
            end.
    
        end.
        
        /* coloca um zero a esquerda se o número de digitos for impar ------------*/
        if length(pvalor) modulo 2 <> 0 then
            pvalor = '0' + pvalor.
        
        /* calcula o caracter ascii de acordo com os pares de digitos -----------*/
        pchars = {&chr_start}.
    
        do vcont = 1 to length(pvalor) by 2 :
    
            vindex = inte(substr(pvalor, vcont, 2)).
    
            if vindex = 32 then
                pchars = pchars + chr({&asc_32}).
            else
                if vindex < 32 then
                    pchars = pchars + chr(vindex + {&asc_0031}).
                else
                    pchars = pchars + chr(vindex - 33 + {&asc_3399}).
    
        end.
            
        pchars = pchars + {&chr_stop}.
            
        return "":u.
            
    end procedure.
    
    return "Ok".
    
    
  4. andreluisbrandao

    andreluisbrandao Membro Participativo

    Ola amigo,
    Consegui fazer com simplesmente com um fonte do excel e mais um calculo que descobri pesquisando.

    Ficou certinho.

    Muito obrigado pelo apoio.
  5. jaozi_nho

    jaozi_nho Membro Participativo

    Coloca pra galera aqui como você fez, pode ser mto util.
  6. andreluisbrandao

    andreluisbrandao Membro Participativo

    Basicamente o codigo que o eduardo.leite informa e mais um arquivo de fonte codigo de barras para excel.

Compartilhe esta Página