public void ApplyValues(ClientReport cr, int?monthsToAdd)
        {
            //primitives go here
            this.Amount = cr.Amount;
            this.Rate   = cr.Rate;

            foreach (var ar in cr.ClientAmountReports)
            {
                var newDate = ar.ReportDate.AddMonths(monthsToAdd ?? 0);
                var own     = this.ClientAmountReports.SingleOrDefault(f => f.ReportDate == newDate);
                if (own == null)
                {
                    own = new ClientAmountReport();
                }
                own.Quantity   = ar.Quantity;
                own.ReportDate = newDate;
                this.ClientAmountReports.Add(own);
            }
        }
        private void FixupClientReport(ClientReport previousValue)
        {
            if (previousValue != null && previousValue.ClientAmountReports.Contains(this))
            {
                previousValue.ClientAmountReports.Remove(this);
            }

            if (ClientReport != null)
            {
                if (!ClientReport.ClientAmountReports.Contains(this))
                {
                    ClientReport.ClientAmountReports.Add(this);
                }
                if (ClientReportId != ClientReport.Id)
                {
                    ClientReportId = ClientReport.Id;
                }
            }
        }