Example #1
0
        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);
        }
Example #2
0
        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);
        }
        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 <BroadridgeNewAssetsDetailDataModel> BuildNewAssetsDetail()
        {
            var naItems = new List <BroadridgeNewAssetsDetailDataModel>();

            foreach (var item in _broadridgeNewAssets)
            {
                var rdRateInfo   = RegionalDirectorRateInfo(item.Territory, (int)LkuRateType.RateType.NewAssets, (int)LkuCommissionType.CommissionType.UMA);
                var _tradeAmount = GetNewAssetAmountFromAssetsList(item);
                try
                {
                    rdRateInfo.Rate = item.Territory.IndexOf(',') > 0 ? rdRateInfo.Rate / 2 : rdRateInfo.Rate;
                }
                catch (Exception e)
                {
                    rdRateInfo      = new RegionalDirectorRateInfoDataModel();
                    rdRateInfo.Rate = 0.0m;
                }

                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 BroadridgeNewAssetsDetailDataModel()
                {
                    TheSystem                   = item.TheSystem,
                    FirmName                    = item.FirmName,
                    FirmId                      = item.FirmId,
                    FirmCrdNumber               = item.FirmCRDNumber,
                    HoldingId                   = item.HoldingId,
                    HoldingExterAccountNumber   = item.HoldingExternalAccountNumber,
                    HoldingName                 = item.HoldingName,
                    HoldingStartDate            = Convert.ToDateTime(item.HoldingStartdate),
                    HoldingCreateDate           = Convert.ToDateTime(item.HoldingStartdate),
                    MostRecentMonthAssetBalance = item.MostRecentMonthAssetBalance,
                    Month1AgoAssetBalance       = item.Month1AgoAssetBalance,
                    Month2AgoAssetBalance       = item.Month2AgoAssetBalance,
                    Month3AgoAssetBalance       = item.Month3AgoAssetBalance,
                    NewAssetValue               = _tradeAmount,
                    Commission                  = _tradeAmount * theRate,
                    Rate                   = theRate,
                    Territory              = item.Territory.Length.Equals(0) ? "Not Found" : item.Territory,
                    SalesRunTerritory      = item.Territory,
                    IsTerritorySame        = true,
                    ProductName            = item.ProductName,
                    ProductType            = item.ProductType,
                    Channel                = item.Channel,
                    Region                 = item.Region,
                    PersonCRDNumber        = item.PersonCRDNumber,
                    PersonFirstName        = item.PersonFirstName,
                    PersonLastName         = item.PersonLastName,
                    OfficeAddressLine1     = item.OfficeAddressLine1,
                    OfficeAddressLine2     = item.OfficeAddressLine2,
                    OfficeCity             = item.OfficeCity,
                    OfficeRegionRefCode    = item.OfficeRegionRefCode,
                    OfficePostalCode       = item.OfficePostalCode,
                    PersonBrokerTeamFlag   = item.PersonBrokerTeamFlag,
                    Month4AgoAssetBalance  = item.Month4AgoAssetBalance,
                    Month5AgoAssetBalance  = item.Month5AgoAssetBalance,
                    Month6AgoAssetBalance  = item.Month6AgoAssetBalance,
                    Month7AgoAssetBalance  = item.Month7AgoAssetBalance,
                    Month8AgoAssetBalance  = item.Month8AgoAssetBalance,
                    Month9AgoAssetBalance  = item.Month9AgoAssetBalance,
                    Month10AgoAssetBalance = item.Month10AgoAssetBalance,
                    Month11AgoAssetBalance = item.Month11AgoAssetBalance,
                    Month12AgoAssetBalance = item.Month12AgoAssetBalance,
                    HoldingAddressLine1    = item.HoldingAddressLine1,
                    SystemFAName           = "?",
                    SystemOfficeAddress    = "?",
                    SystemOfficeState      = item.OfficeRegionRefCode,
                    SystemQEAssets         = item.MostRecentMonthAssetBalance,
                    AssetCheck             = 0.0m,
                    SystemRDCredit         = item.Territory,
                    RDCheck                = "?",
                    AccountTANumber        = item.HoldingId,
                    ExternalAccountNumber  = item.HoldingExternalAccountNumber,
                    AccountId              = item.HoldingId
                };

                if (_tradeAmount > 0)
                {
                    naItems.Add(na);
                }
            }

            return(naItems);
        }
        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 <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));
        }