Versões comparadas

Chave

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

...

Abaixo exemplificaremos sugestão de fórmulas que calcula a indenização conforme regras de MP 936. 

Consulta SQL necessária para executar a Fórmula de Indenização por redução de jornada:

Bloco de código
languagesql
titleConsulta SQL - Retornar o Histórico do BEM
SELECT
DTACORDOBEM,DURACAOBEM,VALORREDUZIDOBEM,DTCANCELAMENTOBEM,DTANTECIPACAOBEM,DIASPRORROGACAOBEM,PERCENTUALREDUCAOBEM
FROM PFHSTBEM (NOLOCK)
WHERE codcoligada =:FRM_COLIGADA and chapa =:FRM_CHAPA
and TIPOADESAOBEM = '1'
ORDER BY DTMUDANCA ASC

Fórmula para calcular a indenização quando devida para funcionário que teve redução de salário:

Bloco de código
titleFórmula - Indenização por dispensa sem justa causa - redução de Jornada
DECL DTREDUZIDADECL DataInicioAcordo;
DECL DiasDuracao;
DECL DiasProrrog;
DECL DataCancelamento;
DECL DataAntecipacao;
DECL DTRETDataFimAcordo;
DECL QUANTDIASPercAcodr;
DECL SALSalMensal;
DECL PERCENTUALValorInd;
DECL TPDEMISSAOValorTotal;
DECL QUANTMESDuracaoTotal;
DECL DIASDIREITODiasAbatidos;
DEClDECL DIASABTIDOSDiasDireito;


SETVAR (DTREDUZIDASalMensal, TABFUNC('DTACORDOBEMSALARIO', 'DI'));
SETVAR (QUANTMES , TABFUNC('DURACAOBEM','I') + TABFUNC ('DIASPRORROGACAOBEM','IDiasDireito, 1);

/* Retorna o valor de indenização devido considerando todos acordos*/
SE (EXECSQL ('BEM') = Verdade)
ENTAO
REPITA
SETVAR (DataInicioAcordo,resultsql('BEM','DTACORDOBEM'));
SETVAR (DTRETDiasDuracao, resultsql(TABFUNC('DTACORDOBEMBEM','DDURACAOBEM')+ (QUANTMES))); 
SETVAR (SALDiasProrrog, TABFUNCresultsql('SALARIOBEM', 'IDIASPRORROGACAOBEM'));
SETVAR (PERCENTUALDataCancelamento, TABFUNCresultsql('PERCENTUALREDUCAOBEMBEM', 'IDTCANCELAMENTOBEM'));
SETVAR (TPDEMISSAODataAntecipacao, TABFUNC resultsql('TIPODEMISSAOBEM','DTANTECIPACAOBEM'));
SE DTRET = '01/01/0001' E DTREDUZIDA = '01/01/0001'
ENTAO
0
SENAO
SE DTRET = '01/01/0001' E DTREDUZIDA <> '01/01/0001'
ENTAO
0
SENAO
SE DTRET <> '01/01/0001' E DTREDUZIDA <> '01/01/0001' E TPDEMISSAO = 2
ENTAO
SETVAR (QUANTDIAS, SUBTRAIDATAS(DTRET, DTREDUZIDA));
SETVAR (DIASABTIDOS, SUBTRAIDATAS (DTD, DTRET));
SE DIASABTIDOS > 0 E (QUANTDIAS - DIASABTIDOS) > 0
ENTAO
SETVAR (DIASDIREITO, (QUANTDIAS - DIASABTIDOS));
SENAO
SETVAR (DIASDIREITO, SUBTRAIDATAS(DTD, DTREDUZIDA));
FIMSE;
SE (DTRET+QUANTDIAS) > DTD E PERCENTUAL < 50
ENTAO
SAL * (DIASDIREITO/30) * 0.50
SENAO
SE (DTRET+QUANTDIAS) > DTD E PERCENTUAL < 70
ENTAO
SAL * (DIASDIREITO/30) * 0.75
SENAO
SE (DTRET+QUANTDIAS) > DTD E PERCENTUAL >= 70
ENTAO
SAL * (DIASDIREITO/30)SETVAR (PercAcodr,resultsql('BEM','PERCENTUALREDUCAOBEM'));

SE DataAntecipacao <> DATANULA
ENTAO SETVAR (DiasDuracao, (SUBTRAIDATAS (DataAntecipacao, DataInicioAcordo)));
FIMSE;
SE DataCancelamento <> DATANULA
ENTAO SETVAR (DiasDuracao, (SUBTRAIDATAS (DataCancelamento, DataInicioAcordo)));
FIMSE;

SETVAR (DiasDuracao, (DiasDuracao+DiasProrrog)); 

SE PercAcodr < 50
ENTAO SETVAR (ValorInd, (SalMensal * (DiasDuracao/30) * 0.50));
SENAO
SE PercAcodr < 70
ENTAO SETVAR (ValorInd, (SalMensal * (DiasDuracao/30) * 0.75));
SENAO
SE PercAcodr >= 70
ENTAO SETVAR (ValorInd, (SalMensal * (DiasDuracao/30)));
FIMSE;
FIMSE;
FIMSE;

SETVAR (ValorTotal, ValorTotal+ValorInd);
SETVAR (DuracaoTotal, DuracaoTotal+DiasDuracao);

ATE ProxRegSQL('BEM' ) = Falso
FIMSE; 

/* Abate os dias de Estabilidade que não entra no cálculo da indenização*/ 

SETVAR (DataInicioAcordo, TABFUNC('DTACORDOBEM', 'D'));
SETVAR (DiasDuracao, TABFUNC ('DURACAOBEM','I') + TABFUNC ('DIASPRORROGACAOBEM','I'));
SETVAR (DataFimAcordo, (DataInicioAcordo+DiasDuracao));
SETVAR (DiasAbatidos, SUBTRAIDATAS (DTD, DataFimAcordo+1));

SE DiasAbatidos > 0 E (DuracaoTotal - DiasAbatidos ) > 0
ENTAO SETVAR (DiasDireito, DuracaoTotal - DiasAbatidos);
FIMSE;

SETVAR (ValorTotal, (ValorTotal/DuracaoTotal)*DiasDireito);

ValorTotal;


Fórmula para calcular para calcular a indenização quando devida para funcionário que teve Suspensão temporário de trabalho. Para esta fórmula usaremos a consulta SQL sugerida aqui.

...