Tempo aproximado para leitura: 00:05:06 min
Dúvida
Quais as regras fundamentais para a criação de fórmulas no Configurador de Tributos?
Ambiente
Cross Segmentos - TOTVS Backoffice (Linha Datasul) - Configurador de Tributos (CFT) – A partir da release 12.1.20
Solução
Alguns detalhes são importantes e requerem atenção no momento da criação de uma configuração/fórmula no Configurador de Tributos:
- Separar todos os elementos com um espaço;
- Usar vírgula como separador decimal;
- Usar valores de porcentagem no formato decimal, por exemplo: 18% = 0,18
Para testes condicionais deve ser utilizada a função INT, ou seja, para que o Sistema considere uma parte da fórmula somente quando uma das condições for verdadeira.
Por exemplo, o trecho ( INT ( COD_DEST_MERC = 1 ) * VAL_BASE_ICMS_ST ) só será calculado quando a variável código do destino da mercadoria estiver com o valor igual a 1, que significa industrialização/revenda.
Exemplos de memória de cálculo de fórmula:
Memória Cálculo:
( INT ( 2 = 1 ) * 1.462,17 ) + ( INT ( 2 = 2 ) * ( ( 1.329,25 + ( 132,92 * INT ( 1 <> 3 )) + 0 ) * ( 1 - 0 ) / ( 1 - 0,18 ) ) )
Fórmula:
( INT ( COD_DEST_MERC = 1 ) * VAL_BASE_ICMS_ST ) + ( INT ( COD_DEST_MERC = 2 ) * ( ( MERC_LIQ + ( VAL_IPI * INT ( COD_TRIB_IPI <> 3 ) ) + DESPESAS ) * ( 1 - ALIQ_ICMS ) / ( 1 - ALIQ_ICMS_ST ) ) )
As condições implementadas com a função INT são resolvidas da seguinte forma:
- Primeiro o Sistema obtém o valor Verdadeiro ou Falso a partir da condição, por exemplo: a expressão INT ( 2 = 1 ) é transformada em INT ( Falso ).
- Em seguida a função INT converte o valor Verdadeiro na constante 1 e o valor Falso na constante 0.
- Então o valor 0 - zero ou 1 - um obtido com a função INT é multiplicado por uma expressão que representa o resto da fórmula.
- Assim, quando a condição for verdadeira o valor da expressão numérica é multiplicado por 1, mantendo o valor calculado.
- E quando a condição for falsa, o valor da expressão numérica é multiplicado por 0, zerando o valor que tinha sido calculado.
Observe que esta fórmula do exemplo possui dois grandes blocos ligados pelo sinal de adição, e no início de cada bloco existe a mesma condição, porém, invertida:
Primeira parte da fórmula:
( INT ( 2 = 1 ) * 1.462,17 )
Segunda parte da fórmula:
+ ( INT ( 2 = 2 ) * ( ( 1.329,25 + ( 132,92 * INT ( 1 <> 3 )) + 0 ) * ( 1 - 0 ) / ( 1 - 0,18 ) ) )
Como as condições que precedem cada bloco da fórmula são opostas, significa que o resultado da função INT de uma delas será igual a 1 e o resultado da outra será igual a 0, por exemplo:
a) Se a variável COD_DEST_MERC for igual a 1; então a condição aplicada no primeiro bloco que verifica se o valor é 1, terá como resultado o valor 1 que é equivalente a verdadeiro, e este resultado: 1, será multiplicado pelo valor da primeira expressão aritmética que segue a condição, mantendo o valor da expressão.
b) Neste caso, quando a variável COD_DEST_MERC é igual a 1; então a condição aplicada no segundo bloco que verifica se o valor é 2, terá como resultado o valor 0 que é equivalente a falso, e este resultado: 0, será multiplicado pelo valor da segunda expressão aritmética que segue a condição, zerando o valor da expressão.
O sinal de adição entre os dois blocos soma o resultado das duas expressões aritméticas para dar o resultado final da fórmula, como as condições que precedem cada expressão são opostas, um dos lados da soma sempre será igual a zero.
Nesta fórmula do exemplo, também encontramos a seguinte condição:
( MERC_LIQ + ( VAL_IPI * INT ( COD_TRIB_IPI <> 3 ) ) + DESPESAS )
Neste caso, temos uma expressão que soma o valor da mercadoria com o valor das despesas e também soma o valor do IPI - Imposto Sobre Produto Industrializado, quando o código de tributação do IPI for diferente de 3 - equivalente a tributação Outras.
Para implementar a soma condicional do valor do IPI, usamos a função INT verificando o código de tributação do IPI. Então, sempre que o código de tributação do IPI for diferente de 3 - Outras, a função INT retornará o valor 1 - verdadeiro, que será multiplicado pelo valor do IPI que então será considerado no cálculo da soma.
Entretanto, quando o código de tributação do IPI é igual a 3 - Outras, a função INT retornará o valor 0 - falso, que será multiplicado pelo valor do IPI resultando em 0 - zero, desta forma o valor do IPI não será considerado no cálculo da soma.
Saiba mais
Para mais informações referente ao cadastro de fórmulas e configurações, acesse o link Liberação do Cadastro de Fórmulas pelo Configurador de Tributos
0 Comentários