/// <summary> /// Inicializa el diccionario de unidades por concepto. /// </summary> public void InicializaUnidadesConceptos() { foreach (var concepto in DiccionarioConceptosPorColumna.Values) { UnidadDto unidad = ObtenUniadConcepto(concepto); if (unidad != null) { DiccionarioUnidadesPorIdConcepto[concepto.Id] = unidad; } } var fehchaMaxima = PlantillaDocumento.ObtenMaximaFechaReporte(Instancia); FechaDefault = Common.Util.DateUtil.ToFormatString(fehchaMaxima, Common.Util.DateUtil.YMDateFormat); }
/// <summary> /// Retorna la unidad que aplica para el concepto indicado. /// </summary> /// <param name="concepto">Concepto a evaluar.</param> /// <param name="instancia">Documento de instancia a evaluar.</param> /// <param name="plantillaDocumento">Plantilla del documento.</param> /// <returns>Unidad que aplica al concepto.</returns> public UnidadDto ObtenUniadConcepto(ConceptoDto concepto) { UnidadDto unidadDestino = null; if (concepto.EsTipoDatoNumerico) { //Si es moentario var listaMedidas = new List <MedidaDto>(); if (concepto.TipoDatoXbrl.Contains(TiposDatoXBRL.MonetaryItemType)) { listaMedidas.Add(new MedidaDto() { EspacioNombres = PlantillaDocumento.ObtenerVariablePorId("medida_http___www_xbrl_org_2003_iso4217"), Nombre = PlantillaDocumento.ObtenerVariablePorId("medida_MXN") }); DiccionarioDecimalesPorIdConcepto[concepto.Id] = "-3"; } else { //Unidad pure listaMedidas.Add(new MedidaDto() { EspacioNombres = PlantillaDocumento.ObtenerVariablePorId("medida_http___www_xbrl_org_2003_instance"), Nombre = PlantillaDocumento.ObtenerVariablePorId("medida_pure") }); DiccionarioDecimalesPorIdConcepto[concepto.Id] = "0"; } var unidades = Instancia.BuscarUnidades(Unit.Medida, listaMedidas, null); if (unidades == null || unidades.Count == 0) { unidadDestino = new UnidadDto() { Id = "U" + Guid.NewGuid().ToString(), Tipo = Unit.Medida, Medidas = listaMedidas }; Instancia.UnidadesPorId.Add(unidadDestino.Id, unidadDestino); } else { unidadDestino = unidades[0]; } } return(unidadDestino); }