From a0dc47e376d30c888767edbb5154466e77efea44 Mon Sep 17 00:00:00 2001 From: Eric Leroy-Terquem Date: Mon, 3 Mar 2025 14:31:21 +0100 Subject: [PATCH] feat(routing): bulk route only dossiers not termines --- .../administrateurs/groupe_instructeurs_controller.rb | 6 +++--- app/models/dossier.rb | 1 - .../_routing_alert_sticky_header.html.haml | 4 ++-- .../views/administrateurs/groupe_instructeurs/en.yml | 6 +++--- .../views/administrateurs/groupe_instructeurs/fr.yml | 6 +++--- .../administrateurs/groupe_instructeurs_controller_spec.rb | 6 +++++- 6 files changed, 16 insertions(+), 13 deletions(-) diff --git a/app/controllers/administrateurs/groupe_instructeurs_controller.rb b/app/controllers/administrateurs/groupe_instructeurs_controller.rb index 20fbe5feb5b..e0cfafb669e 100644 --- a/app/controllers/administrateurs/groupe_instructeurs_controller.rb +++ b/app/controllers/administrateurs/groupe_instructeurs_controller.rb @@ -89,7 +89,7 @@ def create_simple_routing defaut.destroy! end - procedure.update!(routing_alert: true) if procedure.dossiers.soumis.any? + procedure.update!(routing_alert: true) if procedure.dossiers.state_en_construction_ou_instruction.any? flash[:routing_mode] = 'simple' @@ -111,7 +111,7 @@ def configurate_custom_routing procedure.toggle_routing - procedure.update!(routing_alert: true) if procedure.dossiers.soumis.any? + procedure.update!(routing_alert: true) if procedure.dossiers.state_en_construction_ou_instruction.any? flash[:routing_mode] = 'custom' @@ -398,7 +398,7 @@ def export_groupe_instructeurs end def bulk_route - dossiers = procedure.dossiers + dossiers = procedure.dossiers.state_not_termine dossiers.update_all(forced_groupe_instructeur: false) diff --git a/app/models/dossier.rb b/app/models/dossier.rb index fd52a2d223c..5e0126d6e38 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -220,7 +220,6 @@ def classer_sans_suite(motivation: nil, instructeur: nil, processed_at: Time.zon scope :state_accepte, -> { where(state: states.fetch(:accepte)) } scope :state_refuse, -> { where(state: states.fetch(:refuse)) } scope :state_sans_suite, -> { where(state: states.fetch(:sans_suite)) } - scope :soumis, -> { where(state: SOUMIS) } scope :archived, -> { where(archived: true) } scope :not_archived, -> { where(archived: false) } diff --git a/app/views/administrateurs/groupe_instructeurs/_routing_alert_sticky_header.html.haml b/app/views/administrateurs/groupe_instructeurs/_routing_alert_sticky_header.html.haml index e5c4e09a02f..7dec2628f76 100644 --- a/app/views/administrateurs/groupe_instructeurs/_routing_alert_sticky_header.html.haml +++ b/app/views/administrateurs/groupe_instructeurs/_routing_alert_sticky_header.html.haml @@ -4,7 +4,7 @@ %span = dsfr_icon("fr-icon-warning-fill fr-mr-1v") - if @procedure.groupe_instructeurs.any?(&:invalid_rule?) - = t('.routing_alert_with_invalid_rules_html', count: @procedure.dossiers.soumis.count) + = t('.routing_alert_with_invalid_rules_html', count: @procedure.dossiers.state_en_construction_ou_instruction.count) - else - = t('.routing_alert_html', count: @procedure.dossiers.soumis.count) + = t('.routing_alert_html', count: @procedure.dossiers.state_en_construction_ou_instruction.count) = button_to t('.bulk_route'), bulk_route_admin_procedure_groupe_instructeurs_path(@procedure), class: 'fr-btn no-wrap', disabled: @procedure.groupe_instructeurs.any?(&:invalid_rule?), data: { disable_with: "Routage en cours…", confirm: t('.bulk_routing_confirm') } diff --git a/config/locales/views/administrateurs/groupe_instructeurs/en.yml b/config/locales/views/administrateurs/groupe_instructeurs/en.yml index d93c30c645f..48100ec224c 100644 --- a/config/locales/views/administrateurs/groupe_instructeurs/en.yml +++ b/config/locales/views/administrateurs/groupe_instructeurs/en.yml @@ -20,7 +20,7 @@ en: one: "%{count} group exist" other: "%{count} groups exist" routing_alert_sticky_header: - routing_alert_html: "%{count} dossiers have already been deposited on this procedure and have not been routed according to the configured routing. You must launch the routing to distribute these files to the different groups." - routing_alert_with_invalid_rules_html: "%{count} dossiers have already been deposited on this procedure and have not yet been routed. Once you have configured your routing rules, you will need to launch the routing to distribute these files to the different groups." + routing_alert_html: "%{count} files have been deposited and are waiting to be processed on this procedure. These files have not been routed according to the configured routing. You must launch the routing to distribute them to the different groups." + routing_alert_with_invalid_rules_html: "%{count} files have been deposited and are waiting to be processed on this procedure. These files have not yet been routed. Once you have configured your routing rules, you will need to launch the routing to distribute them to the different groups." bulk_route: Launch routing - bulk_routing_confirm: "Are you sure you want to launch the routing for the deposited files?" + bulk_routing_confirm: "Are you sure you want to launch the routing for the deposited files waiting to be processed ?" diff --git a/config/locales/views/administrateurs/groupe_instructeurs/fr.yml b/config/locales/views/administrateurs/groupe_instructeurs/fr.yml index b83a455aee7..6b27537278f 100644 --- a/config/locales/views/administrateurs/groupe_instructeurs/fr.yml +++ b/config/locales/views/administrateurs/groupe_instructeurs/fr.yml @@ -40,7 +40,7 @@ fr: simple_routing: procedures: Démarches routing_alert_sticky_header: - routing_alert_html: "%{count} dossiers ont déjà été déposés sur cette démarche et n’ont pas été routés selon le routage configuré. Vous devez lancer le routage pour répartir ces dossiers dans les différents groupes." - routing_alert_with_invalid_rules_html: "%{count} dossiers ont déjà été déposés sur cette démarche et n’ont pas encore été routés. Une fois que vous aurez configuré vos règles de routage, vous devrez lancer le routage pour répartir ces dossiers dans les différents groupes." + routing_alert_html: "Il y a %{count} dossiers déposés et en attente de traitement sur cette démarche. Ces dossiers n’ont pas été routés selon le routage configuré. Vous devez lancer le routage pour les répartir dans les différents groupes." + routing_alert_with_invalid_rules_html: "Il y a %{count} dossiers déposés et en attente de traitement sur cette démarche. Ces dossiers n’ont pas encore été routés. Une fois que vous aurez configuré vos règles de routage, vous devrez lancer le routage pour les répartir dans les différents groupes." bulk_route: Lancer le routage - bulk_routing_confirm: "Êtes-vous sûr de vouloir lancer le routage pour les dossiers déposés ?" + bulk_routing_confirm: "Êtes-vous sûr de vouloir lancer le routage pour les dossiers déposés et en attente de traitement ?" diff --git a/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb b/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb index e5054b5b199..73939404140 100644 --- a/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb +++ b/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb @@ -1103,17 +1103,21 @@ def remove_instructeur(instructeur) let!(:drop_down_tdc) { procedure.draft_revision.types_de_champ.first } let!(:dossier1) { create(:dossier, :with_populated_champs, procedure: procedure, state: :en_construction) } let!(:dossier2) { create(:dossier, :with_populated_champs, procedure: procedure, state: :en_construction) } + let!(:dossier3) { create(:dossier, :with_populated_champs, procedure: procedure, state: :accepte) } before do dossier1.champs.first.update(value: 'Paris') dossier2.champs.first.update(value: 'Lyon') + dossier3.champs.first.update(value: 'Marseille') post :create_simple_routing, params: { procedure_id: procedure.id, create_simple_routing: { stable_id: drop_down_tdc.stable_id } } post :bulk_route, params: { procedure_id: procedure.id } end - it do + it 'routes only dossiers en construction or en instruction' do expect(dossier1.reload.groupe_instructeur.label).to eq 'Paris' expect(dossier2.reload.groupe_instructeur.label).to eq 'Lyon' + expect(dossier3.reload.groupe_instructeur.label).to eq 'Lyon' + # Lyon is default group expect(procedure.reload.routing_alert).to be_falsey end end