Beispiel #1
0
        protected void SetFilingIndicators()
        {
            var finds = new Dictionary <string, string>();

            this.FilingIndicators.Clear();
            this.XbrlFilingIndicators.Clear();
            foreach (var fact in Facts)
            {
                var cells = fact.Cells;
                foreach (var cell in cells)
                {
                    var tableid = cell.Remove(cell.IndexOf("<"));

                    if (!finds.ContainsKey(tableid))
                    {
                        var table = this.Taxonomy.Tables.FirstOrDefault(i => i.ID == tableid);
                        var find  = table.FilingIndicator;

                        finds.Add(tableid, find);
                        var filingndicator = new FilingIndicator();
                        filingndicator.ContextID = FilingIndicator.DefaultContextID;

                        filingndicator.Value = find;
                        this.XbrlFilingIndicators.Add(filingndicator);
                        var logicalFind = new LogicalModel.FilingIndicator();
                        logicalFind.ID = find;
                        this.FilingIndicators.Add(logicalFind);
                    }
                }
            }
            //return finds.Select(i=>i.Key).ToList();
        }
Beispiel #2
0
        public void LoadLogicalData()
        {
            this.FactDictionary.SetInstance(this);
            this.TaxonomyModuleReference = this.SchemaRef.Href;
            this.FilingIndicators        = this.XbrlFilingIndicators.Select(i => {
                var find   = new LogicalModel.FilingIndicator();
                find.ID    = i.Value;
                find.Filed = i.Filed;
                return(find);
            }).ToList();
            var lastfactpartid = Taxonomy.CounterFactParts.Keys.Max();
            var ix             = 0;

            foreach (var xbrlfact in XbrlFacts)
            {
                //var instancecontext = this.Contexts.Items[xbrlfact.ContextRef];
                var logicalfact = new LogicalModel.InstanceFact();
                logicalfact.IX = ix;
                ix++;
                logicalfact.UnitID    = xbrlfact.UnitRef;
                logicalfact.ContextID = xbrlfact.ContextRef;
                logicalfact.ID        = xbrlfact.ID;
                logicalfact.Decimals  = String.IsNullOrEmpty(xbrlfact.Decimals) ? "" : xbrlfact.Decimals;
                var factstring = "";
                factstring = String.Format("{0},", xbrlfact.Concept);
                var factparts = new List <String>();
                factparts.Add(xbrlfact.Concept);
                var conceptid = GetPartID(xbrlfact.Concept);
                var factids   = new List <int>();
                factids.Add(conceptid);
                var factkey = factstring;

                logicalfact.Concept         = new LogicalModel.Concept();
                logicalfact.Concept.Content = xbrlfact.Concept;
                logicalfact.Value           = xbrlfact.Value;
                this.FactDictionary.AddFact(logicalfact);
                this.Facts.Add(logicalfact);
            }
            Logger.WriteLine(String.Format("Instance has {0} facts", this.Facts.Count));
            XbrlFacts.Clear();
            var miconceptfact = Facts.FirstOrDefault(i => i.Concept.Name.StartsWith("mi"));

            if (miconceptfact != null)
            {
                var micontext = Contexts.Items[miconceptfact.ContextID];
                var miunit    = Units.FirstOrDefault(i => i.ID == miconceptfact.UnitID);
                if (miunit != null)
                {
                    var measurestring = miunit.Measure.Content.ToLower();
                    var taxunit       = Taxonomy.Units.FirstOrDefault(i => i.Measure.Content.ToLower() == measurestring);
                    ReportingMonetaryUnit = taxunit;
                }
            }
            if (Contexts.Items.Count > 0)
            {
                var firstcontext = Contexts.Items.Values.FirstOrDefault();
                this.Entity          = firstcontext.Entity;
                this.ReportingDate   = firstcontext.Period.Instant;
                this.ReportingPeriod = firstcontext.Period;
            }

            SetCells();
            SetExtensions();
            SaveToJson();
        }