Exemple #1
0
        /// <summary>
        /// Verifica se a aplicação já está executando ou não
        /// </summary>
        /// <returns>True=Aplicação está executando</returns>
        /// <remarks>
        /// Autor: Wandrey Mundin Ferreira
        /// Data: 21/07/2011
        /// </remarks>
        public static Boolean AppExecutando()
        {
            bool executando = false;

            Empresas.CarregaConfiguracao();

            try
            {
                Empresas.CanRun(null);

                // Se puder executar a aplicação aqui será recriado todos os arquivos de .lock,
                // pois podem ter sofridos alterações de configurações nas pastas
                Empresas.CreateLockFile();

                string procName = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
                if (System.Diagnostics.Process.GetProcessesByName(procName).Length > 1)
                {
                    executando = true;
                }
            }
            catch (NFe.Components.Exceptions.AppJaExecutando ex)
            {
                Empresas.ExisteErroDiretorio  = true;
                Empresas.ErroCaminhoDiretorio = ex.Message;
                executando = true;
            }
            catch
            {
            }

            return(executando);
        }
Exemple #2
0
        /// <summary>
        /// Metodo responsável por iniciar os serviços do UniNFe em threads diferentes
        /// </summary>
        public void ExecutaServicos(bool updateOptions = true)
        {
            if (servicoInstaladoErodando)
            {
                Empresas.CarregaConfiguracao();

                switch (ServiceProcess.StatusService(srvName))
                {
                case System.ServiceProcess.ServiceControllerStatus.Stopped:
                    ServiceProcess.StartService(srvName, 40000);
                    break;

                case System.ServiceProcess.ServiceControllerStatus.Paused:
                    ServiceProcess.RestartService(srvName, 40000);
                    break;
                }
                if (updateOptions)
                {
                    this.updateControleDoServico();
                }
            }
            else
            {
                ThreadService.Start();
            }
        }
Exemple #3
0
        /// <summary>
        /// Verifica se a aplicação já está executando ou não
        /// </summary>
        /// <returns>True=Aplicação está executando</returns>
        public static Boolean UniNFeSevicoAppExecutando()
        {
            Propriedade.ExecutandoPeloUniNFe = false; //Executado pelo UniNfeServico

            try
            {
                Empresas.CarregaConfiguracao();

                Empresas.CanRun(null);

                // Se puder executar a aplicação aqui será recriado todos os arquivos de .lock,
                // pois podem ter sofridos alterações de configurações nas pastas
                Empresas.CreateLockFile();
            }
            catch (NFe.Components.Exceptions.AppJaExecutando ex)
            {
                Auxiliar.WriteLog(ex.Message, false);

                return(true);
            }
            catch (NFe.Components.Exceptions.ProblemaExecucaoUniNFe ex)
            {
                Auxiliar.WriteLog(ex.Message, false);
            }
            catch
            {
                //Não preciso retornar nada, somente evito fechar o aplicativo
                //Esta exceção pode ocorrer quando não existe nenhuma empresa cadastrada
                //ainda, ou seja, é a primeira vez que estamos entrando no aplicativo
            }

            return(false);
        }
Exemple #4
0
        public static void Start()
        {
            NFe.Service.TFunctions.CriarArquivosParaServico();

            Empresas.CarregaConfiguracao();

            #region Ticket #110
            Empresas.CreateLockFile(true);
            #endregion

            //Executar o monitoramento de pastas das empresas cadastradas
            MonitoraPasta e = new MonitoraPasta();

            Threads.Clear();

            //Executa a thread que faz a limpeza dos arquivos temporários
            Thread t = new Thread(new Processar().LimpezaTemporario);
            t.IsBackground = true;
            t.Start();
            Threads.Add(t);

            //Executa a thread que faz a verificação das notas em processamento
            Thread t2 = new Thread(new Processar().EmProcessamento);
            t2.IsBackground = true;
            t2.Start();
            Threads.Add(t2);

            //Executar a thread que faz a consulta do recibo das notas fiscais enviadas
            Processar srv = new Processar();
            Thread    t3  = new Thread(srv.GerarXMLPedRec);
            t3.IsBackground = true;
            t3.Start(new NFe.Service.TaskNFeGerarXMLPedRec());
            Threads.Add(t3);
        }
Exemple #5
0
        /// <summary>
        /// Metodo responsável por iniciar os serviços do UniNFe em threads diferentes
        /// </summary>
        private void ExecutaServicos()
        {
            if (servicoInstaladoErodando)
            {
                if (restartServico)
                {
                    ServiceProcess.StopService(srvName, 40000);
                }

                restartServico = false;

                switch (ServiceProcess.StatusService(srvName))
                {
                case System.ServiceProcess.ServiceControllerStatus.Stopped:
                    ServiceProcess.StartService(srvName, 40000);
                    break;

                case System.ServiceProcess.ServiceControllerStatus.Paused:
                    ServiceProcess.RestartService(srvName, 40000);
                    break;
                }
                Empresas.CarregaConfiguracao();

                this.updateControleDoServico();
            }
            else
            {
                ThreadService.Start();
            }
        }
        private void iniciarServicosUniNFe()
        {
            Propriedade.TipoAplicativo = TipoAplicativo.Todos;
            ConfiguracaoApp.StartVersoes();

            Empresas.CarregaConfiguracao();

            string filenameWS1 = Propriedade.NomeArqXMLMunicipios;
            string filenameWS2 = Propriedade.NomeArqXMLWebService_NFSe;
            string filenameWS3 = Propriedade.NomeArqXMLWebService_NFe;
            string msg         = "";
            bool   error       = false;

            Propriedade.VerificaArquivos(out error, out msg);
            if (error)
            {
                this.WriteLog(msg);
            }
            else
            {
                foreach (Empresa empresa in Empresas.Configuracoes)
                {
                    if (empresa.X509Certificado == null && empresa.UsaCertificado)
                    {
                        msg = "Não pode ler o certificado da empresa: " + empresa.CNPJ + "=>" + empresa.Nome + "=>" + empresa.Servico.ToString();

                        string f = Path.Combine(empresa.PastaXmlRetorno,
                                                "uninfeServico_" + DateTime.Now.ToString("yyyy-MMM-dd_hh-mm-ss") + ".txt");
                        System.IO.File.WriteAllText(f, msg);
                        error = true;

                        WriteLog(msg);
                    }
                }
            }

            if (!error)
            {
                // Executar as conversões de atualizações de versão quando tiver
                Auxiliar.ConversaoNovaVersao(string.Empty);

                ThreadService.Start();

                new ThreadControlEvents();
            }
            else
            {
                WriteLog("Servico do UniNFe não está sendo executado ");
            }
        }
Exemple #7
0
        /// <summary>
        /// Verifica se a aplicação já está executando ou não
        /// </summary>
        /// <returns>True=Aplicação está executando</returns>
        /// <remarks>
        /// Autor: Wandrey Mundin Ferreira
        /// Data: 21/07/2011
        /// </remarks>
        public static Boolean AppExecutando(bool silencioso, bool novoSistema = false)
        {
            bool executando = false;

            Empresas.CarregaConfiguracao();

            #region Ticket: #110

            /*
             * Marcelo
             * 03/06/2013
             */

            ///
            /// verifica se o UniNFe está sendo executado pelo servico
            ///
            if (!Propriedade.ServicoRodando)
            {
                string podeExecutar = Empresas.CanRun(!novoSistema);
                if (!String.IsNullOrEmpty(podeExecutar))
                {
                    return(true);
                }

                // Se puder executar a aplicação aqui será recriado todos os arquivos de .lock,
                // pois podem ter sofridos alterações de configurações nas pastas
                Empresas.CreateLockFile();
            }
            #endregion

            string procName = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
            if (System.Diagnostics.Process.GetProcessesByName(procName).Length > 1)
            {
                executando = true;
            }

            if (!silencioso && !novoSistema)
            {
                if (executando)
                {
                    MessageBox.Show("Somente uma instância do " + Propriedade.NomeAplicacao + " pode ser executada.", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else if (Empresas.ExisteErroDiretorio)
                {
                    System.Windows.Forms.MessageBox.Show("Ocorreu um erro ao efetuar a leitura das configurações da empresa. " +
                                                         "Por favor entre na tela de configurações da(s) empresa(s) listada(s) abaixo na aba \"Pastas\" e reconfigure-as.\r\n\r\n" + Empresas.ErroCaminhoDiretorio, "Atenção", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                }
            }
            return(executando);
        }
Exemple #8
0
        private void btnNova_Click(object sender, EventArgs e)
        {
            if (btnNova.Text.Equals("Nova"))
            {
                bool ok = false;
                using (Formularios.FormNova f = new Formularios.FormNova(FindForm()))
                {
                    ok = f.ShowDialog() == DialogResult.OK;

                    if (ok)
                    {
                        currentEmpresa         = new Empresa();
                        currentEmpresa.CNPJ    = NFe.Components.Functions.OnlyNumbers(f.edtCNPJ.Text, ".,-/").ToString().PadLeft(14, '0');
                        currentEmpresa.Nome    = f.edtNome.Text;
                        currentEmpresa.Servico = (TipoAplicativo)f.cbServico.SelectedValue;
                        if (currentEmpresa.Servico == TipoAplicativo.Nfse)
                        {
                            currentEmpresa.UnidadeFederativaCodigo = 0;
                        }
                        else
                        {
                            currentEmpresa.UnidadeFederativaCodigo = 41;
                        }
                    }
                }
                if (ok)
                {
                    cbEmpresas.Visible = metroLabel2.Visible = false;
                    CopiaDadosDaEmpresaParaControls(currentEmpresa, false);

                    tc_main.SelectedIndex    = 1;
                    tc_empresa.SelectedIndex = 0;

                    btnNova.Tag = 1;
                    Modificado  = true;
                }
            }
            else
            {
                ///
                /// salva a lista de empresas
                List <Empresa> temp = new List <Empresa>(Empresas.Configuracoes);
                try
                {
                    ///
                    /// compara o que foi mudado
                    ///
                    bool grava = DadosMudaramDaEmpresa(true);

                    if (!EmpresaValidada)
                    {
                        return;
                    }

                    if (grava)
                    {
                        currentEmpresa.RemoveEndSlash();

                        if (servicoCurrent != currentEmpresa.Servico)
                        {
                            var oe = Empresas.FindConfEmpresa(currentEmpresa.CNPJ, servicoCurrent);
                            if (oe != null)
                            {
                                Empresas.Configuracoes.Remove(oe);
                            }
                        }

                        string _key = currentEmpresa.CNPJ + currentEmpresa.Servico.ToString();
                        ///
                        /// salva a configuracao da empresa
                        ///

                        currentEmpresa.SalvarConfiguracao((currentEmpresa.Servico == TipoAplicativo.SAT ? false : true), true);

                        ValidarPastaBackup();

                        var app = new ConfiguracaoApp();
                        ///
                        /// salva o arquivo da lista de empresas
                        ///
                        app.GravarArqEmpresas();

                        if (uc_geral.Modificado)
                        {
                            ///
                            /// salva as configuracoes gerais
                            app.GravarConfigGeral();
                        }
                        ///
                        /// reload a lista de empresas
                        Empresas.CarregaConfiguracao();
                        ///
                        /// reload o ambiente p/ manutencao
                        CreateControles();
                        ///
                        /// reposiciona a empresa no combobox
                        ///
                        for (int item = 0; item < cbEmpresas.Items.Count; ++item)
                        {
                            ComboElem empr = cbEmpresas.Items[item] as ComboElem;
                            if (empr.Key.Equals(_key))
                            {
                                cbEmpresas.SelectedIndex = item;
                                break;
                            }
                        }
                    }
                    else
                    {
                        ///
                        /// a empresa nao mudou mas as propriedades gerais mudaram?
                        if (uc_geral.Modificado)
                        {
                            new ConfiguracaoApp().GravarConfigGeral();
                            uc_geral.PopulateConfGeral();
                        }
                    }
                    Modificado         = false;
                    cbEmpresas.Visible = metroLabel2.Visible = true;
                }
                catch (Exception ex)
                {
                    ///
                    /// restaura a lista de empresas
                    Empresas.Configuracoes = new List <Empresa>(temp);

                    if (Convert.ToInt16(btnNova.Tag) == 1)//inclusao
                    {
                        ///
                        /// exclui as pastas criadas na inclusao
                        ///
                        try
                        {
                            currentEmpresa.ExcluiPastas();
                        }
                        catch { }
                    }
                    MetroFramework.MetroMessageBox.Show(uninfeDummy.mainForm, ex.Message, "");
                }
            }
        }
Exemple #9
0
        /// <summary>
        /// Verifica se a aplicação já está executando ou não
        /// </summary>
        /// <param name="oOneMutex">Objeto do tipo Mutex para ter como retorno para conseguir encerrar o mutex na finalização do aplicativo</param>
        /// <returns>True=Aplicação está executando</returns>
        /// <date>31/07/2009</date>
        /// <by>Wandrey Mundin Ferreira</by>
        public static Boolean AppExecutando(bool chamadaPeloUniNFe, ref System.Threading.Mutex oOneMutex)
        {
            Propriedade.ExecutandoPeloUniNFe = chamadaPeloUniNFe;

            bool   executando         = false;
            String nomePastaEnvio     = "";
            String nomePastaEnvioDemo = "";

            try
            {
                Empresas.CarregaConfiguracao();

                #region Ticket: #110

                /*
                 * Marcelo
                 * 03/06/2013
                 */
                string podeExecutar = Empresas.CanRun();
                if (!String.IsNullOrEmpty(podeExecutar))
                {
                    return(true);
                }

                // Se puder executar a aplicação aqui será recriado todos os arquivos de .lock,
                // pois podem ter sofridos alterações de configurações nas pastas
                Empresas.CreateLockFile();
                #endregion

                //danasa 22/7/2011
                //se chamadaPeloUniNFe=false, é porque está sendo executado pelo servico
                //se chamadaPeloUniNFe=true, é porque está sendo executado pelo 'uninfe.exe'
                if (chamadaPeloUniNFe)
                {
                    Empresa oEmpresa = null;

                    if (Empresas.Configuracoes.Count > 0)
                    {
                        oEmpresa = Empresas.Configuracoes[0];

                        //Pegar a pasta de envio, se já tiver algum UniNFe configurado para uma determinada pasta de envio os demais não podem
                        if (oEmpresa.PastaXmlEnvio != "")
                        {
                            nomePastaEnvio = oEmpresa.PastaXmlEnvio;

                            //Tirar a unidade e os dois pontos do nome da pasta
                            int iPos = nomePastaEnvio.IndexOf(':') + 1;
                            if (iPos >= 0)
                            {
                                nomePastaEnvio = nomePastaEnvio.Substring(iPos, nomePastaEnvio.Length - iPos);
                            }
                            nomePastaEnvioDemo = nomePastaEnvio;

                            //tirar as barras de separação de pastas e subpastas
                            nomePastaEnvio = nomePastaEnvio.Replace("\\", "").Replace("/", "").ToUpper();
                        }
                    }
                    // Verificar se o aplicativo já está rodando. Se estiver vai emitir um aviso e abortar
                    // Pois só pode executar o aplicativo uma única vez para cada pasta de envio.
                    // Wandrey 27/11/2008
                    System.Threading.Mutex oneMutex = null;
                    String nomeMutex = Propriedade.NomeAplicacao.ToUpper() + nomePastaEnvio.Trim();

                    try
                    {
                        oneMutex = System.Threading.Mutex.OpenExisting(nomeMutex);
                    }
                    catch (System.Threading.WaitHandleCannotBeOpenedException)
                    {
                    }

                    if (oneMutex == null)
                    {
                        oneMutex   = new System.Threading.Mutex(false, nomeMutex);
                        oOneMutex  = oneMutex;
                        executando = false;
                    }
                    else
                    {
                        oneMutex.Close();
                        executando = true;
                    }
                }
            }
            catch
            {
                //Não preciso retornar nada, somente evito fechar o aplicativo
                //Esta exceção pode ocorrer quando não existe nenhuma empresa cadastrada
                //ainda, ou seja, é a primeira vez que estamos entrando no aplicativo
            }

            if (executando && chamadaPeloUniNFe)//danasa 22/7/2011
            {
                MessageBox.Show("Somente uma instância do " + Propriedade.NomeAplicacao + " pode ser executada com a seguinte pasta de envio configurada: \r\n\r\n" +
                                "Pasta Envio: " + nomePastaEnvioDemo + "\r\n\r\n" +
                                "Já existe uma instância em execução.", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            return(executando);
        }
Exemple #10
0
        private void btnNova_Click(object sender, EventArgs e)
        {
            if (this.btnNova.Text.Equals("Nova"))
            {
                bool ok = false;
                using (Formularios.FormNova f = new Formularios.FormNova(this.FindForm()))
                {
                    ok = f.ShowDialog() == DialogResult.OK;

                    if (ok)
                    {
                        this.currentEmpresa         = new Empresa();
                        this.currentEmpresa.CNPJ    = NFe.Components.Functions.OnlyNumbers(f.edtCNPJ.Text, ".,-/").ToString().PadLeft(14, '0');
                        this.currentEmpresa.Nome    = f.edtNome.Text;
                        this.currentEmpresa.Servico = (TipoAplicativo)f.cbServico.SelectedValue;
                        if (this.currentEmpresa.Servico == TipoAplicativo.Nfse)
                        {
                            this.currentEmpresa.UnidadeFederativaCodigo = 0;
                        }
                        else
                        {
                            this.currentEmpresa.UnidadeFederativaCodigo = 41;
                        }
                    }
                }
                if (ok)
                {
                    this.cbEmpresas.Visible = this.metroLabel2.Visible = false;
                    this.CopiaDadosDaEmpresaParaControls(currentEmpresa, false);

                    this.tc_main.SelectedIndex    = 1;
                    this.tc_empresa.SelectedIndex = 0;

                    this.btnNova.Tag = 1;
                    this.Modificado  = true;
                }
            }
            else
            {
                try
                {
                    ///
                    /// compara o que foi mudado
                    ///
                    bool grava = DadosMudaramDaEmpresa(true);
                    if (grava)
                    {
                        string _key = this.currentEmpresa.CNPJ + this.currentEmpresa.Servico.ToString();
                        ///
                        /// salva a configuracao da empresa
                        this.currentEmpresa.SalvarConfiguracao(true);

                        var app = new ConfiguracaoApp();
                        ///
                        /// salva o arquivo da lista de empresas
                        app.GravarArqEmpresas();

                        if (this.uc_geral.Modificado)
                        {
                            ///
                            /// salva as configuracoes gerais
                            app.GravarConfigGeral();
                        }
                        ///
                        /// reload a lista de empresas
                        Empresas.CarregaConfiguracao();
                        ///
                        /// reload o ambiente p/ manutencao
                        this.CreateControles();
                        ///
                        /// reposiciona a empresa no combobox
                        ///
                        for (int item = 0; item < this.cbEmpresas.Items.Count; ++item)
                        {
                            NFe.Components.ComboElem empr = this.cbEmpresas.Items[item] as NFe.Components.ComboElem;
                            if (empr.Key.Equals(_key))
                            {
                                this.cbEmpresas.SelectedIndex = item;
                                break;
                            }
                        }
                    }
                    else
                    {
                        ///
                        /// a empresa nao mudou mas as propriedades gerais mudou?
                        if (this.uc_geral.Modificado)
                        {
                            new ConfiguracaoApp().GravarConfigGeral();
                            this.uc_geral.PopulateConfGeral();
                        }
                    }
                    this.Modificado         = false;
                    this.cbEmpresas.Visible = this.metroLabel2.Visible = true;
                }
                catch (Exception ex)
                {
                    if (Convert.ToInt16(this.btnNova.Tag) == 1)//inclusao
                    {
                        ///
                        /// exclui as pastas criadas na inclusao
                        ///
                        try
                        {
                            this.currentEmpresa.ExcluiPastas();
                        }
                        catch { }
                    }
                    MetroFramework.MetroMessageBox.Show(uninfeDummy.mainForm, ex.Message, "");
                }
            }
        }