Example #1
0
 public decimal GetPremium(ElectionData electionData)
 {
     var benefitElecitonAdminFees = m_benefitElectionAdminFeeCalculator.GetBenefitElectionAdminFees(electionData);
     var userCreditAmount = m_userCreditAmountCalculator.GetUserCreditAmount(electionData);
     var adminFeePremium = benefitElecitonAdminFees.FindAll(a => a.IncludeInPremium).Sum(a => a.Premium);
     return electionData.BasicPremiumCost + adminFeePremium + userCreditAmount.Premium;
 }
        public decimal GetAfterTaxMonthly(ElectionData electionData)
        {
            var plan = m_planRepository.SelectClientBenefitPlan(electionData.PlanID);
            var employee = m_userRepository.GetEmployee(electionData.ParentUserID);
            var payrollScheduleDetails =
                m_payrollScheduleDetailRepository.SelectPayrollScheduleDetails(employee.PayrollScheduleID,
                    plan.EffectiveDate);
            m_electionData = electionData;
            var medicalPlanTypes = new List<int> { MedicalPlanTypeID };
            m_medicalElections = m_benefitElectionRepository.SelectBenefitElections(m_electionData.ParentUserID,
                medicalPlanTypes);

            var tierPrePayValue = m_tierPrePayValueRepository.GeTierPrePayValue(m_electionData.TierID);
            var userPrePayAmountPaid = m_userPrePayAmountPaidRepository.GetUserPrePayAmount(
                m_electionData.ParentUserID, tierPrePayValue.PrePayYear);

            var incrementalAfterTax = GetAfterTaxIncrementalAmount();
            var numPayPeriodsRemainings = GetPrePaidPeriodsRemaining(payrollScheduleDetails);
            var afterTaxScheduled = incrementalAfterTax*numPayPeriodsRemainings;
            var afterTaxAmountDue = GetPrePayAfterTaxDue();

            var balanceAfterTax = afterTaxAmountDue - afterTaxScheduled - userPrePayAmountPaid.AfterTaxPaid;
            var payPeriods = m_payPeriodsPerAnumCalculator.GetEmployeePayPeriodsPerAnnum(electionData.ParentUserID,
                electionData.ParentUserID);
            var afterTaxMonthly =  ((balanceAfterTax/numPayPeriodsRemainings) * (payPeriods )) / (decimal) 12.0;
            return afterTaxMonthly;
        }
 public decimal GetPremiumOverride(ElectionData electionData)
 {
     var basicPremiumOverride = m_basicPremiumOverrideCalculator.GetPremiumOverride(electionData);
     var benefitElectionAdminFees = m_benefitElectionAdminFeeCalculator.GetBenefitElectionAdminFees(electionData);
     var adminFeePremiumOverride = benefitElectionAdminFees.FindAll(a => a.IncludeInPremiumOverride).Sum(a => a.PremiumOverride);
     return basicPremiumOverride + adminFeePremiumOverride;
 }
 public decimal GetEmployeeMonthlyDeduction(ElectionData electionData)
 {
     m_electionData = electionData;
     var plan = m_planRepository.SelectClientBenefitPlan(electionData.PlanID);
     if (!plan.PrePayPlan) return 0;
     return GetSummerPrePayClientDeductionPerPay();
 }
 public TierAfterTaxAndImputedIncome GetEligibleRecord(ElectionData electionData)
 {
     var coveredUsers = electionData.CoveredUsers;
     m_coveredDependents = m_coveredDependentSelector.SelectCoveredDependents(electionData.ParentUserID, coveredUsers);
     m_tierAfterTaxAndImputedIncomeList = m_tierAfterTaxAndImputedIncomeRepository.GetTierAfterTaxAmdImputedIncome(electionData.TierID,
                                                         electionData.PlanID);
     return SelectTierAfterTaxAndImputedIncome();
 }
 public decimal GetImputedIncomeMonthly(ElectionData electionData)
 {
     m_electionData = electionData;
     var coverage = m_lifeImputedIncomeCoverageCalculator.GetImputedIncomeCoverage(electionData);
     var imputedIncomeCost = GetImputedIncomeCost();
     var monthlyCost =  CalculateImputedIncomeMonthlyCostForCoverage(imputedIncomeCost, coverage);
     return monthlyCost;
 }
 public Models.PreviousPlan SelectPreviousPlan(ElectionData electionData)
 {
     var planTypes = new List<int>() {electionData.PlanTypeID};
     var benefitElections = m_benefitElectionRepository.SelectBenefitElections(electionData.ParentUserID,
         planTypes);
     var benefitElection =  benefitElections.OrderByDescending(a => a.BenefitEndDate).FirstOrDefault();
     if (benefitElection == null) return new Models.PreviousPlan();
     return new Models.PreviousPlan() {PreviousPlanID = benefitElection.PreviousPlanID, PreviousPlanNetwork  = benefitElection.PreviousPlanNetwork };
 }
 public DateTime GetElectionStartDate(ElectionData electionData)
 {
     var planTypes = new List<int> {electionData.PlanTypeID};
     var elections = m_benefitElectionRepository.SelectBenefitElections(electionData.ParentUserID, planTypes);
     var dayBeforeEffectiveDate = electionData.EffectiveDate.AddDays(-1);
     var electionDayBeforeEffectiveDate =
         elections.FirstOrDefault(
             a => a.BenefitStartDate <= dayBeforeEffectiveDate && a.BenefitEndDate >= dayBeforeEffectiveDate);
     if (electionDayBeforeEffectiveDate == null) return electionData.EffectiveDate;
     return !IsPlanWaive(electionDayBeforeEffectiveDate.PlanID) ? electionDayBeforeEffectiveDate.ElectionStartDate : electionData.EffectiveDate;
 }
 public decimal GetImputedIncomeMonthly(ElectionData electionData)
 {
     if (IsLifeImputedIncomeHolderPlanType(electionData.ClientID, electionData.PlanTypeID))
     {
         return m_lifeImputedIncomeCalculator.GetImputedIncomeMonthly(electionData);
     }
     else
     {
         return m_nonLifeImputedIncomeCalculator.GetImputedIncomeMonthly(electionData);
     }
 }
 public decimal GetPremiumOverride(ElectionData electionData)
 {
     var plan = m_planRepository.SelectClientBenefitPlan(electionData.PlanID);
     if (plan.AgeBanding)
     {
         return m_ageBandedPremiumOverrideCalculator.GetPremiumOverride(electionData);
     }
     else
     {
         return m_nonAgeBandedPremiumOverrideCalculator.GetPremiumOverride(electionData);
     }
 }
 public decimal GetAfterTaxmonthly(ElectionData electionData)
 {
     var plan = m_planRepository.SelectClientBenefitPlan(electionData.PlanID);
     if (plan.AgeBanding)
     {
         var tierCostsAgeBand = m_tierCostsAgeBandRepository.SelectTierCostsAgeBand(electionData.TierID);
         return tierCostsAgeBand.AfterTax;
     }
     var rateDiscriminator = m_userRateDiscriminatorCalculator.GetRateDiscriminator(
         electionData.ParentUserID, electionData.PlanTypeID);
     var tierCost = m_tierCostRepository.SelectTierCost(electionData.TierID);
     return tierCost.AfterTax;
 }
 public UserCreditAmount GetUserCreditAmount(ElectionData electionData)
 {
     var userCreditAmount = new UserCreditAmount();
     var userCreditResponses = m_userCreditResponseRepository.SelectUserCreditResponses(electionData.ParentUserID, electionData.EffectiveDate);
     var baseTierID = m_baseTierCalculator.GetBaseTierID(electionData.PlanID, electionData.TierID);
     foreach (var userCreditResponse in userCreditResponses.FindAll(a => ((a.PlanTypeMask & electionData.PlanTypeID) == electionData.PlanTypeID )
                                                                     && ((a.TierMask & baseTierID) == baseTierID)))
     {
         userCreditAmount.Premium = userCreditAmount.Premium + userCreditResponse.PremiumAmount;
         userCreditAmount.EmployeeMonthlyCost = userCreditAmount.EmployeeMonthlyCost + userCreditResponse.EmployeeAmount;
         userCreditAmount.EmployerMonthlyCost = userCreditAmount.EmployerMonthlyCost + userCreditResponse.EmployerAmount;
     }
     return userCreditAmount;
 }
 public List<BenefitElectionAdminFee> GetBenefitElectionAdminFees(ElectionData electionData)
 {
     m_electionData = electionData;
     var premiumOverride = m_premiumOverrideCalculator.GetPremiumOverride(electionData);
     var adminFees = m_adminFeeRepository.SelectAdminFees(electionData.PlanID, electionData.TierID);
     var benefitElectionAdminFees = new List<BenefitElectionAdminFee>();
     foreach(AdminFee adminFee in adminFees)
     {
         if (adminFee.AdminFeeCalculationTypeID == (int)AdminFeeCalculationType.FlatFee)
         {
             benefitElectionAdminFees.Add(GetFlatBenefitElectionAdminFee(adminFee));
         }
         else
         {
             benefitElectionAdminFees.Add(GetNonFlatBenefitElectionAdminFee(adminFee, premiumOverride));
         }
     }
     return benefitElectionAdminFees;
 }
 public decimal GetPremiumOverride(ElectionData electionData)
 {
     var tier = m_tierCostRepository.SelectTierCost(electionData.TierID);
     return tier.PremiumOverride;
 }
Example #15
0
 public decimal GetAfterTax(ElectionData electionData)
 {
     var basicAfterTax = m_basicAfterTaxCalculator.GetAfterTaxmonthly(electionData);
     var summerPrePayAfterTax = m_summerPrePayAfterTaxCalculator.GetAfterTaxMonthly(electionData);
     return basicAfterTax + summerPrePayAfterTax;
 }
 public decimal GetImputedIncomeCoverage(ElectionData electionData)
 {
     m_electionData = electionData;
     var coverageSum = CalculateTotalCoverageOfImputedIncomePlanTypes();
     return GetImputedIncomeCoverage(coverageSum);
 }
 public decimal GetImputedIncomeMonthly(ElectionData electionData)
 {
     var tierAfterTaxAndImputedIncome = m_tierAfterTaxAndImputedIncomeSelector.GetEligibleRecord(electionData);
     return tierAfterTaxAndImputedIncome.ImputedIncome;
 }
 public decimal GetPremiumOverride(ElectionData electionData)
 {
     m_electionData = electionData;
     var tier = m_tierCostsAgeBandRepository.SelectTierCostsAgeBand(electionData.TierID);
     return tier.FlatRate ? tier.PremiumOverride : CalcPremiumOverrideForNotFlatRateTier(tier);
 }