public void CalculateCompletionEarningsThisFundingYear_Tests() { var aecApprenticeshipPriceEpisodePeriodisedValuesOne = new AecPriceEpisodePeriodisedValueBuilder() .With(ld => ld.LearnRefNumber, "LearningRefNumber") .With(a => a.AimSeqNumber, 1) .With(a => a.Period1, 10) .With(a => a.Period2, 20) .With(a => a.Period3, 30) .Build(); var aecApprenticeshipPriceEpisodePeriodisedValuesTwo = new AecPriceEpisodePeriodisedValueBuilder() .With(ld => ld.LearnRefNumber, "LearningRefNumber") .With(a => a.AimSeqNumber, 2) .With(a => a.Period1, 10) .Build(); var aecPriceEpisodePeriodisedValues = new List <AECApprenticeshipPriceEpisodePeriodisedValues>() { aecApprenticeshipPriceEpisodePeriodisedValuesOne, aecApprenticeshipPriceEpisodePeriodisedValuesTwo }; var learningDelivery = new LearningDeliveryBuilder() .With(ld => ld.LearnRefNumber, "LearningRefNumber") .With(a => a.AimSeqNumber, 1) .Build(); var completionEarningsThisFundingYear = NewBuilder().CalculateCompletionEarningsThisFundingYear(learningDelivery, aecPriceEpisodePeriodisedValues); completionEarningsThisFundingYear.Should().Be(60); }
public void GetTotalPmrBetweenDates_Test() { var appFinRecords = new List <AppFinRecord>() { new AppFindRecordBuilder().With(a => a.AFinCode, 1).With <int>(a => a.AFinAmount, 10).Build(), new AppFindRecordBuilder().With(a => a.AFinCode, 2).With <int>(a => a.AFinAmount, 100).Build(), new AppFindRecordBuilder().With(a => a.AFinCode, 3).With <int>(a => a.AFinAmount, 20).Build(), new AppFindRecordBuilder().With(a => a.AFinDate, new DateTime(2020, 07, 31)).With(a => a.AFinCode, 1) .With <int>(a => a.AFinAmount, 100).Build(), }; var learningDelivery = new LearningDeliveryBuilder() .With(ld => ld.LearnRefNumber, "LearningRefNumber") .With(a => a.AimSeqNumber, 1) .With(ld => ld.AppFinRecords, appFinRecords) .Build(); var totalCollectedCurrentYear = NewBuilder().GetTotalPmrBetweenDates(learningDelivery, _academicYearStart, _nextAcademicYearStart); totalCollectedCurrentYear.Should().Be(90); var totalCollectedPreviousYear = NewBuilder().GetTotalPmrBetweenDates(learningDelivery, null, _academicYearStart); totalCollectedPreviousYear.Should().Be(100); }
public void GetLearningDeliveryForRecordKey() { var matchingLearningDelivery = new LearningDeliveryBuilder() .With(ld => ld.LearnRefNumber, "LearningRefNumber") .Build(); var nonMatchingLearningDelivery = new LearningDeliveryBuilder() .With(ld => ld.LearnRefNumber, "NotLearningRefNumber") .Build(); var learningDeliveries = new List <LearningDelivery>() { matchingLearningDelivery, nonMatchingLearningDelivery, }; var learner = new LearnerBuilder() .With(l => l.LearningDeliveries, learningDeliveries) .Build(); var recordKey = new AppsCoInvestmentRecordKey( "LearnRefNumber", new DateTime(2020, 8, 1), 20, 40, 10, 30); NewBuilder().GetLearningDeliveryForRecord(learner, recordKey).Should().BeSameAs(matchingLearningDelivery); }
public void HasLdm356Or361_Tests(string type, string code, bool result) { var learningDeliveryFam = new LearningDeliveryFamBuilder() .With(ldfam => ldfam.Type, type) .With(ldfam => ldfam.Code, code) .Build(); var learningDeliveryFams = new List <LearningDeliveryFam> { learningDeliveryFam }; var learningDelivery = new LearningDeliveryBuilder() .With(ld => ld.LearnRefNumber, "LearningRefNumber") .With(ld => ld.LearningDeliveryFams, learningDeliveryFams) .Build(); NewBuilder().HasLdm356Or361(learningDelivery).Should().Be(result); }
public void PMRAppFinRecordFilter_Test() { var appFinRecordsPmr = new List <AppFinRecord>() { new AppFindRecordBuilder().With(a => a.AFinType, "PMR").With(a => a.AFinCode, 1).Build(), new AppFindRecordBuilder().With(a => a.AFinType, "PMR").With(a => a.AFinCode, 2).Build() }; var appFinRecordsNonPmr = new List <AppFinRecord>() { new AppFindRecordBuilder().With(a => a.AFinType, "TNP").With(a => a.AFinCode, 1).With <int>(a => a.AFinAmount, 10).Build(), }; var learningDeliveryOne = new LearningDeliveryBuilder() .With(ld => ld.LearnRefNumber, "LearningRefNumber1") .With(ld => ld.FundModel, 36) .With(a => a.AimSeqNumber, 1) .With(ld => ld.AppFinRecords, appFinRecordsPmr) .Build(); var learningDeliveryTwo = new LearningDeliveryBuilder() .With(ld => ld.LearnRefNumber, "LearningRefNumber2") .With(ld => ld.FundModel, 36) .With(a => a.AimSeqNumber, 2) .Build(); var nonPmrlearningDelivery = new LearningDeliveryBuilder() .With(ld => ld.LearnRefNumber, "LearningRefNumber3") .With(ld => ld.FundModel, 36) .With(ld => ld.AppFinRecords, appFinRecordsNonPmr) .Build(); var learningDeliveries = new List <LearningDelivery>() { learningDeliveryOne, learningDeliveryTwo, nonPmrlearningDelivery }; var nonPmrLearningDeliveries = new List <LearningDelivery> { nonPmrlearningDelivery }; var learnerOne = new LearnerBuilder() .With(l => l.LearnRefNumber, "LearningRefNumber1") .With(l => l.LearningDeliveries, learningDeliveries) .Build(); var learnerTwo = new LearnerBuilder() .With(l => l.LearnRefNumber, "LearningRefNumber2") .With(l => l.LearningDeliveries, learningDeliveries) .Build(); var learnerThree = new LearnerBuilder() .With(l => l.LearnRefNumber, "LearningRefNumber3") .With(l => l.LearningDeliveries, nonPmrLearningDeliveries) .Build(); var learnerFour = new LearnerBuilder() .With(l => l.LearnRefNumber, "LearningRefNumber4") .Build(); var learners = new List <Learner> { learnerOne, learnerTwo, learnerThree, learnerFour }; NewBuilder().PMRAppFinRecordFilter(learners, "LearningRefNumber1").Should().BeTrue(); NewBuilder().PMRAppFinRecordFilter(learners, "LearningRefNumber2").Should().BeTrue(); NewBuilder().PMRAppFinRecordFilter(learners, "LearningRefNumber3").Should().BeFalse(); NewBuilder().PMRAppFinRecordFilter(learners, "LearningRefNumber4").Should().BeFalse(); }
public void GetRelevantLearners_Test() { var appFinRecordsPmr = new List <AppFinRecord>() { new AppFindRecordBuilder().With(a => a.AFinType, "PMR").With(a => a.AFinCode, 1).Build(), new AppFindRecordBuilder().With(a => a.AFinType, "PMR").With(a => a.AFinCode, 2).Build() }; var appFinRecordsNonPmr = new List <AppFinRecord>() { new AppFindRecordBuilder().With(a => a.AFinType, "TNP").With(a => a.AFinCode, 1).With <int>(a => a.AFinAmount, 10).Build(), }; var learningDeliveryOne = new LearningDeliveryBuilder() .With(ld => ld.LearnRefNumber, "LearningRefNumber1") .With(ld => ld.FundModel, 36) .With(a => a.AimSeqNumber, 1) .With(ld => ld.AppFinRecords, appFinRecordsPmr) .Build(); var learningDeliveryTwo = new LearningDeliveryBuilder() .With(ld => ld.LearnRefNumber, "LearningRefNumber2") .With(ld => ld.FundModel, 36) .With(a => a.AimSeqNumber, 2) .Build(); var nonPmrlearningDelivery = new LearningDeliveryBuilder() .With(ld => ld.LearnRefNumber, "LearningRefNumber3") .With(ld => ld.FundModel, 36) .With(ld => ld.AppFinRecords, appFinRecordsNonPmr) .Build(); var learningDeliveries = new List <LearningDelivery>() { learningDeliveryOne, learningDeliveryTwo, nonPmrlearningDelivery }; var nonPmrLearningDeliveries = new List <LearningDelivery> { nonPmrlearningDelivery }; var paymentOne = new PaymentBuilder() .With(p => p.LearnerReferenceNumber, "LearningRefNumber3") .With <byte>(p => p.FundingSource, 3) .With <byte>(p => p.CollectionPeriod, 1).Build(); var paymentTwo = new PaymentBuilder() .With(p => p.LearnerReferenceNumber, "LearningRefNumber4") .With <byte>(p => p.FundingSource, 3) .With <byte>(p => p.CollectionPeriod, 1).Build(); var paymentThree = new PaymentBuilder() .With(p => p.LearnerReferenceNumber, "LearningRefNumber5") .With <byte>(p => p.FundingSource, 2) .With <byte>(p => p.CollectionPeriod, 1).Build(); var payments = new List <Payment>() { paymentOne, paymentTwo, paymentThree }; var learnerOne = new LearnerBuilder() .With(l => l.LearnRefNumber, "LearningRefNumber1") .With(l => l.LearningDeliveries, learningDeliveries) .Build(); var learnerTwo = new LearnerBuilder() .With(l => l.LearnRefNumber, "LearningRefNumber2") .With(l => l.LearningDeliveries, learningDeliveries) .Build(); var learnerThree = new LearnerBuilder() .With(l => l.LearnRefNumber, "LearningRefNumber3") .With(l => l.LearningDeliveries, nonPmrLearningDeliveries) .Build(); var learnerFour = new LearnerBuilder() .With(l => l.LearnRefNumber, "LearningRefNumber4") .Build(); var learnerFive = new LearnerBuilder() .With(l => l.LearnRefNumber, "LearningRefNumber5") .Build(); var learners = new List <Learner> { learnerOne, learnerTwo, learnerThree, learnerFour, learnerFive }; var relevantLearners = NewBuilder().GetRelevantLearners(learners, payments).ToList(); relevantLearners.Count().Should().Be(3); relevantLearners.Contains(learnerOne.LearnRefNumber).Should().BeTrue(); relevantLearners.Contains(learnerTwo.LearnRefNumber).Should().BeTrue(); relevantLearners.Contains(learnerThree.LearnRefNumber).Should().BeTrue(); relevantLearners.Contains(learnerFour.LearnRefNumber).Should().BeFalse(); relevantLearners.Contains(learnerFive.LearnRefNumber).Should().BeFalse(); }
private void PopulateLearningDelivery(int ukprn, ILearner learner, ILearningDelivery learningDelivery, int learnerId, int deliveryId, InvalidLearnerData invalidLearnerData) { invalidLearnerData.RecordsInvalidLearningDeliverys.Add(LearningDeliveryBuilder.BuildInvalidLearningDelivery(ukprn, learner, learningDelivery, learnerId, deliveryId)); }
public void BuildEarningsAndPayments() { var paymentOne = new PaymentBuilder() .With <byte>(p => p.FundingSource, 2) .With <byte>(p => p.TransactionType, 3) .With(p => p.Amount, 10) .With <short>(p => p.AcademicYear, 1920) .With <byte>(p => p.DeliveryPeriod, 1) .With <byte>(p => p.CollectionPeriod, 1).Build(); var paymentTwo = new PaymentBuilder() .With <byte>(p => p.FundingSource, 2) .With <byte>(p => p.TransactionType, 2) .With(p => p.Amount, 20) .With <short>(p => p.AcademicYear, 1920) .With <byte>(p => p.DeliveryPeriod, 1) .With <byte>(p => p.CollectionPeriod, 1).Build(); var paymentThree = new PaymentBuilder() .With <byte>(p => p.TransactionType, 1) .With(p => p.Amount, 30) .With <short>(p => p.AcademicYear, 1920) .With <byte>(p => p.DeliveryPeriod, 2) .With <byte>(p => p.CollectionPeriod, 1).Build(); var paymentFour = new PaymentBuilder() .With <byte>(p => p.TransactionType, 3) .With(p => p.Amount, 40) .With <short>(p => p.AcademicYear, 1920) .With <byte>(p => p.DeliveryPeriod, 2) .With <byte>(p => p.CollectionPeriod, 2).Build(); var paymentFive = new PaymentBuilder() .With <byte>(p => p.TransactionType, 2) .With(p => p.Amount, 50) .With <short>(p => p.AcademicYear, 2021) .With <byte>(p => p.DeliveryPeriod, 2) .With <byte>(p => p.CollectionPeriod, 1).Build(); var paymentSix = new PaymentBuilder() .With <byte>(p => p.TransactionType, 3) .With(p => p.Amount, 60) .With <short>(p => p.AcademicYear, 2021) .With <byte>(p => p.DeliveryPeriod, 2) .With <byte>(p => p.CollectionPeriod, 2).Build(); var allPayments = new List <Payment>() { paymentOne, paymentTwo, paymentThree, paymentFour, paymentFive, paymentSix }; var filteredPayments = new List <Payment>() { paymentThree, paymentFour, paymentFive, paymentSix }; var aecApprenticeshipPriceEpisodePeriodisedValuesOne = new AecPriceEpisodePeriodisedValueBuilder() .With(ld => ld.LearnRefNumber, "LearningRefNumber") .With(a => a.AimSeqNumber, 1) .With(a => a.Period1, 10) .With(a => a.Period2, 20) .With(a => a.Period3, 30) .Build(); var aecApprenticeshipPriceEpisodePeriodisedValuesTwo = new AecPriceEpisodePeriodisedValueBuilder() .With(ld => ld.LearnRefNumber, "LearningRefNumber") .With(a => a.AimSeqNumber, 2) .With(a => a.Period1, 10) .Build(); var aecPriceEpisodePeriodisedValues = new List <AECApprenticeshipPriceEpisodePeriodisedValues>() { aecApprenticeshipPriceEpisodePeriodisedValuesOne, aecApprenticeshipPriceEpisodePeriodisedValuesTwo }; var appFinRecords = new List <AppFinRecord>() { new AppFindRecordBuilder().With(a => a.AFinCode, 1).With <int>(a => a.AFinAmount, 10).Build(), new AppFindRecordBuilder().With(a => a.AFinCode, 2).With <int>(a => a.AFinAmount, 100).Build(), new AppFindRecordBuilder().With(a => a.AFinCode, 3).With <int>(a => a.AFinAmount, 20).Build(), new AppFindRecordBuilder().With(a => a.AFinDate, new DateTime(2020, 07, 31)).With(a => a.AFinCode, 1) .With <int>(a => a.AFinAmount, 100).Build(), }; var learningDelivery = new LearningDeliveryBuilder() .With(ld => ld.LearnRefNumber, "LearningRefNumber") .With(a => a.AimSeqNumber, 1) .With(ld => ld.AppFinRecords, appFinRecords) .Build(); var earningsAndPayments = NewBuilder().BuildEarningsAndPayments(filteredPayments, allPayments, learningDelivery, aecPriceEpisodePeriodisedValues, _currentAcademicYear, _academicYearStart, _nextAcademicYearStart, _previousYearClosedReturnPeriod); earningsAndPayments.CoInvestmentPaymentsDueFromEmployer.August.Should().Be(50); earningsAndPayments.CoInvestmentPaymentsDueFromEmployer.September.Should().Be(60); earningsAndPayments.CompletionEarningThisFundingYear.Should().Be(60); earningsAndPayments.CompletionPaymentsThisFundingYear.Should().Be(50); earningsAndPayments.TotalCoInvestmentDueFromEmployerInPreviousFundingYears.Should().Be(70); earningsAndPayments.TotalCoInvestmentDueFromEmployerThisFundingYear.Should().Be(110); earningsAndPayments.TotalPMRPreviousFundingYears.Should().Be(100); earningsAndPayments.TotalPMRThisFundingYear.Should().Be(90); earningsAndPayments.EmployerCoInvestmentPercentage.Should().Be(10.00m); Math.Round(earningsAndPayments.PercentageOfCoInvestmentCollected, 2).Should().Be(105.56m); }
private void PopulateLearningDelivery(int ukprn, ILearner learner, ILearningDelivery learningDelivery, ValidLearnerData validLearnerData) { validLearnerData.RecordsValidLearningDeliverys.Add(LearningDeliveryBuilder.BuildValidLearningDelivery(ukprn, learner, learningDelivery)); }