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; }
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); }