private void btnGeraPdf_Click(object sender, EventArgs e)
        {
            try
            {
                List<DadosImpressao> objListDados = new List<DadosImpressao>();
                FileInfo[] fArquivoImprimir = null;
                belGlobais objGlobais = new belGlobais();
                DirectoryInfo dPasta = null;

                if (!belStatic.bModoContingencia)
                {
                    #region Verifica Selecionadas

                    for (int i = 0; i < dgvArquivos.RowCount; i++)
                    {
                        if (dgvArquivos["cl_imprime", i].Value != null)
                        {
                            if (dgvArquivos["cl_imprime", i].Value.ToString().Equals("True"))
                            {
                                string sProtEnvio = objGerais.VerificaCampoProtocoloEnvio(dgvArquivos["cd_conheci", i].Value.ToString());
                                if (sProtEnvio != "")
                                {
                                    DadosImpressao objDados = new DadosImpressao();
                                    objDados.sNumeroCte = dgvArquivos["cd_conheci", i].Value.ToString();
                                    objDados.sProtocolo = sProtEnvio;
                                    if (!(dgvArquivos["ds_cancelamento", i].Value).ToString().Equals(""))
                                    {
                                        objDados.Cancelado = true;
                                    }
                                    objListDados.Add(objDados);
                                }

                            }
                        }
                    }

                    #endregion
                }
                else
                {
                    #region Verifica Notas em Contingencia

                    for (int i = 0; i < dgvArquivos.RowCount; i++)
                    {
                        if (dgvArquivos["cl_imprime", i].Value != null)
                        {
                            if (dgvArquivos["cl_imprime", i].Value.ToString().Equals("True") && Convert.ToBoolean(dgvArquivos["st_cte", i].Value) == false && Convert.ToBoolean(dgvArquivos["st_contingencia", i].Value) == true)
                            {
                                DadosImpressao objDados = new DadosImpressao();
                                objDados.sNumeroCte = dgvArquivos["cd_conheci", i].Value.ToString();
                                objListDados.Add(objDados);
                            }
                        }
                    }

                    #endregion
                }
                if (objListDados.Count() > 0)
                {
                    if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
                    {
                        #region Busca Arquivos XML
                        for (int i = 0; i < objListDados.Count; i++)
                        {
                            if (!belStatic.bModoContingencia)
                            {
                                string sChaveCteRet = objGerais.BuscaChaveRetornoCte(objListDados[i].sNumeroCte);
                                string sPasta = sChaveCteRet.Substring(4, 2) + "-" + sChaveCteRet.Substring(2, 2);

                                if (!objListDados[i].Cancelado)
                                {
                                    dPasta = new DirectoryInfo(belStaticPastas.ENVIADOS + @"\\" + sPasta);
                                }
                                else
                                {
                                    dPasta = new DirectoryInfo(belStaticPastas.CANCELADOS + @"\\" + sPasta);
                                }
                                if (dPasta.Exists)
                                {
                                    fArquivoImprimir = dPasta.GetFiles("Cte_" + sChaveCteRet + ".xml");
                                    if (fArquivoImprimir.Count() == 1)
                                    {
                                        objListDados[i].bArquivoEncontrado = true;
                                        objListDados[i].sCaminhoXml = dPasta.ToString() + "\\Cte_" + sChaveCteRet + ".xml";
                                    }
                                    else
                                    {
                                        throw new Exception("Arquivo Xml não Encontrado");
                                    }
                                }
                            }
                            else
                            {
                                XmlDocument doc = new XmlDocument();

                                string sChaveCteRet = objGerais.BuscaChaveRetornoCte(objListDados[i].sNumeroCte);
                                string sPasta = sChaveCteRet.Substring(4, 2) + "-" + sChaveCteRet.Substring(2, 2);

                                dPasta = new DirectoryInfo(belStaticPastas.CONTINGENCIA + @"\\" + sPasta);
                                fArquivoImprimir = dPasta.GetFiles("*.xml", SearchOption.AllDirectories);

                                foreach (FileInfo arq in fArquivoImprimir)
                                {
                                    doc.Load(@arq.FullName);
                                    if (doc.GetElementsByTagName("infCte")[0].Attributes["Id"].Value.ToString().Replace("CTe", "").Equals(sChaveCteRet))
                                    {
                                        objListDados[i].bArquivoEncontrado = true;
                                        objListDados[i].sCaminhoXml = arq.FullName;
                                        break;
                                    }
                                }

                            }
                        }
                        #endregion

                        belPopulaDataSet objDataSet = new belPopulaDataSet();

                        dsCTe dsPadrao = new dsCTe();
                        dsCTe dsLotacao = new dsCTe();
                        dsCTe dsPadraoCancelado = new dsCTe();
                        dsCTe dsLotacaoCancelado = new dsCTe();

                        int iCount = 0;


                        for (int i = 0; i < objListDados.Count; i++)
                        {
                            if (objListDados[i].bArquivoEncontrado == true)
                            {
                                if (objDataSet.VerificaLotacao(objListDados[i].sCaminhoXml))
                                {
                                    if (!objListDados[i].Cancelado)
                                    {
                                        dsLotacao = new dsCTe();
                                        objDataSet.PopulaDataSet(dsLotacao, objListDados[i].sCaminhoXml, 1, objListDados[i].sProtocolo);
                                        GeraPDF(dsLotacao, TipoPDF.LOTACAO, objListDados[i].sNumeroCte, folderBrowserDialog1.SelectedPath);
                                        iCount++;
                                    }
                                    else
                                    {
                                        dsLotacaoCancelado = new dsCTe();
                                        objDataSet.PopulaDataSet(dsLotacaoCancelado, objListDados[i].sCaminhoXml, 1, objListDados[i].sProtocolo);
                                        GeraPDF(dsLotacaoCancelado, TipoPDF.LOTACAO_CANCELADO, objListDados[i].sNumeroCte, folderBrowserDialog1.SelectedPath);
                                        iCount++;
                                    }
                                }
                                else
                                {
                                    if (!objListDados[i].Cancelado)
                                    {
                                        dsPadrao = new dsCTe();
                                        objDataSet.PopulaDataSet(dsPadrao, objListDados[i].sCaminhoXml, 1, objListDados[i].sProtocolo);
                                        GeraPDF(dsPadrao, TipoPDF.PADRAO, objListDados[i].sNumeroCte, folderBrowserDialog1.SelectedPath);
                                        iCount++;
                                    }
                                    else
                                    {
                                        dsPadraoCancelado = new dsCTe();
                                        objDataSet.PopulaDataSet(dsPadraoCancelado, objListDados[i].sCaminhoXml, 1, objListDados[i].sProtocolo);
                                        GeraPDF(dsPadraoCancelado, TipoPDF.PADRAO_CANCELADO, objListDados[i].sNumeroCte, folderBrowserDialog1.SelectedPath);
                                        iCount++;
                                    }
                                }
                            }
                        }
                        if (iCount > 0)
                        {
                            KryptonMessageBox.Show("Arquivos PDF gerados com sucesso!", "CT-e - AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                KryptonMessageBox.Show(null, _sMessageException + (ex.InnerException != null ? ex.InnerException.Message : ex.Message).ToString(), "CT-e - AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information); ;
            }
        }
        private void btnImpressao_Click(object sender, EventArgs e)
        {
            try
            {
                List<DadosImpressao> objListDados = new List<DadosImpressao>();

                belGlobais objGlobais = new belGlobais();
                DirectoryInfo dPasta = null;
                FileInfo[] fArquivoImprimir = null;

                if (!belStatic.bModoContingencia)
                {
                    #region Verifica Selecionadas

                    for (int i = 0; i < dgvArquivos.RowCount; i++)
                    {
                        if (dgvArquivos["cl_imprime", i].Value != null)
                        {
                            if (dgvArquivos["cl_imprime", i].Value.ToString().Equals("True"))
                            {
                                //string sProtEnvio = objGerais.VerificaCampoProtocoloEnvio(dgvArquivos["cd_conheci", i].Value.ToString());
                                //if (sProtEnvio != "")
                                //{
                                DadosImpressao objDados = new DadosImpressao();
                                objDados.sNumeroCte = dgvArquivos["cd_conheci", i].Value.ToString();
                                objDados.sProtocolo = "";// sProtEnvio;
                                if (!dgvArquivos["ds_cancelamento", i].Value.ToString().Equals(""))
                                {
                                    objDados.Cancelado = true;
                                }
                                objListDados.Add(objDados);
                                //}

                            }
                        }
                    }

                    #endregion
                }
                else
                {
                    #region Verifica Notas em Contingencia

                    for (int i = 0; i < dgvArquivos.RowCount; i++)
                    {
                        if (dgvArquivos["cl_imprime", i].Value != null)
                        {
                            if (dgvArquivos["cl_imprime", i].Value.ToString().Equals("True") && Convert.ToBoolean(dgvArquivos["st_cte", i].Value) == false && Convert.ToBoolean(dgvArquivos["st_contingencia", i].Value) == true)
                            {
                                DadosImpressao objDados = new DadosImpressao();
                                objDados.sNumeroCte = dgvArquivos["cd_conheci", i].Value.ToString();
                                objListDados.Add(objDados);
                            }
                        }
                    }

                    #endregion
                }

                #region Popula Dataset com Cte Validos

                if (objListDados.Count > 0)
                {
                    for (int i = 0; i < objListDados.Count; i++)
                    {
                        if (!belStatic.bModoContingencia)
                        {
                            string sChaveCteRet = objGerais.BuscaChaveRetornoCte(objListDados[i].sNumeroCte);
                            string sPasta = sChaveCteRet.Substring(4, 2) + "-" + sChaveCteRet.Substring(2, 2);

                            if (!objListDados[i].Cancelado)
                            {
                                dPasta = new DirectoryInfo(belStaticPastas.ENVIADOS + @"\\" + sPasta);
                            }
                            else
                            {
                                dPasta = new DirectoryInfo(belStaticPastas.CANCELADOS + @"\\" + sPasta);
                            }
                            if (dPasta.Exists)
                            {
                                fArquivoImprimir = dPasta.GetFiles("Cte_" + sChaveCteRet + ".xml");
                                if (fArquivoImprimir.Count() == 1)
                                {
                                    objListDados[i].bArquivoEncontrado = true;
                                    objListDados[i].sCaminhoXml = dPasta.ToString() + "\\Cte_" + sChaveCteRet + ".xml";
                                }
                                else
                                {
                                    throw new Exception("Arquivo Xml não Encontrado");
                                }
                            }
                        }
                        else
                        {
                            XmlDocument doc = new XmlDocument();

                            string sChaveCteRet = objGerais.BuscaChaveRetornoCte(objListDados[i].sNumeroCte);
                            string sPasta = sChaveCteRet.Substring(4, 2) + "-" + sChaveCteRet.Substring(2, 2);

                            dPasta = new DirectoryInfo(belStaticPastas.CONTINGENCIA + @"\\" + sPasta);
                            fArquivoImprimir = dPasta.GetFiles("*.xml", SearchOption.AllDirectories);

                            foreach (FileInfo arq in fArquivoImprimir)
                            {
                                doc.Load(@arq.FullName);
                                if (doc.GetElementsByTagName("infCte")[0].Attributes["Id"].Value.ToString().Replace("CTe", "").Equals(sChaveCteRet))
                                {
                                    objListDados[i].bArquivoEncontrado = true;
                                    objListDados[i].sCaminhoXml = arq.FullName;
                                    break;
                                }
                            }

                        }
                    }

                    belPopulaDataSet objDataSet = new belPopulaDataSet();

                    dsCTe dsPadrao = new dsCTe();
                    dsCTe dsLotacao = new dsCTe();
                    dsCTe dsPadraoCancelado = new dsCTe();
                    dsCTe dsLotacaoCancelado = new dsCTe();

                    for (int i = 0; i < objListDados.Count; i++)
                    {
                        dsCTe dsPDF = new dsCTe();
                        if (objListDados[i].bArquivoEncontrado == true)
                        {
                            if (objDataSet.VerificaLotacao(objListDados[i].sCaminhoXml))
                            {
                                if (!objListDados[i].Cancelado)
                                {
                                    objDataSet.PopulaDataSet(dsLotacao, objListDados[i].sCaminhoXml, i + 1, objListDados[i].sProtocolo);
                                    objDataSet.PopulaDataSet(dsPDF, objListDados[i].sCaminhoXml, 1, objListDados[i].sProtocolo);
                                    GeraPDF(dsPDF, TipoPDF.LOTACAO, objListDados[i].sNumeroCte);

                                }
                                else
                                {
                                    objDataSet.PopulaDataSet(dsLotacaoCancelado, objListDados[i].sCaminhoXml, i + 1, objListDados[i].sProtocolo);
                                    objDataSet.PopulaDataSet(dsPDF, objListDados[i].sCaminhoXml, 1, objListDados[i].sProtocolo);
                                    GeraPDF(dsPDF, TipoPDF.LOTACAO_CANCELADO, objListDados[i].sNumeroCte);
                                }
                            }
                            else
                            {
                                if (!objListDados[i].Cancelado)
                                {
                                    objDataSet.PopulaDataSet(dsPadrao, objListDados[i].sCaminhoXml, i + 1, objListDados[i].sProtocolo);
                                    objDataSet.PopulaDataSet(dsPDF, objListDados[i].sCaminhoXml, 1, objListDados[i].sProtocolo);
                                    GeraPDF(dsPDF, TipoPDF.PADRAO, objListDados[i].sNumeroCte);
                                }
                                else
                                {
                                    objDataSet.PopulaDataSet(dsPadraoCancelado, objListDados[i].sCaminhoXml, i + 1, objListDados[i].sProtocolo);
                                    objDataSet.PopulaDataSet(dsPDF, objListDados[i].sCaminhoXml, 1, objListDados[i].sProtocolo);
                                    GeraPDF(dsPDF, TipoPDF.PADRAO_CANCELADO, objListDados[i].sNumeroCte);
                                }
                            }
                        }
                    }

                    if (objbelGlobais.LeRegWin("EmailAutomatico").ToString() == "True")
                    {
                        EnviaEmail(objListDados);
                    }
                    if (dsPadrao.infCte.Count() > 0)
                    {
                        ReportDocument rpt = new ReportDocument();
                        rpt.Load(Application.StartupPath + "\\Relatorios\\rptCtePadrao.rpt");
                        rpt.SetDataSource(dsPadrao);
                        rpt.Refresh();

                        frmRelatorioCte frm = new frmRelatorioCte(rpt, "Impressão de DACTE - Carga Fracionada");
                        frm.Show();
                    }
                    if (dsPadraoCancelado.infCte.Count() > 0)
                    {
                        ReportDocument rpt = new ReportDocument();
                        rpt.Load(Application.StartupPath + "\\Relatorios\\rptCtePadraoCancelado.rpt");
                        rpt.SetDataSource(dsPadraoCancelado);
                        rpt.Refresh();

                        frmRelatorioCte frm = new frmRelatorioCte(rpt, "Impressão de DACTE - Carga Fracionada(Cancelados)");
                        frm.Show();
                    }
                    if (dsLotacao.infCte.Count() > 0)
                    {
                        ReportDocument rpt = new ReportDocument();
                        rpt.Load(Application.StartupPath + "\\Relatorios\\rptCteLotacao.rpt");
                        rpt.SetDataSource(dsLotacao);
                        rpt.Refresh();

                        frmRelatorioCte frm = new frmRelatorioCte(rpt, "Impressão de DACTE - Lotação");
                        frm.Show();
                    }
                    if (dsLotacaoCancelado.infCte.Count() > 0)
                    {
                        ReportDocument rpt = new ReportDocument();
                        rpt.Load(Application.StartupPath + "\\Relatorios\\rptCteLotacaoCancelado.rpt");
                        rpt.SetDataSource(dsLotacaoCancelado);
                        rpt.Refresh();

                        frmRelatorioCte frm = new frmRelatorioCte(rpt, "Impressão de DACTE - Lotação(Cancelados)");
                        frm.Show();
                    }


                }
                else
                {
                    KryptonMessageBox.Show("Nenhum Conhecimento Válido foi Selecionado para Impressão", "CT-e - AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information); ;
                }

            }
            catch (Exception ex)
            {
                KryptonMessageBox.Show(null, _sMessageException + (ex.InnerException != null ? ex.InnerException.Message : ex.Message).ToString(), "CT-e - AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information); ;
            }


                #endregion

            CarregaGrid();
        }