public static IList<HistoricalPositionRowView> GetHistoricalPositions(IDalSession session, IPortfolioHistorical portfolio) { IAccountTypeInternal account = portfolio.ParentAccount; List<HistoricalPositionRowView> positionRowViews = portfolio.FundPortfolio .Select(p => new HistoricalPositionRowView(p)) .ToList(); positionRowViews.AddRange(portfolio.CashPortfolio .Select(c => new HistoricalPositionRowView(c)) .ToList()); decimal totalValue = 0m; if (positionRowViews.Count > 0) totalValue = positionRowViews.Where(j => (j.Value != null)).Select(v => v.Value).Sum().Quantity; if (totalValue != 0m) foreach (HistoricalPositionRowView rowView in positionRowViews.Where(pv => pv.Value != null)) rowView.Percentage = rowView.Value.Quantity / totalValue; return positionRowViews; }
private static void InsertEndTermValue(IDalSession session, IPortfolioHistorical portfolio, IList<IJournalEntryLine> dividends, IPeriodicReporting reportingPeriod) { IAccountTypeInternal account = portfolio.ParentAccount; IEndTermValue etv = new EndTermValue(account, reportingPeriod); Money InternalDividend = new Money(0m, account.BaseCurrency); Money InternalDividendTax = new Money(0m, account.BaseCurrency); Money ExternalDividend = new Money(0m, account.BaseCurrency); Money ExternalDividendTax = new Money(0m, account.BaseCurrency); if (dividends != null) { List<IJournalEntryLine> divs = dividends.ToList(); if (divs.Exists(d => d.GiroAccount.Key == account.Key)) { if (divs.Exists(d => d.GLAccount.IsGrossDividendInternal)) InternalDividend = divs.Where(d => (d.GLAccount.IsGrossDividendInternal && (d.GiroAccount.Key == account.Key))).Select(m => m.Balance.BaseAmount).Sum(); if (divs.Exists(d => d.GLAccount.IsDividendTaxInternal)) InternalDividendTax = divs.Where(d => (d.GLAccount.IsDividendTaxInternal && (d.GiroAccount.Key == account.Key))).Select(m => m.Balance.BaseAmount).Sum(); if (divs.Exists(d => d.GLAccount.IsGrossDividendExternal)) ExternalDividend = divs.Where(d => (d.GLAccount.IsGrossDividendExternal && (d.GiroAccount.Key == account.Key))).Select(m => m.Balance.BaseAmount).Sum(); if (divs.Exists(d => d.GLAccount.IsDividendTaxExternal)) ExternalDividendTax = divs.Where(d => (d.GLAccount.IsDividendTaxExternal && (d.GiroAccount.Key == account.Key))).Select(m => m.Balance.BaseAmount).Sum(); } } etv.CashValue = portfolio.CashPortfolio.TotalPortfolioValue; etv.FundValue = portfolio.FundPortfolio.TotalPortfolioValue; etv.ClosingValue = etv.FundValue + etv.CashValue; etv.CultureFundValue = portfolio.FundPortfolio.CultureFundValue.Abs(); etv.GreenFundValue = portfolio.FundPortfolio.GreenFundValue.Abs(); etv.InternalDividend = InternalDividend.Abs(); etv.InternalDividendTax = InternalDividendTax.Abs(); etv.ExternalDividend = ExternalDividend.Abs(); etv.ExternalDividendTax = ExternalDividendTax.Abs(); session.InsertOrUpdate(etv); }
public static IList<HistoricalPositionRowView> GetHistoricalPositions(IDalSession session, IPortfolioHistorical portfolio) { return HistoricalPositionAdapter.GetHistoricalPositions(session, portfolio); }