public UnrealisedGainViewItem(SimpleUnrealisedGainsItem item)
        {
            Stock          = new StockViewItem(item.Stock);
            AquisitionDate = item.AquisitionDate;
            Units          = item.Units;
            CostBase       = item.CostBase;
            MarketValue    = item.MarketValue;
            CapitalGain    = item.CapitalGain;

            if (item.DiscountMethod == CGTMethod.Discount)
            {
                DiscountMethod = "Discount";
                DiscoutedGain  = item.DiscoutedGain;
            }
            else if (item.DiscountMethod == CGTMethod.Indexation)
            {
                DiscountMethod = "Indexation";
                DiscoutedGain  = 0.00m;
            }
            else
            {
                DiscountMethod = "Other";
                DiscoutedGain  = 0.00m;
            }
        }
Beispiel #2
0
        private SimpleUnrealisedGainsResponse GetCapitalGains(IEnumerable <IReadOnlyHolding> holdings, Date date)
        {
            var response = new SimpleUnrealisedGainsResponse();

            foreach (var holding in holdings)
            {
                foreach (var parcel in holding.Parcels(date))
                {
                    var properties = parcel.Properties[date];

                    var value          = properties.Units * holding.Stock.GetPrice(date);
                    var capitalGain    = value - properties.CostBase;
                    var discountMethod = CgtUtils.CgtMethodForParcel(parcel.AquisitionDate, date);
                    var discoutedGain  = (discountMethod == Domain.Portfolios.CgtMethod.Discount) ? CgtUtils.DiscountedCgt(capitalGain, Domain.Portfolios.CgtMethod.Discount) : capitalGain;

                    var unrealisedGain = new SimpleUnrealisedGainsItem()
                    {
                        Stock          = holding.Stock.ToSummaryResponse(date),
                        AquisitionDate = parcel.AquisitionDate,
                        Units          = properties.Units,
                        CostBase       = properties.CostBase,
                        MarketValue    = value,
                        CapitalGain    = capitalGain,
                        DiscoutedGain  = discoutedGain,
                        DiscountMethod = discountMethod.ToResponse()
                    };

                    response.UnrealisedGains.Add(unrealisedGain);
                }
            }

            return(response);
        }