Rotina SFCA310 MVC

Na rotina SFCA310 dispatchlist não possui o campo Localização, na verdade ele usa a mesma tabela CZP que tem o campo mas não aparece em tela, sugestão da totvs é incluir o mesmo via fonte MVC, tentei montar o mesmo mas não consegui, alguem pode auxiliar?

#include “TOTVS.ch”
#include “FWMVCDEF.CH”
#Include ‘Protheus.ch’

//
/
/
User Function SFCA310()

Local aParam    := PARAMIXB
Local xRet      := .T.
Local oObj      := Nil
Local cIdPonto  := ''
Local cIdModel  := ''
Local nOper     := 0



    //Se Tiver Parametros
    if aParam <> Nil
        
    //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
        xRet    :={}
       addField("CZP_CDLC", "CZP_CDLC", "Localizacao", "Endereço", /*aHelp*/, "C")
        Endif  
Endif

return

Static Function ModelDef()
Local oModel := Nil

Local bCommit   := {|oModel| CommitLib(oModel) }

oModel := MPFormModel():New('SFCA310', /*bPreValidacao*/, /*bTudoOK*/, bCommit, /*bCancel*/)

omodel:addField("CZP_CDLC", "CZP_CDLC", "Localizacao", "Endereço", /*aHelp*/, "C")

Return oModel

Static Function ViewDef()

Local aAreaSX3    := SX3->(GetArea())
Local oView     := Nil
Local oModel    := FWLoadModel('SFCA310')


// criando a View
oView := FWFormView():New(SFCA310)
oView:SetModel(oModel)

 
omodel:addField("CZP_CDLC", "CZP_CDLC", "Localizacao", "Endereço", /*aHelp*/, "C")

RestArea(aAreaSX3)

Return oView

Oi boa tarde pode tentar assim:

User Function SFCA310()
Local oModel := Nil
Local oView := Nil
Local oController := Nil
// Instancia o MVC
oModel := SFCA310Model():New()
oView := SFCA310View():New()
oController := SFCA310Controller():New(oModel, oView)
// Adiciona o campo CZP_CDLC na interface (PosCfg)
oController:SetUserFunction(“PosCfg”, “U_AlteraLayoutSFCA310”)
// Adiciona a validação do campo antes de salvar (BeforeSave)
oController:SetUserFunction(“BeforeSave”, “U_ValidaCZP_CDLC”)
// Executa o MVC
Return oController:Activate()

User Function U_AlteraLayoutSFCA310(oObj)
Local oGrp := Nil
Local oFld := Nil
If oObj:IsMember(“oGrpMaster”) // Verifica se o grupo principal existe
oGrp := oObj:oGrpMaster
// Adiciona o campo CZP_CDLC no grupo de informações principais
oFld := oGrp:AddField(“CZP_CDLC”, “Código de Localização”)
oFld:cType := “C” // Tipo Caracter
oFld:nWidth := 10 // Tamanho
oFld:lRequired := .T. // Torna obrigatório
EndIf
Return

User Function U_ValidaCZP_CDLC(oObj)
Local cCodLocal := oObj:GetValue(“CZP_CDLC”)
If Empty(cCodLocal)
MsgAlert(“O campo Código de Localização é obrigatório!”)
Return .F.
EndIf
Return .T.

Obrigado pela ajuda @dilsoncastro
mas não deu certo, até alterei o tamanho do campo deixando o mesmo da SX3

CZP FICA na detail da rotina, troquei oGrpMaster por oGrpDetail
e tambem tentei AddGird ao invés de AddField
mas sem sucesso.

User Function SFCA310()

Local oModel := Nil

Local oView := Nil

Local oController := Nil

// Instancia o MVC

oModel := SFCA310Model():New()

oView := SFCA310View():New()

oController := SFCA310Controller():New(oModel, oView)

// Adiciona o campo CZP_CDLC na interface (PosCfg)

oController:SetUserFunction(“PosCfg”, “U_AlteraLayoutSFCA310”)

// Adiciona a validação do campo antes de salvar (BeforeSave)

oController:SetUserFunction(“BeforeSave”, “U_ValidaCZP_CDLC”)

// Executa o MVC

Return oController:Activate()

User Function U_AlteraLayoutSFCA310(oObj)

Local oGrp := Nil

Local oFld := Nil

If oObj:IsMember(“oGrpDetail”) // Verifica se o grupo principal existe

oGrp := oObj:oGrpDetail

// Adiciona o campo CZP_CDLC no grupo de informações principais

oFld := oGrp:AddGrid(“CZP_CDLC”, “Código de Localização”)

oFld:cType := “C” // Tipo Caracter

oFld:nWidth := 20 // Tamanho

oFld:lRequired := .T. // Torna obrigatório

EndIf

Return

User Function U_ValidaCZP_CDLC(oObj)

Local cCodLocal := oObj:GetValue(“CZP_CDLC”)

If Empty(cCodLocal)

MsgAlert(“O campo Código de Localização é obrigatório!”)

Return .F.

EndIf

Return .T.