private IFundLineGroup BuildIlrFm99FundLineGroup(int currentPeriod, IPeriodisedValuesLookup periodisedValues)
        {
            var description = "Advanced Loans Bursary";

            return(new FundLineGroup($"ILR Total {description} (£)", currentPeriod, Funding.FundingDataSources.FM99, new [] { FundLineConstants.AdvancedLearnerLoansBursary }, periodisedValues)
                   .WithFundLine($"ILR {description} Funding (£)", new [] { AttributeConstants.Fm99AlbSupportPayment })
                   .WithFundLine($"ILR {description} Area Costs (£)", new [] { AttributeConstants.Fm99AreaUpliftBalPayment, AttributeConstants.Fm99AreaUpliftOnProgPayment }));
        }
        // -------------------------------------------------------------------------------------------------------------------------------------
        // Build ILR Traineeships FundLineGroup
        // -------------------------------------------------------------------------------------------------------------------------------------
        public IFundLineGroup BuildIlrFm25FundLineGroup(byte currentPeriod, IPeriodisedValuesLookup periodisedValues)
        {
            var fundLineGroup = new FundLineGroup($"ILR Total 16-18 Traineeships (£)", currentPeriod, FundingDataSource.FM25, null, periodisedValues)
                                .WithFundLine($"ILR 16-18 Traineeships Programme Funding (£)", new[] { FundLineConstants.TraineeshipsAdultFunded1618 }, new[] { AttributeConstants.Fm25LrnOnProgPay })
                                .WithFundLine($"ILR 19-24 Traineeships (16-19 Model) Programme Funding (£)", new[] { FundLineConstants.TraineeshipsAdultFunded19Plus }, new[] { AttributeConstants.Fm25LrnOnProgPay });

            return(fundLineGroup);
        }
        // -------------------------------------------------------------------------------------------------------------------------------------
        // Build EAS Advanced Loans Bursary Budget FundLineGroup
        // -------------------------------------------------------------------------------------------------------------------------------------
        public IFundLineGroup BuildEasFm99FundLineGroup(byte currentPeriod,
                                                        IPeriodisedValuesLookup periodisedValues)
        {
            var description = "Advanced Loans Bursary";

            var fundLineGroup = new FundLineGroup($"EAS Total {description} Earnings Adjustment (£)", currentPeriod, FundingDataSource.EAS, new[] { FundLineConstants.AdvancedLearnerLoansBursary }, periodisedValues)
                                .WithFundLine($"EAS {description} Excess Support (£)", new[] { AttributeConstants.EasAllbExcessSupport })
                                .WithFundLine($"EAS {description} Authorised Claims (£)", new[] { AttributeConstants.EasAuthorisedClaims });

            return(fundLineGroup);
        }
        // -------------------------------------------------------------------------------------------------------------------------------------
        // Build EAS Traineeships Budget FundLineGroup
        // -------------------------------------------------------------------------------------------------------------------------------------
        public IFundLineGroup BuildEasFm25FundLineGroup(byte currentPeriod, IPeriodisedValuesLookup periodisedValues)
        {
            var description = "Traineeships";

            var fundLineGroup = new FundLineGroup($"EAS Total 16-18 {description} Earnings Adjustment (£)", currentPeriod, FundingDataSource.EAS, new[] { FundLineConstants.Traineeships1618 }, periodisedValues)
                                .WithFundLine($"EAS 16-18 {description} Authorised Claims (£)", new[] { AttributeConstants.EasAuthorisedClaims })
                                .WithFundLine($"EAS 16-18 {description} Excess Learning Support (£)", new[] { AttributeConstants.EasExcessLearningSupport })
                                .WithFundLine($"EAS 16-19 {description} Vulnerable Bursary (£)", new[] { AttributeConstants.EasVulnerableBursary })
                                .WithFundLine($"EAS 16-19 {description} Free Meals (£)", new[] { AttributeConstants.EasFreeMeals })
                                .WithFundLine($"EAS 16-19 {description} Discretionary Bursary (£)", new[] { AttributeConstants.EasDiscretionaryBursary });

            return(fundLineGroup);
        }
 public FundLineGroup(
     string title,
     int currentPeriod,
     FundingDataSources fundModel,
     IEnumerable <string> fundLines,
     IPeriodisedValuesLookup periodisedValues)
 {
     CurrentPeriod     = currentPeriod;
     _fundModel        = fundModel;
     _fundLines        = fundLines;
     _periodisedValues = periodisedValues;
     Title             = title;
 }
 public FundLineGroup(
     string title,
     byte currentPeriod,
     FundingDataSource fundModel,
     IEnumerable <string> fundLines,
     IPeriodisedValuesLookup periodisedValues)
 {
     CurrentPeriod            = currentPeriod;
     ContractAllocationNumber = null;
     _fundModel        = fundModel;
     _fundLines        = fundLines;
     _periodisedValues = periodisedValues;
     Title             = title;
 }
Esempio n. 7
0
 protected override IFundLineGroup BuildEasFm99FundLineGroup(int currentPeriod, IPeriodisedValuesLookup periodisedValues) => null;
Esempio n. 8
0
 private FundLineGroup NewGroup(string title = "Title", int currentPeriod = 12, FundingDataSources fundModel = FundingDataSources.FM35, IEnumerable <string> fundLines = null, IPeriodisedValuesLookup periodisedValues = null)
 {
     return(new FundLineGroup(title, currentPeriod, fundModel, fundLines ?? new List <string>(), periodisedValues ?? new PeriodisedValuesLookup()));
 }
        // -------------------------------------------------------------------------------------------------------------------------------------
        // Build ILR Non-Levy Contracted Apprenticeships FundLineGroup
        // -------------------------------------------------------------------------------------------------------------------------------------
        public IFundLineGroup BuildIlrNonLevyApprenticeshipsProcuredFundLineGroup(string ageRange, byte currentPeriod, IEnumerable <string> fundLines, IPeriodisedValuesLookup periodisedValues)
        {
            var description = "Non-Levy Contracted Apprenticeships";

            var fundLineGroup = new FundLineGroup($"ILR Total {ageRange} {description} (£)", currentPeriod, FundingDataSource.DAS, fundLines, periodisedValues)
                                .WithFundLine($"ILR {ageRange} {description} Programme Aim Funding - Government Co-investment (£)", new[] { Constants.DASPayments.FundingSource.Co_Invested_SFA }, new[] { Constants.DASPayments.TransactionType.Learning_On_Programme, Constants.DASPayments.TransactionType.Completion, Constants.DASPayments.TransactionType.Balancing })
                                .WithFundLine($"ILR {ageRange} {description} Maths & English Programme Funding (£)", new[] { Constants.DASPayments.FundingSource.Fully_Funded_SFA }, new[] { Constants.DASPayments.TransactionType.On_Programme_Maths_and_English, Constants.DASPayments.TransactionType.BalancingMathAndEnglish })
                                .WithFundLine($"ILR {ageRange} {description} Framework Uplift (£)", new[] { Constants.DASPayments.FundingSource.Fully_Funded_SFA }, new[] { Constants.DASPayments.TransactionType.On_Programme_16To18_Framework_Uplift, Constants.DASPayments.TransactionType.Completion_16To18_Framework_Uplift, Constants.DASPayments.TransactionType.Balancing_16To18_Framework_Uplift })
                                .WithFundLine($"ILR {ageRange} {description} Disadvantage Payments (£)", new[] { Constants.DASPayments.FundingSource.Fully_Funded_SFA }, new[] { Constants.DASPayments.TransactionType.First_Disadvantage_Payment, Constants.DASPayments.TransactionType.Second_Disadvantage_Payment })
                                .WithFundLine($"ILR {ageRange} {description} Additional Payments for Providers (£)", new[] { Constants.DASPayments.FundingSource.Fully_Funded_SFA }, new[] { Constants.DASPayments.TransactionType.First_16To18_Provider_Incentive, Constants.DASPayments.TransactionType.Second_16To18_Provider_Incentive })
                                .WithFundLine($"ILR {ageRange} {description} Additional Payments for Employers (£)", new[] { Constants.DASPayments.FundingSource.Fully_Funded_SFA }, new[] { Constants.DASPayments.TransactionType.First_16To18_Employer_Incentive, Constants.DASPayments.TransactionType.Second_16To18_Employer_Incentive })
                                .WithFundLine($"ILR {ageRange} {description} Additional Payments for Apprentices (£)", new[] { Constants.DASPayments.FundingSource.Fully_Funded_SFA }, new[] { Constants.DASPayments.TransactionType.Apprenticeship })
                                .WithFundLine($"ILR {ageRange} {description} Learning Support (£)", new[] { Constants.DASPayments.FundingSource.Fully_Funded_SFA }, new[] { Constants.DASPayments.TransactionType.Learning_Support });

            return(fundLineGroup);
        }
        // -------------------------------------------------------------------------------------------------------------------------------------
        // Build EAS Non-Levy Contracted Apprenticeships FundLineGroup
        // -------------------------------------------------------------------------------------------------------------------------------------
        public IFundLineGroup BuildEasNonLevyApprenticeshipsFundLineGroup(string ageRange, byte currentPeriod, IEnumerable <string> fundLines, IPeriodisedValuesLookup periodisedValues)
        {
            var description = "Non-Levy Contracted Apprenticeships";

            var fundLineGroup = new FundLineGroup($"EAS Total {ageRange} {description} Earnings Adjustment (£)", currentPeriod, FundingDataSource.EASDAS, fundLines, periodisedValues)
                                .WithFundLine($"EAS {ageRange} {description} Training Authorised Claims (£)", new[] { AttributeConstants.EasAuthorisedClaimsTraining })
                                .WithFundLine($"EAS {ageRange} {description} Additional Payments for Providers Authorised Claims (£)", new[] { AttributeConstants.EasAuthorisedClaimsProvider })
                                .WithFundLine($"EAS {ageRange} {description} Additional Payments for Employers Authorised Claims (£)", new[] { AttributeConstants.EasAuthorisedClaimsEmployer })
                                .WithFundLine($"EAS {ageRange} {description} Excess Learning Support (£)", new[] { AttributeConstants.EasExcessLearningSupport });

            return(fundLineGroup);
        }
Esempio n. 11
0
 protected virtual IDevolvedAdultEducationFundLineGroup BuildEasFm35FundLineGroup(int currentPeriod, IEnumerable <string> fundLines, IPeriodisedValuesLookup periodisedValues)
 {
     return(new DevolvedAdultEducationFundLineGroup("EAS Total Earnings Adjustment (£)", currentPeriod, FundingDataSources.EAS, fundLines, periodisedValues)
            .WithFundLine("EAS Authorised Claims (£)", new[] { AttributeConstants.EasAuthorisedClaims })
            .WithFundLine("EAS Prince's Trust (£)", new[] { AttributeConstants.EasPrincesTrust })
            .WithFundLine("EAS Excess Learning Support (£)", new[] { AttributeConstants.EasExcessLearningSupport })
            .WithFundLine("EAS MCA/GLA Defined Adjustment 1 (£)", new[] { AttributeConstants.EasMcaGlaDefinedAdjustment1 })
            .WithFundLine("EAS MCA/GLA Defined Adjustment 2 (£)", new[] { AttributeConstants.EasMcaGlaDefinedAdjustment2 })
            .WithFundLine("EAS MCA/GLA Defined Adjustment 3 (£)", new[] { AttributeConstants.EasMcaGlaDefinedAdjustment3 })
            .WithFundLine("EAS MCA/GLA Defined Adjustment 4 (£)", new[] { AttributeConstants.EasMcaGlaDefinedAdjustment4 })
            .WithFundLine("EAS MCA/GLA Defined Adjustment 5 (£)", new[] { AttributeConstants.EasMcaGlaDefinedAdjustment5 })
            .WithFundLine("EAS MCA/GLA Defined Adjustment 6 (£)", new[] { AttributeConstants.EasMcaGlaDefinedAdjustment6 }));
 }
 protected virtual IFundLineGroup BuildEasLevyApprenticeshipsFundLineGroup(string ageRange, string description, int currentPeriod, IEnumerable <string> fundLines, IPeriodisedValuesLookup periodisedValues)
 {
     return(new FundLineGroup($"EAS Total {ageRange} {description} Earnings Adjustment (£)", currentPeriod, Funding.FundingDataSources.EAS, fundLines, periodisedValues)
            .WithFundLine($"EAS {ageRange} {description} - Training exc. Maths/English Authorised Claims (£)", new[] { AttributeConstants.EasAuthorisedClaimsTraining })
            .WithFundLine($"EAS {ageRange} {description} - Maths and English Authorised Claims (£)", new[] { AttributeConstants.EasAuthorisedClaimsMathsAndEnglish })
            .WithFundLine($"EAS {ageRange} {description} - Additional Payments for Providers Authorised Claims (£)", new[] { AttributeConstants.EasAuthorisedClaimsProvider })
            .WithFundLine($"EAS {ageRange} {description} - Additional Payments for Employers Authorised Claims (£)", new[] { AttributeConstants.EasAuthorisedClaimsEmployer })
            .WithFundLine($"EAS {ageRange} {description} - Additional Payments for Apprentices Authorised Claims (£)", new[] { AttributeConstants.EasAuthorisedClaimsApprentice })
            .WithFundLine($"EAS {ageRange} {description} - Excess Learning Support (£)", new[] { AttributeConstants.EasExcessLearningSupport }));
 }
        private IFundLineGroup BuildIlrTrailblazerApprenticeshipsFundLineGroup(string ageRange, int currentPeriod, IEnumerable <string> fundLines, IPeriodisedValuesLookup periodisedValues)
        {
            var description = "Trailblazer Apprenticeships";

            return(new FundLineGroup($"ILR Total {ageRange} {description} (£)", currentPeriod, Funding.FundingDataSources.FM81, fundLines, periodisedValues)
                   .WithFundLine($"ILR {ageRange} {description} Programme Funding (Core Government Contribution, Maths and English) (£)", new [] { AttributeConstants.Fm81CoreGovContPayment, AttributeConstants.Fm81MathEngBalPayment, AttributeConstants.Fm81MathEngOnProgPayment })
                   .WithFundLine($"ILR {ageRange} {description} Employer Incentive Payments (Achievement, Small Employer, 16-18) (£)", new [] { AttributeConstants.Fm81AchPayment, AttributeConstants.Fm81SmallBusPayment, AttributeConstants.Fm81YoungAppPayment })
                   .WithFundLine($"ILR {ageRange} {description} Learning Support (£)", new [] { AttributeConstants.Fm81LearnSuppFundCash }));
        }
 protected override IDevolvedAdultEducationFundLineGroup BuildEasFm35FundLineGroup(int currentPeriod, IEnumerable <string> fundLines, IPeriodisedValuesLookup periodisedValues) => null;
        // -------------------------------------------------------------------------------------------------------------------------------------
        // Build EAS ESFA Adult Education Budget - Non-Procured Delivery From 1 Nov 2017 FundLineGroup
        // -------------------------------------------------------------------------------------------------------------------------------------
        public IFundLineGroup BuildEasAebFundLineGroup(string ageRange, string description, byte currentPeriod, IEnumerable <string> fundModels, IPeriodisedValuesLookup periodisedValues)
        {
            var fundLineGroup = new FundLineGroup($"EAS Total {ageRange} {description} Earnings Adjustment (£)", currentPeriod, FundingDataSource.EAS, fundModels, periodisedValues)
                                .WithFundLine($"EAS {ageRange} {description} Authorised Claims (£)", new[] { AttributeConstants.EasAuthorisedClaims })
                                .WithFundLine($"EAS {ageRange} {description} Prince's Trust (£)", new[] { AttributeConstants.EasPrincesTrust })
                                .WithFundLine($"EAS {ageRange} {description} Excess Learning Support (£)", new[] { AttributeConstants.EasExcessLearningSupport });

            return(fundLineGroup);
        }
Esempio n. 16
0
 protected override IFundLineGroup BuildEasAuthorisedClaimsExcessLearningSupportFundLineGroup(string ageRange, string description, int currentPeriod, IEnumerable <string> fundLines, IPeriodisedValuesLookup periodisedValues) => null;
 protected override IFundLineGroup BuildEasStfiFundLineGroup(string description, int currentPeriod, IEnumerable <string> fundLines, IPeriodisedValuesLookup periodisedValues) => null;
Esempio n. 18
0
 protected override IFundLineGroup BuildEasLevyApprenticeshipsFundLineGroup(string ageRange, string description, int currentPeriod, IEnumerable <string> fundLines, IPeriodisedValuesLookup periodisedValues) => null;
Esempio n. 19
0
 protected override IFundLineGroup BuildEasCovidFundLineGroup(string ageRange, string description, int currentPeriod, IEnumerable <string> fundModels, IPeriodisedValuesLookup periodisedValues) => null;
 private IFundLineGroup BuildIlrFm35FundLineGroup(string ageRange, string description, int currentPeriod, IEnumerable <string> fundLines, IPeriodisedValuesLookup periodisedValues)
 {
     return(new FundLineGroup($"ILR Total {ageRange} {description} (£)", currentPeriod, Funding.FundingDataSources.FM35, fundLines, periodisedValues)
            .WithFundLine($"ILR {ageRange} {description} Programme Funding (£)", new[] { AttributeConstants.Fm35OnProgPayment, AttributeConstants.Fm35AchievePayment, AttributeConstants.Fm35EmpOutcomePay, AttributeConstants.Fm35BalancePayment })
            .WithFundLine($"ILR {ageRange} {description} Learning Support (£)", new[] { AttributeConstants.Fm35LearnSuppFundCash }));
 }
        // -------------------------------------------------------------------------------------------------------------------------------------
        // Build ILR Employers On Apprenticeship Service - Unresolved Data Locks FundLineGroup
        // -------------------------------------------------------------------------------------------------------------------------------------
        public IFundLineGroup BuildIlrApprenticeshipsUnresolvedDataLocksFundLineGroup(byte currentPeriod, IPeriodisedValuesLookup periodisedValues)
        {
            var description = "Apprenticeship (Employer on App Service) Unresolved Data Locks";

            var fundLineGroup = new FundLineGroup($"Total {description} (£)", currentPeriod, FundingDataSource.DAS, null, periodisedValues)
                                .WithFundLine($"ILR 16-18 {description} (£)", new[] { FundLineConstants.ApprenticeshipEmployerOnAppServiceUnresolvedDataLock1618 }, new[] { Constants.DASPayments.FundingSource.Levy, Constants.DASPayments.FundingSource.LevyTransfer }, Constants.DASPayments.TransactionType.All)
                                .WithFundLine($"ILR Adult {description} (£)", new[] { FundLineConstants.ApprenticeshipEmployerOnAppServiceUnresolvedDataLock19Plus }, new[] { Constants.DASPayments.FundingSource.Levy, Constants.DASPayments.FundingSource.LevyTransfer }, Constants.DASPayments.TransactionType.All);

            return(fundLineGroup);
        }
 private IFundLineGroup BuildNonLevyContractedApprenticeshipsFundLineGroup(string ageRange, string description, int currentPeriod, IEnumerable <string> fundLines, IPeriodisedValuesLookup periodisedValues)
 {
     return(new FundLineGroup($"ILR Total {ageRange} {description} (£)", currentPeriod, Funding.FundingDataSources.FM36, fundLines, periodisedValues)
            .WithFundLine($"ILR {ageRange} {description} Programme Aim Indicative Earnings (£)", new[] { AttributeConstants.Fm36ProgrammeAimOnProgPayment, AttributeConstants.Fm36ProgrammeAimBalPayment, AttributeConstants.Fm36ProgrammeAimCompletionPayment }, false)
            .WithFundLine($"...of which Indicative Government Co-Investment Earnings (£)", new[] { AttributeConstants.Fm36ProgrammeAimProgFundIndMinCoInvest })
            .WithFundLine($"ILR {ageRange} {description} Maths & English Programme Funding (£)", new[] { AttributeConstants.Fm36MathEngOnProgPayment, AttributeConstants.Fm36MathEngBalPayment })
            .WithFundLine($"ILR {ageRange} {description} Framework Uplift (£)", new[] { AttributeConstants.Fm36LDApplic1618FrameworkUpliftBalancingPayment, AttributeConstants.Fm36LDApplic1618FrameworkUpliftCompletionPayment, AttributeConstants.Fm36LDApplic1618FrameworkUpliftOnProgPayment })
            .WithFundLine($"ILR {ageRange} {description} Disadvantage Payments (£)", new[] { AttributeConstants.Fm36DisadvFirstPayment, AttributeConstants.Fm36DisadvSecondPayment })
            .WithFundLine($"ILR {ageRange} {description} Additional Payments for Providers (£)", new[] { AttributeConstants.Fm36LearnDelFirstProv1618Pay, AttributeConstants.Fm36LearnDelSecondProv1618Pay })
            .WithFundLine($"ILR {ageRange} {description} Additional Payments for Employers (£)", new[] { AttributeConstants.Fm36LearnDelFirstEmp1618Pay, AttributeConstants.Fm36LearnDelSecondEmp1618Pay })
            .WithFundLine($"ILR {ageRange} {description} Additional Payments for Apprentices (£)", new[] { AttributeConstants.Fm36LearnDelLearnAddPayment })
            .WithFundLine($"ILR {ageRange} {description} Learning Support (£)", new[] { AttributeConstants.Fm36LearnSuppFundCash }));
 }
        public async Task <FundingSummaryReportModel> BuildFundingSummaryReportModel(IReportServiceContext reportServiceContext, IPeriodisedValuesLookup periodisedValues, IDictionary <string, string> fcsContractAllocationFspCodeLookup, CancellationToken cancellationToken)
        {
            var noContract = "No Contract";

            var carryInApprenticeshipBudget = fcsContractAllocationFspCodeLookup.GetValueOrDefault(FundingStreamPeriodCodeConstants.APPS1920, noContract);
            var apprenticeshipEmployerOnApprenticeshipServiceLevy     = fcsContractAllocationFspCodeLookup.GetValueOrDefault(FundingStreamPeriodCodeConstants.LEVY1799, noContract);
            var apprenticeshipEmployersOnApprenticeshipServiceNonLevy = fcsContractAllocationFspCodeLookup.GetValueOrDefault(FundingStreamPeriodCodeConstants.NONLEVY2019, noContract);
            var nonLevyContractedApprenticeships1618  = fcsContractAllocationFspCodeLookup.GetValueOrDefault(FundingStreamPeriodCodeConstants.C1618NLAP2018, noContract);
            var nonLevyContractedApprenticeshipsAdult = fcsContractAllocationFspCodeLookup.GetValueOrDefault(FundingStreamPeriodCodeConstants.ANLAP2018, noContract);
            var traineeships1618                = fcsContractAllocationFspCodeLookup.GetValueOrDefault(FundingStreamPeriodCodeConstants.C1618TRN1920, noContract);
            var traineeships1924NonProcured     = fcsContractAllocationFspCodeLookup.GetValueOrDefault(FundingStreamPeriodCodeConstants.AEBC19TRN1920, noContract);
            var traineeships1924Procured        = fcsContractAllocationFspCodeLookup.GetValueOrDefault(FundingStreamPeriodCodeConstants.AEB19TRN1920, noContract);
            var adultEducationBudgetNonProcured = fcsContractAllocationFspCodeLookup.GetValueOrDefault(FundingStreamPeriodCodeConstants.AEBCASCL1920, noContract);
            var adultEducationBudgetProcured    = fcsContractAllocationFspCodeLookup.GetValueOrDefault(FundingStreamPeriodCodeConstants.AEBAS1920, noContract);

            var advancedLoansBursary =
                fcsContractAllocationFspCodeLookup.GetValueOrDefault(FundingStreamPeriodCodeConstants.ALLB1920)
                ?? fcsContractAllocationFspCodeLookup.GetValueOrDefault(FundingStreamPeriodCodeConstants.ALLBC1920)
                ?? noContract;

            byte reportCurrentPeriod = (byte)reportServiceContext.ReturnPeriod > 12 ? (byte)12 : (byte)reportServiceContext.ReturnPeriod;
            var  headerData          = await BuildHeaderData(reportServiceContext, CancellationToken.None);

            var footerData = BuildFooterData(reportServiceContext);

            var fundingSummaryReportModel = new FundingSummaryReportModel(
                headerData,
                new List <IFundingCategory>()
            {
                //----------------------------------------------------------------------------------------
                // Carry-in Apprenticeships Budget (for starts before 1 May 2017 and non-procured delivery
                //----------------------------------------------------------------------------------------
                new FundingCategory(@"Carry-in Apprenticeships Budget (for starts before 1 May 2017 and non-procured delivery)", reportCurrentPeriod,
                                    new List <IFundingSubCategory>()
                {
                    new FundingSubCategory(@"16-18 Apprenticeship Frameworks for starts before 1 May 2017", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrFm35FundLineGroup("16-18", "Apprenticeship Frameworks", reportCurrentPeriod, new[] { FundLineConstants.Apprenticeship1618 }, periodisedValues))
                    .WithFundLineGroup(BuildEasFm35FundLineGroup("16-18", "Apprenticeship Frameworks", reportCurrentPeriod, new[] { FundLineConstants.EasApprenticeship1618 }, periodisedValues)),

                    new FundingSubCategory(@"16-18 Trailblazer Apprenticeships for starts before 1 May 2017", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrTrailblazerApprenticeshipsFundLineGroup("16-18", reportCurrentPeriod, new[] { FundLineConstants.TrailblazerApprenticeship1618 }, periodisedValues))
                    .WithFundLineGroup(BuildEasAuthorisedClaimsExcessLearningSupportFundLineGroup("16-18", "Trailblazer Apprenticeships", reportCurrentPeriod, new[] { FundLineConstants.EasTrailblazerApprenticeship1618 }, periodisedValues)),

                    new FundingSubCategory(@"16-18 Non-Levy Contracted Apprenticeships - Non-procured delivery", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrNonLevyApprenticeshipsFundLineGroup("16-18", reportCurrentPeriod, new[] { FundLineConstants.NonLevyApprenticeship1618, FundLineConstants.NonLevyApprenticeship1618NonProcured }, periodisedValues))
                    .WithFundLineGroup(BuildEasNonLevyApprenticeshipsFundLineGroup("16-18", reportCurrentPeriod, new[] { FundLineConstants.NonLevyApprenticeship1618NonProcured }, periodisedValues)),

                    new FundingSubCategory(@"19-23 Apprenticeship Frameworks for starts before 1 May 2017", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrFm35FundLineGroup("19-23", "Apprenticeship Frameworks", reportCurrentPeriod, new[] { FundLineConstants.Apprenticeship1923 }, periodisedValues))
                    .WithFundLineGroup(BuildEasFm35FundLineGroup("19-23", "Apprenticeship Frameworks", reportCurrentPeriod, new[] { FundLineConstants.EasApprenticeship1923 }, periodisedValues)),

                    new FundingSubCategory(@"19-23 Trailblazer Apprenticeships for starts before 1 May 2017", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrTrailblazerApprenticeshipsFundLineGroup("19-23", reportCurrentPeriod, new[] { FundLineConstants.TrailblazerApprenticeship1923 }, periodisedValues))
                    .WithFundLineGroup(BuildEasAuthorisedClaimsExcessLearningSupportFundLineGroup("19-23", "Trailblazer Apprenticeships", reportCurrentPeriod, new[] { FundLineConstants.EasTrailblazerApprenticeship1923 }, periodisedValues)),

                    new FundingSubCategory(@"24+ Apprenticeship Frameworks for starts before 1 May 2017", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrFm35FundLineGroup("24+", "Apprenticeship Frameworks", reportCurrentPeriod, new[] { FundLineConstants.Apprenticeship24Plus }, periodisedValues))
                    .WithFundLineGroup(BuildEasFm35FundLineGroup("24+", "Apprenticeship Frameworks", reportCurrentPeriod, new[] { FundLineConstants.EasApprenticeship24Plus }, periodisedValues)),

                    new FundingSubCategory(@"24+ Trailblazer Apprenticeships for starts before 1 May 2017", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrTrailblazerApprenticeshipsFundLineGroup("24+", reportCurrentPeriod, new[] { FundLineConstants.TrailblazerApprenticeship24Plus }, periodisedValues))
                    .WithFundLineGroup(BuildEasAuthorisedClaimsExcessLearningSupportFundLineGroup("24+", "Trailblazer Apprenticeships", reportCurrentPeriod, new[] { FundLineConstants.EasTrailblazerApprenticeship24Plus }, periodisedValues)),

                    new FundingSubCategory(@"Adult Non-Levy Contracted Apprenticeships - Non-procured delivery", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrNonLevyApprenticeshipsFundLineGroup("Adult", reportCurrentPeriod, new[] { FundLineConstants.NonLevyApprenticeship19Plus, FundLineConstants.NonLevyApprenticeship19PlusNonProcured }, periodisedValues))
                    .WithFundLineGroup(BuildEasNonLevyApprenticeshipsFundLineGroup("Adult", reportCurrentPeriod, new[] { FundLineConstants.NonLevyApprenticeship19PlusNonProcured }, periodisedValues))
                }, carryInApprenticeshipBudget),

                //-------------------------------------------------------------
                // Apprenticeships – Employers on Apprenticeship Service - Levy
                //-------------------------------------------------------------
                new FundingCategory("Apprenticeships – Employers on Apprenticeship Service - Levy", reportCurrentPeriod,
                                    new List <IFundingSubCategory>()
                {
                    new FundingSubCategory("16-18 Apprenticeship (Employer on App Service) Levy", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrApprenticeshipsFundLineGroup("16-18", "Apprenticeship (Employer on App Service) Levy", reportCurrentPeriod, new[] { FundLineConstants.LevyApprenticeship1618 }, periodisedValues))
                    .WithFundLineGroup(BuildEasLevyApprenticeshipsFundLineGroup("16-18", "Apprenticeship (Employer on App Service) Levy", reportCurrentPeriod, new[] { FundLineConstants.LevyApprenticeship1618 }, periodisedValues)),

                    new FundingSubCategory("Adult Apprenticeship (Employer on App Service) Levy", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrApprenticeshipsFundLineGroup("Adult", "Apprenticeship (Employer on App Service) Levy", reportCurrentPeriod, new[] { FundLineConstants.LevyApprenticeship19Plus }, periodisedValues))
                    .WithFundLineGroup(BuildEasLevyApprenticeshipsFundLineGroup("Adult", "Apprenticeship (Employer on App Service) Levy", reportCurrentPeriod, new[] { FundLineConstants.LevyApprenticeship19Plus }, periodisedValues)),
                }, apprenticeshipEmployerOnApprenticeshipServiceLevy),

                //-----------------------------------------------------------------
                // Apprenticeships – Employers on Apprenticeship Service - Non-Levy
                //-----------------------------------------------------------------
                new FundingCategory("Apprenticeships – Employers on Apprenticeship Service - Non-Levy", reportCurrentPeriod,
                                    new List <IFundingSubCategory>()
                {
                    new FundingSubCategory("16-18 Apprenticeship (Employer on App Service) Non-Levy", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrApprenticeshipsFundLineGroup("16-18", "Apprenticeship (Employer on App Service) Non-Levy", reportCurrentPeriod, new[] { FundLineConstants.NonLevyApprenticeshipEmployerOnAppService1618 }, periodisedValues))
                    .WithFundLineGroup(BuildEasLevyApprenticeshipsFundLineGroup("16-18", "Apprenticeship (Employer on App Service) Non-Levy", reportCurrentPeriod, new[] { FundLineConstants.NonLevyApprenticeshipEmployerOnAppService1618 }, periodisedValues)),

                    new FundingSubCategory("Adult Apprenticeship (Employer on App Service) Non-Levy", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrApprenticeshipsFundLineGroup("Adult", "Apprenticeship (Employer on App Service) Non-Levy", reportCurrentPeriod, new[] { FundLineConstants.NonLevyApprenticeshipEmployerOnAppService19Plus }, periodisedValues))
                    .WithFundLineGroup(BuildEasLevyApprenticeshipsFundLineGroup("Adult", "Apprenticeship (Employer on App Service) Non-Levy", reportCurrentPeriod, new[] { FundLineConstants.NonLevyApprenticeshipEmployerOnAppService19Plus }, periodisedValues)),
                }, apprenticeshipEmployersOnApprenticeshipServiceNonLevy),

                //---------------------------------------------------------------------
                // 16-18 Non-Levy Contracted Apprenticeships Budget - Procured delivery
                //---------------------------------------------------------------------
                new FundingCategory("16-18 Non-Levy Contracted Apprenticeships Budget - Procured delivery", reportCurrentPeriod,
                                    new List <IFundingSubCategory>()
                {
                    new FundingSubCategory("16-18 Non-Levy Contracted Apprenticeships", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrNonLevyApprenticeshipsProcuredFundLineGroup("16-18", reportCurrentPeriod, new[] { FundLineConstants.NonLevyApprenticeship1618Procured }, periodisedValues))
                    .WithFundLineGroup(BuildEasLevyApprenticeshipsFundLineGroup("16-18", "Non-Levy Contracted Apprenticeships", reportCurrentPeriod, new[] { FundLineConstants.NonLevyApprenticeship1618Procured }, periodisedValues)),
                }, nonLevyContractedApprenticeships1618),

                //---------------------------------------------------------------------
                // Adult Non-Levy Contracted Apprenticeships Budget - Procured delivery
                //---------------------------------------------------------------------
                new FundingCategory("Adult Non-Levy Contracted Apprenticeships Budget - Procured delivery", reportCurrentPeriod,
                                    new List <IFundingSubCategory>()
                {
                    new FundingSubCategory("Adult Non-Levy Contracted Apprenticeships", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrNonLevyApprenticeshipsProcuredFundLineGroup("Adult", reportCurrentPeriod, new[] { FundLineConstants.NonLevyApprenticeship19PlusProcured }, periodisedValues))
                    .WithFundLineGroup(BuildEasLevyApprenticeshipsFundLineGroup("Adult", "Non-Levy Contracted Apprenticeships", reportCurrentPeriod, new[] { FundLineConstants.NonLevyApprenticeship19PlusProcured }, periodisedValues)),
                }, nonLevyContractedApprenticeshipsAdult),

                //---------------------------------------------------------------------
                // 16-18 Traineeships Budget
                //---------------------------------------------------------------------
                new FundingCategory("16-18 Traineeships Budget", reportCurrentPeriod,
                                    new List <IFundingSubCategory>()
                {
                    new FundingSubCategory("16-18 Traineeships", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrFm25FundLineGroup(reportCurrentPeriod, periodisedValues))
                    .WithFundLineGroup(BuildEasFm25FundLineGroup(reportCurrentPeriod, periodisedValues))
                }, traineeships1618),

                //---------------------------------------------------------------------
                // 19-24 Traineeships - Non-procured delivery
                //---------------------------------------------------------------------
                new FundingCategory("19-24 Traineeships - Non-procured delivery", reportCurrentPeriod,
                                    new List <IFundingSubCategory>()
                {
                    new FundingSubCategory("19-24 Traineeships", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrFm35FundLineGroup("19-24", "Traineeships", reportCurrentPeriod, new[] { FundLineConstants.Traineeship1924, FundLineConstants.Traineeship1924NonProcured }, periodisedValues))
                    .WithFundLineGroup(BuildEasAuthorisedClaimsExcessLearningSupportFundLineGroup("19-24", "Traineeships", reportCurrentPeriod, new[] { FundLineConstants.EasTraineeships1924NonProcured }, periodisedValues)),
                }, traineeships1924NonProcured),

                //---------------------------------------------------------------------
                // 19-24 Traineeships - Procured delivery from 1 Nov 2017
                //---------------------------------------------------------------------
                new FundingCategory("19-24 Traineeships - Procured delivery from 1 Nov 2017", reportCurrentPeriod,
                                    new List <IFundingSubCategory>()
                {
                    new FundingSubCategory("19-24 Traineeships", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrFm35FundLineGroup("19-24", "Traineeships", reportCurrentPeriod, new[] { FundLineConstants.Traineeship1924ProcuredFromNov2017 }, periodisedValues))
                    .WithFundLineGroup(BuildEasAuthorisedClaimsExcessLearningSupportFundLineGroup("19-24", "Traineeships", reportCurrentPeriod, new[] { FundLineConstants.EasTraineeships1924ProcuredFromNov2017 }, periodisedValues)),
                }, traineeships1924Procured),

                //---------------------------------------------------------------------
                // ESFA Adult Education Budget – Non-procured delivery
                //---------------------------------------------------------------------
                new FundingCategory("ESFA Adult Education Budget – Non-procured delivery", reportCurrentPeriod,
                                    new List <IFundingSubCategory>()
                {
                    new FundingSubCategory("ESFA AEB – Adult Skills (non-procured)", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrFm35FundLineGroup("ESFA", "AEB - Adult Skills (non-procured)", reportCurrentPeriod, new[] { FundLineConstants.AebOtherLearningNonProcured }, periodisedValues))
                    .WithFundLineGroup(BuildEasAebFundLineGroup("ESFA", "AEB - Adult Skills (non-procured)", reportCurrentPeriod, new[] { FundLineConstants.EasAebAdultSkillsNonProcured }, periodisedValues))
                }, adultEducationBudgetNonProcured, AdultEducationBudgetNote),

                //---------------------------------------------------------------------
                // ESFA Adult Education Budget – Procured delivery from 1 Nov 2017
                //---------------------------------------------------------------------
                new FundingCategory("ESFA Adult Education Budget – Procured delivery from 1 Nov 2017 ", reportCurrentPeriod,
                                    new List <IFundingSubCategory>()
                {
                    new FundingSubCategory("ESFA AEB – Adult Skills (procured from Nov 2017)", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrFm35FundLineGroup("ESFA", "AEB - Adult Skills (procured from Nov 2017)", reportCurrentPeriod, new[] { FundLineConstants.AebOtherLearningProcuredFromNov2017 }, periodisedValues))
                    .WithFundLineGroup(BuildEasAebFundLineGroup("ESFA", "AEB - Adult Skills (procured from Nov 2017)", reportCurrentPeriod, new[] { FundLineConstants.EasAebAdultSkillsProcuredFromNov2017 }, periodisedValues))
                }, adultEducationBudgetProcured, AdultEducationBudgetNote),

                //---------------------------------------------------------------------
                // Advanced Loans Bursary Budget
                //---------------------------------------------------------------------
                new FundingCategory("Advanced Loans Bursary Budget", reportCurrentPeriod,
                                    new List <IFundingSubCategory>()
                {
                    new FundingSubCategory("Advanced Loans Bursary", reportCurrentPeriod)
                    .WithFundLineGroup(BuildIlrFm99FundLineGroup(reportCurrentPeriod, periodisedValues))
                    .WithFundLineGroup(BuildEasFm99FundLineGroup(reportCurrentPeriod, periodisedValues))
                }, advancedLoansBursary)
            },
                footerData);

            return(fundingSummaryReportModel);
        }
 protected virtual IFundLineGroup BuildEasCovidFundLineGroup(string ageRange, string description, int currentPeriod, IEnumerable <string> fundModels, IPeriodisedValuesLookup periodisedValues)
 {
     return(new FundLineGroup($"EAS Total {ageRange} {description} Earnings Adjustment (£)", currentPeriod, Funding.FundingDataSources.EAS, fundModels, periodisedValues)
            .WithFundLine($"EAS {ageRange} {description} Authorised Claims (£)", new[] { AttributeConstants.EasAuthorisedClaims })
            .WithFundLine($"EAS {ageRange} {description} Excess Learning Support (£)", new[] { AttributeConstants.EasExcessLearningSupport }));
 }
Esempio n. 25
0
 private IDevolvedAdultEducationFundLineGroup BuildIlrFm35FundLineGroup(int currentPeriod, IEnumerable <string> fundLines, IPeriodisedValuesLookup periodisedValues)
 {
     return(new DevolvedAdultEducationFundLineGroup($"ILR Total Adult Education (£)", currentPeriod, FundingDataSources.FM35, fundLines, periodisedValues)
            .WithFundLine($"ILR Programme Funding (£)", new[] { AttributeConstants.Fm35OnProgPayment, AttributeConstants.Fm35AchievePayment, AttributeConstants.Fm35EmpOutcomePay, AttributeConstants.Fm35BalancePayment })
            .WithFundLine($"ILR Learning Support (£)", new[] { AttributeConstants.Fm35LearnSuppFundCash }));
 }