private void ImportNfe(string path) { if (string.IsNullOrEmpty(path)) { return; } using (TFImportarNFeCTe fImport = new TFImportarNFeCTe()) { //Leitura do arquivo XML XmlDocument xml = new XmlDocument(); xml.Load(path); XmlNodeList lNo = xml.GetElementsByTagName("infNFe"); if (lNo.Count.Equals(0)) { MessageBox.Show("XML Invalido.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } #region Identificação NFe lNo = xml.GetElementsByTagName("ide"); if (lNo.Count > 0) { string tp_mov = string.Empty; foreach (XmlNode no in lNo[0].ChildNodes) { if (no.LocalName.Equals("nNF")) { nr_notafiscal.Text = no.InnerText; } else if (no.LocalName.Equals("dhEmi")) { dt_requisicao.Text = DateTime.Parse(no.InnerText).ToString("dd/MM/yyyy"); } } } #endregion #region Emitente NFe lNo = xml.GetElementsByTagName("emit"); //Criar classe Clifor rCliforEmit = new CamadaDados.Financeiro.Cadastros.TRegistro_CadClifor(); //Criar classe Endereco CamadaDados.Financeiro.Cadastros.TRegistro_CadEndereco rEndCliforEmit = new CamadaDados.Financeiro.Cadastros.TRegistro_CadEndereco(); if (lNo.Count > 0) { foreach (XmlNode no in lNo[0].ChildNodes) { if (no.LocalName.Equals("CNPJ")) { rCliforEmit.Nr_cgc = no.InnerText; rCliforEmit.Tp_pessoa = "J"; } else if (no.LocalName.Equals("CPF")) { rCliforEmit.Nr_cpf = no.InnerText; rCliforEmit.Tp_pessoa = "F"; } else if (no.LocalName.Equals("xNome")) { rCliforEmit.Nm_clifor = no.InnerText; } else if (no.LocalName.Equals("xFant")) { rCliforEmit.Nm_fantasia = no.InnerText; } else if (no.LocalName.Equals("IE")) { rEndCliforEmit.Insc_estadual = no.InnerText; } } //Buscar fornecedor lFornec = CamadaNegocio.Financeiro.Cadastros.TCN_CadClifor.Busca_Clifor(string.Empty, string.Empty, string.Empty, string.IsNullOrEmpty(rCliforEmit.Nr_cgc.SoNumero()) ? string.Empty : Convert.ToUInt64(rCliforEmit.Nr_cgc).ToString(@"00\.000\.000\/0000\-00"), string.IsNullOrEmpty(rCliforEmit.Nr_cpf.SoNumero()) ? string.Empty : Convert.ToUInt64(rCliforEmit.Nr_cpf).ToString(@"000\.000\.000\-00"), string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, 1, null); } #endregion #region Endereco Emitente NFe lNo = xml.GetElementsByTagName("enderEmit"); if (lNo.Count > 0) { foreach (XmlNode no in lNo[0].ChildNodes) { if (no.LocalName.Equals("xLgr")) { rEndCliforEmit.Ds_endereco = no.InnerText; } else if (no.LocalName.Equals("nro")) { rEndCliforEmit.Numero = no.InnerText; } else if (no.LocalName.Equals("xCpl")) { rEndCliforEmit.Ds_complemento = no.InnerText; } else if (no.LocalName.Equals("xBairro")) { rEndCliforEmit.Bairro = no.InnerText; } else if (no.LocalName.Equals("cMun")) { rEndCliforEmit.Cd_cidade = no.InnerText; } else if (no.LocalName.Equals("xMun")) { rEndCliforEmit.DS_Cidade = no.InnerText; } else if (no.LocalName.Equals("CEP")) { rEndCliforEmit.Cep = no.InnerText; } else if (no.LocalName.Equals("fone")) { rEndCliforEmit.Fone = no.InnerText; } else if (no.LocalName.Equals("UF")) { rEndCliforEmit.UF = no.InnerText; } } //Buscar endereco fornecedor if (lFornec.Count > 0) { CamadaDados.Financeiro.Cadastros.TList_CadEndereco lEnd = CamadaNegocio.Financeiro.Cadastros.TCN_CadEndereco.Buscar(lFornec[0].Cd_clifor, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.IsNullOrEmpty(rEndCliforEmit.Cep.SoNumero()) ? string.Empty : rEndCliforEmit.Cep, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, 1, null); } } #endregion #region Destinatario NFe lNo = xml.GetElementsByTagName("dest"); if (lNo.Count > 0) { string cnpj_dest = string.Empty; foreach (XmlNode no in lNo[0].ChildNodes) { if (no.LocalName.Equals("CNPJ")) { cnpj_dest = no.InnerText; } } if (new CamadaDados.Diversos.TCD_CadEmpresa().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from VTB_FIN_Clifor x " + "where a.cd_clifor = x.cd_clifor " + "and x.nr_cgc = '" + rCliforEmit.Nr_cgc.Trim() + "')" } }, "1") == null) { MessageBox.Show("Destinatário do XML não se encontra cadastrado como empresa!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } rCliforEmit.lEndereco.Add(rEndCliforEmit); if (lFornec.Count > 0) { (bsAbastecimento.Current as CamadaDados.Frota.TRegistro_AbastVeiculo).Cd_fornecedor = lFornec[0].Cd_clifor; nm_fornecedor.Text = lFornec[0].Nm_clifor; } } #endregion #region Itens da NFe //Buscar Combustivel lNo = xml.GetElementsByTagName("det"); if (lNo.Count == 1) { foreach (XmlNode no in lNo) { rItem = new CamadaDados.Faturamento.NotaFiscal.TRegistro_ItensXMLNFe(); foreach (XmlNode noF in no.ChildNodes) { if (noF.LocalName.Equals("prod")) { foreach (XmlNode noP in noF.ChildNodes) { if (noP.LocalName.Equals("cProd")) { rItem.Cd_produto_xml = noP.InnerText; } else if (noP.LocalName.Equals("xProd")) { rItem.Ds_produto_xml = noP.InnerText; } else if (noP.LocalName.Equals("qCom")) { volume_requisicao.Value = decimal.Parse(noP.InnerText, new System.Globalization.CultureInfo("en-US")); rItem.Quantidade_xml = volume_requisicao.Value; } else if (noP.LocalName.Equals("vUnCom")) { vl_unitario.Value = decimal.Parse(noP.InnerText, new System.Globalization.CultureInfo("en-US")); } else if (noP.LocalName.Equals("vProd")) { vl_subtotal.Value = decimal.Parse(noP.InnerText, new System.Globalization.CultureInfo("en-US")); } } } } //Buscar produto no sistema if (rCliforEmit != null) { CamadaDados.Estoque.Cadastros.TList_CadProduto lProd = new CamadaDados.Estoque.Cadastros.TCD_CadProduto().Select( new TpBusca[] { new TpBusca() { vNM_Campo = "isnull(a.st_registro, 'A')", vOperador = "<>", vVL_Busca = "'C'" }, new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from TB_EST_Produto_X_Fornecedor x " + "where x.cd_produto = a.cd_produto " + "and x.codigo_fornecedor = '" + rItem.Cd_produto_xml.Trim() + "' " + "and x.cd_fornecedor = '" + lFornec[0].Cd_clifor.Trim() + "')" } }, 1, string.Empty, string.Empty, string.Empty); if (lProd.Count.Equals(1)) { rItem.rProd = lProd[0]; rItem.Cd_produto = lProd[0].CD_Produto; rItem.Ds_produto = lProd[0].DS_Produto; cd_produto.Text = rItem.Cd_produto; ds_produto.Text = rItem.Ds_produto; } (bsAbastecimento.Current as CamadaDados.Frota.TRegistro_AbastVeiculo).rProdForn = rItem; } #endregion if (!System.IO.Directory.Exists(Utils.SettingsUtils.Default.Path_XML_NFe_CTe + System.IO.Path.DirectorySeparatorChar.ToString() + "bkp")) { System.IO.Directory.CreateDirectory(Utils.SettingsUtils.Default.Path_XML_NFe_CTe + System.IO.Path.DirectorySeparatorChar.ToString() + "bkp"); } if (!System.IO.File.Exists(Utils.SettingsUtils.Default.Path_XML_NFe_CTe + System.IO.Path.DirectorySeparatorChar.ToString() + "bkp" + System.IO.Path.DirectorySeparatorChar.ToString() + path.Substring(path.LastIndexOf("\\"), path.Trim().Length - path.LastIndexOf("\\")))) { System.IO.File.Move(path, Utils.SettingsUtils.Default.Path_XML_NFe_CTe + System.IO.Path.DirectorySeparatorChar.ToString() + "bkp" + System.IO.Path.DirectorySeparatorChar.ToString() + path.Substring(path.LastIndexOf("\\"), path.Trim().Length - path.LastIndexOf("\\"))); } } } } }
private void ImportNfe(string path) { if (string.IsNullOrEmpty(path)) { return; } using (TFImportarNFeCTe fImport = new TFImportarNFeCTe()) { //Leitura do arquivo XML XmlDocument xml = new XmlDocument(); xml.Load(path); XmlNodeList lNo = xml.GetElementsByTagName("infNFe"); if (lNo.Count.Equals(0)) { MessageBox.Show("XML Invalido.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } #region Identificação NFe lNo = xml.GetElementsByTagName("ide"); if (lNo.Count > 0) { string tp_mov = string.Empty; foreach (XmlNode no in lNo[0].ChildNodes) { if (no.LocalName.Equals("nNF")) { nr_notafiscal.Text = no.InnerText; } else if (no.LocalName.Equals("dhEmi")) { dt_realizada.Text = DateTime.Parse(no.InnerText).ToString("dd/MM/yyyy"); } } } lNo = xml.GetElementsByTagName("total"); if (lNo.Count > 0) { foreach (XmlNode noT in lNo[0].ChildNodes) { if (noT.LocalName.Equals("ICMSTot")) { foreach (XmlNode noIT in noT.ChildNodes) { if (noIT.LocalName.Equals("vNF")) { vl_realizado.Value = decimal.Parse(noIT.InnerText, new System.Globalization.CultureInfo("pt-BR")); } } } } } #endregion #region Emitente NFe lNo = xml.GetElementsByTagName("emit"); //Criar classe Clifor rCliforEmit = new CamadaDados.Financeiro.Cadastros.TRegistro_CadClifor(); //Criar classe Endereco CamadaDados.Financeiro.Cadastros.TRegistro_CadEndereco rEndCliforEmit = new CamadaDados.Financeiro.Cadastros.TRegistro_CadEndereco(); if (lNo.Count > 0) { foreach (XmlNode no in lNo[0].ChildNodes) { if (no.LocalName.Equals("CNPJ")) { rCliforEmit.Nr_cgc = no.InnerText; rCliforEmit.Tp_pessoa = "J"; } else if (no.LocalName.Equals("CPF")) { rCliforEmit.Nr_cpf = no.InnerText; rCliforEmit.Tp_pessoa = "F"; } else if (no.LocalName.Equals("xNome")) { rCliforEmit.Nm_clifor = no.InnerText; } else if (no.LocalName.Equals("xFant")) { rCliforEmit.Nm_fantasia = no.InnerText; } else if (no.LocalName.Equals("IE")) { rEndCliforEmit.Insc_estadual = no.InnerText; } } //Buscar fornecedor lFornec = CamadaNegocio.Financeiro.Cadastros.TCN_CadClifor.Busca_Clifor(string.Empty, string.Empty, string.Empty, string.IsNullOrEmpty(rCliforEmit.Nr_cgc.SoNumero()) ? string.Empty : Convert.ToUInt64(rCliforEmit.Nr_cgc).ToString(@"00\.000\.000\/0000\-00"), string.IsNullOrEmpty(rCliforEmit.Nr_cpf.SoNumero()) ? string.Empty : Convert.ToUInt64(rCliforEmit.Nr_cpf).ToString(@"000\.000\.000\-00"), string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, 1, null); } #endregion #region Endereco Emitente NFe lNo = xml.GetElementsByTagName("enderEmit"); if (lNo.Count > 0) { foreach (XmlNode no in lNo[0].ChildNodes) { if (no.LocalName.Equals("xLgr")) { rEndCliforEmit.Ds_endereco = no.InnerText; } else if (no.LocalName.Equals("nro")) { rEndCliforEmit.Numero = no.InnerText; } else if (no.LocalName.Equals("xCpl")) { rEndCliforEmit.Ds_complemento = no.InnerText; } else if (no.LocalName.Equals("xBairro")) { rEndCliforEmit.Bairro = no.InnerText; } else if (no.LocalName.Equals("cMun")) { rEndCliforEmit.Cd_cidade = no.InnerText; } else if (no.LocalName.Equals("xMun")) { rEndCliforEmit.DS_Cidade = no.InnerText; } else if (no.LocalName.Equals("CEP")) { rEndCliforEmit.Cep = no.InnerText; } else if (no.LocalName.Equals("fone")) { rEndCliforEmit.Fone = no.InnerText; } else if (no.LocalName.Equals("UF")) { rEndCliforEmit.UF = no.InnerText; } } //Buscar endereco fornecedor if (lFornec.Count > 0) { CamadaDados.Financeiro.Cadastros.TList_CadEndereco lEnd = CamadaNegocio.Financeiro.Cadastros.TCN_CadEndereco.Buscar(lFornec[0].Cd_clifor, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.IsNullOrEmpty(rEndCliforEmit.Cep.SoNumero()) ? string.Empty : rEndCliforEmit.Cep, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, 1, null); } } #endregion #region Destinatario NFe lNo = xml.GetElementsByTagName("dest"); if (lNo.Count > 0) { string cnpj_dest = string.Empty; foreach (XmlNode no in lNo[0].ChildNodes) { if (no.LocalName.Equals("CNPJ")) { cnpj_dest = no.InnerText; } } if (new CamadaDados.Diversos.TCD_CadEmpresa().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from VTB_FIN_Clifor x " + "where a.cd_clifor = x.cd_clifor " + "and x.nr_cgc = '" + rCliforEmit.Nr_cgc.Trim() + "')" } }, "1") == null) { MessageBox.Show("Destinatário do XML não se encontra cadastrado como empresa!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } rCliforEmit.lEndereco.Add(rEndCliforEmit); if (lFornec.Count > 0) { cd_cliforOficina.Text = lFornec[0].Cd_clifor; nm_cliforOficina.Text = lFornec[0].Nm_clifor; } } #endregion if (!System.IO.Directory.Exists(Utils.SettingsUtils.Default.Path_XML_NFe_CTe + System.IO.Path.DirectorySeparatorChar.ToString() + "bkp")) { System.IO.Directory.CreateDirectory(Utils.SettingsUtils.Default.Path_XML_NFe_CTe + System.IO.Path.DirectorySeparatorChar.ToString() + "bkp"); } if (!System.IO.File.Exists(Utils.SettingsUtils.Default.Path_XML_NFe_CTe + System.IO.Path.DirectorySeparatorChar.ToString() + "bkp" + System.IO.Path.DirectorySeparatorChar.ToString() + path.Substring(path.LastIndexOf("\\"), path.Trim().Length - path.LastIndexOf("\\")))) { System.IO.File.Move(path, Utils.SettingsUtils.Default.Path_XML_NFe_CTe + System.IO.Path.DirectorySeparatorChar.ToString() + "bkp" + System.IO.Path.DirectorySeparatorChar.ToString() + path.Substring(path.LastIndexOf("\\"), path.Trim().Length - path.LastIndexOf("\\"))); } } }