/// <summary> /// Crea la tabla de series. /// </summary> /// <param name="conceptoContenedorHipercubo">Concepto que contiene la definición del hipercubo de la tabla de series a evaluar.</param> /// <param name="docBuilder">Constructor del documento.</param> /// <param name="instancia">Instancia XBRL con la información a presentar.</param> /// <param name="rolAExportar">Rol donde esta contenida la tabla.</param> /// <param name="estructuraReporte">DTO con información general del reporte.</param> /// <param name="exportadorOrigen">Exportador original del rol.</param> public void CreaSeccion( ConceptoReporteDTO conceptoContenedorHipercubo, DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, IExportadorRolDocumentoInstancia exportadorOrigen) { try { docBuilder.Writeln(); HipercuboReporteDTO hipercuboReporteDto; var idConceptoHipercubo = ObtenIdConceptoHipercubo(conceptoContenedorHipercubo, instancia, rolAExportar.Uri); if (estructuraReporte.Hipercubos.TryGetValue(idConceptoHipercubo, out hipercuboReporteDto) && hipercuboReporteDto.Titulos.Count > 0) { PintaTablaCubo(hipercuboReporteDto, instancia, estructuraReporte, docBuilder, conceptoContenedorHipercubo, rolAExportar, (ExportadorRolDocumentoBase)exportadorOrigen); } } catch (Exception ex) { LogUtil.Error(ex); } }
/// <summary> /// Crea la tabla de series. /// </summary> /// <param name="conceptoOrigen">Concepto que contiene la definición del hipercubo de la tabla de series a evaluar.</param> /// <param name="docBuilder">Constructor del documento.</param> /// <param name="instancia">Instancia XBRL con la información a presentar.</param> /// <param name="rolAExportar">Rol donde esta contenida la tabla.</param> /// <param name="estructuraReporte">DTO con información general del reporte.</param> /// <param name="exportadorOrigen">Exportador original del rol.</param> public void CreaSeccion( ConceptoReporteDTO conceptoOrigen, DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, IExportadorRolDocumentoInstancia exportadorOrigen) { docBuilder.Writeln(); var exportadorBase = (ExportadorRolDocumentoBase)exportadorOrigen; try { if (!ContieneInformacion(instancia)) { return; } var diccionarioHechos = ObtenDiccionarioHechos(instancia); var listaContextos = ObtenIdentificadoresContexto(diccionarioHechos, instancia); if (listaContextos.Count == 0 || diccionarioHechos.Values.First().Values.FirstOrDefault() == null) { return; } UnidadDto unidad = null; var hechoNumerico = diccionarioHechos.Values.First().Values.Where(X => X.EsNumerico).FirstOrDefault(); if (hechoNumerico != null) { instancia.UnidadesPorId.TryGetValue(hechoNumerico.IdUnidad, out unidad); } var numeroColumnas = listaContextos.Count() + 1; var tablaActual = docBuilder.StartTable(); docBuilder.ParagraphFormat.SpaceAfter = 0; docBuilder.ParagraphFormat.SpaceBefore = 2; var etiquetaTitulo = DesgloseDeCreditosHelper .obtenerEtiquetaDeConcepto(instancia.Taxonomia, conceptoOrigen.IdConcepto, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT); PintaFilaSubTitulo(etiquetaTitulo, docBuilder, numeroColumnas, exportadorBase); PintaEncabezadoTabla(listaContextos, docBuilder, (ExportadorRolDocumentoBase)exportadorOrigen, unidad); PintaFilasHechos(instancia, listaContextos, diccionarioHechos, docBuilder, exportadorBase, estructuraReporte); establecerBordesGrisesTabla(tablaActual); docBuilder.EndTable(); docBuilder.Writeln(); docBuilder.Writeln(); } catch (Exception ex) { LogUtil.Error(ex); } }
/// <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> public void CreaSeccion( ConceptoReporteDTO conceptoOrigen, DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, IExportadorRolDocumentoInstancia exportadorOrigen) { try { docBuilder.Writeln(); var exportadorBase = (ExportadorRolDocumentoBase)exportadorOrigen; var idConceptoHipercubo = ObtenIdConceptoHipercubo(conceptoOrigen, instancia, rolAExportar.Uri); HipercuboReporteDTO hipercuboReporteDto; if (estructuraReporte.Hipercubos.TryGetValue(idConceptoHipercubo, out hipercuboReporteDto) && hipercuboReporteDto.Titulos.Count > 0) { var configuracionGeneral = hipercuboReporteDto.Utileria.configuracion; if (configuracionGeneral.ConfiguracionPresentacion != null && configuracionGeneral.ConfiguracionPresentacion.Count > 0) { ConfiguracionPresentacionRegistroHipercuboDto configuracionPresentacion = null; if (String.IsNullOrEmpty(IdConfiguracion) || !configuracionGeneral.ConfiguracionPresentacion.TryGetValue(IdConfiguracion, out configuracionPresentacion)) { configuracionPresentacion = configuracionGeneral.ConfiguracionPresentacion.Values.FirstOrDefault(); } if (configuracionPresentacion.Tipo.Equals("Tarjeta")) { PintaTarjetasHipercubo( conceptoOrigen, docBuilder, instancia, rolAExportar, estructuraReporte, exportadorBase, hipercuboReporteDto, configuracionPresentacion); } } } } catch (Exception ex) { LogUtil.Error(ex); } }
/// <summary> /// Retorna un listado con los conceptos que deben ser considerados para no ser evaluados por el exportador origen. /// </summary> /// <param name="conceptoOrigen">Concepto origen que sirve como marca para iniciar la generación de la sección.</param> /// <param name="instancia">Documento de instancia evaluado.</param> /// <param name="rolAExportar">Rol que se está exportando.</param> /// <param name="estructuraReporte">DTO con información general del reporte.</param> /// <param name="exportadorOrigen">Exportador del rol.</param> /// <returns>Retorna un listado con los conceptos que deben ser descartados en la presentación del exportador original.</returns> public IList <string> ObtenConceptosDescartar(ConceptoReporteDTO conceptoOrigen, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, IExportadorRolDocumentoInstancia exportadorOrigen) { return(null); }
/// <summary> /// Crea la tabla de series. /// </summary> /// <param name="conceptoOrigen">Concepto que contiene la definición del hipercubo de la tabla de series a evaluar.</param> /// <param name="docBuilder">Constructor del documento.</param> /// <param name="instancia">Instancia XBRL con la información a presentar.</param> /// <param name="rolAExportar">Rol donde esta contenida la tabla.</param> /// <param name="estructuraReporte">DTO con información general del reporte.</param> /// <param name="exportadorOrigen">Exportador original del rol.</param> public void CreaSeccion(ConceptoReporteDTO conceptoOrigen, DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, IExportadorRolDocumentoInstancia exportadorOrigen) { try { docBuilder.Writeln(); docBuilder.Writeln(); var exportadorBase = (ExportadorRolDocumentoBase)exportadorOrigen; var idConceptoHipercubo = ObtenIdConceptoHipercubo(conceptoOrigen, instancia, rolAExportar.Uri); var listaEstructurasHipercubos = new List <EstructuraFormatoDto>(); var rolPresentacion = instancia.Taxonomia.RolesPresentacion.Where(x => x.Uri.Equals(rolAExportar.Uri)).FirstOrDefault(); var conceptosTaxonomia = instancia.Taxonomia.ConceptosPorId; if (rolPresentacion != null) { var estructurasAnalizar = new List <EstructuraFormatoDto>(rolPresentacion.Estructuras); for (var indiceEstructrua = 0; indiceEstructrua < estructurasAnalizar.Count; indiceEstructrua++) { var estructura = estructurasAnalizar[indiceEstructrua]; if (estructura.SubEstructuras != null && estructura.SubEstructuras.Count > 0) { if (estructura.IdConcepto.Equals(conceptoOrigen.IdConcepto)) { ConceptoDto concepto; var conceptoHipercubo = estructura.SubEstructuras. Where(x => (conceptosTaxonomia.TryGetValue(x.IdConcepto, out concepto) && concepto.EsHipercubo)).FirstOrDefault(); var conceptoPartidas = estructura.SubEstructuras. Where(x => conceptosTaxonomia.TryGetValue(x.IdConcepto, out concepto) && !concepto.EsHipercubo).FirstOrDefault(); if (!ContieneInformacion(conceptoPartidas, instancia)) { return; } var tablaActual = docBuilder.StartTable(); var colorTitulo = exportadorBase.ObtenColorTitulo(); docBuilder.ParagraphFormat.SpaceAfter = 0; docBuilder.ParagraphFormat.SpaceBefore = 2; var etiquetaTitulo = DesgloseDeCreditosHelper .obtenerEtiquetaDeConcepto(instancia.Taxonomia, conceptoOrigen.IdConcepto, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT); PintaFilaSubTitulo(etiquetaTitulo, docBuilder, 2, exportadorBase); if (conceptoHipercubo != null) { foreach (var conceptoDimension in conceptoHipercubo.SubEstructuras) { foreach (var conceptoMiembro in conceptoDimension.SubEstructuras) { var etiquetaMiembro = DesgloseDeCreditosHelper .obtenerEtiquetaDeConcepto( instancia.Taxonomia, conceptoMiembro.IdConcepto, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT); docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; PintaFilaSubTitulo(etiquetaMiembro, docBuilder, 2, exportadorBase); foreach (var partida in conceptoPartidas.SubEstructuras) { var etiquetaPartida = DesgloseDeCreditosHelper .obtenerEtiquetaDeConcepto( instancia.Taxonomia, partida.IdConcepto, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT); docBuilder.Bold = true; docBuilder.InsertCell(); docBuilder.Write(etiquetaPartida); docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; docBuilder.Bold = false; docBuilder.InsertCell(); docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right; IList <String> idsHechosPartida; if (instancia.HechosPorIdConcepto.TryGetValue(partida.IdConcepto, out idsHechosPartida)) { foreach (var idHecho in idsHechosPartida) { HechoDto hechoPartida; ContextoDto contexto; ConceptoDto conceptoPartida; if (instancia.HechosPorId.TryGetValue(idHecho, out hechoPartida) && instancia.ContextosPorId.TryGetValue(hechoPartida.IdContexto, out contexto) && contexto.ContieneInformacionDimensional && contexto.ValoresDimension.Where(X => X.IdDimension.Equals(conceptoDimension.IdConcepto) && X.IdItemMiembro.Equals(conceptoMiembro.IdConcepto)).Count() > 0) { if (instancia.Taxonomia.ConceptosPorId.TryGetValue(partida.IdConcepto, out conceptoPartida)) { exportadorBase.EscribirValorHecho(docBuilder, estructuraReporte, hechoPartida, conceptoPartida); } break; } } } docBuilder.EndRow(); } } } idConceptoHipercubo = conceptoHipercubo.IdConcepto; } establecerBordesGrisesTabla(tablaActual); docBuilder.EndTable(); docBuilder.Writeln(); break; } else { estructurasAnalizar.AddRange(estructura.SubEstructuras); } } } } } catch (Exception ex) { LogUtil.Error(ex); } }
public void CreaSeccion(ConceptoReporteDTO conceptoOrigen, DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, IExportadorRolDocumentoInstancia exportadorOrigen) { var exportadorBase = (ExportadorGeneralProspecto)exportadorOrigen; var hecho = exportadorBase.ObtenPrimerHechoPorIdConcepto(instancia, "rel_news_RelevantEventContent"); ContextoDto contexto; if (instancia.ContextosPorId.TryGetValue(hecho.IdContexto, out contexto)) { var elementoDimension = contexto.ValoresDimension.First(); var etiqueta = "Tipo de evento relevante";//exportadorBase.ObtenEtiquetaConcepto(elementoDimension.IdDimension, instancia, estructuraReporte.Lenguaje); var miembro = exportadorBase.ObtenEtiquetaConcepto(elementoDimension.IdItemMiembro, instancia, estructuraReporte.Lenguaje); AplicarEstilosEtiquetaNota(docBuilder, exportadorBase); docBuilder.Write(etiqueta); EliminaEstilosLinea(docBuilder, exportadorBase); AplicarEstilosValorNotaInicio(docBuilder, exportadorBase); WordUtil.InsertHtml(docBuilder, elementoDimension.IdDimension + ":" + hecho.Id, miembro, false, true); AplicarEstilosValorNotaFin(docBuilder, exportadorBase); } ConceptoDto concepto; if (instancia.Taxonomia.ConceptosPorId.TryGetValue(hecho.IdConcepto, out concepto)) { var etiquetaHecho = exportadorBase.ObtenEtiquetaConcepto(hecho.IdConcepto, instancia, estructuraReporte.Lenguaje); AplicarEstilosEtiquetaNota(docBuilder, exportadorBase); docBuilder.Write(etiquetaHecho); EliminaEstilosLinea(docBuilder, exportadorBase); AplicarEstilosValorNotaInicio(docBuilder, exportadorBase); exportadorBase.EscribirValorHecho(docBuilder, estructuraReporte, hecho, concepto); AplicarEstilosValorNotaFin(docBuilder, exportadorBase); } }