Example #1
0
        /// <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();
                }
            }
        }