Como capturar um arquivo XML - Danfe?

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Dilson José
Usuário Nível 1
Usuário Nível 1
Mensagens: 24
Registrado em: 06 Jun 2007 08:09
Localização: www.pop.com.br
Contato:

Como capturar um arquivo XML - Danfe?

Mensagem por Dilson José »

Boa noite a todos!

Gostaria de saber se alguém tem um exemplo de como capturar um xml e passá-lo para um DBF para então apresentar os dados do DANFE ao usuário! A quem puder ajudar-me agradeço!

Att.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Como capturar um arquivo XML - Danfe?

Mensagem por rochinha »

Amiguinho,

Não entendi quando voce diz: "recuperar"

Mas veja nesta postagem http://pctoledo.com.br/forum/viewtopic. ... tag#p66949

Agora se voce tem o .XML em mãos e deseja pegar seu conteúdo, terá de fazer uma varredura usando busca por trechos usando uma função parecida a apresentada abaixo:

Código: Selecionar todos

function getXMLValue( cXML, cTAG )
   LOCAL nPosIni := At( [<]+cTag+[>], cXML ) + len( [<]+cTag+[>] )
   LOCAL nPosFim := At( [</]+cTag+[>], cXML )
   return substr( cXML, nPosIni, nPosFim-nPosIni )
Uso:

Código: Selecionar todos

cXML = MemoRead( "nfe35123...123.xml" )
cEndereco := getXMLValue( cXML, "cEndereco" )
Não seria grande problema se o XML não contivesse sequencias como os itens de produtos que repetem TAGs.

Mas é um começo e voce conseguirá um resultado.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
paiva_dbdc
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 12 Nov 2012 09:58
Localização: uberlandia mg

Como capturar um arquivo XML - Danfe?

Mensagem por paiva_dbdc »

o Toya disponibilizou m exe que baixa o xml

ai vc importa para seus dbf


se nao conseguir avise que acho um tempo e posto o codigo

PAiva
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Como capturar um arquivo XML - Danfe?

Mensagem por lucimauro »

Paiva assim que puder poste para gente, tambem estou interessado.!
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Como capturar um arquivo XML - Danfe?

Mensagem por rubens »

Bom dia...

Eu juntei informações aqui do site com as orientações do colegas e consegui criar uma rotina para importação do xml para o meu sistema.
Vou postar as rotinas e é só adaptar para seu programa.
Os xmls tem que estar em uma pasta especifica.

Funciona assim:
Primeiro é feito uma leitura dos xml´s da pasta e apresentado para o usuário fazer a escolha de qual xml quer importar. Se o xml já tiver sido importado é avisado para o usuário e cancela importação.
Lista de XML
Lista de XML
Quando o usuario seleciona o xml o sistema abre o xml e pega o cnpj do fornecedor e o numero da nfe.
Daí é feita uma pesquisa se existe o fornecedor cadastrado. Se não encontrar é mostrado opção de cadastrar um novo fornecedor ou associar a um fornecedor já cadastrado.
Depois é exibido uma tela com os itens do xml. É feita uma pesquisa com o código de barras do item. Se for encontrado no cadastro de produtos o sistema associa automaticamente senão ele pesquisa novamente pelo fornecedor e o código original do item. Se não encontrar o usuário seleciona em qual grupo ele quer cadastrar o produto e o sistema efetua o cadastro do produto automaticamente conforme regras prédefinidas.
Tela com os itens do XML
Tela com os itens do XML
O usuário pode tb associar o item a um produto cadastrado como mostra a tela abaixo
Tela para associar itens
Tela para associar itens
Ao final da verificação dos itens o usuário pressiona F7 para processar a compra. É apresentada uma tela mostrando os valores totais da nota e pede a margem de lucro e o frete (se tiver o valor de frete na nota já é buscado automaticamente senão poderá ser definido).
Tela de Fechamento
Tela de Fechamento
É claro que os dados que vão ser coletados do xml vai depender de sistema para sistema. Os meus clientes estão muito satisfeitos porque ao final imprimo um espelho da nota com codigo original + codigo gerado pelo sistema + descricao + valor e codigo de barras. Daí o usuário somente fará a conferência e outro usuário com poder de composição de preço de venda revisa, mas não precisa digitar nenhuma informação adicional, como código de barras, ncm e etc. Somente preços. O próximo passo agora é selecionar e coletar informações do sped fiscal e sped pis cofins... mas aí é outra história..

Como usa as funções fopen(),fseek(),fread() e fclose() ainda não tive problemas com tamanho de arquivo.. Lê certinho xml com mais de 64k. Inclusive já li aqui na loja xml com mais de 200 itens.

O arquivo compra.prg tem praticamente todas as funções. As que não está são funções específicas do meu sistema, que não vai impedir em nada sua compreensão.

Rubens
Anexos
COMPRA.PRG
(34.81 KiB) Baixado 369 vezes
"Eu e minha casa servimos ao Senhor e você ???"
Responder