private void Button_Click(object sender, RoutedEventArgs e) { if (TipoDeDocumento.SelectedIndex > -1 && NumeroDocumento.Text != "") { AcessoBD abd = new AcessoBD(); Logica d = new Logica(); string[,] rotulos = { { "Número", "Volumes", "SKU's", "Fornecedor", "Notas Fiscais", "Manifesto" }, { "Número", "Volumes", "CT-es", "CT-es importados", "CT-es conferidos", " " }, { "Número", "Volumes", "SKU's", "CT-e", "Fornecedor", "Cliente" } }; int numDoc = int.Parse(NumeroDocumento.Text); List <dadosPesquisa> listaDados = new List <dadosPesquisa>(); dadosPesquisa aux; listaDados.Clear(); for (int i = 0; i < 6; i++) { ListaDados.Columns[i].Header = rotulos[TipoDeDocumento.SelectedIndex, i]; } // CT-e if (TipoDeDocumento.SelectedIndex == 0) { if (d.NumeroCteExiste(numDoc)) { var ctes = abd.GetNovoCtePorNum(numDoc); foreach (var item in ctes) { aux = new dadosPesquisa() { numero = NumeroDocumento.Text.Replace("_", ""), volumes = abd.GetVolumesCte(item.idCte).ToString(), dado3 = abd.GetSkuCte(item.idCte).ToString(), dado4 = abd.GetFornecedorCte(item.idCte), dado5 = item.notasCte, dado6 = abd.GetListaManifestosCte(item.idCte) }; listaDados.Add(aux); } ListaDados.ItemsSource = listaDados; } else { Limpar(); } } // MANIFESTO else if (TipoDeDocumento.SelectedIndex == 1) { Manifestos documento = abd.GetManifestoPorNumero(numDoc); if (documento != null) { aux = new dadosPesquisa() { numero = documento.numeroManifesto.ToString(), volumes = documento.VolumesManifesto.ToString(), dado3 = documento.quantCtesManifesto.ToString(), dado4 = abd.CtesImportadosNoManifesto(numDoc).Count.ToString(), dado5 = abd.CtesConferidosNoManifesto(numDoc).Count.ToString(), dado6 = " " }; listaDados.Add(aux); ListaDados.ItemsSource = listaDados; } else { Limpar(); } } // NOTA FISCAL else if (TipoDeDocumento.SelectedIndex == 2) { var documentos = abd.GetNFPorNumero(NumeroDocumento.Text); if (documentos.Count > 0) { foreach (var documento in documentos) { string numCTE = "Não vinculado"; if (documento.CteNovoNF != null) { numCTE = abd.GetCtePorID((int)documento.CteNovoNF).numeroCte.ToString(); } aux = new dadosPesquisa() { numero = documento.numeroNF.ToString(), volumes = documento.volumesNF.ToString(), dado3 = documento.skuNF.ToString(), dado4 = numCTE, dado5 = documento.fornecedorNF, dado6 = documento.clienteNF }; listaDados.Add(aux); } ListaDados.ItemsSource = listaDados; } else { Limpar(); } } } }
/// <summary> /// Importa os dados de xml de manifestos na pasta padrão /// </summary> public bool LerPreManifesto(string nomeArquivo) { try { XmlDocument manifesto = new XmlDocument(); manifesto.Load(nomeArquivo); var ValueResult = manifesto.GetElementsByTagName("Value"); var TextResult = manifesto.GetElementsByTagName("TextValue"); AcessoBD abd = new AcessoBD(); var ctesNoXml = new List <string>(); for (int i = 5; i < ValueResult.Count - 4; i = i + 6) { ctesNoXml.Add(ValueResult[i].InnerText); } var quantCtes = ctesNoXml.Distinct().Count(); Manifestos lido = new Manifestos() { numeroManifesto = int.Parse(nomeArquivo.Replace(PastasXml.Default.PastaPreManifestos + "\\", "").Replace(".xml", "")), VolumesManifesto = (int)double.Parse(ValueResult[ValueResult.Count - 4].InnerText.Replace('.', ',')), pesoManifesto = double.Parse(ValueResult[ValueResult.Count - 2].InnerText.Replace('.', ',')), quantCtesManifesto = quantCtes }; abd.CadastrarManifesto(lido); int cte; int indexNF = 0; string fornecedor; List <Cte> ctesNoPreManifesto = new List <Cte>(); for (int i = 5; i < ValueResult.Count - 4; i = i + 6) { cte = int.Parse(ValueResult[i].InnerText.Replace('/', ' ')); Cte cteDaVez = ctesNoPreManifesto.Where(x => x.numeroCte == cte).Select(x => x).FirstOrDefault(); if (cteDaVez == null) { ctesNoPreManifesto.Add(new Cte(cte, TextResult[indexNF].InnerText.TrimStart('0'))); } else { cteDaVez.notasCte += "\\" + TextResult[indexNF].InnerText.TrimStart('0'); } fornecedor = ValueResult[i - 5].InnerText; indexNF++; } foreach (var item in ctesNoPreManifesto) { abd.CadastrarCte(new Cte(item.numeroCte, item.notasCte)); AlterarNfs(item.notasCte, item.numeroCte, fornecedor); // alterado para novo cte CriarCteManifesto(item.numeroCte, lido.numeroManifesto); } return(true); } catch { return(false); } }
/// <summary> /// Importa os dados de xml de manifestos na pasta padrão /// </summary> public bool LerManifesto(string nomeArquivo) { try { XmlDocument manifesto = new XmlDocument(); manifesto.Load(nomeArquivo); AcessoBD abd = new AcessoBD(); var result = manifesto.GetElementsByTagName("Value"); Manifestos lido = new Manifestos { numeroManifesto = int.Parse(nomeArquivo.Replace(PastasXml.Default.PastaManifestos + "\\", "").Replace(".xml", "")), VolumesManifesto = (int)double.Parse(result[result.Count - 2].InnerText.Replace('.', ',')), pesoManifesto = double.Parse(result[result.Count - 3].InnerText.Replace('.', ',')), quantCtesManifesto = (int)double.Parse(result[result.Count - 4].InnerText.Replace('.', ',')) }; abd.CadastrarManifesto(lido); int cte; NotasFiscais nfLida = new NotasFiscais(); for (int i = 0; i < result.Count - 4; i = i + 10) { cte = int.Parse(result[i].InnerText); abd.CadastrarCte(new Cte(cte, result[i + 1].InnerText)); CriarCteManifesto(cte, lido.numeroManifesto); nfLida.fornecedorNF = result[i + 2].InnerText; nfLida.clienteNF = result[i + 7].InnerText; nfLida.CteNovoNF = abd.GetNovoCtePorNum(int.Parse(result[i].InnerText)).Max(x => x.idCte); nfLida.skuNF = 0; if (!result[i + 1].InnerText.Contains("\\")) { nfLida.numeroNF = result[i + 1].InnerText; nfLida.volumesNF = (int)double.Parse(result[i + 8].InnerText.Replace('.', ',')); InserirNotaFiscal(nfLida); } else { var nfs = result[i + 1].InnerText.Split('\\'); nfLida.volumesNF = (int)System.Math.Ceiling(double.Parse(result[i + 8].InnerText.Replace('.', ',')) / nfs.Count()); //volume total pode variar por causa desse truncamento foreach (var item in nfs) { nfLida.numeroNF = item; InserirNotaFiscal(nfLida); } } // AlterarNfs(result[i + 1].InnerText, cte); } return(true); } catch (System.Exception) { return(false); } }
/// <summary> /// Importa os dados de xml de manifestos na pasta padrão /// </summary> public bool LerPreManifesto(string nomeArquivo) { try { XmlDocument manifesto = new XmlDocument(); manifesto.Load(nomeArquivo); var ValueResult = manifesto.GetElementsByTagName("Value"); var TextResult = manifesto.GetElementsByTagName("TextValue"); AcessoBD abd = new AcessoBD(); NotasFiscais nfLida = new NotasFiscais(); var ctesNoXml = new List <string>(); //------------------------- CADASTRO PRE MANIFEST0 ------------------ for (int i = 5; i < ValueResult.Count - 4; i += 6) { ctesNoXml.Add(ValueResult[i].InnerText); } Manifestos lido = new Manifestos() { numeroManifesto = int.Parse(nomeArquivo.Replace(PastasXml.Default.PastaPreManifestos + "\\", "").Replace(".xml", "")), VolumesManifesto = (int)double.Parse(ValueResult[ValueResult.Count - 4].InnerText.Replace('.', ',')), pesoManifesto = double.Parse(ValueResult[ValueResult.Count - 2].InnerText.Replace('.', ',')), quantCtesManifesto = ctesNoXml.Distinct().Count() }; abd.CadastrarManifesto(lido); //------------------------- CADASTRO CTES ------------------ int cte; int indexNF = 0; string fornecedor = ""; List <Cte> ctesNoPreManifesto = new List <Cte>(); for (int i = 5; i < ValueResult.Count - 4; i += 6) { cte = int.Parse(ValueResult[i].InnerText.Replace('/', ' ')); Cte cteDaVez = ctesNoPreManifesto.Where(x => x.numeroCte == cte).Select(x => x).FirstOrDefault(); if (cteDaVez == null) { ctesNoPreManifesto.Add(new Cte(cte, TextResult[indexNF].InnerText.TrimStart('0'))); } else { cteDaVez.notasCte += "\\" + TextResult[indexNF].InnerText.TrimStart('0'); } fornecedor = ValueResult[i - 5].InnerText; indexNF++; } foreach (var item in ctesNoPreManifesto) { abd.CadastrarCte(new Cte(item.numeroCte, item.notasCte)); CriarCteManifesto(item.numeroCte, lido.numeroManifesto); } //------------------------- CADASTRO/ALTERAÇÃO DE NF'S E EXPORTAÇÃO CROSS ------------------ indexNF = 0; for (int i = 5; i < ValueResult.Count - 4; i += 6) { nfLida.numeroNF = TextResult[indexNF].InnerText.TrimStart('0'); nfLida.fornecedorNF = ValueResult[i - 5].InnerText; nfLida.clienteNF = ValueResult[i - 4].InnerText; nfLida.CteNovoNF = abd.GetNovoCtePorNum(int.Parse(ValueResult[i].InnerText.Replace('/', ' '))).Max(x => x.idCte); nfLida.skuNF = 0; nfLida.volumesNF = int.Parse(ValueResult[i - 3].InnerText.Replace(".00", "")); //volume corrigido InserirNotaFiscal(nfLida); indexNF++; ExportarXmlCrossDocking(ValueResult[i].InnerText.Replace('/', ' '), nfLida.fornecedorNF); } return(true); } catch (System.Exception) { return(false); } }