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

    Tem uma forma de conseguir descobrir ?
    Não vale falar para abrir chamado .... já tentei e não deu certo ,... kkkk
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    tá, faz o seguinte, abre o ceapi001.r no bloco de notas, marca a opção word wrap, e cata tudo que tem procedure, algumas são procedures internas, outras são os pontos, é um começo, eu costumo fazer isso pra pegar definição de temp-tables em programas rp quando quero automatizar algum processo.
    reissobr curtiu isso.
  3. reissobr

    reissobr Membro Participativo

  4. reissobr

    reissobr Membro Participativo

    Pessoal,

    Compartilhando .... acabamos abrindo um chamado (pago) para esclarecer sobre os eventos, e recebemos o código abaixo.
    Código:
    {include/i-epc200.i1}
    
    def var l-erro as log no-undo.
    
    procedure piInicio-pi-valida-lote:
        def input         param p-ind-event as char no-undo.
        def input-output  param table for tt-epc.
    
        def var h-bo               as widget-handle no-undo.
        def var h-buffer           as widget-handle no-undo.
        def var h-query            as widget-handle no-undo.
    
        if p-ind-event = "Inicio-pi-valida-lote"
        then do:
            assign l-erro = no.
    
            /* neste evento, na tt-epc.val-parameter contem o handle da tt-movto pois o movimento ainda nao foi criado */
            find first tt-epc
                 where tt-epc.cod-event     = "Inicio-pi-valida-lote"        
                   and tt-epc.cod-parameter = 'tt-movto(handle)' no-error.
    
            if avail tt-epc then do:
                /* bloco de valida‡äes */
                /* o codigo abaixo serve apenas como exemplo, para ler o deposito */
                assign h-bo     = widget-handle(tt-epc.val-parameter).
                assign h-buffer = h-bo:default-buffer-handle.
    
                create query h-query.
                h-query:set-buffers(h-buffer).
                h-query:query-prepare('for each tt-movto').
                h-query:query-open().
                h-query:get-first().
    
                message h-buffer:buffer-field('cod-depos'):buffer-value view-as alert-box.
               
                h-query:query-close().
               
                if l-erro then
                    return "NOK":U.
                else
                    return "OK":U.
            end.
        end.
    end.
    
    procedure piEND-CEAPI001:
        def input         param p-ind-event as char no-undo.
        def input-output  param table for tt-epc.
    
        if p-ind-event = "END-CEAPI001"
        then do:
            find first tt-epc
                 where tt-epc.cod-event     = "END-CEAPI001"        
                   and tt-epc.cod-parameter = "MOVTO-ESTOQ-ROWID" no-error.
    
            /* neste evento, na tt-epc.val-parameter contem o rowid do movimento, que ja foi criado, mas pode ser desfeito */
    
            if avail tt-epc then do:
                if avail tt-epc then do:
                    /* bloco de valida‡äes */
                    for first movto-estoq no-lock
                        where rowid(movto-estoq) = to-rowid(tt-epc.val-parameter):
                   
                        message movto-estoq.cod-depos view-as alert-box.
                    end.
                   
                    /* se precisar desfazer neste ponto */
                    if l-erro then do:
                        create tt-epc.
                        assign tt-epc.cod-event     = "END-CEAPI001"
                               tt-epc.cod-parameter = "Retorno Erro"
                               tt-epc.val-parameter = "YES".
                    end.
                end.
            end.
        end.
    end.
    
  5. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    esse end-ceapi001 é interessante.
  6. reissobr

    reissobr Membro Participativo

    Pessoal, por enquanto acabei desistindo da UPC para a API, e acabei fazendo via trigger do banco.
    Excesso de atividades, prazo para entrega e um erro que acontece não na UPC, mas na API depois da execução do procedimento, levaram a esta decisão.

    Por enquanto, todos os programas testados estão funcionando com a trigger, a segurança do depósito é respeitada,

    O único senão é para o RE2001. Ela respeita a segurança do depósito, não atualiza a nota, mas no .TXT aparece a mensagem Nota Atualizada com erro.
    Para contornar isto, e aparecer algum alerta no .TXT que a nota não foi atualizada, somente com UPC para o RE2001, ou tem alguma outra forma ?
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página