Árvore de páginas

Como faço para customizar uma rotina que será chamada no PDV para ser executada na Reguarda?

Produto:

Microsiga Protheus

Versões:

11 e Superior

Ocorrência:

Como faço para customizar uma rotina que será chamada no PDV para ser executada na Reguarda?

Ambiente:

Totvs Pdv.

Passo a passo:

Por motivos de segurança e para evitar interferência de customizações no processo de subida de dados padrão , foi evitado o uso de Ponto de Entrada no JOB de subida de dados STWUPSALE. Caso utilize algum procedimento no FrontLoja para subir dados do PDV para a Retaguarda como por exemplo: FRTGrvSZ, deverá ser substituído por rotina customizada.

Pré-requisito: Configurações de HOST para comunicação entre PDV e Retaguarda . Mais informações: SIGAFRT_0215_Configuração de comunicação TOTVS PDV

Abaixo um exemplo simples onde foi criado uma Function no PDV para ser executada em outro ambiente (RETAGUARDA). Para melhor entendimento do uso, foi realizado no formato de JOB.

1 - Possuir as rotinas compiladas no PDV e na Retaguarda:

Link para download do fonte de exemplo: FonteExemplo.prw

#INCLUDE "PROTHEUS.CH"

//--------------------------------------------------------
/*/{Protheus.doc} MeuFunc()
Realiza conout no console dos paramtros recebidos
@param cParam1 Conteudo do tipo String para apresentacao em conout()
@param cParam2 Conteudo do tipo String para apresentacao em conout()
@param cParam3 Conteudo do tipo numerido para apresentacao em conout()
@author Paulo Henrique
@version P11.8
@since 06/03/2017
@return lRetorno .T.
/*/
//--------------------------------------------------------
User Function MeuFunc( cParam1, cParam2, nParam3 )

Default cParam1 := "cParam1 vazio..."
Default cParam1 := "cParam2 vazio..."
Default nParam3 := 0

Conout("Iniciou MeuFunc")
Conout("Recebeu Param1:",cParam1)
Conout("Recebeu Param2:",cParam1)
Conout("Recebeu Param3:",nParam3)
Conout("Finalizou MeuFunc")

Return .T.


//--------------------------------------------------------
/*/{Protheus.doc} MeuJob()
Realiza conout no console dos paramtros recebidos
@param cEmp Conteudo do tipo String com a Empresa para abertura de ambiente
@param cFil Conteudo do tipo String com a Filial para abertura de ambiente
@author Paulo Henrique
@version P11.8
@since 06/03/2017
@return lRetorno .T.
/*/
//--------------------------------------------------------
User Function MeuJob(cEmp , cFil)

Local lRet := .F.
Local lExecutou := .F.

cEmp := "T1"
cFil := "PARM2=D MG 01"

Conout("Iniciando MeuJob")

//Prepara Ambiente
RPCSetType(3)
RpcSetEnv(cEmp,cFil,Nil,Nil,"FRT")

lExecutou := STBRemoteExecute( "U_MeuFunc", { "ConteudoParam1","ConteudoParam2",10 } , NIL, .T. , @lRet )

Conout("Retorno MeuJob",lExecutou)

If !lExecutou
Conout("Não conseguiu executar a rotina _MinhaFunc. Verifique se a funcionalidade está cadastrada e habilitada na Retaguarda")
EndIf

Conout("Finalizou MeuJob")

Return .T.

2 - Dentro do ambiente da Retaguarda, acessar a configuração de Funcionalidades(CFGA051) para incluir a function que será executada na retaguarda:

3 - Dentro do ambiente da Retaguarda, acessar a configuração de Perfil(CFGA052) para habilitar a funcionalidade no perfil Principal/Retaguarda:

4 - Após esse processo, a rotina estará preparada para ser executada no PDV, podendo ser via Job conforme exemplo abaixo:

Configuração do JOB Appserver.ini (PDV):

[MEUJOB]
MAIN=U_MeuJob
ENVIRONMENT=PDV1180
NPARMS=2
PARM1=T1
PARM2=D MG 01

[ONSTART]
JOBS=MEUJOB
REFRESHRATE=30

5 - Verifique que o JOB foi executado e a rotina MeuFunc foi executada na Retaguarda: