/// <summary>
/// Grava XML com algumas informações do aplicativo, dentre elas os dados do certificado digital configurado nos parâmetros, versão, última modificação, etc.
/// </summary>
/// <param name="sArquivo">Pasta e nome do arquivo XML a ser gravado com as informações</param>
public void GravarXMLInformacoes(string sArquivo)
{
int emp = Empresas.FindEmpresaByThread();
string cStat = "1";
string xMotivo = "Consulta efetuada com sucesso";
//Ler os dados do certificado digital
string sSubject = "";
string sValIni = "";
string sValFin = "";
CertificadoDigital cert = new CertificadoDigital();
if (cert.PrepInfCertificado(Empresas.Configuracoes[emp]))
{
sSubject = cert.sSubject;
sValIni = cert.dValidadeInicial.ToString();
sValFin = cert.dValidadeFinal.ToString();
}
else
{
if (!Empresas.Configuracoes[emp].UsaCertificado)
xMotivo = "Empresa sem certificado digital informado e/ou não necessário";
else
{
cStat = "2";
xMotivo = "Certificado digital não foi localizado";
}
}
//danasa 22/7/2011
//pega a data da ultima modificacao do 'uninfe.exe' diretamente porque pode ser que esteja sendo executado o servico
//então, precisamos dos dados do uninfe.exe e não do servico
string dtUltModif;
URLws item;
string tipo = "";
dtUltModif = File.GetLastWriteTime(Propriedade.NomeAplicacao + ".exe").ToString("dd/MM/yyyy - HH:mm:ss");
//Gravar o XML com as informações do aplicativo
try
{
bool isXml = false;
object oXmlGravar;
if (Path.GetExtension(sArquivo).ToLower() == ".txt")
{
oXmlGravar = new System.IO.StringWriter();
}
else
{
isXml = true;
XmlWriterSettings oSettings = new XmlWriterSettings();
UTF8Encoding c = new UTF8Encoding(true);
//Para começar, vamos criar um XmlWriterSettings para configurar nosso XML
oSettings.Encoding = c;
oSettings.Indent = true;
oSettings.IndentChars = "";
oSettings.NewLineOnAttributes = false;
oSettings.OmitXmlDeclaration = false;
//Agora vamos criar um XML Writer
oXmlGravar = XmlWriter.Create(sArquivo, oSettings);
}
//Abrir o XML
if (isXml)
{
((XmlWriter)oXmlGravar).WriteStartDocument();
((XmlWriter)oXmlGravar).WriteStartElement("retConsInf");
}
Functions.GravaTxtXml(oXmlGravar, NFe.Components.TpcnResources.cStat.ToString(), cStat);
Functions.GravaTxtXml(oXmlGravar, NFe.Components.TpcnResources.xMotivo.ToString(), xMotivo);
//Dados do certificado digital
if (isXml) ((XmlWriter)oXmlGravar).WriteStartElement("DadosCertificado");
Functions.GravaTxtXml(oXmlGravar, "sSubject", sSubject);
Functions.GravaTxtXml(oXmlGravar, "dValIni", sValIni);
Functions.GravaTxtXml(oXmlGravar, "dValFin", sValFin);
if (isXml) ((XmlWriter)oXmlGravar).WriteEndElement(); //DadosCertificado
//Dados gerais do Aplicativo
if (isXml) ((XmlWriter)oXmlGravar).WriteStartElement("DadosUniNfe");
Functions.GravaTxtXml(oXmlGravar, NFe.Components.TpcnResources.versao.ToString(), Propriedade.Versao);
Functions.GravaTxtXml(oXmlGravar, "dUltModif", dtUltModif);
Functions.GravaTxtXml(oXmlGravar, "PastaExecutavel", Propriedade.PastaExecutavel);
Functions.GravaTxtXml(oXmlGravar, "NomeComputador", Environment.MachineName);
//danasa 22/7/2011
Functions.GravaTxtXml(oXmlGravar, "ExecutandoPeloServico", Propriedade.ServicoRodando.ToString());
if (isXml) ((XmlWriter)oXmlGravar).WriteEndElement(); //DadosUniNfe
//Dados das configurações do aplicativo
if (isXml) ((XmlWriter)oXmlGravar).WriteStartElement(NFeStrConstants.nfe_configuracoes);
//Functions.GravaTxtXml(oXmlGravar, NFe.Components.NFeStrConstants.DiretorioSalvarComo, Empresas.Configuracoes[emp].DiretorioSalvarComo.ToString());
bool hasFTP = false;
foreach (var pT in Empresas.Configuracoes[emp].GetType().GetProperties())
{
if (pT.CanWrite)
{
if (pT.Name.Equals("diretorioSalvarComo")) continue;
if (isXml)
{
if (!hasFTP && pT.Name.StartsWith("FTP"))
{
((XmlWriter)oXmlGravar).WriteStartElement("FTP");
hasFTP = true;
}
else
if (hasFTP && !pT.Name.StartsWith("FTP"))
{
((XmlWriter)oXmlGravar).WriteEndElement();
hasFTP = false;
}
}
object v = pT.GetValue(Empresas.Configuracoes[emp], null);
NFe.Components.Functions.GravaTxtXml(oXmlGravar, pT.Name, v == null ? "" : v.ToString());
}
}
if (hasFTP && isXml) ((XmlWriter)oXmlGravar).WriteEndElement();
///
/// o ERP poderá verificar se determinado servico está definido no UniNFe
///
foreach (webServices list in WebServiceProxy.webServicesList)
{
if (list.ID == Empresas.Configuracoes[emp].UnidadeFederativaCodigo)
{
if (isXml) ((XmlWriter)oXmlGravar).WriteStartElement(list.UF);
if (Empresas.Configuracoes[emp].AmbienteCodigo == 2)
{
item = list.LocalHomologacao;
if (isXml) ((XmlWriter)oXmlGravar).WriteStartElement("Homologacao");
else tipo = list.UF + ".Homologacao.";
}
else
{
item = list.LocalProducao;
if (isXml) ((XmlWriter)oXmlGravar).WriteStartElement("Producao");
else tipo = list.UF + ".Producao.";
}
switch (Empresas.Configuracoes[emp].Servico)
{
case TipoAplicativo.Nfse:
Functions.GravaTxtXml(oXmlGravar, tipo + NFe.Components.Servicos.NFSeCancelar.ToString(), (!string.IsNullOrEmpty(item.CancelarNfse)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + NFe.Components.Servicos.NFSeConsultarLoteRps.ToString(), (!string.IsNullOrEmpty(item.ConsultarLoteRps)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + NFe.Components.Servicos.NFSeConsultar.ToString(), (!string.IsNullOrEmpty(item.ConsultarNfse)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + NFe.Components.Servicos.NFSeConsultarPorRps.ToString(), (!string.IsNullOrEmpty(item.ConsultarNfsePorRps)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + NFe.Components.Servicos.NFSeConsultarSituacaoLoteRps.ToString(), (!string.IsNullOrEmpty(item.ConsultarSituacaoLoteRps)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + NFe.Components.Servicos.NFSeRecepcionarLoteRps.ToString(), (!string.IsNullOrEmpty(item.RecepcionarLoteRps)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + NFe.Components.Servicos.NFSeConsultarURL.ToString(), (!string.IsNullOrEmpty(item.ConsultarURLNfse)).ToString());
break;
default:
if (Empresas.Configuracoes[emp].Servico == TipoAplicativo.NFCe ||
Empresas.Configuracoes[emp].Servico == TipoAplicativo.Nfe ||
Empresas.Configuracoes[emp].Servico == TipoAplicativo.Todos)
{
Functions.GravaTxtXml(oXmlGravar, tipo + "NFeConsulta", (!string.IsNullOrEmpty(item.NFeConsulta)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + "NFeRecepcao", (!string.IsNullOrEmpty(item.NFeRecepcao)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + "NFeRecepcaoEvento", (!string.IsNullOrEmpty(item.NFeRecepcaoEvento)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + "NFeConsultaCadastro", (!string.IsNullOrEmpty(item.NFeConsultaCadastro)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + "NFeConsultaNFeDest", (!string.IsNullOrEmpty(item.NFeConsultaNFeDest)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + NFe.Components.Servicos.NFeDownload.ToString(), (!string.IsNullOrEmpty(item.NFeDownload)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + "NFeInutilizacao", (!string.IsNullOrEmpty(item.NFeInutilizacao)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + "NFeManifDest", (!string.IsNullOrEmpty(item.NFeManifDest)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + "NFeStatusServico", (!string.IsNullOrEmpty(item.NFeStatusServico)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + "NFeAutorizacao", (!string.IsNullOrEmpty(item.NFeAutorizacao)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + "NFeRetAutorizacao", (!string.IsNullOrEmpty(item.NFeRetAutorizacao)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + "DFeRecepcao", (!string.IsNullOrEmpty(item.DFeRecepcao)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + NFe.Components.Servicos.LMCAutorizacao.ToString(), (!string.IsNullOrEmpty(item.LMCAutorizacao)).ToString());
}
if (Empresas.Configuracoes[emp].Servico == TipoAplicativo.MDFe ||
Empresas.Configuracoes[emp].Servico == TipoAplicativo.Todos)
{
Functions.GravaTxtXml(oXmlGravar, tipo + "MDFeRecepcao", (!string.IsNullOrEmpty(item.MDFeRecepcao)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + "MDFeRetRecepcao", (!string.IsNullOrEmpty(item.MDFeRetRecepcao)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + "MDFeConsulta", (!string.IsNullOrEmpty(item.MDFeConsulta)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + "MDFeStatusServico", (!string.IsNullOrEmpty(item.MDFeStatusServico)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + NFe.Components.Servicos.MDFeRecepcaoEvento.ToString(), (!string.IsNullOrEmpty(item.MDFeRecepcaoEvento)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + NFe.Components.Servicos.MDFeConsultaNaoEncerrado.ToString(), (!string.IsNullOrEmpty(item.MDFeNaoEncerrado)).ToString());
}
if (Empresas.Configuracoes[emp].Servico == TipoAplicativo.Cte ||
Empresas.Configuracoes[emp].Servico == TipoAplicativo.Todos)
{
Functions.GravaTxtXml(oXmlGravar, tipo + NFe.Components.Servicos.CTeRecepcaoEvento.ToString(), (!string.IsNullOrEmpty(item.CTeRecepcaoEvento)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + "CTeConsultaCadastro", (!string.IsNullOrEmpty(item.CTeConsultaCadastro)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + "CTeInutilizacao", (!string.IsNullOrEmpty(item.CTeInutilizacao)).ToString());
Functions.GravaTxtXml(oXmlGravar, tipo + "CTeStatusServico", (!string.IsNullOrEmpty(item.CTeStatusServico)).ToString());
}
break;
}
if (isXml)
{
((XmlWriter)oXmlGravar).WriteEndElement(); //Ambiente
((XmlWriter)oXmlGravar).WriteEndElement(); //list.UF
}
}
}
//Finalizar o XML
if (isXml)
{
((XmlWriter)oXmlGravar).WriteEndElement(); //nfe_configuracoes
((XmlWriter)oXmlGravar).WriteEndElement(); //retConsInf
((XmlWriter)oXmlGravar).WriteEndDocument();
((XmlWriter)oXmlGravar).Flush();
((XmlWriter)oXmlGravar).Close();
}
else
{
((StringWriter)oXmlGravar).Flush();
File.WriteAllText(sArquivo, ((StringWriter)oXmlGravar).GetStringBuilder().ToString());
((StringWriter)oXmlGravar).Close();
}
}
catch (Exception ex)
{
Functions.DeletarArquivo(sArquivo);
///
/// danasa 8-2009
///
Auxiliar oAux = new Auxiliar();
oAux.GravarArqErroERP(Path.GetFileNameWithoutExtension(sArquivo) + ".err", ex.Message);
}
}