FONTE NFE VB.NET
Citação::
Precisando estamos aÃ:D
Boa tarde Barros!
A sua sub é perfeita! Muito obrigado!
Agora eu gostaria de saber se eu posso publicar sua resposta a minha dúvida em um outro forum que também postei essa dúvida? Foi no forum MSDN que perguntei e ninguém me respondeu. Na verdade um dos moderadores indicou um link de um outro post, mas não me ajudou muito.
Bem, me desculpa postar isso aqui, mas, eu não quis criar um novo tópico pra perguntar uma coisa simples.
Eu tenho meu sistema em VB6 e dai crio o arquivo txt e importo pelo sistema emissor do governo.
O arquivo é importado, porém, ele dá uma mensagem sobre uma diferença de versões.
Eu já mudei para 1.4.4, para 144, para 1.44, mas ai da [Ô]erro na segunda linha[Ô].
Olhem a imagem:
http://img513.imageshack.us/i/imagemxu.jpg/
Obrigado.
Eu tenho meu sistema em VB6 e dai crio o arquivo txt e importo pelo sistema emissor do governo.
O arquivo é importado, porém, ele dá uma mensagem sobre uma diferença de versões.
Eu já mudei para 1.4.4, para 144, para 1.44, mas ai da [Ô]erro na segunda linha[Ô].
Olhem a imagem:
http://img513.imageshack.us/i/imagemxu.jpg/
Obrigado.
Barros , o xml de consulta de retorno é chamado assim:
[ô]CRIA UM NOVO DOCUMENTO XML
Dim dados As XmlDocument = New XmlDocument
[ô]ASSOCIA O NOVO XML COM A VARIAVEL DE RETORNO DA SEFAZ
dados.LoadXml([Ô]<?xml version=[Ô][Ô]1.0[Ô][Ô] encoding=[Ô][Ô]utf-8[Ô][Ô]?><consReciNFe xmlns=[Ô][Ô]http://www.portalfiscal.inf.br/nfe[Ô][Ô] versao=[Ô][Ô]2.00[Ô][Ô]><tpAmb>2</tpAmb><nRec>[Ô] & NAutorizacao & [Ô]</nRec></consReciNFe>[Ô])
[ô]ENVIA CONSULTA PARA SEFAZ E OBTEM RETORNO EM FORMATO STRING
strRetorno = wsMsg.nfeRetRecepcao2(dados)
O interessante que se importar o xml da nota no programa da receita eu consigo enviar ele sem retornar esse erro:
(Rejeição: Uso de prefixo de namespace não permitido)
[ô]CRIA UM NOVO DOCUMENTO XML
Dim dados As XmlDocument = New XmlDocument
[ô]ASSOCIA O NOVO XML COM A VARIAVEL DE RETORNO DA SEFAZ
dados.LoadXml([Ô]<?xml version=[Ô][Ô]1.0[Ô][Ô] encoding=[Ô][Ô]utf-8[Ô][Ô]?><consReciNFe xmlns=[Ô][Ô]http://www.portalfiscal.inf.br/nfe[Ô][Ô] versao=[Ô][Ô]2.00[Ô][Ô]><tpAmb>2</tpAmb><nRec>[Ô] & NAutorizacao & [Ô]</nRec></consReciNFe>[Ô])
[ô]ENVIA CONSULTA PARA SEFAZ E OBTEM RETORNO EM FORMATO STRING
strRetorno = wsMsg.nfeRetRecepcao2(dados)
O interessante que se importar o xml da nota no programa da receita eu consigo enviar ele sem retornar esse erro:
(Rejeição: Uso de prefixo de namespace não permitido)
Pessoal, tenho problemas ao consultar a NFe através do código fonte postado neste tópico.
Vejam o trecho do código abaixo:
[ô]PERCORRE TODOS OS NOS DO XML E PROCURA A TAG DE RETORNO infProt
For Each outerNode As XmlNode In strRetorno
[ô]PARA CADA NO VERIFICA SE O MESMO POSSUI FILHOS E VARRE OS MESMOS
If (outerNode.Name = [Ô]tpAmb[Ô]) Then
Retornos.tpAmb = outerNode.InnerText
End If
If (outerNode.Name = [Ô]verAplic[Ô]) Then
Retornos.verAplic = outerNode.InnerText
End If
If (outerNode.Name = [Ô]nRec[Ô]) Then
Retornos.nRec = outerNode.InnerText
End If
If (outerNode.Name = [Ô]cStat[Ô]) Then
Retornos.cStat = outerNode.InnerText
End If
If (outerNode.Name = [Ô]xMotivo[Ô]) Then
Retornos.xMotivo = outerNode.InnerText
End If
If (outerNode.Name = [Ô]cUF[Ô]) Then
Retornos.cUF = outerNode.InnerText
End If
For Each InnerNode As XmlNode In outerNode.ChildNodes
VarRecibo.XmlRecibo = InnerNode.OuterXml
[ô]SE O NOME DO NO FOR infProt ENTRA NO MESMO
If InnerNode.Name = [Ô]infProt[Ô] Then
[ô]PEGA A VARIAVEL ID QUE é UM ATRIBUTO E NAO UM ITEM
VarRecibo.Id = [Ô][Ô] [ô]InnerNode.Attributes.ItemOf([Ô]Id[Ô]).InnerText
[ô]PERCORRE CAMPOS DO RETORNO PARA CAPTURAR AS INFORMAÇÕES
For Each InnerNode2 As XmlNode In InnerNode.ChildNodes
If (InnerNode2.Name = [Ô]tpAmb[Ô]) Then
VarRecibo.tpAmb = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]verAplic[Ô]) Then
VarRecibo.verAplic = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]chNFe[Ô]) Then
VarRecibo.chNFe = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]dhRecbto[Ô]) Then
VarRecibo.dhRecbto = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]digVal[Ô]) Then
VarRecibo.digVal = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]cStat[Ô]) Then
VarRecibo.cStat = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]xMotivo[Ô]) Then
VarRecibo.xMotivo = InnerNode2.InnerText
End If
Next
[ô]ADICIONA A NOTA NA LISTA DE RETORNO
Retornos.L_Retornos.Add(VarRecibo)
End If
Next
Next
Acontece que ele nunca entra no :
[ô]SE O NOME DO NO FOR infProt ENTRA NO MESMO
If InnerNode.Name = [Ô]infProt[Ô] Then
o InnerNode.Name é sempre [Ô]#text[Ô]
por conta disto ele não entra no IF
Alguém poderia me ajudar ? O código acima é parte da Classe C_WebService, Function ConsultaRecLote2
Grato.
Vejam o trecho do código abaixo:
[ô]PERCORRE TODOS OS NOS DO XML E PROCURA A TAG DE RETORNO infProt
For Each outerNode As XmlNode In strRetorno
[ô]PARA CADA NO VERIFICA SE O MESMO POSSUI FILHOS E VARRE OS MESMOS
If (outerNode.Name = [Ô]tpAmb[Ô]) Then
Retornos.tpAmb = outerNode.InnerText
End If
If (outerNode.Name = [Ô]verAplic[Ô]) Then
Retornos.verAplic = outerNode.InnerText
End If
If (outerNode.Name = [Ô]nRec[Ô]) Then
Retornos.nRec = outerNode.InnerText
End If
If (outerNode.Name = [Ô]cStat[Ô]) Then
Retornos.cStat = outerNode.InnerText
End If
If (outerNode.Name = [Ô]xMotivo[Ô]) Then
Retornos.xMotivo = outerNode.InnerText
End If
If (outerNode.Name = [Ô]cUF[Ô]) Then
Retornos.cUF = outerNode.InnerText
End If
For Each InnerNode As XmlNode In outerNode.ChildNodes
VarRecibo.XmlRecibo = InnerNode.OuterXml
[ô]SE O NOME DO NO FOR infProt ENTRA NO MESMO
If InnerNode.Name = [Ô]infProt[Ô] Then
[ô]PEGA A VARIAVEL ID QUE é UM ATRIBUTO E NAO UM ITEM
VarRecibo.Id = [Ô][Ô] [ô]InnerNode.Attributes.ItemOf([Ô]Id[Ô]).InnerText
[ô]PERCORRE CAMPOS DO RETORNO PARA CAPTURAR AS INFORMAÇÕES
For Each InnerNode2 As XmlNode In InnerNode.ChildNodes
If (InnerNode2.Name = [Ô]tpAmb[Ô]) Then
VarRecibo.tpAmb = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]verAplic[Ô]) Then
VarRecibo.verAplic = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]chNFe[Ô]) Then
VarRecibo.chNFe = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]dhRecbto[Ô]) Then
VarRecibo.dhRecbto = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]digVal[Ô]) Then
VarRecibo.digVal = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]cStat[Ô]) Then
VarRecibo.cStat = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]xMotivo[Ô]) Then
VarRecibo.xMotivo = InnerNode2.InnerText
End If
Next
[ô]ADICIONA A NOTA NA LISTA DE RETORNO
Retornos.L_Retornos.Add(VarRecibo)
End If
Next
Next
Acontece que ele nunca entra no :
[ô]SE O NOME DO NO FOR infProt ENTRA NO MESMO
If InnerNode.Name = [Ô]infProt[Ô] Then
o InnerNode.Name é sempre [Ô]#text[Ô]
por conta disto ele não entra no IF
Alguém poderia me ajudar ? O código acima é parte da Classe C_WebService, Function ConsultaRecLote2
Grato.
Barros , encontrei o erro ,
Estava chamando a rotina de criação de Lote em lugar errado.
Agradeço muito pela atenção e parabenizo a todos vcs pela
iniciativa e qualidade no desenvolvimento do projeto.
Abraço a todos do Projeto.
Estava chamando a rotina de criação de Lote em lugar errado.
Agradeço muito pela atenção e parabenizo a todos vcs pela
iniciativa e qualidade no desenvolvimento do projeto.
Abraço a todos do Projeto.
Ola Pessoal tudo bem? espero que sim
Bom votei de ferias Hoje
e preciso terminar esse meu projeto de NFE
na verdade já esta funcionando, o pessoal aqui já esta usando
eu só preciso fazer o sistema Montar o XML com o retorno do Sefaz
mais já fiz de tudo e continua dando erro
Estou usando esta chamada para montar o XML
aqui sempre da o erro
tirando isso o restante esta funcionando
alguma dica pessoal?
Bom votei de ferias Hoje
e preciso terminar esse meu projeto de NFE
na verdade já esta funcionando, o pessoal aqui já esta usando
eu só preciso fazer o sistema Montar o XML com o retorno do Sefaz
mais já fiz de tudo e continua dando erro
Estou usando esta chamada para montar o XML
GerarNotaProcessada(SepararNota(XmlNota.OuterXml), RetC.XmlRecibo, Pnota.Replace([Ô].Xml[Ô], [Ô][Ô]), Date.Today)
aqui sempre da o erro
Public Function GerarNotaProcessada(ByVal vStringNfe As String, ByVal VStringRecibo As String, ByVal NUMERONOTA As String, ByVal EmissaoNota As String) As String
Dim cVersaoDados As String = [Ô]2.00[Ô]
[ô]Montar a parte do XML referente ao Lote e acrescentar a Nota Fiscal
Dim vStringLoteNfe As String = String.Empty
vStringLoteNfe += [Ô]<?xml version=[Ô][Ô]1.0[Ô][Ô] encoding=[Ô][Ô]utf-8[Ô][Ô]?>[Ô]
vStringLoteNfe += [Ô]<nfeProc versao=[Ô][Ô][Ô] & cVersaoDados & [Ô][Ô][Ô] xmlns=[Ô][Ô]http://www.portalfiscal.inf.br/nfe[Ô][Ô]>[Ô]
vStringLoteNfe += vStringNfe
vStringLoteNfe += [Ô]<protNFe versao=[Ô][Ô][Ô] & cVersaoDados & [Ô][Ô][Ô] xmlns=[Ô][Ô]http://www.portalfiscal.inf.br/nfe[Ô][Ô]>[Ô]
vStringLoteNfe += VStringRecibo
vStringLoteNfe += [Ô]</protNFe>[Ô]
vStringLoteNfe += [Ô]</nfeProc>[Ô]
Dim PastaNota As String = [Ô][Ô]
PastaNota = My.Application.Info.DirectoryPath & [Ô]\NFE\[Ô] & Date.Parse(EmissaoNota).ToString([Ô]dd-MM-yyyy[Ô]) & [Ô]\[Ô]
If Directory.Exists(PastaNota) = False Then
Directory.CreateDirectory(PastaNota)
End If
Dim NDoc As New XmlDocument
[ô]MsgBox(vStringNfe)
NDoc.LoadXml(vStringLoteNfe) [ô]Aqui sempre gera o erro ([Ô]A marca de inÃcio [ô]nfeProc[ô] na linha 1 não corresponde à marca de fim de [ô]enviNFe[ô]. Linha 1, posição 5535.[Ô])
Using xmltw As New XmlTextWriter(PastaNota & NUMERONOTA & [Ô] - NF-e.xml[Ô], New UTF8Encoding(False))
NDoc.WriteTo(xmltw)
xmltw.Close()
End Using
Return PastaNota & NUMERONOTA & [Ô] - NF-e.xml[Ô]
End Function
tirando isso o restante esta funcionando
alguma dica pessoal?
Faça seu login para responder