FONTE NFE VB.NET

MITSUEDA2025 02/09/2025 09:47:31
#505054
Teste aqui e enviou o lote a nota validou no SEFAZ mas função:
StrRetorno = WebS.EnviaLote4(....
não trouxe nada, sera que teria que alterar a função?
Alguem tem ideia, obrigado.
MITSUEDA2025 02/09/2025 12:28:34
#505056
Na verdade eu enviei
'ENVIA LOTE DE NOTAS VERSÃO 2.00
StrRetorno = WebS.EnviaLote4(strCaminho & "\" & strNomeXml, Me.txt_CertDigital.Text)

Mas por agora ser sincrono ele me trouxe
StrRetorno.xMotivo = "Lote processado"

Ai nesse caso por ser sincrono eu não tenho mais que consultar certo
Dim RetonoConsulta As New RetRetorno
RetonoConsulta = WebS.ConsultaRecLote4(StrRetorno.nRec, Me.txt_CertDigital.Text)

Mas antes eu tinha aconsulta ao lote com o recibo e buscava no retorno RetC.xMotivo = "Autorizado o uso da NF-e"

e gerava a nota
GerarNotaProcessada(SepararNota(XmlNota.OuterXml), RetC.XmlRecibo, strCaminho & "\" & strNomeXml)

Como fica agora?
SANDRAMACHADO 02/09/2025 16:41:01
#505057
Boa Tarde a todos

Depois que mudei o IndSinc=1 e atualizei os arquivos SchemaNfe acontece o seguinte erro:

System.Xml.Schema.XmlSchemaException: 'Tipo 'TTpCredPresIBSZFM' é não declarado.'


RICABU 03/09/2025 14:31:50
#505062
MITSUEDA2025,

Além da mudança do indSinc para 1, criei 2 novas funções para envio síncrono:
Seguem. Parece que deu certo.

  
Private Sub enviar2() '****** Modo Síncrono

' *** Modo de envio da nfe Síncrono - enviar2

' ******************************
' Versão: NFe 4.00 - Enviar NF-e - Modo Síncrono - 1 Nf-e por vez
' ******************************

Dim WebS As New C_WebService(UrlAcesso)
Dim StrRetorno As RetEnvio_Sincrono
MsgBox("Por favor, não desplugar o Certificado Digital!", MsgBoxStyle.Exclamation, "Certificado")

textBox1.Text = ""

ProgB1.Value = 0
ProgB1.Minimum = 0
ProgB1.Maximum = 4
ProgB1.Visible = True
Label14.Text = ""
Label14.Visible = True

'ENVIA LOTE DE NOTAS VERSÃO 4.00
StrRetorno = WebS.EnviaLote2("seu.xml")
ProgB1.Value += 1

System.Threading.Thread.Sleep(2500)

textBox1.Text += StrRetorno.xMotivo & vbNewLine

If StrRetorno.protNFE.cStat = 100 Then
Label14.Text = "Retorno concluído."
ProgB1.Value += 1

Dim sqly As String
Dim cmdy As New FbCommand
RetonoConsultaENVIO = 1
sqly = ""
sqly += " Update SAIDAS"
sqly += " SET NFE_STATUS = 'XML Enviado', NPROT = '" & StrRetorno.protNFE.nProt & "', XMOTIVO = '" & StrRetorno.protNFE.xMotivo & "'"
sqly += ", VERAPLIC = '" & StrRetorno.protNFE.verAplic & "', DHRECBTO = '" & StrRetorno.protNFE.dhRecbto & "'"
sqly += ", DIGVAL = '" & StrRetorno.protNFE.digVal & "', CSTAT = '" & StrRetorno.protNFE.cStat & "'"
sqly += " WHERE IDSAIDA = " & vr_nfeid
cmdy.Connection = conn_aux
cmdy.Parameters.Clear()
cmdy.CommandType = CommandType.Text
cmdy.CommandText = sqly
cmdy.ExecuteNonQuery()
cmdy.Dispose()

Pesquisar()

TextBox5.Text = StrRetorno.protNFE.nProt

' **** processando a NF-e - criando NFE Proc
System.Threading.Thread.Sleep(1000)
Label14.Text = "Gerando NF-e Processada..."
ProgB1.Value += 1
Gerar_ProNFe()

ProgB1.Value += 1
Label14.Text = "Envio, retorno e processamento realizados."

textBox1.Text += "Chave: " & (StrRetorno.protNFE.chNFe) & vbNewLine
textBox1.Text += "Status - Motivo: " & (StrRetorno.protNFE.cStat) & " - " & (StrRetorno.protNFE.xMotivo) & vbNewLine
textBox1.Text += "Protocolo: " & (StrRetorno.protNFE.nProt) & vbNewLine
textBox1.Text += "Ambiente (1-Prod. / 2-Homol.): " & (StrRetorno.protNFE.tpAmb) & vbNewLine
textBox1.Text += "Dígito Validador: " & (StrRetorno.protNFE.digVal)
Else
textBox1.Text += "ERRO NA NOTA!" & vbNewLine
textBox1.Text += "Motivo: " & StrRetorno.cStat & " - " & StrRetorno.xMotivo

End If

End Sub


e

  
Public Function EnviaLote2(ByVal EndArquivoXml As String) As RetEnvio_Sincrono
Try
Dim strRetorno As XmlElement
Dim xmldoc = New XmlDocument()

xmldoc.Load(EndArquivoXml) 'Carrega o arquivo XML

Dim CERT As X509Certificate2
CERT = SelecionarCertificado(SerieCert)

Static wsMsg As NFEAutorizacao.Autorizacao
wsMsg = New NFEAutorizacao.Autorizacao(S_Url.UrlNfeAutorizacao)
wsMsg.Timeout = 100000

wsMsg.ClientCertificates.Add(CERT)
System.Net.ServicePointManager.SecurityProtocol = DirectCast(3072, System.Net.SecurityProtocolType)

Dim Notas As String
Notas = xmldoc.OuterXml

'RETORNO DA SEFAZ
strRetorno = wsMsg.nfeAutorizacaoLote(xmldoc) 'wsMsg.nfeRecepcaoLote2(xmldoc)

'DESMEMBRA RETORNO XML
Dim StrRetNota As RetEnvio_Sincrono = 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
If (InnerNode.Name = "protNFe" Or outerNode.Name = "protNFe") Then
For Each n As XmlNode In InnerNode
If (n.Name = "infProt" Or InnerNode.Name = "infProt") Then
For Each n2 As XmlNode In n
If (n2.Name = "tpAmb" Or n.Name = "tpAmb") Then
StrRetNota.protNFE.tpAmb = n.InnerText
End If
If (n2.Name = "verAplic" Or n.Name = "verAplic") Then
StrRetNota.protNFE.verAplic = n.InnerText
End If
If (n2.Name = "cStat" Or n.Name = "cStat") Then
StrRetNota.protNFE.cStat = n.InnerText
End If
If (n2.Name = "xMotivo" Or n.Name = "xMotivo") Then
StrRetNota.protNFE.xMotivo = n.InnerText
End If
If (n2.Name = "chNFe" Or n.Name = "chNFe") Then
StrRetNota.protNFE.chNFe = n.InnerText
End If
If (n2.Name = "digVal" Or n.Name = "digVal") Then
StrRetNota.protNFE.digVal = n.InnerText
End If
If (n2.Name = "dhRecbto" Or n.Name = "dhRecbto") Then
StrRetNota.protNFE.dhRecbto = n.InnerText
End If
If (n2.Name = "nProt" Or n.Name = "nProt") Then
StrRetNota.protNFE.nProt = n.InnerText
End If
Next
End If
Next
End If
Next
Next
'MsgBox(StrRetNota.protNFE.cStat & " - " & StrRetNota.protNFE.xMotivo & " - " & StrRetNota.protNFE.tpAmb)
Return StrRetNota
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Information, "")
Return Nothing
End Try
End Function
MITSUEDA2025 03/09/2025 19:52:53
#505064
RICABU,

Obrigado por compartilhar, eu ajustei a rotina de envio alterando a estrutura para RetRetorno inves de RetEnvio... Gambiarra, mas pra mim funcionou rs.

Quero aproveitar para agradecer a todos aqui do forum, eu não sou programador, sou contador e gosto muito da area de tecnologia, mas atuo mais na contabilidade e como key user SAP FI/CO.

Em um passado eu montei um escritorio e queria elaborar um programa para implantar nos clientes, e comecei a estudar VB.NET, tinha familiaridade porque usava VBA, e achei esse forum aqui.

Fiz um piloto de emissão de nota, e como case implantei na empresa do meu irmão kkkk, e ele usa ate hoje, eu descontinuei o projeto, foquei na contabilidade e no ERP SAP como key-user e funcional, mas sempre gostei muito de programação.

Pega algo e ficar horas ali quebrando a cabeça, qd vc ve o dia já foi embora e vc ainda ta no pique, ai qd funciona é top, muito boa a sensação, e com pessoas como vcs que sempre estão dispostos a compartilhar ajuda demais.

Obrigado a todos que compartilham seus conhecimentos e colaboram com o crescimento profissional, vcs estão de parabens.

Abraço
Página 229 de 229 [2285 registro(s)]
Faça seu login para responder