Exemple #1
0
        public Payout CalculateCommissionsPayout(DateTime startDate, DateTime endDate, Distributor distributor)
        {
            var volume = distributor.CalculateVolume(startDate, endDate);

            var highestTier = _qualificationsService.GetHighestQualifiedTier(Tiers, distributor, volume);

            if (highestTier == null)
            {
                return(null);
            }

            distributor.Status.CommissionTier = highestTier;

            var commissions = volume.PersonalCommissionableVolume * highestTier.CommissionPercentage;

            var totalQualifiedIncentive = _incentivesService
                                          .GetQualifiedIncentiveTotal(
                distributor.Status.CommissionTier.Incentives, distributor, volume);

            var totalImplicitIncentive = _incentivesService
                                         .GetImplicitIncentiveTotal(
                distributor.Status.CommissionTier.Incentives, distributor, volume);

            return(new Payout
            {
                CommissionablePayoutAmout = commissions,
                IncentivePayoutAmount = totalQualifiedIncentive + totalImplicitIncentive
            });
        }
Exemple #2
0
            public virtual bool IsQualified(Distributor distributor)
            {
                var day30total = distributor.CalculateVolume(distributor.ActivationDate,
                                                             distributor.ActivationDate.AddDays(30))
                                 .PersonalRetailVolume;
                var day60total =
                    distributor.CalculateVolume(distributor.ActivationDate, distributor.ActivationDate.AddDays(60))
                    .PersonalRetailVolume;


                //TODO: Configurable Properties
                return(!distributor.Status.IsDeactivated &&
                       distributor.ActivationDate >= DateTime.UtcNow.AddDays(-60) &&
                       day30total >= 450 &&
                       day60total >= 900);

                //distributor.CalculateVolume(distributor.ActivationDate, distributor.ActivationDate.AddDays(30))
                //    .PersonalRetailVolume >= 450
                //&&
                //distributor.CalculateVolume(distributor.ActivationDate, distributor.ActivationDate.AddDays(60))
                //    .PersonalRetailVolume >= 900;
            }