Пример #1
0
        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("\\")));
                        }
                    }
                }
            }
        }
Пример #2
0
        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("\\")));
                }
            }
        }