Rotina para percorrer todas as filiais em AdvPL

Rotina para percorrer todas as filiais em AdvPL

Olá pessoal…

Hoje vou mostrar um exemplo de rotina em AdvPL para percorrer todas as filiais no Protheus (considerando a unidade de negócios e o grupo de empresas).


AdvPL
AdvPL

A Rotina foi escrita, pegando todas as unidades de negócios, todas as empresas e por último todas as filiais, alterando as variáveis públicas cFilAnt e cEmpAnt.

	lAllFil := .T. //Se for .T. irá pegar todas as filiais, se for .F. será só da empresa atual
	aAreaM0 := SM0->(GetArea())
	cFilBk  := cFilAnt
	cEmpBk  := cEmpAnt
	aUnitNeg:= Iif(lAllFil, FWAllGrpCompany(), {SM0->M0_CODIGO})
	aEmpAux := Iif(lAllFil, FWAllCompany(), {cEmpAnt})

	//Percorrendo os grupos de empresa
	For nGrp := 1 To Len(aUnitNeg)
		cUnidNeg := aUnitNeg[nGrp]
		
		//Percorrendo as empresas
		For nEmp := 1 To Len(aEmpAux)
			cEmpAnt := aEmpAux[nEmp]
			aFilAux := FWAllFilial(cEmpAnt)
			//Percorrendo as filiais listadas
			For nAtu := 1 To Len(aFilAux)
				//Se o tamanho da filial for maior, atualiza
				If Len(cFilAnt) > Len(aFilAux[nAtu])
					cFilAnt := cEmpAnt + aFilAux[nAtu]
				Else
					cFilAnt := aFilAux[nAtu]
				EndIf 
				
				//Posiciono na empresa (para poder pegar o ident)
				SM0->(DbGoTop())
				SM0->(DbSeek(cUnidNeg+cFilAnt)) //é utilizado o 01, por grupo de empresas, caso necessário rotina pode ser adaptada
			
				//......................
				//Fazer tratamentos necessários neste ponto, se for consultas SQL lembrar de utilizar RetSQLName e FWxFilial
				//......................
			Next
		Next
	Next
	
	//Voltando backups
	cEmpAnt := cEmpBk
	cFilAnt := cFilBk
	RestArea(aAreaM0)

Esses e outros códigos, estão disponíveis gratuitamente no nosso GitHub, acesse em github.com/dan-atilio/AdvPL.

Bom pessoal, por hoje é só.
Abraços e até a próxima.

About Dan_Atilio

Analista e desenvolvedor de sistemas. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor do projeto Terminal de Informação, onde são postados tutoriais e notícias envolvendo o mundo da tecnologia.

Deixe uma resposta

%d blogueiros gostam disto: