FONTE NFE VB.NET
Citação::
MITSUEDA
sua classe de Envio está errada.
Montei pra você a classe de envio/retorno
TINTINO
sua classe também está errada, você tá usando o processo envio/retorno da versão 2.00
Elucimar:
Bom dia !!
Revisando na pag 183 você respondeu sobre a classe de retorno, baixei e verifiquei que a minha esta igual
Porem, nem estou conseguindo chegar no Retorno, estou com problemas no envio, paro em
[ô]RETORNO DA SEFAZ
strRetorno = wsMsg.nfeAutorizacaoLote(xmldoc)
[ô]a URL peguei da receita para Homologação SP
Agradeceira sua ajuda
Citação::
:
MITSUEDA
sua classe de Envio está errada.
Montei pra você a classe de envio/retorno
TINTINO
sua classe também está errada, você tá usando o processo envio/retorno da versão 2.00
Elucimar:
Bom dia !!
Revisando na pag 183 você respondeu sobre a classe de retorno, baixei e verifiquei que a minha esta igual
Porem, nem estou conseguindo chegar no Retorno, estou com problemas no envio, paro em
[ô]RETORNO DA SEFAZ
strRetorno = wsMsg.nfeAutorizacaoLote(xmldoc)
[ô]a URL peguei da receita para Homologação SP
Agradeceira sua ajuda
FASULO sua função esta conforme abaixo ?
Atente ao detalhe , você não pode fazer testes em uf diferente do seu certificado de testes, e o cnpj que você esta usando tem que estar autorizado na SEFAZ da UF em questão para uso em produção\homologação da NFE, senão não funciona.
Public Function EnviaLote310(ByVal EndArquivoXml As String) As RetEnvio
Dim strRetorno As XmlElement
Dim xmldoc = New XmlDocument()
Try
xmldoc.Load(EndArquivoXml)
Catch ex As Exception
MsgBox([Ô]Arquivo Não foi gerado[Ô], MsgBoxStyle.Critical, [Ô]Envio NFE[Ô])
Exit Function
End Try
xmldoc.Load(EndArquivoXml) [ô]Carrega o arquivo XML
Dim CERT As X509Certificate2
CERT = SelecionarCertificado(vPar_Certificado_NrSerial)
Try
Dim wsMsg As New AutorizacaoNFe.NfeAutorizacao(S_Url.UrlNFeAutorizacao310)
Dim cab As New AutorizacaoNFe.nfeCabecMsg
[ô]UF E VERSÃO DO CABEÇALHO
cab.cUF = S_Url.CodigoUF
cab.versaoDados = VersaoAtualNfe
Dim Notas As String
[ô]CABEÇALHO USADA PARA ENVIO DE LOTE
[ô]wsMsg = New NFeAutorizacao.NfeAutorizacao(S_Url.UrlNFeAutorizacao310)
wsMsg.nfeCabecMsgValue = cab
wsMsg.Timeout = 100000
wsMsg.ClientCertificates.Add(CERT)
wsMsg.SoapVersion = SoapProtocolVersion.Soap12
Notas = xmldoc.OuterXml
[ô]RETORNO DA SEFAZ
strRetorno = wsMsg.nfeAutorizacaoLote(xmldoc)
[ô]DESMEMBRA RETORNO XML
Dim StrRetNota As RetEnvio = Nothing
Dim XmlText As XmlDocument = New XmlDocument
For Each outerNode As XmlNode In strRetorno
For Each InnerNode As XmlNode In outerNode.ChildNodes
If (InnerNode.Name = [Ô]verAplic[Ô] Or outerNode.Name = [Ô]verAplic[Ô]) Then
StrRetNota.verAplic = InnerNode.InnerText
End If
If (InnerNode.Name = [Ô]cStat[Ô] Or outerNode.Name = [Ô]cStat[Ô]) Then
StrRetNota.cStat = InnerNode.InnerText
End If
If (InnerNode.Name = [Ô]xMotivo[Ô] Or outerNode.Name = [Ô]xMotivo[Ô]) Then
StrRetNota.xMotivo = InnerNode.InnerText
End If
If (InnerNode.Name = [Ô]cUF[Ô] Or outerNode.Name = [Ô]cUF[Ô]) Then
StrRetNota.cUF = InnerNode.InnerText
End If
If (InnerNode.Name = [Ô]nRec[Ô] Or outerNode.Name = [Ô]nRec[Ô]) Then
StrRetNota.nRec = InnerNode.InnerText
End If
If (InnerNode.Name = [Ô]dhRecbto[Ô] Or outerNode.Name = [Ô]dhRecbto[Ô]) Then
StrRetNota.dhRecbto = InnerNode.InnerText
End If
If (InnerNode.Name = [Ô]tMed[Ô] Or outerNode.Name = [Ô]tMed[Ô]) Then
StrRetNota.tMed = InnerNode.InnerText
End If
Next
Next
Return StrRetNota
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Information, [Ô][Ô])
Return Nothing
End Try
End Function
Citação::
Ola galera como havia prometido estarei disponibilizando neste tópico a parcial do fonte que estou montando para NFe em VB.net, no entanto gostaria de pedir a um dos moderadores para trocar o tópico em destaque por esse para que possamos dar continuidade no projeto de uma ferramenta com código fonte aberto.
MODERAÇÃO
Estou adicionando o Link do Projeto(atualizado) : http://www.vbmania.com.br/pages/download.php?varKey=5d5e774637ca6dee4f8b2bedfe15447c&varTipo=1
MODERAÇÃO
PROJETO ATUALIZADO VERSÃO 3.10
Obrigado Daniel, foi de GRANDE ajuda mesmo !!!!
Att
Georgenes
Bom dia !!
- Estamos emitindo em SP NFe importando arquivo txt no aplicativo gratuito da receita (produção/homologação), o CNPJ esta cadastrado.
- A função que envio esta diferente , utilizei a que enviou e o programa para na mesma linha
[ô]RETORNO DA SEFAZ
strRetorno = wsMsg.nfeAutorizacaoLote(xmldoc)
- A mensagem de erro é
[Ô]Exception thrown: [ô]System.Net.WebException[ô] in System.Web.Services.dll
Additional information: The underlying connection was closed: An unexpected error occurred on a send.[Ô]
- A conexão parece funcionar com o programa da receita, porem não com o que estou tentando.
O Namespace AutorizacaoNFe tem URLS que não sei se estão corretas,
Agradeço seus comentários
Citação::
Georgenes
Bom dia !!
- Estamos emitindo em SP NFe importando arquivo txt no aplicativo gratuito da receita (produção/homologação), o CNPJ esta cadastrado.
- A função que envio esta diferente , utilizei a que enviou e o programa para na mesma linha
[ô]RETORNO DA SEFAZ
strRetorno = wsMsg.nfeAutorizacaoLote(xmldoc)
- A mensagem de erro é
[Ô]Exception thrown: [ô]System.Net.WebException[ô] in System.Web.Services.dll
Additional information: The underlying connection was closed: An unexpected error occurred on a send.[Ô]
- A conexão parece funcionar com o programa da receita, porem não com o que estou tentando.
O Namespace AutorizacaoNFe tem URLS que não sei se estão corretas,
Agradeço seus comentários
Bom dia a todos,
Estou tentando tambem com a função enviada agora pelo Georgenes, mas pra mim está dando o seguinte erro:
Private Function vPar_Certificado_NrSerial() As String
Throw New NotImplementedException
End Function
The method or operation is not implemented.
Citação::
Bom dia a todos,
Estou tentando tambem com a função enviada agora pelo Georgenes, mas pra mim está dando o seguinte erro:
Private Function vPar_Certificado_NrSerial() As String
Throw New NotImplementedException
End Function
The method or operation is not implemented.
Prezado RICARDOQUAGLIO, basta passar [Ô][Ô] no lugar do vPar_Certificado_NrSerial, isso foi criado pelo GEORGENES para evitar ficar selecionando o certificado digital a todo momento, mas a meu ver o código é o mesmo da versão mais atualizada postada a primeira página, a diferença é que ele carrega o xml duas vezes no inicio, até entendo que a primeira vez dentro de try é para tratar erro no carregamento, mas não entendi uma utilidade nessa segunda vez que carrega o xml.
Quanto ao erro que estava passando, era o mesmo do FASULO, ele sempre retorna nulo da requisição soap.
O projeto que tenho, é a postada na primeira página pela moderação. Existe uma mais recente?
Nele o endereço SOAP estava incorreto, para nf-e 3.10, faltava um 3 no endereço lembrando é sensÃvel a letras maiúsculas e minúsculas.
Na classe NFeAutorizacao.vb
Onde está:
<System.Web.Services.Protocols.SoapHeaderAttribute([Ô]nfeCabecMsgValue[Ô]), _
System.Web.Services.Protocols.SoapDocumentMethodAttribute([Ô]http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao/nfeAutorizacaoLote[Ô], Use:=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Bare)> _
Public Function nfeAutorizacaoLote(<System.Xml.Serialization.XmlElementAttribute([Namespace]:=[Ô]http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao[Ô])> ByVal nfeDadosMsg As System.Xml.XmlNode) As <System.Xml.Serialization.XmlElementAttribute([Namespace]:=[Ô]http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao[Ô])> System.Xml.XmlNode
O correto é estar assim (repare nas três urls que foi inserido o numero 3, ficando NfeAutorizacao3):
<System.Web.Services.Protocols.SoapHeaderAttribute([Ô]nfeCabecMsgValue[Ô]),
System.Web.Services.Protocols.SoapDocumentMethodAttribute([Ô]http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao3/nfeAutorizacaoLote[Ô], Use:=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Bare)>
Public Function nfeAutorizacaoLote(<System.Xml.Serialization.XmlElementAttribute([Namespace]:=[Ô]http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao3[Ô])> ByVal nfeDadosMsg As System.Xml.XmlNode) As <System.Xml.Serialization.XmlElementAttribute([Namespace]:=[Ô]http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao3[Ô])> System.Xml.XmlNode
Esse erro é na consulta de envio de lote e foi corrigido, pois a nota chega a ser transmitida e aceita com sucesso, se consultar no ambiente de homologação está lá a nota.
Agora estou com erro no próximo passo que é a consulta do recibo dentro da mesma rotina de envio de lote, suspeito que seja o mesmo caso do endereço de retorno errado no SOAP, mas ainda estou pesquisando os endereços corretos, se eu tiver novidades eu posto aqui.
E também parabenizo ao autor e demais membros ativos desse fórum pelo ótimo trabalho e suporte neste projeto, estou voltando agora ao fórum depois de muito tempo fora e quero contribuir com o que puder.
Boa tarde !!
Modifiquei como mencionado mas paro no mesmo lugar mencionado, não esta transmitindo.
Obs. a maquina sendo utilizada é a que transmite pelo aplicativo da Receita sem problemas.
Aguardo seus comentários
Obrigado !!
Citação::
MJAC
Boa tarde !!
Modifiquei como mencionado mas paro no mesmo lugar mencionado, não esta transmitindo.
Obs. a maquina sendo utilizada é a que transmite pelo aplicativo da Receita sem problemas.
Aguardo seus comentários
Obrigado !!
Boa tarde,
Prezados descobri que existe uma discrepância entre os SEFAZ de cada estado:
Sefaz PR - Homologação - XML 3.10 - Inventaram um novo soapAction
SEFAZ PR - SOAP ACTIONS - XML 3.10 de todos os outros serviços:
http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao3/nfeAutorizacaoLote
http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetAutorizacao3/NfeRetAutorizacaoLote
http://www.portalfiscal.inf.br/nfe/wsdl/NfeInutilizacao3/nfeInutilizacaoNF
http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta3/nfeConsultaNF
http://www.portalfiscal.inf.br/nfe/wsdl/RecepcaoEvento/nfeRecepcaoEvento
http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico3/nfeStatusServicoNF
Devido a isso sugiro que o SOAP seja configurado por estado, deixando o padrão o que está hoje no sistema de vocês que é o mais usado, vi que o da BA e o PR são os que apresentam mais diferença.
Fiz umas pequenas mudanças no sistema resolvendo os alertas e modificando as duas funções obsoletas do sistema, mas baseado no fato de cada estado poder ter seu soapaction precisamos pensar em uma solução para isso.
FASULO como seu estado é o SP, primeiro consulte no ambiente de homologação se a nota está chegando no ambiente de teste:
https://homologacao.nfe.fazenda.sp.gov.br/ConsultaNFe/consulta/publica/ConsultarNFe.aspx
Tente verificar as urls dos webservices de homologação e de produção.
https://www.fazenda.sp.gov.br/nfe/url_webservices/url_webservices.asp
E tente descobrir quais urls esse estado usa para o SOAP. [Ô]portalfiscal.inf.br[Ô]
- Consultei a Nota no link e não esta chegando
- Já tinha colocado nas URLs as de homologação e produção de SP.
- Vou tentar descobrir as url soap
Obrigado
Citação::
:
Bom dia a todos,
Estou tentando tambem com a função enviada agora pelo Georgenes, mas pra mim está dando o seguinte erro:
Private Function vPar_Certificado_NrSerial() As String
Throw New NotImplementedException
End Function
The method or operation is not implemented.
Prezado RICARDOQUAGLIO, basta passar [Ô][Ô] no lugar do vPar_Certificado_NrSerial, isso foi criado pelo GEORGENES para evitar ficar selecionando o certificado digital a todo momento, mas a meu ver o código é o mesmo da versão mais atualizada postada a primeira página, a diferença é que ele carrega o xml duas vezes no inicio, até entendo que a primeira vez dentro de try é para tratar erro no carregamento, mas não entendi uma utilidade nessa segunda vez que carrega o xml.
Quanto ao erro que estava passando, era o mesmo do FASULO, ele sempre retorna nulo da requisição soap.
O projeto que tenho, é a postada na primeira página pela moderação. Existe uma mais recente?
Nele o endereço SOAP estava incorreto, para nf-e 3.10, faltava um 3 no endereço lembrando é sensÃvel a letras maiúsculas e minúsculas.
Na classe NFeAutorizacao.vb
Onde está:<System.Web.Services.Protocols.SoapHeaderAttribute([Ô]nfeCabecMsgValue[Ô]), _
System.Web.Services.Protocols.SoapDocumentMethodAttribute([Ô]http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao/nfeAutorizacaoLote[Ô], Use:=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Bare)> _
Public Function nfeAutorizacaoLote(<System.Xml.Serialization.XmlElementAttribute([Namespace]:=[Ô]http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao[Ô])> ByVal nfeDadosMsg As System.Xml.XmlNode) As <System.Xml.Serialization.XmlElementAttribute([Namespace]:=[Ô]http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao[Ô])> System.Xml.XmlNode
O correto é estar assim (repare nas três urls que foi inserido o numero 3, ficando NfeAutorizacao3):<System.Web.Services.Protocols.SoapHeaderAttribute([Ô]nfeCabecMsgValue[Ô]),
System.Web.Services.Protocols.SoapDocumentMethodAttribute([Ô]http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao3/nfeAutorizacaoLote[Ô], Use:=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Bare)>
Public Function nfeAutorizacaoLote(<System.Xml.Serialization.XmlElementAttribute([Namespace]:=[Ô]http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao3[Ô])> ByVal nfeDadosMsg As System.Xml.XmlNode) As <System.Xml.Serialization.XmlElementAttribute([Namespace]:=[Ô]http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao3[Ô])> System.Xml.XmlNode
Esse erro é na consulta de envio de lote e foi corrigido, pois a nota chega a ser transmitida e aceita com sucesso, se consultar no ambiente de homologação está lá a nota.
Agora estou com erro no próximo passo que é a consulta do recibo dentro da mesma rotina de envio de lote, suspeito que seja o mesmo caso do endereço de retorno errado no SOAP, mas ainda estou pesquisando os endereços corretos, se eu tiver novidades eu posto aqui.
E também parabenizo ao autor e demais membros ativos desse fórum pelo ótimo trabalho e suporte neste projeto, estou voltando agora ao fórum depois de muito tempo fora e quero contribuir com o que puder.
Valeu MJAC, de fato esta carregando o xml 2x, nem me toquei disso, obrigado pela dica, basta uma vez mesmo !!!
Quanto aos problemas citados aki, eu atualizei a nova vesão do daniel e trabalhei nela, apenas tive problemas em cancelamento, porque foi desativado, agora cancela nfe com evento.
Eu aconselho pegar o exemplo do Daniel atualizado, fazer ele funcionar acrescentando os dados validos e depois tentar consertar o seu sistema, senão fica dificil mesmo, o exemplo 3.10 funcionou perfeitamente com meus testes.
Porém eu verifiquei uma coisa, quando cancelo via evento e consulto depois, o retorno não informa que a nfe foi cancelada, isso é correto ?, Como saber se de fato a nfe foi cancelada ?
Alguém pode dar uma dica por favor !!!
Att
Georgenes