Exemplo de rotina automática para aplicações MVC
Exemplo de rotina automática para aplicações MVC
Segue um exemplo de como criar a rotina principal e um modelo de rotina automática para aplicações MVC.
Para maiores informações consultar as informações contidas no documento "ADVPL utilizando MVC"
#INCLUDE "FWMBROWSE.CH"#INCLUDE "FWMVCDEF.CH"USER Function SA1_MVC(xRotAuto,nOpcAuto)Local oMBrowseIf xRotAuto == Nil DEFINE FWMBROWSE oMBrowse ALIAS "SA1" DESCRIPTION "Cadastro de Clientes" ACTIVATE FWMBROWSE oMBrowseElse aRotina := MenuDef() FWMVCRotAuto(ModelDef(),"SA1",nOpcAuto,{{"MATA030_SA1",xRotAuto}})EndifReturn//-------------------------------------------------------------------// Menu Funcional//-------------------------------------------------------------------Static Function MenuDef()Local aRotina := {}ADD OPTION aRotina TITLE "Visualizar" ACTION "VIEWDEF.SA1_MVC" OPERATION MODEL_OPERATION_VIEW ACCESS 0ADD OPTION aRotina TITLE "Incluir" ACTION "VIEWDEF.SA1_MVC" OPERATION MODEL_OPERATION_INSERT ACCESS 0ADD OPTION aRotina TITLE "Alterar" ACTION "VIEWDEF.SA1_MVC" OPERATION MODEL_OPERATION_UPDATE ACCESS 143ADD OPTION aRotina TITLE "Excluir" ACTION "VIEWDEF.SA1_MVC" OPERATION MODEL_OPERATION_DELETE ACCESS 144Return aRotina//-------------------------------------------------------------------// ModelDef - Modelo de dados do Cadastro de Clientes//-------------------------------------------------------------------Static Function Modeldef()Local oModel := Nil//-----------------------------------------//Monta o modelo do formulário//-----------------------------------------oModel:= MPFormModel():New("MATA030",/*Pre-Validacao*/, /*Pos-Validacao*/, /*Commit*/,/*Cancel*/)oModel:AddFields("XXX_SA1", Nil , FWFormStruct(1,"SA1"),/*Pre-Validacao*/,/*Pos-Validacao*/,/*Carga*/)Return(oModel)//-------------------------------------------------------------------// ViewDef - Visualizador de dados do Cadastro de Clientes//-------------------------------------------------------------------Static Function ViewDef()Local oViewLocal oModel := FWLoadModel("SA1_MVC")oView := FWFormView():New() oView:SetModel(oModel)oView:AddField( "XXX_SA1" , FWFormStruct(2,"SA1")) oView:CreateHorizontalBox("ALL",100)oView:SetOwnerView("XXX_SA1","ALL")Return oView//-------------------------------------------------------------------// MYTESTSA1 - Teste para rotina automatica usando MSEXECAUTO//-------------------------------------------------------------------User Function MYTESTSA1() Local oModel := NilLocal nX := 0RpcSetEnv("01","01")dbSelectArea("SA1")dbSetOrder(1)MsSeek(xFilial())CONOUT("Inicio: "+TIME())oModel := FWLoadModel("SA1_MVC")For nX := 50 To 51 oModel:SetOperation(MODEL_OPERATION_INSERT) oModel:Activate() oModel:SetValue("XXX_SA1","A1_COD",StrZero(nX,6)) oModel:SetValue("XXX_SA1","A1_LOJA","01") oModel:SetValue("XXX_SA1","A1_TIPO","R") oModel:SetValue("XXX_SA1","A1_NOME","TOTVS S/A") oModel:SetValue("XXX_SA1","A1_NREDUZ","TOTVS") oModel:SetValue("XXX_SA1","A1_END","AV. BRAZ LEME, 1631") oModel:SetValue("XXX_SA1","A1_BAIRRO","SANTANA") oModel:SetValue("XXX_SA1","A1_MUN","SAO PAULO") oModel:SetValue("XXX_SA1","A1_EST","SP") oModel:SetValue("XXX_SA1","A1_COD_MUN","50308") oModel:SetValue("XXX_SA1","A1_CEP","02511000") oModel:SetValue("XXX_SA1","A1_PESSOA","F") If oModel:VldData() oModel:CommitData() Else VarInfo("",oModel:GetErrorMessage()) EndIf oModel:DeActivate() Next nXCONOUT("Fim Inclusão: "+TIME())CONOUT("Inicio Alteração: "+TIME())SA1->(MsSeek(xFilial("SA1")+"000050",.T.)) // pesquisa o cliente 000050 para alterá-loConOut("Time Ini:"+Time())oModel:SetOperation(MODEL_OPERATION_UPDATE)oModel:Activate()oModel:SetValue("XXX_SA1","A1_NOME","TESTE") If oModel:VldData() ConOut("Time Commit:"+Time()) oModel:CommitData()Else VarInfo("",oModel:GetErrorMessage())EndIf oModel:DeActivate()CONOUT("Fim Alteração: "+TIME())CONOUT("Inicio Exclusão: "+TIME())SA1->(MsSeek(xFilial("SA1")+"000051",.T.)) // pesquisa o cliente 000051 para excluí-loConOut("Time Ini:"+Time())oModel:SetOperation(MODEL_OPERATION_DELETE) oModel:Activate()ConOut("Time Commit:"+Time())oModel:CommitData()oModel:DeActivate()CONOUT("Fim Exclusão: "+TIME()) CONOUT("Inicio: "+TIME())// inclui 2 registros pela rotina do padrãoMyMata030()CONOUT("Fim: "+TIME()) RpcClearEnv()ReturnStatic Function MyMata030()Local aCabec := {}Local cCodCli := ""Local nXPRIVATE lMsErroAuto := .F.cCodCli := Soma1("000051")For nX := 1 To 2 aCabec := {} aadd(aCabec,{"A1_COD" ,cCodCli,}) aadd(aCabec,{"A1_LOJA","01",}) aadd(aCabec,{"A1_TIPO","R",}) aadd(aCabec,{"A1_NOME","TOTVS S/A",}) aadd(aCabec,{"A1_NREDUZ","TOTVS",}) aadd(aCabec,{"A1_END","AV. BRAZ LEME, 1631",}) aadd(aCabec,{"A1_BAIRRO","SANTANA",}) aadd(aCabec,{"A1_MUN","SAO PAULO",}) aadd(aCabec,{"A1_EST","SP",}) aadd(aCabec,{"A1_COD_MUN","50308",}) aadd(aCabec,{"A1_CEP","02511000",}) aadd(aCabec,{"A1_PESSOA","F",}) MATA030(aCabec,3) cCodCli := Soma1(cCodCli)Next nXReturn(.T.)
Microsiga Protheus 11
,
Protheus 10
Nível 1 (Acesso Clientes)
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas