Вы находитесь на странице: 1из 27

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

Conceitos Bsicos:

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

Variveis de Memria Tipos de Dados O AdvPl no uma linguagem de tipos rgidos (strongly typed), o que significa que variveis de memria podem diferentes tipos de dados durante a execuo do programa. Variveis podem tambm conter objetos, mas os tipos primrios da linguagem so: Numrico O AdvPl no diferencia valores inteiros de valores com ponto flutuante, portanto pode-se criar variveis numricas com qualquer valor dentro do intervalo permitido. Os seguintes elementos so do tipo de dado numrico: 2 43.53 0.5 0.00001 1000000 Uma varivel do tipo de dado numrico pode conter um nmero de dezoito dgitos incluindo o ponto flutuante, no intervalo de 2.2250738585072014 E308 at 1.7976931348623158 E+308. Lgico Valores lgicos em AdvPl so identificados atravs de .T. ou .Y. para verdadeiro e .F. ou .N. para falso (independentemente se os caracteres estiverem em maisculo ou minsculo). Caracter Strings ou cadeias de caracteres so identificadas em AdvPl por blocos de texto entre aspas duplas (") ou aspas simples ('): "Ol mundo!" 'Esta uma string' "Esta 'outra' string" Uma varivel do tipo caracter pode conter strings com no mximo 1 Mb, ou seja, 1048576 caracteres. Data O AdvPl tem um tipo de dados especfico para datas. Internamente as variveis deste tipo de dado so armazenadas como um nmero correspondente a data Juliana. Variveis do tipo de dados Data no podem ser declaradas diretamente, e sim atravs da utilizao de funes especficas como por exemplo ctod que converte uma string para data. Matriz (Array) Matrizes so um tipo de dado especial. a disposio de outros elementos em colunas e linhas. O AdvPl suporta matrizes uni ou multidimensionais. Os elementos de uma matriz so acessados atravs de ndices numricos iniciados em 1, identificando a linha e coluna para quantas dimenes existirem. Uma matriz pode conter no mximo 100000 elementos, independentemente do nmero de dimenses. Matrizes devem ser utilizadas com cautela, pois se forem muito grandes podem exaurir a memria do servidor.

Bloco de Cdigo O bloco de cdigo um tipo de dado especial. utilizado para armazenar instrues escritas em AdvPl

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)


que podero ser executadas posteriormente. Criao e Atribuio de Variveis

Criado : 16/05/2008 Atualizado: 16/05/2008

Variveis de memria so um dos recursos mais importantes de uma linguagem. So reas de memria criadas para armazenar informaes utilizadas por um programa para a execuo de tarefas. Por exemplo, quando o usurio digita uma informao qualquer, como o nome de um produto, em uma tela de um programa esta informao armazenada em uma varivel de memria para posteriormente ser gravada ou impressa. A partir do momento que uma varivel criada, no necessrio mais se referenciar ao seu contedo, e sim ao seu nome. O nome de uma varivel um identificador nico que segue duas regras regras: Mximo de 10 caracteres. O AdvPl no impede a criao de uma varivel de memria cujo nome contenha mais de 10 caracteres, porm apenas os 10 primeiros sero considerados para a localizao do contedo armazenado. Portanto se forem criadas duas variveis cujos 10 primeiros caracteres forem iguais, como nTotalGeralAnual e nTotalGeralMensal, as referncias a qualquer uma delas no programa resultaro o mesmo. Ou seja, sero a mesma varivel: nTotalGeralMensal := 100 nTotalGeralAnual := 300 Alert("Valor mensal: " + cValToChar(nTotalGeralMensal)) Quando o contedo da varivel nTotalGeralMensal exibido, o seu valor ser de 300. Isso acontece porque no momento que esse valor foi atribuido varivel nTotalGeralAnual, o AdvPl considerou apenas os 10 primeiros caracteres (assim como o faz quando deve exibir o valor da varivel nTotalGeralMensal), ou seja, considerou-as como a mesma varivel. Assim o valor original de 100 foi substituido pelo de 300. Limitao de caracteres no nome. Os nomes das variveis devem sempre comear por uma letra ou o caracter de sublinhado ( _ ). No restante, pode conter letras, nmeros e o caracter de sublinhado. Qualquer outro caracter, incluindo espaos em branco, no so permitidos. O AdvPl permite a criao ilimitada de variveis, dependendo apenas da memria disponvel. A seguir esto alguns nomes vlidos para variveis: TOT01 cNumero VAR_QUALQUER M_CARGO A11 E alguns invlidos: 1CODIGO (Inicia por um nmero) M CARGO (contm um espao em branco) LOCAL (palavra reservada do AdvPl) O AdvPl no uma linguagem de tipos rgidos para variveis, ou seja, no necessrio informar o tipo dedados que determinada varivel ir conter no momento de sua declarao, e o seu valor pode mudar durante a execuo do programa. Tambm no h necessidade de declarar variveis em uma seo especfica do seu cdigo fonte, embora seja aconselhvel declarar todas as variveis necessrias no comeo, tornando a manuteno mais fcil e evitando a declarao de variveis desnecessrias. Para declarar uma varivel deve-se utilizar um identificador de escopo, seguido de uma lista de variveis separadas por vrgula (,). Um identificador de escopo uma palavra chave que indica a que contexto do programa a varivel declarada pertence. O contexto de variveis pode ser local (visualizadas

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

apenas dentro do programa atual), pblico (visualizadas por qualquer outro programa), entre outros. Os diferentes tipos de contexto de variveis so explicados na documentao sobre escopo de variveis. Considere as linhas de cdigo de exemplo: nResultado := 250 * (1 + (nPercentual / 100)) Se esta linha for executada em um programa AdvPl, ocorrer um erro de execuo com a mensagem "variable does not exist: nPercentual", pois esta varivel est sendo utilizada em uma expresso de clculo sem ter sido declarada. Para solucionar este erro, deve-se declarar a varivel previamente: Local nPercentual, nResultado nResultado := 250 * (1 + (nPercentual / 100)) Neste exemplo, as variveis so declaradas previamente utilizando o identificador de escopo local. Quando a linha de clculo for executada, o erro de varivel no existente no mais ocorrer. Porm variveis no inicializadas tm sempre o valor default nulo (Nil) e este valor no pode ser utilizado em um clculo pois tambm gerar erros de execuo (nulo no pode ser dividido por 100). A resoluo deste problema efetuada inicializando-se a varivel atravs de uma das formas: Local nPercentual,nResultado Store 10 To nPercentual nResultado := 250 * (1 + (nPercentual / 100)) ou Local nPercentual, nResultado nPercentual := 10 nResultado := 250 * (1 + (nPercentual / 100)) ou Local nPercentual := 10, nResultado nResultado := 250 * (1 + (nPercentual / 100)) A diferena entre o ltimo exemplo e os dois anteriores que a varivel inicializada no momento da declarao. Nos dois primeiros exemplos, a varivel primeiro declarada e ento inicializada em uma outra linha de cdigo. O comando store existe apenas por compatibilidade com verses anteriores e outras linguagens xBase, mas obsoleto. Deve-se utilizar o operador de atribuio (:= ou somente =). aconselhvel optar pelo operador de atribuio composto de dois pontos e sinal de igual, pois o operador de atribuio utilizando somente o sinal de igual pode ser facilmente confundido com o operador relacional (para comparao) durante a criao do programa. Uma vez que um valor lhe seja atribudo, o tipo de dado de uma varivel igual ao tipo de dado do valor atribudo. Ou seja, uma varivel passa a ser numrica se um nmero lhe atribudo, passa a ser caracter se uma string de texto lhe for atribuda, etc. Porm mesmo que uma varivel seja de determinado tipo de dado, pode-se mudar o tipo da varivel atribuindo outro tipo a ela: 01 Local xVariavel // Declara a varivel inicialmente com valor nulo 02 03 xVariavel := "Agora a varivel caracter..." 04 Alert("Valor do Texto: " + xVariavel) 05 06 xVariavel := 22 // Agora a varivel numrica 07 Alert(cValToChar(xVariavel)) 08 09 xVariavel := .T. // Agora a varivel lgica 10 If xVariavel 11 Alert("A varivel tem valor verdadeiro...") 12 Else 13 Alert("A varivel tem valor falso...") 14 Endif 15 16 xVariavel := Date() // Agora a varivel data

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)


17 Alert("Hoje : " + DtoC(xVariavel)) 18 19 xVariavel := nil // Nulo novamente 20 Alert("Valor nulo: " + xVariavel) 21 22 Return

Criado : 16/05/2008 Atualizado: 16/05/2008

No programa de exemplo anterior, a varivel xVariavel utilizada para armazenar diversos tipos de dados. A letra "x" em minsculo no comeo do nome utilizada para indicar uma varivel que pode conter diversos tipos de dados, segundo a Notao Hngara (consulte documentao especfica para detalhes). Este programa troca os valores da varivel e exibe seu contedo para o usurio atravs da funo alert. Essa funo recebe um parmetro que deve ser do tipo string de caracter, por isso dependendo do tipo de dado da varivel xVariavel necessrio fazer uma converso antes. Apesar dessa flexibilidade de utilizao de variveis, deve-se tomar cuidados na passagem de parmetros para funes ou comandos, e na concatenao (ou soma) de valores. Note a linha 20 do programa de exemplo. Quando esta linha executada, a varivel xVariavel contem o valor nulo. A tentativa de soma de tipos de dados diferentes gera erro de execuo do programa. Nesta linha do exemplo, ocorrer um errocom a mensagem "type mismatch on +". Excetuando-se o caso do valor nulo, para os demais deve-se sempre utilizar funes de converso quando necessita-se concatenar tipos de dados diferentes (por exemplo, nas linhas 07 e 17. Note tambm que quando uma varivel do tipo de dado lgico, ela pode ser utilizada diretamente para checagem (linha 10): If xVariavel o mesmo que If xVariavel = .T. A declarao de variveis para os demais tipos de dados, matrizes e blocos de cdigo, exatamente igual ao descrito at agora. Apenas existem algumas diferenas quanto a inicializao, que podem ser consultadas na documentao de inicializao de matrizes e blocos de cdigo. Operadores Comuns Na documentao sobre variveis h uma breve demonstrao de como atribuir valores a uma varivel da forma mais simples. O AdvPl amplia significativamente a utilizao de variveis atravs do uso de expresses e funes. Uma expresso um conjunto de operadores e operandos cujo resultado pode ser atribudo a uma varivel ou ento analisado para a tomada de decises. Por exemplo: Local nSalario := 1000, nDesconto := 0.10 Local nAumento, nSalLiquido nAumento := nSalario * 1.20 nSalLiquido := nAumento * (1-nDesconto) Neste exemplo so utilizadas algumas expresses para calcular o salrio lquido aps um aumento. Os operandos de uma expresso podem ser uma varivel, uma constante, um campo de arquivo ou uma funo. Operadores Matemticos Os operadores utilizados em AdvPl para clculos matemticos so: + Adio - Subtrao * Multiplicao / Diviso ** ou ^ Exponenciao

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)


% Mdulo (Resto da Diviso) Operadores de String Os operadores utilizados em AdvPl para tratamento de caracteres so:

Criado : 16/05/2008 Atualizado: 16/05/2008

+ Concatenao de strings (unio) - Concatenao de strings com eliminao dos brancos finais das strings intermedirias $ Comparao de Substrings (contido em) Operadores Relacionais Os operadores utilizados em AdvPl para operaes e avaliaes relacionais so: < Comparao Menor > Comparao Maior = Comparao Igual == Comparao Exatamente Igual (para caracteres) <= Comparao Menor ou Igual >= Comparao Maior ou Igual <> ou # ou != Operadores Lgicos Os operadores utilizados em AdvPl para operaes e avaliaes lgicas so: .And. E lgico .Or. OU lgico .Not. ou ! NO lgico Operadores de Atribuio Os operadores utilizados em AdvPl para atribuio de valores a variveis de memria so: = Atribuio Simples := Atribuio em Linha += Adio e Atribuio em Linha -= Subtrao e Atribuio em Linha *= Multiplicao e Atribuio em Linha /= Diviso e Atribuio em Linha **= ou ^= Exponenciao e Atribuio em Linha %= Mdulo (resto da diviso) e Atribuio em Linha Atribuio Simples O sinal de igualdade utilizado para atribuir valor a uma varivel de memria. nVariavel = 10 Atribuio em Linha O operador de atribuio em linha caracterizado por dois pontos e o sinal de igualdade. Tem a mesma funo do sinal de igualdade sozinho, porm aplia a atribuio s variveis. Com ele pode-se atribuir mais de uma varivel ao mesmo tempo. nVar1 := nVar2 := nVar3 := 0 Quando diversas variveis so inicializadas em uma mesma linha, a atribuio comea da direita para a

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

esquerda, ou seja, nVar3 recebe o valro zero inicialmente, nVar2 recebe o contedo de nVar3 e nVar1 recebe o contedo de nVar2 por final. Com o operador de atribuio em linha, pode-se substituir as inicializaes individuais de cada varivel por uma inicializao apenas: Local nVar1 := 0, nVar2 := 0, nVar3 := 0 por Local nVar1 := nVar2 := nVar3 := 0 O operador de atribuio em linha tambm pode ser utilizado para substituir valores de campos em um banco de dados. Atribuio Composta Os operadores de atribuio composta so uma facilidade da linguagem AdvPl para expresses de clculo e atribuio. Com eles pode-se economizar digitao: Operador Exemplo Equivalente a += X += Y X = X + Y -= X -= Y X = X - Y *= X *= Y X = X * Y /= X /= Y X = X / Y **= ou ^= X **= Y X = X ** Y %= X %= Y X = X % Y Operadores de Incremento/Decremento A linguagem AdvPl possui operadores para realizar incremento ou decremento de variveis. Entende-se por incremento aumentar o valor de uma varivel numrica em 1 e entende-se por decremento diminuir o valor da varivel em 1. Os operadores so: ++ Incremento Ps ou Pr-fixado -- Decremento Ps ou Pr-fixado Os operadores de decremento/incremento podem ser colocados tanto antes (pr-fixado) como depois (ps-fixado) do nome da varivel. Dentro de uma expresso, a ordem do operador muito importante, podendo alterar o resultado da expresso. Os operadores incrementais so executados da esquerda para a direita dentro de uma expresso. Local nA := 10 Local nB := nA++ + nA O valor da varivel nB resulta em 21, pois a primeira referncia a nA (antes do ++) continha o valor 10 que foi considerado e imediatamente aumentado em 1. Na segunda referncia a nA, este j possua o valor 11. O que foi efetuado foi a soma de 10 mais 11, igual a 21. O resultado final aps a execuo destas duas linhas a varivel nB contendo 21 e a varivel nA contendo 11. No entando: Local nA := 10 Local nB := ++nA + nA Resulta em 22, pois o operador incremental aumentou o valor da primeira nA antes que seu valor fosse considerado. Operadores Especiais Alm dos operadores comuns, o AdvPl possui alguns outros operadores ou identificadores. Estas so suas finalidades:

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)


() Agrupamento ou Funo [] Elemento de Matriz {} Definio de Matriz, Constante ou Bloco de Cdigo -> Identificador de Apelido & Macrosubstituio @ Passagem de parmetro por referncia

Criado : 16/05/2008 Atualizado: 16/05/2008

Os parnteses so utilizados para agrupar elementos em uma expresso mudando a ordem de precedncia da avaliao da expresso (segundo as regras matemticas por exemplo). Tambm servem para envolver os argumentos de uma funo. Veja a documentao sobre precedncia de operadores para maiores detalhes. Os colchetes so utilizados para especificar um elemento especfico de uma matriz. Por exemplo, A[3,2], refere-se ao elemento da matriz A na linha 3, coluna 2. As chaves so utilizadas para a especificao de matrizes literais ou blocos de cdigo. Por exemplo, A:={10,20,30} cria uma matriz chamada A com trs elementos. O smbolo -> identifica um campo de um arquivo diferenciando-o de uma varivel. Por exemplo, FUNC>nome refere-se ao campo nome do arquivo FUNC. Mesmo que exista uma varivel chamada nome, o campo nome que ser acessado. O smbolo & identifica uma avaliao de expresso atravs de macro e visto em detalhes na documentao sobre macrossubstituio. Conversores De Numrico para caracter: cValtochar Exemplo: NTotal := 10 Alert(cValtochar(ntotal)) De caracter para numrico: val Exemplo: Cvalor := 10 ntotal := 500 + val(cvalor)

De caracter para numrico acrescentando zero a esquerda: strzero Exemplo: Cmatant := 123 Cmatnova := strzero(val(cmatant),6) Resultado := 000123 De caracter para data: ctod ou stod Exemplo: DData:= ctod(31/01/2008) De data para caracter: dtoc Exemplo: CData := dtoc(sra->ra_admissa) De data para Ms e Ano: mesano Exemplo: Canomes := mesano(sra->ra_admissa)

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

Numero para numero inteiro: int Exemplo: NTotal := 1200,32 Nsubtot := int(ntotal) Resultado = 1200 De data para Ms: month Exemplo: nmes := month(sra->ra_admissa) De data para Ms: year Exemplo: nmes := year(sra->ra_admissa) Seleciona parte de um string: SUBSTRING ou SUBS Exemplo: Cnome := Jorge Paiva Csobnome := subs(cnome,6,5) Retorna o tamanho em numrico de uma String: LEN Exemplo: Tamanho := LEN(cnome) Resultado = 11 Retorna a mesma string sem espaos: Alltrim Exemplo: cnome := Altrim(cnome) Resultado = JorgePaiva Altera um caracter dentro de uma string: STRTRAN Exemplo: Cnome := jorge@paiva Cnome := strtran(cnome,@,.) Resultado: jorge.paiva

Posiciona e traz o valor do campo de uma outra tabela: POSICIONE Exemplo: Cfuncao := Posicione(SRJ,1,XFILIAL(SRJ)+SRA->RA_CODFUNC,RJ_DESCRIC) Ordem 1 2 Parmetro Tabela ndice Descrio Informar em qual a tabela ser a busca da informao desejada Informe qual a ordem do ndice Observao Para entender entre no cadastro desta tabela

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)


ou chave de busca que ser utilizado. Toda tabela tem um ou mais ndices e este esto em uma ordem seqencial Informar o contedo a ser pesquisado para que achemos o registro correto.

Criado : 16/05/2008 Atualizado: 16/05/2008

e veja no campo pesquisar do browser a chave de busca desejada conforme figura abaixo. Devemos ter cuidado na hora de preencher a busca de filial, no padro do sistema toda tabela tem o campo filial, porem nem todas tabelas tem este campo preenchido. Se o campo no for preenchido com por exemplo o cadastro de funo preencha xfilial(SRJ) e o sistema ir preencher a filial da SRJ, ou seja, nenhuma, porem se for pesquisar em uma tabela que possua filial preenchido preencha por exemplo a pesquisa como SRA>RA_FILIAL+SRA->RA_CODFUNC.

Pesquisa

Retorno

Informe o campo que trar o retorno solicitado. Sempre entre aspas.

Exemplo

Note na tela acima a ordem para colocar no 2 parmetro ndice o porque preenchemos com 1. Porque a chave de pesquisa esta na ordem um 1, se quisssemos o CBO seria ordem 2.

FUNES PARA USO EM FRMULAS fBuscaPD Objetivo: Sintaxe: Retorna o somatrio dos Valores ou das Quantidades das Verbas indicadas. fBuscaPD(cCdigos, cTipo, cSemana) cCdigos = Lista contendo o(s) cdigo(s) da(s) verba(s) a ser(em) somada(s).

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)


Ex.: "105,106,107" ou "105"

Criado : 16/05/2008 Atualizado: 16/05/2008

cTipo = Tipo de somatrio a ser feito. Pode ser "H" para que seja feito o somatrio das Quantidades das verbas ou "V" para que os Valores das verbas sejam somados. Se no for indicado ser assumido "V". Ex.: "V" ou "H" cSemana = Nmero da semana, se no for indicado assume brancos. Somente dever ser utilizado para funcionrios cuja periodicidade de pagamento seja "semanal". Ex.: "14" Exemplo de Utilizao: nHorExt := fBuscaPD("105,106,107,108,109,110", "H", "40") Armazenar na varivel 'nHorExt' a somatria das QUANTIDADES DE HORAS DAS VERBAS 105, 106, 107, 108, 109 e 110 da semana 40. nValExt := fBuscaPD("105,106,107,108,109,110") Armazenar na varivel 'nValExt' a somatria dos VALORES das verbas 105, 106, 107, 108, 109 e 110. OBS.:Quando se efetua a somatria de verbas de Desconto, o Sistema retorna este valor NEGATIVO. Devendo o mesmo ser multiplicado por (-1), quando a verba a ser gerada depender deste resultado. Exemplos de Utilizao: fGeraVerba(460,fBuscaPD(452)*(-1)*0.1, , , , , , , , ,.T.) Gera a verba 460, com 10% sobre o valor da verba de desconto 452. nValExemp := fBuscaPD("105,106,110,410,405") Armazenar na varivel 'nValExemp' a somatria dos VALORES das verbas 105, 106 e 110 MENOS o valor das verbas 410 e 405. FbuscaACM Objetivo: Sintaxe: Retorna valor contido nos acumulados anuais. fBuscaACM(verba,Mens/Hor, dDataI, dDataF, cTipo , ValRet, QtdRet) verba = Verba do acumulado Ex.: "105" Mens/Hor = Condio para restringir a busca. Pode ser "H" para que seja feito para a categoria horistas ou "M" para a categoria mensalistas ou por determinado sindicato, etc. Ex.: "H" ou "M" dDataI = Informar a data inicial (DDMMAAAAA) para a procura dentro dos Acumulados anuais.

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

dDataF = Informar a data final(DDMMAAAAA) para a procura dentro dos Acumulados anuais. cTipo = Informar V para valor ou H para horas. ValRet = Valor de retorno. QtdRet = Quantidade de retorno. fGeraVerba Objetivo: Incluir ou Alterar uma Verba no Movimento.

Sintaxe: fGeraVerba(cCd,nVal,nHor,cSem,cCCusto,cTipo1,cTipo2,nParcelas, dData,lAltera) cCd = Cdigo da Verba a ser gerada. nVal = Valor da Verba. nHor = Quantidade da Verba. cSem = Nmero da Semana, somente deve ser utilizado para funcionrios cuja periodicidade de pagamento seja semanal. Pose ser utilizada a varivel "cSemana" que a semana indicada nas perguntas do programa. cCCusto = Cdigo do Centro de Custo do funcionrio. cTipo1 = Tipo da Verba. Pode ser "V" para Valor, "H" para Horas ou "D" para Dias. Se no for informado ser assumido "V". cTipo2 = Aps o Tipo deve ser informado o Tipo 2. Pode ser informado I para informada, A para Adiantamento, C para calculado, K para Frias. nParcelas = Nmero de Parcelas da Verba. Deve estar entre 0 e 99. Nulo = Aps a Parcela deve ser informado um parmetro Nulo ou seja, deve-se colocar DUAS vrgulas aps a Parcela.

dData = Data do efetivo pagamento da Verba. Pode-se utilizar a Varivel dData_Pgto" que a data informada nas perguntas do clculo. lAltera = Varivel lgica para indicar se a verba pode ser alterada, caso j exista no movimento do funcionrio. Pode ser .T. ou .F.. Exemplo de Utilizao: fGeraVerba("222", nValExt, nHorExt, cSemana, SRA->RA_CC, "V",I , 0, , dData_Pgto, .T.) fGeraVerba("223", 0, SRA->RA_HRSMES, " ", SRA->RA_CC, "H",I , 99, , dData_Pgto, .T.) OBS.: Caso o usurio necessite apenas do ltimo argumento, lAltera, poder deixar os demais em branco, para que o Sistema assuma o default. Exemplo: fGeraVerba(222, nValExtra, nHorExt, , , , , , , ,.T.)

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

Sistema ir regravar a verba 222, com o Valor da varivel nValExtra e a qtde. de Horas da varivel nHorExt. Caso no queira que o campo horas seja regravado a funo ficar: fGeraVerba(222,nValExtra, , , , , , , , ,.T.) OBS.: Se o argumento .T. for omitido, o Sistema no regravar a verba, caso a mesma j exista, assumindo, assim, o argumento .F. como default. REGRAVAR VERBA INFORMADA PELO USURIO A funo fgeraverba no regrava verba informada pelo usurio, portanto para os casos que houver necessidade deve proceder da seguinte maneira no roteiro de calculo: Condio If FlocaliaPd("999") > 0 => Ex. Localizar a posico da verba "999" no Array aPd

Verdadeiro aPd[fLocaliaPd("999"),5] := ((SalMes * 0.10) * FbuscaPd("999","H") ) Ex. Gravar na Posico do Valor no aPD o seguinte Calculo: ((Salario * 10%) * Horas Informadas) Matriz aPd Matriz onde as Verbas So Calculadas e Criadas atravs dos Clculos aPd[Verba,1] = Cdigo da Verba aPd[Verba,2] = Semana da Verba aPd[Verba,3] = C.Custo da Verba aPd[Verba,4] = Horas aPd[Verba,5] = Valor aPd[Verba,6] = Tipo 1 ([H]oras,[V]alor,[D]ias) aPd[Verba,7] = Tipo 2 ([I]nformada [C]alc.folha [R]Calc. Resc. [F]Calc.Ferias [S]2o.Parc [P]1o. Parc aPd[Verba,8] = Parcela da Verba aPd[Verba,9] = Tipo da Verba na Matriz ([D] = Deletada na Matriz ) aPd[Verba,10] = Data do Lanamento

Exemplo de Utilizao: aPD[fLocaliaPD(113),9]:=D Deleta a verba 113 do arquivo de movimento mensal. FdelPd Objetivo: Excluir/Deletar Verbas no Movimento durante o calculo. Sintaxe: fDelPd(cCdigos, cSemana) cCdigos = Cdigos das Verba a serem excluidas. cSem = Nmero da Semana, somente deve ser utilizado para funcionrios cuja periodicidade de pagamento seja semanal. Pose ser utilizada a varivel "cSemana" que a semana indicada nas perguntas do programa. Exemplo de Utilizao:

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)


fDelPd("222,109,409") fDelPd("222,109,409",cSemana)

Criado : 16/05/2008 Atualizado: 16/05/2008

Matriz aPdv Incidncias das Verbas carregadas atravs da funo fMatriz. aPdv[Verba,1] = Cdigo da Verba aPdv[Verba,2] = Percentual da Verba aPdv[Verba,3] = Cdigo Correspondente aPdv[Verba,4] = Incidncia p/ Base de INSS aPdv[Verba,5] = Incidncia p/ Base de Ir aPdv[Verba,6] = Incidncia p/ Base de FGTS aPdv[Verba,7] = Incidncia p/ Med. 13 aPdv[Verba,8] = Incidncia p/ Med. de Ferias aPdv[Verba,9] = Incidncia p/ Base de Periculosidade aPdv[Verba,10] = Incidncia de Base de Insalubridade aPdv[Verba,11] = Se Refere a Ferias aPdv[Verba,12] = Se Refere a 13 aPdv[Verba,13] = Incidncia p/ Mapa de Custo aPdv[Verba,14] = Incidncia p/ Rais aPdv[Verba,15] = Incidncia p/ Dirf aPdv[Verba,16] = Incidncia p/ Dsr s/ Horas aPdv[Verba,17] = Se e Verba de Hora Extra aPdv[Verba,18] = Se a Verba Incorpora Salrio aPdv[Verba,19] = Se a Verba e de Adic tempo servio aPdv[Verba,20] = Incidncia p/ Base de Contribuio Sindical aPdv[Verba,21] = Incidncia p/ Base do Salrio Famlia aPdv[Verba,22] = Incidncia p/ Base do Seguro de Vida aPdv[Verba,23] = Incidncia p/ Mdia de Aviso Prvio aPdv[Verba,24] = Incidncia p/ Base de Conveno coletiva aPdv[Verba,25] = Se a Verba e Deduzida na Guia de INSS (GRPS) aPdv[Verba,26] = Se a Mdia Reajustvel aPdv[Verba,27] = Se Tem Formula para a Verba aPdv[Verba,28] = Incidncia p/ Penso Alimentcia

Funes: nUltDia := f_UltDia(dData) // Retorna Ultimo dia do ms da data // passada como parametro nPosPd := fLocaliaPd("999") // Posio da Verba na Matriz aPd

Matriz aPd = Descrio para roteiro de clculo. aPd[nPosPd,1] aPd[nposPd,2] aPd[nposPd,3] aPd[nPosPd,4] aPd[nPosPd,5] aPd[nposPd,6] = Cdigo da Verba = Semana da Verba = C.Custo da Verba = Horas = Valor = Tipo 1 ([H]oras,[V]alor,[D]ias)

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

aPd[nPosPd,7] = Tipo 2 ([I]nformada - [C]alc.folha - [R]Calc. Resc -. [K]Calc.Ferias [S]2o.Parc - [P]1o. Parc aPd[nPosPd,8] = Parcela da Verba aPd[nposPd,9] = Tipo da Verba na Matriz ([D] = Deletada na Matriz) aPd[nPosPd,10] = Data de Pagamento

Funo SomaInc Objetivo : Somar as verbas na matriz aPd conforme incidncias solicitadas. Sintaxe: SomaInc(aPd,nElem,nBas,nCond1,cParc1,nCond2,cParc2,nMes,lSemana,aCodfol) aPD nElem nBas nCond1 cParc1 nCond2 cParc2 nMes lSemana aCodFol = = = = = = = = = = Matriz com as verbas para Somatrio Incidncia a ser somada conforme posio na matriz aPdV Varivel de retorno da somatria Elemento para 1 condio, conf. posio na matriz aPdV Parmetro para a 1 condio (S ou N) Elemento para 2 condio, conf. posio na Matriz aPdV Parmetro para a 2 condio (S ou N) Se desejar especificar o ms de pagamento a ser somado. .T. soma todas as semanas do ms. e .F. soma somente a semana do calc. Matriz com os identificadores de clculo.

Exemplo de Funo para somatria de verbas, checando incidncias Total de Proventos: nTotProv:=0.00 -> Var. de retorno do total de proventos aEval(aPD,{|X| SomaInc(X,1,@nTotProv, , , , , , ,aCodFol}) Total de Descontos nTotDesc:=0.00 -> Var. de retorno do total de descontos aEval(aPD,{|X| SomaInc(X,1,@nTotDesc, , , , , , ,aCodFol}) Lquido nTotLiq:=0.00 -> Var. de retorno do valor Liquido aEval(aPD,{|X| SomaInc(X,1,@nTotLiq, , , , , , ,aCodFol}) Base de INSS sem 13 Salrio nInssBas:=0.00 aEval(aPD,{|X| SomaInc(X,4,@InssBas,12,N, , , , ,aCodFol}) Base de Ir sem frias e 13 Salrio nIrBas:=0.00 aEval(aPD,{|X| SomaInc(X,5,@IrBas,11,N,12,N , , ,aCodFol}) Valor Bruto ValBruto:=0 Aeval(aPD,{|X|SomaInc(X,5,@ValBruto,11,N,12,N,, ,aCodFol)}) Efetua a Somatria dos eventos que incidem para IRRF, e esto com N para os campos Se Refere a Frias e Se Refere a 13, acumulando este valor na varivel ValBruto.

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

OBS.: Quanto ao Ponto de Entrada das Frmulas, usurio dever estudar qual o momento do clculo, informando a seqncia correta/apropriada. Exemplo de Roteiro para Retornar o Percentual do Evento: nPerc:=PosSrv(114,SRA->RA_FILIAL,RV_PERC) Funo para Buscar um Det. Param. do CFG GETMV(MV_DIASMES) Variveis Disponveis nos Clculos: aPd = Array contendo todas as verbas do movimento do funcionrio. aPdv = Array com Incidncias com as verbas do movimento. Val_SalMin = Valor do Salrio mnimo do ms de Calculo. Normal = Horas do Parmetro Comp. Do Ms ou Turno de trabalho Descanso = Horas do Parmetro Comp. Do Ms ou Turno de Trabalho nValArred = Valor de Arredondamento da Folha Val_Arre = Valor do Arredondamento no Adto Val_Adto = Valor do Adiantamento f_UltDia = Ultimo dia do Ms Salrio = Salrio Base Ms SalMes = Salrio Composto pelas verbas que incorporam SalHora = Salrio Hora Composto SalDia = Salrio Dia Composto nHorasTrab = Horas Trabalhadas (Param. Comp. do Ms ou Turno de Trabalho) nHorasDsr = Horas Dsr (Param. Comp. do Ms ou Turno de Trabalho) DiasAfas = Total de Dias Afastados no Ms nDiasEnf = Total de Dias de Enfermidade no Ms nDiasMes = Dias de Ferias do Funcionrio no Ms nDiasMse = Dias de Frias do Funcionrio Ms Seguinte Diastrab = Dias Trabalhados do Funcionrio DiasDsr = Dias de Dsr do Funcionrio cTipRes = Tipo de Resciso DesprezaFuncionrios = ir desprezar o funcionrio determinado no clculo nFgtsCt1 = Valor do percentual do Fgts para Contr. Tipo Indeterminado nFgtsCt2 = Valor do percentual do Fgts para Contr. Tipo Determinado dData_Pgto = Data de Pagamento da Folha informado no parametro.

Para incluir um RDMAKE nos roteiros, informar no verdadeiro: Execblock(NOME DO RDMAKE) Para pegar um parmetro MV_........ no SX6 para utilizar em roteiro: A funo Getmv(MV_....) retorna o contedo do parmetro para o roteiro ou rdmake. Criando formula pelo SIGAGPE Mnemnico Acesse Atualizaes / Definies de Clculos / Mnemnico

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

Mnemnicos so variveis usadas na escrita de um programa.Neste cadastro sero armazenadas todas as variveis que ficaro disponveis para serem utilizadas na elaborao de Roteiro de Clculo, Cadastro de Frmulas e Biblioteca de Funes.Para cada mnemnico dever haver uma definio de tipo e uma inicializao:

Tipo Mnemnico Caracter Numrico Data Lgico Array (matriz/vetor)

Exemplo de inicializao "a" 250,00 12/08/2002 ou " / / "

.T. (true - verdadeiro) ou .F. (false falso) {01,02,03,04}

Exemplo: Para criao de Formulas do Adicional de Transferncia

Sobre os campos: Cd. Mnemnico Informe um cdigo que comece com M_ Tipo - Escolha o tipo de retorno que far a formula, se for para roteiros de clculo, em 90% dos casos ser numrico. Contedo Se for um contedo que ser calculado, informe 0 (zero) se for um contedo fixo informe o valor, exemplo: 1200.00. OBS. : Observe que o valor dos centavos tem que ser separo por ponto e no por vrgula. In.Cada Cal. : Este campo dever ser preenchido Sim quando o sistema realizar o calculo e No quando o valor for fixo. Biblioteca de Funes Acesse Atualizaes / Definies de Clculos / Biblioteca Funes Funes so seqncias de instrues de programa de computador que executam um determinado procedimento. Suas tarefas podem ser modificadas e adaptadas s necessidades do usurio atravs de um nmero de elementos denominados parmetros.Parmetros de funes so informaes que definem os limites ou aes de uma rotina.

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

Esta rotina permite a manuteno das funes que sero utilizadas no ambiente Gesto de Pessoal, juntamente com as funes disponveis no ambiente Protheus. As funes previamente cadastradas facilitaro o processo de criao das frmulas. Nesse cadastramento sero definidos a quantidade de parmetros, qual o tipo de cada um e se o mesmo deve ou no ser obrigatrio. Exemplo: A Funo FPOSREG verifica e posiciona em um registro do arquivo a partir da chave indicada. Funo: FPOSREG('SRB',1,SRA->RA_FILIAL+SRA->RA_MAT,.F.) Ordem 1 2 3 Parmetro SRB "1" "SRA>RA_FILIAL+SRA>RA_M AT" Descrio do Parmetro Define o arquivo a ser pesquisado Determina a ordem de busca no arquivo indicado Indica a chave de pesquisa no arquivo indicado, nesse caso ser pesquisado pela Filial e Matrcula do funcionrio posicionado no arquivo "SRA" (Cadastro de Funcionrios). Parmetro para indicar o tipo de pesquisa que est sendo efetuada, se .F. (falso) indica 1o. pesquisa no arquivo, se .T. (Verdadeiro) indica a seleo do prximo registro com a mesma chave.

".F."

Neste exemplo, o arquivo de dependentes do funcionrio que est sendo calculado posicionado. Se houver dependentes deste funcionrio, ser retornado "verdadeiro" e manter posicionado no registro. Caso contrrio, retornar "falso". Se desejar verificar a existncia de outros registros com a mesma chave, deve-se chamar novamente a funo indicando ". T." no ltimo parmetro. Os campos devem ser preenchidos de acordo com o nmero de parmetros definidos previamente para a funo, ou seja, quem cria a funo, determina o nmero de parmetros. A biblioteca apenas armazena essas funes, e no cria novos parmetros ou funes. Exemplo: Funo AnoMes

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

Formulas Acesse Atualizaes / Definies de Clculos / Formulas Este cadastro permite a manuteno de frmulas que sero utilizadas no Roteiro de Clculos. Frmula um conjunto de expresses que poder conter funes, campos de arquivos, mnemnicos, constantes e chamados de outras frmulas. Esse cadastro possibilita montagem de clculos especficos para atender acordos coletivos, e outras particularidades da empresa ou da categoria. O resultado de uma frmula sempre ser armazenado em um mnemnico previamente cadastrado na rotina Cadastro de Mnemnicos. Exemplo: Formula Adicional de Transferncia

Origem: Este campo preenchido pelo sistema Cdigo da Formula: Informe um cdigo de preferncia com as iniciais do evento a ser calculado Descrio da Formula: Faa uma breve descrio sobre a formula. Retorno: Informe o mnemnico que cadastrado para esta frmula Obs. Formula: Detalhe todo o processo desta formula, isto ajudar ao cliente ou a outro analista que venha dar manuteno nesta formula. Itens da Formula Normalmente toda formula comea com uma condio o exemplo abaixo relata uma condio de um campo data no cadastro de funcionrio comparando com o ms e o ano da folha.

Seqncia 0010 Clique no campo Expr. e marque a opo de Condio

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

Clique no campo 1Expresso

Na tela acima selecione o Tipo de Expresso (3) Funes e clique duas vezes sobre a funo ANOMES na caixa (Funes).

Surgir a tela de ajuda para preenchimento de funes, conforme a figura abaixo:

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

Preencha o campo Contedo Par com o campo data no cadastro de funcionrio que ser a nossa condio. Aps clique em OK

Note na tela acima que a funo aparecer no campo abaixo (Selecionado Expresso). Voc poder, se for necessrio, dar manuteno neste campo. Aps clique em OK

Clique no campo Op.2 (Operadores)

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

Selecione a operao que desejar. Aps clique em OK Clique no campo 2Expresso

Como iremos usar a funo GETMV, temos que escolher o tipo (3) Funes, ou seja, sempre que utilizarmos funes devemos escolher o tipo Funes, mesmo que esta funo no exista na caixa de funes. Depois digite a expresso no campo Selecionado Expresso. Aps clique em OK

Clique no campo Op.3 (Operadores)

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

Na tela acima escolhemos a opo .END. pois no teremos outra condio, se fosse o caso deveramos escolher a opo .AND. . Aps clique em OK Seqncia 0020 Clique no campo Expr.

Iremos escolher a opo acima pois estamos querendo no mais uma condio e sim uma execuo. Aps clique em OK

Clique no campo Resultado para surgir a tela abaixo

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

Selecione o tipo (3) Funes e clique duas vezes na funo Fgeraverba

Preencha o Parmetro Verba com a verba que ser gerado para a folha de pagamento. No esquea que tem que ser entre aspas e no adianta clicar na lupa, ou seja, tem que ser digitado. Preencha o parmetro Valor com a formula matemtica a ser calculada

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

Preencha o parmetro HrsDias se for necessrio com a referencia que dever sair na folha de pagamento. Aps clique em OK

Note na tela acima que a funo aparecer no campo abaixo (Selecionado Expresso). Voc poder, se for necessrio, dar manuteno neste campo. Aps clique em OK Clique no campo Op.3 (Operadores)

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

Na tela acima escolhemos a opo .END. pois no teremos outra execuo, se fosse o caso deveramos escolher a opo .CNT. . Aps clique em OK No final de tudo basta clicar em OK Tipos utilizados na montagem das Formulas 1 Arquivo

Na tela acima escolha o tipo (1) Arquivos / Campos, depois preencha o campo Pesquisar com a tabela desejada, exemplo SRA, depois clique duas vezes no grupo Campos, no campo desejado. Esta opo servira para usarmos campo de um cadastro na formula. 2 Mnemnicos

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

Na tela acima escolha o tipo (2) Mnemnicos, depois clique duas vezes no mnemnico desejado. Esta opo servira para usarmos os mnemnicos em uma formula. 5 Constante

Na tela acima escolha o tipo (5) Constante, depois inclua a constante no grupo Selecionado Expresso. Esta opo servira para usarmos qualquer valor fixo para criao de uma formula. Lembrando que se for numrico no precisa informar entre aspas, apenas caracter informamos entre aspas.