public void Populate(Empresa empresa) { this.empresa = empresa; uninfeDummy.ClearControls(this, true, false); ConfigurarPastas(empresa); textBox_PastaXmlEnvio.Text = empresa.PastaXmlEnvio; textBox_PastaXmlRetorno.Text = empresa.PastaXmlRetorno; textBox_PastaXmlEnviado.Text = empresa.PastaXmlEnviado; textBox_PastaXmlErro.Text = empresa.PastaXmlErro; textBox_PastaXmlEmLote.Text = empresa.PastaXmlEmLote; textBox_PastaValidar.Text = empresa.PastaValidar; textBox_PastaDownloadNFeDest.Text = empresa.PastaDownloadNFeDest; textBox_PastaBackup.Text = empresa.PastaBackup; cbCriaPastas.Checked = empresa.CriaPastasAutomaticamente; var Components = this.Controls.Cast <object>() .OfType <MetroFramework.Controls.MetroTextBox>(); foreach (var c in Components) { if (!__oldvalues.ContainsKey(c)) { __oldvalues.Add(c, c.Text); } else { __oldvalues[c] = c.Text; } } AlinharControles(); }
public void Populate(NFe.Settings.Empresa empresa) { this.empresa = empresa; uninfeDummy.ClearControls(this, true, false); textBox_PastaXmlEmLote.Visible = lbl_textBox_PastaLote.Visible = textBox_PastaBackup.Visible = lbl_textBox_PastaBackup.Visible = textBox_PastaXmlEnviado.Visible = lbl_textBox_PastaEnviados.Visible = textBox_PastaDownloadNFeDest.Visible = lbl_textBox_PastaDownload.Visible = (empresa.Servico != TipoAplicativo.Nfse); if (empresa.Servico == TipoAplicativo.Nfse) { lbl_textBox_PastaRetornoXML.Location = new Point(lbl_textBox_PastaBackup.Location.X, 67); textBox_PastaXmlRetorno.Location = new Point(lbl_textBox_PastaBackup.Location.X, 86); lbl_textBox_PastaXmlErro.Location = new Point(lbl_textBox_PastaBackup.Location.X, 110); textBox_PastaXmlErro.Location = new Point(lbl_textBox_PastaBackup.Location.X, 129); lbl_textBox_PastaValidar.Location = new Point(lbl_textBox_PastaBackup.Location.X, 153); textBox_PastaValidar.Location = new Point(lbl_textBox_PastaBackup.Location.X, 172); } else { lbl_textBox_PastaRetornoXML.Location = loc1; textBox_PastaXmlRetorno.Location = loc2; lbl_textBox_PastaXmlErro.Location = loc3; textBox_PastaXmlErro.Location = loc4; lbl_textBox_PastaValidar.Location = loc5; textBox_PastaValidar.Location = loc6; } textBox_PastaXmlEnvio.Text = empresa.PastaXmlEnvio; textBox_PastaXmlRetorno.Text = empresa.PastaXmlRetorno; textBox_PastaXmlEnviado.Text = empresa.PastaXmlEnviado; textBox_PastaXmlErro.Text = empresa.PastaXmlErro; textBox_PastaXmlEmLote.Text = empresa.PastaXmlEmLote; textBox_PastaValidar.Text = empresa.PastaValidar; textBox_PastaDownloadNFeDest.Text = empresa.PastaDownloadNFeDest; textBox_PastaBackup.Text = empresa.PastaBackup; cbCriaPastas.Checked = empresa.CriaPastasAutomaticamente; var Components = this.Controls.Cast <object>() .OfType <MetroFramework.Controls.MetroTextBox>(); foreach (var c in Components) { if (!__oldvalues.ContainsKey(c)) { __oldvalues.Add(c, c.Text); } else { __oldvalues[c] = c.Text; } } }
public void Populate(NFe.Settings.Empresa empresa) { this.empresa = empresa; uninfeDummy.ClearControls(this, true, false); System.Windows.Forms.ToolTip tltBuscarProvider = new System.Windows.Forms.ToolTip(); tltBuscarProvider.SetToolTip(btnBuscarProvider, "Pesquisar provider válido automaticamente"); System.Windows.Forms.ToolTip tltValidarProvider = new System.Windows.Forms.ToolTip(); tltValidarProvider.SetToolTip(btnValidarProvider, "Validar provider selecionado"); textBox_dadoscertificado.BackColor = txtArquivoCertificado.BackColor; textBox_dadoscertificado.Height = 160; ckbTemCertificadoInstalado.Checked = empresa.UsaCertificado; ckbTemCertificadoInstalado.Enabled = (empresa.Servico == TipoAplicativo.Nfse); oMeuCert = null; if (empresa.UsaCertificado) { if (!string.IsNullOrEmpty(empresa.CNPJ)) { try { empresa.X509Certificado = empresa.BuscaConfiguracaoCertificado(); } catch { //Se der algum erro na hora de buscar o certificado, o sistema tem que permitir o usuário continuar com a configuração para que ele acerte o erro. Wandrey 19/09/2014 } oMeuCert = empresa.X509Certificado; } ckbCertificadoInstalado.Checked = empresa.CertificadoInstalado; if (empresa.CertificadoInstalado) { DemonstraDadosCertificado(); txtPinCertificado.Text = empresa.CertificadoPIN; ProvidersCertificado(); } else { txtArquivoCertificado.Text = empresa.CertificadoArquivo; txtSenhaCertificado.Text = empresa.CertificadoSenha; } ckbCertificadoInstalado_CheckedChanged(null, null); } else { oMeuCert = null; } }
public void Populate(NFe.Settings.Empresa empresa) { this.empresa = empresa; uninfeDummy.ClearControls(this, true, false); edtFTP_Ativo.Checked = empresa.FTPAtivo; edtFTP_GravaXMLPastaUnica.Checked = empresa.FTPGravaXMLPastaUnica; edtFTP_Password.Text = empresa.FTPSenha; edtFTP_PastaDestino.Text = empresa.FTPPastaAutorizados; edtFTP_PastaRetornos.Text = empresa.FTPPastaRetornos; edtFTP_Porta.Text = empresa.FTPPorta.ToString(); edtFTP_Server.Text = empresa.FTPNomeDoServidor; edtFTP_UserName.Text = empresa.FTPNomeDoUsuario; edtFTP_PastaDestino.Visible = lbl_edtFTP_PastaDestino.Visible = edtFTP_GravaXMLPastaUnica.Visible = (empresa.Servico == TipoAplicativo.Nfe || empresa.Servico == TipoAplicativo.Todos); }
public void Populate(NFe.Settings.Empresa empresa) { this.empresa = empresa; uninfeDummy.ClearControls(this, true, false); edtFTP_Ativo.Checked = empresa.FTPAtivo; edtFTP_Passivo.Checked = empresa.FTPPassivo; edtFTP_GravaXMLPastaUnica.Checked = empresa.FTPGravaXMLPastaUnica; edtFTP_Password.Text = empresa.FTPSenha; edtFTP_PastaDestino.Text = empresa.FTPPastaAutorizados; edtFTP_PastaRetornos.Text = empresa.FTPPastaRetornos; edtFTP_Porta.Text = empresa.FTPPorta.ToString(); edtFTP_Server.Text = empresa.FTPNomeDoServidor; edtFTP_UserName.Text = empresa.FTPNomeDoUsuario; edtFTP_PastaDestino.Visible = lbl_edtFTP_PastaDestino.Visible = edtFTP_GravaXMLPastaUnica.Visible = (empresa.Servico == TipoAplicativo.Nfe || empresa.Servico == TipoAplicativo.Todos); }
void AddEmpresaNaListaDeComparacao(List<FolderCompare> fc, int i, Empresa empresa) { fc.Add(new FolderCompare(i, empresa.PastaXmlEnvio)); fc.Add(new FolderCompare(i + 1, empresa.PastaXmlRetorno)); fc.Add(new FolderCompare(i + 2, empresa.PastaXmlErro)); fc.Add(new FolderCompare(i + 3, empresa.PastaValidar)); if (empresa.Servico != TipoAplicativo.Nfse) { fc.Add(new FolderCompare(i + 4, empresa.PastaXmlEnviado)); fc.Add(new FolderCompare(i + 5, empresa.PastaXmlEmLote)); fc.Add(new FolderCompare(i + 6, empresa.PastaBackup)); fc.Add(new FolderCompare(i + 7, empresa.PastaDownloadNFeDest)); } }
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; } }
/// <summary> /// Retorna se o objeto da coleção que foi pesquisado é valido ou não /// </summary> /// <param name="empresa">Objeto da empresa</param> /// <returns>Retorna true or false</returns> /// <remarks> /// Autor: Wandrey Mundin Ferreira /// Data: 30/07/2010 /// </remarks> public static bool Valid(Empresa empresa) { bool retorna = true; if (empresa.Equals(null)) retorna = false; return retorna; }
/// <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)) { 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()); string cArqErro = null; try { empresa.BuscaConfiguracao(); string uf = GetUF(empresa.UnidadeFederativaCodigo); if (uf != null) empresa.URLConsultaDFe = ConfiguracaoApp.CarregarURLConsultaDFe(uf); } 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 { } } /// /// 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 (!ExisteErroDiretorio) Empresas.CriarPasta(); }
public void Populate(NFe.Settings.Empresa empresa) { if (this.Tag == null) { loc1 = lbl_textBox_PastaRetornoXML.Location; loc2 = textBox_PastaXmlRetorno.Location; loc3 = lbl_textBox_PastaXmlErro.Location; loc4 = textBox_PastaXmlErro.Location; loc5 = lbl_textBox_PastaValidar.Location; loc6 = textBox_PastaValidar.Location; } this.Tag = 1; this.empresa = empresa; uninfeDummy.ClearControls(this, true, false); textBox_PastaXmlEmLote.Visible = lbl_textBox_PastaLote.Visible = textBox_PastaBackup.Visible = lbl_textBox_PastaBackup.Visible = textBox_PastaXmlEnviado.Visible = lbl_textBox_PastaEnviados.Visible = textBox_PastaDownloadNFeDest.Visible = lbl_textBox_PastaDownload.Visible = (empresa.Servico != TipoAplicativo.Nfse); if (empresa.Servico == TipoAplicativo.Nfse) { lbl_textBox_PastaRetornoXML.Location = new Point(lbl_textBox_PastaBackup.Location.X, 67); textBox_PastaXmlRetorno.Location = new Point(lbl_textBox_PastaBackup.Location.X, 86); lbl_textBox_PastaXmlErro.Location = new Point(lbl_textBox_PastaBackup.Location.X, 110); textBox_PastaXmlErro.Location = new Point(lbl_textBox_PastaBackup.Location.X, 129); lbl_textBox_PastaValidar.Location = new Point(lbl_textBox_PastaBackup.Location.X, 153); textBox_PastaValidar.Location = new Point(lbl_textBox_PastaBackup.Location.X, 172); } else { lbl_textBox_PastaRetornoXML.Location = loc1; textBox_PastaXmlRetorno.Location = loc2; lbl_textBox_PastaXmlErro.Location = loc3; textBox_PastaXmlErro.Location = loc4; lbl_textBox_PastaValidar.Location = loc5; textBox_PastaValidar.Location = loc6; } textBox_PastaXmlEnvio.Text = empresa.PastaXmlEnvio; textBox_PastaXmlRetorno.Text = empresa.PastaXmlRetorno; textBox_PastaXmlEnviado.Text = empresa.PastaXmlEnviado; textBox_PastaXmlErro.Text = empresa.PastaXmlErro; textBox_PastaXmlEmLote.Text = empresa.PastaXmlEmLote; textBox_PastaValidar.Text = empresa.PastaValidar; textBox_PastaDownloadNFeDest.Text = empresa.PastaDownloadNFeDest; textBox_PastaBackup.Text = empresa.PastaBackup; cbCriaPastas.Checked = empresa.CriaPastasAutomaticamente; var Components = this.Controls.Cast<object>() .OfType<MetroFramework.Controls.MetroTextBox>(); foreach (var c in Components) { if (!__oldvalues.ContainsKey(c)) __oldvalues.Add(c, c.Text); else __oldvalues[c] = c.Text; } }
private void cbEmpresas_SelectedIndexChanged(object sender, EventArgs e) { #region this.currentEmpresa = null; var list = (this.cbEmpresas.DataSource as System.Collections.ArrayList)[this.cbEmpresas.SelectedIndex] as NFe.Components.ComboElem; var empresa = Empresas.FindConfEmpresa(list.Valor, NFe.Components.EnumHelper.StringToEnum<TipoAplicativo>(list.Servico)); if (empresa == null) { CopiaDadosDaEmpresaParaControls(new Empresa(), true); MetroFramework.MetroMessageBox.Show(uninfeDummy.mainForm, "Não pode acessar os dados da empresa selecionada", ""); } else { this.currentEmpresa = new Empresa(); empresa.CopyObjectTo(currentEmpresa); empcnpj = this.currentEmpresa.CNPJ; servico = this.currentEmpresa.Servico; CopiaDadosDaEmpresaParaControls(this.currentEmpresa, false); this.btnNova.Tag = 0; } #endregion }
void CopiaDadosDaEmpresaParaControls(Empresa oempresa, bool empty) { bool _modificado = false; bool _nova = string.IsNullOrEmpty(oempresa.PastaXmlEnvio); stopChangedEvent = true; try { this.servicoCurrent = oempresa.Servico; oempresa.CriaPastasAutomaticamente = false; if (string.IsNullOrEmpty(oempresa.PastaXmlEnvio) && !empty) { oempresa.CriaPastasAutomaticamente = true; _modificado = true; /// /// tenta definir as pastas na mesma arvore do CNPJ /// foreach (Empresa rr in (from x in Empresas.Configuracoes where x.CNPJ.Equals(oempresa.CNPJ) select x)) { string temp = CopiaPastaDeEmpresa(rr.CNPJ, rr.PastaXmlEnvio, oempresa); if (!Directory.Exists(temp)) { CopiaPastaDeEmpresa(rr, oempresa); break; } } if (string.IsNullOrEmpty(oempresa.PastaXmlEnvio)) { /// /// acha uma configuracao valida /// foreach (Empresa rr in (from x in Empresas.Configuracoes where !x.CNPJ.Equals(oempresa.CNPJ) select x)) { string temp = CopiaPastaDeEmpresa(rr.CNPJ, rr.PastaXmlEnvio, oempresa); if (!Directory.Exists(temp)) { CopiaPastaDeEmpresa(rr, oempresa); break; } } } if (string.IsNullOrEmpty(oempresa.PastaXmlEnvio)) { /// /// se mesmo assim não encontrou nenhuma configuracao valida, assume a pasta do UniNFe /// string subpasta = oempresa.CNPJ; switch (oempresa.Servico) { case TipoAplicativo.Todos: case TipoAplicativo.Nfe: break; default: subpasta += "\\" + oempresa.Servico.ToString().ToLower(); break; } oempresa.PastaXmlEnvio = Path.Combine(Propriedade.PastaExecutavel, subpasta + "\\Envio"); oempresa.PastaXmlRetorno = Path.Combine(Propriedade.PastaExecutavel, subpasta + "\\Retorno"); oempresa.PastaXmlErro = Path.Combine(Propriedade.PastaExecutavel, subpasta + "\\Erro"); oempresa.PastaValidar = Path.Combine(Propriedade.PastaExecutavel, subpasta + "\\Validar"); if (oempresa.Servico != TipoAplicativo.Nfse) { oempresa.PastaXmlEnviado = Path.Combine(Propriedade.PastaExecutavel, subpasta + "\\Enviado"); oempresa.PastaXmlEmLote = Path.Combine(Propriedade.PastaExecutavel, subpasta + "\\EnvioEmLote"); oempresa.PastaDownloadNFeDest = Path.Combine(Propriedade.PastaExecutavel, subpasta + "\\DownloadNFe"); } } } uce_divs.Populate(oempresa, _nova); uce_pastas.Populate(oempresa); uce_ftp.Populate(oempresa); uce_cert.Populate(oempresa); if (oempresa.Servico != TipoAplicativo.Nfse) { _tpEmpresa_danfe.Parent = tc_empresa; uce_danfe.Populate(oempresa); } else { if (_tpEmpresa_danfe != null) _tpEmpresa_danfe.Parent = null; } } finally { tc_empresa.Enabled = !empty; stopChangedEvent = false; Modificado = _modificado; } }
/// <summary> /// CopiaPastaDeEmpresa /// </summary> /// <param name="empresa"></param> /// <param name="oempresa"></param> private void CopiaPastaDeEmpresa(Empresa empresa, Empresa oempresa) { oempresa.PastaXmlEnvio = CopiaPastaDeEmpresa(empresa.CNPJ, empresa.PastaXmlEnvio, oempresa); oempresa.PastaXmlRetorno = CopiaPastaDeEmpresa(empresa.CNPJ, empresa.PastaXmlRetorno, oempresa); oempresa.PastaXmlErro = CopiaPastaDeEmpresa(empresa.CNPJ, empresa.PastaXmlErro, oempresa); oempresa.PastaValidar = CopiaPastaDeEmpresa(empresa.CNPJ, empresa.PastaValidar, oempresa); if (oempresa.Servico != TipoAplicativo.Nfse) { if (empresa.Servico != TipoAplicativo.Nfse) { oempresa.PastaXmlEmLote = CopiaPastaDeEmpresa(empresa.CNPJ, empresa.PastaXmlEmLote, oempresa); oempresa.PastaXmlEnviado = CopiaPastaDeEmpresa(empresa.CNPJ, empresa.PastaXmlEnviado, oempresa); oempresa.PastaBackup = CopiaPastaDeEmpresa(empresa.CNPJ, empresa.PastaBackup, oempresa); oempresa.PastaDownloadNFeDest = CopiaPastaDeEmpresa(empresa.CNPJ, empresa.PastaDownloadNFeDest, oempresa); } else { string folder = Path.GetDirectoryName(ConfiguracaoApp.RemoveEndSlash(oempresa.PastaXmlEnvio)); oempresa.PastaXmlEnviado = Path.Combine(folder, "Enviado"); oempresa.PastaXmlEmLote = Path.Combine(folder, "EnvioEmLote"); oempresa.PastaDownloadNFeDest = Path.Combine(folder, "DownloadNFe"); oempresa.PastaBackup = Path.Combine(folder, "Backup"); } } oempresa.ConfiguracaoDanfe = empresa.ConfiguracaoDanfe; oempresa.ConfiguracaoCCe = empresa.ConfiguracaoCCe; oempresa.PastaConfigUniDanfe = empresa.PastaConfigUniDanfe; oempresa.PastaExeUniDanfe = empresa.PastaExeUniDanfe; oempresa.PastaDanfeMon = empresa.PastaDanfeMon; oempresa.XMLDanfeMonNFe = empresa.XMLDanfeMonNFe; oempresa.XMLDanfeMonProcNFe = empresa.XMLDanfeMonProcNFe; oempresa.GravarRetornoTXTNFe = empresa.GravarRetornoTXTNFe; oempresa.GravarEventosNaPastaEnviadosNFe = empresa.GravarEventosNaPastaEnviadosNFe; oempresa.GravarEventosCancelamentoNaPastaEnviadosNFe = empresa.GravarEventosCancelamentoNaPastaEnviadosNFe; oempresa.GravarEventosDeTerceiros = empresa.GravarEventosDeTerceiros; oempresa.CompactarNfe = empresa.CompactarNfe; oempresa.IndSinc = empresa.IndSinc; oempresa.CriaPastasAutomaticamente = true; }
/// <summary> /// CopiaPastaDaEmpresa /// </summary> /// <param name="origemCNPJ"></param> /// <param name="origemPasta"></param> /// <param name="oEmpresa"></param> /// <returns></returns> private string CopiaPastaDeEmpresa(string origemCNPJ, string origemPasta, Empresa destino) { if (string.IsNullOrEmpty(origemPasta)) return ""; /// /// o usuario pode ter colocado o CNPJ como parte do nome da pasta /// /// origemPasta: C:\uninfe\CNPJ_antigo\envio /// origemCNPJ: CNPJ_novo /// newPasta: C:\uninfe\CNPJ_novo\envio /// string newPasta = origemPasta.Replace(origemCNPJ.Trim(), destino.CNPJ.Trim()); if (origemPasta.Equals(newPasta, StringComparison.InvariantCultureIgnoreCase)) { foreach (string sp in new string[] { "\\nfse\\", "\\nfce\\", "\\cte\\", "\\mdfe\\", "\\" }) origemPasta = origemPasta.Replace(destino.CNPJ + sp, ""); int lastBackSlash = ConfiguracaoApp.RemoveEndSlash(origemPasta).LastIndexOf("\\"); string subpasta = destino.CNPJ; switch (destino.Servico) { case TipoAplicativo.Todos: case TipoAplicativo.Nfe: break; default: subpasta += "\\" + destino.Servico.ToString().ToLower(); break; } newPasta = origemPasta.Insert(lastBackSlash, "\\" + subpasta); } return newPasta; }
public string BuscaConfiguracao(ref int tipoerro) { tipoerro = 0; if (!Directory.Exists(this.PastaEmpresa)) { Directory.CreateDirectory(this.PastaEmpresa); } LimparPropriedades(this); if (File.Exists(this.NomeArquivoConfig)) { try { ObjectXMLSerializer objObjectXMLSerializer = new ObjectXMLSerializer(); /// /// verifica se precisa de conversao para que a Deserializacao funcione string temp = File.ReadAllText(this.NomeArquivoConfig, Encoding.UTF8); if (temp.Contains("<nfe_configuracoes>") || temp.Contains("<CertificadoDigital>")) { File.WriteAllText(this.NomeArquivoConfig + ".old", temp); //this.BuscaConfiguracao(this); //objObjectXMLSerializer.Save(this, this.NomeArquivoConfig); temp = temp.Replace("<nfe_configuracoes>", "<Empresa xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">"); temp = temp.Replace("</nfe_configuracoes>", "</Empresa>"); temp = temp.Replace(">False<", ">false<").Replace(">True<", ">true<"); if (!temp.Contains("<diretorioSalvarComo>")) { temp = temp.Replace("<DiretorioSalvarComo>", "<diretorioSalvarComo>").Replace("</DiretorioSalvarComo>", "</diretorioSalvarComo>"); } temp = temp.Replace("<CertificadoDigital>", "<Certificado>").Replace("</CertificadoDigital>", "</Certificado>"); File.WriteAllText(this.NomeArquivoConfig, temp); } Empresa t = new Empresa(); t = (Empresa)objObjectXMLSerializer.Load(typeof(Empresa), this.NomeArquivoConfig); if (!temp.Contains("<UsaCertificado>")) { t.UsaCertificado = true; } if (!temp.Contains("<FTPPassivo>")) { t.FTPPassivo = false; } if (t.UsaCertificado) { if (!t.CertificadoInstalado && !string.IsNullOrEmpty(t.CertificadoSenha)) { t.CertificadoSenha = Criptografia.descriptografaSenha(t.CertificadoSenha); } } t.CertificadoPIN = Criptografia.descriptografaSenha(t.CertificadoPIN); t.FTPNomeDoServidor = Criptografia.descriptografaSenha(t.FTPNomeDoServidor); t.FTPNomeDoUsuario = Criptografia.descriptografaSenha(t.FTPNomeDoUsuario); t.FTPSenha = Criptografia.descriptografaSenha(t.FTPSenha); t.Nome = this.Nome; t.CNPJ = this.CNPJ; t.Servico = this.Servico; if (t.Servico != TipoAplicativo.Nfse) { t.UsaCertificado = true; } t.CopyObjectTo(this); if (t.UnidadeFederativaCodigo == 35) { t.IndSinc = false; } CriarPastasDaEmpresa(); X509Certificado = BuscaConfiguracaoCertificado(); } catch (Exception ex) { //Não vou mais fazer isso pois estava gerando problemas com Certificados A3 - Renan 18/06/2013 //empresa.Certificado = string.Empty; //empresa.CertificadoThumbPrint = string.Empty; tipoerro = 2; return("Ocorreu um erro ao efetuar a leitura das configurações da empresa " + this.CNPJ + "=" + this.Nome.Trim() + ". Por favor entre na tela de configurações desta empresa e reconfigure.\r\n\r\nErro: " + ex.Message); } return(null); } else { tipoerro = 1; return("Arquivo [" + this.NomeArquivoConfig + "] de configuração da empresa [" + this.CNPJ + "=" + this.Nome.Trim() + "] não encontrado"); } }
/// <summary> /// Verifica se algumas das informações das configurações tem algum problema ou falha /// </summary> /// <param name="validarCertificado">Se valida se tem certificado informado ou não nas configurações</param> public void ValidarConfig(bool validarCertificado, Empresa empresaValidada) { string erro = string.Empty; bool validou = true; _folders = new Dictionary<string, int>(); foreach (Empresa emp in Empresas.Configuracoes) { #region Remover End Slash emp.RemoveEndSlash(); #endregion #region Verificar a duplicação de nome de pastas que não pode existir if ((erro = this.AddEmpresaNaLista(emp.PastaXmlEnvio)) == "") if ((erro = this.AddEmpresaNaLista(emp.PastaXmlRetorno)) == "") if ((erro = this.AddEmpresaNaLista(emp.PastaXmlErro)) == "") if ((erro = this.AddEmpresaNaLista(emp.PastaValidar)) == "") if (emp.Servico != TipoAplicativo.Nfse) if ((erro = this.AddEmpresaNaLista(emp.PastaXmlEnviado)) == "") if ((erro = this.AddEmpresaNaLista(emp.PastaXmlEmLote)) == "") if ((erro = this.AddEmpresaNaLista(emp.PastaBackup)) == "") erro = this.AddEmpresaNaLista(emp.PastaDownloadNFeDest); if (erro != "") { erro += "\r\nNa empresa: " + emp.Nome + "\r\n" + emp.CNPJ; validou = false; break; } #endregion } //substitui pq para debugar dava muito trabalho #if f #region Verificar a duplicação de nome de pastas que não pode existir List<FolderCompare> fc = new List<FolderCompare>(); for (int i = 0; i < Empresas.Configuracoes.Count; i++) { AddEmpresaNaListaDeComparacao(fc, i, Empresas.Configuracoes[i]); } foreach (FolderCompare fc1 in fc) { if (string.IsNullOrEmpty(fc1.folder)) continue; var fCount = fc.Count(fc2 => fc2.id != fc1.id && fc1.folder.ToLower().Equals(fc2.folder.ToLower())); if (fCount > 0) { erro = "Não é permitido a utilização de pasta idênticas na mesma ou entre empresas. \r\nPasta utilizada: \r\n" + fc1.folder.Trim(); validou = false; break; } /* foreach (FolderCompare fc2 in fc) { if (fc1.id != fc2.id) { if (fc1.folder.ToLower().Equals(fc2.folder.ToLower())) { erro = "Não é permitido a utilização de pasta idênticas na mesma ou entre empresas. \r\nPasta utilizada: \r\n" + fc1.folder.Trim(); validou = false; break; } } }*/ if (!validou) break; } #endregion #endif if (validou) { int empFrom = 0; int empTo = Empresas.Configuracoes.Count; if (empresaValidada != null) { /// /// quando alterada uma configuracao pelo visual, valida apenas a empresa sendo alterada /// empFrom = empTo = Empresas.FindConfEmpresaIndex(empresaValidada.CNPJ, empresaValidada.Servico); if (empFrom == -1) throw new Exception("Não foi possivel encontrar a empresa para validação"); ++empTo; } if (empresaValidada.Servico == TipoAplicativo.NFCe) { if (!string.IsNullOrEmpty(empresaValidada.IndentificadorCSC) && string.IsNullOrEmpty(empresaValidada.TokenCSC)) { throw new Exception("É obrigatório informar o IDToken quando informado o CSC."); } else if (string.IsNullOrEmpty(empresaValidada.IndentificadorCSC) && ! string.IsNullOrEmpty(empresaValidada.TokenCSC)) { throw new Exception("É obrigatório informar o CSC quando informado o IDToken."); } } for (int i = empFrom; i < empTo; i++) { Empresa empresa = Empresas.Configuracoes[i]; string xNomeCNPJ = "\r\n" + empresa.Nome + "\r\n" + empresa.CNPJ; #region Verificar se tem alguma pasta em branco List<xValid> _xValids = new List<xValid>(); _xValids.Add(new xValid(empresa.PastaXmlEnvio, "Informe a pasta de envio dos arquivos XML.", "A pasta de envio dos arquivos XML informada não existe.", true)); _xValids.Add(new xValid(empresa.PastaXmlRetorno, "Informe a pasta de envio dos arquivos XML.", "A pasta de retorno dos arquivos XML informada não existe.", true)); _xValids.Add(new xValid(empresa.PastaXmlErro, "Informe a pasta para arquivamento temporário dos arquivos XML que apresentaram erros.", "A pasta para arquivamento temporário dos arquivos XML com erro informada não existe.", true)); _xValids.Add(new xValid(empresa.PastaValidar, "Informe a pasta onde será gravado os arquivos XML somente para ser validado pela aplicação.", "A pasta para validação de XML´s informada não existe.", true)); if (empresa.Servico != TipoAplicativo.Nfse) { _xValids.Add(new xValid(empresa.PastaXmlEmLote, "Informe a pasta de envio dos arquivos XML em lote.", "A pasta de envio das notas fiscais eletrônicas em lote informada não existe.", true)); _xValids.Add(new xValid(empresa.PastaXmlEnviado, "Informe a pasta para arquivamento dos arquivos XML enviados.", "A pasta para arquivamento dos arquivos XML enviados informada não existe.", true)); _xValids.Add(new xValid(empresa.PastaBackup, "", "A pasta para backup dos XML enviados informada não existe.", false)); _xValids.Add(new xValid(empresa.PastaDownloadNFeDest, "", "A pasta para arquivamento das NFe de destinatários informada não existe.", false)); _xValids.Add(new xValid(empresa.PastaDanfeMon, "", "A pasta informada para gravação do XML da NFe para o DANFeMon não existe.", false)); _xValids.Add(new xValid(empresa.PastaExeUniDanfe, "", "A pasta do executável do UniDANFe informada não existe.", false)); _xValids.Add(new xValid(empresa.PastaConfigUniDanfe, "", "A pasta do arquivo de configurações do UniDANFe informada não existe.", false)); } foreach (var val in _xValids) { if (val.valid && string.IsNullOrEmpty(val.folder)) { erro = val.msg1 + xNomeCNPJ; validou = false; break; } else if (!string.IsNullOrEmpty(val.folder)) if (!Directory.Exists(val.folder)) if (empresa.CriaPastasAutomaticamente) { Directory.CreateDirectory(val.folder); } else { erro = val.msg2 + xNomeCNPJ; validou = false; break; } } #if f List<string> diretorios = new List<string>(); List<string> mensagens = new List<string>(); diretorios.Add(empresa.PastaXmlEnvio); mensagens.Add("Informe a pasta de envio dos arquivos XML."); diretorios.Add(empresa.PastaXmlRetorno); mensagens.Add("Informe a pasta de retorno dos arquivos XML."); diretorios.Add(empresa.PastaXmlErro); mensagens.Add("Informe a pasta para arquivamento temporário dos arquivos XML que apresentaram erros."); diretorios.Add(empresa.PastaValidar); mensagens.Add("Informe a pasta onde será gravado os arquivos XML somente para ser validado pela Aplicação."); if (empresa.Servico != TipoAplicativo.Nfse) { diretorios.Add(empresa.PastaXmlEmLote); mensagens.Add("Informe a pasta de envio dos arquivos XML em lote."); diretorios.Add(empresa.PastaXmlEnviado); mensagens.Add("Informe a pasta para arquivamento dos arquivos XML enviados."); } for (int b = 0; b < diretorios.Count; b++) { if (diretorios[b].Equals(string.Empty)) { erro = mensagens[b] + xNomeCNPJ; validou = false; break; } } #endif /// /// informacoes do FTP /// danasa 7/7/2011 if (empresa.FTPIsAlive && validou) { if (empresa.Servico != TipoAplicativo.Nfse) { if (string.IsNullOrEmpty(empresa.FTPPastaAutorizados)) { erro = "Informe a pasta do FTP de destino dos autorizados" + xNomeCNPJ; validou = false; } } else if (string.IsNullOrEmpty(empresa.FTPPastaRetornos)) { erro = "Informe a pasta do FTP de destino dos retornos" + xNomeCNPJ; validou = false; } } #endregion #region Verificar se o certificado foi informado if (validarCertificado && empresa.UsaCertificado && validou) { if (empresa.CertificadoInstalado && empresa.CertificadoDigitalThumbPrint.Equals(string.Empty)) { erro = "Selecione o certificado digital a ser utilizado na autenticação dos serviços." + xNomeCNPJ; validou = false; } if (!empresa.CertificadoInstalado && validou) { if (empresa.CertificadoArquivo.Equals(string.Empty)) { erro = "Informe o local de armazenamento do certificado digital a ser utilizado na autenticação dos serviços." + xNomeCNPJ; validou = false; } else if (!File.Exists(empresa.CertificadoArquivo)) { erro = "Arquivo do certificado digital a ser utilizado na autenticação dos serviços não foi encontrado." + xNomeCNPJ; validou = false; } else if (empresa.CertificadoSenha.Equals(string.Empty)) { erro = "Informe a senha do certificado digital a ser utilizado na autenticação dos serviços." + xNomeCNPJ; validou = false; } else { try { using (FileStream fs = new FileStream(empresa.CertificadoArquivo, FileMode.Open, FileAccess.Read)) { byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); empresa.X509Certificado = new X509Certificate2(buffer, empresa.CertificadoSenha); } } catch (System.Security.Cryptography.CryptographicException ex) { erro = ex.Message + "." + xNomeCNPJ; validou = false; } catch (Exception ex) { erro = ex.Message + "." + xNomeCNPJ; validou = false; } } } } #endregion #region Verificar se as pastas informadas existem if (validou) { //Fazer um pequeno ajuste na pasta de configuração do unidanfe antes de verificar sua existência if (empresa.PastaConfigUniDanfe.Trim() != string.Empty) { if (!string.IsNullOrEmpty(empresa.PastaConfigUniDanfe)) { while (empresa.PastaConfigUniDanfe.Substring(empresa.PastaConfigUniDanfe.Length - 6, 6).ToLower() == @"\dados" && !string.IsNullOrEmpty(empresa.PastaConfigUniDanfe)) { empresa.PastaConfigUniDanfe = empresa.PastaConfigUniDanfe.Substring(0, empresa.PastaConfigUniDanfe.Length - 6); } } empresa.PastaConfigUniDanfe = empresa.PastaConfigUniDanfe.Replace("\r\n", "").Trim(); //empresa.PastaConfigUniDanfe = empresa.PastaConfigUniDanfe; } if (empresa.PastaXmlEnvio.ToLower().EndsWith("geral")) { erro = "Pasta de envio não pode terminar com a subpasta 'geral'." + xNomeCNPJ; validou = false; } else if (empresa.PastaXmlEmLote.ToLower().EndsWith("geral")) { erro = "Pasta de envio em lote não pode terminar com a subpasta 'geral'." + xNomeCNPJ; validou = false; } else if (empresa.PastaValidar.ToLower().EndsWith("geral")) { erro = "Pasta de validação não pode terminar com a subpasta 'geral'." + xNomeCNPJ; validou = false; } else if (empresa.PastaXmlEnvio.ToLower().EndsWith("temp")) { erro = "Pasta de envio não pode terminar com a subpasta 'temp'." + xNomeCNPJ; validou = false; } else if (empresa.PastaXmlEmLote.ToLower().EndsWith("temp")) { erro = "Pasta de envio em lote não pode terminar com a subpasta 'temp'." + xNomeCNPJ; validou = false; } else if (empresa.PastaValidar.ToLower().EndsWith("temp")) { erro = "Pasta de validação não pode terminar com a subpasta 'temp'." + xNomeCNPJ; validou = false; } else if (empresa.PastaXmlErro.ToLower().EndsWith("temp")) { erro = "Pasta de XML's com erro na tentativa de envio não pode terminar com a subpasta 'temp'." + xNomeCNPJ; validou = false; } #if f if (validou) { diretorios.Clear(); mensagens.Clear(); diretorios.Add(empresa.PastaXmlEnvio.Trim()); mensagens.Add("A pasta de envio dos arquivos XML informada não existe."); diretorios.Add(empresa.PastaXmlRetorno.Trim()); mensagens.Add("A pasta de retorno dos arquivos XML informada não existe."); diretorios.Add(empresa.PastaXmlErro.Trim()); mensagens.Add("A pasta para arquivamento temporário dos arquivos XML com erro informada não existe."); diretorios.Add(empresa.PastaValidar.Trim()); mensagens.Add("A pasta para validação de XML´s informada não existe."); if (empresa.Servico != TipoAplicativo.Nfse) { diretorios.Add(empresa.PastaXmlEnviado.Trim()); mensagens.Add("A pasta para arquivamento dos arquivos XML enviados informada não existe."); diretorios.Add(empresa.PastaBackup.Trim()); mensagens.Add("A pasta para backup dos XML enviados informada não existe."); diretorios.Add(empresa.PastaDownloadNFeDest.Trim()); mensagens.Add("A pasta para arquivamento das NFe de destinatários informada não existe."); diretorios.Add(empresa.PastaXmlEmLote.Trim()); mensagens.Add("A pasta de envio das notas fiscais eletrônicas em lote informada não existe."); diretorios.Add(empresa.PastaDanfeMon.Trim()); mensagens.Add("A pasta informada para gravação do XML da NFe para o DANFeMon não existe."); diretorios.Add(empresa.PastaExeUniDanfe.Trim()); mensagens.Add("A pasta do executável do UniDANFe informada não existe."); diretorios.Add(empresa.PastaConfigUniDanfe.Trim()); mensagens.Add("A pasta do arquivo de configurações do UniDANFe informada não existe."); } for (int b = 0; b < diretorios.Count; b++) { if (!string.IsNullOrEmpty(diretorios[b])) { if (!Directory.Exists(diretorios[b])) { if (empresa.CriaPastasAutomaticamente) { Directory.CreateDirectory(diretorios[b]); } else { erro = mensagens[b].Trim() + xNomeCNPJ; validou = false; break; } } } } } #endif #region Criar pasta Temp dentro da pasta de envio, envio em lote e validar //Criar pasta Temp dentro da pasta de envio, envio em Lote e Validar. Wandrey 03/08/2011 if (validou) { if (Directory.Exists(empresa.PastaXmlEnvio.Trim())) { if (!Directory.Exists(empresa.PastaXmlEnvio.Trim() + "\\Temp")) { Directory.CreateDirectory(empresa.PastaXmlEnvio.Trim() + "\\Temp"); } } if (Directory.Exists(empresa.PastaXmlEmLote.Trim()) && Propriedade.TipoAplicativo != TipoAplicativo.Nfse) { if (!Directory.Exists(empresa.PastaXmlEmLote.Trim() + "\\Temp")) { Directory.CreateDirectory(empresa.PastaXmlEmLote.Trim() + "\\Temp"); } } if (Directory.Exists(empresa.PastaValidar.Trim())) { if (!Directory.Exists(empresa.PastaValidar.Trim() + "\\Temp")) { Directory.CreateDirectory(empresa.PastaValidar.Trim() + "\\Temp"); } } } #endregion } #endregion #region Verificar se as pastas configuradas do unidanfe estão corretas if (empresa.Servico != TipoAplicativo.Nfse && validou) { if (empresa.PastaExeUniDanfe.Trim() != string.Empty) { if (!File.Exists(empresa.PastaExeUniDanfe + "\\unidanfe.exe")) { erro = "O executável do UniDANFe não foi localizado na pasta informada." + xNomeCNPJ; validou = false; } } if (validou && empresa.PastaConfigUniDanfe.Trim() != string.Empty) { //Verificar a existência o arquivo de configuração if (!File.Exists(empresa.PastaConfigUniDanfe + "\\dados\\config.tps")) { erro = "O arquivo de configuração do UniDANFe não foi localizado na pasta informada." + xNomeCNPJ; validou = false; } } } #endregion #region Verificar se o IDToken informado é menor que 6 caracteres if (!string.IsNullOrEmpty(empresa.TokenCSC) && empresa.TokenCSC.Length < 6) { erro = "O IDToken deve ter 6 caracteres." + xNomeCNPJ; validou = false; } #endregion } } #region Ticket: #110 /* Validar se já existe uma instancia utilizando estes diretórios * Marcelo * 03/06/2013 */ if (validou) { //Se encontrar algum arquivo de lock nos diretórios, não permitir que seja executado try { Empresas.CanRun(); } catch (NFe.Components.Exceptions.AppJaExecutando ex) { erro = ex.Message; } validou = String.IsNullOrEmpty(erro); } #endregion if (!validou) throw new Exception(erro); }
private int CadastrarEmpresa(string arqXML, int emp) { string cnpj = ""; string nomeEmp = ""; string servico = ""; bool temEmpresa = false; if (Path.GetExtension(arqXML).ToLower() == ".xml") { XmlDocument doc = new XmlDocument(); doc.Load(arqXML); XmlElement dadosEmpresa = (XmlElement)doc.GetElementsByTagName("DadosEmpresa")[0]; if (dadosEmpresa != null) { #region Nome da empresa if (dadosEmpresa.GetElementsByTagName("Nome")[0] != null) { nomeEmp = dadosEmpresa.GetElementsByTagName("Nome")[0].InnerText; temEmpresa = true; } else if (dadosEmpresa.GetElementsByTagName("nome")[0] != null) { nomeEmp = dadosEmpresa.GetElementsByTagName("nome")[0].InnerText; temEmpresa = true; } #endregion #region CNPJ if (!String.IsNullOrEmpty(dadosEmpresa.GetAttribute(NFe.Components.TpcnResources.CNPJ.ToString()))) { cnpj = dadosEmpresa.GetAttribute(NFe.Components.TpcnResources.CNPJ.ToString()); temEmpresa = true; } else if (!String.IsNullOrEmpty(dadosEmpresa.GetAttribute("cnpj"))) { cnpj = dadosEmpresa.GetAttribute("cnpj"); temEmpresa = true; } else if (!String.IsNullOrEmpty(dadosEmpresa.GetAttribute("Cnpj"))) { cnpj = dadosEmpresa.GetAttribute("Cnpj"); temEmpresa = true; } #endregion #region Servico if (!String.IsNullOrEmpty(dadosEmpresa.GetAttribute("Servico"))) { servico = dadosEmpresa.GetAttribute("Servico"); temEmpresa = true; } else if (!String.IsNullOrEmpty(dadosEmpresa.GetAttribute("servico"))) { servico = dadosEmpresa.GetAttribute("servico"); temEmpresa = true; } #endregion } } else { List<string> cLinhas = Functions.LerArquivo(arqXML); foreach (string texto in cLinhas) { string[] dados = texto.Split('|'); int nElementos = dados.GetLength(0); if (nElementos <= 1) continue; switch (dados[0].ToLower()) { case "nome": nomeEmp = dados[1].Trim(); temEmpresa = true; break; case "cnpj": cnpj = dados[1].Trim(); temEmpresa = true; break; case "servico": servico = dados[1].Trim(); temEmpresa = true; break; } } } if (temEmpresa) { if (string.IsNullOrEmpty(cnpj) || string.IsNullOrEmpty(nomeEmp) || string.IsNullOrEmpty(servico)) { throw new Exception("Não foi possível localizar os dados da empresa no arquivo de configuração. (CNPJ/Nome ou Tipo de Serviço)"); } if (Char.IsLetter(servico, 0)) { var lista = NFe.Components.EnumHelper.ToStrings(typeof(TipoAplicativo)); if (!lista.Contains(servico)) throw new Exception(string.Format("Serviço deve ser ({0}, {1}, {2}, {3}, {4} ou {5})", NFe.Components.EnumHelper.GetDescription(TipoAplicativo.Nfe), NFe.Components.EnumHelper.GetDescription(TipoAplicativo.Cte), NFe.Components.EnumHelper.GetDescription(TipoAplicativo.Nfse), NFe.Components.EnumHelper.GetDescription(TipoAplicativo.MDFe), NFe.Components.EnumHelper.GetDescription(TipoAplicativo.NFCe), NFe.Components.EnumHelper.GetDescription(TipoAplicativo.Todos))); /// /// veio como 'NFe, NFCe, CTe, MDFe ou NFSe /// converte para numero correspondente servico = ((int)NFe.Components.EnumHelper.StringToEnum<TipoAplicativo>(servico)).ToString(); } else { if (!("0,1,2,3,4,10").Contains(servico)) { throw new Exception(string.Format("Serviço deve ser ({0} p/{1}, {2} p/{3}, {4} p/{5}, {6} p/{7}, {8} p/{9} ou {10} p/{11})", (int)TipoAplicativo.Nfe, NFe.Components.EnumHelper.GetDescription(TipoAplicativo.Nfe), (int)TipoAplicativo.Cte, NFe.Components.EnumHelper.GetDescription(TipoAplicativo.Cte), (int)TipoAplicativo.Nfse, NFe.Components.EnumHelper.GetDescription(TipoAplicativo.Nfse), (int)TipoAplicativo.MDFe, NFe.Components.EnumHelper.GetDescription(TipoAplicativo.MDFe), (int)TipoAplicativo.NFCe, NFe.Components.EnumHelper.GetDescription(TipoAplicativo.NFCe), (int)TipoAplicativo.Todos, NFe.Components.EnumHelper.GetDescription(TipoAplicativo.Todos))); } } if (Empresas.FindConfEmpresa(cnpj.Trim(), (TipoAplicativo)Convert.ToInt16(servico)) == null) { Empresa empresa = new Empresa(); empresa.CNPJ = cnpj; empresa.Nome = nomeEmp; empresa.Servico = (TipoAplicativo)Convert.ToInt16(servico); Empresas.Configuracoes.Add(empresa); //GravarArqEmpresas(); //tirado daqui pq ele somente grava quando a empresa for gravada com sucesso } return Empresas.FindConfEmpresaIndex(cnpj, (TipoAplicativo)Convert.ToInt16(servico)); } else { return emp; } }
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 { /// /// salva a lista de empresas List<Empresa> temp = new List<Empresa>(Empresas.Configuracoes); try { /// /// compara o que foi mudado /// bool grava = DadosMudaramDaEmpresa(true); if (!this.EmpresaValidada) return; if (grava) { currentEmpresa.RemoveEndSlash(); if (this.servicoCurrent != this.currentEmpresa.Servico) { var oe = Empresas.FindConfEmpresa(this.currentEmpresa.CNPJ, this.servicoCurrent); if (oe != null) Empresas.Configuracoes.Remove(oe); } string _key = this.currentEmpresa.CNPJ + this.currentEmpresa.Servico.ToString(); /// /// salva a configuracao da empresa /// this.currentEmpresa.SalvarConfiguracao(true, 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 mudaram? 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) { /// /// restaura a lista de empresas Empresas.Configuracoes = new List<Empresa>(temp); 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, ""); } } }
public void Populate(NFe.Settings.Empresa empresa, bool novaempresa) { this.loading = true; try { uninfeDummy.ClearControls(this, true, false); this.empresa = empresa; if (empresa.Servico == TipoAplicativo.Nfse) { labelUF.Text = "Município"; lbl_udDiasLimpeza.Location = new Point(this.lbl_udTempoConsulta.Location.X, this.lbl_udTempoConsulta.Location.Y); udDiasLimpeza.Location = new Point(this.udTempoConsulta.Location.X, this.udTempoConsulta.Location.Y); } else { labelUF.Text = "Unidade Federativa (UF)"; lbl_udDiasLimpeza.Location = loc_1; udDiasLimpeza.Location = loc_2; } this.lbl_CodMun.Visible = this.edtCodMun.Visible = this.edtPadrao.Visible = this.lbl_Padrao.Visible = (empresa.Servico == TipoAplicativo.Nfse); cboDiretorioSalvarComo.Visible = lbl_DiretorioSalvarComo.Visible = comboBox_tpEmis.Visible = metroLabel11.Visible = checkBoxGravarEventosNaPastaEnviadosNFe.Visible = checkBoxRetornoNFETxt.Visible = checkBoxGravarEventosDeTerceiros.Visible = checkBoxGravarEventosCancelamentoNaPastaEnviadosNFe.Visible = checkBoxCompactaNFe.Visible = udTempoConsulta.Visible = lbl_udTempoConsulta.Visible = cbIndSinc.Visible = !(empresa.Servico == TipoAplicativo.Nfse); /* * * if (empresa.Servico == TipoAplicativo.Nfe || empresa.Servico == TipoAplicativo.NFCe || empresa.Servico == TipoAplicativo.Todos) * { * grpQRCode.Visible = * edtIdentificadorCSC.Visible = * edtTokenCSC.Visible = true; * } * else * { * grpQRCode.Visible = * edtIdentificadorCSC.Visible = * edtTokenCSC.Visible = false; * } */ if (empresa.Servico == TipoAplicativo.Nfse) { comboBox_UF.DataSource = arrMunicipios; } else { comboBox_UF.DataSource = arrUF; } comboBox_UF.DisplayMember = NFe.Components.NFeStrConstants.Nome; comboBox_UF.ValueMember = "Codigo"; cnpjCurrent = this.edtCNPJ.Text = empresa.CNPJ; this.edtNome.Text = empresa.Nome; if (!string.IsNullOrEmpty(empresa.CNPJ)) { this.edtCNPJ.Text = uninfeDummy.FmtCnpjCpf(this.edtCNPJ.Text, true); } comboBox_tpEmis.SelectedValue = this.empresa.tpEmis; comboBox_Ambiente.SelectedValue = this.empresa.AmbienteCodigo; comboBox_UF.SelectedValue = this.empresa.UnidadeFederativaCodigo; cbServico.SelectedValue = (int)this.empresa.Servico; if (empresa.Servico == TipoAplicativo.Nfse && this.empresa.UnidadeFederativaCodigo == 0) { comboBox_UF.SelectedIndex = 0; } checkBoxRetornoNFETxt.Checked = this.empresa.GravarRetornoTXTNFe; checkBoxGravarEventosDeTerceiros.Checked = this.empresa.GravarEventosDeTerceiros; checkBoxGravarEventosNaPastaEnviadosNFe.Checked = this.empresa.GravarEventosNaPastaEnviadosNFe; checkBoxGravarEventosCancelamentoNaPastaEnviadosNFe.Checked = this.empresa.GravarEventosCancelamentoNaPastaEnviadosNFe; checkBoxCompactaNFe.Checked = this.empresa.CompactarNfe; cbIndSinc.Checked = this.empresa.IndSinc; edtIdentificadorCSC.Text = this.empresa.IdentificadorCSC; edtTokenCSC.Text = this.empresa.TokenCSC; cboDiretorioSalvarComo.Text = this.empresa.DiretorioSalvarComo; udDiasLimpeza.Text = this.empresa.DiasLimpeza.ToString(); udTempoConsulta.Text = this.empresa.TempoConsulta.ToString(); this.txtSenhaWS.Text = this.empresa.SenhaWS; this.txtUsuarioWS.Text = this.empresa.UsuarioWS; HabilitaUsuarioSenhaWS(this.empresa.UnidadeFederativaCodigo); servicoCurrent = this.empresa.Servico; HabilitaOpcaoCompactar(this.empresa.Servico == TipoAplicativo.Nfe); this.edtCNPJ.ReadOnly = !string.IsNullOrEmpty(empresa.CNPJ); this.cbServico.Enabled = !this.edtCNPJ.ReadOnly; if (this.empresa.Servico != TipoAplicativo.Nfse && !novaempresa) { this.cbServico.Enabled = true; } } finally { this.loading = false; cbServico_SelectedIndexChanged(null, null); comboBox_UF_SelectedIndexChanged(null, null); } }
/// <summary> /// Pega algumas informações do certificado digital informado por parâmetro para o método e disponibiliza em propriedades para utilização /// </summary> /// <param name="empresa">Objeto com os dados da empresa</param> /// <returns>Retorna se localizou o certificado ou não (True or False)</returns> public bool PrepInfCertificado(Empresa empresa) { bool localizouCertificado; X509Certificate2 x509Cert = empresa.BuscaConfiguracaoCertificado(); if (x509Cert == null) localizouCertificado = false; else { sSubject = x509Cert.Subject; dValidadeInicial = x509Cert.NotBefore; dValidadeFinal = x509Cert.NotAfter; localizouCertificado = true; } return localizouCertificado; }
/// <summary> /// Carrega as Empresas que foram cadastradas e estão gravadas no XML /// </summary> /// <param name="sonfe"></param> /// <param name="pedidoSituacao">Se verdadeiro, está sendo chamado pela tela de pedido de situação</param> /// <returns>Retorna uma ArrayList das empresas cadastradas</returns> /// <remarks> /// Autor: Wandrey Mundin Ferreira /// Data: 28/07/2010 /// </remarks> public static ArrayList CarregaEmpresa(bool sonfe, bool pedidoSituacao = false) { ArrayList empresa = new ArrayList(); string arqXML = Propriedade.NomeArqEmpresas; int codEmp = 0; if (File.Exists(arqXML)) { //Carregar os dados do arquivo XML de configurações da Aplicação XElement axml = XElement.Load(arqXML); var b1 = axml.Descendants(NFeStrConstants.Registro); foreach (var item in b1) { string cnpj = item.Attribute(TpcnResources.CNPJ.ToString()).Value; string nome = item.Element(NFeStrConstants.Nome).Value; string servico = ""; if (item.Attribute(NFeStrConstants.Servico) != null) { servico = item.Attribute(NFeStrConstants.Servico).Value; if (!string.IsNullOrEmpty(servico)) { servico = ((TipoAplicativo)Convert.ToInt16(servico)).ToString(); } } if (string.IsNullOrEmpty(servico)) { servico = Propriedade.TipoAplicativo.ToString(); } Empresa emp = new Empresa() { Nome = nome, CNPJ = cnpj, Servico = (TipoAplicativo)Enum.Parse(typeof(TipoAplicativo), servico, true) }; if (File.Exists(emp.NomeArquivoConfig)) { if (sonfe && (servico.Equals(TipoAplicativo.Nfse.ToString()) || servico.Equals(TipoAplicativo.eSocial.ToString()) || servico.Equals(TipoAplicativo.EFDReinf.ToString()) || servico.Equals(TipoAplicativo.EFDReinfeSocial.ToString()))) { codEmp++; continue; } empresa.Add(new ComboElem { Valor = cnpj, Codigo = codEmp, Nome = nome + " <" + servico + ">", Servico = servico }); codEmp++; } } } if (pedidoSituacao) { empresa.Add(new ComboElem { Valor = string.Empty, Codigo = codEmp, Nome = "Todas as empresas", Servico = TipoAplicativo.Todos.ToString() }); } empresa.Sort(new OrdenacaoPorNome()); return(empresa); }
public void BuscaConfiguracao() { if (!Directory.Exists(this.PastaEmpresa)) Directory.CreateDirectory(this.PastaEmpresa); LimparPropriedades(this); if (File.Exists(this.NomeArquivoConfig)) { try { ObjectXMLSerializer objObjectXMLSerializer = new ObjectXMLSerializer(); /// /// verifica se precisa de conversao para que a Deserializacao funcione string temp = File.ReadAllText(this.NomeArquivoConfig, Encoding.UTF8); if (temp.Contains("<nfe_configuracoes>") || temp.Contains("<CertificadoDigital>")) { File.WriteAllText(this.NomeArquivoConfig + ".old", temp); //this.BuscaConfiguracao(this); //objObjectXMLSerializer.Save(this, this.NomeArquivoConfig); temp = temp.Replace("<nfe_configuracoes>", "<Empresa xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">"); temp = temp.Replace("</nfe_configuracoes>", "</Empresa>"); temp = temp.Replace(">False<", ">false<").Replace(">True<", ">true<"); if (!temp.Contains("<diretorioSalvarComo>")) { temp = temp.Replace("<DiretorioSalvarComo>", "<diretorioSalvarComo>").Replace("</DiretorioSalvarComo>", "</diretorioSalvarComo>"); } temp = temp.Replace("<CertificadoDigital>", "<Certificado>").Replace("</CertificadoDigital>", "</Certificado>"); File.WriteAllText(this.NomeArquivoConfig, temp); } Empresa t = new Empresa(); t = (Empresa)objObjectXMLSerializer.Load(typeof(Empresa), this.NomeArquivoConfig); if (!temp.Contains("<UsaCertificado>")) t.UsaCertificado = true; if (!temp.Contains("<FTPPassivo>")) t.FTPPassivo = false; if (t.UsaCertificado) { if (!t.CertificadoInstalado && !string.IsNullOrEmpty(t.CertificadoSenha)) t.CertificadoSenha = Criptografia.descriptografaSenha(t.CertificadoSenha); } t.CertificadoPIN = Criptografia.descriptografaSenha(t.CertificadoPIN); t.Nome = this.Nome; t.CNPJ = this.CNPJ; t.Servico = this.Servico; if (t.Servico != TipoAplicativo.Nfse) t.UsaCertificado = true; t.CopyObjectTo(this); this.CriarPastasDaEmpresa(); this.X509Certificado = this.BuscaConfiguracaoCertificado(); } catch (Exception ex) { //Não vou mais fazer isso pois estava gerando problemas com Certificados A3 - Renan 18/06/2013 //empresa.Certificado = string.Empty; //empresa.CertificadoThumbPrint = string.Empty; throw new Exception("Ocorreu um erro ao efetuar a leitura das configurações da empresa " + this.Nome.Trim() + ". Por favor entre na tela de configurações desta empresa e reconfigure.\r\n\r\nErro: " + ex.Message); } } }
private static string CriaArquivoDeErro(Empresa empresa, 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"))); if (!Directory.Exists(Path.GetDirectoryName(cArqErro))) { cArqErro = Path.Combine(Propriedade.PastaLog, Path.GetFileName(cArqErro)); } return cArqErro; }
private void LimparPropriedades(Empresa empresa) { empresa.PastaXmlEnvio = empresa.PastaXmlRetorno = empresa.PastaXmlEnviado = empresa.PastaXmlErro = empresa.PastaBackup = empresa.PastaXmlEmLote = empresa.PastaValidar = empresa.PastaDanfeMon = empresa.PastaExeUniDanfe = empresa.ConfiguracaoDanfe = empresa.ConfiguracaoCCe = empresa.PastaConfigUniDanfe = empresa.PastaDownloadNFeDest = empresa.EmailDanfe = string.Empty; empresa.X509Certificado = null; empresa.UsaCertificado = true; empresa.CertificadoInstalado = true; empresa.CertificadoArquivo = empresa.CertificadoDigitalThumbPrint = empresa.CertificadoSenha = empresa.CertificadoPIN = empresa.ProviderCertificado = empresa.ProviderTypeCertificado = empresa.Certificado = string.Empty; empresa.FTPAtivo = false; empresa.FTPPorta = 21; empresa.FTPSenha = empresa.FTPNomeDoServidor = empresa.FTPNomeDoUsuario = empresa.FTPPastaRetornos = empresa.FTPPastaAutorizados = string.Empty; empresa.UnidadeFederativaCodigo = 0; empresa.DiasLimpeza = 0; empresa.TempoConsulta = 2; empresa.CriaPastasAutomaticamente = false; empresa.UsuarioWS = string.Empty; empresa.SenhaWS = string.Empty; empresa.AmbienteCodigo = (int)NFe.Components.TipoAmbiente.taHomologacao; //2 empresa.tpEmis = (int)NFe.Components.TipoEmissao.teNormal; //1 if (Propriedade.TipoAplicativo != TipoAplicativo.Nfse) empresa.UnidadeFederativaCodigo = 41; empresa.GravarRetornoTXTNFe = empresa.GravarEventosNaPastaEnviadosNFe = empresa.GravarEventosCancelamentoNaPastaEnviadosNFe = empresa.GravarEventosDeTerceiros = empresa.XMLDanfeMonNFe = empresa.XMLDanfeMonProcNFe = empresa.XMLDanfeMonDenegadaNFe = empresa.IndSinc = false; empresa.AdicionaEmailDanfe = true; empresa.DiretorioSalvarComo = "AM"; }
public static void verificaPasta(Empresa empresa, XmlElement configElemento, string tagName, string descricao, bool isObrigatoria) { XmlNode node = configElemento.GetElementsByTagName(tagName)[0]; if (node != null) { if (!isObrigatoria && node.InnerText.Trim() == "") return; if (isObrigatoria && node.InnerText.Trim() == "") { Empresas.ExisteErroDiretorio = true; ErroCaminhoDiretorio += "Empresa: " + empresa.Nome + " : \"" + descricao + "\"\r\n"; } else if (!Directory.Exists(node.InnerText.Trim()) && node.InnerText.Trim() != "") { Empresas.ExisteErroDiretorio = true; ErroCaminhoDiretorio += "Empresa: " + empresa.Nome + " Pasta: " + node.InnerText.Trim() + "\r\n"; } } else { if (isObrigatoria) { Empresas.ExisteErroDiretorio = true; ErroCaminhoDiretorio += "Empresa: " + empresa.Nome + " : \"" + descricao + "\"\r\n"; } } }
public void Populate(NFe.Settings.Empresa empresa, bool novaempresa) { this.loading = true; try { uninfeDummy.ClearControls(this, true, false); this.empresa = empresa; if (empresa.Servico == TipoAplicativo.Nfse) { labelUF.Text = "Município"; lbl_udDiasLimpeza.Location = new Point(this.lbl_udTempoConsulta.Location.X, this.lbl_udTempoConsulta.Location.Y); udDiasLimpeza.Location = new Point(this.udTempoConsulta.Location.X, this.udTempoConsulta.Location.Y); } else { labelUF.Text = "Unidade Federativa (UF-Estado)"; lbl_udDiasLimpeza.Location = loc_1; udDiasLimpeza.Location = loc_2; } this.lbl_CodMun.Visible = this.edtCodMun.Visible = this.edtPadrao.Visible = this.lbl_Padrao.Visible = (empresa.Servico == TipoAplicativo.Nfse); cboDiretorioSalvarComo.Visible = lbl_DiretorioSalvarComo.Visible = comboBox_tpEmis.Visible = metroLabel11.Visible = checkBoxGravarEventosNaPastaEnviadosNFe.Visible = checkBoxRetornoNFETxt.Visible = checkBoxGravarEventosDeTerceiros.Visible = checkBoxGravarEventosCancelamentoNaPastaEnviadosNFe.Visible = checkBoxCompactaNFe.Visible = udTempoConsulta.Visible = lbl_udTempoConsulta.Visible = cbIndSinc.Visible = !(empresa.Servico == TipoAplicativo.Nfse); /* if (empresa.Servico == TipoAplicativo.Nfe || empresa.Servico == TipoAplicativo.NFCe || empresa.Servico == TipoAplicativo.Todos) { grpQRCode.Visible = edtIdentificadorCSC.Visible = edtTokenCSC.Visible = true; } else { grpQRCode.Visible = edtIdentificadorCSC.Visible = edtTokenCSC.Visible = false; } */ if (empresa.Servico == TipoAplicativo.Nfse) comboBox_UF.DataSource = arrMunicipios; else comboBox_UF.DataSource = arrUF; comboBox_UF.DisplayMember = NFe.Components.NFeStrConstants.Nome; comboBox_UF.ValueMember = "Codigo"; cnpjCurrent = this.edtCNPJ.Text = empresa.CNPJ; this.edtNome.Text = empresa.Nome; if (!string.IsNullOrEmpty(empresa.CNPJ)) this.edtCNPJ.Text = uninfeDummy.FmtCnpjCpf(this.edtCNPJ.Text, true); comboBox_tpEmis.SelectedValue = this.empresa.tpEmis; comboBox_Ambiente.SelectedValue = this.empresa.AmbienteCodigo; comboBox_UF.SelectedValue = this.empresa.UnidadeFederativaCodigo; cbServico.SelectedValue = (int)this.empresa.Servico; if (empresa.Servico == TipoAplicativo.Nfse && this.empresa.UnidadeFederativaCodigo == 0) comboBox_UF.SelectedIndex = 0; checkBoxRetornoNFETxt.Checked = this.empresa.GravarRetornoTXTNFe; checkBoxGravarEventosDeTerceiros.Checked = this.empresa.GravarEventosDeTerceiros; checkBoxGravarEventosNaPastaEnviadosNFe.Checked = this.empresa.GravarEventosNaPastaEnviadosNFe; checkBoxGravarEventosCancelamentoNaPastaEnviadosNFe.Checked = this.empresa.GravarEventosCancelamentoNaPastaEnviadosNFe; checkBoxCompactaNFe.Checked = this.empresa.CompactarNfe; cbIndSinc.Checked = this.empresa.IndSinc; edtIdentificadorCSC.Text = this.empresa.IndentificadorCSC; edtTokenCSC.Text = this.empresa.TokenCSC; cboDiretorioSalvarComo.Text = this.empresa.DiretorioSalvarComo; udDiasLimpeza.Text = this.empresa.DiasLimpeza.ToString(); udTempoConsulta.Text = this.empresa.TempoConsulta.ToString(); this.txtSenhaWS.Text = this.empresa.SenhaWS; this.txtUsuarioWS.Text = this.empresa.UsuarioWS; HabilitaUsuarioSenhaWS(this.empresa.UnidadeFederativaCodigo); servicoCurrent = this.empresa.Servico; HabilitaOpcaoCompactar(this.empresa.Servico == TipoAplicativo.Nfe); this.edtCNPJ.ReadOnly = !string.IsNullOrEmpty(empresa.CNPJ); this.cbServico.Enabled = !this.edtCNPJ.ReadOnly; if (this.empresa.Servico != TipoAplicativo.Nfse && !novaempresa) this.cbServico.Enabled = true; } finally { this.loading = false; cbServico_SelectedIndexChanged(null, null); comboBox_UF_SelectedIndexChanged(null, null); } }