To send the XML from an NFe to MG in version 2.0 I do it as follows:
Public Function enviaNFe2(ByVal NumeroDoLote As Integer, ByVal ListiView As ListView, ByVal Label As ToolStripStatusLabel) As Boolean
Dim ret As Boolean = False
Dim xmlRetorno As String = Nothing
Dim sNFeDadosMsg As String = Nothing
Dim xmlDoc As XmlDocument = Nothing
Dim arquivoRetorno As String = Nothing
Try
'vrifica a existência do arquivo
If File.Exists(Me.ArquivoXml) = True Then
Me.labelMsg.Visible = True
Me.labelMsg.Text = Space(40) & "Aguarde um instante por Favor. Enviando o arquivo...."
My.Application.DoEvents()
'Carrega o arquivo xml para dentro do objeto xmlDoc
xmlDoc = New XmlDocument
xmlDoc.Load(Me.ArquivoXml)
'Declara variável (tipo string) com o conteúdo do Lote NF-e
sNFeDadosMsg = xmlDoc.OuterXml()
'Seleciona o certificado digital
If Me.SelecionarCertificado = True Then
Select Case Me.tipoAmbiente
Case "1" ' P R O D U Ç Ã O
'Define o cabeçalho
Dim pnfeCabecMsg As pNfeRecepcao2.nfeCabecMsg
pnfeCabecMsg = New pNfeRecepcao2.nfeCabecMsg
With pnfeCabecMsg
.cUF = "31"
.versaoDados = "2.00"
End With
'Envia o arquivo .xml (Consome o WS)
Dim oWS_pNFeRecepcao As pNfeRecepcao2.NfeRecepcao2 = New pNfeRecepcao2.NfeRecepcao2
With oWS_pNFeRecepcao
.Url = "https://nfe.fazenda.mg.gov.br/nfe2/services/NfeRecepcao2.asmx"
.nfeCabecMsgValue = pnfeCabecMsg
.Timeout = 50000
.ClientCertificates.Add(Me.X509Cert)
xmlRetorno = .nfeRecepcaoLote2(xmlDoc.DocumentElement).OuterXml
End With
'obtem o numero do lote enviado
Me.nLote = clsNFeLote2.obtemNumeroDoLote(Me.ArquivoXml)
'Salva o retorno da chamada ao processo em um arquivo xml
arquivoRetorno = Me.PathNFeMsg & "retornoLote-" & Me.nLote.ToString & ".xml"
With xmlDoc
.LoadXml(xmlRetorno)
.Save(arquivoRetorno)
End With
....
return(true)
case "2" 'H O M O L O G A Ç Ã O
...
end select
else
return(false)
end if
Catch ex As Exception
MessageBox.Show("Problemas no envio/retorno do arquivo." & vbNewLine & "Descrição do erro: " & ex.ToString, "Gestor .NET", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
Me.labelMsg.Visible = False
Label.Text = "Processo Concluído."
Application.DoEvents()
End Try
end function
I'm in the process of upgrading to version 3.10 (third generation) and I'm not able to send.
I'm trying to do this: (synchronous mode):
Public Function enviaNFe3(ByVal NumeroDoLote As Integer, ByVal ListiView As ListView, ByVal Label As ToolStripStatusLabel) As Boolean
Dim ret As Boolean = False
Dim objRetorno() As object = Nothing
Dim xmlDoc As XmlDocument = Nothing
Dim arquivoRetorno As String = Nothing
Try
'vrifica a existência do arquivo
If File.Exists(Me.ArquivoXml) = True Then
Me.labelMsg.Visible = True
Me.labelMsg.Text = Space(40) & "Aguarde um instante por Favor. Enviando o arquivo...."
My.Application.DoEvents()
'Carrega o arquivo xml para dentro do objeto xmlDoc
xmlDoc = New XmlDocument
xmlDoc.Load(Me.ArquivoXml)
'Seleciona o certificado digital
If Me.SelecionarCertificado = True Then
'Define o cabeçalho
Dim NFeCabecMsg As pNfeAutorizacao3G.nfeCabecMsg = New pNfeAutorizacao3G.nfeCabecMsg
With NFeCabecMsg
.cUF = "31"
.versaoDados = "3.10"
End With
''Dados da NFe
Dim NFeDadosMsg As pNfeAutorizacao3G.nfeDadosMsg = New pNfeAutorizacao3G.nfeDadosMsg
With NFeDadosMsg
'(1)???? Da erro de Referencia de objeto não definida para uma instancia de objeto.
.Any.SetValue(xmlDoc, 0)
End With
'Envia o arquivo .xml (Consome o WS)
Dim oWS_pNFeAutorizacao3 As pNfeAutorizacao3G.NfeAutorizacao = New pNfeAutorizacao3G.NfeAutorizacao
With oWS_pNFeAutorizacao3
.Url = "https://nfe.fazenda.mg.gov.br/nfe2/services/NfeAutorizacao.asmx"
.nfeCabecMsgValue = NFeCabecMsg
.Timeout = 50000
.ClientCertificates.Add(Me.X509Cert)
.SoapVersion = Web.Services.Protocols.SoapProtocolVersion.Soap12
'(2)???? Como faço para pegar o retorno?
objRetorno = .nfeAutorizacaoLote(NFeDadosMsg)
End With
'aqui eu faria o tratamento do retorno
return (true)
else
return (false)
end if
end if
Catch ex As Exception
MessageBox.Show("Problemas no envio/retorno do arquivo." & vbNewLine & "Descrição do erro: " & ex.ToString, "Gestor .NET", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
Me.labelMsg.Visible = False
Label.Text = "Processo Concluído."
Application.DoEvents()
End Try
end function
I checked that in other states the requested parameter for the NfeAutorizacaoLote
function is of type system.xml.xmlnode
but for MG the requested parameter is of type nfeDadosMsg
.
I would be grateful if anyone could help me.