#INCLUDE "rwmake.ch" //Bibliotecas #Include 'Protheus.ch' #Include 'FWMVCDef.ch' #include 'TOPCONN.ch' //Variáveis Estáticas Static cTitulo := "Processos Trabalhistas" User Function CADZYD() Local aArea := GetArea() Local oBrowse Private _cAlias := "ZYD" Private cNomeCad := "CAD"+_cAlias Private cData := Date() //Instânciando FWMBrowse - Somente com dicionário de dados oBrowse := FWMBrowse():New() //Setando a tabela de cadastro de Autor/Interprete oBrowse:SetAlias("ZYD") //Setando a descrição da rotina oBrowse:SetDescription(cTitulo) oBrowse:SetMenuDef( cNomeCad ) //Legendas //Ativa a Browse oBrowse:Activate() RestArea(aArea) Return Nil /*---------------------------------------------------------------------* | Func: MenuDef | | Autor: Daniel Atilio | | Data: 17/08/2015 | | Desc: Criação do menu MVC | | Obs.: / | *---------------------------------------------------------------------*/ //Static Function MenuDef() //Return FWMVCMenu( "CADSB8" ) Static Function MenuDef() Local aRot := {} //Adicionando opções ADD OPTION aRot TITLE 'Visualizar' ACTION 'VIEWDEF.CADZYD' OPERATION MODEL_OPERATION_VIEW ACCESS 0 //OPERATION 1 ADD OPTION aRot TITLE 'Incluir' ACTION 'VIEWDEF.CADZYD' OPERATION MODEL_OPERATION_INSERT ACCESS 0 //OPERATION 3 ADD OPTION aRot TITLE 'Alterar' ACTION 'VIEWDEF.CADZYD' OPERATION MODEL_OPERATION_UPDATE ACCESS 0 //OPERATION 4 ADD OPTION aRot TITLE 'Excluir' ACTION 'VIEWDEF.CADZYD' OPERATION MODEL_OPERATION_DELETE ACCESS 0 //OPERATION 5 ADD OPTION aRot TITLE 'Anexar documentos' ACTION 'u_ZYDANEXO' OPERATION MODEL_OPERATION_DELETE ACCESS 0 //OPERATION 5 Return aRot /*---------------------------------------------------------------------* | Func: ModelDef | | Autor: Daniel Atilio | | Data: 17/08/2015 | | Desc: Criação do modelo de dados MVC | | Obs.: / | *---------------------------------------------------------------------*/ Static Function ModelDef() //Criação da estrutura de dados utilizada na interface Local oModel := Nil Local oStZYD := FWFormStruct(1, "ZYD") Local oStruZZA := FwFormStruct(1, "ZZA") Local oStruZZB := FwFormStruct(1, "ZZB") Local oStruZZC := FwFormStruct(1, "ZZC") Local aRelFilho1 := {} Local aRelFilho2 := {} Local aRelFilho3 := {} //Criando o modelo oModel := MPFormModel():New("CADZYDM",/*bPre*/, /*bPos*/,/*bCommit*/,/*bCancel*/) oModel:AddFields("ZYDMASTER",/*cOwner*/,oStZYD) //Criando a grid dos filhos oModel:AddGrid("ZZADETAIL", "ZYDMASTER", oStruZZA) oModel:AddGrid("ZZBDETAIL", "ZYDMASTER", oStruZZB) oModel:AddGrid("ZZCDETAIL", "ZYDMASTER", oStruZZC) oModel:SetPrimaryKey({'ZYD_ID'}) //Criando os relacionamentos dos pais e filhos aAdd(aRelFilho1, {'ZZA_ID', 'ZYD_ID'}) aAdd(aRelFilho2, {'ZZB_ID', 'ZYD_ID'}) aAdd(aRelFilho3, {'ZZC_ID', 'ZYD_ID'}) // Criando o relacionamento do filho 1 oModel:SetRelation("ZZADETAIL", aRelFilho1, ZZA->(IndexKey(1))) oModel:GetModel('ZZADETAIL'):SetUniqueLine({"ZZA_ID"}) // Criando o relacionamento do filho 2 oModel:SetRelation("ZZBDETAIL", aRelFilho2, ZZB->(IndexKey(1))) oModel:GetModel('ZZBDETAIL'):SetUniqueLine({"ZZB_ID"}) // Criando o relacionamento do filho 3 oModel:SetRelation("ZZCDETAIL", aRelFilho3, ZZC->(IndexKey(1))) oModel:GetModel('ZZCDETAIL'):SetUniqueLine({"ZZC_ID"}) //Adicionando descrição ao modelo // oModel:SetDescription(cTitulo) // //Setando a descrição do formulário // oModel:GetModel("ZYDMASTER"):SetDescription(cTitulo) // oModel:GetModel("ZZADETAIL"):SetUniqueLine("ZZA_") // oModel:GetModel("ZZBDETAIL"):SetDescription("Objeto") // oModel:GetModel("ZZCDETAIL"):SetDescription("Tipo Despesa") // oModel:GetModel("ZZCDETAIL"):SetOptional(.T.) //Finaliznado a criação do Model // oModel:SetPrimaryKey({'ZYD_ID'}) oModel:SetDescription(cTitulo) oModel:GetModel('ZYDMASTER'):SetDescription('Processos jurídicos') oModel:GetModel('ZZADETAIL'):SetDescription('Trâmite') oModel:GetModel('ZZBDETAIL'):SetDescription('Tipo objeto') oModel:GetModel('ZZCDETAIL'):SetDescription('Tipo despesa') Return oModel /*---------------------------------------------------------------------* | Func: ViewDef | | Autor: Daniel Atilio | | Data: 17/08/2015 | | Desc: Criação da visão MVC | | Obs.: / | *---------------------------------------------------------------------*/ Static Function ViewDef() // Local oView := FWFormView():New() //Criação da estrutura de dados utilizada na interface do cadastro de Autor Local oView := Nil Local oModel := FWLoadModel("CADZYD") Local oStZYD := FWFormStruct(2, "ZYD") //pode se usar um terceiro parâmetro para filtrar os campos exibidos { |cCampo| cCampo $ 'SB8_NOME|SB8_DTAFAL|'} Local oStruZZA := FwFormStruct(2, "ZZA") Local oStruZZB := FwFormStruct(2, "ZZB") Local oStruZZC := FwFormStruct(2, "ZZC") // Local oModel := FWLoadModel("CADZYD") // Criando a view oView := FWFormView():New() oView:SetContinuousForm() oView:SetModel(oModel) oView:AddField('ZYDMASTER' , oStZYD) oView:AddGrid('ZZADETAIL' , oStruZZA) oView:AddGrid('ZZBDETAIL' , oStruZZB) oView:AddGrid('ZZCDETAIL' , oStruZZC) oView:CreateHorizontalBox( 'BOX6', 100) oView:CreateFolder( 'FOLDER7', 'BOX6') oView:AddSheet('FOLDER7','Processos jurídicos','Processos jurídicos') oView:CreateHorizontalBox( 'BOXFORM2', 100, , , 'FOLDER7', 'Processos jurídicos') oView:AddSheet('FOLDER7','Trâmite','Trâmite') oView:CreateHorizontalBox( 'BOXFORM4', 100, , , 'FOLDER7', 'Trâmite') oView:AddSheet('FOLDER7','Tipo objeto','Tipo objeto') oView:CreateHorizontalBox( 'BOXFORM5', 100, , , 'FOLDER7', 'Tipo objeto') oView:AddSheet('FOLDER7','Tipo despesa','Tipo despesa') oView:CreateHorizontalBox( 'BOXFORM6', 100, , , 'FOLDER7', 'Tipo despesa') oView:SetOwnerView('ZYDMASTER','BOXFORM2') oView:SetOwnerView('ZZADETAIL','BOXFORM4') oView:SetOwnerView('ZZBDETAIL','BOXFORM5') oView:SetOwnerView('ZZCDETAIL','BOXFORM6') Return oView //------------------------------------------------------------------- User Function FtMsRel Local aRet As Array Local aChave As Array Local bMostra As Block Local cTabela As Character Local aFields As Array //Array aRet := {} If FunName() == "#CADZYD" // Tabela do usuario cTabela := 'ZYD' // Campos que compoe a chave na ordem. Nao passar filial (automatico) aChave := {'ZYD_ID'} // Bloco de codigo a ser exibido bMostra := { ||ZYD->ZYD_ID} //Array com os campos que identificam os campos utilizados na descrição aFields := {'ZYD_ID'} Elseif FunName() $ "#LANFIN" cTabela := 'ZAS' aChave := {'ZAS_DOC','ZAS_HIST'} bMostra := {||ZAS->ZAS_DOC + ZAS->ZAS_HIST} aFields := {'ZAS_DOC','ZAS_HIST'} Elseif FunName() $ "#IMPCLIPALM|#RPC|#ASABRANCARUN" cTabela := 'ZT9' aChave := {'ZT9_CGC'} bMostra := {||ZT9->ZT9_CGC} aFields := {'ZT9_CGC'} Endif // funcoes do sistema para identificar o registro AAdd( aRet, { cTabela, aChave, bMostra,aFields } ) Return aRet User Function ZYDANEXO() MsDocument('ZYD', ZYD->(Recno()), 4) return