Árvore de páginas

Produto:

Microsiga Protheus

Ocorrência:

Como utilizar a rotina automática do Cadastro de Funcionários (GPEA010) para alterar o NOME do funcionário?

Passo a passo:



A partir da release 12.1.25 o primeiro índice da tabela de Funcionários foi alterado para compor:

Filial + Matrícula + Nome (RA_FILIAL + RA_MAT + RA_NOME) 

Dessa maneira para seguirmos com o ajuste desse item devemos ALTERAR o índice utilizado durante a execução da rotina automática de forma que o novo índice atenda às condições abaixo:

  1. Possuir o campo FILIAL no primeiro campo
  2. Possuir dados no índice que sejam relevantes para a alteração, como por exemplo:
    1. RA_FILIAL+RA_MAT+RA_PROCES (índice 15)
    2. RA_FILIAL+RA_PROCES+RA_DEPTO+RA_MAT (índice 23)

      Agora um índice que não seria relevante, seriam esses:
      RA_FILIAL+RA_CIC => Pois pode existir mais de 1 matrícula com o mesmo CPF,
      RA_FILIAL+RA_CODFUNC => Pois pode existir mais de 1 matrícula com o mesmo código de Função.

  3. Possuir o campo do índice escolhido no array de dados de cabeçalho.


Após a escolha do índice, este deverá ser informado no FINAL do array de dados do cabeçalho na rotina automática conforme exemplo abaixo:


#INCLUDE "Protheus.CH"
User Function GP010AUT()

Local aCabec     := {}
Local cMatricula := "000001"                                                    

PRIVATE lMsErroAuto := .F.

aCabec   := {}

DbSelectArea("SRA")
DbSetOrder(1)
DbGotop()
If DbSeek(xFilial("SRA")+cMatricula)

    aadd(aCabec,{"RA_FILIAL"             ,SRA->RA_FILIAL                                                 ,Nil        })
    aadd(aCabec,{"RA_MAT"               ,SRA->RA_MAT                                                   ,Nil        })
    aadd(aCabec,{'RA_NOME'             ,PadR("AGAMENON",TamSx3('RA_NOME')[1])    ,Nil        })
    aadd(aCabec,{'RA_PROCES'           ,SRA->RA_PROCES                                             ,Nil        })
    aadd(aCabec,{"INDEX"              ,15                                                                      ,Nil        })

    

    // Opção igual a  4 - Alteração
    MSExecAuto({|x,y,k,wGPEA010(x,y,k,w)},NIL,NIL,aCabec,4)

    If lMsErroAuto  
        MostraErro()
    Else 
        Alert("ALTERADO COM SUCESSO!")
    EndIf
Endif

Return



  Observações:

Documentação de apoio para criação da rotina automática:

Exemplo de Rotina Automática - Cadastro de Funcionários - GPEA010