Alteração da rotina de Fechamento da Folha para permitir sua execução por rotinas não visuais, por exemplo webservices, automação de testes e agendamentos do Schedule.
Linha de Produto: | Microsiga Protheus |
Segmento: | Serviços |
Módulo: | Gestão de Pessoal(SIGAGPE) |
Função: | GPEM120 |
Situação/Requisito: | Cliente reclamava da necessidade do Fechamento da Folha precisar ser executado com exclusividade, impedindo que outros usuários utilizassem o sistema enquanto ocorria o processamento, que demorava algumas horas, nesse ínterim todos ficavam incapazes de acessar ao sistema, o quê ele reclamava ser diferente da realidade que ele tinha no produto Logix. |
Solução/Implementação: | Como não havia a possibilidade de modificarmos a rotina para processar o Fechamento sem exclusividade e por filial, tal qual o Logix,modificamos a rotina de fechamento mensal para possibilitar sua execução por rotinas não-visuais. Além disso foi criado um RDMake "FechaFol" que é disponibilizado para o cliente como exemplo de utilização. Dessa forma o cliente pode agendar a execução do Fechamento Mensal para um período após o expediente de seus funcionários. Exemplo:
FechaFol.prw - RDMake /*/{Protheus.doc} FechaFol Fecha a Folha de Pagamento do Mês Corrente Sem Interface; Essa rotina pode ser chamada pelo Schedule, via WebServices ou qualquer outra interação que não involva interface gráfica; Esse é um exemplo de implementação fornecido pela Totvs de como utilizar a funcionalidade, o cliente é livre pra modificá-lo de acordo com suas necessidades; Exemplo de alterações que poderiam ser feitas: - Enviar o log de erros via e-mail para gestores do RH; @author PHILIPE.POMPEU @since 24/05/2016 @version P11 @param aParam, vetor, deve conter o Código da Empresa e da Filial(nessa ordem). @return Nil, sem retorno /*/ User Function FechaFol(aParam) Local aLog := {} Local nHandle := 0 Local cNomeLog:= '' /*Essa variável quando verdadeira faz com as chamadas à função HELP sejam direcionadas para o Log de Erros.*/ Private lMsHelpAuto := .T. /*Essa variável controle que o Log deve ser armazenado em memória e não em um arquivo.*/ Private lAutoErrNoFile := .T. /*A idéia dessa rotina é que sempre seja chamada por meios não visuais*/ If(IsBlind()) Default aParam := {'',''} RpcSetType(3) PREPARE ENVIRONMENT EMPRESA (aParam[1]) FILIAL (aParam[2]) MODULO "GPE" Else/* Entretanto para testes pode ser útil que sua chamada seja feita via menu, nesse caso também funcionaria.*/ Default aParam := {cEmpAnt,cFilAnt} EndIf /*Chama o Fechamento para o Mês Corrente.*/ GPEM120() /*Obtem qualquer erro que possa ter ocorrido no processamento da rotina de fechamento!*/ aLog := GetAutoGRLog() if(Len(aLog) > 0) /*Exibe erros no Console.*/ aEval(aLog,{|x|ConOut(x)}) /*Salva erros em arquivo*/ cNomeLog := 'rh_gpem120_' cNomeLog += DtoS(Date()) cNomeLog += Left(Time(),5) cNomeLog := StrTran(cNomeLog, ":") + '.log' nHandle := FCreate("\" + cNomeLog) FWrite(nHandle,Replicate("*",10) + " LOG DE ERROS DO FECHAMENTO DA FOLHA " + Replicate("*",10) + CRLF) FWrite(nHandle,Replicate("*",10) + " DATA : "+ DtoC(Date())+" HORA : " + Time() + Space(3) + Replicate("*",10) + CRLF) aEval(aLog,{|x|FWrite(nHandle,UPPER(x) + CRLF)}) FWrite(nHandle,Replicate("*",57) + CRLF) FClose(nHandle) endIf aSize(aLog,0) aLog := Nil If(IsBlind()) RpcClearEnv() endIf Return Nil
|
Chamados relacionados: | TVGQHZ |