Histórico da Página
...
Bloco de código | ||
---|---|---|
| ||
/* Cálculo utilizado para o layout do BEM versão 3 */ /* Data Atualização : 29/06/2020 */ /* Data Atualização : 10/08/2020 */ /* 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 */ A fórmula abaixo considera cenários de criação de históricos com 2 acordos e 2 antecipações. 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 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 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')-1); 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) ; SETVAR (ConsideraAcordo,1); /* Verifica se tem antecipação, prorrogação ou cancelamento */ SE (DiasProrrog > 0) ENTAO SETVAR (DataFimAcordo,((DataFimAcordo + 1) + DiasProrrog)); SENAO SE (DataCancelamento <> DATANULA) ENTAO SETVAR (DataFimAcordo,DataCancelamento); SENAO SE (DataAntecipacao <> DATANULA) ENTAO SETVAR (DataFimAcordo,(DataAntecipacao + 1)); FIMSE; FIMSE; FIMSE; /*Verifica se é o mesmo acordo e teve antecipação, prorrogação ou cancelamento no seguinte */ SE ((DataInicioAcordo = DataInicioAcordoAnt) E ((DataAntecipacao = DATANULA) OUE (DiasProrrog = 0) OUE (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))) ENTAO SETVAR(DataFimReducao,ULTDIAMES(MTDATA(1,MES,ANO))) FIMSE; /* calcula dias redução no mes*/ SETVAR(DiasReducaoMes, SUBTRAIDATAS(DataFimReducao,DatainicioReducao)); SETVAR(ValorReduzido,(ValorReduzido / 30) * MIN(DiasReducaoMes,30)); /* 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'))); /* 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; /* 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 < ULTDIAMES(MTDATA(1,MES,ANO)) E DataFimAcordo >= MTDATA(1,MES,ANO) ) ENTAO SETVAR(DatainicioReducao,DataInicioAcordo); SETVAR(DataFimReducao,DataFimAcordo); SE (DataInicioAcordo < MTDATA(1,MES,ANO)) ENTAO SETVAR(DatainicioReducao,MTDATA(01,MES,ANO)) FIMSE; SE (DataFimAcordo > ULTDIAMES(MTDATA(1,MES,ANO))) ENTAO SETVAR(DataFimReducao,ULTDIAMES(MTDATA(1,MES,ANO))) FIMSE; /* calcula dias redução no mes*/ SETVAR(DiasReducaoMes, SUBTRAIDATAS(DataFimReducao,DatainicioReducao)); /* 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'))); SETVAR(ValorReduzido,(ValorReduzido / 30) * MIN(DiasReducaoMes,30)); /* Soma dois períodos de redução no mês */ SETVAR(Valor,Valor + 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' |
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas