Como atualizar o MV_SPEDURL da base de Teste automaticamente via código fonte | Ti Responde 0110

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.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação