Como mudar de empresa e filial com a função OpenFile

No artigo de hoje vou demonstrar como trocar de empresa e filial usando a função OpenFile.

Para trocar a empresa e filial no Protheus, nós podemos simplesmente alterar as variáveis cEmpAnt, cFilAnt e cNumEmp. Essas 3 são variáveis públicas que definem a filial aberta no sistema, conforme print abaixo:

Exemplo das variáveis em memória

Porém, para algumas funções, são carregados parametrizações internas, como por exemplo, a classe / webservice WSNFeSBRA, em que uma das utilidades que podemos usar é baixar o XML de uma NF já transmitida no Protheus – exemplo no link Função que retorna o xml de uma nota em AdvPL).

Para esse caso em específico, para poder instanciar a classe, devemos estar na filial correta, então no nosso fonte basicamente teríamos a seguinte lógica:

  1. Fazer backup das variáveis públicas
  2. Alterar as variáveis públicas para a nova filial
  3. Chamar a função OpenFile para fazer a validação dessa nova filial
  4. Fazer as tratativas necessárias / customizações
  5. Voltar o backup das variáveis públicas
  6. Chamar a função OpenFile para voltar para a filial do backup.

Abaixo o código fonte exemplificando a lógica acima:

//1. Faz o backup das variáveis públicas
cEmpBkp := cEmpAnt
cFilBkp := cFilAnt
cNumEmpBkp := cNumEmp

//2. Altera as variáveis públicas
cEmpAnt := "01"
cFilAnt := "0201"
cNumEmp := cEmpAnt + cFilAnt

//3. Chama a função OpenFile para a nova filial
OpenFile(cNumEmp)

//4. Aqui você faz as suas customizações / tratativas
// ...
// ...
// ...

//5. Volta o backup das variáveis
cEmpAnt := cEmpBkp
cFilAnt := cFilBkp
cNumEmp := cEmpAnt + cFilAnt

//6. Chama a função OpenFile para voltar para a filial de origem
OpenFile(cNumEmp)

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan Atilio (Daniel Atilio)
Especialista em Engenharia de Software pela FIB. Entusiasta de soluções Open Source. E blogueiro nas horas vagas.

2 Responses

  1. Don Junior disse:

    Dica legal Atilio, mas a função OpenFile ainda não está documentada no TDN, e a partir da nova release 33, algumas funções restritas serão bloqueadas para utilização em customizações.

    Uso bastante a função StartJob (https://tdn.totvs.com/display/tec/StartJob), que seria uma “alternativa” para troca de empresa em tempo de execução!

    Abraço
    Don Junior

Deixe uma resposta