terça-feira, 28 de abril de 2020

Usando o versionador SVN com VSCode para AdvPL


Essa contribuição, foi um trabalho do nosso colega Melkzminely Silva, que montou esse tutorial de como configurar o SVN no VSCode e ficou show de bola, valeu Melkz!

1 – Baixe e instale a aplicação TortoiseSVN:

2 –  No momento da instalação fique atento para garantir que o recurso Command Line Client Tools seja selecionado, pois é essencial para o funcionamento no VSCode:



















3 –  Após instalar o TortoiseSVN, crie uma pasta para o seu Workspace, onde será armazenado os fontes, entre na pasta, clique com o botão direito do mouse, e selecione a opção SVN Checkout...:













4 –  Em URL of repository, coloque o endereço do repositório e em Checkout directory, coloque o caminho da pasta do seu workspace e clique em OK:


5 –  Aceite o certificado permanentemente:


















6 –  Insira seu usuário e senha de acesso ao repositório e clique em OK:

















7 –  Aguarde o checkout finalizar e clique em OK:












8 –  No VSCode clique em File > Add Folder to Workspace...:


9 –  Selecione a pasta onde foi realizado o checkout do TortoiseSVN e clique em Add:














10 –  Clique em Extensions:


















11 –  Pesquise por SVN, selecione a extensão SVN do Chris Johnston e instale-a:















12 –  Feche o VSCode, abra-o novamente e perceba que a ferramenta Source Code e a extensão SVN, vão ter reconhecido automaticamente seu workspace e sincronizado os fontes com o repositório, mostrando os fontes ainda não versionados, etc:




















Em breve novas postagens!

Como ajustar o problema do Help em branco no Protheus

Esse é um daqueles problemas que alguns tem e não sabem como resolver, procura em apostilas , fóruns e nada de encontrar a forma de ajustar.
E para isso tem de apelar para alguém que conheça e indique o caminho das pedras, desta forma vou através deste post tentar ajuda-los a corrigir este erro.
Existem na pasta system arquivos chamados sigahlp.hlp, sigahls.hls e sigahle.hle que são responsáveis pelo conteúdo dos helps, e em algumas oportunidades eles deixam de funcionar.
Sendo assim basta apagar esses arquivos na pasta system e atualizar o arquivo da pasta systemload por exemplo sxsbra.txt se for Brasil, sxsarg.txt se for Argentina, ou seja equivalente ao país utilizado.
Ao entrar novamente no sistema os arquivos deletados devem ser gerados autmaticamente pelo arquivo contido no systemload e os menus deveram informar novamente a mensagem do help.
Espero ter auxiliado nesta informação

Configurando o VsCode para debugar Web Service em ADVPL

Como é de conhecimento geral, para debugar um Web Service em AdvPL é necessário usar Multi-Thread, mas para isso não adianta apenas habilitar na barra inferior, é necessário incluir uma declaração extra no arquivo de configuração do Debug o Launch.json.

Para isso devemos usar o atalho principal  
Ctrl + Shift + P, na barra de pesquisa digite Open Launch.json e clique Enter.

No arquivo de configuração inclua a clausula 
 "enableMultiThread"true  ao final do setor de configurações, para quem não estar acostumado com a linguagem Json lembre que cada declaração deve ser encerrada por ponto e virgula  vírgula,  porém a úlitma não precisa ter, veja abaixo um exemplo de como deve ficar. 



Incluido a declaração para degug




Ao debugar em WS, mantenha a opção Multi-Thread como Yes ou o equivalente a Sim na linguagem que estiver utilizando.





Em breve novos post, espero que essa dica ajude a debugar os seus WS's em AdvPL.

terça-feira, 21 de abril de 2020

Instalando e Configurando o VSCode para Advpl

Olá pessoal!

Talvez seja de conhecimento de muitos ou talvez não, mas o TDS deixará de ter suporte pela Totvs à partir de 01/01/2021, e a nova ferramenta de desenvolvimento homologada será o VsCode da Microsoft.


Link oficial da Totvs comunicando o fim do suporte ao TDS.


Eu iniciei a utilização do TDS desde a sua disponibilização, lembro me bem que no início foi bem caótico, chegava a instalar e 
desinstalar de 4 a 5 vezes por dia nas primeiras semanas, isso até que houvesse uma estabilização da plataforma, porém depois disso me ajudou muito, era uma ferramenta bem moderna, com suporte a outras linguagens e possibilidades de diversos plugins para auxilio no desenvolvimento e etc.

Até que no inicio desse ano recebi a triste notícia de que seu suporte seria descontinuado, apesar de sua conhecida lentidão ao debugar, talvez por ter insistido tanto nesta ferramenta desde o início, eu já senti uma certa nostalgia e  relutei para migrar para o VSCode.

Porém da mesma forma como aconteceu na migração do Developer Studio para o TDS, no dia que eu soube da novidade já baixei imediatamente o VSCode, porém senti uma dificuldade de encontrar material que auxiliasse na configuração, já que a instalação é extremamente simples, porém ficou ali parado na área de trabalho por mais de um mês até que na sexta passada, tive que aprender a configurar na raça, pois o TDS travou no final do dia, e devido a pandemia e o Home Office não encontrei alguém de infra para inserir a senha de administrador afim de reinstalar o TDS.


Como essa dificuldade de encontrar um material didático e simples, resolvi elaborar esse passo a passo desde instalar, configurar e de quebra alguns atalhos para os primeiros passos no VSCode, espero muito que esse material te ajude a migrar para essa nova ferramenta, pois na minha primeira impressão me deixou muito satisfeito ao debugar, pois realmente o ganho de performance é indiscutível.


Sem mais delongas, vamos ao que interessa.

Baixando o VsCode Oficial.

Visual Studio

Para esse exemplo vou instalar em um Windows 64






Instalando o VsCode


Passo1 - Next, next, next...

Selecione a linguagem de preferência e clique em OK...


Aceite a licença e clique em Next...


Mantenha o local sugerido ou altere a instalação para o local de sua preferência e clique me Next...


Nome sugerido para o ícone, clique me Next...


Aqui esta o único pulo do gato para a instalação, selecione Add "Open with Code" action to Windows Explorer file context menu, e clique em Next...


Aguarde a instalação...


Pronto! Agora só clicar em Finish.


No meu caso optei por criar o ícone no Desktop, e de fundo o rio piracicaba aonde podemos comer bons peixes feito na brasa na Rua do Porto - Piracicaba.



Pronto agora bem vindo ao VSCode.

Passo 2 Configurar o VsCode para usar a linguagem ADVPL.

Anteção: Se for usar SVN troque esse passo 2 pelo conteúdo deste link e continue à partir do passo 3, se não for usar SVN, continue o passo a passo normalmente.


Primeiro clique na área Explorer ou o atalho (Ctrl + Shift + E) e aponte para o repósitório de fontes ou a pasta aonde estará os fontes que deseja manipular.


Simples assim, nesse caso optei por uma pasta aonde estão os fontes da minha empresa no note pessoal.


Passo 3 - Configurações básica
Segundo vá na área Extensions ou o atalho (Ctrl + Shift + X) para instalar o plugin da Totvs, na parte superior haverá uma barra de pesquisa, digite Totvs e será filtrados todos os aplicativos disponíveis, lembre que por ser uma plataforma aberta, qualquer pessoa poderá criar e disponibilizar plugins, nesse caso vamos baixar o plugin oficial Totvs Developer Studio for VSCode (AdvPL, TLPP e 4GL), clique em Install



Aguarde a Instalação










Também recomendo a Instalação do Totvs Monitor for VSCode, mesmo processo clique em Install e aguarde a instalação













Se aparecer a opção de setar o Windows-1252 igual na imagem , clique em Yes, essa opção é necessária devido ao tipo de encode dos fontes criados no TDS não serem compatíveis com o novo VSCode que utiliza UTF8, caso essa opção não apareça, não se preocupe, mais adiante mostrarei outra forma de setar o Windows-1252.



No setor Smartclient, clique em Escolher Arquivo  e aponte para o arquivo da sua instalação da Totvs.













No setor Includes, clique em Escolher Arquivo  e aponte para a pasta que deseja apontar os includes e clique em SAVE/COSE.


Pronto o seu ambiente está pronto para iniciar as configurações de Servidores, clique em SERVERS e no + para incluir um servidor.
Por motivo de segurança, todas as imagens a seguir não conterá dados.

Insira um nome que deseje indentificar o servidor, o endereço e a porta, neste momento eu não incluo informações relativas ao include.


Pronto o nomedo ambiente aparece no setor Servers
Clique com o botão direito do mouse sobre o nome do ambiente e clique em Connect, porém visualize que existem outras opções a serem exploradas depois que o servidor estiver conectado. 


Insira o nome do ambiente e clique no botão Enter


Insira o usuário e clique no botão Enter 


Insira a senha e clique no botão Enter 


Se todas as informações estiverem corretas as imagens do servidor ficaram verdes e estão conectadas, pronto para o uso.

Agora algo importante antes de salvar ou compilar qualquer fonte, se o passo do encode de UTF8 ainda não foi alterado para Windows-1252, essa é sua chance de fazer antes que tenha que ajustar um por um dentro do fonte salvo em UTF8.



Se o YES foi selecionado lá no passo 3 relativo a configuração do Smartclient desconsidere esse ajuste.


Através do atalho Ctrl +, insira a palavra encode na pesquise e clique no botão Enter
Procure Encode e altere de UTF8 para Windows-1252



Por fim dicas importantes:
Um dos atalhos mais usados será o Ctrl + Shift + P ele dará acesso a todos os comandos disponíveis no VSCode se digitar Totvs na barra de pesquisa, conforme a imagem seguinte, filtrará todos os comandos que usaremos no desenvolvimento em ADVPL.com o tempo outros atalhos do dia a dia poderam ser memorizados e evitar esse passo.









Espero que esse passo a passo te auxilie nessa transição, pois eu não encontrei nenhum material que auxiliasse de forma clara e direta para resolver um problema em uma sexta às 18:00, momento que o meu TDS resolveu parar de funcionar e me deixou na mão.
Fico a disposição para abordar outros temas não citados e relativos a configuração do VSCode, sugestão de uma forma melhor de instalar ou configurar e até criticas construtivas, enfim deixe sua mensagem e até a próxima postagem.

segunda-feira, 13 de novembro de 2017

Dicas para desenvolvimento do módulo de RH

SetMnemonicos()
Carrega os Mneumônicos da tabela RCA do Protheus em uma variável do tipo array aonde a primeira posição tem o nome do Mneumônico e na terceira posição possui o contéudo.
Veja um exemplo simples de sua utilização.

Local cFilRCA := xFilial( "RCA" )

Local aMnemos := {}

SetMnemonicos( cFilRCA , @aMnemos , .T. )



nPos := Ascan(aMnemos, {|x| x[1] == 'M_BASEAVPR'})
aVerbas         := StrTokArr( AllTrim(aMnemos[nPos, 3]), ';' )



SincroRC()
Rotina responsável por gerar as tabelas de fechamento da SRC e SRI exemplo RCAA1612 RIAA1612, basta executar e colocar o período que deseja refazer o fechamento o qual será buscado da SRD Acumulados e gerado o arquivo a parte.



fBuscaPD()
Objetivo:    Retorna o somatório dos Valores ou das Quantidades das Verbas indicadas.

Sintaxe:    fBuscaPD(cCódigos, cTipo, cSemana)

    cCódigos = Lista contendo o(s) código(s) da(s) verba(s) a ser(em) somada(s).
Ex.: "105,106,107" ou "105"

cTipo = Tipo de somatório a ser feito. Pode ser "H" para que seja feito o somatório das Quantidades das verbas ou "V" para que os Valores das verbas sejam somados. Se não for indicado será assumido "V".
Ex.: "V" ou "H"

cSemana = Número da semana, se não for indicado assume brancos. Somente deverá ser utilizado para funcionários cuja periodicidade de pagamento seja "semanal".
Ex.: "14"

Exemplo de Utilização:

nHorExt := fBuscaPD("105,106,107,108,109,110", "H", "40")

Armazenará na variável 'nHorExt' a somatória 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 variável 'nValExt' a somatória dos VALORES das verbas 105, 106, 107, 108, 109 e 110.

OBS.:Quando se efetua a somatória 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 Utilização: 

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 variável 'nValExemp' a somatória dos VALORES das verbas 105, 106 e  110 MENOS o valor das verbas 410  e 405. 




fGeraVerba()

Objetivo:    Incluir ou Alterar uma Verba no Movimento.

Sintaxe: fGeraVerba(cCód,nVal,nHor,cSem,cCCusto,cTipo1,cTipo2,nParcelas, dData,lAltera)

        cCód = Código da Verba a ser gerada.

        nVal = Valor da Verba.

        nHor = Quantidade da Verba.

cSem = Número da Semana, somente deve ser utilizado para funcionários cuja periodicidade de pagamento seja semanal. Pose ser utilizada a variável "cSemana" que é a semana indicada nas perguntas do programa.

        cCCusto = Código do Centro de Custo do funcionário.

cTipo1 = Tipo da Verba. Pode ser "V" para Valor, "H" para Horas ou "D" para Dias. Se não for informado será assumido "V".

cTipo2 =  Após o Tipo deve ser informado o Tipo 2. Pode ser informado “I” para informada, “A” para Adiantamento, “C” para calculado, “K” para Férias. 

        nParcelas = Número de Parcelas da Verba. Deve estar entre 0 e 99.

Nulo = Após a Parcela deve ser informado um parâmetro Nulo ou seja, deve-se colocar DUAS vírgulas após a Parcela.
 
        dData = Data do efetivo pagamento da Verba. Pode-se utilizar a Variável “dData_Pgto" que é a data informada nas perguntas do cálculo.

lAltera = Variável lógica para indicar se a verba pode ser alterada, caso já exista no movimento do funcionário. Pode ser .T. ou .F..


Exemplo de Utilização:

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 usuário 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.) 

Sistema irá regravar a verba 222, com o Valor da variável nValExtra e a qtde. de Horas da variável  nHorExt.

Caso não queira que o campo horas seja regravado a função ficará: 

fGeraVerba(“222”,nValExtra, , , , , , , , ,.T.) 

OBS.: Se o argumento “.T.” for omitido, o Sistema não regravará a verba, caso a mesma já exista, assumindo, assim, o argumento “.F.” como default. 

REGRAVAR VERBA INFORMADA PELO USUÁRIO

A função fgeraverba não regrava verba informada pelo usuário, portanto para os casos que houver necessidade deve proceder da seguinte maneira  no roteiro de calculo:                                                   

Condição                                                              
If FlocaliaPd("999") > 0         => Ex. Localizar a posicão da verba "999" no Array aPd                                       
                                                                         
Verdadeiro                                                              
aPd[fLocaliaPd("999"),5] := ((SalMes * 0.10) * FbuscaPd("999","H") )
Ex. Gravar na Posicão do Valor no aPD o seguinte Calculo: 
((Salario *  10%) * Horas Informadas)


Matriz aPd 

Matriz onde as Verbas São Calculadas e Criadas através dos Cálculos


     aPd[Verba,1]  = Código 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 Lançamento

Exemplo de Utilização: 

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(cCódigos, cSemana)

         cCódigos    = Códigos das Verba a serem excluidas.
         cSem      = Número da Semana, somente deve ser utilizado para funcionários cuja periodicidade de pagamento  seja semanal. Pose ser utilizada a variável  "cSemana" que é a semana indicada nas perguntas do programa.

Exemplo de Utilização:

    fDelPd("222,109,409")

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

Matriz  aPdv

 Incidências das Verbas carregadas através da função fMatriz.

    aPdv[Verba,1]  = Código da Verba
    aPdv[Verba,2]  = Percentual da Verba
    aPdv[Verba,3]  = Código Correspondente
    aPdv[Verba,4]  = Incidência p/ Base de  INSS
    aPdv[Verba,5]  = Incidência p/ Base de Ir
    aPdv[Verba,6]  = Incidência p/ Base de FGTS
    aPdv[Verba,7]  = Incidência p/ Med. 13º
    aPdv[Verba,8]  = Incidência p/ Med. de Ferias
    aPdv[Verba,9]  = Incidência p/ Base de Periculosidade
    aPdv[Verba,10] = Incidência de Base de Insalubridade
    aPdv[Verba,11] = Se Refere a Ferias
    aPdv[Verba,12] = Se Refere a 13º
    aPdv[Verba,13] = Incidência p/ Mapa de Custo
    aPdv[Verba,14] = Incidência p/ Rais
    aPdv[Verba,15] = Incidência p/ Dirf
    aPdv[Verba,16] = Incidência p/ Dsr s/ Horas
    aPdv[Verba,17] = Se e Verba de Hora Extra
    aPdv[Verba,18] = Se a Verba Incorpora Salário
    aPdv[Verba,19] = Se a Verba e de Adic tempo serviço
    aPdv[Verba,20] = Incidência p/ Base de Contribuição Sindical
    aPdv[Verba,21] = Incidência p/ Base do Salário Família
    aPdv[Verba,22] = Incidência p/ Base do Seguro de Vida
    aPdv[Verba,23] = Incidência p/ Média de Aviso Prévio
    aPdv[Verba,24] =  Incidência p/ Base de Convenção coletiva 
    aPdv[Verba,25] = Se a Verba e Deduzida na Guia de INSS (GRPS)
    aPdv[Verba,26] = Se a Média Reajustável
    aPdv[Verba,27] = Se Tem Formula para a Verba
    aPdv[Verba,28] = Incidência p/ Pensão Alimentícia

Funções:
                                                 
    nUltDia := f_UltDia(dData)        // Retorna Ultimo dia do mês da data     
                            // passada como parametro                 
                                                                         
    nPosPd  := fLocaliaPd("999")    //  Posição da Verba na Matriz aPd        

                                                                                                                                              
 Matriz aPd = Descrição para roteiro de cálculo.                         

     aPd[nPosPd,1]  = Código da Verba                                     
     aPd[nposPd,2]  = Semana da Verba                                   
     aPd[nposPd,3]  = C.Custo  da Verba                                  
     aPd[nPosPd,4]  = Horas                                               
     aPd[nPosPd,5]  = Valor                                               
     aPd[nposPd,6]  = Tipo 1 ([H]oras,[V]alor,[D]ias)                     
     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     
                             
                                                                      



SomaInc()

Objetivo : Somar as verbas na matriz aPd conforme incidências solicitadas. 

Sintaxe: SomaInc(aPd,nElem,nBas,nCond1,cParc1,nCond2,cParc2,nMes,lSemana,aCodfol) 

     aPD        = Matriz com as verbas para Somatório
     nElem        = Incidência a ser somada conforme posição na matriz aPdV
     nBas        = Variável de retorno da somatória
     nCond1         = Elemento para 1ª condição, conf. posição na matriz aPdV
     cParc1        = Parâmetro para a 1ª condição (“S” ou “N”) 
     nCond2        = Elemento para 2ª condição, conf. posição na Matriz aPdV
     cParc2        = Parâmetro para a 2ª condição (“S” ou “N”)
     nMes        = Se desejar especificar o mês de pagamento a ser somado. 
     lSemana        = .T. soma todas as semanas do mês. e .F. soma somente a semana do calc. 
     aCodFol        = Matriz com os identificadores de cálculo. 

Exemplo de Função para somatória de verbas, checando incidências

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}) 

Líquido

    nTotLiq:=0.00 -> Var. de retorno do valor Liquido
    aEval(aPD,{|X| SomaInc(X,1,@nTotLiq, , , , , , ,aCodFol}) 

Base de INSS sem 13º Salário

     nInssBas:=0.00
    aEval(aPD,{|X| SomaInc(X,4,@InssBas,12,”N”, , , , ,aCodFol}) 

Base de Ir sem férias e 13º Salário

     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 Somatória dos eventos que incidem para IRRF, e estão com “N” para os campos “Se Refere a Férias” e “Se Refere a 13º”, acumulando este valor na variável “ValBruto”. 


OBS.: Quanto ao “Ponto de Entrada” das Fórmulas, usuário deverá estudar qual o momento do cálculo, informando a seqüência correta/apropriada.


Exemplo de Roteiro para Retornar o Percentual do Evento: 

nPerc:=PosSrv(“114”,SRA->RA_FILIAL,”RV_PERC”) 


Função para Buscar um Det. Param. do CFG 

GETMV(“MV_DIASMES”) 


Variáveis Disponíveis  nos Cálculos:
                                                                      
     aPd         =  Array contendo todas as verbas do movimento do funcionário.
     aPdv         = Array com Incidências  com as verbas do movimento.
     Val_SalMin      = Valor do Salário mínimo do mês de Calculo.
     Normal         = Horas do Parâmetro Comp. Do Mês ou Turno de trabalho
     Descanso         = Horas do Parâmetro Comp. Do Mês 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 Mês
     Salário        = Salário Base Mês 
     SalMes        = Salário Composto pelas verbas que incorporam
     SalHora        = Salário Hora Composto
     SalDia        = Salário Dia Composto
     nHorasTrab    = Horas Trabalhadas (Param. Comp. do Mês ou Turno de Trabalho)
     nHorasDsr    = Horas Dsr (Param. Comp. do Mês ou Turno de Trabalho)
     DiasAfas        = Total de Dias Afastados no Mês
     nDiasEnf        = Total de Dias de Enfermidade no Mês
     nDiasMes        = Dias de Ferias do Funcionário no Mês
     nDiasMse        = Dias de Férias do Funcionário Mês Seguinte
     Diastrab        = Dias Trabalhados do Funcionário
     DiasDsr        = Dias de Dsr do Funcionário
     cTipRes        = Tipo de Rescisão 
     DesprezaFuncionários  = irá desprezar o funcionário determinado no cálculo
     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



GetUserInfoArray()

Retorna um array multidimensional com as informações de cada um do processos em execução no Protheus 8 Server e/ou TOTVS Application Server. Esta função é um espelho dos dados que aparecem no TOTVS Monitor.

Sintaxe:
GetUserInfoArray ( ) --> aRet

Retorno :
aRet(array_of_record) 
Retorna um array multidimensional com os números e dados de cada uma das threads.
aInfo[x][01] = (C) Nome de usuário
aInfo[x][02] = (C) Nome da máquina local
aInfo[x][03] = (N) ID da Thread
aInfo[x][04] = (C) Servidor (caso esteja usando Balance; caso contrário é vazio)
aInfo[x][05] = (C) Nome da função que está sendo executada
aInfo[x][06] = (C) Ambiente(Environment) que está sendo executado
aInfo[x][07] = (C) Data e hora da conexão
aInfo[x][08] = (C) Tempo em que a thread está ativa (formato hh:mm:ss)
aInfo[x][09] = (N) Número de instruções
aInfo[x][10] = (N) Número de instruções por segundo
aInfo[x][11] = (C) Observações
aInfo[x][12] = (N) (*) Memória consumida pelo processo atual, em bytes
aInfo[x][13] = (C) (**) SID - ID do processo em uso no TOPConnect/TOTVSDBAccess, caso utilizado.

//Manda uma mensagem no no monitor, posição 11 do array anterior
PtInternal( 1, “mensagem”