/// <summary> /// Ordenacion de las columnas del reporte /// </summary> /// <param name="estructuraDeColumnas">Lista de columnas generadas en la estructura</param> /// <returns></returns> public static List <EstructuraColumnaReporte> OrdenarFechaDeColumnas(List <EstructuraColumnaReporte> estructuraDeColumnas) { List <EstructuraColumnaReporte> listaEstructuraDeColumnas = new List <EstructuraColumnaReporte>(); List <DateTime> listaFechas = new List <DateTime>(); var ordenamientoFechas = from l in estructuraDeColumnas orderby l.FechaInstante descending, l.FechaInicio descending select l; foreach (var elementoOrdenado in ordenamientoFechas) { EstructuraColumnaReporte estructuraColumnaReporte = new EstructuraColumnaReporte(); estructuraColumnaReporte.Entidad = elementoOrdenado.Entidad; estructuraColumnaReporte.EsquemaEntidad = elementoOrdenado.EsquemaEntidad; estructuraColumnaReporte.FechaFin = elementoOrdenado.FechaFin; estructuraColumnaReporte.FechaInicio = elementoOrdenado.FechaInicio; estructuraColumnaReporte.FechaInstante = elementoOrdenado.FechaInstante; estructuraColumnaReporte.Moneda = elementoOrdenado.Moneda; estructuraColumnaReporte.MonedaId = elementoOrdenado.MonedaId; estructuraColumnaReporte.NombreColumna = elementoOrdenado.NombreColumna; estructuraColumnaReporte.TipoDePeriodo = elementoOrdenado.TipoDePeriodo; listaEstructuraDeColumnas.Add(estructuraColumnaReporte); } return(listaEstructuraDeColumnas); }
private bool HechoPerteneceAColumna(EntHecho hecho, EstructuraColumnaReporte columna, bool agruparPorUnidad) { if (!columna.Entidad.Equals(hecho.idEntidad)) { return(false); } switch (hecho.periodo.Tipo) { case Period.Duracion: if (!(columna.FechaInicio.Equals(hecho.periodo.FechaInicio) && columna.FechaFin.Equals(hecho.periodo.FechaFin) && ObtenerNombreColumnaMoneda(hecho, agruparPorUnidad) == columna.Moneda)) { return(false); } break; case Period.Instante: if (!(columna.FechaInstante.Equals(hecho.periodo.FechaInstante) && ObtenerNombreColumnaMoneda(hecho, agruparPorUnidad) == columna.Moneda)) { return(false); } break; } /*if (agruparPorUnidad) * { * if (String.IsNullOrEmpty(columna.Moneda)) * { * return false; * } * }*/ return(true); }
private EstructuraColumnaReporte CrearColumnaEncabezado(EntHecho hecho, bool agruparPorUnidad) { EstructuraColumnaReporte columnasEncabezado = new EstructuraColumnaReporte(); columnasEncabezado.FechaInicio = (hecho.periodo.FechaInicio != null ? hecho.periodo.FechaInicio.Value : DateTime.Now); columnasEncabezado.FechaFin = (hecho.periodo.FechaFin != null ? hecho.periodo.FechaFin.Value : DateTime.Now); columnasEncabezado.FechaInstante = (hecho.periodo.FechaInstante != null ? hecho.periodo.FechaInstante.Value : DateTime.Now); columnasEncabezado.Entidad = hecho.idEntidad; columnasEncabezado.EsquemaEntidad = hecho.idEntidad; columnasEncabezado.TipoDePeriodo = hecho.periodo.Tipo; var numeradores = new List <EntMedida>(); var denominadores = new List <EntMedida>(); if (hecho.unidades != null && agruparPorUnidad) { if (hecho.unidades.Medidas != null) { numeradores.AddRange(hecho.unidades.Medidas); } if (hecho.unidades.MedidasNumerador != null) { denominadores.AddRange(hecho.unidades.MedidasNumerador); } columnasEncabezado.Moneda = ""; int idx = 0; foreach (var numerador in numeradores) { if (idx > 0) { columnasEncabezado.Moneda += ", "; } columnasEncabezado.Moneda += numerador.Nombre; idx++; } if (denominadores.Count > 0) { columnasEncabezado.Moneda += " / "; } idx = 0; foreach (var denom in denominadores) { if (idx > 0) { columnasEncabezado.Moneda += ", "; } columnasEncabezado.Moneda += denom.Nombre; idx++; } } else { columnasEncabezado.Moneda = null; } return(columnasEncabezado); }
/// <summary> /// Valdia que la estructura de una columna sea igual respecto a la emisora y unidad /// </summary> /// <param name="columna">Columna base para comparar</param> /// <param name="columnaCompara">Columna que se debe de comparar</param> /// <returns>En el caso que sean iguales regresa true</returns> private bool validarIgualdad(EstructuraColumnaReporte columna, EstructuraColumnaReporte columnaCompara) { var SonIguales = false; if (columna.FechaFin.Equals(columnaCompara.FechaInstante)) { if (columna.EsquemaEntidad.Equals(columnaCompara.EsquemaEntidad)) { if (columna.Moneda == columnaCompara.Moneda) { SonIguales = true; } } } return(SonIguales); }
/// <summary> /// Por cada columna se genera un formato de cadena de las fechas dependiendo del tipo de periodo /// </summary> /// <param name="columna">Objeto que contiene la informacion para la creacion de la columnas del reporte</param> /// <returns></returns> private string GenerarEncabezadoFecha(EstructuraColumnaReporte columna) { string tituloFecha = string.Empty; switch (columna.TipoDePeriodo) { case Period.Instante: tituloFecha = AbaxXBRLCore.Common.Util.DateUtil.ToFormatString(columna.FechaInstante.ToUniversalTime(), AbaxXBRLCore.Common.Util.DateUtil.YMDateFormat); break; case Period.Duracion: tituloFecha = AbaxXBRLCore.Common.Util.DateUtil.ToFormatString(columna.FechaInicio.ToUniversalTime(), AbaxXBRLCore.Common.Util.DateUtil.YMDateFormat) + ConstantesGenerales.Underscore_String + AbaxXBRLCore.Common.Util.DateUtil.ToFormatString(columna.FechaFin.ToUniversalTime(), AbaxXBRLCore.Common.Util.DateUtil.YMDateFormat); break; case Period.ParaSiempre: tituloFecha = "Para Siempre"; break; } return(tituloFecha); }