Versões comparadas

Chave

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

...

Bloco de código
titleFórmula - Indenização por dispensa sem justa causa - redução de Jornada
DECL DataInicioAcordo;
DECL DataInicioAcordoAnt;
DECL DiasDuracao;
DECL DiasProrrog;
DECL DiasProrrogAnt;
DECL DataCancelamento;
DECL DataAntecipacao;
DECL DataFimAcordo;
DECL DataFimAcordoAnt;
DECL PercAcodr;
DECL SalMensal;
DECL ValorInd;
DECL ValorTotal;
DECL DuracaoTotal;
DECL DiasAbatidos;
DECL DiasDireito;
 
 
SETVAR (SalMensal, TABFUNC('SALARIO', 'I'));
SETVAR (DiasDireito, 1);
SETVAR (DataInicioAcordoAnt, DATANULA);
SETVAR (DiasProrrogAnt, 0);
SETVAR (DataFimAcordoAnt, DATANULA);

SE (EXECSQL ('BEM') = FALSO)
ENTAO 0;
SENAO
/* Retorna o valor de indenização devido considerando todos acordos*/
SE (EXECSQL ('BEM') = Verdade)
ENTAO
REPITA
SETVAR (DataInicioAcordo,resultsql('BEM','DTACORDOBEM'));
SETVAR (DiasDuracao,resultsql('BEM','DURACAOBEM')); 
SETVAR (DiasProrrog,resultsql('BEM','DIASPRORROGACAOBEM'));
SETVAR (DataCancelamento,resultsql('BEM','DTCANCELAMENTOBEM'));
SETVAR (DataAntecipacao,resultsql('BEM','DTANTECIPACAOBEM'));
SETVAR (PercAcodr,resultsql('BEM','PERCENTUALREDUCAOBEM'));

SE DataInicioAcordoAnt = DataInicioAcordo
ENTAO SETVAR (DiasDuracao, 0);
FIMSE; 
SE DiasProrrogAnt = DiasProrrog
ENTAO SETVAR (DiasProrrog, 0);
FIMSE;
SE DataFimAcordoAnt <> DATANULA
ENTAO SETVAR (DataFimAcordo, (DataFimAcordoAnt + DiasDuracao+ DiasProrrog));
SENAO
SETVAR (DataFimAcordo, DataInicioAcordo + DiasDuracao + DiasProrrog)
FIMSE;

SE DataAntecipacao <> DATANULA
ENTAO SETVAR (DiasDuracao, (SUBTRAIDATAS ((DataAntecipacao+1), DataInicioAcordoDataFimAcordo)));
FIMSE;
SE DataCancelamento <> DATANULA
ENTAO SETVAR (DiasDuracao, (SUBTRAIDATAS ((DataCancelamento+1), DataInicioAcordoDataFimAcordo)));
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);
SETVAR (DataInicioAcordoAnt, DataInicioAcordo);
SETVAR (DiasProrrogAnt, DiasProrrog);
SETVAR (DataFimAcordoAnt, DataFimAcordo);
 
ATE ProxRegSQL('BEM' ) = Falso
FIMSE; 

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

SETVARSE (DataInicioAcordo, TABFUNC('DTACORDOBEM', 'D'));
SETVAR (DiasDuracao, TABFUNC ('DURACAOBEM','I') + TABFUNC ('DIASPRORROGACAOBEM','I'));
SETVAR (DataFimAcordo, (DataInicioAcordo+DiasDuracao)); SUBTRAIDATAS (DTD, DataFimAcordo) = DiasDuracao
ENTAO SETVAR (DiasAbatidos, 0);
SENAO
SETVAR (DiasAbatidos, SUBTRAIDATAS (DTD, DataFimAcordo+1));
FIMSE;

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

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


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.

...