Olá!
Tenho o cnpj de uma filial mas preciso do código dela.
Eu consigo encontrar o código a partir do cnpj se eu carregar todas as filiais da SM0 em um array e em seguida varrer o array com um laço de repetição. Assim:
Local n
Local oFilial
Local aFiliais := {} // Array que irá conter as informações das filiais da SM0
Local cCodigo := '' // Variável que receberá o código relativo ao cnpj procurado
Local cCnpj := MeuCnpj() // Função fictícia que retorna um cnpj
Local aArea := GetArea()
DbSelectArea('SM0')
SM0->(DbGoTop())
While SM0(!EoF())
oFilial := JsonObject():New() // Objeto para armazenar as informações de uma filial
oFilial['codigo'] := AllTrim(SM0->M0_CODFIL)
oFilial['cnpj'] := AllTrim(SM0->M0_CGC)
Aadd(aFiliais, oFilial) // Adiciona a filial ao array de filiais
SM0->(DbSkip())
EndDo
RestArea(aArea)
For n := 1 To Len(aFiliais) // Varre o array de filiais
oFilial := aFiliais[n]
If oFilial['cnpj'] = cCnpj
cCodigo := oFilial['codigo'] // Finalmente tenho o codigo salvo em uma variável
EndIf
Next n
Mas tem alguma forma de recuperar somente as informações de uma filial em específico a partir do cnpj? Tipo assim:
Local cCodigo := ''
Local cCnpj := MeuCnpj() // Função fictícia que retorna um cnpj
Local aArea := GetArea()
DbSelectArea('SM0')
DbSetOrder(?) // Algum índice que use o cnpj
SM0->(DbGoTop())
SM0->(DbSeek(? + cCnpj)) // Algum índice que use o cnpj
cCodigo := AllTrim(SM0->M0_CODFIL)
RestArea(aArea)