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

[RESOLVIDO] UPC em API - segurança de depósitos.

Discussão em 'EMS , HCM e Totvs 11' iniciado por reissobr, Agosto 9, 2015.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. reissobr

    reissobr Membro Participativo

    Bom dia pessoal,
    Estamos planejando implementar segurança em depósitos.
    A ideia é restringir o acesso de determinados usuários para Estabelecimento / Deposito / Tipo de Movimento (entrada e/ou saída).
    O tipo de transação não vamos colocar na segurança, pois a segurança de liberação de programas já limita este acesso.
    Para este controle, e ideia é ter uma tabela especifica com as regras e fazer as validações na CEAPI001.
    Agora, nunca fiz uma UPC para uma API.
    As regras são as mesmas para UPC em programas ?
    Tenho como monitorar o evento do programa chamador, que chamou a API ?
  2. af.dums

    af.dums Membro Ativo

    Olá, se não me engano (fiz a muito tempo e não encontrei o fonte) é via EPC, cadastra como UPC no cadastro de programas do CEAPI001:

    Código:
    define temp-table tt-epc no-undo
       field cod-event     as char format "x(12)"
       field cod-parameter as char format "x(32)"
       field val-parameter as char format "x(54)"
       index  id is primary cod-parameter cod-event ascending.
    /* Definicao de Parametros */
    
    DEF INPUT        PARAM p-ind-event AS CHAR NO-UNDO.
    DEF INPUT-OUTPUT PARAM TABLE FOR tt-epc.
    reissobr curtiu isso.
  3. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    eu fiz assim .....
    Código:
    /*  ------------------------------------------------------
        Programa .: upc/upc-ceapi001.p
        Autor ....: Richard Edgar - Imesul
        Data .....: 30/12/2011
        Descricao : Verificar se usuario pode movimentar em
                    deposito.
        ------------------------------------------------------ */
        {grid2/error.i}
    
        {utp/ut-glob.i}
        {include/i-epc200.i1}
    
        procedure picontrole-vasilhames:
            define input        parameter p-ind-event as character no-undo.
            define input-output parameter table for tt-epc.
    
            if p-ind-event = 'controle-vasilhames' then do:
                find first tt-epc
                     where tt-epc.cod-event     = p-ind-event
                       and tt-epc.cod-parameter = 'movto-estoq-rowid'
                           no-error.
    
                if avail tt-epc then do:
                    for first movto-estoq no-lock
                        where rowid (movto-estoq) = to-rowid(tt-epc.val-parameter):
    
                        find first cst_permissao_movto_deposito no-lock
                             where cst_permissao_movto_deposito.cod_usuario = c-seg-usuario
                               and cst_permissao_movto_deposito.cod-estabel = movto-estoq.cod-estabel
                               and cst_permissao_movto_deposito.cod-depos   = movto-estoq.cod-depos
                                   no-error.
                        if avail cst_permissao_movto_deposito then do:
                            if cst_permissao_movto_deposito.acesso[movto-estoq.esp-docto] = no then do:
                                run utp/ut-msgs.p('show',17006,substitute('Usuario sem permissao de movimento de estoque.~~ O usuario &1 nÆo est  cadastrado para movimentar estoque',c-seg-usuario)).
                                create tt-epc.
                                assign tt-epc.cod-event     = 'ERROR':u
                                       tt-epc.cod-parameter = 'EPC-ERROR':u
                                       tt-epc.val-parameter = substitute('Usuario &1 sem permissao de movimento de estoque.', c-seg-usuario).
                                return 'NOK'.
                            end.
                        end.
                    end.
                end.
            end.
            return 'ok'.
        end procedure.
    
    Só que eu controlo o tipo de transação também
    reissobr curtiu isso.
  4. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Só lembrando que a forma de carregar upc para a ceapi001 mudou para persistent, dai para cada ponto de upc, vc cria uma procedure, por isso que o meu codigo está diferente do codigo do colega Anderson
    reissobr curtiu isso.
  5. reissobr

    reissobr Membro Participativo

    Bom dia Pessoal.
    Coloquei os parametros como sugerido, no código abaixo, mas ainda estou recebendo o erro: "Mismatched number of parameters passed to routine UPC/ceapi001-upc.r.
    Estamos na versao 12.1.4m e nao entendi o que estou fazendo de errado.

    Código:
    {utp/ut-glob.i}
    {include/i-epc200.i1}
    
    DEFINE  INPUT         parameter p-ind-event as character no-undo.
    DEFINE  INPUT-OUTPUT  PARAMETER  TABLE  FOR  tt-epc.
    
    MESSAGE "entrou na API" VIEW-AS ALERT-BOX.
    
  6. reissobr

    reissobr Membro Participativo

    @bootstrapmaster.
    nao entendi direito sua colocação sobre "para cada ponto da UPC voce cria uma procedure" .....
    Voce pode explanar um pouco sobre este ponto ?
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página