1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

como faço para bloquear uma segunda impressão da mesma ordem

Discussão em 'Progress 4GL' iniciado por luizclairrodrigues, Maio 17, 2012.

  1. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Ok, é assim, se vc estivesse usando datasul (ems2, ems5) eu diria pra vc criar um grupo de usuarios que podem re-imprimir e dai coloca os usuarios nesse grupo, a tabela é a usuar_grp_usuar, se vc está em um ambiente fora do datasul, é o seguinte, vc tem o comandinho userid('nomeBanco') que te devolve o usuario logado, então, ai vc testa if userid('nomeBanco') = 'LIDER' then faça.

    Mais ou menos isso.
  2. luizclairrodrigues

    luizclairrodrigues Membro Participativo

    Viu não da certo ainda esta dando erro assim (Registro ordem-saida não esta disponivel) daria pra vc analisar esse código pra min p/ ver se ta certo.
    Obrigado.



    /*------------------------------------------------------------------------------
    Purpose:
    Parameters: <none>
    Notes:
    ------------------------------------------------------------------------------*/
    define var r-tt-digita as rowid no-undo.
    DEF VAR edson AS CHAR.


    do on error undo, return error on stop undo, return error:
    {include/i-rpexa.i}

    FIND FIRST ordem-saida
    WHERE ordem-saida.nr-ord-saida = INPUT FRAME f-pg-par c-ordem NO-LOCK NO-ERROR.
    IF NOT AVAIL ordem-saida THEN DO:
    RUN MESSAGE.p (INPUT "Ordem não Cadastrada","").
    APPLY "entry" TO c-ordem IN FRAME f-pg-par.
    RETURN ERROR.
    END.

    IF toggle-1 = NO THEN DO:



    FIND FIRST ordem-saida WHERE
    ordem-saida.usuario <> c-seg-usuario AND
    ordem-saida.reimpressao = NO AND
    ordem-saida.nr-ord-saida = INPUT FRAME f-pg-par c-ordem NO-ERROR.
    IF AVAIL ordem-saida THEN DO:
    ASSIGN ordem-saida.reimpressao = YES.

    END.

    /* ELSE DO:

    RUN MESSAGE.p (INPUT "Você Não Tem Permissão para Imprimir essa Ordem","").
    APPLY "entry" TO c-ordem IN FRAME f-pg-par.
    RETURN ERROR.

    END.*/

    END.
    ELSE DO:
    IF c-seg-usuario = "edson" AND
    toggle-1 = YES THEN DO:


    FIND FIRST ordem-saida EXCLUSIVE-LOCK
    WHERE ordem-saida.nr-ord-saida = tt-param.c-ordem NO-ERROR.
    IF AVAIL ordem-saida THEN
    ASSIGN ordem-saida.reimpressao = NO.

    ELSE

    END.
    END.

    if input frame f-pg-imp rs-destino = 2 and
    input frame f-pg-imp rs-execucao = 1 then do:
    run utp/ut-vlarq.p (input input frame f-pg-imp c-arquivo).

    if return-value = "NOK":U then do:
    run utp/ut-msgs.p (input "show", input 73, input "").

    apply "MOUSE-SELECT-CLICK":U to im-pg-imp in frame f-relat.
    apply "ENTRY":U to c-arquivo in frame f-pg-imp.
    return error.
    end.
    end.

    /* Aqui são gravados os campos da temp-table que será passada como parâmetro
    para o programa RP.P */

    create tt-param.
    assign tt-param.usuario = c-seg-usuario
    tt-param.destino = input frame f-pg-imp rs-destino
    tt-param.data-exec = today
    tt-param.hora-exec = time
    tt-param.c-ordem = INPUT FRAME f-pg-par c-ordem
    tt-param.toggle-1 = NO.

    if tt-param.destino = 1
    then assign tt-param.arquivo = "".
    else if tt-param.destino = 2
    then assign tt-param.arquivo = input frame f-pg-imp c-arquivo.
    else assign tt-param.arquivo = session:temp-directory + c-programa-mg97 + ".tmp".

    /* Coloque aqui a lógica de gravação dos demais campos que devem ser passados
    como parâmetros para o programa RP.P, através da temp-table tt-param */

    /* Executar do programa RP.P que irá criar o relatório */
    {include/i-rpexb.i}

    SESSION:SET-WAIT-STATE("general":U).

    {include/i-rprun.i frp/frce020rp.p}

    {include/i-rpexc.i}

    SESSION:SET-WAIT-STATE("":U).

    {include/i-rptrm.i}
    end.
    END PROCEDURE.
  3. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Bom dia, esse codigo está correto, essa mensagem deve estar acontecendo em outro trecho de programa, faz uns messages nos pontos chave pra descobrir onde é o erro, mas essa mensagem está dizendo que vc está tentando usar um campo da tabela mas vc não leu nenhum registro ainda.
  4. luizclairrodrigues

    luizclairrodrigues Membro Participativo

    Bom dia!

    Preciso de uma ajuda de como eu faço para deixar "toggle-1" Enable quando esses dois usuarios "edson" e "leandro" estiverem logado, que serão permitidos para imprimir uma ordem de outro usuario.
    Obrigado.
  5. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Amigo, bom dia,

    Primeira coisa, não coloque codigo de usuario fixo no programa, daqui a pouco alguem decide que o Edson não pode mais e que o Carlos também pode e dai vc vai ter que ficar alterando o seu programa o tempo todo, já que vc está usando EMS2, cria um grupo de usuários, associa os usuarios a ele, dai no seu programa vc libera pra re-impressão todos os usuarios que pertencem a esse grupo.

    no Appbuilder, usando a template de window relatorios, vc tem a sessão "Main Block", ali, depois do comando run enable_UI vc pode colocar a sua lógica pra testar se o usuario está habilitado e dai marcar as opções.

    Mas eu acredito que não seja necessário ter esse seu toggle-1, porque vc só não verifica se já foi impresso, se já foi, deixa re-imprimir se o usuario pertencer ao grupo, se não pertence só dá a mensagem de que não pode re-imprimir, não há necessidade de alguem marcar que quer re-imprimir.

    Entendeu ?
  6. luizclairrodrigues

    luizclairrodrigues Membro Participativo

    Valeu, vou tentar assim at.

Compartilhe esta Página