Página 2 de 2
Re: Leitura de DANFE ( Xml )
Enviado: 07 Mar 2011 18:28
por jairfab
Ficou otima esta rotina de ler DANFE, so está faltando pegar todos os dados Det itens BC e CST para os impostos IPI, cofins etc..
Alguem poderia complementar isto nesta finção?
Re: Leitura de DANFE ( Xml )
Enviado: 08 Mar 2011 12:11
por Poka
Prezado colega,
Tenho essa rotina que fiz no meu sistema, veja se serve.
Código: Selecionar todos
// carrego o arquivo inteiro
xtexto:=memoread(NomeArquivoXML)
//
for a:= 1 to 99
xtag1:="<det nItem="
xtag2:= "</det>"
xposicao1:=atNum(xtag1,xtexto,a)+len( xtag1)
xposicao2:=atNum(xtag2,xtexto,a)
vparteItem:=substr(xtexto,xposicao1,xposicao2-xposicao1)
if empty(vparteItem) // se nao encontrou cai fora, terminou os itens
exit
endif
*-numero do item
vnItem:=strzero( a,2)
*-----codigo----------
xtag1:="<cProd>"
xtag2:="</cProd>"
vcodmatx:=pegatextoVar( vparteItem,xtag1,xtag2)
*-----codigo-barra---------
xtag1:="<cEAN>"
xtag2:="</cEAN>"
vcodbarx:=pegatextoVar( vparteItem,xtag1,xtag2)
*-------------
xtag1:="<xProd>"
xtag2:="</xProd>"
vnomematx:=pegatextoVar( vparteItem,xtag1,xtag2)
*-------------
xtag1:="<NCM>"
xtag2:="</NCM>"
vncmx:=pegatextoVar( vparteitem,xtag1,xtag2)
*------unidade comercial-------
xtag1:="<uCom>"
xtag2:="</uCom>"
vunx:=pegatextoVar( vparteItem,xtag1,xtag2)
*-------------
xtag1:="<CFOP>"
xtag2:="</CFOP>"
vcfop:=pegatextoVar( vparteItem,xtag1,xtag2)
*-------------
xtag1:="<qCom>"
xtag2:="</qCom>"
vqtd:=round( val(pegatextoVar( vparteItem,xtag1,xtag2)),3)
*------valor unitario-------
xtag1:="<vUnCom>"
xtag2:="</vUnCom>"
vprUni:=round( val(pegatextoVar( vparteItem,xtag1,xtag2) ),5)
*-------------
xtag1:="<vProd>"
xtag2:="</vProd>"
vvlMerc:= round( val( pegatextoVar( vparteItem,xtag1,xtag2) ),2)
*-------------
xtag1:="<vFrete>"
xtag2:="</vFrete>"
vvlfrete:=round( val(pegatextoVar( vparteItem,xtag1,xtag2)),2)
*-------------
// para icm/st/ pega parte do texto
vparte:=pegatextoVar( vparteItem,"<ICMS>","</ICMS>")
xtag1:="<vICMS>"
xtag2:="</vICMS>"
vvlIcms:= round( val(pegatextoVar( vparte,xtag1,xtag2) ),2)
*-------------
xtag1:="<pICMS>"
xtag2:="</pICMS>"
vAlIcms:= round( val(pegatextoVar( vparte,xtag1,xtag2) ),2)
*-------------
xtag1:="<vBC>"
xtag2:="</vBC>"
vBaseicms:=round( val( pegatextoVar( vparte,xtag1,xtag2) ),2)
*----------------------
xtag1:="<vBCST>"
xtag2:="</vBCST>"
vBaseicmST:= round( val( pegatextoVar( vparte,xtag1,xtag2) ),2)
*--------------
xtag1:="<pICMSST>"
xtag2:="</pICMSST>"
vpde:=round(val(pegatextoVar( vparte,xtag1,xtag2)),2)
*--------------
xtag1:="<vICMSST>"
xtag2:="</vICMSST>"
vvlst:=round(val(pegatextoVar( vparte,xtag1,xtag2)),2)
*-------// ipi pega texto---------------
vparte:=pegatextoVar( vparteItem,"<IPI>","</IPI>")
*------------------
xtag1:="<vIPI>"
xtag2:="</vIPI>"
vvlipi:=round( val(pegatextoVar( vparte,xtag1,xtag2)),2)
*-------------
xtag1:="<pIPI>"
xtag2:="</pIPI>"
valIPI:=round(val(pegatextoVar( vparte,xtag1,xtag2)),2)
next
////////////////////
funct PegaTextoVar(xVar,xchave1,xchave2)
// pega texto de variavel
local xpesq1:=xpesq2:=""
local xPosicao1:=xPosicao2:=0
if ! xchave1 $ xvar .or. ! xchave2 $ xvar
x:=""
else
xposicao1:=atNum(xchave1,xVar)+len( xchave1)
xposicao2:=atNum(xchave2,xVar)
endif
RETU (x)
Poka
Leitura de DANFE ( Xml )
Enviado: 24 Jul 2011 00:27
por fladimir
Nobres colegas qto a pegar o XML e jogar os respectivos campos em uma base temporaria OK, agora estou com as seguintes dificuldades de organizar as seguintes situações:
1 - Como atrelar/associar o produto da NFe com determinado produto da base do cliente, sendo q por exemplo não tenha código de barras?
2 - Com fazer com determinado produto q é comprado de fornecedores diferentes, ou seja, na base de produtos do sistema tem o produto X e estou lançando 2 NFes puxando do XML de 2 fornecedores distintos mas q fornecem o produto X e não tem código de barras nos 2 xml ou tem em 1 e não tem em outro por exemplo?
3 - Suponhamos q tenha vários produtos novos q foram comprados e estão no XML da NFe de entrada e dado ao fato de serem novos produtos a serem trabalhados no meu estabelecimento não tenho ele na base da empresa, como os colegas tratam essa questão na hora de efetivar os dados?
Sds.
Leitura de DANFE ( Xml )
Enviado: 03 Ago 2011 20:16
por Laudelino Scarmagnani
Ola pessoal.
No programa LerDanfe, tem algumas funções. A função CAIXATEXTO(07,08,8+Len(cLista),85,"ESCOLHA O ARQUIVO COM O DANFE ","BG+/NB+","NN/NN","N"), por exemplo, deve ser para selecionar um arquivo, recuperado pelo programa numa pasta. Como tenho pouco conhecimento em Clipper, se alguém tem esta função e possa postá-la, agradeceria muito.
As demais, acho que consigo resolver. A função MsgConf() tambem me ajudaria muito, para economizar ums linhas de código nos demais programas meus.
Um abraço.
Laudelino
Leitura de DANFE ( Xml )
Enviado: 11 Nov 2011 21:16
por fladimir
Nobres colegas qto a pegar o XML e jogar os respectivos campos em uma base temporaria OK, agora estou com as seguintes dificuldades de organizar as seguintes situações:
1 - Como atrelar/associar o produto da NFe com determinado produto da base do cliente, sendo q por exemplo não tenha código de barras?
2 - Com fazer com determinado produto q é comprado de fornecedores diferentes, ou seja, na base de produtos do sistema tem o produto X e estou lançando 2 NFes puxando do XML de 2 fornecedores distintos mas q fornecem o produto X e não tem código de barras nos 2 xml ou tem em 1 e não tem em outro por exemplo?
3 - Suponhamos q tenha vários produtos novos q foram comprados e estão no XML da NFe de entrada e dado ao fato de serem novos produtos a serem trabalhados no meu estabelecimento não tenho ele na base da empresa, como os colegas tratam essa questão na hora de efetivar os dados?
Sds.
Leitura de DANFE ( Xml )
Enviado: 12 Nov 2011 23:12
por marcos.gurupi
Caro eu uso assim:
Eu verifico primeiro se no XML veio o codigo de barra, havendo o cod.barra eu procuro na minha base de dados. Nao havendo o cod.barra eu faco uma pesquisa aproximada da descricao q veio no XML e peco ao usuario q defina o que eu chamo de codigo de destino (seria o codigo que eu tenho na base). Ah e havendo o codigo de barra eu aproveito e adiciono na minha base de dados.
Pelo que eu entendi a funcao descrita acima seria o suficiente para as 3 perguntas.
Marcos Roberto.
Leitura de DANFE ( Xml )
Enviado: 12 Nov 2011 23:39
por fladimir
Entendi e acredito q resolva...
Vou por em prática.
Obrigado colega.
[]´s
Leitura de DANFE ( Xml )
Enviado: 17 Nov 2011 18:28
por billy1943
Outra sugestão, muito parecida com as aventadas, é a que uso nos meus sistemas, e que é a seguinte:
- após entrar com os dados da NFE para conferência (número, série e fornecedor), informa-se se vai querer entrar pelo código de barras ou pelo código do fabricante (além deles existe ainda o código interno);
- se o fornecedor em questão ainda não enquadrou todos os produtos com o GTIn (EAN13), informamos que será pelo código desse fabricante mas o sistema irá incluindo os GTIn nos produtos que o tiverem, além de confirmar o NCM e alíquota de IPI;
- para os fornecedores que já tem a lista de produtos OK, a entrada será automatica pelo código de barras
- nas manutenções de produtos não existe a opção de incluir códigos de barras, sendo privativa da entrada através do .XML.
Leitura de DANFE ( Xml )
Enviado: 17 Nov 2011 19:18
por rochinha
Amiguinhos,
Pelo que voces proprõem no caso da escolha se sera codigo normal ou EAN, não seria mais aconselhável suas tabelas de estoque já conterem campos para este suporte? exemplo, iditem-codigo interno do item, codigo-codigo do fornecedor, EAN-para codigo de barras principal e EANTrib-para codigo de barras tributável.
Já que a nota vem com estes campos em seprados bastaria rodar a rotina de leitura e lancá-los no estoque sem intervenção do usuário.
Caso 1:
Se o codigo do fabricante(no caso peça automotiva) ou EAN já existir mas o fornecedor for diferente do que esta cadastrado no registro do item, seria de importancia ter uma segunda tabela de suporte para armazenar o codigo do item, o EAN, o codigo do fabricante, codigo do fornecedor, custo e data de entrada.
Neste caso voces estariam promovendo a listagem de cotações de forma transparente.
Caso 2:
O codigo de fabricante original por ser atrelado ao codigo de um produto fabricado por outra empresa e que entre como similar.
Neste caso também haveria a figura de uma tabela de suporte.
Então para afunilar a entrada de itens sem encher o estoque com os mesmos produtos e codigos direferente, há de se pensar? indexo as pesquisas por codigo de entrada(fornecedor) ou por EAN(quase ninguem ainda o tem).