Artigo
· Set. 17, 2024 6min de leitura

Como acessar o conteúdo do campo de um registro de uma global através do nome do campo

Como estou desenvolvendo uma aplicação para auditoria de arquivo fiscal digital, EFD ICMS IPI, optei por armazenar os dados diretamente em globais. Uma vez que os registros do arquivo EFD são formato txt e tem características semelhantes às linhas de registro de global.

Para poder analisar os itens de saída das Notas Fiscais Eletrônicas, fiz a importação também dos dados destes arquivos, e os armazenei em global. Segue exemplo:

1:  ^NFe = "Data|Chave|Arquivo Nome|<ide><cDV>|<ide><cMunFG>|<ide><cNF>|<ide><cUF>|<ide><dhEmi>|<ide><dhSaiEnt>|<ide><finNFe>|<ide><idDest>|<ide><indFinal>|<ide><indIntermed>|<ide><indPag>|<ide><indPres>|<ide><mod>|<ide><nNF>|<ide><natOp>|<ide><procEmi>|<ide><refNFe>|<ide><serie>|<ide><tpAmb>|<ide><tpEmis>|<ide><tpImp>|<ide><tpNF>|<ide><verProc>|<emit><CEP>|<emit><CNAE>|<emit><CNPJ>|<emit><CRT>|<emit><IE>|<emit><IEST>|<emit><IM>|<emit><UF>|<emit><cMun>|<emit><cPais>|<emit><fone>|<emit><nro>|<emit><xBairro>|<emit><xCpl>|<emit><xFant>|<emit><xLgr>|<emit><xMun>|<emit><xNome>|<emit><xPais>|<dest><CEP>|<dest><CNPJ>|<dest><CPF>|<dest><IE>|<dest><IM>|<dest><ISUF>|<dest><UF>|<dest><cMun>|<dest><cPais>|<dest><email>|<dest><fone>|<dest><indIEDest>|<dest><nro>|<dest><xBairro>|<dest><xCpl>|<dest><xLgr>|<dest><xMun>|<dest><xNome>|<dest><xPais>|<prod><![CDATA[SOQUETE LANTERNA DIANTEIRA SCANIA S4 / S5 124 98>|<prod><CEST>|<prod><CFOP>|<prod><EXTIPI>|<prod><NCM>|<prod><UFCons>|<prod><cBarra>|<prod><cBarraTrib>|<prod><cBenef>|<prod><cEAN>|<prod><cEANTrib>|<prod><cProd>|<prod><cProdANP>|<prod><cUFOrig>|<prod><dFab>|<prod><dVal>|<prod><descANP>|<prod><indEscala>|<prod><indImport>|<prod><indTot>|<prod><nFCI>|<prod><nItemPed>|<prod><nLote>|<prod><pBio>|<prod><pOrig>|<prod><qBCProd>|<prod><qCom>|<prod><qLote>|<prod><qTemp>|<prod><qTrib>|<prod><uCom>|<prod><uTrib>|<prod><vAliqProd>|<prod><vCIDE>|<prod><vDesc>|<prod><vFrete>|<prod><vOutro>|<prod><vPart>|<prod><vProd>|<prod><vUnCom>|<prod><vUnTrib>|<prod><xPed>|<prod><xProd>|<ICMS><CSOSN>|<ICMS><CST>|<ICMS><adRemICMSRet>|<ICMS><modBC>|<ICMS><modBCST>|<ICMS><motDesICMS>|<ICMS><orig>|<ICMS><pCredSN>|<ICMS><pDif>|<ICMS><pICMS>|<ICMS><pICMSEfet>|<ICMS><pICMSST>|<ICMS><pMVAST>|<ICMS><pRedBC>|<ICMS><pRedBCEfet>|<ICMS><pRedBCST>|<ICMS><pST>|<ICMS><qBCMonoRet>|<ICMS><vBC>|<ICMS><vBCEfet>|<ICMS><vBCST>|<ICMS><vBCSTDest>|<ICMS><vBCSTRet>|<ICMS><vCredICMSSN>|<ICMS><vICMS>|<ICMS><vICMSDeson>|<ICMS><vICMSDif>|<ICMS><vICMSEfet>|<ICMS><vICMSMonoRet>|<ICMS><vICMSOp>|<ICMS><vICMSST>|<ICMS><vICMSSTDest>|<ICMS><vICMSSTRet>|<ICMS><vICMSSubstituto>|<IPI><CNPJProd>|<IPI><CST>|<IPI><cEnq>|<IPI><cSelo>|<IPI><pIPI>|<IPI><qSelo>|<IPI><qUnid>|<IPI><vBC>|<IPI><vIPI>|<IPI><vIPIDevol>|<IPI><vUnid>|<PIS><CST>|<PIS><pPIS>|<PIS><qBCProd>|<PIS><vAliqProd>|<PIS><vBC>|<PIS><vPIS>|<COFINS><CST>|<COFINS><pCOFINS>|<COFINS><qBCProd>|<COFINS><vAliqProd>|<COFINS><vBC>|<COFINS><vCOFINS>|<infAdProd><infAdProd>|<total><dCompet>|<total><qBCMono>|<total><qBCMonoRet>|<total><qBCMonoReten>|<total><vBC>|<total><vBCST>|<total><vCOFINS>|<total><vDesc>|<total><vFCP>|<total><vFCPST>|<total><vFCPSTRet>|<total><vFCPUFDest>|<total><vFrete>|<total><vICMS>|<total><vICMSDeson>|<total><vICMSMono>|<total><vICMSMonoRet>|<total><vICMSMonoReten>|<total><vICMSUFDest>|<total><vICMSUFRemet>|<total><vII>|<total><vIPI>|<total><vIPIDevol>|<total><vISS>|<total><vNF>|<total><vOutro>|<total><vPIS>|<total><vProd>|<total><vRetCOFINS>|<total><vRetPIS>|<total><vST>|<total><vSeg>|<total><vServ>|<total><vTotTrib>"
2:  ^NFe("13240708979043000172550010000507261916206590",1) = "20240704|13240708979043000172550010000507261916206590|13240708979043000172550010000507261916206590-procNFe.xml|0'|1302603'|91620659'|13'|2024-07-04T15:19:00-04:00|2024-07-04T15:19:00-04:00|1'|2'|1'|||9'|55'|50726'|VENDA DE PRODUCAO DO|0'||1'|1'|1'|1'|1'|12.1.2310 |69093415'|3299002'|08979043000172'|3'|063005077'||11983401'|AM|1302603'|1058'|9240097407'|8656'|COLONIA TERRA NOVA||ARMOR DO BRASIL|AV TORQUATO TAPAJOS|MANAUS|ARMOR BRASIL IND. COM. FITAS P/IMP LTDA.|BRASIL|03116000'|57158941000175'||111783670118'|||SP|3550308'|1058'|notaeletronica@longwalk.com.br;;gerencia.oper@essencialcargo|1126054003'|1'|1430'|MOOCA||RUA DO ORATORIO|SAO PAULO|LONG WALK CONFECCOES LTDA|BRASIL|||6101||96121000||||AM23000001|7899462647990|7899462647990|TSL506IO||||||||1||01|||||100,0000|||100,0000|UND|UND|||||||6073,60|60,736000|60,736000|012267|ATX9 PAXAR SNAP 45MM X 400M - IO||00'||3|||4|||12,0000|||||||||6073,60||||||728,83|||||||||||52'|999|||||||||02'|1,3000|||5344,77|69,48|02'|6,0000|||5344,77|320,69||||||6073,60|0|320,69|0|0|0|0|0|0|728,83|0||||0|0|0|0|0||6073,60|0|69,48|6073,60|||0|0||983,92"

Com esta base, foi possível criar de forma dinâmica, os campos e o nome dos campos, independente da versão, quantidade de campos do XML, etc. Assim é possível exportar o conteúdo desta global para trabalhar com planilha Excel.

Porém, tive que desenvolver uma função em COS para detectar o conteúdo do campo conforme o nome do campo, em vez de ficar contando carneirinhos, pipelines. Sei que o processo poderia ser escrito de outra forma, mas a velocidade foi fantástica. Agora estou precisando de ajuda para desenvolver o FrontEnd. Se alguém se habilitar, me procure.

segue vídeo do processo:

https://youtu.be/wPjBaZCYul0

Discussão (0)1
Entre ou crie uma conta para continuar