Configurador

Log de inclusão e alteração no Protheus

Escritor por Eduardo Biazutto

 

Em determinados processos precisamos que o sistema informe o usuário de inclusão e/ou usuário de alteração do registro. Este será o tema abordado neste artigo.

 

Iremos incluir campos reservados do sistema para gravação e campos virtuais para exibição do nome do usuário, pois a informação armazenada pelo sistema está “criptografada”.

 

Em nosso exemplo, iremos incluir os campos log de inclusão e log de alteração no contas a pagar. Desta forma todos os títulos que forem inclusos ficarão com o nome de quem fez a inclusão e/ou alteração, mesmo que este título tenha sido gerado por outra rotina, como Documento de Entrada ou Comissão de Vendas por exemplo.

 

Para efetuarmos tal ação, vá a Base de Dados no Configurador, e edite a tabela que quer incluir este campo. Em nosso exemplo, efetuaremos esta tarefa na tabela SE2 (Contas a Pagar).

 

1

 

Agora, clique em Campos, e clique no ultimo botão da direita com nome de Campos Reservados.

 

2

 

Marque o campo Log de Inclusão e clique em Finalizar.

 

3

 

Repita o processo e inclua o campo Log de Alteração.

 

Como podemos ver abaixo os campos E2_USERLGI(Log de Inclusão) e E2_USERLGA(Log de Alteração) estão sendo exibidos no dicionário de dados.

 

4

 

Estes campos armazenarão o log dos usuários, porém, eles ficam com a informação criptografada, então teremos que incluir novos campos virtuais com uma função para visualizarmos os nomes dos usuários.

Fique atualizado, É GRÁTIS!
Cadastre o seu endereço de e-mail e fique por dentro de todas as atualizações da AcademiaERP.
Não enviamos spam.

Portanto inclua dois campos virtuais para exibição do nome dos usuários.

 

5

 

Na aba opções, inclua nos campos “Inic. Padrão” e “Inic. Browse“ a função USRFULLNAME(SUBSTR(EMBARALHA(SE2->E2_USERLGI,1),3,6))

 

6

 

Agora crie também outro campo para exibirmos o log de  alteração.

 

7

 

Alterando apenas o campo de referência da função USRFULLNAME(SUBSTR(EMBARALHA(SE2->E2_USERLGA,1),3,6))

 

8

 

Pronto, feito tudo isso é só clicar no botão Atualizar do Configurador.

 

Obs: Esta função serve para qualquer tabela, a única coisa que deverá alterar é o campo de referência.

 

Exempo: Se for efetuar esta tarefa no pedido de vendas a função ficaria da seguinte forma:

 

Inclusão:

 

USRFULLNAME(SUBSTR(EMBARALHA(SC5->C5_USERLGI,1),3,6))

 

Alteração:

 

USRFULLNAME(SUBSTR(EMBARALHA(SC5->C5_USERLGA,1),3,6))

 

Obrigado pessoal, até breve.

 

Sobre o Autor

Eduardo Biazutto

8 comentários

  • Entendi Eriberto.

    O problema dessa abordagem é que esses campos reservados são gravados automaticamente (no caso do USERLGI E USERLGA) no término das funções de gravação de cada rotina. Logo, não existe uma forma de gatilhar facilmente esse valor com o EMBARALHA para outro campo 🙁

    Uma forma de resolver esse problema é criar um ponto de entrada que grave o seu campo real após o término da gravação do registro principal.

    Se a rotina de manutenção já for customizada, isso não deve ser problema algum. Se for uma rotina do padrão, você pode procurar por pontos de entrada após a gravação e utilizar essa abordagem para gravar os seus campos customizados.

    Espero ter ajudado!

  • Boa tarde Flávio e Eriberto,

    Refiz o processo que o colega Eduardo descreveu e funciona perfeitamente. Segue revisão dos passos seguidos:

    1- Adição dos campos reservados;
    2- Criação dos campos virtuais como: C (20), preenchimento dos campos de inicializador padrão e inicializador de browse utilizando a função EMBARALHA (final do artigo), marcação dos campos para exibição em Browse;
    3- Cadastramento de um novo registro;

    Pronto, as informações de quem cadastro e/ou alterou esse registro estão disponíveis no Browse e na manutenção do registro.

    Browse

    Lembrando que essa solução só funciona para registros novos! Como os campos reservados não existiam anteriormente, não existe uma forma de que o sistema recupere as informações de quem realizou esses cadastros.

    Se ainda estiverem com problemas, por favor, envie e-mail com o dicionário desses campos para contato at academiaerp.com.br

    Qualquer dúvida, estamos à disposição

  • Cara queria realizar uma proeza fazem 2 dias e não estou conseguindo. Queria filtrar esse campo mais colo ele é virtual não rola então como jogar esses dados em um campo real ? eu mudo a opção para real e não aparece nada.

    Abç

    • Olá Manoel,

      Então, não tem muito segredo mesmo nesse tipo de operação. Como o campo era virtual, quando vc altera ele pra Real, o Configurador apenas dá um ALTER TABLE na tabela e coloca uma coluna a mais, com o seu valor inicial (da base de dados) em branco.

      Se você precisa que os valores que eram preenchidos como virtuais apareçam, vc tem duas opções: criar um .PRW para executar o RecLock .F. na tabela de cabo à rabo (Do While !EOF() ) ou usar o Replace do APSDU.

      Imaginando que a lógica para preencher o campo seja simples, utilize a função Replace do APSDU selecionando esse campo e, no campo de condição ou regra, utilize a lógica que vc estava utilizando para preencher o campo quando ele era virtual. O APSDU utilizará macroexecução nesse comando e irá preencher a coluna corretamente 😉

      Me avise do resultado.

      Abraços

Deixe um comentário

Dúvida?