public void FormatoTypeTexbloc(DocumentBuilder docBuilder, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            HechoReporteDTO hecho = null;

            foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
            {
                string valor = ObtenertipoDato(concepto, TIPO_DATO_STRING);

                if (concepto.TipoDato == valor)
                {
                    if (concepto.Hechos != null)
                    {
                        foreach (String llave in concepto.Hechos.Keys)
                        {
                            hecho = concepto.Hechos[llave];
                            if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)))
                            {
                                //Escribir titulo campo
                                escribirConceptoEnTablaNota(docBuilder, estructuraReporte, hecho, concepto);
                            }
                        }
                    }
                }
            }
        }
 /// <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>
 /// Presenta un concepto determinado
 /// </summary>
 /// <param name="docBuilder">Constructor del documento.</param>
 /// <param name="instancia">Documento de instancia.</param>
 /// <param name="rolAExportar">Rol a exportar.</param>
 /// <param name="estructuraReporte">Dto con información general del reporte.</param>
 /// <param name="concepto">Concepto que se presenta.</param>
 /// <param name="idsConceptosDescartar">Listado de identificadores de concepto a descartar.</param>
 /// <param name="conceptosHiercubos">Listado de conceptos que pertenecen a hipercubos.</param>
 public void PresentaConcepto(
     DocumentBuilder docBuilder,
     DocumentoInstanciaXbrlDto instancia,
     IndiceReporteDTO rolAExportar,
     ReporteXBRLDTO estructuraReporte,
     ConceptoReporteDTO concepto,
     IList <string> idsConceptosDescartar,
     IDictionary <string, bool> conceptosHiercubos)
 {
     EscribeConcepto(concepto, docBuilder, estructuraReporte);
 }
        /// <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>
        /// Crea el conetenido para el rol indicado.
        /// </summary>
        /// <param name="docBuilder">Constructor del docuemnto.</param>
        /// <param name="instancia">Instancia XBRL con la información a pintar.</param>
        /// <param name="rolAExportar">Rol que se pinta.</param>
        /// <param name="estructuraReporte">DTO con información general del reporte.</param>
        public void ImprimirContenidoRol(
            DocumentBuilder docBuilder,
            DocumentoInstanciaXbrlDto instancia,
            IndiceReporteDTO rolAExportar,
            ReporteXBRLDTO estructuraReporte)
        {
            var            posicionActual = 1;
            IList <String> listaIdConceptoPosicion;

            foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
            {
                EscribeConcepto(concepto, docBuilder, estructuraReporte);
            }
        }
 /// <summary>
 /// Concatena los archivos al final del documento.
 /// </summary>
 /// <param name="docBuilder">Constructor del documento.</param>
 /// <param name="instancia">Documento de instancia.</param>
 /// <param name="rolAExportar">Rol que se exporta</param>
 /// <param name="estructuraReporte">DTO con información general del reporte.</param>
 public void ConcatenaArchivosAdjuntos(
     DocumentBuilder docBuilder,
     DocumentoInstanciaXbrlDto instancia,
     IndiceReporteDTO rolAExportar,
     ReporteXBRLDTO estructuraReporte)
 {
     if (estructuraReporte.ArchivosAdjuntos != null)
     {
         foreach (var archivoAdjuntar in estructuraReporte.ArchivosAdjuntos.Values)
         {
             GeneraPortadaArchivoAdjunto(archivoAdjuntar, docBuilder);
             AgregaImagenHechoPDF(docBuilder, archivoAdjuntar.HechoArchivo);
         }
     }
 }
        /// <summary>
        /// Inserta una referencia a la portada para ser considerada en el indice.
        /// </summary>
        /// <param name="docBuilder">Constructor del documento.</param>
        /// <param name="rolAExportar">Rol que se pretende exportar.</param>
        /// <param name="texto">Texto que se pretende agregar al indice.</param>
        protected void AgregarReferenciaIndice(DocumentBuilder docBuilder, IndiceReporteDTO rolAExportar, String texto)
        {
            docBuilder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading3;
            docBuilder.Font.Color = Color.Transparent;
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Justify;
            docBuilder.Font.Size = 1;
            docBuilder.StartBookmark(rolAExportar.Rol);
            docBuilder.InsertHyperlink(texto.Replace("\n", "").Replace("\r", ""), "index", true);
            //docBuilder.Write(rolAExportar.Descripcion);
            docBuilder.EndBookmark(rolAExportar.Rol);
            docBuilder.InsertParagraph();

            docBuilder.Font.Size = TamanioLetraTituloRol;
            docBuilder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal;
            //docBuilder.Writeln();
        }
Пример #8
0
        /**
         * Elimina del listado de roles 510 o 520 dependiendo de la bande que indica
         * si se va a usar el estado de flujo de efectivo por método indirecto o no
         * @param instancia documento de instancia procesado.
         */
        private void quitarRolesNoUsadosDeEstadoDeFlujoDeEfectivo(DocumentoInstanciaXbrlDto instancia)
        {
            if (!reporteXBRLDTO.PrefijoTaxonomia.Equals(ReportConstants.PREFIJO_ID_TRAC))
            {
                //Si existe la bandera CashFlowStatementForInderectMethod se elige si se elimina 510 o 520
                String idCashFlowIndirect = reporteXBRLDTO.PrefijoTaxonomia + "CashFlowStatementForInderectMethod";

                String indicadorCashFlowIndirect = ReporteXBRLUtil.obtenerValorHecho(idCashFlowIndirect, instancia);
                if (indicadorCashFlowIndirect != null)
                {
                    IndiceReporteDTO indiceEliminar = null;
                    String           rolEliminar    = null;
                    if ("SI".Equals(indicadorCashFlowIndirect))
                    {
                        //Se usa 520, elimina 510
                        rolEliminar = "510000";
                    }
                    else
                    {
                        //Se usa 510, elimina 520
                        rolEliminar = "520000";
                    }

                    foreach (IndiceReporteDTO indiceActual in reporteXBRLDTO.Indices)
                    {
                        if (indiceActual.Rol.Contains(rolEliminar))
                        {
                            indiceEliminar = indiceActual;
                            break;
                        }
                    }

                    if (indiceEliminar != null)
                    {
                        reporteXBRLDTO.Indices.Remove(indiceEliminar);
                        reporteXBRLDTO.Roles.Remove(indiceEliminar.Rol);

                        int index = Array.BinarySearch(reporteXBRLDTO.NombresHojas, indiceEliminar.Rol);
                        if (index >= 0)
                        {
                            reporteXBRLDTO.NombresHojas = reporteXBRLDTO.NombresHojas.Where((val, i) => i != index).ToArray();
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Inserta una referencia a la portada para ser considerada en el indice.
        /// </summary>
        /// <param name="docBuilder">Constructor del documento.</param>
        /// <param name="rolAExportar">Rol que se pretende exportar.</param>
        protected void AgregarTituloPortada(DocumentBuilder docBuilder, IndiceReporteDTO rolAExportar)
        {
            docBuilder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading1;
            docBuilder.Font.Name  = TipoLetraTituloRol;
            docBuilder.Font.Color = Color.Transparent;
            docBuilder.Font.Size  = 1;
            docBuilder.StartBookmark(rolAExportar.Rol);
            docBuilder.InsertHyperlink(rolAExportar.Descripcion, "index", true);
            //docBuilder.Write(rolAExportar.Descripcion);
            docBuilder.EndBookmark(rolAExportar.Rol);
            docBuilder.InsertParagraph();

            docBuilder.Font.Size  = TamanioLetraTituloRol;
            docBuilder.Font.Color = Color.Black;
            docBuilder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal;
            //docBuilder.Writeln();
        }
        /// <summary>
        /// Método unificado para exportación a word, a partir de este formato se exporta al mismo word, a pdf
        /// o a html
        /// <summary>
        /// <param name="instancia">Datos del documento de instancia a exportar</param>
        /// <returns>Documento de word con el contenido a exportar</returns>
        /// @throws Exception
        public Document exportarDocumentoAWordInterno(DocumentoInstanciaXbrlDto instancia, ReporteXBRLDTO reporteXBRLDTO)
        {
            //StopWatch w = new StopWatch();
            //w.start();
            if (UbicacionPlantillaExportacion == null)
            {
                throw new Exception("La ubicación de la plantilla del archivo word es nula");
            }
            Stream   streamPlantilla = null;
            Document word            = null;

            try{
                streamPlantilla = Assembly.GetExecutingAssembly().GetManifestResourceStream(UbicacionPlantillaExportacion);
                if (streamPlantilla == null)
                {
                    throw new Exception("La plantilla del archivo word es nula");
                }

                word = new Document(streamPlantilla);


                DocumentBuilder docBuilder = new DocumentBuilder(word);
                docBuilder.MoveToDocumentEnd();
                for (int iIndice = 0; iIndice < reporteXBRLDTO.Indices.Count(); iIndice++)
                {
                    IndiceReporteDTO rolExportar = reporteXBRLDTO.Indices[iIndice];
                    if (ExportadorPorRol.ContainsKey(rolExportar.Uri))
                    {
                        ExportadorPorRol[rolExportar.Uri].exportarRolAWord(docBuilder, instancia, rolExportar, reporteXBRLDTO);
                    }
                }
            }
            catch (Exception ex)
            {
                LogUtil.Error(ex);
                throw;
            }
            finally
            {
                if (streamPlantilla != null)
                {
                    streamPlantilla.Close();
                }
            }
            return(word);
        }
Пример #11
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>
        /// <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);
                }
            }
        }
Пример #12
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);
     }
 }
        /// <summary>
        /// Obtiene el listado de los conceptos que no deben ser presentados.
        /// </summary>
        /// <param name="instancia">Documento de instancia a evaluar.</param>
        /// <param name="rolAExportar">Rol que se pretende exportar.</param>
        /// <param name="estructuraReporte">Dto con datos generales del reporte</param>
        /// <returns>Lista de conceptos que no sepresentand.</returns>
        public override IList <String> ObtenConceptosDescartar(
            DocumentoInstanciaXbrlDto instancia,
            IndiceReporteDTO rolAExportar,
            ReporteXBRLDTO estructuraReporte)
        {
            var listaDescartar    = base.ObtenConceptosDescartar(instancia, rolAExportar, estructuraReporte);
            var hechoEmisionUnica = ObtenPrimerHechoPorIdConcepto(instancia, "ar_pros_OnlyEmission");

            if (hechoEmisionUnica == null || String.IsNullOrEmpty(hechoEmisionUnica.Valor) || !hechoEmisionUnica.Valor.Equals("SI"))
            {
                listaDescartar.Add("ar_pros_OnlyEmission");
            }
            if (ConceptosDespuesDelIndice != null)
            {
                foreach (var idConcepto in ConceptosDespuesDelIndice)
                {
                    listaDescartar.Add(idConcepto);
                }
            }
            return(listaDescartar);
        }
Пример #14
0
        /// <summary>
        /// Quita los roles de Anexo AA cuando no son requeridos
        /// </summary>
        ///  @param instancia
        private void quitarRolesAnexoAA(DocumentoInstanciaXbrlDto instancia)
        {
            foreach (var idHecho in instancia.HechosPorId.Keys)
            {
                var hecho = instancia.HechosPorId[idHecho];
                if ((hecho.IdConcepto == "ifrs_mx-cor_20160822_RequiresSubmittingAnnexAA" && hecho.Valor == "false"))
                {
                    IndiceReporteDTO indiceEliminar = null;
                    var      listaIndices           = new List <IndiceReporteDTO>();
                    String[] rolesEliminar          = new String[] { "815100", "815101" };

                    foreach (IndiceReporteDTO indice in reporteXBRLDTO.Indices)
                    {
                        foreach (String rol in rolesEliminar)
                        {
                            if (indice.Rol.Equals(rol))
                            {
                                listaIndices.Add(indice);
                            }
                        }
                    }
                    foreach (IndiceReporteDTO indiceActual in listaIndices)
                    {
                        indiceEliminar = indiceActual;
                        if (indiceEliminar != null)
                        {
                            reporteXBRLDTO.Indices.Remove(indiceEliminar);
                            reporteXBRLDTO.Roles.Remove(indiceEliminar.Rol);

                            int index = Array.BinarySearch(reporteXBRLDTO.NombresHojas, indiceEliminar.Rol);
                            if (index >= 0)
                            {
                                reporteXBRLDTO.NombresHojas = reporteXBRLDTO.NombresHojas.Where((val, i) => i != index).ToArray();
                            }
                        }
                    }
                }
            }
        }
Пример #15
0
        private void escribirADosColumnasConceptoValor(DocumentBuilder docBuilder, String idConcepto, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            Table tablaActual = docBuilder.StartTable();

            docBuilder.ParagraphFormat.SpaceAfter  = 5;
            docBuilder.ParagraphFormat.SpaceBefore = 5;



            docBuilder.InsertCell();
            establecerFuenteTituloCampo(docBuilder);
            docBuilder.Font.Size  = TamanioLetraTituloConceptoNota;
            docBuilder.Font.Color = Color.Black;
            escribirTituloConcepto(docBuilder, idConcepto, estructuraReporte.Roles[rolAExportar.Rol]);
            docBuilder.Write(": ");

            docBuilder.InsertCell();
            establecerFuenteValorCampo(docBuilder);
            escribirValorHecho(docBuilder, estructuraReporte, estructuraReporte.Roles[rolAExportar.Rol], idConcepto);
            docBuilder.EndRow();

            tablaActual.SetBorders(LineStyle.None, 0, Color.Black);
            tablaActual.SetBorder(BorderType.Horizontal, LineStyle.Single, .75, Color.DarkGray, true);
            tablaActual.SetBorder(BorderType.Bottom, LineStyle.Single, .75, Color.DarkGray, true);

            docBuilder.EndTable();
        }
Пример #16
0
        private void PintaTabla(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, IList <ConceptoReporteDTO> listaConseptosReporte)
        {
            docBuilder.Writeln();
            Table tablaActual = docBuilder.StartTable();
            Color colorTitulo = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]);

            docBuilder.ParagraphFormat.SpaceAfter  = 0;
            docBuilder.ParagraphFormat.SpaceBefore = 2;

            ConceptoReporteDTO primerConcepto = null;

            if (!estructuraReporte.Roles.ContainsKey(rolAExportar.Rol))
            {
                throw new IndexOutOfRangeException("No existe el rol [" + rolAExportar.Rol + "] dentro del listado de roles del reporte.");
            }
            if (estructuraReporte.Roles.ContainsKey(rolAExportar.Rol))
            {
                foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
                {
                    if (!concepto.Abstracto)
                    {
                        primerConcepto = concepto;
                        break;
                    }
                }
            }
            establecerFuenteTituloCampo(docBuilder);
            docBuilder.Font.Size = TamanioLetraTituloTabla;
            docBuilder.InsertCell();

            //tablaActual.StyleIdentifier = StyleIdentifier.LIGHT_GRID_ACCENT_1;
            //tablaActual.StyleOptions = TableStyleOptions.FIRST_ROW;

            docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
            docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
            docBuilder.Font.Color = Color.White;
            docBuilder.Write(estructuraReporte.ObtenValorEtiquetaReporte("ETIQUETA_CONCEPTO"));

            foreach (String periodo in primerConcepto.Hechos.Keys)
            {
                docBuilder.InsertCell();
                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                //docBuilder.CellFormat.Width = 35;
                docBuilder.CellFormat.WrapText = false;
                docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                String descPeriodo = estructuraReporte.PeriodosReporte[periodo];
                docBuilder.Writeln(estructuraReporte.Titulos[periodo]);
                docBuilder.Write(descPeriodo.Replace("_", " - "));
            }
            docBuilder.RowFormat.HeadingFormat = true;
            docBuilder.EndRow();

            establecerFuenteValorCampo(docBuilder);
            docBuilder.Font.Size = TamanioLetraContenidoTabla;


            foreach (ConceptoReporteDTO concepto in listaConseptosReporte)
            {
                //  string valor = ObtenertipoDato(concepto, TIPO_DATO_MONETARY);
                //string tipoNoNegativo = ObtenertipoDato(concepto, TIPO_DATO_NoNEGATIVO);
                if (concepto.IdConcepto != ID_Importe && concepto.IdConcepto != ID_IVA && concepto.IdConcepto != ID_Total)

                {
                    docBuilder.InsertCell();
                    docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                    docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                    docBuilder.CellFormat.WrapText = true;
                    docBuilder.Font.Color          = Color.Black;
                    if (concepto.Abstracto)
                    {
                        docBuilder.Bold       = true;
                        docBuilder.Font.Color = Color.White;
                        docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                    }
                    else
                    {
                        docBuilder.Bold = false;
                    }
                    docBuilder.ParagraphFormat.LeftIndent = (concepto.Tabuladores < 0 ? concepto.Tabuladores : 0);
                    docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Left;
                    if (concepto.AtributosAdicionales != null)
                    {
                        if (concepto.AtributosAdicionales.Count == 1)
                        {
                            conceptosEnIndice(docBuilder, concepto);
                        }
                        else
                        {
                            docBuilder.Write(concepto.Valor);
                        }
                    }
                    else
                    {
                        docBuilder.Write(concepto.Valor);
                    }
                    if (concepto.Abstracto)
                    {
                        for (int iCell = 0; iCell < primerConcepto.Hechos.Count(); iCell++)
                        {
                            docBuilder.InsertCell();
                            docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                        }
                    }
                    else
                    {
                        foreach (HechoReporteDTO hecho in concepto.Hechos.Values)
                        {
                            docBuilder.InsertCell();
                            docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);

                            docBuilder.ParagraphFormat.LeftIndent = 0;
                            if (concepto.Numerico)
                            {
                                docBuilder.CellFormat.WrapText       = true;
                                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
                            }
                            else
                            {
                                docBuilder.CellFormat.WrapText       = false;
                                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                            }
                            escribirValorHecho(docBuilder, estructuraReporte, hecho, concepto);
                        }
                    }
                    docBuilder.RowFormat.AllowBreakAcrossPages = true;
                    docBuilder.RowFormat.HeadingFormat         = false;
                    docBuilder.EndRow();
                }
            }
            establecerBordesGrisesTabla(tablaActual);
            docBuilder.EndTable();
            docBuilder.Writeln();
        }
Пример #17
0
        private void PintaTablaDimensionSerie(DocumentBuilder docBuilder, String valor, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, ConceptoReporteDTO concepto)
        {
            docBuilder.Writeln();
            // var listaConseptosReportes = estructuraReporte.Hipercubos;
            foreach (var dato in estructuraReporte.Hipercubos)
            {
                var      variable = dato;
                string[] d        = variable.Key.Split(new string[] { "Table" }, StringSplitOptions.None);
                string   conceptoHipercuboTable = (d[0]);

                if (conceptoHipercuboTable == valor && !Evaluador.Contains(variable.Key))
                {
                    ConceptoReporteDTO primerConcepto = null;

                    if (!estructuraReporte.Roles.ContainsKey(rolAExportar.Rol))
                    {
                        throw new IndexOutOfRangeException("No existe el rol [" + rolAExportar.Rol + "] dentro del listado de roles del reporte.");
                    }
                    if (estructuraReporte.Roles.ContainsKey(rolAExportar.Rol))
                    {
                        if (!concepto.Abstracto)
                        {
                            primerConcepto = concepto;
                            break;
                        }
                    }

                    var hipercubo = variable;


                    Table tablaActual = docBuilder.StartTable();
                    Color colorTitulo = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]);
                    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  = TamanioLetraContenidoTabla;

                    docBuilder.InsertCell();

                    docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                    docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                    docBuilder.Font.Color = Color.White;
                    establecerFuenteTituloCampo(docBuilder);
                    docBuilder.Font.Size = TamanioLetraTituloTabla;
                    docBuilder.Write("Serie [Eje]");
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

                    if (hipercubo.Value.Titulos.Count > 0)
                    {
                        for (var indexTitulo = 0; indexTitulo < hipercubo.Value.Titulos.Count; indexTitulo++)
                        {
                            var titulo = hipercubo.Value.Titulos[indexTitulo];
                            docBuilder.InsertCell();
                            docBuilder.Write(titulo);
                        }
                        docBuilder.EndRow();
                    }



                    establecerFuenteTituloCampo(docBuilder);
                    docBuilder.Font.Size = TamanioLetraTituloTabla;

                    int fila = 0;


                    if (concepto.Abstracto)
                    {
                        fila = +1;

                        for (int iCell = 0; iCell < fila; iCell++)
                        {
                            docBuilder.InsertCell();
                            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                        }
                    }
                    if (concepto.Abstracto)
                    {
                        docBuilder.Bold       = true;
                        docBuilder.Font.Color = Color.White;
                        docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;

                        docBuilder.ParagraphFormat.LeftIndent = (concepto.Tabuladores < 0 ? concepto.Tabuladores : 0);
                        docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Left;
                        docBuilder.Write(concepto.Valor);
                        docBuilder.InsertCell();
                        docBuilder.EndRow();
                        //  tituloAbstracto.Add(concepto.Valor);
                    }
                    else
                    {
                        docBuilder.Bold = false;
                    }


                    docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                    docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                    docBuilder.Font.Color = Color.Black;
                    docBuilder.Bold       = false;
                    foreach (var idConcepto in hipercubo.Value.Hechos.Keys)
                    {
                        var matrizPlantillaContexto = hipercubo.Value.Hechos[idConcepto];
                        docBuilder.InsertCell();
                        var nombreConcepto =
                            DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, idConcepto, "es", ReporteXBRLUtil.ETIQUETA_DEFAULT);
                        docBuilder.Write(nombreConcepto);
                        ConceptoHiper.Add(idConcepto);

                        foreach (var idPlantillaContexto in matrizPlantillaContexto.Keys)
                        {
                            docBuilder.CellFormat.WrapText       = true;
                            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                            var listaHechos = matrizPlantillaContexto[idPlantillaContexto];
                            for (var indexHecho = 0; indexHecho < listaHechos.Length; indexHecho++)
                            {
                                var hecho      = listaHechos[indexHecho];
                                var valorHecho = hecho.Valor;

                                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)) && instancia.Taxonomia.ConceptosPorId.ContainsKey(hecho.IdConcepto))
                                {
                                    var conceptoHecho = instancia.Taxonomia.ConceptosPorId[hecho.IdConcepto];
                                    if (conceptoHecho.TipoDato.Contains(TIPO_DATO_TEXT_BLOCK))
                                    {
                                        WordUtil.InsertHtml(docBuilder, hecho.IdConcepto + ":" + hecho.Id, PARRAFO_HTML_NOTAS_Texblock + valorHecho + "</p>", false, true);

                                        //docBuilder.InsertHtml(PARRAFO_HTML_NOTAS_Texblock + limpiarBloqueTexto(valorHecho) + "</p>", true);
                                    }
                                    else
                                    {
                                        docBuilder.Writeln(valorHecho);
                                    }
                                }
                            }
                        }

                        docBuilder.EndRow();
                    }


                    establecerBordesGrisesTabla(tablaActual);
                    docBuilder.EndTable();
                    docBuilder.Writeln();
                    docBuilder.Writeln();
                    Evaluador.Add(variable.Key);
                    break;
                }
            }
        }
Пример #18
0
        private void PintaTablaDimensionExplicita(DocumentBuilder docBuilder, String valor, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            docBuilder.Writeln();

            foreach (var dato in estructuraReporte.Hipercubos)
            {
                if (dato.Value.Hechos.Count > 0)
                {
                    var variable = dato;
                    // modificaciones en la condicion para obtner un hipercubo exlicito
                    string[] d = variable.Key.Split(new string[] { "Table" }, StringSplitOptions.None);
                    string   conceptoHipercuboTable = (d[0]);

                    if (conceptoHipercuboTable == valor && !Evaluador.Contains(variable.Key))
                    {
                        var hipercubo = variable;
                        docBuilder.InsertBreak(BreakType.PageBreak);
                        Table tablaActual = docBuilder.StartTable();
                        Color colorTitulo = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]);
                        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  = TamanioLetraContenidoTabla;

                        //   docBuilder.InsertCell();


                        foreach (var idConcepto in hipercubo.Value.Hechos.Keys)
                        {
                            var matrizPlantillaContexto = hipercubo.Value.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.Value.Hechos.Count - 1;

                        if (hipercubo.Value.Hechos.Count == 0)
                        {
                            return;
                        }

                        foreach (var idPlantillaContexto in hipercubo.Value.Utileria.configuracion.PlantillasContextos.Keys)
                        {
                            var plantilla        = hipercubo.Value.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  = 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.Value.Hechos.Keys)
                            {
                                var matrizPlantillaContexto = hipercubo.Value.Hechos[idConcepto];
                                if (matrizPlantillaContexto.ContainsKey(idPlantillaContexto))
                                {
                                    countType = matrizPlantillaContexto[idPlantillaContexto].Length;
                                }
                                else
                                {
                                    LogUtil.Error("No se encontro la definición para la plantilla de contexto:" + idPlantillaContexto);
                                }
                                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.Value.Hechos.Keys)
                                {
                                    var matrizPlantillaContexto = hipercubo.Value.Hechos[idConcepto];
                                    ConceptoHiper.Add(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;
                            if (countType > 0)
                            {
                                docBuilder.EndRow();
                            }
                        }


                        establecerBordesGrisesTabla(tablaActual);
                        docBuilder.EndTable();
                        docBuilder.Writeln();
                        Evaluador.Add(variable.Key);
                    }
                }
            }
        }
Пример #19
0
        ///
        /// (non-Javadoc)
        /// @see com.bmv.spread.xbrl.reportes.exportador.ExportadorRolDocumentoInstancia#exportarRolAWord(com.aspose.words.DocumentBuilder, com.hh.xbrl.abax.viewer.application.dto.DocumentoInstanciaXbrlDto, com.bmv.spread.xbrl.reportes.dto.IndiceReporteDTO, com.bmv.spread.xbrl.reportes.dto.ReporteXBRLDTO)
        ////
        override public void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            Color colorTitulo = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]);

            docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait;
            docBuilder.CurrentSection.PageSetup.LeftMargin  = 40;
            docBuilder.CurrentSection.PageSetup.RightMargin = 40;
            escribirEncabezado(docBuilder, instancia, estructuraReporte, true);
            imprimirTituloRol(docBuilder, rolAExportar);

            //Escribir nota inicial
            IList <ConceptoReporteDTO> conceptos = estructuraReporte.Roles[rolAExportar.Rol];
            HechoReporteDTO            hechoNota = null;
            var conceptoNota = "ifrs_mx-cor_20141205_InformacionARevelarSobrePosicionMonetariaEnMonedaExtranjeraBloqueDeTexto";

            foreach (var concepto in conceptos)
            {
                if (!concepto.IdConcepto.Equals(conceptoNota))
                {
                    continue;
                }
                foreach (var llave in concepto.Hechos.Keys)
                {
                    hechoNota = concepto.Hechos[llave];
                    if (hechoNota != null)
                    {
                        if (String.IsNullOrWhiteSpace(hechoNota.Valor) && instancia.HechosPorIdConcepto.ContainsKey(conceptoNota))
                        {
                            var idsHechos = instancia.HechosPorIdConcepto[conceptoNota];
                            foreach (var idHecho in idsHechos)
                            {
                                if (instancia.HechosPorId.ContainsKey(idHecho))
                                {
                                    var hechoReal = instancia.HechosPorId[idHecho];
                                    if (!String.IsNullOrWhiteSpace(hechoReal.Valor))
                                    {
                                        hechoNota.Valor = hechoReal.Valor;
                                        break;
                                    }
                                }
                            }
                        }
                        if (!String.IsNullOrWhiteSpace(hechoNota.Valor))
                        {
                            escribirConceptoEnTablaNota(docBuilder, estructuraReporte, hechoNota, concepto);
                            break;
                        }
                    }
                }
            }
            //conceptos.Remove(0);

            conceptos = ((List <ConceptoReporteDTO>)conceptos).GetRange(1, conceptos.Count() - 1);


            Table tablaActual = docBuilder.StartTable();
            ConceptoReporteDTO primerConcepto = null;

            foreach (ConceptoReporteDTO concepto  in  conceptos)
            {        //estructuraReporte.Roles[rolAExportar.Rol]){
                if (!concepto.Abstracto)
                {
                    primerConcepto = concepto;
                    break;
                }
            }
            docBuilder.Font.Color = Color.White;
            docBuilder.ParagraphFormat.SpaceAfter  = 0;
            docBuilder.ParagraphFormat.SpaceBefore = 2;
            establecerFuenteTituloCampo(docBuilder);
            docBuilder.Font.Size = TamanioLetraTituloTabla;

            //Titlo de dimension

            docBuilder.InsertCell();
            docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
            docBuilder.CellFormat.PreferredWidth  = PreferredWidth.Auto;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
            int iCol = 0;

            foreach (String columna  in  primerConcepto.Hechos.Keys)
            {
                docBuilder.InsertCell();
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                docBuilder.CellFormat.WrapText       = false;
                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                if (iCol == 0)
                {
                    String descPeriodo = (String)estructuraReporte.ParametrosReporte["ifrs_mx-cor_20141205_MonedasEje_HEADER"];
                    docBuilder.Write(descPeriodo);
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.First;
                }
                else
                {
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
                }
                iCol++;
            }

            docBuilder.EndRow();

            docBuilder.InsertCell();
            docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
            docBuilder.CellFormat.PreferredWidth  = PreferredWidth.Auto;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
            foreach (String columna  in  primerConcepto.Hechos.Keys)
            {
                docBuilder.InsertCell();
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                docBuilder.CellFormat.WrapText       = false;
                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                String descPeriodo = (String)estructuraReporte.ParametrosReporte[columna + "_HEADER"];
                docBuilder.Write(descPeriodo);
                docBuilder.CellFormat.HorizontalMerge = CellMerge.First;
            }
            docBuilder.EndRow();

            establecerFuenteValorCampo(docBuilder);
            docBuilder.Font.Size = TamanioLetraContenidoTabla;
            foreach (ConceptoReporteDTO concepto  in  conceptos)
            {
                if (concepto.Abstracto && !ConceptosAbstractosPermitidos.Contains(concepto.IdConcepto))
                {
                    continue;
                }
                docBuilder.InsertCell();
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                docBuilder.CellFormat.WrapText = true;
                docBuilder.Font.Color          = Color.Black;
                if (concepto.Abstracto)
                {
                    docBuilder.Bold       = true;
                    docBuilder.Font.Color = Color.White;
                    docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                }
                else
                {
                    docBuilder.Bold = false;
                }
                docBuilder.ParagraphFormat.LeftIndent = (concepto.Tabuladores < 0 ? concepto.Tabuladores : 0);
                docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Left;
                docBuilder.Write(concepto.Valor);
                if (concepto.Abstracto)
                {
                    for (int iCell = 0; iCell < primerConcepto.Hechos.Count(); iCell++)
                    {
                        docBuilder.InsertCell();
                        docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                    }
                }
                else
                {
                    foreach (HechoReporteDTO hecho  in  concepto.Hechos.Values)
                    {
                        docBuilder.InsertCell();
                        docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);

                        docBuilder.ParagraphFormat.LeftIndent = 0;
                        if (concepto.Numerico)
                        {
                            docBuilder.CellFormat.WrapText       = true;
                            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
                        }
                        else
                        {
                            docBuilder.CellFormat.WrapText       = false;
                            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                        }
                        escribirValorHecho(docBuilder, estructuraReporte, hecho, concepto);
                    }
                }
                docBuilder.RowFormat.AllowBreakAcrossPages = true;
                docBuilder.RowFormat.HeadingFormat         = false;
                docBuilder.EndRow();
            }


            tablaActual.SetBorders(LineStyle.Single, 1, ReportConstants.DEFAULT_BORDER_GREY_COLOR);
            docBuilder.EndTable();
        }
Пример #20
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);
 }
Пример #21
0
        /// <summary>
        /// Implementación de método abstracto que dispara la generación del report.
        /// </summary>
        /// <param name="docBuilder">Constructor de Aspose para la generación del contenido.</param>
        /// <param name="instancia">Documento de instancia XBRL.</param>
        /// <param name="rolAExportar">Definición del rol que se pretende presentar.</param>
        /// <param name="estructuraReporte">Información adicional sobre la estructura del reporte.</param>
        override public void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            Idioma = estructuraReporte.Lenguaje;

            docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait;
            docBuilder.CurrentSection.PageSetup.PaperSize   = PaperSize.Letter;
            docBuilder.CurrentSection.PageSetup.LeftMargin  = 40;
            docBuilder.CurrentSection.PageSetup.RightMargin = 40;
            escribirEncabezado(docBuilder, instancia, estructuraReporte, true);
            //Titulo rol
            imprimirTituloRol(docBuilder, rolAExportar);


            HechoReporteDTO hecho = null;

            foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
            {
                if (ConceptosIgnorar.ContainsKey(concepto.IdConcepto))
                {
                    continue;
                }
                if (concepto.Hechos != null)
                {
                    foreach (String llave in concepto.Hechos.Keys)
                    {
                        hecho = concepto.Hechos[llave];
                        var esBloqueTexto = concepto.TipoDato.Contains(TIPO_DATO_TEXT_BLOCK);
                        if (esBloqueTexto)
                        {
                            if (ExportarNotasVacias || (hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)))
                            {
                                //Escribir titulo campo
                                EscribirNotaTextoAtributosAdicionales(docBuilder, estructuraReporte, hecho, concepto);
                            }
                        }

                        if (concepto.TipoDato != null &&
                            (concepto.TipoDato.Contains(TIPO_DATO_SI_NO) || concepto.Numerico))
                        {
                            EscribirADosColumnasConceptoValor(docBuilder, concepto.IdConcepto, rolAExportar, estructuraReporte);
                        }
                        else if (concepto.IdConcepto.Equals("ar_pros_CompanyAdministratorsAbstract"))
                        {
                            ImprimeTitulo(docBuilder, concepto);
                            PintaAdministradores(docBuilder, instancia, estructuraReporte.Hipercubos["ar_pros_CompanyAdministratorsTable"]);
                        }
                        else if (concepto.IdConcepto.Equals("ar_pros_CompanyShareholdersAbstract"))
                        {
                            ImprimeTitulo(docBuilder, concepto);
                            PintaAccionistas(docBuilder, instancia, estructuraReporte.Hipercubos["ar_pros_CompanyShareholdersTable"]);
                        }
                        else if (concepto.IdConcepto.Equals("ar_pros_ReferenceIncorporationAdministration"))
                        {
                            if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)))
                            {
                                EscribirADosColumnasConceptoValor(docBuilder, concepto.IdConcepto, rolAExportar, estructuraReporte);
                            }
                        }
                    }
                }
            }
        }
Пример #22
0
        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();
        }
 public override void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
 {
     DescartarAbastractos = true;
     InicializaConfiguracionPaginaDefault(docBuilder);
     ImprimirContenidoRol(docBuilder, instancia, rolAExportar, estructuraReporte);
     escribirEncabezado(docBuilder, instancia, estructuraReporte, true);
 }
Пример #24
0
        public override void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            //estructuraReporte.ConceptosReportePorRol[""][0].Hechos[""].Valor
            foreach (HeaderFooter head in docBuilder.Document.FirstSection.HeadersFooters)
            {
                head.Range.Replace("${label_rel_ev_RelevantEventReportAbstract}",
                                   ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_RelevantEventReportAbstract", instancia),
                                   false, false);

                head.Range.Replace("${label_rel_ev_Date}",
                                   ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_Date", instancia),
                                   false, false);

                head.Range.Replace("${rel_ev_Date}",
                                   ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_Date", instancia, ""),
                                   false, false);

                head.Range.Replace("${rel_ev_BusinessName}",
                                   ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_BusinessName", instancia, ""),
                                   false, false);
            }

            docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_Ticker}",
                                                           ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_Ticker", instancia),
                                                           false, false);

            docBuilder.Document.FirstSection.Range.Replace("${rel_ev_Ticker}",
                                                           ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_Ticker", instancia, ""),
                                                           false, false);

            docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_BusinessName}",
                                                           ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_BusinessName", instancia),
                                                           false, false);

            docBuilder.Document.FirstSection.Range.Replace("${rel_ev_BusinessName}",
                                                           ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_BusinessName", instancia, ""),
                                                           false, false);

            docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_Place}",
                                                           ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_Place", instancia),
                                                           false, false);

            docBuilder.Document.FirstSection.Range.Replace("${rel_ev_Place}",
                                                           ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_Place", instancia, ""),
                                                           false, false);


            docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_ForeignMarket}",
                                                           ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_ForeignMarket", instancia),
                                                           false, false);

            docBuilder.Document.FirstSection.Range.Replace("${rel_ev_ForeignMarket}",
                                                           ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_ForeignMarket", instancia, ""),
                                                           false, false);



            docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_RelevantEventTypesAxis}",
                                                           ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_RelevantEventTypesAxis", instancia),
                                                           false, false);

            string descTipoEvento = String.Empty;

            if (instancia.HechosPorIdConcepto.ContainsKey("rel_ev_RelevantEventContent"))
            {
                var listaHechosId = instancia.HechosPorIdConcepto["rel_ev_RelevantEventContent"];
                if (listaHechosId.Count > 0)
                {
                    var hechoContenido = instancia.HechosPorId[listaHechosId[0]];
                    var contexto       = instancia.ContextosPorId[hechoContenido.IdContexto];
                    if (contexto.ValoresDimension != null && contexto.ValoresDimension.Count > 0)
                    {
                        descTipoEvento = ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, contexto.ValoresDimension[0].IdItemMiembro, instancia);
                    }
                }
            }

            docBuilder.Document.FirstSection.Range.Replace("${rel_ev_RelevantEventTypesAxis}",
                                                           descTipoEvento,
                                                           false, false);

            docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_Subject}",
                                                           ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_Subject", instancia),
                                                           false, false);

            docBuilder.Document.FirstSection.Range.Replace("${rel_ev_Subject}",
                                                           ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_Subject", instancia, ""),
                                                           false, false);


            docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_RelevantEventContent}",
                                                           ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_RelevantEventContent", instancia),
                                                           false, false);
            docBuilder.MoveToSection(0);
            docBuilder.MoveToDocumentEnd();

            foreach (var rol in estructuraReporte.ConceptosReportePorRol.Keys)
            {
                var concepto = estructuraReporte.ConceptosReportePorRol[rol].FirstOrDefault(x => x.IdConcepto == "rel_ev_RelevantEventContent");
                if (concepto != null)
                {
                    escribirValorHecho(docBuilder, estructuraReporte, concepto.Hechos["trim_actual"], concepto);
                }
            }

            docBuilder.MoveToDocumentEnd();



            /*
             * foreach (var rol in estructuraReporte.ConceptosReportePorRol.Keys)
             * {
             *  var concepto = estructuraReporte.ConceptosReportePorRol[rol].FirstOrDefault(x => x.IdConcepto == "rel_ev_AttachedDocumentPdf");
             *  if (concepto != null)
             *  {
             *      //escribirConceptoEnTablaNota(docBuilder, estructuraReporte, concepto.Hechos["trim_actual"], concepto);
             *
             *      escribirValorHecho(docBuilder, estructuraReporte, concepto.Hechos["trim_actual"], concepto);
             *  }
             * }
             */
        }
 /// <summary>
 /// Exportador a Word.
 /// </summary>
 /// <param name="docBuilder">Constructor del documento.</param>
 /// <param name="instancia">DTO con la información de la instancia XBRL</param>
 /// <param name="rolAExportar">DTO con la información del rol a exportar.</param>
 /// <param name="estructuraReporte"></param>
 public override void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
 {
     estructuraReporte.AgregarSignoAMonetarios = true;
     InicializaConfiguracionPaginaDefault(docBuilder);
     AgregarTituloPortada(docBuilder, rolAExportar);
     InsertarLeyendaProspectoDefinitivo(docBuilder, instancia, estructuraReporte);
     IsertaLogotipoDeEmisora(docBuilder, instancia, estructuraReporte);
     ImprimirContenidoRol(docBuilder, instancia, rolAExportar, estructuraReporte);
     ImprimirFirmasArt13(docBuilder, instancia);
     imprimirIndice(docBuilder, BreakType.SectionBreakNewPage);
     ImprimirConceptosDespuesIndice(docBuilder, instancia, rolAExportar, estructuraReporte);
     escribirEncabezado(docBuilder, instancia, estructuraReporte, true);
 }
        /// <summary>
        /// Imprime los conceptos que se deben de presentar despues del indice.
        /// </summary>
        /// <param name="docBuilder">Constructor del documento.</param>
        /// <param name="instancia">Documento de instancia.</param>
        /// <param name="rolAExportar">Rol que se esta exportando.</param>
        /// <param name="estructuraReporte">Dto con información general del reporte.</param>
        private void ImprimirConceptosDespuesIndice(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            var idsConceptosDescartar = new List <String>();
            var conceptosHiercubos    = new Dictionary <String, bool>();

            if (ConceptosDespuesDelIndice != null)
            {
                foreach (var idConcepto in ConceptosDespuesDelIndice)
                {
                    var concepto = ObtenConceptoReporte(idConcepto, estructuraReporte);
                    if (concepto != null)
                    {
                        docBuilder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal;
                        PresentaConcepto(docBuilder, instancia, rolAExportar, estructuraReporte, concepto, idsConceptosDescartar, conceptosHiercubos);
                    }
                }
            }
        }
Пример #27
0
        public override void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            //   docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait;

            docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait;
            docBuilder.CurrentSection.PageSetup.PaperSize   = PaperSize.Letter;
            docBuilder.CurrentSection.PageSetup.LeftMargin  = 40;
            docBuilder.CurrentSection.PageSetup.RightMargin = 40;

            //  escribirEncabezado(docBuilder, instancia, estructuraReporte, true);

            imprimirTituloRol(docBuilder, rolAExportar);
            var             lista  = new List <ConceptoReporteDTO>();
            var             lista2 = new List <ConceptoReporteDTO>();
            var             lista3 = new List <ConceptoReporteDTO>();
            HechoReporteDTO hecho  = null;

            foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
            {
                if (concepto.Hechos != null)
                {
                    foreach (String llave in concepto.Hechos.Keys)
                    {
                        hecho = concepto.Hechos[llave];
                        if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)))
                        {
                            if (!ConceptoHiper.Contains(concepto.IdConcepto))
                            {
                                escribirConceptoEnTablaNota(docBuilder, estructuraReporte, hecho, concepto);
                            }
                            string tipoNumerico = ObtenertipoDato(concepto, TIPO_DATO_MONETARY);

                            if (concepto.TipoDato == tipoNumerico && concepto.IdConcepto != ID_Importe && concepto.IdConcepto != ID_IVA && concepto.IdConcepto != ID_Total)
                            {
                                lista.Add(concepto);
                                banderahecho = 1;
                            }
                            else if (banderahecho == 1)
                            {
                                PintaTabla(docBuilder, instancia, rolAExportar, estructuraReporte, lista);
                                banderahecho = 0;
                                lista.Clear();
                            }
                            string tipoNoNegativo = ObtenertipoDato(concepto, TIPO_DATO_NoNEGATIVO);
                            if (concepto.TipoDato == tipoNoNegativo)
                            {
                                lista2.Add(concepto);
                                banderahecho = 2;
                            }
                            else if (banderahecho == 2)
                            {
                                PintaTabla(docBuilder, instancia, rolAExportar, estructuraReporte, lista2);
                                banderahecho = 0;
                                lista2.Clear();
                            }
                            string tipoDecimal = ObtenertipoDato(concepto, TIPO_DATO_DECIMAL);
                            if (concepto.TipoDato == tipoNoNegativo)
                            {
                                lista3.Add(concepto);
                                banderahecho = 3;
                            }
                            else if (banderahecho == 3)
                            {
                                PintaTabla(docBuilder, instancia, rolAExportar, estructuraReporte, lista3);
                                banderahecho = 0;
                                lista3.Clear();
                            }

                            string conceptoAdosColumnas = ObtenertipoDato(concepto, TIPO_DATO_SI_NO);

                            if (concepto.TipoDato == conceptoAdosColumnas || concepto.IdConcepto == ID_Tipo_Oferta ||
                                concepto.IdConcepto == ID_Denominacion_moneda || concepto.IdConcepto == ID_Pesos || concepto.IdConcepto == ID_Pesos1)
                            {
                                escribirADosColumnasConceptoValor(docBuilder, concepto.IdConcepto, rolAExportar, estructuraReporte);
                            }
                        }
                    }

                    if (hipercubosSerie.Contains(concepto.IdConcepto))
                    {
                        docBuilder.Writeln();
                        var      conceptoActual = concepto;
                        string[] d = concepto.IdConcepto.Split(new string[] { "Abstract" }, StringSplitOptions.None);
                        string   ConceptoHipercubo = (d[0]);
                        PintaTablaDimensionSerie(docBuilder, ConceptoHipercubo, instancia, rolAExportar, estructuraReporte, conceptoActual);
                    }
                    else if (hipercubosExist.Contains(concepto.IdConcepto))
                    {
                        docBuilder.Writeln();

                        string[] d = concepto.IdConcepto.Split(new string[] { "Abstract" }, StringSplitOptions.None);
                        string   ConceptoHipercubo = (d[0]);
                        PintaTablaDimensionExplicita(docBuilder, ConceptoHipercubo, instancia, rolAExportar, estructuraReporte);
                    }
                }
            }

            banderahecho = 0;
            Evaluador.Clear();
            ConceptoHiper.Clear();
        }
Пример #28
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);
            }
        }
        override public void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait;
            docBuilder.CurrentSection.PageSetup.PaperSize   = PaperSize.Letter;
            docBuilder.CurrentSection.PageSetup.LeftMargin  = 40;
            docBuilder.CurrentSection.PageSetup.RightMargin = 40;

            //escribirEncabezado(docBuilder, instancia, estructuraReporte, true);
            imprimirTituloRol(docBuilder, rolAExportar);

            docBuilder.Font.Name  = TipoLetraTextos;
            docBuilder.Font.Bold  = false;
            docBuilder.Font.Size  = TamanioLetraTextos;
            docBuilder.Font.Color = Color.Black;
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;

            foreach (String i in estructuraReporte.NotasAlPie.Keys)
            {
                var kv   = (KeyValuePair <Int32, String>)estructuraReporte.NotasAlPie[i];
                var nota = limpiarBloqueTexto(kv.Value);

                if (Regex.IsMatch(nota, "&lt;") || Regex.IsMatch(nota, "&gt;"))
                {
                    nota = HttpUtility.HtmlDecode(nota);
                }
                else
                {
                    nota = REGEXP_SALTO_LINEA.Replace(nota, "<br/>");
                }

                docBuilder.InsertHyperlink("[" + kv.Key + "] " + FLECHA_ARRIBA, MARCADOR_LINK_NOTAALPIE + kv.Key + "]", true);
                docBuilder.StartBookmark(MARCADOR_NOTAALPIE + kv.Key + "]");
                WordUtil.InsertHtml(docBuilder, "nn", PARRAFO_HTML_NOTAS + nota + "</p>", false, true);


                docBuilder.EndBookmark(MARCADOR_NOTAALPIE + kv.Key + "]");
            }
        }
        /// <summary>
        /// Implementación de método abstracto que dispara la generación del report.
        /// </summary>
        /// <param name="docBuilder">Constructor de Aspose para la generación del contenido.</param>
        /// <param name="instancia">Documento de instancia XBRL.</param>
        /// <param name="rolAExportar">Definición del rol que se pretende presentar.</param>
        /// <param name="estructuraReporte">Información adicional sobre la estructura del reporte.</param>
        override public void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            Idioma = estructuraReporte.Lenguaje;

            docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait;
            docBuilder.CurrentSection.PageSetup.PaperSize   = PaperSize.Letter;
            docBuilder.CurrentSection.PageSetup.LeftMargin  = 40;
            docBuilder.CurrentSection.PageSetup.RightMargin = 40;
            escribirEncabezado(docBuilder, instancia, estructuraReporte, true);
            //Titulo rol
            //imprimirPortada(docBuilder, rolAExportar);

            //PintaCamposTablaPersonaResponsable(docBuilder,estructuraReporte);


            IList <String> idsHechosFirmasPersonasResponsables;

            if (instancia.HechosPorIdConcepto.TryGetValue("ar_pros_NameAndPositionsOfResponsiblePersonsPdf", out idsHechosFirmasPersonasResponsables) && idsHechosFirmasPersonasResponsables.Count > 0)
            {
                var      idHechoFirmas = idsHechosFirmasPersonasResponsables.FirstOrDefault();
                HechoDto hechoFirmaPersonasResponsables;
                if (instancia.HechosPorId.TryGetValue(idHechoFirmas, out hechoFirmaPersonasResponsables))
                {
                    AgregaImagenFirmas(docBuilder, hechoFirmaPersonasResponsables);
                }
            }
        }