FONTE NFE VB.NET
Eu achei estranho, to utilizando o projeto no meu sistema, hj fui emitir uma NFe com ele e primeiro mandei validar, deu OK
Ai qndo fui mandar enviar o lote ele enviou porém não retornou mensagem nenhuma como se nada tivesse acontecido, ai fui tentar emitir denovo e derrepente veio a msg falando q a NFe tava com duplicidade e fui no site consultar a nfe com a chave e tava lá do jeito q eu tinha tirado, porém não gerou o XML e nem falou q foi tirada com exito :/
Pior q depois começou a funcionar normal, to preocupado de acontecer denovo
Ai qndo fui mandar enviar o lote ele enviou porém não retornou mensagem nenhuma como se nada tivesse acontecido, ai fui tentar emitir denovo e derrepente veio a msg falando q a NFe tava com duplicidade e fui no site consultar a nfe com a chave e tava lá do jeito q eu tinha tirado, porém não gerou o XML e nem falou q foi tirada com exito :/
Pior q depois começou a funcionar normal, to preocupado de acontecer denovo
LEANTRONIC, isso já aconteceu comigo tambem, devido a instabilidade da internet, sugiro a voce a executar a consulta ao lote novamente.
wsMsg1 = New ProdNfeRetRecepcao2.NfeRetRecepcao2 [ô]CABEÇALHO USADA PARA ENVIO DE LOTE
wsMsg1.nfeCabecMsgValue = cab
wsMsg1.Timeout = 100000
wsMsg1.SoapVersion = SoapProtocolVersion.Soap12
wsMsg1.ClientCertificates.Add(Form1.sacCertificadoDigital)
dados.LoadXml([Ô]<?xml version=[Ô][Ô]1.0[Ô][Ô] encoding=[Ô][Ô]UTF-8[Ô][Ô]?><consReciNFe xmlns=[Ô][Ô]http://www.portalfiscal.inf.br/nfe[Ô][Ô] versao=[Ô][Ô]2.00[Ô][Ô]><tpAmb>1</tpAmb><nRec>[Ô] & NAutorizacao & [Ô]</nRec></consReciNFe>[Ô])
strRetorno = wsMsg1.nfeRetRecepcao2(dados) [ô]ENVIA CONSULTA PARA SEFAZ E OBTEM RETORNO EM FORMATO STRING
Abraço
wsMsg1 = New ProdNfeRetRecepcao2.NfeRetRecepcao2 [ô]CABEÇALHO USADA PARA ENVIO DE LOTE
wsMsg1.nfeCabecMsgValue = cab
wsMsg1.Timeout = 100000
wsMsg1.SoapVersion = SoapProtocolVersion.Soap12
wsMsg1.ClientCertificates.Add(Form1.sacCertificadoDigital)
dados.LoadXml([Ô]<?xml version=[Ô][Ô]1.0[Ô][Ô] encoding=[Ô][Ô]UTF-8[Ô][Ô]?><consReciNFe xmlns=[Ô][Ô]http://www.portalfiscal.inf.br/nfe[Ô][Ô] versao=[Ô][Ô]2.00[Ô][Ô]><tpAmb>1</tpAmb><nRec>[Ô] & NAutorizacao & [Ô]</nRec></consReciNFe>[Ô])
strRetorno = wsMsg1.nfeRetRecepcao2(dados) [ô]ENVIA CONSULTA PARA SEFAZ E OBTEM RETORNO EM FORMATO STRING
Abraço
Cara entendi e fico aliviado que tem uma solução para isso, não entendi oq faço com esse codigo... tipo pelo oq vi ele a função (ConsultaRecLote2) que retorna as informações de autorizado e Gera a Nota, vc me aconselha é criar uma segunda função dessa em caso de falhas?
Seria +/- isso?
Dim Caminho As String
Dim WebS As New C_WebService(UrlAcesso)
Dim StrRetorno As RetEnvio
Dim RetC As SGC.C_WebService.RetRecibo
[ô]ENVIA LOTE DE NOTAS VERSÃO 2.00
StrRetorno = WebS.EnviaLote2(My.Application.Info.DirectoryPath & [Ô]\NFE\[Ô] & CAMINHONFEGERADA.Text)
MsgBox(StrRetorno.xMotivo)
Dim RetonoConsulta As New RetRetorno
RetonoConsulta = WebS.ConsultaRecLote2(StrRetorno.nRec)
RetonoConsulta = WebS.ConsultaRecLote2_Tentativa2(StrRetorno.nRec)
For Each RetC In RetonoConsulta.L_Retornos
MsgBox(RetC.xMotivo)
If RetC.xMotivo = [Ô]Autorizado o uso da NF-e[Ô] Then
Seria +/- isso?
Dim Caminho As String
Dim WebS As New C_WebService(UrlAcesso)
Dim StrRetorno As RetEnvio
Dim RetC As SGC.C_WebService.RetRecibo
[ô]ENVIA LOTE DE NOTAS VERSÃO 2.00
StrRetorno = WebS.EnviaLote2(My.Application.Info.DirectoryPath & [Ô]\NFE\[Ô] & CAMINHONFEGERADA.Text)
MsgBox(StrRetorno.xMotivo)
Dim RetonoConsulta As New RetRetorno
RetonoConsulta = WebS.ConsultaRecLote2(StrRetorno.nRec)
RetonoConsulta = WebS.ConsultaRecLote2_Tentativa2(StrRetorno.nRec)
For Each RetC In RetonoConsulta.L_Retornos
MsgBox(RetC.xMotivo)
If RetC.xMotivo = [Ô]Autorizado o uso da NF-e[Ô] Then
Ou dentro do proprio Try do ConsultaRecLote2 colocar o codigo
wsMsg1 = New ProdNfeRetRecepcao2.NfeRetRecepcao2 [ô]CABEÇALHO USADA PARA ENVIO DE LOTE
wsMsg1.nfeCabecMsgValue = cab
wsMsg1.Timeout = 100000
wsMsg1.SoapVersion = SoapProtocolVersion.Soap12
wsMsg1.ClientCertificates.Add(Form1.sacCertificadoDigital)
dados.LoadXml([Ô]<?xml version=[Ô][Ô]1.0[Ô][Ô] encoding=[Ô][Ô]UTF-8[Ô][Ô]?><consReciNFe xmlns=[Ô][Ô]http://www.portalfiscal.inf.br/nfe[Ô][Ô] versao=[Ô][Ô]2.00[Ô][Ô]><tpAmb>1</tpAmb><nRec>[Ô] & NAutorizacao & [Ô]</nRec></consReciNFe>[Ô])
strRetorno = wsMsg1.nfeRetRecepcao2(dados) [ô]ENVIA CONSULTA PARA SEFAZ E OBTEM RETORNO EM FORMATO STRING
Junto com o outro pra executar 2 vezes?
valeu cara
wsMsg1 = New ProdNfeRetRecepcao2.NfeRetRecepcao2 [ô]CABEÇALHO USADA PARA ENVIO DE LOTE
wsMsg1.nfeCabecMsgValue = cab
wsMsg1.Timeout = 100000
wsMsg1.SoapVersion = SoapProtocolVersion.Soap12
wsMsg1.ClientCertificates.Add(Form1.sacCertificadoDigital)
dados.LoadXml([Ô]<?xml version=[Ô][Ô]1.0[Ô][Ô] encoding=[Ô][Ô]UTF-8[Ô][Ô]?><consReciNFe xmlns=[Ô][Ô]http://www.portalfiscal.inf.br/nfe[Ô][Ô] versao=[Ô][Ô]2.00[Ô][Ô]><tpAmb>1</tpAmb><nRec>[Ô] & NAutorizacao & [Ô]</nRec></consReciNFe>[Ô])
strRetorno = wsMsg1.nfeRetRecepcao2(dados) [ô]ENVIA CONSULTA PARA SEFAZ E OBTEM RETORNO EM FORMATO STRING
Junto com o outro pra executar 2 vezes?
valeu cara
LEANTRONIC, voce nao precisa fazer duas funcoes para isso. No meu caso eu envio o lote a sefaz e ja pego o retorno. Por ser muito rapido, talvez a nota ainda esteja em processamento ou ainda nao há nada a retornar, entao tenho um timer, para ficar executando a rotina ConsutaRecLote2 até ober um retorno de falha ou sucesso.
se a sua rotina ConsultaRecLote2 esta separada do codigo de enviar o lote, basta chama-la novamente dentro de um timer.
abraco.
se a sua rotina ConsultaRecLote2 esta separada do codigo de enviar o lote, basta chama-la novamente dentro de um timer.
abraco.
Entendi cara, vou procurar fazer isso mesmo, valeu mesmo :D
Vai me ajudar a evitar muita dor de cabeça
Vai me ajudar a evitar muita dor de cabeça
Citação::
LEANTRONIC, voce nao precisa fazer duas funcoes para isso. No meu caso eu envio o lote a sefaz e ja pego o retorno. Por ser muito rapido, talvez a nota ainda esteja em processamento ou ainda nao há nada a retornar, entao tenho um timer, para ficar executando a rotina ConsutaRecLote2 até ober um retorno de falha ou sucesso.
se a sua rotina ConsultaRecLote2 esta separada do codigo de enviar o lote, basta chama-la novamente dentro de um timer.
abraco.
Cara desculpa a minha ignorancia, é que nunca usei mto esses controles mas pensei em fazer +/- oq vc falou ai, porém em vez de usar um timer eu usaria um while tipo:
While StrRetorno.xMotivo = [Ô][Ô]
StrRetorno = WebS.EnviaLote2(My.Application.Info.DirectoryPath & [Ô]\NFE\[Ô] & CAMINHONFEGERADA.Text)
End While
ai na hora que tivesse qualquer tipo de retorno ele sai do while e finaliza a NFe oq acha?
LEANTRONIC a solucao com o loop While pode ser utilizada tambem, embora nao seja adequada pois voce prende o processamento do seu sistema.
While StrRetorno.xMotivo = [Ô][Ô]
application.DoEvents() [ô] acrescente essa linha
StrRetorno = WebS.EnviaLote2(My.Application.Info.DirectoryPath & [Ô]\NFE\[Ô] & CAMINHONFEGERADA.Text)
End While
abraco
While StrRetorno.xMotivo = [Ô][Ô]
application.DoEvents() [ô] acrescente essa linha
StrRetorno = WebS.EnviaLote2(My.Application.Info.DirectoryPath & [Ô]\NFE\[Ô] & CAMINHONFEGERADA.Text)
End While
abraco
Valeuu cara, como falei, isso vai evitar mtos problemas
Formulario de Segurança,
Alguem já comprou, é preciso mesmo ? Não pode ser em papel comun ?
Alguem já comprou, é preciso mesmo ? Não pode ser em papel comun ?
Faça seu login para responder