public static List <NovedadCaratulada> Novedades_Caratuladas_Traer(ConsultaBatch.enum_ConsultaBatch_NombreConsulta nombreConsulta, long idPrestador, DateTime?Fecha_Recepcion_desde, DateTime?Fecha_Recepcion_hasta, enum_EstadoCaratulacion?idEstado, int conErrores, long?id_Beneficiario, bool generaArchivo, bool generadoAdmin, out string rutaArchivoSal) { string rutaArchivo = string.Empty; string nombreArchivo = string.Empty; rutaArchivoSal = string.Empty; string msgRta = string.Empty; ConsultaBatch consultaBatch = new ConsultaBatch(); consultaBatch.IDPrestador = idPrestador; consultaBatch.NombreConsulta = nombreConsulta; consultaBatch.NroBeneficio = id_Beneficiario.HasValue ? id_Beneficiario.Value : 0; consultaBatch.FechaDesde = Fecha_Recepcion_desde; consultaBatch.FechaHasta = Fecha_Recepcion_hasta; consultaBatch.GeneradoAdmin = generadoAdmin; consultaBatch.IdEstado_Documentacion = (int?)idEstado; try { if (generaArchivo == true) { msgRta = ConsultasBatchDAO.ExisteConsulta(consultaBatch); if (!string.IsNullOrEmpty(msgRta)) { throw new ApplicationException("MSG_ERROR" + msgRta + "FIN_MSG_ERROR"); } } List <NovedadCaratulada> listNovedades = Traer_Caratulacion(idPrestador, Fecha_Recepcion_desde, Fecha_Recepcion_hasta, conErrores, id_Beneficiario, (int?)idEstado); if (listNovedades.Count > 0 && generaArchivo) { int maxCantidad = Settings.MaxCantidadRegistros(); if (listNovedades.Count >= maxCantidad || generaArchivo) { nombreArchivo = Utilidades.GeneraNombreArchivo(nombreConsulta.ToString(), idPrestador, out rutaArchivo); rutaArchivoSal = Path.Combine(rutaArchivo, nombreArchivo); StreamWriter sw = new StreamWriter(rutaArchivoSal, false, Encoding.UTF8); string separador = Settings.DelimitadorCampo(); foreach (NovedadCaratulada oNovedad in listNovedades) { StringBuilder linea = new StringBuilder(); linea.Append(oNovedad.NroExpediente.ToString() + separador); linea.Append(oNovedad.novedad.IdNovedad.ToString() + separador); linea.Append(oNovedad.FInicioAfjp.ToString() + separador); linea.Append(oNovedad.novedad.UnConceptoLiquidacion.CodConceptoLiq.ToString() + separador); linea.Append(oNovedad.novedad.UnBeneficiario.IdBeneficiario.ToString() + separador); linea.Append(oNovedad.novedad.UnBeneficiario.ApellidoNombre.ToString() + separador); linea.Append(oNovedad.novedad.FechaNovedad.ToString() + separador); linea.Append(oNovedad.Error.ToString() + separador); linea.Append(oNovedad.idEstadoCaratulacion.ToString()); sw.WriteLine(linea.ToString()); } sw.Close(); Utilidades.ComprimirArchivo(rutaArchivo, nombreArchivo); Utilidades.BorrarArchivo(rutaArchivoSal); nombreArchivo = nombreArchivo + ".zip"; consultaBatch.OpcionBusqueda = byte.Parse(conErrores.ToString()); consultaBatch.RutaArchGenerado = rutaArchivo; consultaBatch.NomArchGenerado = nombreArchivo; consultaBatch.FechaGenera = DateTime.Now; consultaBatch.Vigente = true; // conErrores.HasValue? conErrores.Value ? 1 : 0 : 2 --> el valor=2 es para cuando seleccione todos en el combo 'Con errores' msgRta = ConsultasBatchDAO.AltaNuevaConsulta(consultaBatch); if (!string.IsNullOrEmpty(msgRta)) { msgRta = "MSG_ERROR" + msgRta + "FIN_MSG_ERROR"; throw new ApplicationException(msgRta); } /* Se instacia el objeto para que no muestre los * registros y pueda ver solo el archivo generado. */ listNovedades = new List <NovedadCaratulada>(); } } return(listNovedades); } catch (SqlException errsql) { if (errsql.Number == -2) { // timeout log.Error(string.Format("{0}->{1}-> Error:{2}->{3}", DateTime.Now, System.Reflection.MethodBase.GetCurrentMethod(), errsql.Source, errsql.Message)); nombreArchivo = Utilidades.GeneraNombreArchivo(nombreConsulta.ToString(), idPrestador, out rutaArchivo); consultaBatch.OpcionBusqueda = byte.Parse(conErrores.ToString()); consultaBatch.NomArchGenerado = nombreArchivo; consultaBatch.RutaArchGenerado = rutaArchivo; consultaBatch.FechaGenera = DateTime.MinValue; consultaBatch.Vigente = false; msgRta = ConsultasBatchDAO.AltaNuevaConsulta(consultaBatch); throw new ApplicationException("MSG_ERROR Generando el archivo. Reingrese a la consulta en unos minutos.FIN_MSG_ERROR"); } else { throw errsql; } } catch (ApplicationException apperr) { throw new ApplicationException(apperr.Message); } catch (Exception ex) { log.Error(string.Format("{0}->{1}-> Error:{2}->{3}", DateTime.Now, System.Reflection.MethodBase.GetCurrentMethod(), ex.Source, ex.Message)); throw ex; } }