Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Ponto de entrada padrão MVC

, após confirmação de tela. 

Características do Requisito

Linha de Produto:

Microsiga Protheus

Segmento:

Manufatura

Módulo:

SIGAMNT - Manutenção de Ativos e Gestão de Frotas

Rotina:

Rotina

Nome Técnico

MNTA080

Cadastro de Bens

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, 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 e MODELCANCEL
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.

Utilização de ponto de entrada após confirmação da tela (commit), com utilização do identificar 'MODELPOS'. 

Procedimento para Utilização

  1. Entrar no modulo de Manutenção de Ativos e Gestão de Frotas(SIGAMNT).
  2. 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:

Nome

Tipo

Descrição

Obrigatório

 xRet

AleatórioIndefinido

Retorno do ponto de entrada.

Sim

 

Bloco de código
languagejava
titleExemplo Ponto de Entrada Padrão MVC
linenumberstrue
collapsetrue
#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.
Local cMsg     := ''

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

    ElseIf cIdPonto == 'MODELCANCEL' //Botão cancelar

		cMsg := 'Chamada no Botão Cancelar (MODELCANCEL).' + CRLF + 'Deseja Realmente Sair ?'
            
        If !( xRet := ApMsgYesNo( cMsg ) )
        	Help( ,, 'Help',, 'O MODELCANCEL retornou .F.', 1, 0 )
		EndIf

    EndIf

EndIf

Return xRet //Retorno do ponto de entrada.