#INCLUDE "TOTVS.CH"
#INCLUDE "RWMAKE.CH"
#INCLUDE "TOPCONN.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "FWCOMMAND.CH"
//-------------------------------------------------------------------
/*/{Protheus.doc} Compac
Fonte MVC exemplo;
@Type
@author
@since
//-----------------------------------------------------------------*/
User Function Compac()
Local oBrowse as object
Private aRotina as Array
oBrowse := FWMBrowse():New()
aRotina := MenuDef()
oBrowse:SetAlias("ZC0")
oBrowse:SetDescription("Consulta Clientes X Pedidos X Itens Pedidos")
//Testes
oBrowse:AddLegend("ZC0_FILIAL=='01'", "RED" , "Loja X")
//oBrowse:AddLegend("ZC3_FILIAL=='02'", "BLUE" , "Loja Y")
oBrowse:DisableDetails()
oBrowse:SetUseFilter(.T.)
//oBrowse:SetFilterDefault( "ZC0_FILIAL='"+xFilial("ZC0")+"'" )
//Testes Fim
oBrowse:Activate()
Return
//-------------------------------------------------------------------
/*/{Protheus.doc} MenuDef
@author Caio Lima
@since
//-----------------------------------------------------------------*/
Static Function MenuDef()
Local aRotina as Array
aRotina := {}
ADD OPTION aRotina TITLE "Pesquisar" ACTION "PESQBRW" OPERATION 1 ACCESS 0
ADD OPTION aRotina TITLE "Visualizar" ACTION "VIEWDEF.compac" OPERATION 2 ACCESS 0
ADD OPTION aRotina TITLE "Incluir" ACTION "VIEWDEF.compac" OPERATION 3 ACCESS 0
ADD OPTION aRotina TITLE "Alterar" ACTION "VIEWDEF.compac" OPERATION 4 ACCESS 0
ADD OPTION aRotina TITLE "Excluir" ACTION "VIEWDEF.compac" OPERATION 5 ACCESS 0
ADD OPTION aRotina TITLE "Imprimir" ACTION "VIEWDEF.compac" OPERATION 8 ACCESS 0
ADD OPTION aRotina TITLE "Copiar" ACTION "VIEWDEF.compac" OPERATION 9 ACCESS 0
Return aRotina
//-------------------------------------------------------------------
/*/{Protheus.doc} ModelDef
@Type
@author
@since
//-----------------------------------------------------------------*/
Static Function ModelDef()
Local oStruZC0 as object
Local oStruZC3 as object
Local oStruZC4 as object
Local oModel as object
oStruZC0 := FWFormStruct(1, "ZC0"/* , {|x| AllTrim(x) $ "ZC0_FILIAL+ZC0_COD+ZC0_LOJA"} */)
oStruZC3 := FWFormStruct(1, "ZC3"/* , {|x| AllTrim(x) $ "ZC3_FILIAL+ZC3_COD" } */)
oStruZC4 := FWFormStruct(1, "ZC4"/* , {|x| AllTrim(x) $ "ZC4_FILIAL+ZC4_COD+ZC4_ITEM"} */)
oModel := MPFormModel():New("Teste")
oModel:AddFields("ZC0MASTER", /*cOwner*/ , oStruZC0)
oModel:AddGrid ("ZC3DETAIL", "ZC0MASTER", oStruZC3)
oModel:AddGrid ("ZC4DETAIL", "ZC0MASTER", oStruZC4)
oModel:AddGrid ("ZC4DET2" , "ZC0MASTER", oStruZC4)
oModel:SetPrimaryKey({"ZC0_FILIAL","ZC0_COD","ZC0_LOJA"})
oModel:SetRelation("ZC3DETAIL", {{"ZC3_FILIAL","fwxFilial('ZC3')"},{"ZC3_COD", "ZC0_COD"},{"ZC3_LOJA", "ZC0_LOJA"}}, ZC3->(IndexKey(1)))
oModel:SetRelation("ZC4DETAIL", {{"ZC4_FILIAL", "fwxFilial('ZC4')"},{"ZC4_C0D", "ZC0_COD"}}, ZC4->(IndexKey(1)))
oModel:SetRelation("ZC4DET2", {{"ZC4_FILIAL", "fwxFilial('ZC4')"},{"ZC4_C0D", "ZC0_COD"}}, ZC4->(IndexKey(1)))
//oModel:GetModel("ZC0MASTER"):SetOptional(.T.)
oModel:GetModel("ZC3DETAIL"):SetOptional(.T.)
oModel:GetModel("ZC4DET2"):SetOptional(.T.)
oModel:SetDescription("Clientes x Pedidos")
oModel:GetModel("ZC0MASTER"):SetDescription("Cliente")
oModel:GetModel("ZC3DETAIL"):SetDescription("Pedidos")
oModel:GetModel("ZC4DETAIL"):SetDescription("Titulos")
oModel:GetModel("ZC4DET2"):SetDescription("Titulos 2")
Return oModel
//-------------------------------------------------------------------
/*/{Protheus.doc} ViewDef
@Type
@author
@since
//-----------------------------------------------------------------*/
Static Function ViewDef()
Local oStruZC0 as object
Local oStruZC3 as object
Local oStruZC4 as object
Local oModel as object
Local oView as object
oStruZC0 := FWFormStruct(2, "ZC0"/* , {|x| AllTrim(x) $ "ZC0_FILIAL+ZC0_COD+ZC0_LOJAT" } */)
oStruZC3 := FWFormStruct(2, "ZC3"/* , {|x| AllTrim(x) $ "ZC3_FILIAL+ZC3_CODPRJ+ZC3_COD" } */)
oStruZC4 := FWFormStruct(2, "ZC4"/* , {|x| AllTrim(x) $ "E1_PREFIXO, E1_NUM, E1_PARCELA, E1_TIPO, E1_VALOR, E1_VENCTO, E1_MEMO" } */)
oModel := FWLoadModel("compac")
oView := FWFormView():New()
oView:SetModel(oModel)
oView:AddField("VIEW_ZC0", oStruZC0, "ZC0MASTER")
oView:AddGrid( "VIEW_ZC3", oStruZC3, "ZC3DETAIL")
oView:AddGrid( "VIEW_ZC4", oStruZC4, "ZC4DETAIL")
oView:AddGrid( "VIEW_ZC4_2", oStruZC4, "ZC4DET2")
oView:AddUserButton('Comparar', '', { || fCompare() }, , , , .T.)
oView:CreateHorizontalBox("SUPERIOR" , 50)
oView:CreateHorizontalBox("INFERIOR" , 50)
oView:CreateVerticalBox("SUPL", 50,"SUPERIOR")
oView:CreateVerticalBox("SUPR", 50,"SUPERIOR")
oView:CreateVerticalBox("INFL", 50,"INFERIOR")
oView:CreateVerticalBox("INFR", 50,"INFERIOR")
oView:SetOwnerView("VIEW_ZC0", "SUPL")
oView:SetOwnerView("VIEW_ZC3", "SUPR")
oView:SetOwnerView("VIEW_ZC4", "INFL")
oView:SetOwnerView("VIEW_ZC4_2", "INFR")
oView:EnableTitleView("VIEW_ZC0")
oView:EnableTitleView("VIEW_ZC3")
oView:EnableTitleView("VIEW_ZC4")
oView:EnableTitleView("VIEW_ZC4_2")
Return oView
//-------------------------------------------------------------------
/*/{Protheus.doc} fCompare
descricao
@Type
@author
@since Função compare usada para comparar dois objetos e exibe o resultado
@Type Static Function
@author FRAMEWORK
@since 21/11/2024
//-----------------------------------------------------------------*/
Static Function fCompare()
Local oModel as object
Local oGrid1 as object
Local oGrid2 as object
Local aCompare as Array
oModel := FWModelActive()
oGrid1 := oModel:GetModel("ZC4DETAIL")
oGrid2 := oModel:GetModel("ZC4DET2")
aCompare := {}
aCompare := oGrid1:Compare(aCompare, oGrid2)
Aviso( 'retorno', VarInfo('aCompare', aCompare , , .F. ), ,{'ok'}, ,4, , , , .T.)
Return
|