diff --git a/Dockerfile b/Dockerfile index 6c4c8bf682..1d8ac1d589 100644 --- a/Dockerfile +++ b/Dockerfile @@ -80,6 +80,8 @@ RUN DFE_SIGN_IN_API_CLIENT_ID= \ ADMIN_ALLOWED_IPS= \ ENVIRONMENT_NAME= \ SUPPRESS_DFE_ANALYTICS_INIT= \ + GOVUK_APP_DOMAIN= \ + GOVUK_WEBSITE_ROOT= \ bundle exec rake assets:precompile RUN chown -hR appuser:appgroup ${APP_HOME} diff --git a/Gemfile b/Gemfile index 5f5f050666..04985a9145 100644 --- a/Gemfile +++ b/Gemfile @@ -66,6 +66,8 @@ gem "daemons" # Gov form builder to structure claims gem "govuk_design_system_formbuilder", "~> 5.6" +gem "govuk_publishing_components" + gem "govuk-components", "~> 5.6.1" # See https://github.com/typhoeus/ethon/issues/185 diff --git a/Gemfile.lock b/Gemfile.lock index 2c1815d7ed..736d9ff776 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -114,6 +114,7 @@ GEM rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) + chartkick (5.1.2) childprocess (5.0.0) coderay (1.1.3) concurrent-ruby (1.3.4) @@ -207,6 +208,17 @@ GEM google-cloud-env (2.2.0) faraday (>= 1.0, < 3.a) google-cloud-errors (1.4.0) + google-protobuf (4.28.3) + bigdecimal + rake (>= 13) + google-protobuf (4.28.3-x86_64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.28.3-x86_64-linux) + bigdecimal + rake (>= 13) + googleapis-common-protos-types (1.16.0) + google-protobuf (>= 3.18, < 5.a) googleauth (1.11.0) faraday (>= 1.0, < 3.a) google-cloud-env (~> 2.1) @@ -218,11 +230,37 @@ GEM html-attributes-utils (~> 1.0.0, >= 1.0.0) pagy (>= 6, < 10) view_component (>= 3.9, < 3.15) + govuk_app_config (9.15.1) + logstasher (~> 2.1) + opentelemetry-exporter-otlp (>= 0.25, < 0.30) + opentelemetry-instrumentation-all (>= 0.39.1, < 0.69.0) + opentelemetry-sdk (~> 1.2) + plek (>= 4, < 6) + prometheus_exporter (~> 2.0) + puma (>= 5.6, < 7.0) + rack-proxy (~> 0.7) + sentry-rails (~> 5.3) + sentry-ruby (~> 5.3) + statsd-ruby (~> 1.5) govuk_design_system_formbuilder (5.6.0) actionview (>= 6.1) activemodel (>= 6.1) activesupport (>= 6.1) html-attributes-utils (~> 1) + govuk_personalisation (1.1.0) + plek (>= 1.9.0) + rails (>= 6, < 9) + govuk_publishing_components (45.6.0) + chartkick + govuk_app_config + govuk_personalisation (>= 0.7.0) + kramdown + ostruct + plek + rails (>= 6) + rouge + sprockets (>= 3) + sprockets-rails hashdiff (1.1.0) hashie (5.0.0) html-attributes-utils (1.0.2) @@ -245,6 +283,8 @@ GEM httpclient jwt (2.9.1) base64 + kramdown (2.5.1) + rexml (>= 3.3.9) language_server-protocol (3.17.0.3) launchy (3.0.1) addressable (~> 2.8) @@ -254,6 +294,9 @@ GEM rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) logger (1.6.1) + logstasher (2.1.5) + activesupport (>= 5.2) + request_store loofah (2.22.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) @@ -294,8 +337,6 @@ GEM nokogiri (1.16.7) mini_portile2 (~> 2.8.2) racc (~> 1.4) - nokogiri (1.16.7-arm64-darwin) - racc (~> 1.4) nokogiri (1.16.7-x86_64-darwin) racc (~> 1.4) nokogiri (1.16.7-x86_64-linux) @@ -323,6 +364,206 @@ GEM validate_email validate_url webfinger (~> 1.2) + opentelemetry-api (1.4.0) + opentelemetry-common (0.21.0) + opentelemetry-api (~> 1.0) + opentelemetry-exporter-otlp (0.29.0) + google-protobuf (>= 3.18) + googleapis-common-protos-types (~> 1.3) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.20) + opentelemetry-sdk (~> 1.2) + opentelemetry-semantic_conventions + opentelemetry-helpers-mysql (0.1.1) + opentelemetry-api (~> 1.0) + opentelemetry-common (~> 0.21) + opentelemetry-helpers-sql-obfuscation (0.2.0) + opentelemetry-common (~> 0.21) + opentelemetry-instrumentation-action_mailer (0.2.0) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-active_support (~> 0.1) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-action_pack (0.9.0) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-rack (~> 0.21) + opentelemetry-instrumentation-action_view (0.7.3) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-active_support (~> 0.6) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-active_job (0.7.8) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-active_model_serializers (0.20.2) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-active_record (0.8.0) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-active_support (0.6.0) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-all (0.68.0) + opentelemetry-instrumentation-active_model_serializers (~> 0.20.1) + opentelemetry-instrumentation-aws_lambda (~> 0.1.0) + opentelemetry-instrumentation-aws_sdk (~> 0.7.0) + opentelemetry-instrumentation-bunny (~> 0.21.0) + opentelemetry-instrumentation-concurrent_ruby (~> 0.21.1) + opentelemetry-instrumentation-dalli (~> 0.25.0) + opentelemetry-instrumentation-delayed_job (~> 0.22.0) + opentelemetry-instrumentation-ethon (~> 0.21.1) + opentelemetry-instrumentation-excon (~> 0.22.0) + opentelemetry-instrumentation-faraday (~> 0.24.0) + opentelemetry-instrumentation-grape (~> 0.2.0) + opentelemetry-instrumentation-graphql (~> 0.28.0) + opentelemetry-instrumentation-gruf (~> 0.2.0) + opentelemetry-instrumentation-http (~> 0.23.1) + opentelemetry-instrumentation-http_client (~> 0.22.1) + opentelemetry-instrumentation-koala (~> 0.20.1) + opentelemetry-instrumentation-lmdb (~> 0.22.1) + opentelemetry-instrumentation-mongo (~> 0.22.1) + opentelemetry-instrumentation-mysql2 (~> 0.28.0) + opentelemetry-instrumentation-net_http (~> 0.22.1) + opentelemetry-instrumentation-pg (~> 0.29.0) + opentelemetry-instrumentation-que (~> 0.8.0) + opentelemetry-instrumentation-racecar (~> 0.3.0) + opentelemetry-instrumentation-rack (~> 0.25.0) + opentelemetry-instrumentation-rails (~> 0.32.0) + opentelemetry-instrumentation-rake (~> 0.2.1) + opentelemetry-instrumentation-rdkafka (~> 0.4.0) + opentelemetry-instrumentation-redis (~> 0.25.1) + opentelemetry-instrumentation-resque (~> 0.5.0) + opentelemetry-instrumentation-restclient (~> 0.22.1) + opentelemetry-instrumentation-ruby_kafka (~> 0.21.0) + opentelemetry-instrumentation-sidekiq (~> 0.25.0) + opentelemetry-instrumentation-sinatra (~> 0.24.0) + opentelemetry-instrumentation-trilogy (~> 0.60.0) + opentelemetry-instrumentation-aws_lambda (0.1.1) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-aws_sdk (0.7.0) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-base (0.22.6) + opentelemetry-api (~> 1.0) + opentelemetry-common (~> 0.21) + opentelemetry-registry (~> 0.1) + opentelemetry-instrumentation-bunny (0.21.4) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-concurrent_ruby (0.21.4) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-dalli (0.25.4) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-delayed_job (0.22.4) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-ethon (0.21.8) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-excon (0.22.4) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-faraday (0.24.6) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-grape (0.2.0) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-rack (~> 0.21) + opentelemetry-instrumentation-graphql (0.28.4) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-gruf (0.2.1) + opentelemetry-api (>= 1.0.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-http (0.23.4) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-http_client (0.22.7) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-koala (0.20.5) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-lmdb (0.22.3) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-mongo (0.22.4) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-mysql2 (0.28.0) + opentelemetry-api (~> 1.0) + opentelemetry-helpers-mysql + opentelemetry-helpers-sql-obfuscation + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-net_http (0.22.7) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-pg (0.29.0) + opentelemetry-api (~> 1.0) + opentelemetry-helpers-sql-obfuscation + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-que (0.8.4) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-racecar (0.3.4) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-rack (0.25.0) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-rails (0.32.0) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-action_mailer (~> 0.2.0) + opentelemetry-instrumentation-action_pack (~> 0.9.0) + opentelemetry-instrumentation-action_view (~> 0.7.0) + opentelemetry-instrumentation-active_job (~> 0.7.0) + opentelemetry-instrumentation-active_record (~> 0.8.0) + opentelemetry-instrumentation-active_support (~> 0.6.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-rake (0.2.2) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-rdkafka (0.4.8) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-redis (0.25.7) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-resque (0.5.2) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-restclient (0.22.7) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-ruby_kafka (0.21.3) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-sidekiq (0.25.7) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-sinatra (0.24.1) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-rack (~> 0.21) + opentelemetry-instrumentation-trilogy (0.60.0) + opentelemetry-api (~> 1.0) + opentelemetry-helpers-mysql + opentelemetry-helpers-sql-obfuscation + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-semantic_conventions (>= 1.8.0) + opentelemetry-registry (0.3.1) + opentelemetry-api (~> 1.1) + opentelemetry-sdk (1.5.0) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.20) + opentelemetry-registry (~> 0.2) + opentelemetry-semantic_conventions + opentelemetry-semantic_conventions (1.10.1) + opentelemetry-api (~> 1.0) os (1.1.4) ostruct (0.6.0) pagy (9.0.9) @@ -333,6 +574,9 @@ GEM ast (~> 2.4.1) racc pg (1.5.7) + plek (5.2.0) + prometheus_exporter (2.1.1) + webrick pry (0.14.2) coderay (~> 1.1) method_source (~> 1.0) @@ -353,6 +597,8 @@ GEM rack-protection (3.2.0) base64 (>= 0.1.0) rack (~> 2.2, >= 2.2.4) + rack-proxy (0.7.7) + rack rack-test (2.1.0) rack (>= 1.3) rack_session_access (0.2.0) @@ -400,12 +646,15 @@ GEM declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) + request_store (1.7.0) + rack (>= 1.4) request_store_rails (2.0.0) concurrent-ruby (~> 1.0) retriable (3.1.2) rexml (3.3.9) rollbar (3.6.0) rotp (6.3.0) + rouge (4.5.1) rspec (3.13.0) rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) @@ -466,6 +715,12 @@ GEM websocket (~> 1.0) semantic_logger (4.15.0) concurrent-ruby (~> 1.0) + sentry-rails (5.21.0) + railties (>= 5.0) + sentry-ruby (~> 5.21.0) + sentry-ruby (5.21.0) + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) shoulda-matchers (6.3.0) activesupport (>= 5.2.0) signet (0.19.0) @@ -502,6 +757,7 @@ GEM standard-performance (1.4.0) lint_roller (~> 1.1) rubocop-performance (~> 1.21.0) + statsd-ruby (1.5.0) swd (1.3.0) activesupport (>= 3) attr_required (>= 0.0.5) @@ -545,6 +801,7 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.9.0) websocket (1.2.11) websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) @@ -579,6 +836,7 @@ DEPENDENCIES foreman govuk-components (~> 5.6.1) govuk_design_system_formbuilder (~> 5.6) + govuk_publishing_components httpclient jbuilder (~> 2.13) jwt diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 45a06c40e7..2e4b1321d1 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -7,4 +7,6 @@ $govuk-image-url-function: "font-url"; @import "accessible-autocomplete/src/autocomplete"; @import "govuk-one-login-service-header/dist/styles/service-header-no-imports"; +@import "govuk_publishing_components/components/_contents-list"; + @import "**/*"; diff --git a/app/assets/stylesheets/components/box.scss b/app/assets/stylesheets/components/box.scss new file mode 100644 index 0000000000..d1fa6fd0ce --- /dev/null +++ b/app/assets/stylesheets/components/box.scss @@ -0,0 +1,6 @@ +.app-c-box { + background-color: govuk-colour("light-grey"); + @include govuk-responsive-padding(9); + @include govuk-responsive-padding(6, "bottom"); + @include govuk-responsive-margin(6, "bottom"); +} diff --git a/app/controllers/journeys/early_years_payment/provider/start/static_pages_controller.rb b/app/controllers/journeys/early_years_payment/provider/start/static_pages_controller.rb new file mode 100644 index 0000000000..8385c9046d --- /dev/null +++ b/app/controllers/journeys/early_years_payment/provider/start/static_pages_controller.rb @@ -0,0 +1,14 @@ +module Journeys + module EarlyYearsPayment + module Provider + module Start + class StaticPagesController < BasePublicController + def guidance + @journey_open = journey.configuration.open_for_submissions? + render "#{journey::VIEW_PATH}/guidance" + end + end + end + end + end +end diff --git a/app/views/early_years_payment/provider/start/guidance.html.erb b/app/views/early_years_payment/provider/start/guidance.html.erb new file mode 100644 index 0000000000..54b190cd40 --- /dev/null +++ b/app/views/early_years_payment/provider/start/guidance.html.erb @@ -0,0 +1,253 @@ +
+
+

+ Claim an early years financial incentive payment: Guidance +

+ +

+ This scheme enables nurseries in participating local authorities to offer £1000 payments to recruit new practitioners. +

+ + <%= render "govuk_publishing_components/components/contents_list", contents: [ + { + text: "Overview", + href: "#overview" + }, + { + text: "Local authorities participating in this scheme", + href: "#local-authorities-participating-in-this-scheme" + }, + { + text: "How it works", + href: "#how-it-works" + }, + { + text: "How money is allocated", + href: "#how-money-is-allocated" + }, + { + text: "Nursery eligibility", + href: "#nursery-eligibility" + }, + { + text: "Practitioner eligibility", + href: "#practitioner-eligibility" + }, + { + text: "Apprenticeships", + href: "#apprenticeships" + }, + { + text: "How practitioners are paid", + href: "#how-practitioners-are-paid" + }, + { + text: "Tax and deductions", + href: "#tax-and-deductions" + }, + { + text: "If the employee leaves before they’ve been in the role for 6 months", + href: "#if-the-employee-leaves-before-theyve-been-in-the-role-for-6-months" + } + ] %> +
+ +
+
+ <%= govuk_notification_banner(title_text: "Important") { |nb| nb.with_heading(text: "This service is in live testing and only available to users in our testing group. If you're not part of this group, you won't be able to access this service.") } %> + + <% if @journey_open %> +
+

Make a claim

+

+ You should only do this when you’ve successfully recruited a new practitioner. Claims need to be made by the 31 March 2025. +

+ + <%= govuk_start_button(text: "Start now", href: claim_path(current_journey_routing_name, "landing-page")) %> +
+ <% end %> + + +

+ Overview +

+ + <%= govuk_list [ + "This scheme enables nurseries in participating local authorities to offer £1000 payments to recruit new practitioners. Payments can be offered in job adverts for permanent part and full-time roles.", + "The aim of this scheme is to support nurseries with recruitment and increase the number of permanent practitioners in the early years workforce.", + "After a practitioner has accepted the job, the nursery will start a claim for the payment on their behalf.", + "After the nursery has started the claim, the practitioner will receive an email inviting them to complete the claim on a digital service. To do this, we’ll help them create a GOV.UK One Login account if they do not already have one. This is so that we can verify their identity.", + "When they have verified their identity, we’ll ask for a few details including their bank account details.", + "Payments will be made directly to practitioners by the Department for Education after they have been in the role for 6 months." + ], type: :bullet %> + + +

+ Local authorities participating in this scheme +

+ +

You can only participate in this scheme if your nursery is in one of these local authorities:

+ + <%= govuk_list [ + "Barking and Dagenham", + "Coventry", + "Gateshead", + "Redcar and Cleveland", + "Telford and Wrekin", + "Thurrock" + ], type: :bullet %> + +

These local authorities were chosen because they have:

+ + <%= govuk_list [ + "high levels of deprivation", + "low numbers of available nursery places compared to the number of children who need a place" + ], type: :bullet %> + + +

+ How it works +

+ +

From 25 November 2024 to 31 March 2025, nurseries in participating local authorities can claim incentives – which are paid directly to eligible new staff.

+ +

To be eligible for a payment, a practitioner must have started in their new role between 11 November 2024 to 15 March 2025.

+ +

New staff can either be:

+ + <%= govuk_list [ + "new to the sector", + "returning after a break of at least 6 months", + "moving from a temporary to permanent contract" + ], type: :bullet %> + +

After a nursery has recruited an eligible new employee, they need to start a claim on their behalf on a digital service. The money will then be reserved for the employee and they will receive an email inviting them to complete the claim.

+ +

After 6 months the nursery will be asked to confirm that they are still in their role. If they are, the Department for Education will pay the money directly into the employee’s bank account.

+ + +

+ How money is allocated +

+ +

The Department for Education has allocated funding for nurseries to use to recruit staff.

+

Payments will be reserved for nurseries in the order they are requested when a new claim is created. We’ll email participating nurseries when the number of available payments are running low.

+ + +

+ Nursery eligibility +

+ +

A nursery is eligible if:

+ + <%= govuk_list [ + "it's in a participating local authority", + "you have been contacted by the Department for Education and told you’re eligible to offer payments" + ], type: :bullet %> + + +

+ Practitioner eligibility +

+ +

Applicants who are new or returning to early years are eligible if:

+ + <%= govuk_list [ + "they have not worked in a permanent role in a nursery in the 6 months before starting their new role, where they spent most of their time (70% or more) working directly with children", + "the role they’ve applied for is a permanent contract (this applies to part and full-time roles)", + "they’ll spend most of the time (70% or more) in their role working directly with children" + ], type: :bullet %> + +

Applicants do not need to have any early years qualifications or have worked in a nursery before.

+ +

You cannot offer the incentive to anyone who:

+ + <%= govuk_list [ + "has worked in a permanent role in a nursery in the last 6 months", + "will not be spending most of their time (70% or more) working directly with children in their new role" + ], type: :bullet %> + + +

Working directly with children

+ +

Working directly with children can involve any of the following:

+ + <%= govuk_list [ + "working in the room with children — this can include playrooms, base rooms and classrooms", + "guiding, supporting and interacting with children in their learning and development", + "giving hands-on care, including health and hygiene" + ], type: :bullet %> + + <%= govuk_list [ + "70% or more time applies to all part and full-time roles. The employee does not need to work a minimum number of contracted hours to be eligible." + ], type: :bullet %> + + +

+ Apprenticeships +

+ + <%= govuk_list [ + "Apprentices cannot receive a payment, even if they’re on a permanent contract during their apprenticeship.", + "Apprentices can receive a payment when they move from being an apprentice to an employee. To do this, they must have passed their apprenticeship and been taken on in a permanent role." + ], type: :bullet %> + +

+ How practitioners are paid +

+ + <%= govuk_list [ + "The Department for Education will pay the money directly into the employee’s bank account. This will happen after they have been in the role for 6 months." + ], type: :bullet %> + + +

+ Tax and deductions +

+ + <%= govuk_list [ + "The Department for Education will pay the employee’s Income Tax and National Insurance contributions.", + "There may be other deductions based on the employee’s circumstances. For example, if they’re making student loan repayments. This could reduce the final amount of the incentive below £1000." + ], type: :bullet %> + +

Universal Credit

+ + <%= govuk_list [ + "If the employee claims Universal Credit, the £1000 payment may affect the amount of Universal Credit they receive.", + "Read more about #{govuk_link_to("how changes", "https://www.gov.uk/guidance/universal-credit-and-earnings", no_visited_state: true, new_tab: true)} to earnings can affect Universal Credit".html_safe + ], type: :bullet %> + +

Student loan

+ + <%= govuk_list [ + "The £1000 payment will not be affected by any funding they have previously received to study for a college course or apprenticeship.", + "If they have previously studied at university and have a student loan, their £1000 payment may affect their repayments." + ], type: :bullet %> + +

If they’re currently repaying a student loan

+ + <%= govuk_list [ + "If they’re currently repaying a student loan, a deduction towards it may come out of their £1000 payment." + ], type: :bullet %> + + +

If they have a student loan but are not currently repaying it

+ + <%= govuk_list [ + "If their payment takes them over the amount they must earn to start paying back a student loan, a deduction may go towards repaying it.", + "Read more about #{govuk_link_to "when they would start paying back a student loan", "https://www.gov.uk/repaying-your-student-loan/when-you-start-repaying", no_visited_state: true, new_tab: true} and #{govuk_link_to "what they’ll pay", "https://www.gov.uk/repaying-your-student-loan/what-you-pay", no_visited_state: true, new_tab: true}.".html_safe, + "They may be able to claim any deductions back at the end of the tax year. Read more about how employees can #{govuk_link_to "claim back student loan deductions", "https://www.gov.uk/repaying-your-student-loan/getting-a-refund", no_visited_state: true, new_tab: true}.".html_safe + ], type: :bullet %> + + +

+ If the employee leaves before they’ve been in the role for 6 months +

+ + <%= govuk_list [ + "You must tell us by email if the employee leaves the nursery before they have completed 6 months. You can do this by contacting us at #{govuk_link_to t("early_years_payment_provider_start.feedback_email"), "mailto:#{t("early_years_payment_provider_start.feedback_email")}", no_visited_state: true}.".html_safe, + "The employee must complete 6 months in their role to receive the payment. We'll contact the nursery by email at that point to check the employee is still working in their role." + ], type: :bullet %> +
+
+
diff --git a/app/views/early_years_payment/provider/start/landing_page.html.erb b/app/views/early_years_payment/provider/start/landing_page.html.erb index b1ef768944..bc858e0536 100644 --- a/app/views/early_years_payment/provider/start/landing_page.html.erb +++ b/app/views/early_years_payment/provider/start/landing_page.html.erb @@ -87,7 +87,7 @@

Read more about the - <%= govuk_link_to("early years incentive payment for new and returning practitioners guidance", "#") %>. + <%= govuk_link_to("early years incentive payment for new and returning practitioners guidance", claim_path(current_journey_routing_name, "guidance")) %>.

<%# TODO: There isn't any journey closed content, for now hide the button %> diff --git a/config/routes.rb b/config/routes.rb index 87614e70ff..7e526a8d6f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -76,6 +76,10 @@ def matches?(request) } end + scope constraints: {journey: /early-years-payment/} do + get "guidance", to: "journeys/early_years_payment/provider/start/static_pages#guidance", as: :guidance + end + scope constraints: {journey: "additional-payments"} do get "reminder", as: :new_reminder, to: "journeys/additional_payments_for_teaching/reminders#new" diff --git a/spec/features/early_years_payment/provider/start/happy_path_spec.rb b/spec/features/early_years_payment/provider/start/happy_path_spec.rb index 9b7cd4e88b..2d9e1d51f1 100644 --- a/spec/features/early_years_payment/provider/start/happy_path_spec.rb +++ b/spec/features/early_years_payment/provider/start/happy_path_spec.rb @@ -12,7 +12,11 @@ def number_of_emails_sent when_early_years_payment_provider_start_journey_configuration_exists when_eligible_ey_provider_exists - visit landing_page_path(Journeys::EarlyYearsPayment::Provider::Start::ROUTING_NAME) + visit guidance_path(Journeys::EarlyYearsPayment::Provider::Start::ROUTING_NAME) + click_link "Start now" + + # landing page + expect(page).to have_text("Employee eligibility") click_link "Start now" expect(page.title).to have_text("Enter your email address") diff --git a/terraform/application/config/production_app_env.yml b/terraform/application/config/production_app_env.yml index 9a9d64e0d7..e7c455d9e0 100644 --- a/terraform/application/config/production_app_env.yml +++ b/terraform/application/config/production_app_env.yml @@ -21,3 +21,6 @@ TID_BASE_URL: https://claim-additional-teaching-payment.service.gov.uk/additiona TID_SIGN_IN_API_ENDPOINT: https://teaching-identity.education.gov.uk/ TID_SIGN_IN_CLIENT_ID: claim TID_SIGN_IN_ISSUER: https://teaching-identity.education.gov.uk/ + +GOVUK_APP_DOMAIN: "" +GOVUK_WEBSITE_ROOT: "" diff --git a/terraform/application/config/review_app_env.yml b/terraform/application/config/review_app_env.yml index fd40ad8e19..07cf93ef38 100644 --- a/terraform/application/config/review_app_env.yml +++ b/terraform/application/config/review_app_env.yml @@ -22,3 +22,6 @@ TID_SIGN_IN_API_ENDPOINT: https://preprod.teaching-identity.education.gov.uk:433 TID_SIGN_IN_CLIENT_ID: claim TID_SIGN_IN_ISSUER: https://preprod.teaching-identity.education.gov.uk/ TID_BASE_URL: https://claim-additional-payments-for-teaching-review-*.test.teacherservices.cloud/additional-payments/claim + +GOVUK_APP_DOMAIN: "" +GOVUK_WEBSITE_ROOT: "" diff --git a/terraform/application/config/test_app_env.yml b/terraform/application/config/test_app_env.yml index a62d29781c..4b86838fab 100644 --- a/terraform/application/config/test_app_env.yml +++ b/terraform/application/config/test_app_env.yml @@ -23,3 +23,6 @@ TID_BASE_URL: https://test.claim-additional-teaching-payment.service.gov.uk/addi TID_SIGN_IN_API_ENDPOINT: https://preprod.teaching-identity.education.gov.uk:433 TID_SIGN_IN_CLIENT_ID: claim TID_SIGN_IN_ISSUER: https://preprod.teaching-identity.education.gov.uk/ + +GOVUK_APP_DOMAIN: "" +GOVUK_WEBSITE_ROOT: ""