No vídeo de hoje, vamos demonstrar em como atualizar o MV_SPEDURL da base de testes via ponto de entrada, sem precisar toda vez que atualizar a base de testes ter que ficar mexendo manualmente no parâmetro.
A dúvida de hoje, nos perguntaram, se seria possível criar algum ponto de entrada, que se fosse a base de testes, atualizasse automaticamente o MV_SPEDURL.
Pensando nisso, montamos esse exemplo, onde demonstramos em como buscar o nome do banco utilizado no ponto de entrada AfterLogin, e se for da base de testes / homologação, ele valida como que esta o parâmetro MV_SPEDURL, se tiver diferente do esperado, o parâmetro terá o conteúdo atualizado.
Obs.: Caso você não queira buscar a informação direto do appserver.ini, se sua base de testes tiver um nome de environment diferente da de produção, utilize a função GetEnvServer().
Segue abaixo o vídeo exemplificando:
E abaixo o código fonte desenvolvido:
//Bibliotecas
#Include "TOTVS.ch"
/*/{Protheus.doc} User Function AfterLogin
P.E. Acionado logo após fazer login no sistema
@type Function
@author Atilio
@since 02/02/2024
@see https://tdn.totvs.com/pages/releaseview.action?pageId=6815186
/*/
User Function AfterLogin()
Local aArea := FWGetArea()
//Aciona a verificação da URL do TSS
u_zVid0110()
FWRestArea(aArea)
Return
/*/{Protheus.doc} zVid0110
Atualiza o parâmetro MV_SPEDURL se estiver na base de testes
@type user function
@author Atilio
@since 02/02/2024
/*/
User Function zVid0110()
Local aArea := FWGetArea()
Local cIniFile := GetAdv97()
Local cStrError := "ERROR"
Local cNomeBase := ""
Local cSpedURL := ""
Local cParametro := "MV_SPEDURL"
Local cConteudo := ""
//Busca o nome da base na seção "DbAccess"
cNomeBase := GetPvProfString("DbAccess", "Alias", cStrError, cIniFile)
//Se não encontrou ou deu erro, ai vamos buscar novamente mas agora ao invés de "DbAccess" vamos usar a seção "TopConnect"
If Empty(cNomeBase) .Or. cNomeBase == cStrError
cNomeBase := GetPvProfString("TopConnect", "Alias", cStrError, cIniFile)
cPasso := "2"
EndIf
//Se não encontrou ou deu erro, ai vamos buscar novamente mas agora ao invés de "TopConnect" vamos usar a seção "TotvsDBAccess"
If Empty(cNomeBase) .Or. cNomeBase == cStrError
cNomeBase := GetPvProfString("TotvsDBAccess", "Alias", cStrError, cIniFile)
cPasso := "3"
EndIf
//Se mesmo assim não encontrou, vamos buscar direto do ambiente
If Empty(cNomeBase) .Or. cNomeBase == cStrError
cNomeBase := GetSrvProfString("DBAlias", cStrError)
cPasso := "4"
EndIf
//Se for a base de Homologação / Testes
If cNomeBase == "BASE_TST"
//Define qual é a URL do TSS de Testes
cSpedURL := "http://192.168.x.x:8280"
//Busca a URL atual
cConteudo := GetMV(cParametro)
//Se o conteúdo do parâmetro for diferente do esperado
If ! cConteudo == cSpedUrl
PutMV(cParametro, cSpedUrl)
FWAlertInfo("Parâmetro <strong>" + cParametro + "</strong>, teve o conteúdo atualizado para <strong>" + cSpedURL + "</strong>", "Base " + cNomeBase)
EndIf
EndIf
FWRestArea(aArea)
Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.