Árvore de páginas


CONTEÚDO

  1. Visão Geral
  2. Exemplo de utilização
  3. Configuração e execução
  4. Tabelas utilizadas


01. VISÃO GERAL

Exemplo de como executar a rotina de cadastramento de dependentes através da execauto (rotina automática).

A rotina automática, no cadastro de dependentes, tem a finalidade de efetuar o lançamento automático de dependentes para um ou mais funcionários (que devem estar previamente cadastrados na tabela
SRA - Funcionários).

Na chamada da rotina GPEA020, deverão ser informados 2 arrays:

  • aCabec 
    Corresponde aos dados da tabela SRA - Funcionários. 

aCabec := {     {"RA_FILIAL" , conteudo1, NIL},;

{"RA_MAT" , conteudo2, NIL};

  }

  • aItens

Corresponde aos dados a serem incluídos/deletados da tabela SRB - Dependentes.

aItens := {    {"RB_FILIAL"       , conteudo1    , Nil},;
                    {"RB_MAT"         , conteudo2    , Nil},;
                    {"RB_COD"         , conteudo3    , Nil},;
                    {"RB_NOME"      , conteudo4    , Nil},;
                    {"RB_DTNASC"   , conteudo5    , Nil},;
                    {"RB_SEXO"        , conteudo6    , Nil},;
                    {"RB_GRAUPAR" , conteudo7    , Nil},;
                    {"RB_TIPIR"         , conteudo8    , Nil},;
                    {"RB_TIPSF"        , conteudo9    , Nil},;
                    {"RB_LOCNASC" , conteudo10  , Nil},;
                    {campo 1            , conteudo11  , Nil},;
                    {campo N           , conteudoN   , Nil};
               }

Observação: No array aItens podem ser informados os demais campos correspondentes aos campos da tabela SRB.

02. EXEMPLO DE UTILIZAÇÃO

Segue um exemplo de montagem da execauto da rotina GPEA020 e de retorno da execução.

User Function GP020AUT()

Local aCabec   := {}
Local aItens   := {}
Local aLinha   := {}

PRIVATE lMsErroAuto := .F.

aCabec   := {}
aadd(aCabec,{"RA_FILIAL"  ,"D MG 01 "   ,Nil  })
aadd(aCabec,{"RA_MAT"     ,"000002"     ,Nil  })

aLinha := {}
aItens := {}

aadd(aLinha,{"RB_FILIAL"          , "D MG 01 "                   ,  Nil })
aadd(aLinha,{"RB_MAT"            , "000002"                       , Nil })
aadd(aLinha,{"RB_COD"            , "01"                              , Nil })
aadd(aLinha,{"RB_NOME"         , "MARIA DA SILVA"        , Nil })
aadd(aLinha,{"RB_DTNASC"      , Ctod("10/03/2010")      , Nil })
aadd(aLinha,{"RB_SEXO"           , "F"                                , Nil })
aadd(aLinha,{"RB_GRAUPAR"   , "F"                                , Nil })
aadd(aLinha,{"RB_TIPIR"           , "2"                               , Nil })
aadd(aLinha,{"RB_TIPSF"          , "2"                               , Nil })
aadd(aLinha,{"RB_TPDEP"        , "03"                             , Nil })
aadd(aLinha,{"RB_LOCNASC"  , "SP"                             , Nil })
aadd(aLinha,{"RB_CIC"             , ""                                , Nil })  
aadd(aItens,aLinha)
aLinha := {}


aadd(aLinha,{"RB_FILIAL"           , "D MG 01 "                  , Nil })
aadd(aLinha,{"RB_MAT"             , "000002"                     , Nil })
aadd(aLinha,{"RB_COD"            , "02"                               Nil })
aadd(aLinha,{"RB_NOME"         , "PEDRO DA SILVA"      , Nil })
aadd(aLinha,{"RB_DTNASC"     , Ctod("19/05/1982")     , Nil })
aadd(aLinha,{"RB_SEXO"          , "M"                              , Nil })
aadd(aLinha,{"RB_GRAUPAR"  , "C"                               , Nil })
aadd(aLinha,{"RB_TIPIR"          , "4"                               , Nil })
aadd(aLinha,{"RB_TIPSF"          , "2"                              , Nil })
aadd(aLinha,{"RB_LOCNASC"   , "SP"                           , Nil })
aadd(aLinha,{"RB_TPDEP"        , "01"                           , Nil })      
aadd(aLinha,{"RB_CIC"             , "40363918876"         , Nil })    
aadd(aItens,aLinha)
aLinha := {}                   


aadd(aLinha,{"RB_FILIAL"         , "D MG 01 "                , Nil })
aadd(aLinha,{"RB_MAT"           , "000002"                   , Nil })
aadd(aLinha,{"RB_COD"          , "03"                           , Nil })
aadd(aLinha,{"RB_NOME"       , "JOAO DA SILVA"      , Nil })
aadd(aLinha,{"RB_DTNASC"    , Ctod("07/08/2010")  , Nil })
aadd(aLinha,{"RB_SEXO"         , "M"                           , Nil })
aadd(aLinha,{"RB_GRAUPAR"  , "F"                           , Nil })
aadd(aLinha,{"RB_TIPIR"          , "2"                           , Nil })
aadd(aLinha,{"RB_TIPSF"         , "2"                           , Nil })
aadd(aLinha,{"RB_TPDEP"      , "03"                          , Nil })
aadd(aLinha,{"RB_LOCNASC" , "SP"                         , Nil })  
aadd(aLinha,{"RB_CIC"             , ""                           , Nil })  
aadd(aItens,aLinha)   

IF ( lRet:= APMSGYESNO("Executar atraves do MVC. Confirmar (S) Sim / (N) Nao ? ") )
    U_EnvMVC(aCabec, aItens)
Else
    U_Envia(aCabec, aItens)
EndIf

Return(.T.)


// Função para enviar via ExecAuto
USER Function Envia(aCabec, aItens)

//-- Faz chamada a rotina de cadastro de dependentes para incluir os dependentes (opcao 3)
MSExecAuto({|x,y,k,w,z| GPEA020(x,y,k,w,z)},4,aCabec,aItens,4)  //-- Opcao 3 - Inclui registro

//Retorno de erro na execução da rotina
If lMsErroAuto
    MostraErro()
Else    
    Alert("Registro(s) Incluido(s) !!!")    
EndIf

Return(.T.) 


//Função para enviar via MVC
USER Function EnvMVC(aCabec, aItens)
Local aErro         := {}
Local oModel        := Nil
Local oSubMdl       := ""
Local cArqErrAuto   := ""
Local cCodigo       := ""
Local cNome         := ""
Local nX            := 0
Local nY            := 0
  
    cFilMat := aCabec[1][2]
    cMat    := aCabec[2][2] 

    SRA->(DbSetOrder(1))
    SRA->(DbSeek(cFilMat+cMat))

    oModel := FWLoadModel("GPEA020")
    oModel:SetOperation(3)

    If(oModel:Activate())   
        oSubMdl := oModel:GetModel("GPEA020_SRB") 
        
        For nX  := 1 to Len(aItens)   

            If (oSubMdl:Length() > 0)                
                oSubMdl:AddLine()
            EndIf   

            For nY  := 1 to Len(aItens[nX]) 
                If !(aItens[nX][nY][1] $ "RB_MAT")
                    oSubMdl:SetValue(aItens[nX][nY][1], aItens[nX][nY][2])
                EndIf               
            Next nY

            // Performa validação da linha
            If !oSubMdl:VldLineData()
                lRet    := .F.
                cCodigo := aItens[nX][3][2]
                cNome   := aItens[nX][4][2] 
                Exit                
            EndIf

        Next nX      
        
        If lRet .And. (oModel:VldData())
            oModel:CommitData()
        Else
        
            aErro := oModel:GetErrorMessage()   

            cArqErrAuto := "Id do formulário de origem:" + ' [' + AllToChar( aErro[1] ) + ']' + Chr(13) + Chr(10)
            cArqErrAuto += "Id do campo de origem: "    + ' [' + AllToChar( aErro[2] ) + ']' + Chr(13) + Chr(10)
            cArqErrAuto += "Id do formulário de erro: "  + ' [' + AllToChar( aErro[3] ) + ']' + Chr(13) + Chr(10)
            cArqErrAuto += "Mensagem do erro: "          + ' [' + AllToChar( aErro[6] ) + ']' + Chr(13) + Chr(10)
            cArqErrAuto += "Chave: Filial - Matricula - Código - Nome " + ' [' + cFilMat + ' - ' + cMat + ' - ' + cCodigo + ' - ' + cNome + ']' 

            Alert ('Falha no ExecAuto MVC: ' + (Chr(13) + Chr(10)) + cArqErrAuto)                                  
        EndIf 

        oModel:DeActivate()
        oModel:Destroy()
        oModel := Nil

    EndIf
    
Return(.T.) 

03. CONFIGURAÇÃO E EXECUÇÃO

No exemplo, acima, a chamada da função GP020AUT deverá ser realizada a partir do menu via configurador:


Execução da rotina via menu do modulo SIGAGPE:


Caso de sucesso:

Caso de erro:

04. TABELAS UTILIZADAS

  • SRA - Funcionários
  • SRB - Dependentes