Tempo aproximado para leitura: 00:09:00 min
Dúvida
Como parametrizar o Sistema para utilizar o programa FP2600 - Manutenção Fórmula de Cálculo dos Eventos?
Ambiente
TOTVS RH - TOTVS RH (Linha Datasul) - Folha de Pagamento (MFP) – Versão 12
Solução
Segue detalhamento para realizar a Manutenção Fórmula de Cálculo dos Eventos:
Parametrização no Produto
- Diagnosticar a real necessidade do usuário, analisando se não podem ser utilizadas as fórmulas criadas através do programa FP2600.
- Efetuar o levantamento dos campos e tabelas a serem utilizadas no programa.
- Fazer o programa específico, sendo que as variáveis abaixo deverão ser utilizadas para retorno da informação. Estas variáveis já estão valorizadas para a fórmula utilizada na função FP2600.
- Variáveis disponíveis no módulo de Folha de Pagamento:
i-un-retorno: variável shared que retorna a unidade calculada pelo programa específico para o programa principal.
i-vl-retorno: variável shared que retorna o valor calculado pelo programa específico para o programa principal.
i-bs-retorno: variável shared que retorna a base de cálculo do programa específico para o programa principal.
def shared var i-un-retorno as dec no - undo
def shared var i-vl-retorno as dec no - undo
def shared var i-bs-retorno as dec no - undo
Buffers disponíveis que poderão ser utilizados em programas específicos da folha de pagamento - FP2600:
Def shared buffer bfunciona for funciona.
Def shared buffer bestabel for estabel.
Def shared buffer bturno for turno.
Def shared buffer bsindicato for sindicato.
Def shared buffer bcontrole for controle.
Def shared buffer btbinss for tbinss.
Def shared buffer bmvtobefo for mvtobefo.
Def shared buffer bsituacao for situacao.
Def shared buffer baltersit for altersit.
- Variáveis disponíveis no módulo de Benefícios Sociais BS0540 - Manutenção Fórmula de Cálculo:
d-vl-benefic: Variável shared utilizada na geração de benefícios que contém o valor atual do benefício.
d-acum-tot: Variável shared extent usada para acumular os totais usados no programa de cálculo que será tratado na geração de benefícios. Retorna para o programa principal.
d-acum-tot[1]: Total funcionário.
d-acum-tot[[2]: Total empresa.
d-acum-tot[3]: Total dependentes.
d-acum-tot[4]: Total correção.
i-inf-cd: Variável shared, sendo que no campo contínuo o extent [2] traz do programa de geração o salário atual do funcionário.
i-cd-benefic: Variável shared que contém o código do benefício que está sendo calculado.
Pré-requisitos para fazer o programa.
O diretório onde deverá estar o programa deve ser:
FMP: Folha de Pagamento - FP2600
FBP: Benefícios Sociais - BS0540
Exemplo de nomes e programas:
FM000416.P: FM + código do evento sendo que deverá ter 6 dígitos, e os primeiros deverão ser preenchidos com zeros à esquerda - FP2600.
FB00120.P: FB + código do evento sendo que deverá ter 6 dígitos, e os primeiros deverão ser preenchidos com zeros à esquerda - BS0540.
Exemplo de programa de fórmula de cálculo benefícios sociais:
Programa: Especifico/Beneficio *
Data....: Julho/1995 *
Autor...: DATASUL
Objetivo: Formula de Calculo para Plano de Saúde *
def shared var d-vl-benefic as dec no-undo.
Def shared var d-acum-tot as dec extent 10 no-undo.
Def shared var i-inf-cd as dec extent 15 no-undo.
Def shared var i-cd-benefic like mvtobene.cd-benefic no-undo.
Def var i-cont-dep as int initial 1 no-undo.
Def var d-vl-func as dec no-undo.
Def var d-vl-tot as dec no-undo.
Def var d-vl-benef as dec no-undo.
Def var d-vl-salar as dec no-undo.
Def shared buffer bfunciona for funciona.
For each depend dor bfunciona no-lock:
Assign i-cont-dep = i-cont-dep + 1.
End.
Find benefic no-lock where
Benefic.cd-benefic = i-cd-benefic no error.
If available benefic then do:
Find first benefunc of benefic no-lock no-error.
If available benefunc then do:
Find first tabvalor where
Tabvalor.ep-codigo = ngs-i-codemp and
Tabvalor.cd-tabela = 1 and
Tabvalor.sequencia = 4 no lock no-error.
Assign d-vl-func = tabvalor.vl-assumir * tabvalor.vl-base
d-vl-tot = tabvalor.vl-assumir * i-cont-dep
d-vl-benef = d-vl-func * i-cont-dep
d-vl-salar = i-inf-cd[2] * 0.06.
if d-vl-benef > d-vl-salar then
assign d-acum-tot[1] = d-vl-salar
d-acum-tot[2] = d-vl-tot - d-vl-salar.
Else
Assign d-acum-tot[1] = d-vl-tot.
End.
End.
A referência feita a tabela de valores é uma opção para cadastrarmos valores, evitando com isso, o tratamento interno destes valores no programa de fórmula de cálculo, gerando como benefício a constante alteração destes por parte do usuário.
/****FBP/FP000120.P****/
Exemplo de programa de fórmula de cálculo folha de pagamento:
Programa: FM000233.P *
Data....: Setembro/199
Autor...: DATASUL *
Objetivo: Calcular o evento 233 (férias vencidas indenizadas)*
a partir do evento 890 Formula de Calculo para Plano de Saude *
def shared var i-un-retorno as dec no-undo.
Def shared var i-vl-retorno as dec no-undo.
Def shared var i-bs-retorno as dec no-undo.
Def var d-qtd as dec no-undo.
Def var d-salario as dec no-undo.
Def shared workfile wmovto no-undo.
Field seq-calculo as int
Field ev-codigo as int
Field un-inf as dec
Field hr-inf as dec
Field vl-inf as dec
Field un-calc as dec
Field hr-calc as dec
Field vl-calc as dec
Field bs-calc as dec
Field hr-carga as dec
Field ger-fixo as int
Field ev-indice as int
Field origem as cha format "x" initial "C"
Field valoriza as log init no.
Def buffer b-wmovto for wmovto.
Find first b-wmovto where
b-wmovto.ev-codigo = 233
no-lock no-error.
If not avail b-wmovto then return.
Assign d-qtd = b-wmovto.un-calc.
Find first b-wmovto where
b-wmovto.ev-codigo = 890
no-lock no-error.
If not avail b-wmovto then return.
Assign d-salario = b-wmovto.vl-calc
i-vl-retorno = trunc(round(d-salario * d-qtd / 30,2),2).
Return.
/****FM000233.P****/
Após esgotadas as possibilidades de criação de fórmulas de cálculo de evento através da rotina FP2600, resta a possibilidade da criação de um programa de computador na linguagem Progress® ABL, conforme descrito abaixo:
Pré-requisitos
Domínio da linguagem Progress® ABL e das ferramentas de desenvolvimento.
Passo a Passo
Inicialmente é preciso criar um novo código de fórmula no FP2600. Nesse código deve ser acrescentado uma única sequência com:
| Acumulador | 1 |
| Operação | P |
| Conteúdo | Código do programa |
O programa a ser criado deve seguir este formato para o nome:
fm + código do programa com 6 dígitos + extensão .p para fórmulas para Folha / Férias e Rescisões;
Exemplo
Se for criada a fórmula com código do programa 25 o nome do programa deverá ser fm000025.p
Conteúdo mínimo
Um programa mínimo para Folha, Férias e Rescisões apresenta este conteúdo:
def shared var i-un-retorno as dec no-undo.
def shared var i-vl-retorno as dec no-undo.
def shared var i-bs-retorno as dec no-undo.
Na variável i-un-retorno deve ser retornado a quantidade do evento na unidade cadastrada. Na variável i-bs-retorno deve ser retornado a base de cálculo usada na determinação do valor do evento, que deve ser retornado na variável i-vl-retorno.
Claro que para seja possível criação de um programa útil são necessárias outras informações. Abaixo definição de outras variáveis disponíveis com descrição de seu conteúdo.
/* Dezesseis (16) valores cadastrais – detalhes na Tabela 1 Informações Cadastrais */
def shared var i-inf-cd as dec extent 16 no-undo.
/* Onze (11) valores de base de cálculo – detalhes na Tabela 2 Bases */
def shared var i-inf-bs as dec extent 11 no-undo.
/* Variáveis que permitem determinar qual rotina chamou a fórmula de cálculo
Exemplo
l-fp3020 = yes significa que o programa foi chamado pela rotina FP3020 - Cálculo Folha Normal.
*/
define shared var l-fp3020 as log no-undo.
define shared var l-fp3060 as log no-undo.
define shared var l-fp3160 as log no-undo.
define shared var l-fp3170 as log no-undo.
define shared var l-fp3180 as log no-undo.
define shared var l-fr0100 as log no-undo.
define shared var l-fr5100 as log no-undo.
define shared var l-fr5160 as log no-undo.
Além disso o buffer abaixo permite determinar qual funcionário está sendo calculado
def shared buffer bfunciona for funcionario.
Após finalizado o programa deve ser compilado e colocado no diretório informado no Manutenção Parâmetro Empresa RH – FP0500, Pasta 2, campo Diretório Fórmulas.
As fórmulas podem ser usadas nos módulos Folha, Férias e Rescisões.
Tabela 1 - Informações Cadastrais
|
Código |
Conteúdo |
Código |
Conteúdo |
|
01 |
Salário Padrão Mensal |
09 |
Meses na Empresa |
|
02 |
Salário Atual |
10 |
Anuênios |
|
03 |
Salário Hora |
11 |
Biênios |
|
04 |
Horas Padrão Mês |
12 |
Triênios |
|
05 |
Horas Padrão Dia |
13 |
Quadriênios |
|
06 |
Horas Reais Dia |
14 |
Quinquênios |
|
07 |
Dias Ativos no período |
15 |
Salário Mínimo |
|
08 |
Dias no Período |
16 |
Idade funcionário ou dependente - benefícios |
Tabela 2 - Bases
|
Código |
Conteúdo |
Código |
Conteúdo |
|
01 |
Base INSS |
06 |
Base Auxiliar 3 |
|
02 |
Base FGTS |
07 |
Base Auxiliar 4 |
|
03 |
Base RAIS Normal |
08 |
Base Auxiliar 5 |
|
04 |
Base Auxiliar 1 |
09 |
Base Vale Transporte |
|
05 |
Base Auxiliar 2 |
10 |
Base Salário Família |
|
|
|
11 |
Base Líquido |
0 Comentários