Trabalhando com P.E. CUSTOMERVENDOR() - Cadastro de Fornecedores


A pedido de alguns leitores do blog, estou postando um exemplo do uso de pontos de entrada no cadastro de Fornecedores (MVC)

Mas como utilizar?

Para fazer funcionar, precisaremos saber que a função que deveremos criar se chama CUSTOMERVENDOR().

Postarei um exemplo bem simples, irei validar se o fornecedor for brasileiro, o CNPJ será obrigatório.

#include 'protheus.ch'
#include 'parmtype.ch'

User Function CUSTOMERVENDOR()
    Local aParam := PARAMIXB
    Local xRet := .T.
    Local oObj := ""
    Local cIdPonto := ""
    Local cIdModel := ""
    Local lIsGrid := .F.
    Local nLinha := 0
    Local nQtdLinhas := 0
    Local cMsg := ""
 
    If aParam <> NIL
        oObj := aParam[1]
        cIdPonto := aParam[2]
        cIdModel := aParam[3]
        lIsGrid := (Len(aParam) > 3)
 
        If cIdPonto == "MODELPOS"
            /*
            cMsg := "Chamada na validação total do modelo." + CRLF
            cMsg += "ID " + cIdModel + CRLF
 
            xRet := ApMsgYesNo(cMsg + "Continua?")
            */

            If (M->A2_EST=="EX") .AND. (ALLTRIM(M->A2_CGC)<>"")
            	Help(NIL, 1, "ATENÇÃO", NIL, "O campo CNPJ/CGC está preenchido!", 1, 1, NIL, NIL, NIL, NIL, NIL, {"Limpar o CNPJ/CGC para fornecedores internacionais!"})
				xRet	:=	.F.
			Elseif (ALLTRIM(M->A2_CGC)=="") .AND. (M->A2_EST<>"EX")
            	Help(NIL, 1, "ATENÇÃO", NIL, "O campo CNPJ/CGC está preenchido!", 1, 1, NIL, NIL, NIL, NIL, NIL, {"Informe o CNPJ/CGC!"})
				xRet	:=	.F.
			Endif	
		
            
        ElseIf cIdPonto == "FORMPOS"
            
            cMsg := "Chamada na validação total do formulário." + CRLF
            cMsg += "ID " + cIdModel + CRLF
 
            If lIsGrid
                cMsg += "É um FORMGRID com " + Alltrim(Str(nQtdLinhas)) + " linha(s)." + CRLF
                cMsg += "Posicionado na linha " + Alltrim(Str(nLinha)) + CRLF
            Else
                cMsg += "É um FORMFIELD" + CRLF
            EndIf
 
            xRet := ApMsgYesNo(cMsg + "Continua?")
            

           

        ElseIf cIdPonto == "FORMLINEPRE"
            
            If aParam[5] == "DELETE"
                cMsg := "Chamada na pré validação da linha do formulário. " + CRLF
                cMsg += "Onde esta se tentando deletar a linha" + CRLF
                cMsg += "ID " + cIdModel + CRLF
                cMsg += "É um FORMGRID com " + Alltrim(Str(nQtdLinhas)) + " linha(s)." + CRLF
                cMsg += "Posicionado na linha " + Alltrim(Str(nLinha)) + CRLF
                xRet := ApMsgYesNo(cMsg + " Continua?")
            EndIf
            
        ElseIf cIdPonto == "FORMLINEPOS"
            
            cMsg := "Chamada na validação da linha do formulário." + CRLF
            cMsg += "ID " + cIdModel + CRLF
            cMsg += "É um FORMGRID com " + Alltrim(Str(nQtdLinhas)) + " linha(s)." + CRLF
            cMsg += "Posicionado na linha " + Alltrim(Str(nLinha)) + CRLF
            xRet := ApMsgYesNo(cMsg + " Continua?")
            
        ElseIf cIdPonto == "MODELCOMMITTTS"
           ApMsgInfo("Chamada após a gravação total do modelo e dentro da transação.")
 
        ElseIf cIdPonto == "MODELCOMMITNTTS"
            ApMsgInfo("Chamada após a gravação total do modelo e fora da transação.")
 
        ElseIf cIdPonto == "FORMCOMMITTTSPRE"
            ApMsgInfo("Chamada após a gravação da tabela do formulário.")
 
        ElseIf cIdPonto == "FORMCOMMITTTSPOS"
            ApMsgInfo("Chamada após a gravação da tabela do formulário.")
 
 
        ElseIf cIdPonto == "MODELCANCEL"
            xRet := ApMsgYesNo("Deseja realmente sair?")
        ElseIf cIdPonto == "BUTTONBAR"
            xRet := {{"NOVO", "NOVO", {||u_BOTAO()}}}
        EndIf
    EndIf
Return xRet