Histórico da Página
Ponto de entrada padrão MVC
Características do Requisito
Linha de Produto: | Microsiga Protheus | ||||
Segmento: | Manufatura | ||||
Módulo: | SIGAMNT - Manutenção de Ativos e Gestão de Frotas | ||||
Rotina: |
| ||||
País(es): | Todos | ||||
Banco(s) de Dados: | Todos | ||||
Tabelas Utilizadas: | ST9 - Bens | ||||
Sistema(s) Operacional(is): | Windows e Linux |
Descrição
Nos fontes convencionais temos um "nome" para cada ponto de entrada criado, por exemplo, na rotina MNTA080– Bens, temos os pontos de entrada: MNTA080K, MNTA0804, etc.
Em MVC, não é desta forma. Em MVC criamos um único ponto de entrada e este é chamado em vários momentos dentro do fonte desenvolvido.
Este ponto de entrada único deve ser uma User Function e ter como nome o ID do Modelo de Dados (Model) do Fonte, como:
User Function MNTA080()
Local aParam := PARAMIXB
Local xRet := .T.
...
Return xRet
O ponto de entrada criado recebe via parâmetro (PARAMIXB) um vetor com informações referentes ao fonte. Estes parâmetros variam para cada situação, em comum todos eles tem os 3 primeiros elementos que são listados abaixo, no quadro seguinte existe a relação de parâmetros de cada ID:
Posições do array de parâmetros comuns a todos os IDs:
POS. | TIPO | DESCRIÇÃO |
1 | O | Objeto do formulário ou do modelo, conforme o caso |
2 | C | ID do local de execução do ponto de entrada |
3 | C | ID do formulário |
Como já foi dito, o ponto de entrada é chamado em vários momentos dentro do fonte, na 2ª posição da estrutura do vetor é passado um ID que identifica qual é este momento. Ela pode ter como conteúdo:
ID | MOMENTO DE EXECUÇÃO DO PONTO DE ENTRADA |
MODELPRE | Antes da alteração de qualquer campo do modelo. Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso 2 C ID do local de execução do ponto de entrada 3 C ID do formulário Retorno: Requer um retorno lógico |
MODELPOS | Na validação total do modelo. Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso 2 C ID do local de execução do ponto de entrada 3 C ID do formulário Retorno: Requer um retorno lógico |
FORMPRE | Antes da alteração de qualquer campo do formulário. Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso 2 C ID do local de execução do ponto de entrada 3 C ID do formulário Retorno: Requer um retorno lógico |
FORMPOS | Na validação total do formulário. Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso 2 C ID do local de execução do ponto de entrada 3 C ID do formulário Retorno: Requer um retorno lógico |
FORMLINEPRE | Antes da alteração da linha do formulário FWFORMGRID. Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso 2 C ID do local de execução do ponto de entrada 3 C ID do formulário 4 N Número da Linha da FWFORMGRID 5 C Ação da FWFORMGRID 6 C Id do campo Retorno: Requer um retorno lógico |
FORMLINEPOS | Na validação total da linha do formulário FWFORMGRID. Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso 2 C ID do local de execução do ponto de entrada 3 C ID do formulário 4 N Número da Linha da FWFORMGRID Retorno: Requer um retorno lógico |
MODELCOMMITTTS | Após a gravação total do modelo e dentro da transação. Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso 2 C ID do local de execução do ponto de entrada 3 C ID do formulário Retorno: Não espera retorno |
MODELCOMMITNTTS | Após a gravação total do modelo e fora da transação. Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso 2 C ID do local de execução do ponto de entrada 3 C ID do formulário Retorno: Não espera retorno |
FORMCOMMITTTSPRE | Antes da gravação da tabela do formulário. Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso 2 C ID do local de execução do ponto de entrada 3 C ID do formulário 4 L Se .T. indica novo registro (Inclusão) se .F. registro já existente (Alteração / Exclusão) Retorno: Não espera retorno |
FORMCOMMITTTSPOS | Após a gravação da tabela do formulário. Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso 2 C ID do local de execução do ponto de entrada 3 C ID do formulário 4 L Se .T. indica novo registro (Inclusão) se .F. registro já existente (Alteração / Exclusão) Retorno: Não espera retorno |
FORMCANCEL | No cancelamento do botão. Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso 2 C ID do local de execução do ponto de entrada 3 C ID do formulário Retorno: Requer um retorno lógico |
BUTTONBAR | Para a inclusão de botões na ControlBar. Para criar os botões deve-se retornar um array bi-dimensional com a seguinte estrutura de cada item: 1 C Titulo para o botão 2 C Nome do Bitmap para exibição 3 B CodeBlock a ser executado 4 C ToolTip (Opcional) Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso 2 C ID do local de execução do ponto de entrada 3 C ID do formulário Retorno: Requer um array de retorno com estrutura pré definida. |
Procedimento para Utilização
- Entrar no modulo de Manutenção de Ativos e Gestão de Frotas(SIGAMNT).
- Em Atualizações > Controle de Oficina > Bens > Bens. Realizar a inclusão de um bem e verificar que será chamado o ponto de entrada padrão do MVC, após a confirmação da tela.
Ponto de Entrada
Descrição: | Ponto de entrada chamado no fonte MNTA080.prx, após a confirmação da tela. | ||||||||
Localização: | Atualizações \ Controle de Oficina \ Bens \ Bens | ||||||||
Programa Fonte: | MNTA080.prx | ||||||||
Função: | U_MNTA080 | ||||||||
Retorno: |
|
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#INCLUDE "MNTA080.CH" #INCLUDE "PROTHEUS.CH" #INCLUDE "FWMVCDEF.CH" //------------------------------------------------------------------------------ /*/{Protheus.doc} U_MNTA080 User Function MNTA080, para chamada dos pontos de entrada padrões do MVC. @obs Tratativa para os pontos entrada ExistBlock("MNTA080K") e ExistBlock("MNTA0804"). @author Guilherme Freudenburg @since 13/03/2018 @version P12 @return xRet - Valor de retorno do ponto de entrada. /*/ //------------------------------------------------------------------------------ User Function MNTA080() //Função responsável pela chamda dos pontos de entrada da rotina MNTA080 - Bens. Local aParam := PARAMIXB //Parâmetros passados pelo ponto de entrada. Local xRet := .T. //Retorno da função. Local oObj := '' //Objeto que receberá o modelo. Local cIdPonto := '' //Identificador da chamada do ponto de entrada. Local cIdModel := '' //Identificador do modelo utilizado. Local cModel := '' //Identifica o modelo utilizado e receberá o seu identificador. If aParam <> NIL //Identifica que foram enviado os parâmetros. oObj := aParam[1] //Modelo ativado. cIdPonto := aParam[2] //Determina o ponto de chamada. cIdModel := aParam[3] //Identificador do modelo. If cIdPonto == 'MODELPOS' //Pós-Valid cModel := cIdModel+'_'+"ST9" //Concatena o identificado do modelo com o identificador da tabela. If oObj:GetModel(cModel):HasField('T9_BARCODE') //Verifica se campo existe no modelo. If Empty(oObj:GetValue(cModel,'T9_BARCODE')) //Verifica se o campo foi preenchido. Help('',1,"PE MNTA080K e MNTA0804" ,,"Campo"+Space(1)+"T9_BARCODE"+Space(1)+; "não foi preenchido e é obrigatório.",2,0,,,,,,{"Preencha o campo T9_BARCODE"}) //Mensagem help que será apresentada em tela. xRet := .F. //Determina o retorno .F., barrando a gravação do modelo. EndIf EndIf EndIf EndIf Return xRet //Retorno do ponto de entrada. |