Pular para o conteúdo
Início » Ponto de Entrada Protheus

Ponto de Entrada Protheus

Ponto de entrada protheus

Entenda o que é e como funciona o Ponto de Entrada Protheus

 

Entenda o Ponto de Entrada Protheus

 

Ponto de Entrada Protheus são chamadas de Programas ADVPL colocadas em pontos estratégicos nas funções padrões do sistema e que originalmente não fazem nada. O conceito utilizado para a Criação de um Ponto de Entrada é o mesmo da herança adotado nas linguagens para Banco de Dados, ou seja, (Store Procedures).

Assim que o desenvolvedor identificar a necessidade de uma intervenção nestes pontos, basta criar a rotina, dar a ela o nome específico citado na documentação do Protheus e compilá-la.

No momento em que a Rotina Padrão for disparada e passar pela customização do Ponto de Entrada, o mesmo também será executado.

Podemos dizer que esta é a maneira mais prática de intervenção aos Programas Padrões do sistema sem a necessidade de alteração dos mesmos, fazendo com que estas implementações passem despercebidas pelo usuário no momento de sua execução.

Porém é necessário que saibamos muito bem sobre a Lógica do Programa em questão e até mesmo qual é a situação de memória utilizada naquele momento.

Objetivos

Um ponto de entrada é uma User Function desenvolvida com a finalidade de interagir com uma rotina padrão da aplicação ERP.

A User Function deverá ter um nome pré-estabelecido no desenvolvimento da rotina padrão do ERP, e de acordo com esta pré-disposição e o momento no qual o ponto de entrada é executado durante um processamento, ele poderá:

  • Complementar uma validação realizada pela aplicação;
  • Complementar as atualizações realizadas pelo processamento em tabelas padrões do ERP;
  • Implementar a atualização de tabelas especificas durante o processamento de uma rotina padrão do ERP;
  • Executar uma ação sem processos de atualizações, mas que necessite utilizar as informações atuais do Ambiente, durante o processamento da rotina padrão para determinar as características do processo;
  • Substituir um processamento padrão do Sistema por uma regra específica do cliente, no qual o mesmo será implementado.

Premissas e Regras

Um ponto de entrada não deve ser utilizado para outras finalidades senão para as quais o mesmo foi pré-definido, sob pena de causar a perda da integridade das informações da base de dados ou provocar eventos de erro durante a execução da rotina padrão.

Um ponto de entrada deve ser transparente para o processo padrão, de forma que todas as tabelas, acessadas pelo ponto de entrada e que sejam utilizadas pela rotina padrão, deverão ter sua situação imediatamente anterior à execução do ponto restaurado ao término do mesmo, e para isto recomenda-se o uso das funções GETAREA() e RESTAREA().

GETAREA()

Função utilizada para proteger o ambiente ativo no momento de algum processamento específico. Para salvar uma outra área de trabalho (alias) que não o ativo, a função GetArea() deve ser executada dentro do alias: ALIAS->( GetArea() ).

Retorno: Array contendo {Alias(),IndexOrd(),Recno()}

RESTAREA()

Função utilizada para devolver a situação do ambiente salva, através do comando GETAREA(). Deve-se observar que a última área restaurada é a área que ficará ativa para a aplicação.

Sintaxe: RESTAREA(aArea)

Retorno: aArea Array contendo {cAlias, nOrdem, nRecno}, normalmente gerado pelo uso da função GetArea().

Como um ponto de entrada não é executado da forma tradicional, ou seja, ele não é chamado como uma função, ele não recebe parâmetros. A aplicação ERP disponibiliza uma variável de Sistema denominada PARAMIXB, a qual recebe os parâmetros da função chamadora e os disponibiliza para serem utilizados pela rotina customizada.

A variável PARAMIXB não possui um padrão de definição nos códigos fontes da aplicação ERP, desta forma seu tipo pode variar de um conteúdo simples (caractere, numérico, lógico e etc.) a um tipo complexo como um array ou um objeto. Assim, é necessário sempre avaliar a documentação sobre o ponto, bem como proteger a função customizada de tipos de PARAMIXB não tratados por ela.

Quando criar

O ponto de entrada tem resultado quando permite que um processo possa ser modificado, desde que ele não seja crítico para o sistema.

Exemplo: Montagem das parcelas de pagamento de um pedido

Ele é útil em processos que podem ser diferentes de acordo com o tipo de negócio de cada empresa ou estratégia adotada.

Ex: Relatório de Pedido, Cadastro de Clientes

Sintaxe

Function TMKA010()

Local lRetorno := .F.

Local LTMKMCL := Existblock(“TMKMCl”) // O “Existblock” detecta se existe uma função no repositório

If lTMKMCL

lRetorno := Execblock(“TMKMCI”,.F.,F.,{aValor}) // aValor é um array que seria recebido pelo usuario

Endif

Return( lRetorno )

Estude para provas de certificações em TI com os simulados Bynem

Veja também: