/// <summary> /// Envia nfe /// </summary> /// <param name="nfe">objeto nfe</param> protected internal void EnviaNFE(INF nfe, bool saveObj = false) { if(MessageBox.AskYesNo("Deseja enviar a Nota Fiscal Eletrônica à SEFAZ ?", "Emitir Nota Fiscal Eletrônica") == System.Windows.Forms.DialogResult.Yes) { try { Wait.Show(); LogNFe.Save(Enuns.TipoEvento.NFeGerarXML, "Gerando o XML da nota fiscal eletrônica para envia-la à Secretaria da Fazenda", nfe.Chave, nfe.StatusNF); string fileName = nfe.Chave + "-nfe.xml"; string filePath = Path.Combine(Settings.NFe.PastaEnvio, fileName); ((NFe.IGenerateNFe)nfe).GenerateXML().Save(filePath); LogNFe.Save(Enuns.TipoEvento.NFeGeradoXML, "Gerado o XML da nota fiscal eletrônica com sucesso", nfe.Chave, nfe.StatusNF); OpenPOS.NFe.NFeResult result = ((OpenPOS.Data.Abstract.Faturamento.Lancamento.Movimento.NF.NFBase)nfe).ProcessaResposta(); if(result.Success) { txtStatusNF.Text = result.Status.ToString(); nfe.StatusNF = result.Status; nfe.Chave = txtChave.Text = result.Chave; nfe.InfProt = txtNumProtocolo.Text = result.Protocolo; nfe.Motivo = txtMotivo.Text = result.Motivo; InformacaoProtocolo informacaoProtocolo = new InformacaoProtocolo(); informacaoProtocolo.StatusNF = result.Status; informacaoProtocolo.Chave = result.Chave; informacaoProtocolo.InfProt = result.Protocolo; informacaoProtocolo.Motivo = result.Motivo; nfe.Save(informacaoProtocolo); LogNFe.Save(Enuns.TipoEvento.NFeAutorizado, "Autorizado o uso da NF-e", nfe.Chave, nfe.StatusNF); if(saveObj) { nfe.Temp = true; nfe.Save(); } ImprimeNFE((INF)CurrentObject); LogNFe.Save(Enuns.TipoEvento.NFeImpressa, "Nota fiscal eletrônica está impressa", nfe.Chave, nfe.StatusNF); } else { string motivo = result.Motivo == null ? result.Message : result.Motivo; LogNFe.Save(Enuns.TipoEvento.Erro, result.Motivo = motivo == null ? "Ocorreu um erro" : motivo, result.Chave = result.Chave == null ? nfe.Chave : result.Chave, result.Status = result.Status == null ? NFe.Status.NaoDefinido : result.Status); MessageBox.ShowWarning(result.Motivo); } } catch(Exception ex) { LogNFe.Save(Enuns.TipoEvento.Erro, ex.Message, nfe.Chave, nfe.StatusNF); MessageBox.ShowError(ex); } finally { Wait.Close(); } } }