Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Alteração de título

Como utilizar os pontos de entrada da rotina MATA010 na P12

Produto:

Protheus ADVPL

Versões:

P12

Ocorrência:

Pontos de entrada M010ALT, A010TOK, M010INC, M010VLD, (...), não estão sendo chamados na P12

Passo a passo:

DESCRIÇÃO

Após a conversão de rotinas antigas para o novo padrão de desenvolvimento MVC, não é mais possível utilizar pontos de entrada antes disponíveis nestas rotinas, da forma que vinham sendo utilizados. Desta forma o presente documento tem como objetivo apresentar uma nova forma de utilização destes pontos de entrada no padrão MVC para a nova rotina de Cadastro de Produtos (MATA010).


COMO VERIFICAR?

Verifique no dicionário de dados se na tabela SX3 consta a tabela G3Q, caso conste, sua rotina já está no padrão MVC.


COMO FUNCIONA?

A partir de agora, você terá todos os pontos de entradas concentrados em apenas um único arquivo. Arquivo o qual, terá acesso a todos os pontos de entrada disponíveis no padrão MVC.

No momento em que o ponto entrada compilado for chamado, será possível receber o id do modelo de dados,e este id será uma informação do tipo caractere que será passada da lib para a variável PARAMIXB e irá variar de acordo com o momento, assim sendo será possível a partir dela, detectar em que momento da rotina estamos.


COMO TESTAR?

Compile uma função de usuário com o id do modelo de dados da rotina MATA010, neste caso o id será ITEM, receba o valor de PARAMIXB e retorne uma variável lógica recebendo .T. conforme exemplo abaixo:

Bloco de código
linenumberstrue
#include "protheus.ch"
#include "parmtype.ch"

User Function ITEM()
    Local aParam := PARAMIXB
    Local xRet := .T.
	
	If aParam <> NIL
        oObj := aParam[1]
        cIdPonto := aParam[2]
        cIdModel := aParam[3]
        lIsGrid := (Len(aParam) > 3)
	EndIf
Return xRet

Com este exemplo, uma vez colocado um ponto de entrada na linha 8, será possível verificar todos os pontos de entrada disponíveis por meio do modelo MVC na rotina e seus respectivos ids.

COMO MIGRAR OS PONTOS ANTIGOS PARA OS NOVOS?

Supondo que anteriormente fosse utilizado o ponto A010TOK para a validação total dos dados inseridos pelo usuário, e também foi identificado que o id FORMPOS é chamado após a confirmação do processo e o mesmo tem retorno lógico, iremos retirar os dados de validação de um e aplicar ao outro da seguinte forma:


FONTE: A010TOK.prw

Bloco de código
linenumberstrue
#include "protheus.ch"
#include "parmtype.ch"

User Function A010TOK()
	Local lRet := .T.
	Local cB1_TIPO := M->B1_TIPO
	
	If cB1_TIPO == "PA"
		lRet := .F.
	EndIf
Return lRet


FONTE: MT010_MVC.prw

Bloco de código
linenumberstrue
#include "protheus.ch"
#include "parmtype.ch"

User Function ITEM()
    Local aParam := PARAMIXB
	Local oModel := FwModelActive()
	Local cB1_TIPO := ""
    Local xRet := .T.
		
	// VERIFICA SE APARAM NÃO ESTÁ NULO
	If aParam <> NIL
        oObj := aParam[1]
        cIdPonto := aParam[2]
        cIdModel := aParam[3]
        lIsGrid := (Len(aParam) > 3)
		
		//	VERIFICA SE O PONTO EM QUESTÃO É O FORMPOS
		If cIdPonto := "FORMPOS"
		
			// VERIFICA SE OMODEL NÃO ESTÁ NULO
			If oModel <> NIL
			
				cB1_TIPO := oModel:GetModel("SB1MASTER"):GetValue("B1_TIPO") // ATRIBUI VALOR A VARIÁVEL POR MEIO DO MODELO DE DADOS
				If cB1_TIPO == "PA"
					xRet := .F.
				EndIf
				
			EndIf
			
		EndIf
	
	EndIf
Return xRet


ADVPL ATUAL

O modelo MVC é um novo modo de codificar em ADVPL, assim sendo será necessária uma análise das documentações referente ao mesmo, para tal vide área de Observações para saber mais.

Observações:

Para saber mais:

• Arquitetura MVC acesse: ADVPL utilizando MVC

• Acessando o modelo de dados: MPFormModel

• Utilização de pontos de entrada no padrão MVC acesse: Pontos de Entrada para fontes ADVPL desenvolvidos utilizando o conceito MVC

• Pontos de entrada MVC: Ponto de Entrada Padrão do MVC

• Exemplo MATA010: Pontos de Entrada MVC MATA010 na P12