fix(dossier): we can't terminer any dossier having etablissements in degraded mode
Closes #8449
This commit is contained in:
parent
d986c998b8
commit
428dd9bf1a
3 changed files with 24 additions and 2 deletions
|
@ -315,7 +315,7 @@ module Instructeurs
|
|||
def aasm_error_message(exception, target_state:)
|
||||
if exception.originating_state == target_state
|
||||
"Le dossier est déjà #{dossier_display_state(target_state, lower: true)}."
|
||||
elsif exception.failures.include?(:can_terminer?)
|
||||
elsif exception.failures.include?(:can_terminer?) && dossier.any_etablissement_as_degraded_mode?
|
||||
"Les données relatives au SIRET de ce dossier n’ont pas pu encore être vérifiées : il n’est pas possible de le passer #{dossier_display_state(target_state, lower: true)}."
|
||||
else
|
||||
"Le dossier est en ce moment #{dossier_display_state(exception.originating_state, lower: true)} : il n’est pas possible de le passer #{dossier_display_state(target_state, lower: true)}."
|
||||
|
|
|
@ -540,7 +540,7 @@ class Dossier < ApplicationRecord
|
|||
end
|
||||
|
||||
def can_terminer?
|
||||
return false if etablissement&.as_degraded_mode?
|
||||
return false if any_etablissement_as_degraded_mode?
|
||||
|
||||
true
|
||||
end
|
||||
|
@ -569,6 +569,13 @@ class Dossier < ApplicationRecord
|
|||
termine? || reason == :procedure_removed
|
||||
end
|
||||
|
||||
def any_etablissement_as_degraded_mode?
|
||||
return true if etablissement&.as_degraded_mode?
|
||||
return true if champs_public_all.any? { _1.etablissement&.as_degraded_mode? }
|
||||
|
||||
false
|
||||
end
|
||||
|
||||
def messagerie_available?
|
||||
visible_by_administration? && !hidden_by_user? && !user_deleted? && !archived
|
||||
end
|
||||
|
|
|
@ -1192,6 +1192,21 @@ describe Dossier do
|
|||
expect(dossier_ok.accepter_automatiquement(instructeur:, motivation:)).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
context "when a SIRET champ has etablissement in degraded mode" do
|
||||
let(:dossier_incomplete) { create(:dossier, :en_instruction) }
|
||||
let(:dossier_ok) { create(:dossier, :en_instruction) }
|
||||
|
||||
before do
|
||||
dossier_incomplete.champs_public << create(:champ_siret, dossier: dossier_incomplete, etablissement: Etablissement.new(siret: build(:etablissement).siret))
|
||||
dossier_ok.champs_public << create(:champ_siret, dossier: dossier_ok)
|
||||
end
|
||||
|
||||
it "can't accepter" do
|
||||
expect(dossier_incomplete.may_accepter?(instructeur:, motivation:)).to be_falsey
|
||||
expect(dossier_ok.may_accepter?(instructeur:, motivation:)).to be_truthy
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#check_mandatory_and_visible_champs" do
|
||||
|
|
Loading…
Add table
Reference in a new issue