コード例 #1
0
        private void cmdTransmitirXML_Click(object sender, EventArgs e)
        {
            if (lstMovdia.CheckedItems.Count == 0)
            {
                MessageBox.Show("Selecione uma Nota Fiscal na lista abaixo.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                lstMovdia.Focus();
                return;
            }


            PedidoDao pdDao  = new PedidoDao();
            XMLDao    xmlDao = new XMLDao();
            //StreamWriter Grava;

            string retValidar;
            string strProc;
            string strXmlProcNfe;
            int    nPosI;
            int    nPosF;

            string cStatus_LoteProcessado;
            string cStatus_Autorizado;

            TxtResultado.Text = string.Empty;
            txtDadosXML.Text  = string.Empty;

            progressBar1.Value   = 0;
            progressBar1.Maximum = lstMovdia.Items.Count;

            try
            {
                for (int i = 0; i <= lstMovdia.Items.Count - 1; i++)
                {
                    progressBar1.Value = progressBar1.Value + 1;

                    if (lstMovdia.Items[i].Checked == true)
                    {
                        retTransmitir = string.Empty;
                        retValidar    = string.Empty;

                        cStatus_LoteProcessado = string.Empty;
                        cStatus_Autorizado     = string.Empty;

                        try
                        {
                            // Gerando o XML
                            xmlNFe = (gerarXml.NFe(lstPedido[i]));

                            // Assinando o XML
                            xmlNFe_Assinado = assinarXml.AssinaXML(xmlNFe.InnerXml, "infNFe", Certificado.getInstance.oCertificado);
                        }
                        catch (Exception ex)
                        {
                            Log_Exception.Monta_ArquivoLog(ex);

                            lst_Color(i, "Erro ao Assinar", Color.Red);
                            lista_Erros(i, "Erro: " + ex.Message);
                            continue;
                        }


                        try
                        {
                            // Validando o XML
                            retValidar = validarXml.Valida(xmlNFe_Assinado, "NFe");
                        }
                        catch (Exception ex)
                        {
                            Log_Exception.Monta_ArquivoLog(ex);

                            lst_Color(i, "Erro inesperado ao Validar", Color.Red);
                            lista_Erros(i, "Erro ao Validar: " + ex.Message);
                            continue;
                        }


                        if (lstPedido[i].modelo == "65")
                        {
                            //Inserindo a URL QRCode no xml já assinado
                            xmlNFe_Assinado.LoadXml(xmlNFe_Assinado.InnerXml.Replace("</infNFe>", "</infNFe><infNFeSupl><qrCode><![CDATA[" +
                                                                                     gerarXml.Gera_Url_QRCode(xmlNFe_Assinado, lstPedido[i]) + "]]></qrCode></infNFeSupl>"));
                        }

                        /*
                         * // Gravando o arquivo xml na pasta de Saidas
                         * Grava = File.CreateText(@"C:\Documents and Settings\Renan\Desktop\xxxx1.XML");
                         * Grava.Write(xmlNFe_Assinado.InnerXml);
                         * Grava.Close();
                         */


                        if (retValidar == string.Empty)
                        {
                            try
                            {
                                // Recebendo o XML de retorno da transmissão
                                //retTransmitir = lstPedido[i].modelo == "65" ? transmitirXml.XML_NFCe(xmlNFe_Assinado, lstPedido[i].nfiscal, Certificado.getInstance.oCertificado) : transmitirXml.XML_NFe(xmlNFe_Assinado, lstPedido[i].nfiscal, Certificado.getInstance.oCertificado);

                                if (retTransmitir.Substring(0, 4) != "Erro")
                                {
                                    XmlDocument xmlRetorno = new XmlDocument();
                                    xmlRetorno.LoadXml(retTransmitir);

                                    // Lote processado
                                    if (xmlRetorno.GetElementsByTagName("cStat")[0].InnerText == "104")
                                    {
                                        // Autorizado
                                        if (xmlRetorno.GetElementsByTagName("cStat")[1].InnerText == "100")
                                        {
                                            try
                                            {
                                                lstPedido[i].chave     = xmlRetorno.GetElementsByTagName("chNFe")[0].InnerText;
                                                lstPedido[i].protocolo = xmlRetorno.GetElementsByTagName("nProt")[0].InnerText;

                                                // Separar somente o conteúdo a partir da tag <protNFe> até </protNFe>
                                                nPosI   = retTransmitir.IndexOf("<protNFe");
                                                nPosF   = retTransmitir.Length - (nPosI + 13);
                                                strProc = retTransmitir.Substring(nPosI, nPosF);

                                                // XML pronto para salvar
                                                strXmlProcNfe = @"<?xml version=""1.0"" encoding=""utf-8"" ?><nfeProc xmlns=""http://www.portalfiscal.inf.br/nfe"" versao=""3.10"">" + xmlNFe_Assinado.InnerXml + strProc + "</nfeProc>";

                                                lstPedido[i].xml.numdoc     = lstPedido[i].numdoc;
                                                lstPedido[i].xml.arquivoXML = strXmlProcNfe;
                                                lstPedido[i].xml.data       = DateTime.Now;
                                                lstPedido[i].xml.Modelo     = lstPedido[i].modelo;


                                                if (GerarXML.str_Ambiente == "1")
                                                {
                                                    SalvarArquivoXML_Pasta(i);
                                                }



                                                // Salvando o xml no Banco de Dados
                                                if (xmlDao.Grava_XML(lstPedido[i].xml))
                                                {
                                                    // Atualizando o pedido com Chave e Protocolo
                                                    if (pdDao.Update_ChaveProtocolo(lstPedido[i].numdoc, lstPedido[i].chave, lstPedido[i].protocolo))
                                                    {
                                                        lst_Color(i, xmlRetorno.GetElementsByTagName("xMotivo")[1].InnerText, Color.Green);

                                                        txtDadosXML.AppendText("Nota Fiscal: " + lstPedido[i].nfiscal + " emitida com sucesso..." + Environment.NewLine);
                                                        txtDadosXML.AppendText("Arquivo XML salvo com sucesso..." + Environment.NewLine);
                                                        txtDadosXML.AppendText("Chave: " + lstPedido[i].chave + Environment.NewLine);
                                                        txtDadosXML.AppendText("Protocolo: " + lstPedido[i].protocolo + Environment.NewLine + Environment.NewLine);

                                                        /*
                                                         * if (Usuario.getInstance.empresa == 1)
                                                         * {
                                                         *  if (GerarXML.str_Ambiente == "1")
                                                         *  {
                                                         *      // Enviando email para o cliente
                                                         *      if (email.EnviaEmailNFe(lstPedido[i])) { pdDao.Atualiza_Pedido_Email(lstPedido[i].numdoc); }
                                                         *  }
                                                         * }*/
                                                    }
                                                    else
                                                    {
                                                        lst_Color(i, xmlRetorno.GetElementsByTagName("xMotivo")[1].InnerText, Color.Green);
                                                        lista_Erros(i, "NOTA EMITIDA, mas houve um erro ao atualizar o pedido com a CHAVE e o PROTOCOLO, informe imediatamente ao administrador do sistema!");
                                                    }
                                                }
                                                else
                                                {
                                                    lst_Color(i, xmlRetorno.GetElementsByTagName("xMotivo")[1].InnerText, Color.Green);
                                                    lista_Erros(i, "NOTA EMITIDA, mas houve um erro ao salvar o arquivo de XML no banco de dados, informe imediatamente ao administrador do sistema!");
                                                }
                                            }
                                            catch (Exception ex)
                                            {
                                                Log_Exception.Monta_ArquivoLog(ex);

                                                lista_Erros(i, ex.Message);
                                                lst_Color(i, "NOTA EMITIDA, mas houve um erro inesperado (005)", Color.Red);
                                                continue;
                                            }
                                        }
                                        else
                                        {
                                            lista_Erros(i, xmlRetorno.GetElementsByTagName("xMotivo")[1].InnerText);
                                            lst_Color(i, "Erro ao Transmitir (004)", Color.Red);
                                            continue;
                                        }
                                    }
                                    else
                                    {
                                        lista_Erros(i, xmlRetorno.GetElementsByTagName("xMotivo")[0].InnerText);
                                        lst_Color(i, "Erro ao Transmitir (003)", Color.Red);
                                        continue;
                                    }
                                }
                                else
                                {
                                    lista_Erros(i, retTransmitir);
                                    lst_Color(i, "Erro ao Transmitir (002)", Color.Red);
                                    continue;
                                }
                            }
                            catch (Exception ex)
                            {
                                Log_Exception.Monta_ArquivoLog(ex);

                                lista_Erros(i, ex.Message);
                                lst_Color(i, "Erro ao Transmitir (001)", Color.Red);
                                continue;
                            }
                        }
                        else
                        {
                            lst_Color(i, "Erro no XML", Color.Red);
                            lista_Erros(i, "XML Shema: " + retValidar);
                            continue;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Log_Exception.Monta_ArquivoLog(ex);

                TxtResultado.AppendText("Ocorreu um erro inesperado, informe ao administrador do sistema!" + Environment.NewLine + ex.Message + Environment.NewLine);
                return;
            }
        }
コード例 #2
0
        private void Gerando_NFCe()
        {
            PedidoDao    pdDao  = new PedidoDao();
            XMLDao       xmlDao = new XMLDao();
            StreamWriter Grava;

            string retValidar;
            string strProc;
            string strXmlProcNfe;
            int    nPosI;
            int    nPosF;

            string cStatus_LoteProcessado;
            string cStatus_Autorizado;

            //TxtResultado.Text = string.Empty;
            //txtDadosXML.Text = string.Empty;


            try
            {
                retTransmitir = string.Empty;
                retValidar    = string.Empty;

                cStatus_LoteProcessado = string.Empty;
                cStatus_Autorizado     = string.Empty;

                try
                {
                    // Gerando o XML
                    xmlNFe = (gerarXml.NFe(pedido));

                    MensagemSistema("Arquivo Gerado", Color.Green);


                    txtChave.Text = gerarXml.strChave;

                    // Assinando o XML
                    xmlNFe_Assinado = assinarXml.AssinaXML(xmlNFe.InnerXml, "infNFe", Certificado.getInstance.oCertificado);
                }
                catch (Exception ex)
                {
                    Log_Exception.Monta_ArquivoLog(ex);
                    MensagemSistema("** Erro ao ASSINAR **" + Environment.NewLine + "Erro: " + ex.Message, Color.Maroon);
                    return;
                }

                MensagemSistema("Arquivo Assinado", Color.Green);

                try
                {
                    // Validando o XML
                    retValidar = validarXml.Valida(xmlNFe_Assinado, "NFe");
                }
                catch (Exception ex)
                {
                    Log_Exception.Monta_ArquivoLog(ex);

                    MensagemSistema("** Erro ao VALIDAR **" + Environment.NewLine + "Erro: " + ex.Message, Color.Maroon);
                    return;
                }


                //Inserindo a URL QRCode no xml já assinado
                xmlNFe_Assinado.LoadXml(xmlNFe_Assinado.InnerXml.Replace("</infNFe>", "</infNFe><infNFeSupl><qrCode><![CDATA[" +
                                                                         gerarXml.Gera_Url_QRCode(xmlNFe_Assinado, pedido) + "]]></qrCode></infNFeSupl>"));



                //==========================================================================
                string caminho = @"C:\Documents and Settings\Renan\Desktop\XmlAssinado.xml";
                Grava = File.CreateText(caminho);
                Grava.Write(xmlNFe_Assinado.InnerXml);
                Grava.Close();
                //==========================================================================



                if (retValidar == string.Empty)
                {
                    try
                    {
                        MensagemSistema("Enviando a NFC-e", Color.Black);

                        // Recebendo o XML de retorno da transmissão
                        retTransmitir = transmitirXml.XML_NFCe(xmlNFe_Assinado, pedido.nfiscal, Certificado.getInstance.oCertificado);

                        if (retTransmitir.Substring(0, 4) != "Erro")
                        {
                            XmlDocument xmlRetorno = new XmlDocument();
                            xmlRetorno.LoadXml(retTransmitir);

                            // Lote processado
                            if (xmlRetorno.GetElementsByTagName("cStat")[0].InnerText == "104")
                            {
                                // Autorizado
                                if (xmlRetorno.GetElementsByTagName("cStat")[1].InnerText == "100")
                                {
                                    try
                                    {
                                        MensagemSistema("Autorizado o uso da NFC-e", Color.Green);

                                        pedido.chave     = xmlRetorno.GetElementsByTagName("chNFe")[0].InnerText;
                                        pedido.protocolo = xmlRetorno.GetElementsByTagName("nProt")[0].InnerText;

                                        txtProtocolo.Text = pedido.protocolo;
                                        txtData.Text      = DateTime.Now.ToString();

                                        // Separar somente o conteúdo a partir da tag <protNFe> até </protNFe>
                                        nPosI   = retTransmitir.IndexOf("<protNFe");
                                        nPosF   = retTransmitir.Length - (nPosI + 13);
                                        strProc = retTransmitir.Substring(nPosI, nPosF);

                                        // XML pronto para salvar
                                        strXmlProcNfe = @"<?xml version=""1.0"" encoding=""utf-8"" ?><nfeProc xmlns=""http://www.portalfiscal.inf.br/nfe"" versao=""3.10"">" + xmlNFe_Assinado.InnerXml + strProc + "</nfeProc>";

                                        pedido.xml            = new XML();
                                        pedido.xml.numdoc     = pedido.numdoc;
                                        pedido.xml.arquivoXML = strXmlProcNfe;
                                        pedido.xml.data       = DateTime.Now;
                                        pedido.xml.Modelo     = pedido.modelo;


                                        if (GerarXML.str_Ambiente == "1")
                                        {
                                            //SalvarArquivoXML_Pasta(i);
                                        }

                                        //SalvarArquivoXML_Pasta(@"C:\Documents and Settings\Renan\Desktop\NFCE EMITIDA.xml", pedido.xml.arquivoXML);



                                        //==========================================================================
                                        caminho = @"C:\Documents and Settings\Renan\Desktop\NFCE EMITIDA.xml";
                                        Grava   = File.CreateText(caminho);
                                        Grava.Write(strXmlProcNfe);
                                        Grava.Close();
                                        //==========================================================================



                                        // Salvando o xml no Banco de Dados
                                        if (xmlDao.Grava_XML(pedido.xml))
                                        {
                                            // Atualizando o pedido com Chave e Protocolo
                                            if (pdDao.Update_ChaveProtocolo(pedido.numdoc, pedido.chave, pedido.protocolo))
                                            {
                                                //Atualizando a data do pedido
                                                pdDao.Update_DataNFiscal(pedido.numdoc, DateTime.Now);
                                            }
                                        }
                                        else
                                        {
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        Log_Exception.Monta_ArquivoLog(ex);
                                        MensagemSistema("** NOTA EMITIDA **, mas houve um erro inesperado ao salvar (005)" + Environment.NewLine + "Erro: " + ex.Message, Color.Maroon);
                                        return;
                                    }
                                }
                                else
                                {
                                    MensagemSistema("Erro ao Transmitir (004)" + Environment.NewLine + "Erro: " + xmlRetorno.GetElementsByTagName("xMotivo")[1].InnerText, Color.Maroon);
                                    return;
                                }
                            }
                            else
                            {
                                MensagemSistema("Erro ao Transmitir (003)" + Environment.NewLine + "Erro: " + xmlRetorno.GetElementsByTagName("xMotivo")[0].InnerText, Color.Maroon);
                                return;
                            }
                        }
                        else
                        {
                            MensagemSistema("Erro ao Transmitir (002)" + Environment.NewLine + "Erro: " + retTransmitir, Color.Maroon);
                            return;
                        }
                    }
                    catch (Exception ex)
                    {
                        Log_Exception.Monta_ArquivoLog(ex);

                        MensagemSistema("Erro ao Transmitir (001)" + Environment.NewLine + "Erro: " + ex.Message, Color.Maroon);
                        return;
                    }
                }
                else
                {
                    MensagemSistema("Erro no XML" + Environment.NewLine + "XML Shema: " + retValidar, Color.Maroon);
                    return;
                }
            }
            catch (Exception ex)
            {
                Log_Exception.Monta_ArquivoLog(ex);
                MensagemSistema("Ocorreu um erro inesperado, informe ao administrador do sistema!" + Environment.NewLine + ex.Message, Color.Maroon);
                return;
            }
        }
コード例 #3
0
        static void Main(string[] args)
        {
            //NumDoc 154988

            (new EmitenteDao()).SelecionaEmitente();

            Certificado.getInstance.Seleciona_Certificado();

            GerarXML.str_Ambiente = "2";



            Controle control = (new ControleNFiscalDao()).getControle();

            if (control != null)
            {
                Controle.getInstance.ultima_NFCe            = control.ultima_NFCe;
                Controle.getInstance.csc_Homologacao        = control.csc_Homologacao;
                Controle.getInstance.csc_Producao           = control.csc_Producao;
                Controle.getInstance.caminho_XMLAutorizado  = control.caminho_XMLAutorizado;
                Controle.getInstance.caminho_XMLCancelado   = control.caminho_XMLCancelado;
                Controle.getInstance.caminho_XMLInutilizado = control.caminho_XMLInutilizado;

                control = null;
            }



            Pedido pedido = (new PedidoDao()).getPedido(247259);

            //pedido.cliente = (new ClienteDao()).getClientePedido(pedido.numdoc);
            pedido.cliente     = (new ClienteDao()).getClientePedido(247259);
            pedido.cliente.end = ((new EnderecoDao()).getEnderecoCliente(pedido.numdoc));

            pedido.operacao      = (new OperacaoDao()).getOperacaoPedido(pedido.numdoc);
            pedido.lstPedidoItem = (new PedidoItemDao()).getlst_Itens(pedido.numdoc);

            //pedido.emitente = (new EmitenteDao()).getEmitente();
            //pedido.emitente.endereco = (new EnderecoDao()).getEnderecoEmitente();

            ProdutoDao pd = new ProdutoDao();

            foreach (PedidoItem pedidoitem in pedido.lstPedidoItem)
            {
                pedidoitem.produto              = pd.getProduto(pedidoitem.codpro);
                pedidoitem.produto.subGrupo     = pd.getSubGrupo(pedidoitem.produto.codgrupo, pedidoitem.produto.codsubGrupo);
                pedidoitem.produto.produto_loja = new Produto_Loja {
                    desconto = 0
                };
            }

            pedido.nfiscal = "81";


            GerarXML geraxml = new GerarXML();
            var      xml     = geraxml.NFe(pedido);


            var xmlAssinado = (new AssinarXML()).AssinaXML(xml.InnerXml, "infNFe", Certificado.getInstance.oCertificado);


            //========================================================================
            var Grava = File.CreateText(@"C:\Users\Admin\Desktop\XML_GERADO.XML");

            Grava.Write(xmlAssinado.InnerXml);
            Grava.Close();
            //========================================================================



            var retValidar = (new ValidarXML()).Valida(xmlAssinado, "NFe");

            //========================================================================
            Grava = File.CreateText(@"C:\Users\Admin\Desktop\XML_VALIDADO.XML");
            Grava.Write(retValidar);
            Grava.Close();
            //========================================================================


            var urlQRCode = geraxml.Gera_Url_QRCode(xmlAssinado, pedido);

            //Inserindo a URL QRCode no xml já assinado
            xmlAssinado.LoadXml(xmlAssinado.InnerXml.Replace("</infNFe>", "</infNFe><infNFeSupl><qrCode><![CDATA[" + urlQRCode + "]]></qrCode><urlChave>http://www4.fazenda.rj.gov.br/consultaNFCe/QRCode</urlChave></infNFeSupl>"));


            //========================================================================
            Grava = File.CreateText(@"C:\Users\Admin\Desktop\XML_ASSINADO_QRCODE.XML");
            Grava.Write(xmlAssinado.InnerXml);
            Grava.Close();
            //========================================================================


            string retTransmitir = "";

            if (retValidar == string.Empty)
            {
                retTransmitir = (new TransmitirXML()).XML_NFCe4(xmlAssinado, pedido.nfiscal, Certificado.getInstance.oCertificado);
            }
            else
            {
                Console.Write(retValidar);
            }


            //========================================================================
            Grava = File.CreateText(@"C:\Users\Admin\Desktop\XML_EMITIDO.XML");
            Grava.Write(retTransmitir);
            Grava.Close();
            //========================================================================



            //MP2032.ConfiguraModeloImpressora(7); // Bematech MP-4200 TH
            //MP2032.IniciaPorta("USB");

            //pedido.chave = "33180911500080000160650010000001011757287148";

            //ProjetoPDVUtil.ImpressoraBema.GeraDANFE_NFCe(pedido, urlQRCode);


            //MP2032.FechaPorta();


            //printa(servico.GeraLote(x));



            Console.Write("Fim");
            //Console.ReadKey();
        }
コード例 #4
0
        // ========================================================================
        private bool Gera_NFCe(Pedido pedido)
        {
            var msg = new StringBuilder();

            XmlDocument xmlNFe          = new XmlDocument();
            XmlDocument xmlNFe_Assinado = new XmlDocument();

            GerarXML      gerarXml      = new GerarXML();
            AssinarXML    assinarXml    = new AssinarXML();
            ValidarXML    validarXml    = new ValidarXML();
            TransmitirXML transmitirXml = new TransmitirXML();
            Email         email         = new Email();
            XMLDao        xmlDao        = new XMLDao();

            StreamWriter Grava;

            string retValidar;
            string strProc;
            string strXmlProcNfe;
            string retTransmitir;
            string cStatus_LoteProcessado;
            string cStatus_Autorizado;

            int nPosI;
            int nPosF;

            try
            {
                retTransmitir = string.Empty;
                retValidar    = string.Empty;

                cStatus_LoteProcessado = string.Empty;
                cStatus_Autorizado     = string.Empty;

                try
                {
                    // Gerando o XML
                    xmlNFe = (gerarXml.NFe(pedido));

                    //MensagemSistema("Arquivo Gerado ...", Color.OliveDrab);

                    // Assinando o XML
                    xmlNFe_Assinado = assinarXml.AssinaXML(xmlNFe.InnerXml, "infNFe", Certificado.getInstance.oCertificado);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("** Erro ao ASSINAR XML NFC-e, tente novamente **" + Environment.NewLine + ex.Message, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }


                try
                {
                    // Validando o XML
                    retValidar = validarXml.Valida(xmlNFe_Assinado, "NFe");

                    //Inserindo a URL QRCode no xml já assinado
                    xmlNFe_Assinado.LoadXml(xmlNFe_Assinado.InnerXml.Replace("</infNFe>", "</infNFe><infNFeSupl><qrCode><![CDATA[" +
                                                                             gerarXml.Gera_Url_QRCode(xmlNFe_Assinado, pedido) + "]]></qrCode><urlChave>http://www4.fazenda.rj.gov.br/consultaNFCe/QRCode</urlChave></infNFeSupl>"));
                }
                catch (Exception ex)
                {
                    //Log_Exception.Monta_ArquivoLog(ex);
                    MessageBox.Show("** Erro ao VALIDAR XML NFC-e **" + Environment.NewLine + ex.Message, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }

                if (retValidar == string.Empty)
                {
                    try
                    {
                        //MensagemSistema("Enviando a NFC-e", Color.OliveDrab);

                        // Recebendo o XML de retorno da transmissão
                        retTransmitir = transmitirXml.XML_NFCe4(xmlNFe_Assinado, pedido.nfiscal, Certificado.getInstance.oCertificado);

                        if (retTransmitir.Substring(0, 4) != "Erro")
                        {
                            XmlDocument xmlRetorno = new XmlDocument();
                            xmlRetorno.LoadXml(retTransmitir);

                            // Lote processado
                            if (xmlRetorno.GetElementsByTagName("cStat")[0].InnerText == "104")
                            {
                                // Autorizado
                                if (xmlRetorno.GetElementsByTagName("cStat")[1].InnerText == "100")
                                {
                                    try
                                    {
                                        //MensagemSistema("Autorizado o uso da NFC-e", Color.OliveDrab);

                                        pedido.chave     = xmlRetorno.GetElementsByTagName("chNFe")[0].InnerText;
                                        pedido.protocolo = xmlRetorno.GetElementsByTagName("nProt")[0].InnerText;

                                        // Separar somente o conteúdo a partir da tag <protNFe> até </protNFe>
                                        nPosI   = retTransmitir.IndexOf("<protNFe");
                                        nPosF   = retTransmitir.Length - (nPosI + 13);
                                        strProc = retTransmitir.Substring(nPosI, nPosF);

                                        // XML pronto para salvar
                                        strXmlProcNfe = @"<?xml version=""1.0"" encoding=""utf-8"" ?><nfeProc xmlns=""http://www.portalfiscal.inf.br/nfe"" versao=""4.0"">" + xmlNFe_Assinado.InnerXml + strProc + "</nfeProc>";

                                        pedido.xml = new XML
                                        {
                                            numdoc     = pedido.numdoc,
                                            arquivoXML = strXmlProcNfe,
                                            data       = DateTime.Now,
                                            Modelo     = pedido.modelo,
                                            statNFCe   = "100"
                                        };


                                        //Salva arquivo XML no Banco SQL (NFe)
                                        if (xmlDao.Grava_XML(pedido.xml))
                                        {
                                            // Atualizando o pedido com a Chave, Protocolo, e statNFCe
                                            if ((new PedidoDao()).Update_ChaveProtocolo_condDoc_StatNFCe(pedido.numdoc, pedido.chave, pedido.protocolo, pedido.xml.statNFCe))
                                            {
                                                if (GerarXML.str_Ambiente == "1")
                                                {
                                                    if (!string.IsNullOrEmpty(Controle.getInstance.caminho_XMLAutorizado))
                                                    {
                                                        //Salvando o arquivo XML na pasta
                                                        Grava = File.CreateText(Controle.getInstance.caminho_XMLAutorizado.Remove(Controle.getInstance.caminho_XMLAutorizado.Length - 1) + DateTime.Now.Month + @"\" + pedido.chave + "-procNfe.xml");
                                                        Grava.Write(pedido.xml.arquivoXML);
                                                        Grava.Close();
                                                    }
                                                }
                                            }
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        MessageBox.Show("** NOTA EMITIDA **, mas houve um erro inesperado" + Environment.NewLine + ex.Message, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                        return(false);
                                    }
                                }
                                else
                                {
                                    //MessageBox.Show("Erro ao Transmitir(004) XML NFC-e" + Environment.NewLine + xmlRetorno.GetElementsByTagName("xMotivo")[1].InnerText, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);


                                    msg.Append("** NOTA EMITIDA **, mas houve um erro inesperado");
                                    msg.Append(Environment.NewLine);
                                    msg.Append(xmlRetorno.GetElementsByTagName("xMotivo")[1].InnerText);

                                    txtErro.Visible   = true;
                                    btnEmitir.Visible = true;

                                    txtErro.Text = msg.ToString();

                                    msg.Clear();

                                    return(false);
                                }
                            }
                            else
                            {
                                //MessageBox.Show("Erro ao Transmitir(003) XML NFC-e" + Environment.NewLine + xmlRetorno.GetElementsByTagName("xMotivo")[0].InnerText, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);

                                msg.Append("** Erro ao Transmitir(003) XML NFC-e**");
                                msg.Append(Environment.NewLine);
                                msg.Append(xmlRetorno.GetElementsByTagName("xMotivo")[0].InnerText);

                                txtErro.Visible   = true;
                                btnEmitir.Visible = true;

                                txtErro.Text = msg.ToString();

                                msg.Clear();


                                return(false);
                            }
                        }
                        else
                        {
                            //MessageBox.Show("Erro ao Transmitir(002) XML NFC-e" + Environment.NewLine + retTransmitir, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);

                            msg.Append("** Erro ao Transmitir(002) XML NFC-e **");
                            msg.Append(Environment.NewLine);
                            msg.Append(retTransmitir);

                            txtErro.Visible   = true;
                            btnEmitir.Visible = true;

                            txtErro.Text = msg.ToString();

                            msg.Clear();


                            return(false);
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Erro ao Transmitir(001) XML NFC-e" + Environment.NewLine + ex.Message, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return(false);
                    }
                }
                else
                {
                    MessageBox.Show("Erro ao validar XML NFC-e" + Environment.NewLine + retValidar, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }
            }
            catch (Exception ex)
            {
                Log_Exception.Monta_ArquivoLog(ex);
                MessageBox.Show("Ocorreu um erro inesperado, informe ao administrador do sistema!" + Environment.NewLine + ex.Message, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            return(true);
        }