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); }
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; }
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); }
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; } }
/// <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)); }
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(); } } } }
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)); }