Exemplo de configuração da ExecAuto do Cadastro de Produtos (MATA010)
Produto: | Microsiga Protheus® | ||||||||||||||||||
Ambiente: | Estoque e Custos (MATA010) - 12.1.17 (outubro/2017 e) e posteriores | ||||||||||||||||||
Ocorrência: | Inclusão, alteração ou exclusão de qualquer produto no Cadastro de Produtos de forma automática | ||||||||||||||||||
Passo a passo: | O Cadastro pode ser realizado como nas versões anteriores, como também ser realizado através do MVC, conforme exemplos abaixo. Observação
Parâmetros: Importante Os parâmetros abaixo se aplicam a rotina automática via MsExecAuto
Sem MVC #INCLUDE "RWMAKE.CH" #INCLUDE "TBICONN.CH" User Function TMata010() Local aVetor := {} private lMsErroAuto := .F. //Abre Ambiente (não deve ser utilizado caso utilize interface ou seja chamado de uma outra rotina que já inicializou o ambiente) PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "EST" //--- Exemplo: Inclusao --- // aVetor:= { {"B1_COD" ,"9994" ,NIL},; {"B1_DESC" ,"PRODUTO TESTE - ROTINA AUTOMATICA" ,NIL},; {"B1_TIPO" ,"PA" ,Nil},; {"B1_UM" ,"UN" ,Nil},; {"B1_LOCPAD" ,"01" ,Nil},; {"B1_PICM" ,0 ,Nil},; {"B1_IPI" ,0 ,Nil},; {"B1_CONTRAT" ,"N" ,Nil},; {"B1_LOCALIZ" ,"N" ,Nil}} MSExecAuto({|x,y| Mata010(x,y)},aVetor,3) //--- Exemplo: Alteracao --- // aVetor:= { {"B1_COD" ,"9994" ,NIL},; {"B1_DESC" ,"PRODUTO TESTE - ALTERADO" ,NIL}} MSExecAuto({|x,y| Mata010(x,y)},aVetor,4) //--- Exemplo: Exclusao --- // aVetor:= { {"B1_COD" ,"9994" ,NIL},; {"B1_DESC" ,"PRODUTO TESTE - ROTINA AUTOMATICA" ,NIL}} MSExecAuto({|x,y| Mata010(x,y)},aVetor,5) If lMsErroAuto MostraErro() Else Alert("Ok") Endif Return Com MVC (Versão 12.1.17 outubro/17 e posteriores) #INCLUDE "RWMAKE.CH" #INCLUDE "TBICONN.CH" #INCLUDE 'Protheus.ch' #INCLUDE 'FWMVCDef.ch' //------------------------------------------------------------------------ /* EXEMPLO DE INCLUSÃO MODELO 1 */ //------------------------------------------------------------------------ User Function m010IncRa() Local oModel := Nil Private lMsErroAuto := .F. //Abre Ambiente (não deve ser utilizado caso utilize interface ou seja chamado de uma outra rotina que já inicializou o ambiente) PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "EST" oModel := FwLoadModel ("MATA010") oModel:SetOperation(MODEL_OPERATION_INSERT) oModel:Activate() oModel:SetValue("SB1MASTER","B1_COD" ,"RASB100") oModel:SetValue("SB1MASTER","B1_DESC" ,"PRODUTO TESTE 00") oModel:SetValue("SB1MASTER","B1_TIPO" ,"PA") oModel:SetValue("SB1MASTER","B1_UM" ,"UN") oModel:SetValue("SB1MASTER","B1_LOCPAD" ,"01") oModel:SetValue("SB1MASTER","B1_LOCALIZ" ,"N") If oModel:VldData() oModel:CommitData() MsgInfo("Registro INCLUIDO!", "Atenção") Else VarInfo("",oModel:GetErrorMessage()) EndIf oModel:DeActivate() oModel:Destroy() oModel := NIL Return Nil //------------------------------------------------------------------------ /* EXEMPLO DE INCLUSÃO MODELO 1 (Utilizando a função FwMvcRotAuto apenas em caráter didático) */ //------------------------------------------------------------------------ User Function m010Inc1Ra() Local aDadoscab := {} Local aDadosIte := {} Local aItens := {} Private oModel := Nil Private lMsErroAuto := .F. Private aRotina := {} //Abre Ambiente (não deve ser utilizado caso utilize interface ou seja chamado de uma outra rotina que já inicializou o ambiente) PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "EST" oModel := FwLoadModel ("MATA010") //Adicionando os dados do ExecAuto cab aAdd(aDadoscab, {"B1_COD" ,"RASB101" , Nil}) aAdd(aDadoscab, {"B1_DESC" ,"PRODUTO TESTE" , Nil}) aAdd(aDadoscab, {"B1_TIPO" ,"PA" , Nil}) aAdd(aDadoscab, {"B1_UM" ,"UN" , Nil}) aAdd(aDadoscab, {"B1_LOCPAD" ,"01" , Nil}) aAdd(aDadoscab, {"B1_LOCALIZ" ,"N" , Nil}) //Chamando a inclusão - Modelo 1 lMsErroAuto := .F. FWMVCRotAuto( oModel,"SB1",MODEL_OPERATION_INSERT,{{"SB1MASTER", aDadoscab}}) //Se houve erro no ExecAuto, mostra mensagem If lMsErroAuto MostraErro() //Senão, mostra uma mensagem de inclusão Else MsgInfo("Registro incluido!", "Atenção") EndIf Return Nil //------------------------------------------------------------------------ /* EXEMPLO DE INCLUSÃO MODELO 2 (Utilizando a função FwMvcRotAuto apenas em caráter didático) */ //------------------------------------------------------------------------ User Function m010Inc2Ra() Local aDadoscab := {} Local aDadosIte := {} Local aItens := {} Private oModel := Nil Private lMsErroAuto := .F. Private aRotina := {} //Abre Ambiente (não deve ser utilizado caso utilize interface ou seja chamado de uma outra rotina que já inicializou o ambiente) PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "EST" oModel := FwLoadModel ("MATA010") //Adicionando os dados do ExecAuto cab aAdd(aDadoscab, {"B1_COD" ,"RASB102" , Nil}) aAdd(aDadoscab, {"B1_DESC" ,"PRODUTO TESTE" , Nil}) aAdd(aDadoscab, {"B1_TIPO" ,"PA" , Nil}) aAdd(aDadoscab, {"B1_UM" ,"UN" , Nil}) aAdd(aDadoscab, {"B1_LOCPAD" ,"01" , Nil}) aAdd(aDadoscab, {"B1_LOCALIZ" ,"N" , Nil}) //Adicionando os dados do ExecAuto Item //Produtos alternativos (já deve existir na base) If "SGI" $ SuperGetMv("MV_CADPROD",,"|SA5|SBZ|SB5|DH5|SGI|") aAdd(aDadosIte, {"GI_PRODALT" , "RASB101" , Nil}) aAdd(aDadosIte, {"GI_ORDEM" , "1" , Nil}) //no item o array precisa de um nivel superior. aAdd(aItens,aDadosIte) EndIf //Chamando a inclusão - Modelo 2 lMsErroAuto := .F. FWMVCRotAuto( oModel,"SB1",MODEL_OPERATION_INSERT,{{"SB1MASTER", aDadoscab},{"SGIDETAIL", aItens}}) //Se houve erro no ExecAuto, mostra mensagem If lMsErroAuto MostraErro() //Senão, mostra uma mensagem de inclusão Else MsgInfo("Registro incluido!", "Atenção") EndIf Return Nil //------------------------------------------------------------------------ /* EXEMPLO DE ALTERAÇÃO */ //------------------------------------------------------------------------ User Function m010AltRa() Local oModel := Nil Private lMsErroAuto := .F. //Abre Ambiente (não deve ser utilizado caso utilize interface ou seja chamado de uma outra rotina que já inicializou o ambiente) PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "EST" //Posiciona SB1->(DbSetOrder(1)) If SB1->(DbSeek(xFilial("SB1") + "RASB101")) oModel := FwLoadModel ("MATA010") oModel:SetOperation(MODEL_OPERATION_UPDATE) oModel:Activate() oModel:SetValue("SB1MASTER","B1_DESC","PRODUTO ALTERADO") If oModel:VldData() oModel:CommitData() MsgInfo("Registro ALTERADO!", "Atenção") Else VarInfo("",oModel:GetErrorMessage()) EndIf oModel:DeActivate() Else MsgInfo("Registro NAO LOCALIZADO!", "Atenção") EndIf Return Nil //------------------------------------------------------------------------ /* EXEMPLO DE EXCLUSÃO */ //------------------------------------------------------------------------ User Function m010ExcRa() Local oModel := Nil Private aRotina := {} //Abre Ambiente (não deve ser utilizado caso utilize interface ou seja chamado de uma outra rotina que já inicializou o ambiente) PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "EST" //Posiciona SB1->(DbSetOrder(1)) If SB1->(DbSeek(xFilial("SB1") + "RASB101")) oModel := FwLoadModel ("MATA010") oModel:SetOperation(MODEL_OPERATION_DELETE) oModel:Activate() If oModel:VldData() oModel:CommitData() MsgInfo("Registro EXCLUIDO!", "Atenção") Else VarInfo("",oModel:GetErrorMessage()) EndIf oModel:DeActivate() Else MsgInfo("Registro NAO LOCALIZADO!", "Atenção") EndIf Return Nil | ||||||||||||||||||
Pode lhe interessar: |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas