Controle de Alteração de Dados via MVC

Boa noite!

Estou começando a usar o MVC no Protheus atualmente e estou com algumas dúvidas de como posso realizar algumas validações. Por exemplo:

Static Function ModelDef
Local oModel     := Nil
Local oStruHead    := FwFormStruct(1,'ZF1')
Local oStruGrid := FwFormStruct(1,'ZD1')

    //Monta o modelo principal
    oModel    := MpFormModel():New('TRCMVC',/*PreValidacao*/,/*Validação*/,{|oModel| fCommit(oModel)})
    oModel:SetDescription(cCadastro)    

    //Monta os dados do cabeçalho
    oModel:AddFields('ModelHead',,oStruHead)
    oModel:SetPrimaryKey({'ZF1_FILIAL','ZF1_ID'})

    oModel:GetModel('ModelHead'):SetDescription('Cabecalho')

    //Monta os dados dos itens
    oModel:AddGrid('ModelGrid','ModelHead',oStruGrid,,{|oGrid| fLinOK(oGrid)},/*bPreGrid*/,/*bProsGrid*/)
    oModel:SetRelation('ModelGrid',{ {'ZD1_FILIAL','ZF1_FILIAL'},{'ZD1_FK','ZF1_ID'} }, ZD1->(IndexKey(1)) )

    oModel:GetModel('ModelGrid'):SetDescription('Itens')        
    oModel:GetModel('ModelGrid'):SetDelAllLine(.T.)
    oModel:GetModel('ModelGrid'):SetOptional(.F.)    

Return(oModel)

Static Function ViewDef
Local oView        := Nil
Local oModel    := FwLoadModel('ELFATA20') 
Local oStruHead    := FwFormStruct(2,'ZF1')
Local oStruGrid := FwFormStruct(2,'ZD1')

    //Não exibe o folder visual caso algum campo esteja inserido em um
    oStruHead:SetNoFolder()

    oView:= FwFormView():New() 
    oView:SetModel(oModel)              

    //Crio o cabeçalho e os grids de acordo com o modelo
    oView:AddField('ViewHead', oStruHead, 'ModelHead')
    oView:AddGrid ('ViewGrid', oStruGrid, 'ModelGrid')

    //Crio uma layer com 30% da tela e outra com 70% da tela, similar a FwLayer
    oView:CreateHorizontalBox('MAIN',30)
    oView:CreateHorizontalBox('GRID',70)

    //Informo os devidos títulos das telas
    oView:EnableTitleView('ViewHead','Informações do Pedido de Troca')
    oView:EnableTitleView('ViewGrid','Produtos do Pedido de Troca')

    //Informo a porcentagem da tela que cada view deve ocupar
    oView:SetOwnerView('ViewHead','MAIN')
    oView:SetOwnerView('ViewGrid','GRID')

Return(oView)

Na Tabela ZF1, possuo um campo chamado ZF1_STATUS que diz qual é o status do pedido de troca. Caso este campo estiver com o conteúdo maior ou igual a 2, eu não posso permitir a edição nem das informações do cabeçalho e nem das informações do grid. Ou o cadastro deveria abrir como apenas visualização, ou emitir um Help informando que não pode ser alterado. Como posso estar criando esta validação?

Além disso, suponhamos que eu tenha os campos ZF1_CODCLI e ZF1_LOJCLI. Eles devem ser habilitados para uma inclusão, mas não para uma alteração. Como posso realizar esse ajuste?

Perdão se for uma dúvida meio boba, mas é que encontrei poucos conteúdos claros na internet.

Agradeço desde já pela atenção.

compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags protheus mvc ou faça a sua própria pergunta.