Ejemplo n.º 1
0
 public frmBuscaRetorno(belBusRetFazenda objbusretfazenda)
 {
     InitializeComponent();
     _objbelBuscaRetFazendo = objbusretfazenda;
     _objbelBuscaRetFazendo._lblQtde = this.lblTentativas;
     workThread = new Thread(_objbelBuscaRetFazendo.BuscaRetorno);
     _objbelBuscaRetFazendo.bStopRetorno = false;
     tempo.Start();
     workThread.Start();
     while (!workThread.IsAlive) ;
     Thread.Sleep(1);
 }
Ejemplo n.º 2
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;
            }
        }
Ejemplo n.º 3
0
        private void btnBuscaRetorno_Click(object sender, EventArgs e)
        {
            try
            {
                List<belPesquisaNotas> objSelect = BuscaNotasSelecionadas().Where(c =>
                                                                 c.sRECIBO_NF != "").ToList<belPesquisaNotas>();

                if (objSelect.Count() == 1)
                {
                    if (ValidaBuscaRetorno(objSelect))
                    {
                        //objSelect = ((List<belPesquisaNotas>)bsNotas.List).Where(c => c.sRECIBO_NF == objSelect.FirstOrDefault().sRECIBO_NF).ToList<belPesquisaNotas>();
                        belBusRetFazenda objbelRetFazenda = new belBusRetFazenda(objSelect);
                        frmBuscaRetorno objFrmBuscaRet = new frmBuscaRetorno(objbelRetFazenda);
                        objFrmBuscaRet.ShowDialog();
                        KryptonMessageBox.Show(belTrataMensagemNFe.RetornaMensagem(objbelRetFazenda.lDadosRetorno, belTrataMensagemNFe.Tipo.Envio), Mensagens.CHeader, MessageBoxButtons.OK, MessageBoxIcon.Information);
                        PesquisaNotas();
                        ValidaContadorBuscaRetorno();
                    }
                }
                else if (objSelect.Count() > 1)
                {
                    throw new Exception("Selecione apenas uma Nota para Buscar o Retorno");
                }
                else if (objSelect.Count() == 1)
                {
                    throw new Exception("Nenhum registro válido foi selecionado. A provávelmente não tem recibo de retorno salvo na Base de Dados.");
                }
            }
            catch (Exception ex)
            {
                new HLPexception(ex);
            }

        }
Ejemplo n.º 4
0
        public void EnviarNFe()
        {
            List<belPesquisaNotas> objSelect = BuscaNotasSelecionadas().Where(c =>
                                                                   c.bEnviado == false &&
                                                                   c.bDenegada == false &&
                                                                   c.bCancelado == false &&
                                                                   c.sRECIBO_NF == "").ToList<belPesquisaNotas>();
            try
            {

                frmEnviaLotes objfrmLotes = null;
                if (objSelect.Count() > 0)
                {

                    belCarregaDados objbelCarregaDados = null;

                    if (objSelect.Where(c => c.sCD_NOTAFIS == "").Count() > 0)
                    {
                        belNumeroNF objbelNumeracao = new belNumeroNF(objSelect.Where(c => c.sCD_NOTAFIS == "").ToList());
                        frmGeraNumeracaoNFe objfrmGeraNumeracao = new frmGeraNumeracaoNFe(objbelNumeracao, false);
                        if (Acesso.TP_EMIS == 3)
                        {
                            if (String.IsNullOrEmpty(Acesso.GRUPO_SCAN))
                            {
                                throw new Exception("Sistema em modo SCAN, configure um grupo de faturamento para utilizar com a série 900");
                            }
                            else
                            {
                                objfrmGeraNumeracao.cbxGrupos.cbx.SelectedValue = Acesso.GRUPO_SCAN;
                            }
                        }
                        else
                        {
                            if (String.IsNullOrEmpty(objbelNumeracao.sGrupoNF))
                            {
                                throw new Exception("Nota fiscal sem grupo de Faturamento salvo, Impossível gerar numeração.");
                            }
                            else
                            {
                                objfrmGeraNumeracao.cbxGrupos.cbx.SelectedValue = objbelNumeracao.sGrupoNF;
                            }
                        }
                        objfrmGeraNumeracao.ShowDialog();
                        if (!objfrmGeraNumeracao.bGerou)
                        {
                            throw new Exception("Transmissão de Notas abortada");
                        }

                        //Thread workThread = new Thread(objbelNumeracao.AlteraDuplicatasNFe);
                        //workThread.Start();
                        //while (!workThread.IsAlive) ;

                    }
                    if (objSelect.Where(c => c.bContingencia).Count() > 1)
                    {
                        throw new Exception("Selecione uma nota de cada vez quando houver notas de contingêcia a ser enviada.");
                    }
                    else if ((objSelect.Where(c => c.bContingencia).Count() == 1))
                    {
                        if (objSelect.Count() > 1)
                        {
                            throw new Exception("Selecione uma nota de cada vez quando houver notas de contingêcia a ser enviada.");
                        }
                        else
                        {
                            objbelCarregaDados = new belCarregaDados();
                            DirectoryInfo dinfo = new DirectoryInfo(Pastas.CONTINGENCIA);
                            FileInfo[] files = dinfo.GetFiles("*.xml");
                            string sPath = string.Empty;
                            XmlDocument xml = new XmlDocument();
                            foreach (FileInfo f in files)
                            {
                                if (f.Name.Length == 26)
                                {
                                    xml.Load(f.FullName);
                                    if (xml.GetElementsByTagName("infNFe")[0].Attributes["Id"].Value.ToString().Replace("NFe", "").Equals(objSelect.FirstOrDefault().sCHAVENFE))
                                    {
                                        sPath = f.FullName;
                                        string sPathDest = Pastas.ENVIO + "\\" + f.Name;
                                        string sPathOrigem = Pastas.CONTINGENCIA + "\\" + f.Name;
                                        if (File.Exists(sPathDest))
                                        {
                                            File.Delete(sPathDest);
                                        }
                                        File.Copy(sPathOrigem, sPathDest);
                                    }
                                }
                                else if (f.Name.Length == 52)
                                {
                                    if (f.Name.Replace("-nfe.xml", "") == objSelect.FirstOrDefault().sCHAVENFE)
                                    {
                                        string sPathDest = Pastas.ENVIO + "\\" + objSelect.FirstOrDefault().sCHAVENFE.Substring(2, 4) + "\\" + objSelect.FirstOrDefault().sCHAVENFE + "-nfe.xml";
                                        string sPathOrigem = Util.BuscaCaminhoArquivoXml(objSelect.FirstOrDefault().sCHAVENFE, 3);
                                        if (File.Exists(sPathDest))
                                        {
                                            File.Delete(sPathDest);
                                        }
                                        File.Copy(sPathOrigem, sPathDest);
                                    }
                                }
                            }
                            if (sPath == "")
                            {
                                throw new Exception("Arquivo xml do Lote não foi encontrado na pasta de Contingência.");
                            }
                            objbelCarregaDados.objbelRecepcao.TransmitirLote(sPath, objSelect);
                        }
                    }
                    else
                    {

                        objSelect = ConsultaClienteBeforeEnvio(objSelect);

                        if (objSelect.Count() > 0)
                        {
                            objfrmLotes = new frmEnviaLotes(objSelect);
                            objfrmLotes.ShowDialog();

                            //objbelCarregaDados = new belCarregaDados(objSelect);
                            //frmVisualizaNFe objfrmVisualizaNFe = new frmVisualizaNFe(objbelCarregaDados);
                            //objfrmVisualizaNFe.ShowDialog();
                            //if (objfrmVisualizaNFe.Cancelado)
                            //{
                            //    throw new Exception("Envio da(s) Nota(s) Cancelado");
                            //}
                            //objbelCarregaDados.objbelCriaXml.GeraLoteXmlEnvio();

                            //objbelCarregaDados.objbelRecepcao.TransmitirLote(objbelCarregaDados.objbelCriaXml.sPathLote, objSelect);
                            if (objfrmLotes.bCancelado == true)
                            {
                                throw new Exception("Envio da(s) Nota(s) Cancelado.");
                            }
                        }
                    }

                    if (objfrmLotes == null)
                    {
                        if (objSelect.Count() > 0)
                        {
                            belBusRetFazenda objbelRetFazenda = new belBusRetFazenda(objSelect);
                            frmBuscaRetorno objFrmBuscaRet = new frmBuscaRetorno(objbelRetFazenda);
                            objFrmBuscaRet.ShowDialog();
                            KryptonMessageBox.Show(belTrataMensagemNFe.RetornaMensagem(objbelRetFazenda.lDadosRetorno, belTrataMensagemNFe.Tipo.Envio), Mensagens.CHeader, MessageBoxButtons.OK, MessageBoxIcon.Information);
                            cboStatus.cbx.SelectedIndex = 2;
                            PesquisaNotas();

                            List<string> lsNotas = objbelRetFazenda.lDadosRetorno.Select(c => c.seqNota).ToList<string>();
                            List<belPesquisaNotas> dados = (from c in ((List<belPesquisaNotas>)bsNotas.DataSource)
                                                            where lsNotas.Contains(c.sCD_NFSEQ)
                                                            select c).ToList();
                            bsNotas.DataSource = dados;
                        }
                    }
                    else
                    {
                        cboStatus.cbx.SelectedIndex = 2;
                        PesquisaNotas();
                        if (objfrmLotes != null)
                        {
                            List<string> lsNotas = objfrmLotes.lDadosRetorno.Select(c => c.seqNota).ToList<string>();
                            List<belPesquisaNotas> dados = (from c in ((List<belPesquisaNotas>)bsNotas.DataSource)
                                                            where lsNotas.Contains(c.sCD_NFSEQ)
                                                            select c).ToList();
                            bsNotas.DataSource = dados;
                        }

                    }
                    cboStatus.cbx.SelectedIndex = 1;
                    ColoriGrid();
                    ValidaContadorBuscaRetorno();
                }
            }
            catch (Exception ex)
            {
                new HLPexception(ex);
                cboStatus.cbx.SelectedIndex = 1;
                PesquisaNotas();
            }
        }