Bom dia,
Gostaria de saber se é possivel criar um MVC modelo X porém o Filho e Neto serem a mesma tabela.
No processo que estamos criando, essa tabela vai se repetir muito e confundir os usuarios. Portanto minha ideia era criar o modelo filho com os dois campos que vão se repetir e relacionar o ultimo campo no modelo neto.
Obs: a tabela em questão é customizada e possui apenas três campo (ZL5_IDPRC, ZL5_FILPRC, ZL5_GAPROV e ZL5_CC)
Sendo que:
ZL5_IDPRC → Vai ser preenchido no modelo filho pelo modelo master
ZL5_FILPRC e ZL5_GAPROV → Preenchido pelo usuario no modelo filho
ZL5_CC → Preenchido pelo usuario no modelo neto para cada ZL5_FILPRC e ZL5_GAPROV
Tentei fazer da forma tradicional, porém se o modelo ZL5NETO possuir mais de uma linha o protheus cai com o seguinte erro argument #0 error, expected C->A, function fieldpos on EXFORMCOMMIT(PROTHEUSFUNCTIONMVC.PRX) 16/01/2026 16:54:18 line : 2170
Segue exemplo
oModel := MPFormModel():New( “MODEL_ZL1”, bPre, bPos, bCommit, bCancel )
oStructZl1 := FWFormStruct( 1, “ZL1” )
oStructZl5Filho := FWFormStruct( 1, “ZL5”, { |cCampo| Alltrim(cCampo) $ “ZL5_FILPRC;ZL5_GAPROV” } )
oStructZl5Neto := FWFormStruct( 1, “ZL5”, { |cCampo| Alltrim(cCampo) $ “ZL5_CC” } )
oModel:AddFields( “ZL1MASTER”, /Owner/ , oStructZl1, /bPre/ , /bPos/ , /bLoad/ )
oModel:AddGrid( ‘ZL5FILHO’ , “ZL1MASTER”, oStructZl5Filho )
oModel:AddGrid( ‘ZL5NETO’ , “ZL5FILHO”, oStructZl5Neto )
aAdd(aRelZl5Filho, {“ZL5_FILIAL” , “xFilial(‘ZL5’)”})
aAdd(aRelZl5Filho, {“ZL5_IDPRC” , “ZL1_ID”})
aAdd(aRelZl5Neto , {“ZL5_FILPRC” , “ZL5_FILPRC”})
aAdd(aRelZl5Neto , {“ZL5_GAPROV” , “ZL5_GAPROV”})
oModel:setRelation( “ZL5FILHO”, aRelZl5Filho, ZL5->(IndexKey(1)) )
oModel:getModel(“ZL5FILHO”):SetUniqueLine({“ZL5_FILPRC”, “ZL5_GAPROV”})
oModel:SetPrimaryKey( {} )
oModel:setRelation( “ZL5NETO”, aRelZl5Neto, ZL5->(IndexKey(2)) )
oModel:getModel(“ZL5NETO”):SetUniqueLine({“ZL5_CC”})
oModel:SetPrimaryKey( {} )
oModel:SetPrimaryKey( {“ZL1_FILIAL”, “ZL1_ID”} )