Árvore de páginas

CONTEÚDO

  1. Visão Geral
  2. Operadores matemáticos
    1. "+" (soma)
    2. "-" (substração)
    3. "*" (multiplicação)
    4. "/" (divisão)
    5. "()" (parenteses)
  3. Operadores lógicos
    1. "AND" (e)
    2. "OR" (ou)
    3. "!=" (diferente)
    4. "==" (igual)
    5. ">" (maior que)
    6. "<" (menor que)
    7. ">=" (maior ou igual a)
    8. "<=" (menor ou igual a)
  4. Funções de utilidade
    1. "IN"
    2. "IS_EMPTY"
    3. "IS_NUMBER"
    4. "COALESCE"


01. VISÃO GERAL

Na criação de fórmulas e regras, algumas funções e operadores estão disponíveis para trazer mais flexibilidade, a fim de personalizar o TOTVS CRM via App Builder e garantir a correta execução das regras do seu negócio.

Tais operadores e funções estão disponíveis em todos os locais que permitem a inserção de uma expressão em formato texto, usadas em fórmulas e regras de validação.

Exemplo de caixa de texto para expressão:


02. OPERADORES MATEMÁTICOS

Os operadores matemáticos são utilizados para realizar operações matemáticas entre números racionais (ℚ), permitindo realizar cálculos e definições de precedência nas expressões.

a."+" (soma)

Calcula a soma de dois valores.

Sintaxe: valor1 + valor2

(na qual, valor1 e valor2 precisam ser um número ou a expressão deve resolver para um número).


Exemplos:

10 + 2  (resultará em 12)
orders._areaContratada + 50 (resultará em uma operação na qual o valor que está no atributo _areaContratada será somado com o valor 50).

orders._areaContratada + orders._fator (resultará em uma operação na qual o valor que está no atributo orders_areaContratada será somado com o valor que está no atributo orders._fator).

b."-" (substração)

Calcula a diferença entre dois valores.

Sintaxe: valor1 - valor2

(na qual, valor1 e valor2 devem ser um número ou a expressão deve resolver para um número).


Exemplos:

10 - 2 (resultará em 8)
orders._areaContratada - 10 (resultará em uma operação na qual o valor que está no atributo _areaContratada terá valor 10 subtraído de seu valor)

orders._areaContratada + orders._fator (resultará em uma operação na qual o valor que está no atributo orders_areaContratada será subtraido pelo valor que está no atributo orders._fator)c."*" (multiplicação)

c."*" (multiplicação)

Multiplica o valor a esquerda pelo valor a direita:

Sintaxe: valor1 * valor2

(na qual valor1 e valor2 devem ser um número ou a expressão deve resolver para um número).


Exemplos:

10 * 2  (resultará em 20)
orders._areaContratada * 10 (resultará em uma operação na qual o valor que está no atributo _areaContratada será multiplicado por 10)

orders._areaContratada + orders._fator (resultará em uma operação na qual o valor que está no atributo orders_areaContratada será multiplicado pelo valor que está no atributo orders._fator).

d."/" (divisão)

Divide o valor da esquerda (numerador) pelo valor da direita (denominador).

Sintaxe: valor1 / valor2

(na qual valor1 e valor2 devem ser um número ou a expressão deve resolver para um número).


Exemplos:

10 / 2 (resultará em 5)
orders._areaContratada / 2 (resultará em uma operação na qual o valor que está no atributo _areaContratada será multiplicado por 10)

orders._areaContratada + orders._fator (resultará em uma operação na qual o valor que está no atributo orders_areaContratada será dividido pelo o valor que está no atributo orders._fator).

e."()" (parenteses)

Especifica que as expressões entre parênteses são avaliadas em primeiro lugar. Todas as outras expressões são avaliadas com a precedência do operador.

O operador de parênteses pode ser utilizado em toda a expressão e pode ser usado para definir a precedência de operadores matemáticos, operadores lógicos e funções de qualquer categoria.


Exemplos:

valor1 * (valor2 + valor3) (define a precedência para realizar a soma do valor2 e valor3 primeiro, e o resultado da soma será multiplicado pelo valor1).

orders._areaContratada * (orders._fator + 10) (define a precedência para realizar a soma entre o valor que está no atributo orders._fator com o valor 10 , e o resultado da soma será multiplicado pelo valor que está no atributo orders._areaContratada).


03. OPERADORES LÓGICOS

Os operadores lógicos são utilizados para realizar comparações na lógica booleana, sendo que o resultado dos operadores sempre será um valor booleano, TRUE ou FALSE.

Os operadores lógicos são essenciais para a construção de expressões utilizadas em contextos de expressões (e.g. regras de validação), nos quais o resultado final esperado da expressão é um valor booleano.

a. "AND" (e)

Avalia se dois valores lógicos booleanos são equivalentes.

O resultado da operação lógica segue a tabela:

Condição ACondição BResultado do AND
VVV
VFF
FVF
FFF


b. "OR" (ou)

Avalia se pelo menos um dos vários valores ou expressões é verdadeiro(a).

O resultado da operação lógica segue a tabela:

Condição ACondição BResultado do OR
VVV
VFV
FVV
FFF


c. "!=" (diferente)

Avalia se dois valores não são equivalentes.

Este operador pode ser utilizado para comparar valores de qualquer natureza, sendo o seu resultado verdadeiro apenas quando o valor a esquerda não for equivalente (não é igual) ao valor da direita.


Exemplos:

2 != 2 (FALSE, 2 não é diferente de 2).
TRUE != FALSE (TRUE, TRUE é diferente de FALSE).

orders.total != orders.discount (resultará em uma verificação na qual só resultará TRUE se o valor contido no atributo orders.total for diferente do valor contido no atributo orders.discount).

customers.birthday != "2020-06-05" (Usar a máscara YYYY-MM-DD)

d. "==" (igual)

Avalia se dois valores são equivalentes. 

Este operador pode ser utilizado para comparar valores de qualquer natureza, sendo o seu resultado verdadeiro apenas quando o valor a esquerda for equivalente (igual) ao valor da direita.


Exemplos:

2 == 2 (TRUE, 2 é igual a 2).
TRUE == FALSE (FALSE, TRUE não é igual a FALSE).

orders.total == orders.discount (resultará em uma verificação na qual só resultará TRUE se o valor contido no atributo orders.total for igual ao contido no atributo orders.discount).

customers.birthday == "2020-06-05" (Usar a máscara YYYY-MM-DD)

e. ">" (maior que) 

Avalia se um valor é menor que o outro após o símbolo.

Este operador deve ser utilizado apenas para realizar a comparação de valores numéricos ou em casos em que a expressão resulta em um valor numérico.


Exemplos:

2 > 2 (FALSE, 2 não é maior que 2)
2 > 3 (FALSE, 2 não é maior que 3)

3 > 2 (TRUE, 3 é maior que 2);

orders.total > orders.discount (resultará em uma verificação na qual TRUE só será resultado se o valor contido no atributo orders.total for maior que o valor contido no atributo orders.discount).

customers.birthday > "2020-06-05" (Usar a máscara YYYY-MM-DD)

f. "<" (menor que)

Avalia se um valor é maior que aquele após o símbolo.

Este operador deve ser utilizado apenas para realizar a comparação de valores numéricos ou em casos em que a expressão resulta em um valor numérico.


Exemplos:

2 < 2 (FALSE, 2 não é menor que 2)
2 < 3 (TRUE, 2 é menor que 3)

3 < 2 (FALSE, 3 não é menor que 2)

orders.total < orders.discount (resultará em uma verificação na qual só resultará TRUE se o valor contido no atributo orders.total for menor que o valor contido no atributo orders.discount).

customers.birthday < "2020-06-05" (Usar a máscara YYYY-MM-DD)




g. ">=" (maior ou igual a)

Avalia se um valor é maior que ou igual àquele após o símbolo.

Este operador deve ser utilizado apenas para realizar a comparação de valores numéricos ou a expressão resulta em um valor numérico.


Exemplos:

2 >= 2 (TRUE, 2 é igual a 2)
2 >= 3 (FALSE, 2 não é maior que 3)

3 >= 2 (TRUE, 3 é maior que 2)

orders.total >= orders.discount (resultará em uma verificação na qual só resultará TRUE se o valor contido no atributo orders.total for igual ou maior que o valor contido no atributo orders.discount).

customers.birthday >= "2020-06-05" (Usar a máscara YYYY-MM-DD)



h. "<=" (menor ou igual a)

Avalia se um valor é menor que ou igual aquele após o símbolo. 

Este operador deve ser utilizado apenas para realizar a comparação de valores numéricos ou a expressão resulta em um valor numérico.


Exemplos:

2 <= 2 (TRUE, 2 é igual a 2)
2 <= 3 (TRUE, 2 é menor que 3)

3 <= 2 (FALSE, 3 não é menor que 2)

orders.total <= orders.discount (resultará em uma verificação na qual só resultará TRUE se o valor contido no atributo orders.total for igual ou menor que o valor contido no atributo orders.discount).

customers.birthday <= "2020-06-05" (Usar a máscara YYYY-MM-DD)

04. FUNÇÕES DE UTILIDADE

As funções de utilidade permitem construir expressões complexas para atender regras avançadas de negócio. Com é elas é possível realizar uma série de operações booleanas sobre diversos tipos de dados, trazendo mais flexibilidade para o usuário Creator.

a. "IN"

Compara se um determinado valor se encontra dentro de uma lista de valores. Esse operador suporta listas estáticas (informadas na expressão), listas de opções e objetos multi-itens;

Sintaxe: IN (valor, lista)

(na qual o parâmetro valor pode ser um valor estático numérico, booleano ou texto e o parâmetro lista pode ser uma lista estática, subobjeto multi-itens ou uma lista de opções).


Exemplos:

IN("Honda", ("Toyota", "Chevrolet", "Ford", "Honda")) (verifica se o texto "Honda" se encontra na lista estática fornecida)
IN(customer._texto, customer._listaDeOpcao) (verifica se o valor contido no atributo customer._texto se encontra na lista de opções cadastrada conforme o atributo customer._listaDeOpcao, conforme o valor cadastrado no campo "Valor" no cadastro da lista de opções)

IN("John Doe", customer._sobobjetoMultiItens._nome) (verifica se ao menos um registro do subobjeto multi-itens do atributo customer._sobobjetoMultiItens contém um registro cujo atributo _nome tem o valor igual a 'John Doe')

IN("John Doe", customer._sobobjetoMultiItens._nome) (verifica se ao menos um registro do subobjeto multi-itens do atributo customer._sobobjetoMultiItens contém um registro cujo atributo _nome tem o valor igual a 'John Doe')

- IN("John Doe", customer._sobobjetoMultiItens._nome), verificará registro a registro verificando se o texto 'John Doe' está presente no atributo _nome para o subobjeto multi-itens informado, sendo identificado que o segundo registro atende ao critério.


b. "IS_EMPTY"

Determina se uma expressão tem um valor e, caso não tenha, retorna VERDADEIRO. Se ela contiver um valor, a função retornará FALSO.

Pode ser utilizado para verificar se um atributo/campo foi preenchido pelo usuário, simulando regra de obrigatoriedade e permitindo criar regras de obrigatoriedade condicional.

Sintaxe: IS_EMPTY(valor)

(na qual o valor pode ser um valor estático numérico, booleano, texto ou lista de opções, ou uma expressão que retorne um valor de um tipo conhecido pelo App Builder).

Pode ser usado em:

* Texto estático ou atributos do tipo texto que estão vazio (e.g. "") ou somente com espaços (e.g. "    ") retornam VERDADEIRO, ou seja, são tratadas como texto vazio;

* Listas de opções serão consideradas vazias se não possuírem nenhum item;

* Atributos serão considerados vazios se não possuírem um valor;

* Subobjetos multi-itens serão considerados vazio se não possuírem registros/itens.


Exemplos:

IS_EMPTY("texto") (FALSE o texto estático não está vazio)
IS_EMPTY("            ") (TRUE o texto estático somente possui espaços, sendo considerado vazio)

IS_EMPTY(customer._subobjetoMultiitens) (Se customer._subobjetoMultiitens não possuir registros/itens, será retornado TRUE, caso contrário retornará FALSE)

IS_EMPTY(customer.name) (Se o atributo name estiver vazio, retornará TRUE, caso contrário retornará FALSE).


c. "IS_NUMBER"

Determina se um valor é um número e retorna VERDADEIRO caso seja. Caso contrário, retorna FALSO.

Textos que representam um número (e.g. "10") retornam VERDADEIRO.

Sintaxe: IS_NUMBER(valor)

(na qual o valor pode ser um valor estático numérico, booleano, texto ou lista de opções, ou uma expressão que retorne um valor de um tipo conhecido pelo App Builder).


Exemplos:

IS_NUMBER("texto") (FALSE o valor estático informado não é um número e sim um texto)
IS_NUMBER(10) (TRUE o valor estático informado é um número)

IS_NUMBER(customer._subobjetoMultiitens) (FALSE, esta expressão retorna o subobjeto multi-itens, o qual não é do tipo numérico)

IS_NUMBER(customer._subobjetoMultiitens._atributoNumerico) (ERRO de sintaxe/semântica. a função IS_NUMBER não opera sobre propriedades internas de atributos do tipo subobjeto multi-itens)

IS_NUMBER(customer.name) (se o atributo name for do tipo número ou possuir um texto que representa um número, retornará TRUE, caso contrário retornará FALSE)

d. "COALESCE"

        Determina se uma expressão tem um valor e, caso não tenha, retorna uma expressão substituta.

Se a expressão tiver uma valor, retornará o valor passado inicialmente a função. 

              Sintaxe: COALESCE (valor, sub1, sub2, ..., subN)

              (na qual o "valor" é o valor ou expressão a ser vrificado se não está vazio, os valores sub1, sub2 e subN são valores ou expressão que sbstituirão o valor caso este esteja nulo);

              (aceita valores ou expressões para sbstituição, as quais também serão verificados se estão vazios, retornando o primeiro valor não vazio).


Exemplos:

COALESCE(null, 10) (retorna 10, pois o primeiro valor é NULL - vazio)
COALESCE("", 10) (retorna 10, pois o primeiro valor é um texto vazio)

COALESCE(" ", 10) (retorna 10 pois o primeiro valor é um texto somente com espaços que é considerado vazio)

COALESCE(" ", NULL, 23, 20) (retorna 23, pois o primeiro valor é um texto somente com espaços que é considerado vazio e o segundo é NULL - vazio)

COALESCE(customer.name, "John Doe") (se o atributo customer.name estiver vazio será retornado o texto 'John Doe')




Artigos relacionados

APIs de integração