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.