/// <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);
            }
        }
Ejemplo n.º 3
0
 /// <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);
     }
 }
Ejemplo n.º 4
0
 /// <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);
 }
Ejemplo n.º 5
0
        /// <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);
            }
        }