Hoje vou mostrar como retornar a empresa e filial conforme o CNPJ passado por parâmetro (percorrendo através da função FWAllFilial).
A lógica dessa função basicamente é:
- Receber o CNPJ de uma empresa via parâmetro
- Usar a função FWAllCompany para buscar todas as Empresas (ex.: 01, 02, 03, etc)
- Percorrer todas as empresas em um For
- Usar a função FWAllFilial para buscar todas as filiais da empresa atual (ex.: 0101, 0102, 0103, etc)
- Se o CNPJ passado por parâmetro for igual ao CNPJ atual da filial, define o retorno da função (empresa e filial)
Abaixo o exemplo desenvolvido conforme lógica acima:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zFilCNPJ Função que retorna o código da filial (no padrão EEFF) através de um CNPJ vindo do parâmetro @type Function @author Atilio @since 22/04/2021 @version version /*/ User Function zFilCNPJ(cCNPJ) Local aArea := GetArea() Local aEmpresas := FWAllCompany() Local aFiliais := {} Local aFilCNPJ := {} Local nEmpAtu := 0 Local nFilAtu := 0 Local aFilRet := {} Local cEmpFil Default cCNPJ := "" //Se tiver CNPJ a procurar If ! Empty(cCNPJ) //Percorre todas as empresas For nEmpAtu := 1 To Len(aEmpresas) aFiliais := FWAllFilial(aEmpresas[nEmpAtu]) //Percorre todas as filiais da empresa atual For nFilAtu := 1 To Len(aFiliais) cEmpFil := aEmpresas[nEmpAtu] + aFiliais[nFilAtu] //padrão EEFF //Se o CNPJ vindo por parâmetro for igual da filial atual, encerra os laços If Alltrim(cCNPJ) == FWArrFilAtu(aEmpresas[nEmpAtu], cEmpFil)[18] aAdd(aFilRet, aEmpresas[nEmpAtu]) aAdd(aFilRet, cEmpFil) nEmpAtu := Len(aEmpresas) Exit EndIf Next Next EndIf RestArea(aArea) Return aFilRet
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Grande mestre, legal sua dica!!!!
Para contribuir, compartilho que também é possível, usando a FWLoadSM0(), ela retorna as informações da SM0.
Conforme documentação do TDN (https://tdn.engpro.totvs.com.br/display/framework/FWLoadSM0), a posição 18 retorna o CGC, com isso também é possível retornar os mesmos dados com um único laço de repetição.
Abraço
Don Junior
Grande Don.
Muito obrigado pela contribuição e dica, é uma ótima sugestão.
Aquele abraço.