Última alteração a 13/10/2022
As regras de cálculo das remunerações, deduções ou dos benefícios são definidas através de fórmulas para simplificar as configurações dos cálculos, bem como para facilitar a utilização do sistema que está pré-configurado com fórmulas que traduzem as regras legais e fiscais.
Na construção de uma fórmula, é possível incluir variáveis, funções e objetos, bem como determinar os cenários onde esta se aplica. Ao consultar cada uma das fórmulas disponíveis, poderá analisar as regras aplicáveis ao método de cálculo, bem como conhecer todos os valores do processamento salarial.
O Rose disponibiliza de base um conjunto alargado de fórmulas. Contudo, caso seja necessário, com o perfil de Configurador poderá criar outras fórmulas.
Composição
As fórmulas são compostas por um/a:
- Identificador;
- Designação;
- Contexto: para evitar erros na utilização das fórmulas, é possível determinar os cenários onde estas podem ser utilizadas, por exemplo, nas remunerações selecionar apenas as fórmulas que se aplicam a este contexto. Assim, e de acordo com o contexto da fórmula, estão disponíveis objetos (variáveis) e funções específicos. Para consultar a lista de objetos e funções disponíveis, deverá clicar simultaneamente nas teclas Ctrl + Espaço na área Expressão.
- Expressão: inclui as regras de cálculo de forma semelhante a uma fórmula de Excel. Depois de ser validada no cálculo do processamento, a expressão apresenta um valor numérico utilizado nos cálculos;
- Expressão de descrição: descreve o cálculo e as regras utilizadas pela aplicação para justificar o valor apresentado.
As expressões podem ser compostas por funções e variáveis, permitindo assim um número de combinações praticamente ilimitado. Por exemplo: if( Abs(-1) = 1, Cos(1), Floor(1.5555)).
Nota: As expressões suportam as operações aritméticas normais de adição, subtração, divisão e multiplicação. Nas funções com mais do que um parâmetro, deve ser utilizada a vírgula como separador.
Sequência do Processamento
A sequência do processamento salarial é importante para obter os valores esperados em cada uma das fórmulas.
Aquando da avaliação da fórmula, alguns objetos podem não apresentar os valores finais do processo onde se inserem e tipicamente têm um comportamento lógico e sequencial. Por exemplo, numa remuneração de processamento, o valor é calculado depois da quantidade. Tal significa que, se na fórmula para a quantidade referenciar o objeto "Value" dessa remuneração, o valor será tipicamente zero.
De uma forma simplificada, os cálculos associados ao processamento seguem a seguinte sequência:
- Cálculo dos créditos das contas de benefício;
- Cálculo dos débitos das contas de benefício;
- Cálculo de remunerações base para determinar o valor bruto e base bruto (para a totalidade do mês, sem ausências);
- Cálculo de remunerações não base para determinar valor bruto;
- Considerar ausências;
- Cálculo de remunerações para determinar valor ilíquido;
- Cálculo de remunerações e deduções de acordo com dependências.
Nota: No cálculo do processamento, não poderá utilizar valores posteriores, por exemplo: não poderá usar o valor do cálculo dos débitos (n.º 2) no cálculo dos créditos (n.º 1).
Variáveis
As variáveis correspondem aos valores (propriedades) das entidades envolvidas numa fórmula, nomeadamente: Processamento, Contrato, Colaborador, Remuneração e Dedução. Desta forma, é possível utilizar as variáveis no cálculo das fórmulas para contextualizar a forma como a fórmula é calculada.
Nas funções cumulativas, é possível obter valores de entidades do processamento - Ausências e Folha de Presença - consoante o tipo de interação indicado (ver secção Funções cumulativas).
Deverá ter em consideração que numa fórmula associada a uma remuneração não é possível obter diretamente o valor do objeto "Deduction", exceto pelas fórmulas de avaliação de registos.
Tipos de Funções
No Rose, existe um conjunto de tipos de funções que poderá utilizar para obter valores concretos:
Funções Matemáticas
Através destas funções, poderá implementar uma lógica de cálculo matemático:
Nome |
Descrição |
Utilização |
Exemplo |
Abs |
Devolve o valor absoluto de um número A. |
Abs(A) |
Abs(-1) = 1 |
Acos |
Devolve o ângulo cujo cosseno é o do número A. |
Acos(A) |
Acos(1) = 0 |
Asin |
Devolve o ângulo cujo seno é o do número A. |
Asin(A) |
Asin(0) = 0 |
Atan |
Devolve o ângulo cuja tangente é o do número A. |
Atan(A) |
Atan(0) = 0 |
Ceiling |
Devolve o número inteiro superior ao número A especificado. |
Ceiling(A) |
Ceiling(1.5) = 2 |
Cos |
Devolve o cosseno do ângulo A especificado. |
Cos(A) |
Cos(0) = 1 |
Exp |
Devolve o exponencial do número A especificado. |
Exp(A) |
Exp(0) = 1 |
Floor |
Devolve o número inteiro inferior ao número A. |
Floor(A) |
Floor(1.5) = 1 |
IEEERemainder |
Devolve o resto da divisão entre o quociente A e divisor B. |
IEEERemainder(A, B) |
IEEERemainder(3, 2) = 1 |
Log |
Devolve o logaritmo de base A do número B. |
Log(A, B) |
Log(1, 10) = 0 |
Log10 |
Devolve o logaritmo em base 10 do número A. |
Log10(A) |
Log10(1) = 0 |
Max |
Devolve o maior entre os números A e B. |
Max(A, B) |
Max(1, 2) = 2 |
Min |
Devolve o menor entre os números A e B. |
Min(A, B) |
Min(1, 2) = 1 |
Pow |
Devolve o valor do número A elevado a B. |
Pow(A, B) |
Pow(3, 2) = 9 |
Round |
Devolve o valor A arredondado a B casas decimais. |
Round(A, B) |
Round(3.222, 2) = 3.22 |
Sign |
Devolve o sinal do valor A. |
Sign(A) |
Sign(-10) = -1
Sign(10) = 1 |
Sin |
Devolve o seno do ângulo A. |
Sin(A) |
Sin(0) = 0 |
Sqrt |
Devolve o quadrado do número A. |
Sqrt(A) |
Sqrt(4) = 2 |
Tan |
Devolve a tangente do ângulo especificado A. |
Tan(A) |
Tan(0) = 0 |
Truncate |
Devolve a parte inteira de um número A. |
Truncate(A) |
Truncate(1.7) = 1 |
Funções Lógica
Estas funções devolvem um valor de forma condicional:
Nome |
Descrição |
Utilização |
Exemplo |
in |
Devolve se um elemento A está inserido num conjunto de valores B, C, etc. |
in (A, B, C, D) |
TRUE |
if |
Devolve um valor B ou C mediante a validação da regra A. |
if(A,B, C) |
If(1 = 2, 1, 2) = 2 |
Funções de Avaliação de Registo
Estas funções permitem obter o valor de um ou mais registos específicos.
Neste tipo de função, a aplicação considera a dependência entre remunerações e deduções, calculando as dependências existentes. Por exemplo:
- Se a fórmula associada na remuneração A refere a remuneração B, o sistema irá calcular primeiro a remuneração B e só depois A.
- Se a remuneração A refere a dedução D, a aplicação calcula primeiramente o desconto D e só depois a remuneração A.
Contudo, esta lógica não permite que existam dependências circulares, ou seja, duas remunerações dependerem uma da outra, mesmo que indiretamente.
O apuramento das dependências também considera as fórmulas e a contribuição de valores de naturezas de remuneração para deduções.
A seguinte tabela enumera as funções de avaliação de registo disponíveis:
Nome |
Descrição |
Utilização |
GetEarningValue |
Devolve o valor de uma ou mais remunerações. |
GetEarningValue('R1','R2', 'RN') |
GetEmployeeDeductionValue |
Devolve o valor do funcionário de uma ou mais deduções. |
GetEmployeeDeductionValue('D1','D2','DN') |
GetCompanyDeductionValue |
Devolve o valor do encargo da empresa de uma ou mais deduções. |
GetCompanyDeductionValue('D1','D2','DN') |
Funções Cumulativas
Estas funções permitem avaliar uma expressão de agregação para os registos de detalhe do processamento, nomeadamente, as ausências e a folha de presença.
Ou seja, a sub-expressão é avaliada para cada um dos registos de detalhe e, de seguida, apresenta o valor agregado. Por exemplo, na função Sum devolve a soma.
Nome |
Descrição |
Utilização |
Exemplo |
Sum |
Devolve a soma do resultado da avaliação da expressão para o detalhe especificado, que pode ser 'ProcessingTimeSheets' para a folha de presenças ou 'ProcessingAbsences' para ausências. |
Sum(‘Detalhe’, Sub-expressão) |
Sum(‘ProcessingAbsences’, [ProcessingAbsence.Efective]) |
Avg |
Devolve a média do resultado da avaliação da expressão para o detalhe especificado, que pode ser 'ProcessingTimeSheets' para a folha de presenças ou 'ProcessingAbsences' para ausências. |
Avg(‘Detalhe’, Sub-expressão) |
Avg(‘ProcessingAbsences’, [ProcessingAbsence.Expected]) |
ToString |
Devolve o valor do parâmetro em texto. |
ToString(A) |
ToString(100) |
Objetos
Os objetos são entidades com propriedades que são utilizadas no cálculo do processamento.
De salientar que algumas entidades só estão disponíveis no seu contexto, ou seja:
- as entidades relativas a remunerações só estão disponíveis no contexto de cálculo de remunerações;
- as entidades de dedução apenas estão disponíveis no contexto de cálculo de deduções.
As seguintes tabelas enumeram os objetos disponíveis:
Processing
Esta entidade contém os dados gerais do processamento:
Propriedade |
Tipo |
Descrição |
Contract |
Entidade |
Contrato |
Employee |
Entidade |
Colaborador |
PeriodYear |
Número |
Ano de processamento |
PeriodMonth |
Número |
Mês de processamento |
Date |
Data |
Período processamento ao dia 1 do mês |
StartDate |
Data |
Limite inferior do período de processamento |
EndDate |
Data |
Limite superior do período de processamento |
Number |
Número |
Número do Processamento |
TypeValue |
Número |
Tipo de Processamento (0 - normal, 1 - extra, 2 - retroativo) |
Company |
Entidade |
Empresa |
HourlyWage |
Monetário |
Salário Hora |
GrossBaseAllowance |
Monetário |
Valor Bruto |
IlliquidBaseAllowance |
Monetário |
Valor Ilíquido |
CalendarDaysCount |
Número |
Dias de calendário considerando dias de admissão/demissão. |
WorkedCalendarDaysCount |
Número |
Dias de calendário trabalhados |
AbsentCalendarDayCount |
Número |
Dias de ausência em dias de calendário |
WorkDaysCount |
Número |
Dias de Trabalho |
WorkHoursCount |
Número |
Horas de Trabalho |
AbsentWorkDaysCount |
Número |
Dias de ausência |
AbsentWorkHoursCount |
Número |
Horas de ausência |
WorkedWorkDaysCount |
Número |
Dias de trabalho trabalhados |
WorkedWorkHoursCount |
Número |
Horas de trabalho trabalhadas |
Worked30DaysMonthCount |
Número |
Dias de trabalho em mês de 30 dias |
Absent30DaysMonthCount |
Número |
Ausências em mês de 30 dias |
VacationDaysCount |
Número |
Dias de férias do período |
NextVacationDayCount |
Número |
Dias de férias do próximo período |
YearPeriodCount |
Número |
Número de períodos de processamento previstos |
MajVacationPeriod |
Número |
Maior período de férias previsto |
LastPeriod |
Número |
Último período de processamento previsto |
DaysInMonth |
Número |
Número de dias do mês |
Days30 |
Número |
Número de dias 30 no período considerando dias de admissão/demissão. |
Contract
Esta entidade contém os dados do contrato:
Propriedade |
Tipo |
Descrição |
HiringDate |
Data |
Data de admissão |
HiringReason |
Entidade |
Motivo de admissão |
TrialPeriodDays |
Número |
Número de dias de período experimental |
TrialPeriodEndDate |
Data |
Data de fim do período experimental |
EstimatedEndDate |
Data |
Data prevista de fim de contrato |
EndDate |
Data |
Data de fim de contrato |
LeavingReason |
Entidade |
Motivo de Saída |
WorkLocation |
Entidade |
Local de trabalho |
WorkTimeDurationValue |
Número |
Duração do tempo de trabalho |
TaxJurisdictionService |
Texto |
Serviço de Finanças |
TaxResidenceValue |
Número |
Domicílio fiscal |
DisabilityDegreePlus |
Booleano |
Grau de incapacidade superior a 60% |
ExistsSecondIncomeProvider |
Booleano |
Existe segundo titular de rendimentos |
SecIncProvDisDegreePlus |
Booleano |
Segundo titular de rendimentos tem grau de
Incapacidade superior a 60% |
NumberOfDependants |
Número |
Número de dependentes |
NumberDepDisDegreePlus |
Número |
Número de dependentes com grau de incapacidade superior a 60% |
Remarks |
Texto |
Notas |
WorkLocationWorkSchedule |
Entidade |
Calendário de Trabalho |
HourlyWageFormulaValue |
Número |
Tipo de fórmula de salário hora |
HourlyWage |
Monetário |
Valor de Salário Hora quando fixo |
ContractEarning
Este entidade corresponde à remuneração no contrato:
Propriedade |
Tipo |
Descrição |
PeriodStart |
Data |
Período Inicial |
periodEnd |
Data |
Período Final |
QuantityKindValue |
Número |
Tipo de quantidade |
QuantityValue |
Número |
Valor da quantidade |
QuantityFormula |
Entidade |
Fórmula da quantidade |
ValueKindValue |
Número |
Tipo de valor |
ValueMoney |
Monetário |
Valor do valor |
ValueFormula |
Entidade |
Fórmula do valor |
ProcessingEarning
Esta entidade corresponde à remuneração no processamento:
Propriedade |
Tipo |
Descrição |
SourceTypeValue |
Número |
Origem |
Earning |
Entidade |
Remuneração |
Name |
Texto |
Nome |
Quantity |
Número |
Quantidade |
UnitValue |
Monetário |
Valor unitário |
Value |
Monetário |
Valor total |
Earning
Este objeto corresponde à entidade da remuneração:
Propriedade |
Tipo |
Descrição |
SourceTypeValue |
Número |
Origem |
Earning |
Entidade |
Remuneração |
Name |
Texto |
Nome |
Quantity |
Número |
Quantidade |
UnitValue |
Monetário |
Valor unitário |
Value |
Monetário |
Valor total |
ContractDeduction
Este objeto corresponde à entidade da dedução do processamento:
Propriedade |
Tipo |
Descrição |
Deduction |
Entidade |
Dedução |
PeriodStart |
Data |
Período Inicial |
PeriodEnd |
Data |
Período final |
SubscriptorNumber |
Texto |
Número de subscritor |
CalculationKindValue |
Número |
Tipo de cálculo |
EmployeeValue |
Monetário |
Valor para funcionário |
EmployeePercentage |
Percentagem |
Percentagem do colaborador |
EmployeeFormula |
Entidade |
Fórmula |
Deduction
Esta objeto corresponde à entidade Dedução:
Propriedade |
Tipo |
Descrição |
DeductionKey |
Texto |
Código |
Name |
Texto |
Nome |
IsMandatory |
Booleano |
Dedução obrigatória |
EarningDeductionGroupValue |
Número |
Grupo de deduções |
PeriodDeduction
Este objeto corresponde à entidade da configuração de dedução por período:
Propriedade |
Tipo |
Descrição |
PeriodStart |
Data |
Período inicial |
PeriodEnd |
Data |
Período final |
DeductionValueKindValue |
Número |
Tipo de Valor |
AppliesEmployee |
Booleano |
Aplica-se ao colaborador |
EmployeeValue |
Monetário |
Valor do colaborador |
EmployeePercentage |
Número |
Percentagem para colaborador |
EmployeeFormula |
Entidade |
Fórmula do colaborador |
EmployeeMinValue |
Monetário |
Valor mínimo para o colaborador |
EmployeeMaxValue |
Monetário |
Valor máximo para o colaborador |
AppliesCompany |
Booleano |
Aplica-se à entidade patronal |
CompanyValue |
Monetário |
Valor da entidade patronal |
CompanyPercentage |
Número |
Percentagem da entidade patronal |
CompanyFormula |
Entidade |
Fórmula para entidade patronal |
CompanyMinValue |
Monetário |
Valor mínimo para a entidade patronal |
CompanyMaxValue |
Monetário |
Valor máximo para entidade patronal |
ProcessingAbsences
Este objeto corresponde à existência de ausências no processamento. Esta entidade só está disponível quando é utilizada como sub-expressão de uma função cumulativa, quando nesta é especificada no parâmetro de detalhe ‘ProcessingAbsences’:
Propriedade |
Tipo |
Descrição |
StartDate |
Data |
Data de início |
EndDate |
Data |
Data de fim |
Duration |
Número |
Duração |
AbsentCalendarDays |
Número |
Ausência em dias de calendário |
AbsentWorkDays |
Número |
Ausência em dias de trabalho |
AbsentWorkHours |
Número |
Ausência em horas |
UnitValue |
Número |
Unidade |
AbsenceType
Este objeto corresponde à existência de ausências no processamento. Esta entidade só está disponível quando é utilizada como sub-expressão de uma função cumulativa, quando nesta é especificada no parâmetro de detalhe ‘ProcessingAbsences’:
Propriedade |
Tipo |
Descrição |
AbsenceType |
Entidade |
Tipo de ausência |
StartDate |
Data |
Data de início |
EndDate |
Data |
Data de fim |
Duration |
Número |
Duração |
AbsentCalendarDays |
Número |
Ausência em dias de calendário |
AbsentWorkDays |
Número |
Ausência em dias de trabalho |
AbsentWorkHours |
Número |
Ausência em horas |
UnitValue |
Número |
Unidade |
ProcessingTimesheets
Este objeto corresponde à entidade de registo na folha de presenças. Esta entidade apenas está disponível quando é utilizada numa sub-expressão de uma função cumulativa, quando está especificada no parâmetro de detalhe ‘ProcessingTimesheets’:
Propriedade |
Tipo |
Descrição |
Date |
Data |
Data |
Expected |
Número |
Horas esperadas |
Efective |
Número |
Horas efetivas |
Absence |
Número |
Horas de ausência |
Variáveis
Na versão atual, está apenas disponível a variável Result:
Nome |
Descrição |
Utilização |
Exemplo |
Result |
Devolve o resultado da Expressão. Poderá ser utilizada na descrição da expressão de uma fórmula |
Result |
‘Fração de dias trabalhados: ‘ + Result |
Para obter o valor de uma variável, esta deve referenciada entre parêntesis retos, indicando o nome da entidade (em inglês) e separada por ponto para indicar o nome da propriedade do objeto, como por exemplo [Processing.CalendarDaysCount].
Guardar ou partilhar este artigo
Obrigado pelo seu voto.
Faça
login para deixar a sua opinião.
Obrigado pelo seu feedback. Iremos analisá-lo para continuarmos a melhorar!