1. CRIAR UMA WINDOW VAZIA
2. Crie uma Variavel Chamada Loc:NomeXml
3. Coloque para digitar essa variavel e agora, coloque um botao para importar xml
4. para facilitar coloque no lado do nome, DosFileLookup para buscar o arquivo xml
ou digite manualmente
5. comandos dentro do botao importa xml
Abrir o arquivo na memoria
==========================
x#=xml:loadfromfile(Loc:NomeXml_SERVICO,false) ! Esse comando le o arquivo selecionado
if x#=0 ! caso de 0 é porque ele achou o arquivo
message('agora vamos comecar a ler os campos do xml')
ELSE
message('nao Existe Xml')
END
6.
CRIAR UMA VARIAVEL CHAMADA
LOC:RETORNO CSTRING(@S80)
x#=xml:loadfromfile(Loc:NomeXml_SERVICO,false) ! Esse comando le o arquivo selecionado
if x#=0 ! caso de 0 é porque ele achou o arquivo
xml:gototop() ! inicio xml
if not xml:FindNextNode('ide') ! procura tag ide
if not xml:FindNextNode('cUF') ! procura tag cUF
if ~xml:readCurrentData(loc:retorno) ! achou
message(loc:retorno) ! esse é o campo cUf é so colocar onde voce quizer
...
! esses campos irao pegar os campos normais
ELSE
message('nao Existe Xml')
END
7. pegar campos dos produtos
Dentro do Local Data
Oher Declarations
Criar a variavel queue para ler os produtos
Recs LONG
Nota_nfe_Queue QUEUE,PRE(nfeq) ! esse é a queue com os itens do produtos, conforme as tags
nItem string(3)
cProd STRING(20)
xProd string(50)
CFOP string(20)
uCom string(20)
qCom string(20)
vUnCom string(20)
vProd string(20)
uTrib string(20)
qTrib string(20)
vUnTrib string(20)
NCM string(20)
orig string(10),dim(20)
CST string(10),dim(20)
modBC string(10),dim(20)
vBC string(10),dim(20) ! 1=ICM 2=IPI
pICMS string(10),dim(20)
vICMS string(10),dim(20)
pIPI string(10),dim(20)
vIPI string(10),dim(20)
pRedBC string(10),dim(20)
vBCST string(10),dim(20)
pICMSST string(10),dim(20)
vICMSST string(10),dim(20)
END
loc:importa_nfe cstring(255)
Dentro do programa abaixo do xml que ja esta baixando acrescente o seguinte:
free(Nota_nfe_Queue) ! limpa queue
xml:gototop() ! inicio xml
if not XML:FindNextNode('det') ! procura tag det
recs = xml:loadqueue(Nota_nfe_Queue,true,true) ! move para memoria
end
sort(Nota_nfe_Queue,+nfeq:nItem) ! classifica queue
loop contador#=1 to records(Nota_nfe_Queue) ! loop queue
get(Nota_nfe_Queue,contador#) ! ler queu
message(nfeq:nItem) ! aqui esta cada linha, e so usar
end
linha completa
x#=xml:loadfromfile(Loc:NomeXml_SERVICO,false) ! Esse comando le o arquivo selecionado
if x#=0 ! caso de 0 é porque ele achou o arquivo
xml:gototop() ! inicio xml
if not xml:FindNextNode('ide') ! procura tag ide
if not xml:FindNextNode('cUF') ! procura tag cUF
if ~xml:readCurrentData(loc:retorno) ! achou
message(loc:retorno) ! esse é o campo cUf é so colocar onde voce quizer
...
free(Nota_nfe_Queue) ! limpa queue
xml:gototop() ! inicio xml
if not XML:FindNextNode('det') ! procura tag det
recs = xml:loadqueue(Nota_nfe_Queue,true,true) ! move para memoria
end
sort(Nota_nfe_Queue,+nfeq:nItem) ! classifica queue
loop contador#=1 to records(Nota_nfe_Queue) ! loop queue
get(Nota_nfe_Queue,contador#) ! ler queu
message(nfeq:nItem) ! aqui esta cada linha, e so usar
end
ELSE
message('nao Existe Xml')
END