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. luizclairrodrigues

    luizclairrodrigues Membro Participativo

    Boa tarde Pessoal!
    gostaria de saber como faço para bloquear uma segunda impressão da mesma ordem, só imprimir se for o administrador para imprimir novamente a mesma ordem uma segunda vez esse é código.
    Obrigado.





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

    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 ordem-saida.usuario <> c-seg-usuario THEN DO:
    RUN MESSAGE.p (INPUT "Ordem Pertence a Outro Usuário","").
    APPLY "entry" TO c-ordem IN FRAME f-pg-par.
    RETURN ERROR.
    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.

    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.
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Se essa tabela é do produto padrao, vc pode usar os campos log-1 ou log-2, se estiver false, deixa imprimir, depois que vc imprimiu, muda o campo pra true, dai se tiver true, vc já bloqueia, ou ainda, se não quiser usar a tabela original, cria uma tabela com a chave de acesso iqual a da sua tabela, dai vc grava o status nessa tabela e testa antes de imprimir.

    Um abraço
  3. luizclairrodrigues

    luizclairrodrigues Membro Participativo

    Bom dia!

    Pode ser assim +ou- assim?

    IF toggle-1 = NO THEN DO:
    FIND ordem-saida NO-LOCK WHERE
    ordem-saida.usuario <> c-seg-usuario AND
    ordem-saida.nr-ord-saida = tt-param.c-ordem AND
    ordem-saida.reimpressao = YES NO-ERROR.
    IF AVAIL ordem-saida THEN DO:
    ASSIGN ordem-saida.reimpressao = YES.

    ELSE

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

    bootstrapmaster Moderator Moderador Equipe de Suporte

    essa tabela ordem-saida é sua ? é especifica ?
    Dai sim, é isso mesmo, mas se vc usar o find com no-lock vai dar erro na hora do assign.
  5. luizclairrodrigues

    luizclairrodrigues Membro Participativo

    Sim é específica, é verdade vai dar erro com no-lock!
    Valeu.
  6. luizclairrodrigues

    luizclairrodrigues Membro Participativo

    Bom até aqui deu certo bootstrapmaster,
    será que você pode me orientar como eu faço para só o líder do setor fazer uma reimpressão de uma ordem que já foi impressa?
    Abraço!

Compartilhe esta Página