public void ExportarDatosDeHojaExcel(NPOI.SS.UserModel.ISheet hojaAExportar, NPOI.SS.UserModel.ISheet hojaPlantilla, Dto.DocumentoInstanciaXbrlDto instancia, string rol, Model.IDefinicionPlantillaXbrl plantillaDocumento, String idioma) { if (instancia.HechosPorIdConcepto.ContainsKey(_idConceptoRegistroCartera)) { int renglonActual = _renglonInicioHechos; foreach (var idTupla in instancia.HechosPorIdConcepto[_idConceptoRegistroCartera]) { var tupla = instancia.HechosPorId[idTupla]; if (tupla.Hechos != null) { for (int iCol = _columnaInicioHechos; iCol <= _columnaFinHechos; iCol++) { var idConcepto = ExcelUtil.ObtenerValorCelda(hojaPlantilla, _renglonIdConceptos, iCol); var hecho = tupla.Hechos.FirstOrDefault(x => x == idConcepto); if (hecho != null) { ExcelUtil.AsignarValorCelda(hojaAExportar, renglonActual, iCol, instancia.HechosPorId[hecho].Valor, CellType.String, instancia.HechosPorId[hecho]); } } renglonActual++; } } } }
public void ExportarDatosDeHojaExcel(ISheet hojaAExportar, ISheet hojaPlantilla, DocumentoInstanciaXbrlDto instancia, string rol, IDefinicionPlantillaXbrl plantillaDocumento, String idioma) { var numRenglones = hojaPlantilla.LastRowNum; for (var iRenglon = 0; iRenglon <= numRenglones; iRenglon++) { var renglon = hojaPlantilla.GetRow(iRenglon); if (renglon != null) { var numCols = renglon.LastCellNum; for (var iCol = 0; iCol <= numCols; iCol++) { var valorHechoPlantilla = ExcelUtil.ObtenerValorCelda(hojaPlantilla, iRenglon, iCol); if (!String.IsNullOrEmpty(valorHechoPlantilla) && valorHechoPlantilla.StartsWith(PREFIJO_CELDA_HECHO_PLANTILLA) && valorHechoPlantilla.Length > PREFIJO_CELDA_HECHO_PLANTILLA.Length) { //Celda con valor de hecho plantilla var idHechoPlantilla = valorHechoPlantilla.Substring(PREFIJO_CELDA_HECHO_PLANTILLA.Length); var hechoInstancia = plantillaDocumento.BuscarHechoPlantillaEnHechosDocumentoInstancia(idHechoPlantilla); if (hechoInstancia != null) { var concepto = instancia.Taxonomia.ConceptosPorId[hechoInstancia.IdConcepto]; //Si existe hecho, asignar valor //Si la celda es de tipo boolean, transformar el valor de salida a si y no var valorFinal = hechoInstancia.Valor; if (concepto.TipoDatoXbrl.Contains(TiposDatoXBRL.BooleanItemType)) { if (!String.IsNullOrEmpty(valorFinal)) { if (CommonConstants.CADENAS_VERDADERAS.Contains(valorFinal.Trim().ToLower())) { valorFinal = CommonConstants.SI; } else { valorFinal = CommonConstants.NO; } } else { valorFinal = CommonConstants.NO; } } ExcelUtil.AsignarValorCelda(hojaAExportar, iRenglon, iCol, valorFinal, concepto.EsTipoDatoNumerico ? CellType.Numeric : CellType.String, hechoInstancia); } } } } } }
/// <summary> /// Obtiene y escribe el valor del primer hecho correspondiente al id de concepto enviado como parámetro /// </summary> /// <param name="instancia">Documento de instancia actualmente procesado</param> /// <param name="idConcepto">Concepto a escribir</param> private void EscribirValorPrimerHecho(DocumentoInstanciaXbrlDto instancia, string idConcepto, ISheet hojaAExportar, int renglonDestino, int columnaDestino) { if (instancia.HechosPorIdConcepto.ContainsKey(idConcepto) && instancia.HechosPorIdConcepto[idConcepto].Count > 0) { var hecho = instancia.HechosPorId[instancia.HechosPorIdConcepto[idConcepto][0]]; if (hecho != null) { ExcelUtil.AsignarValorCelda(hojaAExportar, renglonDestino, columnaDestino, hecho.Valor, instancia.Taxonomia.ConceptosPorId[idConcepto].EsTipoDatoNumerico ? CellType.Numeric : CellType.String , hecho); } } }
public void ExportarDatosDeHojaExcel(ISheet hojaAExportar, ISheet hojaPlantilla, DocumentoInstanciaXbrlDto instancia, string rol, IDefinicionPlantillaXbrl plantillaDocumento, String idioma) { int numeroRenglonActual = RENGLON_INICIO_DATOS; EscribirValorPrimerHecho(instancia, "rel_ev_Ticker", hojaAExportar, numeroRenglonActual++, COLUMNA_DATOS); EscribirValorPrimerHecho(instancia, "rel_ev_Date", hojaAExportar, numeroRenglonActual++, COLUMNA_DATOS); EscribirValorPrimerHecho(instancia, "rel_ev_BusinessName", hojaAExportar, numeroRenglonActual++, COLUMNA_DATOS); EscribirValorPrimerHecho(instancia, "rel_ev_Place", hojaAExportar, numeroRenglonActual++, COLUMNA_DATOS); EscribirValorPrimerHecho(instancia, "rel_ev_Subject", hojaAExportar, numeroRenglonActual++, COLUMNA_DATOS); if (!instancia.EspacioNombresPrincipal.Contains("fondos")) { EscribirValorPrimerHecho(instancia, "rel_ev_ForeignMarket", hojaAExportar, numeroRenglonActual++, COLUMNA_DATOS); } var descTipoEvento = ""; 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(idioma, null, contexto.ValoresDimension[0].IdItemMiembro, instancia); } } } ExcelUtil.AsignarValorCelda(hojaAExportar, numeroRenglonActual++, COLUMNA_DATOS, descTipoEvento, CellType.String, null); EscribirValorPrimerHecho(instancia, "rel_ev_RelevantEventContent", hojaAExportar, numeroRenglonActual++, COLUMNA_DATOS); }
public void ExportarDatosDeHojaExcel(ISheet hojaAExportar, ISheet hojaPlantilla, DocumentoInstanciaXbrlDto instancia, string rol, Model.IDefinicionPlantillaXbrl plantillaDocumento, String idioma) { DateTime fechaInicio = DateTime.MinValue; DateTime fechaFin = DateTime.MinValue; //Trimestre actual if (XmlUtil.ParsearUnionDateTime(plantillaDocumento.ObtenerVariablePorId("fecha_2015_09_30"), out fechaFin) && XmlUtil.ParsearUnionDateTime(plantillaDocumento.ObtenerVariablePorId("fecha_2015_01_01"), out fechaInicio)) { var todasLasMarcas = new DimensionInfoDto() { Explicita = false, IdDimension = _idDimensionMarcas, QNameDimension = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[_idDimensionMarcas]), ElementoMiembroTipificado = String.Format(_templateTypedMemeberMarcas, _todasLasMarcas) }; var todosLosProductos = new DimensionInfoDto() { Explicita = false, IdDimension = _idDimensionProductos, QNameDimension = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[_idDimensionProductos]), ElementoMiembroTipificado = String.Format(_templateTypedMemeberProducto, _todosLosProductos) }; var combinacionesMarcaProducto = ObtenerCombinacionesDimensionesMarcaProducto(instancia, fechaInicio, fechaFin); if (combinacionesMarcaProducto.Count > 0) { hojaAExportar.ShiftRows(_renglonInicioHechos, hojaAExportar.LastRowNum, combinacionesMarcaProducto.Count); } var iRenglon = _renglonInicioHechos; foreach (var combinacion in combinacionesMarcaProducto) { var renglon = hojaAExportar.CreateRow(iRenglon); ExcelUtil.AsignarValorCelda(hojaAExportar, iRenglon, _columnaMarca, ObtenerNombreMarcaOProducto(combinacion[0]), CellType.String, null); ExcelUtil.AsignarValorCelda(hojaAExportar, iRenglon, _columnaProducto, ObtenerNombreMarcaOProducto(combinacion[1]), CellType.String, null); var dimensionTipoIngreso = new DimensionInfoDto() { Explicita = true, }; var listaDimensiones = new List <DimensionInfoDto> { combinacion[0], combinacion[1], dimensionTipoIngreso }; for (var iCol = _columnaInicioHechos; iCol <= _columnaFinHechos; iCol++) { dimensionTipoIngreso.IdDimension = _idDimensionTipoIngresos; dimensionTipoIngreso.QNameDimension = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[_idDimensionTipoIngresos]); dimensionTipoIngreso.IdItemMiembro = ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonDimensionItemTipoIngreso, iCol); dimensionTipoIngreso.QNameItemMiembro = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonDimensionItemTipoIngreso, iCol)]); var hecho = instancia.BuscarHechos(_idElementoPrimarioIngresos, null, null, fechaInicio, fechaFin, listaDimensiones); if (hecho != null && hecho.Count > 0) { ExcelUtil.AsignarValorCelda(hojaAExportar, iRenglon, iCol, hecho[0].Valor, CellType.Numeric, hecho[0]); } } iRenglon++; } var numRenglones = hojaAExportar.LastRowNum; for (; iRenglon <= numRenglones; iRenglon++) { if (_tituloRenglonTotal.Equals(ExcelUtil.ObtenerValorCelda(hojaAExportar, iRenglon, _columnaProducto))) { for (var iCol = _columnaInicioHechos; iCol <= _columnaFinHechos; iCol++) { var tipoIngreso = new DimensionInfoDto() { Explicita = true, IdDimension = _idDimensionTipoIngresos, QNameDimension = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[_idDimensionTipoIngresos]), IdItemMiembro = ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonDimensionItemTipoIngreso, iCol), QNameItemMiembro = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonDimensionItemTipoIngreso, iCol)]) }; var hecho = instancia.BuscarHechos(_idElementoPrimarioIngresos, null, null, fechaInicio, fechaFin, new List <DimensionInfoDto>() { todasLasMarcas, todosLosProductos, tipoIngreso }); if (hecho != null && hecho.Count > 0) { ExcelUtil.AsignarValorCelda(hojaAExportar, iRenglon, iCol, hecho[0].Valor, CellType.Numeric, hecho[0]); } } break; } } } }
public void ExportarDatosDeHojaExcel(ISheet hojaAExportar, ISheet hojaPlantilla, DocumentoInstanciaXbrlDto instancia, string rol, Model.IDefinicionPlantillaXbrl plantillaDocumento, String idioma) { var numRenglones = hojaPlantilla.LastRowNum; for (var iRenglon = _renglonInicioHechos; iRenglon <= numRenglones; iRenglon++) { var idElementoPrimario = ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, iRenglon, _columnaIdConcepto); if (idElementoPrimario != null && instancia.Taxonomia.ConceptosPorId.ContainsKey(idElementoPrimario)) { var concepto = instancia.Taxonomia.ConceptosPorId[idElementoPrimario]; var EsAbstracto = concepto.EsAbstracto != null ? concepto.EsAbstracto.Value : false; if (!EsAbstracto || (concepto.EsMiembroDimension != null && concepto.EsMiembroDimension.Value)) { var idItemAjustes = _idItemMiembroSenialadoActualmenteAjustes; //Si el concepto es un miembro de dimension, entonces se expresa el capital inicial para ese miembro if (concepto.EsMiembroDimension != null && concepto.EsMiembroDimension.Value) { //Cambiar el concepto a capital contable y colocar el concepto a describir como miembro de la dimensión ajustes idItemAjustes = concepto.Id; concepto = instancia.Taxonomia.ConceptosPorId[_elementosPrimarios[0]]; } var numColumnas = hojaPlantilla.GetRow(iRenglon).LastCellNum; for (int iCol = _columnaInicioHechos; iCol <= numColumnas; iCol++) { var valorDimensionAjustes = new DimensionInfoDto() { IdDimension = _idDimensionAjustes, IdItemMiembro = idItemAjustes, Explicita = true }; var valorDimensionComponentesCapital = new DimensionInfoDto() { IdDimension = ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonDimensionComponentesCapital, _columnaInicioHechos), IdItemMiembro = ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonMiembroComponentesCapital, iCol), Explicita = true }; if (!String.IsNullOrEmpty(valorDimensionAjustes.IdDimension) && !String.IsNullOrEmpty(valorDimensionAjustes.IdItemMiembro) && !String.IsNullOrEmpty(valorDimensionComponentesCapital.IdDimension) && !String.IsNullOrEmpty(valorDimensionComponentesCapital.IdItemMiembro)) { DateTime fechaInicio = DateTime.MinValue; DateTime fechaFin = DateTime.MinValue; var variableFechaFin = hojaPlantilla.SheetName.Contains("Actual") ? "fecha_2015_09_30" : "fecha_2014_09_30"; var variableFechaInicio = hojaPlantilla.SheetName.Contains("Actual") ? "fecha_2015_01_01" : "fecha_2014_01_01"; if (XmlUtil.ParsearUnionDateTime(plantillaDocumento.ObtenerVariablePorId(variableFechaFin), out fechaFin) && XmlUtil.ParsearUnionDateTime(plantillaDocumento.ObtenerVariablePorId(variableFechaInicio), out fechaInicio)) { //Si es capital contable al inicio se envía de fecha de fin = fecha de inicio - 1 día //Si es capital contable al final se envía fecha de fin = fecha de fin if (iRenglon <= _renglonFinalAjustesRetrospectivos) { fechaFin = fechaInicio.AddDays(-1); } var listaDimensiones = new List <DimensionInfoDto>(); if (instancia.Taxonomia.DimensionDefaults.ContainsKey(valorDimensionAjustes.IdDimension) && !valorDimensionAjustes.IdItemMiembro.Equals(instancia.Taxonomia.DimensionDefaults[valorDimensionAjustes.IdDimension])) { listaDimensiones.Add(valorDimensionAjustes); } if (instancia.Taxonomia.DimensionDefaults.ContainsKey(valorDimensionComponentesCapital.IdDimension) && !valorDimensionComponentesCapital.IdItemMiembro.Equals(instancia.Taxonomia.DimensionDefaults[valorDimensionComponentesCapital.IdDimension])) { listaDimensiones.Add(valorDimensionComponentesCapital); } var hechoDto = instancia.BuscarHechos(concepto.Id, null, null, fechaInicio, fechaFin, listaDimensiones); if (hechoDto != null && hechoDto.Count > 0) { ExcelUtil.AsignarValorCelda(hojaAExportar, iRenglon, iCol, hechoDto[0].Valor, concepto.EsTipoDatoNumerico? CellType.Numeric:CellType.String , hechoDto[0]); } } } } } } } }
/// <summary> /// Inserta los valores a exportar de un grupo de hechos relacionados a un miembro de la dimensión de tipo de pasivo /// En caso de que sea alguno de los miembros que totalizan entonces no se insertan renglones /// </summary> /// <param name="hojaAExportar"></param> /// <param name="renglonTipoPasivo"></param> /// <param name="tipoPasivoActual"></param> /// <param name="instancia"></param> /// <param name="plantillaDocumento"></param> private void ExportarGrupoTipoPasivo(NPOI.SS.UserModel.ISheet hojaAExportar, int renglonTipoPasivo, string tipoPasivoActual, DocumentoInstanciaXbrlDto instancia, IDefinicionPlantillaXbrl plantillaDocumento) { var hechosDeTipoPasivo = ObtenerHechosPorDimensionYMiembro(instancia, plantillaDocumento, _idDimensionTipoPasivo, tipoPasivoActual); int iCol = _columnaInicioDatos; int iRenglon = renglonTipoPasivo; string[] listaPrimarios = null; if (_miembrosBancarios.Contains(tipoPasivoActual)) { listaPrimarios = _elementosPrimariosBancarios; } if (_miembrosBursatiles.Contains(tipoPasivoActual)) { listaPrimarios = _elementosPrimariosBursatiles; } if (_miembrosOtros.Contains(tipoPasivoActual)) { listaPrimarios = _elementosPrimariosOtros; } if (_idItemMiembroGranTotal.Equals(tipoPasivoActual)) { listaPrimarios = _elementosPrimariosGranTotal; } //aplica para renglón primarios if (_miembrosTipoPasivoTotales.Contains(tipoPasivoActual)) { int iMiembroSubtabla = 0; foreach (var elementoPrimario in listaPrimarios) { if (_elementosPrimariosTotal.Contains(elementoPrimario)) { IList <HechoDto> listaHechos = null; if (elementoPrimario.Equals(_idConceptoSubtabla)) { listaHechos = ObtenerHechosPorElementoPrimarioYSecuencia(instancia, hechosDeTipoPasivo, elementoPrimario, null); listaHechos = FiltrarHechosPorDimensionYMiembro(instancia, listaHechos, _idDimensionIntervalo, _miembrosIntervaloDeTiempo[iMiembroSubtabla++]); } else { listaHechos = ObtenerHechosPorElementoPrimarioYSecuencia(instancia, hechosDeTipoPasivo, elementoPrimario, null); } if (listaHechos.Count > 0) { ExcelUtil.AsignarValorCelda(hojaAExportar, renglonTipoPasivo, iCol, listaHechos[0].Valor, CellType.Numeric, null); } } iCol++; } } else { //Organizar por secuencia var secuenciasEnHechos = OrganizarHechosPorSecuencia(instancia, hechosDeTipoPasivo); if (secuenciasEnHechos.Count > 0) { hojaAExportar.ShiftRows(iRenglon + 1, hojaAExportar.LastRowNum, secuenciasEnHechos.Count); iRenglon++; foreach (var secuencia in secuenciasEnHechos.Keys) { var renglon = hojaAExportar.CreateRow(iRenglon); iCol = _columnaInicioDatos; int iMiembroSubtabla = 0; foreach (var elementoPrimario in listaPrimarios) { IList <HechoDto> listaHechos = null; if (elementoPrimario.Equals(_idConceptoSubtabla)) { listaHechos = ObtenerHechosPorElementoPrimarioYSecuencia(instancia, secuenciasEnHechos[secuencia], elementoPrimario, null); listaHechos = FiltrarHechosPorDimensionYMiembro(instancia, listaHechos, _idDimensionIntervalo, _miembrosIntervaloDeTiempo[iMiembroSubtabla++]); } else { listaHechos = ObtenerHechosPorElementoPrimarioYSecuencia(instancia, secuenciasEnHechos[secuencia], elementoPrimario, null); } if (listaHechos.Count > 0) { var cellType = CellType.String; if (listaHechos[0].EsNumerico) { cellType = CellType.Numeric; } ExcelUtil.AsignarValorCelda(hojaAExportar, iRenglon, iCol, listaHechos[0].Valor, cellType, null); } iCol++; } iRenglon++; } } } }