FONTE NFE VB.NET

PCALSAVARA 16/10/2012 07:49:53
#412112
Alguém poderia me passar um exemplo de utilização do retorno de envio de NFe? Estou usando o seguinte código (achei por aqui mesmo):
Public Function ConsultaRecLote2(ByVal NRecibo As String) As RetRetorno
Dim strRetorno As XmlElement
Dim CERT As X509Certificate2
[ô]BUSCA CERTIFICADO SE DEIXAR EM BRANCO ABRE JANELA DE SELEÇÃO DO WINDOWS
CERT = SelecionarCertificado([Ô][Ô])
Try
Dim wsMsg As RetRecepcao2.NfeRetRecepcao2
Dim cab As New RetRecepcao2.nfeCabecMsg

[ô]UF E VERSÃO DO CABEÇALHO
cab.cUF = S_Url.CodigoUF
cab.versaoDados = VersaoAtualNfe

[ô]CRIA UMA INSTANCIA DA CONEXÃO COM O WEBSERVICE
wsMsg = New RetRecepcao2.NfeRetRecepcao2(S_Url.UrlNfeRetRecepcao)

[ô]ASSOCIA CABEÇALHO NFE
wsMsg.nfeCabecMsgValue = cab

[ô]DEFINE TEMPO MAXIMO DE ESPERA POR RETORNO
wsMsg.Timeout = 100000

[ô]ASSOCIA CERTIFICADO A CONEXAO WEBSERVICE
wsMsg.ClientCertificates.Add(CERT)

[ô]CRIA UM NOVO DOCUMENTO XML
Dim dados As New XmlDocument
[ô]ASSOCIA O NOVO XML COM A VARIAVEL DE RETORNO DA SEFAZ
dados.LoadXml(String.Format([Ô]<consReciNFe versao=[ô]2.00[ô] xmlns=[ô]http://www.portalfiscal.inf.br/nfe[ô]><tpAmb>2</tpAmb><nRec>{0}</nRec></consReciNFe>[Ô], NRecibo))

[ô]ENVIA CONSULTA PARA SEFAZ E OBTEM RETORNO EM FORMATO STRING

strRetorno = wsMsg.nfeRetRecepcao2(dados)


[ô]DESMEMBRA RETORNO XML
[ô]-----------------------------------------------------------------------------------
[ô]VARIAVER QUE VAI RECEBER O RETORNO
Dim Retornos As New RetRetorno
[ô]CRIA LISTA PARA RECEBER RETORNOS
Retornos.L_Retornos = New List(Of RetRecibo)
[ô]VARIAVEL QUE VAI RECEBER A LISTA ANTES DE SER COLOCADA NO RETORNO
Dim VarRecibo As New RetRecibo

[ô]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 = [Ô]nProt[Ô]) Then
VarRecibo.nProt = 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

Return Retornos

Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Information, [Ô][Ô])
Return Nothing
End Try
End Function
FOXMAN 16/10/2012 10:05:21
#412115
Altere as seguinte linhas e tente novamente

cab.versaoDados = [Ô]2.01[Ô]


dados.LoadXml(String.Format([Ô]<consReciNFe versao=[ô]2.01[ô] xmlns=[ô]http://www.portalfiscal.inf.br/nfe[ô]><tpAmb>2</tpAmb><nRec>{0}</nRec></consReciNFe>[Ô], NRecibo))
PCALSAVARA 16/10/2012 10:13:56
#412118
Citação:

:
Altere as seguinte linhas e tente novamente

cab.versaoDados = [Ô]2.01[Ô]


dados.LoadXml(String.Format([Ô]<consReciNFe versao=[ô]2.01[ô] xmlns=[ô]http://www.portalfiscal.inf.br/nfe[ô]><tpAmb>2</tpAmb><nRec>{0}</nRec></consReciNFe>[Ô], NRecibo))


FOXMAN, obrigado pela resposta, mas como eu já havia dito antes, esse serviço ainda não está na versão 2.01. Segue o xml de retorno:
<retConsReciNFe versao=[Ô]2.00[Ô] xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>
<tpAmb>2</tpAmb>
<verAplic>13_0_34</verAplic>
<nRec>310000022990093</nRec>
<cStat>238</cStat>
<xMotivo>Rejeicao: Cabecalho - Versao do arquivo XML superior a Versao vigente</xMotivo>
<cUF>31</cUF>
</retConsReciNFe>
FOXMAN 16/10/2012 11:17:33
#412129
Citação:

:
:
Altere as seguinte linhas e tente novamente

cab.versaoDados = [Ô]2.01[Ô]


dados.LoadXml(String.Format([Ô]<consReciNFe versao=[ô]2.01[ô] xmlns=[ô]http://www.portalfiscal.inf.br/nfe[ô]><tpAmb>2</tpAmb><nRec>{0}</nRec></consReciNFe>[Ô], NRecibo))

FOXMAN, obrigado pela resposta, mas como eu já havia dito antes, esse serviço ainda não está na versão 2.01. Segue o xml de retorno:
<retConsReciNFe versao=[Ô]2.00[Ô] xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>
<tpAmb>2</tpAmb>
<verAplic>13_0_34</verAplic>
<nRec>310000022990093</nRec>
<cStat>238</cStat>
<xMotivo>Rejeicao: Cabecalho - Versao do arquivo XML superior a Versao vigente</xMotivo>
<cUF>31</cUF>
</retConsReciNFe>



Vc precisa trocar os schemas, pois aqui utilizo assim e funciona perfeitamente.
Faça download dos novos schemas PL-006n.
PCALSAVARA 16/10/2012 12:33:21
#412134
Eu estou utilizando o ambiente de homologação. Essa versão dos Schemas é para produção.
FOXMAN 16/10/2012 13:04:12
#412137
Citação:

:
Eu estou utilizando o ambiente de homologação. Essa versão dos Schemas é para produção.


Não amigo, não pode existir dois schemas sendo um para homologação e outro para produção.
O schema serve para homologação e produção. Você precisa ter o mesmo schema em ambos ambientes.

Mas vale lembrar que a PL_006i, já constava no manual indicando a versão 2.01 para o serviço de consulta a situação da NFe.

O que diferencia é que certos procedimentos estarão disponíveis em ambiente de produção a partir de x data.
Neste caso (a nova consulta NFe) estará definitivamente implementada apartir de 01/11/2012.No entanto já é possível utilizá-la desde que atenda os novos schemas.

http://hom.nfe.fazenda.gov.br/portal/listaConteudo.aspx?tipoConteudo=tW+YMyk/50s=

Manual atualizado(Verifique a página 61 e 62)
http://hom.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=mSzqqsqOrOE=
PCALSAVARA 16/10/2012 13:31:06
#412144
Você está confundindo o serviço que estou buscando. Estou usando a Consulta do Recibo e não a Consulta de NFE.
FOXMAN 16/10/2012 16:04:43
#412155
Citação:

:
Você está confundindo o serviço que estou buscando. Estou usando a Consulta do Recibo e não a Consulta de NFE.


Humm, realmente me equivoquei...

Não vi então o motivo de sua dúvida (está retornando algum erro ????) , no próprio exemplo que tu pegou aqui(na pagina 134) tem o exemplo de utilização da função.
Está no formulário TesteDanfe, no controle Button4.

De qualquer forma segue a utilização da função.

  Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim WebS As New C_WebService(UrlAcesso)
Dim StrRetorno As RetEnvio

[ô]ENVIA LOTE DE NOTAS VERSÃO 2.00
StrRetorno = WebS.EnviaLote2(My.Application.Info.DirectoryPath & [Ô]\NFE\[Ô] & CAMINHONFEGERADA.Text)
MsgBox(StrRetorno.xMotivo)

Dim RetonoConsulta As New RetRetorno
RetonoConsulta = WebS.ConsultaRecLote2(StrRetorno.nRec)

For Each RetC In RetonoConsulta.L_Retornos

If RetC.xMotivo = [Ô]Autorizado o uso da NF-e[Ô] Then
Dim XmlNota As XmlDocument = New XmlDocument
XmlNota.Load(My.Application.Info.DirectoryPath & [Ô]\NFE\[Ô] & CAMINHONFEGERADA.Text)
GerarNotaProcessada(SepararNota(XmlNota.OuterXml), RetC.XmlRecibo, CAMINHONFEGERADA.Text.Replace([Ô].Xml[Ô], [Ô][Ô]), Date.Today)
End If

MsgBox(RetC.Id)
MsgBox(RetC.chNFe)
MsgBox(RetC.cStat)
MsgBox(RetC.tpAmb)
MsgBox(RetC.xMotivo)
MsgBox(RetC.digVal)
PROTOCOLO.Text = RetC.nProt
Next
End Sub




FPRADO 17/10/2012 12:38:35
#412197
Ola,

Por favor, alguém teria uma explicação pra esse problema?
Quero consultar uma NFe e enviei o seguinte xml de consulta.


<?xml version=[Ô]1.0[Ô] encoding=[Ô]UTF-8[Ô]?>
<consSitNFe xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô] versao=[Ô]2.01[Ô]>
<tpAmb>2</tpAmb><xServ>CONSULTAR</xServ>
<chNFe>35121004594797000153550010000015571705547514</chNFe></consSitNFe>


e para minha surpresa e alegria recebo o seguinte xml de rejeição:

<retConsSitNFe versao=[Ô]2.01[Ô] xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>
<tpAmb>2</tpAmb>
<verAplic>SP_NFE_PL_006j</verAplic>
<cStat>239</cStat>
<xMotivo>Rejeição: Cabeçalho - Versão do arquivo XML não suportada</xMotivo>
<cUF>35</cUF>
<chNFe>35121004594797000153550010000015571705547514</chNFe>
</retConsSitNFe>

O que eu fiz de errado??????
NILSONTRES 17/10/2012 14:14:02
#412199
Deu certo
é preciso mudar a versão do CABEÇALHO:
Dim strRetorno As XmlElement
Dim CERT As X509Certificate2
[ô]BUSCA CERTIFICADO SE DEIXAR EM BRANCO ABRE JANELA DE SELEÇÃO DO WINDOWS
CERT = SelecionarCertificado([Ô][Ô])
Try
Dim wsMsg As Consulta2.NfeConsulta2
Dim cab As New Consulta2.nfeCabecMsg

[ô]UF E VERSÃO DO CABEÇALHO
cab.cUF = [Ô]35[Ô]
cab.versaoDados = [Ô]2.01[Ô]

[ô]CRIA UMA INSTANCIA DA CONEXÃO COM O WEBSERVICE
wsMsg = New Consulta2.NfeConsulta2([Ô]https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeConsulta2.asmx[Ô])

[ô]ASSOCIA CABEÇALHO NFE
wsMsg.nfeCabecMsgValue = cab

[ô]DEFINE TEMPO MAXIMO DE ESPERA POR RETORNO
wsMsg.Timeout = 100000

[ô]ASSOCIA CERTIFICADO A CONEXAO WEBSERVICE
wsMsg.ClientCertificates.Add(CERT)

[ô]DEFINE PROTOCOLO USADO NA CONEXÃO
wsMsg.SoapVersion = SoapProtocolVersion.Soap12

[ô]CRIA UM NOVO DOCUMENTO XML
Dim dados As XmlDocument = New XmlDocument
dados.LoadXml([Ô]<?xml version=[Ô][Ô]1.0[Ô][Ô] encoding=[Ô][Ô]UTF-8[Ô][Ô] ?><consSitNFe xmlns=[Ô][Ô]http://www.portalfiscal.inf.br/nfe[Ô][Ô] versao=[Ô][Ô]2.01[Ô][Ô]><tpAmb>2</tpAmb><xServ>CONSULTAR</xServ><chNFe>[Ô] & IDNFe & [Ô]</chNFe></consSitNFe>[Ô])
[ô] dados.LoadXml(My.Application.Info.DirectoryPath & [Ô]\consulta2.xml[Ô])
[ô]ENVIA CONSULTA PARA SEFAZ E OBTEM RETORNO EM FORMATO STRING
strRetorno = wsMsg.nfeConsultaNF2(dados)
Página 142 de 228 [2276 registro(s)]
Faça seu login para responder