public void ReconfigurarUniNFe(string cArquivoXml)
{
int emp = Empresas.FindEmpresaByThread();
string cStat = "";
string xMotivo = "";
bool lErro = false;
bool lEncontrouTag = false;
try
{
///
/// inclui o processo de inclusao de empresa pelo 'txt'
emp = CadastrarEmpresa(cArquivoXml, emp);
if (Path.GetExtension(cArquivoXml).ToLower() == ".txt")
{
#region Formato TXT
List<string> cLinhas = Functions.LerArquivo(cArquivoXml);
lEncontrouTag = Functions.PopulateClasse(Empresas.Configuracoes[emp], cLinhas);
foreach (string texto in cLinhas)
{
string[] dados = texto.Split('|');
int nElementos = dados.GetLength(0);
if (nElementos <= 1)
continue;
switch (dados[0].ToLower())
{
case "proxy": //Se a tag <Proxy> existir ele pega o novo conteúdo
ConfiguracaoApp.Proxy = (nElementos == 2 ? Convert.ToBoolean(dados[1].Trim()) : false);
lEncontrouTag = true;
break;
case "proxyservidor": //Se a tag <ProxyServidor> existir ele pega o novo conteúdo
ConfiguracaoApp.ProxyServidor = (nElementos == 2 ? dados[1].Trim() : "");
lEncontrouTag = true;
break;
case "proxyusuario": //Se a tag <ProxyUsuario> existir ele pega o novo conteúdo
ConfiguracaoApp.ProxyUsuario = (nElementos == 2 ? dados[1].Trim() : "");
lEncontrouTag = true;
break;
case "proxysenha": //Se a tag <ProxySenha> existir ele pega o novo conteúdo
ConfiguracaoApp.ProxySenha = (nElementos == 2 ? dados[1].Trim() : "");
lEncontrouTag = true;
break;
case "proxyporta": //Se a tag <ProxyPorta> existir ele pega o novo conteúdo
ConfiguracaoApp.ProxyPorta = (nElementos == 2 ? Convert.ToInt32("0" + dados[1].Trim()) : 0);
lEncontrouTag = true;
break;
case "checarconexaointernet": //Se a tag <ChecarConexaoInternet> existir ele pega o novo conteúdo
ConfiguracaoApp.ChecarConexaoInternet = (nElementos == 2 ? Convert.ToBoolean(dados[1].Trim()) : true);
lEncontrouTag = true;
break;
case "gravarlogoperacaorealizada":
ConfiguracaoApp.GravarLogOperacoesRealizadas = (nElementos == 2 ? Convert.ToBoolean(dados[1].Trim()) : true);
lEncontrouTag = true;
break;
case "senhaconfig": //Se a tag <senhaconfig> existir ele pega o novo conteúdo
ConfiguracaoApp.SenhaConfig = (nElementos == 2 ? dados[1].Trim() : "");
ConfiguracaoApp.mSenhaConfigAlterada = false;
lEncontrouTag = true;
break;
}
}
#endregion
}
else
{
#region Formato XML
XmlDocument doc = new XmlDocument();
doc.Load(cArquivoXml);
XmlNodeList ConfUniNfeList = doc.GetElementsByTagName("altConfUniNFe");
foreach (XmlNode ConfUniNfeNode in ConfUniNfeList)
{
XmlElement ConfUniNfeElemento = (XmlElement)ConfUniNfeNode;
lEncontrouTag = Functions.PopulateClasse(Empresas.Configuracoes[emp], ConfUniNfeElemento);
//Se a tag <Proxy> existir ele pega o novo conteúdo
if (ConfUniNfeElemento.GetElementsByTagName(NfeConfiguracoes.Proxy.ToString()).Count != 0)
{
ConfiguracaoApp.Proxy = Convert.ToBoolean(ConfUniNfeElemento.GetElementsByTagName(NfeConfiguracoes.Proxy.ToString())[0].InnerText);
lEncontrouTag = true;
}
//Se a tag <ProxyServidor> existir ele pega o novo conteúdo
if (ConfUniNfeElemento.GetElementsByTagName(NfeConfiguracoes.ProxyServidor.ToString()).Count != 0)
{
ConfiguracaoApp.ProxyServidor = ConfUniNfeElemento.GetElementsByTagName(NfeConfiguracoes.ProxyServidor.ToString())[0].InnerText;
lEncontrouTag = true;
}
//Se a tag <ProxyUsuario> existir ele pega o novo conteúdo
if (ConfUniNfeElemento.GetElementsByTagName(NfeConfiguracoes.ProxyUsuario.ToString()).Count != 0)
{
ConfiguracaoApp.ProxyUsuario = ConfUniNfeElemento.GetElementsByTagName(NfeConfiguracoes.ProxyUsuario.ToString())[0].InnerText;
lEncontrouTag = true;
}
//Se a tag <ProxySenha> existir ele pega o novo conteúdo
if (ConfUniNfeElemento.GetElementsByTagName(NfeConfiguracoes.ProxySenha.ToString()).Count != 0)
{
ConfiguracaoApp.ProxySenha = ConfUniNfeElemento.GetElementsByTagName(NfeConfiguracoes.ProxySenha.ToString())[0].InnerText;
lEncontrouTag = true;
}
//Se a tag <ProxyPorta> existir ele pega o novo conteúdo
if (ConfUniNfeElemento.GetElementsByTagName(NfeConfiguracoes.ProxyPorta.ToString()).Count != 0)
{
ConfiguracaoApp.ProxyPorta = Convert.ToInt32("0" + ConfUniNfeElemento.GetElementsByTagName(NfeConfiguracoes.ProxyPorta.ToString())[0].InnerText);
lEncontrouTag = true;
}
//Se a tag <ChecarConexaoInternet> existir ele pega o novo conteúdo
if (ConfUniNfeElemento.GetElementsByTagName(NfeConfiguracoes.ChecarConexaoInternet.ToString()).Count != 0)
{
ConfiguracaoApp.ChecarConexaoInternet = Convert.ToBoolean(ConfUniNfeElemento.GetElementsByTagName(NfeConfiguracoes.ChecarConexaoInternet.ToString())[0].InnerText);
lEncontrouTag = true;
}
if (ConfUniNfeElemento.GetElementsByTagName(NfeConfiguracoes.GravarLogOperacaoRealizada.ToString()).Count != 0)
{
ConfiguracaoApp.GravarLogOperacoesRealizadas = Convert.ToBoolean(ConfUniNfeElemento.GetElementsByTagName(NfeConfiguracoes.GravarLogOperacaoRealizada.ToString())[0].InnerText);
lEncontrouTag = true;
}
//Se a tag <SenhaConfig> existir ele pega no novo conteúdo
if (ConfUniNfeElemento.GetElementsByTagName(NfeConfiguracoes.SenhaConfig.ToString()).Count != 0)
{
ConfiguracaoApp.SenhaConfig = ConfUniNfeElemento.GetElementsByTagName(NfeConfiguracoes.SenhaConfig.ToString())[0].InnerText;
ConfiguracaoApp.mSenhaConfigAlterada = false;
lEncontrouTag = true;
}
}
#endregion
}
if (lEncontrouTag)
{
if (ConfiguracaoApp.Proxy &&
(ConfiguracaoApp.ProxyPorta == 0 ||
string.IsNullOrEmpty(ConfiguracaoApp.ProxyServidor) ||
string.IsNullOrEmpty(ConfiguracaoApp.ProxyUsuario) ||
string.IsNullOrEmpty(ConfiguracaoApp.ProxySenha)))
{
throw new Exception(NFeStrConstants.proxyError);
}
Empresas.Configuracoes[emp].RemoveEndSlash();
Empresas.CriarPasta();
///
/// salva a configuracao da empresa
///
//Na reconfiguração enviada pelo ERP, não vou validar o certificado, vou deixar gravar mesmo que o certificado esteja com problema. Wandrey 05/10/2012
Empresas.Configuracoes[emp].SalvarConfiguracao(false, true);
/// salva o arquivo da lista de empresas
this.GravarArqEmpresas();
/// salva as configuracoes gerais
this.GravarConfigGeral();
cStat = "1";
xMotivo = "Configuração do " + Propriedade.NomeAplicacao + " alterada com sucesso";
lErro = false;
}
else
{
cStat = "2";
xMotivo = "Ocorreu uma falha ao tentar alterar a configuracao do " + Propriedade.NomeAplicacao + ": Nenhuma tag padrão de configuração foi localizada no XML";
lErro = true;
}
}
catch (Exception ex)
{
cStat = "2";
xMotivo = "Ocorreu uma falha ao tentar alterar a configuracao do " + Propriedade.NomeAplicacao + ": " + ex.Message;
lErro = true;
}
//Se deu algum erro tenho que voltar as configurações como eram antes, ou seja
//exatamente como estavam gravadas no XML de configuração
if (lErro)
{
ConfiguracaoApp.CarregarDados();
ConfiguracaoApp.CarregarDadosSobre();
Empresas.CarregaConfiguracao();
#region Ticket: #110
Empresas.CreateLockFile(true);
#endregion
}
//Gravar o XML de retorno com a informação do sucesso ou não na reconfiguração
FileInfo arqInfo = new FileInfo(cArquivoXml);
string pastaRetorno = string.Empty;
if (arqInfo.DirectoryName.ToLower().Trim() == Propriedade.PastaGeralTemporaria.ToLower().Trim())
{
pastaRetorno = Propriedade.PastaGeralRetorno;
}
else
{
pastaRetorno = Empresas.Configuracoes[emp].PastaXmlRetorno;
}
string nomeArqRetorno;
if (Path.GetExtension(cArquivoXml).ToLower() == ".txt")
nomeArqRetorno = Functions.ExtrairNomeArq(cArquivoXml, Propriedade.ExtEnvio.AltCon_TXT) + "-ret-alt-con.txt";
else
nomeArqRetorno = Functions.ExtrairNomeArq(cArquivoXml, Propriedade.ExtEnvio.AltCon_XML) + "-ret-alt-con.xml";
string cArqRetorno = pastaRetorno + "\\" + nomeArqRetorno;
try
{
FileInfo oArqRetorno = new FileInfo(cArqRetorno);
if (oArqRetorno.Exists == true)
{
oArqRetorno.Delete();
}
if (Path.GetExtension(cArquivoXml).ToLower() == ".txt")
{
File.WriteAllText(cArqRetorno, "cStat|" + cStat + "\r\nxMotivo|" + xMotivo + "\r\n", Encoding.Default);
}
else
{
var xml = new XDocument(new XDeclaration("1.0", "utf-8", null),
new XElement("retAltConfUniNFe",
new XElement(NFe.Components.TpcnResources.cStat.ToString(), cStat),
new XElement(NFe.Components.TpcnResources.xMotivo.ToString(), xMotivo)));
xml.Save(cArqRetorno);
}
}
catch (Exception ex)
{
//Ocorreu erro na hora de gerar o arquivo de erro para o ERP
///
/// danasa 8-2009
///
Auxiliar oAux = new Auxiliar();
oAux.GravarArqErroERP(Path.GetFileNameWithoutExtension(cArqRetorno) + ".err", xMotivo + Environment.NewLine + ex.Message);
}
try
{
//Deletar o arquivo de configurações automáticas gerado pelo ERP
FileInfo oArqReconf = new FileInfo(cArquivoXml);
oArqReconf.Delete();
}
catch
{
//Não vou fazer nada, so trato a exceção para evitar fechar o aplicativo. Wandrey 09/03/2010
}
}
#endregion