/// <summary> /// Genera nombre legible de contexto /// </summary> /// <param name="ctxNuevo">Contexto origen</param> /// <returns>Nombre propuesto</returns> private static string ProponerNombreContexto(ContextoDto ctxNuevo, DocumentoInstanciaXbrlDto instancia) { StringBuilder sb = new StringBuilder(); sb.Append("ctx"); //tipo de periodo - fechas if (ctxNuevo.Periodo.Tipo == PeriodoDto.ParaSiempre) { sb.Append("_porSiempre"); } else if (ctxNuevo.Periodo.Tipo == PeriodoDto.Duracion) { sb.Append("_" + XmlUtil.ToUnionDateTimeString(ctxNuevo.Periodo.FechaInicio) + "_" + XmlUtil.ToUnionDateTimeString(ctxNuevo.Periodo.FechaFin)); } else { sb.Append("_" + XmlUtil.ToUnionDateTimeString(ctxNuevo.Periodo.FechaInstante)); } //Dimensiones var dimTotales = new List <DimensionInfoDto>(); if (ctxNuevo.ValoresDimension != null) { dimTotales.AddRange(ctxNuevo.ValoresDimension); } if (ctxNuevo.Entidad.ValoresDimension != null) { dimTotales.AddRange(ctxNuevo.Entidad.ValoresDimension); } foreach (var dimension in dimTotales) { if (dimension.Explicita) { sb.Append("_" + instancia.Taxonomia.ConceptosPorId[dimension.IdItemMiembro].Nombre); } else { if (String.IsNullOrEmpty(dimension.ElementoMiembroTipificado)) { sb.Append("_" + instancia.Taxonomia.ConceptosPorId[dimension.IdDimension].Nombre); } else { sb.Append("_" + ReporteXBRLUtil.eliminaEtiquetas(dimension.ElementoMiembroTipificado)); } } } return(sb.ToString()); }
private static String obtenerNombreMarcaProducto(String miembroTipificado) { return(ReporteXBRLUtil.eliminaEtiquetas(miembroTipificado)); }
public static IList <DesgloseDeCreditosReporteDto> generarContenidoDeReporte(DocumentoInstanciaXbrlDto documentoInstancia, ReporteXBRLDTO reporteXBRLDTO, int ContadorNotasAlPie, out int outContadorNotasAlPie) { IList <DesgloseDeCreditosReporteDto> contenido = new List <DesgloseDeCreditosReporteDto>(); var idioma = reporteXBRLDTO.Lenguaje; contadorTMP = ContadorNotasAlPie; String[] estructuraDelReporte = new String[] { "ifrs_mx-cor_20141205_BancariosSinopsis", "ifrs_mx-cor_20141205_ComercioExteriorBancarios", "ifrs_mx-cor_20141205_ConGarantiaBancarios", "ifrs_mx-cor_20141205_BancaComercial", "ifrs_mx-cor_20141205_OtrosBancarios", "ifrs_mx-cor_20141205_TotalBancarios", "ifrs_mx-cor_20141205_BursatilesYColocacionesPrivadasSinopsis", "ifrs_mx-cor_20141205_BursatilesListadasEnBolsaQuirografarios", "ifrs_mx-cor_20141205_BursatilesListadasEnBolsaConGarantia", "ifrs_mx-cor_20141205_ColocacionesPrivadasQuirografarios", "ifrs_mx-cor_20141205_ColocacionesPrivadasConGarantia", "ifrs_mx-cor_20141205_TotalBursatilesListadasEnBolsaYColocacionesPrivadas", "ifrs_mx-cor_20141205_OtrosPasivosCirculantesYNoCirculantesConCostoSinopsis", "ifrs_mx-cor_20141205_OtrosPasivosCirculantesYNoCirculantesConCosto", "ifrs_mx-cor_20141205_TotalOtrosPasivosCirculantesYNoCirculantesConCosto", "ifrs_mx-cor_20141205_ProveedoresSinopsis", "ifrs_mx-cor_20141205_Proveedores", "ifrs_mx-cor_20141205_TotalProveedores", "ifrs_mx-cor_20141205_OtrosPasivosCirculantesYNoCirculantesSinCostoSinopsis", "ifrs_mx-cor_20141205_OtrosPasivosCirculantesYNoCirculantesSinCosto", "ifrs_mx-cor_20141205_TotalOtrosPasivosCirculantesYNoCirculantesSinCosto", "ifrs_mx-cor_20141205_TotalDeCreditos" }; List <HechoDto> hechos = new List <HechoDto>(); List <String> idsHechos = new List <String>(); IList <String> idHechosPorConcepto = null; foreach (String idConcepto in estructuraDelReporte) { if (!idConcepto.EndsWith("Sinopsis")) { if (documentoInstancia.HechosPorIdConcepto.ContainsKey(idConcepto)) { idHechosPorConcepto = documentoInstancia.HechosPorIdConcepto[idConcepto]; idsHechos.AddRange(idHechosPorConcepto); } } } if (documentoInstancia.HechosPorIdConcepto.ContainsKey("ifrs_mx-cor_20141205_InstitucionExtranjeraSiNo")) { idHechosPorConcepto = documentoInstancia.HechosPorIdConcepto["ifrs_mx-cor_20141205_InstitucionExtranjeraSiNo"]; idsHechos.AddRange(idHechosPorConcepto); } if (documentoInstancia.HechosPorIdConcepto.ContainsKey("ifrs_mx-cor_20141205_FechaDeFirmaContrato")) { idHechosPorConcepto = documentoInstancia.HechosPorIdConcepto["ifrs_mx-cor_20141205_FechaDeFirmaContrato"]; idsHechos.AddRange(idHechosPorConcepto); } if (documentoInstancia.HechosPorIdConcepto.ContainsKey("ifrs_mx-cor_20141205_FechaDeVencimiento")) { idHechosPorConcepto = documentoInstancia.HechosPorIdConcepto["ifrs_mx-cor_20141205_FechaDeVencimiento"]; idsHechos.AddRange(idHechosPorConcepto); } if (documentoInstancia.HechosPorIdConcepto.ContainsKey("ifrs_mx-cor_20141205_TasaDeInteresYOSobretasa")) { idHechosPorConcepto = documentoInstancia.HechosPorIdConcepto["ifrs_mx-cor_20141205_TasaDeInteresYOSobretasa"]; idsHechos.AddRange(idHechosPorConcepto); } IDictionary <String, List <String> > institucionesPorConcepto = new Dictionary <String, List <String> >(); IDictionary <String, IDictionary <String, DesgloseDeCreditosReporteDto> > detalleDtoPorConcepto = new Dictionary <String, IDictionary <String, DesgloseDeCreditosReporteDto> >(); foreach (String idHecho in idsHechos) { if (!documentoInstancia.HechosPorId.ContainsKey(idHecho)) { LogUtil.Error("Se solicitia un hecho que no existe en el documento {idHecho:[" + idHecho + "]}"); continue; } var hecho = documentoInstancia.HechosPorId[idHecho]; if (!documentoInstancia.ContextosPorId.ContainsKey(hecho.IdContexto)) { LogUtil.Error("No existe el contexto definido para el hecho {idHecho:[" + idHecho + "], idContexto:[" + hecho.IdContexto + "]}"); continue; } var contexto = documentoInstancia.ContextosPorId[hecho.IdContexto]; IDictionary <String, DesgloseDeCreditosReporteDto> detalleDtoPorInstitucion = null; if (!detalleDtoPorConcepto.ContainsKey(hecho.IdConcepto)) { detalleDtoPorInstitucion = new Dictionary <String, DesgloseDeCreditosReporteDto>(); detalleDtoPorConcepto.Add(hecho.IdConcepto, detalleDtoPorInstitucion); } else { detalleDtoPorInstitucion = detalleDtoPorConcepto[hecho.IdConcepto]; } hechos.Add(hecho); String idMiembroEjeDenominacion = ""; String idMiembroEjeIntervaloTiempo = ""; String miembroTipificado = ""; foreach (DimensionInfoDto dimensionInfo in contexto.ValoresDimension) { if (dimensionInfo.IdDimension.Equals("ifrs_mx-cor_20141205_InstitucionEje")) { miembroTipificado = dimensionInfo.ElementoMiembroTipificado; if (!detalleDtoPorInstitucion.ContainsKey(miembroTipificado)) { DesgloseDeCreditosReporteDto detalleInstitucionDto = new DesgloseDeCreditosReporteDto(); detalleInstitucionDto.Titulo = ReporteXBRLUtil.eliminaEtiquetas(miembroTipificado); detalleDtoPorInstitucion.Add(miembroTipificado, detalleInstitucionDto); } if (!institucionesPorConcepto.ContainsKey(miembroTipificado)) { List <String> idsConceptos = new List <String>(); idsConceptos.Add(hecho.IdConcepto); institucionesPorConcepto.Add(miembroTipificado, idsConceptos); } else { if (!institucionesPorConcepto[miembroTipificado].Contains(hecho.IdConcepto)) { institucionesPorConcepto[miembroTipificado].Add(hecho.IdConcepto); } } } } foreach (DimensionInfoDto dimensionInfo in contexto.ValoresDimension) { if (dimensionInfo.Explicita) { if (dimensionInfo.IdDimension.Equals("ifrs_mx-cor_20141205_DenominacionEje")) { idMiembroEjeDenominacion = dimensionInfo.IdItemMiembro; } else if (dimensionInfo.IdDimension.Equals("ifrs_mx-cor_20141205_IntervaloDeTiempoEje")) { idMiembroEjeIntervaloTiempo = dimensionInfo.IdItemMiembro; } } } if (hecho.IdConcepto.Equals("ifrs_mx-cor_20141205_InstitucionExtranjeraSiNo")) { if (idMiembroEjeDenominacion.Equals("ifrs_mx-cor_20141205_TotalMonedasMiembro") && idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_TotalIntervalosMiembro")) { if (institucionesPorConcepto.ContainsKey(miembroTipificado)) { foreach (String idConcepto in institucionesPorConcepto[miembroTipificado]) { var intitucionExtranejraAux = CommonConstants.CADENAS_VERDADERAS.Contains(hecho.Valor.Trim().ToLower()); detalleDtoPorConcepto[idConcepto][miembroTipificado].InstitucionExtranjera = new HechoReporteDTO(); detalleDtoPorConcepto[idConcepto][miembroTipificado].InstitucionExtranjera.Valor = intitucionExtranejraAux.ToString().ToLower(); obtenerNotasAlPie(hecho, detalleDtoPorConcepto[idConcepto][miembroTipificado].InstitucionExtranjera, reporteXBRLDTO); } } } } else if (hecho.IdConcepto.Equals("ifrs_mx-cor_20141205_FechaDeFirmaContrato")) { if (idMiembroEjeDenominacion.Equals("ifrs_mx-cor_20141205_TotalMonedasMiembro") && idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_TotalIntervalosMiembro")) { if (institucionesPorConcepto.ContainsKey(miembroTipificado)) { foreach (String idConcepto in institucionesPorConcepto[miembroTipificado]) { detalleDtoPorConcepto[idConcepto][miembroTipificado].FechaFirmaContrato = new HechoReporteDTO(); detalleDtoPorConcepto[idConcepto][miembroTipificado].FechaFirmaContrato.Valor = hecho.Valor; obtenerNotasAlPie(hecho, detalleDtoPorConcepto[idConcepto][miembroTipificado].FechaFirmaContrato, reporteXBRLDTO); } } } } else if (hecho.IdConcepto.Equals("ifrs_mx-cor_20141205_FechaDeVencimiento")) { if (idMiembroEjeDenominacion.Equals("ifrs_mx-cor_20141205_TotalMonedasMiembro") && idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_TotalIntervalosMiembro")) { if (institucionesPorConcepto.ContainsKey(miembroTipificado)) { foreach (String idConcepto in institucionesPorConcepto[miembroTipificado]) { detalleDtoPorConcepto[idConcepto][miembroTipificado].FechaVencimiento = new HechoReporteDTO(); detalleDtoPorConcepto[idConcepto][miembroTipificado].FechaVencimiento.Valor = hecho.Valor; obtenerNotasAlPie(hecho, detalleDtoPorConcepto[idConcepto][miembroTipificado].FechaVencimiento, reporteXBRLDTO); } } } } else if (hecho.IdConcepto.Equals("ifrs_mx-cor_20141205_TasaDeInteresYOSobretasa")) { if (idMiembroEjeDenominacion.Equals("ifrs_mx-cor_20141205_TotalMonedasMiembro") && idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_TotalIntervalosMiembro")) { if (institucionesPorConcepto.ContainsKey(miembroTipificado)) { foreach (String idConcepto in institucionesPorConcepto[miembroTipificado]) { detalleDtoPorConcepto[idConcepto][miembroTipificado].TasaInteres = new HechoReporteDTO(); detalleDtoPorConcepto[idConcepto][miembroTipificado].TasaInteres.Valor = hecho.Valor; obtenerNotasAlPie(hecho, detalleDtoPorConcepto[idConcepto][miembroTipificado].TasaInteres, reporteXBRLDTO); } } } } else { if (detalleDtoPorConcepto.ContainsKey(hecho.IdConcepto) && detalleDtoPorConcepto[hecho.IdConcepto].ContainsKey(miembroTipificado)) { var elementoTipificadoPorConcepto = detalleDtoPorConcepto[hecho.IdConcepto][miembroTipificado]; if (idMiembroEjeDenominacion.Equals("ifrs_mx-cor_20141205_MonedaNacionalMiembro")) { if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_AnoActualMiembro")) { elementoTipificadoPorConcepto.MonedaNacionalAnioActual = new HechoReporteDTO(); elementoTipificadoPorConcepto.MonedaNacionalAnioActual.ValorNumerico = hecho.ValorNumerico; elementoTipificadoPorConcepto.MonedaNacionalAnioActual.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS); obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaNacionalAnioActual, reporteXBRLDTO); } else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta1AnoMiembro")) { elementoTipificadoPorConcepto.MonedaNacionalUnAnio = new HechoReporteDTO(); elementoTipificadoPorConcepto.MonedaNacionalUnAnio.ValorNumerico = hecho.ValorNumerico; elementoTipificadoPorConcepto.MonedaNacionalUnAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS); obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaNacionalUnAnio, reporteXBRLDTO); } else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta2AnosMiembro")) { elementoTipificadoPorConcepto.MonedaNacionalDosAnio = new HechoReporteDTO(); elementoTipificadoPorConcepto.MonedaNacionalDosAnio.ValorNumerico = hecho.ValorNumerico; elementoTipificadoPorConcepto.MonedaNacionalDosAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS); obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaNacionalDosAnio, reporteXBRLDTO); } else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta3AnosMiembro")) { elementoTipificadoPorConcepto.MonedaNacionalTresAnio = new HechoReporteDTO(); elementoTipificadoPorConcepto.MonedaNacionalTresAnio.ValorNumerico = hecho.ValorNumerico; elementoTipificadoPorConcepto.MonedaNacionalTresAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS); obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaNacionalTresAnio, reporteXBRLDTO); } else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta4AnosMiembro")) { elementoTipificadoPorConcepto.MonedaNacionalCuatroAnio = new HechoReporteDTO(); elementoTipificadoPorConcepto.MonedaNacionalCuatroAnio.ValorNumerico = hecho.ValorNumerico; elementoTipificadoPorConcepto.MonedaNacionalCuatroAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS); obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaNacionalCuatroAnio, reporteXBRLDTO); } else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta5AnosOMasMiembro")) { elementoTipificadoPorConcepto.MonedaNacionalCincoMasAnio = new HechoReporteDTO(); elementoTipificadoPorConcepto.MonedaNacionalCincoMasAnio.ValorNumerico = hecho.ValorNumerico; elementoTipificadoPorConcepto.MonedaNacionalCincoMasAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS); obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaNacionalCincoMasAnio, reporteXBRLDTO); } } else if (idMiembroEjeDenominacion.Equals("ifrs_mx-cor_20141205_MonedaExtranjeraMiembro")) { if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_AnoActualMiembro")) { elementoTipificadoPorConcepto.MonedaExtranjeraAnioActual = new HechoReporteDTO(); elementoTipificadoPorConcepto.MonedaExtranjeraAnioActual.ValorNumerico = hecho.ValorNumerico; elementoTipificadoPorConcepto.MonedaExtranjeraAnioActual.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS); obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaExtranjeraAnioActual, reporteXBRLDTO); } else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta1AnoMiembro")) { elementoTipificadoPorConcepto.MonedaExtranjeraUnAnio = new HechoReporteDTO(); elementoTipificadoPorConcepto.MonedaExtranjeraUnAnio.ValorNumerico = hecho.ValorNumerico; elementoTipificadoPorConcepto.MonedaExtranjeraUnAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS); obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaExtranjeraUnAnio, reporteXBRLDTO); } else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta2AnosMiembro")) { elementoTipificadoPorConcepto.MonedaExtranjeraDosAnio = new HechoReporteDTO(); elementoTipificadoPorConcepto.MonedaExtranjeraDosAnio.ValorNumerico = hecho.ValorNumerico; elementoTipificadoPorConcepto.MonedaExtranjeraDosAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS); obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaExtranjeraDosAnio, reporteXBRLDTO); } else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta3AnosMiembro")) { elementoTipificadoPorConcepto.MonedaExtranjeraTresAnio = new HechoReporteDTO(); elementoTipificadoPorConcepto.MonedaExtranjeraTresAnio.ValorNumerico = hecho.ValorNumerico; elementoTipificadoPorConcepto.MonedaExtranjeraTresAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS); obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaExtranjeraTresAnio, reporteXBRLDTO); } else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta4AnosMiembro")) { elementoTipificadoPorConcepto.MonedaExtranjeraCuatroAnio = new HechoReporteDTO(); elementoTipificadoPorConcepto.MonedaExtranjeraCuatroAnio.ValorNumerico = hecho.ValorNumerico; elementoTipificadoPorConcepto.MonedaExtranjeraCuatroAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS); obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaExtranjeraCuatroAnio, reporteXBRLDTO); } else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta5AnosOMasMiembro")) { elementoTipificadoPorConcepto.MonedaExtranjeraCincoMasAnio = new HechoReporteDTO(); elementoTipificadoPorConcepto.MonedaExtranjeraCincoMasAnio.ValorNumerico = hecho.ValorNumerico; elementoTipificadoPorConcepto.MonedaExtranjeraCincoMasAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS); obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaExtranjeraCincoMasAnio, reporteXBRLDTO); } } } else { LogUtil.Error("No se encontro el elemento detalleDtoPorConcepto: {IdConcepto:[" + hecho.IdConcepto + "], miembroTipificado:[" + miembroTipificado + "]}"); } } } foreach (String idConcepto in estructuraDelReporte) { if (idConcepto.EndsWith("Sinopsis")) { DesgloseDeCreditosReporteDto detalleDto = new DesgloseDeCreditosReporteDto(); detalleDto.Titulo = DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(documentoInstancia.Taxonomia, idConcepto, idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT); detalleDto.TituloAbstracto = true; contenido.Add(detalleDto); } else { DesgloseDeCreditosReporteDto detalleDto = new DesgloseDeCreditosReporteDto(); detalleDto.Titulo = DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(documentoInstancia.Taxonomia, idConcepto, idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT); detalleDto.TituloAbstracto = true; contenido.Add(detalleDto); DesgloseDeCreditosReporteDto detalleTotalDto = null; if (detalleDtoPorConcepto.ContainsKey(idConcepto)) { foreach (String miembroInstitucion in detalleDtoPorConcepto[idConcepto].Keys) { if (detalleDtoPorConcepto[idConcepto][miembroInstitucion].Titulo.Equals("TOTAL")) { detalleTotalDto = detalleDtoPorConcepto[idConcepto][miembroInstitucion]; } else { contenido.Add(detalleDtoPorConcepto[idConcepto][miembroInstitucion]); } } } if (detalleTotalDto != null) { detalleTotalDto.Total = true; contenido.Add(detalleTotalDto); } } } outContadorNotasAlPie = contadorTMP; contadorTMP = 0; return(contenido); }