Ejemplo n.º 1
0
        private void TransmiteLote(object l)
        {
            try
            {
                lotes lote = l as lotes;
                try
                {
                    lote.objDados.objbelCriaXml.GeraLoteXmlEnvio();
                    lote.objDados.objbelRecepcao.TransmitirLote(lote.objDados.objbelCriaXml.sPathLote, lote.lNotasPesquisa);
                    belBusRetFazenda objbelRetFazenda = new belBusRetFazenda(lote.lNotasPesquisa);
                    objbelRetFazenda.BuscaRetorno();
                    lote.xStatus = belTrataMensagemNFe.RetornaMensagem(objbelRetFazenda.lDadosRetorno, belTrataMensagemNFe.Tipo.Envio);
                    lDadosRetorno.AddRange(objbelRetFazenda.lDadosRetorno);
                    iTentativas = 0;
                }
                catch (Exception ex)
                {
                    if (ex.Message.Contains("A conexão subjacente") && iTentativas < 4)
                    {
                        iTentativas++;
                        TransmiteLote(lote);
                    }
                    else
                    {
                        lote.xStatus = "Problema com o lote, Verifique a informação abaixo:" + Environment.NewLine + ex.Message;
                        iTentativas = 0;
                    }
                }
                this.Invoke(new MethodInvoker(delegate()
                {
                    dgvLotes.Refresh();
                    txtInfoLote.Text = lote.xStatus;
                }));

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }