Angariar fundos para cobrir os custos logísticos do "Festival da Arte Capoeira" e apoiar o projeto Eu Sou Ninja em sua missão de promover a integração social e cultural na comunidade de Jacaraípe. Com a criação da rifa, buscamos envolver a comunidade de forma ativa no financiamento do evento, permitindo que todos contribuam para o sucesso do festival e para a continuidade das atividades do projeto. Prêmio: Copia da minha biblioteca pessoal de AdvPL/TLpp ..etc Participe da Rifa Eu já contribui. Só falta você! ```cmd Pasta de C:\GitHub\naldodj-tlpp 13/04/2024 19:17 . 19/03/2024 13:49 .. 05/01/2024 12:22 2.742 .gitattributes 14/11/2023 16:02 83 .gitignore 02/12/2023 20:08 .vscode 05/01/2024 12:05 bin 13/04/2024 19:18 4.121 ChangeLog.txt 27/12/2023 02:05 include 14/11/2023 16:02 27.030 LICENSE.txt 14/11/2023 16:02 0 makepatch.lst 14/11/2
#Implementando a Função u_getSM0EmpFilByCNPJ em TOTVS Protheus Hoje vamos explorar uma função bastante útil desenvolvida em TLPP Protheus, chamada-se u_getSM0EmpFilByCNPJ. Essa função é responsável por buscar o código da Empresa/Filial utilizando o CNPJ da empresa como parâmetro. Vamos entender como ela funciona. ```tlpp #include "totvs.ch" function u_getSM0EmpFilByCNPJ(cCNPJ as character) as json static oHashMapSM0EmpFilByCNPJ:=tHashMap():New() as object local aFiliais as array local aEmpresas as array local aFWArrFilAtu as array local cCodEmp as character local cCodFil as character local cEmpFil as character local jEmpFil as json local jGetEmpFil as json local nFilAtu as numeric local nFilial as numeric local nFiliais as numeric local nEmpresa as numeric local nEmpresas as numeric jEmpFil:=JSONObject():New() jEmpFil["cEmpAnt"]:=cEmpAnt jEmpFil["cFilAnt"]:=cFilAnt begin sequence cCNPJ:=allTrim(cCNPJ) cCNPJ:=strTran(cCNPJ,"/","") cCNPJ:=strTran(cCNPJ,".","") cCNPJ:=strTran(cCNPJ,"-","") if (empty(cCNPJ)) break endif if (oHashMapSM0EmpFilByCNPJ:Get(cCNPJ,@jGetEmpFil)) if (; (valType(jGetEmpFil)=="J"); .and.; (jEmpFil:HasProperty("cEmpAnt")); .and.; (jEmpFil:HasProperty("cFilAnt")); ) jEmpFil["cEmpAnt"]:=jGetEmpFil["cEmpAnt"] jEmpFil["cFilAnt"]:=jGetEmpFil["cFilAnt"] break endif endif aEmpresas:=aClone(FWAllCompany()) nEmpresas:=Len(aEmpresas) for nEmpresa:=1 to nEmpresas cCodEmp:=aEmpresas[nEmpresa] aFiliais:=aClone(FWAllFilial(cCodEmp)) nFiliais:=Len(aFiliais) for nFilial:=1 To nFiliais cCodFil:=aFiliais[nFilial] for nFilAtu:=1 to nFiliais cEmpFil:=(cCodEmp+aFiliais[nFilAtu]) aFWArrFilAtu:=aClone(FWArrFilAtu(cCodFil,cEmpFil)) if (Empty(aFWArrFilAtu).or.Len(aFWArrFilAtu)<18) //Não encontrou Empresa/Filial? FWFreeArray(@aFWArrFilAtu) loop endif if (cCNPJ==aFWArrFilAtu[18]) //Armazena em Cache jGetEmpFil:=JSONObject():New() jGetEmpFil["cEmpAnt"]:=aFWArrFilAtu[1] jGetEmpFil["cFilAnt"]:=aFWArrFilAtu[2] oHashMapSM0EmpFilByCNPJ:Set(cCNPJ,jGetEmpFil) //Define o Retorno jEmpFil["cEmpAnt"]:=jGetEmpFil["cEmpAnt"] jEmpFil["cFilAnt"]:=jGetEmpFil["cFilAnt"] break endif FWFreeArray(@aFWArrFilAtu) next nFilAtu next nFilial FWFreeArray(@aFiliais) next nEmpresa end sequence FWFreeArray(@aFiliais) FWFreeArray(@aEmpresas) FWFreeArray(@aFWArrFilAtu) return(jEmpFil) ``` *Entendendo a Função Entrada de Parâmetro: A função recebe como parâmetro o CNPJ da empresa que você deseja obter o código da Empresa/Filial. Tratamento do CNPJ: O CNPJ passa por um processo de limpeza, removendo caracteres como "/", ".", e "-". Cache de Resultados: Utiliza um objeto tHashMap (oHashMapSM0EmpFilByCNPJ) para armazenar resultados previamente obtidos, evitando consultas repetidas. Consulta e Armazenamento em Cache: A função faz consultas utilizando a biblioteca FW (Framework) do TOTVS Protheus para obter informações sobre empresas e filiais. Caso encontre o CNPJ desejado, os resultados são armazenados em cache para consultas futuras. Retorno: Retorna um objeto JSON contendo os códigos da Empresa e Filial correspondentes ao CNPJ informado. *Utilização: ```tlpp // Exemplo de Uso local jResult as json jResult := u_getSM0EmpFilByCNPJ("12345678901234") ``` *(sys.partitions)* ---- *O ChatGPT colaborou com esta publicação*
Comentários
Postar um comentário