private void btnBuscaRetorno_Click(object sender, EventArgs e)
        {
            frmStatusEnvioNfs objfrmStatus = null;
            try
            {
                if (belPesq.lResultPesquisa != null)
                {
                    List<belPesquisaNotas> objSelecionadas = belPesq.lResultPesquisa.Where(c => c.bSeleciona).ToList<belPesquisaNotas>();
                    List<belPesquisaNotas> objSelect = objSelecionadas.Where(c =>
                                                                       c.bDenegada == false &&
                                                                       c.bCancelado == false).ToList<belPesquisaNotas>();

                    if (objSelect.Count() == 0)
                    {
                        KryptonMessageBox.Show("Nenhuma nota Válida foi Selecionada", Mensagens.MSG_Aviso, MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }
                    if (objSelect.Count == 1)
                    {
                        if (Acesso.tipoWsNfse == Acesso.TP_WS_NFSE.DSF)
                        {
                            belPesquisaNotas objPesquisa = new belPesquisaNotas(objSelect.FirstOrDefault().sRECIBO_NF);
                            bsNotas.DataSource = objPesquisa.lResultPesquisa;
                            belCarregaDadosRPS objCarregarNotasLote = new belCarregaDadosRPS(objPesquisa.lResultPesquisa, objPesquisa.lResultPesquisa.FirstOrDefault().sRECIBO_NF);
                            belEnviarNFSeWS objEnvio = new belEnviarNFSeWS(objCarregarNotasLote);
                            string sNumeroLote = objCarregarNotasLote.objLoteEnvio.cabec.NumeroLote.ToString();
                            KryptonMessageBox.Show(objEnvio.BuscaRetorno(sNumeroLote), Mensagens.MSG_Aviso, MessageBoxButtons.OK, MessageBoxIcon.Information);
                            PesquisaNotas();
                        }
                        else
                        {
                            belPrestador objbelPrestador = new belPrestador();
                            belRecepcao objBelRecepcao = new belRecepcao();
                            objBelRecepcao.Protocolo = objBelRecepcao.BuscaNumProtocolo(objSelect[0].sCD_NFSEQ);

                            objfrmStatus = new frmStatusEnvioNfs();
                            objfrmStatus.Show();
                            objfrmStatus.Refresh();

                            string sMsgErro = objBelRecepcao.BuscaRetorno(objbelPrestador.RettcIdentificacaoPrestador(objSelect[0].sCD_NFSEQ), objfrmStatus.lblMsg, objfrmStatus.progressBarStatus);

                            if (objBelRecepcao.sCodigoRetorno.Equals("E4"))
                            {
                                objfrmStatus.Close();
                                KryptonMessageBox.Show(null, sMsgErro + Environment.NewLine + Environment.NewLine + "IMPORTANTE: Tente Buscar Retorno da NFs-e, pois o serviço do WebService está demorando para responder. ", Mensagens.CHeader, MessageBoxButtons.OK, MessageBoxIcon.Information);
                            }
                            else if (objBelRecepcao.objListaNfseRetorno.Count > 0)
                            {
                                objfrmStatus.lblMsg.Text = "Alterando Status da Nota...";
                                objfrmStatus.lblMsg.Refresh();
                                objBelRecepcao.AlteraStatusDaNota(objBelRecepcao.objListaNfseRetorno);
                                objfrmStatus.Close();
                                objBelRecepcao.VerificaNotasParaCancelar(objBelRecepcao.objListaNfseRetorno);

                                KryptonMessageBox.Show(null, objBelRecepcao.MontaMsgDeRetornoParaCliente(), Mensagens.CHeader, MessageBoxButtons.OK, MessageBoxIcon.Information);
                                //EnviaEmail(objBelRecepcao.objListaNfseRetorno);
                            }
                            else
                            {
                                objBelRecepcao.LimpaRecibo();
                                objfrmStatus.Close();
                                KryptonMessageBox.Show(null, sMsgErro + Environment.NewLine, Mensagens.CHeader, MessageBoxButtons.OK, MessageBoxIcon.Information);

                            }


                            PesquisaNotas();
                            VerificaGeneratorLote();
                        }
                    }
                    else
                    {
                        KryptonMessageBox.Show("Selecione apenas uma Nota para consultar o lote", Mensagens.MSG_Aviso, MessageBoxButtons.OK, MessageBoxIcon.Information);
                        PesquisaNotas();
                    }
                }
            }
            catch (Exception ex)
            {
                if (objfrmStatus != null)
                {
                    objfrmStatus.Close();
                }
                VerificaGeneratorLote();
                new HLPexception(ex);
            }
        }
        private void btnEnvio_Click(object sender, EventArgs e)
        {

            frmStatusEnvioNfs objfrmStatus = null;

            try
            {
                if (belPesq.lResultPesquisa != null)
                {
                    List<belPesquisaNotas> objSelecionadas = belPesq.lResultPesquisa.Where(c => c.bSeleciona).ToList<belPesquisaNotas>();
                    List<belPesquisaNotas> objSelect = objSelecionadas.Where(c =>
                                                                       c.bEnviado == false &&
                                                                       c.bDenegada == false &&
                                                                       c.bCancelado == false).ToList<belPesquisaNotas>();

                    if (Acesso.tipoWsNfse == Acesso.TP_WS_NFSE.SUSESU && objSelect.Count > 1)
                    {
                        throw new Exception("Para Enviar, só é permitido selecionar uma Nota por vez!");
                    }

                    if (objSelect.Count() > 0)
                    {
                        if (objSelect.Where(C => C.sRECIBO_NF != "").Count() > 0)
                        {
                            foreach (belPesquisaNotas nota in objSelect.Where(C => C.sRECIBO_NF != ""))
                            {
                                throw new Exception("A Nota de Sequência " + nota.sCD_NFSEQ + " Já tem um retorno Salvo no Banco de Dados, tente Buscar Retorno");
                            }
                        }
                        if (objSelect.Where(c => c.sCD_NOTAFIS == "").Count() > 0)
                        {
                            HLP.GeraXml.bel.NFe.Estrutura.belNumeroNF objbelNumeracao = new HLP.GeraXml.bel.NFe.Estrutura.belNumeroNF(objSelect.Where(c => c.sCD_NOTAFIS == "").ToList());
                            frmGeraNumeracaoNFe objfrmGeraNumeracao = new frmGeraNumeracaoNFe(objbelNumeracao, true);
                            objfrmGeraNumeracao.ShowDialog();
                        }
                        if (Acesso.tipoWsNfse == Acesso.TP_WS_NFSE.DSF)
                        {
                            belCarregaDadosRPS objCarregaDados = new belCarregaDadosRPS(objSelect);
                            frmVisualizaNfsDSF objfrm = new frmVisualizaNfsDSF(objCarregaDados.objLoteEnvio);
                            objfrm.ShowDialog();
                            if (objfrm.Cancelado)
                            {
                                throw new Exception("Envio da(s) Nota(s) de serviço foi Cancelado.");
                            }
                            objCarregaDados.CriarXml();
                            belEnviarNFSeWS objEnvio = new belEnviarNFSeWS(objCarregaDados);
                            KryptonMessageBox.Show(objEnvio.Enviar(), Mensagens.MSG_Aviso, MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        else if (Acesso.tipoWsNfse == Acesso.TP_WS_NFSE.SUSESU) // arrumar o retorno das TELAS...
                        {
                            if (objSelect.Count > 1)
                            {
                                throw new Exception("Só é permitido selecionar uma Nota por vez!");
                            }

                            bel.NFes.Susesu.belNFesSusesu objNFes = new bel.NFes.Susesu.belNFesSusesu(objSelect.FirstOrDefault());
                            Susesu.frmVisualizaNfsSusesu objFrmVisualizaSusesu = new Susesu.frmVisualizaNfsSusesu(objNFes);
                            objFrmVisualizaSusesu.ShowDialog();
                            if (!objFrmVisualizaSusesu.Cancelado)
                            {
                                objNFes.TransmiteRPS();
                            }
                        }
                        else
                        {
                            bool isCancelado = false;
                            belLoteRps objbelLoteRps = new belLoteRps();
                            tcLoteRps objLoteRps = objbelLoteRps.BuscaDadosNFes(objSelect);
                            frmVisualizaNfs objFrmVisualiza = new frmVisualizaNfs(objLoteRps);
                            objFrmVisualiza.ShowDialog();
                            isCancelado = objFrmVisualiza.Cancelado;
                            if (isCancelado)
                            {
                                throw new Exception("Envio da(s) Nota(s) Cancelado");
                            }

                            objfrmStatus = new frmStatusEnvioNfs();
                            objfrmStatus.Show();
                            objfrmStatus.lblMsg.Text = "Montando Xml...";
                            objfrmStatus.lblMsg.Refresh();
                            objfrmStatus.Refresh();

                            belCriaXmlNFs objbelCriaXmlNFs = new belCriaXmlNFs();
                            if (Acesso.tipoWsNfse == Acesso.TP_WS_NFSE.GINFES)
                            {
                                objbelCriaXmlNFs.GerarArquivoXml(objFrmVisualiza.objLoteRpsAlter);
                            }
                            else
                            {
                                objbelCriaXmlNFs.GerarArquivoXml2(objFrmVisualiza.objLoteRpsAlter);
                            }

                            objfrmStatus.lblMsg.Text = "Enviando Lote para o Webservice...";
                            objfrmStatus.lblMsg.Refresh();

                            belRecepcao objBelRecepcao = new belRecepcao(objbelCriaXmlNFs.sXmlLote, objFrmVisualiza.objLoteRpsAlter);
                            if (objBelRecepcao.sMsgTransmissao != "")
                            {
                                throw new Exception(objBelRecepcao.sMsgTransmissao);
                            }

                            objfrmStatus.lblMsg.Text = "Gravando recibo na base de dados...";
                            objfrmStatus.lblMsg.Refresh();
                            objBelRecepcao.GravaRecibo(objBelRecepcao.Protocolo, objFrmVisualiza.objLoteRpsAlter);
                            objfrmStatus.Close();
                            KryptonMessageBox.Show(null, "Lote enviado com sucesso, aguarde aproximadamente 6 min. para buscar o Retorno.", Mensagens.CHeader, MessageBoxButtons.OK, MessageBoxIcon.Information);

                            //string sMsgErro = objBelRecepcao.BuscaRetorno(objFrmVisualiza.objLoteRpsAlter.Rps[0].InfRps.Prestador, objfrmStatus.lblMsg, objfrmStatus.progressBarStatus);

                            //if (objBelRecepcao.sCodigoRetorno.Equals("E4"))
                            //{
                            //    objfrmStatus.Close();
                            //    KryptonMessageBox.Show(null, sMsgErro + Environment.NewLine + Environment.NewLine + "IMPORTANTE: Tente Buscar Retorno da NFs-e, pois o serviço do WebService está demorando para responder. ", Mensagens.CHeader, MessageBoxButtons.OK, MessageBoxIcon.Information);
                            //}
                            //else if (objBelRecepcao.objListaNfseRetorno.Count > 0)
                            //{
                            //    objfrmStatus.lblMsg.Text = "Alterando Status da Nota...";
                            //    objfrmStatus.lblMsg.Refresh();
                            //    objBelRecepcao.AlteraStatusDaNota(objBelRecepcao.objListaNfseRetorno);
                            //    objfrmStatus.Close();
                            //    objBelRecepcao.VerificaNotasParaCancelar(objBelRecepcao.objListaNfseRetorno);

                            //    KryptonMessageBox.Show(null, objBelRecepcao.MontaMsgDeRetornoParaCliente(), Mensagens.CHeader, MessageBoxButtons.OK, MessageBoxIcon.Information);
                            //    //if (Convert.ToBoolean(Acesso.EMAIL_AUTOMATICO))
                            //    //{
                            //    //    //EnviaEmail(objBelRecepcao.objListaNfseRetorno);
                            //    //}
                            //}
                            //else
                            //{
                            //    objBelRecepcao.LimpaRecibo(objFrmVisualiza.objLoteRpsAlter);
                            //    objfrmStatus.Close();
                            //    KryptonMessageBox.Show(null, sMsgErro + Environment.NewLine, Mensagens.CHeader, MessageBoxButtons.OK, MessageBoxIcon.Information);
                            //}
                        }
                    }
                    else
                    {
                        KryptonMessageBox.Show("Nenhuma nota Válida foi Selecionada", Mensagens.MSG_Aviso, MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }
                }
                PesquisaNotas();
            }
            catch (Exception ex)
            {
                if (objfrmStatus != null)
                {
                    objfrmStatus.Close();
                }

                new HLPexception(ex);
                PesquisaNotas();
            }
        }