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);
        }
Exemple #2
0
        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);
                }
            }
        }