Árvore de páginas


CONTEÚDO

  1. Visão Geral
  2. Fórmulas - Definições
  3. Fórmulas - Montagem
    1. Fórmulas Complexas
  4. Gravação da fórmula
  5. Copiar Fórmula
  6. Roteiro de Cálculo


01. VISÃO GERAL

Será apresentado a maneira de criar uma fórmula de usuário, com as opções disponíveis no cadastro, e posteriormente inseri-la no roteiro de cálculo.


02. FÓRMULAS - DEFINIÇÕES


Através do menu Atualizações >Definições de cálculo >Fórmulas, devem ser informados os dados que definem e identificam a fórmula, dando a ela um nome. Os principais campos são:

    • Cod. Fórmula: Informe o código que identificará a fórmula, utilizando letras e/ou números, sem caracteres especiais.
    • Desc.Formula: Informe a descrição da fórmula. Quanto mais objetiva a descrição, mais fácil será seu entendimento na localização.
    • Retorno: Selecione um resultado para a fórmula, geralmente um mnemônico, sendo esta informação opcional.
    • Obs. Fórmula: Inclua neste campo informações adicionais, como mais detalhes da fórmula, sugerindo exemplos etc. Esta informação também é opcional, mas importante para quem dar manutenção saber detalhes sobre a fórmula.


03. FÓRMULAS - MONTAGEM

Nesta pasta deve-se construir efetivamente a estrutura da fórmula. A estrutura da fórmula será exibida em duas áreas distintas:

Na área à esquerda, no canto superior, destaca-se os itens que podem ser incluídos na estrutura da fórmula, bem como opções de manutenção da linha posicionada.


Os seguintes botões estão disponíveis:

- Incluir uma [Condição] na formula - <F5>

A "Condição" é o mesmo que o comando "IF" das linguagens de programação. Entretanto, não existe o comando "ELSE" na montagem da fórmula, sendo necessário inserir todos os "IFs" necessários para atender todas as condições possíveis.

- Incluir uma [Execução] na formula - <F6>

Aqui é usado para definir uma linha que será executada, podendo ser uma atribuição de variáveis ou uma função pré-existente, por exemplo.

- Incluir um [Enquanto] na formula - <F7>

O "Enquanto" é o mesmo que o comando "While" das linguagens de programação. 

- Incluir uma [Mensagem] na formula - <F12>

A "Mensagem" é um comentário livre, que não será compilado ou executado. 

- Editar Fórmula - <F8>

Usado para editar a linha da estrutura que estiver posicionada.

- Pesquisar

Usado para posicionar em uma sequência especifica da fórmula, referente ao campo RC3_SEQFOR

- Recortar

Usado para recortar a linha posicionada da fórmula.

- Copiar

Usado para copiar a linha posicionada da fórmula.

- Colar

Usado para colar a linha previamente recortada ou copiada da fórmula.

- Excluir a sequência atual da fórmula

Exclui a linha da fórmula posicionada na estrutura, e tudo que estiver "dentro" dela, no caso de uma condição ou sequência.

No momento da inclusão ou operação de "colar" um item (condição, enquanto, execução) o sistema pergunta em que nível deverá ser criado:

    • Novo item – o sistema cria um novo item no mesmo nível do item em que está posicionado.
    • Subitem – o sistema cria um novo item no nível abaixo do item em que está posicionado, só deve ser utilizado para incluir itens dentro de condições ou sequências.



Na área da direita é apresentada a descrição de cada item da fórmula. É por esta área que deve ser feita a manutenção, considerando as definições da estrutura.

Os botões abaixo estão disponíveis:

- Operadores: Exibe os operadores disponíveis quando posicionado dentro dos campos de operadores (Op. 1, Op. 2 e Op. 3).

- Confirma: Confirma as alterações efetuadas na linha.

- Cancela: Cancela as alterações efetuadas na linha.


Os campos de "Descrição", "Expressão", "Operadores" e "Resultado" podem ou não estar disponíveis e devem ser preenchidos de acordo com o tipo de item que esta sendo incluído ou alterado.

    • Item: Mensagem

Deve ser informado apenas os campos "Resultado" e "Descrição". Via de regra, usa-se o mesmo conteúdo nos dois campos.


    • Item: Condição

Obrigatoriamente deve ser informado apenas os campos "Descrição", "1ª Expressão" e "Op. 3", porém é possível dividir a expressão nos dois campos, utilizando para isso o "Op. 2"

Exemplo utilizando apenas um campo de Expressão:

Exemplo utilizando os dois campos de Expressão:


    • Item: Execução

Devem ser informados apenas os campos Descrição, Resultado.

No campo "Resultado" pode ser feita atribuição de variáveis ou ainda a execução de uma função específica, previamente compilada no RPO.

    • Item: Enquanto

Neste item devem ser informados os campos "Descrição" e "1ª Expressão". Na expressão deve ser inserido a condição para que o laço seja executado  enquanto ela for verdadeira.



O campo Operador 3 deve ser preenchido da seguinte forma

END.: Quando a condição, execução ou laço terminam no item da fórmula que está sendo incluído/alterado. Neste caso não poderá ser incluído um novo item no mesmo nível do que acabou se der incluído, somente em um subitem no caso de condição ou laço.

CNT.: Quando será feita alguma outra execução ou condição após o item da fórmula que está sendo incluído/alterado.


Fórmulas Complexas

A quantidade máxima de caracteres que podem ser utilizados dentro do campo "Expressão" é 250, caso seja incluída uma expressão maior, a fórmula não poderá ser gravada, exibindo o alerta abaixo:


Caso exista a necessidade de inclusão de uma expressão maior que 250 caracteres, algumas opções podem ser utilizadas, são elas:

      • Usar o "Op. 3" para "sequenciar" a condição em duas ou mais linhas. 
        Linha 1:
      • Linha 2, no mesmo nível da primeira:


        A estrutura da fórmula ficará assim:

      • Caso existam disjunções lógicas, como no exemplo, poderá dividir uma condição em várias (uma em cada linha). Esta é a forma recomendada por ser visualmente mais agradável e de fácil compreensão e manutenção:

      • Se houver apensas conjunções lógicas, a condição pode ser "aninhada", conforme exemplo:



      • Se a complexidade da condição não permitir uma maneira lógica de dividi-la usando uma das formas acima, ela poderá ser escrita como função de usuário, compilada no RPO e chamada diretamente na "1ª Expressão":

Função de Exemplo
User Function ChkDtAdm()
Local lRet    := .F. 

If ( AnoMes(SRA->RA_ADMISSA) == AnoMes(dDataBase) .And. Day(SRA->RA_ADMISSA) <= 10 ) .or.;
   ( AnoMes(SRA->RA_ADMISSA) == AnoMes(dDataBase) .And. Day(SRA->RA_ADMISSA) <=  20 ) .or.; 
   ( AnoMes(SRA->RA_ADMISSA) == AnoMes(dDataBase) .And. Day(SRA->RA_ADMISSA) <= 31 )
   lRet := .T. 
EndIf

Return lRet


04. GRAVAÇÃO DA FÓRMULA

Quando terminar de incluir/alterar a fórmula deverá "Salvar" para que o sistema compile o código gerado dentro do RPO de fórmulas:



Após confirmar, o sistema apresentará como ficou o código compilado:

 

E criará o fonte, que poderá ser utilizado para DEBUG, dentro da pasta "Source" que esta localizada dentro da pasta do RPO de fórmulas.

05. COPIAR FÓRMULA

As fórmulas do sistema não podem ser alteradas, porém é possível copia-la e fazer alterações especificas que o padrão não atenda, diretamente na cópia, e em seguida substituir a fórmula utilizada no roteiro de cálculo.

Dessa maneira, não é necessário reescrever toda a fórmula já pronta no padrão, reaproveitando grande parte do código já escrito e modificar apenas o necessário para atender a regra específica do cliente:

Renomear a Salvar:

Fórmula copiada:


06. ROTEIRO DE CÁLCULO

Depois de criar a fórmula, deverá entrar no cadastro do roteiro desejado, desabilitar as possíveis fórmulas padrões que serão substituídas pela fórmula específica e inclui-la na mesma posição.


IMPORTANTE!

Todas as fórmulas específicas devem terminar com o código diferente de ZERO, os múltiplos de 10 são reservados para fórmulas do sistema, podendo incluir até 9 sequências entre duas fórmulas do sistema.


No exemplo abaixo, duas fórmulas do padrão foram desabilitadas, campo "Habilitado = Não".

Estas fórmulas 00110 e 00120 foram substituídos pela fórmula 00125, que ficou posicionada conforme a sequencia numeral, logo em seguida dos roteiros substituídos. Neste cenário, qualquer valor entre 00101 e 00129 (exceto os múltiplos de 10) poderiam ser utilizados.

Na rotina de "Cadastro de Roteiro de Cálculo", em "Outras Ações", existe o botão "Recompilar Tudo". Como o nome já diz, essa opção irá recompilar todos os roteiros de cálculo existentes, mas não sem antes avaliar a necessidade da recompilação. Ou seja, ao clicar no botão o sistema irá verificar se a versão das fórmulas/roteiros (RC2/SRY) são menores que as contidas no RPO (GPFORBRA/GPROTBRA), em caso afirmativo, o sistema forçará a recompilação.

Essa opção deve ser utilizada apenas se por algum motivo o sistema apresentou problemas na compilação das fórmulas/roteiros, e só irá funcionar se o RPO de fórmulas não estiver em uso por outro processo ou usuário.