Exemple #1
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);
            }
        }
Exemple #2
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);
 }
Exemple #3
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;
     }
 }
Exemple #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();
            }
        }