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 Mensalista
/* Cálculo utilizado para o layout do BEM versão 3 */ 
/* Data Atualização : 29/06/2020 */ 

/* EssaData fórmula irá calcular o valor a reduzir de jornada e deverá ser associado a um evento de desconto no pagamento do funcionário.
1 Atualização: 10/08/2020 */ 
/* Data Atualização: 28/09/2020 */
/* Data Atualização: 30/09/2020 */
/* Data Atualização: 20/10/2020 */
/* Data Atualização: 23/10/2020 - Será considerado mais de umuma períodoprorrogação. deNecessário adesãoinformar doa histórico do BEM dentrodata fim da competência
exemploprorrogação, quando umahouver. adesãoNecessário comatualizar percentuala deconsulta 25%SQL finalizando'BEM' no mês e uma nova adesão de 50% iniciando no mês 
2 - Será considerado os novos campos do Layout do BEM 3 - Adesões com a mesma data de acordo, considerando Dias prorrogação, Data antecipação e Data Cancelamento */


Antes de criar a fórmula, deverá atualizar a consulta SQL BEM incluído os novos campos

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


DECL DiasDuracao;
DECL DataFimAcordo;
DECL DataInicioReducao;
DECL DataFimReducao;
DECL ValorReduzido;
DECL DiasReducaoMes;
DECL Valor;
DECL DiasProrrog;
DECL DataCancelamento;
DECL DataAntecipacao;
DECL DataInicioAcordoAnt;
DECL DataInicioAcordo;

SETVAR (DataInicioAcordoAnt,DATANULA);
 
SE (EXECSQL ('BEM') = Verdade)
ENTAO
REPITA

SETVAR (ValorReduzido,resultsql('BEM','VALORREDUZIDOBEM')); 
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 (DataFimAcordo,(DataInicioAcordo + DiasDuracao)-1) ;


/*Verifica se tem a mesma data de Acordo */
SE (DataInicioAcordo = DataInicioAcordoAnt)
ENTAO
  SE (DiasProrrog > 0)
  ENTAO 
     SETVAR (DataInicioAcordo,(DataFimAcordo +1));
     SETVAR (DataFimAcordo,((DataFimAcordo + 1) + DiasProrrog));
  SENAO 
     SE (DataCancelamento <> DATANULA)   
     ENTAO
        SETVAR (DataInicioAcordo,(DataFimAcordo +1));
        SETVAR (DataFimAcordo,DataCancelamento)
     SENAO 
        SE (DataAntecipacao <> DATANULA)   
        ENTAO
          SETVAR (DataInicioAcordo,(DataFimAcordo +1*/
/* Data Atualização: 10/11/2020 - Será considerado mais de uma prorrogação. Necessário informar a data INICIO da prorrogação, quando houver. 


/* Essa fórmula irá calcular o valor a reduzir de jornada e deverá ser associado a um evento de desconto no pagamento do funcionário.

1 - Será considerado mais de um período de adesão do histórico do BEM 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 mês 
2 - Será considerado os novos campos do Layout do BEM 3 - Adesões com a mesma data de acordo, considerando Dias prorrogação, Data antecipação e Data Cancelamento */
3 - Será considerado mais de uma prorrogação. Necessário informar a data do início da prorrogação.


1 - Antes de criar a fórmula, deverá atualizar a consulta SQL BEM incluído os novos campos


select DTACORDOBEM,DURACAOBEM,VALORREDUZIDOBEM,DTCANCELAMENTOBEM,DTANTECIPACAOBEM,DIASPRORROGACAOBEM,PERCENTUALREDUCAOBEM,DTPRORROGACAOBEM
FROM PFHSTBEM
where codcoligada =:FRM_COLIGADA and chapa =:FRM_CHAPA
and TIPOADESAOBEM = '1'
ORDER BY DTMUDANCA DESC



2 - Colar o conteúdo da fórmula abaixo: 

DECL DiasDuracao;
DECL DataFimAcordo;
DECL DataInicioReducao;
DECL DataFimReducao;
DECL DataInicioProrroga;
DECL ValorReduzido;
DECL DiasReducaoMes;
DECL Valor;
DECL DiasProrrog;
DECL DataCancelamento;
DECL DataAntecipacao;
DECL DataInicioAcordoAnt;
DECL DataInicioAcordo;
DECL ConsideraAcordo;
 
SETVAR (DataInicioAcordoAnt,DATANULA);
 
SE (EXECSQL ('BEM') = Verdade)
ENTAO
  REPITA
     SETVAR (ValorReduzido,resultsql('BEM','VALORREDUZIDOBEM'));
     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 (DataFimAcordo,DataAntecipacao)
DataInicioProrroga,resultsql('BEM','DTPRORROGACAOBEM'));
     SETVAR (DataFimAcordo,(DataInicioAcordo + DiasDuracao)-1) FIMSE;
     FIMSE
  FIMSE
FIMSE
SETVAR (DataInicioAcordoAntConsideraAcordo,DataInicioAcordo1);
  
SE (DataInicioAcordo <= ULTDIAMES(MTDATA(1,MES,ANO)) E DataFimAcordo >= MTDATA(1,MES,ANO) ) ENTAO  
/* Verifica se tem antecipação, prorrogação ou cancelamento */
     SETVAR(DatainicioReducao,DataInicioAcordo);
     SETVAR(DataFimReducao,DataFimAcordo);SE (DiasProrrog > 0)
    SE (DataInicioAcordo <= MTDATA(1,MES,ANO)) ENTAO
       SETVAR (DatainicioReducaoDataFimAcordo,MTDATA(01,MES,ANO(DataInicioProrroga + DiasProrrog));
     FIMSE;SENAO
       SE (DataFimAcordoDataCancelamento > ULTDIAMES(MTDATA(1,MES,ANO)))<> DATANULA) 
       ENTAO
         SETVAR (DataFimReducao,ULTDIAMES(MTDATA(1,MES,ANO)))DataFimAcordo,DataCancelamento);
    FIMSE;
   SENAO
  /* calcula dias redução no mes*/
    SE SETVAR(DiasReducaoMes, SUBTRAIDATAS(DataFimReducao,DatainicioReducao));DataAntecipacao <> DATANULA) 
  
        /*ENTAO
 calcula dias redução no mês desconsiderando férias*/
     SETVAR (DiasReducaoMesDataFimAcordo,(DiasReducaoMesDataAntecipacao  -  DIAFERPER(DatainicioReducao,DataFimReducao)+ 1));
  
     /* calcula dias reduçãoFIMSE;
 no mês desconsiderando afastamento*/
   FIMSE;
  SETVAR(DiasReducaoMes,(DiasReducaoMes  -  DIASAFT(DatainicioReducao,DataFimReducao,'PTO'))) FIMSE;
  
    
 SETVAR(ValorReduzido,(ValorReduzido / 30) * MIN(DiasReducaoMes,30));
 
     /*Verifica Somase doisé períodos de reduçãoo mesmo acordo e teve antecipação, prorrogação ou cancelamento no mêsseguinte */
     SETVAR(Valor,Valor + ValorReduzido);
  SENAO 0
FIMSE;
ATE ProxRegSQL('BEM' ) = Falso
FIMSE;
Valor;





/* Cálculo utilizado para o Layout do BEM versão 2 */

/* Data Atualização : 15/06/2020 */ 
/* 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 do histórico do BEM 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 mês */

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')); 

SE (DataInicioAcordo <SE ((DataInicioAcordo = DataInicioAcordoAnt) E ((DataAntecipacao = DATANULA) OU (DiasProrrog = 0) OU (DataCancelamento = DATANULA)))
     ENTAO
       SETVAR(ConsideraAcordo,0)
     FIMSE;
 
/*Considera acordo no cálculo */
SE (ConsideraAcordo = 1)
ENTAO
   SE (DataInicioAcordo <= ULTDIAMES(MTDATA(1,MES,ANO)) E DataFimAcordo >= MTDATA(1,MES,ANO) )
   ENTAO
      SETVAR(DatainicioReducao,DataInicioAcordo);
      SETVAR(DataFimReducao,DataFimAcordo);
 
      /*Atribui início redução */
      SE (DataInicioAcordo <= MTDATA(1,MES,ANO))
      ENTAO
        SETVAR(DatainicioReducao,MTDATA(01,MES,ANO))
      FIMSE;
      
      /*Atribui fim redução */     
      SE (DataFimAcordo > ULTDIAMES(MTDATA(1,MES,ANO)))
 E DataFimAcordo >= MTDATA(1,MES,ANO) ) ENTAO
        SETVAR(DatainicioReducao,DataInicioAcordo);
     SETVAR(DataFimReducao,DataFimAcordo);
    SE (DataInicioAcordo < DataFimReducao,ULTDIAMES(MTDATA(1,MES,ANO)))
 ENTAO
     FIMSE;
  SETVAR(DatainicioReducao,MTDATA(01,MES,ANO))

     FIMSE;
/* calcula dias redução no mes*/
     SE (DataFimAcordo > DIADT(ULTDIAMES(MTDATA(1,MES,ANO))) ENTAO
= 30)      SETVAR(DataFimReducao,OU (DIADT(ULTDIAMES(MTDATA(1,MES,ANOMESDT(DataInicioAcordo),ANODT(DataInicioAcordo))))
 = 30)  FIMSE;
     /*ENTAO calcula
 dias redução no mes*/
     SETVAR(DiasReducaoMes, SUBTRAIDATAS(DataFimReducao,DatainicioReducao)+1);
  
   SENAO 
 /* calcula dias redução no mês desconsiderando férias*/
     SETVAR(DiasReducaoMes,(DiasReducaoMes  -  DIAFERPER(DatainicioReducao,DataFimReducao))); SUBTRAIDATAS(DataFimReducao,DatainicioReducao))
  
   FIMSE;
  /* calcula dias
 redução no mês desconsiderando afastamento*/
     SETVAR(DiasReducaoMes,(DiasReducaoMes  -  DIASAFT(DatainicioReducao,DataFimReducao,'PTO')));
  
     SETVAR(ValorReduzido,(ValorReduzido / 30) * MIN(DiasReducaoMes,30));
  
     /* Somacalcula dois períodosdias de redução no mês desconsiderando férias*/
     SETVAR(ValorDiasReducaoMes,Valor(DiasReducaoMes + ValorReduzido);
SENAO 0
FIMSE;
ATE ProxRegSQL('BEM' ) = Falso
FIMSE;
Valor;


Antes da criação da fórmula acima deverá criar a consulta SQL código da Consulta = "BEM".

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.

image2020-4-9_12-46-26.pngImage Removed

Envelope lançou o valor referente ao período que considera a Jornada reduzida:

-  DIAFERPER(DatainicioReducao,DataFimReducao)));
    
 /* calcula dias redução no mês desconsiderando afastamento*/
     SETVAR(DiasReducaoMes,(DiasReducaoMes  -  DIASAFT(DatainicioReducao,DataFimReducao,'PTO')));
 
  
  /* Soma dois períodos de redução no mês */
      SETVAR(Valor,Valor + ValorReduzido);
   SENAO 0
   FIMSE;
FIMSE;
SETVAR (DataInicioAcordoAnt,DataInicioAcordo);
ATE ProxRegSQL('BEM' ) = Falso
FIMSE;
Valor;





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

image2020-4-9_12-46-26.pngImage Added


Envelope lançou o valor referente ao período que considera a Jornada reduzida:

image2020-4-9_14-10-55.pngImage Added



Diferença Salarial por Dissídio x  Redução de Jornada/Salário


A MP 936 convertida em Lei n° 14.020 , foi criada com o objetivo de preservar o emprego e renda dos trabalhadores, garantir as atividades empresariais e laborais, e reduzir os impactos sociais da calamidade pública decorrentes ao COVID-19.

A MP com a conversão da Lei não traz a questão do dissídio retroativo, dessa forma o entendimento é que ela veio flexibilizar algumas regras trabalhistas, e devemos nos atentar o que diz o artigo 471 da CLT.

Art. 471 - Ao empregado afastado do emprego, são asseguradas, por ocasião de sua volta, todas as vantagens que, em sua ausência, tenham sido atribuídas à categoria a que pertencia na empresa.

Link Consultoria MP 936/2020 - Lei n° 14.020 - Redução de salário e jornada com dissidio retroativo


No produto,  a diferença salarial por dissídio será calculada considerando o salário integral.

A fórmula que calcula o valor redutor não reduzirá a jornada/salário considerando o reajuste salarial,  conforme entendimento acima.

Caso a empresa tenha interpretação jurídica diferente do exposto, poderá usar recursos de fórmulas do produto e customizar o cálculo considerando o aumento salarial no desconto redutor de jornada/salário.

Abaixo roteiro para utilização deste recurso.

MP 936 - Fórmula de redução da jornada/salário considerando aumento salarial por dissídioimage2020-4-9_14-10-55.pngImage Removed