Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Migration of unmigrated content due to installation of a new plugin

...

Rotina Genérica de Auditoria

Produto:

Microsiga Protheus

Versões:

A partir da 12.1.

08 em diante

8

Ocorrência:

Chamada e utilização da Rotina Genérica de Auditoria

Ambiente:

 

Passo a passo:

Para facilitar o envio de processos para o módulo de auditoria do SIGAPLS, foi desenvolvida uma rotina genérica que pode ser chamada para realizar a inclusão destes itens no módulo de auditoria. 
Devido ao legado existente, a função deverá seguir algumas estruturas existentes, pois a auditoria do PLS é baseado nas guias de atendimento (SADT / Consulta / Odontológica e outras) e por isso, para manter a compatibilidade, é necessário observar algumas características para usar a função genérica. Caso algum dos itens não se encaixe na realidade de desenvolvimento, não será possível utilizar esta função e o módulo de auditoria do PLS.

OBSERVAÇÕES:

  1. Só é possível enviar para a auditoria processos que tenham cabeçalho e itens, além de uma tabela de críticas. Caso a tabela tenha apenas cabeçalho, não é possível o envio para a auditoria. Caso não haja críticas, é necessário criar alguma tabela para esse fim ou não será possível o uso da rotina.
  2. A campo de relacionamento entre cabeçalho e itens pode conter no máximo 18 caracteres. Ou seja, a chave de ligação entre cabeçalho e item não pode ser maior que 18 caracteres, pois na tabela de auditoria, o limite de campos para armazenamento é este.
  3. Caso na tabela de cabeçalho e item o desenvolvedor queira colocar algum campo para indicar que estão em auditoria, é obrigatório que na tabela de cabeçalho e itens este campo tenha o mesmo nome. Ou seja, se na tabela cabeçalho tenho um campo chamado ESTAUD, é obrigatório que na tabela de itens o campo que identifica que está em auditoria tenha este nome.
  4. Os campos de relacionamento entre cabeçalho e itens que serão utilizados no index deverão possuir o mesmo sufixo, ou seja, se no cabeçalho tenho XXX_CPFCLI, XXX_RGCLIE, na tabela de itens devem possuir o mesmo sufixo, como YYY_CPFCLI, YYY_RGCLIE.

Quando um registro vai para auditoria, os dados ficam armazenados na tabela B53 - Auditoria, onde é visualizada as guias e demais processos que estão em auditoria.

O método da rotina genérica encontra-se no fonte PLSA790C e para ser utilizada, é necessário instanciar a classe PLSA790C():New() e a rotina possui a seguinte estrutura:

SetAuditoGen(lRotGen, cAliOrig, cAliasIte, cAliasCri, cCodOpe, cNumCont, cMatric, cNomUsr, aAtuAItens, nAtuFil, cCpRelac, cTipGui ), onde cada parâmetro:

  • lRotGen (obrigatório) - Especifica se trata de rotina genérica. Quando utilizada, o valor deve ser .T. (verdadeiro)
  • cAliorig (obrigatório) - Alias de origem do movimento, ou seja, é a tabela cabeçalho. Deve ser passado o alias da tabela. Exemplo: "BBB"
  • cAliasIte (obrigatório) - Alias dos itens relacionados ao cabeçalho. Além disso, deve ser passado também o número do índice que faz o relacionamento com o cabeçalho. Exemplo. A tabela de itens é a BBC e o índice para buscar os dados , baseado nos dados do cabeçalho seja o índice 2, logo, deverá ser passado "BBC2"
  • cAliasCri (obrigatório) - Alias das críticas relacionadas ao cabeçalho/item. Além disso, deve ser passado também o número do índice que faz o relacionamento com o item ou cabeçalho. Exemplo. A tabela de críticas é a BBD e o índice para buscar as críticas, baseado nos dados do cabeçalho ou item, seja o índice 1, logo, deverá ser passado "BBD1"
  • cCodOpe (obrigatório) - Informar o código da operadora logada no momento.
  • cNumcont (obrigatório) - este é o campo chave de relacionamento entre cabeçalho e itens. Baseado neste campo, serão determinados as buscas pelos itens que estão em auditoria. O limite deste campo é 18 caracteres. Logo, a chave de relacionamento pode conter no máximo, 18 caracteres.
  • cMatric (opcional) - Número de matrícula do usuário. O default da função é "N/D"
  • cNomUsr (opcional) - Nome do usuário. O default da função é "Não Definido"
  • aAtuAitens (opcional) - Este array tem como finalidade informar os dados para atualizar os itens que estão em auditoria. Deve ser usado quando marcamos um cabeçalho para auditoria, pois desta forma, todos os itens irão para auditoria. Por exemplo, tenho um processo(cabeçalho) com cinco itens. Se passar os dados para este array, a rotina irá atualiza os conco itens, indicando que os cinco estão em auditoria. FORMA do ARRAY: Tabela de Itens / Nome do campo que indica auditoria (apenas nome - até 6 caracteres - se o campo se chama BBC_AUDITO, informo apenas AUDITO) / Valor que indica que está em auditoria / Chave de Pesquisa dos itens(o index utilizado para buscar o item, mas sem o xfilial) /indice utilizado para a pesquisa número do índice descrito.
    EXEMPLO: {"BBC", "Audito", "1", "BDD_INTERC+BDD_CODOPE+BDD_NUMERO", 1}
  • nAtuFil (opcional) - Número do item que deseja atualizar, quando queremos atualizar apenas um item que está em auditoria. Aqui, deve-se passar o RECNO do registro que deve ser atualizado. OBS: Nunca se deve passar aAtuAItens e nAtuFil juntos, pois são para fins diferentes. Enquanto o aAtuAItens atualiza todos os itens, o nAtuFil serve para mandar apenas um item para auditoria. Ou seja, caso tenhamos um processo com 5 itens e todos devem ser auditados, utilize o aAtuAItens. Caso destes 5 apenas um deve ir para auditoria, passar o número do RECNO desse registro para o nAtuFil, que irá realizar a atualização deste item.
  • cCpRelac (obrigatório) - Campo de relacionamento entre cabeçalho, itens, críticas e auditoria. Este campo serve para relacionar críticas, indicar campo que mostra que determinado cabeçalho/item está em auditoria e outras opções - separados por VÍRGULA. É obrigatório o preenchimento das 4 primeiras posições, que serão salvas no campo B53_CVLAUD (tamanho: 40), para tornar a rotina mais prática.

    FORMA do CAMPO/ARRAY:
    1)Nome do campo que diz que está em auditoria (sem o alias - obrigatório);
    2)Valor do campo quando em auditoria (obrigatório);
    3) Campo de sequencia ou localizador de itens e críticas (opcional);
    4) Valor do campo quando não está em auditoria (obrigatório);
    5) Nome do campo que diz se registro aprovado ou negado pela auditoria (apenas no final do processo, no Parecer);
    6) Valor do campo quando item negado pela auditoria;
    7) Valor do campo quando item aprovado pela auditoria.
    EXEMPLO: "AUDITO,SIM,SEQUEN,NAO,APRVAD,SIM,NAO"
    Quando o auditor for dar o seu parecer, o sistema irá localizar o campo que identifica que determinado item e cabeçalho está em auditoria, atualizando este campo com o valor desejado. Logo, baseado no exemplo acima, se a tabela fosse a "BBB", o sistema ia procurar o campo BBB_AUDITO (1ª posição) e colocar neste campo o valor NAO (4ª posição). E caso na tabela de itens ainda tenha campos para indicar a decisão da auditoria (Negado - Aprovado), de acordo com o nome do campo na 5ª posição, o sistema irá procurar na tabela de itens o campo BBB_APRVAD e caso tenha sido aprovado, irá inserir neste campo o valor SIM. Se negado, NAO.

  • cTipGui (opcional) - Campo para informar o tipo da guia. O default do sistema é a opção 7 - Outros, de acordo com o X3_CBOX do campo B53_TIPO.
 


Observações:

Bloco de código
firstline1
titleExemplo de código de chamada da função de rotina genérica
linenumberstrue

 

...

#Include "Protheus.CH"
#INCLUDE "PLSA790V.ch"
#INCLUDE "TOTVS.CH"
#include "TOPCONN.CH"      
 
User Function MandAudTD()
Local o790C 	 	:= Nil
Local aVlAud 	 	:= {}
Local cCmpRel	 	:= ""
Local lRotGen  	:= .T. 
Local cAliOrig 	:= "YZ3"	
Local cAliasITE	:= "YZ21"
Local cAliasCRI	:= "YZ41"
Local cCodOpe		:= PLSINTPAD()
Local cMatric		:= ""
Default cTipoInc 	:= "0"

YZ3->(DBSelectArea("YZ3"))
YZ3->(DBGOTO(1))
 
aAdd(aVlAud, {"YZ2", "Audito", "1", "YZ2_CPFCLI", 1})
cCmpRel := "Audito,1,SEQUEN,0,RETAUD,APR,NEG"
 
o790C := PLSA790C():New() //Devo instanciar a classe, para utilizar a função de rotina genérica
	o790C:SetAuditoGen(lRotGen, cAliOrig, cAliasIte, cAliasCri, cCodOpe, YZ3->YZ3_CPF, cMatric, Nil, aVlAud, Nil, cCmpRel )
o790C:Destroy()

Return