Example #1
0
        /// <summary>
        /// Verifica se o XML de Distribuição da Nota Fiscal (-procNFe) já está na pasta de Notas Autorizadas
        /// </summary>
        /// <param name="arquivo">Arquivo XML a ser verificado</param>
        /// <param name="emissao">Data de emissão da NFe</param>
        /// <param name="extNFe">Extensão a ser substituida no arquivo</param>
        /// <param name="extArqProtNfe">Nova extensão a ser verificada</param>
        /// <returns>Se está na pasta de XML´s autorizados</returns>
        public bool EstaAutorizada(string arquivo, DateTime emissao, string extNFe, string extArqProtNfe)
        {
            int emp = Empresas.FindEmpresaByThread();

            string strNomePastaEnviado = Empresas.Configuracoes[emp].PastaXmlEnviado + "\\" +
                                         PastaEnviados.Autorizados.ToString() + "\\" +
                                         Empresas.Configuracoes[emp].DiretorioSalvarComo.ToString(emissao);

            return(File.Exists(strNomePastaEnviado + "\\" + Functions.ExtrairNomeArq(arquivo, extNFe) + extArqProtNfe));
        }
Example #2
0
        public void SalvarConfiguracao(bool validaCertificado, bool validarConfig)
        {
            bool empresaNova = false;

            try
            {
                if (Empresas.FindConfEmpresaIndex(this.CNPJ, this.Servico) == -1)
                {
                    empresaNova = true;
                    Empresas.Configuracoes.Add(this);
                }
                else
                {
                    int emp = Empresas.FindConfEmpresaIndex(this.CNPJ, this.Servico);
                    this.CopyObjectTo(Empresas.Configuracoes[emp]);
                }


                //Criptografar a senha do certificado digital para gravar no XML. Wandrey 23/09/2014
                if (validarConfig)
                {
                    new ConfiguracaoApp().ValidarConfig(validaCertificado, this);
                }

                if (!Directory.Exists(this.PastaEmpresa))
                {
                    Directory.CreateDirectory(this.PastaEmpresa);
                }

                this.CriarPastasDaEmpresa();

                Empresa dados = new Empresa();
                this.CopyObjectTo(dados);
                if (dados.UsaCertificado)
                {
                    dados.CertificadoSenha = Criptografia.criptografaSenha(dados.CertificadoSenha);
                }

                dados.CertificadoPIN = Criptografia.criptografaSenha(dados.CertificadoPIN);

                ObjectXMLSerializer objObjectXMLSerializer = new ObjectXMLSerializer();
                objObjectXMLSerializer.Save(dados, dados.NomeArquivoConfig);

                Empresas.FindConfEmpresa(this.CNPJ, this.Servico).Nome = this.Nome;
            }
            catch (Exception ex)
            {
                if (empresaNova)
                {
                    Empresas.Configuracoes.Remove(this);
                }
                throw ex;
            }
        }
Example #3
0
        public static void WriteLog(string msg, bool gravarStackTrace)
        {
#if DEBUG
            System.Diagnostics.Debug.WriteLine(msg);
#endif
            if (ConfiguracaoApp.GravarLogOperacoesRealizadas)
            {
                int emp = -1;
                if (Empresas.Configuracoes.Count != 0) //Tive que comparar aqui se tem empresas, pois quando não tem nenhuma empresa e tento consultar os certificados pela pasta geral, retorna um erro. Wandrey 02/02/2015
                {
                    try
                    {
                        emp = Empresas.FindEmpresaByThread();
                    }
                    catch { }
                }

                NFe.Components.Functions.WriteLog(msg, gravarStackTrace, true, emp >= 0 ? Empresas.Configuracoes[emp].CNPJ + "_" + Empresas.Configuracoes[emp].Servico.ToString() : "");
            }
        }
Example #4
0
 /// <summary>
 /// grava um arquivo de erro ao ERP
 /// </summary>
 /// <param name="Arquivo"></param>
 /// <param name="Erro"></param>
 public void GravarArqErroERP(string Arquivo, string Erro)
 {
     if (!string.IsNullOrEmpty(Arquivo))
     {
         try
         {
             int emp = Empresas.FindEmpresaByThread();
             if (!string.IsNullOrEmpty(Empresas.Configuracoes[emp].PastaXmlRetorno))
             {
                 //Grava arquivo de ERRO para o ERP
                 string cArqErro = Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Path.GetFileName(Arquivo);
                 File.WriteAllText(cArqErro, Erro, Encoding.Default);
             }
         }
         catch (Exception ex)
         {
             WriteLog(ex.Message, true);
         }
     }
 }
Example #5
0
        /// <summary>
        /// Método para checagem dos caminhos e sua existencia ou não no pc
        /// </summary>
        /// <param name="empresa">Empresa a ser validado os caminhos das pastas</param>
        public void ChecaCaminhoDiretorio()
        {
            FileStream arqXml = null;

            if (File.Exists(this.NomeArquivoConfig))
            {
                try
                {
                    arqXml = new FileStream(this.NomeArquivoConfig, FileMode.Open, FileAccess.Read, FileShare.Read); //Abrir um arquivo XML usando FileStrem
                    var xml = new XmlDocument();
                    xml.Load(arqXml);
                    var configList = xml.GetElementsByTagName("Empresa");
                    foreach (XmlNode configNode in configList)
                    {
                        var configElemento = (XmlElement)configNode;

                        Empresas.verificaPasta(this, configElemento, NFeStrConstants.PastaXmlEnvio, "Pasta onde serão gravados os arquivos XML´s a serem enviados individualmente para os WebServices", true);
                        Empresas.verificaPasta(this, configElemento, NFeStrConstants.PastaXmlRetorno, "Pasta onde serão gravados os arquivos XML´s de retorno dos WebServices", true);
                        Empresas.verificaPasta(this, configElemento, NFeStrConstants.PastaXmlErro, "Pasta para arquivamento temporário dos XML´s que apresentaram erro na tentativa do envio", true);
                        Empresas.verificaPasta(this, configElemento, NFeStrConstants.PastaValidar, "Pasta onde serão gravados os arquivos XML´s a serem somente validados", true);
                        if (this.Servico != TipoAplicativo.Nfse)
                        {
                            Empresas.verificaPasta(this, configElemento, NFeStrConstants.PastaXmlEnviado, "Pasta onde serão gravados os arquivos XML´s enviados", true);
                            Empresas.verificaPasta(this, configElemento, NFeStrConstants.PastaXmlEmLote, "Pasta onde serão gravados os arquivos XML´s de NF-e a serem enviadas em lote para os WebServices", false);
                            Empresas.verificaPasta(this, configElemento, NFeStrConstants.PastaBackup, "Pasta para Backup dos XML´s enviados", false);
                            Empresas.verificaPasta(this, configElemento, NFeStrConstants.PastaDownloadNFeDest, "Pasta onde serão gravados os arquivos XML´s de download de NFe de destinatários e eventos de terceiros", false);
                        }
                    }
                }
                catch
                {
                }
                finally
                {
                    if (arqXml != null)
                    {
                        arqXml.Close();
                    }
                }
            }
        }
Example #6
0
        /// <summary>
        /// Carregar as configurações de todas as empresas na coleção "Configuracoes"
        /// </summary>
        /// <remarks>
        /// Autor: Wandrey Mundin Ferreira
        /// Data: 29/07/2010
        /// </remarks>
        public static void CarregaConfiguracao()
        {
            Empresas.Configuracoes.Clear();
            Empresas.ExisteErroDiretorio = false;
            Empresas.CriarPasta(true);

            if (File.Exists(Propriedade.NomeArqEmpresas))
            {
                try
                {
                    XElement axml = XElement.Load(Propriedade.NomeArqEmpresas);
                    var      b1   = axml.Descendants(NFeStrConstants.Registro);
                    foreach (var item in b1)
                    {
                        Empresa empresa = new Empresa();

                        empresa.CNPJ    = item.Attribute(TpcnResources.CNPJ.ToString()).Value;
                        empresa.Nome    = item.Element(NFeStrConstants.Nome).Value.Trim();
                        empresa.Servico = Propriedade.TipoAplicativo;
                        if (item.Attribute(NFeStrConstants.Servico) != null)
                        {
                            empresa.Servico = (TipoAplicativo)Convert.ToInt16(item.Attribute(NFeStrConstants.Servico).Value.Trim());
                        }

                        string cArqErro = null;
                        bool   erro     = false;

                        try
                        {
                            int    tipoerro = 0;
                            string rc       = empresa.BuscaConfiguracao(ref tipoerro);
                            switch (tipoerro)
                            {
                            case 0:
                                string uf = GetUF(empresa.UnidadeFederativaCodigo);
                                if (uf != null)
                                {
                                    empresa.URLConsultaDFe = ConfiguracaoApp.CarregarURLConsultaDFe(uf);
                                }
                                break;

                            case 1:
                                erro = true;
                                throw new Exception(rc);

                            case 2:
                                throw new Exception(rc);
                            }
                        }
                        catch (Exception ex)
                        {
                            try
                            {
                                ///
                                /// nao acessar o metodo Auxiliar.GravarArqErroERP(string Arquivo, string Erro) já que nela tem a pesquisa da empresa
                                /// com base em "int emp = Empresas.FindEmpresaByThread();" e neste ponto ainda não foi criada
                                /// as thread's
                                cArqErro = CriaArquivoDeErro(empresa, cArqErro);

                                //Grava arquivo de ERRO para o ERP
                                File.WriteAllText(cArqErro, ex.Message);//, Encoding.Default);
                            }
                            catch { }
                        }
                        if (!erro)
                        {
                            ///
                            /// mesmo com erro, adicionar a lista para que o usuário possa altera-la
                            empresa.ChecaCaminhoDiretorio();

                            if (!string.IsNullOrEmpty(Empresas.ErroCaminhoDiretorio) && Empresas.ExisteErroDiretorio)
                            {
                                try
                                {
                                    if (cArqErro == null)
                                    {
                                        cArqErro = CriaArquivoDeErro(empresa, cArqErro);
                                    }
                                    //Grava arquivo de ERRO para o ERP
                                    File.AppendAllText(cArqErro, "Erros de diretorios:\r\n\r\n" + Empresas.ErroCaminhoDiretorio, Encoding.Default);
                                }
                                catch { }
                            }
                            Configuracoes.Add(empresa);
                        }
                    }
                }
                catch
                {
                    throw;
                }
            }
            if (!Empresas.ExisteErroDiretorio)
            {
                Empresas.CriarPasta(false);
            }
        }
Example #7
0
        /// <summary>
        /// Carregar as configurações de todas as empresas na coleção "Configuracoes"
        /// </summary>
        /// <remarks>
        /// Autor: Wandrey Mundin Ferreira
        /// Data: 29/07/2010
        /// </remarks>
        public static void CarregaConfiguracao()
        {
            Empresas.Configuracoes.Clear();
            ExisteErroDiretorio = false;

            if (File.Exists(Propriedade.NomeArqEmpresas))
            {
                //FileStream arqXml = null;

                try
                {
                    XElement axml = XElement.Load(Propriedade.NomeArqEmpresas);
                    var      b1   = axml.Descendants(NFe.Components.NFeStrConstants.Registro);
                    foreach (var item in b1)
                    {
                        Empresa empresa = new Empresa();

                        empresa.CNPJ    = item.Attribute(NFe.Components.TpcnResources.CNPJ.ToString()).Value;
                        empresa.Nome    = item.Element(NFe.Components.NFeStrConstants.Nome).Value.Trim();
                        empresa.Servico = Propriedade.TipoAplicativo;
                        if (item.Attribute(NFe.Components.NFeStrConstants.Servico) != null)
                        {
                            empresa.Servico = (TipoAplicativo)Convert.ToInt16(item.Attribute(NFe.Components.NFeStrConstants.Servico).Value.Trim());
                        }

                        try
                        {
                            empresa.BuscaConfiguracao();
                        }
                        catch (Exception ex)
                        {
                            try
                            {
                                ///
                                /// nao acessar o metodo Auxiliar.GravarArqErroERP(string Arquivo, string Erro) já que nela tem a pesquisa da empresa
                                /// com base em "int emp = Empresas.FindEmpresaByThread();" e neste ponto ainda não foi criada
                                /// as thread's
                                string cArqErro;
                                if (string.IsNullOrEmpty(empresa.PastaXmlRetorno))
                                {
                                    cArqErro = Path.Combine(Propriedade.PastaExecutavel, string.Format(Propriedade.NomeArqERRUniNFe, DateTime.Now.ToString("yyyyMMddTHHmmss")));
                                }
                                else
                                {
                                    cArqErro = Path.Combine(empresa.PastaXmlRetorno, string.Format(Propriedade.NomeArqERRUniNFe, DateTime.Now.ToString("yyyyMMddTHHmmss")));
                                }

                                //Grava arquivo de ERRO para o ERP
                                File.WriteAllText(cArqErro, ex.Message, Encoding.Default);
                            }
                            catch { }
                        }
                        ///
                        /// mesmo com erro, adicionar a lista para que o usuário possa altera-la
                        empresa.ChecaCaminhoDiretorio();

                        Configuracoes.Add(empresa);
                    }
#if false
                    arqXml = new FileStream(Propriedade.NomeArqEmpresas, FileMode.Open, FileAccess.Read, FileShare.Read); //Abrir um arquivo XML usando FileStream

                    var xml = new XmlDocument();
                    xml.Load(arqXml);

                    var empresaList = xml.GetElementsByTagName("Empresa");

                    foreach (XmlNode empresaNode in empresaList)
                    {
                        var empresaElemento = (XmlElement)empresaNode;

                        var registroList = xml.GetElementsByTagName(NFe.Components.NFeStrConstants.Registro);

                        for (int i = 0; i < registroList.Count; i++)
                        {
                            Empresa empresa = new Empresa();

                            var registroNode     = registroList[i];
                            var registroElemento = (XmlElement)registroNode;

                            empresa.CNPJ    = registroElemento.GetAttribute(NFe.Components.NFeStrConstants.CNPJ).Trim();
                            empresa.Nome    = registroElemento.GetElementsByTagName(NFe.Components.NFeStrConstants.Nome)[0].InnerText.Trim();
                            empresa.Servico = Propriedade.TipoAplicativo;// TipoAplicativo.Nfe;
                            if (registroElemento.GetAttribute(NFe.Components.NFeStrConstants.Servico) != "")
                            {
                                empresa.Servico = (TipoAplicativo)Convert.ToInt16(registroElemento.GetAttribute(NFe.Components.NFeStrConstants.Servico).Trim());
                            }

                            try
                            {
                                empresa.BuscaConfiguracao();
                            }
                            catch (Exception ex)
                            {
                                ///
                                /// nao acessar o metodo Auxiliar.GravarArqErroERP(string Arquivo, string Erro) já que nela tem a pesquisa da empresa
                                /// com base em "int emp = Empresas.FindEmpresaByThread();" e neste ponto ainda não foi criada
                                /// as thread's
                                string cArqErro;
                                if (string.IsNullOrEmpty(empresa.PastaXmlRetorno))
                                {
                                    cArqErro = Path.Combine(Propriedade.PastaExecutavel, string.Format(Propriedade.NomeArqERRUniNFe, DateTime.Now.ToString("yyyyMMddTHHmmss")));
                                }
                                else
                                {
                                    cArqErro = Path.Combine(empresa.PastaXmlRetorno, string.Format(Propriedade.NomeArqERRUniNFe, DateTime.Now.ToString("yyyyMMddTHHmmss")));
                                }

                                try
                                {
                                    //Grava arquivo de ERRO para o ERP
                                    File.WriteAllText(cArqErro, ex.Message, Encoding.Default);
                                }
                                catch { }
                            }
                            ///
                            /// mesmo com erro, adicionar a lista para que o usuário possa altera-la
                            empresa.ChecaCaminhoDiretorio();

                            Configuracoes.Add(empresa);
                        }
                    }
                    arqXml.Close();
                    arqXml = null;
#endif
                }
                catch
                {
                    throw;
                }
#if false
                finally
                {
                    if (arqXml != null)
                    {
                        arqXml.Close();
                    }
                }
#endif
            }
            if (!ExisteErroDiretorio)
            {
                Empresas.CriarPasta();
            }
        }
Example #8
0
 Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Path.GetFileName(NomeArquivoXML.Replace(Propriedade.ExtEnvio.EnvImpressaoDanfe_TXT, Propriedade.ExtRetorno.RetImpressaoDanfe_TXT).Replace(".txt", ".err"))));