private IEnumerable <GenevaSmaNewAssetsDataModel> BuildNewAssetsData() { const LkuRateType.RateType rateType = LkuRateType.RateType.NewAssets; const LkuCommissionType.CommissionType commissionType = LkuCommissionType.CommissionType.SMA; RegionalDirectorRateInfoDataModel rdRateInfo; try { var naItems = new List <GenevaSmaNewAssetsDataModel>(); foreach (GenevaSmaAssetsDataModel item in _genevaSales) { bool calcCommission = ((item.Amount > 0) && (item.TranDesc == "NewCash" || item.TranDesc == "NewAsset")); bool isStartBeforePeriod = ((item.PortStartDate < item.TradeDate) && (item.PortStartDate > new DateTime(1900, 1, 1))); var rateInfo = GetRateInfo(item.InternalMarketingPerson, item.Strategy); var theRate = rateInfo?.NewAssetRate ?? 0.0m; var na = new GenevaSmaNewAssetsDataModel() { InternalMarketingPerson = item.InternalMarketingPerson, Portfolio = item.Portfolio, PortShortName = item.PortShortName, ConsultantFirm = item.ConsultantFirm, ConsultantName = FindAumItemByPortfolioCode(item.Portfolio.Trim()).ConsultantName, Strategy = item.Strategy, PortStartDate = item.PortStartDate, TradeDate = item.TradeDate, TranType = item.TranType, InvCode = item.InvCode, Quantity = item.Quantity, Price = item.Price, Amount = item.Amount, AmountRemoved = null, CommissionAmount = calcCommission ? (item.Amount * theRate) : 0.0m, CommissionRate = theRate, SalesTeam = item.SalesTeam, IsStartBeforePeriod = isStartBeforePeriod ? "TRUE" : "FALSE" }; naItems.Add(na); } return(naItems.OrderBy(c => c.InternalMarketingPerson).ThenBy(c => c.ConsultantFirm).ThenBy(c => c.Portfolio)); } catch (Exception e) { Console.WriteLine(e); throw; } }
private IEnumerable <GenevaSmaNewAssetsDataModel> BuildNewAssetsData() { const LkuRateType.RateType rateType = LkuRateType.RateType.NewAssets; const LkuCommissionType.CommissionType commissionType = LkuCommissionType.CommissionType.SMA; var naItems = new List <GenevaSmaNewAssetsDataModel>(); foreach (GenevaSmaAssetsDataModel item in NewAssetsItems) { RegionalDirectorRateInfoDataModel rdRateInfo = RegionalDirectorRateInfo(item.InternalMarketingPerson, (int)rateType, (int)commissionType); if (rdRateInfo != null) { rdRateInfo.Rate = item.InternalMarketingPerson.IndexOf(',') > 0 ? rdRateInfo.Rate / 2 : rdRateInfo.Rate; bool calcCommission = ((item.Amount > 0) && (item.TranDesc == "NewCash" || item.TranDesc == "NewAsset")); bool isStartBeforePeriod = ((item.PortStartDate < item.TradeDate) && (item.PortStartDate > new DateTime(1900, 1, 1))); var na = new GenevaSmaNewAssetsDataModel() { InternalMarketingPerson = item.InternalMarketingPerson, Portfolio = item.Portfolio, PortShortName = item.PortShortName, PortStartDate = item.PortStartDate, TradeDate = item.TradeDate, TranType = item.TranType, Strategy = item.Strategy, ConsultantFirm = item.ConsultantFirm, ConsultantName = FindAumItemByPortfolioCode(item.Portfolio).ConsultantName, Ticker = item.InvCode, Security = item.Security, Quantity = item.Quantity, Price = item.Price, CommissionRate = rdRateInfo.Rate, CommissionAmount = calcCommission ? (item.Amount * rdRateInfo.Rate) : 0.0m, IsStartBeforePeriod = isStartBeforePeriod ? "TRUE" : "FALSE", SumTradeAmountByDate = null, SumTradeAmountByPortfolioCode = null, IsValid = calcCommission ? "TRUE" : "FALSE" }; naItems.Add(na); } } return(naItems); }
private IEnumerable <GenevaSmaOngoingDetailDataModel> BuildOngoingDetail() { const LkuRateType.RateType rateType = LkuRateType.RateType.Ongoing; const LkuCommissionType.CommissionType commissionType = LkuCommissionType.CommissionType.SMA; IEnumerable <GenevaSmaFlowsDataModel> flowItems = BuildFlowsDetail(); var ogItems = new List <GenevaSmaOngoingDetailDataModel>(); foreach (GenevaSmaAumDataModel item in AumItems) { RegionalDirectorRateInfoDataModel rdRateInfo = RegionalDirectorRateInfo(item.RM, (int)rateType, (int)commissionType); if (rdRateInfo != null) { rdRateInfo.Rate = item.RM.IndexOf(',') > 0 ? rdRateInfo.Rate / 2 : rdRateInfo.Rate; var flow = FindFlowAmount(item.PortfolioCode); var flowValue = flow.Inflows == null ? 0.0m : flow.Inflows; var og = new GenevaSmaOngoingDetailDataModel() { SmaOngoing = item.Id, Portfolio = item.PortfolioCode, PortShortName = item.PortfolioName, RM = item.RM, ConsultantFirm = item.ConsultantFirm, ConsultantName = item.ConsultantName, Strategy = item.Goal, PortStartDate = item.Inception, AUM = item.Total, InFlows = flowValue, SeasonedValue = item.Total - flowValue, AnnualRate = rdRateInfo.Rate / 4, Rate = rdRateInfo.Rate, Commission = (item.Total - flowValue) * (rdRateInfo.Rate / 4) }; ogItems.Add(og); } } return(ogItems); }
IEnumerable <GenevaNewAssetsSummaryDataModel> BuildNewAssetsSummaryData(IEnumerable <GenevaSmaNewAssetsDataModel> naDetail) { const LkuRateType.RateType rateType = LkuRateType.RateType.NewAssets; const LkuCommissionType.CommissionType commissionType = LkuCommissionType.CommissionType.SMA; var naSumm = new List <GenevaNewAssetsSummaryDataModel>(); var naSummWorking = naDetail .GroupBy(g => new { g.InternalMarketingPerson, g.IsValid, g.ConsultantFirm, g.ConsultantName }) .Select(group => new { RD = group.Key.InternalMarketingPerson, IsGood = group.Key.IsValid, Firm = group.Key.ConsultantFirm, Name = group.Key.ConsultantName, Amount = group.Sum(c => c.SumTradeAmountByDate), Rate = group.Min(c => c.CommissionRate), CommissionAmount = group.Sum(c => c.SumTradeAmountByDate) * group.Min(c => c.CommissionRate) }); foreach (var item in naSummWorking) { var summary = new GenevaNewAssetsSummaryDataModel() { RegionalDirectorKey = item.RD, IsTransfer = item.IsGood, ConsultantFirm = item.Firm, ConsultantName = item.Name, PayableAmount = item.Amount ?? 0.0m, Rate = item.Rate, Commission = item.CommissionAmount ?? 0.0m }; naSumm.Add(summary); } return(naSumm); }
private IEnumerable <UmaMerrillNewAssetsDetailDataModel> BuildNewAssetsDetail() { const LkuRateType.RateType rateType = LkuRateType.RateType.NewAssets; const LkuCommissionType.CommissionType commissionType = LkuCommissionType.CommissionType.UMA; var naItems = new List <UmaMerrillNewAssetsDetailDataModel>(); foreach (UmaMerrillDataModel item in _merrillData) { if (item.AsOfDate >= _startDate && item.AsOfDate <= _endDate) { RegionalDirectorRateInfoDataModel rdRateInfo = RegionalDirectorRateInfo(item.RegionalDirector, (int)rateType, (int)commissionType); if (rdRateInfo != null) { rdRateInfo.Rate = item.RegionalDirector.IndexOf(',') > 0 ? rdRateInfo.Rate / 2 : rdRateInfo.Rate; var na = new UmaMerrillNewAssetsDetailDataModel() { UniqueId = item.UniqueID, Inception = item.StrategyEnrollmentDate, Office = item.Office, OfficeState = item.OfficeStateCode, RC = item.RegionalDirector, MarketValue = item.TotalAssets, Rate = rdRateInfo.Rate, Commission = item.TotalAssets * rdRateInfo.Rate, IsNewAsset = "TRUE", AristotleStartDate = item.StrategyEnrollmentDate, IsGrayStone = null, IsXfer = null }; naItems.Add(na); } } } return(naItems); }
private IEnumerable <GenevaSmaOngoingDetailDataModel> BuildOngoingDetail() { const LkuRateType.RateType rateType = LkuRateType.RateType.Ongoing; const LkuCommissionType.CommissionType commissionType = LkuCommissionType.CommissionType.SMA; var ogItems = new List <GenevaSmaOngoingDetailDataModel>(); foreach (GenevaSmaAumDataModel item in _aumItems.Where(o => o.Inception < _startDate)) { var flow = FindFlowAmount(item.PortfolioCode); var flowValue = flow?.FlowAmount ?? 0.0m; var rateInfo = GetRateInfo(item.IntMktPerson, item.Goal); var theRate = rateInfo?.OngoingRate ?? 0.0m; var og = new GenevaSmaOngoingDetailDataModel() { RegionalDirector = item.IntMktPerson, IntMktPerson = item.IntMktPerson, Portfolio = item.PortfolioCode, PortShortName = item.PortfolioName, Inception = item.Inception, Goal = item.Goal, ConsultantFirm = item.ConsultantFirm, ConsultantName = item.ConsultantName, ReportEndDate = _endDate, Total = item.Total, InFlows = flowValue, SeasonedValue = item.Total - flowValue, Commission = (item.Total - flowValue) * (theRate / 4), Rate = theRate / 4, AnnualRate = theRate }; ogItems.Add(og); } return(ogItems); }
private IEnumerable <UmaMerrillNewAssetsSummaryDataModel> BuildNewAssetsSummary(IEnumerable <UmaMerrillNewAssetsDetailDataModel> naDetail) { const LkuRateType.RateType rateType = LkuRateType.RateType.NewAssets; const LkuCommissionType.CommissionType commissionType = LkuCommissionType.CommissionType.UMA; var naSumm = new List <UmaMerrillNewAssetsSummaryDataModel>(); var naSummWorking = _newAssetsDetail .GroupBy(g => new { g.RC, g.Office, g.FAName }) .Select(group => new { RegionalDirectorKey = group.Key.RC, OfficeStateCoe = group.Key. Office = group.Key.Office, }); return(naSumm); }
private IEnumerable <BroadridgeFlowsSummaryDataModel> BuildPseudoFlowSummary() { const LkuRateType.RateType rateType = LkuRateType.RateType.Ongoing; const LkuCommissionType.CommissionType commissionType = LkuCommissionType.CommissionType.UMA; var pfSumm = new List <BroadridgeFlowsSummaryDataModel>(); var pfSummWorking = pfDetail .GroupBy(c => new { c.Territory, c.TheSystem, c.SystemOfficeAddress, c.SystemOfficeState, c.ProductName, c.SystemFAName }) .Select(group => new { Territory = group.Key.Territory, TheSystem = group.Key.TheSystem, SystemOfficeAddress = group.Key.SystemOfficeAddress, OfficeState = group.Key.SystemOfficeState, ProductName = group.Key.ProductName, SystemFAName = group.Key.SystemFAName, Flows = group.Sum(c => c.SumFlows), Rate = group.Min(c => c.Rate), Commission = group.Sum(c => c.SumFlows) * group.Min(c => c.Rate), }); foreach (var item in pfSummWorking) { var summary = new BroadridgeFlowsSummaryDataModel() { Territory = item.Territory, TheSystem = item.TheSystem, SystemOfficeAddress = item.SystemOfficeAddress, OfficeState = item.OfficeState, SystemFAName = item.SystemFAName, Flows = item.Flows > 0 ? item.Flows : 0.0m, Rate = item.Rate, Commission = item.Flows > 0 ? (item.Flows * item.Rate) : 0.0m }; if (item.Flows > 0) { pfSumm.Add(summary); } } // Total Lines var pfSummTotals = pfSumm .GroupBy(g => new { g.Territory, g.TheSystem }) .Select(grp => new { RM = grp.Key.Territory, System = $"{grp.Key.TheSystem} - Total", InFlows = grp.Sum(group => group.Flows), Rate = grp.Min(group => group.Rate), Commission = grp.Sum(group => group.Commission) }); foreach (var item in pfSummTotals) { var summary = new BroadridgeFlowsSummaryDataModel() { Territory = item.RM, TheSystem = item.System, SystemOfficeAddress = string.Empty, OfficeState = string.Empty, ProductName = string.Empty, SystemFAName = string.Empty, Flows = item.InFlows > 0 ? item.InFlows : 0.0m, Commission = item.InFlows > 0 ? item.Commission : 0.0m, Rate = item.Rate }; summary.Rate = summary.Flows > 0.0m ? item.Commission / summary.Flows : 0.0m; pfSumm.Add(summary); } return(pfSumm.OrderBy(c => c.Territory).ThenBy(c => c.TheSystem)); }
private IEnumerable <BroadridgeOgSummaryDataModel> BuildOngoingSummary() { const LkuRateType.RateType rateType = LkuRateType.RateType.Ongoing; const LkuCommissionType.CommissionType commissionType = LkuCommissionType.CommissionType.UMA; var ogSumm = new List <BroadridgeOgSummaryDataModel>(); var ogSummWorking = ogDetail .GroupBy(c => new { c.Territory, c.TheSystem, c.SystemOfficeAddress, c.SystemOfficeState, c.PersonFirstName, c.PersonLastName }) .Select(group => new { RM = group.Key.Territory, TheSystem = group.Key.TheSystem, SystemOfficeAddress = group.Key.SystemOfficeAddress, SystemOfficeState = group.Key.SystemOfficeAddress, SystemFAName = $"{group.Key.PersonFirstName} {group.Key.PersonLastName}", SystemQuarterEndAssets = group.Sum(c => c.SystemQuarterEndAssets), Flows = group.Sum(c => c.SumFlows), PayableAmout = group.Sum(c => c.PayableAmount), Commission = group.Sum(c => c.Commission), QuarterlyRate = group.Min(c => c.QuarterlyRate), AnnualRate = group.Min(c => c.AnnualRate), }); foreach (var item in ogSummWorking) { var summary = new BroadridgeOgSummaryDataModel() { RM = item.RM, TheSystem = item.TheSystem, SystemOfficeAddress = string.Empty, State = string.Empty, SystemFAName = item.SystemFAName, SystemQuarterEndAssets = item.SystemQuarterEndAssets, Flows = item.Flows, PayableAmount = item.PayableAmout, QuarterlyRate = item.QuarterlyRate, AnnualRate = item.AnnualRate, Commission = item.Commission }; ogSumm.Add(summary); } // Total Lines var ogSummTotals = ogSumm .GroupBy(g => new { g.RM, g.TheSystem }) .Select(grp => new { RM = grp.Key.RM, TheSystem = grp.Key.TheSystem, SystemOfficeAddress = "Totals", SystemQuarterEndAssets = grp.Min(group => group.SystemQuarterEndAssets), Flows = grp.Sum(group => group.Flows), PaymentAmount = grp.Sum(group => group.PayableAmount), Commission = grp.Sum(group => group.Commission), QuarterlyRate = grp.Min(group => group.QuarterlyRate), AnnualRate = grp.Min(group => group.AnnualRate) }); foreach (var item in ogSummTotals) { var summary = new BroadridgeOgSummaryDataModel() { RM = item.RM, TheSystem = item.TheSystem, SystemOfficeAddress = string.Empty, State = string.Empty, SystemQuarterEndAssets = item.SystemQuarterEndAssets, Flows = item.Flows, PayableAmount = item.PaymentAmount, Commission = item.Commission, QuarterlyRate = item.QuarterlyRate, AnnualRate = item.AnnualRate }; ogSumm.Add(summary); } return(ogSumm.OrderBy(c => c.RM).ThenBy(c => c.TheSystem)); }
private IEnumerable <BroadridgeOgDetailDataModel> BuildUmaOngoingDetail() { const LkuRateType.RateType rateType = LkuRateType.RateType.Ongoing; const LkuCommissionType.CommissionType commissionType = LkuCommissionType.CommissionType.UMA; var ogItems = new List <BroadridgeOgDetailDataModel>(); foreach (var asset in _broadridgeNewAssets) { var territory = asset.Territory == "" ? "House" : asset.Territory; var rd = _regionalDirector.FirstOrDefault(r => r.LastName == territory); if (rd != null) { var rateInfo = GetRateInfo(rd.RegionalDirectorKey, asset.ProductName, false); var theRate = rateInfo?.OngoingRate ?? 0.0m; var og = new BroadridgeOgDetailDataModel() { TheSystem = asset.TheSystem, FirmName = asset.FirmName, FirmId = asset.FirmId, FirmCRDNumber = asset.FirmCRDNumber, HoldingId = asset.HoldingId, HoldingExternalAccountNumber = asset.HoldingExternalAccountNumber, HoldingName = asset.HoldingName, HoldingStartDate = asset.HoldingStartdate, HoldingCreateDate = asset.HoldingCreatedate, MostRecentMonthAssetBalance = asset.MostRecentMonthAssetBalance, Month1AgoAssetBalance = asset.Month1AgoAssetBalance, Month2AgoAssetBalance = asset.Month2AgoAssetBalance, Month3AgoAssetBalance = asset.Month3AgoAssetBalance, Month4AgoAssetBalance = asset.Month4AgoAssetBalance, Month5AgoAssetBalance = asset.Month5AgoAssetBalance, Month6AgoAssetBalance = asset.Month6AgoAssetBalance, Month7AgoAssetBalance = asset.Month7AgoAssetBalance, Month8AgoAssetBalance = asset.Month8AgoAssetBalance, Month9AgoAssetBalance = asset.Month9AgoAssetBalance, Month10AgoAssetBalance = asset.Month10AgoAssetBalance, Month11AgoAssetBalance = asset.Month11AgoAssetBalance, Month12AgoAssetBalance = asset.Month11AgoAssetBalance, SumFlows = GetFlowAmount(asset.HoldingId), PayableAmount = asset.MostRecentMonthAssetBalance - GetFlowAmount(asset.HoldingId), Commission = (asset.MostRecentMonthAssetBalance - GetFlowAmount(asset.HoldingId)) * (theRate / 4), QuarterlyRate = theRate / 4, AnnualRate = theRate, IsSeasoned = asset.HoldingCreatedate < GetDateDiffMonths(GetFirstOfMonth(_endDate), -3), ProductName = asset.ProductName, ProductType = asset.ProductType, Channel = asset.Channel, Region = asset.Region, Territory = asset.Territory, SalesCredit = asset.Territory, IsSame = true, PersonCRDNumber = asset.PersonCRDNumber, PersonFirstName = asset.PersonFirstName, PersonLastName = asset.PersonLastName, PersonId = asset.PersonId, OfficeAddressLine1 = asset.OfficeAddressLine1, OfficeAddressLine2 = asset.OfficeAddressLine2, OfficeCity = asset.OfficeCity, OfficeRegionRefCode = asset.OfficeRegionRefCode, OfficePostalCode = asset.OfficePostalCode, PersonBrokerTeamFlag = asset.PersonBrokerTeamFlag, HoldingAddressLine1 = asset.HoldingAddressLine1, SystemFAName = "?", SystemOfficeAddress = "?", SystemOfficeState = asset.OfficeRegionRefCode, SystemQuarterEndAssets = asset.MostRecentMonthAssetBalance, AssetCheck = 0.0m, SystemRDCredit = asset.Territory, AccountTANumber = asset.HoldingExternalAccountNumber, ExternalAccountNumber = asset.HoldingExternalAccountNumber, IsAccountSame = true, AccountId = asset.HoldingId }; ogItems.Add(og); } } return(ogItems.OrderBy(c => c.Territory).ThenBy(c => c.TheSystem)); }
private IEnumerable <BroadridgeNewAssetsSummaryDataModel> BuildNewAssetsSummary() { const LkuRateType.RateType rateType = LkuRateType.RateType.NewAssets; const LkuCommissionType.CommissionType commissionType = LkuCommissionType.CommissionType.UMA; var naSumm = new List <BroadridgeNewAssetsSummaryDataModel>(); var naSummWorking = naDetail .GroupBy(c => new { c.Territory, c.TheSystem, c.OfficeAddressLine1, c.SystemOfficeState, c.ProductName, c.SystemFAName }) .Select(group => new { Territory = group.Key.Territory, System = group.Key.TheSystem, OfficeAddress = group.Key.OfficeAddressLine1, OfficeState = group.Key.SystemOfficeState, ProductName = group.Key.ProductName, FAName = group.Key.SystemFAName, NewAssetValue = group.Sum(c => c.NewAssetValue), Commission = group.Sum(c => c.Commission), Rate = group.Min(c => c.Rate) }); foreach (var item in naSummWorking) { var summary = new BroadridgeNewAssetsSummaryDataModel() { TheSystem = item.System, Territory = item.Territory, OfficeAddress = item.OfficeAddress, OfficeState = item.OfficeState, ProductName = item.ProductName, FAName = item.FAName, NewAssetValue = item.NewAssetValue, Commission = item.Commission, Rate = item.Rate }; naSumm.Add(summary); } // Total Lines var naSummTotals = naSumm .GroupBy(g => new { g.TheSystem, g.Territory }) .Select(group => new { System = group.Key.TheSystem, Territory = group.Key.Territory, FirmName = "-----", OfficeRegionRefCode = "-----", MarketValue = group.Sum(c => c.NewAssetValue), Rate = group.Min(c => c.Rate), Commission = group.Sum(c => c.Commission) }); foreach (var item in naSummTotals) { var summary = new BroadridgeNewAssetsSummaryDataModel() { TheSystem = item.System, Territory = item.Territory, ProductName = "z--Totals", NewAssetValue = item.MarketValue, Rate = item.Rate, Commission = item.Commission }; naSumm.Add(summary); } return(naSumm.OrderBy(c => c.TheSystem).ThenBy(c => c.Territory).ThenBy(c => c.ProductName)); }
private IEnumerable <BroadridgeFlows> BuildPseudoFlowDetail() { const LkuRateType.RateType rateType = LkuRateType.RateType.Ongoing; const LkuCommissionType.CommissionType commissionType = LkuCommissionType.CommissionType.UMA; var pfItems = new List <BroadridgeFlows>(); foreach (var asset in _broadridgeNewAssets) { RegionalDirectorRateInfoDataModel rdRateInfo = RegionalDirectorRateInfo(asset.Territory, (int)rateType, (int)commissionType); if (rdRateInfo != null) { rdRateInfo.Rate = asset.Territory.IndexOf(',') > 0 ? rdRateInfo.Rate / 2 : rdRateInfo.Rate; var rd = _regionalDirector.FirstOrDefault(r => r.LastName == asset.Territory); var rateInfo = GetRateInfo(rd == null ? "House" : rd.RegionalDirectorKey, asset.ProductName, false); var theRate = rateInfo?.NewAssetRate ?? 0.0m; var fa = GetFlowAmount(asset); var pf = new BroadridgeFlows() { TheSystem = asset.TheSystem, FirmName = asset.FirmName, FirmId = asset.FirmId, FirmCRDNumber = asset.FirmCRDNumber, Portfolio = asset.HoldingId, HoldingExternalAccountNumber = asset.HoldingExternalAccountNumber, HoldingName = asset.HoldingName, HoldingStartDate = asset.HoldingStartdate, HoldingCreateDate = asset.HoldingCreatedate, Month3AgoAssetBalance = asset.Month3AgoAssetBalance, Month2AgoAssetBalance = asset.Month2AgoAssetBalance, Period1Delta = asset.Month2AgoAssetBalance - asset.Month3AgoAssetBalance, Period1Threshold = asset.Month3AgoAssetBalance * 0.1m, Period1PercentChange = GetPercentDiff(asset.Month2AgoAssetBalance, asset.Month3AgoAssetBalance), Period1Commission = GetPercentDiff(asset.Month2AgoAssetBalance, asset.Month3AgoAssetBalance) > 0.1m ? (asset.Month2AgoAssetBalance - asset.Month3AgoAssetBalance) * theRate : 0.0m, Month1AgoAssetBalance = asset.Month1AgoAssetBalance, Period2Delta = asset.Month1AgoAssetBalance - asset.Month2AgoAssetBalance, Period2Threshold = asset.Month2AgoAssetBalance * 0.1m, Period2PercentChange = GetPercentDiff(asset.Month1AgoAssetBalance, asset.Month2AgoAssetBalance), Period2Commission = GetPercentDiff(asset.Month1AgoAssetBalance, asset.Month2AgoAssetBalance) > 0.1m ? (asset.Month1AgoAssetBalance - asset.Month2AgoAssetBalance) * theRate : 0.0m, MostRecentMonthAssetBalance = asset.MostRecentMonthAssetBalance, Period3Delta = asset.MostRecentMonthAssetBalance - asset.Month1AgoAssetBalance, Period3Threshold = asset.Month1AgoAssetBalance * 0.1m, Period3PercentChange = GetPercentDiff(asset.MostRecentMonthAssetBalance, asset.Month1AgoAssetBalance), Period3Commission = GetPercentDiff(asset.MostRecentMonthAssetBalance, asset.Month1AgoAssetBalance) > 0.1m ? (asset.MostRecentMonthAssetBalance - asset.Month1AgoAssetBalance) * theRate : 0.0m, Rate = theRate, ProductName = asset.ProductName, ProductType = asset.ProductType, Channel = asset.Channel, Region = asset.Channel, Territory = asset.Territory, SalesCredit = asset.Territory, PersonCRDNumber = asset.PersonCRDNumber, PersonFirstName = asset.PersonFirstName, PersonLastName = asset.PersonLastName, PersonId = asset.PersonId, OfficeAddressLine1 = asset.OfficeAddressLine1, OfficeAddressLine2 = asset.OfficeAddressLine2, OfficeCity = asset.OfficeCity, OfficeRegionRefCode = asset.OfficeRegionRefCode, OfficePostalCode = asset.OfficePostalCode, PersonBrokerTeamFlag = asset.PersonBrokerTeamFlag, Month4AgoAssetBalance = asset.Month4AgoAssetBalance, Month5AgoAssetBalance = asset.Month5AgoAssetBalance, Month6AgoAssetBalance = asset.Month6AgoAssetBalance, Month7AgoAssetBalance = asset.Month7AgoAssetBalance, Month8AgoAssetBalance = asset.Month8AgoAssetBalance, Month9AgoAssetBalance = asset.Month9AgoAssetBalance, Month10AgoAssetBalance = asset.Month10AgoAssetBalance, Month11AgoAssetBalance = asset.Month11AgoAssetBalance, Month12AgoAssetBalance = asset.Month11AgoAssetBalance, HoldingAddressLine1 = asset.HoldingAddressLine1, SystemFAName = $"{asset.PersonFirstName} {asset.PersonLastName}", SystemOfficeAddress = asset.FirmName, SystemOfficeState = asset.OfficeRegionRefCode, SystemQEAssets = asset.MostRecentMonthAssetBalance, AssetCheck = 0.0m, SystemRDCredit = asset.Territory, AccountTANumber = asset.HoldingExternalAccountNumber, ExternalAccountNumber = asset.HoldingExternalAccountNumber, IsWhat = true, AccountId = asset.HoldingId }; pf.Period1Flow = pf.Period1PercentChange >= 0.1m; pf.Period2Flow = pf.Period2PercentChange >= 0.1m; pf.Period3Flow = pf.Period3PercentChange >= 0.1m; pf.HasFlow = (pf.Period1Flow || pf.Period2Flow || pf.Period3Flow) && pf.Month3AgoAssetBalance > 0.0m; pf.SumFlows = 0.0m; //pf.Period1Flow + pf.Period2Flow + pf.Period3Flow; pf.SumFlows = pf.Period1Flow ? pf.Period1Delta : 0.0m; pf.SumFlows = pf.Period2Flow ? pf.SumFlows + pf.Period2Delta : 0.0m; pf.SumFlows = pf.Period3Flow ? pf.SumFlows + pf.Period3Delta : 0.0m; pf.SumFlows = pf.Month3AgoAssetBalance > 0.0m ? pf.SumFlows : 0.0m; pf.SumCommission = 0.0m; pf.SumCommission = pf.Period1Commission + pf.Period2Commission + pf.Period3Commission; pf.IsSame = pf.Territory == pf.SalesCredit; pfItems.Add(pf); } } return(pfItems); }
private IEnumerable <GenevaSmaOngoingSummaryDataModel> BuildOngoingSummary() { const LkuRateType.RateType rateType = LkuRateType.RateType.Ongoing; const LkuCommissionType.CommissionType commissionType = LkuCommissionType.CommissionType.SMA; var naSumm = new List <GenevaSmaOngoingSummaryDataModel>(); IEnumerable <GenevaSmaOngoingDetailDataModel> details = BuildOngoingDetail(); var naSummWorking = details .GroupBy(g => new { g.RegionalDirector, g.ConsultantFirm, g.ConsultantName, g.Goal }) .Select(group => new { RD = group.Key.RegionalDirector, Firm = group.Key.ConsultantFirm, Name = group.Key.ConsultantName, Goal = group.Key.Goal, Total = group.Sum(c => c.Total), Inflows = group.Sum(c => c.InFlows), SeasonedValue = group.Sum(c => c.SeasonedValue), Rate = group.Min(c => c.Rate), CommissionAmount = group.Sum(c => c.SeasonedValue) * group.Min(c => c.Rate) }); foreach (var item in naSummWorking) { var summary = new GenevaSmaOngoingSummaryDataModel() { RowLabels = item.RD, ConsultantFirm = item.Firm, ConsultantName = item.Name, Goal = item.Goal, Total = item.Total, Inflows = item.Inflows, SeasonedValue = item.SeasonedValue, Commission = item.CommissionAmount, Rate = item.Rate, AnnualRate = item.Rate * 4 }; naSumm.Add(summary); } //Totals lines var naSummTotals = naSumm .GroupBy(g => new { g.RowLabels }) .Select(group => new { RD = @group.Key.RowLabels, ConsultantFirm = "-----", ConsultantName = "-----", Goal = "-----", Total = @group.Sum(c => c.Total), InFlows = @group.Sum(c => c.Inflows), SeasonedValue = @group.Sum(c => c.SeasonedValue), Rate = @group.Max(c => c.Rate), Commission = @group.Sum(c => c.SeasonedValue) * group.Max(c => c.Rate) }); naSumm.AddRange(naSummTotals.Select(sa => new GenevaSmaOngoingSummaryDataModel() { RowLabels = sa.RD, ConsultantFirm = "z--Totals", ConsultantName = "-----", Goal = "-----", Total = sa.Total, Inflows = sa.InFlows, SeasonedValue = sa.SeasonedValue, Commission = sa.Commission })); return(naSumm.OrderBy(c => c.RowLabels).ThenBy(c => c.ConsultantFirm)); }
IEnumerable <GenevaNewAssetsSummaryDataModel> BuildNewAssetsSummaryData(IEnumerable <GenevaSmaNewAssetsDataModel> naDetail) { const LkuRateType.RateType rateType = LkuRateType.RateType.NewAssets; const LkuCommissionType.CommissionType commissionType = LkuCommissionType.CommissionType.SMA; var naSumm = new List <GenevaNewAssetsSummaryDataModel>(); var naSummWorking = naDetail .GroupBy(g => new { g.InternalMarketingPerson, g.ConsultantFirm, g.ConsultantName, g.Strategy }) .Select(group => new { RD = group.Key.InternalMarketingPerson, Firm = group.Key.ConsultantFirm, Name = group.Key.ConsultantName, Strategy = group.Key.Strategy, Quantity = group.Sum(c => c.Quantity), Amount = group.Sum(c => c.Amount), Rate = group.Min(c => c.CommissionRate), CommissionAmount = group.Sum(c => c.Amount) * group.Min(c => c.CommissionRate) }); foreach (var item in naSummWorking) { var summary = new GenevaNewAssetsSummaryDataModel() { RowLabels = item.RD, ConsultantFirm = item.Firm, ConsultantName = item.Name, Strategy = item.Strategy, Amount = item.Amount, CommissionRate = item.Rate, CommissionAmount = item.CommissionAmount }; naSumm.Add(summary); } //Totals lines var naSummTotals = naSumm .GroupBy(g => new { g.RowLabels }) .Select(group => new { RD = group.Key.RowLabels, IsGood = "-----", Firm = "-----", Name = "-----", Strategy = "-----", Amount = group.Sum(c => c.Amount), Rate = group.Min(c => c.CommissionRate), CommissionAmount = group.Sum(c => c.CommissionAmount) }); foreach (var sa in naSummTotals) { var summary = new GenevaNewAssetsSummaryDataModel() { RowLabels = sa.RD, ConsultantFirm = "z--Totals", Amount = sa.Amount, Strategy = "", CommissionRate = sa.Rate, CommissionAmount = sa.CommissionAmount, }; naSumm.Add(summary); } return(naSumm.OrderBy(c => c.RowLabels).ThenBy(c => c.ConsultantFirm)); }
private IEnumerable <BroadridgeOtherNewAssetsDataModel> BuildUmaNewAssetsDetail() { const LkuRateType.RateType rateType = LkuRateType.RateType.NewAssets; const LkuCommissionType.CommissionType commissionType = LkuCommissionType.CommissionType.UMA; var naItems = new List <BroadridgeOtherNewAssetsDataModel>(); var newTypes = new List <NewAssetTradeType>(); var n = new NewAssetTradeType("Purchase"); newTypes.Add(n); n = new NewAssetTradeType("Transfer In"); newTypes.Add(n); var _sales = _broadridgeSales.Where(c => newTypes.Select(r => r.TradeType).Contains(c.TransactionCodeOverrideDescription)); foreach (var item in _sales) { if (item.Territory != null) { RegionalDirectorRateInfoDataModel rdRateInfo = RegionalDirectorRateInfo(item.Territory, (int)rateType, (int)commissionType); if (rdRateInfo != null) { rdRateInfo.Rate = item.Territory.IndexOf(',') > 0 ? rdRateInfo.Rate / 2 : rdRateInfo.Rate; } var rd = _regionalDirector.FirstOrDefault(r => r.LastName == item.Territory); var rateInfo = GetRateInfo(rd == null ? "House" : rd.RegionalDirectorKey, item.ProductName, false); var theRate = rateInfo?.NewAssetRate ?? 0.0m; var na = new BroadridgeOtherNewAssetsDataModel() { TradeId = item.TradeId, TransactionCodeOverrideDescription = item.TransactionCodeOverrideDescription, TradeDate = item.TradeDate, SettledDate = item.SettledDate, SuperSheetDate = item.SuperSheetDate, TradeAmount = item.TradeAmount, Commission = item.TradeAmount * theRate, Rate = theRate, System = item.System, DealerNum = item.DealerNum, DealerBranchCode = item.DealerBranchBranchCode, RepCode = item.RepCode, FirmId = item.FirmId, FirmName = item.FirmName, OfficeAddressLine1 = item.OfficeAddressLine1, OfficeCity = item.OfficeCity, OfficeRegionRefCode = item.OfficeRegionRefCode, PersonFirstName = item.PersonFirstName, PersonLastName = item.PersonLastName, LineOfBusiness = item.LineOfBusiness, Channel = item.Channel, Region = item.Region, Territory = item.Territory, ProductNasdaqSymbol = item.ProductNasdaqSymbol, ProductName = item.ProductName, AccountTANumber = item.AccountTANumber, AccountId = item.RepCode, ExternalAccountNumber = item.FirmId, HoldingId = item.HoldingId, HoldingName = item.HoldingName, HoldingExternalAccountNumber = item.HoldingExternalAccountNumber }; naItems.Add(na); } } var y = 0; return(naItems.OrderBy(c => c.System).ThenBy(c => c.Territory) .ThenBy(c => c.FirmName)); }