[RESOLVIDO] Aprovação Eletrônica - Pedidos de Compra

Discussão em 'EMS , HCM e Totvs 11' iniciado por cintiasottelli, Abril 1, 2016.

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

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Acredito que o cd1700 vc já tem feito né ? agora vc mexe no cd1701 onde vc indica o que o usuario aprova e o valor que ele aprova, no cd1700 vc indica a lotação do usuario, no cd1710 vc indica qual aprovador que é responsavel pela lotação, nesse, vc pode colocar mais de um aprovador e se esse é dependente ou não de outro, assim podem haver 2 aprovadores com mesmo poder, ou seja, aprova um ou outro, ou se vc colocar como dependente, o pedido aparece pra um aprovar e só aparece para o outro, quando o primeiro ter aprovado.
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    bem, aqui na empresa só o diretor que é aprovador, mas ele não abre pedido, então eu não tenho a situação de pedidos aprovador automaticamente, vc gerencia isso pelo limite no cd1701
  3. cintiasottelli

    cintiasottelli Membro Participativo

    Não sei explicar mas meu ambiente de teste não estava configurada como o do cliente... Fiz várias simulações porém, para o processo de aprovação eletrônicas (para quem é desenvolvedor) existem alguns cadastros chatos (http://tdn.totvs.com/pages/releaseview.action?pageId=5244730)

    Para a lógica de aprovação via sistema usei esse código e deu certo:

    Código:
    DEFINE TEMP-TABLE RowErrors NO-UNDO
        FIELD ErrorSequence    AS INTEGER
        FIELD ErrorNumber      AS INTEGER
        FIELD ErrorDescription AS CHARACTER
        FIELD ErrorParameters  AS CHARACTER
        FIELD ErrorType        AS CHARACTER
        FIELD ErrorHelp        AS CHARACTER
        FIELD ErrorSubType     AS CHARACTER.
    
    
    DEFINE VARIABLE c-numero-ordem AS CHARACTER   NO-UNDO.
    DEFINE VARIABLE i-moeda-lim    AS INTEGER     NO-UNDO.
    DEFINE VARIABLE i-tipo-moeda   AS INTEGER     NO-UNDO.
    DEFINE VARIABLE de-valor-doc   AS DECIMAL     NO-UNDO.
    DEFINE VARIABLE de-valor-lim   AS DECIMAL     NO-UNDO.
    DEFINE VARIABLE c-moeda-lim    AS CHARACTER   NO-UNDO.
    DEFINE VARIABLE c-tipo-moeda   AS CHARACTER   NO-UNDO.
    DEFINE VARIABLE l-pendente     AS LOGICAL     NO-UNDO.
    
       
    FOR EACH pedido-compr NO-LOCK:
        FOR EACH ordem-compra OF pedido-compr NO-LOCK:
    
            DISP ordem-compra.num-pedido
                 ordem-compra.numero-ordem.
    
            IF  NOT AVAIL param-compra THEN
            FIND FIRST param-compra  NO-LOCK NO-ERROR.             
            DISP param-compra.log-1 pedido-compr.emergencial.
            IF param-compra.log-1 AND AVAIL pedido-compr AND AVAIL ordem-compra THEN DO:
         
                IF  pedido-compr.emergencial THEN
                    RUN cdp/cdapi171.p (6,1,ROWID(ordem-compra)).
                ELSE
                    RUN cdp/cdapi171.p (4,1,ROWID(ordem-compra)).
               
                RUN retornaMsgAprovacao (ROWID(ordem-compra)).
            END.
    
        END.
    
    END.
    
    
    
    PROCEDURE retornaMsgAprovacao :
    /*------------------------------------------------------------------------------
      Purpose:    
      Parameters: ipar1 : prOrdem : rowid registro ordem-compra
      Notes:   
    ------------------------------------------------------------------------------*/
        def input param prOrdem as rowid no-undo.
    
        find first ordem-compra where rowid(ordem-compra) = prOrdem no-lock no-error.
    
        find first param-compra no-lock no-error.
    
        if param-compra.log-1 and (param-compra.int-1 = 2 or param-compra.int-1 = 3) then do:
    
            run cdp/cdapi174.p (4,
                                rowid(ordem-compra),
                                output i-moeda-lim,
                                output i-tipo-moeda,
                                output de-valor-doc,
                                output de-valor-lim).
            find moeda where moeda.mo-codigo = i-moeda-lim no-lock no-error.
            assign c-moeda-lim  = string(i-moeda-lim,"9") + " - ":U + moeda.descricao.
    
            case i-tipo-moeda:
                when 1 then do:
                    {utp/ut-liter.i (Usuário) * r}
                    assign c-tipo-moeda = return-value.
                end.
                when 2 then do:
                    {utp/ut-liter.i (Aprovador) * r}
                    assign c-tipo-moeda = return-value.
                end.
                when 3 then do:
                    {utp/ut-liter.i (Família) * r}
                    assign c-tipo-moeda = return-value.
                end.
                when 4 then do:
                    {utp/ut-liter.i (Mestre) * r}
                    assign c-tipo-moeda = return-value.
                end.
            end case.
    
            if  avail pedido-compr and pedido-compr.emergencial then
                run cdp/cdapi172.p (input 6, input rowid(ordem-compra), output l-pendente).
            else
                run cdp/cdapi172.p (input 4, input rowid(ordem-compra), output l-pendente).
    
            if l-pendente = no then do:
                run utp/ut-msgs.p (input "show",
                                   input 16725,
                                   input c-moeda-lim +
                                   "~~" +
                                   string(de-valor-lim,"zzz,zzz,zz9.99") +
                                   c-tipo-moeda +
                                   "~~" +
                                   string(de-valor-doc,"zzz,zzz,zz9.99")).
            end.
            else do:
                run utp/ut-msgs.p (input "show",
                                   input 16724,
                                   input c-moeda-lim +
                                   "~~" +
                                   string(de-valor-lim,"zzz,zzz,zz9.99") +
                                   c-tipo-moeda +
                                   "~~" +
                                   string(de-valor-doc,"zzz,zzz,zz9.99")).
            end.
        end.
        else do:
            run utp/ut-msgs.p (input "show",
                               input 16760,
                               input "").
        end.
    
        return "OK":U.
    END PROCEDURE.
    
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página