Histórico da Página
...
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 | ||||
---|---|---|---|---|
| ||||
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. Esta fórmula foi utilizada os campo complementares sugeridos aqui:
Bloco de código | ||
---|---|---|
| ||
DECL DTREDUZIDADECL DataInicioAcordo; DECL DataInicioAcordoAnt; DECL DiasDuracao; DECL DiasProrrog; DECL DiasProrrogAnt; DECL DataCancelamento; DECL DataAntecipacao; DECL DataFimAcordo; DECL DataFimAcordoAnt; DECL DTRETPercAcodr; DECL QUANTDIASSalMensal; DECL SALValorInd; DECL PERCENTUALValorTotal; DECL TPDEMISSAODuracaoTotal; DECL QUANTMESDiasAbatidos; DECL DIASDIREITODiasDireito; DEClDECL DIASABTIDOSTpDemissao; SETVAR (DTREDUZIDATpDemissao, TABFUNC ('DTACORDOBEMTIPODEMISSAO', 'D')); SETVAR (QUANTMES SalMensal, TABFUNC('DURACAOBEMSALARIO', 'I')); SETVAR (DiasDireito, 1); SETVAR (DataInicioAcordoAnt, DATANULA); SETVAR (DiasProrrogAnt, 0); SETVAR (DTRET, (TABFUNC('DTACORDOBEM','D')+ (QUANTMES)DataFimAcordoAnt, DATANULA); SE TpDemissao <> 2; ENTAO 0; SENAO 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 (SALDataCancelamento, TABFUNCresultsql('SALARIOBEM', 'IDTCANCELAMENTOBEM')); SETVAR (PERCENTUALDataAntecipacao, TABFUNCresultsql('PERCENTUALREDUCAOBEMBEM', 'IDTANTECIPACAOBEM')); SETVAR (TPDEMISSAOPercAcodr, TABFUNC resultsql('TIPODEMISSAOBEM','PERCENTUALREDUCAOBEM')); SE DTRETDataInicioAcordoAnt = '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 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.70 SENAO SE (DTRET+QUANTDIAS) > DTD E PERCENTUAL >= 70 ENTAO SAL * (DIASDIREITO/30) 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),DataFimAcordo))); FIMSE; SE DataCancelamento <> DATANULA ENTAO SETVAR (DiasDuracao, (SUBTRAIDATAS ((DataCancelamento+1), DataFimAcordo))); 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*/ SE SUBTRAIDATAS (DTD, DataFimAcordo) = DiasDuracao ENTAO SETVAR (DiasAbatidos, 0); SENAO SETVAR (DiasAbatidos, SUBTRAIDATAS (DTD, DataFimAcordo)); FIMSE; SE DiasAbatidos > 0 E (DuracaoTotal - DiasAbatidos ) > 0; ENTAO SETVAR (DiasDireito, DuracaoTotal - DiasAbatidos); 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.abaixo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
SELECT CHAPA, TIPO, DTINICIO, DTFINAL
FROM PFHSTAFT (NOLOCK)
WHERE TIPO IN ('C') AND MOTIVO = 'CV' AND PFHSTAFT.CHAPA=:FRM_CHAPA
AND PFHSTAFT.CODCOLIGADA=:FRM_COLIGADA |
Bloco de código | ||
---|---|---|
| ||
DECL DATAINICIO; DECL DATAFIM; DECL QUANTDIAS; DECL CH; DECL TPDEMISSAO; SE EXECSQL('AFASTAMENTO') = 1; ENTAO REPITA SE RESULTSQL('AFASTAMENTO','CHAPA') = CHAPA; ENTAO SETVAR (DATAINICIO, RESULTSQL('AFASTAMENTO','DTINICIO')); SETVAR (DATAFIM, RESULTSQL('AFASTAMENTO','DTFINAL')); SETVAR (CH, RESULTSQL('AFASTAMENTO', 'CHAPA')); SETVAR (TPDEMISSAO, TABFUNC ('TIPODEMISSAO','')); FIMSE ATE PROXREGSQL('AFASTAMENTO') = FALSO; SE CH = 0 ENTAO 0 SENAO SE DATAFIM = '01/01/0001' ENTAO 0 SENAO SE DATAFIM <> '01/01/0001' E TPDEMISSAO = 2 ENTAO SETVAR (QUANTDIAS, SUBTRAIDATAS(DATAFIM, DATAINICIO)); SE (DATAFIM+QUANTDIAS) > DTD ENTAO RC SENAO 0 |
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas