Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
titleFórmula - Valor Reduzido para descontar do Pagamento Mensal - Funcionário Horista
/* Essa fórmula irá calcular o valor a reduzir de jornada é deverá ser associado a um evento de desconto no pagamento do funcionário. Será desconsiderado no período de redução os dias de férias, afastamentos, admissão, demissão e horário. Para esse cenário, o provento Dias Trabalhados será considerado integral e o evento de desconto “redutor de Jornada” reduzirá do salário mensal.
Exemplo:
Um salário mensal de 2000.00 com redução da jornada de 25%.
O salário hora continuará o mesmo e a nova jornada deverá ser 165:00, considerando Uma jornada de 220 horas no mês. No campo Valor a reduzir na aba B.E.M não será preenchido conforme orientação para o eSocial. A mesma é uma sugestão de cálculo e poderá ser usada como modelo pela empresa.
Data Atualização :  12/05/2020 15:55
Utilização a partir dos patches liberados em 16/04/2020 */

DECL DataInicioAcordo;
DECL DataFimAcordo;
DECL DataInicioReducao;
DECL DataFimReducao;
DECL DiasReducao;
DECL ValorReduzido;
DECL DiasReducaoMes;

SETVAR (DataInicioAcordo,TABFUNC('DTACORDOBEM','D'));
SETVAR (DataFimAcordo,(DataInicioAcordo + TABFUNC('DURACAOBEM','I')));
SETVAR (ValorReduzido,TABFUNC ('SALARIO', '')* (TABFUNC('PERCENTUALREDUCAOBEM', '')/100));

/*Retona a Data Início da Reducao no mes*/

SE (MESDT(DataInicioAcordo) = MES) E (ANODT(DataInicioAcordo) = ANO)
ENTAO SETVAR(DatainicioReducao,DataInicioAcordo)
SENAO SETVAR(DatainicioReducao,MTDATA(01,MES,ANO))

FIMSE;

/*Retona a Data Fim da Reducao no mes*/

SE (MESDT(DataFimAcordo) = MES  E  ANODT(DataFimAcordo) = ANO)
ENTAO SETVAR(DataFimReducao,DataFimAcordo)
SENAO SETVAR(DataFimReducao,MTDATA(30,MES,ANO))

FIMSE;

/* calcula dias redução no mes*/

SETVAR(DiasReducaoMes, SUBTRAIDATAS(DataFimReducao,DatainicioReducao) +1);

/* calcula dias redução no mês desconsiderando férias*/

SETVAR(DiasReducaoMes,(DiasReducaoMes  -  DIAFERPER(DatainicioReducao,DataFimReducao)));

/* calcula dias redução no mês desconsiderando afastamento*/

SETVAR(DiasReducaoMes,(DiasReducaoMes  -  DIASAFT(DatainicioReducao,DataFimReducao,'PTO')));

/* calcula “valor” do desconto a reduzir no pagamento*/

SETVAR(ValorReduzido,(ValorReduzido/30) * DiasReducaoMes);


FORMULA CONSIDERANDO 2 PERÍODOS DE REDUÇÃO DENTRO DO MES. 

/* Essa fórmula irá calcular o valor a reduzir de jornada é deverá ser associado a um evento de desconto no pagamento do funcionário.
Será considerado mais de um período de adesão dentro da competência
exemplo,  uma adesão com percentual de 25% finalizando no mês e uma nova adesão de 50% iniciando no mes */

 
DECL DataInicioAcordo;
DECL DataFimAcordo;
DECL DataInicioReducao;
DECL DataFimReducao;
DECL DiasReducao;
DECL ValorReduzido;
DECL DiasReducaoMes;
DECL Valor;
 

SE (EXECSQL ('BEM') = Verdade)
ENTAO
REPITA

SETVAR (DataInicioAcordo,resultsql('BEM','DTACORDOBEM'));
SETVAR (DataFimAcordo,((resultsql('BEM','DTACORDOBEM')) + (resultsql('BEM','DURACAOBEM'))));
SETVAR (ValorReduzido,resultsql('BEM','VALORREDUZIDOBEM'));


/*Retona a Data Início da Reducao no mes*/

SE (MESDT(DataInicioAcordo) = MES) E (ANODT(DataInicioAcordo) = ANO)
ENTAO SETVAR(DatainicioReducao,DataInicioAcordo)
SENAO SETVAR(DatainicioReducao,MTDATA(01,MES,ANO))
FIMSE;
 
/*Retona a Data Fim da Reducao no mes*/
SE (MESDT(DataFimAcordo) = MES  E  ANODT(DataFimAcordo) = ANO)
ENTAO SETVAR(DataFimReducao,DataFimAcordo)
SENAO SETVAR(DataFimReducao,MTDATA(30,MES,ANO))
FIMSE;

/* calcula dias redução no mes*/
SETVAR(DiasReducaoMes, SUBTRAIDATAS(DataFimReducao,DatainicioReducao) +1);
 
/* calcula dias redução no mês desconsiderando férias*/
SETVAR(DiasReducaoMes,(DiasReducaoMes  -  DIAFERPER(DatainicioReducao,DataFimReducao)));
 
/* calcula dias redução no mês desconsiderando afastamento*/
SETVAR(DiasReducaoMes,(DiasReducaoMes  -  DIASAFT(DatainicioReducao,DataFimReducao,'PTO')));
 
/* calcula “valor” do desconto a reduzir no pagamento*/
SETVAR(ValorReduzido,(ValorReduzido/30) * DiasReducaoMes);

/* Soma dois períodos de redução no mês */
SETVAR(Valor,Valor + ValorReduzido);

ATE ProxRegSQL('BEM' ) = Falso
FIMSE;
Valor;


CONSULTA SQL 

Criar a consulta SQL antes da criação da fórmula acima.

select DTACORDOBEM,DURACAOBEM,VALORREDUZIDOBEM
from PFHSTBEM
where codcoligada =:FRM_COLIGADA and chapa =:FRM_CHAPA
and TIPOADESAOBEM = 1




Fórmula associada ao evento que será lançado no movimento do Funcionário.

...