public static void ActualizarBandejaEntrada(out List<eFact_Entidades.Archivo> Archivos, List<eFact_Entidades.Archivo> ArchivosBandejaEntrada, FileInfo ArchFileInfo, CedEntidades.Sesion Sesion) { List<eFact_Entidades.Archivo> archivos = new List<eFact_Entidades.Archivo>(); eFact_Entidades.Archivo archivo = new eFact_Entidades.Archivo(); archivos.AddRange(ArchivosBandejaEntrada); eFact_RN.Archivo.ActualizarBandejaEntrada(archivo, ArchFileInfo, Sesion); archivos.Add(archivo); Archivos = archivos; }
public void Consultar(List<eFact_Entidades.Archivo> Archivos, eFact_Entidades.Archivo.TipoConsultaArchivos TipoConsultaArchivos, eFact_Entidades.Archivo.OtrosFiltros OtrosFiltros, DateTime FechaDsd, DateTime FechaHst) { StringBuilder commandText = new StringBuilder(); //Query Lotes commandText.Append("select * from Archivos "); if (TipoConsultaArchivos == eFact_Entidades.Archivo.TipoConsultaArchivos.FechaCreacion) { commandText.Append("where FechaCreacion >= '" + FechaDsd.ToString("yyyyMMdd") + "' and FechaCreacion <= Dateadd(Day, 1, '" + FechaHst.ToString("yyyyMMdd") + "') "); } else { commandText.Append("where FechaProceso >= '" + FechaDsd.ToString("yyyyMMdd") + "' and FechaProceso <= Dateadd(Day, 1, '" + FechaHst.ToString("yyyyMMdd") + "') "); } if (OtrosFiltros != eFact_Entidades.Archivo.OtrosFiltros.SinAplicar) { if (OtrosFiltros == eFact_Entidades.Archivo.OtrosFiltros.OK) { commandText.Append(" and IdLote is not null"); } else { commandText.Append(" and IdLote is null"); } } commandText.Append(" order by IdArchivo Desc"); DataTable dt = new DataTable(); dt = (DataTable)Ejecutar(commandText.ToString(), TipoRetorno.TB, Transaccion.Usa, sesion.CnnStr); if (dt.Rows.Count == 0) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Validaciones.NoHayDatos(); } else { for (int i = 0; i < dt.Rows.Count; i++) { eFact_Entidades.Archivo archivo = new eFact_Entidades.Archivo(); Copiar(dt.Rows[i], archivo); Archivos.Add(archivo); } } }
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { try { bool EncontreArchivos = false; timer1.Stop(); CultureInfo cedeiraCultura = new CultureInfo(System.Configuration.ConfigurationManager.AppSettings["Cultura"], false); cedeiraCultura.DateTimeFormat = new CultureInfo(System.Configuration.ConfigurationManager.AppSettings["CulturaDateTimeFormat"], false).DateTimeFormat; Thread.CurrentThread.CurrentCulture = cedeiraCultura; //Solo la primera vez inicia la sesion if (Aplicacion == null) { Inicializar(); } //Actualizar Estado AFIP de los Lotes Ptes de Respuesta. ActualizarEstadoAFIPLotes(); //Enviar a Interfacturas Lotes Ptes de Envío. EnviarAIFLotesPtesDeEnvio(); string[] files = Directory.GetFiles(Aplicacion.ArchPath, "*.*"); List<eFact_Entidades.Archivo> Archivos = new List<eFact_Entidades.Archivo>(); foreach (string d in files) { FileInfo ArchFileInfo = new FileInfo(d); try { if (@System.Configuration.ConfigurationManager.AppSettings["ClearMemory"] == "SI") { Memory.ClearMemory(); } eFact_Entidades.Archivo archivo = new eFact_Entidades.Archivo(); ActualizarBandejaEntrada(archivo, ArchFileInfo, Aplicacion.Sesion); Archivos.Add(archivo); EncontreArchivos = true; } catch (Exception ex) { Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(ex); } } Archivos.Sort(ordenarPorNombre); foreach (eFact_Entidades.Archivo elem in Archivos) { string NombreArchivo = elem.Nombre; string FechaTexto = DateTime.Now.ToString("yyyyMMdd-hhmmss"); string ArchGuardarComoNombre = ""; eFact_RN.Engine.GenerarNombreArch(out ArchGuardarComoNombre, "", NombreArchivo); //-------------------------------------- //Procesar el archivo seleccionado. try { eFact_Entidades.Lote lote = new eFact_Entidades.Lote(); eFact_RN.Archivo.Procesar(out lote, elem, Aplicacion, Aplicacion.Sesion); //Agregar datos del proceso a la entidad Archivo ArchGuardarComoNombre = "BAK-" + ArchGuardarComoNombre; elem.NombreProcesado = ArchGuardarComoNombre; elem.FechaProceso = DateTime.Now; string handler = eFact_RN.Archivo.Insertar(elem, true, Aplicacion.Sesion); //Ejecutar el insert local del "Lote". CedEntidades.Evento evento = new CedEntidades.Evento(); evento.Id = "EnvBandSalida"; evento.Flow.IdFlow = "eFact"; evento.Flow.DescrFlow = "Facturación Electrónica"; Cedeira.SV.WF.LeerEvento(evento, Aplicacion.Sesion); lote.WF = Cedeira.SV.WF.Nueva("eFact", "FactServ", 0, "Facturacion Electrónica", Aplicacion.Sesion); eFact_RN.Lote.VerificarEnviosPosteriores(true, lote.CuitVendedor, lote.NumeroLote, lote.PuntoVenta, lote.NumeroEnvio, Aplicacion.Sesion); //Generar nombre de archivo procesado para ser enviado al histórico. eFact_RN.Lote.Ejecutar(lote, evento, handler, Aplicacion, Aplicacion.Sesion); //Leer el Lote procesado. eFact_RN.Lote.Leer(lote, Aplicacion.Sesion); //Enviar el Lote a IF. EnviarAIF(lote); } catch (Exception ex) { Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(ex); elem.Comentario = ex.Message; if (ex.InnerException != null) { elem.Comentario += "\r\n" + ex.InnerException.Message; } if (ex.StackTrace != null) { string st = ex.StackTrace; if (st.Length > 2000) { st = st.Substring(0, 2000); } elem.Comentario += "\r\n\r\n" + st; } //Agregar datos del proceso a la entidad Archivo ArchGuardarComoNombre = "ERR-" + ArchGuardarComoNombre; elem.NombreProcesado = ArchGuardarComoNombre; elem.FechaProceso = DateTime.Now; eFact_RN.Archivo.Insertar(elem, false, Aplicacion.Sesion); } //Remover archivo ---------------------- Directory.Move(Aplicacion.ArchPath + "\\" + NombreArchivo, Aplicacion.ArchPathHis + ArchGuardarComoNombre); //-------------------------------------- //Solo procesa un archivo y sale, para poder recibir posteriormente la respuesta AFIP. //Cuando se vuelve a iniciar el timer de servicio se ejecuta la funcion "ActualizarEstadoAFIPLotes()". break; } if (EncontreArchivos) { if (@System.Configuration.ConfigurationManager.AppSettings["ClearMemory"] == "SI") { Memory.ClearMemory(); } } } catch (Exception ex) { Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(ex); } finally { timer1.Start(); } }