/// <summary> /// Depura el hipercubo en base a los filtros de la proyección. /// </summary> /// <param name="hipercuboReporteDto">Hipercubo a evaluar</param> /// <returns>Hipercubo ajustado.</returns> private HipercuboReporteDTO EvaluaProyeccion(HipercuboReporteDTO hipercuboReporteDto) { ConfiguracionProyeccionHipercubo configuracionProyeccion = null; HipercuboReporteDTO hipercuboAjustado = hipercuboReporteDto; if (!String.IsNullOrEmpty(Proyeccion) && hipercuboReporteDto.Utileria.configuracion.Proyecciones != null) { if (hipercuboReporteDto.Utileria.configuracion.Proyecciones.TryGetValue(Proyeccion, out configuracionProyeccion)) { hipercuboAjustado = ClonaHechosHipercubo(hipercuboReporteDto); var indicesDescartar = new List <int>(); if (configuracionProyeccion.FiltrosContextoPorValorConcepto != null) { if (hipercuboAjustado.Hechos != null) { foreach (var idConceptoProyeccion in configuracionProyeccion.FiltrosContextoPorValorConcepto.Keys) { var valorHechoPoryeccion = configuracionProyeccion.FiltrosContextoPorValorConcepto[idConceptoProyeccion]; IDictionary <string, HechoDto[]> diccionarioHechosPorPlantillaContexto; if (hipercuboAjustado.Hechos.TryGetValue(idConceptoProyeccion, out diccionarioHechosPorPlantillaContexto)) { foreach (var idPlantilla in diccionarioHechosPorPlantillaContexto.Keys) { var arregloHechos = diccionarioHechosPorPlantillaContexto[idPlantilla]; for (var indexHecho = 0; indexHecho < arregloHechos.Length; indexHecho++) { var hecho = arregloHechos[indexHecho]; if (hecho != null && !String.IsNullOrEmpty(hecho.Valor) && !hecho.Valor.Equals(valorHechoPoryeccion)) { indicesDescartar.Add(indexHecho); } } } } } } } foreach (var idConcepto in hipercuboAjustado.Hechos.Keys) { var hechosPorContexto = hipercuboAjustado.Hechos[idConcepto]; foreach (var idContexto in hechosPorContexto.Keys) { var arregloHechos = hechosPorContexto[idContexto]; foreach (var indiceDescartar in indicesDescartar) { if (indiceDescartar < arregloHechos.Length) { arregloHechos[indiceDescartar] = null; } } } } } } return(hipercuboAjustado); }
/// <summary> /// Pinta la sección de calificaciones en la tabla correspondiente. /// </summary> /// <param name="docBuilder">Puntero de </param> /// <param name="instancia"></param> /// <param name="estructuraReporte"></param> private void PintaCalificacionesEnTabla( DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, ReporteXBRLDTO estructuraReporte, HipercuboReporteDTO hipercuboSerie, ExportadorRolDocumentoBase exportadorOrigen) { var hipercubo = estructuraReporte.Hipercubos["ar_pros_SecuritiesRatingTable"]; hipercubo = FiltrarHipercuboCalificaciones(hipercubo, hipercuboSerie); if (hipercubo == null) { return; } var lenguaje = estructuraReporte.Lenguaje; var textoTituloSecciion = exportadorOrigen.ObtenEtiquetaConcepto("ar_pros_SecuritiesRatingAbstract", instancia, lenguaje); PintaFilaSubTitulo(textoTituloSecciion, docBuilder, hipercubo.Titulos.Count, exportadorOrigen); var diccionarioTarjetas = hipercubo.Utileria.ReordenaConjutosPorExplicitaConceptoImplicita(hipercubo.Hechos); foreach (var clavePlantilla in diccionarioTarjetas.Keys) { var diccionarioConceptos = diccionarioTarjetas[clavePlantilla]; var primerHecho = diccionarioConceptos.Values.First().First(); var idDimensionExplicita = hipercubo.Utileria.ObtenDimensionesTipo(primerHecho, instancia, true).First().IdDimension; var miembroExplicita = hipercubo.Utileria.ObtenMiembroDimension(primerHecho, idDimensionExplicita, instancia); var textoTituloMiembro = " " + exportadorOrigen.ObtenEtiquetaConcepto(miembroExplicita.IdItemMiembro, instancia, lenguaje); PintaFilaSubTitulo(textoTituloMiembro, docBuilder, hipercubo.Titulos.Count, exportadorOrigen); docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White; docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto; docBuilder.Font.Color = Color.Black; docBuilder.Bold = false; docBuilder.RowFormat.HeadingFormat = false; foreach (var idConcepto in diccionarioConceptos.Keys) { docBuilder.InsertCell(); var nombreConcepto = " " + DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, idConcepto, "es", ReporteXBRLUtil.ETIQUETA_DEFAULT); docBuilder.Write(nombreConcepto); var listaHechos = diccionarioConceptos[idConcepto]; for (var indexHecho = 0; indexHecho < listaHechos.Count; indexHecho++) { var hecho = listaHechos[indexHecho]; docBuilder.InsertCell(); if (hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)) { exportadorOrigen.EscribirValorHecho(docBuilder, estructuraReporte, hecho, instancia.Taxonomia.ConceptosPorId[hecho.IdConcepto]); } } docBuilder.EndRow(); } } }
public override void crearHipercubos(DocumentoInstanciaXbrlDto instancia) { reporteXBRLDTO.Hipercubos = new Dictionary<String, HipercuboReporteDTO>(); foreach (var definitionRolUri in instancia.Taxonomia.ListaHipercubos.Keys) { var listaHipercubos = instancia.Taxonomia.ListaHipercubos[definitionRolUri]; for (var indexHipercubo = 0; indexHipercubo < listaHipercubos.Count; indexHipercubo++) { var hipercubo = listaHipercubos[indexHipercubo]; var path = ReporteXBRLUtil.AR_PROS_PATH_HIPERCUBOS_JSON. Replace(ReporteXBRLUtil.CLAVE_TAXONOMIA, reporteXBRLDTO.Taxonomia). Replace(ReporteXBRLUtil.CLAVE_RA_PROS, reporteXBRLDTO.PrefijoRaProspecto). Replace(ReporteXBRLUtil.CONCEPTO_HIPERCUBO, hipercubo.IdConceptoHipercubo); var names = Assembly.GetExecutingAssembly().GetManifestResourceNames(); if (names.Contains(path)) { plantilla.DeterminarParametrosConfiguracion(instancia); plantilla.GenerarVariablesDocumentoInstancia(); var hipercuboUtil = new EvaluadorHipercuboUtil(path, instancia, plantilla); if (hipercuboUtil.configuracion.DimensionesDinamicas.Count == 0) { LogUtil.Info("No existen dimensiones dinamicas en la configuración de hipercubo: " + path); continue; } var aliasDimensionEje = hipercuboUtil.configuracion.DimensionesDinamicas[0]; var miembrosEje = hipercuboUtil.ObtenMiembrosDimension(aliasDimensionEje); miembrosEje = miembrosEje.OrderBy(o => o.ElementoMiembroTipificado).ToList(); var titulos = hipercuboUtil.ObtenTitulosMiembrosDimension(aliasDimensionEje, miembrosEje); var hechos = hipercuboUtil.ObtenMatrizHechos(miembrosEje); if (titulos != null && hechos != null) { var hipercuboDto = new HipercuboReporteDTO(); hipercuboDto.Titulos = titulos; hipercuboDto.Hechos = hechos; hipercuboDto.Utileria = hipercuboUtil; try { reporteXBRLDTO.Hipercubos[hipercubo.IdConceptoHipercubo] = hipercuboDto; } catch (Exception e) { throw e; } } } } } }
/// <summary> /// Recorta el hipercubo de calificaciones de acuerdo al cubo de serie enviado /// </summary> /// <param name="hipercubo"></param> /// <param name="hipercuboSerie"></param> /// <returns></returns> private HipercuboReporteDTO FiltrarHipercuboCalificaciones(HipercuboReporteDTO hipercubo, HipercuboReporteDTO hipercuboSerie) { HipercuboReporteDTO nuevoCubo = new HipercuboReporteDTO(); nuevoCubo.Utileria = hipercubo.Utileria; nuevoCubo.Hechos = new Dictionary <string, IDictionary <string, HechoDto[]> >(); nuevoCubo.Titulos = new List <String>(); for (var iCol = 0; iCol < hipercuboSerie.Titulos.Count; iCol++) { var tituloActual = hipercuboSerie.Titulos[iCol]; nuevoCubo.Titulos.Add(tituloActual); foreach (var hechoKey in hipercubo.Hechos.Keys) { if (!nuevoCubo.Hechos.ContainsKey(hechoKey)) { nuevoCubo.Hechos[hechoKey] = new Dictionary <string, HechoDto[]>(); } foreach (var subHechoKey in hipercubo.Hechos[hechoKey].Keys) { if (!nuevoCubo.Hechos[hechoKey].ContainsKey(subHechoKey)) { nuevoCubo.Hechos[hechoKey][subHechoKey] = new HechoDto[hipercuboSerie.Titulos.Count]; } try { if (hipercubo.Hechos[hechoKey][subHechoKey].Count() > hipercubo.Titulos.IndexOf(tituloActual)) { nuevoCubo.Hechos[hechoKey][subHechoKey][iCol] = hipercubo.Hechos[hechoKey][subHechoKey][hipercubo.Titulos.IndexOf(tituloActual)]; } else { nuevoCubo.Hechos[hechoKey][subHechoKey][iCol] = new HechoDto(); } } catch (Exception ex) { System.Console.WriteLine(ex.StackTrace); } } } } return(nuevoCubo); }
/// <summary> /// Constructor de la sección. /// </summary> /// <param name="conceptoOrigen">Concepto que encapsula el hipercubo.</param> /// <param name="docBuilder">Constructor del reporte.</param> /// <param name="instancia">Documento de instancia con la información.</param> /// <param name="rolAExportar">Rol que se pretende exprotar.</param> /// <param name="estructuraReporte">DTO con información general del reporte.</param> /// <param name="exportadorOrigen">Exportador actual que maneja la exportación del rol.</param> /// <param name="hipercuboReporteDto">Definición del hipercubo con la información a presentar.</param> /// <param name="configuracionPresentacion">Definición de la configuración que se pretende presentar.</param> public void PintaTarjetasHipercubo( ConceptoReporteDTO conceptoOrigen, DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, ExportadorRolDocumentoBase exportadorOrigen, HipercuboReporteDTO hipercuboReporteDto, ConfiguracionPresentacionRegistroHipercuboDto configuracionPresentacion) { var diccionarioTarjetas = hipercuboReporteDto.Utileria.ReordenaConjutosPorExplicitaImplicitaConcepto(hipercuboReporteDto.Hechos); String idDimensionExplicita = null; foreach (var idPlantillaDimension in hipercuboReporteDto.Utileria.configuracion.PlantillaDimensiones.Keys) { var plantillaDimension = hipercuboReporteDto.Utileria.configuracion.PlantillaDimensiones[idPlantillaDimension]; if (plantillaDimension.Explicita) { idDimensionExplicita = plantillaDimension.IdDimension; break; } } var idsPlantillasContextos = configuracionPresentacion.IdsPlantillasContextos; foreach (var clavePlantilla in diccionarioTarjetas.Keys) { if (idsPlantillasContextos != null && !idsPlantillasContextos.Contains(clavePlantilla)) { continue; } var listaTajetas = diccionarioTarjetas[clavePlantilla]; var primerHecho = listaTajetas.First().First().Value; var miembroExplicita = hipercuboReporteDto.Utileria.ObtenMiembroDimension(primerHecho, idDimensionExplicita, instancia); var textoTituloMiembro = exportadorOrigen. ObtenEtiquetaConcepto(miembroExplicita.IdItemMiembro, instancia, estructuraReporte.Lenguaje); exportadorOrigen.ImprimeSubTitulo(docBuilder, textoTituloMiembro); foreach (var tarjeta in listaTajetas) { PintaTarjeta( docBuilder, estructuraReporte, exportadorOrigen, instancia, tarjeta, configuracionPresentacion); } } }
/// <summary> /// Determina si el hipercubo tiene información que presentar. /// </summary> /// <param name="hipercuboReporteDto">Hiprecubo a evaluar.</param> /// <returns>Si contiene información que presentar.</returns> private bool ContieneInformacion(HipercuboReporteDTO hipercuboReporteDto) { var contieneInformacion = false; if (hipercuboReporteDto.Hechos != null) { foreach (var idConcepto in hipercuboReporteDto.Hechos.Keys) { if (ConceptosAplica != null && !ConceptosAplica.Contains(idConcepto)) { continue; } var hechosPorContexto = hipercuboReporteDto.Hechos[idConcepto]; foreach (var idContexto in hechosPorContexto.Keys) { if (IdsPlantillasContexto != null && !IdsPlantillasContexto.Contains(idContexto)) { continue; } var arregloHechos = hechosPorContexto[idContexto]; for (var indexHecho = 0; indexHecho < arregloHechos.Length; indexHecho++) { var hecho = arregloHechos[indexHecho]; if (hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)) { contieneInformacion = true; break; } } if (contieneInformacion) { break; } } if (contieneInformacion) { break; } } } return(contieneInformacion); }
/// <summary> /// Obtiene la configuración del hipercubo que se pretende evaluar. /// </summary> /// <param name="idConceptoHipercubo">Identificador del concepto del hipercubo.</param> /// <param name="instancia">Documento de instancia.</param> /// <param name="plantilla">Plantilla del documento de instancia.</param> /// <returns>DTO con la configuración general del hipercubo.</returns> private HipercuboReporteDTO ObtenConfiguracionHipercubo(String idConceptoHipercubo, DocumentoInstanciaXbrlDto instancia, IDefinicionPlantillaXbrl plantilla) { var claveTaxonomia = ObtenClaveTaxonomia(instancia.EspacioNombresPrincipal); var path = ReporteXBRLUtil.AR_PROS_PATH_HIPERCUBOS_JSON. Replace(ReporteXBRLUtil.CLAVE_TAXONOMIA, claveTaxonomia). Replace(ReporteXBRLUtil.CONCEPTO_HIPERCUBO, idConceptoHipercubo); var hipercuboUtil = new EvaluadorHipercuboUtil(path, instancia, plantilla); var aliasDimensionEje = hipercuboUtil.configuracion.DimensionesDinamicas[0]; var miembrosEje = hipercuboUtil.ObtenMiembrosDimension(aliasDimensionEje); miembrosEje = miembrosEje.OrderBy(o => o.ElementoMiembroTipificado).ToList(); var titulos = hipercuboUtil.ObtenTitulosMiembrosDimension(aliasDimensionEje, miembrosEje); var hechos = hipercuboUtil.ObtenMatrizHechos(miembrosEje); var hipercuboDto = new HipercuboReporteDTO(); hipercuboDto.Titulos = titulos; hipercuboDto.Hechos = hechos; hipercuboDto.Utileria = hipercuboUtil; return(hipercuboDto); }
/// <summary> /// Copia el contenido del diccionario a un nuevo diccionario. /// </summary> /// <param name="hechosHipercubo">Diccionario origen que se pretende copiar.</param> /// <returns>Copia del diccionario.</returns> private HipercuboReporteDTO ClonaHechosHipercubo(HipercuboReporteDTO hechosHipercubo) { var hechosClon = new Dictionary <String, IDictionary <String, HechoDto[]> >(); foreach (var idConcepto in hechosHipercubo.Hechos.Keys) { IDictionary <String, HechoDto[]> hechosContextoAjustados; if (!hechosClon.TryGetValue(idConcepto, out hechosContextoAjustados)) { hechosContextoAjustados = new Dictionary <String, HechoDto[]>(); hechosClon.Add(idConcepto, hechosContextoAjustados); } var hechosPorContexto = hechosHipercubo.Hechos[idConcepto]; foreach (var idContexto in hechosPorContexto.Keys) { var arregloHechos = hechosPorContexto[idContexto]; HechoDto[] arregloAjustado; if (!hechosContextoAjustados.TryGetValue(idContexto, out arregloAjustado)) { arregloAjustado = new HechoDto[arregloHechos.Length]; hechosContextoAjustados.Add(idContexto, arregloAjustado); } for (var index = 0; index < arregloHechos.Length; index++) { arregloAjustado[index] = arregloHechos[index]; } } } var hipercuboClon = new HipercuboReporteDTO() { Hechos = hechosClon, Titulos = hechosHipercubo.Titulos, Utileria = hechosHipercubo.Utileria }; return(hipercuboClon); }
private void PintaTablaCubo( HipercuboReporteDTO hipercubo, DocumentoInstanciaXbrlDto instancia, ReporteXBRLDTO estructuraReporte, DocumentBuilder docBuilder, ConceptoReporteDTO concepto, IndiceReporteDTO rolAExportar, ExportadorRolDocumentoBase exportadorOrigen) { docBuilder.InsertBreak(BreakType.PageBreak); Table tablaActual = docBuilder.StartTable(); Color colorTitulo = exportadorOrigen.ObtenColorTitulo(); docBuilder.ParagraphFormat.SpaceAfter = 0; docBuilder.ParagraphFormat.SpaceBefore = 2; //docBuilder.InsertCell(); // docBuilder.EndRow(); // Formatos de celdas que le da el color de fondo de los titulos de la tabla que se crea docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo; docBuilder.Font.Color = Color.White; docBuilder.Font.Size = exportadorOrigen.TamanioLetraContenidoTabla; // docBuilder.InsertCell(); foreach (var idConcepto in hipercubo.Hechos.Keys) { var matrizPlantillaContexto = hipercubo.Hechos[idConcepto]; docBuilder.InsertCell(); var nombreConcepto = DesgloseDeCreditosHelper .obtenerEtiquetaDeConcepto(instancia.Taxonomia, idConcepto, "es", ReporteXBRLUtil.ETIQUETA_DEFAULT); docBuilder.Write(nombreConcepto); } docBuilder.EndRow(); docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White; docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto; docBuilder.Font.Color = Color.Black; var cantidadCeldasVacias = hipercubo.Hechos.Count - 1; foreach (var idPlantillaContexto in hipercubo.Utileria.configuracion.PlantillasContextos.Keys) { var plantilla = hipercubo.Utileria.configuracion.PlantillasContextos[idPlantillaContexto]; var miembroPlantilla = plantilla.ValoresDimension[0]; var nombreMiembro = DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, miembroPlantilla.IdItemMiembro, "es", ReporteXBRLUtil.ETIQUETA_DEFAULT); /* docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.LightGray; * docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto; * docBuilder.Font.Color = Color.Black;*/ docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo; docBuilder.Font.Color = Color.White; docBuilder.Font.Size = exportadorOrigen.TamanioLetraContenidoTabla; docBuilder.InsertCell(); docBuilder.Write(nombreMiembro); if (cantidadCeldasVacias > 0) { for (var indexMiembro = 0; indexMiembro < cantidadCeldasVacias; indexMiembro++) { docBuilder.InsertCell(); docBuilder.Write(String.Empty); } docBuilder.EndRow(); } var countType = 0; docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White; docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto; docBuilder.Font.Color = Color.Black; docBuilder.Bold = false; foreach (var idConcepto in hipercubo.Hechos.Keys) { var matrizPlantillaContexto = hipercubo.Hechos[idConcepto]; countType = matrizPlantillaContexto[idPlantillaContexto].Length; break; } Boolean dimensiones = false; for (var indexType = 0; indexType < countType; indexType++) { if (indexType > 0) { dimensiones = true; } docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; foreach (var idConcepto in hipercubo.Hechos.Keys) { var matrizPlantillaContexto = hipercubo.Hechos[idConcepto]; var listaHechos = matrizPlantillaContexto[idPlantillaContexto]; if (listaHechos != null) { var hecho = listaHechos[indexType]; var valorHecho = hecho.Valor; if (dimensiones) { docBuilder.EndRow(); docBuilder.InsertCell(); dimensiones = false; } else { docBuilder.InsertCell(); } if (hecho.NoEsNumerico) { docBuilder.CellFormat.WrapText = true; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; } else { docBuilder.CellFormat.WrapText = false; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right; } if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor))) { docBuilder.Write(valorHecho); } } } } docBuilder.RowFormat.AllowBreakAcrossPages = true; docBuilder.RowFormat.HeadingFormat = false; docBuilder.EndRow(); } establecerBordesGrisesTabla(tablaActual); docBuilder.EndTable(); docBuilder.Writeln(); }
/// <summary> /// Imprime las tarjetas de los administradores. /// </summary> /// <param name="docBuilder">Constructor del documento.</param> /// <param name="instancia">Documento de instancia.</param> /// <param name="hipercubo">Información del hipercubo.</param> private void PintaPersonasResponsables(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, HipercuboReporteDTO hipercubo) { var matrizPlantillaContexto = hipercubo.Hechos; var diccionarioTarjetas = hipercubo.Utileria.ReordenaConjutosPorExplicitaImplicitaConcepto(matrizPlantillaContexto); foreach (var clavePlantilla in diccionarioTarjetas.Keys) { var listaTajetas = diccionarioTarjetas[clavePlantilla]; var primerHecho = listaTajetas.First().First().Value; var miembroExplicita = hipercubo.Utileria.ObtenMiembroDimension(primerHecho, "ar_pros_TypeOfResponsibleFigureAxis", instancia); var textoTituloMiembro = ObtenEtiquetaConcepto(miembroExplicita.IdItemMiembro, instancia, Idioma); ImprimeSubTitulo(docBuilder, textoTituloMiembro); foreach (var tarjeta in listaTajetas) { PintaTarjetaPersonaResponsable(docBuilder, tarjeta, instancia); } } }
/// <summary> /// /// </summary> /// <param name="hojaAExportar"></param> /// <param name="hojaPlantilla"></param> /// <param name="instancia"></param> /// <param name="rol"></param> /// <param name="plantillaDocumento"></param> /// <param name="idioma"></param> public void ExportarDatosDeHojaExcel(ISheet hojaAExportar, ISheet hojaPlantilla, DocumentoInstanciaXbrlDto instancia, string rol, IDefinicionPlantillaXbrl plantillaDocumento, string idioma) { var nombreHoja = hojaPlantilla.SheetName; String idConceptoHipercubo; if (ConceptosHipercuboPorHoja.TryGetValue(nombreHoja, out idConceptoHipercubo)) { var hiperCubo = ObtenConfiguracionHipercubo(idConceptoHipercubo, instancia, plantillaDocumento); HipercuboReporteDTO hiperCuboCalificaciones = null; var miembroCalificadora = String.Empty; for (var indexRow = hojaPlantilla.FirstRowNum; indexRow <= hojaPlantilla.LastRowNum; indexRow++) { var rowPlantilla = hojaPlantilla.GetRow(indexRow); var rowExportar = hojaAExportar.GetRow(indexRow); var celdaConcepto = rowPlantilla.GetCell(rowPlantilla.FirstCellNum); if (celdaConcepto == null || !celdaConcepto.CellType.Equals(CellType.String) || String.IsNullOrWhiteSpace(celdaConcepto.StringCellValue) || !celdaConcepto.StringCellValue.Contains("idConcepto")) { continue; } var elementosCelda = celdaConcepto.StringCellValue.Split(';'); var idConcepto = elementosCelda[1]; ConceptoDto concepto; var indiceColumnaImprimir = celdaConcepto.ColumnIndex + 1; if (instancia.Taxonomia.ConceptosPorId.TryGetValue(idConcepto, out concepto)) { if (concepto.EsDimension ?? false) { PintaSeries(concepto.Id, rowExportar, indiceColumnaImprimir, hiperCubo); } else if (concepto.EsMiembroDimension ?? false) { if (hiperCuboCalificaciones == null) { hiperCuboCalificaciones = ObtenConfiguracionHipercubo("ar_pros_SecuritiesRatingTable", instancia, plantillaDocumento); } miembroCalificadora = concepto.Nombre; } else if (!concepto.EsAbstracto ?? false && !concepto.EsHipercubo) { if (ConceptosCalificaciones.Contains(concepto.Id)) { if (hiperCuboCalificaciones != null && !String.IsNullOrEmpty(miembroCalificadora)) { IDictionary <String, Dto.HechoDto[]> hechosPorConceptoPlantilla; if (hiperCuboCalificaciones.Hechos.TryGetValue(concepto.Id, out hechosPorConceptoPlantilla)) { Dto.HechoDto[] hechos; if (hechosPorConceptoPlantilla.TryGetValue(miembroCalificadora, out hechos)) { PintaValoresHechos(hechos, rowExportar, indiceColumnaImprimir); } } } } else { IDictionary <String, Dto.HechoDto[]> diccionarioHechosPorcontextoPlantilla; if (hiperCubo.Hechos.TryGetValue(concepto.Id, out diccionarioHechosPorcontextoPlantilla)) { if (diccionarioHechosPorcontextoPlantilla.Count > 0) { var hechos = diccionarioHechosPorcontextoPlantilla.First().Value; PintaValoresHechos(hechos, rowExportar, indiceColumnaImprimir); } } } } } } } }
public void ImportarDatosDeHojaExcel(ISheet hojaAImportar, ISheet hojaPlantilla, DocumentoInstanciaXbrlDto instancia, string rol, ResumenProcesoImportacionExcelDto resumenImportacion, IDefinicionPlantillaXbrl plantillaDocumento) { var nombreHoja = hojaPlantilla.SheetName; String idConceptoHipercubo; IDictionary <int, Dto.ContextoDto> diccionarioContextosSeries = null; IDictionary <int, Dto.ContextoDto> diccionarioContextosCalificaciones = null; if (ConceptosHipercuboPorHoja.TryGetValue(nombreHoja, out idConceptoHipercubo)) { HipercuboReporteDTO hiperCubo = ObtenConfiguracionHipercubo(idConceptoHipercubo, instancia, plantillaDocumento); HipercuboReporteDTO hiperCuboCalificaciones = null; var miembroCalificadora = String.Empty; for (var indexRow = hojaPlantilla.FirstRowNum; indexRow <= hojaPlantilla.LastRowNum; indexRow++) { var rowPlantilla = hojaPlantilla.GetRow(indexRow); var rowImportar = hojaAImportar.GetRow(indexRow); var celdaConcepto = rowPlantilla.GetCell(rowPlantilla.FirstCellNum); if (celdaConcepto == null || !celdaConcepto.CellType.Equals(CellType.String) || String.IsNullOrWhiteSpace(celdaConcepto.StringCellValue) || !celdaConcepto.StringCellValue.Contains("idConcepto")) { continue; } var elementosCelda = celdaConcepto.StringCellValue.Split(';'); var idConcepto = elementosCelda[1]; ConceptoDto concepto; var indiceColumnaImprimir = celdaConcepto.ColumnIndex + 1; if (instancia.Taxonomia.ConceptosPorId.TryGetValue(idConcepto, out concepto)) { if (concepto.EsDimension ?? false) { diccionarioContextosSeries = GeneraContextosSeries( concepto.Id, rowImportar, indiceColumnaImprimir, hiperCubo.Utileria, resumenImportacion, hojaAImportar.SheetName, instancia, plantillaDocumento, "es"); if (diccionarioContextosSeries.Count > 0) { EliminarHechos(hojaPlantilla, instancia); } } else if (concepto.EsMiembroDimension ?? false) { if (hiperCuboCalificaciones == null) { hiperCuboCalificaciones = ObtenConfiguracionHipercubo("ar_pros_SecuritiesRatingTable", instancia, plantillaDocumento); } diccionarioContextosCalificaciones = GeneraContextosCalificaciones( concepto, diccionarioContextosSeries, hiperCuboCalificaciones.Utileria, instancia, plantillaDocumento); } else if (!concepto.EsAbstracto ?? false && !concepto.EsHipercubo) { var diccionarioContextos = diccionarioContextosSeries; if (ConceptosCalificaciones.Contains(concepto.Id)) { if (hiperCuboCalificaciones != null && diccionarioContextosCalificaciones != null) { diccionarioContextos = diccionarioContextosCalificaciones; } } GeneraHechos(rowImportar, concepto, diccionarioContextos, instancia, plantillaDocumento, resumenImportacion, hojaAImportar.SheetName); } } } } }
/// <summary> /// Pinta las series y retorna un diccionario con la información de los hechos del hipercubo. /// </summary> /// <param name="idDimension">Identificador de la dimension.</param> /// <param name="filaSerie">Fila donde se presentaran los valores de la serie.</param> /// <param name="indiceColumnaInicial">Indice de la columna donde se iniciara la presentación de las series.</param> /// <param name="hipercuboUtil">Utilería con la información del hipercubo.</param> private void PintaSeries(String idDimension, IRow filaSerie, int indiceColumnaInicial, HipercuboReporteDTO hipercubo) { var series = hipercubo.Titulos; for (var indexSerie = 0; indexSerie < series.Count; indexSerie++) { var nombreSerie = series[indexSerie]; var indexColumn = indexSerie + indiceColumnaInicial; var celda = filaSerie.GetCell(indexColumn); if (celda == null) { celda = filaSerie.CreateCell(indexColumn, CellType.String); celda.CellStyle.BorderBottom = BorderStyle.Medium; celda.CellStyle.BorderTop = BorderStyle.Medium; celda.CellStyle.BorderLeft = BorderStyle.Medium; celda.CellStyle.BorderRight = BorderStyle.Medium; } celda.SetCellValue(nombreSerie); } }
private void escribirTablaSerie(DocumentBuilder docBuilder, ReporteXBRLDTO estructuraReporte, DocumentoInstanciaXbrlDto instancia, HipercuboReporteDTO hipercubo) { docBuilder.Font.Size = TamanioLetraTituloTabla; docBuilder.Writeln(); Table tablaDesglose = docBuilder.StartTable(); docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]); docBuilder.ParagraphFormat.SpaceAfter = 0; docBuilder.ParagraphFormat.SpaceBefore = 2; docBuilder.InsertCell(); docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; docBuilder.Font.Name = TipoLetraTituloConcepto; docBuilder.Font.Bold = TituloConceptoNegrita; docBuilder.Font.Size = TamanioLetraTituloTabla; docBuilder.Font.Color = Color.White; docBuilder.Write((String)estructuraReporte.ParametrosReporte["annext_SerieTypedAxis_HEADER"]); for (var indexTitulo = 0; indexTitulo < hipercubo.Titulos.Count; indexTitulo++) { docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaTitulos); var titulo = hipercubo.Titulos[indexTitulo]; docBuilder.InsertCell(); docBuilder.Write(titulo); } docBuilder.EndRow(); docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White; docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos); docBuilder.Font.Size = TamanioLetraContenidoTabla; docBuilder.Font.Color = Color.Black; foreach (var idConcepto in hipercubo.Hechos.Keys) { var matrizPlantillaContexto = hipercubo.Hechos[idConcepto]; docBuilder.InsertCell(); var nombreConcepto = ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT, idConcepto, instancia); docBuilder.Font.Name = TipoLetraTituloConcepto; docBuilder.Font.Bold = false; docBuilder.Font.Size = TamanioLetraContenidoTabla; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; docBuilder.Write(nombreConcepto); foreach (var idPlantillaContexto in matrizPlantillaContexto.Keys) { var listaHechos = matrizPlantillaContexto[idPlantillaContexto]; for (var indexHecho = 0; indexHecho < listaHechos.Length; indexHecho++) { var hecho = listaHechos[indexHecho]; var valorHecho = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS); docBuilder.InsertCell(); docBuilder.Font.Name = TipoLetraTextos; docBuilder.Font.Bold = false; docBuilder.Font.Size = TamanioLetraContenidoTabla; docBuilder.ParagraphFormat.LeftIndent = 0; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right; docBuilder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center; docBuilder.Write(valorHecho); } } docBuilder.EndRow(); } docBuilder.EndTable(); docBuilder.Writeln(); }
/// <summary> /// Pinta el contenido de un cubo ya organizado en una tabla de Word /// </summary> private void PintaTablaCubo( HipercuboReporteDTO hipercubo, DocumentoInstanciaXbrlDto instancia, ReporteXBRLDTO estructuraReporte, DocumentBuilder docBuilder, ConceptoReporteDTO concepto, IndiceReporteDTO rolAExportar, ExportadorRolDocumentoBase exportadorOrigen) { var matrizHechosPlantillaContexto = hipercubo.Utileria.ReordenaConjutosPorExplicitaImplicitaTituloConcepto(hipercubo.Hechos, hipercubo.Titulos); var matrizHechosTitulo = matrizHechosPlantillaContexto.Values.First(); var colorTitulo = exportadorOrigen.ObtenColorTitulo(); docBuilder.ParagraphFormat.SpaceAfter = 0; docBuilder.ParagraphFormat.SpaceBefore = 2; foreach (var tituloSerie in matrizHechosTitulo.Keys) { var tablaActual = docBuilder.StartTable(); PintaFilaSubTitulo(tituloSerie, docBuilder, 2, exportadorOrigen); var hechosPorConcepto = matrizHechosTitulo[tituloSerie]; foreach (var idConcepto in hechosPorConcepto.Keys) { if (!ConceptosAplican.Contains(idConcepto)) { continue; } var etiquetaConcepto = DesgloseDeCreditosHelper .obtenerEtiquetaDeConcepto( instancia.Taxonomia, idConcepto, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT); AsignaEstilosConcepto(docBuilder, exportadorOrigen); docBuilder.Bold = true; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; docBuilder.InsertCell(); docBuilder.Write(etiquetaConcepto); docBuilder.InsertCell(); docBuilder.Bold = false; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right; var hecho = hechosPorConcepto[idConcepto]; if (hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor) && instancia.Taxonomia.ConceptosPorId.ContainsKey(hecho.IdConcepto)) { var conceptoHecho = instancia.Taxonomia.ConceptosPorId[hecho.IdConcepto]; if (conceptoHecho.TipoDato.Contains(ExportadorRolDocumentoBase.TIPO_DATO_TEXT_BLOCK)) { WordUtil.InsertHtml(docBuilder, hecho.IdConcepto + ":" + hecho.Id, ExportadorRolDocumentoBase.PARRAFO_HTML_NOTAS_Texblock + hecho.Valor + "</p>", false, true); } else { exportadorOrigen.EscribirValorHecho(docBuilder, estructuraReporte, hecho, instancia.Taxonomia.ConceptosPorId[hecho.IdConcepto]); } } docBuilder.EndRow(); } exportadorOrigen.establecerBordesGrisesTabla(tablaActual); docBuilder.EndTable(); docBuilder.Writeln(); docBuilder.Writeln(); } }
/// <summary> /// Pinta el contenido del hipercubo. /// </summary> /// <param name="hipercubo">Hipercubo.</param> /// <param name="instancia">Documento de instancia.</param> /// <param name="estructuraReporte">Estructura del reporte.</param> /// <param name="docBuilder">Constructor del documento.</param> /// <param name="concepto">Concepto origen.</param> /// <param name="rolAExportar">Rol que se pretende exportar.</param> /// <param name="exportadorOrigen">Exportador original</param> private void PintaTablaCubo( HipercuboReporteDTO hipercubo, DocumentoInstanciaXbrlDto instancia, ReporteXBRLDTO estructuraReporte, DocumentBuilder docBuilder, ConceptoReporteDTO concepto, IndiceReporteDTO rolAExportar, ExportadorRolDocumentoBase exportadorOrigen) { var tablaActual = docBuilder.StartTable(); var colorTitulo = exportadorOrigen.ObtenColorTitulo(); docBuilder.ParagraphFormat.SpaceAfter = 0; docBuilder.ParagraphFormat.SpaceBefore = 2; //docBuilder.InsertCell(); // docBuilder.EndRow(); docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo; docBuilder.Font.Color = Color.White; docBuilder.Font.Size = exportadorOrigen.TamanioLetraContenidoTabla; var listaIdsConcepto = new List <string>(); foreach (var idConcepto in hipercubo.Hechos.Keys) { if (ConceptosAplica != null && !ConceptosAplica.Contains(idConcepto)) { continue; } listaIdsConcepto.Add(idConcepto); } var etiquetaTitulo = String.Empty; if (!String.IsNullOrEmpty(IdConceptoReferencia)) { etiquetaTitulo = DesgloseDeCreditosHelper .obtenerEtiquetaDeConcepto(instancia.Taxonomia, IdConceptoReferencia, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT); } else { etiquetaTitulo = concepto.Valor; } PintaFilaSubTitulo(etiquetaTitulo, docBuilder, listaIdsConcepto.Count, exportadorOrigen); docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo; docBuilder.Font.Color = Color.White; docBuilder.Font.Size = exportadorOrigen.TamanioLetraContenidoTabla; docBuilder.RowFormat.HeadingFormat = true; docBuilder.Bold = true; foreach (var idConcepto in listaIdsConcepto) { var nombreConcepto = DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, idConcepto, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT); docBuilder.InsertCell(); docBuilder.Write(nombreConcepto ?? ""); } docBuilder.EndRow(); docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White; docBuilder.Font.Color = Color.Black; docBuilder.Bold = false; var matrisHechos = hipercubo.Utileria.ReordenaConjutosPorExplicitaImplicitaConcepto(hipercubo.Hechos); var idDimensionTitulos = String.Empty; if (matrisHechos.Count > 1) { var dimensionExplicita = hipercubo.Utileria.configuracion.PlantillaDimensiones.Values.Where(X => X.Explicita == true).FirstOrDefault(); if (dimensionExplicita != null) { idDimensionTitulos = dimensionExplicita.IdDimension; } } foreach (var idPlantillaContexto in matrisHechos.Keys) { if (IdsPlantillasContexto != null && !IdsPlantillasContexto.Contains(idPlantillaContexto)) { continue; } var listaImplicita = matrisHechos[idPlantillaContexto]; var contieneHechos = listaImplicita.Where(X => X.Count > 0).FirstOrDefault() != null; if (!contieneHechos) { continue; } if (!String.IsNullOrEmpty(idDimensionTitulos)) { Viewer.Application.Dto.Hipercubos.PlantillaContextoDto plantillaContexto; if (hipercubo.Utileria.configuracion.PlantillasContextos.TryGetValue(idPlantillaContexto, out plantillaContexto)) { var miembroDimension = plantillaContexto.ValoresDimension.Where(x => x.IdDimension.Equals(idDimensionTitulos)).FirstOrDefault(); if (miembroDimension != null) { var etiquetaMiembro = DesgloseDeCreditosHelper .obtenerEtiquetaDeConcepto(instancia.Taxonomia, miembroDimension.IdItemMiembro, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT); PintaFilaSubTitulo(etiquetaMiembro, docBuilder, listaIdsConcepto.Count, exportadorOrigen); } } } for (var indexImplicita = 0; indexImplicita < listaImplicita.Count; indexImplicita++) { var diccionarioPorconcepto = listaImplicita[indexImplicita]; HechoDto hecho; foreach (var idConceptoItera in listaIdsConcepto) { docBuilder.InsertCell(); if (diccionarioPorconcepto.TryGetValue(idConceptoItera, out hecho)) { if (hecho.NoEsNumerico) { docBuilder.CellFormat.WrapText = true; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; } else { docBuilder.CellFormat.WrapText = false; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right; } exportadorOrigen.EscribirValorHecho(docBuilder, estructuraReporte, hecho, instancia.Taxonomia.ConceptosPorId[hecho.IdConcepto]); } else { docBuilder.Write(" "); } } docBuilder.EndRow(); } } exportadorOrigen.establecerBordesGrisesTabla(tablaActual); docBuilder.EndTable(); docBuilder.Writeln(); docBuilder.Writeln(); }