Adição de colunas em P.E. MVC (GTPA283)

Exemplo de P.E. em MVC para adição de coluna na Grid

Exemplo 1- Exemplo do P.E. GTPA283 para adição de coluna da tabela GIC:

#include "TOTVS.ch"
#include "FWMVCDEF.CH"

/*/{Protheus.doc} User Function GTPA283
    Ponto de Entrada MVC Rotina GTPA283 (Cadastro de Requisições)
    @type  Function
    @version 1
    @param 
    @return nil,null, sem retorno
    @example
    (examples)
    @see (links_or_references)    
/*/

User Function GTPA283()
    Local aParams    := ParamIXB //Parâmetros do Ponto de Entrada
    Local oObj       := Nil      //Objeto do formulário ou do modelo, conforme o caso
    Local cIDEvent   := Nil      //ID do local de execução do ponto de entrada
    Local cIDForm    := Nil      //ID do formulário
    Local oMdlGIC    := Nil      //Model GRIDGIC
    Local oView      := Nil      //View Ativa
    Local oStruct    := Nil      //Struct
    Local oStruGIC   := Nil      //Struct Padrão da Tabela GIC
    Local aFieldsGIC := {}       //Campos Padrões da Tabela GIC
    Local nPosCpo1   := 0        //Posição do Campo GIC_X_NOM
    Local nPosCpo2   := 0        //Posição do Campo GIC_X_RG
    Local lFieldOK   := .F.      //Campos já existem ?
    Local nI         := 0        //Controle de FOR
    Local lRet       := .T.      //Retorno

    //Verifica se possui os parâmetros
    If !(aParams == Nil)
        oObj       := aParams[01] //Objeto do formulário ou do modelo, conforme o caso
        cIDEvent   := aParams[02] //ID do local de execução do ponto de entrada
        cIDForm    := aParams[03] //ID do formulário

        //Verifica se é TudoOK
        If (AllTrim(cIDEvent) == "MODELPOS")
            oMdlGIC := oObj:GetModel('GRIDGIC')
            GIC->(DBSetOrder(01)) //GIC_FILIAL+GIC_CODIGO
            For nI := 01 To oMdlGIC:Length()
                oMdlGIC:GoLine(nI)
                If !(oMdlGIC:IsDeleted())
                    If Empty(oMdlGIC:GetValue('GIC_X_NOM'))
                        lRet := .F.
                        Help( ,, 'Help',"GIC_X_NOM", 'Campo GIC_X_NOM não preenchido na Linha: ' + cValToChar(nI), 1, 0 )
                    ElseIf Empty(oMdlGIC:GetValue('GIC_X_RG'))
                        lRet := .F.
                        Help( ,, 'Help',"GIC_X_RG", 'Campo GIC_X_RG não preenchido na Linha: ' + cValToChar(nI), 1, 0 )
                    EndIf
                EndIf
				
            Next nI
        //Verifica se é o Commit do Modelo
        ElseIf (AllTrim(cIDEvent) == "MODELCOMMITNTTS")
            oMdlGIC := oObj:GetModel('GRIDGIC')
            GIC->(DBSetOrder(01)) //GIC_FILIAL+GIC_CODIGO
            For nI := 01 To oMdlGIC:Length()
                oMdlGIC:GoLine(nI)
                If !(oMdlGIC:IsDeleted())
                    //Posicionar no Registro
                    If (GIC->(DBSeek(FWxFilial('GIC') + oMdlGIC:GetValue('GIC_CODIGO'))))
                        If (RecLock('GIC', .F.))
                            GIC->GIC_X_NOM := oMdlGIC:GetValue('GIC_X_NOM')
                            GIC->GIC_X_RG     := oMdlGIC:GetValue('GIC_X_RG')
                            GIC->(MsUnlock())
                        EndIf
                    EndIf
                EndIf
            Next nI
			
        //Verifica se está no Evento MODELPRE e se a View Ativa foi recuperada
        ElseIf (AllTrim(cIDEvent) == "MODELPRE" .AND. AllTrim(oObj:cID) == "GTPA283")
            oView := FWViewActive()
            If ValType(oView) == "O"
                //Pegando a Struct do Modelo
                oStruct := oView:GetViewStruct("GRIDGIC")
				
                //Verifica se os campos já existem
                lFieldOK := AScan(oStruct:GetFields(), {|x| AllTrim(x[01]) == "GIC_X_NOM"}) > 0
				
                //Adicionando campos
                If (! lFieldOK)
				
                    //GIC_X_NOM
                    oStruct:AddField(;
                        "GIC_X_NOM" ,; //<cIdField >
                        "D1" ,; //<cOrdem >
                        "Passageiro" ,; //<cTitulo >
                        "Nome do Passageiro" ,; //<cDescric >
                        Nil ,; //<aHelp >
                        "GET" ,; //<cType >
                        "@!" ,; //<cPicture >
                        Nil ,; //<bPictVar >
                        "" ,; //<cLookUp >
                        .T. ,; //<lCanChange >
                        "" ,; //<cFolder >
                        "" ,; //<cGroup >
                        {} ,; //<aComboValues >
                        0 ,; //<nMaxLenCombo >
                        "" ,; //<cIniBrow >
                        .F. ,; //<lVirtual >
                        "" ,; //<cPictVar >
                        .F. ,; //<lInsertLine >
                        0 ,; //<nWidth >
                        )
						
                    //GIC_X_RG
                    oStruct:AddField(;
                        "GIC_X_RG" ,; //<cIdField >
                        "D2" ,; //<cOrdem >
                        "RG" ,; //<cTitulo >
                        "Cedula de Identidade" ,; //<cDescric >
                        Nil ,; //<aHelp >
                        "GET" ,; //<cType >
                        "@!" ,; //<cPicture >
                        Nil ,; //<bPictVar >
                        "" ,; //<cLookUp >
                        .T. ,; //<lCanChange >
                        "" ,; //<cFolder >
                        "" ,; //<cGroup >
                        {} ,; //<aComboValues >
                        0 ,; //<nMaxLenCombo >
                        "" ,; //<cIniBrow >
                        .F. ,; //<lVirtual >
                        "" ,; //<cPictVar >
                        .F. ,; //<lInsertLine >
                        0 ,; //<nWidth >
                        )
						
                    lCtrl283 := .T. //Campos já inclusos
                EndIf
            EndIf
        EndIf
    EndIf
Return lRet

Observações:

  • Caso tenha dúvidas ou problemas com os exemplos, entre em contato;
  • Se tiver sugestões de rotinas, pode entrar em contato;
  • Exemplo enviado por Alison Lemes;