[RESOLVIDO] Saldo de Pedido

Discussão em 'EMS , HCM e Totvs 11' iniciado por Rogerio, Maio 23, 2016.

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

    Rogerio Moderator Moderador Equipe de Suporte

    Bom dia... Eu preciso desalocar o saldo de um embarque e voltar o saldo do pedido...

    Alguém saberia me dizer se existe uma API/BO para isso??? Ou uma forma de fazer isso via programa!!!!
    reissobr curtiu isso.
  2. cintiasottelli

    cintiasottelli Membro Participativo

    Sim,

    Seria +- Isso!

    h-api = eqapi300

    Código:
    PROCEDURE pi-desaloca-tudo :
    /*------------------------------------------------------------------------------
      Purpose:   
      Parameters:  <none>
      Notes:     
    ------------------------------------------------------------------------------*/
        def var i-sequen as int init 1 no-undo.
    
        session:set-wait-state('general').
    
        for each tt-ped-venda:
            delete tt-ped-venda.
        end.
    
        for each tt-it-pre-fat:
            delete tt-it-pre-fat.
        end.
    
        RUN pi-devolve-tt-it-pre-fat IN h_EQ0506b-b03 (OUTPUT TABLE tt-it-pre-fat-aux).
    
        for  each tt-it-pre-fat-aux,
            first ped-venda fields(nome-abrev nr-pedcli ind-fat-par) no-lock
            where ped-venda.nome-abrev = tt-it-pre-fat-aux.nome-abrev
              and ped-venda.nr-pedcli  = tt-it-pre-fat-aux.nr-pedcli:
    
            if  not ped-venda.ind-fat-par then do:
    
                find tt-ped-venda where
                     tt-ped-venda.nome-abrev = tt-it-pre-fat-aux.nome-abrev and
                     tt-ped-venda.nr-pedcli  = tt-it-pre-fat-aux.nr-pedcli no-error.
                if  not avail tt-ped-venda then do:
                    create tt-ped-venda.
                    assign tt-ped-venda.i-sequen     = i-sequen
                           tt-ped-venda.nome-abrev   = tt-it-pre-fat-aux.nome-abrev
                           tt-ped-venda.nr-pedcli    = tt-it-pre-fat-aux.nr-pedcli
                           tt-ped-venda.cdd-embarq   = de-cdd-embarq
                           tt-ped-venda.ind-oper     = 2
                           i-sequen                  = i-sequen + 1.
                end.
            end.
            else do:
                create tt-it-pre-fat.
                buffer-copy tt-it-pre-fat-aux to tt-it-pre-fat.
                assign tt-it-pre-fat.cdd-embarq   = de-cdd-embarq
                       tt-it-pre-fat.qt-a-alocar  = tt-it-pre-fat-aux.qt-alocada * -1
                       tt-it-pre-fat.i-sequen     = i-sequen
                       i-sequen                   = i-sequen + 1.
    
            end.
    
            delete tt-it-pre-fat-aux.
        end.
    
        run pi-recebe-tt-ped-venda  in h-api (input table tt-ped-venda).
        run pi-trata-tt-ped-venda   in h-api (input yes).
    
        run pi-recebe-tt-it-pre-fat in h-api (input table tt-it-pre-fat).
        run pi-trata-tt-it-pre-fat  in h-api (input no).
        run pi-devolve-tt-erro     in h-api (output table tt-erro).
    
        run pi-refresh            in h_EQ0506b-b01.       
        run pi-gera-tt-ped-ent    in h_EQ0506b-b02.
        run pi-gera-tt-it-pre-fat in h_EQ0506b-b03.
    
        session:set-wait-state('').
    
        if  can-find(first tt-erro) then do:
            RUN pi-sensitive (no).
            run cdp/cd0667.w (input table tt-erro).
            RUN pi-sensitive (yes).
        end.   
    
    END PROCEDURE.
  3. gdekbca

    gdekbca Sem Pontuação

    Desculpem-me ressuscitar o tópico, mas estou com uma dúvida semelhante.

    Hoje meu programa gera o embarque com vários itens corretamente, porém, se um item deste embarque não tem saldo suficiente, o embarque é criado mesmo assim e todo o saldo continua alocado.
    Alguém já fez uma rotina que se caso algum item não tenha saldo, apresente erro e faça um rollback desalocando o saldo e eliminando o embarque?
    reissobr curtiu isso.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página