ENVIAR XML PARA A NFE

CLAUDIOLUCROCHA 17/03/2010 15:45:51
#337190
Alguem sabe como eu envio o XML da NFE.

Acho que o unico jeito é via webservice mais nao estou acostumado a usar webservice

IRRV 17/03/2010 16:29:48
#337206
Claudio...
Realmente....só via WebService...
Se nao me engano o topico que esta em destaque sobre NFe, é de um projeto que o pessoal do forum fez junto para realizar o processo de envio...
Fora isso tb existem algumas dlls que fazem isso, mas as que eu vi sao todas pagas([Ô]pelo menos o processo de envio e retorno[Ô]).

Voce ainda pode usar o software da receita pra isso.
Se nao tera que ser na unha mesmo...

Att,
Igor
CLAUDIOLUCROCHA 17/03/2010 17:30:40
#337228
Valeu irrv mais o soft da receita nao importa o XML teria que cadastrar os dados la.
O projeto que esta aqui esta na vbmania agora é pago.
IRRV 17/03/2010 19:21:57
#337238
Claudio Boa Noite....

PQP....que sacanagem heim....nao sabia que agora o projeto era Pago.
Acho sacanagem pois lembro de ter lido no inicio da discussao que o pessoal dizia que a maioria das comunidades, Delphi, C#, ja tinha projetos OPEN SOURCE da nota fiscal e que a comunidade VB estava atrasada e merecia tb a sua DLL.

Me desculpe mas estou inconformado
Se a intenção é comercializar entao nao comece com Promessinhas....

Mas voltando....
Claudio o programa da Receita funciona sim e importa o XML para enviar desde que o mesmo esteja validado e assinado digitalmente.
Mas por causa do seu topico fui dar uma olhadinha na net e achei esse site http://www.unimake.com.br
O projeto deles(pelo menos ate onde li) é relamente OPEN SOURCE.

De uma olhadinha pois tenho certeza que ira te atender pois ele VALIDA,ASSINA E ENVIA O XML gerado pela seu sistema....

Abraço,
Igor
DANIELCPAETE 17/03/2010 22:40:50
#337251
Resposta escolhida
amigo o processo é bem simples. O unico problema é que fica muito dificil de encontrar um material explicando.

Sobre a Dll estou desenvolvendo uma versão pena não ter o auxilio que o Looze teve no inicio do projeto dele mas catando material na NET e lendo bastante os manuais da Sefaz acredito que logo logo estará pronto pelo menos a versão do Layout 1.10 e quando terminar a mesma estarei disponibilizando aqui no site o Código Fonte .

Agora voltando ao assunto do webservice primeiro você precisa criar o pacote de envio da nota se ainda não criou depois te passo as dicas.

feito isso você vai no site da sua sefaz e baixa os arquivos wsdl correspondentes https://homologacao.nfe.sefaz.rs.gov.br/

o visual studio possui um arquivo que cria as classes pra você

o comando é este claro que adaptando para a suas pastas

wsdl.exe [Ô]C:\Users\DANIEL\Documents\Downloads\HMLE\NFeRecepcao.wsdl[Ô] /language:vb /protocol:SOAP12 /out:[Ô]C:\Users\DANIEL\Documents\Downloads\HMLE[Ô]

crie todas as classes e adicione no seu projeto, depois é só fazer a chamada da mesma.


Dim strRetorno As String
Dim xmldoc = New XmlDocument()
xmldoc.Load([Ô]c:    esteXML.xml[Ô]) [ô]Carrega o arquivo XML
Dim CERT As X509Certificate2
CERT = BuscaNroSerie([Ô][Ô]) [ô]rotina para buscar o certificado usado


Dim wsMsg As NfeRecepcao
Dim wsCabecMsg As String
Dim dados As String

[ô]cabeçalho do ws
wsCabecMsg = [Ô]<?xml version=[Ô][Ô]1.0[Ô][Ô] encoding=[Ô][Ô]UTF-8[Ô][Ô] ?><cabecMsg xmlns=[Ô][Ô]http://www.portalfiscal.inf.br/nfe[Ô][Ô] versao=[Ô][Ô]1.02[Ô][Ô]><versaoDados>1.10</versaoDados></cabecMsg>[Ô]


wsMsg = New NfeRecepcao()

wsMsg.Timeout = 100000
wsMsg.ClientCertificates.Add(cert) [ô]adiciona o certificado na conexão
wsMsg.SoapVersion = SoapProtocolVersion.Soap12
dados = xmldoc.OuterXml

strRetorno = wsMsg.nfeRecepcaoLote(wsCabecMsg, dados) [ô]envia seu arquivo xml para o webservice e retorna o resultado



espero que lhe ajude estou montando a Nfe também e sei como é ruim achar material sobre o assunto.
CLAUDIOLUCROCHA 18/03/2010 20:59:05
#337355
Valeu daniel.

Se puder dar a dica de como fazer o pacote de envio, fico grato. Mais acho que consegui um tempo a mais pois fiz um jeito de enviar sem precisar fazer via o meu programa. Depois vou implementar, é so que estou com prazo apertado e o cliente nao pode para.

Vou deixar um registro aqui para quem esta com prazo curto como eu.

Fiz um programa para gerar o arquivo XML da nota fiscal e a assinatura via vb.net 2005. Para enviar o arquivo usei o programa free da propria receita. Ele tem um importacao de nota fiscal ( xml ) e depois é so enviar por ele mesmo. Não é o melhor jeito mais vai funcionar

Fico no aguardo Daniel. Valeu novamente. Hoje devo dormir pois a 2 dias nao faco
DANIELCPAETE 19/03/2010 09:23:28
#337384
segue rotina adaptada do site

http://www.entendendo.net/

para usar é só passar o seu xml da nfe

    Public Sub GerarLoteNfe(ByRef documentoXML As XmlDocument)
Dim cVersaoDados As String = [Ô]1.10[Ô]

[ô]Montar a string da Nfe a ser montado o Lote
Dim vNfeDadosMsg As String = documentoXML.OuterXml

[ô]Pegar o último número de lote de NFe utilizado e acrescentar + 1 para novo envio
Dim vArqXmlLote As String = [Ô]TryNfeLote.xml[Ô]
Dim nNumeroLote As Int32 = 1

If File.Exists(vArqXmlLote) Then
Dim oLerXml As New XmlTextReader(vArqXmlLote)

While oLerXml.Read()
If oLerXml.NodeType = XmlNodeType.Element Then
If oLerXml.Name = [Ô]UltimoLoteEnviado[Ô] Then
oLerXml.Read()
nNumeroLote = Convert.ToInt32(oLerXml.Value) + 1
Exit While
End If
End If
End While
oLerXml.Close()
End If

[ô]Salvar o número de lote de NFe utilizado
Dim oSettings As New XmlWriterSettings()
oSettings.Indent = True
oSettings.IndentChars = [Ô][Ô]
oSettings.NewLineOnAttributes = False
oSettings.OmitXmlDeclaration = False

Dim oXmlGravar As XmlWriter = XmlWriter.Create([Ô]TryNfeLote.xml[Ô], oSettings)

oXmlGravar.WriteStartDocument()
oXmlGravar.WriteStartElement([Ô]DadosLoteNfe[Ô])
oXmlGravar.WriteElementString([Ô]UltimoLoteEnviado[Ô], nNumeroLote.ToString())
oXmlGravar.WriteEndElement()
[ô]DadosLoteNfe
oXmlGravar.WriteEndDocument()
oXmlGravar.Flush()
oXmlGravar.Close()

[ô]Separar somente o conteúdo a partir da tag <NFe> até </NFe>
Dim nPosI As Int32 = vNfeDadosMsg.IndexOf([Ô]<NFe[Ô])
Dim nPosF As Int32 = vNfeDadosMsg.Length - nPosI
Dim vStringNfe As String = vNfeDadosMsg.Substring(nPosI, nPosF)

[ô]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 += [Ô]<enviNFe xmlns=[Ô][Ô]http://www.portalfiscal.inf.br/nfe[Ô][Ô] xmlns:ds=[Ô][Ô]http://www.w3.org/2000/09/xmldsig#[Ô][Ô] xmlns:xsi=[Ô][Ô]http://www.w3.org/2001/XMLSchema-instance[Ô][Ô] versao=[Ô][Ô][Ô] & cVersaoDados & [Ô][Ô][Ô]>[Ô]
vStringLoteNfe += [Ô]<idLote>[Ô] & nNumeroLote.ToString([Ô]000000000000000[Ô]) & [Ô]</idLote>[Ô]
vStringLoteNfe += vStringNfe
vStringLoteNfe += [Ô]</enviNFe>[Ô]

[ô]return vNomeArqLoteNfe;
documentoXML.LoadXml(vStringLoteNfe)
End Sub

CLAUDIOLUCROCHA 22/03/2010 07:05:08
#337570
Valeu daniel

Agora estou com um problema que nao tinha.
Estou validando o XML e estou recebendo erro de [Ô]DATA AT THE ROOT LEVEL IS INVALID LINE 1 POSITION13413.

Nao sei onde encontrar a posicao do erro.
Coloquei o arquivo anexo



Tópico encerrado , respostas não são mais permitidas