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(); } }
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(); } }