Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }