protected void btnEmitir_Click(object sender, EventArgs e)
        {
            try
            {
                var retornoEmissao = ManifestoEletronicoDAO.Instance.EmitirMDFe(idMDFe.GetValueOrDefault(), false);
                if (retornoEmissao != "Arquivo recebido com sucesso")
                {
                    // Se houver falha de emissão do MDFe por erro de conexão, verifica se o usuário deseja emitir em contingencia offline
                    if (retornoEmissao.Contains("Impossível conectar-se ao servidor remoto"))
                    {
                        Response.Redirect("~/Listas/LstManifestoEletronico.aspx?FalhaEmitirMDFe=true&IdMDFe=" + idMDFe.GetValueOrDefault());
                    }

                    // Redireciona para a lista com a mensagem de retorno
                    Response.Redirect("~/Listas/LstManifestoEletronico.aspx?Retorno=" + retornoEmissao);
                }

                // Consulta a situação
                var retorno = ConsultaSituacao.ConsultaSitLoteMDFe(idMDFe.GetValueOrDefault());
                Response.Redirect("~/Listas/LstManifestoEletronico.aspx?Retorno=" + retorno);
            }
            catch (Exception ex)
            {
                // Se for erro na validação do arquivo XML, abre popup para mostrar erros
                if (ex.Message.Contains("XML inconsistente."))
                {
                    string msg = MensagemAlerta.FormatErrorMsg("", ex).Replace("XML inconsistente.", "").Replace("Linha:", "%bl%%bl%Linha:");
                    ClientScript.RegisterClientScriptBlock(typeof(string), "msg", "openWindow(410, 540, '../Utils/ShowMsg.aspx?title=Falha na validação do arquivo do MDF-e&msg=" + msg + "')", true);
                }
                else
                {
                    MensagemAlerta.ErrorMsg("Falha ao emitir o MDFe.", ex, Page);
                }
            }
        }
        protected void grdManifestoEletronico_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "ConsultaSitLoteMDFe")
            {
                try
                {
                    // Consulta a situação do lote e da MDFe, caso o lote tenha sido processado
                    string msg = ConsultaSituacao.ConsultaSitLoteMDFe(Glass.Conversoes.StrParaInt(e.CommandArgument.ToString()));
                    MensagemAlerta.ShowMsg(msg, Page);

                    grdManifestoEletronico.DataBind();
                }
                catch (Exception ex)
                {
                    MensagemAlerta.ErrorMsg("Falha ao consultar situação.", ex, Page);
                }
            }
            else if (e.CommandName == "ConsultaSitMDFe")
            {
                try
                {
                    // Consulta a situação do lote e do MDFe, caso o lote tenha sido processado
                    string msg = ConsultaSituacao.ConsultaSitMDFe(Glass.Conversoes.StrParaInt(e.CommandArgument.ToString()));
                    MensagemAlerta.ShowMsg(msg, Page);

                    grdManifestoEletronico.DataBind();
                }
                catch (Exception ex)
                {
                    MensagemAlerta.ErrorMsg("Falha ao consultar situação.", ex, Page);
                }
            }
            else if (e.CommandName == "EmitirMDFeOffline")
            {
                try
                {
                    var idManifestoEletronico = Glass.Conversoes.StrParaInt(e.CommandArgument.ToString());
                    var retorno = ManifestoEletronicoDAO.Instance.EmitirMDFeOffline(idManifestoEletronico);

                    // Consulta a situação se o arquivo tiver sido enviado corretamente.
                    if (retorno == "Arquivo recebido com sucesso")
                    {
                        retorno = ConsultaSituacao.ConsultaSitLoteMDFe(idManifestoEletronico);
                    }

                    Response.Redirect("~/Listas/LstManifestoEletronico.aspx?Retorno=" + retorno);
                }
                catch (Exception ex)
                {
                    // Se for erro na validação do arquivo XML, abre popup para mostrar erros
                    if (ex.Message.Contains("XML inconsistente."))
                    {
                        string msg = MensagemAlerta.FormatErrorMsg("", ex).Replace("XML inconsistente.", "").Replace("Linha:", "%bl%%bl%Linha:");
                        ClientScript.RegisterClientScriptBlock(typeof(string), "msg", "openWindow(410, 540, '../Utils/ShowMsg.aspx?title=Falha na validação do arquivo do MDF-e&msg=" + msg + "')", true);
                    }
                    else
                    {
                        MensagemAlerta.ErrorMsg("Falha ao emitir o MDFe.", ex, Page);
                    }
                }
            }
        }