Fórmulas - Exemplos Cálculos Diversos - Regras e Condições
Ultima Atualização: 08/10/2024 Artigo de código : 12697        
Considerando regras internas para cálculo de formula, quando cálculo incorporar outros eventos (rotina diversas ou rotina formula) o evento a ser criado, deve possuir numeração superior aos eventos constantes na composição de cálculo
Exemplo: Desejo criar uma formula com cálculo que some os eventos 1000, 1001, 1002 e 1003, o evento a ser criado deve possuir superior ao que compõe o cálculo, então 1005.
1 - Funcionário Horista, quando Utilizar cada Variável?
MVALSALM = salário cheio do cadastro, sendo valor hora * 220 (lembrando que neste valor já está incluso o DSR 1010)
SALARIO = valor do salário HORA do funcionário
V(0001) = valor que o funcionário receberá de salário naquele mês, sendo variável
Quando utilizar cada variável?
MVALSALM: quando deseja fórmula com o salário do cadastro, adicional noturno, horas extras com insalubridade.
Veja o exemplo, onde o cálculo de HE é pelo salário cheio + insalubridade:
(((MVALSALM+V(1040))/220)*1.5)*REFERENCIA
SALARIO: quando deseja um cálculo sobre o salário hora do funcionário.
Exemplo: salário hora * 10%, a fórmula ficaria assim:
SALARIO*10%
V(0001): quando deseja o valor proporcional do salário, ou seja, as horas trabalhadas naquele mês, sendo variável de um mês para outro.
Exemplo: um vale refeição que será 5% sobre os dias trabalhados:
V(0001)*5%
2- Para criar eventos de hora extra com rotina fórmula, crie com a variável SALARIO e não com o evento 0001, pois quando o funcionário está de férias, por exemplo, o 0001 é proporcional aos dias trabalhados, e o correto é calcular a hora extra sobre o salário base e não sobre o proporcional.
Exemplo: Deseja somar salário + adicional noturno para calcular a hora extra 50%.
(((SALARIO+V(1110))/220)*1.5)*REFERENCIA
3 - Evento de hora extra com fórmula, onde em sua estrutura possua evento com rotina "Cálculo Anuênio" lançado na aba de lançamento automático do cadastro de funcionário.
Exemplo: Desejar somar salário + demais eventos da digitação que devam incidir (nesse caso deve ser considerado os eventos de código 0028, 0516, 0600 e 1110) + evento de anuênio para calcular a hora 100% (informar o percentual de acordo com a particularidade, exemplo 50% informar 1.5)
((SALARIO+(SOMA("0028;0516;0600;1110"))+calcanuenio(func.codfun,mvalsalm,.t.,"0513"))/220)*2*REFERENCIA
4 - Evento de hora extra com conversão
de sexagesimal para centesimal e que o sistema considere duas casas após a
vírgula (sem arredondar).
(((SALARIO+V(0005))/HORASMES)*(Int(referencia)+TRUNCA(((referencia-Int(referencia))/60*100),2)))*1.7
5 - Evento de hora extra com conversão
de sexagesimal para centesimal e que o sistema arredonde duas casas após a
vírgula quando a terceira casa é acima de 5.
(((SALARIO+V(0005))/HORASMES)*(Int(referencia)+ROUND(((referencia-Int(referencia))/60*100),2)))*1.7
6 - Se o salário * 7% for menor de 50,00 reais, será pago salário * 7%. Se este cálculo for maior, pagará 50,00.
IIF(SALARIO*7%<50,SALARIO*7%,50)
7 - Calcular 1% do salário e limitar teto mínimo a R$14,00 e máximo a R$26,50.
IIF(SALARIO*1%<14,14,IIF(SALARIO*1%>26.5,26.5,SALARIO*1%))
8 - Calcular horas extras noturnas (adicional Noturno 20%) reduzidas.
(((SALARIO/220)*1.14)*20%)*REFERENCIA
*Hora Noturna = 1.14 hora normal
9 - Se o salário * 1,5 % for menor que R$30,00, paga 30,00 e, se for maior, paga o salário * 1,5 %.
IIF(SALARIO*1.5%<30, 30, SALARIO*1.5%)
10 - Calcular o Vale Transporte para os dias trabalhados.
((SALARIO/30)*REFERENCIA)*6%
11 - Calcular sobre dias úteis o Vale Transporte.
((SALARIO/30)*DIAUTEIS)*6%
ou;
((SALARIO*6%)/30)*DIASUTEIS
12 - Calcular Pensão Alimentícia % sobre valor líquido, sendo o total de vencimentos – INSS – IRRF.
(MTOTVEN-V(9860)-V(9780))*30%
13 - Para pagar o DSR sobre eventos do sistema.
V(XXXX)/DIASUTEIS*DOMFER
*XXXX = Código do evento de fórmula criado para base de DSR.
14 - Calcular um percentual sobre o líquido.
((((MTOTVEN-MTOTDES)-V(9860))-V(9870)))*REFERENCIA/100
*Muito utilizado para Pensão Alimentícia.
15 - Calcular 10% sobre a somatória do salário + insalubridade.
(V(0001)+V(1040))*10%
16 - Calcular insalubridade (20%) sobre salário mínimo proporcional aos dias trabalhados, deduzindo faltas em dias.
(((R(0001)-R(5650))*SALMIN)/30)*20%
17 - Pensão 1/3 do líquido
(((MTOTVEN-MTOTDES)-V(9860))-V(9870))/3
18 - Hora Extra somando salário com a insalubridade
(((SALARIO+V(1040))/220)*1.5)*REFERENCIA
19 - Percentual do piso
SINDIC.PISO*% ( informar a quantidade que o cliente quer) ex: SINDIC.PISO*5%
20 - % sobre a base de INSS do holerite
iif(mtinss >inss.in_t4,(inss.in_t4 * referencia/100),mtinss*referencia/100)
ou;
((MTINSS*2)/100)
21 - Cálculo sobre Cálculo
(((((SALARIO/HORASMES)*20%)+(SALARIO/HORASMES))*50%)+(SALARIO/HORASMES)+(SALARIO/HORASMES)*20%)*REFERENCIA
Exemplo:
SALARIO/HORASMES = 4,44
SALARIO/HORASMES * 20% = 0,89
SALARIO/HORASMES + SALARIO/HORASMES * 20% = 5,33
SALARIO/HORASMES + SALARIO/HORASMES * 20% * 50% = 2,67
SALARIO/HORASMES + SALARIO/HORASMES * 20% * 50% + SALARIO/HORASMES +
SALARIO/HORASMES * 20% = 8,00
* REFERENCIA = X 2 HORAS = 16 HORAS. (RESULTADO FINAL).
22 - Desconto de valor fixo, com dedução de faltas, se houver.
IIF(V(5650)>0,12.31,4.10)
Exemplo:
Valor fixo todo mês, porém se o funcionário tiver algum evento o valor altera
5650 - Evento que irá ter para mudar o valor;
12.31 - Valor que irá ser quando tiver o evento 5650;
4.10 - valor normal a ser descontado.
Descontar fixo 4.10, mas se o funcionário tiver qualquer quantidade de faltas, irá descontar 12.31.21
23 - cálculo de Vale Transporte com teto para desconto de 6%, sobre os eventos de Comissão e DSR de comissão
IIF((V(0770)+V(1220))*6% > FUNC.TETOVT, FUNC.TETOVT, (V(0770)+V(1220))*6%)
O teto deve estar preenchido no cadastro do func. ma tela outros.
24 - Hora extra de funcionário Docente (50%) considerando todos os eventos de salário
((MTOTROT000/220)*1.5)*REFERENCIA
25 - Hora Extra noturno, considerando hora 60" (minutos)
(((SALARIO/220)*1.2)*(INT(REFERENCIA)+((REFERENCIA-INT(REFERENCIA))/60*100)))*1.5
Referência convertida automaticamente.
Exemplo:
Salário mensal R$ 1.980,00 / 220 = 9,00
9,00 * 20% = 10,80
10,80*50% = 16,20 Valor de 1 hora extra noturna sobre um
salário de R$ 1980,00
26 - Complemento de salário sobre piso do sindicato, informando valor do piso.
IIF((V(0001))<1233.94,1233.94-(V(0001)),0)
27 - Vale transporte com dedução de faltas (evento padrão 5650)
((SALARIO/30)*(R(0001)-R(5650)))*6%
28 - Adicional Noturno com Jornada reduzida
(((SALARIO/220)*1.14)*20%)*REFERENCIA
ou;
Funcionário mensalista
(((((REFERENCIA)*60)/52.50)*1.20)*SALARIO)/HORASMES
Funcionário horista
(((((REFERENCIA)*60)/52.50)*1.20)*MVALSALM)/HORASMES
29 - Hora extra 60 minutos, com eventos adicionados para cálculo
(((V(0001)+V(0770)+V(1220))/220) * (Int(referencia) + ((referencia - Int(referencia)) / 60 * 100))) * 1.6
Neste exemplo é somado os eventos 0001, 0770 e 1220 para o calculo de uma hora extra a 60%,considerando 1 hora 60 minutos.
30 - Desconto, considerando todos os vencimentos, deduzindo inss limitado ao teto de R$ 27,00
IFF((MTOTVEN-V(9860))*1%>27,27,(MTOTVEN-V(9860))*1%)
31 - Hora extra 200% com base no salário + evento de anuênio (desde que esteja no lançamento automático)
((SALARIO+calcanuenio(func.codfun,mvalsalm,.t.,"XXXX")/220)*200%*referencia
XXXX = colocar o código do evento de anuênio
Regras/Considerações
– Fórmulas com Teto
Para criar fórmulas com teto, utilizamos a variável IIF(), vamos explicar como ela funciona. A expressão IIF() tem parâmetros:
1º – Condição/Verificação
2º – Se a condição for verdadeira, faça tal operação
3º – Se a condição for falsa, faça tal operação
Essas operações são separadas por vírgula dentro da expressão IIF().
O exemplo abaixo calcula 10% do salário limitado a um teto máximo de 50 reais.
IIF(SALARIO*10%<50,SALARIO*10%,50)
Baseado na fórmula acima, explicaremos o que é a condição, qual operação é realizada se ela for verdadeira e qual operação é realizada quando essa condição for falsa.
Dentro da fórmula a Condição é o que está dentro do parêntese e aparece antes da primeira vírgula,
conforme acima, podemos ver que a condição é: SALARIO*10%<50 Então até o momento a fórmula está assim:
IIF(SALARIO*10%<50)
Precisamos dessa condição pois o cálculo desejado é uma fórmula onde 10% não pode ser maior do que 50 reais, então essa condição é como se fosse uma pergunta “O salário do funcionário * 10%, é menor do que 50 reais?”
Se fizermos essa pergunta temos duas opções de resposta: Sim ou Não.
Preciso inserir na fórmula uma ação para cada uma das respostas, então a resposta Sim vamos considerar que a condição é verdadeira, já para a resposta Não, vamos considerar que a condição e falsa.
O que devemos fazer se a resposta for Sim, ou seja, se 10% do salário for menor do que 50 reais? Devemos calcular valor referente a 10% do salário, para isso vamos inserir uma vírgula logo após a condição e a operação: SALARIO*10%
Depois de inserir a operação se a condição é verdadeira, a fórmula ficou assim:
IIF(SALARIO*10%<50,SALARIO*10%)
Agora devemos inserir na fórmula a última operação, que é quando a condição for falsa.
O que devemos fazer se a resposta for Não, ou seja, se 10% do salário for maior do que 50 reais? De acordo com a solicitação, temos que manter 50 reais como valor máximo, então não devemos realizar nenhum cálculo, só vamos inserir uma vírgula após a Operação de “Sim” e colocar o valor máximo para teto, neste caso, 50 reais.
Depois de inserir a operação se a condição é falsa, a fórmula está pronta, como o exemplo abaixo:
IIF(SALARIO*10%<50,SALARIO*10%,50)
Com base nas informações acima, concluímos que a fórmula com teto é feita da seguinte maneira:
IIF(Condição,Operação se a condição for verdadeira, Operação se a condição for falsa)
- Fórmula de Pensão com teto mínimo de desconto.
Exemplo: calculo 30% do total de vencimentos – faltas – atrasos, porém esse valor não pode ser menor do que 200 reais.
Vamos criar primeiro uma condição para depois inseri-la na fórmula.
Para criar a condição eu preciso fazer com que o sistema realize o cálculo desejado, questionando se o resultado é Maior do que 200 reais, pois ele não pode ser menor.
IIF(((MTOTVEN-V(5650))-5850)*30%>200)
Com a fórmula acima eu me faço a seguinte pergunta: 30% do total de vencimentos – faltas e atrasos é maior do que 200 reais? Teremos as duas respostas: Sim ou Não
O que devemos fazer se a resposta for Sim, ou seja, 30% do total de vencimentos – faltas e atrasos é maior do que 200 reais?
Devemos calcular valor referente a 30% do total de vencimentos – faltas e atrasos, para isso vamos inserir uma vírgula logo após a condição e a operação: ((MTOTVEN-V(5650))-5850)*30% Depois de inserir a operação se a condição é verdadeira, a fórmula ficou assim:
IIF(((MTOTVEN-V(5650))-5850)*30%>200,((MTOTVEN-V(5650))-5850)*30%)
Agora devemos inserir na fórmula a última operação, que é quando a condição for falsa.
O que devemos fazer se a resposta for Não, ou seja, 30% do total de vencimentos – faltas e atrasos é maior do que 200 reais?
De acordo com a solicitação do cliente, o desconto de pensão não pode ser Menor do que 200 reais. Então não devemos realizar nenhum cálculo, só vamos inserir uma vírgula após a Operação de “Sim” e colocar o valor mínimo para teto, neste caso, 200 reais.
Depois de inserir a operação se a condição é falsa, a fórmula está pronta, como o exemplo abaixo:
IIF(((MTOTVEN-V(5650))-5850)*30%>200,((MTOTVEN-V(5650))-5850)*30%,200)
- Fórmula com Condição
A fórmula com condição utiliza a mesma expressão que usamos na fórmula com teto IIF(). Esta fórmula é utilizada para fazer cálculos diferentes em uma determinada condição.
Assim como a fórmula de teto, vamos usar os mesmos parâmetros para a expressão IIF() :
1º – Condição/Verificação
2º – Se a condição for verdadeira, faça tal operação
3º – Se a condição for falsa, faça tal operação
Vamos para um exemplo:
Preciso que o sistema calcule 5% do salário para funcionários que o salário integral é menor ou igual a 1000 reais e calcule 2% do salário para os funcionários que o salário integral é maior do que 1000 reais.
Vamos criar primeiro uma condição para depois inseri-la na fórmula.
Para criar a condição eu preciso fazer com que o sistema realize o cálculo solicitado pelo cliente questionando se Salário integral do funcionário é menor ou igual a 1000 reais.
IIF(SALARIO<=1000)
Com a fórmula acima eu me faço a seguinte pergunta: O Salário integral é menor ou igual a 1000 reais?
Teremos as duas respostas: Sim ou Não
O que devemos fazer se a resposta for Sim, ou seja, O salário integral é menor ou igual a 1000 reais!
Devemos calcular 5% do salário integral do funcionário, para isso, vamos inserir uma vírgula logo após a condição e a operação: SALARIO*5%
Depois de inserir a operação se a condição é verdadeira, a fórmula ficou assim:
IIF(SALARIO<=1000,SALARIO*5%)
Agora devemos inserir na fórmula a última operação, que é quando a condição for falsa.
O que devemos fazer se a resposta for Não, ou seja, O salário integral é maior do que 1000” Devemos calcular 2% do salário integral do funcionário, para isso, vamos inserir uma vírgula após a Operação de “Sim” e a operação: SALARIO*2%
Depois de inserir a operação se a condição é falsa, a fórmula está pronta, como o exemplo abaixo:
IIF(SALARIO<=1000,SALARIO*5%,SALARIO*2%)
Vamos para outro exemplo:
Preciso que o sistema calcule 10% do salário para funcionários que o salário integral é menor ou igual a 1000 reais, calcule 15% do salário para os funcionários que o salário integral esta entre 1000 e 2000 reais e calcule 20% do salário para os funcionários que o salário integral é maior do que 2000 reais.
Vamos criar primeiro uma condição para depois inseri-la na fórmula.
Para criar a condição vamos começar pelos funcionários que o salário integral é Menor ou igual a 1000 reais. preciso fazer com que o sistema realize o cálculo solicitado pelo cliente questionando se o Salário integral é menor ou igual a 1000 reais.
IIF(SALARIO<=1000)
Com a fórmula acima eu me faço a seguinte pergunta: O Salário integral é menor ou igual a 1000 reais?
Teremos as duas respostas: Sim ou Não
O que devemos fazer se a resposta for Sim, ou seja, O salário integral é menor ou igual a 1000 reais!
Devemos calcular 10% do salário integral do funcionário, para isso, vamos inserir uma vírgula logo após a condição e a operação: SALARIO*10%
Depois de inserir a operação se a condição é verdadeira, a fórmula ficou assim:
IIF(SALARIO<=1000,SALARIO*10%)
O que devemos fazer se a resposta for Não, ou seja, O salário integral é menor ou igual a 1000 reais!
Agora não vamos inserir apenas uma operação na fórmula, vamos fazer uma nova verificação/condição para verificar se o salário integral é menor ou igual a 2000 reais.
Vamos criar uma nova condição, mas agora, preciso fazer com que o sistema realize o cálculo solicitado pelo cliente questionando se o Salário integral é menor ou igual a 2000 reais.
IIF(SALARIO<=2000)
Depois de criada essa nova condição vamos inseri-la na fórmula, para isso vamos inserir uma vírgula após a Operação de “Sim” e a condição que criamos agora. A fórmula ficará da seguinte forma:
IIF(SALARIO<=1000,SALARIO*10%,IIF(SALARIO<=2000)
Com a fórmula acima eu me faço a seguinte pergunta na nova condição: O Salário integral é menor ou igual a 2000 reais?
Teremos as duas respostas: Sim ou Não.
O que devemos fazer se a resposta for Sim, ou seja, O Salário integral é menor ou igual a 2000 reais!
Devemos calcular 15% do salário integral do funcionário, para isso, vamos inserir uma vírgula logo após a nova condição e a operação: SALARIO*15%
Depois de inserir a operação se a nova condição é verdadeira, a fórmula ficou assim:
IIF(SALARIO<=1000,SALARIO*10%,IIF(SALARIO<=2000,SALARIO*15%)
Agora devemos inserir na fórmula a última operação, que é quando a nova condição for falsa.
O que devemos fazer se a resposta for Não, ou seja, O Salário integral é maior do que 2000 reais!
Devemos calcular valor referente a 20% do salário, para isso vamos inserir uma vírgula após a
Operação de “Sim” e a operação: SALARIO*20%.
Depois de inserir a operação se a condição é falsa, a fórmula está pronta, como o exemplo abaixo:
IIF(SALARIO<=1000,SALARIO*10%,IIF(SALARIO<=2000,SALARIO*15%,SALARIO*20%))
– Fórmula de Conversão de Hora 60 para hora 100
Utilizamos esta fórmula quando desejo que o sistema faça a conversão de hora 60 para hora 100 e a rotina de hora 60º não atende a necessidade do usuário.
Quando deseja digitar a quantidade de horas e os minutos exatos ao lançar a hora extra para o funcionário.
Exemplo:
Se o funcionário fez duas horas e meia de hora extra a 50%, sem a fórmula, deve lançar 2,5 no campo referencia, mas para o funcionário não questionar o RH da empresa, deseja digitar duas horas e meia como 2,30.
Como toda a fórmula, é necessário que saibamos fazer essa conversão na calculadora para poder criar a fórmula.
A conversão é bem simples, veja:
Funcionário fez 2,30 horas, devo converter apenas os minutos, ou seja, só que aparece depois da vírgula (0,30). Pois depois de convertidos os minutos, vou somá-los novamente com a hora cheia (2).
Vamos para a conversão, pegue os minutos, no nosso exemplo é 0,30. Divida 0,30 por 60 e depois multiplique por 100
0,30/60= 0,005 *100 = 0,5
Some o valor de 0,5 que está convertido com a quantidade de horas que o funcionário fez, no nosso exemplo foram 2 horas.
0,5+2 = 2,5
Agora é só utilizar o 2,5 para multiplicar pelo salário hora do funcionário e conseguir fazer o cálculo na calculadora.
Depois de entender a calculadora, vamos para a fórmula...
Preciso fazer com que o sistema entenda passo a passo essa conversão, o 1º passo é fazer o sistema considerar somente os minutos para a conversão, desconsiderando as horas.
Para o sistema pegar somente as horas da variável Referencia, vamos utilizar a expressão: INT(REFERENCIA), que captura apenas o valor inteiro da referencia ( só as horas)
Para converter os minutos, vamos fazer a referencia – as horas da referencia, assim sobrará apenas os minutos para fazer a conversão.
(((REFERENCIA-INT(REFERENCIA))/60)*100)
Depois de fazer essa conversão é só juntar com o outro pedaço que separamos as horas:
(INT(REFERENCIA)+(((REFERENCIA-INT(REFERENCIA))/60)*100))
Exemplo com valores na fórmula completa
Referencia digitada pelo cliente: 2,30
(INT(REFERENCIA)+(((REFERENCIA-INT(REFERENCIA))/60)*100))
Observação: Conforme a fórmula vai sendo resolvida, vamos eliminando os parênteses.
Fórmula normal = (INT(REFERENCIA)+(((REFERENCIA-INT(REFERENCIA))/60)*100))
1ª Resolução = (INT(REFERENCIA)+((0,30/60)*100))
2ª Resolução = (INT(REFERENCIA)+(0,005*100))
3ª Resolução = (INT(REFERENCIA)+0,5)
4ª Resolução = (2 + 0,5)
5ª Resolução = 2,5
Para aplicar essa fórmula de conversão em uma hora extra, deve substituir a palavra REFERENCIA, veja o exemplo abaixo:
Fórmula de HE Normal (Sem conversão):
(((SALARIO+(SALMIN*20%))/HORASMES)*1.5)*REFERENCIA
Fórmula de HE com a conversão:
(((SALARIO+(SALMIN*20%))/HORASMES)*1.5)*(INT(REFERENCIA)+(((REFERENCIA-INT(REFERENCIA))/60)*100))
Acesse também: