Pular para o conteúdo
Início » 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 )