示例#1
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();
            }
        }
示例#2
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();
            }
        }