コード例 #1
0
        /// <summary>
        /// Learning delivery funding and monitoring type – apprenticeship contract type
        /// Learning delivery funding and monitoring type – ACT date applies from
        /// Learning delivery funding and monitoring type – ACT date applies to
        /// </summary>
        /// <param name="learningDelivery">The learning delivery which is not null along with the LearningDeliveryFAMs</param>
        /// <param name="model">The row model.</param>
        /// <param name="fm36DeliveryAttribute">The Fm36 delivery attribute.</param>
        /// <param name="fm36PriceEpisodeAttribute">The Fm36 price episode attribute.</param>
        /// <param name="hasPriceEpisodes">Flag indicating whether there are price episodes.</param>
        private void CalculateApprenticeshipContractTypeFields(
            ILearningDelivery learningDelivery,
            AppsIndicativeEarningsModel model,
            LearningDelivery fm36DeliveryAttribute,
            PriceEpisode fm36PriceEpisodeAttribute,
            bool hasPriceEpisodes)
        {
            bool learnDelMathEng          = fm36DeliveryAttribute?.LearningDeliveryValues?.LearnDelMathEng ?? false;
            bool useDeliveryAttributeDate = learnDelMathEng || !hasPriceEpisodes;

            ILearningDeliveryFAM[] acts = learningDelivery.LearningDeliveryFAMs.Where(x =>
                                                                                      string.Equals(x.LearnDelFAMType, Constants.LearningDeliveryFAMCodeACT, StringComparison.OrdinalIgnoreCase)).ToArray();

            if (acts.All(x => x.LearnDelFAMDateFromNullable == null))
            {
                return;
            }

            DateTime contractAppliesFrom = acts.Where(x =>
                                                      (useDeliveryAttributeDate && learningDelivery.LearnStartDate >= x.LearnDelFAMDateFromNullable) ||
                                                      (!useDeliveryAttributeDate && fm36PriceEpisodeAttribute?.PriceEpisodeValues.EpisodeStartDate >= x.LearnDelFAMDateFromNullable))
                                           .Select(x => x.LearnDelFAMDateFromNullable ?? DateTime.MinValue)
                                           .DefaultIfEmpty(DateTime.MinValue)
                                           .Max();

            DateTime contractAppliesTo = acts.Where(x =>
                                                    (useDeliveryAttributeDate && learningDelivery.LearnStartDate <= x.LearnDelFAMDateToNullable) ||
                                                    (!useDeliveryAttributeDate && fm36PriceEpisodeAttribute?.PriceEpisodeValues.EpisodeStartDate <= x.LearnDelFAMDateToNullable))
                                         .Select(x => x.LearnDelFAMDateToNullable ?? DateTime.MinValue)
                                         .DefaultIfEmpty(DateTime.MinValue)
                                         .Min();

            model.LearningDeliveryFAMTypeACTDateAppliesFrom = contractAppliesFrom == DateTime.MinValue ? $"" : contractAppliesFrom.ToString("dd/MM/yyyy");
            model.LearningDeliveryFAMTypeACTDateAppliesTo   = contractAppliesTo == DateTime.MinValue ? $"" : contractAppliesTo.ToString("dd/MM/yyyy");

            if (contractAppliesTo == DateTime.MinValue)
            {
                model.LearningDeliveryFAMTypeApprenticeshipContractType = acts.FirstOrDefault(x => x.LearnDelFAMDateToNullable == null)?.LearnDelFAMCode;
            }
            else
            {
                model.LearningDeliveryFAMTypeApprenticeshipContractType = acts.FirstOrDefault(x =>
                                                                                              x.LearnDelFAMDateFromNullable == contractAppliesFrom &&
                                                                                              x.LearnDelFAMDateToNullable == contractAppliesTo)?.LearnDelFAMCode;
            }
        }
コード例 #2
0
        /// <summary>
        /// Total employer contribution collected (PMR) in previous funding years &
        /// Total employer contribution collected (PMR) in this funding year
        /// </summary>
        /// <param name="model">The model to populate.</param>
        /// <param name="learningDelivery">The learning delivery.</param>
        private void CalculateAppFinTotals(AppsIndicativeEarningsModel model, ILearningDelivery learningDelivery)
        {
            if (learningDelivery.AppFinRecords == null)
            {
                return;
            }

            List <IAppFinRecord> previousYearData = learningDelivery.AppFinRecords
                                                    .Where(x => x.AFinDate < Constants.BeginningOfYear &&
                                                           string.Equals(x.AFinType, "PMR", StringComparison.OrdinalIgnoreCase)).ToList();
            List <IAppFinRecord> currentYearData = learningDelivery.AppFinRecords
                                                   .Where(x => x.AFinDate >= Constants.BeginningOfYear && x.AFinDate <= Constants.EndOfYear &&
                                                          string.Equals(x.AFinType, "PMR", StringComparison.OrdinalIgnoreCase)).ToList();

            model.TotalPRMPreviousFundingYear =
                previousYearData.Where(x => x.AFinCode == 1 || x.AFinCode == 2).Sum(x => x.AFinAmount) -
                previousYearData.Where(x => x.AFinCode == 3).Sum(x => x.AFinAmount);

            model.TotalPRMThisFundingYear =
                currentYearData.Where(x => x.AFinCode == 1 || x.AFinCode == 2).Sum(x => x.AFinAmount) -
                currentYearData.Where(x => x.AFinCode == 3).Sum(x => x.AFinAmount);
        }
        public void Execute(AppsIndicativeEarningsModel model, LearningDelivery LearningDelivery, PriceEpisode episodeAttribute)
        {
            model.FebruaryOnProgrammeEarnings =
                episodeAttribute?.PriceEpisodePeriodisedValues
                ?.SingleOrDefault(att => string.Equals(att.AttributeName, Constants.Fm36PriceEpisodeOnProgPaymentAttributeName, StringComparison.OrdinalIgnoreCase))?.Period7 ?? 0;

            model.FebruaryBalancingPaymentEarnings =
                episodeAttribute?.PriceEpisodePeriodisedValues
                ?.SingleOrDefault(att => string.Equals(att.AttributeName, Constants.Fm3PriceEpisodeBalancePaymentAttributeName, StringComparison.OrdinalIgnoreCase))?.Period7 ?? 0;

            model.FebruaryAimCompletionEarnings =
                episodeAttribute?.PriceEpisodePeriodisedValues
                ?.SingleOrDefault(att => string.Equals(att.AttributeName, Constants.Fm36PriceEpisodeCompletionPaymentAttributeName, StringComparison.OrdinalIgnoreCase))?.Period7 ?? 0;

            model.FebruaryLearningSupportEarnings = LearningDelivery?.LearningDeliveryValues?.LearnDelMathEng ?? false
                    ? LearningDelivery.LearningDeliveryPeriodisedValues
                                                    ?.SingleOrDefault(att => string.Equals(att.AttributeName, Constants.Fm36LearnSuppFundCashAttributeName, StringComparison.OrdinalIgnoreCase))?.Period7 ?? 0
                    : episodeAttribute?.PriceEpisodePeriodisedValues
                                                    ?.SingleOrDefault(att => string.Equals(att.AttributeName, Constants.Fm36PriceEpisodeLSFCashAttributeName, StringComparison.OrdinalIgnoreCase))?.Period7 ?? 0;

            model.FebruaryEnglishMathsOnProgrammeEarnings =
                LearningDelivery?.LearningDeliveryPeriodisedValues
                ?.SingleOrDefault(att => string.Equals(att.AttributeName, Constants.Fm36MathEngOnProgPaymentAttributeName, StringComparison.OrdinalIgnoreCase))?.Period7 ?? 0;

            model.FebruaryEnglishMathsBalancingPaymentEarnings =
                LearningDelivery?.LearningDeliveryPeriodisedValues
                ?.SingleOrDefault(att => string.Equals(att.AttributeName, Constants.Fm36MathEngBalPayment, StringComparison.OrdinalIgnoreCase))?.Period7 ?? 0;

            model.FebruaryDisadvantageEarnings =
                (episodeAttribute?.PriceEpisodePeriodisedValues
                 ?.SingleOrDefault(att => string.Equals(att.AttributeName, Constants.Fm36PriceEpisodeFirstDisadvantagePaymentAttributeName, StringComparison.OrdinalIgnoreCase))?.Period7 ?? 0)
                + (episodeAttribute?.PriceEpisodePeriodisedValues
                   ?.SingleOrDefault(att => string.Equals(att.AttributeName, Constants.Fm36PriceEpisodeSecondDisadvantagePaymentAttributeName, StringComparison.OrdinalIgnoreCase))?.Period7 ?? 0);

            model.February1618AdditionalPaymentForEmployers =
                (episodeAttribute?.PriceEpisodePeriodisedValues
                 ?.SingleOrDefault(att => string.Equals(att.AttributeName, Constants.Fm36PriceEpisodeFirstEmp1618PayAttributeName, StringComparison.OrdinalIgnoreCase))?.Period7 ?? 0)
                + (episodeAttribute?.PriceEpisodePeriodisedValues
                   ?.SingleOrDefault(att => string.Equals(att.AttributeName, Constants.Fm36PriceEpisodeSecondEmp1618PayAttributeName, StringComparison.OrdinalIgnoreCase))?.Period7 ?? 0);

            model.February1618AdditionalPaymentForProviders =
                (episodeAttribute?.PriceEpisodePeriodisedValues
                 ?.SingleOrDefault(att => string.Equals(att.AttributeName, Constants.Fm36PriceEpisodeFirstProv1618PayAttributeName, StringComparison.OrdinalIgnoreCase))?.Period7 ?? 0)
                + (episodeAttribute?.PriceEpisodePeriodisedValues
                   ?.SingleOrDefault(att => string.Equals(att.AttributeName, Constants.Fm36PriceEpisodeSecondProv1618PayAttributeName, StringComparison.OrdinalIgnoreCase))?.Period7 ?? 0);

            model.FebruaryAdditionalPaymentsForApprentices =
                episodeAttribute?.PriceEpisodePeriodisedValues
                ?.SingleOrDefault(att => string.Equals(att.AttributeName, Constants.Fm36PriceEpisodeLearnerAdditionalPaymentAttributeName, StringComparison.OrdinalIgnoreCase))?.Period7 ?? 0;

            model.February1618FrameworkUpliftOnProgrammePayment =
                episodeAttribute?.PriceEpisodePeriodisedValues
                ?.SingleOrDefault(att =>
                                  string.Equals(att.AttributeName, Constants.Fm36PriceEpisodeApplic1618FrameworkUpliftOnProgPaymentAttributeName, StringComparison.OrdinalIgnoreCase))?.Period7 ?? 0;

            model.February1618FrameworkUpliftBalancingPayment =
                episodeAttribute?.PriceEpisodePeriodisedValues
                ?.SingleOrDefault(att =>
                                  string.Equals(att.AttributeName, Constants.Fm36PriceEpisodeApplic1618FrameworkUpliftBalancingAttributeName, StringComparison.OrdinalIgnoreCase))?.Period7 ?? 0;

            model.February1618FrameworkUpliftCompletionPayment =
                episodeAttribute?.PriceEpisodePeriodisedValues
                ?.SingleOrDefault(att =>
                                  string.Equals(att.AttributeName, Constants.Fm36PriceEpisodeApplic1618FrameworkUpliftCompletionPaymentAttributeName, StringComparison.OrdinalIgnoreCase))?.Period7 ?? 0;
        }
コード例 #4
0
        public AppsIndicativeEarningsModel BuildModel(
            ILearner learner,
            ILearningDelivery learningDelivery,
            LearningDelivery fm36DeliveryAttribute,
            PriceEpisode fm36EpisodeAttribute,
            LarsLearningDelivery larsLearningDelivery,
            string notionalEndLevel,
            bool earliestEpisode,
            bool hasPriceEpisodes)
        {
            DateTime employmentStatusDate = learner.LearnerEmploymentStatuses?
                                            .Where(x => x.DateEmpStatApp <= learningDelivery.LearnStartDate).Select(x => x.DateEmpStatApp)
                                            .DefaultIfEmpty(DateTime.MinValue).Max() ?? DateTime.MinValue;
            ILearnerEmploymentStatus employmentStatus =
                learner.LearnerEmploymentStatuses?.SingleOrDefault(x => x.DateEmpStatApp == employmentStatusDate);

            LearningDeliveryFamSimple[] learningDeliveryFams = GetLearningDeliveryFams(learningDelivery);
            string fundingLineType = GetFundingType(fm36DeliveryAttribute?.LearningDeliveryValues, fm36EpisodeAttribute?.PriceEpisodeValues);
            var    ldms            = _stringUtilitiesService.GetArrayEntries(learningDelivery.LearningDeliveryFAMs?.Where(x => string.Equals(x.LearnDelFAMType, Constants.LearningDeliveryFAMCodeLDM, StringComparison.OrdinalIgnoreCase)), 4);

            var model = new AppsIndicativeEarningsModel
            {
                LearnRefNumber                      = learner.LearnRefNumber,
                UniqueLearnerNumber                 = learner.ULN,
                DateOfBirth                         = learner.DateOfBirthNullable?.ToString("dd/MM/yyyy"),
                PostcodePriorToEnrollment           = learner.PostcodePrior,
                CampusIdentifier                    = learner.CampId,
                ProviderSpecifiedLearnerMonitoringA = learner.ProviderSpecLearnerMonitorings
                                                      ?.SingleOrDefault(x => string.Equals(x.ProvSpecLearnMonOccur, "A", StringComparison.OrdinalIgnoreCase))?.ProvSpecLearnMon,
                ProviderSpecifiedLearnerMonitoringB = learner.ProviderSpecLearnerMonitorings
                                                      ?.SingleOrDefault(x => string.Equals(x.ProvSpecLearnMonOccur, "B", StringComparison.OrdinalIgnoreCase))?.ProvSpecLearnMon,
                AimSeqNumber                  = learningDelivery.AimSeqNumber,
                LearningAimReference          = learningDelivery.LearnAimRef,
                LearningAimTitle              = larsLearningDelivery?.LearningAimTitle,
                SoftwareSupplierAimIdentifier = learningDelivery.SWSupAimId,
                LARS1618FrameworkUplift       = fm36DeliveryAttribute?.LearningDeliveryValues
                                                ?.LearnDelApplicProv1618FrameworkUplift,
                NotionalNVQLevel         = larsLearningDelivery?.NotionalNvqLevel,
                StandardNotionalEndLevel = notionalEndLevel,
                Tier2SectorSubjectArea   = larsLearningDelivery?.Tier2SectorSubjectArea,
                ProgrammeType            = learningDelivery.ProgTypeNullable,
                StandardCode             = learningDelivery.StdCodeNullable,
                FrameworkCode            = learningDelivery.FworkCodeNullable,
                ApprenticeshipPathway    = learningDelivery.PwayCodeNullable,
                AimType                                       = learningDelivery.AimType,
                CommonComponentCode                           = larsLearningDelivery?.FrameworkCommonComponent,
                FundingModel                                  = learningDelivery.FundModel,
                OriginalLearningStartDate                     = learningDelivery.OrigLearnStartDateNullable?.ToString("dd/MM/yyyy"),
                LearningStartDate                             = learningDelivery.LearnStartDate.ToString("dd/MM/yyyy"),
                LearningPlannedEndDate                        = learningDelivery.LearnPlanEndDate.ToString("dd/MM/yyyy"),
                CompletionStatus                              = learningDelivery.CompStatus,
                LearningActualEndDate                         = learningDelivery.LearnActEndDateNullable?.ToString("dd/MM/yyyy"),
                Outcome                                       = learningDelivery.OutcomeNullable,
                FundingAdjustmentForPriorLearning             = learningDelivery.PriorLearnFundAdjNullable,
                OtherFundingAdjustment                        = learningDelivery.OtherFundAdjNullable,
                LearningDeliveryFAMTypeLearningSupportFunding = learningDeliveryFams.Select(x => x.Code).Max(),
                LearningDeliveryFAMTypeLSFDateAppliesFrom     =
                    learningDeliveryFams.Select(x => x.From).Min() == DateTime.MinValue ? string.Empty : learningDeliveryFams.Select(x => x.From).Min().ToString("dd/MM/yyyy"),
                LearningDeliveryFAMTypeLSFDateAppliesTo =
                    learningDeliveryFams.Select(x => x.To).Max() == DateTime.MinValue ? string.Empty : learningDeliveryFams.Select(x => x.To).Max().ToString("dd/MM/yyyy"),
                LearningDeliveryFAMTypeLearningDeliveryMonitoringA = ldms[0],
                LearningDeliveryFAMTypeLearningDeliveryMonitoringB = ldms[1],
                LearningDeliveryFAMTypeLearningDeliveryMonitoringC = ldms[2],
                LearningDeliveryFAMTypeLearningDeliveryMonitoringD = ldms[3],
                LearningDeliveryFAMRestartIndicator = learningDelivery.LearningDeliveryFAMs
                                                      ?.SingleOrDefault(x => string.Equals(x.LearnDelFAMType, Constants.LearningDeliveryFAMCodeRES, StringComparison.OrdinalIgnoreCase))?.LearnDelFAMCode,
                ProviderSpecifiedDeliveryMonitoringA = learningDelivery.ProviderSpecDeliveryMonitorings
                                                       ?.SingleOrDefault(x => string.Equals(x.ProvSpecDelMonOccur, "A", StringComparison.OrdinalIgnoreCase))?.ProvSpecDelMon,
                ProviderSpecifiedDeliveryMonitoringB = learningDelivery.ProviderSpecDeliveryMonitorings
                                                       ?.SingleOrDefault(x => string.Equals(x.ProvSpecDelMonOccur, "B", StringComparison.OrdinalIgnoreCase))?.ProvSpecDelMon,
                ProviderSpecifiedDeliveryMonitoringC = learningDelivery.ProviderSpecDeliveryMonitorings
                                                       ?.SingleOrDefault(x => string.Equals(x.ProvSpecDelMonOccur, "C", StringComparison.OrdinalIgnoreCase))?.ProvSpecDelMon,
                ProviderSpecifiedDeliveryMonitoringD = learningDelivery.ProviderSpecDeliveryMonitorings
                                                       ?.SingleOrDefault(x => string.Equals(x.ProvSpecDelMonOccur, "D", StringComparison.OrdinalIgnoreCase))?.ProvSpecDelMon,
                EndPointAssessmentOrganisation           = learningDelivery.EPAOrgID,
                PlannedNoOfOnProgrammeInstallmentsForAim =
                    fm36DeliveryAttribute?.LearningDeliveryValues?.PlannedNumOnProgInstalm,
                SubContractedOrPartnershipUKPRN = learningDelivery.PartnerUKPRNNullable,
                DeliveryLocationPostcode        = learningDelivery.DelLocPostCode,
                EmployerIdentifier               = employmentStatus?.EmpIdNullable,
                AgreementIdentifier              = fm36EpisodeAttribute?.PriceEpisodeValues?.PriceEpisodeAgreeId,
                EmploymentStatus                 = employmentStatus?.EmpStat,
                EmploymentStatusDate             = employmentStatus?.DateEmpStatApp.ToString("dd/MM/yyyy"),
                EmpStatusMonitoringSmallEmployer = employmentStatus?.EmploymentStatusMonitorings
                                                   ?.SingleOrDefault(x => string.Equals(x.ESMType, Constants.EmploymentStatusMonitoringTypeSEM, StringComparison.OrdinalIgnoreCase))?.ESMCode,
                PriceEpisodeStartDate =
                    fm36EpisodeAttribute?.PriceEpisodeValues?.EpisodeStartDate,
                PriceEpisodeActualEndDate =
                    fm36EpisodeAttribute?.PriceEpisodeValues?.PriceEpisodeActualEndDate?.ToString("dd/MM/yyyy"),
                FundingLineType = fundingLineType,
                TotalPriceApplicableToThisEpisode =
                    fm36EpisodeAttribute?.PriceEpisodeValues?.PriceEpisodeTotalTNPPrice,
                FundingBandUpperLimit            = fm36EpisodeAttribute?.PriceEpisodeValues?.PriceEpisodeUpperBandLimit,
                PriceAmountAboveFundingBandLimit =
                    fm36EpisodeAttribute?.PriceEpisodeValues?.PriceEpisodeUpperLimitAdjustment,
                PriceAmountRemainingStartOfEpisode = fm36EpisodeAttribute?.PriceEpisodeValues
                                                     ?.PriceEpisodeCappedRemainingTNPAmount,
                CompletionElement = fm36EpisodeAttribute?.PriceEpisodeValues?.PriceEpisodeCompletionElement
            };

            if (learningDelivery?.LearningDeliveryFAMs != null)
            {
                CalculateApprenticeshipContractTypeFields(
                    learningDelivery,
                    model,
                    fm36DeliveryAttribute,
                    fm36EpisodeAttribute,
                    hasPriceEpisodes);
            }

            if (earliestEpisode)
            {
                CalculateAppFinTotals(model, learningDelivery);
            }

            foreach (var command in _commands)
            {
                command.Execute(model, fm36DeliveryAttribute, fm36EpisodeAttribute);
            }

            GetTotals(model);

            return(model);
        }
コード例 #5
0
        private void GetTotals(AppsIndicativeEarningsModel model)
        {
            model.TotalOnProgrammeEarnings =
                _totalBuilder.TotalRecords(
                    model.AugustOnProgrammeEarnings,
                    model.SeptemberOnProgrammeEarnings,
                    model.OctoberOnProgrammeEarnings,
                    model.NovemberOnProgrammeEarnings,
                    model.DecemberOnProgrammeEarnings,
                    model.JanuaryOnProgrammeEarnings,
                    model.FebruaryOnProgrammeEarnings,
                    model.MarchOnProgrammeEarnings,
                    model.AprilOnProgrammeEarnings,
                    model.MayOnProgrammeEarnings,
                    model.JuneOnProgrammeEarnings,
                    model.JulyOnProgrammeEarnings);

            model.TotalBalancingPaymentEarnings =
                _totalBuilder.TotalRecords(
                    model.AugustBalancingPaymentEarnings,
                    model.SeptemberBalancingPaymentEarnings,
                    model.OctoberBalancingPaymentEarnings,
                    model.NovemberBalancingPaymentEarnings,
                    model.DecemberBalancingPaymentEarnings,
                    model.JanuaryBalancingPaymentEarnings,
                    model.FebruaryBalancingPaymentEarnings,
                    model.MarchBalancingPaymentEarnings,
                    model.AprilBalancingPaymentEarnings,
                    model.MayBalancingPaymentEarnings,
                    model.JuneBalancingPaymentEarnings,
                    model.JulyBalancingPaymentEarnings);

            model.TotalAimCompletionEarnings =
                _totalBuilder.TotalRecords(
                    model.AugustAimCompletionEarnings,
                    model.SeptemberAimCompletionEarnings,
                    model.OctoberAimCompletionEarnings,
                    model.NovemberAimCompletionEarnings,
                    model.DecemberAimCompletionEarnings,
                    model.JanuaryAimCompletionEarnings,
                    model.FebruaryAimCompletionEarnings,
                    model.MarchAimCompletionEarnings,
                    model.AprilAimCompletionEarnings,
                    model.MayAimCompletionEarnings,
                    model.JuneAimCompletionEarnings,
                    model.JulyAimCompletionEarnings);

            model.TotalLearningSupportEarnings =
                _totalBuilder.TotalRecords(
                    model.AugustLearningSupportEarnings,
                    model.SeptemberLearningSupportEarnings,
                    model.OctoberLearningSupportEarnings,
                    model.NovemberLearningSupportEarnings,
                    model.DecemberLearningSupportEarnings,
                    model.JanuaryLearningSupportEarnings,
                    model.FebruaryLearningSupportEarnings,
                    model.MarchLearningSupportEarnings,
                    model.AprilLearningSupportEarnings,
                    model.MayLearningSupportEarnings,
                    model.JuneLearningSupportEarnings,
                    model.JulyLearningSupportEarnings);

            model.TotalEnglishMathsOnProgrammeEarnings =
                _totalBuilder.TotalRecords(
                    model.AugustEnglishMathsOnProgrammeEarnings,
                    model.SeptemberEnglishMathsOnProgrammeEarnings,
                    model.OctoberEnglishMathsOnProgrammeEarnings,
                    model.NovemberEnglishMathsOnProgrammeEarnings,
                    model.DecemberEnglishMathsOnProgrammeEarnings,
                    model.JanuaryEnglishMathsOnProgrammeEarnings,
                    model.FebruaryEnglishMathsOnProgrammeEarnings,
                    model.MarchEnglishMathsOnProgrammeEarnings,
                    model.AprilEnglishMathsOnProgrammeEarnings,
                    model.MayEnglishMathsOnProgrammeEarnings,
                    model.JuneEnglishMathsOnProgrammeEarnings,
                    model.JulyEnglishMathsOnProgrammeEarnings);

            model.TotalEnglishMathsBalancingPaymentEarnings =
                _totalBuilder.TotalRecords(
                    model.AugustEnglishMathsBalancingPaymentEarnings,
                    model.SeptemberEnglishMathsBalancingPaymentEarnings,
                    model.OctoberEnglishMathsBalancingPaymentEarnings,
                    model.NovemberEnglishMathsBalancingPaymentEarnings,
                    model.DecemberEnglishMathsBalancingPaymentEarnings,
                    model.JanuaryEnglishMathsBalancingPaymentEarnings,
                    model.FebruaryEnglishMathsBalancingPaymentEarnings,
                    model.MarchEnglishMathsBalancingPaymentEarnings,
                    model.AprilEnglishMathsBalancingPaymentEarnings,
                    model.MayEnglishMathsBalancingPaymentEarnings,
                    model.JuneEnglishMathsBalancingPaymentEarnings,
                    model.JulyEnglishMathsBalancingPaymentEarnings);

            model.TotalDisadvantageEarnings =
                _totalBuilder.TotalRecords(
                    model.AugustDisadvantageEarnings,
                    model.SeptemberDisadvantageEarnings,
                    model.OctoberDisadvantageEarnings,
                    model.NovemberDisadvantageEarnings,
                    model.DecemberDisadvantageEarnings,
                    model.JanuaryDisadvantageEarnings,
                    model.FebruaryDisadvantageEarnings,
                    model.MarchDisadvantageEarnings,
                    model.AprilDisadvantageEarnings,
                    model.MayDisadvantageEarnings,
                    model.JuneDisadvantageEarnings,
                    model.JulyDisadvantageEarnings);

            model.Total1618AdditionalPaymentForEmployers =
                _totalBuilder.TotalRecords(
                    model.August1618AdditionalPaymentForEmployers,
                    model.September1618AdditionalPaymentForEmployers,
                    model.October1618AdditionalPaymentForEmployers,
                    model.November1618AdditionalPaymentForEmployers,
                    model.December1618AdditionalPaymentForEmployers,
                    model.January1618AdditionalPaymentForEmployers,
                    model.February1618AdditionalPaymentForEmployers,
                    model.March1618AdditionalPaymentForEmployers,
                    model.April1618AdditionalPaymentForEmployers,
                    model.May1618AdditionalPaymentForEmployers,
                    model.June1618AdditionalPaymentForEmployers,
                    model.July1618AdditionalPaymentForEmployers);

            model.Total1618AdditionalPaymentForProviders =
                _totalBuilder.TotalRecords(
                    model.August1618AdditionalPaymentForProviders,
                    model.September1618AdditionalPaymentForProviders,
                    model.October1618AdditionalPaymentForProviders,
                    model.November1618AdditionalPaymentForProviders,
                    model.December1618AdditionalPaymentForProviders,
                    model.January1618AdditionalPaymentForProviders,
                    model.February1618AdditionalPaymentForProviders,
                    model.March1618AdditionalPaymentForProviders,
                    model.April1618AdditionalPaymentForProviders,
                    model.May1618AdditionalPaymentForProviders,
                    model.June1618AdditionalPaymentForProviders,
                    model.July1618AdditionalPaymentForProviders);

            model.TotalAdditionalPaymentsForApprentices =
                _totalBuilder.TotalRecords(
                    model.AugustAdditionalPaymentsForApprentices,
                    model.SeptemberAdditionalPaymentsForApprentices,
                    model.OctoberAdditionalPaymentsForApprentices,
                    model.NovemberAdditionalPaymentsForApprentices,
                    model.DecemberAdditionalPaymentsForApprentices,
                    model.JanuaryAdditionalPaymentsForApprentices,
                    model.FebruaryAdditionalPaymentsForApprentices,
                    model.MarchAdditionalPaymentsForApprentices,
                    model.AprilAdditionalPaymentsForApprentices,
                    model.MayAdditionalPaymentsForApprentices,
                    model.JuneAdditionalPaymentsForApprentices,
                    model.JulyAdditionalPaymentsForApprentices);

            model.Total1618FrameworkUpliftOnProgrammePayment =
                _totalBuilder.TotalRecords(
                    model.August1618FrameworkUpliftOnProgrammePayment,
                    model.September1618FrameworkUpliftOnProgrammePayment,
                    model.October1618FrameworkUpliftOnProgrammePayment,
                    model.November1618FrameworkUpliftOnProgrammePayment,
                    model.December1618FrameworkUpliftOnProgrammePayment,
                    model.January1618FrameworkUpliftOnProgrammePayment,
                    model.February1618FrameworkUpliftOnProgrammePayment,
                    model.March1618FrameworkUpliftOnProgrammePayment,
                    model.April1618FrameworkUpliftOnProgrammePayment,
                    model.May1618FrameworkUpliftOnProgrammePayment,
                    model.June1618FrameworkUpliftOnProgrammePayment,
                    model.July1618FrameworkUpliftOnProgrammePayment);

            model.Total1618FrameworkUpliftBalancingPayment =
                _totalBuilder.TotalRecords(
                    model.August1618FrameworkUpliftBalancingPayment,
                    model.September1618FrameworkUpliftBalancingPayment,
                    model.October1618FrameworkUpliftBalancingPayment,
                    model.November1618FrameworkUpliftBalancingPayment,
                    model.December1618FrameworkUpliftBalancingPayment,
                    model.January1618FrameworkUpliftBalancingPayment,
                    model.February1618FrameworkUpliftBalancingPayment,
                    model.March1618FrameworkUpliftBalancingPayment,
                    model.April1618FrameworkUpliftBalancingPayment,
                    model.May1618FrameworkUpliftBalancingPayment,
                    model.June1618FrameworkUpliftBalancingPayment,
                    model.July1618FrameworkUpliftBalancingPayment);

            model.Total1618FrameworkUpliftCompletionPayment =
                _totalBuilder.TotalRecords(
                    model.August1618FrameworkUpliftCompletionPayment,
                    model.September1618FrameworkUpliftCompletionPayment,
                    model.October1618FrameworkUpliftCompletionPayment,
                    model.November1618FrameworkUpliftCompletionPayment,
                    model.December1618FrameworkUpliftCompletionPayment,
                    model.January1618FrameworkUpliftCompletionPayment,
                    model.February1618FrameworkUpliftCompletionPayment,
                    model.March1618FrameworkUpliftCompletionPayment,
                    model.April1618FrameworkUpliftCompletionPayment,
                    model.May1618FrameworkUpliftCompletionPayment,
                    model.June1618FrameworkUpliftCompletionPayment,
                    model.July1618FrameworkUpliftCompletionPayment);
        }