Sending NFe to MG in Version 3.10

7

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.

    
asked by anonymous 25.01.2015 / 20:28

1 answer

0

See if it works: (1)

.Any = New XmlNode() {xmlDoc} 
'dad.Any(0).OuterXml conteudo do arquivo xml

(2)

Dim serv = New NFe.NfeAutorizacaoSoapClient 
'verifique as propriedades adicionais de (NfeAutorizacaoSoapClient) para a correta transmissão (certificado por exemplo)
Dim teste = serv.NfeAutorizacaoLote(nfeCabecMsg, nfeDadosMsg) 
'teste recebe retorno webservice


Good luck.

    
27.01.2015 / 22:11