Versão atual:

Como encontrar o código de uma filial a partir do cnpj da filial?

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)

Versões (2):

Ver a versão formatada

Como encontrar código da filial a partir do cnpj da filial?

Comentário

new question