/// <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); }
/// <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(); } }
/// <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); }
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); }
/// <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 "); } }
/// <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); }
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, ""); } } }
/// <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); }
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, ""); } } }