コード例 #1
0
        public override ResultadoOperacionDto EjecutarDistribucion(Viewer.Application.Dto.DocumentoInstanciaXbrlDto instancia, IDictionary <string, object> parametros)
        {
            var resultadoExportacion = new ResultadoOperacionDto();

            resultadoExportacion.Resultado = false;
            try{
                LogUtil.Info("Ejecutando Distribución EXCEL para documento: " + instancia.IdDocumentoInstancia + ", archivo: " + instancia.Titulo);
                resultadoExportacion = ExportadorDocumentoInstancia.ExportarDocumentoExcel(instancia, "es");
                if (resultadoExportacion.Resultado)
                {
                    if (resultadoExportacion.InformacionExtra != null)
                    {
                        var infoExtra = ((IDictionary <string, object>)resultadoExportacion.InformacionExtra);
                        if (infoExtra.ContainsKey("errores") && ((List <InformeErrorImportacion>)infoExtra["errores"]).Count > 0)
                        {
                            resultadoExportacion.Resultado = false;
                            resultadoExportacion.Mensaje   = "";
                            foreach (var informeError in (List <InformeErrorImportacion>)infoExtra["errores"])
                            {
                                resultadoExportacion.Mensaje = resultadoExportacion.Mensaje + informeError.Mensaje + " ";
                            }
                        }
                    }
                    ArchivoDocumentoInstancia archivo = new ArchivoDocumentoInstancia();
                    archivo.Archivo = (byte[])((IDictionary <string, object>)resultadoExportacion.InformacionExtra)["archivo"];
                    archivo.IdDocumentoInstancia = (long)instancia.IdDocumentoInstancia;
                    archivo.IdTipoArchivo        = TipoArchivoConstants.ArchivoXls;

                    ArchivoDocumentoInstanciaRepository.AgregaDistribucion(archivo);

                    resultadoExportacion.Resultado = true;
                }
            }
            catch (Exception ex)
            {
                resultadoExportacion.Resultado = false;
                resultadoExportacion.Mensaje   = "Ocurrió un error al escribir el archivo excel:" + ex.Message;
                resultadoExportacion.Excepcion = ex.StackTrace;
                LogUtil.Info("Falló Distribución EXCEL para documento: " + instancia.IdDocumentoInstancia + ", archivo: " + instancia.Titulo + ":" + ex.Message);
            }
            return(resultadoExportacion);
        }
コード例 #2
0
        public override void crearRoles(Viewer.Application.Dto.DocumentoInstanciaXbrlDto instancia)
        {
            IDictionary <String, IList <ConceptoReporteDTO> > roles = new Dictionary <String, IList <ConceptoReporteDTO> >();
            IList <ConceptoReporteDTO> conceptos = null;

            try
            {
                foreach (IndiceReporteDTO indice in reporteXBRLDTO.Indices)
                {
                    String id = indice.Rol;
                    conceptos = llenarRolNotas(obtenerConceptos(id), instancia);
                    roles.Add(id, conceptos);
                }
            }
            catch (Exception e)
            {
                LogUtil.Error(e);
            }

            reporteXBRLDTO.Roles = roles;
        }
コード例 #3
0
        public override ResultadoOperacionDto EjecutarDistribucion(Viewer.Application.Dto.DocumentoInstanciaXbrlDto instancia, IDictionary <string, object> parametros)
        {
            var resultadoExportacion = new ResultadoOperacionDto();

            resultadoExportacion.Resultado = false;
            try
            {
                LogUtil.Info("Ejecutando Distribución PDF para documento: " + instancia.IdDocumentoInstancia + ", archivo: " + instancia.Titulo);
                var plantilla = ObtenDefinicionPlantilla(instancia);
                var builder   = ReporteBuilderFactoryService.obtenerReporteBuilder(instancia, plantilla, "es");
                var exporter  = ExportadorDocumentoInstanciaFactoryService.ObtenerExportadorParaDocumento(instancia);
                builder.crearReporteXBRLDTO(instancia);
                var archivoBytes = exporter.exportarDocumentoAPDF(instancia, builder.ReporteXBRLDTO);

                if (archivoBytes != null)
                {
                    ArchivoDocumentoInstancia archivo = new ArchivoDocumentoInstancia();
                    archivo.Archivo = archivoBytes;
                    archivo.IdDocumentoInstancia = (long)instancia.IdDocumentoInstancia;
                    archivo.IdTipoArchivo        = TipoArchivoConstants.ArchivoPdf;

                    ArchivoDocumentoInstanciaRepository.AgregaDistribucion(archivo);
                    resultadoExportacion.Resultado = true;

                    //EscribirArchivo(archivoBytes, instancia.Titulo);
                }
            }
            catch (Exception ex)
            {
                resultadoExportacion.Resultado = false;
                resultadoExportacion.Mensaje   = "Ocurrió un error al escribir el archivo PDF:" + ex.Message;
                resultadoExportacion.Excepcion = ex.StackTrace;
                LogUtil.Info("Falló Distribución PDF para documento: " + instancia.IdDocumentoInstancia + ", archivo: " + instancia.Titulo + ":" + ex.Message);
                LogUtil.Error(ex);
            }
            return(resultadoExportacion);
        }
コード例 #4
0
        public override void obtenerValoresIniciales(Viewer.Application.Dto.DocumentoInstanciaXbrlDto instancia)
        {
            String nombreReporte = ReporteXBRLUtil.NOMBRE_REPORTE_EVENTO_RELEVANTE;

            String claveCotizacion = ReporteXBRLUtil.obtenerValorHecho("rel_ev_Ticker", instancia);
            String razonSocial     = ReporteXBRLUtil.obtenerValorHecho("rel_ev_BusinessName", instancia);
            String fechaReporte    = ReporteXBRLUtil.obtenerValorHecho("rel_ev_Date", instancia);
            String fechaCreacion   = DateUtil.ToFormatString(DateTime.Now, ReporteXBRLUtil.FORMATO_FECHA_CREACION);

            if (String.IsNullOrEmpty(claveCotizacion))
            {
                claveCotizacion = ReporteXBRLUtil.obtenerValorHecho("rel_news_Ticker", instancia);
            }
            if (String.IsNullOrEmpty(razonSocial))
            {
                razonSocial = ReporteXBRLUtil.obtenerValorHecho("rel_news_BusinessName", instancia);
            }
            if (String.IsNullOrEmpty(fechaReporte))
            {
                fechaReporte = ReporteXBRLUtil.obtenerValorHecho("rel_news_Date", instancia);
            }

            reporteXBRLDTO.ClaveCotizacion = claveCotizacion;
            reporteXBRLDTO.RazonSocial     = razonSocial;
            reporteXBRLDTO.FechaReporte    = fechaReporte;

            reporteXBRLDTO.FechaCreacion = fechaCreacion;

            if (claveCotizacion != null && fechaReporte != null)
            {
                nombreReporte = nombreReporte.
                                Replace(ReporteXBRLUtil.CLAVE_COTIZACION, claveCotizacion).
                                Replace(ReporteXBRLUtil.FECHA_CREACION, fechaCreacion).Replace(ReporteXBRLUtil.FECHA, fechaReporte);

                reporteXBRLDTO.NombreReporte = nombreReporte;
            }
        }
コード例 #5
0
 /// <summary>
 /// Construye el nombre del archivo (sin extensión) que se utiliza en las distribuciones:
 /// infoxbrl_{0}_{1} Donde:
 /// 0 = Identificador del documento de instancia
 /// 1 = Version del documento
 /// </summary>
 /// <param name="instancia"></param>
 /// <param name="parametros"></param>
 /// <returns></returns>
 protected String ObtenerNombreArchivoDistribucion(Viewer.Application.Dto.DocumentoInstanciaXbrlDto instancia, IDictionary <string, object> parametros)
 {
     return(String.Format("info_xbrl_{0}_{1}", instancia.IdDocumentoInstancia, instancia.Version));
 }
コード例 #6
0
 public abstract ResultadoOperacionDto EjecutarDistribucion(Viewer.Application.Dto.DocumentoInstanciaXbrlDto instancia, IDictionary <string, object> parametros);
        public override void exportarRolAWord(Aspose.Words.DocumentBuilder docBuilder, Viewer.Application.Dto.DocumentoInstanciaXbrlDto instancia, Dto.IndiceReporteDTO rolAExportar, Dto.ReporteXBRLDTO estructuraReporte)
        {
            docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Landscape;
            docBuilder.CurrentSection.PageSetup.PaperSize   = PaperSize.Legal;
            docBuilder.CurrentSection.PageSetup.LeftMargin  = 10;
            docBuilder.CurrentSection.PageSetup.RightMargin = 10;


            escribirEncabezado(docBuilder, instancia, estructuraReporte, true);


            imprimirTituloRol(docBuilder, rolAExportar);


            Table tablaDesglose = docBuilder.StartTable();

            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
            establecerFuenteTituloCampo(docBuilder);
            docBuilder.Font.Size = TamanioLetraReporteDesglose;

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

            var idioma = estructuraReporte.Lenguaje;

            ImprimirTitulosGrupoPasivo(ImportadorExportadorRol815100Bmv2014._elementosPrimariosBancarios, docBuilder, instancia, idioma);

            ImprimirGrupoTipoPasivo(ImportadorExportadorRol815100Bmv2014._miembrosTipoPasivo[0],
                                    ImportadorExportadorRol815100Bmv2014._elementosPrimariosBancarios, docBuilder, instancia, idioma, estructuraReporte);

            ImprimirGrupoTipoPasivo(ImportadorExportadorRol815100Bmv2014._miembrosTipoPasivo[1],
                                    ImportadorExportadorRol815100Bmv2014._elementosPrimariosBancarios, docBuilder, instancia, idioma, estructuraReporte);

            ImprimirTitulosGrupoPasivo(ImportadorExportadorRol815100Bmv2014._elementosPrimariosBursatiles, docBuilder, instancia, idioma);

            ImprimirGrupoTipoPasivo(ImportadorExportadorRol815100Bmv2014._miembrosTipoPasivo[2],
                                    ImportadorExportadorRol815100Bmv2014._elementosPrimariosBursatiles, docBuilder, instancia, idioma, estructuraReporte);

            ImprimirGrupoTipoPasivo(ImportadorExportadorRol815100Bmv2014._miembrosTipoPasivo[3],
                                    ImportadorExportadorRol815100Bmv2014._elementosPrimariosBursatiles, docBuilder, instancia, idioma, estructuraReporte);

            ImprimirGrupoTipoPasivo(ImportadorExportadorRol815100Bmv2014._miembrosTipoPasivo[4],
                                    ImportadorExportadorRol815100Bmv2014._elementosPrimariosBursatiles, docBuilder, instancia, idioma, estructuraReporte);

            ImprimirTitulosGrupoPasivo(ImportadorExportadorRol815100Bmv2014._elementosPrimariosOtros, docBuilder, instancia, idioma);

            ImprimirGrupoTipoPasivo(ImportadorExportadorRol815100Bmv2014._miembrosTipoPasivo[5],
                                    ImportadorExportadorRol815100Bmv2014._elementosPrimariosOtros, docBuilder, instancia, idioma, estructuraReporte);

            ImprimirGrupoTipoPasivo(ImportadorExportadorRol815100Bmv2014._miembrosTipoPasivo[6],
                                    ImportadorExportadorRol815100Bmv2014._elementosPrimariosOtros, docBuilder, instancia, idioma, estructuraReporte);

            ImprimirGrupoTipoPasivo(ImportadorExportadorRol815100Bmv2014._miembrosTipoPasivo[7],
                                    ImportadorExportadorRol815100Bmv2014._elementosPrimariosGranTotal, docBuilder, instancia, idioma, estructuraReporte);


            establecerBordesGrisesTabla(tablaDesglose);
            docBuilder.EndTable();
        }
        /// <summary>
        /// Imprime la sección correspondiente a los títulos de los elementos primarios enviados como parámetro, a 2 renglones
        /// </summary>
        /// <param name="p"></param>
        /// <param name="docBuilder"></param>
        /// <param name="instancia"></param>
        private void ImprimirTitulosGrupoPasivo(string[] elementosPrimarios, DocumentBuilder docBuilder, Viewer.Application.Dto.DocumentoInstanciaXbrlDto instancia, String idioma)
        {
            Color colorTitulo = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]);

            var primerElementoSubtabla = true;

            foreach (var idElemento in elementosPrimarios)
            {
                docBuilder.InsertCell();

                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                docBuilder.RowFormat.HeadingFormat   = true;

                docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                docBuilder.Font.Color = Color.White;

                docBuilder.CellFormat.VerticalMerge   = CellMerge.First;
                docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

                docBuilder.Write(ReporteXBRLUtil.obtenerEtiquetaConcepto(idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT, idElemento, instancia));

                if (idElemento == ImportadorExportadorRol815100Bmv2014._idConceptoSubtabla)
                {
                    //Subtabla va mezclada
                    if (primerElementoSubtabla)
                    {
                        docBuilder.CellFormat.HorizontalMerge = CellMerge.First;
                        docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                        primerElementoSubtabla = false;
                        docBuilder.Write(ReporteXBRLUtil.obtenerEtiquetaConcepto(idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT,
                                                                                 ImportadorExportadorRol815100Bmv2014._idDimensionIntervalo, instancia));
                    }
                    else
                    {
                        docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
                    }
                }
            }
            docBuilder.EndRow();

            var iMiembroSubtabla = 0;

            foreach (var idElemento in elementosPrimarios)
            {
                docBuilder.InsertCell();

                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                docBuilder.RowFormat.HeadingFormat   = true;

                docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                docBuilder.Font.Color = Color.White;

                docBuilder.CellFormat.VerticalMerge   = CellMerge.Previous;
                docBuilder.CellFormat.HorizontalMerge = CellMerge.None;



                if (idElemento == ImportadorExportadorRol815100Bmv2014._idConceptoSubtabla)
                {
                    //Subtabla va mezclada

                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

                    docBuilder.Write(ReporteXBRLUtil.obtenerEtiquetaConcepto(idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT,
                                                                             ImportadorExportadorRol815100Bmv2014._miembrosIntervaloDeTiempo[iMiembroSubtabla++], instancia));
                }
            }
            docBuilder.EndRow();
        }
        /// <summary>
        /// Imprime el contenido de un grupo de hechos de tipo pasivo, ya sea un crédito o un renglón total
        /// </summary>

        private void ImprimirGrupoTipoPasivo(string idTipoPasivo, string[] elementosPrimarios, DocumentBuilder docBuilder, Viewer.Application.Dto.DocumentoInstanciaXbrlDto instancia, String idioma, Dto.ReporteXBRLDTO estructuraReporte)
        {
            var hechosDeTipoPasivo = ObtenerHechosPorDimensionYMiembro(instancia, null, ImportadorExportadorRol815100Bmv2014._idDimensionTipoPasivo, idTipoPasivo);

            if (ImportadorExportadorRol815100Bmv2014._miembrosTipoPasivoTotales.Contains(idTipoPasivo))
            {
                docBuilder.InsertCell();
                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;

                docBuilder.RowFormat.HeadingFormat    = false;
                docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                docBuilder.CellFormat.VerticalMerge   = CellMerge.None;


                docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                docBuilder.Font.Color = Color.Black;
                docBuilder.Write(ReporteXBRLUtil.obtenerEtiquetaConcepto(idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT, idTipoPasivo, instancia));

                var iSubMiembro = 0;

                for (int iElemento = 1; iElemento < elementosPrimarios.Length; iElemento++)
                {
                    docBuilder.InsertCell();
                    docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;

                    docBuilder.RowFormat.HeadingFormat    = false;
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;


                    docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                    docBuilder.Font.Color = Color.Black;
                    if (ImportadorExportadorRol815100Bmv2014._elementosPrimariosTotal.Contains(elementosPrimarios[iElemento]))
                    {
                        var listaHechos = ObtenerHechosPorElementoPrimarioYSecuencia(instancia, hechosDeTipoPasivo, elementosPrimarios[iElemento], null);

                        if (elementosPrimarios[iElemento] == ImportadorExportadorRol815100Bmv2014._idConceptoSubtabla)
                        {
                            listaHechos = FiltrarHechosPorDimensionYMiembro(instancia, listaHechos, ImportadorExportadorRol815100Bmv2014._idDimensionIntervalo, ImportadorExportadorRol815100Bmv2014._miembrosIntervaloDeTiempo[iSubMiembro++]);
                        }


                        if (listaHechos != null && listaHechos.Count > 0)
                        {
                            if (!String.IsNullOrEmpty(listaHechos[0].Valor))
                            {
                                if (listaHechos[0].EsNumerico)
                                {
                                    var valorHecho = ReporteXBRLUtil.formatoDecimal(listaHechos[0].ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS);
                                    EscribirLinkNotaAlPie(docBuilder, listaHechos[0], estructuraReporte);
                                    docBuilder.Write(valorHecho);
                                }
                                else
                                {
                                    EscribirLinkNotaAlPie(docBuilder, listaHechos[0], estructuraReporte);
                                    docBuilder.Write(listaHechos[0].Valor);
                                }
                            }
                        }
                    }
                }
                docBuilder.EndRow();
            }
            else
            {
                var secuenciasEnHechos = OrganizarHechosPorSecuencia(instancia, hechosDeTipoPasivo);

                if (secuenciasEnHechos.Count > 0)
                {
                    foreach (var secuencia in secuenciasEnHechos.Keys)
                    {
                        int iMiembroSubtabla = 0;
                        foreach (var elementoPrimario in elementosPrimarios)
                        {
                            docBuilder.InsertCell();
                            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;

                            docBuilder.RowFormat.HeadingFormat    = false;
                            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;


                            docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                            docBuilder.Font.Color = Color.Black;


                            IList <HechoDto> listaHechos = null;

                            if (elementoPrimario.Equals(ImportadorExportadorRol815100Bmv2014._idConceptoSubtabla))
                            {
                                listaHechos = ObtenerHechosPorElementoPrimarioYSecuencia(instancia, secuenciasEnHechos[secuencia], elementoPrimario, null);
                                listaHechos = FiltrarHechosPorDimensionYMiembro(instancia, listaHechos, ImportadorExportadorRol815100Bmv2014._idDimensionIntervalo, ImportadorExportadorRol815100Bmv2014._miembrosIntervaloDeTiempo[iMiembroSubtabla++]);
                            }
                            else
                            {
                                listaHechos = ObtenerHechosPorElementoPrimarioYSecuencia(instancia, secuenciasEnHechos[secuencia], elementoPrimario, null);
                            }

                            if (listaHechos != null && listaHechos.Count > 0)
                            {
                                if (!String.IsNullOrEmpty(listaHechos[0].Valor))
                                {
                                    if (listaHechos[0].EsNumerico)
                                    {
                                        var valorHecho = ReporteXBRLUtil.formatoDecimal(listaHechos[0].ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS);
                                        EscribirLinkNotaAlPie(docBuilder, listaHechos[0], estructuraReporte);
                                        docBuilder.Write(valorHecho);
                                    }
                                    else
                                    {
                                        EscribirLinkNotaAlPie(docBuilder, listaHechos[0], estructuraReporte);
                                        docBuilder.Write(listaHechos[0].Valor);
                                    }
                                }
                            }
                        }
                        docBuilder.EndRow();
                    }
                }
            }
        }
コード例 #10
0
 public override Common.Dtos.ResultadoOperacionDto EjecutarDistribucion(Viewer.Application.Dto.DocumentoInstanciaXbrlDto instancia, IDictionary <string, object> parametros)
 {
     LogUtil.Info("Registrando hechos con archivo adjunto, del Documento:" + instancia.IdDocumentoInstancia + " Version :" + instancia.Version);
     return(DocumentoInstanciaService.RegistrarArchivosHechosDocumentoInstancia(instancia));
 }