Tempo aproximado para leitura: 00:01:00 min
Dúvida
É possível limitar a quantidade de Demonstrativos de Pagamento exibidos para o usuário?
Ambiente
TOTVS RH (Linha Protheus) - Meu RH – todas as versões
Solução
No padrão Não é possível limitar a quantidade através do MEU RH, será apresentado todos demonstrativos de pagamento utilizando a opção "Ver mais períodos".
Nesse caso, sugerimos que registre um pedido de melhoria ou vote em alguma das existentes em nossa Central Colaborativa TOTVS
Porem, existe um ponto de entrada LIBRECPAG onde pode ser desenvolvido essa opção.
Saiba Mais
CLIQUE AQUI para acessar mais artigos e FAQs sobre o MEU RH
CLIQUE AQUI para acessar a documentação de referências sobre o MEU RH
RH - Linha Protheus - MEU RH - É possível limitar a quantidade de Demonstrativos de Pagamento (recibos/holerites)
-
Esse foi o material que nos foi passado na ocasião.
Estamos limitando a quantidade de recibos e com quantos dias de antecedencia será exibido o envelope por esse PE, visto que o Protheus não estava respeitando o parâmetro de dias de antecedencia também.
-
Bom dia, estou tentando realizar este ponto de entrada, mostrar Envelope de pagamento de março/24 para frente e o folha de pagamento mostrar no dia 05 e o adiantamento no dia 20. Porém esta dando erro. Segue meu IF.
If aParam[5] < 2024 .AND. aParam[6] < 03 //Se ANO menor QUE 2024 E MES menor que 03: não mostrar no applRet := .F.endif
if aParam[4] == 2 .AND. aParam[1] < 05 //FOL. Se (tipo de recibo) igual 2 = Folha e (data de pagamento) menor que 5 não mostrar applRet := .F.endif
if aParam[4] == 1 .AND. aParam[1] < 20 //ADIAN. Se (tipo de recibo) igual 1 = ADIANTAMENTO e (data de pagamento) menor que 20 não mostrar applRet := .F.endifalguém conseguiria me ajudar?? -
Esse é o código que usamos atualmente, ele controla também a quantidade de holerites a serem exibidos, somente do ano vigente e também a partir de qual dia pode exibir pois o parâmetro que fazia esse ultimo controle não estava funcionando na época que implementamos.
// Facility#define FAC_FRAME_ 22#define FAC_SEGMENTS_ 23
// Severity#define SEV_EMG_ 0#define SEV_ALERT_ 1#define SEV_CRITICAL_ 2#define SEV_ERROR_ 3#define SEV_WARN_ 4#define SEV_NOTICE_ 5#define SEV_INFORM_ 6#define SEV_DEBUG_ 7
User Function LIBRECPAG()Local aParam := PARAMIXBLocal lRet := .T.
//aParam[1] - Data de pagamento//aParam[2] - Filial do Funcionario//aParam[3] - matricula do Funcionario//aParam[4] - Tipo de Recibo//aParam[5] - Ano do Recibo(periodo)//aParam[6] - Mes do Recibo(Periodo)
/*Tipo de Recibo :0 = Ferias1 = Adiantamento2 = Folha3 = Primeira Parcela 134 = Segunda Parcela 135 = PLR6 = Autonomo*/
// LogMsg('LIBRECPAG', FAC_FRAME_, SEV_NOTICE_, 1, '', '', '(cValToChar(aParam[5]) + StrZero(aParam[6], 2)): ' + (cValToChar(aParam[5]) + StrZero(aParam[6], 2)))// LogMsg('LIBRECPAG', FAC_FRAME_, SEV_NOTICE_, 1, '', '', 'LEFT(DtoS(MonthSub(Date(), 12)),6): ' + LEFT(DtoS(MonthSub(Date(), 12)),6))If ((cValToChar(aParam[5]) + StrZero(aParam[6], 2)) < LEFT(DtoS(MonthSub(Date(), 6)),6)) .OR. (sToD(aParam[1]) > Date())//Somente mostra os 6 ultimos recibos//Somente mostra os recibos com data de pagamento MENOR ou igual a HOJElRet := .F.EndIfReturn lRet -
Quanto ao seu código...
If aParam[5] < 2024 .AND. aParam[6] < 03 //Se ANO menor QUE 2024 E MES menor que 03: não mostrar no app// - NÃO vai mostrar nenhum holerite do ano de 2024... NÃO vai mostrar nenhum mês >= 03... vai mostrar ano 202102, 202202, 202302... não vai mostrar 202403, 202303, 202203 e etc...lRet := .F.endifif aParam[4] == 2 .AND. aParam[1] < 05 //FOL. Se (tipo de recibo) igual 2 = Folha e (data de pagamento) menor que 5 não mostrar app//O aParam[1] é uma string com uma "data" completa por exemplo '20240405'lRet := .F.endifif aParam[4] == 1 .AND. aParam[1] < 20 //ADIAN. Se (tipo de recibo) igual 1 = ADIANTAMENTO e (data de pagamento) menor que 20 não mostrar app//O parâmetro 1 é uma string com uma "data" completa '20240405'lRet := .F.endif -
ok Obrigado pelas dicas, é que precisamos mostrar o holerith de março/24 para frente !!! e o historico para trás não mostrar!!! Porém quando criamos o ponto de entrada para restringir os holrith, ele para de respeitar os parametros de dia do pagamento!! Então creio eu que tem que criar os parametros de PAGAMENTO, ADIANTAMENTO, 13º. O que conseguimos foi só fazer aparecer de março/24 para frente desta forma abaixo.
If aParam[5] < 2024
lRet := .F.
EndIf
If aParam[6] = 01 .OR. aParam[6] = 02
lRet := .F.
EndIftem alguma dica de como fazer??
-
If ((cValToChar(aParam[5]) + StrZero(aParam[6], 2)) < '202403')lRet := .F.EndIf
Eu acho que dessa forma aí vai funcionar
Nessa linha estou comparando a concatenação dos parâmetros aParam[5] (Ano) e aParam[6] (mês) e vendo se é MENOR que '202403', se for menor não exibe
Obs: Eu faço um ajuste no parâmetro de mês pra ficar com dois caracteres StrZero(aParam[6], 2) -
Igor, funcionou seu codigo!!!! desde já lhe agradeço. Agora falta saber se agora irá respeitar os parametros
MV_TCFDADT (PARAMATRO DO ADIANTAMENTO) que está setado para aparecer no dia do VALE no dia 20.
MV_TCFDFOL (PARAMETRO DO PAGAMENTO) que está setado para aparecer no dia do pagamento no dia 05.
ou você acha que terá que colocar isto no ponto de entrada tbm, sobre o pagamento aparecer no dia 05 e o vale no dia 20 ???
-
Wellington,
Que bom que deu certo o ponto de entrada aí com vcs.
Quanto aos parâmetros, o MV_TCFDFOL eu testei esses dias e estava funcionando, não tirei do meu código pq já estava funcionando E pq não temos adiantamento aqui.
Já o MV_TCFDADT eu nunca testei pq não temos adiantamento aqui, então não sei te dizer se funciona. Faz o seguinte, assim que seu RH fizer o primeiro cálculo de adiantamento (imagino que semana que vem) vc já entra no aplicativo e vê se aparece alguma coisa lá, se aparecer aí é pq não está respeitando o parêmetro.
Se não estiver respeitando o parâmetro, aí vc ajusta o ponto de entrada.
11 Comentários