diff --git a/app/controllers/active_storage/blobs/redirect_controller.rb b/app/controllers/active_storage/blobs/redirect_controller.rb index ab6337980b..be9d783177 100644 --- a/app/controllers/active_storage/blobs/redirect_controller.rb +++ b/app/controllers/active_storage/blobs/redirect_controller.rb @@ -6,7 +6,7 @@ class ActiveStorage::Blobs::RedirectController < ActiveStorage::BaseController include ActiveStorage::SetBlob rescue_from CanCan::AccessDenied do - redirect_to facilities_management_rm3830_not_permitted_path + redirect_to facilities_management_rm6232_not_permitted_path end def show diff --git a/app/controllers/concerns/facilities_management/page_detail.rb b/app/controllers/concerns/facilities_management/page_detail.rb deleted file mode 100644 index 5ab729e767..0000000000 --- a/app/controllers/concerns/facilities_management/page_detail.rb +++ /dev/null @@ -1,87 +0,0 @@ -module FacilitiesManagement::PageDetail - extend ActiveSupport::Concern - - def initialize_page_description(action = action_name) - @page_description = PageDescription.new( - Heading.new(*HEADING_DETAIL.map { |detail| page_details(action)[detail] }), - BackButton.new(*BACK_BUTTON_DETAIL.map { |detail| page_details(action)[detail] }), - Navigation.new(*NAVIGATION_DETAIL.map { |detail| page_details(action)[detail] }) - ) - end - - def initialize_page_description_from_view_name - @page_description = PageDescription.new( - Heading.new(*HEADING_DETAIL.map { |detail| page_details[detail] }), - BackButton.new(*BACK_BUTTON_DETAIL.map { |detail| page_details[detail] }), - Navigation.new(*NAVIGATION_DETAIL.map { |detail| page_details[detail] }) - ) - end - - HEADING_DETAIL = %i[page_title caption1 caption2 sub_title caption3].freeze - BACK_BUTTON_DETAIL = %i[back_url back_label back_text].freeze - NAVIGATION_DETAIL = %i[continuation_text return_url return_text secondary_url secondary_text primary_name secondary_name primary_url].freeze - - def page_details(action) - @page_details ||= page_definitions[:default].merge(page_definitions[action.to_sym]) - end - - class Navigation - attr_accessor(:primary_text, :primary_name, :primary_url, :return_url, :return_text, :secondary_url, :secondary_text, :secondary_name) - - # rubocop:disable Metrics/ParameterLists - def initialize(primary_text, return_url, return_text, secondary_url, secondary_text, primary_name = nil, secondary_name = nil, primary_url = nil) - @primary_text = primary_text - @primary_name = primary_name - @primary_url = primary_url - @return_url = return_url - @return_text = return_text - @secondary_url = secondary_url - @secondary_text = secondary_text - @secondary_name = secondary_name - end - # rubocop:enable Metrics/ParameterLists - end - - class BackButton - attr_accessor(:url, :text, :label) - - def initialize(back_url, back_label, back_text) - @url = back_url - @label = back_label - @text = back_text - end - end - - class Heading - attr_accessor(:text, :caption, :caption2, :subtitle, :caption3) - - def initialize(header_text, caption1, caption2, sub_text, caption3) - @text = header_text - @caption = caption1 - @caption2 = caption2 - @subtitle = sub_text - @caption3 = caption3 - end - - def caption? - @caption.present? || caption2.present? || caption3.present? - end - end - - class PageDescription - attr_accessor :heading_details, :back_button, :navigation_details, :no_back_button, :no_error_block, :no_headings - - def initialize(heading_details, back_button = nil, continuation = nil) - raise ArgumentError, 'Use a HeadingDetails object' unless heading_details.is_a? Heading - - raise ArgumentError, 'Use a BackButtonDetail object' unless back_button.nil? || back_button.is_a?(BackButton) - - raise ArgumentError, 'Use a NavigationDetail object' unless continuation.nil? || continuation.is_a?(Navigation) - - @no_back_button = @no_error_block = @no_headings = false - @heading_details = heading_details - @back_button = back_button - @navigation_details = continuation - end - end -end diff --git a/app/controllers/concerns/facilities_management/page_detail/rm3830/contract_details.rb b/app/controllers/concerns/facilities_management/page_detail/rm3830/contract_details.rb deleted file mode 100644 index cd39a9ab3a..0000000000 --- a/app/controllers/concerns/facilities_management/page_detail/rm3830/contract_details.rb +++ /dev/null @@ -1,148 +0,0 @@ -# rubocop:disable Metrics/ModuleLength, Metrics/MethodLength, Metrics/AbcSize -module FacilitiesManagement::PageDetail::RM3830::ContractDetails - include FacilitiesManagement::PageDetail - - def page_details - @page_details ||= page_definitions[:default].merge(page_definitions[@page_name]) - end - - def page_definitions - @page_definitions ||= { - default: { - page_title: t("facilities_management.rm3830.procurements.contract_details.page_title.#{@page_name}"), - caption1: @procurement.contract_name, - continuation_text: 'Continue', - return_url: facilities_management_rm3830_procurements_path, - return_text: 'Return to procurement dashboard', - secondary_name: 'return_to_results', - secondary_text: 'Return to results', - secondary_url: facilities_management_rm3830_procurements_path, - back_text: 'Back', - back_url: facilities_management_rm3830_procurements_path - }, - pricing: { - continuation_text: 'Continue to direct award' - }, - what_next: { - continuation_text: 'Continue to direct award' - }, - important_information: {}, - contract_details: {}, - review_and_generate: { - continuation_text: 'Generate documents' - }, - review: { - continuation_text: 'Create final contract and send to supplier' - }, - sending: { - continuation_text: 'Confirm and send contract to supplier', - secondary_text: 'Cancel, return to review your contract', - secondary_name: 'return_to_review' - }, - payment_method: { - back_url: facilities_management_rm3830_procurement_contract_details_path, - continuation_text: 'Save and return', - return_text: 'Return to contract details', - return_url: facilities_management_rm3830_procurement_contract_details_path, - back_text: 'Return to contract details' - }, - invoicing_contact_details: { - back_url: facilities_management_rm3830_procurement_contract_details_path, - continuation_text: 'Continue', - return_text: 'Return to contract details', - return_url: facilities_management_rm3830_procurement_contract_details_path, - back_text: 'Return to contract details' - }, - new_invoicing_contact_details: { - back_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'invoicing_contact_details'), - back_text: 'Return to invoicing contact details', - continuation_text: 'Save and return', - return_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'invoicing_contact_details'), - return_text: 'Return to invoicing contact details', - }, - new_invoicing_contact_details_address: { - back_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'new_invoicing_contact_details'), - back_text: 'Return to new invoicing contact details', - page_title: 'Add address', - return_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'new_invoicing_contact_details'), - return_text: 'Return to new invoicing contact details', - caption3: @procurement[:contract_name], - caption1: 'New invoicing contact details' - }, - authorised_representative: { - back_url: facilities_management_rm3830_procurement_contract_details_path, - continuation_text: 'Continue', - return_text: 'Return to contract details', - return_url: facilities_management_rm3830_procurement_contract_details_path, - back_text: 'Return to contract details' - }, - new_authorised_representative: { - back_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'authorised_representative'), - back_text: 'Return to authorised representative details', - continuation_text: 'Save and return', - return_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'authorised_representative'), - return_text: 'Return to authorised representative details', - }, - new_authorised_representative_address: { - back_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'new_authorised_representative'), - back_text: 'Return to new authorised representative details', - return_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'new_authorised_representative'), - return_text: 'Return to new authorised representative details', - caption3: @procurement[:contract_name], - caption1: 'New authorised representative details' - }, - notices_contact_details: { - back_url: facilities_management_rm3830_procurement_contract_details_path, - continuation_text: 'Continue', - return_text: 'Return to contract details', - return_url: facilities_management_rm3830_procurement_contract_details_path, - back_text: 'Return to contract details' - }, - new_notices_contact_details: { - back_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'notices_contact_details'), - back_text: 'Return to notices contact details', - continuation_text: 'Save and return', - return_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'notices_contact_details'), - return_text: 'Return to notices contact details', - }, - new_notices_contact_details_address: { - back_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'new_notices_contact_details'), - back_text: 'Return to new notices contact details', - return_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'new_notices_contact_details'), - return_text: 'Return to new notices contact details', - caption3: @procurement[:contract_name], - caption1: 'New notices contact details' - }, - security_policy_document: { - back_url: facilities_management_rm3830_procurement_contract_details_path, - back_text: 'Return to contract details', - continuation_text: 'Save and return', - return_text: 'Return to contract details', - return_url: facilities_management_rm3830_procurement_contract_details_path - }, - local_government_pension_scheme: { - back_url: facilities_management_rm3830_procurement_contract_details_path, - back_text: 'Return to contract details', - continuation_text: 'Save and continue', - return_text: 'Return to contract details', - return_url: facilities_management_rm3830_procurement_contract_details_path - }, - pension_funds: { - back_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'local_government_pension_scheme'), - back_text: 'Return to Local Government Pension Scheme', - page_title: 'Pension funds', - continuation_text: 'Save and return', - return_text: 'Return to contract details', - return_url: facilities_management_rm3830_procurement_contract_details_path - }, - governing_law: { - back_url: facilities_management_rm3830_procurement_contract_details_path, - continuation_text: 'Save and continue', - return_text: 'Return to contract details', - return_url: facilities_management_rm3830_procurement_contract_details_path, - back_text: 'Return to contract details' - } - } - end -end -# rubocop:enable Metrics/ModuleLength, Metrics/MethodLength, Metrics/AbcSize diff --git a/app/controllers/concerns/facilities_management/page_detail/rm3830/contracts.rb b/app/controllers/concerns/facilities_management/page_detail/rm3830/contracts.rb deleted file mode 100644 index 4907ccb27d..0000000000 --- a/app/controllers/concerns/facilities_management/page_detail/rm3830/contracts.rb +++ /dev/null @@ -1,67 +0,0 @@ -module FacilitiesManagement::PageDetail::RM3830::Contracts - include FacilitiesManagement::PageDetail - - def page_details(action) - action = 'edit' if action == 'update' - @page_details ||= page_definitions[:default].merge(page_definitions[action.to_sym]) - end - - def show_continuation_text - case @contract.aasm_state - when 'accepted' - 'Confirm if contract signed or not' - when 'not_signed', 'declined', 'expired' - "View next supplier's price" - end - end - - def show_secondary_text - if @contract.closed? || @contract.aasm_state == 'signed' - 'Make a copy of your requirements' - else - 'Close this procurement' - end - end - - def edit_secondary_text - if params['name'] == 'next_supplier' - 'Cancel and return to contract summary' - else - 'Cancel' - end - end - - def edit_page_title - if params['name'] == 'next_supplier' - 'Offer to next supplier' - else - 'Confirmation of signed contract' - end - end - - def page_definitions - @page_definitions ||= { - default: { - back_label: 'Back', - back_text: 'Back', - back_url: facilities_management_rm3830_procurements_path, - caption1: @procurement.contract_name, - return_text: 'Return to procurements dashboard', - return_url: facilities_management_rm3830_procurements_path, - }, - show: { - page_title: 'Contract summary', - continuation_text: show_continuation_text, - return_text: 'Return to procurements dashboard', - secondary_text: show_secondary_text, - back_text: 'Return to procurements dashboard', - }, - edit: { - back_url: facilities_management_rm3830_procurement_contract_path(@procurement), - page_title: edit_page_title, - continuation_text: 'Close this procurement', - secondary_text: edit_secondary_text, - }, - }.freeze - end -end diff --git a/app/controllers/concerns/facilities_management/page_detail/rm3830/copy_procurement.rb b/app/controllers/concerns/facilities_management/page_detail/rm3830/copy_procurement.rb deleted file mode 100644 index 5367b26d20..0000000000 --- a/app/controllers/concerns/facilities_management/page_detail/rm3830/copy_procurement.rb +++ /dev/null @@ -1,35 +0,0 @@ -module FacilitiesManagement::PageDetail::RM3830::CopyProcurement - include FacilitiesManagement::PageDetail - - def page_details(*) - @page_details ||= page_definitions[:default].merge(page_definitions[:new]) - end - - def page_definitions - @page_definitions ||= { - default: {}, - new: { - page_title: 'Create a copy', - caption1: @procurement.contract_name, - continuation_text: 'Save and continue', - secondary_text: 'Cancel', - secondary_url: page_back_url, - back_text: 'Back', - back_name: 'Back', - back_url: page_back_url - }, - }.freeze - end - - private - - def find_contract_id - return nil if params[:contract_id].nil? - - params[:contract_id].instance_of?(String) ? params[:contract_id] : params[:contract_id].keys.first - end - - def page_back_url - @contract.nil? ? facilities_management_rm3830_procurement_path(id: @procurement.id) : facilities_management_rm3830_procurement_contract_path(procurement_id: @procurement.id, id: find_contract_id) - end -end diff --git a/app/controllers/concerns/facilities_management/page_detail/rm3830/procurements.rb b/app/controllers/concerns/facilities_management/page_detail/rm3830/procurements.rb deleted file mode 100644 index 9a3cafb0d2..0000000000 --- a/app/controllers/concerns/facilities_management/page_detail/rm3830/procurements.rb +++ /dev/null @@ -1,86 +0,0 @@ -module FacilitiesManagement::PageDetail::RM3830::Procurements - include FacilitiesManagement::PageDetail - - def page_details - @page_details ||= page_definitions[:default].merge(page_definitions[@view_name.to_sym]) - end - - def set_results_page_definitions - page_definitions = { - caption1: @procurement.contract_name, - continuation_text: 'Continue', - return_url: facilities_management_rm3830_procurements_path, - return_text: 'Return to procurement dashboard', - back_text: 'Back', - back_url: facilities_management_rm3830_procurements_path, - page_title: 'Results', - primary_name: 'continue_from_results', - secondary_name: 'change_requirements', - secondary_text: 'Change requirements', - secondary_url: facilities_management_rm3830_procurements_path - } - if @procurement.lot_number_selected_by_customer - page_definitions[:secondary_name] = 'change_the_contract_value' - page_definitions[:secondary_url] = facilities_management_rm3830_procurements_path - page_definitions[:secondary_text] = 'Return to estimated contract cost' - end - page_definitions - end - - def quick_search_page_title - if params['what_happens_next'].present? - t('facilities_management.rm3830.procurements.what_happens_next.heading') - else - t('facilities_management.rm3830.procurements.quick_search.quick_view_results') - end - end - - def set_further_competition_page_definitions - if params[:fc_chosen] == 'true' - { - page_title: 'Further competition', - secondary_text: 'Return to results', - secondary_url: facilities_management_rm3830_procurement_path, - continuation_text: 'Save as further competition' - } - else - { - page_title: 'Further competition', - continuation_text: 'Make a copy of your requirements' - } - end - end - - def set_quick_search_or_what_happens_next_page_definitions - { - back_text: 'Return to your account', - back_url: facilities_management_rm3830_path, - caption1: @procurement.contract_name, - page_title: quick_search_page_title - } - end - - def page_definitions - @page_definitions ||= { - default: { - caption1: @procurement.contract_name, - continuation_text: 'Continue', - return_url: facilities_management_rm3830_procurements_path, - return_text: 'Return to procurement dashboard', - secondary_name: 'change_requirements', - secondary_text: 'Change requirements', - secondary_url: facilities_management_rm3830_procurements_path, - back_text: 'Back', - back_url: facilities_management_rm3830_procurements_path - }, - quick_search: set_quick_search_or_what_happens_next_page_definitions, - what_happens_next: set_quick_search_or_what_happens_next_page_definitions, - choose_contract_value: { - page_title: 'Estimated contract cost', - primary_name: 'continue_from_change_contract_value' - }, - results: set_results_page_definitions, - further_competition: set_further_competition_page_definitions - }.freeze - end -end diff --git a/app/controllers/concerns/facilities_management/page_detail/rm3830/supplier/contracts.rb b/app/controllers/concerns/facilities_management/page_detail/rm3830/supplier/contracts.rb deleted file mode 100644 index d04ea50869..0000000000 --- a/app/controllers/concerns/facilities_management/page_detail/rm3830/supplier/contracts.rb +++ /dev/null @@ -1,36 +0,0 @@ -module FacilitiesManagement::PageDetail::RM3830::Supplier::Contracts - include FacilitiesManagement::PageDetail - - def page_details(action) - action = 'edit' if action == 'update' - @page_details ||= page_definitions[:default].merge(page_definitions[action.to_sym]) - end - - def page_definitions - @page_definitions ||= { - default: {}, - show: { - back_url: facilities_management_rm3830_supplier_dashboard_index_path, - back_label: 'Return to dashboard', - back_text: 'Return to dashboard', - page_title: 'Contract summary', - caption1: @procurement.contract_name, - continuation_text: 'Respond to this offer', - secondary_text: 'Return to dashboard', - secondary_url: facilities_management_rm3830_supplier_dashboard_index_path, - return_text: 'Return to dashboard', - return_url: facilities_management_rm3830_supplier_dashboard_index_path - }, - edit: { - back_url: facilities_management_rm3830_supplier_contract_path(@contract.id), - back_label: 'Return to contract summary', - back_text: 'Return to contract summary', - page_title: 'Respond to the contract offer', - caption1: @procurement.contract_name, - continuation_text: 'Confirm and continue', - secondary_text: 'Cancel', - secondary_url: facilities_management_rm3830_supplier_dashboard_index_path - } - }.freeze - end -end diff --git a/app/controllers/concerns/facilities_management/page_detail/rm3830/supplier/dashboard.rb b/app/controllers/concerns/facilities_management/page_detail/rm3830/supplier/dashboard.rb deleted file mode 100644 index 5efc9de776..0000000000 --- a/app/controllers/concerns/facilities_management/page_detail/rm3830/supplier/dashboard.rb +++ /dev/null @@ -1,13 +0,0 @@ -module FacilitiesManagement::PageDetail::RM3830::Supplier::Dashboard - include FacilitiesManagement::PageDetail - - def page_definitions - @page_definitions ||= { - default: {}, - index: { - page_title: 'Direct award dashboard', - caption1: current_user.email - } - }.freeze - end -end diff --git a/app/controllers/concerns/facilities_management/supplier/framework_status_concern.rb b/app/controllers/concerns/facilities_management/supplier/framework_status_concern.rb deleted file mode 100644 index de69c68f8c..0000000000 --- a/app/controllers/concerns/facilities_management/supplier/framework_status_concern.rb +++ /dev/null @@ -1,17 +0,0 @@ -module FacilitiesManagement::Supplier::FrameworkStatusConcern - extend ActiveSupport::Concern - - included do - before_action :raise_if_not_live_framework - - rescue_from ApplicationController::UnrecognisedLiveFrameworkError do - redirect_to facilities_management_index_path(framework: Framework.facilities_management.current_framework) - end - end - - protected - - def raise_if_not_live_framework - raise ApplicationController::UnrecognisedLiveFrameworkError, 'Unrecognised Live Framework' unless Framework.facilities_management.live_framework?(params[:framework]) - end -end diff --git a/app/controllers/facilities_management/admin/framework_controller.rb b/app/controllers/facilities_management/admin/framework_controller.rb index 022f6463b3..6084cf4809 100644 --- a/app/controllers/facilities_management/admin/framework_controller.rb +++ b/app/controllers/facilities_management/admin/framework_controller.rb @@ -19,8 +19,8 @@ def rates def full_services services = FacilitiesManagement::RM3830::StaticData.services work_packages = FacilitiesManagement::RM3830::StaticData.work_packages - work_packages_with_rates = FacilitiesManagement::RM3830::Supplier::SupplierRatesHelper.add_rates_to_work_packages(work_packages, rates) - @full_services = FacilitiesManagement::RM3830::Supplier::SupplierRatesHelper.work_package_to_services(services, work_packages_with_rates) + work_packages_with_rates = FacilitiesManagement::RM3830::Admin::SupplierRatesHelper.add_rates_to_work_packages(work_packages, rates) + @full_services = FacilitiesManagement::RM3830::Admin::SupplierRatesHelper.work_package_to_services(services, work_packages_with_rates) end def redirect_if_lot_out_of_range diff --git a/app/controllers/facilities_management/buildings_controller.rb b/app/controllers/facilities_management/buildings_controller.rb deleted file mode 100644 index 4d886cac7e..0000000000 --- a/app/controllers/facilities_management/buildings_controller.rb +++ /dev/null @@ -1,170 +0,0 @@ -module FacilitiesManagement - class BuildingsController < FacilitiesManagement::FrameworkController - include FacilitiesManagement::FindAddressConcern - - before_action :set_procurement, if: -> { params[:procurement_id] } - before_action :set_building, only: %i[show edit update] - before_action :authorize_user - before_action :redirect_if_unrecognised_edit_section, only: %i[edit update] - before_action :set_edit_back_path, only: :edit - before_action :set_new_back_path, only: :new - - helper_method :index_path, :new_path, :show_path, :edit_path, :create_path, :update_path, :start_a_procurement_path, :section, :next_step_path, :last_step?, :valid_regions - - def index - @buildings = current_user.buildings.order_by_building_name.page(params[:page]) - end - - # rubocop:disable Rails/I18nLazyLookup - def show - @back_text = t('facilities_management.buildings.show.return_to_buildings') - @back_path = index_path - end - # rubocop:enable Rails/I18nLazyLookup - - def new - @building = current_user.buildings.build - end - - def edit; end - - def create - @section = :building_details - - @building = current_user.buildings.build(building_params) - - if params[:add_address].present? - add_address - elsif @building.save(context: :new) - redirect_to(params[:save_and_return] ? show_path : next_step_path) - else - set_new_back_path - render :new - end - end - - def update - @building.assign_attributes(building_params) - - if @building.save(context: section) - resolve_region(true) if add_address? - redirect_to(params[:save_and_return] ? show_path : next_step_path) - else - set_edit_back_path - render :edit - end - end - - private - - def set_building - @building = Building.find(params[:id]) - end - - def section - @section ||= params[:section]&.to_sym - end - - def redirect_if_unrecognised_edit_section - redirect_to show_path unless RECOGNISED_EDIT_SECTIONS.include? section - end - - RECOGNISED_EDIT_SECTIONS = %i[building_details building_area building_type security_type add_address].freeze - - def set_edit_back_path - @back_text = t("facilities_management.buildings.edit.previous_step_back_text.#{section}") - @back_path = previous_step_path - end - - def set_new_back_path - @back_text = t('facilities_management.buildings.new.return_to_buildings') - @back_path = index_path - end - - def current_step_index - @current_step_index ||= RECOGNISED_EDIT_SECTIONS.index(section) - end - - def previous_step_path - if current_step_index.zero? - show_path - else - previous_step = add_address? ? :building_details : RECOGNISED_EDIT_SECTIONS[current_step_index - 1] - - edit_path(@building, previous_step) - end - end - - def next_step_path - if last_step? - add_address? ? edit_path(@building, :building_details) : show_path - else - edit_path(@building, RECOGNISED_EDIT_SECTIONS[current_step_index + 1]) - end - end - - def last_step? - @last_step ||= current_step_index > 2 - end - - def add_address? - section == :add_address - end - - def add_address - if params[:step] && @building.valid?(:add_address) - resolve_region(false) - set_new_back_path - render :new - else - render_add_address - end - end - - def render_add_address - @back_text = t('facilities_management.buildings.add_address.return_to_building_details') - @back_path = 'javascript:history.back()' - render :add_address - end - - def building_params - if params[:facilities_management_building] - params.require(:facilities_management_building).permit(PERMITED_PARAMS[section]) - else - {} - end - end - - PERMITED_PARAMS = { - building_details: %i[building_name description address_line_1 address_line_2 address_town address_postcode address_region address_region_code], - building_area: %i[gia external_area], - building_type: %i[building_type other_building_type], - security_type: %i[security_type other_security_type], - add_address: %i[address_line_1 address_line_2 address_town address_postcode] - }.freeze - - # Methods relating to the building address - def valid_regions - return @valid_regions ||= find_region_query_by_postcode(@building.address_postcode) if @building.address_postcode.present? - - [] - end - - def resolve_region(save_region) - return if @building.blank? - - return if valid_regions.length > 1 || valid_regions.empty? - - @building.address_region = valid_regions[0][:region] - @building.address_region_code = valid_regions[0][:code] - @building.save if save_region - end - - protected - - def authorize_user - @procurement ? (authorize! :manage, @procurement) : (authorize! :read, FacilitiesManagement) - @building.present? ? (authorize! :manage, @building) : (authorize! :read, FacilitiesManagement) - end - end -end diff --git a/app/controllers/facilities_management/procurement_buildings_controller.rb b/app/controllers/facilities_management/procurement_buildings_controller.rb deleted file mode 100644 index df9308ec9e..0000000000 --- a/app/controllers/facilities_management/procurement_buildings_controller.rb +++ /dev/null @@ -1,100 +0,0 @@ -module FacilitiesManagement - class ProcurementBuildingsController < FacilitiesManagement::FrameworkController - before_action :set_procurement_building_data, except: :missing_regions - before_action :set_procurement_data, only: :missing_regions - before_action :authorize_user - before_action :redirect_if_unrecognised_stection, only: :edit - - helper_method :procurement_index_path, :procurement_show_path, :update_path, :section - - def edit; end - - def update - case section - when :buildings_and_services - update_procurement_building - when :missing_region - update_missing_region - end - end - - # rubocop:disable Rails/I18nLazyLookup - def missing_regions - redirect_to procurement_show_path unless @procurement.procurement_buildings_missing_regions? - - @back_path = procurement_index_path - @back_text = t('facilities_management.procurement_buildings.missing_regions.return_to_dashboard') - end - # rubocop:enable Rails/I18nLazyLookup - - private - - def procurement_index_path - "/facilities-management/#{params[:framework]}/procurements" - end - - def procurement_show_path - "/facilities-management/#{params[:framework]}/procurements/#{@procurement.id}" - end - - def update_path - "/facilities-management/#{params[:framework]}/procurement-buildings/#{params[:id]}/#{section.to_s.dasherize}" - end - - def procurement_details_show_path - "/facilities-management/#{params[:framework]}/procurements/#{@procurement.id}/procurement-details/buildings-and-services" - end - - def update_missing_region - @building.assign_attributes(building_params) - @building.add_region_code_from_address_region - - if @building.save(context: :all) - redirect_to procurement_show_path - else - render :edit - end - end - - def update_procurement_building - @procurement_building.assign_attributes(procurement_building_params) - - if @procurement_building.save(context: :buildings_and_services) - redirect_to procurement_details_show_path - else - render :edit - end - end - - def building_params - params.require(:facilities_management_building) - .permit(:address_region) - end - - def procurement_building_params - params.require(@procurement_building.model_name.param_key) - .permit(service_codes: []) - end - - def set_procurement_building_data - @procurement = @procurement_building.procurement - @building = @procurement_building.building - end - - def section - @section ||= params[:section].underscore.to_sym - end - - def redirect_if_unrecognised_stection - redirect_to procurement_show_path unless RECOGNISED_SECTIONS.include? section - end - - RECOGNISED_SECTIONS = %i[buildings_and_services missing_region].freeze - - protected - - def authorize_user - authorize! :manage, @procurement - end - end -end diff --git a/app/controllers/facilities_management/procurement_details_controller.rb b/app/controllers/facilities_management/procurement_details_controller.rb deleted file mode 100644 index 3682698c6c..0000000000 --- a/app/controllers/facilities_management/procurement_details_controller.rb +++ /dev/null @@ -1,161 +0,0 @@ -module FacilitiesManagement - class ProcurementDetailsController < FacilitiesManagement::FrameworkController - before_action :set_procurement - before_action :authorize_user - before_action :redirect_if_unrecognised_section, only: :show - before_action :redirect_to_edit_from_show, only: :show - before_action :set_procurement_show_data, only: :show - before_action :redirect_if_unrecognised_edit_section, only: :edit - before_action :set_procurement_edit_data, only: :edit - - helper_method :section, :show_path, :edit_path, :procurement_show_path - - def show; end - - def edit; end - - def update - assign_procurement_attributes - - if section == :buildings && !params[:commit] - paginate_procurement_buildings - elsif @procurement.save(context: section.to_sym) - redirect_to(self.class::RECOGNISED_DETAILS_SHOW_PAGES.include?(section) ? show_path : procurement_show_path) - else - set_paginated_buildings_data if section == :buildings - - render :edit - end - end - - private - - def section - @section ||= params['section'].underscore.to_sym - end - - def section_status - @section_status ||= @procurement.send("#{section}_status") - end - - def redirect_if_unrecognised_section - redirect_to procurement_show_path unless self.class::RECOGNISED_DETAILS_SHOW_PAGES.include? section - end - - def redirect_to_edit_from_show - redirect_to edit_path if section_status == :not_started || (section == :contract_period && section_status == :incomplete) - end - - def redirect_if_unrecognised_edit_section - redirect_to procurement_show_path unless self.class::RECOGNISED_DETAILS_EDIT_STEPS.include? section - end - - def procurement_show_path - "/facilities-management/#{params[:framework]}/procurements/#{params[:procurement_id]}" - end - - def show_path(section = params[:section]) - "/facilities-management/#{params[:framework]}/procurements/#{params[:procurement_id]}/procurement-details/#{section}" - end - - def edit_path(section = params[:section]) - "/facilities-management/#{params[:framework]}/procurements/#{params[:procurement_id]}/procurement-details/#{section}/edit" - end - - def set_procurement_edit_data - @procurement.build_call_off_extensions if section == :contract_period - set_buildings if section == :buildings - end - - def set_procurement_show_data - @active_procurement_buildings = @procurement.active_procurement_buildings.order_by_building_name.page(params[:page]) if section == :buildings || section == :buildings_and_services || section == :service_requirements - end - - # Methods relating to paginating the buildings - def set_buildings - find_buildings_with_update - set_paginated_buildings_data - end - - def find_buildings_with_update - @building_params ||= {} - active_procurement_building_ids = @procurement.procurement_buildings.select(&:active).pluck(:building_id) - - active_procurement_building_ids.each do |building_id| - @building_params[building_id] = '1' unless @building_params[building_id] - end - - @building_params.select! { |building_id, active| active == '1' || active_procurement_building_ids.include?(building_id) } - end - - def set_paginated_buildings_data - @buildings = current_user.buildings.order_by_building_name.page(params[:page]) - visible_buildings_ids = @buildings.map(&:id) - - hidden_building_ids = @building_params.except(*visible_buildings_ids).keys - @hidden_buildings = current_user.buildings.order_by_building_name.where(id: hidden_building_ids) - end - - def paramatise_building_selection - @building_params = procurement_params['procurement_buildings_attributes'].to_h.values.select { |building| building['active'] }.to_h { |item| [item['building_id'], item['active']] } - end - - def paginate_procurement_buildings - params[:page] = params.keys.select { |key| key.include?('paginate') }.first.split('-').last - - set_paginated_buildings_data - - render :edit - end - - # Methods relating to assigning attributes - def assign_procurement_attributes - if section == :buildings - paramatise_building_selection - find_buildings_with_update - - return unless params[:commit] - - current_procurement_buildings = @procurement.procurement_buildings.select(:id, :building_id).to_h { |pb| [pb.building_id, pb.id] } - @procurement.assign_attributes(procurement_buildings_attributes: @building_params.map { |building_id, active| { id: current_procurement_buildings[building_id], building_id: building_id, active: active } }) - else - @procurement.assign_attributes(procurement_params) - end - end - - def procurement_params - if params[@procurement.model_name.param_key] - params.require(@procurement.model_name.param_key).permit(PERMITED_PARAMS[section]) - else - @procurement.service_codes = [] if section == :services - {} - end - end - - PERMITED_PARAMS = { - contract_name: [:contract_name], - annual_contract_value: [:annual_contract_value], - estimated_annual_cost: %i[estimated_cost_known estimated_annual_cost], - tupe: [:tupe], - contract_period: [ - :initial_call_off_start_date_dd, - :initial_call_off_start_date_mm, - :initial_call_off_start_date_yyyy, - :initial_call_off_period_years, - :initial_call_off_period_months, - :mobilisation_period_required, - :mobilisation_period, - :extensions_required, - { call_off_extensions_attributes: %i[id extension years months extension_required] } - ], - services: [service_codes: []], - buildings: [procurement_buildings_attributes: %i[building_id active]] - }.freeze - - protected - - def authorize_user - @procurement ? (authorize! :manage, @procurement) : (authorize! :read, FacilitiesManagement) - end - end -end diff --git a/app/controllers/facilities_management/rm3830/admin/sublot_regions_controller.rb b/app/controllers/facilities_management/rm3830/admin/sublot_regions_controller.rb index ce920f0838..3cc93322f3 100644 --- a/app/controllers/facilities_management/rm3830/admin/sublot_regions_controller.rb +++ b/app/controllers/facilities_management/rm3830/admin/sublot_regions_controller.rb @@ -21,7 +21,7 @@ def set_region_data @regions = Nuts1Region.all.to_h { |region| [region.code, region.name] } supplier_lot_data = @supplier.lot_data[@lot]['regions'] @sublot_region_name = "Sub-lot #{@lot} regions" - @selected_supplier_regions = Supplier::SupplierRegionsHelper.supllier_selected_regions(supplier_lot_data) + @selected_supplier_regions = SupplierRegionsHelper.supllier_selected_regions(supplier_lot_data) @subregions = FacilitiesManagement::Region.all.to_h { |region| [region.code, region.name] } end diff --git a/app/controllers/facilities_management/rm3830/buildings_controller.rb b/app/controllers/facilities_management/rm3830/buildings_controller.rb deleted file mode 100644 index c576eceb30..0000000000 --- a/app/controllers/facilities_management/rm3830/buildings_controller.rb +++ /dev/null @@ -1,31 +0,0 @@ -module FacilitiesManagement - module RM3830 - class BuildingsController < FacilitiesManagement::BuildingsController - private - - def index_path - facilities_management_rm3830_buildings_path - end - - def show_path(building = @building) - facilities_management_rm3830_building_path(building) - end - - def edit_path(building, section) - edit_facilities_management_rm3830_building_path(building, section:) - end - - def create_path - facilities_management_rm3830_buildings_path - end - - def update_path - facilities_management_rm3830_building_path(@building, section:) - end - - def start_a_procurement_path - facilities_management_rm3830_what_happens_next_path - end - end - end -end diff --git a/app/controllers/facilities_management/rm3830/buyer_account_controller.rb b/app/controllers/facilities_management/rm3830/buyer_account_controller.rb deleted file mode 100644 index 955c1d0c5a..0000000000 --- a/app/controllers/facilities_management/rm3830/buyer_account_controller.rb +++ /dev/null @@ -1,20 +0,0 @@ -module FacilitiesManagement - module RM3830 - class BuyerAccountController < FacilitiesManagement::FrameworkController - before_action :redirect_if_needed - before_action :authenticate_user! - before_action :authorize_user - - def index - @current_login_email = current_user.email.to_s - @buyer_detail = FacilitiesManagement::BuyerDetail.find_or_create_by(user: current_user) - end - - private - - def redirect_if_needed - redirect_to facilities_management_rm3830_start_path unless user_signed_in? - end - end - end -end diff --git a/app/controllers/facilities_management/rm3830/edit_buildings_controller.rb b/app/controllers/facilities_management/rm3830/edit_buildings_controller.rb deleted file mode 100644 index bcbbd0b228..0000000000 --- a/app/controllers/facilities_management/rm3830/edit_buildings_controller.rb +++ /dev/null @@ -1,35 +0,0 @@ -module FacilitiesManagement - module RM3830 - class EditBuildingsController < FacilitiesManagement::BuildingsController - private - - def index_path - edit_facilities_management_rm3830_procurement_path(@procurement, step: :buildings) - end - - def show_path(building = @building) - facilities_management_rm3830_procurement_edit_building_path(@procurement, building) - end - - def edit_path(building, section) - edit_facilities_management_rm3830_procurement_edit_building_path(@procurement, building, section:) - end - - def create_path - facilities_management_rm3830_procurement_edit_buildings_path(@procurement) - end - - def update_path - facilities_management_rm3830_procurement_edit_building_path(@procurement, @building, section:) - end - - def start_a_procurement_path - facilities_management_rm3830_what_happens_next_path - end - - def set_procurement - @procurement = Procurement.find(params[:procurement_id]) - end - end - end -end diff --git a/app/controllers/facilities_management/rm3830/home_controller.rb b/app/controllers/facilities_management/rm3830/home_controller.rb deleted file mode 100644 index 323bfdf4a0..0000000000 --- a/app/controllers/facilities_management/rm3830/home_controller.rb +++ /dev/null @@ -1,11 +0,0 @@ -module FacilitiesManagement - module RM3830 - class HomeController < FacilitiesManagement::FrameworkController - include SharedPagesConcern - - skip_before_action :authenticate_user!, :authorize_user, :redirect_to_buyer_detail - - def index; end - end - end -end diff --git a/app/controllers/facilities_management/rm3830/passwords_controller.rb b/app/controllers/facilities_management/rm3830/passwords_controller.rb deleted file mode 100644 index aa32748d18..0000000000 --- a/app/controllers/facilities_management/rm3830/passwords_controller.rb +++ /dev/null @@ -1,6 +0,0 @@ -module FacilitiesManagement - module RM3830 - class PasswordsController < FacilitiesManagement::PasswordsController - end - end -end diff --git a/app/controllers/facilities_management/rm3830/procurement_buildings_controller.rb b/app/controllers/facilities_management/rm3830/procurement_buildings_controller.rb deleted file mode 100644 index ffd9ae16c7..0000000000 --- a/app/controllers/facilities_management/rm3830/procurement_buildings_controller.rb +++ /dev/null @@ -1,34 +0,0 @@ -module FacilitiesManagement - module RM3830 - class ProcurementBuildingsController < FacilitiesManagement::ProcurementBuildingsController - before_action :set_volume_procurement_building_services, only: :show - before_action :set_standards_procurement_building_services, only: :show - - def show; end - - private - - def set_procurement_building_data - @procurement_building = ProcurementBuilding.find(params[:id]) - - super - end - - def set_procurement_data - @procurement = Procurement.find(params[:procurement_id]) - end - - def set_volume_procurement_building_services - @volume_procurement_building_services = @procurement_building.sorted_procurement_building_services.map do |procurement_building_service| - procurement_building_service.required_volume_contexts.map do |context| - { procurement_building_service: procurement_building_service, context: context[1].first } - end - end.flatten - end - - def set_standards_procurement_building_services - @standards_procurement_building_services = @procurement_building.sorted_procurement_building_services.select(&:requires_service_standard?) - end - end - end -end diff --git a/app/controllers/facilities_management/rm3830/procurement_buildings_services_controller.rb b/app/controllers/facilities_management/rm3830/procurement_buildings_services_controller.rb deleted file mode 100644 index 50e0d67569..0000000000 --- a/app/controllers/facilities_management/rm3830/procurement_buildings_services_controller.rb +++ /dev/null @@ -1,122 +0,0 @@ -module FacilitiesManagement - module RM3830 - class ProcurementBuildingsServicesController < FacilitiesManagement::FrameworkController - before_action :set_building_and_service_data - before_action :authorize_user - before_action :set_partial - before_action :redirect_if_unrecognised_step, only: :edit - before_action :create_first_lift, if: -> { @partial_prefix == 'lifts' }, only: :edit - - def edit; end - - def update - case params[:facilities_management_rm3830_procurement_building_service][:service_question] - when 'lifts' - update_procurement_building_service(lift_params, :lifts) - when 'service_hours' - update_procurement_building_service(service_hours_params, :service_hours) - when 'volumes' - update_procurement_building_service(volume_params, :volume) - when 'service_standards' - update_procurement_building_service(service_standards_params, :service_standard) - when 'area' - update_building_area - else - redirect_to facilities_management_rm3830_procurement_building_path(@procurement_building) - end - end - - private - - def update_procurement_building_service(pbs_params, context) - @building_service.assign_attributes(pbs_params) - - if @building_service.save(context:) - redirect_to facilities_management_rm3830_procurement_building_path(@procurement_building) - else - params[:service_question] = params[:facilities_management_rm3830_procurement_building_service][:service_question] - set_partial - render :edit - end - end - - def update_building_area - @building.assign_attributes(area_params) - - if building_valid? - @building.save - redirect_to facilities_management_rm3830_procurement_building_path(@procurement_building) - else - params[:service_question] = params[:facilities_management_rm3830_procurement_building_service][:service_question] - set_partial - render :edit - end - end - - def building_valid? - return false unless @building.valid?(:building_area) - - @building.errors.add(:gia, :required) unless @procurement_building.valid?(:gia) - @building.errors.add(:external_area, :required) unless @procurement_building.valid?(:external_area) - - @building.errors.empty? - end - - def set_partial - @partial_prefix = params[:service_question] - end - - def lift_params - params.require(:facilities_management_rm3830_procurement_building_service) - .permit(lifts_attributes: %i[id number_of_floors _destroy]) - end - - def service_hours_params - params.require(:facilities_management_rm3830_procurement_building_service) - .permit(:service_hours, :detail_of_requirement) - end - - def volume_params - params.require(:facilities_management_rm3830_procurement_building_service) - .permit(:no_of_appliances_for_testing, - :no_of_building_occupants, - :no_of_consoles_to_be_serviced, - :tones_to_be_collected_and_removed, - :no_of_units_to_be_serviced) - end - - def service_standards_params - params.require(:facilities_management_rm3830_procurement_building_service) - .permit(:service_standard) - end - - def area_params - params.require(:facilities_management_building) - .permit(:gia, :external_area) - end - - def set_building_and_service_data - @building_service = ProcurementBuildingService.find_by id: params[:id] - @procurement_building = @building_service.procurement_building - @building = @procurement_building.building - @procurement = @procurement_building.procurement - end - - def create_first_lift - @building_service.lifts.build if @building_service.lifts.empty? - end - - def redirect_if_unrecognised_step - redirect_to facilities_management_rm3830_procurement_building_path(@procurement_building) unless RECOGNISED_STEPS.include? @partial_prefix - end - - RECOGNISED_STEPS = %w[lifts service_hours volumes service_standards area].freeze - - protected - - def authorize_user - authorize! :manage, @procurement - end - end - end -end diff --git a/app/controllers/facilities_management/rm3830/procurement_details_controller.rb b/app/controllers/facilities_management/rm3830/procurement_details_controller.rb deleted file mode 100644 index f198a7d227..0000000000 --- a/app/controllers/facilities_management/rm3830/procurement_details_controller.rb +++ /dev/null @@ -1,14 +0,0 @@ -module FacilitiesManagement - module RM3830 - class ProcurementDetailsController < FacilitiesManagement::ProcurementDetailsController - private - - def set_procurement - @procurement = Procurement.find(params[:procurement_id]) - end - - RECOGNISED_DETAILS_EDIT_STEPS = %i[contract_name estimated_annual_cost tupe contract_period services buildings].freeze - RECOGNISED_DETAILS_SHOW_PAGES = %i[contract_period services buildings buildings_and_services service_requirements].freeze - end - end -end diff --git a/app/controllers/facilities_management/rm3830/procurements/contract_details_controller.rb b/app/controllers/facilities_management/rm3830/procurements/contract_details_controller.rb deleted file mode 100644 index 524e591d92..0000000000 --- a/app/controllers/facilities_management/rm3830/procurements/contract_details_controller.rb +++ /dev/null @@ -1,287 +0,0 @@ -module FacilitiesManagement - module RM3830 - module Procurements - class ContractDetailsController < FacilitiesManagement::FrameworkController - include FacilitiesManagement::PageDetail::RM3830::ContractDetails - - before_action :set_procurement - before_action :authorize_user - before_action :redirect_if_not_da_draft - before_action :redirect_if_not_in_contract_details, only: :edit - before_action :return_to_results, only: :update, if: -> { params['return_to_results'].present? } - before_action :set_page_name - before_action :redirect_if_unrecognised_page_name, only: :edit - before_action :initialize_page_description_from_view_name, only: %i[show edit] - before_action :delete_incomplete_contact_details, only: %i[show edit] - before_action :reset_security_policy_document_page, only: :show, if: -> { @page_name == :contract_details } - before_action :delete_incomplete_pension_data, only: :show, if: -> { @page_name == :contract_details && pension_data_incomplete? } - before_action :create_contact_detail, only: :edit - before_action :create_first_pension_fund, only: :edit, if: -> { @page_name == :pension_funds } - - def show; end - - def edit; end - - def update - case @page_name - when :pricing, :what_next, :important_information - continue_da_journey - when :contract_details - validate_contract_details - when :review_and_generate - route_review_and_generate - when :review - route_review - when :sending - route_sending - when :pension_funds - update_pension_funds - else - update_contract_details - end - end - - private - - def set_procurement - @procurement = current_user.rm3830_procurements.find(params[:id] || params[:procurement_id]) - end - - def redirect_if_not_da_draft - redirect_to facilities_management_rm3830_procurement_path(id: @procurement.id) unless @procurement.da_draft? - end - - def redirect_if_not_in_contract_details - redirect_to facilities_management_rm3830_procurement_contract_details_path unless @procurement.contract_details? - end - - def return_to_results - @procurement.return_to_results! - redirect_to facilities_management_rm3830_procurement_path(@procurement) - end - - def continue_da_journey - @procurement.move_to_next_da_step - redirect_to facilities_management_rm3830_procurement_contract_details_path - end - - def validate_contract_details - if @procurement.valid?(:contract_details) - continue_da_journey - else - initialize_page_description_from_view_name - render :show - end - end - - def route_review_and_generate - if params[:change_requirements].present? - @procurement.set_state_to_detailed_search! - redirect_to facilities_management_rm3830_procurement_path(@procurement) - elsif params[:change_contract_details].present? - @procurement.update(da_journey_state: :contract_details) - redirect_to facilities_management_rm3830_procurement_contract_details_path - else - continue_da_journey - end - end - - def route_review - if params['return_to_review_and_generate'].present? - @procurement.update(da_journey_state: :review_and_generate) - redirect_to facilities_management_rm3830_procurement_contract_details_path - else - continue_da_journey - end - end - - def route_sending - if params['return_to_review'].present? - @procurement.update(da_journey_state: :review) - redirect_to facilities_management_rm3830_procurement_contract_details_path - else - @procurement.move_to_next_da_step - @procurement.set_state_to_direct_award! - redirect_to facilities_management_rm3830_procurement_contract_sent_index_path(@procurement.id, contract_id: @procurement.procurement_suppliers.first.id) - end - end - - def update_contract_details - @procurement.assign_attributes(procurement_params) - - if @procurement.save(context: @page_name) - route_after_update - else - initialize_page_description_from_view_name - render :edit - end - end - - def route_after_update - case @page_name - when :local_government_pension_scheme - route_local_government_pension_scheme - when :invoicing_contact_details, :authorised_representative, :notices_contact_details - route_new_contact_detail - when :new_invoicing_contact_details, :new_authorised_representative, :new_notices_contact_details - redirect_to facilities_management_rm3830_procurement_contract_details_edit_path(page: @page_name[4..]) - when :new_invoicing_contact_details_address, :new_authorised_representative_address, :new_notices_contact_details_address - redirect_to facilities_management_rm3830_procurement_contract_details_edit_path(page: @page_name[0..-9]) - else - redirect_to facilities_management_rm3830_procurement_contract_details_path - end - end - - def route_local_government_pension_scheme - @procurement.local_government_pension_scheme ? redirect_to(facilities_management_rm3830_procurement_contract_details_edit_path(page: 'pension_funds')) : redirect_to(facilities_management_rm3830_procurement_contract_details_path) - end - - def route_new_contact_detail - if !using_buyer_detail_for_contact? && !contact_detail_exists? - redirect_to(facilities_management_rm3830_procurement_contract_details_edit_path(page: "new_#{@page_name}")) - else - redirect_to(facilities_management_rm3830_procurement_contract_details_path) - end - end - - def using_buyer_detail_for_contact? - case @page_name - when :invoicing_contact_details - @procurement.using_buyer_detail_for_invoice_details - when :authorised_representative - @procurement.using_buyer_detail_for_authorised_detail - when :notices_contact_details - @procurement.using_buyer_detail_for_notices_detail - end - end - - def contact_detail_exists? - case @page_name - when :invoicing_contact_details - @procurement.invoice_contact_detail.present? - when :authorised_representative - @procurement.authorised_contact_detail.present? - when :notices_contact_details - @procurement.notices_contact_detail.present? - end - end - - def create_contact_detail - case @page_name - when :new_invoicing_contact_details, :new_invoicing_contact_details_address - create_contact_data('invoice_contact_detail') - when :new_authorised_representative, :new_authorised_representative_address - create_contact_data('authorised_contact_detail') - when :new_notices_contact_details, :new_notices_contact_details_address - create_contact_data('notices_contact_detail') - end - end - - def create_contact_data(contact) - @procurement.send("build_#{contact}") if @procurement.send(contact).blank? - end - - def create_first_pension_fund - @procurement.procurement_pension_funds.build if @procurement.procurement_pension_funds.empty? - end - - def update_pension_funds - pension_funds = procurement_params[:procurement_pension_funds_attributes] - updated_pension_funds = {} - pension_funds.each do |pf| - if pf[1]['_destroy'] == 'true' && !pf[1]['id'].nil? - @procurement.update(procurement_pension_funds_attributes: pf[1]) - else - updated_pension_funds[pf[0]] = pf[1] - end - end - - @procurement.reload - if @procurement.update(procurement_pension_funds_attributes: updated_pension_funds) - redirect_to facilities_management_rm3830_procurement_contract_details_path - else - initialize_page_description_from_view_name - render :edit - end - end - - def delete_incomplete_contact_details - reset_contact_data_if_needed(:new_invoicing_contact_details, :new_invoicing_contact_details_address, :invoice_contact_detail, :using_buyer_detail_for_invoice_details) - reset_contact_data_if_needed(:new_authorised_representative, :new_authorised_representative_address, :authorised_contact_detail, :using_buyer_detail_for_authorised_detail) - reset_contact_data_if_needed(:new_notices_contact_details, :new_notices_contact_details_address, :notices_contact_detail, :using_buyer_detail_for_notices_detail) - end - - # rubocop:disable Style/GuardClause - def reset_contact_data_if_needed(new_contact, contact_address, contact_detail, using_buyer_detail) - return if @page_name == new_contact || @page_name == contact_address - - if @procurement.contract_detail_incomplete?(contact_detail) - @procurement.send(contact_detail).delete - @procurement.reload - end - - if @procurement[using_buyer_detail] == false && @procurement.send(contact_detail).blank? - @procurement[using_buyer_detail] = nil - @procurement.save - end - end - # rubocop:enable Style/GuardClause - - def reset_security_policy_document_page - @procurement.update(security_policy_document_required: nil) if @procurement.security_policy_document_required == true && @procurement.security_policy_document_file.attachment.nil? - end - - def pension_data_incomplete? - @procurement.local_government_pension_scheme ? @procurement.procurement_pension_funds.empty? : false - end - - def delete_incomplete_pension_data - @procurement.procurement_pension_funds.delete - @procurement.update(local_government_pension_scheme: nil) - @procurement.reload - end - - def procurement_params - params.require(:facilities_management_rm3830_procurement).permit(*PAGE_PERMITTED_PARAMS[@page_name]) - end - - PAGE_PERMITTED_PARAMS = { - payment_method: [:payment_method], - invoicing_contact_details: [:using_buyer_detail_for_invoice_details], - new_invoicing_contact_details: [invoice_contact_detail_attributes: %i[id name job_title email organisation_address_line_1 organisation_address_line_2 organisation_address_town organisation_address_county organisation_address_postcode]], - new_invoicing_contact_details_address: [invoice_contact_detail_attributes: %i[id organisation_address_line_1 organisation_address_line_2 organisation_address_town organisation_address_county organisation_address_postcode]], - authorised_representative: [:using_buyer_detail_for_authorised_detail], - new_authorised_representative: [authorised_contact_detail_attributes: %i[id name job_title email organisation_address_line_1 organisation_address_line_2 organisation_address_town organisation_address_county organisation_address_postcode telephone_number]], - new_authorised_representative_address: [authorised_contact_detail_attributes: %i[id organisation_address_line_1 organisation_address_line_2 organisation_address_town organisation_address_county organisation_address_postcode telephone_number]], - notices_contact_details: [:using_buyer_detail_for_notices_detail], - new_notices_contact_details: [notices_contact_detail_attributes: %i[id name job_title email organisation_address_line_1 organisation_address_line_2 organisation_address_town organisation_address_county organisation_address_postcode]], - new_notices_contact_details_address: [notices_contact_detail_attributes: %i[id organisation_address_line_1 organisation_address_line_2 organisation_address_town organisation_address_county organisation_address_postcode]], - security_policy_document: %i[security_policy_document_required security_policy_document_name security_policy_document_version_number security_policy_document_date_dd security_policy_document_date_mm security_policy_document_date_yyyy security_policy_document_file], - local_government_pension_scheme: [:local_government_pension_scheme], - pension_funds: [procurement_pension_funds_attributes: %i[id name percentage _destroy case_sensitive_error]], - governing_law: [:governing_law] - }.freeze - - def set_page_name - @page_name = if action_name == 'show' - @procurement.da_journey_state.to_sym - else - params[:page].to_sym - end - end - - def redirect_if_unrecognised_page_name - redirect_to facilities_management_rm3830_procurement_contract_details_path unless RECOGNISED_PAGE_NAMES.include? @page_name - end - - RECOGNISED_PAGE_NAMES = %i[authorised_representative governing_law invoicing_contact_details local_government_pension_scheme new_authorised_representative_address new_authorised_representative new_invoicing_contact_details_address new_invoicing_contact_details new_notices_contact_details_address new_notices_contact_details notices_contact_details payment_method pension_funds security_policy_document].freeze - - protected - - def authorize_user - authorize! :manage, @procurement - end - end - end - end -end diff --git a/app/controllers/facilities_management/rm3830/procurements/contracts/closed_controller.rb b/app/controllers/facilities_management/rm3830/procurements/contracts/closed_controller.rb deleted file mode 100644 index a2e214b645..0000000000 --- a/app/controllers/facilities_management/rm3830/procurements/contracts/closed_controller.rb +++ /dev/null @@ -1,21 +0,0 @@ -module FacilitiesManagement - module RM3830 - module Procurements - module Contracts - class ClosedController < FacilitiesManagement::FrameworkController - before_action :set_contract_and_procurement - - def index; end - - private - - def set_contract_and_procurement - @procurement = @current_user.rm3830_procurements.find_by(id: params[:procurement_id]) - authorize! :manage, @procurement - @contract = @procurement&.procurement_suppliers&.find_by(id: params[:contract_id]) - end - end - end - end - end -end diff --git a/app/controllers/facilities_management/rm3830/procurements/contracts/documents_controller.rb b/app/controllers/facilities_management/rm3830/procurements/contracts/documents_controller.rb deleted file mode 100644 index c1b5dad1f4..0000000000 --- a/app/controllers/facilities_management/rm3830/procurements/contracts/documents_controller.rb +++ /dev/null @@ -1,40 +0,0 @@ -module FacilitiesManagement - module RM3830 - module Procurements - module Contracts - class DocumentsController < FacilitiesManagement::FrameworkController - before_action :set_contract, except: :zip_contracts - # If this document generation changes you must change it - # app/services/facilities_management/rm3830/procurements/contracts/documents_generator.rb self.call_off_schedule - def call_off_schedule - file_stream = DocumentsGenerator.generate_doc_call_off_schedule(params[:contract_id]) - send_data file_stream, filename: 'Attachment 4 - Order Form and Call-Off Schedules (DA) v3.0.docx', type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' - end - - def zip_contracts - file_stream = DocumentsGenerator.build_download_zip_file(params[:contract_id]) - send_data file_stream.read, filename: 'review_your_contract.zip', type: 'application/zip' - end - - def call_off_schedule_2 - file_stream = DocumentsGenerator.generate_doc_call_off_schedule_2(params[:contract_id]) - send_data file_stream, filename: 'Call-Off Schedule 2 - Staff Transfer (DA) v3.0.docx', type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' - end - - private - - def set_contract - @contract = ProcurementSupplier.find(params[:contract_id]) - end - - protected - - def authorize_user - @contract ||= ProcurementSupplier.find(params[:contract_id]) - authorize! :manage, @contract.procurement - end - end - end - end - end -end diff --git a/app/controllers/facilities_management/rm3830/procurements/contracts/sent_controller.rb b/app/controllers/facilities_management/rm3830/procurements/contracts/sent_controller.rb deleted file mode 100644 index 4ce7200aba..0000000000 --- a/app/controllers/facilities_management/rm3830/procurements/contracts/sent_controller.rb +++ /dev/null @@ -1,16 +0,0 @@ -module FacilitiesManagement - module RM3830 - module Procurements - module Contracts - class SentController < FacilitiesManagement::FrameworkController - def index - @procurement = @current_user.rm3830_procurements.find_by(id: params[:procurement_id]) - authorize! :manage, @procurement - @contract = @procurement&.procurement_suppliers&.find_by(id: params[:contract_id]) - @supplier = @contract&.supplier - end - end - end - end - end -end diff --git a/app/controllers/facilities_management/rm3830/procurements/contracts_controller.rb b/app/controllers/facilities_management/rm3830/procurements/contracts_controller.rb deleted file mode 100644 index e09d27df63..0000000000 --- a/app/controllers/facilities_management/rm3830/procurements/contracts_controller.rb +++ /dev/null @@ -1,144 +0,0 @@ -module FacilitiesManagement - module RM3830 - module Procurements - class ContractsController < FacilitiesManagement::FrameworkController - include FacilitiesManagement::PageDetail::RM3830::Contracts - - before_action :set_procurement - before_action :set_contract - before_action :authorize_user - before_action :redirect_if_contract_cannot_be_updated, only: %i[edit update] - before_action :redirect_if_unrecognised_name, only: :edit - before_action :initialize_page_description, only: %i[show edit] - before_action :assign_contract_attributes, only: :update - - def show; end - - def edit - redirect_to_last_contract_closed_page if params[:name] == 'next_supplier' && @procurement.unsent_direct_award_offers.empty? - end - - def update - case params[:name] - when 'withdraw' - close_procurement - when 'signed' - update_supplier_response - when 'next_supplier' - if @contract.last_offer? - no_more_suppliers - else - send_offer_to_next_supplier - end - end - end - - private - - def set_procurement - @procurement = Procurement.find(params[:procurement_id]) - end - - def set_contract - @contract = ProcurementSupplier.find(params[:id]) - end - - def redirect_if_contract_cannot_be_updated - redirect_to facilities_management_rm3830_procurement_contract_path if cannot_edit_or_update_contract? - end - - def cannot_edit_or_update_contract? - if @contract.closed? - true - else - case params[:name] - when 'next_supplier' - @contract.cannot_offer_to_next_supplier? - when 'withdraw' - @contract.cannot_withdraw? - when 'signed' - !@contract.accepted? - end - end - end - - def assign_contract_attributes - return if params[:name] == 'next_supplier' - - @contract.assign_attributes(contract_params) - end - - def close_procurement - if @contract.valid?(:reason_for_closing) - @contract.save! - @contract.withdraw! if @contract.may_withdraw? - @procurement.set_state_to_closed! - redirect_to facilities_management_rm3830_procurement_contract_closed_index_path(@procurement.id, contract_id: @contract.id) - else - initialize_page_description - render :edit - end - end - - def update_supplier_response - if @contract.valid?(:confirmation_of_signed_contract) - if @contract.contract_signed - @contract.sign! - redirect_to facilities_management_rm3830_procurement_contract_closed_index_path(@procurement.id, contract_id: @contract.id) - else - @contract.not_sign! - redirect_to facilities_management_rm3830_procurement_contract_path(procurement_id: @procurement.id, id: @contract.id) - end - else - initialize_page_description - render :edit - end - end - - def send_offer_to_next_supplier - next_contract = @procurement.unsent_direct_award_offers.first - @procurement.offer_to_next_supplier - @procurement.save - redirect_to facilities_management_rm3830_procurement_contract_sent_index_path(@procurement.id, contract_id: next_contract.id) - end - - def redirect_to_last_contract_closed_page - last_contract = @procurement.procurement_suppliers.where(direct_award_value: Procurement::DIRECT_AWARD_VALUE_RANGE).last - redirect_to facilities_management_rm3830_procurement_contract_sent_index_path(@procurement.id, contract_id: last_contract.id) - end - - def no_more_suppliers - @procurement.set_state_to_closed! - redirect_to facilities_management_rm3830_procurement_contract_sent_index_path(@procurement.id, contract_id: @contract.id) - end - - def contract_params - params.require(:facilities_management_rm3830_procurement_supplier) - .permit( - :reason_for_closing, - :contract_signed, - :reason_for_not_signing, - :contract_start_date_dd, - :contract_start_date_mm, - :contract_start_date_yyyy, - :contract_end_date_dd, - :contract_end_date_mm, - :contract_end_date_yyyy - ) - end - - def redirect_if_unrecognised_name - redirect_to facilities_management_rm3830_procurement_contract_path(procurement_id: @procurement.id, id: @contract.id) unless RECOGNISED_NAMES.include? params[:name] - end - - RECOGNISED_NAMES = %w[withdraw signed next_supplier].freeze - - protected - - def authorize_user - authorize! :manage, @procurement - end - end - end - end -end diff --git a/app/controllers/facilities_management/rm3830/procurements/copy_procurement_controller.rb b/app/controllers/facilities_management/rm3830/procurements/copy_procurement_controller.rb deleted file mode 100644 index 2a926e56a3..0000000000 --- a/app/controllers/facilities_management/rm3830/procurements/copy_procurement_controller.rb +++ /dev/null @@ -1,56 +0,0 @@ -module FacilitiesManagement - module RM3830 - module Procurements - class CopyProcurementController < FacilitiesManagement::FrameworkController - include FacilitiesManagement::PageDetail::RM3830::CopyProcurement - - before_action :set_procurement_data - before_action :authorize_user - before_action :set_contract_data - before_action :duplicate_procurement - before_action :initialize_page_description - - def new; end - - def create - @procurement_copy.assign_attributes(procurement_params) - if @procurement_copy.save(context: :contract_name) - redirect_to facilities_management_rm3830_procurement_path(@procurement_copy.id) - else - @errors = @procurement.errors - set_procurement_data - render :new - end - end - - private - - def set_procurement_data - @procurement = current_user.rm3830_procurements.find_by(id: params[:procurement_id]) - end - - def set_contract_data - @contract = if find_contract_id.nil? - nil - else - @procurement.procurement_suppliers.find_by(id: find_contract_id) - end - end - - def duplicate_procurement - @procurement_copy = @procurement.create_procurement_copy - end - - def procurement_params - params.require(:facilities_management_rm3830_procurement).permit(:contract_name) - end - - protected - - def authorize_user - authorize! :manage, @procurement - end - end - end - end -end diff --git a/app/controllers/facilities_management/rm3830/procurements/spreadsheet_imports_controller.rb b/app/controllers/facilities_management/rm3830/procurements/spreadsheet_imports_controller.rb deleted file mode 100644 index 2086477141..0000000000 --- a/app/controllers/facilities_management/rm3830/procurements/spreadsheet_imports_controller.rb +++ /dev/null @@ -1,101 +0,0 @@ -module FacilitiesManagement - module RM3830 - module Procurements - class SpreadsheetImportsController < FacilitiesManagement::FrameworkController - before_action :set_procurement - before_action :authorize_user - before_action :set_spreadsheet_import, only: %i[show destroy progress] - before_action :redirect_to_requirements - - def show - initialize_errors if @spreadsheet_import.failed? - end - - def new - @spreadsheet_import = SpreadsheetImport.new(facilities_management_rm3830_procurement_id: params[:procurement_id]) - end - - def create - @procurement.remove_existing_spreadsheet_import if @procurement.spreadsheet_import.present? - - (cancel_and_return && return) if params[:cancel_and_return].present? - - @spreadsheet_import = SpreadsheetImport.new(spreadsheet_import_params) - if @spreadsheet_import.save(context: :upload) - @spreadsheet_import.start_import! - redirect_to facilities_management_rm3830_procurement_spreadsheet_import_path(procurement_id: @spreadsheet_import.procurement.id, id: @spreadsheet_import.id) - else - @spreadsheet_import.destroy - render :new - end - end - - def destroy - @spreadsheet_import.delete - redirect_to new_facilities_management_rm3830_procurement_spreadsheet_import_path(procurement_id: @procurement.id) - end - - def progress - render json: { import_status: @spreadsheet_import.data_import_state } - end - - private - - def set_procurement - @procurement = Procurement.find(params[:procurement_id]) - end - - def set_spreadsheet_import - @spreadsheet_import = SpreadsheetImport.find(params[:id] || params[:spreadsheet_import_id]) - rescue ActiveRecord::RecordNotFound - redirect_to new_facilities_management_rm3830_procurement_spreadsheet_import_path(procurement_id: @procurement.id) - end - - def spreadsheet_import_params - params.require(:facilities_management_rm3830_spreadsheet_import).permit(:spreadsheet_file, :facilities_management_rm3830_procurement_id) - end - - def redirect_to_requirements - redirect_to facilities_management_rm3830_procurement_path(@procurement) unless @procurement.detailed_search_bulk_upload? - end - - def initialize_errors - @error_lists = if import_error_type == :normal - { - building_errors: @spreadsheet_import.building_errors, - service_matrix_errors: @spreadsheet_import.service_matrix_errors, - service_volume_errors: @spreadsheet_import.service_volume_errors, - lift_errors: @spreadsheet_import.lift_errors, - service_hour_errors: @spreadsheet_import.service_hour_errors, - other_errors: @spreadsheet_import.import_errors.empty? ? [:other_errors] : [] - } - end - end - - def import_error_type - @import_error_type ||= if @spreadsheet_import.import_errors.any? && @spreadsheet_import.import_errors[:other_errors] - if @spreadsheet_import.import_errors[:other_errors][:file_check_error].present? - :template - else - :generic - end - else - :normal - end - end - - def cancel_and_return - @procurement.spreadsheet_import.destroy if @procurement.spreadsheet_import.present? - - redirect_to facilities_management_rm3830_procurement_path(id: @procurement.id, spreadsheet: true) - end - - protected - - def authorize_user - @procurement ? (authorize! :manage, @procurement) : (authorize! :read, FacilitiesManagement) - end - end - end - end -end diff --git a/app/controllers/facilities_management/rm3830/procurements_controller.rb b/app/controllers/facilities_management/rm3830/procurements_controller.rb deleted file mode 100644 index 5f92fdb9a2..0000000000 --- a/app/controllers/facilities_management/rm3830/procurements_controller.rb +++ /dev/null @@ -1,359 +0,0 @@ -module FacilitiesManagement - module RM3830 - class ProcurementsController < FacilitiesManagement::FrameworkController - include FacilitiesManagement::PageDetail::RM3830::Procurements - - before_action :set_procurement, except: %i[index new create what_happens_next] - before_action :authorize_user - before_action :set_deleted_action_occurred, only: :index - before_action :redirect_from_delete_if_needed, only: %i[delete destroy] - before_action :redirect_if_missing_regions, :redirect_to_contract_details_if_da_draft, only: :show - before_action :redirect_if_unrecognised_step, only: :edit - before_action :procurement_valid?, only: :show, if: -> { params[:validate].present? } - before_action :set_current_step, only: %i[show edit] - before_action :set_view_name, only: :show - before_action :initialize_page_description_from_view_name, only: :show, if: -> { page_definitions.key?(@view_name.to_sym) } - - def index - @searches = current_user.rm3830_procurements.where(aasm_state: Procurement::SEARCH).order(updated_at: :asc).sort_by { |search| Procurement::SEARCH_ORDER.index(search.aasm_state) } - @in_draft = current_user.rm3830_procurements.da_draft.order(updated_at: :asc) - @sent_offers = sent_offers - @contracts = live_contracts - @closed_contracts = closed_contracts - @further_competition_contracts = current_user.rm3830_procurements.further_competition.order(updated_at: :asc) - end - - def show - redirect_to facilities_management_rm3830_procurements_path if @procurement.da_journey_state == 'sent' - redirect_to facilities_management_rm3830_procurement_spreadsheet_import_path(procurement_id: @procurement, id: @procurement.spreadsheet_import) if @procurement.detailed_search_bulk_upload? && @procurement.spreadsheet_import.present? - end - - def new - @procurement = current_user.rm3830_procurements.build(service_codes: params[:service_codes], region_codes: params[:region_codes]) - @back_path = back_path - @back_text = 'Return to regions' - end - - def edit - redirect_to facilities_management_rm3830_procurement_path(@procurement) if params[:step].nil? - end - - def create - @procurement = current_user.rm3830_procurements.build(procurement_params) - - if @procurement.save(context: :contract_name) - if @procurement.region_codes.empty? - @procurement.start_detailed_search! - redirect_to facilities_management_rm3830_procurement_path(@procurement) - elsif params[:save_for_later].present? - redirect_to facilities_management_rm3830_procurements_path - else - redirect_to facilities_management_rm3830_procurement_path(@procurement, what_happens_next: true) - end - else - @errors = @procurement.errors - @back_path = back_path - render :new - end - end - - def update - return if updates_for_show_pages - return if updates_for_edit_pages - - update_procurement && return if params.key?(:facilities_management_rm3830_procurement) - end - - def delete - render layout: 'error' - end - - def destroy - DeleteProcurement.delete_procurement(@procurement) - redirect_to facilities_management_rm3830_procurements_path(deleted: @procurement.contract_name) - end - - def what_happens_next; end - - def quick_view_results_spreadsheet - if @procurement.quick_search? - spreadsheet_builder = SupplierShortlistSpreadsheetCreator.new(@procurement.id) - spreadsheet_builder.build - send_data spreadsheet_builder.to_xlsx, filename: "Quick view results (#{@procurement.contract_name}).xlsx", type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' - else - redirect_to facilities_management_rm3830_procurement_path(id: @procurement.id) - end - end - - def further_competition_spreadsheet - if @procurement.further_competition? - spreadsheet_builder = FurtherCompetitionDeliverablesMatrix.new(@procurement.id) - spreadsheet_builder.build - send_data spreadsheet_builder.to_xlsx, filename: 'further_competition_procurement_summary.xlsx', type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' - else - redirect_to facilities_management_rm3830_procurement_path(id: @procurement.id) - end - end - - def deliverables_matrix - download_da_spreadsheet(DirectAwardDeliverablesMatrix, 'Attachment 2 - Statement of Requirements - Deliverables Matrix (DA).xlsx') - end - - def price_matrix - download_da_spreadsheet(PriceMatrixSpreadsheet, 'Attachment 3 - Price Matrix (DA).xlsx') - end - - private - - def back_path - helpers.journey_step_url_former(journey_step: 'locations', framework: 'RM3830', region_codes: @procurement.region_codes, service_codes: @procurement.service_codes) if @procurement.service_codes.present? - end - - def redirect_from_delete_if_needed - redirect_to facilities_management_rm3830_procurements_path unless @procurement.can_be_deleted? - end - - def set_view_name - @view_name = ProcurementRouter.new(@procurement.id, - @procurement.aasm_state, - step: params[:step], - what_happens_next: params[:what_happens_next].present?, - further_competition_chosen: params[:fc_chosen] == 'true').view - end - - def update_procurement - assign_procurement_parameters - if @procurement.save(context: params[:facilities_management_rm3830_procurement][:step].try(:to_sym)) - @procurement.start_detailed_search! if @procurement.quick_search? && params['start_detailed_search'].present? - @procurement.reload - - set_current_step - - redirect_to ProcurementRouter.new(@procurement.id, @procurement.aasm_state, step: @current_step).route - else - set_step_param - set_view_name unless @procurement.quick_search? - - render :edit - end - end - - def redirect_if_missing_regions - redirect_to facilities_management_rm3830_missing_regions_path(procurement_id: @procurement.id) if @procurement.procurement_buildings_missing_regions? - end - - def assign_procurement_parameters - @procurement.assign_attributes(procurement_params) - - # To need to do this is awful - it will trigger validations so that an invalid action can be recognised - # that action - resulting in clearing the service_code collection in the store will not happen - # we can however validate and push the custom message to the client from here - # !WHY?! The browser is not sending the [:facilities_management_rm3830_procurement][:service_codes] value as empty - # if no checkboxes are checked - # Can the procurement_params specification not establish defaults? - @procurement.service_codes = [] if params[:facilities_management_rm3830_procurement][:step].try(:to_sym) == :services && params[:facilities_management_rm3830_procurement][:service_codes].nil? - end - - PARAMS_METHODS_SHOW = { - bulk_upload_spreadsheet: :start_bulk_upload, - change_the_contract_value: :change_the_contract_value, - change_requirements: :continue_to_summary, - continue_to_results: :continue_to_results, - continue_from_change_contract_value: :continue_from_change_contract_value, - continue_from_results: :continue_from_results, - exit_bulk_upload: :exit_detailed_search_bulk_upload - }.freeze - - def updates_for_show_pages - update_step = (params.keys.map(&:to_sym) & PARAMS_METHODS_SHOW.keys).first - - if update_step - send(PARAMS_METHODS_SHOW[update_step]) - true - else - false - end - end - - def updates_for_edit_pages - update_step = params.dig('facilities_management_rm3830_procurement', 'step')&.to_sym - - case update_step - when :services - update_service_codes - when :regions - update_region_codes - else - return false - end - - true - end - - def start_bulk_upload - @procurement.start_detailed_search_bulk_upload! if @procurement.may_start_detailed_search_bulk_upload? - if params['bulk_upload_spreadsheet'] == t('facilities_management.rm3830.procurements.spreadsheet.save_and_return_link') - redirect_to facilities_management_rm3830_procurements_path - else - redirect_to new_facilities_management_rm3830_procurement_spreadsheet_import_path(procurement_id: @procurement.id) - end - end - - def download_da_spreadsheet(spreadsheet_creator, filename) - spreadsheet_builder = spreadsheet_creator.new @procurement.first_unsent_contract.id - spreadsheet_builder.build - send_data spreadsheet_builder.to_xlsx, filename: - end - - def change_the_contract_value - @procurement.set_state_to_choose_contract_value! - redirect_to facilities_management_rm3830_procurement_path(@procurement) - end - - def continue_to_summary - @procurement.set_state_to_detailed_search! - redirect_to facilities_management_rm3830_procurement_path(@procurement) - end - - def continue_to_results - can_continue_to_results = case @procurement.aasm_state - when 'detailed_search', 'choose_contract_value', 'results' - procurement_valid? - else - true - end - - if can_continue_to_results - @procurement.set_state_to_results_if_possible! unless @procurement.results? - redirect_to facilities_management_rm3830_procurement_path(@procurement) - else - redirect_to facilities_management_rm3830_procurement_path(@procurement, validate: true) - end - end - - def continue_from_change_contract_value - @procurement.assign_attributes(procurement_params) - if @procurement.valid?(:choose_contract_value) - @procurement.set_state_to_results! - redirect_to facilities_management_rm3830_procurement_path(@procurement) - else - set_view_name - render :show - end - end - - def update_service_codes - @procurement.assign_attributes(service_codes: procurement_params[:service_codes]) - if @procurement.save(context: :service_codes) - redirect_to facilities_management_rm3830_procurement_path(id: @procurement.id) - else - params[:step] = 'services' - render :edit - end - end - - def update_region_codes - @procurement.assign_attributes(region_codes: procurement_params[:region_codes]) - if @procurement.save(context: :region_codes) - redirect_to facilities_management_rm3830_procurement_path(id: @procurement.id) - else - params[:step] = 'regions' - render :edit - end - end - - def exit_detailed_search_bulk_upload - @procurement.set_state_to_detailed_search! if @procurement.detailed_search_bulk_upload? - - redirect_to facilities_management_rm3830_procurement_path(@procurement) - end - - # sets the state of the procurement depending on the submission from the results view - def continue_from_results - @procurement.assign_attributes(procurement_route_params) - - if @procurement.valid?(:route_to_market) - set_route_to_market - redirect_to facilities_management_rm3830_procurement_path(@procurement, fc_chosen: @procurement.route_to_market == 'further_competition_chosen') - else - @view_name = 'results' - initialize_page_description_from_view_name - render :show - end - end - - def set_route_to_market - case @procurement.route_to_market - when 'da_draft' - @procurement.start_direct_award! - when 'further_competition' - @procurement.start_further_competition! - end - end - - def redirect_to_contract_details_if_da_draft - redirect_to facilities_management_rm3830_procurement_contract_details_path(procurement_id: @procurement.id) if @procurement.da_draft? - end - - def redirect_if_unrecognised_step - redirect_to facilities_management_rm3830_procurement_path(@procurement) unless RECOGNISED_STEPS.include? params[:step] - end - - RECOGNISED_STEPS = %w[services regions].freeze - - def sent_offers - current_user.rm3830_procurements.direct_award&.map(&:sent_offers)&.flatten&.sort_by { |each| [ProcurementSupplier::SENT_OFFER_ORDER.index(each.aasm_state), each.offer_sent_date] } - end - - def live_contracts - current_user.rm3830_procurements.direct_award.map(&:live_contracts)&.flatten&.sort_by(&:contract_signed_date) - end - - def closed_contracts - current_user.rm3830_procurements.where(aasm_state: ['direct_award', 'closed']).map(&:closed_contracts)&.flatten&.sort_by { |sent_offer| [sent_offer.contract_closed_date ? 1 : 0, sent_offer.contract_closed_date] }&.reverse - end - - def procurement_route_params - params.require(:facilities_management_rm3830_procurement).permit(:route_to_market) - end - - def procurement_params - params.require(:facilities_management_rm3830_procurement) - .permit( - :contract_name, - :lot_number, - :lot_number_selected_by_customer, - service_codes: [], - region_codes: [], - ) - end - - def set_current_step - @current_step = nil - @current_step ||= params[:facilities_management_rm3830_procurement][:step] if params['next_step'].present? - end - - def set_procurement - @procurement = Procurement.find(params[:id] || params[:procurement_id]) - end - - def set_step_param - params[:step] = params[:facilities_management_rm3830_procurement][:step] unless @procurement.quick_search? - end - - def set_deleted_action_occurred - @what_was_deleted = params[:deleted].to_s if params[:deleted].present? - end - - def procurement_valid? - @procurement.valid?(:continue) - end - - protected - - def authorize_user - @procurement ? (authorize! :manage, @procurement) : (authorize! :read, FacilitiesManagement) - end - end - end -end diff --git a/app/controllers/facilities_management/rm3830/registrations_controller.rb b/app/controllers/facilities_management/rm3830/registrations_controller.rb deleted file mode 100644 index aca448ea53..0000000000 --- a/app/controllers/facilities_management/rm3830/registrations_controller.rb +++ /dev/null @@ -1,11 +0,0 @@ -module FacilitiesManagement - module RM3830 - class RegistrationsController < FacilitiesManagement::RegistrationsController - private - - def fm_access - :fm_access - end - end - end -end diff --git a/app/controllers/facilities_management/rm3830/service_specification_controller.rb b/app/controllers/facilities_management/rm3830/service_specification_controller.rb deleted file mode 100644 index 9dc052d3b9..0000000000 --- a/app/controllers/facilities_management/rm3830/service_specification_controller.rb +++ /dev/null @@ -1,12 +0,0 @@ -module FacilitiesManagement - module RM3830 - class ServiceSpecificationController < FacilitiesManagement::FrameworkController - before_action :authorize_user - - def show - parser = ServiceSpecificationParser.new - @specification = parser.call(params[:service_code].tr('-', '.'), params[:work_package_code]) - end - end - end -end diff --git a/app/controllers/facilities_management/rm3830/sessions_controller.rb b/app/controllers/facilities_management/rm3830/sessions_controller.rb deleted file mode 100644 index 387e66932b..0000000000 --- a/app/controllers/facilities_management/rm3830/sessions_controller.rb +++ /dev/null @@ -1,6 +0,0 @@ -module FacilitiesManagement - module RM3830 - class SessionsController < FacilitiesManagement::SessionsController - end - end -end diff --git a/app/controllers/facilities_management/rm3830/supplier/contracts_controller.rb b/app/controllers/facilities_management/rm3830/supplier/contracts_controller.rb deleted file mode 100644 index 0b91ab48b7..0000000000 --- a/app/controllers/facilities_management/rm3830/supplier/contracts_controller.rb +++ /dev/null @@ -1,54 +0,0 @@ -module FacilitiesManagement::RM3830 - class Supplier::ContractsController < FacilitiesManagement::Supplier::FrameworkController - include FacilitiesManagement::PageDetail::RM3830::Supplier::Contracts - - before_action :set_contract - before_action :authorize_user - before_action :set_procurement - before_action :initialize_page_description, only: %i[show edit] - - def show; end - - def edit - redirect_to facilities_management_rm3830_supplier_contract_path unless @contract.sent? - end - - def update - @contract.assign_attributes(contract_params) - if @contract.valid?(:contract_response) - if @contract.contract_response - @contract.accept! - else - @contract.decline! - end - redirect_to facilities_management_rm3830_supplier_contract_sent_index_path(@contract.id) - else - initialize_page_description - render :edit - end - end - - private - - def contract_params - params.require(:facilities_management_rm3830_procurement_supplier).permit( - :reason_for_declining, - :contract_response - ) - end - - def set_contract - @contract = ProcurementSupplier.find(params[:id]) - end - - def set_procurement - @procurement = @contract.procurement - end - - protected - - def authorize_user - authorize! :manage, @contract - end - end -end diff --git a/app/controllers/facilities_management/rm3830/supplier/dashboard_controller.rb b/app/controllers/facilities_management/rm3830/supplier/dashboard_controller.rb deleted file mode 100644 index 1893b71575..0000000000 --- a/app/controllers/facilities_management/rm3830/supplier/dashboard_controller.rb +++ /dev/null @@ -1,32 +0,0 @@ -module FacilitiesManagement::RM3830 - class Supplier::DashboardController < FacilitiesManagement::Supplier::FrameworkController - include FacilitiesManagement::PageDetail::RM3830::Supplier::Dashboard - - before_action :set_supplier - before_action :initialize_page_description - - def index - if @supplier.nil? - @received_offers = [] - @accepted_offers = [] - @live_contracts = [] - @closed_contracts = [] - else - @received_offers = contracts.sent.where(supplier_id: @supplier.id).order(:offer_sent_date) - @accepted_offers = contracts.accepted.where(supplier_id: @supplier.id).order(supplier_response_date: :desc) - @live_contracts = contracts.signed.where(supplier_id: @supplier.id).order(contract_start_date: :desc, contract_end_date: :desc) - @closed_contracts = contracts.where(supplier_id: @supplier.id, aasm_state: ProcurementSupplier::CLOSED_TO_SUPPLIER).sort_by(&:closed_date).reverse - end - end - - private - - def set_supplier - @supplier = current_user.supplier_detail - end - - def contracts - @supplier.contracts.unscoped - end - end -end diff --git a/app/controllers/facilities_management/rm3830/supplier/home_controller.rb b/app/controllers/facilities_management/rm3830/supplier/home_controller.rb deleted file mode 100644 index 0bef0ab025..0000000000 --- a/app/controllers/facilities_management/rm3830/supplier/home_controller.rb +++ /dev/null @@ -1,13 +0,0 @@ -class FacilitiesManagement::RM3830::Supplier::HomeController < FacilitiesManagement::Supplier::FrameworkController - include SharedPagesConcern - - skip_before_action :authenticate_user!, :authorize_user - - def index - if user_signed_in? - redirect_to facilities_management_rm3830_supplier_dashboard_index_path - else - redirect_to facilities_management_rm3830_supplier_new_user_session_path - end - end -end diff --git a/app/controllers/facilities_management/rm3830/supplier/passwords_controller.rb b/app/controllers/facilities_management/rm3830/supplier/passwords_controller.rb deleted file mode 100644 index 0d703d6dd7..0000000000 --- a/app/controllers/facilities_management/rm3830/supplier/passwords_controller.rb +++ /dev/null @@ -1,3 +0,0 @@ -class FacilitiesManagement::RM3830::Supplier::PasswordsController < Base::PasswordsController - include FacilitiesManagement::Supplier::FrameworkStatusConcern -end diff --git a/app/controllers/facilities_management/rm3830/supplier/sent_controller.rb b/app/controllers/facilities_management/rm3830/supplier/sent_controller.rb deleted file mode 100644 index aef2a3a1d1..0000000000 --- a/app/controllers/facilities_management/rm3830/supplier/sent_controller.rb +++ /dev/null @@ -1,8 +0,0 @@ -module FacilitiesManagement::RM3830 - class Supplier::SentController < FacilitiesManagement::Supplier::FrameworkController - def index - @contract = ProcurementSupplier.find(params[:contract_id]) - authorize! :manage, @contract - end - end -end diff --git a/app/controllers/facilities_management/rm3830/supplier/sessions_controller.rb b/app/controllers/facilities_management/rm3830/supplier/sessions_controller.rb deleted file mode 100644 index c3f4e717d2..0000000000 --- a/app/controllers/facilities_management/rm3830/supplier/sessions_controller.rb +++ /dev/null @@ -1,3 +0,0 @@ -class FacilitiesManagement::RM3830::Supplier::SessionsController < Base::SessionsController - include FacilitiesManagement::Supplier::FrameworkStatusConcern -end diff --git a/app/controllers/facilities_management/rm3830/supplier/users_controller.rb b/app/controllers/facilities_management/rm3830/supplier/users_controller.rb deleted file mode 100644 index 10c7adfe59..0000000000 --- a/app/controllers/facilities_management/rm3830/supplier/users_controller.rb +++ /dev/null @@ -1,3 +0,0 @@ -class FacilitiesManagement::RM3830::Supplier::UsersController < Base::UsersController - include FacilitiesManagement::Supplier::FrameworkStatusConcern -end diff --git a/app/controllers/facilities_management/rm3830/users_controller.rb b/app/controllers/facilities_management/rm3830/users_controller.rb deleted file mode 100644 index 3cd1d40e09..0000000000 --- a/app/controllers/facilities_management/rm3830/users_controller.rb +++ /dev/null @@ -1,6 +0,0 @@ -module FacilitiesManagement - module RM3830 - class UsersController < FacilitiesManagement::UsersController - end - end -end diff --git a/app/controllers/facilities_management/rm6232/buildings_controller.rb b/app/controllers/facilities_management/rm6232/buildings_controller.rb deleted file mode 100644 index 0c6c5ea7a6..0000000000 --- a/app/controllers/facilities_management/rm6232/buildings_controller.rb +++ /dev/null @@ -1,31 +0,0 @@ -module FacilitiesManagement - module RM6232 - class BuildingsController < FacilitiesManagement::BuildingsController - private - - def index_path - facilities_management_rm6232_buildings_path - end - - def show_path(building = @building) - facilities_management_rm6232_building_path(building) - end - - def edit_path(building, section) - edit_facilities_management_rm6232_building_path(building, section:) - end - - def create_path - facilities_management_rm6232_buildings_path - end - - def update_path - facilities_management_rm6232_building_path(@building, section:) - end - - def start_a_procurement_path - facilities_management_journey_question_path(slug: 'choose-services') - end - end - end -end diff --git a/app/controllers/facilities_management/rm6232/edit_buildings_controller.rb b/app/controllers/facilities_management/rm6232/edit_buildings_controller.rb deleted file mode 100644 index b7b82ce3a1..0000000000 --- a/app/controllers/facilities_management/rm6232/edit_buildings_controller.rb +++ /dev/null @@ -1,35 +0,0 @@ -module FacilitiesManagement - module RM6232 - class EditBuildingsController < FacilitiesManagement::BuildingsController - private - - def index_path - edit_facilities_management_rm6232_procurement_procurement_detail_path(@procurement, section: :buildings) - end - - def show_path(building = @building) - facilities_management_rm6232_procurement_edit_building_path(@procurement, building) - end - - def edit_path(building, section) - edit_facilities_management_rm6232_procurement_edit_building_path(@procurement, building, section:) - end - - def create_path - facilities_management_rm6232_procurement_edit_buildings_path(@procurement) - end - - def update_path - facilities_management_rm6232_procurement_edit_building_path(@procurement, @building, section:) - end - - def start_a_procurement_path - facilities_management_journey_question_path(slug: 'choose-services') - end - - def set_procurement - @procurement = Procurement.find(params[:procurement_id]) - end - end - end -end diff --git a/app/controllers/facilities_management/rm6232/procurement_buildings_controller.rb b/app/controllers/facilities_management/rm6232/procurement_buildings_controller.rb deleted file mode 100644 index e8e60c4c82..0000000000 --- a/app/controllers/facilities_management/rm6232/procurement_buildings_controller.rb +++ /dev/null @@ -1,17 +0,0 @@ -module FacilitiesManagement - module RM6232 - class ProcurementBuildingsController < FacilitiesManagement::ProcurementBuildingsController - private - - def set_procurement_building_data - @procurement_building = ProcurementBuilding.find(params[:id]) - - super - end - - def set_procurement_data - @procurement = Procurement.find(params[:procurement_id]) - end - end - end -end diff --git a/app/controllers/facilities_management/rm6232/procurement_details_controller.rb b/app/controllers/facilities_management/rm6232/procurement_details_controller.rb deleted file mode 100644 index e7131a4222..0000000000 --- a/app/controllers/facilities_management/rm6232/procurement_details_controller.rb +++ /dev/null @@ -1,14 +0,0 @@ -module FacilitiesManagement - module RM6232 - class ProcurementDetailsController < FacilitiesManagement::ProcurementDetailsController - private - - def set_procurement - @procurement = Procurement.find(params[:procurement_id]) - end - - RECOGNISED_DETAILS_EDIT_STEPS = %i[contract_name annual_contract_value tupe contract_period services buildings].freeze - RECOGNISED_DETAILS_SHOW_PAGES = %i[contract_period services buildings buildings_and_services].freeze - end - end -end diff --git a/app/controllers/facilities_management/supplier/framework_controller.rb b/app/controllers/facilities_management/supplier/framework_controller.rb deleted file mode 100644 index 9b493fb40f..0000000000 --- a/app/controllers/facilities_management/supplier/framework_controller.rb +++ /dev/null @@ -1,16 +0,0 @@ -module FacilitiesManagement - module Supplier - class FrameworkController < ApplicationController - include FrameworkStatusConcern - - before_action :authenticate_user! - before_action :authorize_user - - protected - - def authorize_user - authorize! :read, FacilitiesManagement::RM3830::SupplierDetail - end - end - end -end diff --git a/app/controllers/facilities_management/supplier/home_controller.rb b/app/controllers/facilities_management/supplier/home_controller.rb deleted file mode 100644 index ce6530c34e..0000000000 --- a/app/controllers/facilities_management/supplier/home_controller.rb +++ /dev/null @@ -1,7 +0,0 @@ -class FacilitiesManagement::Supplier::HomeController < FacilitiesManagement::Supplier::FrameworkController - before_action :authenticate_user!, :authorize_user, :raise_if_not_live_framework, except: :framework - - def framework - redirect_to facilities_management_rm3830_supplier_path - end -end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index a6aadb904a..631b93cf6f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -8,41 +8,10 @@ def feedback_email_link link_to(t('common.feedback'), Marketplace.fm_survey_link, target: '_blank', rel: 'noopener', class: 'govuk-link') end - def dfe_account_request_url - 'https://ccsheretohelp.uk/contact/?type=ST18/19' - end - def support_telephone_number Marketplace.support_telephone_number end - def govuk_email_link(email_address, aria_label, css_class: 'govuk-link') - mail_to(email_address, t('layouts.application.feedback'), class: css_class, 'aria-label': aria_label) - end - - # rubocop:disable Metrics/ParameterLists - def govuk_form_field(model_object, attribute, form_object_name, label_text, readable_property_name, top_level_data_options) - css_classes = %w[govuk-!-margin-top-3] - form_group_css = ['govuk-form-group'] - form_group_css += ['govuk-form-group--error'] if model_object.errors[attribute].any? - label_for_id = form_object_name - id_for_label = "#{form_object_name}_#{attribute}-info" - label_for_id += "_#{attribute}" if form_object_name.exclude?(attribute.to_s) - - tag.div(class: css_classes, data: { propertyname: readable_property_name }) do - tag.div(class: form_group_css, data: top_level_data_options) do - concat display_label(attribute, label_text, label_for_id, id_for_label) if label_text.present? - concat display_potential_errors(model_object, attribute, "#{form_object_name}_#{attribute}") - yield - end - end - end - # rubocop:enable Metrics/ParameterLists - - def display_label(_attribute, text, form_object_name, _id_for_label) - tag.label(text, class: 'govuk-label', for: form_object_name) - end - def govuk_form_group_with_optional_error(journey, *attributes, &) attributes_with_errors = attributes.select { |a| journey.errors[a].any? } @@ -61,42 +30,6 @@ def govuk_fieldset_with_optional_error(journey, *attributes, &) tag.fieldset(**options, &) end - def list_potential_errors(model_object, attribute, form_object_name, error_lookup = nil, error_position = nil) - collection = validation_messages(model_object.class.name.underscore.downcase.to_sym, attribute) - - collection.each do |key, val| - concat(govuk_validation_error({ model_object: model_object, attribute: attribute, error_type: key, text: val, form_object_name: form_object_name }, error_lookup, error_position)) - end - end - - def property_name(section_name, attributes) - return "#{section_name}_#{attributes.is_a?(Array) ? attributes.last : attributes}" unless section_name.nil? - - (attributes.is_a?(Array) ? attributes.last : attributes).to_s - end - - def display_potential_errors(model_object, attributes, form_object_name, section_name = nil) - collection = validation_messages(model_object.class.name.underscore.downcase.to_sym, attributes) - return if collection.empty? - - tag.div(class: 'error-collection potenital-error', property_name: property_name(section_name, attributes)) do - multiple_validation_errors(model_object, attributes, form_object_name, collection) - end - end - - def model_attribute_has_error(model_object, *attributes) - result = false - attributes.any? { |a| result |= model_object.errors[a]&.any? } - end - - def model_has_error?(model_object, error_type, *attributes) - attributes.any? { |a| model_object&.errors&.details&.dig(a, 0)&.fetch(:error, nil) == error_type } - end - - def display_errors(journey, *attributes) - safe_join(attributes.map { |a| display_error(journey, a) }) - end - def display_error(journey, attribute, margin = true, id_prefix = '') error = journey.errors[attribute].first return if error.blank? @@ -128,39 +61,6 @@ def get_client_side_error_type_from_errors(errors, attribute) errors.details[attribute].first[:error].to_sym unless ERROR_TYPES.key?(errors.details[attribute].first[:error]) end - def get_client_side_error_type_from_model(model, attribute) - return ERROR_TYPES[model.errors.details[attribute].first[:error]] if ERROR_TYPES.key?(model.errors.details[attribute].first[:error]) - - model.errors.details[attribute].first[:error].to_sym unless ERROR_TYPES.key?(model.errors.details[attribute].first[:error]) - end - - def display_error_label(model, attribute, label_text, target) - error = model.errors[attribute].first - return if error.blank? - - tag.label(data: { validation: get_client_side_error_type_from_model(model, attribute).to_s }, for: target, id: error_id(attribute), class: 'govuk-error-message') do - "#{label_text} #{error}" - end - end - - def display_error_no_attr(object, attribute) - error = object.errors[attribute].first - return if error.blank? - - tag.span(id: error_id(attribute.to_s), class: 'govuk-error-message govuk-!-margin-top-3') do - error.to_s - end - end - - def display_error_nested_models(object, attribute) - error = object.errors[attribute].first - return if error.blank? - - tag.span(id: error_id(object.id), class: 'govuk-error-message govuk-!-margin-top-3') do - error.to_s - end - end - def css_classes_for_input(journey, attribute, extra_classes = []) error = journey.errors[attribute].first @@ -238,10 +138,6 @@ def govuk_tag_with_text(colour, text) tag.strong(text, class: ['govuk-tag'] << extra_classes[colour]) end - def da_eligible?(code) - FacilitiesManagement::RM3830::Rate.where.not(framework: nil).map(&:code).include? code - end - def service_specification_document(framework) link_to_public_file_for_download(t("facilities_management.#{framework}.documents.service_specification_document.name"), :pdf, t("facilities_management.#{framework}.documents.service_specification_document.text"), true, alt: t('facilities_management.select_services.servicespec_link_alttext')) end @@ -330,29 +226,6 @@ def accordion_region_items(region_codes, with_overseas: false) nuts1_regions end - def rm3830_accordion_service_items(service_codes) - services = FacilitiesManagement::RM3830::StaticData.services - work_packages = FacilitiesManagement::RM3830::StaticData.work_packages - - services.map do |service| - [ - service['code'], - { - name: service['name'], - items: work_packages.select { |work_package| work_package['work_package_code'] == service['code'] }.map do |work_package| - { - code: work_package['code'].tr('.', '-'), - value: work_package['code'], - name: work_package['name'], - selected: service_codes&.include?(work_package['code']), - description: work_package['description'] - } - end - } - ] - end - end - def rm6232_accordion_service_items(service_codes) FacilitiesManagement::RM6232::WorkPackage.selectable.map do |work_package| [ diff --git a/app/helpers/errors_helper.rb b/app/helpers/errors_helper.rb deleted file mode 100644 index 5dcf87c755..0000000000 --- a/app/helpers/errors_helper.rb +++ /dev/null @@ -1,89 +0,0 @@ -module ErrorsHelper - # Encapsulates the error rendering functions - - ERROR_TYPE = { - too_short: 'minlength', - blank: 'required', - inclusion: 'required', - too_long: 'maxlength', - after: 'max', - greater_than_or_equal_to: 'min', - before: 'min', - less_than: 'max', - less_than_or_equal_to: 'max', - greater_than: 'min', - not_a_date: 'pattern', - not_an_integer: 'number', - not_a_number: 'number' - }.freeze - - def list_errors_for_attributes(form, *attributes) - attributes.each_with_index do |attribute, _index| - collection = validation_messages(form.object.class.name.underscore.downcase.to_sym, attribute) - capture do - tag.div(class: 'error-collection govuk-visually-hidden', id: "error_#{form.object_name}_#{attribute}") do - collection.each do |key, val| - concat(govuk_validation_error({ model_object: form.object, attribute: attribute, error_type: key, text: val, form_object_name: form.object_name }, nil, nil)) - end - end - end - end - end - - # Renders a govuk compliant error-content div with a client-compatible validation type - # and text for use as static content in the page - # rubocop:disable Metrics/AbcSize - def govuk_validation_error(model_data, error_lookup = nil, error_position = nil) - tag_validation_type = ERROR_TYPE.include?(model_data[:error_type]) ? ERROR_TYPE[model_data[:error_type]] : model_data[:error_type] - model_has_error = false - model_has_error = error_lookup.call(model_data[:model_object], model_data[:error_type], error_position) unless error_lookup.nil? - - model_has_error = model_has_error?(model_data[:model_object], model_data[:error_type], model_data[:attribute]) if error_lookup.nil? - - css_classes = ['govuk-error-message'] - css_classes += ['govuk-visually-hidden'] unless model_has_error - - tag.label(tag.span(model_data[:text]), class: css_classes, - for: "#{model_data[:form_object_name]}_#{model_data[:attribute]}", - id: "#{model_data[:attribute]}-error", - data: { propertyname: model_data[:attribute].to_s, validation: tag_validation_type }) - end - # rubocop:enable Metrics/AbcSize - - def multiple_validation_errors(model_object, attribute, form_object_name, error_collection) - label_for_id = form_object_name.include?(attribute.to_s) ? form_object_name : "#{form_object_name}_#{attribute}" - - tag.label(class: "govuk-error-message #{'govuk-visually-hidden' unless model_object.errors.any?}", - for: label_for_id, - id: "#{attribute}-error") do - error_collection.each do |key, val| - tag_validation_type = ERROR_TYPE.include?(key) ? ERROR_TYPE[key] : key - concat(tag.span(val, class: "govuk-error-message #{'govuk-visually-hidden' unless attribute_has_errors(model_object, attribute, key)}", data: { propertyname: attribute.to_s, validation: tag_validation_type })) - end - end - end - - def attribute_has_errors(model_object, attribute, error_type) - model_object.errors.details[attribute][0]&.dig(:error) == error_type - end - - # looks up the locals data for validation messages - def validation_messages(model_object_sym, attribute_sym = nil) - translation_key = "activerecord.errors.models.#{model_object_sym.downcase}.attributes" - translation_key += if attribute_sym.is_a? Array - ".#{attribute_sym.join('.')}" - else - ".#{attribute_sym}" - end - - result = t(translation_key) - if result.include? 'translation_missing' - translation_key.sub! 'activerecord', 'activemodel' - result = t(translation_key) - end - - return {} if result.include? 'translation_missing' - - result - end -end diff --git a/app/helpers/facilities_management/buildings_helper.rb b/app/helpers/facilities_management/buildings_helper.rb deleted file mode 100644 index 6c8c13f748..0000000000 --- a/app/helpers/facilities_management/buildings_helper.rb +++ /dev/null @@ -1,108 +0,0 @@ -module FacilitiesManagement::BuildingsHelper - def building_rows - { - building_name: { value: @building.building_name, section: 'building_details' }, - building_description: { value: @building.description, section: 'building_details' }, - address: { value: @building.address_line_1, section: 'building_details' }, - region: { value: @building.address_region, section: 'building_details' }, - gia: { value: @building.gia, section: 'building_area' }, - external_area: { value: @building.external_area, section: 'building_area' }, - building_type: { value: @building.building_type, section: 'building_type' }, - security_type: { value: @building.security_type, section: 'security_type' } - } - end - - def building_row_text(attribute, text) - case attribute - when :address - address_in_a_line - when :gia, :external_area - "#{number_with_delimiter(text.to_i, delimiter: ',')} sqm" - when :building_type - type_description(building_type_description(text), :other_building_type) - when :security_type - type_description(text, :other_security_type) - else - text - end - end - - def address_in_a_line - [@building.address_line_1, @building.address_line_2, @building.address_town].compact_blank.join(', ') + " #{@building.address_postcode}" - end - - def type_description(text, attribute) - if ['Other', 'other'].include?(text) - "Other — #{@building[attribute].truncate(150)}" - else - text - end - end - - def building_type_description(building_type_id) - building_type = FacilitiesManagement::Building::BUILDING_TYPES.find { |bt| bt[:id] == building_type_id } - if building_type.present? - building_type[:title].capitalize - else - building_type_id.capitalize - end - end - - def section_number - (SECTIONS.index(section) || 0) + 1 - end - - SECTIONS = %i[building_details building_area building_type security_type].freeze - - def should_building_details_be_open? - @should_building_details_be_open ||= if @building.building_type.blank? - false - else - @building.building_type == 'other' || @building.errors.key?(:other_building_type) || FacilitiesManagement::Building::BUILDING_TYPES[0..1].pluck(:id).exclude?(@building.building_type) - end - end - - def building_type_radio_button(form, building_type, disabled) - tag.div(class: 'govuk-radios__item') do - capture do - concat(form.radio_button(:building_type, building_type[:id], class: 'govuk-radios__input', disabled: disabled)) - concat( - form.label(:building_type, value: building_type[:id], class: 'govuk-label govuk-radios__label govuk-label--s') do - concat(building_type[:title]) - concat(building_type_caption(building_type)) - end - ) - end - end - end - - def building_type_caption(building_type) - tag.span(class: 'govuk-caption-m govuk-!-margin-top-1') do - concat(building_type[:caption]) - if building_type[:standard_building_type] - concat(tag.hr(class: 'govuk-section-break govuk-!-margin-top-1')) - concat(govuk_tag_with_text(:grey, t('common.da_eligible'))) if params[:framework] == 'RM3830' - end - end - end - - def cant_find_address_link - edit_path(@building, 'add_address') - end - - def select_a_region_visible? - @select_a_region_visible ||= @building.address_line_1.present? && @building.address_region.blank? - end - - def full_region_visible? - @full_region_visible ||= @building.address_region.present? - end - - def multiple_regions? - valid_regions.length > 1 - end - - def object_name(name) - name - end -end diff --git a/app/helpers/facilities_management/procurement_buildings_helper.rb b/app/helpers/facilities_management/procurement_buildings_helper.rb deleted file mode 100644 index dbdf9f1b57..0000000000 --- a/app/helpers/facilities_management/procurement_buildings_helper.rb +++ /dev/null @@ -1,36 +0,0 @@ -module FacilitiesManagement::ProcurementBuildingsHelper - def edit_page_title - section == :missing_region ? t('facilities_management.procurement_buildings.edit.title.missing_region') : building_name - end - - def building_name(procurement_building = @procurement_building) - procurement_building.building_name || procurement_building.name - end - - def building_summary(title, vlaue) - tag.div(class: 'govuk-grid-row govuk-!-margin-bottom-6') do - tag.div(class: 'govuk-grid-column-two-thirds') do - capture do - concat(tag.h3(title, class: 'govuk-heading-s govuk-!-margin-bottom-2')) - concat(tag.span(vlaue, class: 'govuk-body')) - end - end - end - end - - def regions - Postcode::PostcodeCheckerV2.find_region(@building.address_postcode.delete(' ')).pluck(:region) - end - - def form_object - section == :missing_region ? @building : @procurement_building - end - - def buildings_with_missing_regions - @buildings_with_missing_regions ||= @procurement.active_procurement_buildings.order_by_building_name.select(&:missing_region?) - end - - def return_link - section == :missing_region ? procurement_show_path : "/facilities-management/#{params[:framework]}/procurements/#{@procurement.id}/procurement-details/buildings-and-services" - end -end diff --git a/app/helpers/facilities_management/procurement_details_helper.rb b/app/helpers/facilities_management/procurement_details_helper.rb deleted file mode 100644 index 8ab5d5eaf1..0000000000 --- a/app/helpers/facilities_management/procurement_details_helper.rb +++ /dev/null @@ -1,97 +0,0 @@ -module FacilitiesManagement - module ProcurementDetailsHelper - include ContractDatesHelper - - def initial_call_off_period_error? - @procurement.errors[:initial_call_off_period_years].any? || @procurement.errors[:initial_call_off_period_months].any? || total_contract_period_error? - end - - def total_contract_period_error? - @total_contract_period_error ||= @procurement.errors[:base] && @procurement.errors.details[:base].any? { |error| error[:error] == :total_contract_period } - end - - def extension_periods_error? - %i[extensions_required call_off_extensions.months call_off_extensions.years call_off_extensions.base].any? { |extension_error| @procurement.errors.attribute_names.include? extension_error } - end - - def total_contract_length_error? - @total_contract_length_error ||= @procurement.errors[:base] && @procurement.errors.details[:base].any? { |error| error[:error] == :total_contract_length } - end - - def display_extension_error_anchor - error_list = [] - - %i[years months base].each do |attribute| - error_list << "call_off_extensions.#{attribute}-error" if @procurement.errors.include?(:"call_off_extensions.#{attribute}") - end - - error_list.each do |error| - concat(tag.span(id: error)) - end - end - - def call_off_extensions - @call_off_extensions ||= @procurement.call_off_extensions.sort_by(&:extension) - end - - def call_off_extension_visible?(extension) - return false unless @procurement.extensions_required - - call_off_extension = call_off_extensions.find { |optional_extension| optional_extension.extension == extension } - - return false unless call_off_extension - - call_off_extension_meet_conditions?(call_off_extension) - end - - def call_off_extension_meet_conditions?(call_off_extension) - call_off_extension.extension_required || call_off_extension.years.present? || call_off_extension.months.present? || call_off_extension.errors.any? - end - - def procurement_building_row(form, building) - if building.status == 'Ready' - tag.div(class: 'govuk-checkboxes govuk-checkboxes--small') do - tag.div(class: 'govuk-checkboxes__item') do - capture do - concat(form.check_box(:active, class: 'govuk-checkboxes__input', title: building.building_name, checked: @building_params[building.id] == '1')) - concat(form.label(:active, class: 'govuk-label govuk-checkboxes__label govuk-!-padding-top-0') do - procurement_building_checkbox_text(building) - end) - end - end - end - else - tag.div(class: 'govuk-!-padding-left-7') do - procurement_building_checkbox_text(building) - end - end - end - - def procurement_building_checkbox_text(building) - capture do - concat(tag.span(building.building_name, class: 'govuk-fieldset__legend')) - concat(tag.span(building.address_no_region, class: 'govuk-hint govuk-!-margin-bottom-0')) - end - end - - def address_in_a_line(building) - [building.address_line_1, building.address_line_2, building.address_town].compact_blank.join(', ') + " #{building.address_postcode}" - end - - def edit_page_title - @edit_page_title ||= t("facilities_management.procurement_details.edit.title.#{section}") - end - - def show_page_title - @show_page_title ||= t("facilities_management.procurement_details.show.title.#{section}") - end - - def new_building_path - "/facilities-management/#{params[:framework]}/procurements/#{params[:procurement_id]}/edit-buildings/new" - end - - def show_building_path(building_id) - "/facilities-management/#{params[:framework]}/procurements/#{params[:procurement_id]}/edit-buildings/#{building_id}" - end - end -end diff --git a/app/helpers/facilities_management/procurements_helper.rb b/app/helpers/facilities_management/procurements_helper.rb deleted file mode 100644 index 9b65f1364b..0000000000 --- a/app/helpers/facilities_management/procurements_helper.rb +++ /dev/null @@ -1,39 +0,0 @@ -module FacilitiesManagement - module ProcurementsHelper - def section_has_error?(section) - return false unless @procurement.errors.any? - - requirements_errors_list.keys.intersect?(section_errors(section)) - end - - def section_id(section) - "#{section.downcase.gsub(' ', '-')}-tag" - end - - def requirements_errors_list - @requirements_errors_list ||= @procurement.errors.details[:base].map.with_index { |detail, index| [detail[:error], @procurement.errors[:base][index]] }.to_h - end - - def section_errors(section) - if section == 'contract_period' - %i[contract_period_incomplete initial_call_off_period_in_past mobilisation_period_in_past mobilisation_period_required] - else - ["#{section}_incomplete".to_sym] - end - end - - def display_all_errors(errors, section_errors) - capture do - section_errors.each do |attribute| - next unless errors[attribute] - - concat(tag.span(errors[attribute].to_s, id: error_id(attribute), class: 'govuk-error-message')) - end - end - end - - def active_procurement_buildings - @active_procurement_buildings ||= @procurement.active_procurement_buildings.order_by_building_name - end - end -end diff --git a/app/helpers/facilities_management/rm3830/supplier/supplier_rates_helper.rb b/app/helpers/facilities_management/rm3830/admin/supplier_rates_helper.rb similarity index 94% rename from app/helpers/facilities_management/rm3830/supplier/supplier_rates_helper.rb rename to app/helpers/facilities_management/rm3830/admin/supplier_rates_helper.rb index ff6357b117..b59fd309ab 100644 --- a/app/helpers/facilities_management/rm3830/supplier/supplier_rates_helper.rb +++ b/app/helpers/facilities_management/rm3830/admin/supplier_rates_helper.rb @@ -1,4 +1,4 @@ -module FacilitiesManagement::RM3830::Supplier::SupplierRatesHelper +module FacilitiesManagement::RM3830::Admin::SupplierRatesHelper def self.add_rates_to_work_packages(work_packages, rates) work_packages.map do |work_package| work_package['rates'] = rates.select { |key| key['code'] == work_package['code'] } diff --git a/app/helpers/facilities_management/rm3830/supplier/supplier_regions_helper.rb b/app/helpers/facilities_management/rm3830/admin/supplier_regions_helper.rb similarity index 64% rename from app/helpers/facilities_management/rm3830/supplier/supplier_regions_helper.rb rename to app/helpers/facilities_management/rm3830/admin/supplier_regions_helper.rb index e853453cdc..d59072d0b4 100644 --- a/app/helpers/facilities_management/rm3830/supplier/supplier_regions_helper.rb +++ b/app/helpers/facilities_management/rm3830/admin/supplier_regions_helper.rb @@ -1,4 +1,4 @@ -module FacilitiesManagement::RM3830::Supplier::SupplierRegionsHelper +module FacilitiesManagement::RM3830::Admin::SupplierRegionsHelper def self.supllier_selected_regions(supplier_region_data) supplier_region_data&.index_with { |_code| true } end diff --git a/app/helpers/facilities_management/rm3830/procurement_buildings_helper.rb b/app/helpers/facilities_management/rm3830/procurement_buildings_helper.rb deleted file mode 100644 index a6d67ed98c..0000000000 --- a/app/helpers/facilities_management/rm3830/procurement_buildings_helper.rb +++ /dev/null @@ -1,67 +0,0 @@ -module FacilitiesManagement::RM3830::ProcurementBuildingsHelper - def page_subtitle - @procurement.contract_name - end - - def procurement_services - @procurement.services - end - - def cell_class(context, answer, errors) - css_class = ['govuk-table__cell', 'govuk-!-padding-right-2'] - css_class << 'govuk-border-bottom_none' if errors || (context == :service_hours && answer.present?) - css_class.join(' ') - end - - def get_service_question(question) - case question - when :lift_data - 'lifts' - when :service_hours - 'service_hours' - when :service_standard - 'service_standards' - when :no_of_appliances_for_testing, :no_of_building_occupants, :no_of_consoles_to_be_serviced, :tones_to_be_collected_and_removed, :no_of_units_to_be_serviced - 'volumes' - else - 'area' - end - end - - def procurement_building_status - if @procurement_building.complete? - [:blue, 'COMPLETE'] - else - [:red, 'INCOMPLETE'] - end - end - - def services_with_contexts(volume_procurement_building_services) - volume_procurement_building_services.each do |service_with_context| - yield(service_with_context[:procurement_building_service], service_with_context[:context]) - end - end - - def question_id(service, context, question) - [service.code, context, question].compact.join('-') - end - - def internal_area_incomplete? - @internal_area_incomplete ||= @procurement_building.internal_area_incomplete? - end - - def external_area_incomplete? - @external_area_incomplete ||= @procurement_building.external_area_incomplete? - end - - def service_has_errors?(context) - case context - when :gia - internal_area_incomplete? - when :external_area - external_area_incomplete? - else - false - end - end -end diff --git a/app/helpers/facilities_management/rm3830/procurement_buildings_services_helper.rb b/app/helpers/facilities_management/rm3830/procurement_buildings_services_helper.rb deleted file mode 100644 index c1c204f025..0000000000 --- a/app/helpers/facilities_management/rm3830/procurement_buildings_services_helper.rb +++ /dev/null @@ -1,28 +0,0 @@ -module FacilitiesManagement::RM3830::ProcurementBuildingsServicesHelper - def volume_question(pbs) - return unless pbs.this_service[:context].key? :volume - - pbs.this_service[:context][:volume]&.first - end - - def service_standard_type - @building_service.this_service[:context].select { |_, attributes| attributes.first == :service_standard }.keys.first - end - - def sort_by_lifts_created_at - parts = @building_service.lifts.partition { |o| o.created_at.nil? } - parts.last.sort_by(&:created_at) + parts.first - end - - def form_model - params[:service_question] == 'area' ? @building : @building_service - end - - def page_heading - params[:service_question] == 'area' ? t('facilities_management.rm3830.procurement_buildings_services.area.heading') : @building_service.name - end - - def per_annum_volume?(volume) - %i[no_of_appliances_for_testing no_of_consoles_to_be_serviced tones_to_be_collected_and_removed no_of_units_to_be_serviced].include? volume - end -end diff --git a/app/helpers/facilities_management/rm3830/procurement_details_helper.rb b/app/helpers/facilities_management/rm3830/procurement_details_helper.rb deleted file mode 100644 index 5a33738587..0000000000 --- a/app/helpers/facilities_management/rm3830/procurement_details_helper.rb +++ /dev/null @@ -1,19 +0,0 @@ -module FacilitiesManagement::RM3830 - module ProcurementDetailsHelper - def page_subtitle - @procurement.contract_name - end - - def porcurement_services - @procurement.services.pluck(:name) - end - - def accordion_service_items - rm3830_accordion_service_items(@procurement.service_codes) - end - - def building_name(procurement_building) - procurement_building.name - end - end -end diff --git a/app/helpers/facilities_management/rm3830/procurements/contract_details_controller_layout_helper.rb b/app/helpers/facilities_management/rm3830/procurements/contract_details_controller_layout_helper.rb deleted file mode 100644 index 7dc1f8154a..0000000000 --- a/app/helpers/facilities_management/rm3830/procurements/contract_details_controller_layout_helper.rb +++ /dev/null @@ -1,148 +0,0 @@ -# rubocop:disable Metrics/ModuleLength, Metrics/MethodLength, Metrics/AbcSize -module FacilitiesManagement::RM3830::Procurements::ContractDetailsControllerLayoutHelper - include FacilitiesManagement::PageDetail - - def page_details - @page_details ||= page_definitions[:default].merge(page_definitions[@page_name]) - end - - def page_definitions - @page_definitions ||= { - default: { - page_title: t("facilities_management.rm3830.procurements.contract_details.page_title.#{@page_name}"), - caption1: @procurement.contract_name, - continuation_text: 'Continue', - return_url: facilities_management_rm3830_procurements_path, - return_text: 'Return to procurement dashboard', - secondary_name: 'return_to_results', - secondary_text: 'Return to results', - secondary_url: facilities_management_rm3830_procurements_path, - back_text: 'Back', - back_url: facilities_management_rm3830_procurements_path - }, - pricing: { - continuation_text: 'Continue to direct award' - }, - what_next: { - continuation_text: 'Continue to direct award' - }, - important_information: {}, - contract_details: {}, - review_and_generate: { - continuation_text: 'Generate documents' - }, - review: { - continuation_text: 'Create final contract and send to supplier' - }, - sending: { - continuation_text: 'Confirm and send contract to supplier', - secondary_text: 'Cancel, return to review your contract', - secondary_name: 'return_to_review' - }, - payment_method: { - back_url: facilities_management_rm3830_procurement_contract_details_path, - continuation_text: 'Save and return', - return_text: 'Return to contract details', - return_url: facilities_management_rm3830_procurement_contract_details_path, - back_text: 'Return to contract details' - }, - invoicing_contact_details: { - back_url: facilities_management_rm3830_procurement_contract_details_path, - continuation_text: 'Continue', - return_text: 'Return to contract details', - return_url: facilities_management_rm3830_procurement_contract_details_path, - back_text: 'Return to contract details' - }, - new_invoicing_contact_details: { - back_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'invoicing_contact_details'), - back_text: 'Return to invoicing contact details', - continuation_text: 'Save and return', - return_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'invoicing_contact_details'), - return_text: 'Return to invoicing contact details', - }, - new_invoicing_contact_details_address: { - back_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'new_invoicing_contact_details'), - back_text: 'Return to new invoicing contact details', - page_title: 'Add address', - return_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'new_invoicing_contact_details'), - return_text: 'Return to new invoicing contact details', - caption3: @procurement[:contract_name], - caption1: 'New invoicing contact details' - }, - authorised_representative: { - back_url: facilities_management_rm3830_procurement_contract_details_path, - continuation_text: 'Continue', - return_text: 'Return to contract details', - return_url: facilities_management_rm3830_procurement_contract_details_path, - back_text: 'Return to contract details' - }, - new_authorised_representative: { - back_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'authorised_representative'), - back_text: 'Return to authorised representative details', - continuation_text: 'Save and return', - return_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'authorised_representative'), - return_text: 'Return to authorised representative details', - }, - new_authorised_representative_address: { - back_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'new_authorised_representative'), - back_text: 'Return to new authorised representative details', - return_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'new_authorised_representative'), - return_text: 'Return to new authorised representative details', - caption3: @procurement[:contract_name], - caption1: 'New authorised representative details' - }, - notices_contact_details: { - back_url: facilities_management_rm3830_procurement_contract_details_path, - continuation_text: 'Continue', - return_text: 'Return to contract details', - return_url: facilities_management_rm3830_procurement_contract_details_path, - back_text: 'Return to contract details' - }, - new_notices_contact_details: { - back_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'notices_contact_details'), - back_text: 'Return to notices contact details', - continuation_text: 'Save and return', - return_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'notices_contact_details'), - return_text: 'Return to notices contact details', - }, - new_notices_contact_details_address: { - back_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'new_notices_contact_details'), - back_text: 'Return to new notices contact details', - return_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'new_notices_contact_details'), - return_text: 'Return to new notices contact details', - caption3: @procurement[:contract_name], - caption1: 'New notices contact details' - }, - security_policy_document: { - back_url: facilities_management_rm3830_procurement_contract_details_path, - back_text: 'Return to contract details', - continuation_text: 'Save and return', - return_text: 'Return to contract details', - return_url: facilities_management_rm3830_procurement_contract_details_path - }, - local_government_pension_scheme: { - back_url: facilities_management_rm3830_procurement_contract_details_path, - back_text: 'Return to contract details', - continuation_text: 'Save and continue', - return_text: 'Return to contract details', - return_url: facilities_management_rm3830_procurement_contract_details_path - }, - pension_funds: { - back_url: facilities_management_rm3830_procurement_contract_details_edit_path(page: 'local_government_pension_scheme'), - back_text: 'Return to Local Government Pension Scheme', - page_title: 'Pension funds', - continuation_text: 'Save and return', - return_text: 'Return to contract details', - return_url: facilities_management_rm3830_procurement_contract_details_path - }, - governing_law: { - back_url: facilities_management_rm3830_procurement_contract_details_path, - continuation_text: 'Save and continue', - return_text: 'Return to contract details', - return_url: facilities_management_rm3830_procurement_contract_details_path, - back_text: 'Return to contract details' - } - } - end -end -# rubocop:enable Metrics/ModuleLength, Metrics/MethodLength, Metrics/AbcSize diff --git a/app/helpers/facilities_management/rm3830/procurements/contract_details_helper.rb b/app/helpers/facilities_management/rm3830/procurements/contract_details_helper.rb deleted file mode 100644 index 916efdfe49..0000000000 --- a/app/helpers/facilities_management/rm3830/procurements/contract_details_helper.rb +++ /dev/null @@ -1,42 +0,0 @@ -module FacilitiesManagement::RM3830 - module Procurements::ContractDetailsHelper - include ProcurementsHelper - - def show_page_content - options = case @page_name - when :pricing, :what_next, :important_information, :review_and_generate, :review, :sending - [false, true, true] - when :contract_details - [false, true] - else - [] - end - - [@page_description, @procurement] + options - end - - def partial_prefix - @partial_prefix ||= 'facilities_management/rm3830/procurements/contract_details/edit_partials' - end - - def sorted_supplier_list - @sorted_supplier_list ||= @procurement.procurement_suppliers.where(direct_award_value: Procurement::DIRECT_AWARD_VALUE_RANGE).map { |i| { price: i[:direct_award_value], name: i.supplier_name } } - end - - def supplier_plural - 'supplier'.pluralize(sorted_supplier_list.count) - end - - def object_name(name) - name.gsub('[', '_')[0..-2] - end - - def cant_find_address_link - facilities_management_rm3830_procurement_contract_details_edit_path(page: @address_step) - end - - def security_policy_document_file_type - @procurement.security_policy_document_file.content_type == 'application/pdf' ? :pdf : :doc - end - end -end diff --git a/app/helpers/facilities_management/rm3830/procurements/contracts_helper.rb b/app/helpers/facilities_management/rm3830/procurements/contracts_helper.rb deleted file mode 100644 index 78bc615389..0000000000 --- a/app/helpers/facilities_management/rm3830/procurements/contracts_helper.rb +++ /dev/null @@ -1,41 +0,0 @@ -module FacilitiesManagement::RM3830::Procurements::ContractsHelper - include FacilitiesManagement::RM3830::ProcurementsHelper - - def warning_title - if @contract.closed? - t('closed', scope: TITLE_TRANSLATION_SCOPE) - else - t(@contract.aasm_state, scope: TITLE_TRANSLATION_SCOPE) - end - end - - def warning_message - return closed_warning_message if @contract.closed? - - case @contract.aasm_state - when 'sent' - t('sent_html', scope: MESSAGE_TRANSLATION_SCOPE, contract_expiry_date: format_date_time(@contract.contract_expiry_date)) - when 'signed' - t('signed', scope: MESSAGE_TRANSLATION_SCOPE, contract_start_date: format_date(@contract.contract_start_date), contract_end_date: format_date(@contract.contract_end_date)) - when 'not_signed' - t('not_signed', scope: MESSAGE_TRANSLATION_SCOPE, contract_not_signed_date: format_date_time(@contract.contract_signed_date)) - when 'declined' - t('declined', scope: MESSAGE_TRANSLATION_SCOPE, supplier_response_date: format_date_time(@contract.supplier_response_date)) - else - t(@contract.aasm_state, scope: MESSAGE_TRANSLATION_SCOPE) - end - end - - def closed_warning_message - if @contract.reason_for_closing.present? - t('withdrawn', scope: MESSAGE_TRANSLATION_SCOPE, contract_closed_date: format_date_time(@contract.contract_closed_date)) - elsif @contract.last_offer? - t('last_offer', scope: MESSAGE_TRANSLATION_SCOPE, contract_closed_date: format_date_time(@contract.contract_closed_date)) - else - t('closed', scope: MESSAGE_TRANSLATION_SCOPE, contract_closed_date: format_date_time(@contract.contract_closed_date)) - end - end - - MESSAGE_TRANSLATION_SCOPE = 'facilities_management.rm3830.procurements.contracts_helper.warning_message'.freeze - TITLE_TRANSLATION_SCOPE = 'facilities_management.rm3830.procurements.contracts_helper.warning_title'.freeze -end diff --git a/app/helpers/facilities_management/rm3830/procurements/copy_procurement_helper.rb b/app/helpers/facilities_management/rm3830/procurements/copy_procurement_helper.rb deleted file mode 100644 index 66ae971b97..0000000000 --- a/app/helpers/facilities_management/rm3830/procurements/copy_procurement_helper.rb +++ /dev/null @@ -1,3 +0,0 @@ -module FacilitiesManagement::RM3830::Procurements::CopyProcurementHelper - include FacilitiesManagement::RM3830::ProcurementsHelper -end diff --git a/app/helpers/facilities_management/rm3830/procurements/spreadsheet_imports_helper.rb b/app/helpers/facilities_management/rm3830/procurements/spreadsheet_imports_helper.rb deleted file mode 100644 index 0a761e241a..0000000000 --- a/app/helpers/facilities_management/rm3830/procurements/spreadsheet_imports_helper.rb +++ /dev/null @@ -1,14 +0,0 @@ -module FacilitiesManagement::RM3830::Procurements::SpreadsheetImportsHelper - def error_count(error_list, attribute) - case attribute - when :service_matrix_errors - error_list.sum { |e| e[:errors].count } - else - error_list.count - end - end - - def error_message(model, attribute, message) - t("facilities_management.rm3830.procurements.spreadsheet_imports.errors.#{model}.#{attribute}.#{message}") - end -end diff --git a/app/helpers/facilities_management/rm3830/procurements_controller_layout_helper.rb b/app/helpers/facilities_management/rm3830/procurements_controller_layout_helper.rb deleted file mode 100644 index b88570dddc..0000000000 --- a/app/helpers/facilities_management/rm3830/procurements_controller_layout_helper.rb +++ /dev/null @@ -1,86 +0,0 @@ -module FacilitiesManagement::RM3830::ProcurementsControllerLayoutHelper - include FacilitiesManagement::PageDetail - - def page_details - @page_details ||= page_definitions[:default].merge(page_definitions[@view_name.to_sym]) - end - - def set_results_page_definitions - page_definitions = { - caption1: @procurement.contract_name, - continuation_text: 'Continue', - return_url: facilities_management_rm3830_procurements_path, - return_text: 'Return to procurement dashboard', - back_text: 'Back', - back_url: facilities_management_rm3830_procurements_path, - page_title: 'Results', - primary_name: 'continue_from_results', - secondary_name: 'change_requirements', - secondary_text: 'Change requirements', - secondary_url: facilities_management_rm3830_procurements_path - } - if @procurement.lot_number_selected_by_customer - page_definitions[:secondary_name] = 'change_the_contract_value' - page_definitions[:secondary_url] = facilities_management_rm3830_procurements_path - page_definitions[:secondary_text] = 'Return to estimated contract cost' - end - page_definitions - end - - def quick_search_page_title - if params['what_happens_next'].present? - t('facilities_management.rm3830.procurements.what_happens_next.heading') - else - t('facilities_management.rm3830.procurements.quick_search.quick_view_results') - end - end - - def set_further_competition_page_definitions - if params[:fc_chosen] == 'true' - { - page_title: 'Further competition', - secondary_text: 'Return to results', - secondary_url: facilities_management_rm3830_procurement_path, - continuation_text: 'Save as further competition' - } - else - { - page_title: 'Further competition', - continuation_text: 'Make a copy of your requirements' - } - end - end - - def set_quick_search_or_what_happens_next_page_definitions - { - back_text: 'Return to your account', - back_url: facilities_management_rm3830_path, - caption1: @procurement.contract_name, - page_title: quick_search_page_title - } - end - - def page_definitions - @page_definitions ||= { - default: { - caption1: @procurement.contract_name, - continuation_text: 'Continue', - return_url: facilities_management_rm3830_procurements_path, - return_text: 'Return to procurement dashboard', - secondary_name: 'change_requirements', - secondary_text: 'Change requirements', - secondary_url: facilities_management_rm3830_procurements_path, - back_text: 'Back', - back_url: facilities_management_rm3830_procurements_path - }, - quick_search: set_quick_search_or_what_happens_next_page_definitions, - what_happens_next: set_quick_search_or_what_happens_next_page_definitions, - choose_contract_value: { - page_title: 'Estimated contract cost', - primary_name: 'continue_from_change_contract_value' - }, - results: set_results_page_definitions, - further_competition: set_further_competition_page_definitions - }.freeze - end -end diff --git a/app/helpers/facilities_management/rm3830/procurements_helper.rb b/app/helpers/facilities_management/rm3830/procurements_helper.rb deleted file mode 100644 index 6c83213663..0000000000 --- a/app/helpers/facilities_management/rm3830/procurements_helper.rb +++ /dev/null @@ -1,117 +0,0 @@ -module FacilitiesManagement::RM3830 - module ProcurementsHelper - include FacilitiesManagement::ContractDatesHelper - include FacilitiesManagement::ProcurementsHelper - - def journey_step_url_former(journey_step:, framework:, region_codes: nil, service_codes: nil) - facilities_management_journey_question_path(framework: framework, slug: "choose-#{journey_step}", region_codes: region_codes, service_codes: service_codes) - end - - PROCUREMENT_STATE = { da_draft: 'DA draft', - further_competition: 'Further competition', - results: 'Results', - quick_search: 'Quick view', - detailed_search: 'Entering requirements', - detailed_search_bulk_upload: 'Entering requirements', - closed: 'closed' }.freeze - - def procurement_state(procurement_state) - return procurement_state.humanize unless PROCUREMENT_STATE.key?(procurement_state.to_sym) - - PROCUREMENT_STATE[procurement_state.to_sym] - end - - def sort_by_pension_fund_created_at - # problem was for pension funds with duplicated names,the validation has an error so there is no created_at - parts = @procurement.procurement_pension_funds.partition { |o| o.created_at.nil? } - parts.last.sort_by(&:created_at) + parts.first - end - - def continue_button_text - ProcurementRouter::SUMMARY.include?(params[:step]) ? 'save_and_continue' : 'save_and_return' - end - - def requires_back_link? - %w[contract_name estimated_annual_cost tupe buildings].include? params[:step] - end - - def link_url(section) - case section - when 'contract_period', 'services', 'buildings', 'buildings_and_services', 'service_requirements' - facilities_management_rm3830_procurement_procurement_detail_path(procurement_id: @procurement.id, section: section.dasherize) - else - edit_facilities_management_rm3830_procurement_procurement_detail_path(procurement_id: @procurement.id, section: section.dasherize) - end - end - - def work_packages_names - @work_packages_names ||= StaticData.work_packages.to_h { |wp| [wp['code'], wp['name']] } - end - - def number_of_suppliers - @procurement.procurement_suppliers.count - end - - def procurement_services - @procurement_services ||= @procurement.procurement_building_services.pluck(:name).uniq - end - - def lowest_supplier_price - @procurement.procurement_suppliers.minimum(:direct_award_value) - end - - def suppliers - @procurement.procurement_suppliers.map(&:supplier_name).sort - end - - def unpriced_services - @unpriced_services ||= @procurement.procurement_building_services_not_used_in_calculation - end - - def service_codes - @service_codes ||= @procurement.service_codes - end - - def region_codes - @region_codes ||= @procurement.region_codes - end - - def services - @services ||= Service.where(code: service_codes)&.sort_by { |service| service_codes.index(service.code) } - end - - def regions - FacilitiesManagement::Region.where(code: region_codes) - end - - def suppliers_lot1a - @suppliers_lot1a ||= SupplierDetail.long_list_suppliers_lot(region_codes, service_codes, '1a') - end - - def suppliers_lot1b - @suppliers_lot1b ||= SupplierDetail.long_list_suppliers_lot(region_codes, service_codes, '1b') - end - - def suppliers_lot1c - @suppliers_lot1c ||= SupplierDetail.long_list_suppliers_lot(region_codes, service_codes, '1c') - end - - def supplier_count - @supplier_count ||= SupplierDetail.supplier_count(region_codes, service_codes) - end - - def further_competition_saved_date(procurement) - format_date_time procurement.contract_datetime.to_datetime - end - - CONTRACT_STATE = { sent: 'Awaiting supplier response', - accepted: 'Awaiting contract signature', - not_signed: 'Accepted, not signed', - declined: 'Supplier declined', - expired: 'No supplier response' }.freeze - - def contract_state_to_stage(state) - CONTRACT_STATE[state.to_sym] - end - end -end diff --git a/app/helpers/facilities_management/rm3830/supplier/contracts_helper.rb b/app/helpers/facilities_management/rm3830/supplier/contracts_helper.rb deleted file mode 100644 index cca87a78fc..0000000000 --- a/app/helpers/facilities_management/rm3830/supplier/contracts_helper.rb +++ /dev/null @@ -1,44 +0,0 @@ -module FacilitiesManagement::RM3830::Supplier::ContractsHelper - include FacilitiesManagement::RM3830::ProcurementsHelper - - def warning_title - t(@contract.aasm_state, scope: TITLE_TRANSLATION_SCOPE) - end - - # rubocop:disable Metrics/CyclomaticComplexity - def warning_message - case @contract.aasm_state - when 'sent' - t('sent_html', scope: MESSAGE_TRANSLATION_SCOPE, contract_expiry_date: format_date_time(@contract.contract_expiry_date)) - when 'accepted' - t('accepted', scope: MESSAGE_TRANSLATION_SCOPE) - when 'signed' - t('signed', scope: MESSAGE_TRANSLATION_SCOPE, contract_start_date: format_date(@contract.contract_start_date), contract_end_date: format_date(@contract.contract_end_date)) - when 'declined' - t('declined', scope: MESSAGE_TRANSLATION_SCOPE, supplier_response_date: format_date_time(@contract.supplier_response_date)) - when 'expired' - t('expired_html', scope: MESSAGE_TRANSLATION_SCOPE) - when 'not_signed' - t('not_signed_html', scope: MESSAGE_TRANSLATION_SCOPE, contract_not_signed_date: format_date_time(@contract.contract_signed_date)) - when 'withdrawn' - t('withdrawn_html', scope: MESSAGE_TRANSLATION_SCOPE, contract_closed_date: format_date_time(@contract.contract_closed_date)) - end - end - # rubocop:enable Metrics/CyclomaticComplexity - - MESSAGE_TRANSLATION_SCOPE = 'facilities_management.rm3830.supplier.contracts_helper.warning_message'.freeze - TITLE_TRANSLATION_SCOPE = 'facilities_management.rm3830.supplier.contracts_helper.warning_title'.freeze - - def supplier_contract_reason_id(state) - case state - when 'not_signed' - 'reason-for-not-signing' - when 'declined' - 'reason-for-declining' - when 'withdrawn' - 'reason-for-closing' - else - 'no-reason-required' - end - end -end diff --git a/app/helpers/facilities_management/rm3830/supplier/dashboard_helper.rb b/app/helpers/facilities_management/rm3830/supplier/dashboard_helper.rb deleted file mode 100644 index df086c25bf..0000000000 --- a/app/helpers/facilities_management/rm3830/supplier/dashboard_helper.rb +++ /dev/null @@ -1,3 +0,0 @@ -module FacilitiesManagement::RM3830::Supplier::DashboardHelper - SUPPLIER_STATUS = { declined: 'Declined', expired: 'Not responded', not_signed: 'Not signed', withdrawn: 'Withdrawn' }.freeze -end diff --git a/app/helpers/facilities_management/rm6232/procurement_buildings_helper.rb b/app/helpers/facilities_management/rm6232/procurement_buildings_helper.rb deleted file mode 100644 index 0edb065a59..0000000000 --- a/app/helpers/facilities_management/rm6232/procurement_buildings_helper.rb +++ /dev/null @@ -1,9 +0,0 @@ -module FacilitiesManagement::RM6232 - module ProcurementBuildingsHelper - include FacilitiesManagement::RM6232::ProcurementsHelper - - def procurement_services - @procurement.services_without_lot_consideration - end - end -end diff --git a/app/helpers/facilities_management/rm6232/procurement_details_helper.rb b/app/helpers/facilities_management/rm6232/procurement_details_helper.rb deleted file mode 100644 index bf01bc24e3..0000000000 --- a/app/helpers/facilities_management/rm6232/procurement_details_helper.rb +++ /dev/null @@ -1,17 +0,0 @@ -module FacilitiesManagement::RM6232 - module ProcurementDetailsHelper - include FacilitiesManagement::RM6232::ProcurementsHelper - - def porcurement_services - @procurement.services_without_lot_consideration.pluck(:name) - end - - def accordion_service_items - rm6232_accordion_service_items(@procurement.service_codes) - end - - def building_name(procurement_building) - procurement_building.building_name - end - end -end diff --git a/app/helpers/facilities_management/rm6232/procurements_helper.rb b/app/helpers/facilities_management/rm6232/procurements_helper.rb index d3d6da657a..eb648e2475 100644 --- a/app/helpers/facilities_management/rm6232/procurements_helper.rb +++ b/app/helpers/facilities_management/rm6232/procurements_helper.rb @@ -1,7 +1,5 @@ module FacilitiesManagement::RM6232 module ProcurementsHelper - include FacilitiesManagement::ProcurementsHelper - def page_subtitle "#{current_contract_name} - #{@procurement.contract_number}" end diff --git a/app/helpers/layout_helper.rb b/app/helpers/layout_helper.rb index c9cbf3e315..ccd7c83321 100644 --- a/app/helpers/layout_helper.rb +++ b/app/helpers/layout_helper.rb @@ -1,206 +1,4 @@ -# rubocop:disable Metrics/ModuleLength module LayoutHelper - include ErrorsHelper - - # Renders the top of the page including back-button, and the 3 elements of the main header - # rubocop:disable Rails/OutputSafety, Metrics/ParameterLists - def govuk_page_content(page_details, model_object = nil, no_headings = false, no_back_button = false, no_error_block = false) - raise ArgumentError, 'Use PageDescription object' unless page_details.is_a? FacilitiesManagement::PageDetail::PageDescription - - @no_back_button = no_back_button - @no_error_block = no_error_block - @no_headings = no_headings - - out = '' - out = capture { govuk_back_button(page_details.back_button) } unless no_back_button - out << capture { govuk_page_error_summary(model_object) } unless model_object.nil? || !model_object.respond_to?(:errors) || no_error_block - out << capture { govuk_page_header(page_details.heading_details) } unless no_headings - - out << capture do - yield(page_details) - end - - out.html_safe - end - # rubocop:enable Metrics/ParameterLists - - # rubocop:disable Metrics/AbcSize - def govuk_page_header(heading_details) - tag.h1(class: 'govuk-heading-xl', id: 'main_title') do - if heading_details.caption3.present? - concat(tag.span(class: 'govuk-caption-m govuk-!-margin-bottom-1') do - concat(heading_details.caption3) - end).html_safe - end - if heading_details.caption? - concat(tag.span(class: 'govuk-caption-xl') do - concat(heading_details.caption) - concat(" — #{heading_details.caption2}") if heading_details.caption2.present? - end).html_safe - end - concat(heading_details.text) - concat(tag.p(heading_details.subtitle, class: 'govuk-body-l')) if heading_details.subtitle.present? - end - end - - # rubocop:enable Metrics/AbcSize - - def govuk_back_button(back_button) - link_to(back_button.text.nil? ? t('layouts.application.back') : back_button.text, back_button.url, - aria: { label: back_button.label.nil? ? t('layouts.application.back_aria_label') : back_button.label }, - title: back_button.label.nil? ? t('layouts.application.back_aria_label') : back_button.label, - class: 'govuk-back-link govuk-!-margin-top-0 govuk-!-margin-bottom-6') - end - - # rubocop:enable Rails/OutputSafety - - # rubocop:disable Metrics/ParameterLists - def govuk_continuation_buttons(page_description, form_builder, secondary_button = true, return_link = true, primary_button = true, red_secondary_button = false, primary_btn_as_link = false, secondary_btn_as_link = false) - buttons = ActiveSupport::SafeBuffer.new - - buttons << govuk_first_button(page_description, form_builder, red_secondary_button, primary_btn_as_link) if primary_button - buttons << govuk_second_button(page_description, form_builder, red_secondary_button, secondary_btn_as_link) if secondary_button - - if (secondary_button || primary_button) && return_link - buttons << tag.br - buttons << link_to(page_description.navigation_details.return_text, page_description.navigation_details.return_url, class: 'govuk-link govuk-!-font-size-19', aria: { label: page_description.navigation_details.return_text }) - end - - tag.div(class: 'govuk-!-margin-top-5') do - buttons - end - end - # rubocop:enable Metrics/ParameterLists - - def govuk_first_button(page_description, form_builder, red_secondary_button, primary_btn_as_link) - if primary_btn_as_link - link_to(page_description.navigation_details.primary_text, page_description.navigation_details.primary_url, class: "govuk-!-margin-right-4 govuk-button #{red_secondary_button ? 'govuk-button--warning' : 'govuk-button--secondary'}", role: 'button') if page_description.navigation_details.primary_url.present? - else - form_builder.submit(page_description.navigation_details.primary_text, class: 'govuk-button govuk-!-margin-right-4', name: [page_description.navigation_details.primary_name, 'commit'].find(&:present?), aria: { label: page_description.navigation_details.primary_text }) - end - end - - def govuk_second_button(page_description, form_builder, red_secondary_button, secondary_btn_as_link) - if secondary_btn_as_link - link_to(page_description.navigation_details.secondary_text, page_description.navigation_details.secondary_url, class: "govuk-button #{red_secondary_button ? 'govuk-button--warning' : 'govuk-button--secondary'}", role: 'button') - else - form_builder.submit(page_description.navigation_details.secondary_text, class: "govuk-button #{red_secondary_button ? 'govuk-button--warning' : 'govuk-button--secondary'}", name: [page_description.navigation_details.secondary_name, 'commit'].find(&:present?), aria: { label: page_description.navigation_details.secondary_text }) - end - end - - def govuk_page_error_summary(model_object) - render partial: 'shared/error_summary', locals: { errors: model_object.errors, render_empty: true } - end - - # rubocop:disable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity,Metrics/ParameterLists - def govuk_start_individual_field(builder, attribute, label_text = {}, require_label = true, show_errors = true, options = {}, hide_error_text = false, &block) - attribute_errors = builder&.object&.errors&.key?(attribute) - css_classes = ['govuk-form-group'] - css_classes += ['govuk-form-group--error'] if attribute_errors && show_errors - - options.merge!(class: css_classes.join(' ')) - options['aria-describedby'] = error_id(attribute) if attribute_errors - options.merge!(property_name: attribute).symbolize_keys! - - tag.div(**options) do - capture do - concat(govuk_label_old(builder, builder.object, attribute, label_text)) if require_label - concat(display_error(builder.object, attribute)) if show_errors && !hide_error_text - block.call(attribute) if block_given? - end - end - end - # rubocop:enable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity,Metrics/ParameterLists - - # rubocop:disable Metrics/AbcSize - def govuk_grouped_fields(form, caption, *attributes) - attributes_with_errors = attributes.flatten.select { |a| form.object.errors[a].any? } - attributes_which_are_arrays = attributes.select { |a| form.object[a].is_a? Array } - - options = { class: 'govuk-fieldset' } - options['aria-describedby'] = attributes_with_errors.map { |a| error_id(a) } if attributes_with_errors.any? - - tag.fieldset(options) do - capture do - concat(list_errors_for_attributes(attributes_which_are_arrays)) if attributes_which_are_arrays.any? - concat(tag.legend(caption, class: 'govuk-fieldset__legend govuk-fieldset__legend--m')) - - attributes.flatten.each do |a| - yield(form, a) - end - end - end - end - # rubocop:enable Metrics/AbcSize - - def contained_content(caption, &block) - tag.div(class: 'govuk-!-margin-bottom-3') do - concat(tag.h2(caption, class: 'govuk-heading-m')) - block.call - end - end - - def govuk_grouped_field(form, caption, attribute, header_text = '', &) - attribute_has_errors = form.object.errors[attribute].any? - - options = {} - options[:aria] = { describedby: error_id(attribute) } if attribute_has_errors - css_classes = ['govuk-fieldset'] - options[:class] = css_classes - - if attribute_has_errors - tag.div(fieldset_structure(form, caption, options, header_text, attribute, &), class: 'govuk-form-group govuk-form-group--error') - else - fieldset_structure(form, caption, options, header_text, attribute, &) - end - end - - # rubocop:disable Metrics/AbcSize - def fieldset_structure(form, caption, options, header_text, *attributes, &block) - tag.fieldset(**options) do - capture do - concat(tag.legend(caption, class: 'govuk-fieldset__legend govuk-fieldset__legend--m')) unless caption.nil? - concat(tag.p(header_text, class: 'govuk-caption-m')) if header_text.present? - attributes.flatten.each do |attr| - concat(list_errors_for_attributes(attr)) if form.object[attr].is_a? Array - concat(display_error(form.object, attr, false)) unless form.object[attr].is_a? Array - end - block.call(form, attributes.flatten) - end - end - end - # rubocop:enable Metrics/AbcSize - - def govuk_button(builder, text, options = { submit: true, class: '' }) - css_classes = ['govuk-button'] - css_classes << options[:class] - css_classes += text == ['aria-label'] - css_classes += ['govuk-button--secondary'] if options[:button] == :secondary - css_classes += ['govuk-button--warning'] if options[:button] == :warning - - return builder.submit(text, class: css_classes) if options.key?(:submit) ? options[:submit] : false - - builder.button(value: nil, class: css_classes) - end - - def govuk_label_old(builder, model, attribute, label_text = {}) - builder.label attribute, generate_label_text(model, attribute, label_text), class: 'govuk-label govuk-!-margin-bottom-1' - end - - def generate_label_text(obj, attribute, label_text = {}) - if label_text.key?(attribute) - label_text[attribute] - elsif obj.class.respond_to?(:human_attribute_name) - obj.class.human_attribute_name(attribute.to_s) - else - attribute.to_s.humanize - end - end - - def govuk_prevent_submission(_builder, value) - tag.input(nil, name: 'preventsubmission', value: value, type: 'hidden') - end - def form_group_with_error(model, attribute) css_classes = ['govuk-form-group'] any_errors = model.errors.include? attribute @@ -211,25 +9,24 @@ def form_group_with_error(model, attribute) end end - def hint_details(question, hint) - capture do - concat(tag.legend(question, class: 'govuk-heading-m govuk-!-margin-bottom-0 govuk-!-padding-left-0')) - concat(tag.span(hint, class: 'govuk-caption-m govuk-!-margin-bottom-0')) - end - end + # looks up the locals data for validation messages + def validation_messages(model_object_sym, attribute_sym = nil) + translation_key = "activerecord.errors.models.#{model_object_sym.downcase}.attributes" + translation_key += if attribute_sym.is_a? Array + ".#{attribute_sym.join('.')}" + else + ".#{attribute_sym}" + end - def label_details(form, attribute, label_text, hint) - capture do - concat(form.label(attribute, label_text, class: 'govuk-heading-m govuk-!-margin-bottom-0 govuk-!-padding-left-0')) - concat(tag.span(hint, class: 'govuk-caption-m govuk-!-margin-bottom-0')) + result = t(translation_key) + if result.include? 'translation_missing' + translation_key.sub! 'activerecord', 'activemodel' + result = t(translation_key) end - end - def numbered_list_helper(heading, &) - capture do - concat(tag.h2(heading, class: 'govuk-heading-m govuk-!-font-weight-bold govuk-!-margin-bottom-2')) - concat(tag.div(class: 'govuk-body govuk-!-padding-left-5', &)) - end + return {} if result.include? 'translation_missing' + + result end def ccs_account_panel_row(**options, &) @@ -253,4 +50,3 @@ def ccs_account_panel(title, title_url, **options, &) end end end -# rubocop:enable Metrics/ModuleLength diff --git a/app/javascript/packs/ccs.ts b/app/javascript/packs/ccs.ts index 6a11ec9bf7..5b01052579 100644 --- a/app/javascript/packs/ccs.ts +++ b/app/javascript/packs/ccs.ts @@ -1,10 +1,6 @@ -import initBuildingsInStorage from '../src/facilitiesManagement/buildings/buildingDetailsInStorage' -import initBuildingType from '../src/facilitiesManagement/buildings/buildingType' -import initBulkUpload from '../src/facilitiesManagement/rm3830/bulkUploadProgress' import initCheckboxAccordion from '../src/shared/checkboxAccordion' import initChooseServicesForBuilding from '../src/facilitiesManagement/procurements/chooseServicesForBuilding' import initContactDetailsInStorage from '../src/facilitiesManagement/contactDetailsInStorage' -import initContractExtenesions from '../src/facilitiesManagement/procurements/contractExtensions' import initCookieBanner from '../src/shared/cookieBanner' import initDetailsLinks from '../src/facilitiesManagement/detailsLinks' import initFilterTable from '../src/facilitiesManagement/filterTable' @@ -12,7 +8,6 @@ import initFindAddress from '../src/facilitiesManagement/findAddress' import initGoogleAnalyticsDataLayer from '../src/shared/googleAnalyticsDataLayer' import initLimitInputToInteger from '../src/facilitiesManagement/integerInput' import initManagementReport from '../src/facilitiesManagement/rm3830/admin/managementReport' -import initNestedAttributesFields from '../src/facilitiesManagement/rm3830/addNestedAttributes' import initNumberWithCommas from '../src/facilitiesManagement/numberWithCommas' import initPasswordStrength from '../src/shared/passwordStrength' import initResultsToggle from '../src/facilitiesManagement/procurements/resultsToggle' @@ -22,13 +17,8 @@ import initStepByStepNav from '../src/shared/stepByStepNav' import initSupplierDataSnapshot from '../src/facilitiesManagement/rm6232/admin/supplierDataSnapshot' $(document).on('turbolinks:load', () => { - // Facilities Management - Buildings TS - initBuildingType() - initBuildingsInStorage() - // Facilities Management - Procurements TS initChooseServicesForBuilding() - initContractExtenesions() initResultsToggle() initSelectRegion() @@ -36,10 +26,6 @@ $(document).on('turbolinks:load', () => { initRM3830AdminAdminUpload() initManagementReport() - // Facilities Management - RM3830 TS - initNestedAttributesFields() - initBulkUpload() - // Facilities Management - RM6232 - Admin TS initSupplierDataSnapshot() diff --git a/app/javascript/src/facilitiesManagement/buildings/buildingDetailsInStorage.ts b/app/javascript/src/facilitiesManagement/buildings/buildingDetailsInStorage.ts deleted file mode 100644 index c5ad112d91..0000000000 --- a/app/javascript/src/facilitiesManagement/buildings/buildingDetailsInStorage.ts +++ /dev/null @@ -1,25 +0,0 @@ -import initDetailsStorage, { type ContactDetailOption, ContactDetailType } from '../detailsStorage' - -const initBuildingsInStorage = (): void => { - const buildingContactDetailsOptions: ContactDetailOption[] = [ - { - name: 'buildingDetailsBuildingName', - $element: $('#facilities_management_building_building_name'), - type: ContactDetailType.TextInput - }, - { - name: 'buildingDetailsBuildingDescription', - $element: $('#facilities_management_building_description'), - type: ContactDetailType.TextInput - } - ] - - initDetailsStorage( - 'buildingDetails', - buildingContactDetailsOptions, - $('#building-details-form'), - $('#building-address-details-form') - ) -} - -export default initBuildingsInStorage diff --git a/app/javascript/src/facilitiesManagement/buildings/buildingType.ts b/app/javascript/src/facilitiesManagement/buildings/buildingType.ts deleted file mode 100644 index d5a1bc5b80..0000000000 --- a/app/javascript/src/facilitiesManagement/buildings/buildingType.ts +++ /dev/null @@ -1,25 +0,0 @@ -const enableRadios = (detailsOpen: boolean): void => { - const $radioInputs: JQuery = $('.govuk-details__text .govuk-radios__item') - - if (detailsOpen) { - $radioInputs.each((_, element: HTMLElement) => { - $(element).find('input').removeAttr('disabled') - }) - } else { - $radioInputs.each((_, element: HTMLElement) => { - $(element).find('input').attr('disabled', 'disabled') - }) - } -} - -const initBuildingType = (): void => { - if ($('.building-type').length) { - const $govukDetails: JQuery = $('.govuk-details') - - $govukDetails.on('toggle', (event: JQuery.TriggeredEvent) => { - enableRadios($(event.currentTarget).attr('open') === 'open') - }) - } -} - -export default initBuildingType diff --git a/app/javascript/src/facilitiesManagement/procurements/contractExtensions.ts b/app/javascript/src/facilitiesManagement/procurements/contractExtensions.ts deleted file mode 100644 index 379e1baaf4..0000000000 --- a/app/javascript/src/facilitiesManagement/procurements/contractExtensions.ts +++ /dev/null @@ -1,352 +0,0 @@ -interface NormalisationFactors { - years: number - months: number - weeks: number -} - -interface ButtonInterface { - $button: JQuery - hideButton: () => void - showButton: () => void -} - -interface YearsAndMonthsInputInterface { - $years: JQuery - $months: JQuery - yearsAndMonthsInomplete: () => boolean - totalPeriod: () => number -} - -interface ExtensionPeriodInterface { - $years: JQuery - $months: JQuery - $removeButton: ContractPeriodButton - showExtensionPeriod: () => void - hideExtensionPeriod: () => void - isNotVisible: () => boolean - isRequired: () => boolean -} - -interface ContractPeriodInterface { - $mobilisationPeriodRequiredTrue: JQuery - $mobilisationPeriodRequiredFalse: JQuery - $periodInput: JQuery - $extensionsRequiredTrue: JQuery - $extensionsRequiredFalse: JQuery - extensions: ExtensionPeriod[] - extensionChecked: () => boolean - allPeriodInputsComplete: () => boolean - calculateTotalContractPeriod: () => void - getTotalTimeRemaining: () => number - timeRemaining: () => [number, number] -} - -interface AddExtensionPeriodButtonInterface { - ableToAddPeriod: () => boolean - updateButtonVisibility: () => void - updateButtonText: () => void - updateButtonState: () => void -} - -class ContractPeriodButton implements ButtonInterface { - $button: JQuery - - constructor ($button: JQuery) { - this.$button = $button - } - - hideButton = (): void => { - this.$button.addClass('govuk-visually-hidden') - this.$button.attr('tabindex', -1) - } - - showButton = (): void => { - this.$button.removeClass('govuk-visually-hidden') - this.$button.attr('tabindex', 0) - } -} - -const normalisationFactors: NormalisationFactors = { - years: 156, - months: 13, - weeks: 3 -} - -const normaliseTimeLength = (inputElement: JQuery, factor: 'years' | 'months' | 'weeks'): number => parseInt(String(inputElement.val()), 10) * normalisationFactors[factor] - -class YearsAndMonthsInput implements YearsAndMonthsInputInterface { - $years: JQuery - $months: JQuery - - constructor ($years: JQuery, $months: JQuery) { - this.$years = $years - this.$months = $months - } - - private readonly normalisedYears = (): number => normaliseTimeLength(this.$years, 'years') - - private readonly normalisedMonths = (): number => normaliseTimeLength(this.$months, 'months') - - yearsAndMonthsInomplete = (): boolean => { - const years: number = this.normalisedYears() - const months: number = this.normalisedMonths() - - return Number.isNaN(years) || Number.isNaN(months) || (years + months) === 0 - } - - totalPeriod = (): number => { - return this.normalisedYears() + this.normalisedMonths() - } -} - -class InitialCallOffPeriod extends YearsAndMonthsInput { - constructor (framework: string) { - super($(`#facilities_management_${framework}_procurement_initial_call_off_period_years`), $(`#facilities_management_${framework}_procurement_initial_call_off_period_months`)) - } -} - -class ExtensionPeriod extends YearsAndMonthsInput implements ExtensionPeriodInterface { - $removeButton: ContractPeriodButton - - private readonly $container: JQuery - private readonly $required: JQuery - - constructor (framework: string, extension: number) { - super($(`#facilities_management_${framework}_procurement_call_off_extensions_attributes_${extension}_years`), $(`#facilities_management_${framework}_procurement_call_off_extensions_attributes_${extension}_months`)) - this.$container = $(`#extension-${extension}-container`) - this.$required = $(`#facilities_management_${framework}_procurement_call_off_extensions_attributes_${extension}_extension_required`) - this.$removeButton = new ContractPeriodButton($(`#extension-${extension}-remove-button`)) - } - - showExtensionPeriod = (): void => { - this.$container.removeClass('govuk-visually-hidden') - this.$years.attr('tabindex', 0) - this.$months.attr('tabindex', 0) - this.$required.val('true') - this.$removeButton.showButton() - } - - hideExtensionPeriod = (): void => { - this.$container.addClass('govuk-visually-hidden') - this.resetInput(this.$years) - this.resetInput(this.$months) - this.$required.val('false') - this.$container.find('.govuk-error-message').each((_, errorMessage: HTMLElement) => { - $(errorMessage).remove() - }) - this.$removeButton.hideButton() - } - - private readonly resetInput = ($element: JQuery): void => { - $element.attr('tabindex', -1) - $element.val('') - $element.removeClass('govuk-input--error') - } - - isNotVisible = (): boolean => this.$container.hasClass('govuk-visually-hidden') - - isRequired = (): boolean => this.$required.val() === 'true' -} - -class ContractPeriod implements ContractPeriodInterface { - $mobilisationPeriodRequiredTrue: JQuery - $mobilisationPeriodRequiredFalse: JQuery - $periodInput: JQuery = $('.period-input') - $extensionsRequiredTrue: JQuery - $extensionsRequiredFalse: JQuery - extensions: ExtensionPeriod[] - - private totalContractPeriod = 0 - private readonly initialCallOffPeriod: InitialCallOffPeriod - private readonly $mobilisationPeriod: JQuery - - constructor (framework: string) { - this.initialCallOffPeriod = new InitialCallOffPeriod(framework) - this.$mobilisationPeriodRequiredTrue = $(`#facilities_management_${framework}_procurement_mobilisation_period_required_true`) - this.$mobilisationPeriodRequiredFalse = $(`#facilities_management_${framework}_procurement_mobilisation_period_required_false`) - this.$mobilisationPeriod = $(`#facilities_management_${framework}_procurement_mobilisation_period`) - this.$extensionsRequiredTrue = $(`#facilities_management_${framework}_procurement_extensions_required_true`) - this.$extensionsRequiredFalse = $(`#facilities_management_${framework}_procurement_extensions_required_false`) - this.extensions = [...Array(4).keys()].map((extension: number) => new ExtensionPeriod(framework, extension)) - } - - private readonly mobilisationPeriodChecked = (): boolean => this.$mobilisationPeriodRequiredTrue.is(':checked') - - private readonly mobilisationPeriod = (): number => normaliseTimeLength(this.$mobilisationPeriod, 'weeks') - - extensionChecked = (): boolean => this.$extensionsRequiredTrue.is(':checked') - - fourthExtensionRequired = (): boolean => this.extensions[3].isRequired() - - allPeriodInputsComplete = (): boolean => { - if (this.initialCallOffPeriod.yearsAndMonthsInomplete()) return false - - if (this.mobilisationPeriodChecked() && !(this.mobilisationPeriod() > 0)) return false - - let extensionsCompleted = true - - if (this.extensionChecked()) { - extensionsCompleted = this.extensions.every((extension: ExtensionPeriod) => extension.isNotVisible() || !extension.yearsAndMonthsInomplete()) - } - - return extensionsCompleted - } - - calculateTotalContractPeriod = (): void => { - let totalPeriod = 0 - - totalPeriod += this.initialCallOffPeriod.totalPeriod() - - totalPeriod += this.mobilisationPeriodChecked() ? this.mobilisationPeriod() : 0 - - if (this.extensionChecked()) { - this.extensions.forEach((extension: ExtensionPeriod) => { - if (extension.isNotVisible()) return - - totalPeriod += extension.totalPeriod() - }) - } - - this.totalContractPeriod = totalPeriod - } - - getTotalTimeRemaining = (): number => 1560 - this.totalContractPeriod - - timeRemaining = (): [number, number] => { - const totalTimeRemaining: number = this.getTotalTimeRemaining() - - const years: number = Math.floor(totalTimeRemaining / normalisationFactors.years) - const months: number = Math.floor((totalTimeRemaining % normalisationFactors.years) / normalisationFactors.months) - - return [years, months] - } -} - -class $AddExtensionPeriodButton extends ContractPeriodButton implements AddExtensionPeriodButtonInterface { - private readonly contractPeriod: ContractPeriod - - constructor (contractPeriod: ContractPeriod) { - super($('#add-contract-extension-button')) - this.contractPeriod = contractPeriod - } - - ableToAddPeriod = (): boolean => { - if (this.forthExtensionRequired()) return false - if (!this.contractPeriod.allPeriodInputsComplete()) return false - - this.contractPeriod.calculateTotalContractPeriod() - if (this.noTimePeriodLeftToAdd()) return false - - return true - } - - updateButtonVisibility = (): void => { - if (!this.contractPeriod.extensionChecked() || this.forthExtensionRequired() || this.noTimePeriodLeftToAdd()) { - this.hideButton() - } else { - this.showButton() - } - } - - updateButtonText = (): void => { - this.$button.text(this.getButtonText()) - } - - private readonly getButtonText = (): string => { - const timeRemainingParts: number[] = this.contractPeriod.timeRemaining() - const years: number = timeRemainingParts[0] - const months: number = timeRemainingParts[1] - - let text = 'Add another extension period (' - - if (years > 0) text += `${years} year` - if (years > 1) text += 's' - if (years > 0 && months > 0) text += ' and ' - if (months > 0) text += `${months} month` - if (months > 1) text += 's' - - return `${text} remaining)` - } - - private readonly forthExtensionRequired = (): boolean => this.contractPeriod.fourthExtensionRequired() - - private readonly noTimePeriodLeftToAdd = (): boolean => this.contractPeriod.getTotalTimeRemaining() < 13 - - updateButtonState = (): void => { - if (this.contractPeriod.allPeriodInputsComplete()) { - this.contractPeriod.calculateTotalContractPeriod() - this.updateButtonVisibility() - this.updateButtonText() - } - } -} - -const initContractExtenesions = (): void => { - const $callOffExtensionsContainer = $('#call-off-extensions') - - if ($callOffExtensionsContainer.length > 0) { - const framework: string = $callOffExtensionsContainer.data().framework - const contractPeriod: ContractPeriod = new ContractPeriod(framework) - const addExtensionPeriodButton: $AddExtensionPeriodButton = new $AddExtensionPeriodButton(contractPeriod) - - contractPeriod.$extensionsRequiredTrue.on('click', () => { - contractPeriod.extensions[0].showExtensionPeriod() - addExtensionPeriodButton.hideButton() - if (addExtensionPeriodButton.ableToAddPeriod()) addExtensionPeriodButton.showButton() - }) - - contractPeriod.$extensionsRequiredFalse.on('click', () => { - contractPeriod.extensions.forEach((extension: ExtensionPeriod) => { extension.hideExtensionPeriod() }) - addExtensionPeriodButton.hideButton() - }) - - contractPeriod.extensions.forEach((extension: ExtensionPeriod, index: number) => { - extension.$removeButton.$button.on('click', (event: JQuery.ClickEvent) => { - event.preventDefault() - - extension.hideExtensionPeriod() - contractPeriod.extensions[index - 1].$removeButton.showButton() - - if (addExtensionPeriodButton.ableToAddPeriod()) { - addExtensionPeriodButton.updateButtonVisibility() - addExtensionPeriodButton.updateButtonText() - } - }) - }) - - addExtensionPeriodButton.$button.on('click', (event: JQuery.ClickEvent) => { - event.preventDefault() - - if (addExtensionPeriodButton.ableToAddPeriod()) { - const nextExtensionIndex = 4 - $('.extension-container.govuk-visually-hidden').length - - contractPeriod.extensions[nextExtensionIndex].showExtensionPeriod() - contractPeriod.extensions[nextExtensionIndex - 1].$removeButton.hideButton() - - addExtensionPeriodButton.updateButtonVisibility() - addExtensionPeriodButton.updateButtonText() - } - }) - - contractPeriod.$periodInput.on('keyup', () => { - addExtensionPeriodButton.updateButtonState() - }) - - contractPeriod.$mobilisationPeriodRequiredTrue.on('click', () => { - addExtensionPeriodButton.updateButtonState() - }) - - contractPeriod.$mobilisationPeriodRequiredFalse.on('click', () => { - addExtensionPeriodButton.updateButtonState() - }) - - if (addExtensionPeriodButton.ableToAddPeriod()) { - addExtensionPeriodButton.updateButtonText() - addExtensionPeriodButton.updateButtonVisibility() - } else { - addExtensionPeriodButton.hideButton() - } - } -} - -export default initContractExtenesions diff --git a/app/javascript/src/facilitiesManagement/rm3830/addNestedAttributes.ts b/app/javascript/src/facilitiesManagement/rm3830/addNestedAttributes.ts deleted file mode 100644 index 6d1a6ba5ab..0000000000 --- a/app/javascript/src/facilitiesManagement/rm3830/addNestedAttributes.ts +++ /dev/null @@ -1,214 +0,0 @@ -interface NestedAttributesFieldsArguments { - $button: JQuery - nestedAttributeRowClasses: NestedAttributeRowClasses - rowLabelText: string - removeButtonMode: RemoveButtonModes -} - -interface NestedAttributeRowClasses { - rowClass: string - rowNumberClass: string - removeButtonClass: string - destroyRowClass: string -} - -type RemoveButtonModes = 'all' | 'final' - -type NestedAttributeRowArguments = { - initiateRow: { - $row: JQuery - } - generateRowHTML?: never -} | { - initiateRow?: never - generateRowHTML: { - fields: string - id: string - } -} - -interface NestedAttributeRowInterface { - updateRowLabelText: (text: string) => void - toggleRemoveButton: (isShown: boolean) => void -} - -interface AddNestedAttributeButtonInterface { - updateButtonText: (numberOfItems: number) => void -} - -interface NestedAttributesFieldsInterface { - updateAll: () => void - addNestedAttributeRow: (nestedAttributeRowArguments: NestedAttributeRowArguments) => void - removeNestedAttributeRow: (nestedAttributeRowToRemove: NestedAttributeRow) => void -} - -class NestedAttributeRow implements NestedAttributeRowInterface { - private readonly $row: JQuery - private readonly $rowLabel: JQuery - private readonly $rowRemoveButton: JQuery - private readonly $destoryRowInput: JQuery - - constructor (nestedAttributesFields: NestedAttributesFields, nestedAttributeRowClasses: NestedAttributeRowClasses, nestedAttributeRowArguments: NestedAttributeRowArguments) { - if (nestedAttributeRowArguments.initiateRow !== undefined) { - this.$row = nestedAttributeRowArguments.initiateRow.$row - } else { - const time = new Date().getTime() - const regexp = new RegExp(nestedAttributeRowArguments.generateRowHTML.id, 'g') - - this.$row = $(nestedAttributeRowArguments.generateRowHTML.fields.replace(regexp, String(time))) - } - - this.$rowLabel = this.$row.find(`.${nestedAttributeRowClasses.rowNumberClass}`) as JQuery - this.$rowRemoveButton = this.$row.find(`.${nestedAttributeRowClasses.removeButtonClass}`) as JQuery - this.$destoryRowInput = this.$row.find(`.${nestedAttributeRowClasses.destroyRowClass}`) as JQuery - - if (nestedAttributeRowArguments.generateRowHTML !== undefined) { - const updatedFields: HTMLElement | undefined = this.$row.get(0) - - if (updatedFields !== undefined) $('.fields').append(updatedFields) - } - - this.setEventListeners(nestedAttributesFields) - } - - private readonly setEventListeners = (nestedAttributesFields: NestedAttributesFields): void => { - this.$rowRemoveButton.on('click', (event: JQuery.ClickEvent) => { - event.preventDefault() - this.$destoryRowInput.val('true') - this.$row.hide() - this.$row.removeClass() - this.$rowRemoveButton.off() - - nestedAttributesFields.removeNestedAttributeRow(this) - - nestedAttributesFields.updateAll() - }) - } - - updateRowLabelText = (text: string): void => { - this.$rowLabel.text(text) - } - - toggleRemoveButton = (isShown: boolean): void => { - isShown ? this.$rowRemoveButton.show() : this.$rowRemoveButton.hide() - } -} - -class AddNestedAttributeButton implements AddNestedAttributeButtonInterface { - private readonly $button: JQuery - private readonly id: string - private readonly fields: string - private readonly buttonText: string - - constructor ($button: JQuery, nestedAttributesFields: NestedAttributesFields) { - this.$button = $button - this.id = $button.data('id') - this.fields = $button.data('fields') - this.buttonText = $button.data('button-text') - this.setEventListeners(nestedAttributesFields) - } - - private readonly setEventListeners = (nestedAttributesFields: NestedAttributesFields): void => { - this.$button.on('click', (event: JQuery.ClickEvent) => { - event.preventDefault() - - nestedAttributesFields.addNestedAttributeRow({ - generateRowHTML: { - fields: this.fields, - id: this.id - } - }) - - nestedAttributesFields.updateAll() - }) - } - - updateButtonText = (numberOfItems: number): void => { - this.$button.text(this.buttonText.replace('', String(numberOfItems))) - } -} - -class NestedAttributesFields implements NestedAttributesFieldsInterface { - private readonly maxNumberOfItems = 99 - private readonly addNestedAttributeButton: AddNestedAttributeButton - private nestedAttributeRows: NestedAttributeRow[] = [] - private readonly nestedAttributeRowClasses: NestedAttributeRowClasses - private readonly rowLabelText: string - private readonly removeButtonMode: RemoveButtonModes - - constructor (nestedAttributesFieldsArguments: NestedAttributesFieldsArguments) { - this.addNestedAttributeButton = new AddNestedAttributeButton(nestedAttributesFieldsArguments.$button, this) - this.nestedAttributeRowClasses = nestedAttributesFieldsArguments.nestedAttributeRowClasses - this.rowLabelText = nestedAttributesFieldsArguments.rowLabelText - this.removeButtonMode = nestedAttributesFieldsArguments.removeButtonMode - - $(`.${nestedAttributesFieldsArguments.nestedAttributeRowClasses.rowClass}`).each((_index: number, row: HTMLElement) => { - this.addNestedAttributeRow({ - initiateRow: { - $row: $(row) - } - }) - }) - - this.updateAll() - } - - private readonly getNumberOfRows = (): number => this.nestedAttributeRows.length - - private readonly updateRowAndButtonNumbers = (): void => { - this.nestedAttributeRows.forEach((nestedAttributeRow: NestedAttributeRow, index: number) => { nestedAttributeRow.updateRowLabelText(`${this.rowLabelText} ${index + 1}`) }) - this.addNestedAttributeButton.updateButtonText(this.maxNumberOfItems - this.getNumberOfRows()) - } - - private readonly updateRemoveButtonVisibilities = (): void => { - if (this.removeButtonMode === 'all') { - this.nestedAttributeRows.forEach((nestedAttributeRow: NestedAttributeRow) => { nestedAttributeRow.toggleRemoveButton(this.getNumberOfRows() > 1) }) - } else { - this.nestedAttributeRows.forEach((nestedAttributeRow: NestedAttributeRow, index: number) => { nestedAttributeRow.toggleRemoveButton(index > 0 && index + 1 === this.getNumberOfRows()) }) - } - } - - updateAll = (): void => { - this.updateRemoveButtonVisibilities() - this.updateRowAndButtonNumbers() - } - - addNestedAttributeRow = (nestedAttributeRowArguments: NestedAttributeRowArguments): void => { - if (this.getNumberOfRows() < this.maxNumberOfItems) this.nestedAttributeRows.push(new NestedAttributeRow(this, this.nestedAttributeRowClasses, nestedAttributeRowArguments)) - } - - removeNestedAttributeRow = (nestedAttributeRowToRemove: NestedAttributeRow): void => { - this.nestedAttributeRows = this.nestedAttributeRows.filter((nestedAttributeRow: NestedAttributeRow) => nestedAttributeRow !== nestedAttributeRowToRemove) - } -} - -const initNestedAttributesFields = (): void => { - const pensionFund: NestedAttributesFieldsArguments = { - $button: $('.add-pension-button'), - nestedAttributeRowClasses: { - rowClass: 'pension-row', - rowNumberClass: 'pension-number', - removeButtonClass: 'remove-pension-record', - destroyRowClass: 'pension-destroy-box' - }, - rowLabelText: 'Pension fund name', - removeButtonMode: 'all' - } - - const lifts: NestedAttributesFieldsArguments = { - $button: $('.add-lift-button'), - nestedAttributeRowClasses: { - rowClass: 'lift-row', - rowNumberClass: 'lift-number', - removeButtonClass: 'remove-lift-record', - destroyRowClass: 'lift-destroy-box' - }, - rowLabelText: 'Lift', - removeButtonMode: 'final' - } - - if (pensionFund.$button.length > 0) new NestedAttributesFields(pensionFund) - if (lifts.$button.length > 0) new NestedAttributesFields(lifts) -} - -export default initNestedAttributesFields diff --git a/app/javascript/src/facilitiesManagement/rm3830/bulkUploadProgress.ts b/app/javascript/src/facilitiesManagement/rm3830/bulkUploadProgress.ts deleted file mode 100644 index b0a8dde731..0000000000 --- a/app/javascript/src/facilitiesManagement/rm3830/bulkUploadProgress.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { FileUploadProgressWithBar, type StateToProgressWithProgressBar } from '../uploadProgress' - -const bulkUploadStateToProgress: StateToProgressWithProgressBar = { - not_started: { - progress: 10, - wait: 1000, - state: 'progress-0' - }, - in_progress: { - progress: 10, - wait: 1000, - state: 'progress-0' - }, - checking_file: { - progress: 30, - wait: 1000, - state: 'progress-1' - }, - processing_file: { - progress: 50, - wait: 2000, - state: 'progress-2' - }, - checking_processed_data: { - progress: 50, - wait: 2000, - state: 'progress-2' - }, - saving_data: { - progress: 70, - wait: 15000, - state: 'progress-3' - }, - data_import_succeed: { - progress: 100, - wait: 1000, - state: 'progress-4', - colourClass: 'ccs-progress-bar--succeed', - isFinished: true - }, - data_import_failed: { - progress: 100, - wait: 1000, - state: 'progress-4', - colourClass: 'ccs-progress-bar--fail', - isFinished: true - } -} - -const initBulkUpload = (): void => { - if ($('#bulk-upload-import').length) new FileUploadProgressWithBar(bulkUploadStateToProgress, 'in_progress') -} - -export default initBulkUpload diff --git a/app/services/facilities_management/rm3830/procurement_router.rb b/app/services/facilities_management/rm3830/procurement_router.rb deleted file mode 100644 index fb64f1973a..0000000000 --- a/app/services/facilities_management/rm3830/procurement_router.rb +++ /dev/null @@ -1,71 +0,0 @@ -module FacilitiesManagement::RM3830 - class ProcurementRouter - include Rails.application.routes.url_helpers - - QUICK_SEARCH_EDIT_STEPS = %w[regions services].freeze - - STEPS = %w[contract_name estimated_annual_cost tupe contract_period procurement_buildings buildings_and_services services].freeze - - SUMMARY = %w[contract_period services buildings buildings_and_services].freeze - - def initialize(id, procurement_state, step: nil, what_happens_next: false, further_competition_chosen: false) - @id = id - @procurement_state = procurement_state - @step = step - @what_happens_next = what_happens_next - @further_competition_chosen = further_competition_chosen - end - - STATES_TO_VIEWS = { - quick_search: 'quick_search', - choose_contract_value: 'choose_contract_value', - results: 'results', - further_competition: 'further_competition' - }.freeze - - def view - if STATES_TO_VIEWS.key?(@procurement_state.to_sym) - return 'further_competition' if @procurement_state == 'results' && @further_competition_chosen - return 'what_happens_next' if @procurement_state == 'quick_search' && @what_happens_next - - return STATES_TO_VIEWS[@procurement_state.to_sym] - end - - 'requirements' - end - - def route - if @procurement_state == 'quick_search' - return QUICK_SEARCH_EDIT_STEPS.include?(@step) ? edit_facilities_management_rm3830_procurement_path(id: @id) : facilities_management_rm3830_procurements_path - end - return edit_facilities_management_rm3830_procurement_path(id: @id, step: previous_step) if @step == 'services' - return facilities_management_rm3830_procurement_building_path(Procurement.find_by(id: @id).active_procurement_buildings.first) if @step == 'building_services' - - summary_page? ? facilities_management_rm3830_procurement_procurement_detail_path(procurement_id: @id, section: @step) : facilities_management_rm3830_procurement_path(id: @id) - end - - def back_link - return facilities_management_rm3830_procurement_path(id: @id) if previous_step.nil? - - edit_facilities_management_rm3830_procurement_path(id: @id, step: previous_step) - end - - private - - def summary_page? - return false if @step.nil? - - SUMMARY.include? @step - end - - def previous_step - return nil if @step.nil? - - return nil unless STEPS.include? @step - - return nil if @step == STEPS.first - - STEPS[STEPS.find_index(@step) - 1] - end - end -end diff --git a/app/views/crown_marketplace/allow_list/new.html.erb b/app/views/crown_marketplace/allow_list/new.html.erb index 4bd5b51271..e3166d224c 100644 --- a/app/views/crown_marketplace/allow_list/new.html.erb +++ b/app/views/crown_marketplace/allow_list/new.html.erb @@ -9,10 +9,15 @@ <%= form_with url: crown_marketplace_allow_list_index_path, model: @allowed_email_domain, method: :post, html: { specialvalidation: true } do |f| %>
- <%= govuk_page_header(FacilitiesManagement::PageDetail::Heading.new(t('.heading'), nil, nil, nil, nil)) %> +

+ <%= t('.heading') %> +

<%= form_group_with_error f.object, :email_domain do |displayed_error| %> - <%= label_details(f, :email_domain, t('.email_domain_label'), t('.email_domain_hint')) %> + <%= f.label(:email_domain, t('.email_domain_label'), class: 'govuk-label govuk-label--m') %> +
+ <%= t('.email_domain_hint') %> +

<%= t('.email_domain_must') %>

  • <%= t('.email_domain_must_1') %>
  • @@ -20,7 +25,7 @@
  • <%= t('.email_domain_must_3') %>
<%= displayed_error %> - <%= f.text_field :email_domain, class: 'govuk-input govuk-input--width-30 govuk-!-margin-top-4' %> + <%= f.text_field :email_domain, class: 'govuk-input govuk-input--width-30 govuk-!-margin-top-4', aria: { describedby: 'email_domain-hint' } %> <% end %>
diff --git a/app/views/facilities_management/admin/supplier_details/_additional_supplier_information.html.erb b/app/views/facilities_management/admin/supplier_details/_additional_supplier_information.html.erb index 2858ad6aba..d8fadf4e60 100644 --- a/app/views/facilities_management/admin/supplier_details/_additional_supplier_information.html.erb +++ b/app/views/facilities_management/admin/supplier_details/_additional_supplier_information.html.erb @@ -1,11 +1,17 @@ <%= form_group_with_error(f.object, :duns) do |displayed_error, any_errors| %> - <%= label_details(f, :duns, t('.duns_question'), t('.duns_info')) %> + <%= f.label(:duns, t('.duns_question'), class: 'govuk-label govuk-label--m') %> +
+ <%= t('.duns_info') %> +
<%= displayed_error %> <%= f.text_field :duns, class: "govuk-input govuk-input--width-10 ccs-integer-field govuk-!-margin-top-2 #{'govuk-input--error' if any_errors }", maxlength: 9 %> <% end %> <%= form_group_with_error(f.object, :registration_number) do |displayed_error, any_errors| %> - <%= label_details(f, :registration_number, t('.registration_number_question'), t('.registration_number_info')) %> + <%= f.label(:registration_number, t('.registration_number_question'), class: 'govuk-label govuk-label--m') %> +
+ <%= t('.registration_number_info') %> +
<%= displayed_error %> <%= f.text_field :registration_number, class: "govuk-input govuk-input--width-10 govuk-!-margin-top-2 #{'govuk-input--error' if any_errors }", maxlength: 8 %> <% end %> \ No newline at end of file diff --git a/app/views/facilities_management/admin/supplier_details/_supplier_contact_information.html.erb b/app/views/facilities_management/admin/supplier_details/_supplier_contact_information.html.erb index 14c61292be..da48a883eb 100644 --- a/app/views/facilities_management/admin/supplier_details/_supplier_contact_information.html.erb +++ b/app/views/facilities_management/admin/supplier_details/_supplier_contact_information.html.erb @@ -5,7 +5,10 @@ <% end %> <%= form_group_with_error(f.object, :contact_email) do |displayed_error, any_errors| %> - <%= label_details(f, :contact_email, t('.contact_email_question'), t('.contact_email_info')) %> + <%= f.label(:contact_email, t('.contact_email_question'), class: 'govuk-label govuk-label--m') %> +
+ <%= t('.contact_email_info') %> +
<%= displayed_error %> <%= f.text_field :contact_email, class: "govuk-input govuk-input--width-20 govuk-!-margin-top-2 #{'govuk-input--error' if any_errors }" %> <% end %> diff --git a/app/views/facilities_management/admin/supplier_details/edit.html.erb b/app/views/facilities_management/admin/supplier_details/edit.html.erb index 9b43fbfbd6..2be0e10a45 100644 --- a/app/views/facilities_management/admin/supplier_details/edit.html.erb +++ b/app/views/facilities_management/admin/supplier_details/edit.html.erb @@ -7,7 +7,14 @@ <%= form_with model: @supplier, url: facilities_management_admin_supplier_detail_path(page: @page), html: { specialvalidation: true, novalidate: true } do |f| %> <%= render partial: 'shared/error_summary', locals: { errors: f.object.errors } %> - <%= govuk_page_header(FacilitiesManagement::PageDetail::Heading.new(t(".page_title.#{@page}"), current_supplier_name, nil, nil, nil)) %> + +

+ + <%= current_supplier_name %> + + <%= t(".page_title.#{@page}") %> +

+
<%= render partial: @page.to_s, locals: { f: f } %> diff --git a/app/views/facilities_management/admin/supplier_details/show.html.erb b/app/views/facilities_management/admin/supplier_details/show.html.erb index ec6faf9059..22ba315e1e 100644 --- a/app/views/facilities_management/admin/supplier_details/show.html.erb +++ b/app/views/facilities_management/admin/supplier_details/show.html.erb @@ -3,7 +3,13 @@ { text: t("facilities_management.#{@framework.downcase}.admin.supplier_details.index.heading"), link: supplier_details_index_path }, { text: @supplier.supplier_name } ) %> -<%= govuk_page_header(FacilitiesManagement::PageDetail::Heading.new(t('.supplier_details'), @supplier.supplier_name, nil, nil, nil)) %> + +

+ + <%= @supplier.supplier_name %> + + <%= t('.supplier_details') %> +

<%= framework_expired_warning(t("facilities_management.#{params[:framework].downcase}.admin.you_cannot_update.details")) %> diff --git a/app/views/facilities_management/buildings/add_address.html.erb b/app/views/facilities_management/buildings/add_address.html.erb deleted file mode 100644 index b56a7266d8..0000000000 --- a/app/views/facilities_management/buildings/add_address.html.erb +++ /dev/null @@ -1,35 +0,0 @@ -<% content_for :page_title, t(".heading") %> -<%= render partial: 'shared/error_summary', locals: { errors: @building.errors } %> - -
-
- - <%= t('.step') %> - - - <%= t('.sub_title') %> - -

- <%= t(".heading") %> -

-
-
- -<%= form_with url: create_path, model: @building, method: :post, html: { specialvalidation: true, novalidate: true } do |f| %> -
-
- <%= hidden_field_tag :step, 'add_address' %> - <%= render partial: "facilities_management/buildings/edit_partials/add_address", locals: { f: f } %> - <%= f.hidden_field :address_region, value:'' %> - <%= f.hidden_field :address_region_code, value:'' %> - <%= f.hidden_field :building_name %> - <%= f.hidden_field :description %> -
-
- -
-
- <%= f.submit(t('.save_and_continue'), class: 'govuk-button govuk-!-margin-right-4', data: { module: 'govuk-button' }, name: :add_address) %> -
-
-<% end %> diff --git a/app/views/facilities_management/buildings/edit.html.erb b/app/views/facilities_management/buildings/edit.html.erb deleted file mode 100644 index b3dfc44bb0..0000000000 --- a/app/views/facilities_management/buildings/edit.html.erb +++ /dev/null @@ -1,45 +0,0 @@ -<% content_for :page_title, t(".heading.#{section}") %> -<%= render partial: 'shared/error_summary', locals: { errors: @building.errors } %> - -
-
- - <%= t('.step', step_number: section_number) %> - - - <%= t('.sub_title', building_name: @building.building_name) %> - -

- <%= t(".heading.#{section}") %> -

-
-
- -<%= form_with url: update_path, model: @building, method: :put, html: { specialvalidation: true, novalidate: true } do |f| %> -
-
- <%= render partial: "facilities_management/buildings/edit_partials/#{section}", locals: { f: f } %> -
-
- -
-
- <% if section == :add_address %> - <%= f.submit(t('.save_and_continue'), class: 'govuk-button govuk-!-margin-right-4', data: { module: 'govuk-button' }) %> - <% else %> -
- <%= f.submit(t('.save_and_continue'), class: 'govuk-button', data: { module: 'govuk-button' }) unless last_step? %> - <%= f.submit(t('.save_and_return'), class: "govuk-button #{ 'govuk-button--secondary' unless last_step? }", data: { module: 'govuk-button' }, name: :save_and_return) %> -
-

- <%= link_to t('.skip_this_step'), next_step_path, class: 'govuk-link--no-visited-state' %> -

- <% unless last_step? %> -

- <%= t('.next_step', next_step: t(".next_steps.#{section}")) %> -

- <% end %> - <% end %> -
-
-<% end %> \ No newline at end of file diff --git a/app/views/facilities_management/buildings/edit_partials/_add_address.html.erb b/app/views/facilities_management/buildings/edit_partials/_add_address.html.erb deleted file mode 100644 index fcdb7b062c..0000000000 --- a/app/views/facilities_management/buildings/edit_partials/_add_address.html.erb +++ /dev/null @@ -1,72 +0,0 @@ -
-

- <%= t('.add_address_header') %> -

-

- <%= t('.description') %> -

- - <%= govuk_text_input( - f, - :address_line_1, - { - label: { - text: t('.line_1_of_2') - }, - input: { - classes: 'govuk-input--width-20', - attributes: { - maxlength: 100, - } - } - } - )%> - - <%= govuk_text_input( - f, - :address_line_2, - { - label: { - text: t('.line_2_of_2') - }, - input: { - classes: 'govuk-input--width-20', - attributes: { - maxlength: 100, - } - } - } - )%> - - <%= govuk_text_input( - f, - :address_town, - { - label: { - text: t('.town_or_city') - }, - input: { - classes: 'govuk-input--width-10', - attributes: { - maxlength: 30, - } - } - } - )%> - - <%= govuk_text_input( - f, - :address_postcode, - { - label: { - text: t('.postcode') - }, - input: { - classes: 'govuk-input--width-10', - attributes: { - maxlength: 9, - } - } - } - )%> -
diff --git a/app/views/facilities_management/buildings/edit_partials/_building_area.html.erb b/app/views/facilities_management/buildings/edit_partials/_building_area.html.erb deleted file mode 100644 index 5536ef2017..0000000000 --- a/app/views/facilities_management/buildings/edit_partials/_building_area.html.erb +++ /dev/null @@ -1,66 +0,0 @@ -

- <%= t('.guidance') %> -

- -<% gia_hint_html = capture do - concat(tag.p(t('.description_html'), class: 'govuk-hint')) - concat(tag.p(t('.further_info_html'), class: 'govuk-hint')) -end %> - -<%= govuk_text_input( - f, - :gia, - { - label: { - text: t('.gia_header'), - classes: 'govuk-label--m' - }, - hint: { - text: gia_hint_html, - id: 'gia-hint' - }, - input: { - classes: 'govuk-input--width-5', - suffix: { - text: 'sqm' - }, - attributes: { - type: 'number', - pattern: '[0-9]', - maxlength: 9, - aria: { - describedby: 'gia-hint' - } - } - } - } -)%> - -<%= govuk_text_input( - f, - :external_area, - { - label: { - text: t('.external_area_header'), - classes: 'govuk-label--m' - }, - hint: { - text: t('.external_area_description_html'), - id: 'external-area-hint' - }, - input: { - classes: 'govuk-input--width-5', - suffix: { - text: 'sqm' - }, - attributes: { - type: 'number', - pattern: '[0-9]', - maxlength: 9, - aria: { - describedby: 'external-area' - } - } - } - } -)%> diff --git a/app/views/facilities_management/buildings/edit_partials/_building_details.html.erb b/app/views/facilities_management/buildings/edit_partials/_building_details.html.erb deleted file mode 100644 index 98d4dd1e59..0000000000 --- a/app/views/facilities_management/buildings/edit_partials/_building_details.html.erb +++ /dev/null @@ -1,72 +0,0 @@ -
- - <%= govuk_text_input( - f, - :building_name, - { - label: { - text: t('.building_name.label'), - classes: 'govuk-label--m' - }, - hint: { - text: t('.building_name.hint'), - id: 'building-name-hint' - }, - input: { - classes: 'govuk-input--width-20', - attributes: { - required: true, - maxlength: 50, - aria: { - describedby: 'building-name-hint' - } - } - } - } - )%> - <%= govuk_text_input( - f, - :description, - { - label: { - text: t('.description.label'), - classes: 'govuk-label--m' - }, - hint: { - text: t('.description.hint'), - id: 'building-description-hint' - }, - input: { - classes: 'govuk-input--width-20', - attributes: { - required: true, - maxlength: 50, - aria: { - describedby: 'building-description-hint' - } - } - } - } - )%> - -
-
-

- <%= t('.what_is_address') %> -

- - <%= t('.what_is_address_description') %> - -
-
- - - <%= render partial: 'facilities_management/shared/find_address/find_address', locals: { - f: f, - find_address_helper: find_address_helper(f.object, false), - cant_find_address_text: t('.cant_find_address'), - submit_cant_find_address: f.object.id.nil?, - address_title: t('.address') - } %> - <%= render partial: 'facilities_management/shared/find_address/find_region', locals: { f: f } %> -
\ No newline at end of file diff --git a/app/views/facilities_management/buildings/edit_partials/_building_type.html.erb b/app/views/facilities_management/buildings/edit_partials/_building_type.html.erb deleted file mode 100644 index b69a72106d..0000000000 --- a/app/views/facilities_management/buildings/edit_partials/_building_type.html.erb +++ /dev/null @@ -1,23 +0,0 @@ -<%= tag.p(t('.help_text'), class: 'govuk-caption-m govuk-!-width-two-thirds') if params[:framework] == 'RM3830' %> - -<%= form_group_with_error(f.object, :building_type) do |displayed_error| %> -
- - <%= t('.choose_building_type') %> - - <%= displayed_error %> - <%= govuk_radios_conditional do %> - <% FacilitiesManagement::Building::BUILDING_TYPES[0..1].each do |building_type| %> - <%= building_type_radio_button(f, building_type, false) %> - <% end %> - <%= govuk_radio_driver %> - <%= govuk_details(t('.view_more'), class: 'govuk-!-margin-left-0 building-type', open: should_building_details_be_open?) do %> - <% FacilitiesManagement::Building::BUILDING_TYPES.drop(2).each do |building_type| %> - <%= building_type_radio_button(f, building_type, !should_building_details_be_open?) %> - <% end %> - <%= govuk_radio_driver %> - <%= render partial: 'facilities_management/buildings/edit_partials/other', locals: { f: f, attribute: :building_type, other_attribute: :other_building_type, description: t('.describe_building'), disabled: !should_building_details_be_open?, not_other: f.object.building_type != 'other'}%> - <% end %> - <% end %> -
-<% end %> diff --git a/app/views/facilities_management/buildings/edit_partials/_other.html.erb b/app/views/facilities_management/buildings/edit_partials/_other.html.erb deleted file mode 100644 index a3b95a5264..0000000000 --- a/app/views/facilities_management/buildings/edit_partials/_other.html.erb +++ /dev/null @@ -1,9 +0,0 @@ -<%= form_group_with_error(f.object, other_attribute) do |displayed_error| %> - <%= govuk_radios_conditional_item(f, attribute, 'other', t('.other_label')) %> - <%= govuk_radios_conditional_area(attribute, 'other') do %> - <%= f.label other_attribute, description, class: 'govuk-label' %> - <%= displayed_error %> - <%= govuk_character_count(f, other_attribute, 150, 3) %> - <% end %> -<% end %> - diff --git a/app/views/facilities_management/buildings/edit_partials/_security_type.html.erb b/app/views/facilities_management/buildings/edit_partials/_security_type.html.erb deleted file mode 100644 index d9e36ee83f..0000000000 --- a/app/views/facilities_management/buildings/edit_partials/_security_type.html.erb +++ /dev/null @@ -1,14 +0,0 @@ -<%= govuk_grouped_field(f, t('.select_security'), :security_type, t('.security_description_html')) do %> - <%= f.hidden_field :security_type %> - <%= govuk_radios_conditional do %> - <% FacilitiesManagement::SecurityType.order(:sort_order).each do |security_type| %> -
- <%= f.radio_button :security_type, security_type[:title], id: security_type[:id], class: 'govuk-radios__input' %> - <%= f.label :security_type, security_type[:title], for: security_type[:id], class: 'govuk-label govuk-radios__label govuk-label--s' %> - <%= security_type[:description] %> -
- <% end %> - <%= govuk_radio_driver %> - <%= render partial: 'facilities_management/buildings/edit_partials/other', locals: { f: f, attribute: :security_type, other_attribute: :other_security_type, description: t('.describe_security'), disabled: false, not_other: f.object.security_type != 'other'}%> - <% end %> -<% end %> diff --git a/app/views/facilities_management/buildings/index.html.erb b/app/views/facilities_management/buildings/index.html.erb deleted file mode 100644 index e73f88cdf9..0000000000 --- a/app/views/facilities_management/buildings/index.html.erb +++ /dev/null @@ -1,85 +0,0 @@ -<% content_for :page_title, t('.heading') %> - -
-
-

- <%= t('.heading') %> -

-
-
- -
-
- <%= link_to t('.create_new_button'), "/facilities-management/#{params[:framework]}/buildings/new", class: "govuk-button ccs-no-print govuk-!-margin-bottom-6", role: "button", aria: { label: t('.create_new_button') } %> -
-

- <%= t('.start_paragraph_html', start_a_procurement_link: link_to(t('.start_a_procurement_link_text'), start_a_procurement_path, class: 'govuk-link govuk-link--no-visited-state')) %> -

- <%= govuk_details(t('.how_it_works')) do %> -

- <%= t('.start_warning_1') %> -

-

- <%= t('.start_warning_2') %> -

-

- <%= t('.start_warning_3') %> -

- <% end %> -
-
-
- -
- -
-
-

- <%= t('.my_buildings_header') %> -

- <% if @buildings.count.zero? %> -
-

- <%= t('.no_buildings_text') %> -

-
- <% else %> - - - - - - - - - - - <% @buildings.each do |building| %> - - - - - - <% end %> - -
<%= t('.column_name_header') %><%= t('.column_desc_header') %><%= t('.column_lstup_header') %><%= t('.column_status_header') %>
- <%= link_to building.building_name, show_path(building), class: 'govuk-link', aria: { label: t('.link_to_building_summary', building_name: building.building_name) } %> - - <%= building.description.to_s.length > 0 ? building.description : '-' %> - - <%= format_date_time(building.updated_at) %> - - <%= govuk_tag(building.building_status) %> -
- <%= paginate @buildings, views_prefix: 'shared' %> - <% end %> -
-
- -
-
-

- <%= link_to t('.return_to_your_account'), facilities_management_index_path, class: "govuk-link", aria: { label: t('.return_to_your_account') } %> -

-
-
diff --git a/app/views/facilities_management/buildings/new.html.erb b/app/views/facilities_management/buildings/new.html.erb deleted file mode 100644 index 44beef3653..0000000000 --- a/app/views/facilities_management/buildings/new.html.erb +++ /dev/null @@ -1,34 +0,0 @@ -<% content_for :page_title, t(".heading") %> -<%= render partial: 'shared/error_summary', locals: { errors: @building.errors } %> - -
-
- - <%= t('.step') %> - - - <%= t('.sub_title') %> - -

- <%= t(".heading") %> -

-
-
- -<%= form_with url: create_path, model: @building, method: :post, html: { specialvalidation: true, novalidate: true } do |f| %> -
-
- <%= render partial: "facilities_management/buildings/edit_partials/building_details", locals: { f: f } %> -
-
- -
-
- <%= f.submit(t('.save_and_continue'), class: 'govuk-button govuk-!-margin-right-4', data: { module: 'govuk-button' }) %> - <%= f.submit(t('.save_and_return'), class: 'govuk-button govuk-button--secondary', data: { module: 'govuk-button' }, name: :save_and_return) %> -

- <%= t('.next_step', next_step: t(".next_step")) %> -

-
-
-<% end %> \ No newline at end of file diff --git a/app/views/facilities_management/buildings/show.html.erb b/app/views/facilities_management/buildings/show.html.erb deleted file mode 100644 index 76ad1275bf..0000000000 --- a/app/views/facilities_management/buildings/show.html.erb +++ /dev/null @@ -1,60 +0,0 @@ -<% content_for :page_title, t('.page_title') %> - -
-
- - <%= t('.sub_title') %> - -

- <%= @building.building_name %> -

-
-
- -
-
- <%= t('.status') %> - <%= govuk_tag(@building.building_status) %> - -
- <%= @building.status == 'Ready' ? t('.complete_text') : t('.incomplete_text') %> -
-
-
- -
-
-

<%= t('.page_title') %>

- -
- <% building_rows.each do |attribute, building_detail| %> -
-
- <%= t(".row_name.#{attribute}") %> -
- <% if building_detail[:value].present? %> -
- <%= building_row_text(attribute, building_detail[:value]) %> -
-
- <%= link_to(t('.change'), edit_path(@building, building_detail[:section]), role: 'link', class: 'govuk-link') unless attribute == :region %> -
- <% else %> -
- <%= link_to(t('.answer_question'), edit_path(@building, building_detail[:section]), role: 'link', class: 'govuk-link') %> -
-
- <% end %> -
- <% end %> -
-
-
- -
-
-

- <%= link_to @back_text, @back_path, class: "govuk-link", aria: { label: @back_text } %> -

-
-
diff --git a/app/views/facilities_management/procurement_buildings/_buildings_and_services.html.erb b/app/views/facilities_management/procurement_buildings/_buildings_and_services.html.erb deleted file mode 100644 index 8785d01b83..0000000000 --- a/app/views/facilities_management/procurement_buildings/_buildings_and_services.html.erb +++ /dev/null @@ -1,38 +0,0 @@ -
-
- <%= form_group_with_error(f.object, :service_codes) do |displayed_error| %> -
- -

- <%= t('.label') %> -

-
-
- <%= t('.hint_text_html', services_link: link_to(t('.services_link_text'), "/facilities-management/#{params[:framework]}/procurements/#{@procurement.id}/procurement-details/services", class: 'govuk-link govuk-link--no-visited-state')) %> -
- <%= displayed_error %> -
-
    -
  • - - -
  • -
  • -

    <%= t('.or') %>

    -
  • - <%= f.collection_check_boxes(:service_codes, procurement_services, :code, :name) do |c| %> -
  • -
    - <%= c.check_box(class: 'govuk-checkboxes__input procurement-building__input') %> - <%= c.label(class: 'govuk-label govuk-checkboxes__label') %> -
    -
  • - <% end %> -
-
-
- <% end %> -
-
diff --git a/app/views/facilities_management/procurement_buildings/_missing_region.html.erb b/app/views/facilities_management/procurement_buildings/_missing_region.html.erb deleted file mode 100644 index f4775eb5bd..0000000000 --- a/app/views/facilities_management/procurement_buildings/_missing_region.html.erb +++ /dev/null @@ -1,36 +0,0 @@ -
-
-

- <%= building_name %> -

-

- <%= t('.we_use_your_buildings') %> -

-

- <%= t('.for_this_building') %> -

-
-
- -<%= building_summary t('.building_name'), building_name %> -<%= building_summary t('.building_address'), @procurement_building.full_address %> - -<%= form_group_with_error(f.object, :address_region) do |displayed_error| %> -
-
- <%= f.label :address_region, t('.select_region'), class: 'govuk-heading-s'%> - <%= displayed_error %> - <%= f.select :address_region, regions, { prompt: t('.prompt') }, { class: 'govuk-select govuk-!-width-one-third' } %> -
- -
-<% end %> diff --git a/app/views/facilities_management/procurement_buildings/edit.html.erb b/app/views/facilities_management/procurement_buildings/edit.html.erb deleted file mode 100644 index a15b3e99e4..0000000000 --- a/app/views/facilities_management/procurement_buildings/edit.html.erb +++ /dev/null @@ -1,26 +0,0 @@ -<% content_for :page_title, edit_page_title %> -<%= render partial: 'shared/error_summary', locals: { errors: form_object.errors } %> - -
-
- - <%= page_subtitle %> - -

- <%= edit_page_title %> -

-
-
- -<%= form_with url: update_path, model: form_object, method: :put, html: { specialvalidation: true, novalidate: true } do |f| %> - <%= render partial: section.to_s, locals: { f: f } %> - -
-
- <%= f.submit(t('.save_and_return'), class: 'govuk-button', data: { module: 'govuk-button' }) %> -

- <%= link_to t(".return_link.#{section}"), return_link, class: 'govuk-link--no-visited-state' %> -

-
-
-<% end %> diff --git a/app/views/facilities_management/procurement_buildings/missing_regions.html.erb b/app/views/facilities_management/procurement_buildings/missing_regions.html.erb deleted file mode 100644 index 09e6c90b87..0000000000 --- a/app/views/facilities_management/procurement_buildings/missing_regions.html.erb +++ /dev/null @@ -1,60 +0,0 @@ -<% content_for :page_title, t('.title') %> - -
-
- - <%= page_subtitle %> - -

- <%= t('.title') %> -

-
-
- -
-
-

- <%= t('.before_you_proceed') %> -

-
-
- -
-
-

- <%= t('.review_buildings', building_count: pluralize(buildings_with_missing_regions.count, t('.building'))).pluralize(buildings_with_missing_regions.count) %> -

-

- <%= t('.could_you_review') %> -

-
-
- -
-
- - - - - - - - - - <% buildings_with_missing_regions.each do |procurement_building| %> - - - - - - <% end %> - -
<%= t('.building_name') %> <%= t('.building_address') %> <%= t('.building_region') %>
<%= building_name(procurement_building) %><%= procurement_building.full_address %><%= link_to t('.select_region'), "/facilities-management/#{params[:framework]}/procurement-buildings/#{procurement_building.id}/missing-region/edit", class: 'govuk-link govuk-link--no-visited-state' %>
-
-
- -
-
- <%= link_to t('.return_link'), procurement_index_path, 'aria-label': t('.return_link'), class: 'govuk-link govuk-link--no-visited-state govuk-!-font-size-19' %> -
-
diff --git a/app/views/facilities_management/procurement_details/edit.html.erb b/app/views/facilities_management/procurement_details/edit.html.erb deleted file mode 100644 index f9ec44a7e2..0000000000 --- a/app/views/facilities_management/procurement_details/edit.html.erb +++ /dev/null @@ -1,26 +0,0 @@ -<% content_for :page_title, edit_page_title %> -<%= render partial: 'shared/error_summary', locals: { errors: @procurement.errors } %> - -
-
- - <%= page_subtitle %> - -

- <%= edit_page_title %> -

-
-
- -<%= form_with url: show_path, model: @procurement, method: :put, html: { specialvalidation: true, novalidate: true } do |f| %> - <%= render partial: "facilities_management/procurement_details/edit_partials/#{section}", locals: { f: f } %> - -
-
- <%= f.submit(t('.save_and_return'), class: 'govuk-button', data: { module: 'govuk-button' }) %> -

- <%= link_to t('.return_to_requirements'), procurement_show_path, class: 'govuk-link--no-visited-state' %> -

-
-
-<% end %> diff --git a/app/views/facilities_management/procurement_details/edit_partials/_annual_contract_value.html.erb b/app/views/facilities_management/procurement_details/edit_partials/_annual_contract_value.html.erb deleted file mode 100644 index 7e95b6194e..0000000000 --- a/app/views/facilities_management/procurement_details/edit_partials/_annual_contract_value.html.erb +++ /dev/null @@ -1,30 +0,0 @@ -
-
- <%= govuk_text_input( - f, - :annual_contract_value, - { - label: { - text: t('.label_text'), - classes: 'govuk-label--m' - }, - hint: { - text: t('.hint_text'), - id: 'annual-contract-value-hint' - }, - input: { - classes: 'govuk-input--width-10 ccs-number-field ccs-integer-field', - prefix: { - text: '£' - }, - attributes: { - maxlength: 15, - aria: { - describedby: 'annual-contract-value-hint' - } - } - } - } - )%> -
-
diff --git a/app/views/facilities_management/procurement_details/edit_partials/_buildings.html.erb b/app/views/facilities_management/procurement_details/edit_partials/_buildings.html.erb deleted file mode 100644 index 058daedd45..0000000000 --- a/app/views/facilities_management/procurement_details/edit_partials/_buildings.html.erb +++ /dev/null @@ -1,89 +0,0 @@ -
-
-

- <%= t('.page_details_1')%> -

-

- <%= t('.page_details_2')%> -

-
-
-

- <%= t('.new_buildings')%> -

-

- <%= t('.new_buildings_details')%> -

- <%= link_to t('.add_a_building'), new_building_path, class: 'govuk-button govuk-button--secondary' %> - <%= govuk_details(t('.how_it_works')) do %> -

- <%= t('.how_it_works_1') %> -

-

- <%= t('.how_it_works_2') %> -

-

- <%= t('.how_it_works_3') %> -

- <% end %> -
-
- -<%= form_group_with_error f.object, :procurement_buildings do |displayed_error| %> -
-
-

- <%= t('.my_buildings') %> -

- <%= displayed_error %> -
-
- -
-
- <% if current_user.buildings.any? %> - - - - - - - - - - <% @buildings.each_with_index do |building, index| %> - <%= f.fields_for :procurement_buildings_attributes, building, index: index, include_id: false do |pb_field|%> - - - - - - <% end %> - <% end %> - -
<%= t('.building_name_and_address') %><%= t('.status') %>
-
- <%= procurement_building_row(pb_field, building) %> -
- <%= pb_field.hidden_field(:building_id, value: building.id) %> -
<%= govuk_tag(*building.building_status)%><%= link_to t('.details'), show_building_path(building.id), class: "govuk-link govuk-link--no-visited-state", aria: { label: t('.details_link_aria_label', building_name: building.building_name) } %>
- - <% @hidden_buildings.each.with_index(100) do |hidden_building, index| %> - <%= f.fields_for :procurement_buildings_attributes, hidden_building, index: index, include_id: false do |pb_field|%> - <%= pb_field.hidden_field :active, value: @building_params[hidden_building.id] %> - <%= pb_field.hidden_field :building_id, value: hidden_building.id %> - <% end %> - <% end %> - - - <%= paginate @buildings, views_prefix: 'facilities_management/procurement_details', f: f %> - <% else %> -
-

- <%= t('.no_saved_buildings') %> -

-
- <% end %> -
-
-<% end %> diff --git a/app/views/facilities_management/procurement_details/edit_partials/_contract_name.html.erb b/app/views/facilities_management/procurement_details/edit_partials/_contract_name.html.erb deleted file mode 100644 index 08ffa007ff..0000000000 --- a/app/views/facilities_management/procurement_details/edit_partials/_contract_name.html.erb +++ /dev/null @@ -1,28 +0,0 @@ -
-
- <%= govuk_text_input( - f, - :contract_name, - { - label: { - text: t('.label_text'), - classes: 'govuk-label--m' - }, - hint: { - text: t('.hint_text'), - id: 'contract-name-hint' - }, - input: { - classes: 'govuk-input--width-20', - attributes: { - required: true, - maxlength: 100, - aria: { - describedby: 'contract-name-hint' - } - } - } - } - )%> -
-
diff --git a/app/views/facilities_management/procurement_details/edit_partials/_contract_period.html.erb b/app/views/facilities_management/procurement_details/edit_partials/_contract_period.html.erb deleted file mode 100644 index 27dd985b7d..0000000000 --- a/app/views/facilities_management/procurement_details/edit_partials/_contract_period.html.erb +++ /dev/null @@ -1,13 +0,0 @@ -
-
-
-
- <%= render partial: 'facilities_management/procurement_details/edit_partials/contract_period/initial_call_off_period', locals: { f: f } %> -
- <%= render partial: 'facilities_management/procurement_details/edit_partials/contract_period/mobilisation_period', locals: { f: f } %> -
- <%= render partial: 'facilities_management/procurement_details/edit_partials/contract_period/call_off_extensions', locals: { f: f } %> -
-
-
-
diff --git a/app/views/facilities_management/procurement_details/edit_partials/_estimated_annual_cost.html.erb b/app/views/facilities_management/procurement_details/edit_partials/_estimated_annual_cost.html.erb deleted file mode 100644 index 5e50be7d2d..0000000000 --- a/app/views/facilities_management/procurement_details/edit_partials/_estimated_annual_cost.html.erb +++ /dev/null @@ -1,19 +0,0 @@ -
-
- <%= hint_details(t('.do_you_know'), t('.content')) %> -
- <%= display_errors @procurement, :estimated_cost_known %> - <%= govuk_radios_conditional do %> - <%= govuk_radios_conditional_item(f, :estimated_cost_known, true, 'Yes') %> - <%= govuk_radios_conditional_area(:estimated_cost_known, true) do %> - <%= f.label :estimated_annual_cost, t('.label'), class: "govuk-label" %> - <%= display_errors @procurement, :estimated_annual_cost %> -
- - <%= f.text_field :estimated_annual_cost, class: "govuk-input ccs-number-field ccs-integer-field govuk-input--width-20 #{'govuk-input--error' if @procurement.errors[:estimated_annual_cost].any? }", min: 1 %> -
- <% end %> - <%= govuk_radios_conditional_item(f, :estimated_cost_known, false, 'No') %> - <% end %> -
-
diff --git a/app/views/facilities_management/procurement_details/edit_partials/_services.html.erb b/app/views/facilities_management/procurement_details/edit_partials/_services.html.erb deleted file mode 100644 index 8b15cdb9a8..0000000000 --- a/app/views/facilities_management/procurement_details/edit_partials/_services.html.erb +++ /dev/null @@ -1,45 +0,0 @@ -
-
-
-
- <%= govuk_form_group_with_optional_error(f.object, :service_codes) do %> - <%= govuk_fieldset_with_optional_error(f.object, :service_codes) do %> -
-

- <%= t('.select_the_services') %> -

-

- <%= t('.choose_the_required_services') %> -

-

- <%= service_specification_document(params[:framework].downcase) %> -

-
-
- <%= display_errors(f.object, :service_codes) %> -
- <%= govuk_accordion_with_checkboxes( - 'edit-services', - accordion_service_items, - "facilities_management_#{params[:framework].downcase}_procurement_service_codes", - "facilities_management_#{params[:framework].downcase}_procurement[service_codes]" - ) do |section_id, item| %> - <% case params[:framework]%> - <% when 'RM3830' %> - <%= link_to t('.learn_more'), facilities_management_rm3830_service_specification_path(item[:code], section_id), target: '_blank' %> - <%= govuk_tag_with_text(:grey, t('common.da_eligible')) if da_eligible?(item[:value]) %> - <% when 'RM6232' %> - <%= link_to t('.learn_more'), facilities_management_rm6232_service_specification_path(item[:code]), target: '_blank' %> - <% end %> - <% end %> -
-
- <% end %> - <% end %> -
-
- <%= render partial: 'facilities_management/shared/baskets/services_basket' %> -
-
-
-
diff --git a/app/views/facilities_management/procurement_details/edit_partials/_tupe.html.erb b/app/views/facilities_management/procurement_details/edit_partials/_tupe.html.erb deleted file mode 100644 index a9b9a069be..0000000000 --- a/app/views/facilities_management/procurement_details/edit_partials/_tupe.html.erb +++ /dev/null @@ -1,30 +0,0 @@ -
-
-
- <%= form_group_with_error(f.object, :tupe) do |displayed_error| %> - <%= hint_details(t('.first_question'), t('.body_text_html')) %> - -
- <%= govuk_details(t('.what_you_need_to_know_title')) do %> - <%= t('.what_you_need_to_know_html') %> - <%= link_to t('.tupe_link_text'), t('.tupe_link'), class: 'govuk-link', tabIndex: -1, target: :blank %> - <% end %> -
- -
- <%= displayed_error %> -
-
- <%= f.radio_button :tupe, true, class: 'govuk-radios__input', required: true %> - <%= f.label :tupe, 'Yes', value: true, class: 'govuk-label govuk-radios__label' %> -
-
- <%= f.radio_button :tupe, false, class: 'govuk-radios__input', required: true %> - <%= f.label :tupe, 'No', value: false , class: 'govuk-label govuk-radios__label' %> -
-
-
- <% end %> -
-
-
diff --git a/app/views/facilities_management/procurement_details/edit_partials/contract_period/_call_off_extensions.html.erb b/app/views/facilities_management/procurement_details/edit_partials/contract_period/_call_off_extensions.html.erb deleted file mode 100644 index f4973bbf5d..0000000000 --- a/app/views/facilities_management/procurement_details/edit_partials/contract_period/_call_off_extensions.html.erb +++ /dev/null @@ -1,28 +0,0 @@ -
-
-
- - - <%= t('.heading') %> - - -

<%= t('.description') %>

- <% display_extension_error_anchor %> - <%= govuk_radios_conditional do %> - <%= display_errors f.object, :extensions_required %> - <%= govuk_radios_conditional_item(f, :extensions_required, true, 'Yes') %> - <%= govuk_radios_conditional_area(:extensions_required, true) do %> -
- <%= f.fields_for :call_off_extensions, call_off_extensions do |optional_period_field| %> - <%= render 'facilities_management/procurement_details/edit_partials/contract_period/extension', f: optional_period_field %> - <% end %> - -
- <% end %> - <%= govuk_radios_conditional_item(f, :extensions_required, false, 'No') %> - <% end %> -
-
-
diff --git a/app/views/facilities_management/procurement_details/edit_partials/contract_period/_extension.html.erb b/app/views/facilities_management/procurement_details/edit_partials/contract_period/_extension.html.erb deleted file mode 100644 index 87f9f5d265..0000000000 --- a/app/views/facilities_management/procurement_details/edit_partials/contract_period/_extension.html.erb +++ /dev/null @@ -1,40 +0,0 @@ -<% row_visible = call_off_extension_visible?(f.index) %> -<% remove_button_visible = row_visible && !call_off_extension_visible?(f.index + 1) %> - -
-
-
-
- - <%= t('.extension_period', extension: f.index + 1) %> - - <%= display_error(f.object, :years) %> - <%= display_error(f.object, :months) %> - <%= display_error(f.object, :base) %> -
-
-
-
-
- <%= f.number_field :years, class: "govuk-input govuk-input--width-5 period-input #{'govuk-input--error' if f.object.errors[:years].any?}", tabindex: input_visible?(row_visible), aria: { label: t('.aria_label_years', extension: f.index + 1) } %> - -
-
-
-
- <%= f.number_field :months, class: "govuk-input govuk-input--width-5 period-input #{'govuk-input--error' if f.object.errors[:months].any?}", tabindex: input_visible?(row_visible), aria: { label: t('.aria_label_months', extension: f.index + 1) } %> - -
-
-
- <%= f.hidden_field :extension, value: f.index %> - <%= f.hidden_field :extension_required, value: row_visible %> - <%= button_tag(t('.remove'), id: "extension-#{f.index}-remove-button", class: "govuk-button govuk-button--secondary govuk-!-margin-bottom-0 extension-remove-button #{hidden_class(remove_button_visible)}", tabindex: input_visible?(remove_button_visible), data: { extension: f.index }) unless f.index.zero? %> -
-
-
-
\ No newline at end of file diff --git a/app/views/facilities_management/procurement_details/edit_partials/contract_period/_initial_call_off_period.html.erb b/app/views/facilities_management/procurement_details/edit_partials/contract_period/_initial_call_off_period.html.erb deleted file mode 100644 index 595cbf6f34..0000000000 --- a/app/views/facilities_management/procurement_details/edit_partials/contract_period/_initial_call_off_period.html.erb +++ /dev/null @@ -1,36 +0,0 @@ -
-
-

- <%= t('.heading') %> -

-

- <%= t('.description') %> -

- <%= display_error(f.object, :initial_call_off_period_years) %> - <%= display_error(f.object, :initial_call_off_period_months) %> - <%= display_error(f.object, :base) %> - - <%= f.number_field :initial_call_off_period_years, class: "govuk-input govuk-input--width-4 period-input #{'govuk-input--error' if @procurement.errors[:initial_call_off_period_years].any?}", aria: { label: t('.aria_label_years') } %> - - <%= t('.unit_years') %> - - - - <%= f.number_field :initial_call_off_period_months, class: "govuk-input govuk-input--width-4 period-input #{'govuk-input--error' if @procurement.errors[:initial_call_off_period_months].any?}", aria: { label: t('.aria_label_months') } %> - - <%= t('.unit_months') %> - - -
-
- -
-
- <%= f.label :initial_call_off_start_date, t('.initial_call_off_period_start_date'), class: "govuk-heading-s govuk-!-margin-bottom-0"%> -

- <%= t('.example') %> -

- <%= display_errors(f.object, :initial_call_off_start_date)%> - <%= f.gov_uk_date_field :initial_call_off_start_date, legend_options: { page_heading: false, visually_hidden: true } %> -
-
diff --git a/app/views/facilities_management/procurement_details/edit_partials/contract_period/_mobilisation_period.html.erb b/app/views/facilities_management/procurement_details/edit_partials/contract_period/_mobilisation_period.html.erb deleted file mode 100644 index 88ba8747b4..0000000000 --- a/app/views/facilities_management/procurement_details/edit_partials/contract_period/_mobilisation_period.html.erb +++ /dev/null @@ -1,48 +0,0 @@ -
-
-
- - - <%= t('.heading') %> - - -

<%= t('.description') %>

- -
- <%= govuk_radios_conditional do %> - <%= display_errors f.object, :mobilisation_period_required %> - <%= govuk_radios_conditional_item(f, :mobilisation_period_required, true, 'Yes') %> - <%= govuk_radios_conditional_area(:mobilisation_period_required, true) do %> - <%= govuk_text_input( - f, - :mobilisation_period, - { - label: { - text: t('.label_text'), - classes: 'govuk-label--s' - }, - hint: { - text: t('.hint_text'), - id: 'mobilisation-period-hint' - }, - input: { - classes: 'govuk-input--width-4 period-input', - suffix: { - text: t('.unit') - }, - attributes: { - maxlength: 3, - aria: { - describedby: 'mobilisation-period-hint' - } - } - } - } - )%> - <% end %> - <%= govuk_radios_conditional_item(f, :mobilisation_period_required, false, 'No') %> - <% end %> -
-
-
-
diff --git a/app/views/facilities_management/procurement_details/kaminari/_gap.html.erb b/app/views/facilities_management/procurement_details/kaminari/_gap.html.erb deleted file mode 100644 index d9d6537f4a..0000000000 --- a/app/views/facilities_management/procurement_details/kaminari/_gap.html.erb +++ /dev/null @@ -1,8 +0,0 @@ -<%# Non-link tag that stands for skipped pages... - - available local variables - current_page: a page object for the currently displayed page - total_pages: total number of pages - per_page: number of items to fetch per page - remote: data-remote --%> -<%= govuk_pagination_item({ ellipsis: true }) %> diff --git a/app/views/facilities_management/procurement_details/kaminari/_next_page.html.erb b/app/views/facilities_management/procurement_details/kaminari/_next_page.html.erb deleted file mode 100644 index de560ce0f1..0000000000 --- a/app/views/facilities_management/procurement_details/kaminari/_next_page.html.erb +++ /dev/null @@ -1,9 +0,0 @@ -<%# Link to the "Next" page - - available local variables - url: url to the next page - current_page: a page object for the currently displayed page - total_pages: total number of pages - per_page: number of items to fetch per page - remote: data-remote --%> -<%= govuk_pagination_next_form(f, current_page) %> diff --git a/app/views/facilities_management/procurement_details/kaminari/_page.html.erb b/app/views/facilities_management/procurement_details/kaminari/_page.html.erb deleted file mode 100644 index aacd3235ea..0000000000 --- a/app/views/facilities_management/procurement_details/kaminari/_page.html.erb +++ /dev/null @@ -1,10 +0,0 @@ -<%# Link showing page number - - available local variables - page: a page object for "this" page - url: url to this page - current_page: a page object for the currently displayed page - total_pages: total number of pages - per_page: number of items to fetch per page - remote: data-remote --%> -<%= govuk_pagination_item_form(f, { number: page, href: url, current: page.current? }) %> diff --git a/app/views/facilities_management/procurement_details/kaminari/_paginator.html.erb b/app/views/facilities_management/procurement_details/kaminari/_paginator.html.erb deleted file mode 100644 index 4bceb0b877..0000000000 --- a/app/views/facilities_management/procurement_details/kaminari/_paginator.html.erb +++ /dev/null @@ -1,25 +0,0 @@ -<%# The container tag - - available local variables - current_page: a page object for the currently displayed page - total_pages: total number of pages - per_page: number of items to fetch per page - remote: data-remote - paginator: the paginator that renders the pagination tags inside --%> -<%= paginator.render do -%> - -<% end -%> diff --git a/app/views/facilities_management/procurement_details/kaminari/_prev_page.html.erb b/app/views/facilities_management/procurement_details/kaminari/_prev_page.html.erb deleted file mode 100644 index 92b99d5297..0000000000 --- a/app/views/facilities_management/procurement_details/kaminari/_prev_page.html.erb +++ /dev/null @@ -1,9 +0,0 @@ -<%# Link to the "Previous" page - - available local variables - url: url to the previous page - current_page: a page object for the currently displayed page - total_pages: total number of pages - per_page: number of items to fetch per page - remote: data-remote --%> -<%= govuk_pagination_prev_form(f, current_page) %> diff --git a/app/views/facilities_management/procurement_details/show.html.erb b/app/views/facilities_management/procurement_details/show.html.erb deleted file mode 100644 index 94f54b9fbb..0000000000 --- a/app/views/facilities_management/procurement_details/show.html.erb +++ /dev/null @@ -1,22 +0,0 @@ -<% content_for :page_title, show_page_title %> - -
-
- - <%= page_subtitle %> - -

- <%= show_page_title %> -

-
-
- -<%= render partial: "facilities_management/procurement_details/show_partials/#{section}" %> - -
-
-

- <%= link_to t('.return_to_requirements'), procurement_show_path, class: 'govuk-link--no-visited-state' %> -

-
-
diff --git a/app/views/facilities_management/procurement_details/show_partials/_buildings.html.erb b/app/views/facilities_management/procurement_details/show_partials/_buildings.html.erb deleted file mode 100644 index a063f2444e..0000000000 --- a/app/views/facilities_management/procurement_details/show_partials/_buildings.html.erb +++ /dev/null @@ -1,44 +0,0 @@ -
-
-

- <%= t('.you_have_selected') %> -

-
-

- <%= @procurement.active_procurement_buildings.count %> -

-

- <%= t('.building').pluralize(@procurement.active_procurement_buildings.count) %> -

-
-

- <%= t('.the_buildings_below') %> -

- - <%= link_to t('.change'), edit_path, class: 'govuk-button govuk-button--secondary govuk-!-margin-bottom-2' %> - -
- - - - - - - - - <% @active_procurement_buildings.each do |procurement_building| %> - - - - - - - <% end %> - -
<%= t('.table_caption') %>
<%= building_name(procurement_building) %>
<%= procurement_building.address_no_region %>
- -
- - <%= paginate @active_procurement_buildings, views_prefix: 'shared' %> -
-
diff --git a/app/views/facilities_management/procurement_details/show_partials/_buildings_and_services.html.erb b/app/views/facilities_management/procurement_details/show_partials/_buildings_and_services.html.erb deleted file mode 100644 index 4f6e5cd182..0000000000 --- a/app/views/facilities_management/procurement_details/show_partials/_buildings_and_services.html.erb +++ /dev/null @@ -1,60 +0,0 @@ -
-
- - <%= t('.status') %> - - - <%= govuk_tag(@procurement.buildings_and_services_status) %> - -
-
- -
- -
-
- - <%= t('.summary_html', buildings_link: link_to(t('.buildings_link_text'), show_path('buildings'), class: 'govuk-link govuk-link--no-visited-state')) %> - -
-
- -
- - - - - - - - <% @active_procurement_buildings.each do |procurement_building| %> - - - <% if procurement_building.service_codes.any? %> - - <% else %> - - <% end %> - - <% end %> - -
<%= t('.buildings') %> - <%= t('.services') %> -
- <%= link_to building_name(procurement_building), "/facilities-management/#{params[:framework]}/procurement-buildings/#{procurement_building.id}/buildings-and-services/edit", class: 'govuk-link--no-visited-state ccs-font-weight-semi-bold' %> -
- <%= procurement_building.address_no_region %> -
- <%= govuk_details("#{pluralize(procurement_building.service_names.length, t('.service'))} selected") do %> -
    - <% procurement_building.service_names.each_with_index do |service_name, index| %> -
  • - <%= service_name %> -
  • - <% end %> -
- <% end %> -
- <%= t('.no_service_selected') %> -
-<%= paginate @active_procurement_buildings, views_prefix: 'shared' %> diff --git a/app/views/facilities_management/procurement_details/show_partials/_contract_period.html.erb b/app/views/facilities_management/procurement_details/show_partials/_contract_period.html.erb deleted file mode 100644 index 1d7071c64c..0000000000 --- a/app/views/facilities_management/procurement_details/show_partials/_contract_period.html.erb +++ /dev/null @@ -1,57 +0,0 @@ -
-
- - <%= link_to t('.change'), edit_path, class: 'govuk-button govuk-button--secondary govuk-!-margin-bottom-2' %> - - - - - - - - - - - - - - - - - - <% if @procurement.mobilisation_period_required %> - - - - - - - - - <% else %> - - - - - <% end %> - <% if @procurement.extensions_required %> - <% @procurement.call_off_extensions.sorted.each do |call_off_extension| %> - "> - - - - "> - - - - <% end %> - <% else %> - - - - - <% end %> - -
<%= t('.initial_call_off_period') %> <%= initial_call_off_period %>
<%= initial_call_off_period_description %>
<%= t('.mobilisation_period') %> <%= mobilisation_period %>
<%= mobilisation_period_description %>
<%= t('.mobilisation_period') %> <%= mobilisation_period %>
<%= t('.call_off_extension_period') %> <%= call_off_extension.extension + 1 %> <%= call_off_extensions_period(call_off_extension) %>
<%= extension_period_description(call_off_extension.extension) %>
<%= t('.call_off_extensions') %> <%= t('.none') %>
-
-
diff --git a/app/views/facilities_management/procurement_details/show_partials/_service_requirements.html.erb b/app/views/facilities_management/procurement_details/show_partials/_service_requirements.html.erb deleted file mode 100644 index b2f4480465..0000000000 --- a/app/views/facilities_management/procurement_details/show_partials/_service_requirements.html.erb +++ /dev/null @@ -1,27 +0,0 @@ -
-
-

<%= t('.instructions') %>

- - - - - - - - - - <% @active_procurement_buildings.each do |procurement_building| %> - - - - - <% end %> - -
<%= t('.buildings') %><%= t('.status') %>
- <%= link_to procurement_building.name, facilities_management_rm3830_procurement_building_path(procurement_building.id), class: 'govuk-link--no-visited-state ccs-font-weight-semi-bold' %> -
- <%= address_in_a_line(procurement_building.building) %> -
<%= govuk_tag(procurement_building.complete? ? :completed : :incomplete) %>
- <%= paginate @active_procurement_buildings, views_prefix: 'shared' %> -
-
diff --git a/app/views/facilities_management/procurement_details/show_partials/_services.html.erb b/app/views/facilities_management/procurement_details/show_partials/_services.html.erb deleted file mode 100644 index 9b6b1c308e..0000000000 --- a/app/views/facilities_management/procurement_details/show_partials/_services.html.erb +++ /dev/null @@ -1,29 +0,0 @@ -
-
-

<%= t('.heading') %>

- -
-

<%= @procurement.service_codes.size %>

-

<%= t('.service').pluralize(@procurement.service_codes.size) %>

-
- -

<%= t('.caption') %>

- - <%= link_to t('.change'), edit_path, class: 'govuk-button govuk-button--secondary govuk-!-margin-bottom-6' %> - - - - - - - - - <% porcurement_services.each do |service_name| %> - - - - <% end %> - -
<%= t('.table_caption') %>
<%= service_name %>
-
-
diff --git a/app/views/facilities_management/rm3830/_new_framework_banner.html.erb b/app/views/facilities_management/rm3830/_new_framework_banner.html.erb deleted file mode 100644 index 8ff51b5355..0000000000 --- a/app/views/facilities_management/rm3830/_new_framework_banner.html.erb +++ /dev/null @@ -1,7 +0,0 @@ -<% if can_show_new_framework_banner? %> -
-
- <%= govuk_notification_banner(:neutral, t('.new_fm_framework_html', new_framework_link: link_to(t('.new_agreement'), facilities_management_rm6232_path, class: 'govuk-notification-banner__link'))) %> -
-
-<% end %> diff --git a/app/views/facilities_management/rm3830/buyer_account/index.html.erb b/app/views/facilities_management/rm3830/buyer_account/index.html.erb deleted file mode 100644 index 17e44030b4..0000000000 --- a/app/views/facilities_management/rm3830/buyer_account/index.html.erb +++ /dev/null @@ -1,57 +0,0 @@ -<% content_for :page_title, t('.buyer_account_dashboard') %> - -<%= render partial: 'facilities_management/rm3830/new_framework_banner' %> - -
-
-
-

- <%= @current_login_email %> - <%= t('.buyer_account_title') %> -

-
-
- <%= ccs_account_panel_row do %> - <%= ccs_account_panel(t('.quick_view'), facilities_management_journey_question_path(slug: 'choose-services')) do %> - <%= t('.new_procurement_desc') %> - <% end %> - <% end %> - <%= ccs_account_panel_row do %> - <%= ccs_account_panel(t('.start_procurement_link'), facilities_management_rm3830_what_happens_next_path) do %> - <%= t('.start_procurement_desc') %> - <% end %> - <%= ccs_account_panel(t('.manage_procurements_link'), facilities_management_rm3830_procurements_path) do %> - <%= t('.manage_procurements_desc') %> - <% end %> - <% end %> - -
-
- <%= link_to t(".manage_buildings"), facilities_management_rm3830_buildings_path, class: 'govuk-!-font-size-19 fm-buyer-account-panel__title govuk-link--no-visited-state' %> -

- <%= t('.manage_buildings_desc') %> -

-
-
-
-
- <%= link_to t('.manage_account_link'), edit_facilities_management_buyer_detail_path(params[:framework], @buyer_detail), class: 'govuk-!-font-size-19 fm-buyer-account-panel__title govuk-link--no-visited-state' %> -

- <%= t('.manage_account_desc') %> -

-
-
-
-
- <%= link_to t('.further_information_link_description'), t('.further_information_link'), class: 'govuk-!-font-size-19 fm-buyer-account-panel__title govuk-link--no-visited-state', target: '_blank' %> -

- <%= t('.further_information_help') %> -

-
-
-
- - <%= t('.return_to_page') %> - -
-
diff --git a/app/views/facilities_management/rm3830/home/index.html.erb b/app/views/facilities_management/rm3830/home/index.html.erb deleted file mode 100644 index ba32ecfb48..0000000000 --- a/app/views/facilities_management/rm3830/home/index.html.erb +++ /dev/null @@ -1,83 +0,0 @@ -<% content_for :page_title, t('.heading') %> - -<%= render partial: 'facilities_management/rm3830/new_framework_banner' %> - -
-
-
-

- <%= t('.heading') %> -

-
-
- -
-
-

<%= t('.subheading') %>

-
    - <%= t('.usagelist_html') %> -
- -
- <%= t('.note')%> -
- -

<%= t('.beforeyoustart') %>

-

<%= t('.youneedtoknow') %>

-
    - <%= t('.startlist_html') %> -
- - <%= link_to t('.further_information'), 'https://www.crowncommercial.gov.uk/agreements/rm3830', target: "_blank", class: 'govuk-link--no-visited-state' %> -
- <%= govuk_button_start(t('.startnow'), facilities_management_rm3830_new_user_session_path, class: 'govuk-!-margin-top-6 govuk-!-margin-bottom-8', aria: { label: t('.startnow') }) %> -
- -
-

<%= t('.how_it_works') %>

-

<%= t('.you_can_progress') %>

- - <%= govuk_details(t('.1_title')) do %> -
-

- <%= t('.you_will_tell_us') %> -

-
-
    <%= t('.1_you_will_tell_us_html') %>
-
-

<%= t('.we_will_tell_you') %>

-
-
    <%= t('.1_we_will_tell_you_html') %>
- <% end %> - - <%= govuk_details(t('.2_title')) do %> -
-

<%= t('.you_will_tell_us') %>

-
-
    <%= t('.2_you_will_tell_us_html') %>
-
-

<%= t('.we_will_tell_you') %>

-
-
    <%= t('.2_we_will_tell_you_html') %>
- <% end %> - - <%= govuk_details(t('.3_title')) do %> -
-

<%= t('.3_DA_tile') %>

-
-
    <%= t('.3_DA_list_html') %>
-
-

<%= t('.3_further_comp') %>

-
-
    <%= t('.3_FC_list_html') %>
- <% end %> - -

<%= t('.da_title') %>

-

<%= t('.da_description') %>

- -

<%= t('.international_coverage') %>

-

<%= t('.please_email') %>

- -
-
-
diff --git a/app/views/facilities_management/rm3830/journey/choose_locations.html.erb b/app/views/facilities_management/rm3830/journey/choose_locations.html.erb deleted file mode 100644 index 6cd3ca5f1f..0000000000 --- a/app/views/facilities_management/rm3830/journey/choose_locations.html.erb +++ /dev/null @@ -1,46 +0,0 @@ -<%= render partial: 'shared/error_summary', locals: { errors: @journey.errors } %> - -<% content_for :page_title, t('.question') %> - -
-
-
- <%= form_tag @form_path, method: :get do %> -
- <%= hidden_fields_for_previous_steps_and_responses(@journey) %> - <%= govuk_form_group_with_optional_error(@journey, :region_codes) do %> - <%= govuk_fieldset_with_optional_error(@journey, :region_codes) do %> - - - -

- <%= t('.heading') %> -

-

- <%= t('.question') %> -

- - <%= t('.subtitle') %> - - <%= display_potential_errors(@journey.steps[1], :region_codes, '')%> -
-
- <%= govuk_accordion_with_checkboxes( - 'choose-locations', - accordion_region_items(@journey.current_step.region_codes), - 'region', - 'region_codes' - ) %> -
- <% end %> - <% end %> - <%= submit_tag t('common.submit'), class: "govuk-button", 'aria-label': "#{t('common.submit')}" %> -

<%= link_to t('.return_text'), facilities_management_rm3830_path, class: 'govuk-link' %>

-
-
- <%= render partial: 'facilities_management/shared/baskets/regions_basket' %> -
- <% end %> -
-
-
diff --git a/app/views/facilities_management/rm3830/journey/choose_services.html.erb b/app/views/facilities_management/rm3830/journey/choose_services.html.erb deleted file mode 100644 index 186c972cf0..0000000000 --- a/app/views/facilities_management/rm3830/journey/choose_services.html.erb +++ /dev/null @@ -1,65 +0,0 @@ -<%= render partial: 'shared/error_summary', locals: { errors: @journey.errors } %> - -<% content_for :page_title, t('.heading') %> - -
-
-
- <%= form_tag @form_path, method: :get do %> -
- <%= hidden_fields_for_previous_steps_and_responses(@journey) %> - <%= govuk_form_group_with_optional_error(@journey, :service_codes) do %> - <%= govuk_fieldset_with_optional_error(@journey, :service_codes) do %> -
-
- -

- <%= t('.heading') %> -

-
- -

- <%= t('.question') %> -

-
-

- <%= t('.caption') %> -

-

- <%= service_specification_document('rm3830') %> -

-

- <%= t('.caption2') %> -

-
-
- <%= form_tag 'choose-services/answer', method: :get do %> - <%= display_potential_errors(@journey.steps[0], :service_codes, '')%> -
- <%= govuk_accordion_with_checkboxes( - 'choose-services', - rm3830_accordion_service_items(@journey.current_step.service_codes), - 'service', - 'service_codes' - ) do |section_id, item| %> - <%= link_to t('.learn_more'), facilities_management_rm3830_service_specification_path(item[:code], section_id), target: '_blank' %> - <%= govuk_tag_with_text(:grey, t('common.da_eligible')) if da_eligible?(item[:value]) %> - <% end %> -
- <% end %> -
- <% end %> - <% end %> - <% params[:region_codes]&.split(" ") do |region_code| %> - <%= hidden_field_tag "region_codes[]", region_code %> - <% end %> - <%= submit_tag t('common.submit'), class: "govuk-button govuk-!-margin-bottom-4", 'aria-label': "#{t('common.submit')}" %> -

<%= link_to t('.return_text'), facilities_management_rm3830_path, class: 'govuk-link' %>

-
-
- <%= render partial: 'facilities_management/shared/baskets/services_basket' %> -
- <% end %> -
-
-
diff --git a/app/views/facilities_management/rm3830/procurement_buildings/_errors_on_show.html.erb b/app/views/facilities_management/rm3830/procurement_buildings/_errors_on_show.html.erb deleted file mode 100644 index 99ead7a73d..0000000000 --- a/app/views/facilities_management/rm3830/procurement_buildings/_errors_on_show.html.erb +++ /dev/null @@ -1,20 +0,0 @@ -<% if internal_area_incomplete? || external_area_incomplete? %> - -<% end %> diff --git a/app/views/facilities_management/rm3830/procurement_buildings/show.html.erb b/app/views/facilities_management/rm3830/procurement_buildings/show.html.erb deleted file mode 100644 index 753e182caa..0000000000 --- a/app/views/facilities_management/rm3830/procurement_buildings/show.html.erb +++ /dev/null @@ -1,149 +0,0 @@ -<%= render 'facilities_management/rm3830/procurement_buildings/errors_on_show' %> -<%= govuk_page_header(FacilitiesManagement::PageDetail::Heading.new(@procurement_building.name, @procurement.contract_name, nil, nil, nil)) %> -<%= content_for :page_title, t(".heading") %> -
-
-

- <%= t('.heading') %> -

- - <%= t('.status') %> <%= govuk_tag_with_text(*procurement_building_status) %> - -
-
- -
-
- <%= t('.help_line_1') %>
- <%= t('.help_line_2') %> -
-
- -
-
- <%= t('.list_title') %> -
    -
  1. <%= t('.list_item_1') %>
  2. -
  3. <%= t('.list_item_2') %>
  4. -
-
-
- -
-
- <%= t('.volume_example') %> -
-
- -
- -
-
-

- <%= t('.service_volumes') %> -

-
-
-
- - - - - - - - - - - <% services_with_contexts(@volume_procurement_building_services) do |service, context| %> - <% service_has_error = service_has_errors?(context) %> - <% cell_classes = cell_class(context, service.uval, service_has_error)%> - - - - <% if service.send(context).blank? %> - - - <% else %> - <% case context %> - <% when :lift_data, :service_hours %> - - <% else %> - - <% end %> - - <% end %> - - <% if context == :service_hours && service.uval.present? %> - - - - - <% end %> - <% if service_has_error %> - - - - <% end %> - <% end %> - -
<%= t('.service_name') %><%= t('.unit_of_measure_title') %><%= t('.volume_required') %>
<%= service.name %><%= t(".unit_of_measure.#{context}") %><%= link_to t('.answer_question'), edit_facilities_management_rm3830_procurement_buildings_service_path(service, service_question: get_service_question(context)) %><%= service.uval %><%= service.send(context) %><%= link_to t('.change'), edit_facilities_management_rm3830_procurement_buildings_service_path(service, service_question: get_service_question(context)) %>
-
- - - <%= t('.detail_of_requirement') %> - - -
- <%= simple_format service.detail_of_requirement, class: 'govuk-!-font-size-16'%> -
-
-
- - <%= t(".#{context}_error") %> - -
- -
-
-

- <%= t('.service_standards') %> -

-
-
-
- - <% if @standards_procurement_building_services.any? %> - - - - - - - - - <% end %> - - <% if @standards_procurement_building_services.any? %> - <% @standards_procurement_building_services.each do |service| %> - - - - <% if service.service_standard.nil?%> - - - <% else %> - - - <% end %> - - <% end %> - <% else %> - - - - <% end %> - -
<%= t('.service_name') %><%= t('.description') %><%= t('.standard') %>
<%= service.name %><%= t('.the_standard_required') %><%= link_to t('.answer_question'), edit_facilities_management_rm3830_procurement_buildings_service_path(service, service_question: 'service_standards') %> <%= "Standard #{service.service_standard}" %> <%= link_to t('.change'), edit_facilities_management_rm3830_procurement_buildings_service_path(service, service_question: 'service_standards') %>
<%= t('.no_data') %>
- -<%= link_to t('.return_to_requirements'), facilities_management_rm3830_procurement_procurement_detail_path(@procurement, 'service-requirements'), class: 'govuk-link govuk-link--no-visited-state govuk-!-font-size-19'%> diff --git a/app/views/facilities_management/rm3830/procurement_buildings_services/_area.html.erb b/app/views/facilities_management/rm3830/procurement_buildings_services/_area.html.erb deleted file mode 100644 index ec8beada6b..0000000000 --- a/app/views/facilities_management/rm3830/procurement_buildings_services/_area.html.erb +++ /dev/null @@ -1 +0,0 @@ -<%= render partial: 'facilities_management/buildings/edit_partials/building_area', locals: { f: f } %> \ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurement_buildings_services/_lift.html.erb b/app/views/facilities_management/rm3830/procurement_buildings_services/_lift.html.erb deleted file mode 100644 index 1921f70cd5..0000000000 --- a/app/views/facilities_management/rm3830/procurement_buildings_services/_lift.html.erb +++ /dev/null @@ -1,12 +0,0 @@ -
- <%= ff.label :number_of_floors, "Lift #{ff.index + 1}", class: 'lift-number', id: "lifts[#{ff.index}].number_of_floors-error" %> - <%= display_error ff.object, :number_of_floors %> - - <%= t('.no_of_floors') %> - - <%= ff.number_field :number_of_floors, min: 0, max: 100, class: "number-of-floors govuk-input govuk-input--width-4 #{'govuk-input--error' if ff.object.errors[:number_of_floors].any?}" %> - <% unless ff.index == 0%> - <%= link_to 'Remove', '#', class: 'remove-lift-record govuk-button govuk-button--secondary govuk-!-margin-left-4 govuk-!-margin-bottom-0', 'aria-label': "Remove"%> - <%= ff.text_field :_destroy, as: :hidden, class: 'lift-destroy-box govuk-visually-hidden', 'tabindex': -1, "aria-label": "destroy" %> - <% end %> -
\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurement_buildings_services/_lifts.html.erb b/app/views/facilities_management/rm3830/procurement_buildings_services/_lifts.html.erb deleted file mode 100644 index 78ab9f27a4..0000000000 --- a/app/views/facilities_management/rm3830/procurement_buildings_services/_lifts.html.erb +++ /dev/null @@ -1,11 +0,0 @@ -
- <%= hint_details(t('.floors'), t('.description')) %> -
-
-
- <%= f.fields_for :lifts, sort_by_lifts_created_at do |builder| %> - <%= render partial: "lift", locals: {ff: builder} %> - <% end %> -
- <%= link_to_add_row(t('.button_text'), FacilitiesManagement::RM3830::ProcurementBuildingService::MAX_NUMBER_OF_LIFTS - f.object.lifts.length, f, :lifts, 'facilities_management/rm3830/procurement_buildings_services', class: 'add-lift-button govuk-button govuk-button--secondary govuk-!-margin-bottom-2', 'aria-label': "Add another lift" ) %> -
diff --git a/app/views/facilities_management/rm3830/procurement_buildings_services/_service_hours.html.erb b/app/views/facilities_management/rm3830/procurement_buildings_services/_service_hours.html.erb deleted file mode 100644 index c9051cccfb..0000000000 --- a/app/views/facilities_management/rm3830/procurement_buildings_services/_service_hours.html.erb +++ /dev/null @@ -1,55 +0,0 @@ -<%= form_group_with_error(f.object, :service_hours) do |displayed_error| %> -

- <%= t('.hour_heading') %> -

-

- <%= t('.hour_hint') %> -

-

- <%= t('.volume_example') %> -

-
- <%= displayed_error %> - <%= f.label :service_hours, t('.hour_label'), class: 'govuk-label' %> - <%= f.number_field :service_hours, class: "govuk-input govuk-input--width-5 #{'govuk-input--error' if f.object.errors.key?(:service_hours)}" %> -
-<% end %> - -<%= form_group_with_error(f.object, :detail_of_requirement) do |displayed_error| %> -

- <%= t('.detail_heading') %> -

-
- <%= t('.detail_hint') %> -
-
- <%= govuk_details(t('.detail_example')) do%> -
- - <%= t('.detail_example_1') %> -
- - <%= t('.detail_example_2') %> -
- - <%= t('.detail_example_3') %> -
- - <%= t('.detail_example_4') %> -
-
- - <%= t('.detail_example_5') %> -
- - <%= t('.detail_example_6') %> - -
- <% end %> -
-
- <%= displayed_error %> - <%= f.label :detail_of_requirement, t('.detail_label'), class: 'govuk-label' %> - <%= govuk_character_count(f, :detail_of_requirement, 500, 5) %> -
-<% end %> \ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurement_buildings_services/_service_standards.html.erb b/app/views/facilities_management/rm3830/procurement_buildings_services/_service_standards.html.erb deleted file mode 100644 index a81794673e..0000000000 --- a/app/views/facilities_management/rm3830/procurement_buildings_services/_service_standards.html.erb +++ /dev/null @@ -1,38 +0,0 @@ -
- <%= hint_details(t('.heading'), t('.hint_text')) %> -
- <%= service_specification_document('rm3830') %> -
- <% standard_type = service_standard_type %> - <% FacilitiesManagement::RM3830::ProcurementBuildingService::SERVICE_STANDARDS.each do |standard| %> -
- <%= govuk_details(t(".detail_title.#{standard_type}.standard_#{standard}")) do %> - <%= t(".detail_text.#{standard_type}.standard_#{standard}") %> - <% end %> -
- <% end %> - <%= form_group_with_error(f.object, :service_standard) do |displayed_error| %> -
- <%= displayed_error %> -
- <% FacilitiesManagement::RM3830::ProcurementBuildingService::SERVICE_STANDARDS.each do |standard| %> -
- <%= f.radio_button :service_standard, standard, class: 'govuk-radios__input' %> - <%= f.label :service_standard, value: standard, class: 'govuk-label govuk-radios__label' do %> - Standard <%= standard %> - <% if da_eligible?(f.object.code) && standard == 'A' %> -
- <%= govuk_tag_with_text(:grey, t('.direct_award_eligible')) %> - <% end %> - <% end %> -
- <% end %> -
-
- <% end %> - <% if da_eligible?(f.object.code) %> -
- <%= t('.warning') %> -
- <% end %> -
\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurement_buildings_services/_volumes.html.erb b/app/views/facilities_management/rm3830/procurement_buildings_services/_volumes.html.erb deleted file mode 100644 index 8ca70cd874..0000000000 --- a/app/views/facilities_management/rm3830/procurement_buildings_services/_volumes.html.erb +++ /dev/null @@ -1,14 +0,0 @@ -<% attribute = volume_question(f.object) %> -<%= form_group_with_error(f.object, attribute) do |displayed_error| %> - <%= f.label attribute, t(".question.#{attribute}"), class: 'govuk-heading-m' %> - <% if per_annum_volume?(attribute) %> -
- <%= t(".volume_example.#{attribute}")%> -
- <% end %> - <%= displayed_error %> -
- <%= f.text_field attribute, class: "govuk-input ccs-number-field ccs-integer-field govuk-input--width-10 #{'govuk-input--error' if f.object.errors[attribute].any?}", min: 1, maxlength: 11 %> - -
-<% end %> diff --git a/app/views/facilities_management/rm3830/procurement_buildings_services/edit.html.erb b/app/views/facilities_management/rm3830/procurement_buildings_services/edit.html.erb deleted file mode 100644 index 3d56a7ccaf..0000000000 --- a/app/views/facilities_management/rm3830/procurement_buildings_services/edit.html.erb +++ /dev/null @@ -1,21 +0,0 @@ -<%= content_for :page_title, page_heading.html_safe %> -<%= form_for form_model, url: facilities_management_rm3830_procurement_buildings_service_path(@building_service.id), method: :put, html: {specialvalidation: true, novalidate: true, multipart: true} do |f| %> -
-
- <%= link_to t('.return_to_service_requirements'), facilities_management_rm3830_procurement_building_path(@procurement_building.id), class: 'govuk-back-link govuk-!-margin-top-0 govuk-!-margin-bottom-6' %> - <%= render partial: 'shared/error_summary', locals: { errors: f.object.errors } %> -
-
- <%= govuk_page_header(FacilitiesManagement::PageDetail::Heading.new(@procurement_building.name, @procurement.contract_name, nil, nil, nil)) %> -

- <%= page_heading %> -

- <%= hidden_field :facilities_management_rm3830_procurement_building_service, :service_question, value: @partial_prefix %> - <%= render partial: @partial_prefix, locals: { f: f } %> -
- <%= f.submit t('.save_and_return'), class: 'govuk-button govuk-button--primary govuk-!-margin-left-3 govuk-!-margin-bottom-4', 'aria-label': t('.save_and_return') %> -
- <%= link_to t('.return_to_service_requirements'), facilities_management_rm3830_procurement_building_path(@procurement_building), class: 'govuk-link--no-visited-state' %> -
-
-<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/_choose_contract_value.html.erb b/app/views/facilities_management/rm3830/procurements/_choose_contract_value.html.erb deleted file mode 100644 index 38186a074c..0000000000 --- a/app/views/facilities_management/rm3830/procurements/_choose_contract_value.html.erb +++ /dev/null @@ -1,113 +0,0 @@ -<%= govuk_page_content(@page_description, @procurement, false, true) do |pd| %> - <%= form_for @procurement, url: facilities_management_rm3830_procurement_path(@procurement.id, step: :continue_to_change_contract_value), method: :patch, html: { specialvalidation: true, novalidate: true, multipart: true } do |f| %> - <%= f.hidden_field :lot_number_selected_by_customer, value: true %> - <% if @procurement.all_services_unpriced_and_no_buyer_input? %> - <%= govuk_grouped_field(f, nil, :lot_number) do |ff, attr| %> - - <%= t('.heading') %> - -

<%= t('.description_html') %>

- <%= govuk_start_individual_field(ff, attr.first, {}, false, false) do |a| %> -
-
- <%= f.radio_button :lot_number, '1a', class: 'govuk-radios__input' %> - <%= f.label :lot_number, value: '1a', class: 'govuk-label govuk-radios__label' do %> - <%= t('.lot_number_1a_description') %> - <% end %> -
-
- <%= f.radio_button :lot_number, '1b', class: 'govuk-radios__input' %> - <%= f.label :lot_number, value: '1b', class: 'govuk-label govuk-radios__label' do %> - <%= t('.lot_number_1b_description') %> - <% end %> -
-
- <%= f.radio_button :lot_number, '1c', class: 'govuk-radios__input' %> - <%= f.label :lot_number, value: '1c', class: 'govuk-label govuk-radios__label' do %> - <%= t('.lot_number_1c_description') %> - <% end %> -
-
- <% end %> - <% end %> -
- <%= warning_text(t('.not_able_to_select_range')) %> -
-

- <%= t('.change_requirements_description') %> -

- <% else %> -
- <%= t('.contract_value_heading')%> -
-
-
- <%= govuk_details("#{unpriced_services.size} #{t('.service').pluralize(unpriced_services.size)} not included") do %> -
    - <% unpriced_services.each do |service| %> -
  • <%= service %>
  • - <% end %> -
- <% end %> -
-
-
-
- <%= format_money @procurement.assessed_value, 0 %> -
-
- <%= t('.partialy_estimated_contract_value') %> -
-
-
- <% if @procurement.assessed_value <= 5e7 %> -
-
- -

- <%= t('.can_you_estimate_cost') %> -

-
-
- <%= t('.help_place_sublot_html') %> -
- <%= display_errors(@procurement, :lot_number)%> -
- <% if @procurement.assessed_value < 7e6 %> -
- <%= f.radio_button :lot_number, '1a', class: 'govuk-radios__input' %> - <%= f.label :lot_number, value: '1a', class: 'govuk-label govuk-radios__label' do %> - <%= t('.sub_lot_1a_hint')%> - <% end %> -
- <% end %> -
- <%= f.radio_button :lot_number, '1b', class: 'govuk-radios__input' %> - <%= f.label :lot_number, value: '1b', class: 'govuk-label govuk-radios__label' do %> - <%= t('.sub_lot_1b_hint')%> - <% end %> -
-
- <%= f.radio_button :lot_number, '1c', class: 'govuk-radios__input' %> - <%= f.label :lot_number, value: '1c', class: 'govuk-label govuk-radios__label' do %> - <%= t('.sub_lot_1c_hint')%> - <% end %> -
-
-
-
- <% else %> - <%= f.hidden_field(:lot_number, value: '1c') %> - <% end %> - <% unless @procurement.lot_number == '1c' %> -
- <%= warning_text(t('.not_able_to_select_range')) %> -
- <% end %> -

- <%= t('.change_requirements_description') %> -

- <% end %> - <%= govuk_continuation_buttons(pd, f) %> - <% end %> -<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/_continue_button_footer.html.erb b/app/views/facilities_management/rm3830/procurements/_continue_button_footer.html.erb deleted file mode 100644 index 57ebcad9e2..0000000000 --- a/app/views/facilities_management/rm3830/procurements/_continue_button_footer.html.erb +++ /dev/null @@ -1,5 +0,0 @@ -
- <%= f.submit t('.continue_to_results'), class: 'govuk-button govuk-!-margin-bottom-3', name: 'continue_to_results'%> -
- <%= link_to t('.return_to_dashboard'), facilities_management_rm3830_procurements_path, class: 'govuk-link' %> -
diff --git a/app/views/facilities_management/rm3830/procurements/_contract_name.html.erb b/app/views/facilities_management/rm3830/procurements/_contract_name.html.erb deleted file mode 100644 index bc38a8f167..0000000000 --- a/app/views/facilities_management/rm3830/procurements/_contract_name.html.erb +++ /dev/null @@ -1,21 +0,0 @@ -<% content_for :page_title, 'Contract name' %> -<%= link_to t('.return_to_what_happens_next'), facilities_management_rm3830_what_happens_next_path, class: 'govuk-back-link ccs-no-print', 'aria-label': t('.return_to_what_happens_next') %> -<%= render partial: 'shared/error_summary', locals: { errors: @procurement.errors } %> -<%= form_for @procurement, url: facilities_management_rm3830_procurements_path, method: :post, html: { specialvalidation:true, novalidate:true, multipart: true } do |f| %> -<%= govuk_page_header(FacilitiesManagement::PageDetail::Heading.new(t('.heading'), nil, nil, nil, nil)) %> -
- <%= label_details(f, :contract_name, t('.contract_name_question'), t('.contract_name_info')) %> -
- <%= display_errors(@procurement, :contract_name)%> - <%= f.text_field :contract_name, class: 'govuk-input govuk-input--width-30 js-character-count govuk-!-margin-top-4', required: true, maxlength: 100, "aria-describedby": "facilities_management_rm3830_procurement_contract_name"%> -
-
-
-
- <%= f.submit t('.save_and_continue'), name: 'start_detailed_search', class: 'govuk-button govuk-!-margin-right-4', aria: { label: t('.save_and_continue') } %> -
- <%= link_to t('.return_to_your_account'), facilities_management_rm3830_path, class: 'govuk-link--no-visited-state govuk-!-font-size-19', 'aria-label': t('.return_to_your_account') %> -
-
-<% end %> \ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/_direct_award.html.erb b/app/views/facilities_management/rm3830/procurements/_direct_award.html.erb deleted file mode 100644 index 1db9f636a9..0000000000 --- a/app/views/facilities_management/rm3830/procurements/_direct_award.html.erb +++ /dev/null @@ -1 +0,0 @@ -<%= render partial: "facilities_management/rm3830/procurements/da_buyer/#{@view_da}" %> diff --git a/app/views/facilities_management/rm3830/procurements/_filter_data_section.html.erb b/app/views/facilities_management/rm3830/procurements/_filter_data_section.html.erb deleted file mode 100644 index 1724848f8c..0000000000 --- a/app/views/facilities_management/rm3830/procurements/_filter_data_section.html.erb +++ /dev/null @@ -1,33 +0,0 @@ -
-
-
- - <%= section_title %> - -
-
- <%= link_to change_title, change_link, class: 'govuk-link govuk-!-font-size-19' unless @procurement.persisted? %> - <%= link_to change_title, edit_facilities_management_rm3830_procurement_path(@procurement.id, step: section_name + 's'), class: 'govuk-link govuk-!-font-size-19' if @procurement.persisted? %> -
- -
-
- - - <%= "#{collection.length} selected" %> - - -
-
    - <% collection.each do |item| %> -
  • - <%= item.name.gsub(160.chr("UTF-8"), " ") %> - <%= hidden_field_tag("facilities_management_rm3830_procurement[#{section_name}_codes][]", item.code, {id: item.code}) %> -
  • - <% end %> -
-
-
-
-
-
diff --git a/app/views/facilities_management/rm3830/procurements/_filter_details.html.erb b/app/views/facilities_management/rm3830/procurements/_filter_details.html.erb deleted file mode 100644 index 19e859d7bf..0000000000 --- a/app/views/facilities_management/rm3830/procurements/_filter_details.html.erb +++ /dev/null @@ -1,32 +0,0 @@ -
-
- <%= link_to t('.hide_requirements'), '', class: 'govuk-button govuk-button--secondary', id: 'results-filter-button', style: 'width: 100%', role: 'button', 'alt-text': t('.show_requirements') %> -
-
-
-
-
-
-
- <%=t('.requirements') %> -
- - <% selected_service = @procurement.errors.any? ? @procurement.service_codes : params[:service_codes] %> - <% selected_region = @procurement.errors.any? ? @procurement.region_codes : params[:region_codes] %> - - <%= render partial: 'filter_data_section', locals: { section_name: 'service', section_title: t('.services'), change_title: t('.change_add_service'), change_link: journey_step_url_former(journey_step: 'services', framework: 'RM3830', region_codes: selected_region, service_codes: selected_service), collection: services, superset: @procurement.service_codes} %> - <%= render partial: 'filter_data_section', locals: { section_name: 'region', section_title: t('.regions'), change_title: t('.change_add_region'), change_link: journey_step_url_former(journey_step: 'locations', framework: 'RM3830', region_codes: selected_region, service_codes: selected_service), collection: regions, superset: @procurement.region_codes} %> -
-
-
-
- - <%= t('.total_contract_value') %> - -
- <%= render partial: 'lots_list', locals: {lot: t('.lot_1a'), lot_data: suppliers_lot1a, lot_title: t('.lot_title_1a_html') } %> - <%= render partial: 'lots_list', locals: {lot: t('.lot_1b'), lot_data: suppliers_lot1b, lot_title: t('.lot_title_1b_html') } %> - <%= render partial: 'lots_list', locals: {lot: t('.lot_1c'), lot_data: suppliers_lot1c, lot_title: t('.lot_title_1c_html') } %> -
-
-
\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/_further_competition.html.erb b/app/views/facilities_management/rm3830/procurements/_further_competition.html.erb deleted file mode 100644 index 806522e707..0000000000 --- a/app/views/facilities_management/rm3830/procurements/_further_competition.html.erb +++ /dev/null @@ -1,13 +0,0 @@ -<%= govuk_page_content(@page_description, @procurement, false, true, false) do |pd| %> - <%= render :partial => 'facilities_management/rm3830/procurements/further_competition/further_competition_partial', locals: { post: pd, fc_chosen: params[:fc_chosen] == 'true' } %> - <%= form_for @procurement, url: facilities_management_rm3830_procurement_path(@procurement.id), method: :patch, html: { specialvalidation: false, novalidate: true, multipart: true } do |f| %> - <% if params[:fc_chosen] == 'true' %> - <%= hidden_field_tag :continue_from_results, 'further_competition' %> - <%= f.hidden_field :route_to_market, value: 'further_competition' %> - <%= govuk_continuation_buttons(pd, f, true, true, true, false, false, true) %> - <% else %> - <%= link_to(pd.navigation_details.primary_text, new_facilities_management_rm3830_procurement_copy_procurement_path(procurement_id: @procurement.id), role: 'button', class: 'govuk-button') %>
- <%= link_to(t('.return_to_dashboard'), facilities_management_rm3830_procurements_path, role: 'button', class: 'govuk-link govuk-!-font-size-19') %> - <% end %> - <% end %> -<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/_lots_list.html.erb b/app/views/facilities_management/rm3830/procurements/_lots_list.html.erb deleted file mode 100644 index c61a75aac2..0000000000 --- a/app/views/facilities_management/rm3830/procurements/_lots_list.html.erb +++ /dev/null @@ -1,19 +0,0 @@ -
- <%= lot_title.html_safe %> - - - - - - - - <% lot_data.each do |supplier| %> - - - - <% end %> - -
<%= lot %>
- <%= supplier['name'] %> -
-
diff --git a/app/views/facilities_management/rm3830/procurements/_procurement_building_services.html.erb b/app/views/facilities_management/rm3830/procurements/_procurement_building_services.html.erb deleted file mode 100644 index 6bde4597ea..0000000000 --- a/app/views/facilities_management/rm3830/procurements/_procurement_building_services.html.erb +++ /dev/null @@ -1,18 +0,0 @@ -
- - - <%= procurement_building.name %> - - -
- <% if procurement_building.service_codes.any? %> -
    - <% procurement_building.service_codes.each do |service_code| %> -
  • <%= "#{@services.select { |s| s['code'] == service_code }.first&.name.humanize}" %>
  • - <% end %> -
- <% else %> - No services are selected - <% end %> -
-
diff --git a/app/views/facilities_management/rm3830/procurements/_quick_search.html.erb b/app/views/facilities_management/rm3830/procurements/_quick_search.html.erb deleted file mode 100644 index 151297b22c..0000000000 --- a/app/views/facilities_management/rm3830/procurements/_quick_search.html.erb +++ /dev/null @@ -1,31 +0,0 @@ -<%= link_to @page_definitions[:quick_search][:back_text], @page_definitions[:quick_search][:back_url], class: 'govuk-back-link govuk-!-margin-top-0 govuk-!-margin-bottom-6' %> -<%= form_for @procurement, url: facilities_management_rm3830_procurement_path(@procurement), method: :patch, html: { specialvalidation:true, novalidate:true, multipart: true } do |f| %> -
-
-
- <%= @procurement.contract_name %> -

<%= t('.quick_view_results') %>

- <% if (supplier_count).zero? %> -

<%= t('.no_suppliers') %>

- <% else %> -

<%= t('.search_result_body_html') %>

- <% end %> -
-
- <%= render partial: 'filter_details', locals: { form: f } %> - <%= link_to t('.download_results'), facilities_management_rm3830_procurement_quick_view_results_spreadsheet_path(@procurement), class: 'govuk-button govuk-button--secondary', 'aria-label': t('.download_results'), download: '' %> -
-

- <%= t('.save_text') %> -

-
-
-
- <%= link_to t('.save_and_continue'), facilities_management_rm3830_procurement_path(@procurement, 'what_happens_next': true ), class: 'govuk-button govuk-!-margin-right-4', 'aria-label': t('.save_and_continue') %> - <%= link_to t('.save_for_later'), facilities_management_rm3830_procurements_path, class: 'govuk-button govuk-button--secondary', 'aria-label': t('.save_for_later') %> -
- <%= link_to t('.cancel_text'), facilities_management_rm3830_path, class: 'govuk-link--no-visited-state govuk-!-font-size-19', 'aria-label': t('.cancel_text') %> -
-
-
-<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/_quick_search_form.html.erb b/app/views/facilities_management/rm3830/procurements/_quick_search_form.html.erb deleted file mode 100644 index 20a3ab602b..0000000000 --- a/app/views/facilities_management/rm3830/procurements/_quick_search_form.html.erb +++ /dev/null @@ -1,19 +0,0 @@ -<%= render partial: 'filter_details', locals: { form: f } %> - -
-
-
-
- <%= govuk_form_group_with_optional_error @procurement, :contract_name do %> - <%= display_errors(f.object, :contract_name)%> -

- <%= t('.save_text') %> -

-

<%= t('.save_headline') %>

- <%= f.label :contract_name, t('.new_name_label'), class: 'govuk-label' %> - <%= f.text_field :contract_name, maxlength: 110, required: true, class: 'govuk-input govuk-input--width-20 js-character-count', "aria-describedby": "facilities_management_rm3830_procurement_contract_name" %> - <% end %> -
-
-
-
diff --git a/app/views/facilities_management/rm3830/procurements/_requirements.html.erb b/app/views/facilities_management/rm3830/procurements/_requirements.html.erb deleted file mode 100644 index 12ec54d884..0000000000 --- a/app/views/facilities_management/rm3830/procurements/_requirements.html.erb +++ /dev/null @@ -1,16 +0,0 @@ -
- <%= render partial: 'facilities_management/shared/entering_requirements/errors_on_requirements', locals: { errors: @procurement.errors } %> -
- <%= @procurement.contract_name %> -

<%= t('.title') %>

- <% content_for :page_title, t('.title') %> -

- <%= t('.description') %> -

- <%= form_for @procurement, url: facilities_management_rm3830_procurement_path(@procurement.id), method: :patch, html: { specialvalidation: true, novalidate: true, multipart: true } do |f| %> - <%= render 'facilities_management/rm3830/procurements/requirements/contract_details' %> - <%= render 'facilities_management/rm3830/procurements/requirements/services_and_buildings' %> - <%= render partial: 'continue_button_footer', locals: { f: f } %> - <% end %> -
-
diff --git a/app/views/facilities_management/rm3830/procurements/_results.html.erb b/app/views/facilities_management/rm3830/procurements/_results.html.erb deleted file mode 100644 index b8103bd9ea..0000000000 --- a/app/views/facilities_management/rm3830/procurements/_results.html.erb +++ /dev/null @@ -1,140 +0,0 @@ -<% if @procurement.procurement_suppliers.empty? %> -

- <%= t('.no_suitable_suppliers') %> -

- <%= form_for @procurement, url: facilities_management_rm3830_procurement_path(@procurement.id), method: :patch, html: { specialvalidation: false, novalidate: true, multipart: true } do |f| %> -
- <%= f.submit @page_description.navigation_details.secondary_text, class: 'govuk-button govuk-button--secondary', name: @page_description.navigation_details.secondary_name, aria: { label: @page_description.navigation_details.secondary_text }, disabled: false %> -
- <%= link_to(@page_description.navigation_details.return_text, facilities_management_rm3830_procurements_path, class: 'govuk-link govuk-!-font-size-19', role: 'button', aria_label: 'Return to procurement dashboard') %> -
- <% end %> -<% else %> - <%= govuk_page_content(@page_description, @procurement, false, true) do |pd| %> - <% unless @procurement.lot_number_selected_by_customer %> -

<%= t('.sub-text') %>

-

<%= t(".sub-lot-#{@procurement.lot_number}") %>

-

- <%= t('.estimated_cost') %> -
- - <% if @procurement.eligible_for_da %> - <%= number_to_currency(lowest_supplier_price, precision: 2) %> - <% else %> - <%= number_to_currency(@procurement.assessed_value, precision: 2) %> - <% end %> - -

-
- - - <%= t('.estimated_cost_how') %> - - -
- <% if @procurement.any_services_missing_framework_price? && !@procurement.any_services_missing_benchmark_price? %> - <%= t('.estimated_cost_calc_logic_4_html') %> - <% else %> - <%= t('.estimated_cost_calc_html') %> - <% end %> -
-
- <% else %> - <% if @procurement.some_services_unpriced_and_no_buyer_input? && @procurement.assessed_value > 5e7%> -

- <%= t('.sub-text') %> -

- <% else %> -

- <%= t('.sub-text-FC-unpriced') %> -

- <% end %> -

- <%= t(".sub-lot-#{@procurement.lot_number}") %> -

-
- <%= t(".hint-text-unpriced-sub-lot-#{@procurement.lot_number}") %> -
- <% end %> -

<%= t('.suppliers_shortlisted_html', count: number_of_suppliers) %>

-

<%= t('.who_are') %>

-
    - <% suppliers.each do |s| %> -
  • - <%= s %> - <%= '
    '.html_safe unless s.equal?(suppliers.last) %> -
  • - <% end %> -
-
-

<%= t('.building_services_summary') %>

-
- <%= govuk_details "#{'Building'.pluralize(active_procurement_buildings.length)} (#{active_procurement_buildings.length})" do %> -
    - <% active_procurement_buildings.each do |b| %> -
  • <%= b.building_name %>
  • - <% end %> -
- <% end %> -
-
- <%= govuk_details "#{'Service'.pluralize(procurement_services.length)} (#{procurement_services.length})" do %> -
    - <% procurement_services.each do |s| %> -
  • <%= s %>
  • - <% end %> -
- <% end %> -
-
- <%= form_for @procurement, url: facilities_management_rm3830_procurement_path(@procurement.id), method: :patch, html: { specialvalidation: false, novalidate: true, multipart: true } do |f| %> - <%= govuk_grouped_field(f, t('.available_routes_to_market'), :route_to_market) do |ff, attr| %> - <%= f.hidden_field :route_to_market %> - <%= govuk_start_individual_field(ff, :route_to_market, {}, false, false) do |a| %> -
-
- <%= f.radio_button :route_to_market, 'da_draft', class: 'govuk-radios__input' %> - <%= f.label :route_to_market, t('.direct_award_label_html'), value: 'da_draft', class: 'govuk-label govuk-radios__label' %> -
- <%= govuk_details t('.what_is_da') do %> -
    - <%= t('.da_list_html') %> -
- <% end %> -
-
-
- <%= f.radio_button :route_to_market, 'further_competition_chosen', class: 'govuk-radios__input' %> - <%= f.label :route_to_market, t('.further_competition_html'), value: 'further_competition_chosen' , class: 'govuk-label govuk-radios__label' %> -
- <%= govuk_details t('.what_is_fc') do %> -
    - <%= t('.fc_list_html') %> -
- <% end %> -
-
-
- <% end %> - <% end if @procurement.eligible_for_da %> - <%= contained_content(t('.available_routes_to_market')) do %> -
Further competition
- <%= f.hidden_field :route_to_market, value: 'further_competition_chosen' %> - <%= govuk_details t('.what_is_fc') do %> -
    - <%= t('.fc_list_html') %> -
- <% end %> - <% end unless @procurement.eligible_for_da %> -

- <% if @procurement.lot_number_selected_by_customer? %> - <%= t('.any_changes_chosen') %> - <% else %> - <%= t('.any_changes') %> - <% end %> -

- <%= govuk_continuation_buttons(pd, f) %> - <%= link_to t('.print_page'), 'javascript:window.print()', class: 'govuk-clearfix govuk-!-margin-top-6 govuk-link govuk-link--no-visited-state ccs-print-icon' %> - <% end %> - <% end %> -<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/_service_codes_checkboxes.html.erb b/app/views/facilities_management/rm3830/procurements/_service_codes_checkboxes.html.erb deleted file mode 100644 index c439f6462b..0000000000 --- a/app/views/facilities_management/rm3830/procurements/_service_codes_checkboxes.html.erb +++ /dev/null @@ -1,26 +0,0 @@ -
-

- <%= heading %> -

-
-

- <%= subtitle %> -

-

- <%= service_specification_document('rm3830') %> -

-

<%= t('.caption2') %>

-<%= display_error @procurement, :service_codes %> -
-
- <%= govuk_accordion_with_checkboxes( - 'edit-services', - rm3830_accordion_service_items(service_codes), - 'facilities_management_rm3830_procurement_service_codes', - 'facilities_management_rm3830_procurement[service_codes]' - ) do |section_id, item| %> - <%= link_to t('.learn_more'), facilities_management_rm3830_service_specification_path(item[:code], section_id), target: '_blank' %> - <%= govuk_tag_with_text(:grey, t('common.da_eligible')) if da_eligible?(item[:value]) %> - <% end %> -
-
diff --git a/app/views/facilities_management/rm3830/procurements/_spreadsheet.html.erb b/app/views/facilities_management/rm3830/procurements/_spreadsheet.html.erb deleted file mode 100644 index 2b68cb41e4..0000000000 --- a/app/views/facilities_management/rm3830/procurements/_spreadsheet.html.erb +++ /dev/null @@ -1,42 +0,0 @@ -<%= govuk_page_header(FacilitiesManagement::PageDetail::Heading.new(t('.heading'), @procurement.contract_name, nil, nil, nil)) %> -<% content_for :page_title, t('.heading') %> - -
- <%= t('.instructions') %> -
-
- <%= numbered_list_helper(t('.download_the_template')) do %> - <%= t('.link') %> -
- <%= link_to_public_file_for_download(FacilitiesManagement::RM3830::SpreadsheetImporter::TEMPLATE_FILE_NAME, :xlsx, t('.services_and_buildings_template'), true) %> -
- <%= t('.list_description', class: 'govuk-!-margin-top-4') %> -
    -
  • <%= t('.list_information_1') %>
  • -
  • <%= t('.list_information_2') %>
  • -
  • <%= t('.list_information_3') %>
  • -
- <% end %> - - <%= numbered_list_helper(t('.uploading')) do %> - <%= t('.list_2_description_1') %> -
- <%= t('.list_2_description_2') %> - <% end %> - - <%= numbered_list_helper(t('.results')) do %> - <%= t('.list_3_description') %> - <% end %> -
-
- - <%= t('.footer_information') %> - -
-
- <%= form_for @procurement, url: facilities_management_rm3830_procurement_path(@procurement.id), method: :patch do |f| %> - <%= f.submit t('.continue_link'), class: 'govuk-!-margin-right-4 govuk-button', name: :bulk_upload_spreadsheet, aria: { label: t('.continue_link') } %> - <%= f.submit t('.save_and_return_link'), class: 'govuk-button govuk-button--secondary', name: :bulk_upload_spreadsheet, aria: { label: t('.save_and_return_link') } %>
- <%= f.submit t('.cancel_and_return_link'), class: 'govuk-link button_as_link', name: :change_requirements, aria: { label: t('.cancel_and_return_link') } %> - <% end %> -
diff --git a/app/views/facilities_management/rm3830/procurements/_what_happens_next.html.erb b/app/views/facilities_management/rm3830/procurements/_what_happens_next.html.erb deleted file mode 100644 index 310eabfb56..0000000000 --- a/app/views/facilities_management/rm3830/procurements/_what_happens_next.html.erb +++ /dev/null @@ -1,14 +0,0 @@ -<%= govuk_page_content(@page_description, @procurement, false, true) do |pd| %> - <%= render "what_happens_next_body" %> -
-
- <%= form_for @procurement, url: facilities_management_rm3830_procurement_path(@procurement), method: :patch, html: { specialvalidation:true, novalidate: true, multipart: true } do |f| %> - <%= f.hidden_field :contract_name %> - <%= f.submit t('.continue'), name: 'start_detailed_search', class: 'govuk-button govuk-!-margin-right-4', 'aria-label': t('.continue') %> - <%= link_to t('.cancel'), facilities_management_rm3830_procurements_path, class: 'govuk-button govuk-button--secondary', 'aria-label': t('.cancel') %> -
- <%= link_to t('.return'), facilities_management_rm3830_path, class: 'govuk-link--no-visited-state govuk-!-font-size-19', 'aria-label': t('.return') %> - <% end %> -
-
-<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/_what_happens_next_body.html.erb b/app/views/facilities_management/rm3830/procurements/_what_happens_next_body.html.erb deleted file mode 100644 index 621153b3f6..0000000000 --- a/app/views/facilities_management/rm3830/procurements/_what_happens_next_body.html.erb +++ /dev/null @@ -1,133 +0,0 @@ -

-<%= t('.steps') %> -

-
-
- <%= govuk_step_by_step_navigation( - [ - { - title: t('.step_1.title'), - content: [ - { - type: :paragraph, - text: t('.step_1.information.content') - }, - { - type: :list, - items: [ - { - text: t('.step_1.information.part_1.list.item_1') - }, - { - text: t('.step_1.information.part_1.list.item_2') - }, - { - text: t('.step_1.information.part_1.list.item_3') - } - ] - }, - { - type: :paragraph, - text: t('.step_1.information.part_2.content') - }, - { - type: :list, - items: [ - { - text: t('.step_1.information.part_2.list.item_1') - }, - { - text: t('.step_1.information.part_2.list.item_2') - } - ] - }, - { - type: :paragraph, - text: t('.step_1.requirements.content') - }, - { - type: :list, - items: [ - { - text: t('.step_1.requirements.list.item_1') - }, - { - text: t('.step_1.requirements.list.item_2'), - no_marker: true - }, - { - text: t('.step_1.requirements.list.item_3') - } - ] - }, - { - type: :paragraph, - text: t('.step_1.content') - }, - ] - }, - { - title: t('.step_2.title'), - content: [ - { - type: :paragraph, - text: t('.step_2.content') - }, - { - type: :list, - items: [ - { - text: t('.step_2.list.item_1') - }, - { - text: t('.step_2.list.item_2') - }, - { - text: t('.step_2.list.item_3') - } - ] - } - ] - }, - { - title: t('.step_3.title'), - content: [ - { - type: :paragraph, - text: t('.step_3.content.part_1') - }, - { - type: :list, - items: [ - { - text: t('.step_3.list_1.item_1') - }, - { - text: t('.step_3.list_1.item_2') - }, - { - text: t('.step_3.list_1.item_3') - } - ] - }, - { - type: :paragraph, - text: t('.step_3.content.part_2') - }, - { - type: :list, - items: [ - { - text: t('.step_3.list_2.item_1') - }, - { - text: t('.step_3.list_2.item_2') - } - ] - } - ] - }, - ] - ) %> -
-
diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_contract_details.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_contract_details.html.erb deleted file mode 100644 index e1ba01b933..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_contract_details.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -

<%= t('.contract_details_description') %>

-<%= render partial: 'facilities_management/rm3830/procurements/contract_details/da_journey/summary_pages/contract_details_summary' %> diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_important_information.erb b/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_important_information.erb deleted file mode 100644 index 2653f5dff3..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_important_information.erb +++ /dev/null @@ -1,31 +0,0 @@ -
-

- <%= t('.intro-text') %> -

- -
-
-

<%=t('.insurance_heading') %>

-

- <%=t('.insurance_body_html') %> - <%= link_to_public_file_for_download(t(".contract_documents.joint_schedule_3.file_name"), :pdf, t(".contract_documents.joint_schedule_3.title"), false) %> -

-
-

<%=t('.indexation_heading') %>

-

- <%=t('.indexation_body_html') %> - <%= link_to_public_file_for_download(t(".contract_documents.call_off_schedule_5.file_name"), :pdf, t(".contract_documents.call_off_schedule_5.title"), false) %> -

-
-

<%= t('.services_heading') %>

-

- <%= t('.services_body_html', document_link: link_to_public_file_for_download(t(".contract_documents.service_requirements_and_standards.file_name"), :pdf, t(".contract_documents.service_requirements_and_standards.title"), false)) %> -

-
-

<%=t('.price_heading') %>

-

<%=t('.price_body_html') %>

-
-
- - <%= warning_text(t('.warning_text')) %> -
diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_pricing.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_pricing.html.erb deleted file mode 100644 index d5565e3a2d..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_pricing.html.erb +++ /dev/null @@ -1,49 +0,0 @@ -

- <%= t('.there_are_suppliers_html', count: sorted_supplier_list.count, suppliers: supplier_plural) %> - <% if sorted_supplier_list.count > 1 %> - <%= t('.supplier_description_plural') %> - <% else %> - <%= t('.supplier_description_singular') %> - <% end %> -

-
- <%= sorted_supplier_list.first[:name] %> - <%= number_to_currency(sorted_supplier_list.first[:price]) %>
- <%= t('.lowest_price_supplier') %> -
- -
-
-
-
- <% sorted_supplier_list[1..-1].each.with_index(2) do |supplier, index| %> -
-
- <%= "Supplier #{index}" %> -
-
- <%= number_to_currency(supplier[:price]) %> -
-
- <% end %> -
-
-
- -
-

- <%= t('.pricing_description_1') %> -

-

- <%= t('.pricing_description_2') %> -

-

- <%= t('.pricing_description_3') %> -

-

- <%= t('.pricing_description_4') %> -

-

- <%= t('.pricing_description_5') %> -

-
diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_review.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_review.html.erb deleted file mode 100644 index fe1bb4e435..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_review.html.erb +++ /dev/null @@ -1,90 +0,0 @@ -
-

<%= t('.documents.heading') %>

-

<%= t('.documents.text') %>

- -
-

<%= t('.attachment_1.heading') %>

-
    -
  • - <%= link_to_public_file_for_download(t('.attachment_1.file_name'), :pdf, t('.attachment_1.title'), true) %> -

    <%= t('.attachment_1.guidance') %>

    -
  • -
- -

<%= t('.attachment_2.heading') %>

-
    -
  • - <%= link_to_generated_file_for_download(facilities_management_rm3830_procurement_deliverables_matrix_path(@procurement.id, contract_id: @procurement.first_unsent_contract.id), :xlsx, t('.attachment_2.statement_of_requirements.title'), true) %> - -

    <%= t('.attachment_2.statement_of_requirements.guidance') %>

    -
  • -
  • - <%= link_to_public_file_for_download(t('.attachment_2.annex_a.file_name'), :pdf, t('.attachment_2.annex_a.title'), true) %> -

    <%= t('.attachment_2.annex_a.guidance') %>

    -
  • -
- -

<%= t('.attachment_3.heading') %>

-
    -
  • - <%= link_to_generated_file_for_download(facilities_management_rm3830_procurement_price_matrix_path(@procurement.id, contract_id: @procurement.first_unsent_contract.id), :xlsx, t('.attachment_3.price_matrix.title'), true) %> -

    <%= t('.attachment_3.price_matrix.guidance') %>

    -
  • -
- -

<%= t('.attachment_4.heading') %>

-
    -
  • - <%= link_to_generated_file_for_download(facilities_management_rm3830_procurement_contract_documents_call_off_schedule_path(procurement_id: @procurement.id, contract_id: @procurement.first_unsent_contract.id, format: :docx), :doc, t('.attachment_4.order_form.title'), true) %> -

    <%= t('.attachment_4.order_form.guidance') %>

    -
  • -
  • - <%= link_to_public_file_for_download(t('.attachment_4.core_terms.file_name'), :pdf, t('.attachment_4.core_terms.title'), true) %> -

    <%= t('.attachment_4.core_terms.guidance') %>

    -
  • -
- -
    - <% %w[1 2 3 4 4A 5 6 7 8 9 10 13 24 25].each do |suffix| %> -
  • - <% if suffix == '2' %> - <%= link_to_generated_file_for_download(facilities_management_rm3830_procurement_contract_documents_call_off_schedule_2_path(procurement_id: @procurement.id, contract_id: @procurement.first_unsent_contract.id, format: :docx), :doc, t(".contract_documents.call_off_schedule_2.title"), true) %> - <% else %> - <%= link_to_public_file_for_download(t(".contract_documents.call_off_schedule_#{suffix}.file_name"), :pdf, t(".contract_documents.call_off_schedule_#{suffix}.title"), true) %> - <% end %> - -
  • - <% end %> - - <% %w[1 2 3 5 6 7 10 11].each do |suffix| %> -
  • - <%= link_to_public_file_for_download(t(".contract_documents.joint_schedule_#{suffix}.file_name"), :pdf, t(".contract_documents.joint_schedule_#{suffix}.title"), true) %> -
  • - <% end %> -
- - <% if @procurement.security_policy_document_required? %> -

<%= t('.security_policy.heading') %>

-
    -
  • - <%= link_to_file_for_download("#{rails_blob_path(@procurement.security_policy_document_file, disposition: 'attachment', key: :procurement_id, value: @procurement.id)}&format=#{security_policy_document_file_type}", security_policy_document_file_type, t('.security_policy.title'), true) %> -

    <%= t('.security_policy.guidance') %>

    -
  • -
- <% end %> - - <%= link_to t('.download_documents.title'), facilities_management_rm3830_procurement_contract_documents_zip_path(procurement_id: @procurement.id, contract_id: @procurement.first_unsent_contract.id), class: 'govuk-button govuk-button--secondary', 'aria-label': "#{t('.download_documents.title')}" %> -
- - - <%= warning_text(t('.download_documents.guidance')) %> - -

<%= t('.change_requirements.guidance') %>

-
- <%= f.submit(t('.change_requirements.title'), class: 'govuk-button govuk-button--secondary', name: :return_to_review_and_generate, 'aria-label': "#{t('.change_requirements.title')}") %> -
-

<%= t('.change_schedule.guidance') %>

- -

<%= t('.sending_contract.heading') %>

-

<%= t('.sending_contract.guidance') %>

-
diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_review_and_generate.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_review_and_generate.html.erb deleted file mode 100644 index a81196eb63..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_review_and_generate.html.erb +++ /dev/null @@ -1,30 +0,0 @@ -
- <%= t('.please_review')%>
- <%= t('.once_satisfied')%> -
-
-

- <%= t('.requirements')%> -

- <%= render partial: 'facilities_management/rm3830/procurements/contract_details/da_journey/summary_pages/procurement_requirements' %> - - <%= f.submit('Change requirements', class: 'govuk-button govuk-button--secondary', name: :change_requirements, 'aria-label': "Change requirements") %> -
- -
-

- <%= t('.contract_details')%> -

- <%= render partial: 'facilities_management/rm3830/procurements/contract_details/da_journey/summary_pages/contract_details_summary' %> - - <%= f.submit('Change contract details', class: 'govuk-button govuk-button--secondary', name: :change_contract_details, 'aria-label': "Change contract details") %> -
- -
-

- <%= t('.generate_your_documents')%> -

-
- <%= t('.click_generate_documents')%> -
-
diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_sending.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_sending.html.erb deleted file mode 100644 index fd7abc399f..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_sending.html.erb +++ /dev/null @@ -1,10 +0,0 @@ -
-
-

- <%= t('.contract_ready_to_send_html', supplier_name: @procurement.procurement_suppliers.first.supplier_name) %> -

-

<%= t('.click_confirm_and_continue') %>

-
-
- -<%= warning_text(t('.warning_text')) %> diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_what_next.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_what_next.html.erb deleted file mode 100644 index ad37c8eed2..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/_what_next.html.erb +++ /dev/null @@ -1,93 +0,0 @@ -

<%= t('.heading') %>

-
-
- <%= govuk_step_by_step_navigation( - [ - { - title: t('.step_1.title'), - content: [ - { - type: :list, - items: [ - { - text: t('.step_1.list.item_1') - }, - { - text: t('.step_1.list.item_2') - } - ] - } - ] - }, - { - title: t('.step_2.title'), - content: [ - { - type: :list, - items: [ - { - text: t('.step_2.list.item_1') - }, - { - text: t('.step_2.list.item_2') - }, - { - text: t('.step_2.list.item_3_html') - } - ] - } - ] - }, - { - title: t('.step_3.title'), - content: [ - { - type: :list, - items: [ - { - text: t('.step_3.list.item_1') - }, - { - text: t('.step_3.list.item_2') - }, - { - text: t('.step_3.list.item_3') - }, - { - text: t('.step_3.list.item_4') - } - ] - } - ] - }, - { - title: t('.step_4.title'), - logic: t('.or'), - content: [ - { - type: :paragraph, - text: t('.step_4.content') - }, - { - type: :list, - items: [ - { - text: t('.step_4.list.item_1') - }, - { - text: t('.step_4.list.item_2') - }, - { - text: t('.step_4.list.item_3') - }, - { - text: t('.step_4.list.item_4') - } - ] - } - ] - } - ] - ) %> -
-
diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/summary_pages/_contract_details_summary.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/summary_pages/_contract_details_summary.html.erb deleted file mode 100644 index dc80a960f2..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/summary_pages/_contract_details_summary.html.erb +++ /dev/null @@ -1,197 +0,0 @@ -
- - - - - - - - - - - - - <% if @procurement.errors[:payment_method].any? %> - - - - <% end %> - - - - - - - <% if @procurement.errors[:using_buyer_detail_for_invoice_details].any? %> - - - - <% end %> - - - - - - - <% if @procurement.errors[:using_buyer_detail_for_authorised_detail].any? %> - - - - <% end %> - - - - - - - <% if @procurement.errors[:using_buyer_detail_for_notices_detail].any? %> - - - - <% end %> - - - - - - - <% if @procurement.errors[:security_policy_document_required].any? %> - - - - <% end %> - - - - - - - <% if @procurement.errors[:local_government_pension_scheme].any? %> - - - - <% end %> - - - - - - - <% if @procurement.errors[:governing_law].any? %> - - - - <% end %> - -
<%= t('.payment_method') %> - <%= link_to 'Change', facilities_management_rm3830_procurement_contract_details_edit_path(procurement_id: @procurement.id, page: 'payment_method') unless @procurement.payment_method.nil? || @procurement.da_journey_state == 'review_and_generate' %> -
<%= display_error(@procurement, :payment_method, false) %>
<%= t('.invoicing_contact_details') %> - <%= link_to 'Change', facilities_management_rm3830_procurement_contract_details_edit_path(page: 'invoicing_contact_details') unless @procurement.using_buyer_detail_for_invoice_details.nil? || @procurement.da_journey_state == 'review_and_generate' %> -
<%= display_error(@procurement, :using_buyer_detail_for_invoice_details, false) %>
<%= t('.authorised_representative') %> - <%= link_to 'Change', facilities_management_rm3830_procurement_contract_details_edit_path(page: 'authorised_representative') unless @procurement.using_buyer_detail_for_authorised_detail.nil? || @procurement.da_journey_state == 'review_and_generate' %> -
<%= display_error(@procurement, :using_buyer_detail_for_authorised_detail, false) %>
<%= t('.notices_contact_details') %> - <%= link_to 'Change', facilities_management_rm3830_procurement_contract_details_edit_path(page: 'notices_contact_details') unless @procurement.using_buyer_detail_for_notices_detail.nil? || @procurement.da_journey_state == 'review_and_generate' %> -
<%= display_error(@procurement, :using_buyer_detail_for_notices_detail, false) %>
<%= t('.security_policy_document') %> - <%= link_to 'Change', facilities_management_rm3830_procurement_contract_details_edit_path(page: 'security_policy_document') unless @procurement.security_policy_document_required.nil? || @procurement.da_journey_state == 'review_and_generate' %> -
<%= display_error(@procurement, :security_policy_document_required, false) %>
<%= t('.local_government_pension_scheme') %> - <%= link_to 'Change', facilities_management_rm3830_procurement_contract_details_edit_path(page: 'local_government_pension_scheme') unless @procurement.local_government_pension_scheme.nil? || @procurement.da_journey_state == 'review_and_generate' %> -
<%= display_error(@procurement, :local_government_pension_scheme, false) %>
<%= t('.governing_law') %> - <%= link_to 'Change', facilities_management_rm3830_procurement_contract_details_edit_path(page: 'governing_law') unless @procurement.governing_law.nil? || @procurement.da_journey_state == 'review_and_generate' %> -
<%= display_error(@procurement, :governing_law, false) %>
-
diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/summary_pages/_procurement_requirements.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/summary_pages/_procurement_requirements.html.erb deleted file mode 100644 index 02bea346bf..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/da_journey/summary_pages/_procurement_requirements.html.erb +++ /dev/null @@ -1,76 +0,0 @@ -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <% if @procurement.extensions_required %> - <% @procurement.call_off_extensions.sorted.each do |call_off_extension| %> - - - - - <% end %> - <% end %> - - - - - - - - - -
<%= t('.supplier') %><%= @procurement.procurement_suppliers.first.supplier.supplier_name %>
<%= t('.contract_name') %><%= @procurement.contract_name %>
<%= t('.contract_value') %><%= format_money @procurement.procurement_suppliers.first.direct_award_value %>
<%= t('.framework_sublot_title') %> <%= t('.framework_sublot_value') %>
<%= t('.route_to_market') %> <%= t('.direct_award') %>
<%= t('.initial_call_off_period') %> - <%= govuk_details(initial_call_off_period) {initial_call_off_period_description} %> -
<%= t('.mobilisation_period') %> - <% if @procurement.mobilisation_period_required %> - <%= govuk_details(mobilisation_period) { mobilisation_period_description } %> - <% else %> - None - <% end %> -
<%= t('.call_off_extension', extension: call_off_extension.extension + 1) %> - <%= govuk_details(call_off_extensions_period(call_off_extension)) { extension_period_description(call_off_extension.extension) } %> -
<%= t('.date_of_first_indexation') %><%= date_of_first_indexation %>
<%= t('.buildings_services') %> - <% active_procurement_buildings.each.with_index do |procurement_building, index| %> -
- <%= govuk_details(procurement_building.building_name) do %> -
    - <% procurement_building.service_codes.each do |code| %> -
  • <%= work_packages_names[code] %>
  • - <% end %> -
- <% end %> -
- <% end %> -
-
diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit.html.erb deleted file mode 100644 index bde6f79aed..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit.html.erb +++ /dev/null @@ -1,9 +0,0 @@ -<%= govuk_page_content(@page_description, @procurement) do |pd| %> - <%= content_for :page_title, pd.heading_details.text %> - - <%= form_with model: @procurement, url: facilities_management_rm3830_procurement_contract_details_path(page: @page_name), method: :put, html: { specialvalidation: true, novalidate: true } do |f| %> - <%= f.hidden_field :page, value: params[:page] %> - <%= render(partial: "#{partial_prefix}/#{@page_name}", locals: { f: f }) %> - <%= govuk_continuation_buttons(pd, f, false) %> - <% end %> -<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_authorised_representative.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_authorised_representative.html.erb deleted file mode 100644 index b053e9e5b9..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_authorised_representative.html.erb +++ /dev/null @@ -1,43 +0,0 @@ -
-

<%= t('.authorised_representative_detail_description_header') %>

-
-
- - <%= t('.authorised_representative_detail_description')%> - <%= display_errors(f.object, :using_buyer_detail_for_authorised_detail)%> -
-
- <%= f.radio_button :using_buyer_detail_for_authorised_detail, true, class: 'govuk-radios__input' %> - <%= f.label :using_buyer_detail_for_authorised_detail, value: true, class: 'govuk-label govuk-radios__label ccs-font-weight-semi-bold' do %> - <%= (@current_user.buyer_detail.full_name + ', ' + @current_user.buyer_detail.job_title) if @current_user.buyer_detail.full_name.present? && @current_user.buyer_detail.job_title.present?%> - - <%= @current_user.buyer_detail.full_organisation_address %> - - <% end %> -
- <% if @procurement.authorised_contact_detail.blank? %> -
- <%= f.radio_button :using_buyer_detail_for_authorised_detail, false, class: 'govuk-radios__input' %> - <%= f.label :using_buyer_detail_for_authorised_detail, value: false, class: 'govuk-label govuk-radios__label ccs-font-weight-semi-bold' do %> - <%= t('.new') %> - <% end %> -
- <% else %> -
- <%= f.radio_button :using_buyer_detail_for_authorised_detail, false, class: 'govuk-radios__input' %> - <%= f.label :using_buyer_detail_for_authorised_detail, value: false, class: 'govuk-label govuk-radios__label ccs-font-weight-semi-bold' do %> - <%= @procurement.authorised_contact_detail.name + ", " + @procurement.authorised_contact_detail.job_title %> - - <%= @procurement.authorised_contact_detail.contact_address %> -
-
- <%= link_to t('.change'), facilities_management_rm3830_procurement_contract_details_edit_path(page: 'new_authorised_representative') %> -
-
- <% end %> -
- <% end %> -
-
-
-
diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_governing_law.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_governing_law.html.erb deleted file mode 100644 index e4daf92a3a..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_governing_law.html.erb +++ /dev/null @@ -1,48 +0,0 @@ -
-

<%= t('.header') %>

- - - <%= t('.description_html')%> - - -
    - <% %w[core_terms call_off_24 call_off_25].each do |doc_key| %> -
  • - <%= link_to_public_file_for_download(t(".contract_documents.#{doc_key}.file_name"), :pdf, t(".contract_documents.#{doc_key}.title"), true, style: 'min-height: 25px') %> - <%= t(".contract_documents.#{doc_key}.description") %> -
  • - <% end %> -
- -
-
-

<%= t('.prompt') %>

- - <%= display_errors(f.object, :governing_law)%> -
- -
- <%= f.radio_button :governing_law, 'english', class: 'govuk-radios__input' %> - <%= f.label :governing_law, value: 'english', class: 'govuk-label govuk-radios__label' do %> - <%= t('.english') %> - <% end %> -
- -
- <%= f.radio_button :governing_law, 'scottish', class: 'govuk-radios__input' %> - <%= f.label :governing_law, value: 'scottish', class: 'govuk-label govuk-radios__label' do %> - <%= t('.scottish') %> - <% end %> -
- -
- <%= f.radio_button :governing_law, 'northern_ireland', class: 'govuk-radios__input' %> - <%= f.label :governing_law, value: 'northern_ireland', class: 'govuk-label govuk-radios__label' do %> - <%= t('.northern_ireland') %> - <% end %> -
- -
-
-
-
diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_invoicing_contact_details.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_invoicing_contact_details.html.erb deleted file mode 100644 index f5e8fe3093..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_invoicing_contact_details.html.erb +++ /dev/null @@ -1,44 +0,0 @@ -
-

<%= t('.invoicing_contact_detail_description_header') %>

-
-
- - <%= t('.invoicing_contact_detail_description')%> - - <%= display_errors(f.object, :using_buyer_detail_for_invoice_details)%> -
-
- <%= f.radio_button :using_buyer_detail_for_invoice_details, true, class: 'govuk-radios__input' %> - <%= f.label :using_buyer_detail_for_invoice_details, value: true, class: 'govuk-label govuk-radios__label ccs-font-weight-semi-bold' do %> - <%= (@current_user.buyer_detail.full_name + ', ' + @current_user.buyer_detail.job_title) if @current_user.buyer_detail.full_name.present? && @current_user.buyer_detail.job_title.present?%> - - <%= @current_user.buyer_detail.full_organisation_address %> - - <% end %> -
- <% if @procurement.invoice_contact_detail.blank? %> -
- <%= f.radio_button :using_buyer_detail_for_invoice_details, false, class: 'govuk-radios__input' %> - <%= f.label :using_buyer_detail_for_invoice_details, value: false, class: 'govuk-label govuk-radios__label ccs-font-weight-semi-bold' do %> - <%= t('.new') %> - <% end %> -
- <% else %> -
- <%= f.radio_button :using_buyer_detail_for_invoice_details, false, class: 'govuk-radios__input' %> - <%= f.label :using_buyer_detail_for_invoice_details, value: false, class: 'govuk-label govuk-radios__label ccs-font-weight-semi-bold' do %> - <%= @procurement.invoice_contact_detail.name + ", " + @procurement.invoice_contact_detail.job_title %> - - <%= @procurement.invoice_contact_detail.contact_address %> -
-
- <%= link_to t('.change'), facilities_management_rm3830_procurement_contract_details_edit_path(:page => 'new_invoicing_contact_details') %> -
-
- <% end %> -
- <% end %> -
-
-
-
diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_local_government_pension_scheme.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_local_government_pension_scheme.html.erb deleted file mode 100644 index cfddb7f151..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_local_government_pension_scheme.html.erb +++ /dev/null @@ -1,20 +0,0 @@ -
-
-

- - <%= t('.description')%> - -

-
- <%= display_error(@procurement, :local_government_pension_scheme) %> -
- <%= f.radio_button :local_government_pension_scheme, true, value: true, class: 'govuk-radios__input' %> - <%= f.label :local_government_pension_scheme, "Yes", value: true, class: 'govuk-label govuk-radios__label' %> -
-
- <%= f.radio_button :local_government_pension_scheme, false, value: false, class: 'govuk-radios__input' %> - <%= f.label :local_government_pension_scheme, "No", value: false, class: 'govuk-label govuk-radios__label' %> -
-
-
-
diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_authorised_representative.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_authorised_representative.html.erb deleted file mode 100644 index f7bccbe428..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_authorised_representative.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -<%= f.fields_for :authorised_contact_detail do |ff| %> - <%= render partial: "#{partial_prefix}/new_contact_details", - locals: {f: f, ff: ff, page_contact: 'authorised_contact_detail', address_step: 'new_authorised_representative_address', telephone_number: true}%> -<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_authorised_representative_address.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_authorised_representative_address.html.erb deleted file mode 100644 index 7c2dbd5378..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_authorised_representative_address.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -<%= f.fields_for :authorised_contact_detail do |ff|%> - <%= render partial: "#{partial_prefix}/new_contact_details_address", - locals: {f: f, ff: ff, page_contact: 'authorised_contact_detail'} %> -<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_contact_details.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_contact_details.html.erb deleted file mode 100644 index 4f38244052..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_contact_details.html.erb +++ /dev/null @@ -1,35 +0,0 @@ -
- <% @address_step = address_step %> -
"> - <%= ff.label :name, t('.name'), class: 'govuk-label govuk-!-margin-bottom-3', id: "#{page_contact}.name#{'-error' if ff.object.errors[:name].any?}" %> - <%= display_error(ff.object, :name) %> - <%= ff.text_field :name, class: "govuk-input #{'govuk-input--error' if ff.object.errors[:name].any? } ", maxlength: 50 %> -
- -
"> - <%= ff.label :job_title, t('.job_title'), class: 'govuk-label govuk-!-margin-bottom-3', id: "#{page_contact}.job_title#{'-error' if ff.object.errors[:job_title].any?}" %> - <%= display_error(ff.object, :job_title) %> - <%= ff.text_field :job_title, class: "govuk-input #{'govuk-input--error' if ff.object.errors[:job_title].any? } ", maxlength: 50 %> -
- -
"> - <%= ff.label :email, t('.email'), class: 'govuk-label govuk-!-margin-bottom-3', id: "#{page_contact}.email#{'-error' if ff.object.errors[:email].any?}" %> - <%= display_error(ff.object, :email) %> - <%= ff.text_field :email, class: "govuk-input #{'govuk-input--error' if ff.object.errors[:email].any? } ", maxlength: 50 %> -
- <% if telephone_number %> -
"> - <%= ff.label :telephone_number, t('.telephone_number'), class: 'govuk-label govuk-!-margin-bottom-3', id: "#{page_contact}.telephone_number#{'-error' if ff.object.errors[:telephone_number].any?}" %> - <%= display_error(ff.object, :telephone_number) %> - <%= ff.text_field :telephone_number, class: "govuk-input #{'govuk-input--error' if ff.object.errors[:telephone_number].any? } ", maxlength: 15 %> -
- <% end %> - - <%= render partial: 'facilities_management/shared/find_address/find_address', locals: { - f: ff, - find_address_helper: find_address_helper(ff.object, true), - cant_find_address_text: t('.cant_find_address'), - submit_cant_find_address: false, - address_title: t('.address') - } %> -
diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_contact_details_address.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_contact_details_address.html.erb deleted file mode 100644 index a283e2fba9..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_contact_details_address.html.erb +++ /dev/null @@ -1,28 +0,0 @@ -
-
"> - <%= ff.label :organisation_address_line_1, t('.building_and_street'), class: 'govuk-label govuk-!-margin-bottom-3', id: "#{page_contact}.organisation_address_line_1#{'-error' if ff.object.errors[:organisation_address_line_1].any?}" %> - <%= display_error(ff.object, :organisation_address_line_1) %> - <%= ff.text_field :organisation_address_line_1, class: "govuk-input #{'govuk-input--error' if ff.object.errors[:organisation_address_line_1].any? } ", maxlength: 255 %> -
- <%= ff.text_field :organisation_address_line_2,'aria-label' =>'address_line_2', class: "govuk-input #{'govuk-input--error' if ff.object.errors[:organisation_address_line_1].any? } ", maxlength: 255 %> -
-
- -
"> - <%= ff.label :organisation_address_town, t('.town_or_city'), class: 'govuk-label govuk-!-margin-bottom-3', id: "#{page_contact}.organisation_address_town#{'-error' if ff.object.errors[:organisation_address_town].any?}" %> - <%= display_error(ff.object, :organisation_address_town) %> - <%= ff.text_field :organisation_address_town, class: "govuk-input govuk-!-width-two-thirds #{'govuk-input--error' if ff.object.errors[:organisation_address_town].any? }", maxlength: 255 %> -
- -
"> - <%= ff.label :organisation_address_county, t('.county'), class: 'govuk-label govuk-!-margin-bottom-3' %> - <%= display_error(ff.object, :organisation_address_county) %> - <%= ff.text_field :organisation_address_county, class: "govuk-input govuk-!-width-two-thirds ", maxlength: 255 %> -
- -
"> - <%= ff.label :organisation_address_postcode, t('.postcode'), class: 'govuk-label govuk-!-margin-bottom-3', id: "#{page_contact}.organisation_address_postcode#{'-error' if ff.object.errors[:organisation_address_postcode].any?}" %> - <%= display_error(ff.object, :organisation_address_postcode) %> - <%= ff.text_field :organisation_address_postcode, class: "govuk-input govuk-!-width-one-third #{'govuk-input--error' if ff.object.errors[:organisation_address_postcode].any? }", maxlength: 255 %> -
-
\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_invoicing_contact_details.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_invoicing_contact_details.html.erb deleted file mode 100644 index a573f62504..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_invoicing_contact_details.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -<%= f.fields_for :invoice_contact_detail do |ff| %> - <%= render partial: "#{partial_prefix}/new_contact_details", - locals: { f: f, ff: ff, page_contact: 'invoice_contact_detail', address_step: 'new_invoicing_contact_details_address', telephone_number: false }%> -<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_invoicing_contact_details_address.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_invoicing_contact_details_address.html.erb deleted file mode 100644 index e89eef1a19..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_invoicing_contact_details_address.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -<%= f.fields_for :invoice_contact_detail do |ff|%> - <%= render partial: "#{partial_prefix}/new_contact_details_address", - locals: {f: f, ff: ff, page_contact: 'invoice_contact_detail'} %> -<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_notices_contact_details.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_notices_contact_details.html.erb deleted file mode 100644 index 38d342abd4..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_notices_contact_details.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -<%= f.fields_for :notices_contact_detail do |ff| %> - <%= render partial: "#{partial_prefix}/new_contact_details", - locals: {f: f, ff: ff, page_contact: 'notices_contact_detail', address_step: 'new_notices_contact_details_address', telephone_number: false}%> -<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_notices_contact_details_address.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_notices_contact_details_address.html.erb deleted file mode 100644 index 7fdc7c0c21..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_new_notices_contact_details_address.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -<%= f.fields_for :notices_contact_detail do |ff|%> - <%= render partial: "#{partial_prefix}/new_contact_details_address", - locals: {f: f, ff: ff, page_contact: 'notices_contact_detail'} %> -<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_notices_contact_details.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_notices_contact_details.html.erb deleted file mode 100644 index f42cfb8475..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_notices_contact_details.html.erb +++ /dev/null @@ -1,44 +0,0 @@ -
-

<%= t('.notices_contact_detail_description_header') %>

-
-
- - <%= t('.notices_contact_detail_description')%> - - <%= display_errors(f.object, :using_buyer_detail_for_notices_detail)%> -
-
- <%= f.radio_button :using_buyer_detail_for_notices_detail, true, class: 'govuk-radios__input' %> - <%= f.label :using_buyer_detail_for_notices_detail, value: true, class: 'govuk-label govuk-radios__label ccs-font-weight-semi-bold' do %> - <%= (@current_user.buyer_detail.full_name + ', ' + @current_user.buyer_detail.job_title) if @current_user.buyer_detail.full_name.present? && @current_user.buyer_detail.job_title.present?%> - - <%= @current_user.buyer_detail.full_organisation_address %> - - <% end %> -
- <% if @procurement.notices_contact_detail.blank? %> -
- <%= f.radio_button :using_buyer_detail_for_notices_detail, false, class: 'govuk-radios__input' %> - <%= f.label :using_buyer_detail_for_notices_detail, value: false, class: 'govuk-label govuk-radios__label ccs-font-weight-semi-bold' do %> - <%= t('.new') %> - <% end %> -
- <% else %> -
- <%= f.radio_button :using_buyer_detail_for_notices_detail, false, class: 'govuk-radios__input' %> - <%= f.label :using_buyer_detail_for_notices_detail, value: false, class: 'govuk-label govuk-radios__label ccs-font-weight-semi-bold' do %> - <%= @procurement.notices_contact_detail.name + ", " + @procurement.notices_contact_detail.job_title %> - - <%= @procurement.notices_contact_detail.contact_address %> -
-
- <%= link_to t('.change'), facilities_management_rm3830_procurement_contract_details_edit_path(page: 'new_notices_contact_details') %> -
-
- <% end %> -
- <% end %> -
-
-
-
diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_payment_method.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_payment_method.html.erb deleted file mode 100644 index 4eb87d42c8..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_payment_method.html.erb +++ /dev/null @@ -1,17 +0,0 @@ -<%= govuk_grouped_field(f, t('.payment_description'), :payment_method) do |ff, attr| %> -
-
- <%= f.radio_button :payment_method, 'bacs', class: 'govuk-radios__input' %> - <%= f.label :payment_method, value: 'bacs', class: 'govuk-label govuk-radios__label' do %> - <%= t('.bacs_payment') %> - <% end %> -
-
- <%= f.radio_button :payment_method, 'card', class: 'govuk-radios__input' %> - <%= f.label :payment_method, value: 'card', class: 'govuk-label govuk-radios__label' do %> - <%= t('.government_procurement_card') %> - <% end %> -
-
-<% end %> - diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_pension_funds.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_pension_funds.html.erb deleted file mode 100644 index 701f72e167..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_pension_funds.html.erb +++ /dev/null @@ -1,30 +0,0 @@ -
- <%= t('.lead_in') %> -
-<%= link_to_public_file_for_download(t('.attachment_2.file_name'), :pdf, t('.attachment_2.name'), true) %> - -
- -

- <%= t('.form_title') %> -

-
- <%= t('.description') %> -
-
- <% current_number_of_pensions = FacilitiesManagement::RM3830::Procurement.find(@procurement.id).procurement_pension_funds.length %> - <% special_errors = current_number_of_pensions > 0 %> - <% error_index = 0 %> - <%= f.fields_for :procurement_pension_funds, sort_by_pension_fund_created_at do |builder| %> - <%= render partial: "#{partial_prefix}/procurement_pension_fund", locals: {ff: builder, error_index: error_index} %> - <% if special_errors %> - <% if builder.object.errors.any? || builder.index == current_number_of_pensions %> - <% error_index += 1 %> - <% special_errors = false %> - <% end %> - <% else %> - <% error_index += 1 %> - <% end %> - <% end %> -
-<%= link_to_add_row(t('.button_text'), FacilitiesManagement::RM3830::Procurement::MAX_NUMBER_OF_PENSIONS - @procurement.procurement_pension_funds.size, f, :procurement_pension_funds, partial_prefix, class: 'add-pension-button govuk-button govuk-button--secondary govuk-!-margin-bottom-2', 'aria-label': "Add another pension fund" ) %> diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_procurement_pension_fund.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_procurement_pension_fund.html.erb deleted file mode 100644 index 276724a53e..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_procurement_pension_fund.html.erb +++ /dev/null @@ -1,34 +0,0 @@ -
-
- - <% if ff.object.errors[:name].any? %> - <%= ff.object.errors[:name].first %> - <% end %> - - <% if ff.object.errors[:percentage].any? %> - <%= ff.object.errors[:percentage].first %> - <% end %> - -
-

- - <%= ff.label :name, t('.name_text'), class: 'pension-number', id: "#{ff.object.errors[:name].any? ? "procurement_pension_funds[#{error_index}].name-error" : "procurement_pension_funds[#{ff.index}].name-label" }" %> - - <%= ff.hidden_field :case_sensitive_error %> -

-

- <%= ff.text_field :name, class: "pension-name govuk-input govuk-!-width-full #{'govuk-input--error' if !ff.object.errors[:name].empty?}", maxlength: 150 %> -

-
-
-

- <%= ff.label :percentage, t('.percentage_text'), id: "#{ff.object.errors[:percentage].any? ? "procurement_pension_funds[#{error_index}].percentage-error" : "procurement_pension_funds[#{ff.index}].percentage-label" }" %> -

-

- <%= ff.number_field :percentage, min: 0, max: 100, class: "pension-percentage govuk-input govuk-input--width-4 #{'govuk-input--error' if !ff.object.errors[:percentage].empty?}" %> % - <%= link_to 'Remove', '#', class: 'remove-pension-record govuk-button govuk-button--secondary govuk-!-margin-left-4 govuk-!-margin-bottom-0', 'aria-label': "Remove"%> - <%= ff.text_field :_destroy, as: :hidden, class: 'pension-destroy-box govuk-visually-hidden', 'tabindex': -1, "aria-label": "destroy" %> -

-
-
-
diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_security_policy_document.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_security_policy_document.html.erb deleted file mode 100644 index 87fefaf7be..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/edit_partials/_security_policy_document.html.erb +++ /dev/null @@ -1,63 +0,0 @@ -
- <%= form_group_with_error(f.object, :security_policy_document_required) do |displayed_error| %> -
- - - <%= t('.question') %> - - -
- -
- <%= displayed_error %> - <%= govuk_radios_conditional do %> - <%= govuk_radios_conditional_item(f, :security_policy_document_required, true, 'Yes') %> - <%= govuk_radios_conditional_area(:security_policy_document_required, true) do %> - <%= form_group_with_error(f.object, :security_policy_document_name) do |name_error| %> -

<%= t('.document_name.title') %>

-
- <%= f.label :security_policy_document_name, t('.document_name.label'), class: "govuk-label" %> - <%= name_error %> - <%= f.text_field :security_policy_document_name, class: 'govuk-input govuk-input--width-20' %> -
- <% end %> - <%= form_group_with_error(f.object, :security_policy_document_version_number) do |version_number_error| %> -

<%= t('.document_version_number.title') %>

-
- <%= f.label :security_policy_document_version_number, t('.document_version_number.label'), class: "govuk-label" %> - <%= version_number_error %> - <%= f.text_field :security_policy_document_version_number, class: 'govuk-input govuk-input--width-10' %> -
- <% end %> - <%= form_group_with_error(f.object, :security_policy_document_date) do |date_error| %> -

<%= t('.document_date.title') %>

-
- <%= f.label :security_policy_document_date, t('.document_date.label'), class: "govuk-label" %> - <%= date_error %> - <%= f.gov_uk_date_field :security_policy_document_date, legend_options: { page_heading: false, visually_hidden: true }, class: 'govuk-input govuk-input--width-20' %> -
- <% end %> - <%= form_group_with_error(f.object, :security_policy_document_file) do |file_error| %> -

<%= t('.document.title') %>

-

<%= t('.document.guidance') %>

-
- <%= file_error %> - <% if @procurement.security_policy_document_file.attached? %> - <%= f.label :security_policy_document_file, 'Uploaded file', class: "govuk-label ccs-font-weight-semi-bold" %> - <%= @procurement.security_policy_document_file.filename.to_s %>
- <%= f.file_field :security_policy_document_file, class: 'govuk-file-upload' %> - <% else %> - <%= f.label :security_policy_document_file, 'Upload a file', class: "govuk-label ccs-font-weight-semi-bold" %> - <%= f.file_field :security_policy_document_file, class: 'govuk-file-upload' %> - <% end %> -
- <%= warning_text(t('.guidance')) %> -
-
- <% end %> - <% end %> - <%= govuk_radios_conditional_item(f, :security_policy_document_required, false, 'No') %> - <% end %> -
- <% end %> -
diff --git a/app/views/facilities_management/rm3830/procurements/contract_details/show.html.erb b/app/views/facilities_management/rm3830/procurements/contract_details/show.html.erb deleted file mode 100644 index 84143d607d..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contract_details/show.html.erb +++ /dev/null @@ -1,8 +0,0 @@ -<%= govuk_page_content(*show_page_content) do |pd| %> - <%= content_for :page_title, pd.heading_details.text %> - - <%= form_with model: @procurement, url: facilities_management_rm3830_procurement_contract_details_path(page: @page_name), method: :put, html: { specialvalidation: true } do |f| %> - <%= render(partial: "facilities_management/rm3830/procurements/contract_details/da_journey/#{@page_name}", locals: { f: f }) %> - <%= govuk_continuation_buttons(pd, f) %> - <% end %> -<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/contracts/_awaiting_response.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/_awaiting_response.html.erb deleted file mode 100644 index e29076584a..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/_awaiting_response.html.erb +++ /dev/null @@ -1,37 +0,0 @@ -
-
-

- <%= t('.title') %> -

-
- <%= t('.two_working_days') %> -
-
- <%= t('.if_accepted_header') %> -
-
    -
  • <%= t('.if_accepted_list_1') %>
  • -
  • <%= t('.if_accepted_list_2') %>
  • -
  • <%= t('.if_accepted_list_3') %>
  • -
  • <%= t('.if_accepted_list_4') %>
  • -
-
- <%= t('.if_declined_header') %> -
-
    -
  • <%= t('.if_declined_list_header_1') %>
  • -
  • <%= t('.if_declined_list_header_2') %> -
      -
    • <%= t('.if_declined_list_1') %>
    • -
    • <%= t('.if_declined_list_2') %>
    • -
    • <%= t('.if_declined_list_3') %>
    • -
    • <%= t('.if_declined_list_4') %>
    • -
    -
  • -
-
-
-
- <%= t('.else_declined') %> -
-
\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/contracts/_awaiting_signature.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/_awaiting_signature.html.erb deleted file mode 100644 index f7cf7d4567..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/_awaiting_signature.html.erb +++ /dev/null @@ -1,29 +0,0 @@ -

- <%= t('.title') %> -

-
-
- <%= govuk_details('1. Supplier signs the contract') do %> -
    -
  • <%= t('.supplier_signs_1') %>
  • -
  • <%= t('.supplier_signs_2') %>
  • -
  • <%= t('.supplier_signs_3') %>
  • -
- <% end %> -
- <%= govuk_details('2. You sign the contract') do %> -
    -
  • <%= t('.you_sign_1') %>
  • -
  • <%= t('.you_sign_2') %>
  • -
  • <%= t('.you_sign_3') %>
  • -
- <% end %> -
- <%= govuk_details('3. Confirmation of signed contract') do %> -
    -
  • <%= t('.confirmation_1') %>
  • -
  • <%= t('.confirmation_2') %>
  • -
- <% end %> -
-
\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/contracts/_call_off_contract_documents.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/_call_off_contract_documents.html.erb deleted file mode 100644 index a840d1de9a..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/_call_off_contract_documents.html.erb +++ /dev/null @@ -1,48 +0,0 @@ - - - - <% if @contract.contract_documents_zip_generated %> - - - - - - - - - - <% else %> - - - - - - - - - - - - - <% end %> - -
<%= t('.call_off_contract_documents') %>
- -
- <%= image_tag('zip_image.png', :alt => 'download zip file', width: '60px') %> - - <%= @contract.contract_documents_zip.filename.to_s %> -
-

Created on <%= format_date_time_day(@contract.offer_sent_date) %>

-
- -
- <%= t('.call_out_leading') %> - -

- <%= t('.colating') %> -

-
- -

<%= t('.colating_message') %>

-
diff --git a/app/views/facilities_management/rm3830/procurements/contracts/_closing_direct_award_offer.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/_closing_direct_award_offer.html.erb deleted file mode 100644 index 59c16da166..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/_closing_direct_award_offer.html.erb +++ /dev/null @@ -1,17 +0,0 @@ -
-

- <%= t('.are_you_sure_1') %> '<%= @procurement[:contract_name] %>' (<%= @contract[:contract_number] %>) <%= t('.are_you_sure_2') %> -

-
- <%= t('.once_closed') %> -
- - <%= form_group_with_error(f.object, :reason_for_closing) do |displayed_error| %> - <%= displayed_error %> - <%= f.label :reason_for_closing, t('.reason'), class: 'govuk-label ccs-font-weight-semi-bold' %> - <%= govuk_character_count(f, :reason_for_closing, 500, 10) %> - <% end %> -
- <%= t('.closed_message') %> -
-
diff --git a/app/views/facilities_management/rm3830/procurements/contracts/_confirmation_of_signed_contract.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/_confirmation_of_signed_contract.html.erb deleted file mode 100644 index 815f097275..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/_confirmation_of_signed_contract.html.erb +++ /dev/null @@ -1,50 +0,0 @@ -
- - <%= t('.description') %> - - <%= display_error(f.object, :contract_signed, false) %> - <%= govuk_radios_conditional do %> - <%= govuk_radios_conditional_item(f, :contract_signed, true, 'Yes') do %> -
- <%= t('.yes_caption') %> -
- <% end %> - <%= govuk_radios_conditional_area(:contract_signed, true, class: 'govuk-!-width-two-thirds') do %> -
-
-
- <%= t('.contract_start_date') %> -
-
- <%= t('.contract_start_date_caption') %> -
-
- <%= display_error(@contract, :contract_start_date) %> - <%= f.gov_uk_date_field :contract_start_date, legend_options: { page_heading: false, visually_hidden: true } %> -
-
-
-
- <%= t('.contract_end_date') %>
-
-
- <%= t('.contract_end_date_caption') %> -
-
- <%= display_error(@contract, :contract_end_date) %> - <%= f.gov_uk_date_field :contract_end_date, legend_options: { page_heading: false, visually_hidden: true } %> -
- <% end %> - <%= govuk_radios_conditional_item(f, :contract_signed, false, 'No') do %> -
- <%= t('.no_caption') %> -
- <% end %> - <%= govuk_radios_conditional_area(:contract_signed, false, class: 'govuk-!-width-two-thirds') do %> - <%= f.label :reason_for_not_signing, t('.contract_will_not_be_signed_reason'), class: 'govuk-body ccs-font-weight-semi-bold' %> -
- <%= display_error(f.object, :reason_for_not_signing) %> - <%= govuk_character_count(f, :reason_for_not_signing, 100, 5) %> - <% end %> - <% end %> -
\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/contracts/_contract_offer_details.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/_contract_offer_details.html.erb deleted file mode 100644 index 7d2028b16b..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/_contract_offer_details.html.erb +++ /dev/null @@ -1,68 +0,0 @@ -<% unless @contract.reason_for_closing.nil? %> -
- <%= govuk_details('Reason for closing') do %> - <%= "#{ t('.closed_reason')}: ‘#{@contract.reason_for_closing}’." %> - <% end %> -
-<% end %> -<% unless @contract.reason_for_not_signing.nil? || @contract.closed? %> -
- <%= govuk_details('Reason for not signing') do %> - <%= "#{ t('.reason_for_not_signed')}: ‘#{@contract.reason_for_not_signing}’." %> - <% end %> -
-<% end %> -<% unless @contract.reason_for_declining.nil? || @contract.closed? %> -
- <%= govuk_details('Reason for declining') do %> - <%= "#{t('.supplier_declined_reason')}: ‘#{@contract.reason_for_declining}’." %> - <% end %> -
-<% end %> - -<% if @contract.aasm_state == 'sent' %> -
- <%= govuk_details('Contract offer history') do %> - <%= "#{ t('.sent')} #{format_date_time @contract.offer_sent_date}." %> - <% end %> -
-<% else %> -
- <%= govuk_details('Contract offer history') do %> - <% case @contract.aasm_state%> - <% when 'accepted' %> - <%= "#{ t('.sent_accepted')} #{format_date_time @contract.supplier_response_date}.
".html_safe %> - <% when 'signed' %> - <%= "#{ t('.signed_confirmed_1')} #{format_date_time @contract.contract_signed_date} #{t('.signed_confirmed_2')}
".html_safe %> - <%= "#{ t('.sent_accepted')} #{format_date_time @contract.supplier_response_date}.
".html_safe %> - <% when 'not_signed' %> - <% if @contract.closed? %> - <%= "#{ t('.not_signed_1')} #{format_date_time @contract.contract_closed_date} #{ t('.not_signed_2')}
".html_safe %> - <% end %> - <%= "#{ t('.sent_accepted')} #{format_date_time @contract.supplier_response_date}.
".html_safe %> - <% when 'declined' %> - <%= "#{t('.declined')} #{format_date_time @contract.supplier_response_date}.
".html_safe if @contract.closed? %> - <% when 'expired' %> - <%= "#{ t('.expired')} #{format_date_time (@contract.supplier_response_date)}.
".html_safe %> - <% when 'withdrawn' %> - <%= "#{ t('.sent_accepted')} #{format_date_time @contract.supplier_response_date}.
".html_safe unless @contract.supplier_response_date.nil? %> - <% end %> - <%= "#{ t('.sent')} #{format_date_time @contract.offer_sent_date}." unless @contract.aasm_state == 'sent' %> - <% end %> -
-<% end %> - -<% if @contract.closed? && @contract.aasm_state == 'declined' %> -
- <%= govuk_details('Reason for declining') do %> - <%= "#{t('.supplier_declined_reason')}: ‘#{@contract.reason_for_declining}’." %> - <% end %> -
-<% end %> -<% if @contract.closed? && @contract.aasm_state == 'not_signed' %> -
- <%= govuk_details('Reason for not signing') do %> - <%= "#{ t('.reason_for_not_signed')}: ‘#{@contract.reason_for_not_signing}’." %> - <% end %> -
-<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/contracts/_contract_summary_foot.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/_contract_summary_foot.html.erb deleted file mode 100644 index 154f4c7b9d..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/_contract_summary_foot.html.erb +++ /dev/null @@ -1,38 +0,0 @@ -
- -<% if @contract.aasm_state == 'expired' && !@contract.closed? %> -
- - <%= t('.expired') %> - -
-<% end %> - -<% unless @contract.closed? %> - <% case @contract.aasm_state %> - <% when 'not_signed', 'declined', 'expired' %> -

<%= t('.next_steps') %>

- <% end %> -<% end %> - - \ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/contracts/_contract_summary_head.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/_contract_summary_head.html.erb deleted file mode 100644 index e7f2e35a38..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/_contract_summary_head.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -<%= warning_text(warning_title) %> -

- <%= warning_message %> -

\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/contracts/_next_supplier.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/_next_supplier.html.erb deleted file mode 100644 index 67fcf01654..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/_next_supplier.html.erb +++ /dev/null @@ -1,39 +0,0 @@ -

<%= t('.next_lowest') %> <%= @procurement.procurement_suppliers.unsent.first.supplier.supplier_name %>.

-
- <%= t('.price')%> <%= format_money @procurement.procurement_suppliers.unsent.first.direct_award_value %>. -
- -
-
- - - <%= t('.about_the_price') %> - - -
- <%= t('.about_the_price_description') %> -
-
-
- -
- <%= link_to t('.download_documents'), facilities_management_rm3830_procurement_contract_documents_zip_path(procurement_id: @procurement.id, contract_id: @procurement.first_unsent_contract.id), class: 'govuk-button govuk-button--secondary' %> - - <%= warning_text(t('.download_docs_description')) %> -
- -

<%= t('.next_steps') %>

- -
-

<%= t('.offer') %>

-
    -
  • <%= t('.offer_list_1') %>
  • -
  • <%= t('.offer_list_2') %>
-

<%= t('.close')%>

-
    -
  • <%= t('.close_point_1') %>
  • -
  • <%= t('.close_point_2') %>
-

<%= t('.return_to_dashboard') %>

-
    -
  • <%= t('.return_to_dashboard_description') %>
-
diff --git a/app/views/facilities_management/rm3830/procurements/contracts/_procurement_closed.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/_procurement_closed.html.erb deleted file mode 100644 index 5a2c27fef9..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/_procurement_closed.html.erb +++ /dev/null @@ -1,15 +0,0 @@ -
-
-
-

- <%= t('.title') %> -

-
- <%= t('.closed_1') %> '<%= @procurement.contract_name %>' (<%= @contract.contract_number %>) <%= t('.closed_2') %> -
-
-
-
- <%= t('.description') %> -
-
diff --git a/app/views/facilities_management/rm3830/procurements/contracts/_procurement_requirements.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/_procurement_requirements.html.erb deleted file mode 100644 index 7ea715ec08..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/_procurement_requirements.html.erb +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <% if @procurement.extensions_required %> - <% @procurement.call_off_extensions.sorted.each do |call_off_extension| %> - - - - - <% end %> - <% end %> - - - - - - - - - -
<%= t('.requirements') %>
<%= heading_text %><%= heading_value %>
<%= t('.contract_name') %><%= @procurement.contract_name %>
<%= t('.contract_number') %><%= @contract.contract_number %>
<%= t('.contract_value') %><%= format_money @contract.direct_award_value %>
<%= t('.framework') %> <%= t('.framework_details')%>
<%= t('.route_to_market') %> <%= t('.direct_award')%>
<%= t('.initial_call_off_period') %> - <%= govuk_details(initial_call_off_period) {initial_call_off_period_description} %> -
<%= t('.mobilisation_period') %> - <% if @procurement.mobilisation_period_required %> - <%= govuk_details(mobilisation_period) { mobilisation_period_description } %> - <% else %> - None - <% end %> -
<%= t('.call_off_extension', extension: call_off_extension.extension + 1) %> - <%= govuk_details(call_off_extensions_period(call_off_extension)) { extension_period_description(call_off_extension.extension) } %> -
<%= t('.date_of_first_indexation') %><%= date_of_first_indexation %>
<%= t('.buildings_services') %> - <% active_procurement_buildings.each.with_index do |procurement_building, index| %> -
- <%= govuk_details(procurement_building.building_name) do %> -
    - <% procurement_building.service_codes.each do |code| %> -
  • <%= work_packages_names[code] %>
  • - <% end %> -
- <% end %> -
- <% end %> -
diff --git a/app/views/facilities_management/rm3830/procurements/contracts/_supplier_contact_details.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/_supplier_contact_details.html.erb deleted file mode 100644 index e480a801c3..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/_supplier_contact_details.html.erb +++ /dev/null @@ -1,24 +0,0 @@ -
-
- - - - - - - - - - - -
<%= t('.supplier_contact_details') %>
-
<%= @contract.supplier.supplier_name %> - <%= govuk_details('Contact details') do %> - <%= "Name: #{@contract.supplier.contact_name}"%>
- <%= "Telephone: #{@contract.supplier.contact_phone}"%>
- <%= mail_to @contract.supplier.contact_email, @contract.supplier.contact_email, class: 'govuk-link govuk-link--no-visited-state', tabindex: -1 %>
- <%= "Address: #{FacilitiesManagement::RM3830::SupplierDetail.find_by(contact_email: @contract.supplier.contact_email)&.full_organisation_address}"%> - <% end %> -
-
-
\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/contracts/closed/_contract_closed.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/closed/_contract_closed.html.erb deleted file mode 100644 index 578872bcf5..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/closed/_contract_closed.html.erb +++ /dev/null @@ -1,18 +0,0 @@ -<%= content_for :page_title, t('.title') %> -
-
-
-

- <%= t('.title') %> -

-
- The '<%= @procurement.contract_name %>' (<%= @contract.contract_number %>) procurement has been closed. -
-
-
- -
- <%= t('.info') %> -
- -
\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/contracts/closed/_contract_signed.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/closed/_contract_signed.html.erb deleted file mode 100644 index 935548cd44..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/closed/_contract_signed.html.erb +++ /dev/null @@ -1,41 +0,0 @@ -<%= content_for :page_title, t('.title') %> -
-

- <%= t('.title') %> -

-
- <%= t('.number') %>
- <%= @contract.contract_number %> -
-
-

- <%= t('.info_1') %> -

-
- <%= t('.contract_period') %>
- <%= "#{format_date @contract.contract_start_date}" %> and <%= "#{format_date @contract.contract_end_date}." %> -
-
-

- <%= t('.info_2') %>
-

-

- <%= t('.next') %> -

-
-
-
    -
  1. Download the contract award notification form.
    - - <%= t('.contract_award_notification_form', url: "https://assets.crowncommercial.gov.uk/wp-content/uploads/RM3830-Contract-Award-Notification-Form-v3.docx") %><%= t('common.doc_html') %> - -
  2. -
  3. Complete the contract award notification form.
  4. -
  5. Send your completed contract award notification form using the details below: -
      -
    • <%="#{t('.email_address')}" "#{t('.email_html')}".html_safe %>
    • -
    • <%= t('.email_subject')%>
    • -
    -
  6. -
-
diff --git a/app/views/facilities_management/rm3830/procurements/contracts/closed/index.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/closed/index.html.erb deleted file mode 100644 index c00c8ab49c..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/closed/index.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -<%= render partial: "contract_closed" if @contract.closed? %> -<%= render partial: "contract_signed" if @contract.aasm_state == "signed" %> - -<%= link_to t('.return_text'), facilities_management_rm3830_procurements_path, class: "govuk-button govuk-button--secondary govuk-!-margin-top-2 govuk-!-margin-bottom-2" %> diff --git a/app/views/facilities_management/rm3830/procurements/contracts/documents/call_off_schedule.docx.caracal b/app/views/facilities_management/rm3830/procurements/contracts/documents/call_off_schedule.docx.caracal deleted file mode 100644 index f32cc16283..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/documents/call_off_schedule.docx.caracal +++ /dev/null @@ -1,731 +0,0 @@ -docx.font name: 'Calibri' - -docx.page_size do - width 11905 - height 16837 - orientation :portrait -end - -docx.page_numbers true do - align :right - label 'Page' -end - -docx.img File.join(Rails.root, 'app', 'assets', 'images', 'ccs-bidpack-logo.png'), width: 90, height: 75, align: :left - -docx.p - -docx.p 'Bid Pack', bold: true, size: 48, font: 'Calibri' - -docx.p -docx.p - -docx.p 'Attachment 4 - Order Form and Call-Off Schedules', size: 40, font: 'Calibri' - -docx.p -docx.p - -docx.p @buyer_detail.organisation_name, size: 40, font: 'Calibri' - -docx.p -docx.p - -docx.p 'Direct Award under Lot 1a of Facilities Management Marketplace RM3830', size: 40, font: 'Calibri' - -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p 'Order Form and Call-Off Schedules', size: 16, font: 'Calibri', bottom: 0 -docx.p "#{@buyer_detail.organisation_name} #{@contract.contract_number}", size: 16, font: 'Calibri', bottom: 0 -docx.p 'Direct Award v3.0', size: 16, font: 'Calibri', bottom: 0 -docx.p '© Crown Copyright 2020', size: 16, font: 'Calibri', bottom: 0 - -docx.page -docx.font name: 'Calibri' - -docx.p - -docx.p 'ORDER FORM TEMPLATE AND CALL-OFF SCHEDULES', align: :center, bold: true, font: 'Calibri' -docx.p 'Part A - Order Form', align: :center, bold: true, font: 'Calibri' - -docx.p - -docx.p "CONTRACT NUMBER: #{@contract.contract_number}", font: 'Calibri' - -docx.p "FROM THE (\"BUYER \"): #{@buyer_detail.organisation_name}", font: 'Calibri' - -docx.p "BUYER ADDRESS: #{@buyer_detail.full_organisation_address}", font: 'Calibri' - -docx.p 'TO THE ("SUPPLIER"):', font: 'Calibri' - -docx.p "NAME: #{@supplier.supplier_name}", font: 'Calibri' - -docx.p "REGISTERED ADDRESS: #{@supplier.full_organisation_address}", font: 'Calibri' - -docx.p "REGISTERED NUMBER: #{@supplier.registration_number}", font: 'Calibri' - -docx.p "DUNS NUMBER: #{@supplier.duns}", font: 'Calibri' - -docx.p 'This Order Form, when completed and executed by both Parties, forms a Call-Off Contract. Completion and execution of a Call-Off Contract may be achieved using an equivalent document or electronic purchase order system. The text below should be copied into any electronic order forms.', font: 'Calibri' - -docx.p -docx.p - -docx.p 'APPLICABLE FRAMEWORK CONTRACT:', bold: true, font: 'Calibri' - -docx.p 'This Order Form is issued in accordance with and subject to the provisions of the Framework Contract with the reference number RM3830 and dated 10/07/2018 for the provision of facilities management services.', font: 'Calibri' - -docx.p - -docx.p 'CALL-OFF LOT', bold: true, font: 'Calibri' - -docx.p 'This Call-Off Contract is in relation to the following Lot: ', font: 'Calibri' - -docx.table [['Lot', 'Supplier accreditations required for the Lot'], ['1a', 'ISO 9001']], border_size: 1, font: 'Calibri' do - cell_style rows[0], bold: true -end - -docx.p - -docx.p 'CALL-OFF INCORPORATED TERMS', bold: true, font: 'Calibri' - -docx.p 'The following documents shall be incorporated into this Call-Off Contract. If they conflict, the following order of precedence shall apply:', font: 'Calibri' - -if @procurement.governing_law == 'english' - docx.ol do - li 'This Order Form', font: 'Calibri' - li 'Joint Schedule 1 (Definitions)', font: 'Calibri' - li 'Joint Schedule 11 (Processing Data)', font: 'Calibri' - li 'Call Off Schedule 4 (Facilities Management)', font: 'Calibri' - li 'The following Schedules (each taking equal precedence):', font: 'Calibri' do - ul do - li 'Joint Schedule 2 (Variation Form)', font: 'Calibri' - li 'Joint Schedule 3 (Insurance Requirements)', font: 'Calibri' - li do - text 'Joint Schedule 4 ', font: 'Calibri' - text 'NOT USED', bold: true, font: 'Calibri' - end - li 'Joint Schedule 6 (Key Subcontractors)', font: 'Calibri' - li 'Joint Schedule 7 (Financial Distress)', font: 'Calibri' - li 'Joint Schedule 10 (Rectification Plan)', font: 'Calibri' - li do - text 'Joint Schedule 8 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Joint Schedule 9 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li 'Call-Off Schedule 1 (Transparency Reports)', font: 'Calibri' - li 'Call-Off Schedule 2 (Staff Transfer)', font: 'Calibri' do - ul do - li 'Call-Off Schedule 2: Part A (Staff Transfer At Start Date – Outsourcing From the Buyer)', font: 'Calibri' - li 'Call-Off Schedule 2: Part B (Staff Transfer At Start Date – Transfer From Former Supplier)', font: 'Calibri' - li 'Call-Off Schedule 2: Part C (No Staff Transfer On Start Date)', font: 'Calibri' - li 'Call-Off Schedule 2: Part D (Pensions)', font: 'Calibri' do - ul do - li 'Annex D1 (CSPS)', font: 'Calibri' - li 'Annex D2 (NHSPS)', font: 'Calibri' - li 'Annex D3 (LGPS)', font: 'Calibri' - end - end - li 'Call-Off Schedule 2: Part E (Staff Transfer on Exit)', font: 'Calibri' - end - end - li 'Call-Off Schedule 3 (Continuous Improvement)', font: 'Calibri' - li 'Call-Off Schedule 4A (Billable Works and Projects)', font: 'Calibri' - li 'Call-Off Schedule 5 (Call-Off Pricing)', font: 'Calibri' - li 'Call-Off Schedule 6 (TUPE Surcharge)', font: 'Calibri' - li 'Call-Off Schedule 23 NOT USED', font: 'Calibri' - li 'Call-Off Schedule 7 (Key Staff)', font: 'Calibri' - li 'Call-Off Schedule 8 (Business Continuity and Disaster Recovery)', font: 'Calibri' - li 'Call-Off Schedule 9 (Security)', font: 'Calibri' - li 'Call-Off Schedule 10 (Exit Management)', font: 'Calibri' - li do - text 'Call-Off Schedule 11 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 12 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li 'Call-Off Schedule 13 (Mobilisation Plan and Testing)', font: 'Calibri' - li do - text 'Call-Off Schedule 14 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 15 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 16 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 17 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 18 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 19 ', font: 'Calibri' - text 'NOT USED', bold: true, font: 'Calibri' - end - li do - text 'Call-Off Schedule 20 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 21 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 24 (Scottish Law) ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 21 (Northern Ireland Law) ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - end - end - li 'The CCS Core Terms (v3.0.2)', font: 'Calibri' - li 'Joint Schedule 5 (Corporate Social Responsibility).', font: 'Calibri' - li do - text 'Call-off Schedule 22 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - end -end - -if @procurement.governing_law == 'scottish' - docx.ol do - li 'This Order Form', font: 'Calibri' - li 'Joint Schedule 1 (Definitions)', font: 'Calibri' - li 'Joint Schedule 11 (Processing Data)', font: 'Calibri' - li 'Call Off Schedule 4 (Facilities Management)', font: 'Calibri' - li 'The following Schedules (each taking equal precedence):', font: 'Calibri' do - ul do - li 'Joint Schedule 2 (Variation Form)', font: 'Calibri' - li 'Joint Schedule 3 (Insurance Requirements)', font: 'Calibri' - li do - text 'Joint Schedule 4 ', font: 'Calibri' - text 'NOT USED', bold: true, font: 'Calibri' - end - li 'Joint Schedule 6 (Key Subcontractors)', font: 'Calibri' - li 'Joint Schedule 7 (Financial Distress)', font: 'Calibri' - li 'Joint Schedule 10 (Rectification Plan)', font: 'Calibri' - li do - text 'Joint Schedule 8 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Joint Schedule 9 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li 'Call-Off Schedule 1 (Transparency Reports)', font: 'Calibri' - li 'Call-Off Schedule 2 (Staff Transfer)', font: 'Calibri' do - ul do - li 'Call-Off Schedule 2: Part A (Staff Transfer At Start Date – Outsourcing From the Buyer)', font: 'Calibri' - li 'Call-Off Schedule 2: Part B (Staff Transfer At Start Date – Transfer From Former Supplier)', font: 'Calibri' - li 'Call-Off Schedule 2: Part C (No Staff Transfer On Start Date)', font: 'Calibri' - li 'Call-Off Schedule 2: Part D (Pensions)', font: 'Calibri' do - ul do - li 'Annex D1 (CSPS)', font: 'Calibri' - li 'Annex D2 (NHSPS)', font: 'Calibri' - li 'Annex D3 (LGPS)', font: 'Calibri' - end - end - li 'Call-Off Schedule 2: Part E (Staff Transfer on Exit)', font: 'Calibri' - end - end - li 'Call-Off Schedule 3 (Continuous Improvement)', font: 'Calibri' - li 'Call-Off Schedule 4A (Billable Works and Projects)', font: 'Calibri' - li 'Call-Off Schedule 5 (Call-Off Pricing)', font: 'Calibri' - li 'Call-Off Schedule 6 (TUPE Surcharge)', font: 'Calibri' - li 'Call-Off Schedule 23 NOT USED', font: 'Calibri' - li 'Call-Off Schedule 7 (Key Staff)', font: 'Calibri' - li 'Call-Off Schedule 8 (Business Continuity and Disaster Recovery)', font: 'Calibri' - li 'Call-Off Schedule 9 (Security)', font: 'Calibri' - li 'Call-Off Schedule 10 (Exit Management)', font: 'Calibri' - li do - text 'Call-Off Schedule 11 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 12 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li 'Call-Off Schedule 13 (Mobilisation Plan and Testing)', font: 'Calibri' - li do - text 'Call-Off Schedule 14 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 15 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 16 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 17 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 18 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 19 ', font: 'Calibri' - text 'NOT USED', bold: true, font: 'Calibri' - end - li do - text 'Call-Off Schedule 20 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 21 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 24 (Scottish Law) ', font: 'Calibri' - end - li do - text 'Call-Off Schedule 21 (Northern Ireland Law) ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - end - end - li 'The CCS Core Terms (v3.0.2)', font: 'Calibri' - li 'Joint Schedule 5 (Corporate Social Responsibility).', font: 'Calibri' - li do - text 'Call-off Schedule 22 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - end -end - -if @procurement.governing_law == 'northern_ireland' - docx.ol do - li 'This Order Form', font: 'Calibri' - li 'Joint Schedule 1 (Definitions)', font: 'Calibri' - li 'Joint Schedule 11 (Processing Data)', font: 'Calibri' - li 'Call Off Schedule 4 (Facilities Management)', font: 'Calibri' - li 'The following Schedules (each taking equal precedence):', font: 'Calibri' do - ul do - li 'Joint Schedule 2 (Variation Form)', font: 'Calibri' - li 'Joint Schedule 3 (Insurance Requirements)', font: 'Calibri' - li do - text 'Joint Schedule 4 ', font: 'Calibri' - text 'NOT USED', bold: true, font: 'Calibri' - end - li 'Joint Schedule 6 (Key Subcontractors)', font: 'Calibri' - li 'Joint Schedule 7 (Financial Distress)', font: 'Calibri' - li 'Joint Schedule 10 (Rectification Plan)', font: 'Calibri' - li do - text 'Joint Schedule 8 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Joint Schedule 9 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li 'Call-Off Schedule 1 (Transparency Reports)', font: 'Calibri' - li 'Call-Off Schedule 2 (Staff Transfer)', font: 'Calibri' do - ul do - li 'Call-Off Schedule 2: Part A (Staff Transfer At Start Date – Outsourcing From the Buyer)', font: 'Calibri' - li 'Call-Off Schedule 2: Part B (Staff Transfer At Start Date – Transfer From Former Supplier)', font: 'Calibri' - li 'Call-Off Schedule 2: Part C (No Staff Transfer On Start Date)', font: 'Calibri' - li 'Call-Off Schedule 2: Part D (Pensions)', font: 'Calibri' do - ul do - li 'Annex D1 (CSPS)', font: 'Calibri' - li 'Annex D2 (NHSPS)', font: 'Calibri' - li 'Annex D3 (LGPS)', font: 'Calibri' - end - end - li 'Call-Off Schedule 2: Part E (Staff Transfer on Exit)', font: 'Calibri' - end - end - li 'Call-Off Schedule 3 (Continuous Improvement)', font: 'Calibri' - li 'Call-Off Schedule 4A (Billable Works and Projects)', font: 'Calibri' - li 'Call-Off Schedule 5 (Call-Off Pricing)', font: 'Calibri' - li 'Call-Off Schedule 6 (TUPE Surcharge)', font: 'Calibri' - li 'Call-Off Schedule 23 NOT USED', font: 'Calibri' - li 'Call-Off Schedule 7 (Key Staff)', font: 'Calibri' - li 'Call-Off Schedule 8 (Business Continuity and Disaster Recovery)', font: 'Calibri' - li 'Call-Off Schedule 9 (Security)', font: 'Calibri' - li 'Call-Off Schedule 10 (Exit Management)', font: 'Calibri' - li do - text 'Call-Off Schedule 11 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 12 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li 'Call-Off Schedule 13 (Mobilisation Plan and Testing)', font: 'Calibri' - li do - text 'Call-Off Schedule 14 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 15 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 16 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 17 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 18 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 19 ', font: 'Calibri' - text 'NOT USED', bold: true, font: 'Calibri' - end - li do - text 'Call-Off Schedule 20 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 21 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 24 (Scottish Law) ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - li do - text 'Call-Off Schedule 21 (Northern Ireland Law) ', font: 'Calibri' - end - end - end - li 'The CCS Core Terms (v3.0.2)', font: 'Calibri' - li 'Joint Schedule 5 (Corporate Social Responsibility).', font: 'Calibri' - li do - text 'Call-off Schedule 22 ', font: 'Calibri' - text 'NOT USED', font: 'Calibri', bold: true - end - end -end - -docx.p 'No other terms whether written on the back of, appended to this Order Form, or presented at the time of delivery shall form part of the Call-Off Contract.', font: 'Calibri' - -docx.p - -docx.p 'CALL-OFF SPECIAL TERMS:', bold: true, font: 'Calibri' - -docx.p 'The following Special Term shall be incorporated into this Call-Off Contract:', font: 'Calibri' - -docx.p - -docx.p 'TUPE OPTION:', bold: true, font: 'Calibri' - -docx.p "TUPE is #{'not ' unless @procurement.tupe?}considered applicable to this Call-off Contract.", font: 'Calibri' - -docx.p 'The TUPE Risk Premium calculation applied is therefore OPTION 1 – DIRECT AWARD – TUPE RISK PREMIUM (See Call-Off Schedule 6 – TUPE Surcharge)', font: 'Calibri' if @procurement.tupe? - -docx.p - -docx.p 'GOVERNING LAW:', bold: true, font: 'Calibri' - -docx.p 'The governing law for this Call-Off Contract shall be English Law.', font: 'Calibri' if @procurement.governing_law == 'english' - -docx.p 'The governing law for this Call-Off Contract shall be Scottish Law.', font: 'Calibri' if @procurement.governing_law == 'scottish' - -docx.p 'The governing law for this Call-Off Contract shall be Northern Ireland Law.', font: 'Calibri' if @procurement.governing_law == 'northern_ireland' - -docx.p - -docx.p 'KEY DATES:', bold: true, font: 'Calibri' - -docx.p 'EFFECTIVE DATE & DATE THE CONTRACT PERIOD / TERM COMMENCES: [Day Month Year]', font: 'Calibri' - -docx.p 'MOBILISATION PERIOD: None', font: 'Calibri' unless @procurement.mobilisation_period_required - -docx.p "MOBILISATION PERIOD: #{mobilisation_period} – #{@procurement.mobilisation_start_date.strftime('%d-%m-%Y')} to #{@procurement.mobilisation_end_date.strftime('%d-%m-%Y')}", font: 'Calibri' if @procurement.mobilisation_period_required - -docx.p "START DATE / DATE THE CALL-OFF INITIAL PERIOD COMMENCES / DATE CONTRACT YEAR 1 COMMENCES: #{@procurement.initial_call_off_start_date.strftime('%d-%m-%Y')}", font: 'Calibri' - -docx.p "DATE CALL-OFF INITIAL PERIOD ENDS: #{@procurement.initial_call_off_end_date.strftime('%d-%m-%Y')}", font: 'Calibri' - -docx.p "CALL-OFF INITIAL PERIOD: #{initial_call_off_period}", font: 'Calibri' - -docx.p "CALL-OFF OPTIONAL EXTENSIONS: #{@procurement.extensions_required ? 'Yes' : 'None'}", font: 'Calibri' - -(0..3).each do |call_off_period| - if !@procurement.extensions_required || @procurement.call_off_extension(call_off_period).nil? - docx.p "CALL-OFF OPTIONAL EXTENSION PERIOD #{call_off_period + 1}: Not used", font: 'Calibri' - next - else - docx.p "CALL-OFF OPTIONAL EXTENSION PERIOD #{call_off_period + 1}: #{@procurement.extension_period_start_date(call_off_period).strftime('%d-%m-%Y')} to #{@procurement.extension_period_end_date(call_off_period).strftime('%d-%m-%Y')}", font: 'Calibri' - end -end - -docx.p - -docx.p 'CALL-OFF DELIVERABLES:', bold: true, font: 'Calibri' - -docx.p 'The Deliverables per building, building locations, and Deliverables volume requirements are detailed within “Attachment 2 - Statement of Requirements - Deliverables Matrix (DA)” and shall be provided under this Call-Off Contract.', font: 'Calibri' - -docx.p - -docx.p 'CALL-OFF CHARGES:', bold: true, font: 'Calibri' - -docx.p 'The Charges have been calculated in accordance with Call-Off Schedule 5 (Call-Off Prices) on the basis of Direct Award Price as set out in the attached Pricing Matrix spreadsheet called “Attachment 3 - Price Matrix (DA)”', font: 'Calibri' - -docx.p - -docx.p 'The Charges shall not be impacted by any change to the Framework Prices and can only be changed by agreement in writing between the Buyer and the Supplier as a result of:', font: 'Calibri' - -docx.ul do - li '(i) indexation;', font: 'Calibri' - li '(ii) Specific Change in Law;', font: 'Calibri' -end - -docx.p - -docx.p 'MAXIMUM LIABILITY', bold: true, font: 'Calibri' - -docx.p 'The limitation of liability for this Call-Off Contract is stated in Clause 11.2 of the Core Terms.', font: 'Calibri' -docx.p - -docx.p 'ESTIMATED YEAR ONE CONTRACT CHARGES', bold: true, font: 'Calibri' - -docx.p 'The Estimated Year One Contract Charges shall be as detailed within the Pricing Matrix.', font: 'Calibri' -docx.page - -docx.p 'INDEXATION', bold: true, font: 'Calibri' - -if @procurement.initial_call_off_period < 1.year - docx.p 'Not Applicable', font: 'Calibri' -else - docx.p "The Payment Index that shall be applied in relation to indexation shall be the Consumer Price Index. - Indexation shall only apply from #{(@procurement.initial_call_off_start_date + 1.year).strftime('%d-%m-%Y')} and shall be applied on every yearly anniversary of the Start Date. - Indexation shall be applied to the Baseline Monthly Payment.", font: 'Calibri' -end - -docx.p - -docx.p 'PASS THROUGH COSTS', bold: true, font: 'Calibri' - -docx.p 'Not Applicable', font: 'Calibri' - -docx.p - -docx.p 'MORE FAVOURABLE COMMERCIAL TERMS', bold: true, font: 'Calibri' - -docx.p 'Not Applicable', font: 'Calibri' - -docx.p - -docx.p 'VARIATION THRESHOLD', bold: true, font: 'Calibri' - -docx.p 'Not Applicable', font: 'Calibri' - -docx.p -docx.p -docx.p - -docx.p 'BILLABLE WORKS', bold: true, font: 'Calibri' - -docx.p 'The estimated total value range for Billable Works shall be as set out below:', font: 'Calibri' - -docx.p - -docx.table([ - ['Tier', 'Estimated total value range '], - ['Tier One Billable Works', '£1001 - £5000'], - ['Tier Two Billable Works', '£5001 - £10,000'], - ['Tier Three Billable Works', '£10,001 - £25,000'], - ['Tier Four Billable Works', 'Above £25,000'] -], border_size: 1) do - cell_style rows[0], bold: true, font: 'Calibri' - cell_style rows[1..4], font: 'Calibri' -end - -docx.p 'The value of Billable Works not requiring approval is £0.', font: 'Calibri' - -docx.p 'Business Critical Events are to be determined during the Mobilisation period.', font: 'Calibri' - -docx.p - -docx.p 'METHOD OF PAYMENT', bold: true, font: 'Calibri' - -docx.p 'BACS (where selected then the Supplier shall pay any associated merchant fee levied for using the Government Procurement Card and shall not be entitled to recover this from CCS or the Buyer)', font: 'Calibri' if @procurement.payment_method == 'bacs' -docx.p 'Government procurement card (where selected then the Supplier shall pay any associated merchant fee levied for using the Government Procurement Card and shall not be entitled to recover this from CCS or the Buyer)', font: 'Calibri' if @procurement.payment_method == 'card' - -docx.p - -docx.p 'BUYER INVOICING ADDRESS:', bold: true, font: 'Calibri' - -docx.p @invoice_contact_detail.full_name, font: 'Calibri' -docx.p @invoice_contact_detail.job_title, font: 'Calibri' -docx.p @invoice_contact_detail.email, font: 'Calibri' -docx.p @invoice_contact_detail.full_organisation_address, font: 'Calibri' -docx.p - -docx.p 'BUYER AUTHORISED REPRESENTATIVE:', bold: true, font: 'Calibri' - -docx.p @authorised_contact_detail.full_name, font: 'Calibri' -docx.p @authorised_contact_detail.job_title, font: 'Calibri' -docx.p @authorised_contact_detail.email, font: 'Calibri' -docx.p @authorised_contact_detail.full_organisation_address, font: 'Calibri' -docx.p @authorised_contact_detail.telephone_number, font: 'Calibri' - -docx.p - -docx.p 'BUYER NOTICES:', bold: true, font: 'Calibri' - -docx.p @notice_contact_detail.full_name, font: 'Calibri' -docx.p @notice_contact_detail.job_title, font: 'Calibri' -docx.p @notice_contact_detail.email, font: 'Calibri' -docx.p @notice_contact_detail.full_organisation_address, font: 'Calibri' -docx.p - -docx.p 'BUYER SECURITY POLICY:', bold: true, font: 'Calibri' - -if @procurement.security_policy_document_required? - docx.p @procurement.security_policy_document_name, font: 'Calibri' - docx.p @procurement.security_policy_document_version_number, font: 'Calibri' - docx.p @procurement.security_policy_document_date.strftime('%d-%m-%Y'), font: 'Calibri' unless @procurement.security_policy_document_date.blank? - docx.p @procurement.security_policy_document_file.filename, font: 'Calibri' -else - docx.p 'Not Applicable', font: 'Calibri' -end - -docx.p - -docx.p 'PROGRESS REPORT FREQUENCY:', bold: true, font: 'Calibri' - -docx.p 'On the first Working Day of each calendar month', font: 'Calibri' - -docx.p - -docx.p 'PROGRESS MEETING FREQUENCY:', bold: true, font: 'Calibri' - -docx.p 'Quarterly on the first Working Day of each quarter', font: 'Calibri' -docx.p - -docx.p 'KEY ROLES/STAFF:', bold: true, font: 'Calibri' - -docx.p 'To be provided by Supplier during the Mobilisation period.', font: 'Calibri' -docx.p - -docx.p 'KEY SUBCONTRACTORS:', bold: true, font: 'Calibri' - -docx.p 'To be provided by Supplier during the Mobilisation period.', font: 'Calibri' -docx.p - -docx.p 'COMMERCIALLY SENSITIVE INFORMATION:', bold: true, font: 'Calibri' - -docx.p 'Not Applicable', font: 'Calibri' -docx.p - -docx.p 'SERVICE PERIOD:', bold: true, font: 'Calibri' - -docx.p 'Not Applicable', font: 'Calibri' -docx.p - -docx.p 'RISK REGISTER:', bold: true, font: 'Calibri' - -docx.p 'Not Applicable', font: 'Calibri' -docx.p - -docx.p 'SMALL AND MEDIUM SIZED ENTERPRISES', bold: true, font: 'Calibri' - -docx.p do - text 'The percentage of small and medium enterprises which apply in relation to Call-Off Schedule (4) (Facilities Management) is to be determined during the Mobilisation period.', font: 'Calibri' - text ' Insert percentage', bold: true, font: 'Calibri' - text ' %', bold: true, underline: true, font: 'Calibri' -end - -docx.p - -docx.p 'RELEVANT CONVICTIONS:', bold: true, font: 'Calibri' - -docx.p 'Not Applicable', font: 'Calibri' - -docx.p - -docx.p 'SOCIAL VALUE COMMITMENT', bold: true, font: 'Calibri' - -docx.p 'Not Applicable', font: 'Calibri' - -docx.page - -docx.table([ - ['For and on behalf of the Supplier:', '', 'For and on behalf of the Buyer:', ''], - ['Signature:', '', 'Signature:', ''], - ['Role:', '', 'Role:', ''], - ['Date:', '', 'Date:', ''] -], border_size: 1) do - cell_style rows[0], bold: true, font: 'Calibri' - cell_style rows[1..3], font: 'Calibri' -end - -docx.p - -docx.p 'Signed underhand', align: :right, bold: true, font: 'Calibri' - -docx.p - -docx.p 'Part B - Call-Off Schedules', align: :center, bold: true, font: 'Calibri' -docx.p 'All Schedules listed within Part A are to be found within the zipped folder.', font: 'Calibri' -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p -docx.p 'Order Form and Call-Off Schedules', size: 16, font: 'Calibri', bottom: 0 -docx.p "#{@buyer_detail.organisation_name} #{@contract.contract_number}", size: 16, font: 'Calibri', bottom: 0 -docx.p 'Direct Award v3.0', size: 16, font: 'Calibri', bottom: 0 -docx.p '© Crown Copyright 2020', size: 16, font: 'Calibri', bottom: 0 diff --git a/app/views/facilities_management/rm3830/procurements/contracts/documents/call_off_schedule_2.docx.caracal b/app/views/facilities_management/rm3830/procurements/contracts/documents/call_off_schedule_2.docx.caracal deleted file mode 100644 index 6450b14a0c..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/documents/call_off_schedule_2.docx.caracal +++ /dev/null @@ -1,2943 +0,0 @@ -docx.font name: 'Calibri' - -docx.page_size do - width 11905 - height 16837 - orientation :portrait -end - -docx.page_numbers true do - align :left - label '' -end - -c1 = Caracal::Core::Models::TableCellModel.new do - vertical_align 'center' - - p 'Call-Off Schedule 2 (Staff Transfer) Direct Award v3.0', bold: true, size: 24, font: 'Calibri' - p 'Crown Copyright 2020', size: 24, font: 'Calibri' - end -c2 = Caracal::Core::Models::TableCellModel.new do - width 2500 - - img File.join(Rails.root, 'app', 'assets', 'images', 'ccs-bidpack-logo.png'), width: 90, height: 75, align: :right - end - -docx.table [[c1, c2]], border_line: nil - -['BUYER', 'AND', 'SUPPLIER', 'FACILITIES MANAGEMENT MARKETPLACE CONTRACT', 'REF: RM3830'].each do |sentence| - docx.p sentence, bold: true, size: 24, font: 'Calibri', align: :center -end - -docx.page - -docx.font name: 'Calibri' - -docx.p "[Guidance note: Buyers will need to ensure that appropriate provisions are included to deal with staff transfer on both entry and exit, and, irrespective of whether TUPE does apply on entry if there are employees eligible for New Fair Deal pension protection then the appropriate pensions provisions will also need to be selected.", italic: true, bold: true, font: 'Calibri' -docx.p -docx.p 'If there is a staff transfer from the Buyer on entry (1st generation) then Part A shall apply.', italic: true, bold: true, font: 'Calibri' -docx.p -docx.p 'If there is a staff transfer from former/incumbent supplier on entry (2nd generation), Part B shall apply.', italic: true, bold: true, font: 'Calibri' -docx.p -docx.p 'If there is both a 1st and 2nd generation staff transfer on entry, then both Part A and Part B shall apply.', italic: true, bold: true, font: 'Calibri' -docx.p -docx.p 'If either Part A and/or Part B apply, then consider whether Part D (Pensions) shall apply and the Buyer shall indicate on the Order which Annex shall apply (either D1 (CSPS), D2 (NHSPS), or D3 (LGPS)). Part D pensions may also apply where there is not a TUPE transfer for example where the incumbent provider is successful.', italic: true, bold: true, font: 'Calibri' -docx.p -docx.p 'If there is no staff transfer (either 1st generation or 2nd generation) at the Start Date then Part C shall apply and Part D pensions may also apply where there is not a TUPE transfer for example where the incumbent provider is successful.', italic: true, bold: true, font: 'Calibri' -docx.p -docx.p 'If the position on staff transfers is not known at the bid stage, include Parts A, B, C and D at the bid stage and then update the Buyer Contract Details before signing to specify whether Parts A and/or B, or C and D apply to the Contract.', italic: true, bold: true, font: 'Calibri' -docx.p -docx.p 'Part E (dealing with staff transfer on exit) shall apply to every Contract.]', italic: true, bold: true, font: 'Calibri' -docx.p - -docx.p 'The following definition shall apply to this Call-Off Schedule 2 (Staff Transfer):', font: 'Calibri' -docx.p - -docx.table [['"Term"', 'means the period commencing on the Start Date and ending on the expiry of the Initial Period or any Extension Period or on earlier termination of the relevant Contract;']], border_size: 1, font: 'Calibri' do - cell_style rows[0], bold: true, font: 'Calibri' -end - -docx.page - -docx.p 'CALL-OFF SCHEDULE 2', align: :center, bold: true, font: 'Calibri' -docx.p -docx.p 'STAFF TRANSFER', align: :center, bold: true, font: 'Calibri' - -docx.table( - [ - [ - '1.', - 'INTERPRETATION' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '', - 'Where a provision in this Schedule imposes any obligation on the Supplier including (without limit) to comply with a requirement or provide an indemnity, undertaking or warranty, the Supplier shall procure that each of its Subcontractors shall comply with such obligation and provide such indemnity, undertaking or warranty to the CCS, the Buyer, Former Supplier, Replacement Supplier or Replacement Subcontractor, as the case may be and where the Subcontractor fails to satisfy any claims under such indemnities the Supplier will be liable for satisfying any such claim as if it had provided the indemnity itself.' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '2.', - 'APPLICATION OF THIS SCHEDULE' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '', - 'The Parts of this Schedule which shall apply to the Contract are specified in the Buyer Contract Details.' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.page - -docx.p 'PART A: STAFF TRANSFER AT START DATE – OUTSOURCING FROM THE BUYER (OPTIONAL)', align: :center, bold: true, font: 'Calibri' - -docx.table( - [ - [ - '1.', - 'RELEVANT TRANSFERS' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '1.1', - 'The Buyer and the Supplier agree that:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '1.1.1', - 'the commencement of the provision of the Services or of each relevant part of the Services will be a Relevant Transfer in relation to the Transferring Buyer Employees; and' - ], - [ - '', - '1.1.2', - 'as a result of the operation of the Employment Regulations, the contracts of employment between the Buyer and the Transferring Buyer Employees (except in relation to any terms disapplied through operation of regulation 10(2) of the Employment Regulations) will have effect on and from the Relevant Transfer Date as if originally made between the Supplier and/or any Subcontractor and each such Transferring Buyer Employee.' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '1.2', - 'The Buyer shall comply with all its obligations under the Employment Regulations and shall perform and discharge all its obligations in respect of the Transferring Buyer Employees in respect of the period arising up to (but not including) the Relevant Transfer Date including (without limit) the payment of all remuneration, benefits, entitlements, PAYE, national insurance contributions and pension contributions.' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '2.', - 'BUYER INDEMNITIES' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '2.1', - 'Subject to Paragraph 2.2, the Buyer shall indemnify the Supplier and any Subcontractor against any Employee Liabilities arising from or as a result of any act or omission by the indemnifying party in respect of any Transferring Buyer Employee or any appropriate employee representative (as defined in the Employment Regulations) of any Transferring Buyer Employee occurring before the Relevant Transfer Date. ' - ], - [ - '2.2', - 'The indemnities in Paragraph 2.1 shall not apply to the extent that the Employee Liabilities arise or are attributable to an act or omission of the Supplier or any Subcontractor whether occurring or having its origin before, on or after the Relevant Transfer Date.' - ], - [ - '2.3', - 'Subject to Paragraphs 2.4 and 2.5, if any employee of the Buyer who is not identified as a Transferring Buyer Employee claims, or it is determined in relation to any employees of the Buyer, that his/her contract of employment has been transferred from the Buyer to the Supplier and/or any Subcontractor pursuant to the Employment Regulations then -' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '2.3.1', - 'the Supplier will, within 5 Working Days of becoming aware of that fact, notify the Buyer in writing;' - ], - [ - '', - '2.3.2', - 'the Buyer may offer employment to such person, or take such other steps as it considers appropriate to resolve the matter, within 10 Working Days of receipt of notice from the Supplier;' - ], - [ - '', - '2.3.3', - 'if such offer of employment is accepted, the Supplier shall immediately release the person from its employment;' - ], - [ - '', - '2.3.4', - 'if after the period referred to in Paragraph 2.3.2 no such offer has been made, or such offer has been made but not accepted, the Supplier may within 5 Working Days give notice to terminate the employment of such person;' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '', - "and subject to the Supplier's compliance with Paragraphs 2.3.1 to 2.3.4 the Buyer will indemnify the Supplier and/or the relevant Subcontractor against all Employee Liabilities arising out of the termination of the employment of any of the Buyer's employees referred to in this Paragraph 2.3." - ], - [ - '2.4', - 'The indemnity in Paragraph 2.3 shall not apply to any claim:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '2.4.1', - 'for discrimination, including on the grounds of sex, race, disability, age, gender reassignment, marriage or civil partnership, pregnancy and maternity or sexual orientation, religion or belief or equal pay or compensation for less favourable treatment of part-time workers or fixed-term employees in relation to any alleged act or omission of the Supplier and/or any Subcontractor; or' - ], - [ - '', - '2.4.2', - '(b) any claim that the termination of employment was unfair because the Supplier and/or any Subcontractor neglected to follow a fair dismissal procedure.' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '2.5', - 'The indemnity in Paragraph 2.3 shall not apply to any termination of employment occurring later than 3 Months from the Relevant Transfer Date.' - ], - [ - '2.6', - 'If the Supplier and/or any Subcontractor at any point accept the employment of any person as is described in Paragraph 2.3, such person shall be treated as having transferred to the Supplier and/or any Subcontractor and the Supplier shall comply with such obligations as may be imposed upon it under applicable Law.' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '3', - 'SUPPLIER INDEMNITIES AND OBLIGATIONS' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri', bold: true - cell_style cols[1], font: 'Calibri', bold: true - end - -docx.table( - [ - [ - '3.1', - 'Subject to Paragraph 3.2, the Supplier shall indemnify the Buyer against any Employee Liabilities arising from or as a result of any act or omission by the Supplier or any Subcontractor in respect of any Transferring Buyer Employee or any appropriate employee representative (as defined in the Employment Regulations) of any Transferring Buyer Employee whether occurring before, on or after the Relevant Transfer Date.' - ], - [ - '3.2', - "The indemnities in Paragraph 3.1 shall not apply to the extent that the Employee Liabilities arise or are attributable to an act or omission of the Buyer whether occurring or having its origin before, on or after the Relevant Transfer Date including, without limitation, any Employee Liabilities arising from the Buyer's failure to comply with its obligations under the Employment Regulations." - ], - [ - '3.3', - 'The Supplier shall comply with all its obligations under the Employment Regulations and shall perform and discharge all its obligations in respect of the Transferring Buyer Employees, from (and including) the Relevant Transfer Date including (without limit) the payment of all remuneration, benefits, entitlements, PAYE, national insurance contributions and pension contributions and any other sums due under Part D: Pensions.' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '4.', - 'INFORMATION' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri', bold: true - cell_style cols[1], font: 'Calibri', bold: true - end - -docx.table( - [ - [ - '', - 'The Supplier shall promptly provide to the Buyer in writing such information as is necessary to enable the Buyer to carry out its duties under regulation 13 of the Employment Regulations. The Buyer shall promptly provide to the Supplier in writing such information as is necessary to enable the Supplier and any Subcontractor to carry out their respective duties under regulation 13 of the Employment Regulations' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '5.', - 'PRINCIPLES OF GOOD EMPLOYMENT PRACTICE' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri', bold: true - cell_style cols[1], font: 'Calibri', bold: true - end - -docx.table( - [ - [ - '5.1', - 'The Parties agree that the Principles of Good Employment Practice issued by the Cabinet Office in December 2010 apply to the treatment by the Supplier of employees whose employment begins after the Relevant Transfer Date, and the Supplier undertakes to treat such employees in accordance with the provisions of the Principles of Good Employment Practice.' - ], - [ - '5.2', - "The Supplier shall comply with any requirement notified to it by the Buyer relating to pensions in respect of any Transferring Buyer Employee as set down in (i) the Cabinet Office Statement of Practice on Staff Transfers in the Public Sector of January 2000, revised 2007; (ii) HM Treasury's guidance \"Staff Transfers from Central Government: A Fair Deal for Staff Pensions of 1999; (iii) HM Treasury's guidance \"Fair deal for staff pensions: procurement of Bulk Transfer Agreements and Related Issues\" of June 2004; and/or (iv) the New Fair Deal." - ], - [ - '5.3', - 'Any changes embodied in any statement of practice, paper or other guidance that replaces any of the documentation referred to in Paragraphs 5.1 or 5.2 shall be agreed in accordance with the Variation Procedure.' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '6.', - 'PENSIONS' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri', bold: true - cell_style cols[1], font: 'Calibri', bold: true - end - -docx.table( - [ - [ - '6.1', - 'The Supplier shall comply with:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '6.1.1', - 'all statutory pension obligations in respect of all Transferring Buyer Employees; and' - ], - [ - '', - '6.1.2', - 'the provisions in Part D: Pensions.' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.page - -docx.p 'PART B: STAFF TRANSFER AT START DATE – TRANSFER FROM FORMER SUPPLIER ON REPROCUREMENT (OPTIONAL)', align: :center, bold: true, font: 'Calibri' - -docx.table( - [ - [ - '1.', - 'RELEVANT TRANSFERS' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri', bold: true - cell_style cols[1], font: 'Calibri', bold: true - end - -docx.table( - [ - [ - '1.1', - 'The Buyer and the Supplier agree that:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '1.1.1', - 'the commencement of the provision of the Services or of any relevant part of the Services will be a Relevant Transfer in relation to the Transferring Former Supplier Employees; and ' - ], - [ - '', - '1.1.2', - 'as a result of the operation of the Employment Regulations, the contracts of employment between each Former Supplier and the Transferring Former Supplier Employees (except in relation to any terms disapplied through the operation of regulation 10(2) of the Employment Regulations) shall have effect on and from the Relevant Transfer Date as if originally made between the Supplier and/or any Subcontractor and each such Transferring Former Supplier Employee.' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '1.2', - 'The Buyer shall procure that each Former Supplier shall comply with all its obligations under the Employment Regulations and shall perform and discharge all its obligations in respect of all the Transferring Former Supplier Employees in respect of the period up to (but not including) the Relevant Transfer Date including (without limit) the payment of all remuneration, benefits, entitlements, PAYE, national insurance contributions and pension contributions.' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '2.', - 'FORMER SUPPLIER INDEMNITIES' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri', bold: true - cell_style cols[1], font: 'Calibri', bold: true - end - -docx.table( - [ - [ - '2.1', - 'Subject to Paragraph 2.2, the Buyer shall procure that each Former Supplier shall indemnify the Supplier and any Subcontractor against any Employee Liabilities arising from or as a result of any act or omission by the Former Supplier in respect of any Transferring Former Supplier Employee or any appropriate employee representative (as defined in the Employment Regulations) of any Transferring Former Supplier Employee arising before the Relevant Transfer Date;' - ], - [ - '2.2', - 'The indemnities in Paragraph 2.1 shall not apply to the extent that the Employee Liabilities arise or are attributable to an act or omission of the Supplier or any Subcontractor whether occurring or having its origin before, on or after the Relevant Transfer Date.' - ], - [ - '2.3', - 'Subject to Paragraphs 2.4 and 2.5, if any employee of a Former Supplier who is not identified as a Transferring Former Supplier Employee and claims, and/or it is determined, in relation to such person that his/her contract of employment has been transferred from a Former Supplier to the Supplier and/or any Notified Subcontractor pursuant to the Employment Regulations then:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '2.3.1', - 'the Supplier will within 5 Working Days of becoming aware of that fact notify the Buyer and the relevant Former Supplier in writing;' - ], - [ - '', - '2.3.2', - 'the Former Supplier may offer employment to such person, or take such other steps as it considers appropriate to resolve the matter, within 10 Working Days of receipt of notice from the Supplier;' - ], - [ - '', - '2.3.3', - 'if such offer of employment is accepted, the Supplier shall immediately release the person from its employment;' - ], - [ - '', - '2.3.4', - 'if after the period referred to in Paragraph 2.3.2 no such offer has been made, or such offer has been made but not accepted, the Supplier may within 5 Working Days give notice to terminate the employment of such person;' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '', - "and subject to the Supplier's compliance with Paragraphs 2.3.1 to 2.3.4 the Buyer shall procure that the Former Supplier will indemnify the Supplier and/or the relevant Subcontractor against all Employee Liabilities arising out of the termination of the employment of any of the Former Supplier's employees referred to in Paragraph 2.3." - ], - [ - '2.4', - 'The indemnity in Paragraph 2.3 shall not apply to any claim:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '2.4.1', - 'for discrimination, including on the grounds of sex, race, disability, age, gender reassignment, marriage or civil partnership, pregnancy and maternity or sexual orientation, religion or belief or equal pay or compensation for less favourable treatment of part-time workers or fixed-term employees, arising as a result of any alleged act or omission of the Supplier and/or any Subcontractor; or' - ], - [ - '', - '2.4.2', - 'that the termination of employment was unfair because the Supplier and/or Subcontractor neglected to follow a fair dismissal procedure.' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '2.5', - 'The indemnity in Paragraph 2.3 shall not apply to any termination of employment occurring later than 3 Months from the Relevant Transfer Date.' - ], - [ - '2.6', - 'If the Supplier and/or any Subcontractor at any point accept the employment of any person as is described in Paragraph 2.3, such person shall be treated as having transferred to the Supplier and/or any Subcontractor and the Supplier shall comply with such obligations as may be imposed upon it under applicable Law.' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '3.', - 'SUPPLIER INDEMNITIES AND OBLIGATIONS' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri', bold: true - cell_style cols[1], font: 'Calibri', bold: true - end - -docx.table( - [ - [ - '3.1', - 'Subject to Paragraph 3.1, the Supplier shall indemnify the Buyer, and the Former Supplier against any Employee Liabilities arising from or as a result of any act or omission by the Supplier or any Subcontractor in respect of any Transferring Former Supplier Employee or any appropriate employee representative (as defined in the Employment Regulations) of any Transferring Former Supplier Employee whether occurring before, on or after the Relevant Transfer Date.' - ], - [ - '3.2', - 'The indemnities in Paragraph 3.1 shall not apply to the extent that the Employee Liabilities arise or are attributable to an act or omission of the Former Supplier whether occurring or having its origin before, on or after the Relevant Transfer Date including, without limitation, any Employee Liabilities arising from the Former Supplier’s failure to comply with its obligations under the Employment Regulations.' - ], - [ - '3.3', - 'The Supplier shall comply with all its obligations under the Employment Regulations and shall perform and discharge all its obligations in respect of all the Transferring Former Supplier Employees, on and from the Relevant Transfer Date including (without limit) the payment of all remuneration, benefits, entitlements, PAYE, national insurance contributions and pension contributions and all such sums due under Part D: Pensions.' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '4.', - 'INFORMATION' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri', bold: true - cell_style cols[1], font: 'Calibri', bold: true - end - -docx.table( - [ - [ - '', - 'The Supplier shall promptly provide to the Buyer and/or at the Buyer’s direction, the Former Supplier, in writing such information as is necessary to enable the Buyer and/or the Former Supplier to carry out their respective duties under regulation 13 of the Employment Regulations. The Buyer shall procure that the Former Supplier shall promptly provide to the Supplier in writing such information as is necessary to enable the Supplier and any Subcontractor to carry out their respective duties under regulation 13 of the Employment Regulations.' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '5.', - 'PRINCIPLES OF GOOD EMPLOYMENT PRACTICE' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri', bold: true - cell_style cols[1], font: 'Calibri', bold: true - end - -docx.table( - [ - [ - '5.1', - "The Supplier shall comply with any requirement notified to it by the Buyer relating to pensions in respect of any Transferring Former Supplier Employee as set down in (i) the Cabinet Office Statement of Practice on Staff Transfers in the Public Sector of January 2000, revised 2007; (ii) HM Treasury's guidance \"Staff Transfers from Central Government: A Fair Deal for Staff Pensions of 1999; (iii) HM Treasury's guidance: \"Fair deal for staff pensions: procurement of Bulk Transfer Agreements and Related Issues\" of June 2004; and/or (iv) the New Fair Deal." - ], - [ - '5.2', - 'Any changes embodied in any statement of practice, paper or other guidance that replaces any of the documentation referred to in Paragraph 5.1 shall be agreed in accordance with the Change Control Procedure.' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '6.', - 'PROCUREMENT OBLIGATIONS' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri', bold: true - cell_style cols[1], font: 'Calibri', bold: true - end - -docx.table( - [ - [ - '', - 'Notwithstanding any other provisions of this Part B, where in this Part B the Buyer accepts an obligation to procure that a Former Supplier does or does not do something, such obligation shall be limited so that it extends only to the extent that the Buyer’s contract with the Former Supplier contains a contractual right in that regard which the Buyer may enforce, or otherwise so that it requires only that the Buyer’s must use reasonable endeavours to procure that the Former Supplier does or does not act accordingly.' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '7.', - 'PENSIONS' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri', bold: true - cell_style cols[1], font: 'Calibri', bold: true - end - -docx.table( - [ - [ - '7.1', - 'The Supplier shall comply with:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '7.1.1', - 'all statutory pension obligations in respect of all Transferring Former Supplier Employees; and' - ], - [ - '', - '7.1.2', - 'the provisions in Part D: Pensions.' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - - -docx.page - -docx.p "PART C: NO STAFF TRANSFER ON START DATE (OPTIONAL)", align: :center, bold: true, font: 'Calibri' - -docx.table( - [ - [ - '1.', - 'PROCEDURE IN THE EVENT OF TRANSFER' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri', bold: true - cell_style cols[1], font: 'Calibri', bold: true - end - -docx.table( - [ - [ - '1.1', - 'The Buyer and the Supplier agree that the commencement of the provision of the Services or of any part of the Services will not be a Relevant Transfer in relation to any employees of the Buyer and/or any Former Supplier. ' - ], - [ - '1.2', - 'Subject to Paragraphs 1.3, 1.4 and 1.5, if any employee of the Buyer and/or a Former Supplier claims, or it is determined in relation to any employee of the Buyer and/or a Former Supplier, that his/her contract of employment has been transferred from the Buyer and/or the Former Supplier to the Supplier and/or any Subcontractor pursuant to the Employment Regulations then:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '1.2.1', - 'the Supplier will, within 5 Working Days of becoming aware of that fact, notify the Buyer in writing;' - ], - [ - '', - '1.2.2', - 'the Buyer may offer employment to such person, or take such other steps as it considered appropriate to resolve the matter, within 10 Working Days of receipt of notice from the Supplier;' - ], - [ - '', - '1.2.3', - 'if such offer of employment is accepted, the Supplier shall immediately release the person from its employment;' - ], - [ - '', - '1.2.4', - 'if after the period referred to in Paragraph 1.2.2 no such offer has been made, or such offer has been made but not accepted, the Supplier may within 5 Working Days give notice to terminate the employment of such person;' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '', - "and subject to the Supplier's compliance with Paragraphs 1.2.1 to 1.2.4:" - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '', - '(a)', - "the Buyer will indemnify the Supplier and/or the relevant Subcontractor against all Employee Liabilities arising out of the termination of the employment of any of the Buyer's employees referred to in Paragraph 1.2; and " - ], - [ - '', - '', - '(b)', - 'the Buyer will procure that the Former Supplier indemnifies the Supplier and/or any Subcontractor against all Employee Liabilities arising out of termination of the employment of the employees of the Former Supplier referred to in Paragraph 1.2.' - ] - ] -) do - cell_style cols[0..2], width: 1000, font: 'Calibri' - cell_style cols[3], font: 'Calibri' - end - -docx.table( - [ - [ - '1.3', - 'The indemnities in Paragraph 1.2 shall not apply to any claim:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '1.3.1', - 'for discrimination, including on the grounds of sex, race, disability, age, gender reassignment, marriage or civil partnership, pregnancy and maternity or sexual orientation, religion or belief or equal pay or compensation for less favourable treatment of part-time workers or fixed-term employees in relation to any alleged act or omission of the Supplier and/or Subcontractor; or' - ], - [ - '', - '1.3.2', - 'any claim that the termination of employment was unfair because the Supplier and/or any Subcontractor neglected to follow a fair dismissal procedure' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '1.4', - 'The indemnities in Paragraph 1.2 shall not apply to any termination of employment occurring later than 3 Months from the Commencement Date.' - ], - [ - '1.5', - 'If the Supplier and/or the Subcontractor does not comply with Paragraph 1.2, all Employee Liabilities in relation to such employees shall remain with the Supplier and/or the Subcontractor and the Supplier shall (i) comply with the provisions of Part D: Pensions of this Schedule, and (ii) indemnify the Buyer and any Former Supplier against any Employee Liabilities that either of them may incur in respect of any such employees of the Supplier and/or employees of the Subcontractor.' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '2.', - 'PROCUREMENT OBLIGATIONS' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri', bold: true - cell_style cols[1], font: 'Calibri', bold: true - end - -docx.table( - [ - [ - '', - "Where in this Part C the Buyer accepts an obligation to procure that a Former Supplier does or does not do something, such obligation shall be limited so that it extends only to the extent that the Buyer's contract with the Former Supplier contains a contractual right in that regard which the Buyer may enforce, or otherwise so that it requires only that the Buyer must use reasonable endeavours to procure that the Former Supplier does or does not act accordingly." - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.page - -docx.p "PART D: PENSIONS", align: :center, bold: true, font: 'Calibri' - -docx.table( - [ - [ - '1.', - 'DEFINITIONS' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '', - "In this Part D, the following words have the following meanings and they shall supplement Schedule J1: Definitions, and shall be deemed to include the definitions set out in the Annexes:" - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '"Actuary"', - 'a Fellow of the Institute and Faculty of Actuaries;' - ], - [ - '', - '"Admission Agreement"', - 'means either or both of the CSPS Admission Agreement (as defined in Annex D1: CSPS) or the LGPS Admission Agreement) as defined in Annex D3: LGPS), as the context requires;' - ], - [ - '', - '"Broadly Comparable"', - '(a) in respect of a pension scheme, a status satisfying the condition that there are no identifiable employees who will suffer material detriment overall in terms of future accrual of pension benefits as assessed in accordance with Annex A of New Fair Deal and demonstrated by the issue by the Government Actuary’s Department of a broad comparability certificate; and' - ], - [ - '', - '', - '(b) in respect of benefits provided for or in respect of a member under a pension scheme, benefits that are consistent with that pension scheme’s certificate of broad comparability issued by the Government Actuary’s Department,' - ], - [ - '', - '', - 'and "Broad Comparability" shall be construed accordingly;' - ], - [ - '', - '"CSPS"', - 'the schemes as defined in Annex D1 to this Part D;' - ], - [ - '', - '"Fair Deal Employees"', - 'those:' - ], - [ - '', - '', - '(a) Transferring Buyer Employees; and/or' - ], - [ - '', - '', - '(b) Transferring Former Supplier Employees; and/or' - ], - [ - '', - '', - '(c) employees who are not Transferring Buyer Employees or Transferring Former Supplier Employees but to whom the Employment Regulations apply on the Relevant Transfer Date to transfer their employment to the Supplier or a Subcontractor, , and whose employment is not terminated in accordance with the provisions of Paragraphs 2.3.4 of Parts A or B or Paragraph 1.2.4 of Part C;' - ], - [ - '', - '', - '(d) where the Former Supplier becomes the Supplier those employees;' - ], - [ - '', - '', - 'who at the Commencement Date or Relevant Transfer Date (as appropriate) are or become entitled to New Fair Deal protection in respect of any of the Statutory Schemes as notified by the Buyer;' - ], - [ - '', - '"Fair Deal Schemes"', - 'means the relevant Statutory Scheme or a Broadly Comparable pension scheme;' - ], - [ - '', - '"Fund Actuary"', - 'means Fund Actuary as defined in Annex D3 to this Part D;' - ], - [ - '', - '"LGPS"', - 'the schemes as defined in Annex D3 to this Part D;' - ], - [ - '', - '"NHSPS"', - 'the schemes as defined in Annex D2 to this Part D;' - ], - [ - '', - '"New Fair Deal"', - 'the revised Fair Deal position set out in the HM Treasury guidance: "Fair Deal for Staff Pensions: Staff Transfer from Central Government" issued in October 2013 including:' - ], - [ - '', - '', - '(b) any amendments to that document immediately prior to the Relevant Transfer Date; and' - ], - [ - '', - '', - '(c) any similar pension protection in accordance with the subsequent Annex D1-D3 inclusive as notified to the Supplier by the CCS or Buyer; and' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], width: 3000, bold: true, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '2.', - 'PARTICIPATION' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '2.1', - 'In respect of all or any Fair Deal Employees each of Annex D1: CSPS, Annex D2: NHSPS and/or Annex D3: LGPS shall apply, as appropriate.' - ], - [ - '2.2', - 'The Supplier undertakes to do all such things and execute any documents (including any relevant Admission Agreement and/or Direction Letter, if necessary) as may be required to enable the Supplier to participate in the appropriate Statutory Scheme in respect of the Fair Deal Employees and shall bear its own costs in such regard.' - ], - [ - '2.3', - 'The Supplier undertakes:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '2.3.1', - 'to pay to the Statutory Schemes all such amounts as are due under the relevant Admission Agreement and/or Direction Letter or otherwise and shall deduct and pay to the Statutory Schemes such employee contributions as are required; and' - ], - [ - '', - '2.3.2', - 'subject to paragraph 6 of Annex D3 LGPS of this Part D and Schedule 6 the TUPE Surcharge, to be fully responsible for all other costs, contributions, payments and other amounts relating to its participation in the Statutory Schemes, including for the avoidance of doubt any exit payments and the costs of providing any bond, indemnity or guarantee required in relation to such participation.' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '3.', - 'PROVISION OF INFORMATION' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '3.1', - 'The Supplier undertakes to the Buyer:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '3.1.1', - 'to provide all information which the Buyer may reasonably request concerning matters referred to in this Part D as expeditiously as possible; and' - ], - [ - '', - '3.1.2', - 'not to issue any announcements to any Fair Deal Employee prior to the Relevant Transfer Date concerning the matters stated in this Part D without the consent in writing of the Buyer (such consent not to be unreasonably withheld or delayed).' - ], - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '4.', - 'INDEMNITIES' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '4.1', - 'The Supplier undertakes to the Buyer to indemnify and keep indemnified CCS, NHS Pensions the Buyer and/or any Replacement Supplier and/or any Replacement Subcontractor on demand from and against all and any Losses whatsoever arising out of or in connection with any liability towards all and any Fair Deal Employees arising in respect of service on or after the Relevant Transfer Date which arise from any breach by the Supplier of this Part D, and/or the CSPS Admission Agreement and/or the Direction Letter and/or the LGPS Admission Agreement or relates to the payment of benefits under and/or participation in an occupational pension scheme (within the meaning provided for in section 1 of the Pension Schemes Act 1993) or the Fair Deal Schemes. ' - ], - [ - '4.2', - 'The Supplier hereby indemnifies the CCS, NHS Pensions, the Buyer and/or any Replacement Supplier and/or Replacement Subcontractor from and against all Losses suffered or incurred by it or them which arise from claims by Fair Deal Employees of the Supplier and/or of any Subcontractor or by any trade unions, elected employee representatives or staff associations in respect of all or any such Fair Deal Employees which Losses:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '4.2.1', - 'relate to pension rights in respect of periods of employment on and after the Relevant Transfer Date until the date of termination or expiry of this Contract; or' - ], - [ - '', - '4.2.2', - 'arise out of the failure of the Supplier and/or any relevant Subcontractor to comply with the provisions of this Part D before the date of termination or expiry of this Contract.' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '4.3', - 'The indemnities in this Part D and its Annexes:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '4.3.1', - 'shall survive termination of this Contract; and' - ], - [ - '', - '4.3.2', - 'shall not be affected by the caps on liability contained in Clause 11 (How much you can be held responsible for).' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '5.', - 'DISPUTES' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '5.1', - 'The Dispute Resolution Procedure will not apply to this Part D and any dispute between the CCS and/or the Buyer and/or the Supplier or between their respective actuaries or the Fund Actuary about any of the actuarial matters referred to in this Part D and its Annexes shall in the absence of agreement between the CCS and/or the Buyer and/or the Supplier be referred to an independent Actuary: ' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '5.1.1', - 'who will act as an expert and not as an arbitrator;' - ], - [ - '', - '5.1.2', - 'whose decision will be final and binding on the CCS and/or the Buyer and/or the Supplier; and ' - ], - [ - '', - '5.1.3', - 'whose expenses shall be borne equally by the CCS and/or the Buyer and/or the Supplier unless the independent Actuary shall otherwise direct.' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '6.', - 'THIRD PARTY RIGHTS' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - - -docx.table( - [ - [ - '6.1', - 'The Parties agree Clause 19 (Other people’s rights in this contract) does not apply and that the CRTPA applies to this Part D to the extent necessary to ensure that any Fair Deal Employee will have the right to enforce any obligation owed to him or her or it by the Supplier under this Part D, in his or her or its own right under section 1(1) of the CRTPA. ' - ], - [ - '6.2', - 'Further, the Supplier must ensure that the CRTPA will apply to any Sub-Contract to the extent necessary to ensure that any Fair Deal Employee will have the right to enforce any obligation owed to them by the Subcontractor in his or her or its own right under section 1(1) of the CRTPA.' - ], - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '7.', - 'BREACH' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '7.1', - 'The Supplier agrees to notify the Buyer should it breach any obligations it has under this Part D and agrees that the Buyer shall be entitled to terminate its Contract for material Default in the event that the Supplier:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '7.1.1', - 'commits an irremediable breach of any provision or obligation it has under this Part D; or' - ], - [ - '', - '7.1.2', - 'commits a breach of any provision or obligation it has under this Part D which, where capable of remedy, it fails to remedy within a reasonable time and in any event within 28 days of the date of a notice from the Buyer giving particulars of the breach and requiring the Supplier to remedy it.' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '8.', - 'TRANSFER TO ANOTHER EMPLOYER/ SUB- CONTRACTORS' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '8.1', - 'Save on expiry or termination of this Contract, if the employment of any Fair Deal Employee transfers to another employer (by way of a transfer under the Employment Regulations) the Supplier shall and shall procure that any relevant Subcontractor shall:' - ] - ] -) do - cell_style cols[0], width: 1000 - end - -docx.table( - [ - [ - '', - '8.1.1', - 'consult with and inform those Fair Deal Employees of the pension provisions relating to that transfer; and' - ], - [ - '', - '8.1.2', - 'procure that the employer to which the Fair Deal Employees are transferred (the "New Employer") complies with the provisions of this Part D and its Annexes provided that references to the "Supplier" will become references to the New Employer, references to "Relevant Transfer Date" will become references to the date of the transfer to the New Employer and references to "Fair Deal Employees" will become references to the Fair Deal Employees so transferred to the New Employer.' - ] - ] -) do - cell_style cols[0], width: 1000 - cell_style cols[1], width: 1000 - end - -docx.table( - [ - [ - '9.', - 'PENSION ISSUES ON EXPIRY OR TERMINATION' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '', - 'The provisions of Part E: Staff Transfer on Exit (Mandatory) apply in relation to pension issues on expiry or termination of this Contract.' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '10.', - 'BROADLY COMPARABLE PENSION SCHEMES' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '10.1', - 'If either:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '10.1.1', - 'the terms of any of Paragraphs 2.2 of Annex D1: CSPS, 5.2 of Annex D2: NHSPS and or 4 of Annex D3: LGPS apply; and/or' - ], - [ - '', - '10.1.2', - 'the Buyer agrees, having considered the exceptional cases provided for in New Fair Deal, (such agreement not to be unreasonably withheld) that the Supplier (and/or its Subcontractors, if any) need not continue to provide the Fair Deal Employees, who continue to qualify for Fair Deal Protection, with access to the appropriate Statutory Scheme;' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '', - 'the Supplier must (and must, where relevant, procure that each of its Subcontractors will) ensure that, with effect from the Relevant Transfer Date or if later cessation of participation in the Statutory Scheme until the day before the Service Transfer Date, the relevant Fair Deal Employees will be eligible for membership of a pension scheme under which the benefits are Broadly Comparable to those provided under the relevant Statutory Scheme, and then on such terms as may be decided by the Buyer.' - ], - [ - '10.2', - 'Where the Supplier has set up a Broadly Comparable pension scheme or schemes pursuant to the provisions of Paragraph 10.1, the Supplier shall (and shall procure that any of its Subcontractors shall):' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '10.2.1', - 'supply to the Buyer details of its (or its Subcontractor’s) Broadly Comparable pension scheme and provide a full copy of the valid certificate of broad comparability covering all relevant Fair Deal Employees, as soon as it is able to do so and in any event no later than 28 days before the Relevant Transfer Date;' - ], - [ - '', - '10.2.2', - 'fully fund any such Broadly Comparable pension scheme in accordance with the funding requirements set by that Broadly Comparable pension scheme’s Actuary or by the Government Actuary’s Department for the period ending on the Service Transfer Date;' - ], - [ - '', - '10.2.3', - 'instruct any such Broadly Comparable pension scheme’s Actuary to, and to provide all such co-operation and assistance in respect of any such Broadly Comparable pension scheme as the Replacement Supplier and/or CCS and/or NHS Pension and/or CSPS and/or the relevant Administering Authority and/or the Buyer may reasonably require, to enable the Replacement Supplier to participate in the appropriate Statutory Scheme in respect of any Fair Deal Employee that remain eligible for New Fair Deal protection following a Service Transfer;' - ], - [ - '', - '10.2.4', - "provide a replacement Broadly Comparable pension scheme with immediate effect for those Fair Deal Employees who are still employed by the Supplier and/or relevant Subcontractor and are still eligible for New Fair Deal protection in the event that the Supplier and/or Subcontractor's Broadly Comparable pension scheme is terminated;" - ], - [ - '', - '10.2.5', - 'allow and make all necessary arrangements to effect, in respect of any Fair Deal Employee that remains eligible for New Fair Deal protection, following a Service Transfer, the bulk transfer of past service from any such Broadly Comparable pension scheme into the relevant Statutory Scheme and as is relevant on a day for day service basis and to give effect to any transfer of accrued rights required as part of participation under New Fair Deal. For the avoidance of doubt, should the amount offered by the Broadly Comparable pension scheme be less than the amount required by the appropriate Statutory Scheme to fund day for day service ("Shortfall"), the Supplier or the Subcontractor (as agreed between them) must pay the Statutory Scheme, as required, provided that in the absence of any agreement between the Supplier and any Subcontractor, the Shortfall shall be paid by the Supplier; and' - ], - [ - '', - '10.2.6', - 'indemnify CCS and/or the Buyer and/or NHS Pension and/or CSPS and/or the relevant Administering Authority and/or on demand for any failure to pay the Shortfall as required under Paragraph 10.2.5 above.' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.page - -docx.p 'Annex D1: CSPS', align: :center, bold: true, font: 'Calibri' - -docx.table( - [ - [ - '1.', - 'DEFINITIONS' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '', - 'In this Annex D1: CSPS to Part D: Pensions, the following words have the following meanings and they shall supplement Schedule J1: Definitions:' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '"CSPS Admission Agreement"', - 'an admission agreement in the form available on the Civil Service Pensions website immediately prior to the Relevant Transfer Date to be entered into for the CSPS in respect of the Services;' - ], - [ - '', - '"CSPS Eligible Employee"', - 'any Fair Deal Employee who at the relevant time is an eligible employee as defined in the CSPS Admission Agreement;' - ], - [ - '', - '"CSPS"', - 'the Principal Civil Service Pension Scheme available to Civil Servants and employees of bodies under Schedule 1 of the Superannuation Act 1972 (and eligible employees of other bodies admitted to participate under a determination under section 25 of the Public Service Pensions Act 2013), as governed by rules adopted by Parliament; the Partnership Pension Account and its (i) Ill health Benefits Scheme and (ii) Death Benefits Scheme; the Civil Service Additional Voluntary Contribution Scheme; the Designated Stakeholder Pension Scheme (which is scheduled to close to new members in September 2018) and "alpha" introduced under The Public Service (Civil Servants and Others) Pensions Regulations 2014.' - ] - ], - font: 'Calibri' -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], width: 3000, bold: true, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '2.', - 'FUTURE SERVICE BENEFITS' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '2.1', - 'The Supplier shall procure that the Fair Deal Employees, shall be either admitted into, or offered continued membership of, the relevant section of the CSPS that they currently contribute to, or were eligible to join immediately prior to the Relevant Transfer Date or became eligible to join on the Relevant Transfer Date and the Supplier shall procure that the Fair Deal Employees continue to accrue benefits in accordance with the provisions governing the relevant section of the CSPS for service from (and including) the Relevant Transfer Date.' - ], - [ - '2.2', - 'The Supplier undertakes that should it cease to participate in the CSPS for whatever reason at a time when it has CSPS Eligible Employees, that it will, at no extra cost to the Buyer, provide to any Fair Deal Employee who immediately prior to such cessation of participation remained a CSPS Eligible Employee with access to a pension scheme which is Broadly Comparable to the CSPS on the date the CSPS Eligible Employees ceased to participate in the CSPS.' - ], - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.page - -docx.p 'Annex D2: NHSPS', align: :center, bold: true, font: 'Calibri' - -docx.table( - [ - [ - '1.', - 'DEFINITIONS' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '', - 'In this Annex D2: NHSPS to Part D: Pensions, the following words have the following meanings and they shall supplement Schedule J1: Definitions:' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '"Direction Letter"', - 'an NHS Pensions Direction or Determination (as appropriate) issued by the Secretary of State in exercise of the powers conferred by section 7 of the Superannuation (Miscellaneous Provisions) Act 1967 or by section 25 of the Public Service Pensions Act 2013 (as appropriate) and issued to the Supplier or a Subcontractor of the Supplier (as appropriate) relating to the terms of participation of the Supplier or Subcontractor in the NHSPS in respect of the NHSPS Eligible Employees;' - ], - [ - '', - '"NHSPS Eligible Employees"', - 'each of the Fair Deal Employees who at a Relevant Transfer Date was a member of, or was entitled to become a member of, or but for their compulsory transfer of employment would have been entitled to be or become a member of, the NHSPS as a result of either:' - ], - [ - '', - '', - '(a) their employment with the Buyer, an NHS Body or other employer which participates automatically in the NHSPS; or' - ], - [ - '', - '', - '(b) their employment with a Former Supplier who provides access to the NHSPS pursuant to an NHS Pensions Direction or Determination (as appropriate) issued by the Secretary of State in exercise of the powers conferred by section 7 of the Superannuation (Miscellaneous Provisions) Act 1967 or by section 25 of the Public Service Pensions Act 2013 (as appropriate) in respect of their employment with that Former Supplier (on the basis that they are entitled to protection under New Fair Deal and were permitted to re-join the NHSPS, having been formerly in employment with the Buyer, an NHS Body or other employer who participated automatically in the NHSPS in connection with the Services, prior to being employed by the Former Supplier),' - ], - [ - '', - '', - 'and, in each case, being continuously engaged for more than fifty per cent (50%) of their employed time in the delivery of services (the same as or similar to the Services).' - ], - [ - '', - '', - 'For the avoidance of doubt, an individual who is in or entitled to become a member of the NHSPS as a result of being engaged in the Services and being covered by an "open" Direction Letter or other NHSPS "access" facility but who has never been employed directly by an NHS Body (or other body which participates automatically in the NHSPS) is not an NHSPS Eligible Employee; ' - ], - [ - '', - '"NHS Body"', - 'has the meaning given to it in section 275 of the National Health Service Act 2006 as amended by section 138(2)(c) of Schedule 4 to the Health and Social Care Act 2012;' - ], - [ - '', - '"NHS Pensions"', - 'NHS Pensions as the administrators of the NHSPS or such other body as may from time to time be responsible for relevant administrative functions of the NHSPS;' - ], - [ - '', - '"NHSPS"', - 'the National Health Service Pension Scheme for England and Wales, established pursuant to the Superannuation Act 1972 and governed by subsequent regulations under that Act including the NHS Pension Scheme Regulations;' - ], - [ - '', - '"NHS Pension Scheme Arrears"', - 'any failure on the part of the Supplier or its Subcontractors (if any) to pay employer’s contributions or deduct and pay across employee’s contributions to the NHSPS or meet any other financial obligations under the NHSPS or any Direction Letter in respect of the NHSPS Eligible Employees;' - ], - [ - '', - '"NHS Pension Scheme Regulations"', - 'as appropriate, any or all of the National Health Service Pension Scheme Regulations 1995 (SI 1995/300), the National Health Service Pension Scheme Regulations 2008 (SI 2008/653), the National Health Service Pension Scheme Regulations 2015 (2015/94) and any subsequent regulations made in respect of the NHSPS, each as amended from time to time;' - ], - [ - '', - '"NHS Premature Retirement Rights"', - 'rights to which any Fair Deal Employee (had they remained in the employment of the Buyer, an NHS Body or other employer which participates automatically in the NHSPS) would have been or are entitled under the NHS Pension Scheme Regulations, the NHS Compensation for Premature Retirement Regulations 2002 (SI 2002/1311), the NHS (Injury Benefits) Regulations 1995 (SI 1995/866) and section 45 of the General Whitley Council conditions of service, or any other legislative or contractual provision which replaces, amends, extends or consolidates the same from time to time;' - ], - [ - '', - '"Pension Benefits"', - 'any benefits payable in respect of an individual (including but not limited to pensions related allowances and lump sums) relating to old age, invalidity or survivor’s benefits provided under an occupational pension scheme; and' - ], - [ - '', - '"Retirement Benefits Scheme"', - 'a pension scheme registered under Chapter 2 of Part 4 of the Finance Act 2004.' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], width: 3000, bold: true, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '2.', - 'MEMBERSHIP OF THE NHSPS' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '2.1', - 'In accordance with New Fair Deal, the Supplier and/or any of its Subcontractors to which the employment of any NHSPS Eligible Employee compulsorily transfers as a result of the award of this Contract, if not an NHS Body or other employer which participates automatically in the NHSPS, must by or as soon as reasonably practicable after the Relevant Transfer Date, each secure a Direction Letter to enable the NHSPS Eligible Employees to retain either continuous active membership of or eligibility for, the NHSPS for so long as they remain employed in connection with the delivery of the Services under this Contract, and have a right to membership or eligibility of that scheme under the terms of the Direction Letter.' - ], - [ - '2.2', - 'The Supplier must supply to the Buyer by or as soon as reasonably practicable after the Relevant Transfer Date a complete copy of each Direction Letter.' - ], - [ - '2.3', - 'The Supplier must ensure (and procure that each of its Sub-Contracts (if any) ensures) that all of its NHSPS Eligible Employees have a contractual right to continuous active membership of or eligibility for the NHSPS for so long as they have a right to membership or eligibility of that scheme under the terms of the Direction Letter.' - ], - [ - '2.4', - 'The Supplier will (and will procure that its Subcontractors (if any) will) comply with the terms of the Direction Letter, the NHS Pension Scheme Regulations (including any terms which change as a result of changes in Law) and any relevant policy issued by the Department of Health in respect of the NHSPS Eligible Employees for so long as it remains bound by the terms of any such Direction Letter.' - ], - [ - '2.5', - 'Where any employee omitted from the Direction Letter supplied in accordance with Paragraph 2 of this Annex are subsequently found to be an NHSPS Eligible Employee, the Supplier will (and will procure that its Subcontractors (if any) will) treat that person as if they had been an NHSPS Eligible Employee from the Relevant Transfer Date so that their Pension Benefits and NHS Premature Retirement Rights are not adversely affected.' - ], - [ - '2.6', - 'The Supplier will (and will procure that its Subcontractors (if any) will) as soon as reasonably practicable and at its (or its Subcontractor’s) cost, obtain any guarantee, bond or indemnity that may from time to time be required by the Secretary of State for Health.' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - - -docx.table( - [ - [ - '3.', - 'FUTURE SERVICE BENEFITS IN THE NHSPS' - ], - [ - '', - 'The Supplier will procure that with effect from the Relevant Transfer Date the NHSPS Eligible Employees shall be either eligible for or remain in continuous active membership of (as the case may be) the NHSPS for employment from (and including) the Relevant Transfer Date.' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '4.', - 'NHS PREMATURE RETIREMENT RIGHTS' - ], - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '', - 'From the Relevant Transfer Date until the Service Transfer Date, the Supplier must provide (and/or must ensure that its Subcontractors (if any) provide) NHS Premature Retirement Rights in respect of the NHSPS Eligible Employees that are identical to the benefits they would have received had they remained employees of the Buyer, an NHS Body or other employer which participates automatically in the NHSPS.' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - - -docx.table( - [ - [ - '5.', - 'BREACH AND CANCELLATION OF ANY DIRECTION LETTER(S) AND RIGHT OF SET-OFF' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '5.1', - 'The Supplier agrees that the Buyer is entitled to make arrangements with NHS Pensions for the Buyer to be notified if the Supplier (or its Subcontractor) breaches the terms of its Direction Letter. Notwithstanding the provisions of the foregoing, the Supplier shall notify the Buyer in the event that it (or its Subcontractor) breaches the terms of its Direction Letter.' - ], - [ - '5.2', - 'If the Buyer is entitled to terminate the Contract or the Supplier (or its Subcontractor, if relevant) ceases to participate in the NHSPS for whatever other reason, the Buyer may in its sole discretion, and instead of exercising its right to terminate this Contract where relevant, permit the Supplier (or any such Subcontractor, as appropriate) to offer Broadly Comparable Pension Benefits, on such terms as decided by the Buyer. The provisions of Paragraph 10 (Bulk Transfer Obligations in relation to any Broadly Comparable pension scheme) of Part D: Pensions shall apply in relation to any Broadly Comparable pension scheme established by the Supplier or its Subcontractors.' - ], - [ - '5.3', - "In addition to the Buyer's right to terminate the Contract, if the Buyer is notified by NHS Pensions of any NHS Pension Scheme Arrears, the Buyer will be entitled to deduct all or part of those arrears from any amount due to be paid under this Contract or otherwise." - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '6.', - 'COMPENSATION' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '6.1', - 'If the Supplier (or its Subcontractor, if relevant) is unable to provide the NHSPS Eligible Employees with either:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '6.1.1', - 'membership of the NHSPS (having used its best endeavours to secure a Direction Letter); or' - ], - [ - '', - '6.1.2', - 'access to a Broadly Comparable pension scheme,' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '', - 'the Buyer may in its sole discretion permit the Supplier (or any of its Subcontractors) to compensate the NHSPS Eligible Employees in a manner that is Broadly Comparable or equivalent in cash terms, the Supplier (or Subcontractor as relevant) having consulted with a view to reaching agreement with any recognised trade union or, in the absence of such body, the NHSPS Eligible Employees. The Supplier must meet (or must procure that the relevant Subcontractor meets) the costs of the Buyer determining whether the level of compensation offered is reasonable in the circumstances.' - ], - [ - '6.2', - 'This flexibility for the Buyer to allow compensation in place of Pension Benefits is in addition to and not instead of the Buyer’s right to terminate the Contract.' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '7.', - 'SUPPLIER INDEMNITIES' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '7.1', - 'The Supplier must indemnify and keep indemnified the CCS, the Buyer and any Replacement Supplier against all Losses arising out of any claim by any NHSPS Eligible Employee that the provision of (or failure to provide) Pension Benefits and NHS Premature Retirement Rights from the Relevant Transfer Date, or the level of such benefit provided, constitutes a breach of his or her employment rights.' - ], - [ - '7.2', - 'The Supplier must indemnify and keep indemnified the Buyer, NHS Pensions and any Replacement Supplier against all Losses arising out of the Supplier (or its Subcontractor) allowing anyone who is not an NHSPS Eligible Employee to join or claim membership of the NHSPS at any time during the Contract Period.' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '8.', - 'SUBCONTRACTORS' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '8.1', - 'If the Supplier enters into a Sub-Contract for the delivery of all or part or any component of the Services which will involve the transfer of employment of any NHSPS Eligible Employee it will impose obligations on its Subcontractor in identical terms as those imposed on the Supplier in relation to Pension Benefits and NHS Premature Retirement Rights by this Annex, including requiring that:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '8.1.1', - 'if the Supplier has secured a Direction Letter, the Subcontractor also secures a Direction Letter in respect of the NHSPS Eligible Employees for their future service with the Subcontractor as a condition of being awarded the Sub-Contract and the Supplier shall be responsible for ensuring that the Buyer receives a complete copy of each such Subcontractor direction letter as soon as reasonably practicable; or' - ], - [ - '', - '8.1.2', - 'if, in accordance with Paragraph 4 of this Annex, the Supplier has offered the NHSPS Eligible Employees access to a pension scheme under which the benefits are Broadly Comparable to those provided under the NHSPS, the Subcontractor either secures a Direction Letter in respect of the NHSPS Eligible Employees or (with the prior consent of the Buyer) provides NHSPS Eligible Employees with access to a scheme with Pension Benefits which are Broadly Comparable to those provided under the NHSPS whereupon the provisions of Paragraph 10 below (Bulk Transfer Obligations in relation to any Broadly Comparable Scheme) shall apply.' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '8.2', - 'The Supplier shall procure that each Subcontractor provides indemnities to the Buyer, NHS Pensions and/or any Replacement Supplier and/or Replacement Subcontractor that are identical to the indemnities set out in Paragraph 7 of this Annex B. Where a Subcontractor fails to satisfy any claim made under such one or more indemnities, the Supplier will be liable for satisfying any such claim as if it had provided the indemnity itself.' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.page - -docx.p 'Annex D3: LGPS', align: :center, bold: true, font: 'Calibri' - -docx.p '[LGPS Guidance Notes', italic: true, bold: true, font: 'Calibri' -docx.p -docx.p '[DN: Note the LGPS unlike the CSPS & NHSPS is a funded scheme which has associated cost implications as follows:', italic: true, bold: true, font: 'Calibri' -docx.p -docx.p 'There is not 1 LGPS but approx. 90 different Funds, each with their own separate Scheme Employer and Administering Authority, it is important to identify the correct one(s) and amend the definition of "Fund" accordingly.', italic: true, bold: true, font: 'Calibri' -docx.p -docx.p 'It is important to check whether CCS and or the Buyer can actually participate in the LGPS. Where a Gov Dept is taking on services which were formerly the responsibility of a Local Authority it may be necessary to obtain secretary of state approval for participation in the LGPS, this is because the services are being provided to Gov. Dept. and not to a Local Authority.', italic: true, bold: true, font: 'Calibri' -docx.p -docx.p 'Unlike New Fair Deal the 2007 Best Value pension direction does not provide a right to bulk transfer past service. Whilst typically before the 2007 direction LA did provide such a right, it is a significant additional cost and therefore bulk transfer wording has been excluded. If required take legal advice due to the exceptionally high costs which can result from a requirement to provide bulk transfers.]', italic: true, bold: true, font: 'Calibri' -docx.p - - docx.table( - [ - [ - '1.', - 'DEFINITIONS' - ] - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - - docx.table( - [ - [ - '1.1', - 'In this Annex D3: LGPS to Part D: Pensions, the following words have the following meanings and they shall supplement Schedule J1: Definitions:' - ] - ] - ) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - - docx.table( - [ - [ - '', - '"Administering Authority"', - 'in relation to the Fund, the relevant Administering Authority of that Fund for the purposes of the Local Government Pension Scheme Regulations 2013;' - ], - [ - '', - '“Excess Amount”', - 'any Pension Costs incurred by the Supplier or its Subcontractors in any Pension Period that exceed the Pension Base Cost.' - ], - [ - '', - '"Fund Actuary"', - 'the actuary to a Fund appointed by the Administering Authority of that Fund;' - ] - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], width: 3000, bold: true, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end -if @procurement.local_government_pension_scheme? - docx.table( - [ - [ - '', - '"Fund"', - "#{@pension_funds[0].name}, a pension fund within the LGPS;" - ] - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], width: 3000, bold: true, font: 'Calibri' - cell_style cols[2], bold: true, font: 'Calibri' - end - - @pension_funds[1..-1].each do |pension_fund| - docx.table( - [ - [ - '', - '', - "#{pension_fund.name}, a pension fund within the LGPS;" - ] - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], width: 3000, bold: true, font: 'Calibri' - cell_style cols[2], bold: true, font: 'Calibri' - end - end -else - docx.table( - [ - [ - '', - '"Fund"', - 'Not Applicable' - ] - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], width: 3000, bold: true, font: 'Calibri' - cell_style cols[2], bold: true, font: 'Calibri' - end -end - - docx.table( - [ - [ - '', - '"LGPS"', - 'the Local Government Pension Scheme as governed by the LGPS Regulations, and any other regulations (in each case as amended from time to time) which are from time to time applicable to the Local Government Pension Scheme;' - ], - [ - '', - '"LGPS Admission Agreement"', - 'an admission agreement within the meaning in Schedule 1 of the Local Government Pension Scheme Regulations 2013;' - ], - [ - '', - '"LGPS Admission Body"', - 'an admission body (within the meaning of Part 3 of Schedule 2 of the Local Government Pension Scheme Regulations 2013);' - ], - [ - '', - '"LGPS Eligible Employees"', - 'any Fair Deal Employee who at the relevant time is an eligible employee as defined in the LGPS Admission Agreement or otherwise any Fair Deal Employees who immediately before the Relevant Transfer Date was a member of, or was entitled to become a member of, or but for their compulsory transfer of employment would have been entitled to be or become a member of, the LGPS or of a scheme Broadly Comparable to the LGPS;' - ], - [ - '', - '"LGPS Regulations"', - 'the Local Government Pension Scheme Regulations 2013 (SI 2013/2356) and The Local Government Pension Scheme (Transitional Provisions, Savings and Amendment) Regulations 2014, and any other regulations (in each case as amended from time to time) which are from time to time applicable to the LGPS.' - ] - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], width: 3000, bold: true, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - - if @procurement.local_government_pension_scheme? - docx.table( - [ - [ - '', - '“Pension Base Cost”', - 'in relation to the LGPS Eligible Employees, who are at the relevant time members of the LGPS:' - ] - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], width: 3000, bold: true, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - - @pension_funds.each do |pension_fund| - docx.ul do - li "#{pension_fund.percentage}% of pensionable pay for those who are members of #{pension_fund.name}", font: 'Calibri' - end - end - - docx.table( - [ - [ - '', - '', - '("pensionable pay" for these purposes as defined under the LGPS Regulations);' - ] - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], width: 3000, bold: true, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - else - docx.table( - [ - [ - '', - '“Pension Base Cost”', - 'Not Applicable' - ] - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], width: 3000, bold: true, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - end - - docx.table( - [ - [ - '', - '“Pension Costs”', - 'the costs of complying with the Pension Requirements, but excluding any costs relating to:' - ] - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], width: 3000, bold: true, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - - docx.table( - [ - [ - '', - '', - '(a)', - 'the provision of any bond or indemnity that the Supplier or its Subcontractors are required to provide under the terms of any Admission Agreement; and' - ], - [ - '', - '', - '(b)', - 'the provision of advice from the actuary to the LGPS arising from the instruction from the Supplier or its Subcontractors in relation to the Pension Requirements;' - ], - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], width: 3000, bold: true, font: 'Calibri' - cell_style cols[2], width: 1000, font: 'Calibri' - cell_style cols[3], font: 'Calibri' - end - - docx.table( - [ - [ - '', - '', - 'which will be covered by the Supplier or Subcontractor, as appropriate; and' - ], - [ - '', - '“Pension Requirements” ', - 'the terms and conditions set out in:' - ], - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], width: 3000, bold: true, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - - docx.table( - [ - [ - '', - '', - '(a)', - 'paragraph 2 of this Annex D3 (Supplier to Become an LGPS Admission Body), and paragraph 4 of Annex D3 (Discretionary Benefits); and' - ], - [ - '', - '', - '(b)', - 'the LGPS Admission Agreement,' - ] - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], width: 3000, bold: true, font: 'Calibri' - cell_style cols[2], width: 1000, font: 'Calibri' - cell_style cols[3], font: 'Calibri' - end - - docx.table( - [ - [ - '', - '', - 'but in each case in respect of LGPS Eligible Employees only.' - ] - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], width: 3000, bold: true, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - - docx.table( - [ - [ - '2.', - 'SUPPLIER TO BECOME AN LGPS ADMISSION BODY' - ] - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - - - docx.table( - [ - [ - '2.1', - 'Where the Supplier employs any LGPS Eligible Employees from a Relevant Transfer Date, the Supplier shall become an LGPS Admission Body and shall on or before the Relevant Transfer Date enter into a LGPS Admission Agreement with the Administering Authority which will have effect from and including the Relevant Transfer Date.' - ], - [ - '2.2', - 'The LGPS Admission Agreement must ensure that all LGPS Eligible Employees covered by that Agreement who were active LGPS members immediately before the Relevant Transfer Date are admitted to the LGPS with effect on and from the Relevant Transfer Date. Any LGPS Eligible Employees who were eligible to join the LGPS but were not active LGPS members immediately before the Relevant Transfer Date must retain the ability to join the LGPS after the Relevant Transfer Date if they wish to do so.' - ], - [ - '2.3', - 'The Supplier shall provide any indemnity, bond or guarantee required by an Administering Authority in relation to an LGPS Admission Agreement.' - ], - [ - '2.4', - 'The Supplier shall not automatically enrol or re-enrol for the purposes of the Pensions Act 2008 any LGPS Eligible Employees in any pension scheme other than the LGPS.' - ] - ] - ) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - - docx.table( - [ - [ - '3.', - 'RIGHT OF SET-OFF' - ] - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - - - docx.table( - [ - [ - '', - 'The Buyer shall have a right to set off against any payments due to the Supplier under the Contract an amount equal to any overdue employer and employee contributions and other payments (and interest payable under the LGPS Regulations) due from the Supplier (or from any relevant Subcontractor) under an LGPS Admission Agreement and shall pay such amount to the relevant Fund.' - ] - ] - ) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - - docx.table( - [ - [ - '4.', - 'SUPPLIER CEASES TO BE AN LGPS ADMISSION BODY' - ] - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - - - docx.table( - [ - [ - '', - 'If the Supplier employs any LGPS Eligible Employees from a Relevant Transfer Date and the Supplier either cannot or does not participate in the LGPS, the Supplier shall offer such LGPS Eligible Employee membership of a pension scheme Broadly Comparable to the LGPS.' - ] - ] - ) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - - docx.table( - [ - [ - '5.', - 'DISCRETIONARY BENEFITS' - ] - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - - - docx.table( - [ - [ - '', - 'Where the Supplier is an LGPS Admission Body, the Supplier shall award benefits to the LGPS Eligible Employees under the LGPS in circumstances where the LGPS Eligible Employees would have received such benefits had they still been employed by their previous employer. Where such benefits are of a discretionary nature, they shall be awarded on the basis of the previous employer’s written policy in relation to such benefits at the time of the Relevant Transfer Date.' - ] - ] - ) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - - docx.page - - docx.table( - [ - [ - '1.', - 'FUNDING' - ] - ] - ) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - - docx.table( - [ - [ - '1.1', - 'The Buyer hereby undertakes that it shall procure that the funding of the accrued rights of LGPS Eligible Employees in the LGPS in respect of pensionable service up to the first Relevant Transfer Date under the Contract shall be calculated on the basis that the LGPS had assets equal to its liabilities, as at that Relevant Transfer Date, based on the LGPS’ ongoing actuarial valuation basis.' - ], - [ - '1.2', - 'Subject to paragraph 6.3 of this Annex D3, any Excess Amount shall be the sole responsibility of the Buyer and shall be dealt with as set out in paragraphs 6.4 to 6.7 of this Annex D3.' - ], - [ - '1.3', - 'Nothing in paragraph 6.2 of this Annex D3 shall require the Buyer to be responsible for any Excess Amount to the extent that such Excess Amount has arisen as a result of:' - ] - ] - ) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - - docx.table( - [ - [ - '', - '1.3.1', - 'a decision or exercise of discretion by the Supplier or any Subcontractor which:' - ] - ] - ) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - - docx.table( - [ - [ - '', - '', - '(a)', - 'increases the pensionable pay of LGPS Eligible Employees above the greater of:' - ] - ] - ) do - cell_style cols[0..2], width: 1000, font: 'Calibri' - cell_style cols[3], font: 'Calibri' - end - - docx.table( - [ - [ - '', - '', - '', - '(a)', - 'the increases assumed in the relevant actuarial valuations of the LGPS; and' - ], - [ - '', - '', - '', - '(b)', - 'the increases the Supplier and/or any Subcontractor are contractually bound to provide on the Relevant Transfer Date;' - ] - ] - ) do - cell_style cols[0..3], width: 1000, font: 'Calibri' - cell_style cols[4], font: 'Calibri' - end - - docx.table( - [ - [ - '', - '', - '(b)', - 'otherwise increases the benefits payable to a LGPS Eligible Employee and in particular:' - ] - ] - ) do - cell_style cols[0..2], width: 1000, font: 'Calibri' - cell_style cols[3], font: 'Calibri' - end - - docx.table( - [ - [ - '', - '', - '', - '(a)', - 'the immediate payment of benefits with:' - ] - ] - ) do - cell_style cols[0..3], width: 1000, font: 'Calibri' - cell_style cols[4], font: 'Calibri' - end - - docx.table( - [ - [ - '', - '', - '', - '', - '(i)', - "the Supplier's or Subcontractors' consent under Regulation 30 of the LGPS Regulations, including waiving any reduction of benefits under Regulation 30(8) of the LGPS Regulations or otherwise; or" - ], - [ - '', - '', - '', - '', - '(ii)', - 'the Supplier or Subcontractors waiving any reduction of benefits on compassionate grounds under Schedule 2 of The Local Government Pension Scheme (Transitional Provisions, Savings and Amendment) Regulations 2014); and/or' - ] - ] - ) do - cell_style cols[0..4], width: 1000, font: 'Calibri' - cell_style cols[5], font: 'Calibri' - end - - docx.table( - [ - [ - '', - '', - '', - '(b)', - 'an award to additional pension under Regulation 31 of the LGPS Regulations;' - ] - ] - ) do - cell_style cols[0..3], width: 1000, font: 'Calibri' - cell_style cols[4], font: 'Calibri' - end - - docx.table( - [ - [ - '', - '1.3.2', - 'the early retirement of LGPS Eligible Employees due to dismissal or termination of employment under Regulation 30(7) of the LGPS Regulations;' - ], - [ - '', - '1.3.3', - 'the early retirement of LGPS Eligible Employees under the provisions of regulations 35 to 39 of the LGPS Regulations;' - ], - [ - '', - '1.3.4', - "any contribution required by the Administering Authority towards the cost of the administration of the Fund relating to the Supplier that are not met through the Supplier's or Subcontractors' payments under the applicable rates and adjustment certificate under regulation 62 of the LGPS Regulations, including without limitation an amount specified in a notice given by the Administering Authority under Regulation 70 of the LGPS Regulations and the costs of any reports and advice requested by the Supplier from an actuary appointed by the Administering Authority; and/or" - ], - [ - '', - '1.3.5', - 'any interest payable under the LGPS Regulations or LGPS Administration Agreement.' - ], - ] - ) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - - docx.table( - [ - [ - '1.4', - 'Within 20 Working Days of the end of each Contract Year the Supplier shall notify the Buyer in writing of any Excess Amount in the immediately preceding Contract Year together with a reasonable summary of how the Supplier has arrived at its calculation of such amount.' - ], - [ - '1.5', - "On receipt of the Supplier's calculation in accordance with paragraph 6.4 above the Buyer shall either:" - ] - ] - ) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - - docx.table( - [ - [ - '', - '1.5.1', - 'notify the Supplier in writing of acceptance of the Excess Amount;' - ], - [ - '', - '1.5.2', - 'request further information/evidence; and/or' - ], - [ - '', - '1.5.3', - "request a meeting to discuss/clarify the evidence provided." - ] - ] - ) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - - docx.table( - [ - [ - '1.6', - 'Where the pension adjustment notified paragraph 6.4 above is agreed following the receipt of further information/evidence or following a meeting, the Buyer shall notify the Supplier in writing. In the event that the Supplier and the Buyer are unable to agree the pension adjustment, they shall follow the Dispute Resolution Procedure.' - ], - [ - '1.7', - "Any Excess Amount agreed by the Buyer shall be paid within timescales as agreed between Buyer and Supplier. In respect of any Excess Amount the amount to be paid by the Buyer shall be an amount equal to the Excess Amount (less an amount equal to any corporation tax relief which has been claimed in respect of the Excess Amount by the Supplier or its Subcontractors)." - ], - [ - '1.8', - 'EXIT COSTS AT CALL-OFF STAGE - Any decision regarding Suppliers exposure to LGPS costs arising at the end of the Contract will be notified at Call Off.' - ] - ] - ) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - - docx.page - -docx.p 'PART E: STAFF TRANSFER ON EXIT (MANDATORY)', align: :center, bold: true, font: 'Calibri' - -docx.table( - [ - [ - '1.', - 'PRE-SERVICE TRANSFER OBLIGATIONS' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '1.1', - 'The Supplier agrees that within 20 Working Days of the earliest of:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '1.1.1', - 'receipt of a notification from the Buyer of a Service Transfer or intended Service Transfer; ' - ], - [ - '', - '1.1.2', - 'receipt of the giving of notice of early termination or any Partial Termination of the relevant Contract; ' - ], - [ - '', - '1.1.3', - "the date which is 12 Months before the end of the Term; and" - ], - [ - '', - '1.1.4', - 'receipt of a written request of the Buyer at any time (provided that the Buyer shall only be entitled to make one such request in any 6 Month period),' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '', - "It shall provide in a suitably anonymised format so as to comply with the Data Protection Laws, the Supplier's Provisional Supplier Personnel List, together with the Staffing Information in relation to the Supplier's Provisional Supplier Personnel List and it shall provide an updated Supplier's Provisional Supplier Personnel List at such intervals as are reasonably requested by the Buyer." - ], - [ - '1.2', - "At least 20 Working Days prior to the Service Transfer Date, the Supplier shall provide to the Buyer or at the direction of the Buyer to any Replacement Supplier and/or any Replacement Subcontractor (i) the Supplier's Final Supplier Personnel List, which shall identify the basis upon which they are Transferring Supplier Employees and (ii) the Staffing Information in relation to the Supplier’s Final Supplier Personnel List (insofar as such information has not previously been provided)." - ], - [ - '1.3', - 'The Buyer shall be permitted to use and disclose information provided by the Supplier under Paragraphs 1.1 and 1.2 for the purpose of informing any prospective Replacement Supplier and/or Replacement Subcontractor.' - ], - [ - '1.4', - 'The Supplier warrants, for the benefit of The Buyer, any Replacement Supplier, and any Replacement Subcontractor that all information provided pursuant to Paragraphs 1.1 and 1.2 shall be true and accurate in all material respects at the time of providing the information.' - ], - [ - '1.5', - "From the date of the earliest event referred to in Paragraph 1.1.1, 1.1.2 and 1.1.3, the Supplier agrees that it shall not assign any person to the provision of the Services who is not listed on the Supplier’s Provisional Supplier Personnel List and shall, unless otherwise instructed by the Buyer (acting reasonably):" - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '1.5.1', - 'not replace or re-deploy any Supplier Personnel listed on the Supplier Provisional Supplier Personnel List other than where any replacement is of equivalent grade, skills, experience and expertise and is employed on the same terms and conditions of employment as the person he/she replaces;' - ], - [ - '', - '1.5.2', - 'not make, promise, propose, permit or implement any material changes to the terms and conditions of (i) employment and/or (ii) pensions, retirement and death benefits (including not to make pensionable any category of earnings which were not previously pensionable or reduce the pension contributions payable) of the Supplier Personnel (including any payments connected with the termination of employment); ' - ], - [ - '', - '1.5.3', - "not increase the proportion of working time spent on the Services (or the relevant part of the Services) by any of the Supplier Personnel save for fulfilling assignments and projects previously scheduled and agreed;" - ], - [ - '', - '1.5.4', - "not introduce any new contractual or customary practice concerning the making of any lump sum payment on the termination of employment of any employees listed on the Supplier's Provisional Supplier Personnel List;" - ], - [ - '', - '1.5.5', - 'not increase or reduce the total number of employees so engaged, or deploy any other person to perform the Services (or the relevant part of the Services);' - ], - [ - '', - '1.5.6', - "not terminate or give notice to terminate the employment or contracts of any persons on the Supplier's Provisional Supplier Personnel List save by due disciplinary process;" - ], - [ - '', - '1.5.7', - 'not dissuade or discourage any employees engaged in the provision of the Services from transferring their employment to the Buyer and/or the Replacement Supplier and/or Replacement Subcontractor;' - ], - [ - '', - '1.5.8', - '1.5.8 give the Buyer and/or the Replacement Supplier and/or Replacement Subcontractor reasonable access to Supplier Personnel and/or their consultation representatives to inform them of the intended transfer and consult any measures envisaged by the Buyer, Replacement Supplier and/or Replacement Subcontractor in respect of persons expected to be Transferring Supplier Employees;' - ], - [ - '', - '1.5.9', - 'co-operate with the Buyer and the Replacement Supplier to ensure an effective consultation process and smooth transfer in respect of Transferring Supplier Employees in line with good employee relations and the effective continuity of the Services, and to allow for participation in any pension arrangements to be put in place to comply with New Fair Deal;' - ], - [ - '', - '1.5.10', - "promptly notify the Buyer or, at the direction of the Buyer, any Replacement Supplier and any Replacement Subcontractor of any notice to terminate employment given by the Supplier or received from any persons listed on the Supplier's Provisional Supplier Personnel List regardless of when such notice takes effect;" - ], - [ - '', - '1.5.11', - 'not for a period of 12 Months from the Service Transfer Date re-employ or re-engage or entice any employees, suppliers or Subcontractors whose employment or engagement is transferred to the Buyer and/or the Replacement Supplier (unless otherwise instructed by the Buyer (acting reasonably));' - ], - [ - '', - '1.5.12', - 'not to adversely affect pension rights accrued by all and any Fair Deal Employees in the period ending on the Service Transfer Date;' - ], - [ - '', - '1.5.13', - 'fully fund any Broadly Comparable pension schemes set up by the Supplier;' - ], - [ - '', - '1.5.14', - 'maintain such documents and information as will be reasonably required to manage the pension aspects of any onward transfer of any person engaged or employed by the Supplier or any Subcontractor in the provision of the Services on the expiry or termination of this Contract (including without limitation identification of the Fair Deal Employees);' - ], - [ - '', - '1.5.15', - 'promptly provide to the Buyer such documents and information mentioned in Paragraph 3.1.1 of Part D: Pensions which the Buyer may reasonably request in advance of the expiry or termination of this Contract; and' - ], - [ - '', - '1.5.16', - 'fully co-operate (and procure that the trustees of any Broadly Comparable pension scheme shall fully co-operate) with the reasonable requests of the Supplier relating to any administrative tasks necessary to deal with the pension aspects of any onward transfer of any person engaged or employed by the Supplier or any Subcontractor in the provision of the Services on the expiry or termination of this Contract.' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '1.6', - 'On or around each anniversary of the Effective Date and up to four times during the last 12 Months of the Term, the Buyer may make written requests to the Supplier for information relating to the manner in which the Services are organised. Within 20 Working Days of receipt of a written request the Supplier shall provide such information as the Buyer may reasonably require which shall include:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '1.6.1', - 'the numbers of employees engaged in providing the Services;' - ], - [ - '', - '1.6.2', - 'the percentage of time spent by each employee engaged in providing the Services;' - ], - [ - '', - '1.6.3', - 'the extent to which each employee qualifies for membership of any of the Fair Deal Schemes (as defined in Part D: Pensions); and' - ], - [ - '', - '1.6.4', - 'a description of the nature of the work undertaken by each employee by location.' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '1.7', - "The Supplier shall provide all reasonable cooperation and assistance to the Buyer, any Replacement Supplier and/or any Replacement Subcontractor to ensure the smooth transfer of the Transferring Supplier Employees on the Service Transfer Date including providing sufficient information in advance of the Service Transfer Date to ensure that all necessary payroll arrangements can be made to enable the Transferring Supplier Employees to be paid as appropriate. Without prejudice to the generality of the foregoing, within 5 Working Days following the Service Transfer Date, the Supplier shall provide to the Buyer or, at the direction of the Buyer, to any Replacement Supplier and/or any Replacement Subcontractor (as appropriate), in respect of each person on the Supplier's Final Supplier Personnel List who is a Transferring Supplier Employee:" - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '1.7.1', - "the most recent month's copy pay slip data;" - ], - [ - '', - '1.7.2', - 'details of cumulative pay for tax and pension purposes;' - ], - [ - '', - '1.7.3', - 'details of cumulative tax paid;' - ], - [ - '', - '1.7.4', - 'tax code;' - ], - [ - '', - '1.7.5', - 'details of any voluntary deductions from pay; and' - ], - [ - '', - '1.7.6', - 'bank/building society account details for payroll purposes.' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '2.', - 'EMPLOYMENT REGULATIONS EXIT PROVISIONS' - ] - ] -) do - cell_style cols[0], width: 1000, bold: true, font: 'Calibri' - cell_style cols[1], bold: true, font: 'Calibri' - end - -docx.table( - [ - [ - '2.1', - 'A change in the identity of the supplier of the Services (or part of the Services), howsoever arising, may constitute a Relevant Transfer to which the Employment Regulations will apply. The Buyer and the Supplier agree that where a Relevant Transfer occurs, the contracts of employment between the Supplier and the Transferring Supplier Employees (except in relation to any contract terms disapplied through operation of regulation 10(2) of the Employment Regulations) will have effect on and from the Service Transfer Date as if originally made between the Replacement Supplier and/or a Replacement Subcontractor (as the case may be) and each such Transferring Supplier Employee.' - ], - [ - '2.2', - "The Supplier shall comply with all its obligations in respect of the Transferring Supplier Employees arising under the Employment Regulations in respect of the period up to (and including) the Service Transfer Date including (without limit) the payment of all remuneration, benefits, entitlements, PAYE, national insurance contributions and pension contributions and all such sums due as a result of any Fair Deal Employees' participation in the Fair Deal Schemes (as defined in Part D: Pensions)." - ], - [ - '2.3', - 'Subject to Paragraph 2.4, the Supplier shall indemnify the Buyer and/or the Replacement Supplier and/or any Replacement Subcontractor against any Employee Liabilities arising from or as a result of any act or omission of the Supplier or any Subcontractor in respect of any Transferring Supplier Employee or any appropriate employee representative (as defined in the Employment Regulations) of any Transferring Supplier Employee whether occurring before, on or after the Service Transfer Date.' - ], - [ - '2.4', - 'The indemnity in Paragraph 2.3 shall not apply to the extent that the Employee Liabilities arise or are attributable to an act or omission of the Replacement Supplier and/or any Replacement Subcontractor whether occurring or having its origin before, on or after the Service Transfer Date.' - ], - [ - '2.5', - "Subject to Paragraphs 2.6 and 2.7, if any employee of the Supplier who is not identified in the Supplier's Final Transferring Supplier Employee List claims, or it is determined in relation to any employees of the Supplier, that his/her contract of employment has been transferred from the Supplier to the Replacement Supplier and/or Replacement Subcontractor pursuant to the Employment Regulations then." - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '2.5.1', - 'the Replacement Supplier and/or Replacement Subcontractor will, within 5 Working Days of becoming aware of that fact, notify the Buyer and the Supplier in writing;' - ], - [ - '', - '2.5.2', - 'the Supplier may offer employment to such person, or take such other steps as it considered appropriate to resolve the matter, within 10 Working Days of receipt of notice from the Replacement Supplier and/or Replacement Subcontractor;' - ], - [ - '', - '2.5.3', - 'if such offer of employment is accepted, the Replacement Supplier and/or Replacement Subcontractor shall immediately release the person from its employment;' - ], - [ - '', - '2.5.4', - 'if after the period referred to in Paragraph 2.5.2 no such offer has been made, or such offer has been made but not accepted, the Replacement Supplier and/or Replacement Subcontractor may within 5 Working Days give notice to terminate the employment of such person;' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '', - "and subject to the Replacement Supplier's and/or Replacement Subcontractor's compliance with Paragraphs 2.5.1 to 2.5.4 the Supplier will indemnify the Replacement Supplier and/or Replacement Subcontractor against all Employee Liabilities arising out of the termination of the employment of any of the Supplier’s employees referred to in Paragraph 2.5." - ], - [ - '2.6', - 'The indemnity in Paragraph 2.5 shall not apply to:' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end - -docx.table( - [ - [ - '', - '2.6.1', - '(a) any claim for discrimination, including on the grounds of sex, race, disability, age, gender reassignment, marriage or civil partnership, pregnancy and maternity or sexual orientation, religion or belief, or equal pay or compensation for less favourable treatment of part-time workers or fixed-term employees, arising as a result of any alleged act or omission of the Replacement Supplier and/or Replacement Subcontractor, or' - ], - [ - '', - '2.6.2', - '(b) any claim that the termination of employment was unfair because the Replacement Supplier and/or Replacement Subcontractor neglected to follow a fair dismissal procedure.' - ] - ] -) do - cell_style cols[0..1], width: 1000, font: 'Calibri' - cell_style cols[2], font: 'Calibri' - end - -docx.table( - [ - [ - '2.7', - 'The indemnity in Paragraph 2.5 shall not apply to any termination of employment occurring later than 3 Months from the Service Transfer Date.' - ], - [ - '2.8', - 'If at any point the Replacement Supplier and/or Replacement Sub-contract accepts the employment of any such person as is described in Paragraph 2.5, such person shall be treated as a Transferring Supplier Employee and Paragraph 2.5 shall cease to apply to such person.' - ], - [ - '2.9', - 'The Supplier shall promptly provide the Buyer and any Replacement Supplier and/or Replacement Subcontractor, in writing such information as is necessary to enable the Buyer, the Replacement Supplier and/or Replacement Subcontractor to carry out their respective duties under regulation 13 of the Employment Regulations. The Buyer shall procure that the Replacement Supplier and/or Replacement Subcontractor, shall promptly provide to the Supplier and each Subcontractor in writing such information as is necessary to enable the Supplier and each Subcontractor to carry out their respective duties under regulation 13 of the Employment Regulations.' - ], - [ - '2.10', - 'Subject to Paragraph 2.9, the Buyer shall procure that the Replacement Supplier indemnifies the Supplier on its own behalf and on behalf of any Replacement Subcontractor and its Subcontractors against any Employee Liabilities arising from or as a result of any act or omission, whether occurring before, on or after the Service Transfer Date, of the Replacement Supplier and/or Replacement Subcontractor in respect of any Transferring Supplier Employee or any appropriate employee representative (as defined in the Employment Regulations) of any such Transferring Supplier Employee.' - ], - [ - '2.11', - 'The indemnity in Paragraph 2.10 shall not apply to the extent that the Employee Liabilities arise or are attributable to an act or omission of the Supplier and/or any Subcontractor (as applicable) whether occurring or having its origin before, on or after the Service Transfer Date, including any Employee Liabilities arising from the failure by the Supplier and/or any Subcontractor (as applicable) to comply with its obligations under the Employment Regulations, or to the extent the Employee Liabilities arise out of the termination of employment of any person who is not identified in the Supplier’s Final Supplier Personnel List in accordance with Paragraph 2.5 (and subject to the limitations set out in Paragraphs 2.6 and 2.7 above).' - ] - ] -) do - cell_style cols[0], width: 1000, font: 'Calibri' - cell_style cols[1], font: 'Calibri' - end diff --git a/app/views/facilities_management/rm3830/procurements/contracts/edit.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/edit.html.erb deleted file mode 100644 index edae26d2bc..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/edit.html.erb +++ /dev/null @@ -1,31 +0,0 @@ -<%= govuk_page_content(@page_description, @contract, params[:name] == 'withdraw') do |pd| %> - <% case params[:name] %> - <% when 'withdraw' %> - <%= content_for :page_title, t('.page_title') %> - <% else %> - <%= content_for :page_title, pd.heading_details.text %> - <% end %> - <%= form_for @contract, url: facilities_management_rm3830_procurement_contract_path(name: params[:name]), method: :put, html: { specialvalidation: true } do |f| %> - <% case params[:name] %> - <% when 'withdraw' %> - <%= render partial: 'closing_direct_award_offer', :locals=>{:f=>f} %> -
- <%= f.submit t('.close_this_procurement'), class: 'govuk-!-margin-right-4 govuk-button govuk-button--warning', name: :close_procurement, 'aria-label': t('.close_this_procurement') %> - <%= link_to(pd.navigation_details.secondary_text, facilities_management_rm3830_procurement_contract_path(@procurement), role: 'button', class: 'govuk-button govuk-button--secondary', 'aria-label': "#{pd.navigation_details.secondary_text}") %>
-
- <% when 'next_supplier' %> - <%= render partial: 'next_supplier', :locals=>{:f=>f} %> -
- <%= f.submit t('.confirm_and_send'), class: 'govuk-!-margin-right-4 govuk-button', name: :send_contract_to_next_supplier, 'aria-label': t('.confirm_and_send') %> - <%= link_to(pd.navigation_details.secondary_text, facilities_management_rm3830_procurement_contract_path(@procurement), role: 'button', class: 'govuk-button govuk-button--secondary', 'aria-label': "#{pd.navigation_details.secondary_text}") %>
- <%= link_to(pd.navigation_details.return_text, pd.navigation_details.return_url, role: 'button', class: 'govuk-link govuk-!-font-size-19') %> -
- <% when 'signed' %> - <%= render partial: 'confirmation_of_signed_contract', :locals=>{:f=>f} %> -
- <%= f.submit t('.save_and_continue'), class: 'govuk-!-margin-right-4 govuk-button', name: :sign_procurement, 'aria-label': t('.save_and_continue') %> - <%= link_to(pd.navigation_details.secondary_text, facilities_management_rm3830_procurement_contract_path(@procurement), role: 'button', class: 'govuk-button govuk-button--secondary', 'aria-label': "#{pd.navigation_details.secondary_text}") %>
-
- <% end %> - <% end %> -<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/contracts/sent/_no_suppliers.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/sent/_no_suppliers.html.erb deleted file mode 100644 index 4e858124b9..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/sent/_no_suppliers.html.erb +++ /dev/null @@ -1,28 +0,0 @@ -<%= content_for :page_title, t('.title') %> -

- <%= @procurement.contract_name %> - <%= t('.title') %> -

- -
-

- <%= t('.description') %> -

-
- -
-

<%= t('.next_steps') %>

-
    -
  • <%= t('.next_steps_list_1') %>
  • -
  • <%= t('.next_steps_list_2') %>
  • -
-
- -
- <%= t('.footer_description_1') %>
- <%= t('.footer_description_2') %> -
- -
- <%= link_to("Return to procurements dashboard", facilities_management_rm3830_procurements_path, role: 'button', class: 'govuk-link govuk-!-font-size-19', 'aria-label': "Return to procurements dashboard") %> -
diff --git a/app/views/facilities_management/rm3830/procurements/contracts/sent/_sent.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/sent/_sent.html.erb deleted file mode 100644 index 1afccb2050..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/sent/_sent.html.erb +++ /dev/null @@ -1,36 +0,0 @@ - <%= content_for :page_title, t('.header') %> -
-

- <%= t('.header') %> -

-
- <%= t('.procurement_sent_to', contract_name: @procurement.contract_name, contract_number: @contract.contract_number, supplier_name: @supplier.supplier_name) %> -
-
- -

<%= t('.what_happens_next') %>

-

<%= t('.what_happens_next_sub') %>

- -

<%= t('.accepts_header') %>

-
    -
  • <%= t('.accepts_list_1') %>
  • -
  • <%= t('.accepts_list_2') %>
  • -
  • <%= t('.accepts_list_3') %>
  • -
  • <%= t('.accepts_list_4') %>
  • -
- -

<%= t('.declines_header') %>

-
    -
  • <%= t('.declines_list_1') %>
  • -
  • <%= t('.declines_list_2') %>
  • -
-
    -
  • <%= t('.declines_list_2_sub_1') %>
  • -
  • <%= t('.declines_list_2_sub_2') %>
  • -
  • <%= t('.declines_list_2_sub_3') %>
  • -
  • <%= t('.declines_list_2_sub_4') %>
  • -
- -

<%= t('.further_information') %>

- - <%= link_to "Return to procurements dashboard", facilities_management_rm3830_procurements_path, class: "govuk-button govuk-button--secondary govuk-!-margin-top-2", 'aria-label': "Return to procurements dashboard" %> diff --git a/app/views/facilities_management/rm3830/procurements/contracts/sent/index.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/sent/index.html.erb deleted file mode 100644 index 5b2bc4afff..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/sent/index.html.erb +++ /dev/null @@ -1 +0,0 @@ -<%= render partial: "#{@contract.last_offer? ? 'no_suppliers' : 'sent' }" %> \ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/contracts/show.html.erb b/app/views/facilities_management/rm3830/procurements/contracts/show.html.erb deleted file mode 100644 index fd31d795ab..0000000000 --- a/app/views/facilities_management/rm3830/procurements/contracts/show.html.erb +++ /dev/null @@ -1,51 +0,0 @@ -<%= govuk_page_content(@page_description, @contract) do |pd| %> - <%= content_for :page_title, pd.heading_details.text %> - <%= form_for @contract, url: facilities_management_rm3830_procurement_contract_path(name: 'next_supplier'), method: :put do |f| %> - - <%= render partial: 'contract_summary_head' %> - - <%= render partial: 'contract_offer_details' %> - - <%= render partial: 'procurement_requirements', locals: { heading_text: t('.supplier'), heading_value: @contract.supplier.supplier_name } %> - - <%= render partial: 'supplier_contact_details' %> - - <%= render partial: 'call_off_contract_documents' %> - - <%= render partial: 'awaiting_response' if @contract.aasm_state == 'sent' %> - <%= render partial: 'awaiting_signature' if @contract.aasm_state == 'accepted' %> - - <%= render partial: 'contract_summary_foot' %> - <% unless @contract.closed? %> - <% case @contract.aasm_state %> - <% when 'sent' %> -
- <%= link_to(pd.navigation_details.secondary_text, edit_facilities_management_rm3830_procurement_contract_path(id: @contract.id, name: 'withdraw'), role: 'button', class: 'govuk-button govuk-button--warning', 'aria-label': "#{pd.navigation_details.secondary_text}") %>
- <%= link_to(pd.navigation_details.return_text, pd.navigation_details.return_url, role: 'button', class: 'govuk-link govuk-!-font-size-19', 'aria-label': "#{pd.navigation_details.return_text}") %> -
- <% when 'signed' %> - <%= link_to(pd.navigation_details.secondary_text, new_facilities_management_rm3830_procurement_copy_procurement_path(id: @procurement.id, contract_id: @contract.id), role: 'button', class: 'govuk-button govuk-button--secondary', 'aria-label': "#{pd.navigation_details.secondary_text}") %>
- <%= link_to(pd.navigation_details.return_text, pd.navigation_details.return_url, role: 'button', class: 'govuk-link govuk-!-font-size-19', 'aria-label': "#{pd.navigation_details.return_text}") %> - <% when 'not_signed', 'declined' , 'expired' %> -
- <% if @contract.last_offer? %> - <%= f.submit pd.navigation_details.primary_text, class: 'govuk-!-margin-right-4 govuk-button', name: :send_contract_to_next_supplier, 'aria-label': "#{pd.navigation_details.primary_text}" %> - <% else %> - <%= link_to(pd.navigation_details.primary_text, edit_facilities_management_rm3830_procurement_contract_path(id: @contract.id, name: 'next_supplier'), role: 'button', class: 'govuk-button govuk-!-margin-right-4', 'aria-label': "#{pd.navigation_details.primary_text}") %> - <% end %> - <%= link_to(pd.navigation_details.secondary_text, edit_facilities_management_rm3830_procurement_contract_path(id: @contract.id, name: 'withdraw'), role: 'button', class: 'govuk-button govuk-button--warning', 'aria-label': "#{pd.navigation_details.primary_text}") %>
- <%= link_to(pd.navigation_details.return_text, pd.navigation_details.return_url, role: 'button', class: 'govuk-link govuk-!-font-size-19') %> -
- <% else %> -
- <%= link_to(pd.navigation_details.primary_text, edit_facilities_management_rm3830_procurement_contract_path(id: @contract.id, name: 'signed'), role: 'button', class: 'govuk-button govuk-!-margin-right-4', 'aria-label': "#{pd.navigation_details.primary_text}") %> - <%= link_to(pd.navigation_details.secondary_text, edit_facilities_management_rm3830_procurement_contract_path(id: @contract.id, name: 'withdraw'), role: 'button', class: 'govuk-button govuk-button--warning', 'aria-label': "#{pd.navigation_details.secondary_text}") %>
- <%= link_to(pd.navigation_details.return_text, pd.navigation_details.return_url, role: 'button', class: 'govuk-link govuk-!-font-size-19') %> -
- <% end %> - <% else %> - <%= link_to(pd.navigation_details.secondary_text, new_facilities_management_rm3830_procurement_copy_procurement_path(id: @procurement.id, contract_id: @contract.id), role: 'button', class: 'govuk-button govuk-button--secondary', 'aria-label': "#{pd.navigation_details.secondary_text}") %>
- <%= link_to(pd.navigation_details.return_text, pd.navigation_details.return_url, role: 'button', class: 'govuk-link govuk-!-font-size-19', 'aria-label': "#{pd.navigation_details.return_text}") %> - <% end %> - <% end %> -<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/copy_procurement/new.html.erb b/app/views/facilities_management/rm3830/procurements/copy_procurement/new.html.erb deleted file mode 100644 index 9ffd4c951c..0000000000 --- a/app/views/facilities_management/rm3830/procurements/copy_procurement/new.html.erb +++ /dev/null @@ -1,23 +0,0 @@ -<%= govuk_page_content(@page_description, @procurement_copy) do |pd|%> -

- <%= t('.heading')%> -

-
-

<%= t('.once_saved')%>

-
    -
  • <%= t('.you_will_have_option')%>
  • -
  • <%= t('.you_will_be_able')%>
  • -
-
- <%=form_for @procurement_copy, url: facilities_management_rm3830_procurement_copy_procurement_index_path, method: :post do |f, attr|%> -
- <%= form_group_with_error(f.object, :contract_name) do |displayed_error, any_errors| %> - <%= f.label :contract_name, t('.label'), class: 'govuk-heading-m' %> - <%= displayed_error %> - <%= f.text_field :contract_name, class: "govuk-input #{'govuk-input--error' if any_errors}", maxlength: 100, id: 'facilities_management_rm3830_procurement_contract_name' %> - <% end %> -
- <%= f.submit pd.navigation_details.primary_text, { class: 'govuk-button govuk-!-margin-right-4', 'aria-label': "#{pd.navigation_details.primary_text}" } %> - <%= link_to pd.navigation_details.secondary_text, pd.navigation_details.secondary_url, class: 'govuk-button govuk-button--secondary', 'aria-label': "#{pd.navigation_details.secondary_text}" %> - <% end %> -<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/dashboard_tables/_closed.html.erb b/app/views/facilities_management/rm3830/procurements/dashboard_tables/_closed.html.erb deleted file mode 100644 index 05a10b23e0..0000000000 --- a/app/views/facilities_management/rm3830/procurements/dashboard_tables/_closed.html.erb +++ /dev/null @@ -1,30 +0,0 @@ - - <% unless @closed_contracts.empty? %> - - - - - - - - - - - <% @closed_contracts.each do |closed_contract| %> - - - - - - - - <% end %> - - <% else %> -
- <%= t('.no_closed') %> -
- <% end %> -
<%= t('.contract_name') %><%= t('.supplier') %><%= t('.date_closed') %>
- <%= link_to closed_contract.procurement.contract_name, facilities_management_rm3830_procurement_contract_path(procurement_id: closed_contract.procurement.id, id: closed_contract.id) %> - <%= closed_contract.supplier.supplier_name %><%= format_date(closed_contract.contract_closed_date) %>
diff --git a/app/views/facilities_management/rm3830/procurements/dashboard_tables/_contracts.html.erb b/app/views/facilities_management/rm3830/procurements/dashboard_tables/_contracts.html.erb deleted file mode 100644 index 4b120641d7..0000000000 --- a/app/views/facilities_management/rm3830/procurements/dashboard_tables/_contracts.html.erb +++ /dev/null @@ -1,30 +0,0 @@ - - <% unless @contracts.empty? %> - - - - - - - - - - - <% @contracts.each do |contract| %> - - - - - - - - <% end %> - - <% else %> -
- <%= t('.no_live') %> -
- <% end %> -
<%= t('.contract_name') %><%= t('.supplier') %><%= t('.start_date') %><%= t('.end_date') %>
- <%= link_to contract.procurement.contract_name, facilities_management_rm3830_procurement_contract_path(procurement_id: contract.procurement.id, id: contract.id) %> - <%= contract.supplier.supplier_name %><%= format_date(contract.contract_start_date) %><%= format_date(contract.contract_end_date) %>
diff --git a/app/views/facilities_management/rm3830/procurements/dashboard_tables/_further_competition.html.erb b/app/views/facilities_management/rm3830/procurements/dashboard_tables/_further_competition.html.erb deleted file mode 100644 index 05c23414d4..0000000000 --- a/app/views/facilities_management/rm3830/procurements/dashboard_tables/_further_competition.html.erb +++ /dev/null @@ -1,27 +0,0 @@ - - <% unless @further_competition_contracts.empty? %> - - - - - - - - - <% @further_competition_contracts.each do |fc_contracts| %> - - - - - - - <% end %> - - <% else %> -
- <%= t('.no_fc') %> -
- <% end %> -
<%= t('.name') %><%= t('.date_saved') %>
- <%= link_to fc_contracts.contract_name, facilities_management_rm3830_procurement_path(fc_contracts) %> - <%= further_competition_saved_date(fc_contracts) %>
diff --git a/app/views/facilities_management/rm3830/procurements/dashboard_tables/_in_draft.html.erb b/app/views/facilities_management/rm3830/procurements/dashboard_tables/_in_draft.html.erb deleted file mode 100644 index c230326c0c..0000000000 --- a/app/views/facilities_management/rm3830/procurements/dashboard_tables/_in_draft.html.erb +++ /dev/null @@ -1,30 +0,0 @@ - - <% if !@in_draft.empty? %> - - - - - - - - - - - <% @in_draft.each do |in_draft| %> - - - - - - - - <% end %> - - <% else %> -
- <%= t('.no_drafts') %> -
- <% end %> -
<%= t('.contract_name') %><%= t('.supplier') %><%= t('.saved') %>
- <%= link_to in_draft.contract_name, facilities_management_rm3830_procurement_path(in_draft) %> - <%= in_draft.procurement_suppliers.first.supplier.supplier_name %><%= format_date_time(in_draft.updated_at.in_time_zone('London')) %><%= link_to t('.delete'), facilities_management_rm3830_procurement_delete_path(in_draft), class: "govuk-link govuk-link--no-visited-state" %>
diff --git a/app/views/facilities_management/rm3830/procurements/dashboard_tables/_searches.html.erb b/app/views/facilities_management/rm3830/procurements/dashboard_tables/_searches.html.erb deleted file mode 100644 index dad6fa2d3b..0000000000 --- a/app/views/facilities_management/rm3830/procurements/dashboard_tables/_searches.html.erb +++ /dev/null @@ -1,32 +0,0 @@ -<% if !@searches.empty? %> - - - - - - - - - - - - - <% @searches.each do |search| %> - - - - - - - - - <% end %> - -
<%= t('.name') %><%= t('.saved') %><%= t('.stage') %>
- <%= link_to search.contract_name, facilities_management_rm3830_procurement_path(search, spreadsheet: search.detailed_search_bulk_upload?) %> - <%= format_date_time(search.updated_at) %><%= procurement_state(search.aasm_state) %><%= link_to t('.delete'), facilities_management_rm3830_procurement_delete_path(search), class: "govuk-link govuk-link--no-visited-state" %><%= govuk_tag_with_text(*search.spreadsheet_import.state_to_string) if search.detailed_search_bulk_upload? && search.spreadsheet_import.present? %>
-<% else %> -
- <%= t('.no_searches') %> -
-<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/dashboard_tables/_sent_offers.html.erb b/app/views/facilities_management/rm3830/procurements/dashboard_tables/_sent_offers.html.erb deleted file mode 100644 index 87fb9b3f39..0000000000 --- a/app/views/facilities_management/rm3830/procurements/dashboard_tables/_sent_offers.html.erb +++ /dev/null @@ -1,30 +0,0 @@ - - <% unless @sent_offers.empty? %> - - - - - - - - - - - <% @sent_offers.each do |sent_offer| %> - - - - - - - - <% end %> - - <% else %> -
- <%= t('.no_sent') %> -
- <% end %> -
<%= t('.contract_name') %><%= t('.supplier') %><%= t('.sent') %><%= t('.stage') %>
- <%= link_to sent_offer.procurement.contract_name, facilities_management_rm3830_procurement_contract_path(procurement_id: sent_offer.procurement.id, id: sent_offer.id) %> - <%= sent_offer.supplier.supplier_name %><%= format_date_time(sent_offer.offer_sent_date.in_time_zone('London')) %><%= contract_state_to_stage(sent_offer.aasm_state) %><%= govuk_tag_with_text(:blue, t('.action_required')) unless sent_offer.sent? %>
diff --git a/app/views/facilities_management/rm3830/procurements/delete.html.erb b/app/views/facilities_management/rm3830/procurements/delete.html.erb deleted file mode 100644 index 270190f4b5..0000000000 --- a/app/views/facilities_management/rm3830/procurements/delete.html.erb +++ /dev/null @@ -1,14 +0,0 @@ -<%= content_for :page_title, t('.page_title') %> - -

- <%= t('.are_you_sure', contract_name: @procurement.contract_name)%> -

- -

- <%= t('.cannot_be_un_done') %> -

- -<%= form_for @procurement, url: facilities_management_rm3830_procurement_path(@procurement), method: :delete, html: { specialvalidation: true, novalidate: true, multipart: true } do |f| %> - <%= f.submit t('.confirm_delete'), class: "govuk-button govuk-button--warning", aria: { label: t('.confirm_delete') } %> - <%= link_to t('.cancel'), facilities_management_rm3830_procurements_path, class: "govuk-button govuk-button--secondary govuk-!-margin-left-3", aria: { label: t('.cancel_delete') } %> -<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/edit.html.erb b/app/views/facilities_management/rm3830/procurements/edit.html.erb deleted file mode 100644 index 4f6e480f91..0000000000 --- a/app/views/facilities_management/rm3830/procurements/edit.html.erb +++ /dev/null @@ -1,44 +0,0 @@ -<%= link_to t('.return_to_requirements'), @back_link, class: 'govuk-back-link govuk-!-margin-top-0 govuk-!-margin-bottom-6' if @procurement.detailed_search? && requires_back_link? %> -<%= form_for @procurement, url: facilities_management_rm3830_procurement_path(@procurement.id), method: :put, html: { specialvalidation: true, novalidate: true, multipart: true } do |f| %> - <% unless params[:step] == "buildings_and_services"%> -
- <%= render partial: 'shared/error_summary', locals: { errors: f.object.errors } %> -
- <%end %> - <% site_title = { "services" => t('facilities_management.rm3830.journey.choose_services.heading'), - "regions" => t('facilities_management.rm3830.journey.choose_locations.heading'), - } %> -
- <% if !@procurement.persisted? || @procurement.quick_search?%> - <%= [@procurement.detailed_search? ? t('.detailed_search') : nil, @procurement.contract_name].compact.join(' - ') if @procurement.contract_name? %> -

- <%= site_title[params[:step]] if params[:step] && site_title[params[:step]] %> - <%= t('.heading') if !params[:step] && !site_title[params[:step]] %> -

-

- <%= t('.search_result_body_html') if !params[:step] %> -

- <% end %> -
-
- <%= f.hidden_field :step, value: params[:step] if params[:step]%> - <%= f.hidden_field :step, value: params[:facilities_management_rm3830_procurement][:step] if !params[:step] && params.dig(:facilities_management_rm3830_procurement, :step) %> - <%= render partial: "facilities_management/rm3830/procurements/edit/#{params[:step]}", locals: { f: f } %> - <% if @procurement.detailed_search? || @procurement.quick_search? %> -
- <% case params[:step] %> - <% when 'regions', 'services' %> - <%= f.submit t('.save_and_continue'), class: 'govuk-button', 'aria-label': "#{t('.save_and_continue')}", name: @procurement.detailed_search? ? 'next_step' : 'start_detailed_search' %> - <% when 'buildings'%> - <%= f.submit t(".#{continue_button_text}"), class: 'govuk-button', 'aria-label': "#{t('.save_and_return')}", name: 'buildings' if current_user.buildings.any? %> - <% else %> - <%= f.submit t(".#{continue_button_text}"), class: 'govuk-button', 'aria-label': "#{t('.save_and_return')}", name: 'next_step' if @procurement.detailed_search? %> - <% end %> -
-
- <%= link_to t('.return_to_requirements'), facilities_management_rm3830_procurement_path(@procurement), class: 'govuk-link--no-visited-state govuk-!-font-size-19', 'aria-label': "#{t('.return_to_requirements')}" if @procurement.detailed_search? %> - <%= link_to t('.cancel_and_return'), facilities_management_rm3830_path, class: 'govuk-link--no-visited-state govuk-!-font-size-19', 'aria-label': "#{t('.cancel_and_return')}" if @procurement.quick_search? %> -
- <% end %> -
-<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/edit/_regions.html.erb b/app/views/facilities_management/rm3830/procurements/edit/_regions.html.erb deleted file mode 100644 index 8615ee4b5d..0000000000 --- a/app/views/facilities_management/rm3830/procurements/edit/_regions.html.erb +++ /dev/null @@ -1,27 +0,0 @@ -<%= render('errors/inline_error_summary') %> -
-
-
-
- -

- <%= t('.question') %> -

- - <%= t('.subtitle') %> - -
-
- <%= govuk_accordion_with_checkboxes( - 'edit-regions', - accordion_region_items(region_codes), - 'facilities_management_rm3830_procurement_region_codes', - 'facilities_management_rm3830_procurement[region_codes]' - ) %> -
-
-
- <%= render partial: 'facilities_management/shared/baskets/regions_basket' %> -
-
-
diff --git a/app/views/facilities_management/rm3830/procurements/edit/_services.html.erb b/app/views/facilities_management/rm3830/procurements/edit/_services.html.erb deleted file mode 100644 index caf682a2f6..0000000000 --- a/app/views/facilities_management/rm3830/procurements/edit/_services.html.erb +++ /dev/null @@ -1,17 +0,0 @@ -<% if @procurement.detailed_search? %> - <%= @procurement.contract_name %> -

<%= t('.title') %>

- <% content_for :page_title, t('.title') %> -<% end %> -
-
"> -
-
- <%= render partial: 'service_codes_checkboxes', locals: { heading: t('.question'), subtitle: @procurement.detailed_search? ? t('.subtitle_html') : t('.subtitle_quick_search'), service_specification_doc: t('.service_specification_doc')} %> -
-
- <%= render partial: 'facilities_management/shared/baskets/services_basket' %> -
-
-
-
diff --git a/app/views/facilities_management/rm3830/procurements/further_competition/_further_competition_partial.html.erb b/app/views/facilities_management/rm3830/procurements/further_competition/_further_competition_partial.html.erb deleted file mode 100644 index dd53d7e8df..0000000000 --- a/app/views/facilities_management/rm3830/procurements/further_competition/_further_competition_partial.html.erb +++ /dev/null @@ -1,185 +0,0 @@ -<% unless fc_chosen %> -
-
-

<%= t('.summary_header') %>

-
-
- -
-
-

<%= "Your procurement summary reference number is #{@procurement.contract_number}"%>.

-
-
- -
-
- <%= govuk_details(t('.description_header')) do %> -

<%= t('.description_text') %>

- -
    -
  • <%= t('.description_list_1') %>
  • -
  • <%= t('.description_list_2') %>
  • -
  • <%= t('.description_list_3') %>
  • -
  • <%= t('.description_list_4') %>
  • -
  • <%= t('.description_list_5') %>
  • -
- <% end %> -
-
- -
-
-

<%= t('.file_download') %>

-

<%= t('.download_file_in_format') %>

- <%= link_to_generated_file_for_download(facilities_management_rm3830_procurement_further_competition_spreadsheet_path(@procurement.id), :xlsx, t('.file_name', procurement_name: @procurement.contract_name), true) %> -
-
-<% end %> - -
-
-

<%= t('.what_happens_next_title') %>

-

<%= t('.what_happens_next_description') %>

-
-
- -
-
- <%= govuk_step_by_step_navigation( - [ - { - title: t('.step_1.title'), - content: [ - { - type: :list, - items: [ - { - text: t('.step_1.list.item_1') - }, - { - text: t('.step_1.list.item_2') - }, - { - text: t('.step_1.list.item_3') - } - ] - } - ] - }, - { - title: t('.step_2.title'), - content: [ - { - type: :list, - items: [ - { - text: t('.step_2.list.item_1') - }, - { - text: t('.step_2.list.item_2') - }, - { - text: t('.step_2.list.item_3') - }, - { - text: t('.step_2.list.item_4') - } - ] - } - ] - }, - { - title: t('.step_3.title'), - content: [ - { - type: :list, - items: [ - { - text: t('.step_3.list.item_1') - } - ] - } - ] - }, - { - title: t('.step_4.title'), - content: [ - { - type: :list, - items: [ - { - text: t('.step_4.list.item_1') - }, - { - text: t('.step_4.list.item_2') - }, - { - text: t('.step_4.list.item_3') - } - ] - } - ] - }, - { - title: t('.step_5.title'), - content: [ - { - type: :list, - items: [ - { - text: t('.step_5.list.item_1') - } - ] - } - ] - } - ] - ) %> -
-
- -
-
-

<%= t('.esourcing') %>

-

<%= t('.esourcing_description_html', link: link_to(t('.esourcing_description_link_text'), t('.esourcing_description_link_url'))) %>

-
-
- -
-
-

<%= t('.more_information') %>

-

<%= t('.facilities_management_framework_html', link: link_to(t('.facilities_management_framework_link_text'), t('.facilities_management_framework_link_url'))) %>

-
    -
  • <%= t('.more_information_1') %>
  • -
  • <%= t('.more_information_2') %>
  • -
  • <%= t('.more_information_3') %>
  • -
  • <%= t('.more_information_4') %>
  • -
  • <%= t('.more_information_5') %>
  • -
-
-
- -
-
- <%= govuk_details(t('.help')) do %> -

- <%= t('.help_description') %> -
-
- <%= t('.help_description_1')%> -

- <% end %> -
-
- -
-
-

- <% if fc_chosen %> - <%= t('.save_as_fc_instructions') %> - <% else %> - <%= t('.make_a_copy')%> - <% end %> -

-
-
diff --git a/app/views/facilities_management/rm3830/procurements/index.html.erb b/app/views/facilities_management/rm3830/procurements/index.html.erb deleted file mode 100644 index 4d2f88cb46..0000000000 --- a/app/views/facilities_management/rm3830/procurements/index.html.erb +++ /dev/null @@ -1,41 +0,0 @@ -
-
- href="."><%= t('.back') %> - <%= govuk_notification_banner(:success, t('.deleted')) { t('.was_deleted', contract_name: @what_was_deleted) } if @what_was_deleted %> - -

<%= t('.manage_procurements') %>

- <% content_for :page_title, t('.manage_procurements') %> -
<%= t('.help_text') %>
-
- -
-

<%= t('.searches_title') %>

- <%= render partial: 'facilities_management/rm3830/procurements/dashboard_tables/searches' %> -
- -
-

<%= t('.direct_award_title') %>

- -

<%= t('.in-draft-title') %>

- - <%= render partial: 'facilities_management/rm3830/procurements/dashboard_tables/in_draft' %> - -

<%= t('.sent_offers') %>

- - <%= render partial: 'facilities_management/rm3830/procurements/dashboard_tables/sent_offers' %> - -

<%= t('.contracts_title') %>

- - <%= render partial: 'facilities_management/rm3830/procurements/dashboard_tables/contracts' %> - -

<%= t('.closed_title') %>

- - <%= render partial: 'facilities_management/rm3830/procurements/dashboard_tables/closed' %> -
- -
-

<%= t('.further_competition') %>

- <%= render partial: 'facilities_management/rm3830/procurements/dashboard_tables/further_competition' %> -
-
-
diff --git a/app/views/facilities_management/rm3830/procurements/new.html.erb b/app/views/facilities_management/rm3830/procurements/new.html.erb deleted file mode 100644 index 8f52ef75f1..0000000000 --- a/app/views/facilities_management/rm3830/procurements/new.html.erb +++ /dev/null @@ -1,30 +0,0 @@ -<% if @procurement.service_codes.present? %> - <%= render partial: 'shared/error_summary', locals: { errors: @procurement.errors } %> - <%= form_for @procurement, url: facilities_management_rm3830_procurements_path, method: :post, html: { specialvalidation:true, novalidate:true, multipart: true } do |f| %> -
-
-
-

<%= t('.quick_view_results') %>

- <% content_for :page_title, t('.quick_view_results') %> - <% if (supplier_count).zero? %> -

<%= t('.no_suppliers') %>

- <% else %> -

<%= t('.search_result_body_html') %>

- <% end %> -
-
- <%= render partial: 'quick_search_form', locals: { f: f, step: nil } %> -
-
- <%= f.submit t('.save_and_continue'), name: 'save_and_continue', class: 'govuk-button govuk-!-margin-right-4', 'aria-label': t('.save_and_continue') %> - <%= f.submit t('.save_for_later'), name: 'save_for_later', class: 'govuk-button govuk-button--secondary', 'aria-label': t('.save_for_later') %> -
- <%= link_to t('.cancel_text'), facilities_management_rm3830_path, class: 'govuk-link--no-visited-state govuk-!-font-size-19', 'aria-label': t('.cancel_text') %> -
-
-
- <% end %> - -<% else %> - <%= render partial: 'contract_name' %> -<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/requirements/_contract_details.html.erb b/app/views/facilities_management/rm3830/procurements/requirements/_contract_details.html.erb deleted file mode 100644 index 34474ae0f4..0000000000 --- a/app/views/facilities_management/rm3830/procurements/requirements/_contract_details.html.erb +++ /dev/null @@ -1,5 +0,0 @@ -

- <%= t('.contract_details') %> -

- -<%= render partial: 'facilities_management/shared/summary_tables/contract_summary_table', locals: { sections: ['contract_name', 'estimated_annual_cost', 'tupe', 'contract_period'] } %> diff --git a/app/views/facilities_management/rm3830/procurements/requirements/_services_and_buildings.html.erb b/app/views/facilities_management/rm3830/procurements/requirements/_services_and_buildings.html.erb deleted file mode 100644 index f78e0a20b5..0000000000 --- a/app/views/facilities_management/rm3830/procurements/requirements/_services_and_buildings.html.erb +++ /dev/null @@ -1,10 +0,0 @@ -

- <%= t('.services_and_buildings') %> -

- -
- <%= link_to t('.excel'), facilities_management_rm3830_procurement_path(procurement_id: @procurement.id, 'spreadsheet': true) %>, - <%= t('.which_you_can_upload') %> -
- -<%= render partial: 'facilities_management/shared/summary_tables/contract_summary_table', locals: { sections: ['services', 'buildings', 'buildings_and_services', 'service_requirements'] } %> diff --git a/app/views/facilities_management/rm3830/procurements/results.html.erb b/app/views/facilities_management/rm3830/procurements/results.html.erb deleted file mode 100644 index 3a328bc869..0000000000 --- a/app/views/facilities_management/rm3830/procurements/results.html.erb +++ /dev/null @@ -1 +0,0 @@ -<%= render partial: 'results' %> diff --git a/app/views/facilities_management/rm3830/procurements/show.html.erb b/app/views/facilities_management/rm3830/procurements/show.html.erb deleted file mode 100644 index b5d3ede86b..0000000000 --- a/app/views/facilities_management/rm3830/procurements/show.html.erb +++ /dev/null @@ -1,10 +0,0 @@ -<% if params[:delete] == 'y' && procurement_can_be_deleted? %> - <%= render 'delete_procurement' %> -<% else %> - <% if params[:spreadsheet] == 'true' %> - <%= render 'spreadsheet' %> - <% else %> - <%= render @view_name %> - <% end%> -<% end %> -<% content_for(:page_title, @page_description.heading_details.text) unless @page_description.nil? %> \ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_failed.html.erb b/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_failed.html.erb deleted file mode 100644 index e542f7d4ca..0000000000 --- a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_failed.html.erb +++ /dev/null @@ -1,18 +0,0 @@ -<% case @import_error_type %> -<% when :generic %> - <%= render partial: 'failed_generic'%> -<% when :template %> - <%= render partial: 'failed_template' %> -<% when :normal %> - <%= render partial: 'failed_non_generic'%> -<% end %> - -
-
- <%= form_for @spreadsheet_import, url: facilities_management_rm3830_procurement_spreadsheet_import_path, method: :delete, html: { specialvalidation: true, novalidate: true, multipart: true } do |f| %> - <%= f.submit t('.start_again'), class: 'govuk-button', 'aria-label': t('.start_again') %> -
- <%= link_to t('.return_to_procurement_dashboard'), facilities_management_rm3830_procurements_path, class: 'govuk-link--no-visited-state govuk-!-font-size-19', 'aria-label': t('.return_to_procurement_dashboard') %> - <% end %> -
-
\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_failed_generic.html.erb b/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_failed_generic.html.erb deleted file mode 100644 index 16fabacdfc..0000000000 --- a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_failed_generic.html.erb +++ /dev/null @@ -1,12 +0,0 @@ -
-
- <%= t('.description')%> -
-
- <%= t('.generic_message')%> -
-
- <%= t('.what_next')%> -
-
- diff --git a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_failed_non_generic.html.erb b/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_failed_non_generic.html.erb deleted file mode 100644 index 322e83be20..0000000000 --- a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_failed_non_generic.html.erb +++ /dev/null @@ -1,49 +0,0 @@ -
-
- <%= t('.description')%> -
-
- -
-
-

- <%= t('.what_next')%> -

-

- <%= t('.here_are_steps')%> -

-
    -
  1. <%= t('.step_1')%>
  2. -
  3. <%= t('.step_2')%>
  4. -
  5. <%= t('.step_3')%>
  6. -
-
-
- -
-
-

- <%= t('.list_of_issues')%> -

-

- <%= t('.hint_text')%> -

-
-
- - - -<% @error_lists.each do |attribute, error_list| %> - <% if error_list.any? %> -
-
-

- <%= t(".title.#{attribute}") %> -

- <%= govuk_details(pluralize(error_count(error_list, attribute), 'Issue')) do %> - <%= render(partial: "facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/#{attribute}", locals: { error_list: error_list }) %> - <% end %> -
-
- <% end %> -<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_failed_template.html.erb b/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_failed_template.html.erb deleted file mode 100644 index a4df931b4c..0000000000 --- a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_failed_template.html.erb +++ /dev/null @@ -1,11 +0,0 @@ -
-
- <%= t('.description')%> -
-
- <%= t(".fail_reason.#{@spreadsheet_import.import_errors[:other_errors][:file_check_error]}") %> -
-
- <%= t(".what_next.#{@spreadsheet_import.import_errors[:other_errors][:file_check_error]}") %> -
-
diff --git a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_importing.html.erb b/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_importing.html.erb deleted file mode 100644 index 5961cc30f6..0000000000 --- a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_importing.html.erb +++ /dev/null @@ -1,28 +0,0 @@ -
-
-

<%= t('.upload_progress') %>

-
-
<%= t('.file_uploaded') %>
-
<%= t('.checking_files') %>
-
<%= t('.processing_file') %>
-
<%= t('.saving_data') %>
-
<%= t('.complete') %>
-
- -
-
-
-
-
- - -
-
-

- <%= t('.review') %> -

- <%= warning_text(t('.warning_text')) %> -
-
-
-<%= link_to t('.dashboard_link'), facilities_management_rm3830_procurements_path, class: 'govuk-link govuk-!-font-size-19 govuk-!-margin-top-4' %> diff --git a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_succeeded.html.erb b/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_succeeded.html.erb deleted file mode 100644 index d78282fef9..0000000000 --- a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_succeeded.html.erb +++ /dev/null @@ -1,34 +0,0 @@ -
-

<%= t('.successful') %>

- -

<%= t('.about') %>

- -

<%= t('.completed') %>

- -
    -
  • - <%= t('.services') %> -
  • -
  • - <%= t('.buildings') %> -
  • -
  • - <%= t('.services_to_buildings') %> -
  • -
  • - <%= t('.service_requirements') %> -
  • -
- -
- - <%= t('.review') %> - -
-
- -<%= form_for @procurement, url: facilities_management_rm3830_procurement_path(@procurement.id), method: :put, html: { specialvalidation: true, novalidate: true, multipart: true } do |f| %> - <%= f.submit t('.continue_to_procurement'), name: :exit_bulk_upload, class: 'govuk-button govuk-!-font-size-19 govuk-!-margin-top-4', aria: { label: t('.continue_to_procurement') } %> -<% end %> -
-<%= link_to t('.return_to_dashboard'), facilities_management_rm3830_procurements_path, class: 'govuk-link govuk-!-font-size-19' %> \ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_upload.html.erb b/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_upload.html.erb deleted file mode 100644 index 7a6c34ce40..0000000000 --- a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/_upload.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -

Something went wrong. Please try again

- <%= link_to t('.procurement_link'), facilities_management_rm3830_procurement_path(@spreadsheet_import.procurement), class: 'govuk-link govuk-!-font-size-19 govuk-!-margin-top-4' %> diff --git a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_building_errors.html.erb b/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_building_errors.html.erb deleted file mode 100644 index 6ccbe4c227..0000000000 --- a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_building_errors.html.erb +++ /dev/null @@ -1,17 +0,0 @@ -
- - - - - - - - - <% error_list.each do |errors| %> - - - - - <% end %> - -
<%= t('facilities_management.rm3830.procurements.spreadsheet_imports.failed.building_number') %><%= t('facilities_management.rm3830.procurements.spreadsheet_imports.failed.error_description') %>
<%= errors[:building_name] %><%= error_message(:building_errors, errors[:attribute], errors[:errors].first) %>
\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_lift_errors.html.erb b/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_lift_errors.html.erb deleted file mode 100644 index de4f0572e0..0000000000 --- a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_lift_errors.html.erb +++ /dev/null @@ -1,19 +0,0 @@ -
- - - - - - - - - - <% error_list.each do |error| %> - - - - - - <% end %> - -
<%= t('facilities_management.rm3830.procurements.spreadsheet_imports.failed.building_name') %><%= t('facilities_management.rm3830.procurements.spreadsheet_imports.failed.service_name') %><%= t('facilities_management.rm3830.procurements.spreadsheet_imports.failed.error_description') %>
<%= error[:building_name] %><%= error[:service_name] %><%= error_message(:lift_errors, error[:attribute], :invalid) %>
\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_other_errors.html.erb b/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_other_errors.html.erb deleted file mode 100644 index 7d5a162bec..0000000000 --- a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_other_errors.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -
- <%= t('.other_description')%> -
diff --git a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_service_hour_errors.html.erb b/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_service_hour_errors.html.erb deleted file mode 100644 index 31bc5d4399..0000000000 --- a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_service_hour_errors.html.erb +++ /dev/null @@ -1,19 +0,0 @@ -
- - - - - - - - - - <% error_list.each do |error| %> - - - - - - <% end %> - -
<%= t('facilities_management.rm3830.procurements.spreadsheet_imports.failed.building_name') %><%= t('facilities_management.rm3830.procurements.spreadsheet_imports.failed.service_name') %><%= t('facilities_management.rm3830.procurements.spreadsheet_imports.failed.error_description') %>
<%= error[:building_name] %><%= error[:service_name] %><%= error_message(:service_hour_errors, error[:attribute], error[:errors].first) %>
\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_service_matrix_errors.html.erb b/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_service_matrix_errors.html.erb deleted file mode 100644 index 6da58bde09..0000000000 --- a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_service_matrix_errors.html.erb +++ /dev/null @@ -1,19 +0,0 @@ -
- - - - - - - - - <% error_list.each do |errors| %> - <% errors[:errors].each do |error|%> - - - - - <% end %> - <% end %> - -
<%= t('facilities_management.rm3830.procurements.spreadsheet_imports.failed.building_name') %><%= t('facilities_management.rm3830.procurements.spreadsheet_imports.failed.error_description') %>
<%= errors[:building_name] %><%= error_message(:service_matrix_errors, errors[:attribute], error) %>
\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_service_volume_errors.html.erb b/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_service_volume_errors.html.erb deleted file mode 100644 index 2ec4ed248d..0000000000 --- a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/error_partials/_service_volume_errors.html.erb +++ /dev/null @@ -1,19 +0,0 @@ -
- - - - - - - - - - <% error_list.each do |error| %> - - - - - - <% end %> - -
<%= t('facilities_management.rm3830.procurements.spreadsheet_imports.failed.building_name') %><%= t('facilities_management.rm3830.procurements.spreadsheet_imports.failed.service_name') %><%= t('facilities_management.rm3830.procurements.spreadsheet_imports.failed.error_description') %>
<%= error[:building_name] %><%= error[:service_name] %><%= error_message(:service_volume_errors, error[:attribute], error[:errors].first) %>
\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/new.html.erb b/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/new.html.erb deleted file mode 100644 index 2c1a428464..0000000000 --- a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/new.html.erb +++ /dev/null @@ -1,51 +0,0 @@ -<%= form_for @spreadsheet_import, url: facilities_management_rm3830_procurement_spreadsheet_imports_path, method: :post, html: { specialvalidation: true, novalidate: true, multipart: true } do |f| %> - <%= govuk_form_group_with_optional_error(@spreadsheet_import, :name) do %> - <%= render partial: 'shared/error_summary', locals: { errors: f.object.errors } %> - <% end %> - - <%= govuk_page_header(FacilitiesManagement::PageDetail::Heading.new(t('.heading'), @spreadsheet_import.procurement.contract_name, nil, nil, nil)) %> - <% content_for :page_title, t('.heading') %> - -
- <%= t('.description') %> -
- - - <%= t('.check') %> - - -
- <%= t('.check_details') %> -
-
-
-
-
- <%= f.label :spreadsheet_file, t('.upload') %> - <%= t('.upload_size') %> -
-
- - <%= t('.once_selected') %> - -
- -
- <%= display_error @spreadsheet_import, :spreadsheet_file%> - <%= tag(:hr, class: 'govuk-section-break govuk-!-margin-top-4') if @spreadsheet_import.errors.any? %> - - <%= f.file_field :spreadsheet_file, class: 'govuk-file-upload' %> - <%= f.hidden_field :facilities_management_rm3830_procurement_id, value: @spreadsheet_import.facilities_management_rm3830_procurement_id %> - -
-
- -
- <%= warning_text(t('.warning')) %> -
- -
- <%= f.submit t('.upload_and_continue'), class: "govuk-button govuk-!-margin-top-4", aria: { label: t('.upload_and_continue') } %> - <%= f.submit t('.cancel_and_return'), name: :cancel_and_return, class: 'govuk-button govuk-button--secondary govuk-!-margin-top-4 govuk-!-margin-left-4', aria: { label: t('.cancel_and_return') } %> -
-<% end %> diff --git a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/show.html.erb b/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/show.html.erb deleted file mode 100644 index 67bd3fa6bf..0000000000 --- a/app/views/facilities_management/rm3830/procurements/spreadsheet_imports/show.html.erb +++ /dev/null @@ -1,10 +0,0 @@ -<%= link_to t('.return_to_upload'), new_facilities_management_rm3830_procurement_spreadsheet_import_path(@spreadsheet_import.procurement), class: 'govuk-back-link govuk-!-margin-bottom-6' %> - -<%= govuk_page_header(FacilitiesManagement::PageDetail::Heading.new(t('.heading'), @procurement.contract_name, nil, nil, nil)) %> -<% content_for :page_title, "#{t('.heading')}, #{@spreadsheet_import.state_to_string[1].downcase}" %> - -
- Status: <%= govuk_tag_with_text(*@spreadsheet_import.state_to_string) %> -
- -<%= render partial: @spreadsheet_import.aasm_state %> diff --git a/app/views/facilities_management/rm3830/procurements/summary.html.erb b/app/views/facilities_management/rm3830/procurements/summary.html.erb deleted file mode 100644 index 0a3d44d63a..0000000000 --- a/app/views/facilities_management/rm3830/procurements/summary.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -<%= govuk_page_header(FacilitiesManagement::PageDetail::Heading.new(t(".heading.#{@summary_page}"), @procurement.contract_name, nil, nil, nil)) %> -<%= content_for :page_title, t(".heading.#{@summary_page}") %> -<%= render "facilities_management/rm3830/procurements/summary/#{@summary_page}" %> -<%= link_to t('.return_to_requirements'), facilities_management_rm3830_procurement_path(@procurement), class: 'govuk-link govuk-link--no-visited-state govuk-!-font-size-19'%> diff --git a/app/views/facilities_management/rm3830/procurements/what_happens_next.html.erb b/app/views/facilities_management/rm3830/procurements/what_happens_next.html.erb deleted file mode 100644 index fba6ee65f2..0000000000 --- a/app/views/facilities_management/rm3830/procurements/what_happens_next.html.erb +++ /dev/null @@ -1,13 +0,0 @@ -

<%= t('.heading') %>

-<%= content_for :page_title, t('.heading') %> - -<%= render 'what_happens_next_body' %> - -
-
- <%= link_to t('.continue'), new_facilities_management_rm3830_procurement_path(service_codes: [], region_codes: [] ), name: 'start_detailed_search', class: 'govuk-button govuk-button--primary govuk-!-margin-right-4', 'aria-label': t('.continue') %> - <%= link_to t('.cancel'), facilities_management_rm3830_procurements_path, class: 'govuk-button govuk-button--secondary', 'aria-label': t('.cancel') %> -
- <%= link_to t('.return'), facilities_management_rm3830_path, class: 'govuk-link--no-visited-state govuk-!-font-size-19', 'aria-label': t('.return') %> -
-
\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/service_specification/_clause.html.erb b/app/views/facilities_management/rm3830/service_specification/_clause.html.erb deleted file mode 100644 index 26c7675c44..0000000000 --- a/app/views/facilities_management/rm3830/service_specification/_clause.html.erb +++ /dev/null @@ -1,12 +0,0 @@ -
- <% if clause[:number].blank? %> -

<%= clause[:body] %>

- <% else %> -

- <%= clause[:number] %> -

-

<%= clause[:body] %>

- <% end %> - -
-
diff --git a/app/views/facilities_management/rm3830/service_specification/show.html.erb b/app/views/facilities_management/rm3830/service_specification/show.html.erb deleted file mode 100644 index 5f38cd1ea0..0000000000 --- a/app/views/facilities_management/rm3830/service_specification/show.html.erb +++ /dev/null @@ -1,29 +0,0 @@ -
- <%= t('.service_specification') %> -

- <%= @specification[:work_package][:heading] %> -

- - <% if @specification[:work_package][:generic].any? %> -
- - - <%= @specification[:work_package][:generic][:heading] %> - - -
- <% @specification[:work_package][:generic][:clauses].each do |clause| %> - <%= render 'clause', clause: clause %> - <% end %> -
-
- <% end %> - -

- <%= @specification[:service][:heading] %> -

- - <% @specification[:service][:clauses].each do |clause| %> - <%= render 'clause', clause: clause %> - <% end %> -
diff --git a/app/views/facilities_management/rm3830/supplier/contracts/_accepted_contract_offer.html.erb b/app/views/facilities_management/rm3830/supplier/contracts/_accepted_contract_offer.html.erb deleted file mode 100644 index c3e6e1b69f..0000000000 --- a/app/views/facilities_management/rm3830/supplier/contracts/_accepted_contract_offer.html.erb +++ /dev/null @@ -1,33 +0,0 @@ -
-

- <%= t('.what_happens_next') %> -

-
- <%= govuk_details(t('.list01_title')) do %> -
    -
  • <%= t('.list01_1') %>
  • -
  • <%= t('.list01_2') %>
  • -
- <% end %> -
- <%= govuk_details(t('.list02_title')) do %> -
    -
  • <%= t('.list02_1') %>
  • -
- <% end %> -
-
- <%= govuk_details(t('.list03_title')) do %> -
    -
  • <%= t('.list03_1') %>
  • -
- <% end %> -
- <%= govuk_details(t('.list04_title')) do %> -
    -
  • <%= t('.list04_1') %>
  • -
  • <%= t('.list04_2') %>
  • -
- <% end %> -
-
diff --git a/app/views/facilities_management/rm3830/supplier/contracts/_buyer_contact_details.html.erb b/app/views/facilities_management/rm3830/supplier/contracts/_buyer_contact_details.html.erb deleted file mode 100644 index 7cd4140019..0000000000 --- a/app/views/facilities_management/rm3830/supplier/contracts/_buyer_contact_details.html.erb +++ /dev/null @@ -1,24 +0,0 @@ -
-
- - - - - - - - - - - - -
<%= t('.buyer_contact_details') %>
<%= @procurement.user.buyer_detail.organisation_name %> - <%= govuk_details('Contact details') do %> - <%= "Name: #{@procurement.user.buyer_detail.full_name}"%>
- <%= "Telephone: #{@procurement.user.buyer_detail.telephone_number}"%>
- <%= mail_to @procurement.user.email, @procurement.user.email, class: 'govuk-link govuk-link--no-visited-state', tabindex: -1 %>
- <%= "Address: #{@procurement.user.buyer_detail.full_organisation_address}"%> - <% end %> -
-
-
diff --git a/app/views/facilities_management/rm3830/supplier/contracts/_contract_offer_details.html.erb b/app/views/facilities_management/rm3830/supplier/contracts/_contract_offer_details.html.erb deleted file mode 100644 index 0950c8a520..0000000000 --- a/app/views/facilities_management/rm3830/supplier/contracts/_contract_offer_details.html.erb +++ /dev/null @@ -1,35 +0,0 @@ -
- <% case @contract.aasm_state %> - <% when 'not_signed' %> - <%= govuk_details('Reason for not signing') do %> - <%= "#{t('.reason_for_not_signing')}: '#{@contract.reason_for_not_signing}'." %> - <% end %> - <% when 'declined' %> - <%= govuk_details('Reason for declining') do %> - <%= "#{t('.reason_for_declining')}: '#{@contract.reason_for_declining}'." %> - <% end %> - <% when 'withdrawn' %> - <%= govuk_details('Reason for withdrawing') do %> - <%= "#{t('.reason_for_withdrawing')}: '#{@contract.reason_for_closing}'."%> - <% end %> - <% end %> -
-<% if @contract.aasm_state == 'sent' %> -
- <%= govuk_details('Contract offer history') do %> - <%= "#{t('.contract_received_on')} #{format_date_time(@contract.offer_sent_date)}." %> - <% end %> -
-<% else %> -
- <%= govuk_details('Contract offer history') do %> - <% case @contract.aasm_state%> - <% when 'accepted', 'signed', 'not_signed', 'withdrawn' %> - <%= "#{t('.accepted_contract_offer')} #{format_date_time(@contract.supplier_response_date)}.
".html_safe unless @contract.supplier_response_date.nil? %> - <% when 'expired' %> - <%= "#{t('.contract_closed_on')} #{format_date_time(@contract.supplier_response_date)}.
".html_safe %> - <% end %> - <%= "#{t('.contract_received_on')} #{format_date_time(@contract.offer_sent_date)}." unless @contract.aasm_state == 'sent' %> - <% end %> -
-<% end %> diff --git a/app/views/facilities_management/rm3830/supplier/contracts/_contract_summary_foot.html.erb b/app/views/facilities_management/rm3830/supplier/contracts/_contract_summary_foot.html.erb deleted file mode 100644 index b94987a85c..0000000000 --- a/app/views/facilities_management/rm3830/supplier/contracts/_contract_summary_foot.html.erb +++ /dev/null @@ -1,9 +0,0 @@ -
- -<% if @contract.aasm_state == 'sent' %> - -<% end %> diff --git a/app/views/facilities_management/rm3830/supplier/contracts/_contract_summary_head.html.erb b/app/views/facilities_management/rm3830/supplier/contracts/_contract_summary_head.html.erb deleted file mode 100644 index c8eae4287c..0000000000 --- a/app/views/facilities_management/rm3830/supplier/contracts/_contract_summary_head.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -<%= warning_text(warning_title) %> -

"> - <%= warning_message %> -

diff --git a/app/views/facilities_management/rm3830/supplier/contracts/_received_contract_offer.html.erb b/app/views/facilities_management/rm3830/supplier/contracts/_received_contract_offer.html.erb deleted file mode 100644 index bdd10c9e59..0000000000 --- a/app/views/facilities_management/rm3830/supplier/contracts/_received_contract_offer.html.erb +++ /dev/null @@ -1,39 +0,0 @@ -

- <%= t('.what_happens_next') %> -

-
-
-
- <%= govuk_details(t('.list01_title')) do %> -
    -
  • <%= t('.list01_1') %>
  • -
  • <%= t('.list01_2') %>
  • -
  • <%= t('.list01_3') %>
  • -
- <% end %> -
-
- <%= govuk_details(t('.list02_title')) do %> -
    -
  • <%= t('.list02_1') %>
  • -
  • <%= t('.list02_2') %>
  • -
- <% end %> -
-
- <%= govuk_details(t('.list03_title')) do %> -
    -
  • <%= t('.list03_1') %>
  • -
  • <%= t('.list03_2') %>
  • -
- <% end %> -
-
- <%= govuk_details(t('.list04_title')) do %> -
    -
  • <%= t('.list04_1') %>
  • -
- <% end %> -
-
-
\ No newline at end of file diff --git a/app/views/facilities_management/rm3830/supplier/contracts/edit.html.erb b/app/views/facilities_management/rm3830/supplier/contracts/edit.html.erb deleted file mode 100644 index 0484e8b793..0000000000 --- a/app/views/facilities_management/rm3830/supplier/contracts/edit.html.erb +++ /dev/null @@ -1,46 +0,0 @@ -<%= govuk_page_content(@page_description, @contract) do |pd| %> - <%= content_for :page_title, pd.heading_details.text %> - <%= form_for @contract, url: facilities_management_rm3830_supplier_contract_path do |f| %> -
-
-
- <%= t('.contract_name') %> -
-
- <%= @procurement.contract_name %> -
-
-
-
- <%= t('.contract_number')%> -
-
- <%= @contract.contract_number %> -
-
-
-
-
- - <%= "#{t('.form_title')} #{@procurement.user.buyer_detail.organisation_name}?" %> - - <%= display_error(f.object, :contract_response, false) %> - <%= govuk_radios_conditional do %> - <%= govuk_radios_conditional_item(f, :contract_response, true, t('.yes')) %> - <%= govuk_radios_conditional_item(f, :contract_response, false, t('.no')) %> - <%= govuk_radios_conditional_area(:contract_response, false, class: 'govuk-!-width-one-half') do %> - <%= govuk_label_old(f, f.object, :reason_for_declining, { reason_for_declining: t('.reason_for_declining')}) %> - <%= display_error(f.object, :reason_for_declining) %> -
- <%= govuk_character_count(f, :reason_for_declining, 500, 5) %> - <% end %> - <% end %> -
-
-
- <%= f.submit(pd.navigation_details.primary_text, class: 'govuk-button govuk-!-margin-right-4', 'aria-label': "#{pd.navigation_details.primary_text}", name: [pd.navigation_details.primary_name, 'commit'].find(&:present?)) %> - <%= link_to pd.navigation_details.secondary_text, pd.navigation_details.secondary_url, class: 'govuk-button govuk-button--secondary', 'aria-label': "#{pd.navigation_details.secondary_text}" %> -
- <% end %> -<% end %> - diff --git a/app/views/facilities_management/rm3830/supplier/contracts/show.html.erb b/app/views/facilities_management/rm3830/supplier/contracts/show.html.erb deleted file mode 100644 index c656ec1953..0000000000 --- a/app/views/facilities_management/rm3830/supplier/contracts/show.html.erb +++ /dev/null @@ -1,32 +0,0 @@ -<%= govuk_page_content(@page_description, @contract) do |pd| %> -<%= content_for :page_title, pd.heading_details.text %> - <%= render partial: 'contract_summary_head' %> - - <%= render partial: 'contract_offer_details' %> - -
- <%= render partial: 'facilities_management/rm3830/procurements/contracts/procurement_requirements', locals: { heading_text: t('.buyer'), heading_value: @procurement.user.buyer_detail.organisation_name } %> - - <%= render partial: 'buyer_contact_details' %> - - <%= render partial: 'facilities_management/rm3830/procurements/contracts/call_off_contract_documents' %> - - <%= render partial: 'received_contract_offer' if @contract.aasm_state == 'sent' %> - <%= render partial: 'accepted_contract_offer' if @contract.aasm_state == 'accepted' %> - - <%= render partial: 'contract_summary_foot' %> - - <% case @contract.aasm_state %> - <% when 'sent' %> -
- <%= link_to(pd.navigation_details.primary_text, edit_facilities_management_rm3830_supplier_contract_path(@contract.id), role: 'button', class: 'govuk-link govuk-!-font-size-19 govuk-button', 'aria-label': "#{pd.navigation_details.primary_text}") %> -
- <%= link_to(pd.navigation_details.return_text, @page_description.navigation_details.return_url, role: 'button', class: 'govuk-link govuk-!-font-size-19', 'aria-label': "#{pd.navigation_details.return_text}") %> -
- <% else %> -
- <%= link_to(pd.navigation_details.secondary_text, @page_description.navigation_details.secondary_url, role: 'button', class: 'govuk-link govuk-!-font-size-19 govuk-button govuk-button--secondary', 'aria-label': "#{pd.navigation_details.secondary_text}" ) %> -
- <% end %> -
-<% end %> diff --git a/app/views/facilities_management/rm3830/supplier/dashboard/_accepted_offers.html.erb b/app/views/facilities_management/rm3830/supplier/dashboard/_accepted_offers.html.erb deleted file mode 100644 index 6317e3715f..0000000000 --- a/app/views/facilities_management/rm3830/supplier/dashboard/_accepted_offers.html.erb +++ /dev/null @@ -1,28 +0,0 @@ -<% unless @accepted_offers.empty? %> - - - - - - - - - - - - <% @accepted_offers.each do |accepted_offer| %> - - - - - - - <% end %> - -
<%= t('.accepted_offers')%>
<%= t('.contract_name')%><%= t('.buyer')%><%= t('.accepted')%>
<%= link_to accepted_offer.procurement.contract_name, facilities_management_rm3830_supplier_contract_path(accepted_offer.id), class: 'govuk-link govuk-link--no-visited-state' %> <%= accepted_offer.procurement.user.buyer_detail.organisation_name %> <%= format_date_time accepted_offer.supplier_response_date %>
-<% else %> -

<%= t('.accepted_offers')%>

-
- <%= t('.no_accepted_offers')%> -
-<% end %> diff --git a/app/views/facilities_management/rm3830/supplier/dashboard/_closed_contracts.html.erb b/app/views/facilities_management/rm3830/supplier/dashboard/_closed_contracts.html.erb deleted file mode 100644 index fdc59b6a79..0000000000 --- a/app/views/facilities_management/rm3830/supplier/dashboard/_closed_contracts.html.erb +++ /dev/null @@ -1,28 +0,0 @@ -<% unless @closed_contracts.empty? %> - - - - - - - - - - - - <% @closed_contracts.each do |closed_contract| %> - - - - - - - <% end %> - -
<%= t('.closed_contracts')%>
<%= t('.contract_name')%><%= t('.buyer')%><%= t('.date')%><%= t('.status')%>
<%= link_to closed_contract.procurement.contract_name, facilities_management_rm3830_supplier_contract_path(closed_contract.id), class: 'govuk-link govuk-link--no-visited-state' %> <%= closed_contract.procurement.user.buyer_detail.organisation_name %> <%= format_date closed_contract.closed_date %> <%= FacilitiesManagement::RM3830::Supplier::DashboardHelper::SUPPLIER_STATUS[closed_contract.aasm_state.to_sym] %>
-<% else %> -

<%= t('.closed_contracts')%>

-
- <%= t('.no_closed_contracts')%> -
-<% end %> diff --git a/app/views/facilities_management/rm3830/supplier/dashboard/_live_contracts.html.erb b/app/views/facilities_management/rm3830/supplier/dashboard/_live_contracts.html.erb deleted file mode 100644 index 34263cadea..0000000000 --- a/app/views/facilities_management/rm3830/supplier/dashboard/_live_contracts.html.erb +++ /dev/null @@ -1,28 +0,0 @@ -<% unless @live_contracts.empty? %> - - - - - - - - - - - - <% @live_contracts.each do |live_contract| %> - - - - - - - <% end %> - -
<%= t('.live_contracts')%>
<%= t('.contract_name')%><%= t('.buyer')%><%= t('.start_date')%><%= t('.end_date')%>
<%= link_to live_contract.procurement.contract_name, facilities_management_rm3830_supplier_contract_path(live_contract.id), class: 'govuk-link govuk-link--no-visited-state' %> <%= live_contract.procurement.user.buyer_detail.organisation_name %> <%= format_date live_contract.contract_start_date %> <%= format_date live_contract.contract_end_date %>
-<% else %> -

<%= t('.live_contracts')%>

-
- <%= t('.no_live_contracts')%> -
-<% end %> diff --git a/app/views/facilities_management/rm3830/supplier/dashboard/_received_offers.html.erb b/app/views/facilities_management/rm3830/supplier/dashboard/_received_offers.html.erb deleted file mode 100644 index 989615bc85..0000000000 --- a/app/views/facilities_management/rm3830/supplier/dashboard/_received_offers.html.erb +++ /dev/null @@ -1,28 +0,0 @@ -<% unless @received_offers.empty? %> - - - - - - - - - - - - <% @received_offers.each do |received_offer| %> - - - - - - - <% end %> - -
<%= t('.received_offers')%>
<%= t('.contract_name')%><%= t('.buyer')%><%= t('.date_offer_expires')%>
<%= link_to received_offer.procurement.contract_name, facilities_management_rm3830_supplier_contract_path(received_offer.id), class: 'govuk-link govuk-link--no-visited-state' %> <%= received_offer.procurement.user.buyer_detail.organisation_name %> <%= format_date_time received_offer.contract_expiry_date %> <%= t('.action_required') %>
-<% else %> -

<%= t('.received_offers')%>

-
- <%= t('.no_received_offers') %> -
-<% end %> diff --git a/app/views/facilities_management/rm3830/supplier/dashboard/index.html.erb b/app/views/facilities_management/rm3830/supplier/dashboard/index.html.erb deleted file mode 100644 index 1692474f80..0000000000 --- a/app/views/facilities_management/rm3830/supplier/dashboard/index.html.erb +++ /dev/null @@ -1,11 +0,0 @@ -<%= govuk_page_content(@page_description, nil, false, true) do |pd| %> - <%= content_for :page_title, pd.heading_details.text %> - <% %w[received_offers accepted_offers live_contracts closed_contracts].each do |table| %> -
-
-
- <%= render partial: table %> -
-
- <% end %> -<% end %> \ No newline at end of file diff --git a/app/views/facilities_management/rm3830/supplier/sent/_accepted_offer.html.erb b/app/views/facilities_management/rm3830/supplier/sent/_accepted_offer.html.erb deleted file mode 100644 index 257fecbfc7..0000000000 --- a/app/views/facilities_management/rm3830/supplier/sent/_accepted_offer.html.erb +++ /dev/null @@ -1,37 +0,0 @@ -<%= content_for :page_title, t('.title') %> -
-

- <%= t('.title') %> -

-
- <%= t('.contract_name', contract_name: @contract.procurement.contract_name) %>
- <%= t('.contract_number', contract_number: @contract.contract_number) %> -
-
- -
-

<%= t('.what_happens_next') %>

- -

<%= t('facilities_management.rm3830.supplier.contracts.accepted_contract_offer.list01_title') %>

-
    -
  • <%= t('facilities_management.rm3830.supplier.contracts.accepted_contract_offer.list01_1') %>
  • -
  • <%= t('facilities_management.rm3830.supplier.contracts.accepted_contract_offer.list01_2') %>
  • -
- -

<%= t('facilities_management.rm3830.supplier.contracts.accepted_contract_offer.list02_title') %>

-
    -
  • <%= t('facilities_management.rm3830.supplier.contracts.accepted_contract_offer.list02_1') %>
  • -
- -

<%= t('facilities_management.rm3830.supplier.contracts.accepted_contract_offer.list03_title') %>

-
    -
  • <%= t('facilities_management.rm3830.supplier.contracts.accepted_contract_offer.list03_1') %>
  • -
- -

<%= t('facilities_management.rm3830.supplier.contracts.accepted_contract_offer.list04_title') %>

-
    -
  • <%= t('facilities_management.rm3830.supplier.contracts.accepted_contract_offer.list04_1') %>
  • -
  • <%= t('facilities_management.rm3830.supplier.contracts.accepted_contract_offer.list04_2') %>
  • -
- -
diff --git a/app/views/facilities_management/rm3830/supplier/sent/_declined_offer.html.erb b/app/views/facilities_management/rm3830/supplier/sent/_declined_offer.html.erb deleted file mode 100644 index 35504174a9..0000000000 --- a/app/views/facilities_management/rm3830/supplier/sent/_declined_offer.html.erb +++ /dev/null @@ -1,17 +0,0 @@ -<%= content_for :page_title, t('.title') %> -
-
-

- <%= t('.title') %> -

-
- <%= "#{t('.contract_name')} #{@contract.procurement.contract_name}" %>
- <%= "#{t('.contract_number')} #{@contract.contract_number}" %> -
-
- -
- <%= t('.description') %> -
- -
diff --git a/app/views/facilities_management/rm3830/supplier/sent/index.html.erb b/app/views/facilities_management/rm3830/supplier/sent/index.html.erb deleted file mode 100644 index cc9023ab61..0000000000 --- a/app/views/facilities_management/rm3830/supplier/sent/index.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -<%= render partial: 'accepted_offer' if @contract.aasm_state == 'accepted' %> -<%= render partial: 'declined_offer' if @contract.aasm_state == 'declined' %> - -<%= link_to t('.link_text'), facilities_management_rm3830_supplier_dashboard_index_path, class: 'govuk-button govuk-button--secondary govuk-!-margin-top-9', 'aria-label': "#{t('.link_text')}" %> diff --git a/app/views/facilities_management/rm6232/procurements/show.html.erb b/app/views/facilities_management/rm6232/procurements/show.html.erb index 6d592b21fb..674b32b72d 100644 --- a/app/views/facilities_management/rm6232/procurements/show.html.erb +++ b/app/views/facilities_management/rm6232/procurements/show.html.erb @@ -1,7 +1,5 @@ <% content_for :page_title, t(".title") %> -<%= render partial: 'facilities_management/shared/entering_requirements/errors_on_requirements', locals: { errors: @procurement.errors } %> -
diff --git a/app/views/facilities_management/rm6232/procurements/show_partials/_entering_requirements.html.erb b/app/views/facilities_management/rm6232/procurements/show_partials/_entering_requirements.html.erb deleted file mode 100644 index bf13e76b3b..0000000000 --- a/app/views/facilities_management/rm6232/procurements/show_partials/_entering_requirements.html.erb +++ /dev/null @@ -1,23 +0,0 @@ -
-
-

- <%= t('.description') %>
-

- -
-

- <%= t('.contract_details') %> -

- - <%= render partial: 'facilities_management/shared/summary_tables/contract_summary_table', locals: { sections: ['contract_name', 'annual_contract_value', 'tupe', 'contract_period'] } %> -
- -
-

- <%= t('.services_and_buildings') %> -

- - <%= render partial: 'facilities_management/shared/summary_tables/contract_summary_table', locals: { sections: ['services', 'buildings', 'buildings_and_services'] } %> -
-
-
diff --git a/app/views/facilities_management/rm6232/procurements/show_partials/_further_information.html.erb b/app/views/facilities_management/rm6232/procurements/show_partials/_further_information.html.erb deleted file mode 100644 index 0ed9e8245c..0000000000 --- a/app/views/facilities_management/rm6232/procurements/show_partials/_further_information.html.erb +++ /dev/null @@ -1,35 +0,0 @@ -
-
-

- <%= t('.step_1') %> -

-

- <%= t('.we_have_used') %> -

-

- <%= link_to_generated_file_for_download('#', :xlsx, t('.deliverables_matrix'), true) %> -

-

- <%= link_to_generated_file_for_download('#', :odt, t('.supplier_brief'), true) %> -

-
-
- -
- -
-
-

- <%= t('.step_2') %> -

-

- <%= t('.on_the_framework_page_html', framework_page_link: link_to(t('.fm_framework_page'), t('.fm_framework_page_url'), class: 'govuk-link--no-visited-state')) %> -

-
    -
  • <%= t('.information_list.item_1') %>
  • -
  • <%= t('.information_list.item_2') %>
  • -
  • <%= t('.information_list.item_3') %>
  • -
  • <%= t('.information_list.item_4') %>
  • -
-
-
diff --git a/app/views/facilities_management/rm6232/procurements/show_partials/_results.html.erb b/app/views/facilities_management/rm6232/procurements/show_partials/_results.html.erb deleted file mode 100644 index 65482ab57f..0000000000 --- a/app/views/facilities_management/rm6232/procurements/show_partials/_results.html.erb +++ /dev/null @@ -1,65 +0,0 @@ -
-
-

- <%= t('.based_on_information') %> -

-
-
-
-
-

- <%= t('.sub_lot', sub_lot: @procurement.lot_number) %> -

-

- <%= t('.suppliers_shortlisted', number: @procurement.suppliers.selected_suppliers.length) %> -

-

- <%= t('.who_can_provide') %> -

-
    - <% @procurement.suppliers.selected_suppliers.each do |supplier| %> -
  • - <%= supplier.supplier_name %> - <% if supplier != @procurement.suppliers.selected_suppliers.last %> -
    - <% end %> -
  • - <% end %> -
-
-
-
-
-
-

- <%= t('.buildings_and_services') %> -

-
- <%= govuk_details("#{t('.building').pluralize(active_procurement_buildings.count)} (#{active_procurement_buildings.count})") do %> -
    - <% active_procurement_buildings.each do |procurement_building| %> -
  • <%= procurement_building.get_frozen_attribute('building_name') %>
  • - <% end %> -
- <% end %> -
-
- <%= govuk_details("#{t('.service').pluralize(procurement_service_names.count)} (#{procurement_service_names.count})") do %> -
    - <% procurement_service_names.each do |service_name| %> -
  • <%= service_name %>
  • - <% end %> -
- <% end %> -
-
-
-
-
-
- <%= warning_text(t('.warning_text')) %> -

- <%= t('.if_you_wish') %> -

-
-
\ No newline at end of file diff --git a/app/views/facilities_management/rm6232/procurements/show_partials/_what_happens_next.html.erb b/app/views/facilities_management/rm6232/procurements/show_partials/_what_happens_next.html.erb deleted file mode 100644 index 6b75bb5432..0000000000 --- a/app/views/facilities_management/rm6232/procurements/show_partials/_what_happens_next.html.erb +++ /dev/null @@ -1,40 +0,0 @@ -
-
-

- <%= t('.if_you_need_to_talk') %> -

-
-
- <%= t('.your_unique_reference_number') %> -
-
- <%= @procurement.contract_number %> -
-
-

- <%= t('.you_have_two_option') %> -

-
-

- <%= t('.option_1.heading') %> -

-

- <%= t('.option_1.details') %> -

-
-
- <%= t('.or') %> -
-
-

- <%= t('.option_2.heading') %> -

-

- <%= t('.option_2.details') %> -

-
-
- <%= link_to_generated_file_for_download(facilities_management_rm6232_procurement_supplier_shortlist_spreadsheet_path(@procurement.id), :xlsx, t('.selected_suppliers'), true) %> -
-
-
\ No newline at end of file diff --git a/app/views/facilities_management/rm6232/procurements/show_partials/show.html.erb b/app/views/facilities_management/rm6232/procurements/show_partials/show.html.erb deleted file mode 100644 index 59aa9464ea..0000000000 --- a/app/views/facilities_management/rm6232/procurements/show_partials/show.html.erb +++ /dev/null @@ -1,30 +0,0 @@ -<% content_for :page_title, t(".title.#{@procurement.aasm_state}") %> - -<%= render partial: 'facilities_management/shared/entering_requirements/errors_on_requirements', locals: { errors: @procurement.errors } %> - -
-
- - <%= page_subtitle %> - -

- <%= t(".title.#{@procurement.aasm_state}") %> -

-
-
- -<%= render partial: "facilities_management/rm6232/procurements/show_partials/#{@procurement.aasm_state}" %> - -
-
- <%= form_with url: facilities_management_rm6232_procurement_update_show_path(@procurement), method: :put, html: { specialvalidation: true, novalidate: true } do |f| %> -
- <%= f.submit t('.save_and_continue'), class: 'govuk-button', data: { module: 'govuk-button' } unless @procurement.further_information? %> - <%= f.submit t('.change_requirements'), class: 'govuk-button govuk-button--secondary', data: { module: 'govuk-button' }, name: :change_requirements if @procurement.results? %> -
-

- <%= link_to t('.return_to_your_account'), facilities_management_rm6232_path, class: 'govuk-body govuk-link--no-visited-state' %> -

- <% end %> -
-
diff --git a/app/views/facilities_management/shared/entering_requirements/_errors_on_requirements.html.erb b/app/views/facilities_management/shared/entering_requirements/_errors_on_requirements.html.erb deleted file mode 100644 index 3482f2d78e..0000000000 --- a/app/views/facilities_management/shared/entering_requirements/_errors_on_requirements.html.erb +++ /dev/null @@ -1,16 +0,0 @@ -<% if errors.any? %> - -<% end %> \ No newline at end of file diff --git a/app/views/facilities_management/shared/summary_tables/_contract_summary_table.html.erb b/app/views/facilities_management/shared/summary_tables/_contract_summary_table.html.erb deleted file mode 100644 index b501db6d7f..0000000000 --- a/app/views/facilities_management/shared/summary_tables/_contract_summary_table.html.erb +++ /dev/null @@ -1,28 +0,0 @@ -
- - - <% sections.each do |section| %> - <% section_has_error = section_has_error?(section) %> - - <% status = @procurement.send("#{section}_status")%> - - - - <% if section_has_error %> - - - - <% end %> - <% end %> - -
- <% if %i[cannot_start not_required].include?(status) %> - <%= t(".#{section}") %> - <% else %> - <%= link_to t(".#{section}"), link_url(section), class: "govuk-link", aria: { describedby: "#{section_id(section)}" } %> - <% end %> - - <%= govuk_tag(status) %> -
- <%= display_all_errors(requirements_errors_list, section_errors(section))%> -
\ No newline at end of file diff --git a/app/views/shared/_error_summary_nested_attributes.html.erb b/app/views/shared/_error_summary_nested_attributes.html.erb deleted file mode 100644 index 551e0cc9c8..0000000000 --- a/app/views/shared/_error_summary_nested_attributes.html.erb +++ /dev/null @@ -1,19 +0,0 @@ -<% if nested_attributes.select{|na| na.errors.any?}.any? %> - - -<% end %> \ No newline at end of file diff --git a/app/views/shared/admin/frameworks/_edit.html.erb b/app/views/shared/admin/frameworks/_edit.html.erb index 0ccd6e8cd6..fd4ed79029 100644 --- a/app/views/shared/admin/frameworks/_edit.html.erb +++ b/app/views/shared/admin/frameworks/_edit.html.erb @@ -15,7 +15,7 @@
<%= t('.live_at_hint', current_date: Time.now.in_time_zone('London').strftime('%e/%-m/%Y'))%>
- <%= display_errors(f.object, :live_at)%> + <%= display_error(f.object, :live_at)%> <%= f.gov_uk_date_field :live_at, legend_options: { page_heading: false, visually_hidden: true }, aria: { describedby: 'ive-at-hint' } %> <% end %>
@@ -26,7 +26,7 @@
<%= t('.expires_at_hint', current_date: Time.now.in_time_zone('London').strftime('%e/%-m/%Y'))%>
- <%= display_errors(f.object, :expires_at)%> + <%= display_error(f.object, :expires_at)%> <%= f.gov_uk_date_field :expires_at, legend_options: { page_heading: false, visually_hidden: true }, aria: { describedby: 'expires-at-hint' } %> <% end %>
diff --git a/config/locales/en.yml b/config/locales/en.yml index b56124c077..2b09721bd7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -159,7 +159,6 @@ en: continue: Continue create_account: Create account csv_html: CSV - da_eligible: DIRECT AWARD ELIGIBLE doc_html: DOC error_summary_title: There is a problem feedback: feedback @@ -410,7 +409,6 @@ en: cookie_settings_link_aria_label: Change you cookie settings crown_copyright: "© Crown copyright" error_prefix: Error - feedback: feedback feedback_html: This is a new service – your %{link} will help us to improve it. privacy_link: Privacy policy privacy_link_aria_label: View our privacy policy diff --git a/config/locales/views/facilities_management.en.yml b/config/locales/views/facilities_management.en.yml index eea88f9ff4..e67bcdce0d 100644 --- a/config/locales/views/facilities_management.en.yml +++ b/config/locales/views/facilities_management.en.yml @@ -196,116 +196,6 @@ en: email_must_2: have supplier access email_must_3: not be the same user as another supplier user_email_question: Changing the user email will change who can view the supplier dashboard. - buildings: - add_address: - heading: Add building address - return_to_building_details: Return to building details - save_and_continue: Save and continue - step: Step 1 of 4 - sub_title: Buildings - edit: - heading: - add_address: Add building address - building_area: Internal and external areas - building_details: Building details - building_type: Building type - security_type: Security clearance - next_step: 'Next: %{next_step}' - next_steps: - building_area: Building type - building_details: Building size - building_type: Security clearance - previous_step_back_text: - add_address: Return to building details - building_area: Return to building details - building_details: Return to building details summary - building_type: Return to building size - security_type: Return to building type - save_and_continue: Save and continue - save_and_return: Save and return to building details summary - skip_this_step: Skip this step - step: Step %{step_number} of 4 - sub_title: Buildings — %{building_name} - edit_partials: - add_address: - add_address_header: Address - description: We’ll use the address to assess the region in which your building is located. This will help us to shortlist the suppliers who can deliver your services. - line_1_of_2: Building and street line 1 of 2 - line_2_of_2: Building and street line 2 of 2 (optional) - postcode: Postcode - town_or_city: Town or city - building_area: - description_html: Gross internal area (GIA) is the area of a building measured to the internal face of the perimeter walls at each floor level.
For example, 1800 square metres. - external_area_description_html: An external area can be the grounds surrounding a building, or an area without any building for example a park, and is measured in square metres.
For example 18000 square metres. - external_area_header: What's the size of the external area? - further_info_html: 'For further information on GIA follow this link (opens in a new tab).' - gia_header: What’s the size of the internal area of this building? - guidance: Please enter your building's internal and external area sizes below. These are used to calculate service pricing, where necessary. If your building does not have an internal or external area, please enter '0' in the relevant field. - building_details: - address: Address - building_name: - hint: This will help you refer to your building or part of the building when selecting services. For example, Newbury office 3rd floor. - label: What is the name of your building? - cant_find_address: I can’t find my building’s address in the list - description: - hint: Enter a description or reference, for example, some users put cost centres in this field. - label: Add a description (optional) - what_is_address: What is the address? - what_is_address_description: We’ll use the address to assess the region in which your building is located. This will help us to shortlist the suppliers who can deliver your services. - building_type: - choose_building_type: Choose the building type that best describes your building - describe_building: Describe building type - help_text: Look for the 'DIRECT AWARD ELIGIBLE' label that indicates if a building type can be direct awarded. - view_more: View more building types - other: - other_label: Other - security_type: - describe_security: Describe security level - security_description_html: Select the level of security clearance a supplier’s staff will need to access this building. This is the security level of the contractor’s staff. - select_security: Select the level of security clearance needed - index: - column_desc_header: Description - column_lstup_header: Last updated - column_name_header: Building name - column_status_header: Status - create_new_button: Add a building - heading: Buildings - how_it_works: How it works - link_to_building_summary: View details for %{building_name} - my_buildings_header: My buildings - no_buildings_text: You have no saved buildings - return_to_your_account: Return to your account - start_a_procurement_link_text: Start a procurement - start_paragraph_html: You can set up your buildings individually using the 'Add a building' button, or alternatively, if you have a larger estate, there is an option to upload your building information using an excel spreadsheet when inputting your requirements - click on '%{start_a_procurement_link}' within your account for further information about this method. Your uploaded buildings will then also appear within this screen for future use. - start_warning_1: When creating your buildings, you are not restricted to create just full buildings, for example you may choose to set up just a floor or a specific area within a building. You may also set up an external area, such as a park, as a ‘building’. - start_warning_2: Your service pricing will be broken down to show a cost per service per ‘building’, allowing you to manage your contract effectively. You should therefore create ‘buildings’ dependent on the level of detail you require. - start_warning_3: If you have a site, campus, group of buildings, these should be set up individually and not grouped together into one site. - new: - heading: Add a building - next_step: 'Next: Building size' - return_to_buildings: Return to buildings - save_and_continue: Save and continue - save_and_return: Save and return to building details summary - step: Step 1 of 4 - sub_title: Buildings - show: - answer_question: Answer question - change: Change - complete_text: This building is ready to use in procurements. - incomplete_text: You need to answer all questions before this building can be ready to use in procurements. - page_title: Building details summary - return_to_buildings: Return to buildings - row_name: - address: Address - building_description: Description (optional) - building_name: Name - building_type: Building type - external_area: External area - gia: Gross internal area - region: Region - security_type: Security clearance - status: 'Status:' - sub_title: Buildings buyer_details: edit: back: Return to your account @@ -355,159 +245,6 @@ en: make_sure_listed: The framework in the web address is '%{framework}'. Make sure the web address contains one of the listed frameworks. page_title: Unrecognised framework the_recognised_are: 'The Facilities Management frameworks are:' - procurement_buildings: - buildings_and_services: - hint_text_html: To add to, or change your list of services to select from, please go back to your Requirements summary page, and click on '%{services_link}' in section 2. - label: Which of your services are required within this building? - or: Or - select_all: Select all - services_link_text: Services - edit: - return_link: - buildings_and_services: Return to assigning services to buildings summary page - missing_region: Return to review your buildings - save_and_return: Save and return - title: - missing_region: Confirm your building's region - missing_region: - building_address: Building address - building_name: Building name - change_link: Change - change_link_aria_label: Change region - for_this_building: For this building, we have been unable to automatically place it into a single region, so could you please confirm the region below by selecting from the short list of regions displayed. - prompt: Please select a region - region: Region - select_region: Select region - we_use_your_buildings: We use your buildings’ address to assess the region that your building is located in. This helps us shortlist the suppliers who can deliver your services to your exact locations. - missing_regions: - before_you_proceed: Before you proceed to review your procurement, we have identified building(s) which we have been unable to automatically place into a geographical region, using their address. The regions help us shortlist the suppliers who can deliver your services to your exact locations. - building: building - building_address: Building address - building_name: Building name - building_region: Region - could_you_review: Could you review the building(s) below by clicking into each one and confirming the correct region by selecting from the short list of regions you will see displayed. - return_link: Return to procurements dashboard - return_to_dashboard: Return to procurements dashboard - review_buildings: Review %{building_count} with missing region - select_region: Select region - title: Review your buildings - procurement_details: - edit: - return_to_requirements: Return to requirements - save_and_return: Save and return - title: - annual_contract_value: Annual contract value - buildings: Buildings - contract_name: Contract name - contract_period: Contract period - estimated_annual_cost: Estimated annual cost - services: Services - tupe: TUPE - edit_partials: - annual_contract_value: - hint_text: Enter your estimate for the annual contract value. Include everything in your calculation. - label_text: What is your estimate for the annual contract value? - buildings: - add_a_building: Add a building - building_name_and_address: Building name and address - details: Details - details_link_aria_label: Details for "%{building_name}" - how_it_works: How it works - how_it_works_1: When creating your buildings, you are not restricted to create just full buildings, for example you may choose to set up just a floor or a specific area within a building. You may also set up an external area, such as a park, as a ‘building’. - how_it_works_2: Your service pricing will be broken down to show a cost per service per ‘building’, allowing you to manage your contract effectively. You should therefore create ‘buildings’ dependent on the level of detail you require. - how_it_works_3: If you have a site, campus, group of buildings, these should be set up individually and not grouped together into one site. - my_buildings: My buildings - new_buildings: New buildings - new_buildings_details: If you wish to set up a new building so that it can be included in this procurement, click on the 'Add a building' button below. - no_saved_buildings: You have no saved buildings. Click on 'Add a building' to start setting up your building(s) - page_details_1: Please select all of the buildings you want to include in your procurement. Only 'completed' buildings can be selected. To view a buildings details or finish setting up an incomplete building, please click on 'details' next to the building. - page_details_2: Once you have selected all your buildings for this procurement, click on the 'save and continue' button. - status: Status - contract_name: - hint_text: This will help you to refer to your contracts when talking to suppliers. - label_text: What do you want to call your contract? - contract_period: - call_off_extensions: - add_extension_period: Add another extension period - description: Including this in your contract gives you the option to extend the end date of the agreement. Call-off contracts can be let for a maximum period of 10 years, inclusive of mobilisation period and all call-off extensions. - heading: Do you want the option to extend your call-off contract? - extension: - aria_label_months: Optional extension %{extension} months - aria_label_years: Optional extension %{extension} years - extension_period: Extension period %{extension} - months: months - remove: Remove - years: years - initial_call_off_period: - aria_label_months: The month part of the initial call off period - aria_label_years: The year part of the initial call off period - description: The initial period in which the services are provided. This is the date you want services to begin and can be a maximum of 7 years. - example: For example, 01 11 2030. - heading: Initial call-off period - initial_call_off_period_start_date: Initial call-off period start date - unit_months: months - unit_years: years - mobilisation_period: - description: This is the period in which the supplier gets ready to start providing the services. A mobilisation period of between 3 to 6 months is recommended depending on the complexity of services and buildings. A shorter term can be entered if required, however enough time should be allowed for suitable mobilisation ready for service delivery. - heading: Do you need a mobilisation period? - hint_text: A minimum of 4 weeks required if TUPE is involved. - label_text: Enter mobilisation length - unit: weeks - estimated_annual_cost: - content: This will help us to place you into the correct sub-lot. The cost should include all the buildings and services included in the procurement. This annual cost should not include any additional billable works. - do_you_know: Do you know your current or estimated annual cost? - label: Enter the estimated annual cost, excluding VAT - services: - choose_the_required_services: Choose all facilities management services required within your estate, even if you want services in just one building. - learn_more: Further details (opens in a new tab) - select_the_services: Select the facilities management services that you need - tupe: - body_text_html: When a supplier changes, the original service provider’s workers may be protected under TUPE.
For example, a new supplier is awarded the contract to provide cleaning services to a building.
The cleaners, who are employed by the current service provider, may be protected under TUPE. - first_question: Do you believe that Transfer of Undertakings (TUPE) Regulations applies to your contract? - tupe_link: https://www.gov.uk/transfers-takeovers - tupe_link_text: Find out when TUPE applies (opens in a new tab) - what_you_need_to_know_html: TUPE, the Transfer of Undertakings (Protection of Employment) protects the rights of employees when the business or commercial contract that they are working on changes to new ownership.
It ensures that employees who find themselves transferred to a new business, retain exactly the same hours and rate of pay as they were contracted to with the old employer. - what_you_need_to_know_title: What you need to know about TUPE - show: - return_to_requirements: Return to requirements - title: - buildings: Buildings summary - buildings_and_services: Assigning services to buildings summary - contract_period: Contract period summary - service_requirements: Service requirements summary - services: Services summary - show_partials: - buildings: - building: building - change: Change - table_caption: Buildings - the_buildings_below: The buildings below have been selected for this procurement. If you wish to add or remove buildings please click on the 'change' button. - you_have_selected: You have selected - buildings_and_services: - buildings: Building name and address - buildings_link_text: Buildings - no_service_selected: No service selected - service: service - services: Assigned services - status: Status - summary_html: Please click on each of your buildings listed below and select the services you require within each building. The status indicator above will show as 'complete' once services have been selected for all your buildings listed. To add to, or change your list of buildings, please go back to your Requirements summary page, and click on '%{buildings_link}' in section 2. - contract_period: - call_off_extension_period: Optional call-off extension period - call_off_extensions: Optional call-off extensions - change: Change - initial_call_off_period: Initial call-off period - mobilisation_period: Mobilisation period - none: None - service_requirements: - buildings: Buildings - instructions: We need to understand your requirements for your services within each of your buildings. For the list of your buildings below, please click on the buildings with an 'incomplete' status to see the service requirement questions that need to be answered. Once all the buildings show as 'completed' please click on the 'return to requirements' link. - status: Status - services: - caption: You have selected the services below as being required in one or more of your buildings. If you wish to add or remove services please click on the 'change' button. - change: Change - heading: You have selected - service: service - table_caption: Services select_services: servicespec_link_alttext: RM3830 Facilities Management Marketplace shared: @@ -540,16 +277,5 @@ en: region_desc: Please confirm the region your building is located in. This will help us shortlist the suppliers who can deliver your services. region_plural: regions found region_singular: region found - summary_tables: - contract_summary_table: - annual_contract_value: Annual contract value - buildings: Buildings - buildings_and_services: Assigning services to buildings - contract_name: Contract name - contract_period: Contract period - estimated_annual_cost: Estimated annual cost - service_requirements: Service requirements - services: Services - tupe: TUPE users: sign_in_error: You must provide a correct username or password diff --git a/config/locales/views/facilities_management.rm3830.en.yml b/config/locales/views/facilities_management.rm3830.en.yml index 45f519a394..e87b44695a 100644 --- a/config/locales/views/facilities_management.rm3830.en.yml +++ b/config/locales/views/facilities_management.rm3830.en.yml @@ -581,128 +581,11 @@ en: rates: The RM3830 has expired, you cannot update these rates. regions: The RM3830 has expired, you cannot update the supplier's regions. services: The RM3830 has expired, you cannot update the supplier's services. - buyer_account: - index: - buyer_account_dashboard: Buyer account dashboard - buyer_account_title: Your account - further_information_help: "(opens in a new tab)" - further_information_link: https://www.crowncommercial.gov.uk/agreements/rm3830 - further_information_link_description: View further information about the Facilities Management framework RM3830 - manage_account_desc: Update and edit your contact details - manage_account_link: Manage my details - manage_buildings: Manage my buildings - manage_buildings_desc: Set up and manage your buildings for use in procurements - manage_procurements_desc: Open your procurements dashboard to view and continue existing saved procurements - manage_procurements_link: Continue a procurement - new_procurement_desc: Quickly view suppliers who can provide services to your locations - quick_view: Quick view suppliers - return_to_page: To return to this page at any time, just click on 'My account'. - start_procurement_desc: See shortlisted suppliers, estimated contract costs, and explore direct award or further competition options - start_procurement_link: Start a procurement documents: service_specification_document: name: facilities-management/rm3830/RM3830 Service requirements and standards.pdf text: Read the service specification document - home: - index: - 1_title: 1. Quick view suppliers - 1_we_will_tell_you_html: "
  • which suppliers can meet your needs
  • " - 1_you_will_tell_us_html: | -
  • which services you are looking for
  • -
  • building locations and information
  • - 2_title: 2. Start a procurement - 2_we_will_tell_you_html: | -
  • which sub-lot is suitable
  • -
  • an estimated contract cost
  • -
  • a shortlist of suppliers
  • -
  • procurement options to proceed
  • - 2_you_will_tell_us_html: | -
  • about your buildings and service requirements
  • -
  • basic contract information
  • - 3_DA_list_html: | -
  • create your contract online, and offer to the most competitive supplier
  • -
  • the most efficient and compliant route to procure FM services
  • - 3_DA_tile: Direct award (if option is available) - 3_FC_list_html: | -
  • download your supplier shortlist and requirement documents
  • -
  • proceed with your standard procurement process or contact CCS for further guidance
  • - 3_further_comp: Further competition - 3_title: 3. Procurement options - beforeyoustart: Before you start - da_description: A quick way of identifying suitable suppliers and awarding a contract without the need for a further competition. A preferred supplier cannot be manually selected, a direct award is only awardable to the lowest priced supplier based on your requirements. - da_title: Direct award - further_information: View further information about the Facilities Management framework RM3830 - heading: Find a facilities management supplier - how_it_works: How it works - international_coverage: International coverage - note: Direct award is only available for contracts less than £1.5 million, and can only be awarded to the lowest priced supplier. - please_email: Please contact us for overseas services - email/phone details below. - startlist_html: | -
  • what services you are looking for
  • -
  • your building locations and information
  • -
  • your basic contract requirements
  • - startnow: Start now - subheading: 'Use this service to:' - usagelist_html: | -
  • quickly view suppliers who can provide services to your locations
  • -
  • see an estimated contract cost
  • -
  • compliantly create and offer a direct award contract
  • -
  • shortlist suppliers ready for further competition
  • - we_will_tell_you: We will tell you - you_can_progress: 'You can progress through these three steps:' - you_will_tell_us: You will tell us - youneedtoknow: 'You need to know:' - journey: - choose_locations: - heading: Regions - question: Where are your buildings located? - return_text: Return to your account - subtitle: Choose one or more regions, based on building’s location where you require facilities management services. - choose_services: - caption: Choose all facilities management services required within your estate, even if you want services in just one building. To see further information about services click on the 'Further details' link under each service. Alternatively, open the service specification document below and go to the relevant section. - caption2: Look for the 'DIRECT AWARD ELIGIBLE' label that indicates if a service can be direct awarded. - heading: Services - learn_more: Further details (opens in a new tab) - question: Select the facilities management services that you need - return_text: Return to your account - new_framework_banner: - new_agreement: new agreement RM6232 for Facilities Management and Workplace Services - new_fm_framework_html: The portal for the RM3830 Facilities Management agreement will close on 5 April 2023. Please use the %{new_framework_link}. procurement_buildings: - show: - answer_question: Answer question - change: Change - description: Description - detail_of_requirement: Detail of requirement - external_area_error: External area must be greater than 0 - gia_error: Gross internal area must be greater than 0 - heading: Service requirements - help_line_1: We need to understand more about the services that you require in this building. Please complete any missing information, and check that you are happy with any pre-populated volumes. - help_line_2: The status indicator above will confirm when all questions have been answered for this building - you can then click on the 'return to service requirement summary' hyperlink at the bottom of the page. - list_item_1: Service volumes - this is where you can check or input the volume required for each service. - list_item_2: Service standards - if applicable, this is where you can select the standard of service required. - list_title: 'All the services that you require for this building are listed below, split into two sections:' - no_data: No input required - return_to_requirements: Return to service requirements summary - service_name: Service name - service_standards: 2. Service standards - service_volumes: 1. Service volumes - standard: Standard - status: 'Status:' - the_standard_required: The service standard required - unit_of_measure: - external_area: External area - number of square metres - gia: Gross Internal Area - number of square metres - lift_data: Total number of lift entrances - no_of_appliances_for_testing: Number of appliances to be tested per annum - no_of_building_occupants: The number of building occupants - no_of_consoles_to_be_serviced: Number of consoles per annum - no_of_units_to_be_serviced: Number of units per annum - service_hours: Total number of hours required per annum - tones_to_be_collected_and_removed: Number of tonnes per annum - unit_of_measure_title: Unit of measure - volume_example: If your initial call-off period is less than one year, please still enter a volume requirement for one full year. For example, if you require a volume of 100 per month, please enter 1200 into the field. - volume_required: Volume required volume: question: no_of_appliances_for_testing: How many appliances to be tested per annum? @@ -712,32 +595,6 @@ en: size_of_external_area: What is the size of the external area (in square metres)? tones_to_be_collected_and_removed: How many tonnes to be collected and removed per annum? procurement_buildings_services: - area: - heading: Internal and external areas - edit: - return_to_service_requirements: Return to service requirements - save_and_return: Save and return - lift: - no_of_floors: Number of floors - lifts: - button_text: Add another lift ( remaining) - description: For the first lift please enter the number of floors below. If you have more than one lift just keep adding lifts until complete. For example, a lift starting at the ground floor, giving access up to the 10th floor, is a total of 11 floors. - floors: How many lifts are in this building, and how many floors does each lift service? - service_hours: - detail_example: See an example - detail_example_1: 'For example, if your required total number of hours per year is 3328, your detail could be:' - detail_example_2: 2 x people - detail_example_3: 1 x person working Monday - Friday, 9am-5pm, totalling 2080 hours - detail_example_4: 1 x person Monday - Wednesday, 9am - 5pm, totalling 1248 hours - detail_example_5: It is suggested that you base the hours on a standard of 52 weeks x 7 days in one year. Adjustments for bank holidays etc can then be made within contract if necessary. - detail_example_6: Please ensure the total of the values in the detail match the total number of hours input above. - detail_heading: Please detail below when the service hours should be provided per week, and the number of people to provide those hours of service. - detail_hint: This information will be used to inform the supplier of your requirements. - detail_label: Detail of requirement - hour_heading: Please enter the total number of hours of this service required per year. - hour_hint: The hours entered will be used to calculate the cost of this service. - hour_label: Number of hours per year - volume_example: If your initial call-off period is less than one year, please still enter the number of hours required for one full year. For example, if you require 100 hours per month, please enter 1200 into the field. service_standards: detail_text: building_standards: @@ -765,117 +622,10 @@ en: standard_A: Standard A - the general or normal service level standard_B: Standard B - this is the minimum level of service required standard_C: Standard C - a bespoke service level - direct_award_eligible: Direct award eligible - heading: Which service standard do you want for this service in this building? - hint_text: To understand the differences between the standards, please read the brief descriptions, or alternatively open the service specification document below and go to the service standards section. - warning: Please note that only Standard A is suitable for direct award, the other standards require a further competition. - volumes: - question: - no_of_appliances_for_testing: How many portable appliances will require testing each year within this building? - no_of_building_occupants: How many building occupants (building users) are there in this building? - no_of_consoles_to_be_serviced: How many consoles are to be serviced each year within this building? - no_of_units_to_be_serviced: How many units are to be serviced each year within this building? - tones_to_be_collected_and_removed: How many tonnes are to be collected, stored and removed each year within this building? - unit: - no_of_appliances_for_testing: appliances - no_of_building_occupants: occupants - no_of_consoles_to_be_serviced: consoles - no_of_units_to_be_serviced: units - tones_to_be_collected_and_removed: tonnes - volume_example: - no_of_appliances_for_testing: If your initial call-off period is less than one year, please still enter the number of portable appliances that require testing for one full year. For example, if you have 100 portable appliances that require testing per month, please enter 1200 into the field. - no_of_consoles_to_be_serviced: If your initial call-off period is less than one year, please still enter the number of consoles that require servicing for one full year. For example, if you have 100 consoles that require servicing per month, please enter 1200 into the field. - no_of_units_to_be_serviced: If your initial call-off period is less than one year, please still enter the number of units that require servicing for one full year. For example, if you have 100 units that require servicing per month, please enter 1200 into the field. - tones_to_be_collected_and_removed: If your initial call-off period is less than one year, please still enter the number of tonnes that are collected, stored and removed for one full year. For example, if you have 100 tonnes that are collected, stored and removed per month, please enter 1200 into the field. procurements: - choose_contract_value: - can_you_estimate_cost: Can you estimate if adding the cost of these services will move your estimated contract cost into a different value band than the one currently shown? - change_requirements_description: If you wish to change your requirements, click the 'Change requirements' button below. - contract_value_heading: When calculating your total contract value, we have not been been able to include pricing for some of your services which have very customer specific pricing. The services not included are listed below. - description_html: This will help us place your requirement in the correct sub-lot.
    NB. The value ranges are total contract values for the full term contract for the services you have selected. - heading: Looking at the options below, can you select the correct value range based on your budget, and expected cost of the contract? - help_place_sublot_html: This will help us place your requirement in the correct sub-lot.
    NB. The value ranges are total contract values for the full term of the contract for the services you have selected. - lot_number_1a_description: Total contract value up to £7 million - lot_number_1b_description: Total contract value between £7 million and £50 million - lot_number_1c_description: Total contract value over £50 million - not_able_to_select_range: If you are not able to select a value range or require assistance please contact us. It is important that you have reasoning behind your selection, as this will define which sub-lot you will be placed into. - partialy_estimated_contract_value: partially estimated contract value - service: service - sub_lot_1a_hint: Total contract value up to £7 million - sub_lot_1b_hint: Total contract value between £7 million and £50 million - sub_lot_1c_hint: Total contract value over £50 million - continue_button_footer: - continue_to_results: Continue to results - return_to_dashboard: Return to procurements dashboard contract_details: da_journey: - contract_details: - contract_details_description: Please provide further information that will help us put your contract together. - important_information: - contract_documents: - call_off_schedule_5: - file_name: facilities-management/rm3830/Call-Off Schedule 5 - Call-Off Pricing (DA) v3.0.pdf - title: call-off schedule 5 - call-off pricing. - joint_schedule_3: - file_name: facilities-management/rm3830/Joint Schedule 3 - Insurance Requirements (DA) v3.0.pdf - title: joint schedule 3 - insurance requirements. - service_requirements_and_standards: - file_name: facilities-management/rm3830/RM3830 Service requirements and standards.pdf - title: service requirements and standards - indexation_body_html: Your supplier will have the opportunity to adjust their pricing using the CPI index data on the first anniversary of your contract start date. Further information on this can be found in - indexation_heading: Indexation - insurance_body_html: Fixed levels of insurance will apply and cannot be changed within a direct award. To view the levels and for further information, please see - insurance_heading: Insurance - intro-text: There are some elements of a direct award contract that cannot be amended. Please read the below information to ensure that a direct award is suitable for you. - price_body_html: Your price has been calculated using rates that were submitted by suppliers when they competed to join the framework. There can be no further negotiation on the price within a direct award. - price_heading: Price - services_body_html: The service specifications and service standards cannot be amended within a direct award. Please check within the that %{document_link} you’re happy with the details for the services you are buying. - services_heading: Services - warning_text: If you wish to change any of the above criteria, you will need to consider switching to a further competition. - pricing: - lowest_price_supplier: lowest priced supplier - pricing_description_1: Your requirements have been priced using rates submitted by suppliers when they competed to the join the framework. - pricing_description_2: The contract prices shown include all the elements you have entered including service pricing, any mobilisation and TUPE requirements, and supplier overhead and profit. - pricing_description_3: Prices shown are contract values, excluding VAT, and are based on the contract term and service requirements that you have entered. The price does not include the costs of your optional call-off extension period(s) if you have included any. - pricing_description_4: If there is more than one supplier that can meet your requirements, and the lowest priced supplier declines the opportunity, then the details of the second place supplier will be presented to you, with the option to proceed with them. - pricing_description_5: If you wish to switch to further competition, please click the ‘Return to results' button. - supplier_description_plural: that can offer your services under direct award, their contract prices are shown below in ascending order. - supplier_description_singular: that can offer your services under direct award, their contract price is shown below. - there_are_suppliers_html: There are %{count} %{suppliers} review: - attachment_1: - file_name: facilities-management/rm3830/Attachment 1 - About the Direct Award v3.0.pdf - guidance: This document tells the supplier important information about the contract you have offered. - heading: Attachment 1 - title: About the direct award - attachment_2: - annex_a: - file_name: facilities-management/rm3830/Attachment 2 - Statement of Requirements - Annex A - Standards and Processes (DA) v3.0.pdf - guidance: This document sets out the processes, standards and service delivery response times the suppliers must adhere to in delivery of the services. - title: Annex A - standards & processes - heading: Attachment 2 - statement_of_requirements: - guidance: This document forms the basis of your requirement, and includes your building information, the services you require in each building, and the service specification. - title: Statement of requirements (deliverables matrix) - attachment_3: - heading: Attachment 3 - price_matrix: - guidance: This document contains the details of your contractual pricing, and a breakdown of the component parts. - title: Price matrix - attachment_4: - core_terms: - file_name: facilities-management/rm3830/Core Terms (DA) v3.0.2.pdf - guidance: The Core Terms are based on CCS’s standard commercial terms under The Public Sector Contract. - title: Core terms - heading: Attachment 4 - Contract (Order form and Schedules) - order_form: - guidance: The Order Form is the overarching contract document where key contractual decisions are highlighted, the Core Terms, Joint Schedules and Call-off Schedules are listed and contract signatures from both parties are captured. - title: Order form - change_requirements: - guidance: If you wish to make changes to your requirements, click on the ‘Change requirements’ button below. - title: Change requirements - change_schedule: - guidance: If you wish to make changes to a schedule, you will need to consider switching to a further competition where documents can be amended. Schedules cannot be amended. contract_documents: call_off_schedule_1: file_name: facilities-management/rm3830/Call-Off Schedule 1 Transparency Reports (DA) v3.0.pdf @@ -943,347 +693,6 @@ en: joint_schedule_7: file_name: facilities-management/rm3830/Joint Schedule 7 - Financial Distress (DA) v3.0.pdf title: Joint Schedule 7 - Financial Distress - documents: - heading: 1. Contract documents - text: Please review the contract documents below. These documents will form the contract between the supplier and your organisation. - download_documents: - guidance: If you download documents and amend offline, the changes will not be reflected within the online documents that will be sent to the supplier. - title: Download all contract documents - security_policy: - guidance: The buyer’s security policy document. - heading: Security policy - title: Security policy - sending_contract: - guidance: Following your review of the contract documents in section 1 above, please click on the button below to create a zipped folder of the documents ready to send as an offer to the supplier. - heading: 2. Sending the contract - review_and_generate: - click_generate_documents: Click the 'Generate documents' button below to proceed and create all the documents that will form your direct award call-off contract. - contract_details: 2. Contract details - generate_your_documents: 3. Generate your direct award documents - once_satisfied: Once you are satisfied that all the information is correct please use the generate documents button in section 3 to generate your call off documents. You will then be asked to review the generated contract and associated documents. - please_review: Please review the full details of your requirements below in sections 1 and 2. If you wish to make any amendments, please use the change button relevant to that section. - requirements: 1. Requirements - sending: - click_confirm_and_continue: Click on the 'Confirm and send contract to supplier' button below to send your contract offer to the supplier. - contract_ready_to_send_html: Your contract is now ready to send to %{supplier_name}. - warning_text: The supplier has 2 working days to respond to your offer. - summary_pages: - contract_details_summary: - authorised_representative: Authorised representative details - governing_law: Governing law - invoicing_contact_details: Invoicing contact details - local_government_pension_scheme: Local Government Pension Scheme - notices_contact_details: Notices contact details - payment_method: Payment method - security_policy_document: Security policy - procurement_requirements: - buildings_services: Buildings and services - call_off_extension: Optional call-off extension period %{extension} - contract_name: Contract name - contract_value: Contract value - date_of_first_indexation: Date of first indexation - direct_award: Direct award - framework_sublot_title: Framework, sub-lot - framework_sublot_value: RM3830, sub-lot 1a - initial_call_off_period: Initial call-off period - mobilisation_period: Mobilisation period - route_to_market: Route to market - supplier: Supplier - what_next: - heading: Below outlines the steps you will follow to direct award your contract. - or: or - step_1: - list: - item_1: we will inform you about some key contract information on the next page - item_2: you will be asked a few questions that will help us build your contract - title: Creating your contract - step_2: - list: - item_1: you can review details of your contract before deciding how to proceed - item_2: if you are happy with the content of your contract, you can send your offer to the supplier - item_3_html: the supplier has 2 working days (48 hours) to accept or decline your offer - title: Review contract and send offer - step_3: - list: - item_1: the system will notify you that the offer has been accepted, and take you through the next steps - item_2: the supplier will sign the contract and send it back to you (this step will happen offline, outside of this portal) - item_3: you will then sign the contract and send it back to the supplier (this step will happen offline, outside of this portal) - item_4: you will confirm on this portal that the contract has been signed by both parties - title: When your offer has been accepted - step_4: - content: 'You will be notified if the supplier has declined your contract offer, with the reason why. If the supplier has not responded within 2 working days (48 hours), you will also be notified, as this is deemed to be an automatic decline. You will then have a choice to:' - list: - item_1: offer the contract to the next placed supplier (after reviewing their price) - item_2: switch to a further competition - item_3: change your requirements - item_4: stop the process - title: If your offer was declined - edit_partials: - authorised_representative: - authorised_representative_detail_description: Select an authorised representative - authorised_representative_detail_description_header: The authorised representative is appointed by the buyer, to represent the buyer, within the contract when required. - change: Change - new: Enter a new authorised representative - governing_law: - contract_documents: - call_off_24: - description: This is the Scottish Law optional schedule - file_name: facilities-management/rm3830/Call-Off Schedule 24 (O) - Scottish Law (DA) v3.0.pdf - title: Call-off Schedule 24 - Scottish Law - call_off_25: - description: This is the Northern Ireland Law optional schedule - file_name: facilities-management/rm3830/Call-Off Schedule 25 (O) - Northern Ireland Law (DA) v3.0.pdf - title: Call-off Schedule 25 - Northern Ireland Law - core_terms: - description: Clause 35 within the Core Terms states the position on English Law - file_name: facilities-management/rm3830/Core Terms (DA) v3.0.2.pdf - title: Core Terms - description_html: "

    As a default position this contract and any issues arising out of, or connected to it, are governed by English Law. Alternatively, you may opt to select either Scottish law or Northern Ireland Law to govern your contract. If you do opt to choose either Scottish or Northern Ireland Law, the relevant optional schedule will be included within your contract, and reflected in your order form.

    The optional schedule (Call-off Schedule 24 or 25) will adapt the Core Terms and Schedules so that the Call-off Contract is under either Scottish or Northern Ireland Law.

    For further information, please click on the schedules below:

    \n" - english: English Law - header: Which law would you like to govern your call-off contract? - northern_ireland: Northern Ireland Law - prompt: 'Please indicate below which law is to govern this Call-off Contract:' - scottish: Scottish Law - invoicing_contact_details: - change: Change - invoicing_contact_detail_description: Select an invoicing contact - invoicing_contact_detail_description_header: This is the relevant contact for invoicing. - new: Enter a new invoicing contact - local_government_pension_scheme: - description: Are there any Local Government Pension Scheme (LGPS) eligible employees involved in the delivery of the services being procured? - new_contact_details: - address: Address - cant_find_address: Enter address manually, if you can’t find address - email: Email address - job_title: Job title - name: Name - telephone_number: Telephone number - new_contact_details_address: - building_and_street: Building and street - county: County (optional) - postcode: Postcode - town_or_city: Town or city - notices_contact_details: - change: Change - new: Enter a new contact for notices - notices_contact_detail_description: Select a contact for notices - notices_contact_detail_description_header: The person to whom contract notices should be communicated. - payment_method: - bacs_payment: BACS payment - government_procurement_card: Government procurement card - payment_description: Please select the payment method that will be used - pension_funds: - attachment_2: - file_name: facilities-management/rm3830/Call-Off Schedule 2 - Staff Transfer (DA) v3.0.pdf - name: Call-off Schedule 2 - staff transfer - button_text: Add another pension fund ( remaining) - description: For each pension fund, please enter the name of each fund, and the percentage (%) of pensionable pay for those who are a member of that fund. - form_title: List of pension funds - lead_in: This information will be inserted into a contract schedule 'Call-off Schedule 2 - Staff Transfer'. Please click link below to view the generic version of this schedule now, or alternatively you can review your own version later which will include your inserted pension information. - procurement_pension_fund: - name_text: Pension fund name - percentage_text: Percentage of pensionable pay - security_policy_document: - document: - guidance: Supported file types are DOC, DOCX and PDF. Maximum file size is 10MB. - title: Security policy document - document_date: - label: Please input the date of your security policy document. For example, 31 3 2019 - title: Security policy document date (optional) - document_name: - label: Please input the name of your security policy document - title: Security policy document name - document_version_number: - label: Please input the version number of your security policy document - title: Security policy document version number - guidance: The site monitors file uploads for unusual activity. Security incidents resulting from buyer file uploads may be subject to CCS investigation with the Buyer. - question: Do you have an organisation security policy that you wish to form part of this contract? If yes, can you provide this document? - page_title: - authorised_representative: Authorised representative details - contract_details: Contract details - governing_law: Governing law - important_information: Important information - invoicing_contact_details: Invoicing contact details - local_government_pension_scheme: Local Government Pension Scheme - new_authorised_representative: New authorised representative details - new_authorised_representative_address: Add address - new_invoicing_contact_details: New invoicing contact details - new_invoicing_contact_details_address: Add address - new_notices_contact_details: New notices contact details - new_notices_contact_details_address: Add address - notices_contact_details: Notices contact details - payment_method: Payment method - pension_funds: Pension funds - pricing: Direct award pricing - review: Review your contract - review_and_generate: Review and generate documents - security_policy_document: Security policy document - sending: Sending the contract - what_next: What happens next - contract_name: - contract_name_info: This will help you to refer to your contracts when talking to suppliers. - contract_name_question: What do you want to call your contract? - heading: Contract name - return_to_what_happens_next: Return to what happens next - return_to_your_account: Return to your account - save_and_continue: Save and continue - contracts: - awaiting_response: - else_declined: If the supplier doesn’t respond within 2 working days (48 hours), they are deemed to have declined the offer. - if_accepted_header: If the supplier accepts the offer - if_accepted_list_1: the system will notify you that they have accepted your offer, and give you the suppliers contact details - if_accepted_list_2: the supplier will sign the contract and send it back to you (offline) - if_accepted_list_3: you will then sign the contract and send it back to the supplier (offline) - if_accepted_list_4: you will confirm on this portal that the contract has been signed by both parties - if_declined_header: If the supplier declines the offer - if_declined_list_1: "- offer the contract to the next placed supplier (after reviewing their price)" - if_declined_list_2: "- switch to a further competition" - if_declined_list_3: "- change your requirements" - if_declined_list_4: "- stop the process" - if_declined_list_header_1: you will be notified that they have declined your offer, and be provided with a reason why - if_declined_list_header_2: 'you have the choice to:' - title: What happens next - two_working_days: The supplier has 2 working days (48 hours) to accept or decline your offer. - awaiting_signature: - confirmation_1: once the contract has been signed by both parties, the contract is said to have been executed and is a live contract. The day the final signature took place is called the ‘effective date’ , and the term of the contract is calculated forwards from this date - confirmation_2: you can then click on the link below to confirm that the contract is now signed, and on which date. The procurement dashboard will detail your live contracts, which is useful when it comes to contract management and renewal - supplier_signs_1: the supplier will sign the contract and send it back to you - supplier_signs_2: this will happen offline (outside this portal) - supplier_signs_3: usually within 5 working days - title: What happens next - you_sign_1: you can then complete the ‘effective date’ on page 4 of the order form (this is the date the contract is fully signed), sign the contract, and share with the supplier - you_sign_2: this will happen offline (outside this portal) - you_sign_3: usually within 2 working days - call_off_contract_documents: - call_off_contract_documents: Call-off contract documents - call_out_leading: Download Call-off contract - colating: COLLATING DOCUMENTS - colating_message: Call-off contract will be available for download shortly - closed: - contract_closed: - info: Closed procurements can be viewed in the closed section of your procurements dashboard, where you have the option to create a copy of the requirements for use in a new/similar procurement, or further competition. - title: Your procurement has been closed - contract_signed: - contract_award_notification_form: Contract award notification form - contract_period: 'Your live contract period is between:' - email_address: 'email address: ' - email_html: info@crowncommercial.gov.uk - email_subject: 'email subject: RM3830 contract award notification.' - info_1: You have confirmed that both parties have signed. - info_2: What to do next - next: Send your completed contract award notification form to Crown Commercial Service - number: Your live contract reference number - title: Contract signed - index: - return_text: Return to procurements dashboard - closing_direct_award_offer: - are_you_sure_1: Are you sure you wish to close the - are_you_sure_2: procurement? - closed_message: Closed procurements can be viewed in the closed section of your procurements dashboard, where you have the option to create a copy of the requirements for use in a new/similar procurement, or further competition. - once_closed: Once closed, you will not be able to reopen this procurement to progress it. If this procurement has been offered to a supplier, the supplier will be immediately notified that you are closing this procurement, and your offer is now withdrawn. - reason: Please provide a reason for closing this procurement - confirmation_of_signed_contract: - contract_end_date: Enter contract end date - contract_end_date_caption: The contract end date should be the same as the end of your initial call-off period. For example, 01 11 2030. - contract_start_date: Enter contract start date - contract_start_date_caption: The contract start date is the ‘effective date’ - this is the date the final party signed the contract. For example, 01 11 2030. - contract_will_not_be_signed_reason: Enter your reason why this contract will not be signed in the text box below. Once you have saved and continued, you will be presented with your options on how to proceed further. - description: Do you confirm that both parties have signed and exchanged the contract? - no_caption: If you select 'No', you are confirming that this contract will never be signed, the offer will be withdrawn and the system will proceed to the next steps. - yes_caption: If you select 'Yes', you must enter the confirmed contract start date and the contract end date. - contract_offer_details: - closed_reason: Your reason for closing this contract offer was - declined: The supplier declined this contract offer on - expired: The supplier did not respond to this offer and it expired on - not_signed_1: You confirmed on - not_signed_2: that the contract has not been signed. - reason_for_not_signed: Your reason for not signing this contract offer was - sent: You sent this contract offer to the supplier on - sent_accepted: The supplier accepted the contract offer on - signed_confirmed_1: You confirmed on the - signed_confirmed_2: that the contract has been signed by both parties. - supplier_declined_reason: The supplier’s reason for declining was - contract_summary_foot: - close: You can close this procurement by clicking on the ‘Close this procurement’ button below, it will then be viewable in the closed section of your procurements dashboard. If you click on the procurement in the dashboard you will have the option to create a copy of the requirements for use in a new/similar procurement, or further competition. This is a quick way to amend some of your requirements and re-run the results. - confirm: Use the ‘confirm if contract signed or not’ button below to confirm whether or not the contract was signed. - confirm_and_close: You can still withdraw this contract offer; if you need to, use the ‘Close this procurement’ button below, which will withdraw the offer from the supplier, and close the procurement. - expired: The supplier did not respond within the required timescale, so this has been automatically recorded as declined with ‘no response’ as the reason. - next_steps: Available next steps - next_supplier: You can look at the next lowest priced supplier and the option of offering them your contract. Click on the ‘View next supplier’s price’ button below. - or: or - reuse: If you wish to reuse this procurement’s requirements in a new/similar procurement, or further competition, please click on the button below to create a copy and save under a new contract name. - withdraw: You can withdraw this contract offer if you need to. Use the button below which will withdraw the offer made to the supplier and close the procurement. - edit: - close_this_procurement: Close this procurement - confirm_and_send: Confirm and send offer to supplier - page_title: Close this procurement - save_and_continue: Save and continue - next_supplier: - about_the_price: About the price - about_the_price_description: The price shown is the contract value, excluding VAT, based on the contract terms and service requirements you have entered. - close: You can close this procurement - close_point_1: by clicking on the button below, it will then be viewable in the closed section of your procurements dashboard. - close_point_2: You will then have the option to create a copy of the requirements for use in a new/similar procurement, or further competition - download_docs_description: If you download documents and amend offline, the changes will not be reflected within the online documents that will be sent to a supplier. - download_documents: Download all contract documents - next_lowest: The next lowest supplier who can deliver the services to your buildings is - next_steps: Available next steps - offer: You can offer your contract to this supplier - offer_list_1: we have generated your contract documents using this supplier’s details and pricing - offer_list_2: the supplier will have 2 working days to respond to your offer - price: The contract price with this supplier is - return_to_dashboard: You can return to your procurements dashboard - return_to_dashboard_description: you can simply return to your procurements dashboard in which you will find a saved copy of this contract for when you are ready - procurement_closed: - closed_1: The - closed_2: procurement has been closed. - description: Closed procurements can be viewed in the closed section of your procurements dashboard, where you have the option to create a copy of the requirements for use in a new/similar procurement, or further competition. - title: Your procurement has been closed - procurement_requirements: - buildings_services: Buildings and services - call_off_extension: Optional call-off extension period %{extension} - contract_name: Contract name - contract_number: Contract number - contract_value: Contract value - date_of_first_indexation: Date of first indexation - direct_award: Direct award - framework: Framework, sub-lot - framework_details: RM3830, sub-lot 1a - initial_call_off_period: Initial call-off period - mobilisation_period: Mobilisation period - requirements: Requirements - route_to_market: Route to market - sent: - no_suppliers: - description: Unfortunately, there are no further suppliers available who can meet your requirements. - footer_description_1: This procurement will automatically be closed, and can be viewed in the closed section of your procurements dashboard. - footer_description_2: If you click on the procurement in the dashboard you will have the option to create a copy of the requirements for use in a new/similar procurement, or further competition. - next_steps: 'Depending on the reasons given for the suppliers declining your contract offer, your next steps could be:' - next_steps_list_1: to amend your requirements - next_steps_list_2: to run a further competition to allow suppliers more flexibility in their solution - title: Supplier shortlist - sent: - accepts_header: 1. If the supplier accepts the offer - accepts_list_1: the system will notify you that they have accepted your offer, and give you the suppliers contact details - accepts_list_2: the supplier will sign the contract and send it back to you (offline) - accepts_list_3: you will then sign the contract and send it back to the supplier (offline) - accepts_list_4: you will confirm on this portal that the contract has been signed by both parties - declines_header: 2. If the supplier declines the offer - declines_list_1: you will be notified that they have declined your offer, and provided a reason why - declines_list_2: 'you have the choice to:' - declines_list_2_sub_1: "- offer the contract to the next placed supplier (after reviewing their price)" - declines_list_2_sub_2: "- switch to a further competition" - declines_list_2_sub_3: "- change your requirements" - declines_list_2_sub_4: "- stop the process" - further_information: If the supplier doesn’t respond within 2 working days (48 hours), they are deemed to have declined the offer. - header: Your contract was sent - procurement_sent_to: The ‘%{contract_name}’ (%{contract_number}) contract was sent to %{supplier_name}. - what_happens_next: What happens next - what_happens_next_sub: The supplier has 2 working days (48 hours) to accept or decline your offer. - show: - supplier: Supplier - supplier_contact_details: - supplier_contact_details: Supplier contact details contracts_helper: warning_message: accepted: Awaiting your confirmation of signed contract. @@ -1303,518 +712,14 @@ en: not_signed: Accepted, not signed sent: Sent signed: Accepted and signed - copy_procurement: - new: - heading: Create a new procurement using the service requirements and buildings you have previously entered. - label: What do you want to call your contract? - once_saved: 'Once saved under a new contract name:' - you_will_be_able: you will be able to choose from the contract options of direct award (if eligible) or further competition - you_will_have_option: you will have the option to amend your requirements (if needed), and re-run your results - dashboard_tables: - closed: - contract_name: Contract name - date_closed: Date closed - no_closed: You do not have any closed contracts - supplier: Supplier - contracts: - contract_name: Contract name - end_date: End date - no_live: You do not have any live contracts - start_date: Start date - supplier: Supplier - further_competition: - date_saved: Date saved - name: Name - no_fc: You do not have any further competition contracts - in_draft: - contract_name: Contract name - delete: Delete - no_drafts: You do not have any offers in the draft - saved: Saved - supplier: Supplier - searches: - delete: Delete - name: Name - no_searches: You do not have any searches - saved: Saved - stage: Stage - sent_offers: - action_required: ACTION REQUIRED - contract_name: Contract name - no_sent: You do not have any sent offers - sent: Sent - stage: Stage - supplier: Supplier - delete: - are_you_sure: Are you sure you want to delete '%{contract_name}'? - cancel: Cancel - cancel_delete: Cancel delete - cannot_be_un_done: This action cannot be un-done. - confirm_delete: Confirm delete - page_title: Delete procurement - edit: - cancel_and_return: Return to your account - detailed_search: Detailed search - heading: Results - quick_search: Quick search - regions: - question: Where are your buildings located? - subtitle: Choose one or more regions, based on building’s location where you require facilities management services. - return_to_requirements: Return to requirements - save_and_continue: Save and continue - save_and_return: Save and return - save_and_return_to_detailed_summary: Save and return to detailed search summary - save_for_later: Save for later - search_result_body_html: Here are the suppliers that can provide your services to your buildings. We are showing you potential suppliers from all three sub-lots, however, your procurement will fall into only one sub-lot dependent on your potential total contract value (which excludes billable works, optional extension periods and VAT). - services: - question: Select the facilities management services you need - service_specification_doc: Read the service specification document - subtitle_html: Choose all facilities management services required within your estate, even if you want services in just one building. To see further information about services click on the 'Further details' link under each service. Alternatively, open the service specification document below and go to the relevant section. - subtitle_quick_search: Choose all facilities management services required within your estate, even if you want services in just one building. - title: Services - filter_details: - change_add_region: Change - change_add_service: Change - hide_requirements: Hide requirements - lot_1a: Sub-lot 1a - lot_1b: Sub-lot 1b - lot_1c: Sub-lot 1c - lot_title_1a_html: up to
    £7m - lot_title_1b_html: between
    £7m-50m - lot_title_1c_html: over
    £50m - regions: Regions - requirements: Requirements - services: Services - show_requirements: Show requirements - total_contract_value: Total contract value - further_competition: - further_competition_partial: - description_header: What will the summary contain? - description_list_1: building information - description_list_2: services required, and volume details - description_list_3: recommended sub-lot - description_list_4: supplier shortlist - description_list_5: contract requirements and key dates - description_text: 'The summary contains all the information that you have entered into this portal, all of which you can transfer into the relevant documents when running your further competition, including:' - download_file_in_format: Download the procurement summary in XLSX format. - esourcing: eSourcing tool - esourcing_description_html: Crown Commercial Service offer a free eSourcing tool, to help you run your further competition online, or you can use your own organisation’s sourcing tool if you have one. %{link} for further information. - esourcing_description_link_text: Click here - esourcing_description_link_url: https://www.gov.uk/government/publications/esourcing-suite-guidance-for-customers - facilities_management_framework_html: 'On %{link} you can view information including:' - facilities_management_framework_link_text: facilities management framework page, - facilities_management_framework_link_url: https://www.crowncommercial.gov.uk/agreements/rm3830 - file_download: File download - file_name: "%{procurement_name} procurement summary" - help: Need help? - help_description: Please find our contact details below. - help_description_1: When speaking to us please reference your procurement summary reference number. - make_a_copy: If you wish to make a copy of your requirements and re-run your results, click on the ‘Make a copy of your requirements’ button below. - more_information: Where to find more information - more_information_1: buyer guides - more_information_2: supplier brief template - more_information_3: call-off schedules and core terms - more_information_4: service specifications - more_information_5: bid pack guidance documents - save_as_fc_instructions: Click the 'Save as further competition' button below to save your results and access your procurement summary, which details your buildings and service requirements, ready for your tender pack. - step_1: - list: - item_1: used to communicate to the supplier’s high level details of your requirements, timescales etc, and receive feedback - item_2: allows creation of further shortlisted suppliers (based on suppliers interest), who wish to progress to the next stage. - item_3: dependent on the level of interest, also allows you to make an initial decision on whether to proceed to the next stage, or alter your requirements - title: Supplier brief - step_2: - list: - item_1: defining your specific requirements - item_2: setting your evaluation criteria – price and quality - item_3: creating your Terms and Conditions, and order form - item_4: detailing your pricing model, key performance indicators, and other contract tools - title: Creating your invitation to tender (ITT) - step_3: - list: - item_1: inviting your shortlisted suppliers to bid by issuing the ITT, requirements document and draft contract - title: Publishing your ITT - step_4: - list: - item_1: answer clarification questions - item_2: receiving suppliers tenders (bids) - item_3: evaluate suppliers’ responses - title: Tender period - step_5: - list: - item_1: awarding the contract to the successful supplier, and notifying unsuccessful suppliers - title: Awarding the contract - summary_header: Download your procurement summary - what_happens_next_description: 'Running a further competition allows you to ask your shortlisted framework suppliers to bid for your business, based on your particular requirements. This allows you to get a competitive price for a solution that meets your specific needs. The key stages of the process are:' - what_happens_next_title: What happens next - return_to_dashboard: Return to procurements dashboard - index: - back: Return to your account - closed_title: Closed - contracts_title: Contracts - deleted: Your item was deleted - direct_award_title: Direct award - further_competition: Further competition - help_text: Your saved searches and procurements are shown below. Click on the search/contract name to view the details or progress further. - in-draft-title: In draft - manage_procurements: Procurements dashboard - searches_title: Searches - sent_offers: Sent offers - was_deleted: "'%{contract_name}' was deleted." - new: - cancel_text: Return to your account - no_suppliers: Unfortunately, there are no suppliers available who can meet your requirements. - quick_view_results: Quick view results - save_and_continue: Save and continue to procurement - save_for_later: Save and return to procurements dashboard - search_result_body_html: Here are the suppliers that can provide your services to your building(s). We are showing you potential suppliers from all three sub-lots, however, your procurement will fall into only one sub-lot dependent on your potential total contract value (which excludes billable works, optional extension periods and VAT). - quick_search: - cancel_text: Return to your account - download_results: Download quick view results - no_suppliers: Unfortunately, there are no suppliers available who can meet your requirements. - quick_view_results: Quick view results - save_and_continue: Continue to procurement - save_for_later: Return to procurements dashboard - save_text: To be placed compliantly into a sub-lot, and receive your own supplier shortlist, an estimated contract cost and your procurement options, please continue to a procurement below. - search_result_body_html: Here are the suppliers that can provide your services to your building(s). We are showing you potential suppliers from all three sub-lots, however, your procurement will fall into only one sub-lot dependent on your potential total contract value (which excludes billable works, optional extension periods and VAT). - quick_search_form: - new_name_label: Enter a name or reference to save this search. - save_headline: Save your search - save_text: To be placed compliantly into a sub-lot, and receive your own supplier shortlist, an estimated contract cost and your procurement options, please continue to a procurement below. - requirements: - contract_details: - contract_details: 1. Contract details - description: Please complete each section below by clicking on each link and answering the questions. Once all sections are complete, click on the 'continue to results' button to see your estimated contract cost, supplier shortlist and procurement options. - services_and_buildings: - excel: Click here to download an Excel template - services_and_buildings: 2. Services and buildings - which_you_can_upload: which you can complete and then upload, or click on the links below to complete your information. - title: Requirements results: - any_changes: If you wish to change your requirements, click the 'Change requirements’ button below. Any changes may result in a different outcome. - any_changes_chosen: If you wish to change the contract value that you selected or your requirements, click the 'Return to estimated contract cost’ button below. Any changes may result in a different outcome. - available_routes_to_market: Available route to market - building_services_summary: Buildings and services summary - da_list_html: "
  • the award of a contract directly to the supplier with the lowest price for your requirements, without the need for a further competition
  • the contract is awarded based on price only (using rates submitted by suppliers when they competed to join the framework)
  • standard call-off terms and conditions
  • a quick way of identifying a suitable supplier and awarding a contract
  • \n" - direct_award_label_html: "Direct award" - estimated_cost: Estimated cost - estimated_cost_calc_html: Your estimated cost has been calculated using a combination of framework and benchmark pricing, and your current cost.
    This cost has been used to place you in the correct sub-lot. - estimated_cost_calc_logic_4_html: Your estimated cost has been calculated using a combination of available framework and benchmark pricing.
    This cost has been used to place you in the correct sub-lot. - estimated_cost_how: How your estimated cost was calculated? - fc_list_html: "
  • shortlisted suppliers are invited to compete against each other to give you the best outcome
  • both price and quality are tested in a further competition
  • you can tailor service requirements and terms and conditions to suit your needs
  • a tender period is involved in a further competition, so timescales are longer than a direct award
  • \n" - further_competition_html: "Further competition" hint-text-unpriced-sub-lot-1a: Suitable for contract value up to £7million hint-text-unpriced-sub-lot-1b: Suitable for contract value between £7 million and £50 million hint-text-unpriced-sub-lot-1c: Suitable for contract value over £50m - no_suitable_suppliers: Unfortunately, there are no suppliers available who can meet your requirements. - print_page: Print this page sub-lot-1a: Sub-lot 1a sub-lot-1b: Sub-lot 1b sub-lot-1c: Sub-lot 1c - sub-text: 'Based on information provided, this procurement is eligible for the following sub-lot:' - sub-text-FC-unpriced: 'Based on the information you have provided, and your selection of the correct value range, your procurement is eligible for the following sub-lot:' - suppliers_shortlisted_html: %{count} supplier(s) shortlisted - what_is_da: What is a direct award? - what_is_fc: What is further competition? - who_are: who can provide the services you require in your location(s) - service_codes_checkboxes: - caption2: Look for the 'DIRECT AWARD ELIGIBLE' label that indicates if a service can be direct awarded. - learn_more: Further details (opens in a new tab) - spreadsheet: - cancel_and_return_link: Cancel and return to requirements - continue_link: Continue to upload your file - download_the_template: 1. Download the template - footer_information: Note - if you would prefer to go back and input your requirements via the guided questions online, please click on the 'Cancel and return to requirements' link. - heading: Services and buildings - spreadsheet - instructions: Instructions - link: Click on the link to download the blank template ready for you to complete. The spreadsheet contains full instructions to help you input your building information and service requirements. - list_2_description_1: The spreadsheet has a status indicator which will help you check its ready for uploading. - list_2_description_2: Once you are ready, you can click on the 'continue and upload file' button below, or alternatively you can upload your spreadsheet at a later date - just click the 'save and return to procurements dashboard' button below. When ready, come back to this portal, log in and click on 'continue a procurement' on your 'my account' page. This will open your procurement dashboard in which you can select this procurement again and you will be presented with a spreadsheet upload page. You can then select the correct excel file from your computer and proceed to upload. - list_3_description: Once you have uploaded your spreadsheet successfully, you will then be able to continue to see your results - list_description: Take your time completing the spreadsheet - there is no system deadline. You will need the following types of information to complete the spreadsheet. - list_information_1: building details - address, size, what its used for, security access requirements - list_information_2: services - which services you wish to buy in each building - list_information_3: service requirements - for example, what standard of service, which hours of the day, or how many lifts are in the building - results: 3. Results - save_and_return_link: Save and return to procurements dashboard - services_and_buildings_template: Services and buildings template - uploading: 2. Uploading your spreadsheet - spreadsheet_imports: - error_partials: - other_errors: - other_description: Your spreadsheet is incomplete and not ready for upload. Please refer to the instructions tab within your services and buildings template for further assistance. - errors: - building_errors: - address_line_1: - blank: The building address line 1 cannot be blank - too_long: The building address line 1 cannot be more than 100 characters - address_line_2: - too_long: The building address line 2 cannot be more than 100 characters - address_postcode: - blank: The building postcode is not valid. Enter a valid postcode, like AA1 1AA - invalid: The building postcode is not valid. Enter a valid postcode, like AA1 1AA - too_short: The building postcode is not valid. Enter a valid postcode, like AA1 1AA - address_town: - blank: The building town/city cannot be blank - too_long: The building town/city cannot be more than 30 characters - building_name: - taken: The building name cannot be duplicated - too_long: The building name cannot be more than 50 characters - building_type: - blank: The building type must be from the selection - inclusion: The building type must be from the selection - description: - too_long: The building description cannot be more than 50 characters - external_area: - blank: The building external area must be a number between 1 and 999,999,999 - combined_area: The building external area must be greater than 0, if the gross internal area is 0 - less_than_or_equal_to: The building external area must be a number between 1 and 999,999,999 - not_a_number: The building external area must be a number between 1 and 999,999,999 - not_an_integer: The building external area must be a number between 1 and 999,999,999 - required: The building external area must be a number between 1 and 999,999,999 - too_long: The building external area must be a number between 1 and 999,999,999 - gia: - blank: The building gross internal area must be a number between 1 and 999,999,999 - combined_area: The building gross internal area must be greater than 0, if the external area is 0 - less_than_or_equal_to: The building gross internal area must be a number between 1 and 999,999,999 - not_a_number: The building gross internal area must be a number between 1 and 999,999,999 - not_an_integer: The building gross internal area must be a number between 1 and 999,999,999 - required: The building gross internal area must be a number between 1 and 999,999,999 - too_long: The building gross internal area must be a number between 1 and 999,999,999 - other_building_type: - blank: The building type-other cannot be blank - too_long: The building type-other cannot be more than 150 characters - other_security_type: - blank: The building security clearance-other cannot be blank - too_long: The building security clearance-other cannot be more than 150 characters - security_type: - blank: The building security clearance must be from the selection - inclusion: The building security clearance must be from the selection - lift_errors: - lifts: - invalid: There is a problem with your number of lifts or floors - number_of_floors: - invalid: The number of floors must be a number between 1 and 999 - service_hour_errors: - detail_of_requirement: - blank: The detail of requirement cannot be blank - too_long: The detail of requirement cannot be more than 500 characters - service_hours: - greater_than_or_equal_to: The number of hours required must be a number between 1 and 999,999,999 - less_than_or_equal_to: The number of hours required must be a number between 1 and 999,999,999 - not_a_number: The number of hours required must be a number between 1 and 999,999,999 - not_an_integer: The number of hours required must be a number between 1 and 999,999,999 - service_matrix_errors: - building: - external_area_too_small: The building has service(s) that require an external area greater than 0 sqm - gia_too_small: The building has service(s) that require a gross internal area greater than 0 sqm - service_codes: - invalid: The building does not have any services selected - invalid_billable: CAFM system, Helpdesk and/or Management of billable works cannot be the only selected services within a building - invalid_cafm: CAFM system, Helpdesk and/or Management of billable works cannot be the only selected services within a building - invalid_cafm_billable: CAFM system, Helpdesk and/or Management of billable works cannot be the only selected services within a building - invalid_cafm_helpdesk: CAFM system, Helpdesk and/or Management of billable works cannot be the only selected services within a building - invalid_cafm_helpdesk_billable: CAFM system, Helpdesk and/or Management of billable works cannot be the only selected services within a building - invalid_cleaning: "'Mobile cleaning’ and ‘Routine cleaning’ are the same, but differ by delivery method. Please choose one of these services only" - invalid_helpdesk: CAFM system, Helpdesk and/or Management of billable works cannot be the only selected services within a building - invalid_helpdesk_billable: CAFM system, Helpdesk and/or Management of billable works cannot be the only selected services within a building - multiple_standards_for_one_service: The building has multiple service standards selected. Please choose one of these service standards only - service_volume_errors: - no_of_appliances_for_testing: - blank: The building has service(s) that requires the input of the number of appliances for testing - invalid: The volume must be a number between 1 and 999,999,999 - no_of_building_occupants: - blank: The building has service(s) that requires the input of the number of building occupants - invalid: The volume must be a number between 1 and 999,999,999 - no_of_consoles_to_be_serviced: - blank: The building has service(s) that requires the input of the number of consoles to be serviced - invalid: The volume must be a number between 1 and 999,999,999 - no_of_units_to_be_serviced: - blank: The building has service(s) that requires the input of the number of units to be serviced - invalid: The volume must be a number between 1 and 999,999,999 - tones_to_be_collected_and_removed: - blank: The building has service(s) that requires the input of the number of tonnes to be collected and removed - invalid: The volume must be a number between 1 and 999,999,999 - failed: - building_name: Building name - building_number: Building number - error_description: Error description - return_to_procurement_dashboard: Return to procurements dashboard - service_name: Service name - start_again: Start your upload again - failed_generic: - description: Your service and building information failed to upload. - generic_message: This is due to issues with your spreadsheet. - what_next: Return to upload your spreadsheet and ensure that you are using the provided spreadsheet template. - failed_non_generic: - description: Your service and building information failed to upload and we have provided a list of issues to help you to fix these. - here_are_steps: Here are the steps you need to take next. - hint_text: The information below is sorted in order of the ‘Services and buildings template’ tabs. If one of the tabs is missing, it means that there are no issues on that tab. - list_of_issues: List of issues - step_1: Review all issues listed below - step_2: Fix and edit your services and buildings template - step_3: Re-upload your file, by clicking on the ‘Start your upload again’ button at the bottom of this page - title: - building_errors: Building information - lift_errors: Service volumes 2 - other_errors: Other - service_hour_errors: Service volumes 3 - service_matrix_errors: Service matrix - service_volume_errors: Service volumes 1 - what_next: What to do next - failed_template: - description: Your service and building information failed to upload. - fail_reason: - not_ready: The file could not be processed. Cell B10 must be 'Ready' on the Instructions tab of your template - not_started: The file is using the 'Services and buildings template', but is empty - template_invalid: The file must use the 'Services and buildings template' - what_next: - not_ready: Return to upload your spreadsheet and ensure that you have completed the provided spreadsheet template. - not_started: Return to upload your spreadsheet and ensure that you have completed the provided spreadsheet template. - template_invalid: Return to upload your spreadsheet and ensure that you are using the provided spreadsheet template. - importing: - checking_files: Checking file - complete: Complete - dashboard_link: Return to procurements dashboard - file_uploaded: File uploaded - processing_file: Processing file - review: After a successful upload, you can continue to review your procurement. - saving_data: Saving the data - upload_progress: Upload progress - warning_text: If it has been more than 30 minutes, and the upload status has not changed, click on the 'Return to upload your spreadsheet' link above, to go back to retry the upload. If you close this page during the upload, you can access this procurement by clicking on ‘Continue a procurement’ in your account. - new: - cancel_and_return: Cancel and return to services and buildings template - check: How to check your spreadsheet is ready - check_details: Please check cell B10 on the Instructions tab in your spreadsheet indicates 'Ready to upload' - description: When you are ready to upload your completed services and building spreadsheet, please select the correct file from your computer using the file selector. - heading: Upload your spreadsheet - once_selected: Once you have selected your file below, please click on the 'upload my services and buildings' button. - upload: Upload your file - upload_and_continue: Upload my services and buildings - upload_size: Supported format is .xlsx and maximum file is 10mb - warning: Any requirements that you have already entered or uploaded for this procurement will be overwritten when you upload your file. - show: - heading: File upload status - return_to_upload: Return to upload your spreadsheet - succeeded: - about: About the procurement summary - buildings: buildings - completed: 'Within your procurement summary you will notice that the following items within section 2 Services and buildings are now shown as ''completed'':' - continue_to_procurement: Continue to procurement - return_to_dashboard: Return to procurements dashboard - review: If you click into each section you can review your information, and make any amends if required. - service_requirements: service requirements - services: services - services_to_buildings: assigning services to buildings - successful: Your service and building information have been successfully uploaded and the details placed into the relevant sections within your procurement. - upload: - procurement_link: Go to procurement - summary: - heading: - buildings: Buildings summary - buildings_and_services: Assigning services to buildings summary - contract_period: Contract period summary - service_requirements: Service requirements summary - services: Services summary - return_to_requirements: Return to requirements - what_happens_next: - cancel: Cancel and return to procurements dashboard - continue: Continue - heading: What happens next - return: Return to your account - what_happens_next_body: - step_1: - content: We recommend that the first option is more suited to simpler procurements with a fewer number of buildings and services needed, and the spreadsheet option is more suited to more complex procurements with a larger number of buildings and services, however it is also down to your own preferred way of working. - information: - content: 'We will first ask you for some information including basic contract information such as:' - part_1: - list: - item_1: your current annual cost (if known) - item_2: any TUPE involvement - item_3: your required contract length, start date, optional extension periods - part_2: - content: 'and your buildings and service requirements:' - list: - item_1: where your buildings are located, their size and what they're used for - item_2: which services you want to have provided, and in which of your buildings - requirements: - content: 'You will be given the option of completing your building and service requirements either:' - list: - item_1: within this portal with us guiding you through the questions - item_2: or - item_3: using a spreadsheet template, which you can download, fill out the information, then upload back into this portal. - title: Your requirements - step_2: - content: 'You will be shown:' - list: - item_1: your estimated contract cost - item_2: a compliant sub-lot, and a shortlist of potential suppliers - item_3: the options available for your next steps if you want to proceed into a procurement - this may include a direct award or further competition - title: Results - step_3: - content: - part_1: 'If direct award is an option you select, you will then be guided through further steps online, including:' - part_2: 'If further competition is selected, you will be presented with:' - list_1: - item_1: reviewing direct award pricing - item_2: building a contract online - item_3: sending a contract offer to the supplier - list_2: - item_1: guidance on what to do next - item_2: a download of your procurement requirements - title: Routes to market - steps: The steps shown below outline the process that you'll follow within this portal. - service_specification: - show: - service_specification: Service specification supplier: - contracts: - accepted_contract_offer: - list01_1: The signing of the contract is a process that is undertaken outside of the portal and will require the buyer and supplier to communicate using details provided to make the necessary arrangements. - list01_2: Typically you will sign the contract in the order form and share with the buyer within 5 working days. The buyer will then complete the effective date, sign and share back with you (within 2 working days). - list01_title: 1. Contract signatures - list02_1: The buyer, in this online portal, will then confirm that both parties have signed the contract, which moves the offer into the contracts section on your dashboard, showing the start date and the end date. - list02_title: 2. Signature confirmation - list03_1: The contract number which can be found in the requirements section is a unique reference number that has been created for this contract and must be used when reporting Management Information. - list03_title: 3. Within the contract - list04_1: Until the contract is fully signed, the buyer will have the option to withdraw this offer if circumstances require this action, however you will be immediately informed. - list04_2: If you have a change of circumstance and need to decline this contract offer after accepting it, please contact the buyer to discuss. They can then close down this contract offer to you, and will then have the option to move onto another supplier. - list04_title: 4. Withdraw before signing - what_happens_next: What happens next - buyer_contact_details: - buyer_contact_details: Buyer contact details - contract_offer_details: - accepted_contract_offer: You accepted this contract offer on - contract_closed_on: This contract offer was closed on - contract_received_on: This contract offer was received on - reason_for_declining: Your reason for declining was - reason_for_not_signing: The buyer’s reason for not signing this contract was - reason_for_withdrawing: The buyer’s reason for withdrawing this contract offer was - contract_summary_foot: - respond_to_offer: Please click on the button below to either accept or decline. If you accept, you will be given guidance about how to sign the contract. If you wish to decline you will also be asked to input a reason. - edit: - contract_name: 'Contract name:' - contract_number: 'Contract number:' - form_title: Do you accept the contract offer from - 'no': 'No' - reason_for_declining: When you decline a contract offer you need to give a reason. Please input your answer into the box below. The reason given will be shared with the buyer and CCS. - 'yes': 'Yes' - received_contract_offer: - list01_1: You should review the offer to see if you wish to accept the contract or decline the offer. An overview of the contract is shown, and you should download the zip file containing the contract documents for review. - list01_2: The buyer contact details are also shown, which will allow you to contact the buyer to clarify any uncertainty before responding to the offer. Please note however this is not an opportunity to engage in negotiation with a buyer. - list01_3: NB. the deadline for a response is 2 working days (48 hours) as displayed at the top of this page. - list01_title: 1. Review the offer - list02_1: Once you have accepted an offer you will now find the procurement in your ‘accepted offers’ section of your dashboard. - list02_2: It is important to understand, whilst acceptance of the offer is carried out in the digital portal, the signing of the Contract is a process that is undertaken outside of the portal and will require the buyer and supplier to communicate using details provided to make the necessary arrangements. - list02_title: 2. Accepting an offer - list03_1: When you decline an offer you will be asked to give a reason for decline in line with the requirements of Framework Schedule 7. Once you have declined an offer you will now find the procurement in the ‘closed’ section of your dashboard. - list03_2: Please note once you have declined an opportunity the buyer will be alerted and the process will continue, you will not be allowed to change your mind and decide to accept at a later date. - list03_title: 3. Declining an offer - list04_1: Suppliers have 2 working days (48 hours) to respond to a Direct Award offer, after which the opportunity will be automatically declined and the reason will state ‘not responded’. - list04_title: 4. Not responding in time - what_happens_next: What happens next - show: - buyer: Buyer contracts_helper: warning_message: accepted: Awaiting buyer confirmation of signed contract. @@ -1832,44 +737,3 @@ en: sent: Received contract offer signed: Accepted and signed withdrawn: Withdrawn - dashboard: - accepted_offers: - accepted: Accepted - accepted_offers: Accepted offers - buyer: Buyer - contract_name: Contract name - no_accepted_offers: You do not have any accepted offers - closed_contracts: - buyer: Buyer - closed_contracts: Closed - contract_name: Contract name - date: Date - no_closed_contracts: You do not have any items in this section - status: Status - live_contracts: - buyer: Buyer - contract_name: Contract name - end_date: End date - live_contracts: Contracts - no_live_contracts: You do not have any live contracts - start_date: Start date - received_offers: - action_required: ACTION REQUIRED - buyer: Buyer - contract_name: Contract name - date_offer_expires: Date offer expires - no_received_offers: You do not have any received offers - received_offers: Received offers - sent: - accepted_offer: - contract_name: 'Contract name: %{contract_name}' - contract_number: 'Contract number: %{contract_number}' - title: You have accepted this contract offer - what_happens_next: What happens next - declined_offer: - contract_name: 'Contract name:' - contract_number: 'Contract number:' - description: For reference, this contract offer will be be viewable only in the closed section of your dashboard. - title: You have declined this contract offer - index: - link_text: Return to dashboard diff --git a/config/locales/views/facilities_management.rm6232.en.yml b/config/locales/views/facilities_management.rm6232.en.yml index 1fff7ee330..7337c7b04c 100644 --- a/config/locales/views/facilities_management.rm6232.en.yml +++ b/config/locales/views/facilities_management.rm6232.en.yml @@ -521,56 +521,6 @@ en: item_2: your eligible Lot item_3: your unique reference number, time & date stamped your_unique_reference_number: Your unique reference number - show_partials: - entering_requirements: - contract_details: 1. Contract details - description: Please complete each section below by clicking on each link and answering the questions. Once all sections are complete, click on the 'Save and continue' button to see your supplier shortlist and procurement options. - services_and_buildings: 2. Services and buildings - further_information: - deliverables_matrix: Prepopulated 'Deliverables matrix' - fm_framework_page: facilities management framework page - fm_framework_page_url: https://www.crowncommercial.gov.uk/agreements/rm6232 - information_list: - item_1: Customer guidence documents - item_2: Framework benifits - item_3: How to buy - item_4: Bid pack documents - on_the_framework_page_html: 'On the %{framework_page_link}, you can view information including:' - step_1: Step 1 - Download your results - step_2: Step 2 - Review the Facilities Management framework page - supplier_brief: Prepopulated 'Supplier brief' - we_have_used: We have used the information entered on the previous pages to prepopulate a deliverables matrix and a supplier bief which you can use when running your further competition. - results: - based_on_information: 'Based on the further information you provided, this procurement is eligible for the following sub-lot:' - building: Building - buildings_and_services: Buildings and services summary - if_you_wish: If you wish to change your requirements, click the 'Change requirements' button below. Any changes may result in a different outcome. - service: Service - sub_lot: Sub-lot %{sub_lot} - suppliers_shortlisted: "%{number} supplier(s) shortlisted" - warning_text: You will not be able to change your requirements for this procurement once you click 'Continue' - who_can_provide: who can provide the services you require in your location(s) - show: - change_requirements: Change requirements - return_to_your_account: Return to your account - save_and_continue: Save and continue - title: - entering_requirements: Further service and contract requirements - further_information: What do I do next? - results: Results - what_happens_next: What happens next? - what_happens_next: - if_you_need_to_talk: If you need to talk to us or refer to your procurement at any point please use the below reference number - option_1: - details: Click save and continue below to continue entering your requirements. You will be able to edit and enter your Contract details and services and buildings. Once this has been completed you will be able to download a prepopulated deliverables matrix and a prepopulated order form, with all your contract and service requirements inserted. Once you have downloaded these documents you will then be able to run a further competition either with your organisation’s own sourcing tool or use the Crown Commercial free eSourcing tool. - heading: Option 1. Use this portal to complete the facilities services requirements - option_2: - details: You can download your shortlisted suppliers list now and proceed with further competition using your own templates and sourcing system. - heading: Option 2. Carry out the further competition with your own templates and system - or: Or - selected_suppliers: Selected suppliers - you_have_two_option: You now have two options to complete you procurement activity. You can either continue using this portal to complete the facilities services requirements or you can carry out the further competition with your own templates and system. - your_unique_reference_number: Your unique reference number service_specification: show: generic_requirements: "%{work_package_name} - Generic Requirements" diff --git a/config/routes.rb b/config/routes.rb index c334a83eb7..304620e33d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -37,10 +37,6 @@ namespace 'facilities_management', path: 'facilities-management', defaults: { service: 'facilities_management' } do namespace 'rm3830', path: 'RM3830', defaults: { framework: 'RM3830' } do - concerns %i[authenticatable registrable] - namespace :supplier, defaults: { service: 'facilities_management/supplier' } do - concerns :authenticatable - end namespace :admin, defaults: { service: 'facilities_management/admin' } do concerns :authenticatable end @@ -79,36 +75,12 @@ end namespace 'facilities_management', path: 'facilities-management', defaults: { service: 'facilities_management' } do - concern :buildings do - resources :buildings, only: %i[index show edit update new create] - end - - concern :edit_buildings do - resources :edit_buildings, path: 'edit-buildings', only: %i[show edit update new create] - end - - concern :procurement_details do - resources :procurement_details, path: 'procurement-details', param: :section, only: %i[show edit update] - end - - concern :procurement_buildings do - namespace 'procurement_buildings', path: 'procurement-buildings/:id' do - get '/:section/edit', action: :edit - put '/:section/', action: :update - end - get 'procurements/:procurement_id/missing-regions', as: :missing_regions, to: 'procurement_buildings#missing_regions' - end - concerns :framework resources :buyer_details, path: '/:framework/buyer-details', only: %i[edit update] do get 'edit-address', as: :edit_address end - namespace :supplier, defaults: { service: 'facilities_management/supplier' } do - concerns :framework - end - namespace :admin, path: 'admin', defaults: { service: 'facilities_management/admin' } do concerns :framework, :admin_frameworks end @@ -130,53 +102,6 @@ end namespace 'rm3830', path: 'RM3830', defaults: { framework: 'RM3830' } do - concerns :shared_pages, :buildings, :procurement_buildings - - get '/start', to: 'home#index' - get '/', to: 'buyer_account#index' - get '/service-specification/:service_code/:work_package_code', to: 'service_specification#show', as: 'service_specification' - get 'procurements/what-happens-next', as: 'what_happens_next', to: 'procurements#what_happens_next' - resources :procurements do - concerns :procurement_details, :edit_buildings - - get 'delete' - get 'quick_view_results_spreadsheet' - get 'further_competition_spreadsheet' - get 'deliverables_matrix' - get 'price_matrix' - namespace 'contract_details', path: 'contract-details', controller: '/facilities_management/rm3830/procurements/contract_details' do - get '/', action: 'show' - put '/', action: 'update' - patch '/', action: 'update' - get '/edit', action: 'edit' - end - resources :contracts, only: %i[show edit update], controller: 'procurements/contracts' do - resources :sent, only: %i[index], controller: 'procurements/contracts/sent' - resources :closed, only: %i[index], controller: 'procurements/contracts/closed' - namespace :documents, controller: '/facilities_management/rm3830/procurements/contracts/documents' do - get '/call-off-schedule', action: :call_off_schedule - get '/call-off-schedule-2', action: :call_off_schedule_2 - get '/zip', action: :zip_contracts - end - end - resources :copy_procurement, only: %i[new create], controller: 'procurements/copy_procurement' - resources :spreadsheet_imports, only: %i[new create show destroy], controller: 'procurements/spreadsheet_imports' do - get '/progress', action: :progress - end - end - resources :procurement_buildings, path: 'procurement-buildings', only: :show - resources :procurement_buildings_services, only: %i[edit update] - - namespace :supplier, defaults: { service: 'facilities_management/supplier' } do - concerns :shared_pages - - get '/', to: 'home#index' - resources :dashboard, only: :index - resources :contracts, only: %i[show edit update], controller: 'contracts' do - resources :sent, only: %i[index], controller: 'sent' - end - end - namespace :admin, path: 'admin', defaults: { service: 'facilities_management/admin' } do get '/uploads/spreadsheet_template', controller: 'facilities_management/rm3830/admin/uploads' @@ -194,16 +119,12 @@ namespace 'rm6232', path: 'RM6232', defaults: { framework: 'RM6232' } do concerns :shared_pages - # This has been cut but it may return on the future: concerns :buildings, :procurement_buildings get '/start', to: 'home#index' get '/', to: 'buyer_account#index' get '/service-specification/:service_code', to: 'service_specification#show', as: 'service_specification' resources :procurements, only: %i[index show new create] do - # This has been cut but it may return on the future: concerns :procurement_details, :edit_buildings - # put 'update-show', action: 'update_show' - get 'supplier_shortlist_spreadsheet' end diff --git a/features/accessibility/facilities_management/buildings/buildings_accessibility.feature b/features/accessibility/facilities_management/buildings/buildings_accessibility.feature deleted file mode 100644 index 9e1d2b34a3..0000000000 --- a/features/accessibility/facilities_management/buildings/buildings_accessibility.feature +++ /dev/null @@ -1,50 +0,0 @@ -@accessibility @javascript -Feature: Buildings - - Background: - Given I sign in and navigate to my account for 'RM3830' - And I have buildings - And I click on 'Manage my buildings' - Then I am on the 'Buildings' page - - Scenario: Buildings page - Then the page should be axe clean - - Scenario: Building details simmary page - And I click on 'Test building' - Then the page should be axe clean - - Scenario: Add buildings - And I click on 'Test building' - And I change the 'Name' - Then I am on the 'Building details' page - Then the page should be axe clean - - Scenario: Add address manually - And I click on 'Test building' - And I change the 'Name' - Then I am on the 'Building details' page - And I change my building address - And I enter the following details into the form: - | Postcode | ST16 1AA | - And I click on 'Find address' - And I click on 'I can’t find my building’s address in the list' - Then I am on the 'Add building address' page - - Scenario: Building area - And I click on 'Test building' - And I change the 'Gross internal area' - Then I am on the 'Internal and external areas' page - Then the page should be axe clean - - Scenario: Building type - And I click on 'Test building' - And I change the 'Building type' - Then I am on the 'Building type' page - Then the page should be axe clean - - Scenario: Security type - And I click on 'Test building' - And I change the 'Security clearance' - Then I am on the 'Security clearance' page - Then the page should be axe clean \ No newline at end of file diff --git a/features/accessibility/facilities_management/rm3830/home/accessibility_statement_accessibility.feature b/features/accessibility/facilities_management/rm3830/admin/accessibility_statement_accessibility.feature similarity index 81% rename from features/accessibility/facilities_management/rm3830/home/accessibility_statement_accessibility.feature rename to features/accessibility/facilities_management/rm3830/admin/accessibility_statement_accessibility.feature index a97b66227f..a59949e367 100644 --- a/features/accessibility/facilities_management/rm3830/home/accessibility_statement_accessibility.feature +++ b/features/accessibility/facilities_management/rm3830/admin/accessibility_statement_accessibility.feature @@ -2,7 +2,7 @@ Feature: Accessibility statement accessibility Scenario: Accessibility statement - Given I go to the facilities management RM3830 start page + Given I go to the admin dashboard for 'RM3830' When I click on 'Accessibility statement' Then I am on the 'Facilities Management (FM) Accessibility statement' page Then the page should be axe clean diff --git a/features/accessibility/facilities_management/rm3830/home/cookie_pages_accessibility.feature b/features/accessibility/facilities_management/rm3830/admin/cookie_pages_accessibility.feature similarity index 75% rename from features/accessibility/facilities_management/rm3830/home/cookie_pages_accessibility.feature rename to features/accessibility/facilities_management/rm3830/admin/cookie_pages_accessibility.feature index 030cd8f64b..23fedccde3 100644 --- a/features/accessibility/facilities_management/rm3830/home/cookie_pages_accessibility.feature +++ b/features/accessibility/facilities_management/rm3830/admin/cookie_pages_accessibility.feature @@ -2,12 +2,13 @@ Feature: Cookie pages accessibility Scenario: Start page with the banner - Given I go to the facilities management RM3830 start page + Given I go to the admin dashboard for 'RM3830' + Then I am on the 'Sign in to the RM3830 administration dashboard' page And the cookie banner 'is' visible Then the page should be axe clean Scenario: Cookie policy - Given I go to the facilities management RM3830 start page + Given I go to the admin dashboard for 'RM3830' And the cookie banner 'is' visible When I click on 'Accept analytics cookies' And I click on 'Cookie policy' @@ -15,7 +16,7 @@ Feature: Cookie pages accessibility Then the page should be axe clean Scenario: Cookie settings - Given I go to the facilities management RM3830 start page + Given I go to the admin dashboard for 'RM3830' And the cookie banner 'is' visible When I click on 'Accept analytics cookies' When I click on 'Cookie settings' diff --git a/features/accessibility/facilities_management/rm3830/admin/supplier_details_accessibility.feature b/features/accessibility/facilities_management/rm3830/admin/supplier_details_accessibility.feature index 33a2ec14e1..ed566cfe6f 100644 --- a/features/accessibility/facilities_management/rm3830/admin/supplier_details_accessibility.feature +++ b/features/accessibility/facilities_management/rm3830/admin/supplier_details_accessibility.feature @@ -13,38 +13,3 @@ Feature: Supplier details - accessibility And I click on 'Abbott-Dooley' Then I am on the 'Supplier details' page Then the page should be axe clean - - Scenario: Current user page - And I click on 'Abbott-Dooley' - Then I am on the 'Supplier details' page - And I change the 'Current user' for the supplier details - Then I am on the 'Supplier user account' page - Then the page should be axe clean - - Scenario: Supplier name page - And I click on 'Abbott-Dooley' - Then I am on the 'Supplier details' page - And I change the 'Supplier name' for the supplier details - Then I am on the 'Supplier name' page - Then the page should be axe clean - - Scenario: Supplier contact information page - And I click on 'Abbott-Dooley' - Then I am on the 'Supplier details' page - And I change the 'Contact name' for the supplier details - Then I am on the 'Supplier contact information' page - Then the page should be axe clean - - Scenario: Additional supplier information page - And I click on 'Abbott-Dooley' - Then I am on the 'Supplier details' page - And I change the 'DUNS number' for the supplier details - Then I am on the 'Additional supplier information' page - Then the page should be axe clean - - Scenario: Full address page - And I click on 'Abbott-Dooley' - Then I am on the 'Supplier details' page - And I change the 'Full address' for the supplier details - Then I am on the 'Supplier address' page - Then the page should be axe clean diff --git a/features/accessibility/facilities_management/rm3830/contracts/contract_options.feature b/features/accessibility/facilities_management/rm3830/contracts/contract_options.feature deleted file mode 100644 index f9d62813fb..0000000000 --- a/features/accessibility/facilities_management/rm3830/contracts/contract_options.feature +++ /dev/null @@ -1,63 +0,0 @@ -@accessibility @javascript @contract_emails -Feature: Contract options accessibility - - Background: I navigate to my sent contract - Given I sign in and navigate to my account for 'RM3830' - And I have a contract that has been 'accepted' called 'My contract' - And I click on 'Continue a procurement' - Then I navigate to the contract 'My contract' in 'Sent offers' - - Scenario: Confirm if signed - Then I click on 'Confirm if contract signed or not' - And I am on the 'Confirmation of signed contract' page - Then the page should be axe clean - - Scenario: Close contract - Then I click on 'Close this procurement' - And I am on the 'Are you sure you wish to close' page - Then the page should be axe clean - - Scenario: Contract signed page - Then I click on 'Confirm if contract signed or not' - And I am on the 'Confirmation of signed contract' page - And I select 'Yes' for the confirmation of signed contract - And I enter a contract start date 2 years and 0 months into the future - And I enter a contract end date 5 years and 0 months into the future - And I click on 'Save and continue' - Then I am on the 'Contract signed' page - Then the page should be axe clean - - Scenario: Contract has been closed - Then I click on 'Close this procurement' - And I am on the 'Are you sure you wish to close' page - And I enter the reason for closing the contract: - | The procurement is no longer required | - Then I click on 'Close this procurement' - Then I am on the 'Your procurement has been closed' page - Then the page should be axe clean - - Scenario: Send to next supplier page - Then I click on 'Confirm if contract signed or not' - And I am on the 'Confirmation of signed contract' page - And I select 'No' for the confirmation of signed contract - And I enter the reason for not signing: - | Some reason | - Then I click on 'Save and continue' - And I am on the 'Contract summary' page - Then I click on "View next supplier's price" - And I am on the 'Offer to next supplier' page - Then the page should be axe clean - - Scenario: Contract sent - Then I click on 'Confirm if contract signed or not' - And I am on the 'Confirmation of signed contract' page - And I select 'No' for the confirmation of signed contract - And I enter the reason for not signing: - | Some reason | - Then I click on 'Save and continue' - And I am on the 'Contract summary' page - Then I click on "View next supplier's price" - And I am on the 'Offer to next supplier' page - And I click on 'Confirm and send offer to supplier' - Then I am on the 'Your contract was sent' page - Then the page should be axe clean diff --git a/features/accessibility/facilities_management/rm3830/contracts/contract_summary.feature b/features/accessibility/facilities_management/rm3830/contracts/contract_summary.feature deleted file mode 100644 index a71294cbf9..0000000000 --- a/features/accessibility/facilities_management/rm3830/contracts/contract_summary.feature +++ /dev/null @@ -1,35 +0,0 @@ -@accessibility @javascript -Feature: Contract summary accessibility - - Scenario Outline: Contract summary - Given I sign in and navigate to my account for 'RM3830' - And I have a contract that has been '' called 'My contract' - And I click on 'Continue a procurement' - Then I navigate to the contract 'My contract' in '' - Then the page should be axe clean - - Examples: - | state | location | - | sent | Sent offers | - | accepted | Sent offers | - | declined | Sent offers | - | expired | Sent offers | - | not_signed | Sent offers | - | signed | Contracts | - - @contract_emails - Scenario: Closed contract - Given I sign in and navigate to my account for 'RM3830' - And I have a contract that has been 'sent' called 'My contract' - And I click on 'Continue a procurement' - Then I navigate to the contract 'My contract' in 'Sent offers' - Then I click on 'Close this procurement' - And I am on the 'Are you sure you wish to close' page - And I enter the reason for closing the contract: - | The procurement is no longer required | - Then I click on 'Close this procurement' - Then I am on the 'Your procurement has been closed' page - And I click on 'Return to procurements dashboard' - Then I am on the 'Procurements dashboard' page - Then I navigate to the contract 'My contract' in 'Closed' - Then the page should be axe clean diff --git a/features/accessibility/facilities_management/rm3830/contracts/no_more_supplier.feature b/features/accessibility/facilities_management/rm3830/contracts/no_more_supplier.feature deleted file mode 100644 index 9bc321151b..0000000000 --- a/features/accessibility/facilities_management/rm3830/contracts/no_more_supplier.feature +++ /dev/null @@ -1,11 +0,0 @@ -@accessibility @javascript -Feature: No more suppliers accessibility - - Scenario: There are no more suppliers - Given I sign in and navigate to my account for 'RM3830' - And I have a contract that has been 'declined' called 'No more suppliers' and there are no more suppliers - And I click on 'Continue a procurement' - Then I navigate to the contract 'No more suppliers' in 'Sent offers' - Then I click on "View next supplier's price" - And I am on the 'Supplier shortlist' page - Then the page should be axe clean diff --git a/features/accessibility/facilities_management/rm3830/home/manage_my_details_accessibility.feature b/features/accessibility/facilities_management/rm3830/home/manage_my_details_accessibility.feature deleted file mode 100644 index 4ed062d285..0000000000 --- a/features/accessibility/facilities_management/rm3830/home/manage_my_details_accessibility.feature +++ /dev/null @@ -1,19 +0,0 @@ -@accessibility @javascript -Feature: Buildings - - Background: - Given I sign in and navigate to my account for 'RM3830' - And I click on 'Manage my details' - Then I am on the 'Manage your details' page - - Scenario: Manage your details page - Then the page should be axe clean - - Scenario: Manage your details add address - And I change my contact detail address - And I enter the following details into the form: - | Postcode | ST16 1AA | - And I click on 'Find address' - And I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - Then the page should be axe clean \ No newline at end of file diff --git a/features/accessibility/facilities_management/rm3830/home/start_pages_accessibility.feature b/features/accessibility/facilities_management/rm3830/home/start_pages_accessibility.feature deleted file mode 100644 index 5121a34f5f..0000000000 --- a/features/accessibility/facilities_management/rm3830/home/start_pages_accessibility.feature +++ /dev/null @@ -1,18 +0,0 @@ -@accessibility @javascript -Feature: Start pages accessibility - - Scenario: Start page - When I go to the facilities management RM3830 start page - Then I am on the 'Find a facilities management supplier' page - Then the page should be axe clean - - Scenario: Sign in page - When I go to the facilities management RM3830 start page - And I am on the 'Find a facilities management supplier' page - When I click on 'Start now' - Then I am on the 'Sign in to your account' page - Then the page should be axe clean - - Scenario: Buyer account page - Given I sign in and navigate to my account for 'RM3830' - Then the page should be axe clean \ No newline at end of file diff --git a/features/accessibility/facilities_management/rm3830/procurements/building_missing_region.feature b/features/accessibility/facilities_management/rm3830/procurements/building_missing_region.feature deleted file mode 100644 index 5b8cda0ba9..0000000000 --- a/features/accessibility/facilities_management/rm3830/procurements/building_missing_region.feature +++ /dev/null @@ -1,15 +0,0 @@ -@accessibility @javascript -Feature: Buildings used in a procurement are missing a region - accessibility - - Background: Sign in and navigate to the page - Given I sign in and navigate to my account for 'RM3830' - And I have a completed procurement for entering requirements named 'My missing regions procurement' with buildings missing regions - When I navigate to the procurement 'My missing regions procurement' - Then I am on the 'Review your buildings' page - - Scenario: Review your buildings page - Then the page should be axe clean - - Scenario: Confirm your building's region page - Given I select region for 'Test building 1' - Then the page should be axe clean diff --git a/features/accessibility/facilities_management/rm3830/procurements/contract_details/completed_contract_details_accessibility.feature b/features/accessibility/facilities_management/rm3830/procurements/contract_details/completed_contract_details_accessibility.feature deleted file mode 100644 index ffe8a0b69c..0000000000 --- a/features/accessibility/facilities_management/rm3830/procurements/contract_details/completed_contract_details_accessibility.feature +++ /dev/null @@ -1,22 +0,0 @@ -@accessibility @javascript -Feature: Contract details accessibility - - Background: Navigate to the contract details page - Given I sign in and navigate to my account for 'RM3830' - And I have a procurement with completed contract details named 'Contract detail procurement' - When I navigate to the procurement 'Contract detail procurement' - Then I am on the 'Contract details' page - - Scenario: Completed contract details page - Then the page should be axe clean - - Scenario: With secuirty policy document - And I answer the 'Security policy' contract detail question - Then I am on the 'Security policy document' page - And I select 'Yes' for the security policy document question - And I enter 'Test' for the security policy document 'name' - And I enter '12' for the security policy document 'number' - And I upload security policy document that is 'valid' - When I click on 'Save and return' - Then I am on the 'Contract details' page - Then the page should be axe clean diff --git a/features/accessibility/facilities_management/rm3830/procurements/contract_details/contract_details_accessibility.feature b/features/accessibility/facilities_management/rm3830/procurements/contract_details/contract_details_accessibility.feature deleted file mode 100644 index 1258eea3a8..0000000000 --- a/features/accessibility/facilities_management/rm3830/procurements/contract_details/contract_details_accessibility.feature +++ /dev/null @@ -1,79 +0,0 @@ -@accessibility @javascript -Feature: Contract details accessibility - - Background: Navigate to the contract details page - Given I sign in and navigate to my account for 'RM3830' - And I have a procurement in DA draft at the 'contract_details' stage named 'Contract detail procurement' - When I navigate to the procurement 'Contract detail procurement' - Then I am on the 'Contract details' page - - Scenario: Contract details page - Then the page should be axe clean - - Scenario: Payment method page - Given I answer the 'Payment method' contract detail question - Then I am on the 'Payment method' page - Then the page should be axe clean - - Scenario: Invoicing contact details pages - Given I answer the 'Invoicing contact details' contract detail question - Then I am on the 'Invoicing contact details' page - Then the page should be axe clean - Given I select 'Enter a new invoicing contact' for the contact details - And I click on the button with text 'Continue' - Then I am on the 'New invoicing contact details' page - Then the page should be axe clean - And I enter 'XC2 0MA' for the invoicing contact detail 'Postcode' - And I click on 'Find address' - And I click on the link with text 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - Then the page should be axe clean - - Scenario: Authorised representative pages - Given I answer the 'Authorised representative details' contract detail question - Then I am on the 'Authorised representative details' page - Then the page should be axe clean - Given I select 'Enter a new authorised representative' for the contact details - And I click on the button with text 'Continue' - Then I am on the 'New authorised representative details' page - Then the page should be axe clean - And I enter 'XC2 0MA' for the authorised representative detail 'Postcode' - And I click on 'Find address' - And I click on the link with text 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - Then the page should be axe clean - - Scenario: Notices contact details pages - Given I answer the 'Notices contact details' contract detail question - Then I am on the 'Notices contact details' page - Then the page should be axe clean - Given I select 'Enter a new contact for notices' for the contact details - And I click on the button with text 'Continue' - Then I am on the 'New notices contact details' page - Then the page should be axe clean - And I enter 'XC2 0MA' for the notices contact detail 'Postcode' - And I click on 'Find address' - And I click on the link with text 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - Then the page should be axe clean - - Scenario: Security policy document page - Given I answer the 'Security policy' contract detail question - Then I am on the 'Security policy document' page - Then the page should be axe clean - And I select 'Yes' for the security policy document question - Then the page should be axe clean - - Scenario: Local government pension scheme pages - Given I answer the 'Local Government Pension Scheme' contract detail question - Then I am on the 'Local Government Pension Scheme' page - And the page should be axe clean - Given I select 'Yes' for the LGPS question - And I click on 'Save and continue' - Then I am on the 'Pension funds' page - And the page should be axe clean - - Scenario: Governing law page - Given I answer the 'Governing law' contract detail question - Then I am on the 'Governing law' page - And the page should be axe clean \ No newline at end of file diff --git a/features/accessibility/facilities_management/rm3830/procurements/create_a_procurement_accessibility.feature b/features/accessibility/facilities_management/rm3830/procurements/create_a_procurement_accessibility.feature deleted file mode 100644 index 2a70066078..0000000000 --- a/features/accessibility/facilities_management/rm3830/procurements/create_a_procurement_accessibility.feature +++ /dev/null @@ -1,15 +0,0 @@ -@accessibility @javascript -Feature: Service requirements accessibility - - Background: Navigate to what happens next - Given I sign in and navigate to my account for 'RM3830' - And I click on 'Start a procurement' - Then I am on the 'What happens next' page - - Scenario: What happens next page - Then the page should be axe clean - - Scenario: Create a procurement page - And I click on 'Continue' - Then I am on the 'Contract name' page - Then the page should be axe clean \ No newline at end of file diff --git a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/contract_details/contract_name_accessibility.feature b/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/contract_details/contract_name_accessibility.feature deleted file mode 100644 index e420079f99..0000000000 --- a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/contract_details/contract_name_accessibility.feature +++ /dev/null @@ -1,11 +0,0 @@ -@accessibility @javascript -Feature: Contract name accessibility - - Scenario: Contract name page - Given I sign in and navigate to my account for 'RM3830' - And I have an empty procurement for entering requirements named 'My empty procurement' - When I navigate to the procurement 'My empty procurement' - Then I am on the 'Requirements' page - And I click on 'Contract name' - Then I am on the 'Contract name' page - Then the page should be axe clean \ No newline at end of file diff --git a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/contract_details/contract_period_acessibility.feature b/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/contract_details/contract_period_acessibility.feature deleted file mode 100644 index 1de9eff473..0000000000 --- a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/contract_details/contract_period_acessibility.feature +++ /dev/null @@ -1,39 +0,0 @@ -@accessibility @javascript -Feature: Contract period accessibility - - Background: Navigate to the contract period page - Given I sign in and navigate to my account for 'RM3830' - And I have an empty procurement for entering requirements named 'My empty procurement' - When I navigate to the procurement 'My empty procurement' - Then I am on the 'Requirements' page - And I click on 'Contract period' - And I am on the 'Contract period' page - - Scenario: Contract period page - Then the page should be axe clean - - Scenario: Contract period summary page - no extra options - Given I enter an inital call-off period start date 2 years and 3 months into the future - Then I enter '3' years and '6' months for the contract period - And I select 'No' for mobilisation period required - And I select 'No' for optional extension required - When I click on 'Save and return' - Then I am on the 'Contract period summary' page - Then the page should be axe clean - - Scenario: Contract period summary page - with extra options - Given I enter an inital call-off period start date 2 years and 1 months into the future - Then I enter '2' years and '7' months for the contract period - And I select 'Yes' for mobilisation period required - Then I enter '6' weeks for the mobilisation period - And I select 'Yes' for optional extension required - Then I enter '0' years and '1' months for optional extension 1 - And I add another extension - Then I enter '1' years and '0' months for optional extension 2 - And I add another extension - Then I enter '1' years and '2' months for optional extension 3 - And I add another extension - Then I enter '3' years and '7' months for optional extension 4 - When I click on 'Save and return' - Then I am on the 'Contract period summary' page - Then the page should be axe clean \ No newline at end of file diff --git a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/contract_details/estimated_annual_cost_accessibility.feature b/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/contract_details/estimated_annual_cost_accessibility.feature deleted file mode 100644 index 889a09dce2..0000000000 --- a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/contract_details/estimated_annual_cost_accessibility.feature +++ /dev/null @@ -1,11 +0,0 @@ -@accessibility @javascript -Feature: Estimated annual cost accessibility - - Scenario: Estimated annual cost page - Given I sign in and navigate to my account for 'RM3830' - And I have an empty procurement for entering requirements named 'My empty procurement' - When I navigate to the procurement 'My empty procurement' - Then I am on the 'Requirements' page - And I click on 'Estimated annual cost' - And I am on the 'Estimated annual cost' page - Then the page should be axe clean \ No newline at end of file diff --git a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/contract_details/tupe_accessibility.feature b/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/contract_details/tupe_accessibility.feature deleted file mode 100644 index 086fee4433..0000000000 --- a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/contract_details/tupe_accessibility.feature +++ /dev/null @@ -1,9 +0,0 @@ -Feature: Tupe accessibility - - Scenario: TUPE page - Given I sign in and navigate to my account for 'RM3830' - And I have an empty procurement for entering requirements named 'My empty procurement' - When I navigate to the procurement 'My empty procurement' - Then I am on the 'Requirements' page - And I click on 'TUPE' - And I am on the 'TUPE' page \ No newline at end of file diff --git a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/entering_requirements_accessibility.feature b/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/entering_requirements_accessibility.feature deleted file mode 100644 index 6bfa3eec2e..0000000000 --- a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/entering_requirements_accessibility.feature +++ /dev/null @@ -1,18 +0,0 @@ -@accessibility @javascript -Feature: Entering requirements accessibility - - Background: Sign in to my account - Given I sign in and navigate to my account for 'RM3830' - - Scenario: Nothing is completed - Given I have an empty procurement for entering requirements named 'My empty procurement' - When I navigate to the procurement 'My empty procurement' - Then I am on the 'Requirements' page - Then the page should be axe clean - - Scenario: Everything is completed - Given I have a completed procurement for entering requirements named 'My completed procurement' - When I navigate to the procurement 'My completed procurement' - Then I am on the 'Requirements' page - And everything is completed - Then the page should be axe clean diff --git a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/services_and_building/add_a_building_accessibility.feature b/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/services_and_building/add_a_building_accessibility.feature deleted file mode 100644 index 86c7613311..0000000000 --- a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/services_and_building/add_a_building_accessibility.feature +++ /dev/null @@ -1,46 +0,0 @@ -@accessibility @javascript -Feature: Add a building in requirements accessibility - - Background: - Given I sign in and navigate to my account for 'RM3830' - Given I have buildings - And I have an empty procurement for entering requirements named 'My buildings procurement' - When I navigate to the procurement 'My buildings procurement' - Then I am on the 'Requirements' page - And I click on 'Buildings' - Then I am on the 'Buildings' page - And I click on the details for 'Test building' - Then I am on the buildings summary page for 'Test building' - - Scenario: Building details summary page - Then the page should be axe clean - - Scenario: Add buildings - And I change the 'Name' - Then I am on the 'Building details' page - Then the page should be axe clean - - Scenario: Add address manually - And I change the 'Name' - Then I am on the 'Building details' page - And I change my building address - And I enter the following details into the form: - | Postcode | ST16 1AA | - And I click on 'Find address' - And I click on 'I can’t find my building’s address in the list' - Then I am on the 'Add building address' page - - Scenario: Building area - And I change the 'Gross internal area' - Then I am on the 'Internal and external areas' page - Then the page should be axe clean - - Scenario: Building type - And I change the 'Building type' - Then I am on the 'Building type' page - Then the page should be axe clean - - Scenario: Security type - And I change the 'Security clearance' - Then I am on the 'Security clearance' page - Then the page should be axe clean diff --git a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/services_and_building/assigning_services_to_buildings_accessibility.feature b/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/services_and_building/assigning_services_to_buildings_accessibility.feature deleted file mode 100644 index 198c1e6ffa..0000000000 --- a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/services_and_building/assigning_services_to_buildings_accessibility.feature +++ /dev/null @@ -1,42 +0,0 @@ -@accessibility @javascript -Feature: Assigning services to buildings accessibility - - Background: I navigate to the assigning services to buildings summary page - Given I sign in and navigate to my account for 'RM3830' - And I have buildings - And I have an empty procurement with buildings named 'S & B procurement' with the following servcies: - | C.1 | - | L.5 | - | G.1 | - | J.3 | - | N.1 | - When I navigate to the procurement 'S & B procurement' - Then I am on the 'Requirements' page - And I click on 'Assigning services to buildings' - Then I am on the 'Assigning services to buildings summary' page - - Scenario: Assigning services to buildings summary page - Then the page should be axe clean - - Scenario: Select services page - Given I click on 'Test building' - Then I am on the 'Test building' page - Then the page should be axe clean - - Scenario: Completed service selection - Given I click on 'Test building' - Then I am on the 'Test building' page - And I am on the page with secondary heading 'Which of your services are required within this building?' - When I select the following services for the building: - | Mechanical and electrical engineering maintenance | - | Routine cleaning | - | Helpdesk services | - And I click on 'Save and return' - Then I am on the 'Assigning services to buildings summary' page - Given I click on 'Test London building' - Then I am on the 'Test London building' page - And I am on the page with secondary heading 'Which of your services are required within this building?' - When I select the service 'Flag flying service' for the building - And I click on 'Save and return' - Then I am on the 'Assigning services to buildings summary' page - Then the page should be axe clean diff --git a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/services_and_building/buildings_accessibility.feature b/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/services_and_building/buildings_accessibility.feature deleted file mode 100644 index 74cbf3687b..0000000000 --- a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/services_and_building/buildings_accessibility.feature +++ /dev/null @@ -1,31 +0,0 @@ -@accessibility @javascript -Feature: Buildings accessibility - - Background: Navigate to the requirements page - Given I sign in and navigate to my account for 'RM3830' - And I have an empty procurement for entering requirements named 'My buildings procurement' - When I navigate to the procurement 'My buildings procurement' - Then I am on the 'Requirements' page - - Scenario: Buildings page without pagination - Given I have buildings - And I click on 'Buildings' - Then I am on the 'Buildings' page - Then the page should be axe clean - - Scenario: Buildings page with pagination - Given I have 200 buildings - And I click on 'Buildings' - And I am on the 'Buildings' page - Then the page should be axe clean - - Scenario: Buildings summary page - Given I have buildings - And I click on 'Buildings' - Then I am on the 'Buildings' page - And I find and select the following buildings: - | Test building | - | Test London building | - And I click on 'Save and return' - Then I am on the 'Buildings summary' page - Then the page should be axe clean \ No newline at end of file diff --git a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/services_and_building/service_requirements_accessibility.feature b/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/services_and_building/service_requirements_accessibility.feature deleted file mode 100644 index b4d4ec36a7..0000000000 --- a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/services_and_building/service_requirements_accessibility.feature +++ /dev/null @@ -1,17 +0,0 @@ -@accessibility @javascript -Feature: Service requirements accessibility - - Scenario: Service requirements summary page - Given I sign in and navigate to my account for 'RM3830' - And I have buildings - And I have an empty procurement with buildings named 'S & B procurement' with the following servcies assigned: - | C.1 | - | L.5 | - | G.1 | - | J.3 | - | N.1 | - When I navigate to the procurement 'S & B procurement' - Then I am on the 'Requirements' page - And I click on 'Service requirements' - Then I am on the 'Service requirements summary' page - Then the page should be axe clean \ No newline at end of file diff --git a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/services_and_building/services_accessibility.feature b/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/services_and_building/services_accessibility.feature deleted file mode 100644 index 3d7bdd018e..0000000000 --- a/features/accessibility/facilities_management/rm3830/procurements/entering_requirements/services_and_building/services_accessibility.feature +++ /dev/null @@ -1,20 +0,0 @@ -@accessibility @javascript -Feature: Services accessibility - - Background: Navigate to the service page - Given I sign in and navigate to my account for 'RM3830' - And I have an empty procurement for entering requirements named 'My services procurement' - When I navigate to the procurement 'My services procurement' - Then I am on the 'Requirements' page - And I click on 'Services' - Then I am on the 'Services' page - - Scenario: Services page - Then the page should be axe clean - - Scenario: Services summary page - Given I show all sections - And I select 'Building management system (BMS) maintenance' - When I click on 'Save and return' - Then I am on the 'Services summary' page - And the page should be axe clean \ No newline at end of file diff --git a/features/accessibility/facilities_management/rm3830/procurements/procurements_dashboard_accessibility.feature b/features/accessibility/facilities_management/rm3830/procurements/procurements_dashboard_accessibility.feature deleted file mode 100644 index 308c195a03..0000000000 --- a/features/accessibility/facilities_management/rm3830/procurements/procurements_dashboard_accessibility.feature +++ /dev/null @@ -1,8 +0,0 @@ -@accessibility @javascript -Feature: Service requirements accessibility - - Scenario: Procurement dashboard - Given I sign in and navigate to my account for 'RM3830' - And I click on 'Continue a procurement' - Then I am on the 'Procurements dashboard' page - Then the page should be axe clean \ No newline at end of file diff --git a/features/accessibility/facilities_management/rm3830/quick_view_results/quick_view_results_accessibility.feature b/features/accessibility/facilities_management/rm3830/quick_view_results/quick_view_results_accessibility.feature deleted file mode 100644 index 104b8c0ea3..0000000000 --- a/features/accessibility/facilities_management/rm3830/quick_view_results/quick_view_results_accessibility.feature +++ /dev/null @@ -1,75 +0,0 @@ -@accessibility @javascript -Feature: Quick view results accessibility - - Background: Navigate to select services - Given I sign in and navigate to my account for 'RM3830' - And I click on 'Quick view suppliers' - Then I am on the 'Services' page - And I show all sections - - Scenario: Select services page - Then the page should be axe clean - - Scenario: Select regions page - And I select the following items: - | Water hygiene maintenance | - | Pest control services | - | High voltage (HV) and switchgear maintenance | - | Administrative support services | - | Courier booking and external distribution | - | Patrols (fixed or static guarding) | - And I click on 'Continue' - Then I am on the 'Regions' page - And I show all sections - Then the page should be axe clean - - Scenario: Quick view restuls page - And I select the following items: - | Water hygiene maintenance | - | Pest control services | - | High voltage (HV) and switchgear maintenance | - | Administrative support services | - | Courier booking and external distribution | - | Patrols (fixed or static guarding) | - And I click on 'Continue' - Then I am on the 'Regions' page - And I show all sections - When I select the following items: - | Essex | - | Lancashire | - | Inner London - West | - | Gwynedd | - | Inner London - East | - | East Lothian and Midlothian | - | Outer Belfast (Carrickfergus, Castlereagh, Lisburn, Newtownabbey, North Down) | - And I click on 'Continue' - And I am on the 'Quick view results' page - Then the page should be axe clean - - Scenario: Quick view procurement - And I select the following items: - | Water hygiene maintenance | - | Pest control services | - | High voltage (HV) and switchgear maintenance | - | Administrative support services | - | Courier booking and external distribution | - | Patrols (fixed or static guarding) | - And I click on 'Continue' - Then I am on the 'Regions' page - And I show all sections - When I select the following items: - | Essex | - | Lancashire | - | Inner London - West | - | Gwynedd | - | Inner London - East | - | East Lothian and Midlothian | - | Outer Belfast (Carrickfergus, Castlereagh, Lisburn, Newtownabbey, North Down) | - And I click on 'Continue' - And I am on the 'Quick view results' page - Then I enter 'Colony 6 procurement' into the contract name field - And I click on 'Save and return to procurements dashboard' - Then I am on the 'Procurements dashboard' page - Then I click on 'Colony 6 procurement' - And I am on the 'Quick view results' page - Then the page should be axe clean diff --git a/features/accessibility/facilities_management/rm3830/service_requirements/service_requirements_accessibility.feature b/features/accessibility/facilities_management/rm3830/service_requirements/service_requirements_accessibility.feature deleted file mode 100644 index 53a2db00dc..0000000000 --- a/features/accessibility/facilities_management/rm3830/service_requirements/service_requirements_accessibility.feature +++ /dev/null @@ -1,89 +0,0 @@ -@accessibility @javascript -Feature: Service requirements accessibility - - Background: I am logged in - Given I sign in and navigate to my account for 'RM3830' - - Scenario: Service requirements page - Given I have a procurement in detailed search named 'Area procurement' with the following services: - | C.1 | - | G.5 | - And I navigate to the service requirements page - Then the page should be axe clean - - Scenario: Internal and external area page - Given I have a procurement in detailed search named 'Area procurement' with the following services: - | C.1 | - | G.5 | - And I navigate to the service requirements page - And I choose to answer the service volume question for 'Mechanical and electrical engineering maintenance' - Then I am on the Internal and external areas page in service requirements - Then the page should be axe clean - - Scenario: Lifts page - And I have a procurement in detailed search named 'Lifts procurement' with the following services: - | C.5 | - And I navigate to the service requirements page - And I choose to answer the service volume question for 'Lifts, hoists & conveyance systems maintenance' - Then I am on the page with secondary heading 'Lifts, hoists & conveyance systems maintenance' - Then the page should be axe clean - - Scenario: Service hourse page - And I have a procurement in detailed search named 'Service hours procurement' with the following services: - | I.4 | - And I navigate to the service requirements page - And I choose to answer the service volume question for 'Voice announcement system operation' - Then I am on the page with secondary heading 'Voice announcement system operation' - Then the page should be axe clean - - Scenario: Service standards page - And I have a procurement in detailed search named 'Service standard procurement' with the following services: - | C.5 | - | G.5 | - | C.7 | - And I navigate to the service requirements page - Given I choose to answer the service standard question for 'Lifts, hoists & conveyance systems maintenance' - Then I am on the page with secondary heading 'Lifts, hoists & conveyance systems maintenance' - Then the page should be axe clean - Given I click on the 'Return to service requirements' return link - Then I am on the page with secondary heading 'Service requirements' - Given I choose to answer the service standard question for 'Cleaning of external areas' - Then I am on the page with secondary heading 'Cleaning of external areas' - Then the page should be axe clean - Given I click on the 'Return to service requirements' back link - Then I am on the page with secondary heading 'Service requirements' - Given I choose to answer the service standard question for 'Internal & external building fabric maintenance' - Then I am on the page with secondary heading 'Internal & external building fabric maintenance' - Then the page should be axe clean - - Scenario: Service volumes page - And I have a procurement in detailed search named 'Service volumes procurement' with the following services: - | E.4 | - | G.1 | - | K.1 | - | K.2 | - | K.7 | - And I navigate to the service requirements page - Given I choose to answer the service volume question for 'Portable appliance testing' - And I am on the page with secondary heading 'Portable appliance testing' - Then the page should be axe clean - When I click on the 'Return to service requirements' return link - Then I am on the page with secondary heading 'Service requirements' - Given I choose to answer the service volume question for 'Routine cleaning' - And I am on the page with secondary heading 'Routine cleaning' - Then the page should be axe clean - When I click on the 'Return to service requirements' back link - Then I am on the page with secondary heading 'Service requirements' - Given I choose to answer the service volume question for 'Classified waste' - And I am on the page with secondary heading 'Classified waste' - Then the page should be axe clean - When I click on the 'Return to service requirements' return link - Then I am on the page with secondary heading 'Service requirements' - Given I choose to answer the service volume question for 'General waste' - And I am on the page with secondary heading 'General waste' - Then the page should be axe clean - When I click on the 'Return to service requirements' back link - Then I am on the page with secondary heading 'Service requirements' - Given I choose to answer the service volume question for 'Feminine hygiene waste' - And I am on the page with secondary heading 'Feminine hygiene waste' - Then the page should be axe clean \ No newline at end of file diff --git a/features/accessibility/facilities_management/rm3830/supplier/contracts/contracts_accessibility.feature b/features/accessibility/facilities_management/rm3830/supplier/contracts/contracts_accessibility.feature deleted file mode 100644 index 9c965a978b..0000000000 --- a/features/accessibility/facilities_management/rm3830/supplier/contracts/contracts_accessibility.feature +++ /dev/null @@ -1,50 +0,0 @@ -@accessibility @javascript @contract_emails -Feature: Supplier contracts accessibility - - Scenario Outline: Contract summary - Given I log in as a supplier with a contract in '' named 'My contract' - And I click on 'My contract' - Then I am on the 'Contract summary' page - Then the page should be axe clean - - Examples: - | state | - | sent | - | accepted | - | signed | - | not_signed | - | declined | - | expired | - | withdrawn | - - Scenario: Respond to contract page - Given I log in as a supplier with a contract in 'sent' named 'My contract' - And I click on 'My contract' - Then I am on the 'Contract summary' page - Then I click on 'Respond to this offer' - And I am on the 'Respond to the contract offer' page - Then the page should be axe clean - - Scenario: Contract accepted page - Given I log in as a supplier with a contract in 'sent' named 'My contract' - And I click on 'My contract' - Then I am on the 'Contract summary' page - Then I click on 'Respond to this offer' - And I am on the 'Respond to the contract offer' page - And I respond to this contract offer with 'Yes' - When I click on 'Confirm and continue' - Then I am on the 'You have accepted this contract offer' page - Then the page should be axe clean - - Scenario: Contract declined page - Given I log in as a supplier with a contract in 'sent' named 'My contract' - And I click on 'My contract' - Then I am on the 'Contract summary' page - Then I click on 'Respond to this offer' - And I am on the 'Respond to the contract offer' page - And I respond to this contract offer with 'No' - And I enter the reason for declining the contract: - | Some reason| - When I click on 'Confirm and continue' - Then I am on the 'You have declined this contract offer' page - Then the page should be axe clean diff --git a/features/accessibility/facilities_management/rm3830/supplier/dashboard_accessibility.feature b/features/accessibility/facilities_management/rm3830/supplier/dashboard_accessibility.feature deleted file mode 100644 index 096eae91e3..0000000000 --- a/features/accessibility/facilities_management/rm3830/supplier/dashboard_accessibility.feature +++ /dev/null @@ -1,10 +0,0 @@ -@accessibility @javascript -Feature: Supplier dashboard - accessibility - - Scenario: Supplier dashboard - no contracts - Given I sign in as a supplier and navigate to my account - Then the page should be axe clean - - Scenario: Supplier dashboard - many contracts - Given I sign in as a supplier and navigate to my account and there are contracts - Then the page should be axe clean \ No newline at end of file diff --git a/features/facilities_management/home/responsive_navigation_links.feature b/features/facilities_management/home/responsive_navigation_links.feature index 806ea7fe43..b65a3dab6a 100644 --- a/features/facilities_management/home/responsive_navigation_links.feature +++ b/features/facilities_management/home/responsive_navigation_links.feature @@ -2,7 +2,7 @@ Feature: Headers are responsive Scenario: Signed in and the navigation links are responsive - Given I sign in and navigate to my account for 'RM3830' + Given I sign in and navigate to my account for 'RM6232' And I click on 'Manage my details' Then I am on the 'Manage your details' page And the header navigation links 'are not' visible diff --git a/features/facilities_management/rm3830/admin/assessed_value/assessed_value.feature b/features/facilities_management/rm3830/admin/assessed_value/assessed_value.feature deleted file mode 100644 index bcfb592fe0..0000000000 --- a/features/facilities_management/rm3830/admin/assessed_value/assessed_value.feature +++ /dev/null @@ -1,93 +0,0 @@ -@wip -Feature: Assessed value - - Background: Log in and navigate to admin dashboard - Given I sign in as an admin and navigate to the 'RM3830' dashboard - Given I have a procurement in detailed search named 'AV Procurement' with the following services: - | C.1 | - | D.3 | - | G.1 | - | I.1 | - | K.2 | - | M.1 | - | N.1 | - And I go to the buyer dashboard - And I click on 'Continue a procurement' - And I click on 'AV Procurement' - And I click on 'Estimated annual cost' - And I am on the 'Estimated annual cost' page - And I enter '150000' for estimated annual cost - And I click on 'Save and return' - Then I am on the 'Requirements' page - And I enter the service requirements for 'Test building' in the assessed value procurement - And I click on 'Continue to results' - Then I am on the 'Results' page - And the assessed value is '£161,289.08' - And I click on 'Change requirements' - Then I am on the 'Requirements' page - And I go to the admin dashboard for 'RM3830' - - Scenario: When the average framework rates are changed, so is the assessed value - Given I click on 'Average framework rates' - Then I am on the 'Average framework rates' page - Given I enter the servie rate of '5.36' for 'C.1 Mechanical and electrical engineering maintenance' - And I enter the servie rate of '11.6' for 'I.1 Reception service' - And I enter the servie rate of '0.0178' for 'M.1 CAFM system' - And I enter the servie rate of '0.0563' for 'Profit (%)' - And I enter the servie rate of '29.3' for 'Cleaning consumables per building user (£)' - And I click on 'Save and return to dashboard' - Then I am on the 'RM3830 administration dashboard' page - And I go to the buyer dashboard - And I click on 'Continue a procurement' - And I click on 'AV Procurement' - Then I am on the 'Requirements' page - And I click on 'Continue to results' - Then I am on the 'Results' page - And the assessed value is '£155,651.96' - - Scenario: When the call-off benchmark rates are changed, so is the assessed value - And I click on 'Call-off benchmark rates' - Then I am on the 'Call-off benchmark rates' page - Given I enter the servie rate of '3.44' for 'Mechanical and electrical engineering maintenance' standard 'A' - And I enter the servie rate of '4.5' for 'Routine cleaning' standard 'A' - And I enter the servie rate of '14.5' for 'Reception service' standard '' - And I enter the servie rate of '0.0455' for 'Helpdesk services' standard '' - And I enter the servie rate of '0.0690' for 'Corporate overhead (%)' - And I enter the servie rate of '0.0783' for 'Direct award mobilisation (%)' - And I click on 'Save and return to dashboard' - Then I am on the 'RM3830 administration dashboard' page - And I go to the buyer dashboard - And I click on 'Continue a procurement' - And I click on 'AV Procurement' - Then I am on the 'Requirements' page - And I click on 'Continue to results' - Then I am on the 'Results' page - And the assessed value is '£165,776.16' - - Scenario: When both rates are changed, so is the assessed value - Given I click on 'Average framework rates' - Then I am on the 'Average framework rates' page - Given I enter the servie rate of '5.36' for 'C.1 Mechanical and electrical engineering maintenance' - And I enter the servie rate of '11.6' for 'I.1 Reception service' - And I enter the servie rate of '0.0178' for 'M.1 CAFM system' - And I enter the servie rate of '0.0563' for 'Profit (%)' - And I enter the servie rate of '29.3' for 'Cleaning consumables per building user (£)' - And I click on 'Save and return to dashboard' - Then I am on the 'RM3830 administration dashboard' page - And I click on 'Call-off benchmark rates' - Then I am on the 'Call-off benchmark rates' page - Given I enter the servie rate of '3.44' for 'Mechanical and electrical engineering maintenance' standard 'A' - And I enter the servie rate of '4.5' for 'Routine cleaning' standard 'A' - And I enter the servie rate of '14.5' for 'Reception service' standard '' - And I enter the servie rate of '0.0455' for 'Helpdesk services' standard '' - And I enter the servie rate of '0.0690' for 'Corporate overhead (%)' - And I enter the servie rate of '0.0783' for 'Direct award mobilisation (%)' - And I click on 'Save and return to dashboard' - Then I am on the 'RM3830 administration dashboard' page - And I go to the buyer dashboard - And I click on 'Continue a procurement' - And I click on 'AV Procurement' - Then I am on the 'Requirements' page - And I click on 'Continue to results' - Then I am on the 'Results' page - And the assessed value is '£160,139.03' \ No newline at end of file diff --git a/features/facilities_management/rm3830/admin/assessed_value/average_framework_rates.feature b/features/facilities_management/rm3830/admin/assessed_value/average_framework_rates.feature deleted file mode 100644 index aac8332d7a..0000000000 --- a/features/facilities_management/rm3830/admin/assessed_value/average_framework_rates.feature +++ /dev/null @@ -1,33 +0,0 @@ -Feature: Average framework rates - - Background: Navigate to the average framework rates page - Given I sign in as an admin and navigate to the 'RM3830' dashboard - And I click on 'Average framework rates' - Then I am on the 'Average framework rates' page - - Scenario Outline: Links on the page work - Then I click on '' - And I am on the 'RM3830 administration dashboard' page - - Examples: - | return_link | - | Home | - | Return to admin dashboard | - - Scenario: Changes are saved - Given I enter the servie rate of '15.587' for 'D.1 Grounds maintenance services' - Given I enter the servie rate of '13.4' for 'H.3 Courier booking and external distribution' - And I enter the servie rate of '18.6' for 'J.5 Patrols (fixed or static guarding)' - And I enter the servie rate of '0.32' for 'M.1 CAFM system' - And I enter the servie rate of '0.76' for 'London location percentage variance (%)' - And I click on 'Save and return to dashboard' - Then I am on the 'RM3830 administration dashboard' page - And I click on 'Average framework rates' - Then I am on the 'Average framework rates' page - And the following services should have the following rates: - | D.1 Grounds maintenance services | 15.587 | - | H.3 Courier booking and external distribution | 13.4 | - | J.5 Patrols (fixed or static guarding) | 18.6 | - | M.1 CAFM system | 0.32 | - | London location percentage variance (%) | 0.76 | - diff --git a/features/facilities_management/rm3830/admin/assessed_value/call_off_benchmark_rates.feature b/features/facilities_management/rm3830/admin/assessed_value/call_off_benchmark_rates.feature deleted file mode 100644 index 6b1df232ce..0000000000 --- a/features/facilities_management/rm3830/admin/assessed_value/call_off_benchmark_rates.feature +++ /dev/null @@ -1,33 +0,0 @@ -Feature: Call-off benchmark rates - - Background: Navigate to the average framework rates page - Given I sign in as an admin and navigate to the 'RM3830' dashboard - And I click on 'Call-off benchmark rates' - Then I am on the 'Call-off benchmark rates' page - - Scenario Outline: Links on the page work - Then I click on '' - And I am on the 'RM3830 administration dashboard' page - - Examples: - | return_link | - | Home | - | Return to admin dashboard | - - Scenario: Changes are saved - Given I enter the servie rate of '12.6' for 'Environmental cleaning service' standard 'A' - Given I enter the servie rate of '11.54' for 'High voltage (HV) and switchgear maintenance' standard 'B' - And I enter the servie rate of '18.6' for 'Routine cleaning' standard 'C' - And I enter the servie rate of '0.1276' for 'Helpdesk services' standard '' - And I enter the servie rate of '0.10098' for 'Direct award TUPE risk premium (%)' - And I click on 'Save and return to dashboard' - Then I am on the 'RM3830 administration dashboard' page - And I click on 'Call-off benchmark rates' - Then I am on the 'Call-off benchmark rates' page - And the following services should have the following rates for their standard: - | Environmental cleaning service | 12.6 | A | - | High voltage (HV) and switchgear maintenance | 11.54 | B | - | Routine cleaning | 18.6 | C | - | Helpdesk services | 0.1276 | | - And the following services should have the following rates: - | Direct award TUPE risk premium (%) | 0.10098 | \ No newline at end of file diff --git a/features/facilities_management/rm3830/admin/assessed_value/validations/average_framework_rates_validations.feature b/features/facilities_management/rm3830/admin/assessed_value/validations/average_framework_rates_validations.feature deleted file mode 100644 index 4d0982822c..0000000000 --- a/features/facilities_management/rm3830/admin/assessed_value/validations/average_framework_rates_validations.feature +++ /dev/null @@ -1,40 +0,0 @@ -Feature: Average framework rates - validations - - Background: Navigate to the average framework rates page - Given I sign in as an admin and navigate to the 'RM3830' dashboard - And I click on 'Average framework rates' - Then I am on the 'Average framework rates' page - - Scenario Outline: Service price - validation - Given I enter the servie rate of 'Rex' for '' - And I click on 'Save and return to dashboard' - Then I should see the following error messages: - | The rate must be a number, like 0.26 or 1 | - - Examples: - | field | - | C.6 Security, access and intruder systems maintenance | - | F.8 Trolley service | - | I.1 Reception service | - - Scenario Outline: Additional services price - validation - Given I enter the servie rate of '' for '' - And I click on 'Save and return to dashboard' - Then I should see the following error messages: - | | - - Examples: - | value | field | error_message | - | Nia | N.1 Helpdesk services | The rate must be a number, like 0.26 or 1 | - | 1.098 | M.1 CAFM system | The rate must be less than or equal to 1 | - - Scenario Outline: Variance validation - Given I enter the variance of '' for '' - And I click on 'Save and return to dashboard' - Then I should see the following error messages: - | | - - Examples: - | value | field | error_message | - | Tora | Cleaning consumables per building user (£) | The rate must be a number, like 0.26 or 1 | - | 2 | Corporate overhead (%) | The rate must be less than or equal to 1 | diff --git a/features/facilities_management/rm3830/admin/assessed_value/validations/call_off_benchmark_rates_validations.feature b/features/facilities_management/rm3830/admin/assessed_value/validations/call_off_benchmark_rates_validations.feature deleted file mode 100644 index 5e25388511..0000000000 --- a/features/facilities_management/rm3830/admin/assessed_value/validations/call_off_benchmark_rates_validations.feature +++ /dev/null @@ -1,40 +0,0 @@ -Feature: Call-off benchmark rates - validations - - Background: Navigate to the call-off benchmark rates page - Given I sign in as an admin and navigate to the 'RM3830' dashboard - And I click on 'Call-off benchmark rates' - Then I am on the 'Call-off benchmark rates' page - - Scenario Outline: Service price - validation - Given I enter the servie rate of 'Rex' for '' standard '' - And I click on 'Save and return to dashboard' - Then I should see the following error messages: - | The rate must be a number, like 0.26 or 1 | - - Examples: - | field | standard | - | Building management system (BMS) maintenance | A | - | Deep (periodic) cleaning | B | - | Cleaning of external areas | C | - - Scenario Outline: Additional services price - validation - Given I enter the servie rate of '' for '' standard '' - And I click on 'Save and return to dashboard' - Then I should see the following error messages: - | | - - Examples: - | value | field | error_message | - | Nia | Helpdesk services | The rate must be a number, like 0.26 or 1 | - | 1.098 | CAFM system | The rate must be less than or equal to 1 | - - Scenario Outline: Variance validation - Given I enter the variance of '' for '' - And I click on 'Save and return to dashboard' - Then I should see the following error messages: - | | - - Examples: - | value | field | error_message | - | Tora | Cleaning consumables per building user (£) | The rate must be a number, like 0.26 or 1 | - | 2 | Corporate overhead (%) | The rate must be less than or equal to 1 | diff --git a/features/facilities_management/rm3830/home/cookie_settings.feature b/features/facilities_management/rm3830/admin/home/cookie_settings.feature similarity index 92% rename from features/facilities_management/rm3830/home/cookie_settings.feature rename to features/facilities_management/rm3830/admin/home/cookie_settings.feature index 4226ae527a..d29e864266 100644 --- a/features/facilities_management/rm3830/home/cookie_settings.feature +++ b/features/facilities_management/rm3830/admin/home/cookie_settings.feature @@ -2,9 +2,10 @@ Feature: Cookie settings Background: Go to start page - Given I go to the facilities management RM3830 start page + Given I go to the admin dashboard for 'RM3830' + Then I am on the 'Sign in to the RM3830 administration dashboard' page And the cookie banner 'is' visible - + Scenario: Selecting links in the banner - view cookies When I click on 'View cookies' Then I am on the 'Details about cookies on Crown Marketplace' page @@ -13,8 +14,8 @@ Feature: Cookie settings Scenario: Selecting links in the banner - accept cookies When I click on 'Accept analytics cookies' Then the cookie banner shows I have 'accepted' the cookies - And I click on 'Start now' - Then I am on the 'Sign in to your account' page + And I click on 'Sign in' + Then I am on the 'Sign in to the RM3830 administration dashboard' page And the cookie banner 'is not' visible And the cookies have been saved And the 'ga' cookies have been 'accepted' @@ -23,8 +24,8 @@ Feature: Cookie settings Scenario: Selecting links in the banner - reject cookies When I click on 'Reject analytics cookies' Then the cookie banner shows I have 'rejected' the cookies - And I click on 'Start now' - Then I am on the 'Sign in to your account' page + And I click on 'Sign in' + Then I am on the 'Sign in to the RM3830 administration dashboard' page And the cookie banner 'is not' visible And the cookies have been saved And the 'ga' cookies have been 'rejected' diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/additional_supplier_information.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_details/additional_supplier_information.feature deleted file mode 100644 index 7dd02314b7..0000000000 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/additional_supplier_information.feature +++ /dev/null @@ -1,16 +0,0 @@ -Feature: Additional supplier information - - Scenario: Changing the additional supplier information - Given I sign in as an admin and navigate to the 'RM3830' dashboard - And I click on 'Supplier details' - Then I am on the 'Supplier details' page - And I click on 'Abbott-Dooley' - Then I am on the 'Supplier details' page - And I change the 'DUNS number' for the supplier details - Then I am on the 'Additional supplier information' page - Given I enter '091876561' into the 'DUNS number' field - And I enter 'AB123456' into the 'Company registration number' field - And I click on 'Save and return' - Then I am on the 'Supplier details' page - And the 'DUNS number' is '091876561' on the supplier details page - And the 'Company registration number' is 'AB123456' on the supplier details page \ No newline at end of file diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/changing_supplier_details_for_da_procurement.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_details/changing_supplier_details_for_da_procurement.feature deleted file mode 100644 index 387316975b..0000000000 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/changing_supplier_details_for_da_procurement.feature +++ /dev/null @@ -1,78 +0,0 @@ -Feature: Changing the supplier details and seeing how they affect procurements - - Background: I sign in and have procurements - Given I sign in as an admin and navigate to the 'RM3830' dashboard - And I have direct award procurements - - Scenario: Changing the supplier details and checking DA procuremnets - And I go to the buyer dashboard - And I click on 'Continue a procurement' - And I click on 'Contract sent' - Then I am on the 'Contract summary' page - And the supplier name is 'Abernathy and Sons' - And the supplier details are: - | Name: Drema Alvin | - | Telephone: 01440 603986 | - | abernathy-and-sons@yopmail.com | - | Address: 2 Thirteenth Avenue, Liversedge WF15 8LG | - Given I go to the admin dashboard for 'RM3830' - And I click on 'Supplier details' - Then I am on the 'Supplier details' page - And I click on 'Abernathy and Sons' - Then I am on the 'Supplier details' page - When I change the 'Supplier name' for the supplier details - Then I am on the 'Supplier name' page - And I enter 'The Argentum trade guild' into the 'Supplier name' field - And I click on 'Save and return' - And I am on the 'Supplier details' page - When I change the 'Contact name' for the supplier details - And I am on the 'Supplier contact information' page - Given I enter 'Bana' into the 'Contact name' field - And I enter 'argentum.enquiries@noppontrade.com' into the 'Contact email' field - And I enter '01603 456 871' into the 'Contact telephone number' field - And I click on 'Save and return' - Then I am on the 'Supplier details' page - When I change the 'Full address' for the supplier details - Then I am on the 'Supplier address' page - And I enter the following details into the form: - | Building and street | Goldmouth Warehouse | - | Town or city | Argentum | - | Postcode | AA1 1AA | - And I click on 'Save and return' - Then I am on the 'Supplier details' page - Given I go to the buyer dashboard - And I click on 'Continue a procurement' - And I click on 'Contract sent' - Then I am on the 'Contract summary' page - And the supplier name is 'The Argentum trade guild' - And the supplier details are: - | Name: Bana | - | Telephone: 01603 456 871 | - | argentum.enquiries@noppontrade.com | - | Address: Goldmouth Warehouse, Argentum AA1 1AA | - - Scenario: Changing the supplier and checking the supplier account - Given I logout and sign in the supplier 'abernathy-and-sons@yopmail.com' - Then I should see the following contracts on the dashboard in the section: - | Received offers | Contract sent | - | Accepted offers | Contract accepted | - | Contracts | Contract signed | - | Closed | Contract declined | - Given I sign out and sign in the admin user - And I click on 'Supplier details' - Then I am on the 'Supplier details' page - And I click on 'Abernathy and Sons' - Then I am on the 'Supplier details' page - And I change the 'Current user' for the supplier details - Then I am on the 'Supplier user account' page - Given I enter the user email into the user email field - And I click on 'Save and return' - Then I am on the 'Supplier details' page - And I navigate to the supplier dashboard - Then I should see the following contracts on the dashboard in the section: - | Received offers | Contract sent | - | Accepted offers | Contract accepted | - | Contracts | Contract signed | - | Closed | Contract declined | - Given I logout and sign in the supplier again - Then I should not see any contracts diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/current_user.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_details/current_user.feature deleted file mode 100644 index e42b34ac28..0000000000 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/current_user.feature +++ /dev/null @@ -1,14 +0,0 @@ -Feature: Current user - - Scenario: Changing the current user - Given I sign in as an admin and navigate to the 'RM3830' dashboard - And I click on 'Supplier details' - Then I am on the 'Supplier details' page - And I click on 'Abbott-Dooley' - Then I am on the 'Supplier details' page - And I change the 'Current user' for the supplier details - Then I am on the 'Supplier user account' page - Given I enter the user email into the user email field - And I click on 'Save and return' - Then I am on the 'Supplier details' page - And the current user has the user email diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/supplier_address.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_details/supplier_address.feature deleted file mode 100644 index 379d14191b..0000000000 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/supplier_address.feature +++ /dev/null @@ -1,17 +0,0 @@ -Feature: Supplier address - - Scenario: Changing the supplier address - Given I sign in as an admin and navigate to the 'RM3830' dashboard - And I click on 'Supplier details' - Then I am on the 'Supplier details' page - And I click on 'Abbott-Dooley' - Then I am on the 'Supplier details' page - And I change the 'Full address' for the supplier details - Then I am on the 'Supplier address' page - And I enter the following details into the form: - | Building and street | Goldmouth Warehouse | - | Town or city | Argentum | - | Postcode | AA1 1AA | - And I click on 'Save and return' - Then I am on the 'Supplier details' page - And the 'Full address' is 'Goldmouth Warehouse, Argentum AA1 1AA' on the supplier details page \ No newline at end of file diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/supplier_contact_information.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_details/supplier_contact_information.feature deleted file mode 100644 index e2eec6cc91..0000000000 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/supplier_contact_information.feature +++ /dev/null @@ -1,18 +0,0 @@ -Feature: Supplier contact information - - Scenario: Changing the contact information - Given I sign in as an admin and navigate to the 'RM3830' dashboard - And I click on 'Supplier details' - Then I am on the 'Supplier details' page - And I click on 'Abbott-Dooley' - Then I am on the 'Supplier details' page - And I change the 'Contact name' for the supplier details - Then I am on the 'Supplier contact information' page - Given I enter 'Bana' into the 'Contact name' field - And I enter 'argentum.enquiries@noppontrade.com' into the 'Contact email' field - And I enter '01603 456 871' into the 'Contact telephone number' field - And I click on 'Save and return' - Then I am on the 'Supplier details' page - And the 'Contact name' is 'Bana' on the supplier details page - And the 'Contact email' is 'argentum.enquiries@noppontrade.com' on the supplier details page - And the 'Contact telephone number' is '01603 456 871' on the supplier details page diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/supplier_details.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_details/supplier_details.feature index a3686dab42..9fed4bf889 100644 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/supplier_details.feature +++ b/features/facilities_management/rm3830/admin/supplier_data/supplier_details/supplier_details.feature @@ -15,22 +15,3 @@ Feature: Supplier details | text | page | | Home | RM3830 administration dashboard | | Supplier details | Supplier details | - - Scenario: Return links on pages - And I change the '' for the supplier details - Then I am on the '' page - Given I click on '' - Then I am on the 'Supplier details' page - - Examples: - | supplier_detail | current_page | text | - | Current user | Supplier user account | Ullrich, Ratke and Botsford | - | Current user | Supplier user account | Cancel and return to the supplier details | - | Supplier name | Supplier name | Ullrich, Ratke and Botsford | - | Supplier name | Supplier name | Cancel and return to the supplier details | - | Contact name | Supplier contact information | Ullrich, Ratke and Botsford | - | Contact name | Supplier contact information | Cancel and return to the supplier details | - | DUNS number | Additional supplier information | Ullrich, Ratke and Botsford | - | DUNS number | Additional supplier information | Cancel and return to the supplier details | - | Full address | Supplier address | Ullrich, Ratke and Botsford | - | Full address | Supplier address | Cancel and return to the supplier details | diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/supplier_details_framework_expired.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_details/supplier_details_framework_expired.feature index fa3b04941f..1386dfa9b5 100644 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/supplier_details_framework_expired.feature +++ b/features/facilities_management/rm3830/admin/supplier_data/supplier_details/supplier_details_framework_expired.feature @@ -10,3 +10,11 @@ Feature: Supplier details - Framework expired And I should see the following warning text: | The RM3830 has expired, you cannot update the supplier's details. | And I cannot change the supplier details + And the 'Current user' is 'None' on the supplier details page + And the 'Supplier name' is 'Ullrich, Ratke and Botsford' on the supplier details page + And the 'Contact name' is 'Soila Provenzano' on the supplier details page + And the 'Contact email' is 'ullrich-ratke-botsford@yopmail.com' on the supplier details page + And the 'Contact telephone number' is '01322 682761' on the supplier details page + And the 'DUNS number' is '921087777' on the supplier details page + And the 'Company registration number' is '689657' on the supplier details page + And the 'Full address' is '104 Moseley Wood Gardens, Leeds LS16 7HU' on the supplier details page diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/supplier_name.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_details/supplier_name.feature deleted file mode 100644 index 3e50e1926c..0000000000 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/supplier_name.feature +++ /dev/null @@ -1,43 +0,0 @@ -Feature: Supplier name - - Background: Sign in - Given I sign in as an admin and navigate to the 'RM3830' dashboard - - Scenario: Changing the name is saved - And I click on 'Supplier details' - Then I am on the 'Supplier details' page - And I click on 'Abbott-Dooley' - Then I am on the 'Supplier details' page - And I change the 'Supplier name' for the supplier details - Then I am on the 'Supplier name' page - And I enter 'The Argentum trade guild' into the 'Supplier name' field - And I click on 'Save and return' - Then I am on the 'Supplier details' page - And the 'Supplier name' is 'The Argentum trade guild' on the supplier details page - - Scenario Outline: Change supplier name changes in results - Given I go to a quick view with the following services and regions: - | C.1 | UKD3 | - | C.2 | | - Then '' is a supplier in Sub-lot '1a' - Given I go to the admin dashboard for 'RM3830' - And I click on 'Supplier details' - Then I am on the 'Supplier details' page - And I click on '' - Then I am on the 'Supplier details' page - And I change the 'Supplier name' for the supplier details - Then I am on the 'Supplier name' page - And I enter 'New supplier' into the 'Supplier name' field - And I click on 'Save and return' - Then I am on the 'Supplier details' page - Then I go to a quick view with the following services and regions: - | C.1 | UKD3 | - | C.2 | | - Then '' is not a supplier in Sub-lot '1a' - And 'New supplier' is a supplier in Sub-lot '1a' - - Examples: - | supplier_name | - | Cartwright and Sons | - | Dare, Heaney and Kozey | - | Wolf-Wiza | diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/validations/additional_supplier_information_validations.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_details/validations/additional_supplier_information_validations.feature deleted file mode 100644 index 4cd44ded2e..0000000000 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/validations/additional_supplier_information_validations.feature +++ /dev/null @@ -1,36 +0,0 @@ -Feature: Supplier contact information - validations - - Background: Navigate to the additional supplier information section - Given I sign in as an admin and navigate to the 'RM3830' dashboard - And I click on 'Supplier details' - Then I am on the 'Supplier details' page - And I click on 'Kemmer Group' - Then I am on the 'Supplier details' page - And I change the 'DUNS number' for the supplier details - Then I am on the 'Additional supplier information' page - - Scenario Outline: DUNS number validation - Given I enter '' into the 'DUNS number' field - And I click on 'Save and return' - Then I should see the following error messages: - | | - - Examples: - | duns_number | error_message | - | | Enter the DUNS number | - | fakeduns | Enter the DUNS number in the correct format with 9 digits, for example 214567885 | - | 12345678 | Enter the DUNS number in the correct format with 9 digits, for example 214567885 | - - Scenario Outline: Company registration number - Given I enter '' into the 'Company registration number' field - And I click on 'Save and return' - Then I should see the following error messages: - | | - - Examples: - | crn | error_message | - | | Enter the company registration number | - | fafecrn | Enter the company registration number in the correct format, for example AC123456 | - | A1234567 | Enter the company registration number in the correct format, for example AC123456 | - | ABC12345 | Enter the company registration number in the correct format, for example AC123456 | - | ac123456 | Enter the company registration number in the correct format, for example AC123456 | \ No newline at end of file diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/validations/current_user_validations.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_details/validations/current_user_validations.feature deleted file mode 100644 index 5778d5c15c..0000000000 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/validations/current_user_validations.feature +++ /dev/null @@ -1,25 +0,0 @@ -Feature: Current user - validations - - Background: Navigate to the current user section - Given other user accounts exist - Given I sign in as an admin and navigate to the 'RM3830' dashboard - And I click on 'Supplier details' - Then I am on the 'Supplier details' page - And I click on 'Dare, Heaney and Kozey' - Then I am on the 'Supplier details' page - And I change the 'Current user' for the supplier details - Then I am on the 'Supplier user account' page - - Scenario Outline: Contact user email validation - Given I enter '' into the 'User email' field - And I click on 'Save and return' - Then I should see the following error messages: - | | - - Examples: - | user_email | error_message | - | | Enter an email address in the correct format, for example name@organisation.gov.uk | - | fakeemail | Enter an email address in the correct format, for example name@organisation.gov.uk | - | test@test.com | The supplier must be registered with the facilities management service | - | buyer@test.com | The user must have supplier access | - | othersupplier@test.com | The user cannot belong to another supplier | diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/validations/supplier_address_validations.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_details/validations/supplier_address_validations.feature deleted file mode 100644 index 30aab1f1d4..0000000000 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/validations/supplier_address_validations.feature +++ /dev/null @@ -1,34 +0,0 @@ -Feature: Supplier address - validations - - Background: Navigate to the supplier address section - Given I sign in as an admin and navigate to the 'RM3830' dashboard - And I click on 'Supplier details' - Then I am on the 'Supplier details' page - And I click on 'Shields, Ratke and Parisian' - Then I am on the 'Supplier details' page - And I change the 'Full address' for the supplier details - Then I am on the 'Supplier address' page - - Scenario: Full address - nothing entered - And I enter the following details into the form: - | Building and street | | - | Town or city | | - And I click on 'Save and return' - Then I should see the following error messages: - | Enter the building or street name | - | Enter the town or city | - - Scenario Outline: Full address - postcode validation - And I enter the following details into the form: - | Building and street | 112 Test street | - | Town or city | Westminister | - | Postcode | | - And I click on 'Save and return' - Then I should see the following error messages: - | Enter a valid postcode, for example SW1A 1AA | - - Examples: - | postocde | - | | - | toast | - | A1111A | \ No newline at end of file diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/validations/supplier_contact_information_validations.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_details/validations/supplier_contact_information_validations.feature deleted file mode 100644 index b85f1c465b..0000000000 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/validations/supplier_contact_information_validations.feature +++ /dev/null @@ -1,39 +0,0 @@ -Feature: Supplier contact information - validations - - Background: Navigate to the supplier contact informatin section - Given I sign in as an admin and navigate to the 'RM3830' dashboard - And I click on 'Supplier details' - Then I am on the 'Supplier details' page - And I click on 'Bogan-Koch' - Then I am on the 'Supplier details' page - And I change the 'Contact name' for the supplier details - Then I am on the 'Supplier contact information' page - - Scenario: Contact name validation - Given I enter '' into the 'Contact name' field - And I click on 'Save and return' - Then I should see the following error messages: - | You must enter a name for the contact | - - Scenario Outline: Contact email validation - Given I enter '' into the 'Contact email' field - And I click on 'Save and return' - Then I should see the following error messages: - | | - - Examples: - | contact_email | error_message | - | | Enter an email address in the correct format, for example name@organisation.gov.uk | - | fakeemail | Enter an email address in the correct format, for example name@organisation.gov.uk | - - Scenario Outline: Contact telephone number validation - Given I enter '' into the 'Contact telephone number' field - And I click on 'Save and return' - Then I should see the following error messages: - | | - - Examples: - | contact_telephone_number | error_message | - | | You must enter a telephone number for the contact | - | fakenumber | Enter a UK telephone number, for example 020 7946 0000 | - | 01702 123 456 789 | Enter a UK telephone number, for example 020 7946 0000 | diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/validations/supplier_name_validations.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_details/validations/supplier_name_validations.feature deleted file mode 100644 index 31288079a0..0000000000 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_details/validations/supplier_name_validations.feature +++ /dev/null @@ -1,21 +0,0 @@ -Feature: Supplier name - validations - - Background: Navigate to the supplier name section - Given I sign in as an admin and navigate to the 'RM3830' dashboard - And I click on 'Supplier details' - Then I am on the 'Supplier details' page - And I click on 'Abbott-Dooley' - Then I am on the 'Supplier details' page - And I change the 'Supplier name' for the supplier details - Then I am on the 'Supplier name' page - - Scenario Outline: Validate supplier name - And I enter '' into the 'Supplier name' field - And I click on 'Save and return' - Then I should see the following error messages: - | | - - Examples: - | supplier_name | error_message | - | | You must enter a supplier name | - | Bernier-Cassin | A supplier with this name already exists | \ No newline at end of file diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/prices_and_variance.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/prices_and_variance.feature deleted file mode 100644 index f259aa0fd6..0000000000 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/prices_and_variance.feature +++ /dev/null @@ -1,58 +0,0 @@ -Feature: Prices and variance - - Scenario: Changing the supplier values changes the results - Given I sign in as an admin and navigate to the 'RM3830' dashboard - Given I have a procurement in detailed search named 'AV Procurement' with the following services and multiple buildings: - | C.1 | - | G.1 | - | I.1 | - | K.2 | - | M.1 | - | N.1 | - And I go to the buyer dashboard - And I click on 'Continue a procurement' - And I click on 'AV Procurement' - Then I am on the 'Requirements' page - And I enter the service requirements for 'Test building' in the assessed value procurement - And I enter the service requirements for 'Test London building' in the assessed value procurement - And I click on 'Continue to results' - Then I am on the 'Results' page - And the assessed value is '£283,250.47' - Given I select 'direct award' on results - And I click on 'Continue' - Then I am on the 'Direct award pricing' page - And the selected supplier is 'Kunze, Langworth and Parisian' - And I click on 'Return to results' - Then I am on the 'Results' page - And I click on 'Change requirements' - Then I am on the 'Requirements' page - And I go to the admin dashboard for 'RM3830' - And I click on 'Supplier framework data' - Then I am on the 'Supplier framework data' page - Given I show all sections - And select 'Services' for sublot '1a' for 'Kunze, Langworth and Parisian' - Then I am on the 'Sub-lot 1a services, prices, and variances' page - And I enter '2.4867' into the price for 'C.1 Mechanical and electrical engineering maintenance' under 'Warehouses' - And I enter '2.4867' into the price for 'C.1 Mechanical and electrical engineering maintenance' under 'Primary School' - And I enter '19.74' into the price for 'G.1 Routine cleaning' under 'Warehouses' - And I enter '22.3' into the price for 'G.1 Routine cleaning' under 'Primary School' - And I enter '11.67' into the price for 'I.1 Reception service' under 'Warehouses' - And I enter '11.67' into the price for 'I.1 Reception service' under 'Primary School' - And I enter '165.0' into the price for 'K.2 General waste' under 'Warehouses' - And I enter '174.0' into the price for 'K.2 General waste' under 'Primary School' - And I enter '0.003' into the price for 'M.1 CAFM system' under 'Warehouses' - And I enter '0.018' into the price for 'N.1 Helpdesk services' under 'Primary School' - And I enter '0.202' into the variance for 'London location percentage variance (%)' - And I click on 'Save and return to supplier framework data' - Then I am on the 'Supplier framework data' page - And I go to the buyer dashboard - And I click on 'Continue a procurement' - And I click on 'AV Procurement' - Then I am on the 'Requirements' page - And I click on 'Continue to results' - Then I am on the 'Results' page - And the assessed value is '£304,354.31' - Given I select 'direct award' on results - And I click on 'Continue' - Then I am on the 'Direct award pricing' page - And the selected supplier is 'Kemmer Group' \ No newline at end of file diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/region_selection_adding_regions.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/region_selection_adding_regions.feature deleted file mode 100644 index 962c502704..0000000000 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/region_selection_adding_regions.feature +++ /dev/null @@ -1,61 +0,0 @@ -Feature: Adding regions for suppliers on the admin tool - - Background: - Given I sign in as an admin and navigate to the 'RM3830' dashboard - - Scenario: Selecting a service for lot 1a - Given I go to a quick view with the following services and regions: - | C.1 | UKC2 | - | C.2 | | - Then 'Cartwright and Sons' is not a supplier in Sub-lot '1a' - Given I go to the admin dashboard for 'RM3830' - And I click on 'Supplier framework data' - Then I am on the 'Supplier framework data' page - And select 'Regions' for sublot '1a' for 'Cartwright and Sons' - Then I am on the 'Sub-lot 1a regions' page - And I select the following items: - | Northumberland and Tyne and Wear | - And I click on 'Save and return to supplier framework data' - Then I am on the 'Supplier framework data' page - Then I go to a quick view with the following services and regions: - | C.1 | UKC2 | - | C.2 | | - And 'Cartwright and Sons' is a supplier in Sub-lot '1a' - - Scenario: Selecting a service for lot 1b - Given I go to a quick view with the following services and regions: - | C.1 | UKH1 | - | C.2 | | - Then 'Hickle-Schinner' is not a supplier in Sub-lot '1b' - Given I go to the admin dashboard for 'RM3830' - And I click on 'Supplier framework data' - Then I am on the 'Supplier framework data' page - And select 'Regions' for sublot '1b' for 'Hickle-Schinner' - Then I am on the 'Sub-lot 1b regions' page - And I select the following items: - | East Anglia | - And I click on 'Save and return to supplier framework data' - Then I am on the 'Supplier framework data' page - Then I go to a quick view with the following services and regions: - | C.1 | UKH1 | - | C.2 | | - And 'Hickle-Schinner' is a supplier in Sub-lot '1b' - - Scenario: Selecting a service for lot 1c - Given I go to a quick view with the following services and regions: - | C.1 | UKM65 | - | C.2 | | - Then 'Krajcik-Gibson' is not a supplier in Sub-lot '1c' - Given I go to the admin dashboard for 'RM3830' - And I click on 'Supplier framework data' - Then I am on the 'Supplier framework data' page - And select 'Regions' for sublot '1c' for 'Krajcik-Gibson' - Then I am on the 'Sub-lot 1c regions' page - And I select the following items: - | Orkney Islands | - And I click on 'Save and return to supplier framework data' - Then I am on the 'Supplier framework data' page - Then I go to a quick view with the following services and regions: - | C.1 | UKM65 | - | C.2 | | - And 'Krajcik-Gibson' is a supplier in Sub-lot '1c' \ No newline at end of file diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/region_selection_removing_region.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/region_selection_removing_region.feature deleted file mode 100644 index 91e8a07eea..0000000000 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/region_selection_removing_region.feature +++ /dev/null @@ -1,61 +0,0 @@ -Feature: Removing regions for suppliers on the admin tool - - Background: - Given I sign in as an admin and navigate to the 'RM3830' dashboard - - Scenario: Deselecting a service for lot 1a - Given I go to a quick view with the following services and regions: - | C.1 | UKD3 | - | C.2 | | - Then 'Bode and Sons' is a supplier in Sub-lot '1a' - Given I go to the admin dashboard for 'RM3830' - And I click on 'Supplier framework data' - Then I am on the 'Supplier framework data' page - And select 'Regions' for sublot '1a' for 'Bode and Sons' - Then I am on the 'Sub-lot 1a regions' page - And I deselect the following items: - | Greater Manchester | - And I click on 'Save and return to supplier framework data' - Then I am on the 'Supplier framework data' page - Then I go to a quick view with the following services and regions: - | C.1 | UKD3 | - | C.2 | | - And 'Bode and Sons' is not a supplier in Sub-lot '1a' - - Scenario: Deselecting a service for lot 1b - Given I go to a quick view with the following services and regions: - | C.1 | UKH1 | - | C.2 | | - Then 'Dickens and Sons' is a supplier in Sub-lot '1b' - Given I go to the admin dashboard for 'RM3830' - And I click on 'Supplier framework data' - Then I am on the 'Supplier framework data' page - And select 'Regions' for sublot '1b' for 'Dickens and Sons' - Then I am on the 'Sub-lot 1b regions' page - And I deselect the following items: - | East Anglia | - And I click on 'Save and return to supplier framework data' - Then I am on the 'Supplier framework data' page - Then I go to a quick view with the following services and regions: - | C.1 | UKH1 | - | C.2 | | - And 'Dickens and Sons' is not a supplier in Sub-lot '1b' - - Scenario: Deselecting a service for lot 1c - Given I go to a quick view with the following services and regions: - | C.1 | UKK1 | - | C.2 | | - Then 'Mann Group' is a supplier in Sub-lot '1c' - Given I go to the admin dashboard for 'RM3830' - And I click on 'Supplier framework data' - Then I am on the 'Supplier framework data' page - And select 'Regions' for sublot '1c' for 'Mann Group' - Then I am on the 'Sub-lot 1c regions' page - And I deselect the following items: - | Gloucestershire, Wiltshire and Bristol/Bath area | - And I click on 'Save and return to supplier framework data' - Then I am on the 'Supplier framework data' page - Then I go to a quick view with the following services and regions: - | C.1 | UKK1 | - | C.2 | | - And 'Mann Group' is not a supplier in Sub-lot '1c' diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/service_selection_adding_services.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/service_selection_adding_services.feature deleted file mode 100644 index a1adfe59dc..0000000000 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/service_selection_adding_services.feature +++ /dev/null @@ -1,64 +0,0 @@ -Feature: Adding services for suppliers on the admin tool - - Background: - Given I sign in as an admin and navigate to the 'RM3830' dashboard - - Scenario: Selecting a service for lot 1a - Given I go to a quick view with the following services and regions: - | D.3 | UKC1 | - | | UKC2 | - Then 'Shields, Ratke and Parisian' is not a supplier in Sub-lot '1a' - Given I go to the admin dashboard for 'RM3830' - And I click on 'Supplier framework data' - Then I am on the 'Supplier framework data' page - Given I show all sections - And select 'Services' for sublot '1a' for 'Shields, Ratke and Parisian' - Then I am on the 'Sub-lot 1a services, prices, and variances' page - And I select the following items: - | D.3 Professional snow & ice clearance | - And I click on 'Save and return to supplier framework data' - Then I am on the 'Supplier framework data' page - Then I go to a quick view with the following services and regions: - | D.3 | UKC1 | - | | UKC2 | - And 'Shields, Ratke and Parisian' is a supplier in Sub-lot '1a' - - Scenario: Selecting a service for lot 1b - Given I go to a quick view with the following services and regions: - | L.5 | UKC1 | - | | UKC2 | - Then 'Rowe, Hessel and Heller' is not a supplier in Sub-lot '1b' - Given I go to the admin dashboard for 'RM3830' - And I click on 'Supplier framework data' - Then I am on the 'Supplier framework data' page - Given I show all sections - And select 'Services' for sublot '1b' for 'Rowe, Hessel and Heller' - Then I am on the 'Sub-lot 1b services' page - And I select the following items: - | L.5 Flag flying service | - And I click on 'Save and return to supplier framework data' - Then I am on the 'Supplier framework data' page - Then I go to a quick view with the following services and regions: - | L.5 | UKC1 | - | | UKC2 | - And 'Rowe, Hessel and Heller' is a supplier in Sub-lot '1b' - - Scenario: Selecting a service for lot 1c - Given I go to a quick view with the following services and regions: - | F.3 | UKC1 | - | | UKC2 | - Then 'Mayert, Kohler and Schowalter' is not a supplier in Sub-lot '1c' - Given I go to the admin dashboard for 'RM3830' - And I click on 'Supplier framework data' - Then I am on the 'Supplier framework data' page - Given I show all sections - And select 'Services' for sublot '1c' for 'Mayert, Kohler and Schowalter' - Then I am on the 'Sub-lot 1c services' page - And I select the following items: - | F.3 Deli/coffee bar | - And I click on 'Save and return to supplier framework data' - Then I am on the 'Supplier framework data' page - Then I go to a quick view with the following services and regions: - | F.3 | UKC1 | - | | UKC2 | - And 'Mayert, Kohler and Schowalter' is a supplier in Sub-lot '1c' \ No newline at end of file diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/service_selection_removing_services.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/service_selection_removing_services.feature deleted file mode 100644 index f69eac8d88..0000000000 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/service_selection_removing_services.feature +++ /dev/null @@ -1,61 +0,0 @@ -Feature: Removing services for suppliers on the admin tool - - Background: - Given I sign in as an admin and navigate to the 'RM3830' dashboard - - Scenario: Deselecting a service for lot 1a - Given I go to a quick view with the following services and regions: - | C.1 | UKC1 | - | | UKC2 | - Then 'Abernathy and Sons' is a supplier in Sub-lot '1a' - Given I go to the admin dashboard for 'RM3830' - And I click on 'Supplier framework data' - Then I am on the 'Supplier framework data' page - And select 'Services' for sublot '1a' for 'Abernathy and Sons' - Then I am on the 'Sub-lot 1a services, prices, and variances' page - And I deselect the following items: - | C.1 Mechanical and electrical engineering maintenance | - And I click on 'Save and return to supplier framework data' - Then I am on the 'Supplier framework data' page - Then I go to a quick view with the following services and regions: - | C.1 | UKC1 | - | | UKC2 | - And 'Abernathy and Sons' is not a supplier in Sub-lot '1a' - - Scenario: Deselecting a service for lot 1b - Given I go to a quick view with the following services and regions: - | D.2 | UKI6 | - | | UKI7 | - Then 'Treutel LLC' is a supplier in Sub-lot '1b' - Given I go to the admin dashboard for 'RM3830' - And I click on 'Supplier framework data' - Then I am on the 'Supplier framework data' page - And select 'Services' for sublot '1b' for 'Treutel LLC' - Then I am on the 'Sub-lot 1b services' page - And I deselect the following items: - | D.2 Tree surgery (arboriculture) | - And I click on 'Save and return to supplier framework data' - Then I am on the 'Supplier framework data' page - Then I go to a quick view with the following services and regions: - | D.2 | UKI6 | - | | UKI7 | - And 'Treutel LLC' is not a supplier in Sub-lot '1b' - - Scenario: Deselecting a service for lot 1c - Given I go to a quick view with the following services and regions: - | K.1 | UKC1 | - | | UKC2 | - Then 'Dickens and Sons' is a supplier in Sub-lot '1c' - Given I go to the admin dashboard for 'RM3830' - And I click on 'Supplier framework data' - Then I am on the 'Supplier framework data' page - And select 'Services' for sublot '1c' for 'Dickens and Sons' - Then I am on the 'Sub-lot 1c services' page - And I deselect the following items: - | K.1 Classified waste | - And I click on 'Save and return to supplier framework data' - Then I am on the 'Supplier framework data' page - Then I go to a quick view with the following services and regions: - | K.1 | UKC1 | - | | UKC2 | - And 'Dickens and Sons' is not a supplier in Sub-lot '1c' diff --git a/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/validations/prices_and_variance_validations.feature b/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/validations/prices_and_variance_validations.feature deleted file mode 100644 index 11dda50990..0000000000 --- a/features/facilities_management/rm3830/admin/supplier_data/supplier_framework_data/validations/prices_and_variance_validations.feature +++ /dev/null @@ -1,83 +0,0 @@ -Feature: Prices and variance - validations - - Background: Navigate to the services and prices page - Given I sign in as an admin and navigate to the 'RM3830' dashboard - And I click on 'Supplier framework data' - Then I am on the 'Supplier framework data' page - Given I show all sections - And select 'Services' for sublot '1a' for 'Halvorson, Corwin and O\'Connell' - Then I am on the 'Sub-lot 1a services, prices, and variances' page - - Scenario Outline: Direct award discount validations - Given I enter '' into the Direct award discount filed for 'C.1 Mechanical and electrical engineering maintenance' - And I click on 'Save and return to supplier framework data' - Then I should see the following error messages: - | | - - Examples: - | da_discount | error_message | - | hello | The rate must be a number, like 0.26 or 1 | - | -0.5 | The rate must be greater than or equal to 0 | - | 1.001 | The rate must be less than or equal to 1 | - | 0.012345670000000000001 | The rate muse not have more than 20 decimal places | - - - Scenario Outline: Variances (%) validations - Given I enter '' into the variance for 'Corporate overhead (%)' - And I click on 'Save and return to supplier framework data' - Then I should see the following error messages: - | | - - Examples: - | variance | error_message | - | hello | The rate must be a number, like 0.26 or 1 | - | -0.5 | The rate must be greater than or equal to 0 | - | 1.001 | The rate must be less than or equal to 1 | - | 0.012345670000000000001 | The rate muse not have more than 20 decimal places | - - - Scenario Outline: Variances (£) validations - Given I enter '' into the variance for 'Cleaning consumables per building user (£) ' - And I click on 'Save and return to supplier framework data' - Then I should see the following error messages: - | | - - Examples: - | variance | error_message | - | hello | The rate must be a number, like 0.26 or 1 | - | -0.5 | The rate must be greater than or equal to 0 | - - Scenario Outline: Service price validations - not a number - Given I enter 'hello' into the price for '' under '' - And I click on 'Save and return to supplier framework data' - Then I should see the following error messages: - | | - - Examples: - | service | building_type | error_message | - | C.5 Lifts, hoists & conveyance systems maintenance | Special Schools | The rate must be a number, like 0.26 or 1 | - | G.6 Window cleaning (internal) | Warehouses | The rate must be a number, like 0.26 or 1 | - | J.1 Manned guarding service | Universities and Colleges | The rate must be a number, like 0.26 or 1 | - - Scenario Outline: Service price validations - less than 0 - Given I enter '-0.5' into the price for '' under '' - And I click on 'Save and return to supplier framework data' - Then I should see the following error messages: - | | - - Examples: - | service | building_type | error_message | - | C.5 Lifts, hoists & conveyance systems maintenance | Special Schools | The rate must be greater than or equal to 0 | - | G.6 Window cleaning (internal) | Warehouses | The rate must be greater than or equal to 0 | - | J.1 Manned guarding service | Universities and Colleges | The rate must be greater than or equal to 0 | - - Scenario Outline: Additional services validations - Given I enter '1.01' into the price for '' under '' - And I click on 'Save and return to supplier framework data' - Then I should see the following error messages: - | | - - Examples: - | service | building_type | error_message | - | M.1 CAFM system | Community - Doctors, Dentist, Health Clinic | The rate must be less than or equal to 1 | - | N.1 Helpdesk services | Restaurant and Catering Facilities | The rate must be less than or equal to 1 | \ No newline at end of file diff --git a/features/facilities_management/rm3830/buildings/buildings.feature b/features/facilities_management/rm3830/buildings/buildings.feature deleted file mode 100644 index 0567406e32..0000000000 --- a/features/facilities_management/rm3830/buildings/buildings.feature +++ /dev/null @@ -1,190 +0,0 @@ -@javascript -Feature: Buildings - - Background: - Given I sign in and navigate to my account for 'RM3830' - And I click on 'Manage my buildings' - Then I am on the 'Buildings' page - - @add_address - Scenario: Add a Building - no region selection - And I click on 'Add a building' - Then I am on the 'Add a building' page - And I enter 'New building' for the building name - And I enter the following details into the form: - | Postcode | ST16 1AA | - And I click on 'Find address' - And I select 'Stafford Delivery Office, Newport Road, Stafford' from the address drop down - Then the address 'Stafford Delivery Office, Newport Road, Stafford ST16 1AA' is displayed - And the region 'Shropshire and Staffordshire' is displayed - And I can't change the region - Then I click on 'Save and continue' - Then I am on the 'Internal and external areas' page - - Scenario: Add a Building - region selection - And I click on 'Add a building' - Then I am on the 'Add a building' page - And I enter 'New building' for the building name - And I enter the following details into the form: - | Postcode | LU6 1GQ | - And I click on 'Find address' - And I select '10 Sidings Way, Dunstable' from the address drop down - And I select 'Bedfordshire and Hertfordshire' from the region drop down - Then the address '10 Sidings Way, Dunstable LU6 1GQ' is displayed - And the region 'Bedfordshire and Hertfordshire' is displayed - And I can change the region - And I click on 'Save and continue' - Then I am on the 'Internal and external areas' page - - @add_address - Scenario: Add Address manually - no region selection - And I click on 'Add a building' - Then I am on the 'Add a building' page - And I enter 'New building' for the building name - And I enter the following details into the form: - | Postcode | ST16 1AA | - And I click on 'Find address' - And I click on 'I can’t find my building’s address in the list' - And I enter the following details into the form: - | Building and street line 1 of 2 | 112 Test street | - | Building and street line 2 of 2 (optional) | Zone 7 | - | Town or city | Westminister | - | Postcode | ST16 1AA | - And I click on 'Save and continue' - Then I am on the 'Add a building' page - Then the address '112 Test street, Zone 7, Westminister ST16 1AA' is displayed - And the region 'Shropshire and Staffordshire' is displayed - And I can't change the region - Then I click on 'Save and continue' - Then I am on the 'Internal and external areas' page - - Scenario: Add Address manually - no region selection - And I click on 'Add a building' - Then I am on the 'Add a building' page - And I enter 'New building' for the building name - And I enter the following details into the form: - | Postcode | ST16 1AA | - And I click on 'Find address' - And I click on 'I can’t find my building’s address in the list' - Then I am on the 'Add building address' page - And the framework is 'RM3830' - And I enter the following details into the form: - | Building and street line 1 of 2 | 1 Windsor Avenue | - | Town or city | Aberdeen | - | Postcode | NW1 4DF | - And I click on 'Save and continue' - Then I am on the 'Add a building' page - Then the address '1 Windsor Avenue, Aberdeen NW1 4DF' is displayed - And I select 'Aberdeen and Aberdeenshire' from the region drop down - And the region 'Aberdeen and Aberdeenshire' is displayed - And I can change the region - Then I click on 'Save and continue' - Then I am on the 'Internal and external areas' page - - @add_address - Scenario: Internal and External Area - external area 0 - And I click on 'Add a building' - Then I am on the 'Add a building' page - And I enter 'New building' for the building name - And I enter the following details into the form: - | Postcode | ST16 1AA | - And I click on 'Find address' - And I select 'Stafford Delivery Office, Newport Road, Stafford' from the address drop down - Then I click on 'Save and continue' - Then I am on the 'Internal and external areas' page - And I enter '300' for the building 'GIA' - And I enter '0' for the building 'external area' - And I click on 'Save and continue' - Then I am on the 'Building type' page - - @add_address - Scenario: Internal and External Area - internal area 0 - And I click on 'Add a building' - Then I am on the 'Add a building' page - And I enter 'New building' for the building name - And I enter the following details into the form: - | Postcode | ST16 1AA | - And I click on 'Find address' - And I select 'Stafford Delivery Office, Newport Road, Stafford' from the address drop down - Then I click on 'Save and continue' - Then I am on the 'Internal and external areas' page - And I enter '0' for the building 'GIA' - And I enter '300' for the building 'external area' - And I click on 'Save and continue' - Then I am on the 'Building type' page - - @add_address - Scenario: Add a building complete journey - And I click on 'Add a building' - Then I am on the 'Add a building' page - And the framework is 'RM3830' - And I enter 'New building' for the building name - And I enter the following details into the form: - | Postcode | ST16 1AA | - And I click on 'Find address' - And I select 'Stafford Delivery Office, Newport Road, Stafford' from the address drop down - Then I click on 'Save and continue' - Then I am on the 'Internal and external areas' page - And the framework is 'RM3830' - And I enter '300' for the building 'GIA' - And I enter '600' for the building 'external area' - And I click on 'Save and continue' - Then I am on the 'Building type' page - And the framework is 'RM3830' - And I select 'General office - customer facing' for the building type - And I click on 'Save and continue' - Then I am on the 'Security clearance' page - And the framework is 'RM3830' - And I select 'Baseline personnel security standard (BPSS)' for the security type - And I click on 'Save and return to building details summary' - Then I am on the buildings summary page for 'New building' - And the framework is 'RM3830' - And my building's 'Name' is 'New building' - And my building's 'Address' is 'Stafford Delivery Office, Newport Road, Stafford' - And my building's 'Region' is 'Shropshire and Staffordshire' - And my building's 'Gross internal area' is '300' - And my building's 'External area' is '600' - And my building's 'Building type' is 'General office - customer facing' - And my building's 'Security clearance' is 'Baseline personnel security standard (BPSS)' - And my building's status is 'COMPLETED' - - @add_address - Scenario: Add a building 1 detail at a time and check completion - And I click on 'Add a building' - Then I am on the 'Add a building' page - And I enter 'Test building' for the building 'name' - And I enter 'My new building' for the building 'description' - And I enter the following details into the form: - | Postcode | ST16 1AA | - And I click on 'Find address' - And I select 'Stafford Delivery Office, Newport Road, Stafford' from the address drop down - Then I click on 'Save and return to building details summary' - Then I am on the buildings summary page for 'Test building' - And my building's 'Name' is 'Test building' - And my building's 'Description' is 'My new building' - And my building's 'Address' is 'Stafford Delivery Office, Newport Road, Stafford' - And my building's status is 'INCOMPLETE' - And I change the 'Gross internal area' - Then I am on the 'Internal and external areas' page - And I enter '123' for the building 'GIA' - And I enter '456' for the building 'external area' - Then I click on 'Save and return to building details summary' - Then I am on the buildings summary page for 'Test building' - And my building's 'Gross internal area' is '123' - And my building's 'External area' is '456' - And my building's status is 'INCOMPLETE' - And I change the 'Building type' - Then I am on the 'Building type' page - And I open the 'View more building types' details - And I select 'Primary school' for the building type - Then I click on 'Save and return to building details summary' - Then I am on the buildings summary page for 'Test building' - And my building's 'Building type' is 'Primary school' - And my building's status is 'INCOMPLETE' - And I change the 'Security clearance' - Then I am on the 'Security clearance' page - And I select 'Developed vetting (DV)' for the security type - And I click on 'Save and return to building details summary' - Then I am on the buildings summary page for 'Test building' - And my building's 'Security clearance' is 'Developed vetting (DV)' - And my building's status is 'COMPLETED' diff --git a/features/facilities_management/rm3830/buildings/review_completed_building.feature b/features/facilities_management/rm3830/buildings/review_completed_building.feature deleted file mode 100644 index c13ca89d90..0000000000 --- a/features/facilities_management/rm3830/buildings/review_completed_building.feature +++ /dev/null @@ -1,60 +0,0 @@ -Feature: Review completed buildings - - Background: - Given I sign in and navigate to my account for 'RM3830' - And I have buildings - And I click on 'Manage my buildings' - Then I am on the 'Buildings' page - And I click on 'Test building' - Then I am on the buildings summary page for 'Test building' - - Scenario: Change links - And I change the 'Name' - Then I am on the 'Building details' page - And I click on 'Save and return to building details summary' - Then I am on the buildings summary page for 'Test building' - And I change the 'Description' - Then I am on the 'Building details' page - And I click on 'Save and return to building details summary' - Then I am on the buildings summary page for 'Test building' - And I change the 'Address' - Then I am on the 'Building details' page - And I click on 'Save and return to building details summary' - Then I am on the buildings summary page for 'Test building' - And I change the 'Gross internal area' - Then I am on the 'Internal and external areas' page - And I click on 'Save and return to building details summary' - Then I am on the buildings summary page for 'Test building' - And I change the 'External area' - Then I am on the 'Internal and external areas' page - And I click on 'Save and return to building details summary' - Then I am on the buildings summary page for 'Test building' - And I change the 'Building type' - Then I am on the 'Building type' page - And I click on 'Save and return to building details summary' - Then I am on the buildings summary page for 'Test building' - And I change the 'Security clearance' - Then I am on the 'Security clearance' page - And I click on 'Save and return to building details summary' - Then I am on the buildings summary page for 'Test building' - - Scenario: Return links - And I change the 'Security clearance' - Then I am on the 'Security clearance' page - And the step is 4 - And I click on 'Return to building type' - Then I am on the 'Building type' page - And the step is 3 - And I click on 'Return to building size' - Then I am on the 'Internal and external areas' page - And the step is 2 - And I click on 'Return to building details' - Then I am on the 'Building details' page - And the step is 1 - And I click on "I can’t find my building’s address in the list" - Then I am on the 'Add building address' page - And the step is 1 - And I click on 'Return to building details' - Then I am on the 'Building details' page - And I click on 'Return to building details summary' - Then I am on the buildings summary page for 'Test building' diff --git a/features/facilities_management/rm3830/buildings/validations/add_a_building_validations.feature b/features/facilities_management/rm3830/buildings/validations/add_a_building_validations.feature deleted file mode 100644 index cee3161e29..0000000000 --- a/features/facilities_management/rm3830/buildings/validations/add_a_building_validations.feature +++ /dev/null @@ -1,78 +0,0 @@ -Feature: Add a building - validations - - Background: Navigate to buildings page - Given I sign in and navigate to my account for 'RM3830' - And I have buildings - And I click on 'Manage my buildings' - Then I am on the 'Buildings' page - And I click on 'Add a building' - Then I am on the 'Add a building' page - - Scenario Outline: Add a building - empty fields - And I click on '' - Then I should see the following error messages: - | Enter a name for your building | - | Enter a valid postcode, like AA1 1AA | - - Examples: - | save_button | - | Save and continue | - | Save and return to building details summary | - - Scenario: Add a building - building name taken - And I enter 'Test building' for the building name - And I click on 'Save and continue' - Then I should see the following error messages: - | This building name is already in use | - | Enter a valid postcode, like AA1 1AA | - - @javascript - Scenario Outline: Add a building - postcode javascript - And I enter 'Test building' for the building name - And I enter the following details into the form: - | Postcode | | - And I click on 'Find address' - Then I should see the postcode error message - - Examples: - | postcode | - | | - | test | - - Scenario: Add a building - postcode backend - And I enter 'New building' for the building name - And I enter the following details into the form: - | Postcode | test | - And I click on 'Save and continue' - Then I should see the following error messages: - | Enter a valid postcode, like AA1 1AA | - - Scenario: Add a building - select address - And I enter 'New building' for the building name - And I enter the following details into the form: - | Postcode | ST16 1AA | - And I click on 'Save and continue' - Then I should see the following error messages: - | You must select an address to save a building | - - @javascript - Scenario: Add a building - select region - And I enter 'New building' for the building name - And I enter the following details into the form: - | Postcode | LU6 1GQ | - And I click on 'Find address' - And I select '10 Sidings Way, Dunstable' from the address drop down - And I click on 'Save and continue' - Then I should see the following error messages: - | You must select a region for your address | - - Scenario: Add building address - empty fields - And I enter the following details into the form: - | Postcode | ST16 1AA | - And I click on 'Find address' - And I click on 'I can’t find my building’s address in the list' - Then I am on the 'Add building address' page - And I click on 'Save and continue' - Then I should see the following error messages: - | Add a building and street name | - | Enter the town or city | diff --git a/features/facilities_management/rm3830/buildings/validations/add_address_manually_validations.feature b/features/facilities_management/rm3830/buildings/validations/add_address_manually_validations.feature deleted file mode 100644 index dc02d40e7b..0000000000 --- a/features/facilities_management/rm3830/buildings/validations/add_address_manually_validations.feature +++ /dev/null @@ -1,35 +0,0 @@ -Feature: Add address manually - validations - - Background: - Given I sign in and navigate to my account for 'RM3830' - And I click on 'Manage my buildings' - Then I am on the 'Buildings' page - And I click on 'Add a building' - Then I am on the 'Add a building' page - And I enter 'New building' for the building name - And I enter the following details into the form: - | Postcode | ST16 1AA | - And I click on 'Find address' - And I click on 'I can’t find my building’s address in the list' - Then I am on the 'Add building address' page - - Scenario: Add Address manually - nothing entered - And I click on 'Save and continue' - Then I should see the following error messages: - | Add a building and street name | - | Enter the town or city | - - Scenario Outline: Add Address manually - postcode validation - And I enter the following details into the form: - | Building and street line 1 of 2 | 112 Test street | - | Town or city | Westminister | - | Postcode | | - And I click on 'Save and continue' - Then I should see the following error messages: - | Enter a valid postcode, like AA1 1AA | - - Examples: - | postocde | - | | - | toast | - \ No newline at end of file diff --git a/features/facilities_management/rm3830/buildings/validations/building_type_validation.feature b/features/facilities_management/rm3830/buildings/validations/building_type_validation.feature deleted file mode 100644 index 2578b8cb44..0000000000 --- a/features/facilities_management/rm3830/buildings/validations/building_type_validation.feature +++ /dev/null @@ -1,35 +0,0 @@ -@javascript @add_address -Feature: Building type - validations - - Background: Navigate to Building type page - Given I sign in and navigate to my account for 'RM3830' - And I click on 'Manage my buildings' - Then I am on the 'Buildings' page - And I click on 'Add a building' - Then I am on the 'Add a building' page - And I enter 'New building' for the building name - And I enter the following details into the form: - | Postcode | ST16 1AA | - And I click on 'Find address' - And I select 'Stafford Delivery Office, Newport Road, Stafford' from the address drop down - And I click on 'Save and continue' - Then I am on the 'Internal and external areas' page - And I click on 'Skip this step' - Then I am on the 'Building type' page - - Scenario Outline: I select nothing - And I click on '' - Then I should see the following error messages: - | You must select a building type or describe your own | - - Examples: - | save_button | - | Save and continue | - | Save and return to building details summary | - - Scenario: - And I open the 'View more building types' details - And I select 'Other' for the building type - And I click on 'Save and continue' - Then I should see the following error messages: - | You must enter your description of a building type | diff --git a/features/facilities_management/rm3830/buildings/validations/internal_and_external_area_validations.feature b/features/facilities_management/rm3830/buildings/validations/internal_and_external_area_validations.feature deleted file mode 100644 index e622ff9cde..0000000000 --- a/features/facilities_management/rm3830/buildings/validations/internal_and_external_area_validations.feature +++ /dev/null @@ -1,56 +0,0 @@ -Feature: Internal and External area - validations - - Background: Navigate to Internal and external areas - Given I sign in and navigate to my account for 'RM3830' - And I have buildings - And I click on 'Manage my buildings' - Then I am on the 'Buildings' page - And I click on 'Test building' - Then I am on the 'Test building' page - And I change the 'Gross internal area' - Then I am on the 'Internal and external areas' page - - Scenario Outline: Areas are empty - And I enter '' for the building 'GIA' - And I enter '' for the building 'external area' - And I click on '' - Then I should see the following error messages: - | Internal area must be a number between 0 and 999,999,999 | - | External area must be a number between 0 and 999,999,999 | - - Examples: - | save_button | - | Save and continue | - | Save and return to building details summary | - - Scenario: Areas are not numbers - And I enter 'hello' for the building 'GIA' - And I enter 'hello' for the building 'external area' - And I click on 'Save and continue' - Then I should see the following error messages: - | Gross Internal Area (GIA) must be a whole number | - | External area must be a whole number | - - Scenario: Areas are not whole numbers - And I enter '45.7' for the building 'GIA' - And I enter '89.2' for the building 'external area' - And I click on 'Save and continue' - Then I should see the following error messages: - | Enter a whole number for the size of internal area of this building | - | Enter a whole number for the size of external area of this building | - - Scenario: Areas are greater than 999,999,999 - And I enter '1000000000' for the building 'GIA' - And I enter '1000000000' for the building 'external area' - And I click on 'Save and continue' - Then I should see the following error messages: - | Internal area must be a number between 0 and 999,999,999 | - | External area must be a number between 0 and 999,999,999 | - - Scenario: Areas are both 0 - And I enter '0' for the building 'GIA' - And I enter '0' for the building 'external area' - And I click on 'Save and continue' - Then I should see the following error messages: - | Internal area must be greater than 0, if the external area is 0 | - | External area must be greater than 0, if the internal area is 0 | diff --git a/features/facilities_management/rm3830/buildings/validations/security_type_validations.feature b/features/facilities_management/rm3830/buildings/validations/security_type_validations.feature deleted file mode 100644 index d44f5aa436..0000000000 --- a/features/facilities_management/rm3830/buildings/validations/security_type_validations.feature +++ /dev/null @@ -1,31 +0,0 @@ -@javascript @add_address -Feature: Security type - validations - - Background: Navigate to Security type page - Given I sign in and navigate to my account for 'RM3830' - And I click on 'Manage my buildings' - Then I am on the 'Buildings' page - And I click on 'Add a building' - Then I am on the 'Add a building' page - And I enter 'New building' for the building name - And I enter the following details into the form: - | Postcode | ST16 1AA | - And I click on 'Find address' - And I select 'Stafford Delivery Office, Newport Road, Stafford' from the address drop down - And I click on 'Save and continue' - Then I am on the 'Internal and external areas' page - And I click on 'Skip this step' - Then I am on the 'Building type' page - And I click on 'Skip this step' - Then I am on the 'Security clearance' page - - Scenario: I select nothing - And I click on 'Save and return to building details summary' - Then I should see the following error messages: - | You must select a security clearance level | - - Scenario: - And I select 'Other' for the security type - And I click on 'Save and return to building details summary' - Then I should see the following error messages: - | You must describe the security clearance level | diff --git a/features/facilities_management/rm3830/buyer_details/buyer_details.feature b/features/facilities_management/rm3830/buyer_details/buyer_details.feature deleted file mode 100644 index df6f72dfb3..0000000000 --- a/features/facilities_management/rm3830/buyer_details/buyer_details.feature +++ /dev/null @@ -1,52 +0,0 @@ -@javascript -Feature: Buyer details - - Background: Navigate to Buyer Details page - Given I sign in without details for 'RM3830' - And I enter the following details into the form: - | Name | Testy McTestface | - | Job title | Tester | - | Telephone number | 01610161016 | - | Organisation name | Feel Good inc. | - | Postcode | ST16 1AA | - And I check 'Health' for the sector - And I check 'Yes' for being contacted - - Scenario: Save details for the buyer - add address normally - And I click on 'Find address' - And I select 'Stafford Delivery Office, Newport Road, Stafford' from the address drop down - And I click on 'Save and continue' - And I am on the 'Your account' page - And I click on 'Manage my details' - Then I am on the 'Manage your details' page - And the following buyer details have been entered: - | Name | Testy McTestface | - | Job title | Tester | - | Telephone number | 01610161016 | - | Organisation name | Feel Good inc. | - | Organisation address | Stafford Delivery Office, Newport Road, Stafford ST16 1AA | - | Sector | Health | - | Contact opt in | Yes | - - Scenario: Save details for the buyer - add address manually - And I click on 'Find address' - And I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - And I enter the following details into the form: - | Building and street | 112 Test street | - | Town or city | Westminister | - | Postcode | AA1 1AA | - And I click on 'Save and continue' - Then I am on the 'Manage your details' page - And I click on 'Save and continue' - And I am on the 'Your account' page - And I click on 'Manage my details' - Then I am on the 'Manage your details' page - And the following buyer details have been entered: - | Name | Testy McTestface | - | Job title | Tester | - | Telephone number | 01610161016 | - | Organisation name | Feel Good inc. | - | Organisation address | 112 Test street, Westminister AA1 1AA | - | Sector | Health | - | Contact opt in | Yes | diff --git a/features/facilities_management/rm3830/buyer_details/validations/buyer_details_validations.feature b/features/facilities_management/rm3830/buyer_details/validations/buyer_details_validations.feature deleted file mode 100644 index 6081228f36..0000000000 --- a/features/facilities_management/rm3830/buyer_details/validations/buyer_details_validations.feature +++ /dev/null @@ -1,84 +0,0 @@ -Feature: Buyer details - validations - - Background: Navigate to Buyer Details page - Given I sign in without details for 'RM3830' - - Scenario: Save and continue - empty fields - When I click on 'Save and continue' - Then I should see the following error messages: - | Enter your full name | - | Enter your job title | - | Enter a UK telephone number, for example 020 7946 0000 | - | Enter your organisation name | - | Enter a valid postcode, for example SW1A 1AA | - | Select the type of public sector organisation you’re buying for | - | You must select an option | - - @javascript - Scenario Outline: Add address - frontend - And I enter the following details into the form: - | Postcode | | - And I click on 'Find address' - Then I should see the postcode error message for buyer details - - Examples: - | postcode | - | | - | test | - - Scenario: Add address - backend - And I enter the following details into the form: - | Name | Testy McTestface | - | Job title | Tester | - | Telephone number | 01610161016 | - | Organisation name | Feel Good inc. | - | Postcode | test | - And I check 'Defence and Security' for the sector - And I check 'Yes' for being contacted - And I click on 'Save and continue' - Then I should see the following error messages: - | Enter a valid postcode, for example SW1A 1AA | - - Scenario: Select address - And I enter the following details into the form: - | Name | Testy McTestface | - | Job title | Tester | - | Telephone number | 01610161016 | - | Organisation name | Feel Good inc. | - | Postcode | ST16 1AA | - And I check 'Defence and Security' for the sector - And I check 'Yes' for being contacted - And I click on 'Save and continue' - Then I should see the following error messages: - | You must select an address to save your details | - - Scenario: Add Address manually - nothing entered - And I enter the following details into the form: - | Postcode | ST16 1AA | - And I click on 'Find address' - And I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - And I click on 'Save and continue' - Then I should see the following error messages: - | Enter your building or street name | - | Enter your town or city | - | Enter a valid postcode, for example SW1A 1AA | - - Scenario Outline: Add Address manually - postcode validation - And I enter the following details into the form: - | Postcode | ST16 1AA | - And I click on 'Find address' - And I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - And I enter the following details into the form: - | Building and street | 112 Test street | - | Town or city | Westminister | - | Postcode | | - And I click on 'Save and continue' - Then I should see the following error messages: - | Enter a valid postcode, for example SW1A 1AA | - - Examples: - | postocde | - | | - | toast | diff --git a/features/facilities_management/rm3830/cognito/forgot_password.feature b/features/facilities_management/rm3830/cognito/forgot_password.feature deleted file mode 100644 index fc9efd1480..0000000000 --- a/features/facilities_management/rm3830/cognito/forgot_password.feature +++ /dev/null @@ -1,21 +0,0 @@ -Feature: Forgot my password - RM3830 - - Scenario: I forgot my password - When I go to the facilities management RM3830 start page - And I am on the 'Find a facilities management supplier' page - When I click on 'Start now' - And I am on the 'Sign in to your account' page - When I click on 'I’ve forgotten my password' - Then I am on the 'Reset password' page - And I can reset my password with the roles: - | fm_access | - | buyer | - Then I am on the 'Reset your password' page - And I enter the following details into the form: - | New password | ValidPassword1! | - | Confirm new password | ValidPassword1! | - | Verification code | 123456 | - And I click on 'Reset password' - Then I am on the 'You have successfully changed your password' page - And I click on 'Sign in' - And I am on the 'Sign in to your account' page diff --git a/features/facilities_management/rm3830/cognito/sign_in.feature b/features/facilities_management/rm3830/cognito/sign_in.feature deleted file mode 100644 index ccc79c1c20..0000000000 --- a/features/facilities_management/rm3830/cognito/sign_in.feature +++ /dev/null @@ -1,73 +0,0 @@ -Feature: Sign in to my account - RM3830 - - Background: Navigate to the sign in page - When I go to the facilities management RM3830 start page - And I am on the 'Find a facilities management supplier' page - When I click on 'Start now' - And I am on the 'Sign in to your account' page - - Scenario: I sign in to my existing account - Then I should sign in with the roles: - | fm_access | - | buyer | - And I am on the 'Manage your details' page - - Scenario: I sign in with MFA - Then I should sign in with MFA and with the roles: - | fm_access | - | buyer | - Then I am on the 'Enter your access code' page - And I enter the following details into the form: - | Access code | 123456 | - And I click on 'Continue' - Then I am on the 'Manage your details' page - - Scenario: I sign in for the first time - Then I should sign in for the first time with the roles: - | fm_access | - | buyer | - And I am on the 'Change your password' page - And I enter the following details into the form: - | Create a password you'll remember | ValidPassword1! | - | Confirm your password | ValidPassword1! | - And I click on 'Change password and sign in' - Then I am on the 'Manage your details' page - - Scenario: I sign in for the first time with MFA - Then I should sign in for the first time with MFA Enabled and with the roles: - | fm_access | - | buyer | - And I am on the 'Change your password' page - And I enter the following details into the form: - | Create a password you'll remember | ValidPassword1! | - | Confirm your password | ValidPassword1! | - And I click on 'Change password and sign in' - Then I am on the 'Enter your access code' page - And I enter the following details into the form: - | Access code | 123456 | - And I click on 'Continue' - Then I am on the 'Manage your details' page - - Scenario: I sign in for the first time after creating an account - Then I should sign in as user who just created their account and with the roles: - | fm_access | - | buyer | - Then I am on the 'Activate your account' page - And I enter the following details into the form: - | Confirmation code | 123456 | - And I click on 'Continue' - Then I am on the 'Manage your details' page - - Scenario: I sign in and need to reset my password - Then I should sign in as a user who needs to reset their password and with the roles: - | fm_access | - | buyer | - Then I am on the 'Reset your password' page - And I enter the following details into the form: - | New password | ValidPassword1! | - | Confirm new password | ValidPassword1! | - | Verification code | 123456 | - And I click on 'Reset password' - Then I am on the 'You have successfully changed your password' page - And I click on 'Sign in' - And I am on the 'Sign in to your account' page diff --git a/features/facilities_management/rm3830/cognito/sign_up_user.feature b/features/facilities_management/rm3830/cognito/sign_up_user.feature deleted file mode 100644 index c7fff49d31..0000000000 --- a/features/facilities_management/rm3830/cognito/sign_up_user.feature +++ /dev/null @@ -1,16 +0,0 @@ -@allow_list -Feature: Sign up to facilties management - RM3830 - - Scenario: I sign in to my existing account - When I go to the facilities management RM3830 start page - And I am on the 'Find a facilities management supplier' page - When I click on 'Start now' - And I am on the 'Sign in to your account' page - And I click on 'Create an account' - Then I am on the 'Create a CCS account' page - And I am able to create an 'fm' account - Then I am on the 'Activate your account' page - And I enter the following details into the form: - | Confirmation code | 123456 | - And I click on 'Continue' - Then I am on the 'Manage your details' page diff --git a/features/facilities_management/rm3830/cognito/validations/forgot_password_validations.feature b/features/facilities_management/rm3830/cognito/validations/forgot_password_validations.feature deleted file mode 100644 index dc7d5fc954..0000000000 --- a/features/facilities_management/rm3830/cognito/validations/forgot_password_validations.feature +++ /dev/null @@ -1,36 +0,0 @@ -Feature: Forgot my password - RM3830 - Validations - - Background: Navigate to forgot password - When I go to the facilities management RM3830 start page - And I am on the 'Find a facilities management supplier' page - When I click on 'Start now' - And I am on the 'Sign in to your account' page - When I click on 'I’ve forgotten my password' - Then I am on the 'Reset password' page - - Scenario Outline: I forgot my password - email invalid - And I enter the following details into the form: - | email | | - And I click on 'Send reset email' - Then I should see the following error messages: - | Enter your email address in the correct format, like name@example.com | - - Examples: - | value | - | | - | fake@email | - | fake email | - - Scenario: I forgot my password - user not found - And I cannot reset my password becaue of the 'user not found' error - Then I am on the 'Reset your password' page - - Scenario Outline: I forgot my password - cognito error - And I cannot reset my password becaue of the '' error - Then I should see the following error messages: - | | - - Examples: - | error | error_message | - | invalid parameter | Enter your email address in the correct format, like name@example.com | - | service | An error occured: service | diff --git a/features/facilities_management/rm3830/cognito/validations/sign_in_validation.feature b/features/facilities_management/rm3830/cognito/validations/sign_in_validation.feature deleted file mode 100644 index 9db4d3601c..0000000000 --- a/features/facilities_management/rm3830/cognito/validations/sign_in_validation.feature +++ /dev/null @@ -1,277 +0,0 @@ -Feature: Sign in to my account - RM3830 - Validations - - Background: Navigate to the sign in page - When I go to the facilities management RM3830 start page - And I am on the 'Find a facilities management supplier' page - When I click on 'Start now' - And I am on the 'Sign in to your account' page - - Scenario: I sign in to my account - missing parameters - And I click on 'Sign in' - Then I should see the following error messages: - | You must provide your email address in the correct format, like name@example.com | - | You must provide your password | - - Scenario Outline: I sign in to my account - email format wrong - And I enter the following details into the form: - | Email | | - | Password | ValidPassword1! | - And I click on 'Sign in' - Then I should see the following error messages: - | You must provide your email address in the correct format, like name@example.com | - - Examples: - | email | - | local@ | - | @domain | - | @ | - - Scenario: I sign in to my account - cookies disabled - And my cookies are disabled - And I enter the following details into the form: - | Email | test@email.com | - | Password | ValidPassword1! | - And I click on 'Sign in' - Then I should see the following error messages: - | Your browser must have cookies enabled | - - Scenario Outline: I sign in to my account - cognito error - And I cannot sign in becaue of the '' error - Then I should see the following error messages: - | | - - Examples: - | error | error_message | - | user not found | You must provide a correct username or password | - | service | You must provide a correct username or password | - - Scenario Outline: I sign in with MFA - invalid code - Then I should sign in with MFA and with the roles: - | fm_access | - | buyer | - Then I am on the 'Enter your access code' page - And I enter the following details into the form: - | Access code | | - And I click on 'Continue' - Then I should see the following error messages: - | | - - Examples: - | value | error_message | - | | Enter the access code | - | 123 | Access code must be 6 characters | - | 1234567 | Access code must be 6 characters | - | onetwo | Access code must contain numeric characters only | - - Scenario: I sign in with MFA - service error - And I cannot sign in with MFA because of the 'service' error and I have the following roles: - | fm_access | - | buyer | - Then I am on the 'Enter your access code' page - And I enter the following details into the form: - | Access code | 123456 | - And I click on 'Continue' - Then I should see the following error messages: - | An error occured: service | - - Scenario Outline: I sign in for the first time - password errors - Then I should sign in for the first time with the roles: - | fm_access | - | buyer | - And I am on the 'Change your password' page - And I enter '' for the password - And I enter '' for the password confirmation - And I click on 'Change password and sign in' - Then I should see the following error messages: - | | - - Examples: - | password | error_message | - | Pass!1 | Password must be 8 characters or more | - | password1! | Password must include a capital letter | - | Password1 | Password must include a special character | - | Password! | Password must include a number | - - Scenario: I sign in for the first time - passwords blank - Then I should sign in for the first time with the roles: - | fm_access | - | buyer | - And I am on the 'Change your password' page - And I enter '' for the password - And I enter '' for the password confirmation - And I click on 'Change password and sign in' - Then I should see the following error messages: - | Enter a password | - | Enter your password | - - Scenario: I sign in for the first time - passwords don't match - Then I should sign in for the first time with the roles: - | fm_access | - | buyer | - And I am on the 'Change your password' page - And I enter 'Password1!' for the password - And I enter 'ValidPassw0rd!' for the password confirmation - And I click on 'Change password and sign in' - Then I should see the following error messages: - | Passwords don't match | - - Scenario: I sign in for the first time - service error - And I cannot sign in for the first time because of the 'service' error and I have the following roles: - | fm_access | - | buyer | - And I am on the 'Change your password' page - And I enter 'ValidPassword1!' for the password - And I enter 'ValidPassword1!' for the password confirmation - And I click on 'Change password and sign in' - Then I should see the following error messages: - | An error occured: service | - - Scenario Outline: I sign in for the first time with MFA - invalid code - Then I should sign in for the first time with MFA Enabled and with the roles: - | fm_access | - | buyer | - And I am on the 'Change your password' page - And I enter the following details into the form: - | Create a password you'll remember | ValidPassword1! | - | Confirm your password | ValidPassword1! | - And I click on 'Change password and sign in' - Then I am on the 'Enter your access code' page - And I enter the following details into the form: - | Access code | | - And I click on 'Continue' - Then I should see the following error messages: - | | - - Examples: - | value | error_message | - | | Enter the access code | - | 123 | Access code must be 6 characters | - | 1234567 | Access code must be 6 characters | - | onetwo | Access code must contain numeric characters only | - - Scenario: I sign in for the first time - service error - And I cannot sign in for the first time with MFA Enabled because of the 'service' error and I have the following roles: - | fm_access | - | buyer | - And I am on the 'Change your password' page - And I enter 'ValidPassword1!' for the password - And I enter 'ValidPassword1!' for the password confirmation - And I click on 'Change password and sign in' - Then I am on the 'Enter your access code' page - And I enter the following details into the form: - | Access code | 123456 | - And I click on 'Continue' - Then I should see the following error messages: - | An error occured: service | - - Scenario Outline: I sign in for the first time after creating an account - invalid code - Then I should sign in as user who just created their account and with the roles: - | fm_access | - | buyer | - Then I am on the 'Activate your account' page - And I enter the following details into the form: - | Confirmation code | | - And I click on 'Continue' - Then I should see the following error messages: - | | - - Examples: - | value | error_message | - | | Enter your verification code | - | 123 | Confirmation code must be 6 characters | - | 1234567 | Confirmation code must be 6 characters | - | onetwo | Confirmation code must contain numeric characters only | - - Scenario Outline: I sign in for the first time after creating an account - cognito error - And I cannot sign in having just created my account because of the '' error and I have the following roles: - | fm_access | - | buyer | - Then I am on the 'Activate your account' page - And I enter the following details into the form: - | Confirmation code | 123456 | - And I click on 'Continue' - Then I should see the following error messages: - | | - - Examples: - | error | error_message | - | not authorized | Invalid verification code provided, please try again | - | service | An error occured: service | - - Scenario Outline: I sign in and need to reset my password - password error - Then I should sign in as a user who needs to reset their password and with the roles: - | fm_access | - | buyer | - Then I am on the 'Reset your password' page - And I enter the following details into the form: - | New password | | - | Confirm new password | | - | Verification code | 123456 | - And I click on 'Reset password' - Then I should see the following error messages: - | | - - Examples: - | password | error_message | - | Pass!1 | Password must be 8 characters or more | - | password1! | Password must include a capital letter | - | Password1 | Password must include a special character | - | Password! | Password must include a number | - - Scenario: I sign in and need to reset my password - passwords blank - Then I should sign in as a user who needs to reset their password and with the roles: - | fm_access | - | buyer | - Then I am on the 'Reset your password' page - And I enter the following details into the form: - | New password | | - | Confirm new password | | - | Verification code | 123456 | - And I click on 'Reset password' - Then I should see the following error messages: - | Enter a password | - | Enter your password | - - Scenario: I sign in and need to reset my password - passwords don't match - Then I should sign in as a user who needs to reset their password and with the roles: - | fm_access | - | buyer | - Then I am on the 'Reset your password' page - And I enter the following details into the form: - | New password | Password1! | - | Confirm new password | ValidPassw0rd! | - | Verification code | 123456 | - And I click on 'Reset password' - Then I should see the following error messages: - | Passwords don't match | - - Scenario: I sign in and need to reset my password - code blank - Then I should sign in as a user who needs to reset their password and with the roles: - | fm_access | - | buyer | - Then I am on the 'Reset your password' page - And I enter the following details into the form: - | New password | ValidPassword1! | - | Confirm new password | ValidPassword1! | - | Verification code | | - And I click on 'Reset password' - Then I should see the following error messages: - | Enter your verification code | - - Scenario Outline: I sign in and need to reset my password - cognito error - And I cannot sign in and reset my password because of the '' error and I have the following roles: - | fm_access | - | buyer | - Then I am on the 'Reset your password' page - And I enter the following details into the form: - | New password | ValidPassword1! | - | Confirm new password | ValidPassword1! | - | Verification code | 123456 | - And I click on 'Reset password' - Then I should see the following error messages: - | | - - Examples: - | error | error_message | - | code mismatch | An error occured: code mismatch | - | service | An error occured: service | diff --git a/features/facilities_management/rm3830/cognito/validations/sign_up_user_validations.feature b/features/facilities_management/rm3830/cognito/validations/sign_up_user_validations.feature deleted file mode 100644 index ea61e65e89..0000000000 --- a/features/facilities_management/rm3830/cognito/validations/sign_up_user_validations.feature +++ /dev/null @@ -1,71 +0,0 @@ -@allow_list -Feature: Sign up user - RM3830 - Validations - - Background: navigate to create an account page - Given I go to the facilities management RM3830 start page - And I am on the 'Find a facilities management supplier' page - When I click on 'Start now' - Then I am on the 'Sign in to your account' page - And I click on 'Create an account' - Then I am on the 'Create a CCS account' page - - Scenario: Email validations - Given I enter '' for my email - And I enter 'Passowrd1!' for the password - And I enter 'Passowrd1!' for the password confirmation - When I click on 'Create account' - Then I should see the following error messages: - | | - - Examples: - | email | error_message | - | | Enter an email address in the correct format, like name@example.com | - | Test@test.com | Email address cannot contain any capital letters | - - Scenario: Not on allow list - Given I enter 'test@tmail.com' for my email - And I enter 'Passowrd1!' for the password - And I enter 'Passowrd1!' for the password confirmation - When I click on 'Create account' - Then I am on the 'You must use a public sector email address' page - - Scenario Outline: Password validations - Given I enter 'test@test.com' for my email - And I enter '' for the password - And I enter '' for the password confirmation - When I click on 'Create account' - Then I should see the following error messages: - | | - - Examples: - | password | error_message | - | Pass!1 | Password must be 8 characters or more | - | password1! | Password must include a capital letter | - | Password1 | Password must include a special character | - | Password! | Password must include a number | - - Scenario: Password blank - Given I enter 'test@test.com' for my email - And I enter '' for the password - And I enter '' for the password confirmation - When I click on 'Create account' - Then I should see the following error messages: - | Enter a password | - | Enter your password | - - Scenario: Password confirmation doesn't match - Given I enter 'test@test.com' for my email - And I enter 'Password1!' for the password - And I enter 'ValidPassw0rd!' for the password confirmation - When I click on 'Create account' - Then I should see the following error messages: - | Passwords don't match | - - Scenario: Create an account - username exists error - And I cannot create an account becaue of the 'username exists' error - Then I am on the 'Activate your account' page - - Scenario: Create an account - service error - And I cannot create an account becaue of the 'service' error - Then I should see the following error messages: - | An error occured: service | diff --git a/features/facilities_management/rm3830/contracts/accepted_contract.feature b/features/facilities_management/rm3830/contracts/accepted_contract.feature deleted file mode 100644 index eeea1eed2c..0000000000 --- a/features/facilities_management/rm3830/contracts/accepted_contract.feature +++ /dev/null @@ -1,168 +0,0 @@ -Feature: Accepeted contract - - Background: The contract I sent has been accepted - Given I sign in and navigate to my account for 'RM3830' - And I have a contract that has been 'accepted' called 'Accepted contract' - And I click on 'Continue a procurement' - Then I navigate to the contract 'Accepted contract' in 'Sent offers' - - Scenario: Review the accepted contract - Then there is a warning with the text 'Accepted, awaiting contract signature' - And the key details include: - | Awaiting your confirmation of signed contract. | - And I should see the following text within the contract offer history: - | The supplier accepted the contract offer | - | You sent this contract offer to the supplier | - And the what happens next 'details' titles are: - | 1. Supplier signs the contract | - | 2. You sign the contract | - | 3. Confirmation of signed contract | - And the contract summary footer has the following text: - | Use the ‘confirm if contract signed or not’ button below to confirm whether or not the contract was signed. | - | You can still withdraw this contract offer; if you need to, use the ‘Close this procurement’ button below, which will withdraw the offer from the supplier, and close the procurement. | - - Scenario: Contract summary return links - Then I click on the 'Return to procurements dashboard' return link - And I am on the 'Procurements dashboard' page - Then I navigate to the contract 'Accepted contract' in 'Sent offers' - Then I click on the 'Return to procurements dashboard' back link - And I am on the 'Procurements dashboard' page - Then I navigate to the contract 'Accepted contract' in 'Sent offers' - Then I click on 'Confirm if contract signed or not' - And I am on the 'Confirmation of signed contract' page - And I click on 'Cancel' - Then I am on the 'Contract summary' page - - @contract_emails - Scenario: The contract is signed - Then I click on 'Confirm if contract signed or not' - And I am on the 'Confirmation of signed contract' page - And I select 'Yes' for the confirmation of signed contract - And I enter a contract start date 2 years and 0 months into the future - And I enter a contract end date 5 years and 0 months into the future - And I click on 'Save and continue' - Then I am on the 'Contract signed' page - And the contract dates are correct on the contract signed page - Then I click on 'Return to procurements dashboard' - And the contract dates are correct for 'Accepted contract' on the procurement dashboard - Then I navigate to the contract 'Accepted contract' in 'Contracts' - Then there is a warning with the text 'Accepted and signed' - And the contract dates are correct on the contract summary page - And I should see the following text within the contract offer history: - | the contract has been signed by both parties. | - | The supplier accepted the contract offer | - | You sent this contract offer to the supplier | - And the contract summary footer has the following text: - | If you wish to reuse this procurement’s requirements in a new/similar procurement, or further competition, please click on the button below to create a copy and save under a new contract name. | - - @contract_emails - Scenario: The contract is not signed and sent to the next supplier - Then I click on 'Confirm if contract signed or not' - And I am on the 'Confirmation of signed contract' page - And I select 'No' for the confirmation of signed contract - And I enter the reason for not signing: - | It could not be done | - | not even for £5 | - Then I click on 'Save and continue' - And I am on the 'Contract summary' page - Then there is a warning with the text 'Accepted, not signed' - And the key details include: - | the contract has not been signed | - And the reason for not signing is: - | It could not be done | - | not even for £5 | - And I should see the following text within the contract offer history: - | The supplier accepted the contract offer | - | You sent this contract offer to the supplier on | - And the contract summary footer has the following text: - | You can look at the next lowest priced supplier and the option of offering them your contract. Click on the ‘View next supplier’s price’ button below. | - | or | - | You can close this procurement by clicking on the ‘Close this procurement’ button below, it will then be viewable in the closed section of your procurements dashboard. | - Then I click on "View next supplier's price" - And I am on the 'Offer to next supplier' page - And I click on 'Confirm and send offer to supplier' - Then I am on the 'Your contract was sent' page - And I click on 'Return to procurements dashboard' - Then I am on the 'Procurements dashboard' page - And there is contract named 'Accepted contract' in 'Sent offers' - Then I navigate to the contract 'Accepted contract' in 'Closed' - Then there is a warning with the text 'Closed' - And the key details include: - | The contract offer was automatically closed when you offered the procurement to the next supplier | - And I should see the following text within the contract offer history: - | the contract has not been signed. | - | The supplier accepted the contract offer | - | You sent this contract offer to the supplier on | - And the reason for not signing is: - | It could not be done | - | not even for £5 | - And the contract summary footer has the following text: - | If you wish to reuse this procurement’s requirements in a new/similar procurement, or further competition, please click on the button below to create a copy and save under a new contract name. | - - @contract_emails - Scenario: Contract not signed return link - Then I click on 'Confirm if contract signed or not' - And I am on the 'Confirmation of signed contract' page - And I select 'No' for the confirmation of signed contract - And I enter the reason for not signing: - | Here is my reason | - Then I click on 'Save and continue' - And I am on the 'Contract summary' page - Then I click on "View next supplier's price" - And I am on the 'Offer to next supplier' page - Then I click on 'Cancel and return to contract summary' - And I am on the 'Contract summary' page - Then I click on "View next supplier's price" - And I am on the 'Offer to next supplier' page - Then I click on the 'Back' back link - And I am on the 'Contract summary' page - Then I click on "View next supplier's price" - And I am on the 'Offer to next supplier' page - Then I click on 'Return to procurements dashboard' - And I am on the 'Procurements dashboard' page - - @contract_emails - Scenario: The contract is not signed and the procurement is closed - Then I click on 'Confirm if contract signed or not' - And I am on the 'Confirmation of signed contract' page - And I select 'No' for the confirmation of signed contract - And I enter the reason for not signing: - | The supplier did not respond to me | - Then I click on 'Save and continue' - And I am on the 'Contract summary' page - Then there is a warning with the text 'Accepted, not signed' - And the key details include: - | the contract has not been signed | - And the reason for not signing is: - | The supplier did not respond to me | - And I should see the following text within the contract offer history: - | The supplier accepted the contract offer | - | You sent this contract offer to the supplier on | - And the contract summary footer has the following text: - | You can look at the next lowest priced supplier and the option of offering them your contract. Click on the ‘View next supplier’s price’ button below. | - | or | - | You can close this procurement by clicking on the ‘Close this procurement’ button below, it will then be viewable in the closed section of your procurements dashboard. | - Then I click on 'Close this procurement' - And I am on the 'Are you sure you wish to close' page - And I enter the reason for closing the contract: - | I did not have enough time | - | The suppliers would not respond | - Then I click on 'Close this procurement' - Then I am on the 'Your procurement has been closed' page - And I click on 'Return to procurements dashboard' - Then I am on the 'Procurements dashboard' page - Then I navigate to the contract 'Accepted contract' in 'Closed' - Then there is a warning with the text 'Closed' - And the key details include: - | You closed this contract offer on | - And the reason for closing is: - | I did not have enough time | - | The suppliers would not respond | - And I should see the following text within the contract offer history: - | the contract has not been signed. | - | The supplier accepted the contract offer | - | You sent this contract offer to the supplier on | - And the reason for not signing is: - | The supplier did not respond to me | - And the contract summary footer has the following text: - | If you wish to reuse this procurement’s requirements in a new/similar procurement, or further competition, please click on the button below to create a copy and save under a new contract name. | diff --git a/features/facilities_management/rm3830/contracts/declined_contract.feature b/features/facilities_management/rm3830/contracts/declined_contract.feature deleted file mode 100644 index 3d66be5e51..0000000000 --- a/features/facilities_management/rm3830/contracts/declined_contract.feature +++ /dev/null @@ -1,73 +0,0 @@ -Feature: Declined contract - - Background: The contract I sent has been declined - Given I sign in and navigate to my account for 'RM3830' - And I have a contract that has been 'declined' called 'Declined contract' - And I click on 'Continue a procurement' - Then I navigate to the contract 'Declined contract' in 'Sent offers' - - Scenario: Contract declined - Then there is a warning with the text 'Declined' - And the key details include: - | The supplier declined this offer | - And the reason for declining is: - | I cannot be bothered with it | - And I should see the following text within the contract offer history: - | You sent this contract offer to the supplier | - And the contract summary footer has the following text: - | You can look at the next lowest priced supplier and the option of offering them your contract. Click on the ‘View next supplier’s price’ button below. | - | or | - | You can close this procurement by clicking on the ‘Close this procurement’ button below, it will then be viewable in the closed section of your procurements dashboard. | - - Scenario: Contract summary return links - Then I click on the 'Return to procurements dashboard' return link - And I am on the 'Procurements dashboard' page - Then I navigate to the contract 'Declined contract' in 'Sent offers' - Then I click on the 'Return to procurements dashboard' back link - And I am on the 'Procurements dashboard' page - - @contract_emails - Scenario: Contract declined - send to next supplier - Then I click on "View next supplier's price" - And I am on the 'Offer to next supplier' page - And I click on 'Confirm and send offer to supplier' - Then I am on the 'Your contract was sent' page - And I click on 'Return to procurements dashboard' - Then I am on the 'Procurements dashboard' page - And there is contract named 'Declined contract' in 'Sent offers' - Then I navigate to the contract 'Declined contract' in 'Closed' - Then there is a warning with the text 'Closed' - And the key details include: - | The contract offer was automatically closed when you offered the procurement to the next supplier | - And I should see the following text within the contract offer history: - | The supplier declined this contract offer on | - | You sent this contract offer to the supplier on | - And the reason for declining is: - | I cannot be bothered with it | - And the contract summary footer has the following text: - | If you wish to reuse this procurement’s requirements in a new/similar procurement, or further competition, please click on the button below to create a copy and save under a new contract name. | - - Scenario: Contract declined - close procurement - Then I click on 'Close this procurement' - And I am on the 'Are you sure you wish to close' page - And I enter the reason for closing the contract: - | The suppliers would not respond | - | I did not have enough time | - Then I click on 'Close this procurement' - Then I am on the 'Your procurement has been closed' page - And I click on 'Return to procurements dashboard' - Then I am on the 'Procurements dashboard' page - Then I navigate to the contract 'Declined contract' in 'Closed' - Then there is a warning with the text 'Closed' - And the key details include: - | You closed this contract offer on | - And the reason for closing is: - | The suppliers would not respond | - | I did not have enough time | - And I should see the following text within the contract offer history: - | The supplier declined this contract offer | - | You sent this contract offer to the supplier on | - And the reason for declining is: - | I cannot be bothered with it | - And the contract summary footer has the following text: - | If you wish to reuse this procurement’s requirements in a new/similar procurement, or further competition, please click on the button below to create a copy and save under a new contract name. | diff --git a/features/facilities_management/rm3830/contracts/expired_contract.feature b/features/facilities_management/rm3830/contracts/expired_contract.feature deleted file mode 100644 index 93b55f1b7e..0000000000 --- a/features/facilities_management/rm3830/contracts/expired_contract.feature +++ /dev/null @@ -1,68 +0,0 @@ -Feature: Expired contract - - Background: The contract I sent has been expired - Given I sign in and navigate to my account for 'RM3830' - And I have a contract that has been 'expired' called 'Expired contract' - And I click on 'Continue a procurement' - Then I navigate to the contract 'Expired contract' in 'Sent offers' - - Scenario: Contract expired - Then there is a warning with the text 'Not responded' - And the key details include: - | The supplier did not respond to your contract offer within the required 2 working days (48 hours). | - And I should see the following text within the contract offer history: - | The supplier did not respond to this offer and it expired | - | You sent this contract offer to the supplier | - And the contract summary footer has the following text: - | You can look at the next lowest priced supplier and the option of offering them your contract. Click on the ‘View next supplier’s price’ button below. | - | or | - | You can close this procurement by clicking on the ‘Close this procurement’ button below, it will then be viewable in the closed section of your procurements dashboard. | - - Scenario: Contract summary return links - Then I click on the 'Return to procurements dashboard' return link - And I am on the 'Procurements dashboard' page - Then I navigate to the contract 'Expired contract' in 'Sent offers' - Then I click on the 'Return to procurements dashboard' back link - And I am on the 'Procurements dashboard' page - - @contract_emails - Scenario: Contract expired - send to next supplier - Then I click on "View next supplier's price" - And I am on the 'Offer to next supplier' page - And I click on 'Confirm and send offer to supplier' - Then I am on the 'Your contract was sent' page - And I click on 'Return to procurements dashboard' - Then I am on the 'Procurements dashboard' page - And there is contract named 'Expired contract' in 'Sent offers' - Then I navigate to the contract 'Expired contract' in 'Closed' - Then there is a warning with the text 'Closed' - And the key details include: - | The contract offer was automatically closed when you offered the procurement to the next supplier | - And I should see the following text within the contract offer history: - | The supplier did not respond to this offer and it expired | - | You sent this contract offer to the supplier on | - And the contract summary footer has the following text: - | If you wish to reuse this procurement’s requirements in a new/similar procurement, or further competition, please click on the button below to create a copy and save under a new contract name. | - - Scenario: Contract expired - close procurement - Then I click on 'Close this procurement' - And I am on the 'Are you sure you wish to close' page - And I enter the reason for closing the contract: - | The suppliers would not respond | - | I did not have enough time | - Then I click on 'Close this procurement' - Then I am on the 'Your procurement has been closed' page - And I click on 'Return to procurements dashboard' - Then I am on the 'Procurements dashboard' page - Then I navigate to the contract 'Expired contract' in 'Closed' - Then there is a warning with the text 'Closed' - And the key details include: - | You closed this contract offer on | - And the reason for closing is: - | The suppliers would not respond | - | I did not have enough time | - And I should see the following text within the contract offer history: - | The supplier did not respond to this offer and it expired | - | You sent this contract offer to the supplier on | - And the contract summary footer has the following text: - | If you wish to reuse this procurement’s requirements in a new/similar procurement, or further competition, please click on the button below to create a copy and save under a new contract name. | diff --git a/features/facilities_management/rm3830/contracts/no_more_suppliers.feature b/features/facilities_management/rm3830/contracts/no_more_suppliers.feature deleted file mode 100644 index 601b879f75..0000000000 --- a/features/facilities_management/rm3830/contracts/no_more_suppliers.feature +++ /dev/null @@ -1,21 +0,0 @@ -Feature: No more suppliers - - Scenario: There are no more suppliers - Given I sign in and navigate to my account for 'RM3830' - And I have a contract that has been 'declined' called 'No more suppliers' and there are no more suppliers - And I click on 'Continue a procurement' - Then I navigate to the contract 'No more suppliers' in 'Sent offers' - Then I click on "View next supplier's price" - And I am on the 'Supplier shortlist' page - Then I click on 'Return to procurements dashboard' - Then I navigate to the contract 'No more suppliers' in 'Closed' - Then there is a warning with the text 'Closed' - And the key details include: - | when you tried to offer the procurement to the next supplier, but there were no more suppliers. | - And I should see the following text within the contract offer history: - | The supplier declined this contract offer | - | You sent this contract offer to the supplier on | - And the reason for declining is: - | I cannot be bothered with it | - And the contract summary footer has the following text: - | If you wish to reuse this procurement’s requirements in a new/similar procurement, or further competition, please click on the button below to create a copy and save under a new contract name. | diff --git a/features/facilities_management/rm3830/contracts/sent_contract.feature b/features/facilities_management/rm3830/contracts/sent_contract.feature deleted file mode 100644 index ddace44fda..0000000000 --- a/features/facilities_management/rm3830/contracts/sent_contract.feature +++ /dev/null @@ -1,48 +0,0 @@ -Feature: Sent contract - - Background: I navigate to my sent contract - Given I sign in and navigate to my account for 'RM3830' - And I have a contract that has been 'sent' called 'Sent contract' - And I click on 'Continue a procurement' - Then I navigate to the contract 'Sent contract' in 'Sent offers' - - Scenario: Sent contract - Then there is a warning with the text 'Sent' - And the key details include: - | This contract offer expires | - | The supplier has not yet responded. | - And I should see the following text within the contract offer history: - | You sent this contract offer to the supplier | - And the what happens next 'list' titles are: - | If the supplier accepts the offer | - | If the supplier declines the offer | - And the contract summary footer has the following text: - | You can withdraw this contract offer if you need to. Use the button below which will withdraw the offer made to the supplier and close the procurement. | - - Scenario: Contract summary return links - Then I click on the 'Return to procurements dashboard' return link - And I am on the 'Procurements dashboard' page - Then I navigate to the contract 'Sent contract' in 'Sent offers' - Then I click on the 'Return to procurements dashboard' back link - And I am on the 'Procurements dashboard' page - - @contract_emails - Scenario: Close sent procurement - Then I click on 'Close this procurement' - And I am on the 'Are you sure you wish to close' page - And I enter the reason for closing the contract: - | The procurement is no longer required | - Then I click on 'Close this procurement' - Then I am on the 'Your procurement has been closed' page - And I click on 'Return to procurements dashboard' - Then I am on the 'Procurements dashboard' page - Then I navigate to the contract 'Sent contract' in 'Closed' - Then there is a warning with the text 'Closed' - And the key details include: - | You closed this contract offer on | - And the reason for closing is: - | The procurement is no longer required | - And I should see the following text within the contract offer history: - | You sent this contract offer to the supplier on | - And the contract summary footer has the following text: - | If you wish to reuse this procurement’s requirements in a new/similar procurement, or further competition, please click on the button below to create a copy and save under a new contract name. | diff --git a/features/facilities_management/rm3830/contracts/validations/close_contract_validations.feature b/features/facilities_management/rm3830/contracts/validations/close_contract_validations.feature deleted file mode 100644 index 993d8e7716..0000000000 --- a/features/facilities_management/rm3830/contracts/validations/close_contract_validations.feature +++ /dev/null @@ -1,12 +0,0 @@ -Feature: Close contract - validations - - Scenario: No reason for closing - Given I sign in and navigate to my account for 'RM3830' - And I have a contract that has been 'declined' called 'Declined contract' - And I click on 'Continue a procurement' - Then I navigate to the contract 'Declined contract' in 'Sent offers' - Then I click on 'Close this procurement' - And I am on the 'Are you sure you wish to close' page - And I click on 'Close this procurement' - Then I should see the following error messages: - | Enter a reason for closing this procurement | \ No newline at end of file diff --git a/features/facilities_management/rm3830/contracts/validations/supplier_accepted_validations.feature b/features/facilities_management/rm3830/contracts/validations/supplier_accepted_validations.feature deleted file mode 100644 index b03253bbc0..0000000000 --- a/features/facilities_management/rm3830/contracts/validations/supplier_accepted_validations.feature +++ /dev/null @@ -1,39 +0,0 @@ -Feature: Supplier accepeted - validations - - Background: The contract I sent has been accepted - Given I sign in and navigate to my account for 'RM3830' - And I have a contract that has been 'accepted' called 'Accepted contract' - And I click on 'Continue a procurement' - Then I navigate to the contract 'Accepted contract' in 'Sent offers' - Then I click on 'Confirm if contract signed or not' - And I am on the 'Confirmation of signed contract' page - - Scenario: Nothing is selected - And I click on 'Save and continue' - Then I should see the following error messages: - | Select one option | - - Scenario: Reason for not signing is blank - And I select 'No' for the confirmation of signed contract - And I click on 'Save and continue' - Then I should see the following error messages: - | Enter a reason why this contract will not be signed | - - Scenario Outline: Contract dates invalid - And I select 'Yes' for the confirmation of signed contract - And I enter '' as the contract start date - And I enter '' as the contract end date - And I click on 'Save and continue' - Then I should see the following error messages: - | | - - Examples: - | contract_start_date | contract_end_date | error_message | - | / / / | 21/06/2021 | Enter contract start date | - | 21/06/2021 | / / / | Enter contract end date | - | 31/06/2021 | 21/06/2021 | Enter a valid start date | - | 21/06/2021 | 31/06/2021 | Enter a valid end date | - | ab/cd/efgh | 21/06/2021 | Enter a valid start date | - | 21/06/2021 | ij/kl/mnop | Enter a valid end date | - | 21/06/2021 | 21/06/2020 | The contract end date must be after the contract start date | - | 31/05/202 | 21/06/2021 | The contract start date must be on or after 1 June 2020 | \ No newline at end of file diff --git a/features/facilities_management/rm3830/home/footer_signed_in.feature b/features/facilities_management/rm3830/home/footer_signed_in.feature deleted file mode 100644 index a706b051ff..0000000000 --- a/features/facilities_management/rm3830/home/footer_signed_in.feature +++ /dev/null @@ -1,22 +0,0 @@ -Feature: Buyer footer links - signed in - - Background: Buyer signs in - Given I sign in and navigate to my account for 'RM3830' - - Scenario: Cookies policy - When I click on 'Cookie policy' - Then I am on the 'Details about cookies on Crown Marketplace' page - And I click on 'My account' - Then I am on the 'Your account' page - - Scenario: Cookies settings - When I click on 'Cookie settings' - Then I am on the 'Cookies on Crown Marketplace' page - And I click on 'My account' - Then I am on the 'Your account' page - - Scenario: Accessibility statement - When I click on 'Accessibility statement' - Then I am on the 'Facilities Management (FM) Accessibility statement' page - And I click on 'My account' - Then I am on the 'Your account' page diff --git a/features/facilities_management/rm3830/home/footer_signed_out.feature b/features/facilities_management/rm3830/home/footer_signed_out.feature deleted file mode 100644 index 4601b3d999..0000000000 --- a/features/facilities_management/rm3830/home/footer_signed_out.feature +++ /dev/null @@ -1,25 +0,0 @@ -Feature: Buyer footer links - signed out - - Background: Buyer on start page - Given I go to the facilities management RM3830 start page - - Scenario: Cookies policy - When I click on 'Cookie policy' - Then I am on the 'Details about cookies on Crown Marketplace' page - And I click on 'Back to start' - Then I am on a 'buyer' page - And I am on the 'Find a facilities management supplier' page - - Scenario: Cookies settings - When I click on 'Cookie settings' - Then I am on the 'Cookies on Crown Marketplace' page - And I click on 'Back to start' - Then I am on a 'buyer' page - And I am on the 'Find a facilities management supplier' page - - Scenario: Accessibility statement - When I click on 'Accessibility statement' - Then I am on the 'Facilities Management (FM) Accessibility statement' page - And I click on 'Back to start' - Then I am on a 'buyer' page - And I am on the 'Find a facilities management supplier' page diff --git a/features/facilities_management/rm3830/home/navigation_links/navigation_links_signed_in.feature b/features/facilities_management/rm3830/home/navigation_links/navigation_links_signed_in.feature deleted file mode 100644 index 473e8d6078..0000000000 --- a/features/facilities_management/rm3830/home/navigation_links/navigation_links_signed_in.feature +++ /dev/null @@ -1,143 +0,0 @@ -Feature: Navigation links when signed in - - Background: I navigate to my account page - Given I sign in and navigate to my account for 'RM3830' - - Scenario: Start page - When I go to the facilities management RM3830 start page - And I should see the following navigation links: - | Sign out | - - Scenario: Not permitted page - My accout - And I go to the 'buyer' not permitted page for 'RM3830' - And I should see the following navigation links: - | My account | - | Sign out | - And I click on 'My account' - And I am on the 'Your account' page - - Scenario: Not permitted page - sign out - And I go to the 'buyer' not permitted page for 'RM3830' - And I should see the following navigation links: - | My account | - | Sign out | - And I click on 'Sign out' - And I am on the 'Sign in to your account' page - - Scenario: Cookies policy - My accout - When I click on 'Cookie policy' - Then I am on the 'Details about cookies on Crown Marketplace' page - And I should see the following navigation links: - | My account | - | Sign out | - And I click on 'My account' - And I am on the 'Your account' page - - Scenario: Cookies policy - Sign out - When I click on 'Cookie policy' - Then I am on the 'Details about cookies on Crown Marketplace' page - And I should see the following navigation links: - | My account | - | Sign out | - And I click on 'Sign out' - And I am on the 'Sign in to your account' page - - Scenario: Cookies settings - My accout - When I click on 'Cookie settings' - Then I am on the 'Cookies on Crown Marketplace' page - And I should see the following navigation links: - | My account | - | Sign out | - And I click on 'My account' - And I am on the 'Your account' page - - Scenario: Cookies settings - Sign out - When I click on 'Cookie settings' - Then I am on the 'Cookies on Crown Marketplace' page - And I should see the following navigation links: - | My account | - | Sign out | - And I click on 'Sign out' - And I am on the 'Sign in to your account' page - - Scenario: Accessibility statement - My accout - When I click on 'Accessibility statement' - Then I am on the 'Facilities Management (FM) Accessibility statement' page - And I should see the following navigation links: - | My account | - | Sign out | - And I click on 'My account' - And I am on the 'Your account' page - - Scenario: Accessibility statement - Sign out - When I click on 'Accessibility statement' - Then I am on the 'Facilities Management (FM) Accessibility statement' page - And I should see the following navigation links: - | My account | - | Sign out | - And I click on 'Sign out' - And I am on the 'Sign in to your account' page - - Scenario: Home page - Sign out - And I should see the following navigation links: - | Sign out | - And I click on 'Sign out' - And I am on the 'Sign in to your account' page - - Scenario: Procurement dashboard - My account - Then I click on 'Continue a procurement' - Then I am on the 'Procurements dashboard' page - And I should see the following navigation links: - | My account | - | Sign out | - And I click on 'My account' - And I am on the 'Your account' page - - Scenario: Procurement dashboard - Sign out - Then I click on 'Continue a procurement' - Then I am on the 'Procurements dashboard' page - And I should see the following navigation links: - | My account | - | Sign out | - And I click on 'Sign out' - And I am on the 'Sign in to your account' page - - Scenario: Buyer details - My account - Then I click on 'Manage my details' - Then I am on the 'Manage your details' page - And I should see the following navigation links: - | My account | - | Sign out | - And I click on 'My account' - And I am on the 'Your account' page - - Scenario: Buyer details - Sign out - Then I click on 'Manage my details' - Then I am on the 'Manage your details' page - And I should see the following navigation links: - | My account | - | Sign out | - And I click on 'Sign out' - And I am on the 'Sign in to your account' page - - Scenario: Buyer details - Add address - My account - Then I click on 'Manage my details' - Then I am on the 'Manage your details' page - And I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - And I should see the following navigation links: - | My account | - | Sign out | - And I click on 'My account' - And I am on the 'Your account' page - - Scenario: Buyer details - Add address - Sign out - Then I click on 'Manage my details' - Then I am on the 'Manage your details' page - And I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - And I should see the following navigation links: - | My account | - | Sign out | - And I click on 'Sign out' - And I am on the 'Sign in to your account' page \ No newline at end of file diff --git a/features/facilities_management/rm3830/home/navigation_links/navigation_links_signed_in_without_details.feature b/features/facilities_management/rm3830/home/navigation_links/navigation_links_signed_in_without_details.feature deleted file mode 100644 index 62a339c141..0000000000 --- a/features/facilities_management/rm3830/home/navigation_links/navigation_links_signed_in_without_details.feature +++ /dev/null @@ -1,18 +0,0 @@ -Feature: Navigation links when signed in - without buyer details - - Background: I navigate to manage my details - Given I sign in without details for 'RM3830' - - Scenario: Buyer details - Sign out - And I should see the following navigation links: - | Sign out | - And I click on 'Sign out' - And I am on the 'Sign in to your account' page - - Scenario: Buyer details - Add address - Sign out - And I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - And I should see the following navigation links: - | Sign out | - And I click on 'Sign out' - And I am on the 'Sign in to your account' page \ No newline at end of file diff --git a/features/facilities_management/rm3830/home/navigation_links/navigation_links_signed_out.feature b/features/facilities_management/rm3830/home/navigation_links/navigation_links_signed_out.feature deleted file mode 100644 index c305e96bbd..0000000000 --- a/features/facilities_management/rm3830/home/navigation_links/navigation_links_signed_out.feature +++ /dev/null @@ -1,43 +0,0 @@ -Feature: Navigation links when signed out - - Background: I navigate to the start page - When I go to the facilities management RM3830 start page - - Scenario: Start page - Then there are no header navigation links - - Scenario: Not permitted page - And I go to the 'buyer' not permitted page for 'RM3830' - Then there are no header navigation links - - Scenario: Sign in page - And I click on 'Start now' - Then I am on the 'Sign in to your account' page - And I should see the following navigation links: - | Back to start | - And I click on 'Back to start' - And I am on the 'Find a facilities management supplier' page - - Scenario: Cookies policy - When I click on 'Cookie policy' - Then I am on the 'Details about cookies on Crown Marketplace' page - And I should see the following navigation links: - | Back to start | - And I click on 'Back to start' - And I am on the 'Find a facilities management supplier' page - - Scenario: Cookies settings - When I click on 'Cookie settings' - Then I am on the 'Cookies on Crown Marketplace' page - And I should see the following navigation links: - | Back to start | - And I click on 'Back to start' - And I am on the 'Find a facilities management supplier' page - - Scenario: Accessibility statement - When I click on 'Accessibility statement' - Then I am on the 'Facilities Management (FM) Accessibility statement' page - And I should see the following navigation links: - | Back to start | - And I click on 'Back to start' - And I am on the 'Find a facilities management supplier' page diff --git a/features/facilities_management/rm3830/home/start_pages.feature b/features/facilities_management/rm3830/home/start_pages.feature deleted file mode 100644 index a8ec3644da..0000000000 --- a/features/facilities_management/rm3830/home/start_pages.feature +++ /dev/null @@ -1,46 +0,0 @@ -Feature: Start pages - - Scenario: Buyer sees start page - When I go to the facilities management RM3830 start page - Then I am on the 'Find a facilities management supplier' page - - Scenario: Buyer navigatis to sign in page - When I go to the facilities management RM3830 start page - And I am on the 'Find a facilities management supplier' page - When I click on 'Start now' - Then I am on the 'Sign in to your account' page - - Scenario: Logging on user without details - When I go to the facilities management RM3830 start page - And I am on the 'Find a facilities management supplier' page - When I click on 'Start now' - And I am on the 'Sign in to your account' page - Then I should sign in as an fm buyer without details - And I am on the 'Manage your details' page - - Scenario: Logging on user with details - When I go to the facilities management RM3830 start page - And I am on the 'Find a facilities management supplier' page - When I click on 'Start now' - And I am on the 'Sign in to your account' page - Then I should sign in as an fm buyer with details - And I am on the 'Your account' page - - Scenario: Viewing the home page - When I go to the facilities management RM3830 start page - And I am on the 'Find a facilities management supplier' page - When I click on 'Start now' - And I am on the 'Sign in to your account' page - Then I should sign in as an fm buyer with details - And I am on the 'Your account' page - Then the following content should be displayed on the page: - | Your account | - | Quick view suppliers | - | Quickly view suppliers who can provide services to your locations | - | Start a procurement | - | See shortlisted suppliers, estimated contract costs, and explore direct award or further competition options | - | Continue a procurement | - | Manage my buildings | - | Set up and manage your buildings for use in procurements | - | Manage my details | - | Update and edit your contact details | \ No newline at end of file diff --git a/features/facilities_management/rm3830/home/validations/sign_up_user_validations.feature b/features/facilities_management/rm3830/home/validations/sign_up_user_validations.feature deleted file mode 100644 index 0d12574118..0000000000 --- a/features/facilities_management/rm3830/home/validations/sign_up_user_validations.feature +++ /dev/null @@ -1,62 +0,0 @@ -@allow_list -Feature: Sign up user - - Background: navigate to create an account page - Given I go to the facilities management RM3830 start page - And I am on the 'Find a facilities management supplier' page - When I click on 'Start now' - Then I am on the 'Sign in to your account' page - And I click on 'Create an account' - Then I am on the 'Create a CCS account' page - - Scenario: Email validations - Given I enter '' for my email - And I enter 'Passowrd1!' for the password - And I enter 'Passowrd1!' for the password confirmation - When I click on 'Create account' - Then I should see the following error messages: - | | - - Examples: - | email | error_message | - | | Enter an email address in the correct format, like name@example.com | - | Test@test.com | Email address cannot contain any capital letters | - - Scenario: Not on allow list - Given I enter 'test@tmail.com' for my email - And I enter 'Passowrd1!' for the password - And I enter 'Passowrd1!' for the password confirmation - When I click on 'Create account' - Then I am on the 'You must use a public sector email address' page - - Scenario Outline: Password validations - Given I enter 'test@test.com' for my email - And I enter '' for the password - And I enter '' for the password confirmation - When I click on 'Create account' - Then I should see the following error messages: - | | - - Examples: - | password | error_message | - | Pass!1 | Password must be 8 characters or more | - | password1! | Password must include a capital letter | - | Password1 | Password must include a special character | - | Password! | Password must include a number | - - Scenario: Password blank - Given I enter 'test@test.com' for my email - And I enter '' for the password - And I enter '' for the password confirmation - When I click on 'Create account' - Then I should see the following error messages: - | Enter a password | - | Enter your password | - - Scenario: Password confirmation doesn't match - Given I enter 'test@test.com' for my email - And I enter 'Password1!' for the password - And I enter 'ValidPassw0rd!' for the password confirmation - When I click on 'Create account' - Then I should see the following error messages: - | Passwords don't match | \ No newline at end of file diff --git a/features/facilities_management/rm3830/procurements/contract_details/authorised_representative_details.feature b/features/facilities_management/rm3830/procurements/contract_details/authorised_representative_details.feature deleted file mode 100644 index 462157cb0d..0000000000 --- a/features/facilities_management/rm3830/procurements/contract_details/authorised_representative_details.feature +++ /dev/null @@ -1,142 +0,0 @@ -Feature: Authorised representative detail - - Background: Navigate to the Authorised representative detail question - Given I sign in and navigate to my account for 'RM3830' - And I have a procurement in DA draft at the 'contract_details' stage named 'Contact detail procurement' - When I navigate to the procurement 'Contact detail procurement' - Then I am on the 'Contract details' page - And I answer the 'Authorised representative details' contract detail question - Then I am on the 'Authorised representative details' page - - Scenario: When buyer details are selected - Given I select the buyer details for the contact details - And I click on 'Continue' - Then I am on the 'Contract details' page - And my 'Authorised representative details' contact detail name matchs the buyer details - Then I open the details for the 'Authorised representative details' - And my 'Authorised representative details' contact details match the buyer details - - @javascript - Scenario: Entering new details is selected - Given I select 'Enter a new authorised representative' for the contact details - And I click on the button with text 'Continue' - Then I am on the 'New authorised representative details' page - And I enter 'Testim' for the authorised representative detail 'Name' - And I enter 'Tester' for the authorised representative detail 'Job title' - And I enter ' 020 7946 0000' for the authorised representative detail 'Telephone number' - And I enter 'tes@test.com' for the authorised representative detail 'Email' - And I enter 'ST16 1AA' for the authorised representative detail 'Postcode' - And I click on 'Find address' - And I select 'Stafford Delivery Office, Newport Road, Stafford' from the address drop down - And I click on 'Save and return' - Then I am on the 'Authorised representative details' page - And I should see 'Testim, Tester' for the contact detail name - And I should see 'Stafford Delivery Office, Newport Road, Stafford ST16 1AA' for the contact detail address - And I click on 'Continue' - Then I am on the 'Contract details' page - And my 'Authorised representative details' contact detail name is 'Testim, Tester' - Then I open the details for the 'Authorised representative details' - And my 'Authorised representative details' contact details are as follows: - | tes@test.com | - | 020 7946 0000 | - | Stafford Delivery Office, Newport Road, Stafford ST16 1AA | - - @javascript - Scenario: Entering new details is selected - changing the details - Given I select 'Enter a new authorised representative' for the contact details - And I click on the button with text 'Continue' - Then I am on the 'New authorised representative details' page - And I enter 'Testim' for the authorised representative detail 'Name' - And I enter 'Tester' for the authorised representative detail 'Job title' - And I enter 'tes@test.com' for the authorised representative detail 'Email' - And I enter ' 020 7946 0000' for the authorised representative detail 'Telephone number' - And I enter 'ST16 1AA' for the authorised representative detail 'Postcode' - And I click on 'Find address' - And I select 'Stafford Delivery Office, Newport Road, Stafford' from the address drop down - And I click on 'Save and return' - Then I am on the 'Authorised representative details' page - And I should see 'Testim, Tester' for the contact detail name - And I should see 'Stafford Delivery Office, Newport Road, Stafford ST16 1AA' for the contact detail address - Given I click on 'Change' - Then I am on the 'New authorised representative details' page - And I enter 'Testom' for the authorised representative detail 'Name' - And I change my contact detail address - And I enter 'AA1 1AA' for the authorised representative detail 'Postcode' - And I click on 'Find address' - And I change my contact detail postcode - And I enter 'ST19 5AF' for the authorised representative detail 'Postcode' - And I click on 'Find address' - And I select 'Littleton Mews, Clay Street, Penkridge' from the address drop down - And I click on 'Save and return' - Then I am on the 'Authorised representative details' page - And I should see 'Testom, Tester' for the contact detail name - And I should see 'Littleton Mews, Clay Street, Penkridge ST19 5AF' for the contact detail address - And I click on 'Continue' - Then I am on the 'Contract details' page - And my 'Authorised representative details' contact detail name is 'Testom, Tester' - Then I open the details for the 'Authorised representative details' - And my 'Authorised representative details' contact details are as follows: - | tes@test.com | - | 020 7946 0000 | - | Littleton Mews, Clay Street, Penkridge ST19 5AF | - - @javascript - Scenario: Entering new details is selected - add address manually - Given I select 'Enter a new authorised representative' for the contact details - And I click on the button with text 'Continue' - Then I am on the 'New authorised representative details' page - And I enter 'Brigid' for the authorised representative detail 'Name' - And I enter 'Flame Bringer' for the authorised representative detail 'Job title' - And I enter ' 020 7946 0000' for the authorised representative detail 'Telephone number' - And I enter 'XC2 0MA' for the authorised representative detail 'Postcode' - And I click on 'Find address' - And I click on the link with text 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - And I enter 'Hardhaigh Palace' for the authorised representative detail 'Building and street' - And I enter 'Alba Cavanich' for the authorised representative detail 'Building and street address line 2' - And I enter 'Mor Ardain' for the authorised representative detail 'Town or city' - And I enter 'Alrest' for the authorised representative detail 'County' - And I enter 'SI4 5GX' for the authorised representative detail 'Postcode' - And I click on 'Continue' - Then I am on the 'New authorised representative details' page - And I enter 'jewelofempire@hardhaigh.palac.gov.ma' for the authorised representative detail 'Email' - And I click on 'Save and return' - Then I am on the 'Authorised representative details' page - And I should see 'Brigid, Flame Bringer' for the contact detail name - And I should see 'Hardhaigh Palace, Alba Cavanich, Mor Ardain, Alrest SI4 5GX' for the contact detail address - And I click on 'Continue' - Then I am on the 'Contract details' page - And my 'Authorised representative details' contact detail name is 'Brigid, Flame Bringer' - Then I open the details for the 'Authorised representative details' - And my 'Authorised representative details' contact details are as follows: - | jewelofempire@hardhaigh.palac.gov.ma | - | 020 7946 0000 | - | Hardhaigh Palace, Alba Cavanich, Mor Ardain, Alrest SI4 5GX | - - Scenario: Return links work and options are reset - Given I select 'Enter a new authorised representative' for the contact details - And I click on 'Continue' - Then I am on the 'New authorised representative details' page - Then I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - When I click on the 'Return to new authorised representative details' back link - Then I am on the 'New authorised representative details' page - When I click on the 'Return to authorised representative details' back link - Then I am on the 'Authorised representative details' page - When I click on the 'Return to contract details' back link - Then I am on the 'Contract details' page - And my answer to the 'Authorised representative details' contract detail question is 'Answer question' - Given I answer the 'Authorised representative details' contract detail question - Then I am on the 'Authorised representative details' page - And I select 'Enter a new authorised representative' for the contact details - And I click on 'Continue' - Then I am on the 'New authorised representative details' page - Then I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - When I click on the 'Return to new authorised representative details' return link - Then I am on the 'New authorised representative details' page - When I click on the 'Return to authorised representative details' return link - Then I am on the 'Authorised representative details' page - When I click on the 'Return to contract details' return link - Then I am on the 'Contract details' page - And my answer to the 'Authorised representative details' contract detail question is 'Answer question' diff --git a/features/facilities_management/rm3830/procurements/contract_details/governing_law.feature b/features/facilities_management/rm3830/procurements/contract_details/governing_law.feature deleted file mode 100644 index 082003ec84..0000000000 --- a/features/facilities_management/rm3830/procurements/contract_details/governing_law.feature +++ /dev/null @@ -1,35 +0,0 @@ -Feature: Governing law - - Background: Navigate to the Governing law question - Given I sign in and navigate to my account for 'RM3830' - And I have a procurement in DA draft at the 'contract_details' stage named 'Governing law procurement' - When I navigate to the procurement 'Governing law procurement' - Then I am on the 'Contract details' page - And I answer the 'Governing law' contract detail question - Then I am on the 'Governing law' page - - Scenario: Answer is saved - Given I pick 'English Law' for the governing law - And I click on 'Save and continue' - Then I am on the 'Contract details' page - And my answer to the 'Governing law' contract detail question is 'English Law' - - Scenario: Can change answer - Given I pick 'Scottish Law' for the governing law - And I click on 'Save and continue' - Then I am on the 'Contract details' page - And my answer to the 'Governing law' contract detail question is 'Scottish Law' - And I answer the 'Governing law' contract detail question - Then I am on the 'Governing law' page - When I pick 'Northern Ireland Law' for the governing law - And I click on 'Save and continue' - Then I am on the 'Contract details' page - And my answer to the 'Governing law' contract detail question is 'Northern Ireland Law' - - Scenario: Return links work - Given I click on the 'Return to contract details' back link - Then I am on the 'Contract details' page - Then I answer the 'Governing law' contract detail question - And I am on the 'Governing law' page - When I click on the 'Return to contract details' return link - Then I am on the 'Contract details' page \ No newline at end of file diff --git a/features/facilities_management/rm3830/procurements/contract_details/invoicing_contact_details.feature b/features/facilities_management/rm3830/procurements/contract_details/invoicing_contact_details.feature deleted file mode 100644 index 989357d616..0000000000 --- a/features/facilities_management/rm3830/procurements/contract_details/invoicing_contact_details.feature +++ /dev/null @@ -1,136 +0,0 @@ -Feature: Invoicing contact detail - - Background: Navigate to the Invoicing contact detail question - Given I sign in and navigate to my account for 'RM3830' - And I have a procurement in DA draft at the 'contract_details' stage named 'Contact detail procurement' - When I navigate to the procurement 'Contact detail procurement' - Then I am on the 'Contract details' page - And I answer the 'Invoicing contact details' contract detail question - Then I am on the 'Invoicing contact details' page - - Scenario: When buyer details are selected - Given I select the buyer details for the contact details - And I click on 'Continue' - Then I am on the 'Contract details' page - And my 'Invoicing contact details' contact detail name matchs the buyer details - Then I open the details for the 'Invoicing contact details' - And my 'Invoicing contact details' contact details match the buyer details - - @javascript - Scenario: Entering new details is selected - Given I select 'Enter a new invoicing contact' for the contact details - And I click on the button with text 'Continue' - Then I am on the 'New invoicing contact details' page - And I enter 'Testim' for the invoicing contact detail 'Name' - And I enter 'Tester' for the invoicing contact detail 'Job title' - And I enter 'tes@test.com' for the invoicing contact detail 'Email' - And I enter 'ST16 1AA' for the invoicing contact detail 'Postcode' - And I click on 'Find address' - And I select 'Stafford Delivery Office, Newport Road, Stafford' from the address drop down - And I click on 'Save and return' - Then I am on the 'Invoicing contact details' page - And I should see 'Testim, Tester' for the contact detail name - And I should see 'Stafford Delivery Office, Newport Road, Stafford ST16 1AA' for the contact detail address - And I click on 'Continue' - Then I am on the 'Contract details' page - And my 'Invoicing contact details' contact detail name is 'Testim, Tester' - Then I open the details for the 'Invoicing contact details' - And my 'Invoicing contact details' contact details are as follows: - | tes@test.com | - | Stafford Delivery Office, Newport Road, Stafford ST16 1AA | - - @javascript - Scenario: Entering new details is selected - changing the details - Given I select 'Enter a new invoicing contact' for the contact details - And I click on the button with text 'Continue' - Then I am on the 'New invoicing contact details' page - And I enter 'Testim' for the invoicing contact detail 'Name' - And I enter 'Tester' for the invoicing contact detail 'Job title' - And I enter 'tes@test.com' for the invoicing contact detail 'Email' - And I enter 'ST16 1AA' for the invoicing contact detail 'Postcode' - And I click on 'Find address' - And I select 'Stafford Delivery Office, Newport Road, Stafford' from the address drop down - And I click on 'Save and return' - Then I am on the 'Invoicing contact details' page - And I should see 'Testim, Tester' for the contact detail name - And I should see 'Stafford Delivery Office, Newport Road, Stafford ST16 1AA' for the contact detail address - Given I click on 'Change' - Then I am on the 'New invoicing contact details' page - And I enter 'Testom' for the invoicing contact detail 'Name' - And I change my contact detail address - And I enter 'AA1 1AA' for the invoicing contact detail 'Postcode' - And I click on 'Find address' - And I change my contact detail postcode - And I enter 'ST19 5AF' for the invoicing contact detail 'Postcode' - And I click on 'Find address' - And I select 'Littleton Mews, Clay Street, Penkridge' from the address drop down - And I click on 'Save and return' - Then I am on the 'Invoicing contact details' page - And I should see 'Testom, Tester' for the contact detail name - And I should see 'Littleton Mews, Clay Street, Penkridge ST19 5AF' for the contact detail address - And I click on 'Continue' - Then I am on the 'Contract details' page - And my 'Invoicing contact details' contact detail name is 'Testom, Tester' - Then I open the details for the 'Invoicing contact details' - And my 'Invoicing contact details' contact details are as follows: - | tes@test.com | - | Littleton Mews, Clay Street, Penkridge ST19 5AF | - - @javascript - Scenario: Entering new details is selected - add address manually - Given I select 'Enter a new invoicing contact' for the contact details - And I click on the button with text 'Continue' - Then I am on the 'New invoicing contact details' page - And I enter 'Morag Ladair' for the invoicing contact detail 'Name' - And I enter 'Special Inquisitor' for the invoicing contact detail 'Job title' - And I enter 'XC2 0MA' for the invoicing contact detail 'Postcode' - And I click on 'Find address' - And I click on the link with text 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - And I enter 'Hardhaigh Palace' for the invoicing contact detail 'Building and street' - And I enter 'Alba Cavanich' for the invoicing contact detail 'Building and street address line 2' - And I enter 'Mor Ardain' for the invoicing contact detail 'Town or city' - And I enter 'Alrest' for the invoicing contact detail 'County' - And I enter 'SI4 5GX' for the invoicing contact detail 'Postcode' - And I click on 'Continue' - Then I am on the 'New invoicing contact details' page - And I enter 'morag.ladair@hardhaigh.palac.gov.ma' for the invoicing contact detail 'Email' - And I click on 'Save and return' - Then I am on the 'Invoicing contact details' page - And I should see 'Morag Ladair, Special Inquisitor' for the contact detail name - And I should see 'Hardhaigh Palace, Alba Cavanich, Mor Ardain, Alrest SI4 5GX' for the contact detail address - And I click on 'Continue' - Then I am on the 'Contract details' page - And my 'Invoicing contact details' contact detail name is 'Morag Ladair, Special Inquisitor' - Then I open the details for the 'Invoicing contact details' - And my 'Invoicing contact details' contact details are as follows: - | morag.ladair@hardhaigh.palac.gov.ma | - | Hardhaigh Palace, Alba Cavanich, Mor Ardain, Alrest SI4 5GX | - - Scenario: Return links work and options are reset - Given I select 'Enter a new invoicing contact' for the contact details - And I click on 'Continue' - Then I am on the 'New invoicing contact details' page - Then I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - When I click on the 'Return to new invoicing contact details' back link - Then I am on the 'New invoicing contact details' page - When I click on the 'Return to invoicing contact details' back link - Then I am on the 'Invoicing contact details' page - When I click on the 'Return to contract details' back link - Then I am on the 'Contract details' page - And my answer to the 'Invoicing contact details' contract detail question is 'Answer question' - Given I answer the 'Invoicing contact details' contract detail question - Then I am on the 'Invoicing contact details' page - And I select 'Enter a new invoicing contact' for the contact details - And I click on 'Continue' - Then I am on the 'New invoicing contact details' page - Then I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - When I click on the 'Return to new invoicing contact details' return link - Then I am on the 'New invoicing contact details' page - When I click on the 'Return to invoicing contact details' return link - Then I am on the 'Invoicing contact details' page - When I click on the 'Return to contract details' return link - Then I am on the 'Contract details' page - And my answer to the 'Invoicing contact details' contract detail question is 'Answer question' diff --git a/features/facilities_management/rm3830/procurements/contract_details/local_government_pension_schemes.feature b/features/facilities_management/rm3830/procurements/contract_details/local_government_pension_schemes.feature deleted file mode 100644 index ce7919afbc..0000000000 --- a/features/facilities_management/rm3830/procurements/contract_details/local_government_pension_schemes.feature +++ /dev/null @@ -1,96 +0,0 @@ -Feature: Local government pension scheme - - Background: Navigate to the Local government pension scheme question - Given I sign in and navigate to my account for 'RM3830' - And I have a procurement in DA draft at the 'contract_details' stage named 'LGPS procurement' - When I navigate to the procurement 'LGPS procurement' - Then I am on the 'Contract details' page - And I answer the 'Local Government Pension Scheme' contract detail question - Then I am on the 'Local Government Pension Scheme' page - - Scenario: When no is selected - Given I select 'No' for the LGPS question - And I click on 'Save and continue' - Then I am on the 'Contract details' page - And my answer to the 'Local Government Pension Scheme' contract detail question is 'Not applicable' - - Scenario: When yes is selected - Given I select 'Yes' for the LGPS question - And I click on 'Save and continue' - Then I am on the 'Pension funds' page - And I enter the name 'Pension 1' and '43' percent for pension number 1 - When I click on 'Save and return' - Then I am on the 'Contract details' page - And the following pensions are listed: - | Pension 1, 43.0% | - - @javascript - Scenario: I can add and remove pension funds - Given I select 'Yes' for the LGPS question - And I click on 'Save and continue' - Then I am on the 'Pension funds' page - And I add 4 pension funds - Then there are 5 pension fund rows - And the add pension fund button has text 'Add another pension fund (94 remaining)' - And I enter the name 'Pension 5' and '3.14' percent for pension number 1 - And I enter the name 'Pension 4' and '15.9' percent for pension number 2 - And I enter the name 'Pension 3' and '2.65' percent for pension number 3 - And I enter the name 'Pension 2' and '3.58' percent for pension number 4 - And I enter the name 'Pension 1' and '9.79' percent for pension number 5 - When I click on 'Save and return' - Then I am on the 'Contract details' page - And the following pensions are listed: - | Pension 5, 3.14% | - | Pension 4, 15.9% | - | Pension 3, 2.65% | - | Pension 2, 3.58% | - | Pension 1, 9.79% | - And I open the 'Pension scheme details' details - And I click on 'Add or remove pension funds' - Then I am on the 'Pension funds' page - And I remove pension fund number 2 - And I remove pension fund number 3 - Then there are 3 pension fund rows - And the add pension fund button has text 'Add another pension fund (96 remaining)' - When I click on 'Save and return' - Then I am on the 'Contract details' page - And the following pensions are listed: - | Pension 5, 3.14% | - | Pension 3, 2.65% | - | Pension 1, 9.79% | - And I answer the 'Local Government Pension Scheme' contract detail question - Then I am on the 'Local Government Pension Scheme' page - And I click on 'Save and continue' - Then I am on the 'Pension funds' page - And I add 1 pension fund - And I remove pension fund number 4 - And I remove pension fund number 3 - Then there are 2 pension fund rows - And the add pension fund button has text 'Add another pension fund (97 remaining)' - And I enter the name 'Pension 1' and '8.78' percent for pension number 2 - Then I click on 'Save and return' - Then I am on the 'Contract details' page - And the following pensions are listed: - | Pension 5, 3.14% | - | Pension 1, 8.78% | - - Scenario: Return links work - When I click on the 'Return to contract details' return link - Then I am on the 'Contract details' page - Then I answer the 'Local Government Pension Scheme' contract detail question - And I am on the 'Local Government Pension Scheme' page - Then I select 'Yes' for the LGPS question - And I click on 'Save and continue' - Then I am on the 'Pension funds' page - Given I click on the 'Return to Local Government Pension Scheme' back link - And I am on the 'Local Government Pension Scheme' page - And I click on the 'Return to contract details' back link - Then I am on the 'Contract details' page - And my answer to the 'Local Government Pension Scheme' contract detail question is 'Answer question' - Then I answer the 'Local Government Pension Scheme' contract detail question - And I am on the 'Local Government Pension Scheme' page - Then I select 'Yes' for the LGPS question - And I click on 'Save and continue' - Then I am on the 'Pension funds' page - When I click on the 'Return to contract details' return link - Then I am on the 'Contract details' page diff --git a/features/facilities_management/rm3830/procurements/contract_details/notices_contact_details.feature b/features/facilities_management/rm3830/procurements/contract_details/notices_contact_details.feature deleted file mode 100644 index e13216797c..0000000000 --- a/features/facilities_management/rm3830/procurements/contract_details/notices_contact_details.feature +++ /dev/null @@ -1,136 +0,0 @@ -Feature: Notices contact detail - - Background: Navigate to the Notices contact detail question - Given I sign in and navigate to my account for 'RM3830' - And I have a procurement in DA draft at the 'contract_details' stage named 'Contact detail procurement' - When I navigate to the procurement 'Contact detail procurement' - Then I am on the 'Contract details' page - And I answer the 'Notices contact details' contract detail question - Then I am on the 'Notices contact details' page - - Scenario: When buyer details are selected - Given I select the buyer details for the contact details - And I click on 'Continue' - Then I am on the 'Contract details' page - And my 'Notices contact details' contact detail name matchs the buyer details - Then I open the details for the 'Notices contact details' - And my 'Notices contact details' contact details match the buyer details - - @javascript - Scenario: Entering new details is selected - Given I select 'Enter a new contact for notices' for the contact details - And I click on the button with text 'Continue' - Then I am on the 'New notices contact details' page - And I enter 'Testim' for the notices contact detail 'Name' - And I enter 'Tester' for the notices contact detail 'Job title' - And I enter 'tes@test.com' for the notices contact detail 'Email' - And I enter 'ST16 1AA' for the notices contact detail 'Postcode' - And I click on 'Find address' - And I select 'Stafford Delivery Office, Newport Road, Stafford' from the address drop down - And I click on 'Save and return' - Then I am on the 'Notices contact details' page - And I should see 'Testim, Tester' for the contact detail name - And I should see 'Stafford Delivery Office, Newport Road, Stafford ST16 1AA' for the contact detail address - And I click on 'Continue' - Then I am on the 'Contract details' page - And my 'Notices contact details' contact detail name is 'Testim, Tester' - Then I open the details for the 'Notices contact details' - And my 'Notices contact details' contact details are as follows: - | tes@test.com | - | Stafford Delivery Office, Newport Road, Stafford ST16 1AA | - - @javascript - Scenario: Entering new details is selected - changing the details - Given I select 'Enter a new contact for notices' for the contact details - And I click on the button with text 'Continue' - Then I am on the 'New notices contact details' page - And I enter 'Testim' for the notices contact detail 'Name' - And I enter 'Tester' for the notices contact detail 'Job title' - And I enter 'tes@test.com' for the notices contact detail 'Email' - And I enter 'ST16 1AA' for the notices contact detail 'Postcode' - And I click on 'Find address' - And I select 'Stafford Delivery Office, Newport Road, Stafford' from the address drop down - And I click on 'Save and return' - Then I am on the 'Notices contact details' page - And I should see 'Testim, Tester' for the contact detail name - And I should see 'Stafford Delivery Office, Newport Road, Stafford ST16 1AA' for the contact detail address - Given I click on 'Change' - Then I am on the 'New notices contact details' page - And I enter 'Testom' for the notices contact detail 'Name' - And I change my contact detail address - And I enter 'AA1 1AA' for the notices contact detail 'Postcode' - And I click on 'Find address' - And I change my contact detail postcode - And I enter 'ST19 5AF' for the notices contact detail 'Postcode' - And I click on 'Find address' - And I select 'Littleton Mews, Clay Street, Penkridge' from the address drop down - And I click on 'Save and return' - Then I am on the 'Notices contact details' page - And I should see 'Testom, Tester' for the contact detail name - And I should see 'Littleton Mews, Clay Street, Penkridge ST19 5AF' for the contact detail address - And I click on 'Continue' - Then I am on the 'Contract details' page - And my 'Notices contact details' contact detail name is 'Testom, Tester' - Then I open the details for the 'Notices contact details' - And my 'Notices contact details' contact details are as follows: - | tes@test.com | - | Littleton Mews, Clay Street, Penkridge ST19 5AF | - - @javascript - Scenario: Entering new details is selected - add address manually - Given I select 'Enter a new contact for notices' for the contact details - And I click on the button with text 'Continue' - Then I am on the 'New notices contact details' page - And I enter 'Nial Ladair' for the notices contact detail 'Name' - And I enter 'Emperor' for the notices contact detail 'Job title' - And I enter 'XC2 0MA' for the notices contact detail 'Postcode' - And I click on 'Find address' - And I click on the link with text 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - And I enter 'Hardhaigh Palace' for the notices contact detail 'Building and street' - And I enter 'Alba Cavanich' for the notices contact detail 'Building and street address line 2' - And I enter 'Mor Ardain' for the notices contact detail 'Town or city' - And I enter 'Alrest' for the notices contact detail 'County' - And I enter 'SI4 5GX' for the notices contact detail 'Postcode' - And I click on 'Continue' - Then I am on the 'New notices contact details' page - And I enter 'emperor@hardhaigh.palac.gov.ma' for the notices contact detail 'Email' - And I click on 'Save and return' - Then I am on the 'Notices contact details' page - And I should see 'Nial Ladair, Emperor' for the contact detail name - And I should see 'Hardhaigh Palace, Alba Cavanich, Mor Ardain, Alrest SI4 5GX' for the contact detail address - And I click on 'Continue' - Then I am on the 'Contract details' page - And my 'Notices contact details' contact detail name is 'Nial Ladair, Emperor' - Then I open the details for the 'Notices contact details' - And my 'Notices contact details' contact details are as follows: - | emperor@hardhaigh.palac.gov.ma | - | Hardhaigh Palace, Alba Cavanich, Mor Ardain, Alrest SI4 5GX | - - Scenario: Return links work and options are reset - Given I select 'Enter a new contact for notices' for the contact details - And I click on 'Continue' - Then I am on the 'New notices contact details' page - Then I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - When I click on the 'Return to new notices contact details' back link - Then I am on the 'New notices contact details' page - When I click on the 'Return to notices contact details' back link - Then I am on the 'Notices contact details' page - When I click on the 'Return to contract details' back link - Then I am on the 'Contract details' page - And my answer to the 'Notices contact details' contract detail question is 'Answer question' - Given I answer the 'Notices contact details' contract detail question - Then I am on the 'Notices contact details' page - And I select 'Enter a new contact for notices' for the contact details - And I click on 'Continue' - Then I am on the 'New notices contact details' page - Then I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - When I click on the 'Return to new notices contact details' return link - Then I am on the 'New notices contact details' page - When I click on the 'Return to notices contact details' return link - Then I am on the 'Notices contact details' page - When I click on the 'Return to contract details' return link - Then I am on the 'Contract details' page - And my answer to the 'Notices contact details' contract detail question is 'Answer question' diff --git a/features/facilities_management/rm3830/procurements/contract_details/payment_method.feature b/features/facilities_management/rm3830/procurements/contract_details/payment_method.feature deleted file mode 100644 index 59378e4207..0000000000 --- a/features/facilities_management/rm3830/procurements/contract_details/payment_method.feature +++ /dev/null @@ -1,35 +0,0 @@ -Feature: Payment method - - Background: Navigate to the Payment method question - Given I sign in and navigate to my account for 'RM3830' - And I have a procurement in DA draft at the 'contract_details' stage named 'Payment method procurement' - When I navigate to the procurement 'Payment method procurement' - Then I am on the 'Contract details' page - And I answer the 'Payment method' contract detail question - Then I am on the 'Payment method' page - - Scenario: Answer is saved - Given I pick 'BACS payment' for the payment method - And I click on 'Save and return' - Then I am on the 'Contract details' page - And my answer to the 'Payment method' contract detail question is 'BACS payment' - - Scenario: Can change answer - Given I pick 'BACS payment' for the payment method - And I click on 'Save and return' - Then I am on the 'Contract details' page - And my answer to the 'Payment method' contract detail question is 'BACS payment' - And I answer the 'Payment method' contract detail question - Then I am on the 'Payment method' page - When I pick 'Government procurement card' for the payment method - And I click on 'Save and return' - Then I am on the 'Contract details' page - And my answer to the 'Payment method' contract detail question is 'Government procurement card' - - Scenario: Return links work - Given I click on the 'Return to contract details' back link - Then I am on the 'Contract details' page - Then I answer the 'Payment method' contract detail question - And I am on the 'Payment method' page - When I click on the 'Return to contract details' return link - Then I am on the 'Contract details' page \ No newline at end of file diff --git a/features/facilities_management/rm3830/procurements/contract_details/security_policy_document.feature b/features/facilities_management/rm3830/procurements/contract_details/security_policy_document.feature deleted file mode 100644 index aa1c6c28ad..0000000000 --- a/features/facilities_management/rm3830/procurements/contract_details/security_policy_document.feature +++ /dev/null @@ -1,47 +0,0 @@ -Feature: Security policy document - - Background: Navigate to the Security policy document question - Given I sign in and navigate to my account for 'RM3830' - And I have a procurement in DA draft at the 'contract_details' stage named 'Security policy document procurement' - When I navigate to the procurement 'Security policy document procurement' - Then I am on the 'Contract details' page - And I answer the 'Security policy' contract detail question - Then I am on the 'Security policy document' page - - Scenario: When no is selected - Given I select 'No' for the security policy document question - When I click on 'Save and return' - Then I am on the 'Contract details' page - And my answer to the 'Security policy' contract detail question is 'Not applicable' - - Scenario: When yes is selected - Given I select 'Yes' for the security policy document question - And I enter 'Test' for the security policy document 'name' - And I enter '12' for the security policy document 'number' - And I upload security policy document that is 'valid' - When I click on 'Save and return' - Then I am on the 'Contract details' page - And my answer to the 'Security policy' contract detail question is 'Attachment 1 - About the Direct Award v3.0.pdf' - - Scenario: When the answer is changed - And I select 'Yes' for the security policy document question - And I enter 'Test' for the security policy document 'name' - And I enter '12' for the security policy document 'number' - And I upload security policy document that is 'valid' - When I click on 'Save and return' - Then I am on the 'Contract details' page - And my answer to the 'Security policy' contract detail question is 'Attachment 1 - About the Direct Award v3.0.pdf' - Given I answer the 'Security policy' contract detail question - Then I am on the 'Security policy document' page - Given I select 'No' for the security policy document question - When I click on 'Save and return' - Then I am on the 'Contract details' page - And my answer to the 'Security policy' contract detail question is 'Not applicable' - - Scenario: Return links work - Given I click on the 'Return to contract details' back link - Then I am on the 'Contract details' page - Then I answer the 'Security policy' contract detail question - And I am on the 'Security policy document' page - When I click on the 'Return to contract details' return link - Then I am on the 'Contract details' page \ No newline at end of file diff --git a/features/facilities_management/rm3830/procurements/contract_details/validations/authorised_representative_detail_validations.feature b/features/facilities_management/rm3830/procurements/contract_details/validations/authorised_representative_detail_validations.feature deleted file mode 100644 index 585283a9c1..0000000000 --- a/features/facilities_management/rm3830/procurements/contract_details/validations/authorised_representative_detail_validations.feature +++ /dev/null @@ -1,79 +0,0 @@ -Feature: Authorised representative detail validations - - Background: Navigate to the Authorised representative detail question - Given I sign in and navigate to my account for 'RM3830' - And I have a procurement in DA draft at the 'contract_details' stage named 'Contact detail procurement' - When I navigate to the procurement 'Contact detail procurement' - Then I am on the 'Contract details' page - And I answer the 'Authorised representative details' contract detail question - Then I am on the 'Authorised representative details' page - - Scenario: Nothing is selected - Given I click on 'Continue' - Then I should see the following error messages: - | Select one option | - - Scenario: Enter a new detail is selected and everything is blank - Given I select 'Enter a new authorised representative' for the contact details - And I click on 'Continue' - Then I am on the 'New authorised representative details' page - And I click on 'Save and return' - Then I should see the following error messages: - | Enter the new authorised representative name | - | Enter the new authorised representative job title | - | Enter an email address in the correct format, for example name@organisation.gov.uk | - | Enter a valid postcode, for example SW1A 1AA | - | Enter a UK telephone number, for example 020 7946 0000 | - - Scenario: Email, telephone number and postcode invalid - Given I select 'Enter a new authorised representative' for the contact details - And I click on 'Continue' - Then I am on the 'New authorised representative details' page - And I enter 'Testim' for the authorised representative detail 'Name' - And I enter 'Tester' for the authorised representative detail 'Job title' - And I enter 'Tes@tes' for the authorised representative detail 'Email' - And I enter '989 123' for the authorised representative detail 'Telephone number' - And I enter 'PLUS ULTRA' for the authorised representative detail 'Postcode' - And I click on 'Save and return' - Then I should see the following error messages: - | Enter an email address in the correct format, for example name@organisation.gov.uk | - | Enter a valid postcode, for example SW1A 1AA | - | Enter a UK telephone number, for example 020 7946 0000 | - - Scenario: Select an address - Given I select 'Enter a new authorised representative' for the contact details - And I click on 'Continue' - Then I am on the 'New authorised representative details' page - And I enter 'Testim' for the authorised representative detail 'Name' - And I enter 'Tester' for the authorised representative detail 'Job title' - And I enter 'tes@test.com' for the authorised representative detail 'Email' - And I enter '07105 016 101' for the authorised representative detail 'Telephone number' - And I enter 'ST16 1AA' for the authorised representative detail 'Postcode' - And I click on 'Save and return' - Then I should see the following error messages: - | Select an address from the list or add a missing address | - - Scenario: Add address manually all blank - Given I select 'Enter a new authorised representative' for the contact details - And I click on 'Continue' - Then I am on the 'New authorised representative details' page - And I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - And I click on 'Continue' - Then I should see the following error messages: - | Enter the building or street name of the address | - | Enter the town or city of the address | - | Enter a valid postcode, for example SW1A 1AA | - - Scenario: Add address manually invalid postcode - Given I select 'Enter a new authorised representative' for the contact details - And I click on 'Continue' - Then I am on the 'New authorised representative details' page - And I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - And I enter 'Some addrees info' for the authorised representative detail 'Building and street' - And I enter 'Argentum' for the authorised representative detail 'Town or city' - And I enter 'Nopon' for the authorised representative detail 'Postcode' - And I click on 'Continue' - Then I should see the following error messages: - | Enter a valid postcode, for example SW1A 1AA | diff --git a/features/facilities_management/rm3830/procurements/contract_details/validations/governing_law_validations.feature b/features/facilities_management/rm3830/procurements/contract_details/validations/governing_law_validations.feature deleted file mode 100644 index 577e7b6f91..0000000000 --- a/features/facilities_management/rm3830/procurements/contract_details/validations/governing_law_validations.feature +++ /dev/null @@ -1,12 +0,0 @@ -Feature: Governing law validations - - Scenario: Nothing selected on governing law - Given I sign in and navigate to my account for 'RM3830' - And I have a procurement in DA draft at the 'contract_details' stage named 'Governing law procurement' - When I navigate to the procurement 'Governing law procurement' - Then I am on the 'Contract details' page - And I answer the 'Governing law' contract detail question - Then I am on the 'Governing law' page - And I click on 'Save and continue' - Then I should see the following error messages: - | Select one option | diff --git a/features/facilities_management/rm3830/procurements/contract_details/validations/invoicing_contact_detail_validations.feature b/features/facilities_management/rm3830/procurements/contract_details/validations/invoicing_contact_detail_validations.feature deleted file mode 100644 index 48b2f7f736..0000000000 --- a/features/facilities_management/rm3830/procurements/contract_details/validations/invoicing_contact_detail_validations.feature +++ /dev/null @@ -1,75 +0,0 @@ -Feature: Invoicing contact detail validations - - Background: Navigate to the Invoicing contact detail question - Given I sign in and navigate to my account for 'RM3830' - And I have a procurement in DA draft at the 'contract_details' stage named 'Contact detail procurement' - When I navigate to the procurement 'Contact detail procurement' - Then I am on the 'Contract details' page - And I answer the 'Invoicing contact details' contract detail question - Then I am on the 'Invoicing contact details' page - - Scenario: Nothing is selected - Given I click on 'Continue' - Then I should see the following error messages: - | Select one option | - - Scenario: Enter a new detail is selected and everything is blank - Given I select 'Enter a new invoicing contact' for the contact details - And I click on 'Continue' - Then I am on the 'New invoicing contact details' page - And I click on 'Save and return' - Then I should see the following error messages: - | Enter the new invoicing contact name | - | Enter the new invoicing contact job title | - | Enter an email address in the correct format, for example name@organisation.gov.uk | - | Enter a valid postcode, for example SW1A 1AA | - - Scenario: Email and postcode invalid - Given I select 'Enter a new invoicing contact' for the contact details - And I click on 'Continue' - Then I am on the 'New invoicing contact details' page - And I enter 'Testim' for the invoicing contact detail 'Name' - And I enter 'Tester' for the invoicing contact detail 'Job title' - And I enter 'Tes@tes' for the invoicing contact detail 'Email' - And I enter 'PLUS ULTRA' for the invoicing contact detail 'Postcode' - And I click on 'Save and return' - Then I should see the following error messages: - | Enter an email address in the correct format, for example name@organisation.gov.uk | - | Enter a valid postcode, for example SW1A 1AA | - - Scenario: Select an address - Given I select 'Enter a new invoicing contact' for the contact details - And I click on 'Continue' - Then I am on the 'New invoicing contact details' page - And I enter 'Testim' for the invoicing contact detail 'Name' - And I enter 'Tester' for the invoicing contact detail 'Job title' - And I enter 'tes@test.com' for the invoicing contact detail 'Email' - And I enter 'ST16 1AA' for the invoicing contact detail 'Postcode' - And I click on 'Save and return' - Then I should see the following error messages: - | Select an address from the list or add a missing address | - - Scenario: Add address manually all blank - Given I select 'Enter a new invoicing contact' for the contact details - And I click on 'Continue' - Then I am on the 'New invoicing contact details' page - And I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - And I click on 'Continue' - Then I should see the following error messages: - | Enter the building or street name of the address | - | Enter the town or city of the address | - | Enter a valid postcode, for example SW1A 1AA | - - Scenario: Add address manually invalid postcode - Given I select 'Enter a new invoicing contact' for the contact details - And I click on 'Continue' - Then I am on the 'New invoicing contact details' page - And I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - And I enter 'Some addrees info' for the invoicing contact detail 'Building and street' - And I enter 'Mor Ardain' for the invoicing contact detail 'Town or city' - And I enter 'TURTUS' for the invoicing contact detail 'Postcode' - And I click on 'Continue' - Then I should see the following error messages: - | Enter a valid postcode, for example SW1A 1AA | diff --git a/features/facilities_management/rm3830/procurements/contract_details/validations/local_government_pension_scheme_validations.feature b/features/facilities_management/rm3830/procurements/contract_details/validations/local_government_pension_scheme_validations.feature deleted file mode 100644 index 2a71b2ae83..0000000000 --- a/features/facilities_management/rm3830/procurements/contract_details/validations/local_government_pension_scheme_validations.feature +++ /dev/null @@ -1,92 +0,0 @@ -Feature: Local government pension scheme validations - - Background: Navigate to the Local government pension scheme question - Given I sign in and navigate to my account for 'RM3830' - And I have a procurement in DA draft at the 'contract_details' stage named 'LGPS procurement' - When I navigate to the procurement 'LGPS procurement' - Then I am on the 'Contract details' page - And I answer the 'Local Government Pension Scheme' contract detail question - Then I am on the 'Local Government Pension Scheme' page - - Scenario: Nothing is selected - Given I click on 'Save and continue' - Then I should see the following error messages: - | Select one answer | - - Scenario: Yes selected and nothing entered - Given I select 'Yes' for the LGPS question - And I click on 'Save and continue' - Then I am on the 'Pension funds' page - And I click on 'Save and return' - Then I should see the following error messages: - | Enter a pension fund name | - | Enter a percentage of pensionable pay | - - Scenario Outline: Basic pension fund percentage validations - Given I select 'Yes' for the LGPS question - And I click on 'Save and continue' - Then I am on the 'Pension funds' page - And I enter the name 'Pension 1' and '' percent for pension number 1 - And I click on 'Save and return' - Then I should see the following error messages: - | | - - Examples: - | pension_percentage | error_message | - | 0 | Percentage of pensionable pay must be a number between 0.0001 to 100 inclusive, like 99.9999 or 34 | - | 100.01 | Percentage of pensionable pay must be a number between 0.0001 to 100 inclusive, like 99.9999 or 34 | - | 34.00005 | Percentage of pensionable pay must be a number between 0.0001 to 100 inclusive, like 99.9999 or 34 | - | Zeke von Genbu | Percentage of pensionable pay must be a number between 0.0001 to 100 inclusive, like 99.9999 or 34 | - - @javascript - Scenario: Pension name duplication - First entry - Given I select 'Yes' for the LGPS question - And I click on 'Save and continue' - Then I am on the 'Pension funds' page - And I add 1 pension fund - And I enter the name 'Unique pension name' and '10' percent for pension number 1 - And I enter the name 'Unique pension name' and '11' percent for pension number 2 - And I click on 'Save and return' - Then I should see the following error messages: - | Enter a unique pension fund name, duplication is not allowed | - - @javascript - Scenario: Pension name duplication - Saved entry - Given I select 'Yes' for the LGPS question - And I click on 'Save and continue' - Then I am on the 'Pension funds' page - And I enter the name 'Unique pension name' and '10' percent for pension number 1 - And I click on 'Save and return' - Then I am on the 'Contract details' page - And I open the 'Pension scheme details' details - And I click on 'Add or remove pension funds' - Then I am on the 'Pension funds' page - And I add 1 pension fund - And I enter the name 'Unique pension name' and '11' percent for pension number 2 - And I click on 'Save and return' - Then I should see the following error messages: - | Enter a unique pension fund name, duplication is not allowed | - - @javascript - Scenario: Multipl pensions multiple errors - Given I select 'Yes' for the LGPS question - And I click on 'Save and continue' - Then I am on the 'Pension funds' page - And I add 3 pension funds - And I enter the name 'Pension 1' and '10' percent for pension number 1 - And I enter the name 'Pension 2' and '111' percent for pension number 2 - And I enter the name 'Pension 3' and '' percent for pension number 3 - And I enter the name 'Pension 1' and '0' percent for pension number 4 - And I click on 'Save and return' - Then I should see the following error messages: - | Percentage of pensionable pay must be a number between 0.0001 to 100 inclusive, like 99.9999 or 34 | - | Enter a percentage of pensionable pay | - | Percentage of pensionable pay must be a number between 0.0001 to 100 inclusive, like 99.9999 or 34 | - | Enter a unique pension fund name, duplication is not allowed | - And pension 2 should have the following error messages: - | Percentage of pensionable pay must be a number between 0.0001 to 100 inclusive, like 99.9999 or 34 | - And pension 3 should have the following error messages: - | Enter a percentage of pensionable pay | - And pension 4 should have the following error messages: - | Enter a unique pension fund name, duplication is not allowed | - | Percentage of pensionable pay must be a number between 0.0001 to 100 inclusive, like 99.9999 or 34 | \ No newline at end of file diff --git a/features/facilities_management/rm3830/procurements/contract_details/validations/notices_contact_detail_validations.feature b/features/facilities_management/rm3830/procurements/contract_details/validations/notices_contact_detail_validations.feature deleted file mode 100644 index e94c7d9f93..0000000000 --- a/features/facilities_management/rm3830/procurements/contract_details/validations/notices_contact_detail_validations.feature +++ /dev/null @@ -1,75 +0,0 @@ -Feature: Notices contact detail validations - - Background: Navigate to the Notices contact detail question - Given I sign in and navigate to my account for 'RM3830' - And I have a procurement in DA draft at the 'contract_details' stage named 'Contact detail procurement' - When I navigate to the procurement 'Contact detail procurement' - Then I am on the 'Contract details' page - And I answer the 'Notices contact details' contract detail question - Then I am on the 'Notices contact details' page - - Scenario: Nothing is selected - Given I click on 'Continue' - Then I should see the following error messages: - | Select one option | - - Scenario: Enter a new detail is selected and everything is blank - Given I select 'Enter a new contact for notices' for the contact details - And I click on 'Continue' - Then I am on the 'New notices contact details' page - And I click on 'Save and return' - Then I should see the following error messages: - | Enter the new notices contact name | - | Enter the new notices contact job title | - | Enter an email address in the correct format, for example name@organisation.gov.uk | - | Enter a valid postcode, for example SW1A 1AA | - - Scenario: Email and postcode invalid - Given I select 'Enter a new contact for notices' for the contact details - And I click on 'Continue' - Then I am on the 'New notices contact details' page - And I enter 'Testim' for the notices contact detail 'Name' - And I enter 'Tester' for the notices contact detail 'Job title' - And I enter 'Tes@tes' for the notices contact detail 'Email' - And I enter 'PLUS ULTRA' for the notices contact detail 'Postcode' - And I click on 'Save and return' - Then I should see the following error messages: - | Enter an email address in the correct format, for example name@organisation.gov.uk | - | Enter a valid postcode, for example SW1A 1AA | - - Scenario: Select an address - Given I select 'Enter a new contact for notices' for the contact details - And I click on 'Continue' - Then I am on the 'New notices contact details' page - And I enter 'Testim' for the notices contact detail 'Name' - And I enter 'Tester' for the notices contact detail 'Job title' - And I enter 'tes@test.com' for the notices contact detail 'Email' - And I enter 'ST16 1AA' for the notices contact detail 'Postcode' - And I click on 'Save and return' - Then I should see the following error messages: - | Select an address from the list or add a missing address | - - Scenario: Add address manually all blank - Given I select 'Enter a new contact for notices' for the contact details - And I click on 'Continue' - Then I am on the 'New notices contact details' page - And I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - And I click on 'Continue' - Then I should see the following error messages: - | Enter the building or street name of the address | - | Enter the town or city of the address | - | Enter a valid postcode, for example SW1A 1AA | - - Scenario: Add address manually invalid postcode - Given I select 'Enter a new contact for notices' for the contact details - And I click on 'Continue' - Then I am on the 'New notices contact details' page - And I click on 'Enter address manually, if you can’t find address' - Then I am on the 'Add address' page - And I enter 'Some addrees info' for the notices contact detail 'Building and street' - And I enter 'Indoline' for the notices contact detail 'Town or city' - And I enter 'Fonsett' for the notices contact detail 'Postcode' - And I click on 'Continue' - Then I should see the following error messages: - | Enter a valid postcode, for example SW1A 1AA | diff --git a/features/facilities_management/rm3830/procurements/contract_details/validations/payment_method_validations.feature b/features/facilities_management/rm3830/procurements/contract_details/validations/payment_method_validations.feature deleted file mode 100644 index 4e63859cdf..0000000000 --- a/features/facilities_management/rm3830/procurements/contract_details/validations/payment_method_validations.feature +++ /dev/null @@ -1,12 +0,0 @@ -Feature: Payment method validations - - Scenario: Nothing selected on payment method - Given I sign in and navigate to my account for 'RM3830' - And I have a procurement in DA draft at the 'contract_details' stage named 'Payment method procurement' - When I navigate to the procurement 'Payment method procurement' - Then I am on the 'Contract details' page - And I answer the 'Payment method' contract detail question - Then I am on the 'Payment method' page - And I click on 'Save and return' - Then I should see the following error messages: - | Select one payment method | diff --git a/features/facilities_management/rm3830/procurements/contract_details/validations/security_policy_document_validations.feature b/features/facilities_management/rm3830/procurements/contract_details/validations/security_policy_document_validations.feature deleted file mode 100644 index b8df06e2bb..0000000000 --- a/features/facilities_management/rm3830/procurements/contract_details/validations/security_policy_document_validations.feature +++ /dev/null @@ -1,42 +0,0 @@ -Feature: Security policy document validations - - Background: Navigate to the Security policy document question - Given I sign in and navigate to my account for 'RM3830' - And I have a procurement in DA draft at the 'contract_details' stage named 'Security policy document procurement' - When I navigate to the procurement 'Security policy document procurement' - Then I am on the 'Contract details' page - And I answer the 'Security policy' contract detail question - Then I am on the 'Security policy document' page - - Scenario: Nothing is selected - When I click on 'Save and return' - Then I should see the following error messages: - | Select one option | - - Scenario: Yes is selected but nothing entered - Given I select 'Yes' for the security policy document question - When I click on 'Save and return' - Then I should see the following error messages: - | Enter a security policy document name | - | Enter a security policy document version number | - | The selected file is empty | - - Scenario: Yes is selected and security policy document has the worng format - Given I select 'Yes' for the security policy document question - And I enter 'Test' for the security policy document 'name' - And I enter '12' for the security policy document 'number' - And I enter '20/02/2020' for the security policy document 'date' - And I upload security policy document that is 'invalid' - When I click on 'Save and return' - Then I should see the following error messages: - | The selected file must be a DOC, DOCX or PDF | - - Scenario: Yes is selected and security policy document date is invalid - Given I select 'Yes' for the security policy document question - And I enter 'Test' for the security policy document 'name' - And I enter '12' for the security policy document 'number' - And I enter '20/20/2020' for the security policy document 'date' - And I upload security policy document that is 'valid' - When I click on 'Save and return' - Then I should see the following error messages: - | The selected date is not valid | \ No newline at end of file diff --git a/features/facilities_management/rm3830/procurements/create_a_procurement.feature b/features/facilities_management/rm3830/procurements/create_a_procurement.feature deleted file mode 100644 index 47c1a70523..0000000000 --- a/features/facilities_management/rm3830/procurements/create_a_procurement.feature +++ /dev/null @@ -1,20 +0,0 @@ -Feature: Create a procurement - - Scenario: Create a procurement - Given I sign in and navigate to my account for 'RM3830' - And I click on 'Start a procurement' - Then I am on the 'What happens next' page - And I click on 'Continue' - Then I am on the 'Contract name' page - And I enter 'Test procurement 1' into the contract name field - And I click on 'Save and continue' - Then I am on the 'Requirements' page - And I should see my procurement name - And 'Contract name' should have the status 'COMPLETED' in 'Contract details' - And 'Estimated annual cost' should have the status 'NOT STARTED' in 'Contract details' - And 'TUPE' should have the status 'NOT STARTED' in 'Contract details' - And 'Contract period' should have the status 'NOT STARTED' in 'Contract details' - And 'Services' should have the status 'NOT STARTED' in 'Services and buildings' - And 'Buildings' should have the status 'NOT STARTED' in 'Services and buildings' - And 'Assigning services to buildings' should have the status 'CANNOT START YET' in 'Services and buildings' - And 'Service requirements' should have the status 'CANNOT START YET' in 'Services and buildings' \ No newline at end of file diff --git a/features/facilities_management/rm3830/procurements/delete_procurement.feature b/features/facilities_management/rm3830/procurements/delete_procurement.feature deleted file mode 100644 index 54f3b553d4..0000000000 --- a/features/facilities_management/rm3830/procurements/delete_procurement.feature +++ /dev/null @@ -1,35 +0,0 @@ -Feature: Delete procurement - - Background: Log in and navigate to my account - Given I sign in and navigate to my account for 'RM3830' - - Scenario: Delete a procurement in searches - And I have an empty procurement for entering requirements named 'Search procurement' - And I click on 'Continue a procurement' - Then I am on the 'Procurements dashboard' page - And I choose to delete the procurement named 'Search procurement' - Then I am on the "Are you sure you want to delete 'Search procurement'?" page - And I click on 'Confirm delete' - Then I am on the 'Procurements dashboard' page - And my procurement 'Search procurement' has successfully been deleted - - Scenario: Delete procurement in draft - And I have a procurement in DA draft at the 'contract_details' stage named 'In draft procurement' - And I click on 'Continue a procurement' - Then I am on the 'Procurements dashboard' page - And I choose to delete the procurement named 'In draft procurement' - Then I am on the "Are you sure you want to delete 'In draft procurement'?" page - And I click on 'Confirm delete' - Then I am on the 'Procurements dashboard' page - And my procurement 'In draft procurement' has successfully been deleted - - Scenario: I cancel deleting the procurement - And I have an empty procurement for entering requirements named 'Search procurement' - And I click on 'Continue a procurement' - Then I am on the 'Procurements dashboard' page - And I choose to delete the procurement named 'Search procurement' - Then I am on the "Are you sure you want to delete 'Search procurement'?" page - And I click on 'Cancel' - Then I am on the 'Procurements dashboard' page - And I click on 'Search procurement' - And I am on the 'Requirements' page \ No newline at end of file diff --git a/features/facilities_management/rm3830/procurements/direct_award/direct_award_procurement.feature b/features/facilities_management/rm3830/procurements/direct_award/direct_award_procurement.feature deleted file mode 100644 index 68732dfe59..0000000000 --- a/features/facilities_management/rm3830/procurements/direct_award/direct_award_procurement.feature +++ /dev/null @@ -1,149 +0,0 @@ -@javascript -Feature: Procurement journey - Direct Award - - Scenario: Taking a procurement through to direct award - Given I sign in and navigate to my account for 'RM3830' - And I have buildings - And I click on 'Start a procurement' - Then I am on the 'What happens next' page - And I click on 'Continue' - Then I am on the 'Contract name' page - And I enter 'Test procurement' into the contract name field - And I click on 'Save and continue' - Then I am on the 'Requirements' page - And I should see my procurement name - And I click on 'Estimated annual cost' - Then I am on the 'Estimated annual cost' page - And I select 'Yes' for estimated annual cost known - And I enter '123456' for estimated annual cost - And I click on 'Save and return' - Then I am on the 'Requirements' page - And I click on 'TUPE' - Then I am on the 'TUPE' page - And I select 'No' for TUPE required - And I click on 'Save and return' - Then I am on the 'Requirements' page - And I click on 'Contract period' - Then I am on the 'Contract period' page - And I enter '3' years and '2' months for the contract period - And I enter 'today' as the inital call-off period start date - And I select 'No' for mobilisation period required - And I select 'No' for optional extension required - And I click on 'Save and return' - Then I am on the 'Contract period summary' page - And I click on 'Return to requirements' - Then I am on the 'Requirements' page - And I click on 'Services' - Then I am on the 'Services' page - And I show all sections - Then I select the following items: - | Mechanical and electrical engineering maintenance | - | Portable appliance testing | - | Routine cleaning | - | General waste | - | Reception service | - And I click on 'Save and return' - Then I am on the 'Services summary' page - And I should see the following seleceted services in the summary: - | Mechanical and electrical engineering maintenance | - | Portable appliance testing | - | Routine cleaning | - | Reception service | - | General waste | - And I click on 'Return to requirements' - Then I am on the 'Requirements' page - And I click on 'Buildings' - Then I am on the 'Buildings' page - And I find and select the following buildings: - | Test building | - | Test London building | - And I click on 'Save and return' - Then I am on the 'Buildings summary' page - And I should see the following seleceted buildings in the summary: - | Test building | - | Test London building | - And I click on 'Return to requirements' - Then I am on the 'Requirements' page - And I click on 'Assigning services to buildings' - Then I am on the 'Assigning services to buildings summary' page - And I click on 'Test building' - And I select all services for the building - And I click on 'Save and return' - Then I am on the 'Assigning services to buildings summary' page - And I click on 'Test London building' - And I select the following service codes for the building: - | C.1 | - | E.4 | - | I.1 | - And I click on 'Save and return' - Then I am on the 'Assigning services to buildings summary' page - And I click on 'Return to requirements' - Then I am on the 'Requirements' page - And I click on 'Service requirements' - Then I am on the 'Service requirements' page - And I click on 'Test building' - Then I am on the page with secondary heading 'Service requirements' - And I choose to answer the service volume question for 'Portable appliance testing' - Then I am on the page with secondary heading 'Portable appliance testing' - And I enter '500' for the service volume - Then I click on 'Save and return' - Then I am on the page with secondary heading 'Service requirements' - And I choose to answer the service volume question for 'Routine cleaning' - Then I am on the page with secondary heading 'Routine cleaning' - And I enter '456' for the service volume - Then I click on 'Save and return' - Then I am on the page with secondary heading 'Service requirements' - And I choose to answer the first Service volume question for 'Reception service' - Then I am on the page with secondary heading 'Reception service' - And I enter '4500' for the number of hours per year - And I enter the following for the detail of requirement: - | This is some details of requirement | - | And it goes over two lines | - Then I click on 'Save and return' - Then I am on the page with secondary heading 'Service requirements' - And I choose to answer the service volume question for 'General waste' - Then I am on the page with secondary heading 'General waste' - And I enter '123' for the service volume - Then I click on 'Save and return' - Then I am on the page with secondary heading 'Service requirements' - And I choose to answer the service standard question for 'Mechanical and electrical engineering maintenance' - Then I am on the page with secondary heading 'Mechanical and electrical engineering maintenance' - And I select Standard 'A' - Then I click on 'Save and return' - Then I am on the page with secondary heading 'Service requirements' - And I choose to answer the service standard question for 'Routine cleaning' - And I select Standard 'A' - Then I click on 'Save and return' - Then I am on the page with secondary heading 'Service requirements' - And the building should have the status 'COMPLETE' - And I click on 'Return to service requirements summary' - Then I am on the 'Service requirements' page - And I click on 'Test London building' - And I choose to answer the service volume question for 'Portable appliance testing' - Then I am on the page with secondary heading 'Portable appliance testing' - And I enter '500' for the service volume - Then I click on 'Save and return' - And I choose to answer the first Service volume question for 'Reception service' - Then I am on the page with secondary heading 'Reception service' - And I enter '600' for the number of hours per year - And I enter the following for the detail of requirement: - | This is some details of requirement and it goes over one line | - Then I click on 'Save and return' - Then I am on the page with secondary heading 'Service requirements' - And I choose to answer the service standard question for 'Mechanical and electrical engineering maintenance' - Then I am on the page with secondary heading 'Mechanical and electrical engineering maintenance' - And I select Standard 'A' - Then I click on 'Save and return' - Then I am on the page with secondary heading 'Service requirements' - And the building should have the status 'COMPLETE' - And I click on 'Return to service requirements summary' - Then I am on the 'Service requirements' page - And I click on 'Return to requirements' - Then I am on the 'Requirements' page - And everything is completed - And I click on 'Continue to results' - Then I am on the 'Results' page - And Direct award is an available route to market - And I select 'Direct award' on results - And I click on 'Continue' - And I am on the 'Direct award pricing' page diff --git a/features/facilities_management/rm3830/procurements/entering_requirements/building_missing_region.feature b/features/facilities_management/rm3830/procurements/entering_requirements/building_missing_region.feature deleted file mode 100644 index 54e73fb8e5..0000000000 --- a/features/facilities_management/rm3830/procurements/entering_requirements/building_missing_region.feature +++ /dev/null @@ -1,41 +0,0 @@ -Feature: Buildings used in a procurement are missing a region - - Background: Sign in and navigate to the page - Given I sign in and navigate to my account for 'RM3830' - And I have a completed procurement for entering requirements named 'My missing regions procurement' with buildings missing regions - When I navigate to the procurement 'My missing regions procurement' - Then I am on the 'Review your buildings' page - - Scenario: Can complete missing regions for buildings - Then there are 3 buildings missing a region - And I select region for 'Test building 1' - Then I am on the "Confirm your building's region" page - And I select 'Bedfordshire and Hertfordshire' for the missing region - And I click on 'Save and return' - Then I am on the 'Review your buildings' page - Then there are 2 buildings missing a region - And I select region for 'Test building 2' - Then I am on the "Confirm your building's region" page - And I select 'Aberdeen and Aberdeenshire' for the missing region - And I click on 'Save and return' - Then I am on the 'Review your buildings' page - Then there is 1 building missing a region - And I select region for 'Test building 3' - Then I am on the "Confirm your building's region" page - And I select 'Shropshire and Staffordshire' for the missing region - And I click on 'Save and return' - Then I am on the 'Requirements' page - And everything is completed - - Scenario: Return links work - Given I select region for 'Test building 1' - Then I am on the "Confirm your building's region" page - And I click on the 'Return to review your buildings' return link - Then I am on the 'Review your buildings' page - Then I am on the 'Review your buildings' page - Given I click on the 'Return to procurements dashboard' return link - Then I am on the 'Procurements dashboard' page - And I click on 'My missing regions procurement' - Then I am on the 'Review your buildings' page - Given I click on the 'Return to procurements dashboard' back link - Then I am on the 'Procurements dashboard' page diff --git a/features/facilities_management/rm3830/procurements/entering_requirements/contract_details/add_extension_button.feature b/features/facilities_management/rm3830/procurements/entering_requirements/contract_details/add_extension_button.feature deleted file mode 100644 index cb1ffce251..0000000000 --- a/features/facilities_management/rm3830/procurements/entering_requirements/contract_details/add_extension_button.feature +++ /dev/null @@ -1,93 +0,0 @@ -@javascript -Feature: Add extension button - - Background: Navigate to the contract period page - Given I sign in and navigate to my account for 'RM3830' - And I have an empty procurement for entering requirements named 'My empty procurement' - When I navigate to the procurement 'My empty procurement' - Then I am on the 'Requirements' page - And I click on 'Contract period' - And I am on the 'Contract period' page - - Scenario: How the button changes with different values input - Given I enter '4' year and '8' months for the contract period - And I enter an inital call-off period start date 2 years and 3 months into the future - And I select 'No' for mobilisation period required - And I select 'Yes' for optional extension required - Then the add an extension button should be 'hidden' - Then I enter '1' years and '1' months for optional extension 1 - Then the add an extension button should be 'visible' - And the add an extension button should have the text 'Add another extension period (4 years and 3 months remaining)' - Then I add another extension - And extension 2 should be 'visible' - And the remove button for extension 2 should be 'visible' - Then I add another extension - And extension 3 should be 'hidden' - And the remove button for extension 3 should be 'hidden' - Then I enter '1' years and '0' months for optional extension 2 - And the add an extension button should have the text 'Add another extension period (3 years and 3 months remaining)' - Then I enter '0' years and '0' months for optional extension 2 - And the add an extension button should have the text 'Add another extension period (3 years and 3 months remaining)' - Then I add another extension - And extension 3 should be 'hidden' - And the remove button for extension 3 should be 'hidden' - Then I enter '0' years and '1' months for optional extension 2 - And the add an extension button should have the text 'Add another extension period (4 years and 2 months remaining)' - Then I add another extension - And extension 3 should be 'visible' - And the remove button for extension 3 should be 'visible' - And the remove button for extension 2 should be 'hidden' - Then I enter '1' years and '1' months for optional extension 3 - And the add an extension button should have the text 'Add another extension period (3 years and 1 month remaining)' - And I enter '0' years and '0' months for the contract period - Then I add another extension - And extension 4 should be 'hidden' - And the remove button for extension 4 should be 'hidden' - Then I enter '9' year and '11' months for the contract period - And the add an extension button should be 'hidden' - Then I enter '4' year and '8' months for the contract period - And the add an extension button should be 'visible' - And the add an extension button should have the text 'Add another extension period (3 years and 1 month remaining)' - And I select 'Yes' for mobilisation period required - Then I add another extension - And extension 4 should be 'hidden' - And the remove button for extension 4 should be 'hidden' - Then I enter '4' weeks for the mobilisation period - And the add an extension button should have the text 'Add another extension period (3 years remaining)' - Then I add another extension - And extension 4 should be 'visible' - And the remove button for extension 4 should be 'visible' - And the remove button for extension 3 should be 'hidden' - And the add an extension button should be 'hidden' - Then I enter '0' years and '0' months for optional extension 4 - And I remove extension period 4 - And the add an extension button should be 'visible' - And the add an extension button should have the text 'Add another extension period (3 years remaining)' - And extension 4 should be 'hidden' - And the remove button for extension 4 should be 'hidden' - And the remove button for extension 3 should be 'visible' - Then I enter '4' years and '0' months for optional extension 3 - And the add an extension button should be 'visible' - And the add an extension button should have the text 'Add another extension period (1 month remaining)' - Then I enter '5' weeks for the mobilisation period - And the add an extension button should be 'hidden' - And I click on 'Save and return' - And I am on the 'Contract period summary' page - - Scenario: Button is not visibile with invalid data - Given I enter '4' year and '8' months for the contract period - And I enter an inital call-off period start date 2 years and 3 months into the future - And I select 'No' for mobilisation period required - And I select 'Yes' for optional extension required - Then the add an extension button should be 'hidden' - Then I enter '1' years and '1' months for optional extension 1 - Then the add an extension button should be 'visible' - Then I add another extension - Given I click on 'Save and return' - Then I should see the following error messages: - | Enter the years for the extension period | - | Enter the months for the extension period | - Then the add an extension button should be 'hidden' - Then I enter '1' years and '5' months for optional extension 2 - Then the add an extension button should be 'visible' - And the add an extension button should have the text 'Add another extension period (2 years and 10 months remaining)' \ No newline at end of file diff --git a/features/facilities_management/rm3830/procurements/entering_requirements/contract_details/contract_name.feature b/features/facilities_management/rm3830/procurements/entering_requirements/contract_details/contract_name.feature deleted file mode 100644 index 8a78953a40..0000000000 --- a/features/facilities_management/rm3830/procurements/entering_requirements/contract_details/contract_name.feature +++ /dev/null @@ -1,21 +0,0 @@ -Feature: Contract name - - Background: Navigate to contract name page - Given I sign in and navigate to my account for 'RM3830' - And I have an empty procurement for entering requirements named 'My empty procurement' - When I navigate to the procurement 'My empty procurement' - Then I am on the 'Requirements' page - And I click on 'Contract name' - Then I am on the 'Contract name' page - - Scenario: Change contract name - And I enter 'My new contract name' into the contract name field - And I click on 'Save and return' - Then I am on the 'Requirements' page - And 'Contract name' should have the status 'COMPLETED' in 'Contract details' - And I should see my name is 'My new contract name' - - Scenario: The return links work - Given I click on the 'Return to requirements' return link - Then I am on the 'Requirements' page - And 'Contract name' should have the status 'COMPLETED' in 'Contract details' diff --git a/features/facilities_management/rm3830/procurements/entering_requirements/contract_details/contract_period.feature b/features/facilities_management/rm3830/procurements/entering_requirements/contract_details/contract_period.feature deleted file mode 100644 index 3bfc92288b..0000000000 --- a/features/facilities_management/rm3830/procurements/entering_requirements/contract_details/contract_period.feature +++ /dev/null @@ -1,112 +0,0 @@ -Feature: Contract period - - Background: Navigate to the contract period page - Given I sign in and navigate to my account for 'RM3830' - And I have an empty procurement for entering requirements named 'My empty procurement' - When I navigate to the procurement 'My empty procurement' - Then I am on the 'Requirements' page - And I click on 'Contract period' - And I am on the 'Contract period' page - - Scenario Outline: Without tupe or optional extension period - Given I enter an inital call-off period start date 2 years and 3 months into the future - Then I enter '' years and '' months for the contract period - And I select 'No' for mobilisation period required - And I select 'No' for optional extension required - When I click on 'Save and return' - Then I am on the 'Contract period summary' page - And my inital call off period length is '' - And my inital call off period is correct given the contract start date - And mobilisation period length is 'None' - And there are no optional call off extensions - Given I click on 'Return to requirements' - Then I am on the 'Requirements' page - And 'Contract period' should have the status 'COMPLETED' in 'Contract details' - - Examples: - | years | months | initial_call_off_period_length | - | 0 | 1 | 1 month | - | 1 | 0 | 1 year | - | 1 | 3 | 1 year and 3 months | - | 4 | 1 | 4 years and 1 month | - | 2 | 8 | 2 years and 8 months | - - Scenario: I change the contract date - Given I enter an inital call-off period start date 1 years and 0 months into the future - Then I enter '4' years and '8' months for the contract period - And I select 'No' for mobilisation period required - And I select 'No' for optional extension required - When I click on 'Save and return' - Then I am on the 'Contract period summary' page - And my inital call off period length is '4 years and 8 months' - And my inital call off period is correct given the contract start date - And mobilisation period length is 'None' - And there are no optional call off extensions - Given I click on 'Change' - And I am on the 'Contract period' page - Then I enter '1' years and '0' months for the contract period - And I select 'Yes' for mobilisation period required - Then I enter '18' weeks for the mobilisation period - When I click on 'Save and return' - Then I am on the 'Contract period summary' page - And my inital call off period length is '1 year' - And my inital call off period is correct given the contract start date - And mobilisation period length is '18 weeks' - And the mobilisation period is correct given the contract start date - And there are no optional call off extensions - When I click on 'Return to requirements' - And I am on the 'Requirements' page - Then 'Contract period' should have the status 'COMPLETED' in 'Contract details' - And I click on 'Contract period' - Then I am on the 'Contract period summary' page - - Scenario: With tupe and 1 optional extension period - Given I enter an inital call-off period start date 1 years and 8 months into the future - Then I enter '3' years and '2' months for the contract period - And I select 'Yes' for mobilisation period required - Then I enter '1' weeks for the mobilisation period - And I select 'Yes' for optional extension required - And only the first optional extension is required - Then I enter '2' years and '3' months for optional extension 1 - When I click on 'Save and return' - Then I am on the 'Contract period summary' page - And my inital call off period length is '3 years and 2 months' - And my inital call off period is correct given the contract start date - And mobilisation period length is '1 week' - And the mobilisation period is correct given the contract start date - And the length of extension period 1 is '2 years and 3 months' - And extension period 1 is correct given the contract start date - - @javascript - Scenario: With tupe and 4 optional extension periods - Given I enter an inital call-off period start date 2 years and 1 months into the future - Then I enter '2' years and '7' months for the contract period - And I select 'Yes' for mobilisation period required - Then I enter '6' weeks for the mobilisation period - And I select 'Yes' for optional extension required - Then I enter '0' years and '1' months for optional extension 1 - And I add another extension - Then I enter '1' years and '0' months for optional extension 2 - And I add another extension - Then I enter '1' years and '2' months for optional extension 3 - And I add another extension - Then I enter '3' years and '7' months for optional extension 4 - When I click on 'Save and return' - Then I am on the 'Contract period summary' page - And my inital call off period length is '2 years and 7 months' - And my inital call off period is correct given the contract start date - And mobilisation period length is '6 weeks' - And the mobilisation period is correct given the contract start date - And the length of extension period 1 is '1 month' - And extension period 1 is correct given the contract start date - And the length of extension period 2 is '1 year' - And extension period 2 is correct given the contract start date - And the length of extension period 3 is '1 year and 2 months' - And extension period 3 is correct given the contract start date - And the length of extension period 4 is '3 years and 7 months' - And extension period 4 is correct given the contract start date - - Scenario: The return links work - Given I click on 'Return to requirements' - Then I am on the 'Requirements' page - And 'Contract period' should have the status 'NOT STARTED' in 'Contract details' diff --git a/features/facilities_management/rm3830/procurements/entering_requirements/contract_details/estimated_annual_cost.feature b/features/facilities_management/rm3830/procurements/entering_requirements/contract_details/estimated_annual_cost.feature deleted file mode 100644 index 92fa02a35b..0000000000 --- a/features/facilities_management/rm3830/procurements/entering_requirements/contract_details/estimated_annual_cost.feature +++ /dev/null @@ -1,27 +0,0 @@ -Feature: Estimated annual cost - - Background: Navigate to the estimated annual cost page - Given I sign in and navigate to my account for 'RM3830' - And I have an empty procurement for entering requirements named 'My empty procurement' - When I navigate to the procurement 'My empty procurement' - Then I am on the 'Requirements' page - And I click on 'Estimated annual cost' - And I am on the 'Estimated annual cost' page - - Scenario: No is saved - Given I select 'No' for estimated annual cost known - And I click on 'Save and return' - Then I am on the 'Requirements' page - And 'Estimated annual cost' should have the status 'COMPLETED' in 'Contract details' - - Scenario: Yes is saved - Given I select 'Yes' for estimated annual cost known - And I enter '123456' for estimated annual cost - And I click on 'Save and return' - Then I am on the 'Requirements' page - And 'Estimated annual cost' should have the status 'COMPLETED' in 'Contract details' - - Scenario: The return links work - Given I click on the 'Return to requirements' return link - Then I am on the 'Requirements' page - And 'Estimated annual cost' should have the status 'NOT STARTED' in 'Contract details' diff --git a/features/facilities_management/rm3830/procurements/entering_requirements/contract_details/tupe.feature b/features/facilities_management/rm3830/procurements/entering_requirements/contract_details/tupe.feature deleted file mode 100644 index 2e11da66ac..0000000000 --- a/features/facilities_management/rm3830/procurements/entering_requirements/contract_details/tupe.feature +++ /dev/null @@ -1,25 +0,0 @@ -Feature: Tupe - - Background: Navigate to TUPE page - Given I sign in and navigate to my account for 'RM3830' - And I have an empty procurement for entering requirements named 'My empty procurement' - When I navigate to the procurement 'My empty procurement' - Then I am on the 'Requirements' page - And I click on 'TUPE' - And I am on the 'TUPE' page - - Scenario Outline: Both selections are valid - Given I select '