public static LogicalModel.InstanceUnit ToLogical(XbrlUnit item) { var toitem = new LogicalModel.InstanceUnit(); toitem.Measure = new LogicalModel.Base.QualifiedName(String.Format("{0}:{1}", item.BaseStandard, item.UnitID)); toitem.ID = item.ID; toitem.Name = item.UnitName; toitem.NSLink = item.NsUnit; toitem.ItemType = item.ItemType; return(toitem); }
protected void SetUnits() { this.Units.Clear(); var dict = new Dictionary <string, string>(); foreach (var fact in Facts) { var concept = fact.Concept; var taxconcept = Taxonomy.Concepts[concept.Content]; var itemtypesetting = Taxonomy.Module.UserSettings.ItemTypeSettings.FirstOrDefault(i => i.ItemType == taxconcept.ItemType); var unitid = itemtypesetting.UnitID; if (!dict.ContainsKey(taxconcept.ItemType)) { LogicalModel.InstanceUnit unit = Taxonomy.Units.FirstOrDefault(i => i.ID == unitid); if (taxconcept.ItemType == "monetaryItemType") { unit = this.ReportingMonetaryUnit; } if (unit != null) { var xbrlunit = new LogicalModel.InstanceUnit(); xbrlunit.ID = GetNewID(this.Units, "U_{0}"); xbrlunit.Measure = unit.Measure; this.Units.Add(xbrlunit); dict.Add(taxconcept.ItemType, xbrlunit.ID); fact.UnitID = xbrlunit.ID; } } else { fact.UnitID = dict[taxconcept.ItemType]; } if (itemtypesetting.Type == LogicalModel.TypeEnum.Numeric) { fact.Decimals = String.Format("{0}", itemtypesetting.Decimals); } } }