/// <summary> /// Move arquivos da nota fiscal eletrônica para suas respectivas pastas /// </summary> /// <param name="Arquivo">Nome do arquivo a ser movido</param> /// <param name="PastaXMLEnviado">Pasta de XML´s enviados para onde será movido o arquivo</param> /// <param name="SubPastaXMLEnviado">SubPasta de XML´s enviados para onde será movido o arquivo</param> /// <date>05/08/2009</date> /// <by>Wandrey Mundin Ferreira</by> public static void MoverArquivo(string Arquivo, PastaEnviados SubPastaXMLEnviado) { MoverArquivo(Arquivo, SubPastaXMLEnviado, DateTime.Now); }
/// <summary> /// Move arquivos da nota fiscal eletrônica para suas respectivas pastas /// </summary> /// <param name="Arquivo">Nome do arquivo a ser movido</param> /// <param name="PastaXMLEnviado">Pasta de XML´s enviados para onde será movido o arquivo</param> /// <param name="SubPastaXMLEnviado">SubPasta de XML´s enviados para onde será movido o arquivo</param> /// <param name="PastaBackup">Pasta para Backup dos XML´s enviados</param> /// <param name="Emissao">Data de emissão da Nota Fiscal ou Data Atual do envio do XML para separação dos XML´s em subpastas por Ano e Mês</param> /// <date>16/07/2008</date> /// <by>Wandrey Mundin Ferreira</by> public static void MoverArquivo(string arquivo, PastaEnviados subPastaXMLEnviado, DateTime emissao) { int emp = Empresas.FindEmpresaByThread(); #region Criar pastas que receberão os arquivos //Criar subpastas da pasta dos XML´s enviados Empresas.Configuracoes[emp].CriarSubPastaEnviado(); //Criar Pasta do Mês para gravar arquivos enviados autorizados ou denegados string nomePastaEnviado = string.Empty; string destinoArquivo = string.Empty; switch (subPastaXMLEnviado) { case PastaEnviados.EmProcessamento: nomePastaEnviado = Empresas.Configuracoes[emp].PastaXmlEnviado + "\\" + PastaEnviados.EmProcessamento.ToString(); destinoArquivo = nomePastaEnviado + "\\" + Functions.ExtrairNomeArq(arquivo, ".xml") + ".xml"; break; case PastaEnviados.Autorizados: nomePastaEnviado = Empresas.Configuracoes[emp].PastaXmlEnviado + "\\" + PastaEnviados.Autorizados.ToString() + "\\" + Empresas.Configuracoes[emp].DiretorioSalvarComo.ToString(emissao); destinoArquivo = nomePastaEnviado + Functions.ExtrairNomeArq(arquivo, ".xml") + ".xml"; goto default; case PastaEnviados.Denegados: nomePastaEnviado = Empresas.Configuracoes[emp].PastaXmlEnviado + "\\" + PastaEnviados.Denegados.ToString() + "\\" + Empresas.Configuracoes[emp].DiretorioSalvarComo.ToString(emissao); if (arquivo.ToLower().EndsWith(Propriedade.ExtRetorno.Den))//danasa 11-4-2012 destinoArquivo = Path.Combine(nomePastaEnviado, Path.GetFileName(arquivo)); else destinoArquivo = Path.Combine(nomePastaEnviado, Functions.ExtrairNomeArq(arquivo, Propriedade.ExtEnvio.Nfe) + Propriedade.ExtRetorno.Den); goto default; default: if (!Directory.Exists(nomePastaEnviado)) { System.IO.Directory.CreateDirectory(nomePastaEnviado); } break; } #endregion //Se conseguiu criar a pasta ele move o arquivo, caso contrário if (Directory.Exists(nomePastaEnviado)) { #region Mover o XML para a pasta de XML´s enviados //Se for para mover para a Pasta EmProcessamento if (subPastaXMLEnviado == PastaEnviados.EmProcessamento) { //Se já existir o arquivo na pasta EmProcessamento vamos mover //ele para a pasta com erro antes para evitar exceção. Wandrey 05/07/2011 if (File.Exists(destinoArquivo)) { string destinoErro = Empresas.Configuracoes[emp].PastaXmlErro + "\\" + Functions.ExtrairNomeArq(arquivo, ".xml") + ".xml"; File.Move(destinoArquivo, destinoErro); //danasa 11-4-2012 Auxiliar.WriteLog("Arquivo \"" + destinoArquivo + "\" movido para a pasta \"" + Empresas.Configuracoes[emp].PastaXmlErro + "\".", true); } File.Move(arquivo, destinoArquivo); } else { //Se já existir o arquivo na pasta autorizados ou denegado, não vou mover o novo arquivo para lá, pois posso estar sobrepondo algum arquivo importante //Sendo assim se o usuário quiser forçar mover, tem que deletar da pasta autorizados ou denegados manualmente, com isso evitamos perder um XML importante. //Wandrey 05/07/2011 if (!File.Exists(destinoArquivo)) { File.Move(arquivo, destinoArquivo); } else { string destinoErro = Empresas.Configuracoes[emp].PastaXmlErro + "\\" + Functions.ExtrairNomeArq(arquivo, ".xml") + ".xml"; File.Move(arquivo, destinoErro); //danasa 11-4-2012 Auxiliar.WriteLog("Arquivo \"" + arquivo + "\" movido para a pasta \"" + Empresas.Configuracoes[emp].PastaXmlErro + "\".", true); } } #endregion if (subPastaXMLEnviado == PastaEnviados.Autorizados || subPastaXMLEnviado == PastaEnviados.Denegados) { #region Copiar XML para a pasta de BACKUP //Fazer um backup do XML que foi copiado para a pasta de enviados //para uma outra pasta para termos uma maior segurança no arquivamento //Normalmente esta pasta é em um outro computador ou HD if (Empresas.Configuracoes[emp].PastaBackup.Trim() != "") { //Criar Pasta do Mês para gravar arquivos enviados string nomePastaBackup = string.Empty; switch (subPastaXMLEnviado) { case PastaEnviados.Autorizados: nomePastaBackup = Empresas.Configuracoes[emp].PastaBackup + "\\" + PastaEnviados.Autorizados + "\\" + Empresas.Configuracoes[emp].DiretorioSalvarComo.ToString(emissao); goto default; case PastaEnviados.Denegados: nomePastaBackup = Empresas.Configuracoes[emp].PastaBackup + "\\" + PastaEnviados.Denegados + "\\" + Empresas.Configuracoes[emp].DiretorioSalvarComo.ToString(emissao); goto default; default: if (!Directory.Exists(nomePastaBackup)) { System.IO.Directory.CreateDirectory(nomePastaBackup); } break; } //Se conseguiu criar a pasta ele move o arquivo, caso contrário if (Directory.Exists(nomePastaBackup)) { //Mover o arquivo da nota fiscal para a pasta de backup string destinoBackup = nomePastaBackup + Functions.ExtrairNomeArq(arquivo, ".xml") + ".xml"; if (File.Exists(destinoBackup)) { File.Delete(destinoBackup); } File.Copy(destinoArquivo, destinoBackup); } else { throw new Exception("Pasta de backup informada nas configurações não existe. (Pasta: " + nomePastaBackup + ")"); } } #endregion #region Copiar o XML para a pasta do DanfeMon, se configurado para isso CopiarXMLPastaDanfeMon(destinoArquivo); #endregion #region Copiar o XML para o FTP GerarXML oGerarXML = new GerarXML(emp); oGerarXML.XmlParaFTP(emp, destinoArquivo); #endregion } } else { throw new Exception("Pasta para arquivamento dos XML´s enviados não existe. (Pasta: " + nomePastaEnviado + ")"); } }