Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Alterado layout

Pontos de Entrada MVC MATA010 na P12

Produto:

Protheus ADVPL

Versões:

P12

Ocorrência:

Pontos de entrada MVC da rotina MATA010 na P12

?

Ambiente:

P12

Passo a passo:

Na rotina MATA010 o ponto de entrada no Padrão MVC o nome da user function é ITEM que é o o ID do Modelo de Dados

Obs. o

O ID do modelo da dados da rotina MATA010 é ITEM, assim sendo, a assinatura da função de usuário deve ser User Function ITEM().

Obs.: O nome do arquivo.prw não poderá ser o mesmo da user function

Segue exemplo

#INCLUDE 'PROTHEUS.CH'

#INCLUDE 'FWMVCDEF.CH'

User Function ITEM()//Nome o ID do Modelo de Dados (Model) ou Nome da rotina

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 lIsGrid

// nQtdLinhas := oObj:GetQtdLine()

// nLinha := oObj:nLine

//EndIf

If cIdPonto == 'MODELPOS'

cMsg := 'Chamada na validação total do modelo.' + CRLF

cMsg += 'ID ' + cIdModel + CRLF

xRet := ApMsgYesNo( cMsg + 'Continua ?' )

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 pre 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 apos a gravação total do modelo e dentro da transação.')

ElseIf cIdPonto == 'MODELCOMMITNTTS'

ApMsgInfo('Chamada apos a gravação total do modelo e fora da transação.')

ElseIf cIdPonto == 'FORMCOMMITTTSPRE'

ApMsgInfo('Chamada apos a gravação da tabela do formulário.')

ElseIf cIdPonto == 'FORMCOMMITTTSPOS'

ApMsgInfo('Chamada apos a gravação da tabela do formulário.')

ElseIf cIdPonto == 'MODELCANCEL'

cMsg := 'Deseja Realmente Sair ?'

xRet := ApMsgYesNo( cMsg )

ElseIf cIdPonto == 'BUTTONBAR'

xRet := { {'Salvar', 'SALVAR', { || u_TESTEX() } } }

EndIf

EndIf

Return xRet

User Function TESTEX()

ALert ("passou")

Return

Mais Detalhes

.


Exemplo:

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

User Function ITEM()
    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?")

        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"
            cMsg := "Deseja realmente sair?"
            xRet := ApMsgYesNo(cMsg)

        ElseIf cIdPonto == "BUTTONBAR"
            xRet := {{"Salvar", "SALVAR", {||u_TSMT010()}}}
        EndIf
    EndIf
Return xRet

User Function TSMT010()
    Alert("Buttonbar")
Return NIL

Mais detalhes:

Todos os pontos de entrada terão seu legado mantido, salvo os pontos que consideramos como pontos padrões

como

(ex: validação após a gravação e botões que serão substituídos), os pontos que trazem conteúdo do sistema por

paramixb

PARAMIXB, esses serão mantidos com

sua

suas particularidades.

Observações:

  • http://tdn.totvs.com/display/public/PROT/ADV0007_FUN_ACOLS_MVC
  • http://tdn.totvs.com/display/public/PROT/Fontes+em+MVC