Ponto de Entrada OM200OK — Validação na Montagem de Carga (OMSA200)

Tempo de leitura: 2 minutos

No ecossistema Protheus, a eficiência logística depende de processos bem validados. Quando falamos de Montagem de Carga (OMSA200), muitas vezes é necessário aplicar regras de negócio específicas antes de confirmar a geração de uma carga. O Ponto de Entrada OM200OK é a ferramenta ideal para essa finalidade, permitindo interceptar o processo e decidir se a carga deve ou não ser montada, um conceito fundamental em Pontos de Entrada.

 

Neste guia objetivo, você aprenderá como implementar o OM200OK para otimizar a operação no módulo Gestão de Distribuição (SIGAOMS).

 

🚀 Quer evoluir no ADVPL de verdade?

Receba conteúdos práticos, códigos prontos e dicas que você 

 não aprende na documentação oficial

✔ Funções essenciais do ADVPL
✔ Exemplos reais usados no Protheus
✔ Dicas de debug e performance

🔐 Seu email está seguro. Sem spam.

 

O que é o Ponto de Entrada OM200OK?

O OM200OK é executado na rotina de Montagem de Carga (OMSA200) logo após a seleção dos pedidos e antes da efetivação da carga. Sua principal função é retornar um valor lógico:

Caso retorne True(.T.) o processo da montagem da carga será executado normalmente, caso retorne False(.F.) não será montado a carga.

Ele recebe como parâmetro um array (PARAMIXB[1]) contendo os pedidos de venda selecionados pelo usuário, permitindo validações detalhadas item a item.

/*
www.protheusadvpl.com.br
Ponto de Entrada executado antes da montagem da carga


Autor:Adilio Costa
Data:03/05/2018

*/

#Include "Protheus.ch"
#Include "TopConn.ch"
#Define QUE_LIN  Chr(13)+Chr(10)

User Function OM200OK()
	Local aPedidos := PARAMIXB[01]
	Local aSelPed := {}
	Local cMens := "O(s) seguinte(s) pedido(s) vai(ão) ser(em) entregue(s) na fábrica:"+QUE_LIN
	Local nNum := 0
	Local nRet
	Local lRet := .T.
	Local lCont1 := .T.
	Local lCont2 := .F.

	For nNum := 1 To Len(aPedidos)
		nRet := POSICIONE("SC5",1,xFilial("SC5")+aPedidos[nNum][5],"C5_YRETIRA")
		If(nRet == "P")
			lCont1 := .F.
			aadd(aSelPed,aPedidos[nNum][5])
		Else
			lCont2 := .T.
		EndIf
	Next

	If(!lCont1 .AND. lCont2)

		if( len(aSelPed)>0 )

			For nNum := 1 To Len(aSelPed)
				if(nNum == 5)
					cMens += QUE_LIN
				EndIf
				cMens += aSelPed[nNUM]
				if((nNum+1) <= Len(aSelPed))
					cMens += ","
				EndIf
			Next

			cMens += QUE_LIN
			cMens += "Deseja Continuar?"
			lRet := MsgYesNo(cMens,"Atenção!")
		EndIf
	Endif
Return lRet

 

Domine a Customização Avançada no Protheus

Para dominar este conceito em cenários complexos, como a integração com roteirizadores externos, cálculos de cubagem customizados e o uso de TLPP para APIs de logística, conheça o Portal ProtheusAdvpl. Lá, exploramos a fundo a arquitetura de customização e as melhores práticas de desenvolvimento.

 

Conclusão

O uso estratégico de Pontos de Entrada como o OM200OK transforma o Protheus em uma ferramenta muito mais aderente às particularidades do seu negócio. Ao validar a montagem de carga de forma automática, você reduz erros operacionais e garante que as regras de distribuição sejam seguidas à risca.

 

Se você deseja aprimorar suas habilidades de codificação, confira nossos cursos de TDS VSCode e Programação ADVPL I.

 

Links de referência(s):

 

Conteúdos relacionados

 
🚀 Quer evoluir no ADVPL de verdade?

Receba conteúdos práticos, códigos prontos e dicas que você 

 não aprende na documentação oficial

✔ Funções essenciais do ADVPL
✔ Exemplos reais usados no Protheus
✔ Dicas de debug e performance

🔐 Seu email está seguro. Sem spam.
 
 
🚀 Quer dominar o Protheus de verdade?
Entre para o ProtheusAdvpl e receba conteúdos exclusivos sobre desenvolvimento, infraestrutura, módulos e carreira no Protheus

✔ Conteúdos organizados por categorias (Programação, Framework, Backoffice e RH)
✔ Dicas práticas usadas no dia a dia do Protheus
✔ Acesso a materiais, post e atualizações do Blog
🔐 Seu email está seguro. Sem spam. Só conteúdo profissional.