Árvore de páginas

Versões comparadas

Chave

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

...

Obs.: NÃO é necessário cadastrá-lo no menu pois o arquivo somente contém implementações de pontos de entrada.



Informações
titleInformação

Cada ponto de entrada possui uma finalidade diferente:

  • GP070P13: irá retornar o valor de 1/3 de férias adiado para o saldo da provisão.
  • GP070COD: por padrão, o sistema somente considera as verbas dos IDs de cálculo 0077, 0079, 0090 e 0095 para efetuar a baixa de 1/3 de férias. Com o ponto de entrada, será possível considerar a verba gerada na folha através da rotina PGTFER927

...

  • .
  • GP070FBX: por padrão, o sistema somente verifica e realiza a baixa de férias em período que o funcionário está de férias. Como a quitação do 1/3 de férias na folha poderá ocorrer em período que o funcionário não está de férias, o ponto de entrada irá forçar a verificação da baixa mesmo nesse período.


Dessa forma, quando o sistema efetuar o cálculo da provisão de férias, através da execução do ponto de entrada GP070P13 será efetuado uma validação para buscar o valor da verba de base de 1/3 de férias adiado gerado no cálculo de férias e esse valor será retornado ao saldo da provisão de férias. Isso ocorrerá a partir do cálculo de férias que teve o 1/3 de férias adiado até o período em que ocorrer a quitação do 1/3 de férias na folha.

Quando for efetuado a quitação do 1/3 de férias adiado na folha, através do ponto de entrada GP070COD será adicionado o código da verba para que o sistema efetue a baixa desse valor na coluna de 1/3 de férias. E, através do ponto de entrada GP070FBX, o sistema irá verificar e efetuar a baixa de 1/3 de férias mesmo em período em que o funcionário não esteja de férias, pois por padrão não ocorre essa verificação para evitar processamento desnecessário

...

.



O arquivo de exemplo pode ser baixado ao clicar no ícone abaixo:

...

Expandir
titleClique aqui para expandir a explicação do arquivo exemplo

Na parte superior do ponto de entrada, foram declaradas 5 variáveis auxiliares do tipo Static, que irão conter as definições de período inicial e verbas. Os valores devem ser alterados conforme o período de adiamento do 1/3 de férias e de acordo com o código das verbas que foram incluídascadastradas no cadastro de verbas:

Bloco de código
themeEmacs
firstline1
linenumberstrue
Static cPIniMP927   :=	"202004"//Variável para definir o período inicial que começou o adiamento do 1/3 de férias
Static cPFimMP927   :=	"202008"//Variável para definir o período final do adiamento do 1/3 de férias, ou seja, o término é quando foi realizado o pagamento em folha do 1/3 adiado
Static cVbUmTFer    :=	"014"//Variável para definir o código da verba de base de 1/3 mês paga nas férias
Static cVbUmTFMS    :=	"065"//Variável para definir o código da verba de base de 1/3 mês seguinte paga nas férias
Static cVbUmTFol    :=	"MP8"//Variável para definir o código da verba de base de 1/3 paga na folha



Expandir
titleClique para expandir explicação do PE GP070P13

O ponto de entrada irá efetuar os seguintes procedimentos:

Linha 25: se o cálculo da provisão está entre o período inicial e período final do adiamento do 1/3 de férias;

Linha 27: se o período estiver em aberto, efetua busca na tabela SRC para verba de quitação do 1/3 de férias adiado, ou se o período estiver fechado, efetua a busca na tabela SRD. Se encontrar a verba, significa que não é necessário retornar o saldo de 1/3 de férias;

Linha 40: se precisa retornar o saldo de 1/3 de férias e encontrar cálculo de férias para o funcionário na tabela SRH;

Linha 42: percorre todos os registros da tabela SRH para o funcionário;

Linha 44: se o cálculo de férias iniciou entre o período inicial e período final do adiamento do 1/3 de férias;

Linha 46: se encontrou na tabela SRR pela verba de base de 1/3 de férias;

Linha 48: percorre todos os registros da tabela SRR da verba de base de 1/3 de férias para o funcionário

Linha 49: pega o valor da verba através do campo RR_VALOR;

Linha 50: adiciona o valor da verba encontrada na posição do Array de férias vencidas correspondente ao saldo atual de 1/3 de férias;

Linha 51: adiciona o valor de INSS correspondente a verba encontrada na posição do Array de férias vencidas correspondente ao saldo atual de INSS;

Linha 52: adiciona o valor de FGTS correspondente a verba encontrada na posição do Array de férias vencidas correspondente ao saldo atual de FGTS;

Linha 53: adiciona o valor de PIS correspondente a verba encontrada na posição do Array de férias vencidas correspondente ao saldo atual de PIS;

Linha 58: se encontrou na tabela SRR pela verba de base de 1/3 de férias;

Linha 60: percorre todos os registros da tabela SRR da verba de base de 1/3 de férias mês seguinte para o funcionário

Linha 61: pega o valor da verba através do campo RR_VALOR;

Linha 62: adiciona o valor da verba encontrada na posição do Array de férias vencidas correspondente ao saldo atual de 1/3 de férias;

Linha 63: adiciona o valor de INSS correspondente a verba encontrada na posição do Array de férias vencidas correspondente ao saldo atual de INSS;

Linha 64: adiciona o valor de FGTS correspondente a verba encontrada na posição do Array de férias vencidas correspondente ao saldo atual de FGTS;

Linha 65: adiciona o valor de PIS correspondente a verba encontrada na posição do Array de férias vencidas correspondente ao saldo atual de PIS;


Bloco de código
themeEmacs
firstline9
linenumberstrue
//Ponto de entrada para alterar o valor provisionado de férias vencidas para retornar o valor de 1/3 para o saldo
User Function GP070P13()

Local aAreaSRC  := SRC->( GetArea() )
Local aAreaSRD  := SRD->( GetArea() )
Local aAreaSRH  := SRH->( GetArea() )
Local aAreaSRR  := SRR->( GetArea() )
Local lProvUmT  := .T.
Local nValUmT   := 0

SRC->( dbSetOrder(1) )//RC_FILIAL+RC_MAT+RC_PD+RC_CC+RC_SEMANA+RC_SEQ
SRD->( dbSetOrder(1) )//RD_FILIAL+RD_MAT+RD_DATARQ+RD_PD+RD_SEMANA+RD_SEQ+RD_CC+RD_PROCES
SRH->( dbSetOrder(1) )//RH_FILIAL+RH_MAT+DTOS(RH_DATABAS)+DTOS(RH_DATAINI)
SRR->( dbSetOrder(1) )//RR_FILIAL+RR_MAT+RR_TIPO3+DTOS(RR_DATA)+RR_PD+RR_CC+RR_PROCES

//Se o cálculo da provisão estiver dentro do período do adiamento do 1/3
If cAnoMes >= cPIniMP927 .And. cAnoMes <= cPFimMP927
    //Se o período estiver aberto
    If !Empty(aPerAberto)
        //Pesquisa na tabela SRC a verba de pagamento do 1/3 adiado
        If SRC->( dbSeek(SRA->RA_FILIAL + SRA->RA_MAT + cVbUmTFol) )
            lProvUmT := .F.
        EndIf
    //Se o período estiver fechado
    Else
        //Pesquisa na tabela SRD a verba de pagamento do 1/3 adiado
        If SRD->( dbSeek(SRA->RA_FILIAL + SRA->RA_MAT + cAnoMes + cVbUmTFol) )
            lProvUmT := .F.
        EndIf  
    EndIf
    //Se não houve pagamento do 1/3 adiado realiza busca na tabela SRH para verificar se o funcionário possui férias calculadas
    If lProvUmT .And. SRH->( dbSeek(SRA->RA_FILIAL + SRA->RA_MAT) )
        //Pesquisa por todos os registros existentes na tabela SRH para o funcionário
        While SRH->( !Eof() ) .And. SRA->RA_FILIAL+SRA->RA_MAT == SRH->RH_FILIAL+SRH->RH_MAT
            //Se o cálculo das férias estiver dentro do período do adiamento do 1/3
            If AnoMes(SRH->RH_DATAINI) >= cPIniMP927 .And. AnoMes(SRH->RH_DATAINI) <= cPFimMP927
                //Pesquisa nas verbas calculadas nas férias do funcionário pela verba de base de 1/3
                If SRR->( dbSeek(SRA->RA_FILIAL + SRA->RA_MAT + "F" + dToS(SRH->RH_DATAINI) + cVbUmTFer ) )
                    //Pesquisa por todos os registros existentes na tabela SRR para o funcionário referente à verba de base de 1/3
                    While SRR->( !Eof() ) .And. SRA->RA_FILIAL+SRA->RA_MAT+"F"+dToS(SRH->RH_DATAINI)+cVbUmTFer == SRR->RR_FILIAL+SRR->RR_MAT+SRR->RR_TIPO3+dToS(SRR->RR_DATA)+SRR->RR_PD
                        nValUmT := SRR->RR_VALOR
                        aFerVenc[_Atual,_1Ter] += nValUmT//1/3 de férias
                        aFerVenc[_Atual,_INSS] += NoRound(nValUmT * (nPercEmp+nPercTer+nPercAcTrab))//INSS
                        aFerVenc[_Atual,_FGTS] += NoRound(nValUmT * nPercFgts)//FGTS
                        aFerVenc[_Atual,_PIS]  += NoRound(nValUmT * nPercPis)//PIS
                        SRR->( dbSkip() )
                    End
                EndIf
                //Pesquisa nas verbas calculadas nas férias do funcionário pela verba de base de 1/3 mês seguinte
                If SRR->( dbSeek(SRA->RA_FILIAL + SRA->RA_MAT + "F" + dToS(SRH->RH_DATAINI) + cVbUmTFMS ) )
                    //Pesquisa por todos os registros existentes na tabela SRR para o funcionário referente à verba de base de 1/3
                    While SRR->( !Eof() ) .And. SRA->RA_FILIAL+SRA->RA_MAT+"F"+dToS(SRH->RH_DATAINI)+cVbUmTFMS == SRR->RR_FILIAL+SRR->RR_MAT+SRR->RR_TIPO3+dToS(SRR->RR_DATA)+SRR->RR_PD
                        nValUmT := SRR->RR_VALOR
                        aFerVenc[_Atual,_1Ter] += nValUmT//1/3 de férias
                        aFerVenc[_Atual,_INSS] += NoRound(nValUmT * (nPercEmp+nPercTer+nPercAcTrab))//INSS
                        aFerVenc[_Atual,_FGTS] += NoRound(nValUmT * nPercFgts)//FGTS
                        aFerVenc[_Atual,_PIS]  += NoRound(nValUmT * nPercPis)//PIS
                        SRR->( dbSkip() )
                    End
                EndIf
            EndIf
            SRH->( dbSkip() )
        End
    EndIf
EndIf

RestArea( aAreaSRC )
RestArea( aAreaSRD )
RestArea( aAreaSRH )
RestArea( aAreaSRR )

Return



Expandir
titleClique para expandir explicação do PE GP070COD
Linha 85: adiciona o código da verba de quitação do 1/3 adiado na folha na variável Private cCodUmTer, para que o sistema efetue a baixa na coluna de 1/3 de férias;


Bloco de código
themeEmacs
firstline82
linenumberstrue
//Ponto de entrada para adicionar uma verba específica nas variáveis que irão controlar a divisão da baixa de férias
User Function GP070COD()

cCodUmTer += cVbUmTFol+"*"

Return



Expandir
titleClique para expandir explicação do PE GP070FBX

Linha 95: se o cálculo da provisão está entre o período inicial e período final do adiamento do 1/3 de férias;

Linha 96: atribui .T. para a variável lBaixa para que indique ao sistema que seja forçado a busca pela baixa de férias;


Bloco de código
themeEmacs
firstline89
linenumberstrue
//Ponto de entrada para forçar a busca pela baixa de férias, mesmo em mês que o funcionário não está de férias
User Function GP070FBX()

Local lBaixa := .F.

//Se o cálculo da provisão estiver dentro do período do adiamento do 1/3
If cAnoMes >= cPIniMP927 .And. cAnoMes <= cPFimMP927
    lBaixa := .T.
EndIf

Return lBaixa

...