// List<int, Money> feeAmounts internal UnitFeeOverview(IManagementPeriod managementPeriod, List<IManagementPeriodUnit> units) { this.ManagementPeriod = managementPeriod; this.Account = ManagementPeriod.Account; // if Account.Family.ManagementFeeInstalment = 12 -> use ManagementPeriod.Key + Period / 1000000 this.Key = managementPeriod.Key; foreach (IManagementPeriodUnit unit in units) { if (this.Account != unit.Account) throw new ApplicationException("This is the wrong account."); int index = getIndexFromPeriod(unit.Period); this.units[index] = new UnitFeePerPeriod(this, unit); this.IsKickBackExported = (unit.KickBackExport != null); } }
private static bool getMgtFeeInfo(IManagementPeriod mp, DateTime feeEndDate, int year, int quarter, out string mgtFeeDescription, out decimal mgtFeeThreshold) { bool success = false; mgtFeeDescription = ""; mgtFeeThreshold = 0; ICustomerAccount account = (ICustomerAccount)mp.Account; IAssetManager am = account.AccountOwner as IAssetManager; if (am != null) { if (account.FinalManagementEndDate == feeEndDate) mgtFeeDescription = string.Format(am.MgtFeeFinalDescription, quarter, year); else mgtFeeDescription = string.Format(am.MgtFeeDescription, quarter, year); mgtFeeThreshold = am.MgtFeeThreshold * -1M; success = true; } return success; }
private bool checkIsValuatedSub(IManagementPeriod managementPeriod) { bool retVal = false; if (managementPeriod != null) { if (Util.IsNullDate(managementPeriod.EndDate)) Message = string.Format("The enddate is not set on management period {0}.", managementPeriod.Key); if (managementPeriod.ManagementType == ManagementTypes.ManagementFee) { IManagementPeriodUnit lastUnit = managementPeriod.ManagementPeriodUnits .OrderByDescending(x => x.StartDate).FirstOrDefault(); if (lastUnit != null) { if (lastUnit.EndDate.Equals(managementPeriod.EndDate) && lastUnit.AverageHoldings.Count > 0 && lastUnit.FeesCalculated == FeesCalculatedStates.Yes) retVal = true; else if (Util.IsNotNullDate(Account.LastValuationDate)) { int days = ((TimeSpan)(managementPeriod.EndDate - Account.LastValuationDate)).Days; if (days > 0) Message = string.Format("Wait {0} more days", days); else Message = string.Format("Management Fee needs to be calculated for {0} days", Math.Abs(days)); } else Message = "Account has no valuations???"; } } } else retVal = true; return retVal; }