MaLibDoFat – Libera Pedido de Vendas(MATA410) Automaticamente

Tempo de leitura: 2 minutos

Olá, no post de hoje iremos falar da documentação e sintaxe da função MaLibDoFat em ADVPL.

A função MaLibDoFat é uma função interna da TOTVS utilizada para liberação de Pedido de Vendas(MATA410) automaticamente no TOTVS Protheus.

Para que possamos executar essa função precisamos passamos algumas informações relacionadas ao pedido vendas que desejamos liberar conforme a sintaxe que iremos ver mais a frente.

 

Sintate:

MaLibDoFat(nRegSC6,nQtdaLib,lCredito,lEstoque,lAvCred,lAvEst,lLibPar,lTrfLocal)

 

Parâmetro(s):

Retorno:

——-

Exemplo da função MaLibDoFat em ADVPL:

Veja o código de exemplo:
/*{Protheus.doc} User Function fCToD
(Essa função tem por finalidade mostrar a função CToD em ADVPL)
@?type  Function
@?author Adilio Costa
@?since 24/04/2024
@?version 1.0
@?Inscreva-se no Blog ProtheusAdvpl:
@?Inscreva-se no Canal ProtheusAdvpl:
@?Siga-nos no Instagram:
@?Conheça os Cursos e Formações do ProtheusAdvpl:
 
|Se esse conteúdo foi útil pra você nos ajude divulgando
ele e nossas redes sociais!!|
 
Plataforma:Portal ProtheusAdvpl
Módulo 7:ADVPL III
Aula:7.63.1 - [Protheus-Programação/ADVPL III/Funções, Classes e Variáveis Públicas] - Função MaLibDoFat
*/
 
User Function fMaLibFt(nNumPed)
    Local aArea     := FWGetArea()
    Local cPedido   := nNumPed
 
    DBSelectArea("SC5")
    SC5->(DBSetOrder(1)) // C5_FILIAL + C5_NUM
    DBSelectArea("SC6")
    SC6->(DBSetOrder(1)) // C6_FILIAL + C6_NUM + C6_ITEM + C6_PRODUTO
    DBSelectArea("SC9")
    SC9->(DBSetOrder(1)) // C9_FILIAL + C9_PEDIDO + C9_ITEM + C9_SEQUEN + C9_PRODUTO + C9_BLEST + C9_BLCRED
 
    //Somente se encontrar o pedido e ele não tiver tido nota emitida ainda
    If SC5->(MsSeek(FWxFilial("SC5") + cPedido)) .And. Empty(SC5->C5_NOTA)
        SC6->(DBGoTop())
        SC6->( MsSeek( SC5->C5_FILIAL + SC5->C5_NUM ) )
 
        //Estorna as liberações
        While ! SC6->(EoF()) .And. SC6->C6_FILIAL = SC5->C5_FILIAL .And. SC6->C6_NUM == SC5->C5_NUM
            //Posiciona na liberação do item do pedido e estorna a liberação
            SC9->(DBSeek(FWxFilial('SC9')+SC6->C6_NUM+SC6->C6_ITEM))
            While  ! SC9->(EoF()) .And. SC9->(C9_FILIAL+C9_PEDIDO+C9_ITEM) == FWxFilial('SC9')+SC6->(C6_NUM+C6_ITEM)
                SC9->(a460Estorna(.T.))
                SC9->(DBSkip())
            EndDo
 
            SC6->(DBSkip())
        EndDo
 
        //Define que o pedido foi liberado
        RecLock("SC5", .F.)
        SC5->C5_LIBEROK := 'S'
        SC5->(MsUnlock())
 
        SC6->(DBGoTop())
        SC6->( MsSeek( SC5->C5_FILIAL + SC5->C5_NUM ) )
        While !SC6->(Eof()) .And. SC5->C5_NUM == SC6->C6_NUM
 
            //MaLibDoFat(RecSC6,nQtdaLib,lCredito,lEstoque,lAvCred,lAvEst,lLibPar,lTrfLocal)
            MaLibDoFat(SC6->(RecNo()),SC6->C6_QTDVEN,,,.T.,.T.,.F.,.F.)
            SC6->(DBSkip())
        EndDo
    EndIf
 
    FWRestArea(aArea)
Return

Esse isso ai, finalizamos mais um post aqui no Blog ProtheusAdvpl, deixe abaixo seu comentário do que achou do post e dê dicas e sugestões de novos conteúdos. Grande abraço e fica com Deus.

Receba as últimas atualizações do ProtheusAdvpl
Deixe seu melhor email
Nós respeitamos sua privacidade.

4 Comentários


  1. Haing read this I thoughtt it waas ery informative.
    I appreciate yyou fining the ttime andd efrort to put
    thiss article together. I once again find myself spnding wway tooo much
    time boyh readjng and postting comments. Buut so what, it waas still worthwhile!


  2. Goood info. Lucky mee I came across yoir sige by chance (stumbleupon).

    I have boo marked iit ffor later!

Comentários encerrados.