MaLibDoFat – Libera Pedido de Vendas(MATA410) Automaticamente

Reading time: 2 minutes

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:

/*{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:
https://www.protheusadvpl.com.br
@?Inscreva-se no Canal ProtheusAdvpl:
https://www.youtube.com/protheusadvpl
@?Siga-nos no Instagram:
https://www.instagram.com/protheusadvpl
@?Conheça os Cursos e Formações do ProtheusAdvpl:
https://protheusadvpl.kpages.online/cursos-e-formacoes-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!

Comments are closed.