Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 public static IList<HistoricalPositionRowView> GetHistoricalPositions(IDalSession session, IPortfolioHistorical portfolio)
 {
     return HistoricalPositionAdapter.GetHistoricalPositions(session, portfolio);
 }