private XbrlContext GetContext(LogicalModel.InstanceFact fact) { var contextcount = this.Contexts.Items.Count; var contextid = String.Format("CT_{0}", contextcount + 1); XbrlContext ct = null; ct = new XbrlContext(); ct.ID = contextid; ct.Entity = this.Entity; ct.Period = this.ReportingPeriod; var scenario = new Scenario(); foreach (var dimension in fact.Dimensions) { scenario.Dimensions.Add(dimension); } ct.Scenario = scenario; return(ct); }
public bool LoadSimple() { if (XmlDocument == null || XmlDocument.DocumentElement == null) { return(false); } var xbrlnode = Utilities.Xml.SelectSingleNode(XmlDocument.DocumentElement, "//*[ local-name() = 'xbrl']"); Mappings.CurrentMapping.Map <XbrlInstance>(xbrlnode, this); var cmap = Mappings.CurrentMapping.MappingCollection.FirstOrDefault(i => i.ClassType == typeof(XbrlContext)); //var contextxpath = Utilities.Strings.TextBetween(cmap.XmlSelector, "<", ">"); var contextndoes = Utilities.Xml.SelectChildNodes(xbrlnode, cmap.XPathContainer); xbrlnode = null; var ctcontainer = this.Contexts; foreach (var cnode in contextndoes) { XbrlContext ct = new XbrlContext(); ct = cmap.Map(cnode, ct); AddToContext(ctcontainer, ct); } this.TaxonomyModuleReference = this.SchemaRef.Href; return(true); }
public void AddToContext(LogicalModel.ContextContainer logicalcontext, XbrlContext xbrlcontext) { var context = new LogicalModel.InstanceContext(); context.ID = xbrlcontext.ID; if (!logicalcontext.Entitites.ContainsKey(xbrlcontext.Entity.ID)) { logicalcontext.Entitites.Add(xbrlcontext.Entity.ID, xbrlcontext.Entity); } context.Entity = logicalcontext.Entitites[xbrlcontext.Entity.ID]; context.EntityID = xbrlcontext.Entity.ID; if (!logicalcontext.Periods.ContainsKey(xbrlcontext.Period.ID)) { logicalcontext.Periods.Add(xbrlcontext.Period.ID, xbrlcontext.Period); } context.Period = logicalcontext.Periods[xbrlcontext.Period.ID]; context.PeriodID = xbrlcontext.Period.ID; if (xbrlcontext.Scenario != null) { foreach (var dim in xbrlcontext.Scenario.Dimensions) { if (!logicalcontext.Parts.ContainsKey(dim.DomainMemberFullName)) { logicalcontext.Parts.Add(dim.DomainMemberFullName, dim); } context.Dimensions.Add(logicalcontext.Parts[dim.DomainMemberFullName]); } } logicalcontext.Items.Add(context.ID, context); }
public static FinancialStatement CreateFinancialStatement(this XbrlInstanceDocument doc) { FinancialStatement ToReturn = new FinancialStatement(); //Get the context reference to focus on XbrlContext focus_context = doc.FindNormalPeriodPrimaryContext(); #region "Contextual (misc) info" //Period start and end ToReturn.PeriodStart = focus_context.StartDate; ToReturn.PeriodEnd = focus_context.EndDate; //Common Stock Shares Outstanding try { ToReturn.CommonStockSharesOutstanding = doc.GetValueFromPriorities(focus_context.Id, "CommonStockSharesOutstanding", "EntityCommonStockSharesOutstanding").ValueAsLong(); } catch { ToReturn.CommonStockSharesOutstanding = null; } #endregion #region "Income Statement" //Revenue try { ToReturn.Revenue = doc.GetValueFromPriorities(focus_context.Id, "Revenue", "Revenues", "RevenueFromContractWithCustomerExcludingAssessedTax", "RevenueFromContractWithCustomerIncludingAssessedTax", "RevenueFromContractWithCustomerBeforeReimbursementsExcludingAssessedTax", "SalesRevenueNet", "SalesRevenueGoodsNet", "TotalRevenuesAndOtherIncome").ValueAsFloat(); } catch { ToReturn.Revenue = null; } //Net income try { ToReturn.NetIncome = doc.GetValueFromPriorities(focus_context.Id, "NetIncomeLoss", "IncomeLossFromContinuingOperationsIncludingPortionAttributableToNoncontrollingInterest", "ProfitLoss").ValueAsFloat(); } catch { ToReturn.NetIncome = null; } //Operating Income try { ToReturn.OperatingIncome = doc.GetValueFromPriorities(focus_context.Id, "OperatingIncomeLoss", "IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest").ValueAsFloat(); } catch { ToReturn.OperatingIncome = null; } //Selling general and administrative expense try { ToReturn.SellingGeneralAndAdministrativeExpense = doc.GetValueFromPriorities(focus_context.Id, "SellingGeneralAndAdministrativeExpense").ValueAsFloat(); } catch { ToReturn.SellingGeneralAndAdministrativeExpense = null; } //Research and development expense try { ToReturn.ResearchAndDevelopmentExpense = doc.GetValueFromPriorities(focus_context.Id, "ResearchAndDevelopmentExpense", "ResearchAndDevelopmentExpenseExcludingAcquiredInProcessCost").ValueAsFloat(); } catch { ToReturn.ResearchAndDevelopmentExpense = null; } #endregion #region "Balance Sheet" //Assets try { ToReturn.Assets = doc.GetValueFromPriorities(focus_context.Id, "Assets").ValueAsFloat(); } catch { ToReturn.Assets = null; } //Liabilities try { ToReturn.Liabilities = doc.GetValueFromPriorities(focus_context.Id, "Liabilities").ValueAsFloat(); } catch { ToReturn.Liabilities = null; } //Equity try { ToReturn.Equity = doc.GetValueFromPriorities(focus_context.Id, "Equity", "StockholdersEquity", "StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest").ValueAsFloat(); } catch { ToReturn.Equity = null; } //If only liabilities or equity were able to be found, fill in the rest if (ToReturn.Assets != null) { if (ToReturn.Liabilities == null && ToReturn.Equity != null) { ToReturn.Liabilities = ToReturn.Assets - ToReturn.Equity; } else if (ToReturn.Equity == null && ToReturn.Liabilities != null) { ToReturn.Equity = ToReturn.Assets - ToReturn.Liabilities; } } else { if (ToReturn.Liabilities != null && ToReturn.Equity != null) { ToReturn.Assets = ToReturn.Liabilities + ToReturn.Equity; } } //Cash try { ToReturn.Cash = doc.GetValueFromPriorities(focus_context.Id, "CashAndCashEquivalents", "CashAndCashEquivalentsAtCarryingValue", "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents", "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents").ValueAsFloat(); } catch { ToReturn.Cash = null; } //Current Assets try { ToReturn.CurrentAssets = doc.GetValueFromPriorities(focus_context.Id, "AssetsCurrent").ValueAsFloat(); } catch { ToReturn.CurrentAssets = null; } //Current Libilities try { ToReturn.CurrentLiabilities = doc.GetValueFromPriorities(focus_context.Id, "LiabilitiesCurrent").ValueAsFloat(); } catch { ToReturn.CurrentLiabilities = null; } //Retained Earnings try { ToReturn.RetainedEarnings = doc.GetValueFromPriorities(focus_context.Id, "RetainedEarningsAccumulatedDeficit").ValueAsFloat(); } catch { ToReturn.RetainedEarnings = null; } #endregion #region "Cash Flows" //Operating Cash Flows try { ToReturn.OperatingCashFlows = doc.GetValueFromPriorities(focus_context.Id, "NetCashProvidedByUsedInOperatingActivities", "NetCashProvidedByUsedInOperatingActivitiesContinuingOperations").ValueAsFloat(); } catch { ToReturn.OperatingCashFlows = null; } //Investing Cash Flows try { ToReturn.InvestingCashFlows = doc.GetValueFromPriorities(focus_context.Id, "NetCashProvidedByUsedInInvestingActivities", "NetCashProvidedByUsedInInvestingActivitiesContinuingOperations").ValueAsFloat(); } catch { ToReturn.InvestingCashFlows = null; } //Finance cash flows try { ToReturn.FinancingCashFlows = doc.GetValueFromPriorities(focus_context.Id, "NetCashProvidedByUsedInFinancingActivities", "NetCashProvidedByUsedInFinancingActivitiesContinuingOperations").ValueAsFloat(); } catch { ToReturn.FinancingCashFlows = null; } //ProceedsFromIssuanceOfDebt try { ToReturn.ProceedsFromIssuanceOfDebt = doc.GetValueFromPriorities(focus_context.Id, "ProceedsFromIssuanceOfDebt", "ProceedsFromDebtMaturingInMoreThanThreeMonths", "ProceedsFromIssuanceOfLongTermDebt", "ProceedsFromIssuanceOfLongTermDebtAndCapitalSecuritiesNet").ValueAsFloat(); } catch { ToReturn.ProceedsFromIssuanceOfDebt = null; } //Payments of debt try { ToReturn.PaymentsOfDebt = doc.GetValueFromPriorities(focus_context.Id, "RepaymentsOfDebt", "RepaymentsOfDebtMaturingInMoreThanThreeMonths", "RepaymentsOfLongTermDebt", "RepaymentsOfLongTermDebtAndCapitalSecurities").ValueAsFloat(); } catch { ToReturn.PaymentsOfDebt = null; } //Dividends paid try { ToReturn.DividendsPaid = doc.GetValueFromPriorities(focus_context.Id, "PaymentsOfDividendsCommonStock", "PaymentsOfDividends").ValueAsFloat(); } catch { ToReturn.DividendsPaid = null; } #endregion return(ToReturn); }