Exemplo do Ponto de Entrada MATA070.
Exemplo do Ponto de Entrada:
//Bibliotecas
#Include "Protheus.ch"
/*---------------------------------------------------------------------------------------------------------------------------*
| P.E.: MATA070 |
| Desc: Ponto de entrada MVC no cadastro de Bancos |
| Obs.: Ao criar um P.E. em MVC com o mesmo nome do ModelDef, deixe o nome do prw com outro nome, por exemplo, |
| MATAXXX_pe.prw |
| Ref.: http://tdn.totvs.com/display/public/mp/Pontos+de+Entrada+para+fontes+Advpl+desenvolvidos+utilizando+o+conceito+MVC |
*---------------------------------------------------------------------------------------------------------------------------*/
User Function MATA070()
Local aParam := PARAMIXB
Local xRet := .T.
Local oObj := Nil
Local cIdPonto := ''
Local cIdModel := ''
Local nOper := 0
Local cCampo := ''
Local cTipo := ''
//Se tiver parâmetros
If aParam <> NIL
ConOut("> "+aParam[2])
//Pega informações dos parâmetros
oObj := aParam[1]
cIdPonto := aParam[2]
cIdModel := aParam[3]
//Valida a abertura da tela
If cIdPonto == "MODELVLDACTIVE"
nOper := oObj:nOperation
//Se for Exclusão, não permite abrir a tela
If nOper == 5
xRet := .F.
EndIf
//Pré configurações do Modelo de Dados
ElseIf cIdPonto == "MODELPRE"
xRet := .T.
//Pré configurações do Formulário de Dados
ElseIf cIdPonto == "FORMPRE"
nOper := oObj:GetModel(cIdPonto):nOperation
cTipo := aParam[4]
cCampo := aParam[5]
//Se for Alteração
If nOper == 4
//Não permite alteração dos campos chave
If cTipo == "CANSETVALUE" .And. Alltrim(cCampo) $ ("A6_COD.A6_AGENCIA.A6_NUMCON")
xRet := .F.
EndIf
EndIf
//Adição de opções no Ações Relacionadas dentro da tela
ElseIf cIdPonto == 'BUTTONBAR'
xRet := {}
aAdd(xRet, {"* Titulo 1", "", {|| Alert("Botão 1")}, "Tooltip 1"})
aAdd(xRet, {"* Titulo 2", "", {|| Alert("Botão 2")}, "Tooltip 2"})
aAdd(xRet, {"* Titulo 3", "", {|| Alert("Botão 3")}, "Tooltip 3"})
//Pós configurações do Formulário
ElseIf cIdPonto == 'FORMPOS'
xRet := .T.
//Validação ao clicar no Botão Confirmar
ElseIf cIdPonto == 'MODELPOS'
//Se o campo de contato estiver em branco, não permite prosseguir
If Empty(M->A6_CONTATO)
Aviso('Atenção', 'Por favor, informe um Contato!', {'OK'}, 03)
xRet := .F.
EndIf
//Pré validações do Commit
ElseIf cIdPonto == 'FORMCOMMITTTSPRE'
//Pós validações do Commit
ElseIf cIdPonto == 'FORMCOMMITTTSPOS'
//Commit das operações (antes da gravação)
ElseIf cIdPonto == 'MODELCOMMITTTS'
//Commit das operações (após a gravação)
ElseIf cIdPonto == 'MODELCOMMITNTTS'
nOper := oObj:nOperation
//Se for inclusão, mostra mensagem de sucesso
If nOper == 3
Aviso('Atenção', 'Banco criado com sucesso!', {'OK'}, 03)
EndIf
EndIf
EndIf
Return xRet
Observações:
– Caso tenha dúvidas ou problemas com os exemplos, entre em contato;
– Se tiver sugestões de rotinas, pode entrar em contato;
– Para pontos de entrada em MVC nesse sentido, crie um prw com outro nome, como por exemplo, MATA070_pe.prw;