Merge pull request #11163 from colinux/sva-without-declarative

ETQ admin je suis informé que je ne peux pas activer le SVA/SVR si la démarche est déclarative et vice-versa
This commit is contained in:
Colin Darie 2024-12-20 11:34:39 +00:00 committed by GitHub
commit 520cef7022
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 79 additions and 10 deletions

View file

@ -8,9 +8,12 @@ class Procedure::SVASVRFormComponent < ApplicationComponent
@configuration = configuration
end
private
def form_disabled?
return false if procedure.brouillon?
return true if !procedure.feature_enabled?(:sva)
return true if procedure.declarative?
return false if procedure.brouillon?
procedure.sva_svr_enabled?
end
@ -20,8 +23,8 @@ class Procedure::SVASVRFormComponent < ApplicationComponent
[
{ label: t("disabled", scope:), value: "disabled", disabled: form_disabled? },
{ label: t("sva", scope:), value: "sva", hint: t("sva_hint", scope:) },
{ label: t("svr", scope:), value: "svr", hint: t("svr_hint", scope:) }
{ label: t("sva", scope:), value: "sva", hint: t("sva_hint", scope:), disabled: form_disabled? },
{ label: t("svr", scope:), value: "svr", hint: t("svr_hint", scope:), disabled: form_disabled? }
]
end
@ -32,12 +35,14 @@ class Procedure::SVASVRFormComponent < ApplicationComponent
{
value: "continue",
label: t("continue_label", scope: scope),
hint: t("continue_hint", scope: scope)
hint: t("continue_hint", scope: scope),
disabled: form_disabled?
},
{
value: "reset",
label: t("reset_label", scope: scope),
hint: t("reset_hint", scope: scope)
hint: t("reset_hint", scope: scope),
disabled: form_disabled?
}
]
end

View file

@ -26,3 +26,4 @@ en:
reset_hint: "Example: if the file is resubmitted on April 15 and the delay is 2 months, the decision will be automatically made on June 15, unless the instructor pronounces in the meantime or asks for corrections again."
notice_new_files_only: "Information: if you activate this rule, only the newly submitted files will be subject to it."
notice_edit_denied: "Warning: SVA/SVR cannot be changed or disabled."
notice_incompatible_with_declarative_html: 'Warning: SVA/SVR is incompatible with declarative procedures. <a href="%{edit_admin_procedure_path}">Disable declarative mode</a> first.'

View file

@ -26,3 +26,4 @@ fr:
reset_hint: "Exemple: si le dossier est re-déposé le 15 avril et que le délai est de 2 mois, la décision sera automatiquement prise le 16 juin, sauf à ce que linstructeur se prononce dici là ou demande à nouveau des corrections."
notice_new_files_only: "Information : si vous activez cette règle, seuls les nouveaux dossiers déposés y seront soumis."
notice_edit_denied: "Avertissement : le changement ou la désactivation du SVA/SVR est impossible."
notice_incompatible_with_declarative_html: 'Avertissement : le SVA/SVR est incompatible avec les démarches déclaratives. <a href="%{edit_admin_procedure_path}">Désactiver le déclaratif</a> au préalable.'

View file

@ -11,6 +11,10 @@
.fr-alert.fr-alert--info.fr-alert--sm.fr-mb-4w
%p= t('.notice_new_files_only')
- if procedure.declarative?
.fr-alert.fr-alert--warning.fr-alert--sm.fr-mb-4w
%p= t('.notice_incompatible_with_declarative_html', edit_admin_procedure_path: edit_admin_procedure_path(procedure, anchor: ":~:text=Options avancées"))
- if procedure.publiee? && procedure.sva_svr_enabled?
.fr-alert.fr-alert--warning.fr-alert--sm.fr-mb-4w
%p= t('.notice_edit_denied')
@ -37,4 +41,4 @@
= render Dsfr::RadioButtonListComponent.new(form: f, target: :resume, buttons: resume_buttons)
= render Procedure::FixedFooterComponent.new(procedure: @procedure, form: f, is_form_disabled: form_disabled?)
= render Procedure::FixedFooterComponent.new(procedure: procedure, form: f, is_form_disabled: form_disabled?)

View file

@ -16,13 +16,19 @@ module Administrateurs
@configuration = @procedure.sva_svr_configuration
@configuration.assign_attributes(configuration_params)
if @configuration.valid?
@procedure.update!(sva_svr: @configuration.attributes)
if @configuration.invalid?
flash.now.alert = "Des erreurs empêchent la validation du SVA/SVR. Corrigez les erreurs"
render :edit and return
end
@procedure.assign_attributes(sva_svr: @configuration.attributes)
if @procedure.valid?
@procedure.save!
flash.notice = "La configuration SVA/SVR a été mise à jour et prend immédiatement effet pour les nouveaux dossiers."
redirect_to admin_procedure_path(@procedure)
else
flash.now.alert = "Des erreurs empêchent la validation du SVA/SVR. Corrigez les erreurs"
flash.now.alert = @procedure.errors.full_messages
render :edit
end
end

View file

@ -167,7 +167,8 @@
Démarche déclarative
%span.fr-hint-text.fr-mt-0
Par défaut, un dossier déposé peut être complété ou corrigé par le demandeur jusqu'à sa mise en instruction.<br>
Dans une démarche déclarative, une fois déposé, un dossier ne peut plus être modifié. Soit il passe immédiatement « en instruction » pour être traité, soit il est immédiatement « accepté ».
Dans une démarche déclarative, une fois déposé, un dossier ne peut plus être modifié. Soit il passe immédiatement « en instruction » pour être traité, soit il est immédiatement « accepté ».<br>
Si vous envisagez activer la règle du ”Silence Vaut Accord” ou “Silence Vaut Rejet“, laissez en démarche non déclarative.
.fr-fieldset__element
.fr-radio-group
= f.radio_button :declarative_with_state, ''

View file

@ -0,0 +1,51 @@
# frozen_string_literal: true
RSpec.describe Procedure::SVASVRFormComponent, type: :component do
let(:procedure) { create(:procedure, :published) }
let(:configuration) { SVASVRConfiguration.new }
subject(:rendered) { render_inline(described_class.new(procedure: procedure, configuration: configuration)) }
let(:sva_enabled) { true }
before { allow(procedure).to receive(:feature_enabled?).with(:sva).and_return(sva_enabled) }
context "when sva feature is disabled" do
let(:sva_enabled) { false }
it "shows contact information and disables form" do
expect(rendered).to have_text(/Pour activer le paramétrage.*contactez-nous/)
expect(rendered).to have_field('Silence Vaut Accord', disabled: true)
end
end
context "when procedure is published with config" do
let(:procedure) { create(:procedure, :published, :sva) }
it "shows notice about new files only" do
expect(rendered).to have_text(/changement.*impossible/i)
expect(rendered).to have_field('Silence Vaut Accord', disabled: true)
expect(rendered).to have_button('Enregistrer', disabled: true)
end
end
context "when procedure is declarative" do
let(:procedure) { create(:procedure, :published, declarative_with_state: :en_instruction) }
it "shows incompatibility warning" do
expect(rendered).to have_text(/incompatible avec les démarches déclaratives/i)
expect(rendered).to have_link("Désactiver le déclaratif")
expect(rendered).to have_field('Silence Vaut Accord', disabled: true)
expect(rendered).to have_button('Enregistrer', disabled: true)
end
end
context "when procedure is brouillon with sva enabled" do
let(:procedure) { create(:procedure, :draft, :sva) }
it "shows enabled form with all options" do
expect(rendered).to have_field('Silence Vaut Accord', type: 'radio', disabled: false)
expect(rendered).to have_field('Silence Vaut Rejet', type: 'radio', disabled: false)
expect(rendered).to have_button('Enregistrer', disabled: false)
end
end
end