Skip to content

Commit

Permalink
Ajout de la possibilité de retenter l'envoi en paiement lors de la mi…
Browse files Browse the repository at this point in the history
…se à jour des coordonnées bancaires
  • Loading branch information
tnicolas1 committed Oct 8, 2024
1 parent dc8e5cc commit 256a9e9
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 6 deletions.
10 changes: 10 additions & 0 deletions app/controllers/ribs_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ def update
@rib = @student.create_new_rib(rib_params)

if @rib.save
retry_eligible_payment_requests!

redirect_to student_path(@student),
notice: t(".success")
else
Expand Down Expand Up @@ -147,4 +149,12 @@ def check_establishment!
def rib_is_readonly
redirect_to student_path(@student), alert: t("flash.ribs.readonly", name: @student.full_name)
end

# TODO: Factoriser avec 'retry_eligible_payment_requests!' de 'schoolings_controller'
def retry_eligible_payment_requests!
@student.pfmps.in_state(:validated).each do |pfmp|
p_r = pfmp.latest_payment_request
p_r.mark_ready! if p_r&.eligible_for_auto_retry?
end
end
end
4 changes: 2 additions & 2 deletions app/controllers/schoolings_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class SchoolingsController < ApplicationController
def abrogate_decision
GenerateAbrogationDecisionJob.perform_now(@schooling)

retry_eligibile_payment_requests!
retry_eligible_payment_requests!

redirect_to student_path(@schooling.student),
notice: t("flash.da.abrogated", name: @schooling.student.full_name)
Expand Down Expand Up @@ -69,7 +69,7 @@ def set_classe
alert: t("errors.classes.not_found") and return
end

def retry_eligibile_payment_requests!
def retry_eligible_payment_requests!
@schooling.pfmps.in_state(:validated).each do |pfmp|
payment_request = pfmp.latest_payment_request
payment_request.mark_ready! if payment_request&.eligible_for_auto_retry?
Expand Down
15 changes: 12 additions & 3 deletions app/models/asp/payment_request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -117,13 +117,22 @@ def active?
!terminated?
end

# rubocop:disable Metrics/AbcSize
def eligible_for_auto_retry?
return false unless in_state?(:incomplete)

retryable_messages = RETRYABLE_INCOMPLETE_VALIDATION_TYPES.map do |r|
I18n.t("activerecord.errors.models.asp/payment_request.attributes.ready_state_validation.#{r}")
end
last_transition.metadata["incomplete_reasons"]["ready_state_validation"].intersect?(retryable_messages)

if in_state?(:incomplete)
retryable_messages.intersect?(last_transition.metadata["incomplete_reasons"]["ready_state_validation"])
elsif in_state?(:rejected)
retryable_messages.include?(last_transition.metadata["Motif rejet"])
elsif in_state?(:unpaid)
retryable_messages.include?(last_transition.metadata["PAIEMENT"]["LIBELLEMOTIFINVAL"])
else
false
end
end
# rubocop:enable Metrics/AbcSize
end
end
10 changes: 10 additions & 0 deletions features/saisie_de_coordonnees_bancaires.feature
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,16 @@ Fonctionnalité: Le personnel de direction saisit des coordonnées bancaires
Et la page contient un bouton "Modifier les coordonnées bancaires" désactivé
Et la page contient un bouton "Supprimer les coordonnées bancaires" désactivé

Scénario: Le personnel de direction peut relancer une demande de paiement en saisissant les coordonnées bancaires
Quand je consulte la classe de "2NDEB"
Et que je renseigne et valide une PFMP de 9 jours pour "Marie Curie"
Sachant que la dernière PFMP de "Marie Curie" en classe de "2NDEB" a une requête de paiement rejetée
Et que je clique sur "Modifier les coordonnées bancaires"
Quand je clique sur "Modifier les coordonnées bancaires"
Alors la page contient "Ces coordonnées bancaires ne sont pas modifiables"
Et la page contient un bouton "Modifier les coordonnées bancaires" désactivé
Et la page contient un bouton "Supprimer les coordonnées bancaires" désactivé

Scénario: Le personnel de direction ne peut pas accéder au RIB d'un élève s'il a été déclaré dans un autre établissement
Sachant que je renseigne les coordonnées bancaires de l'élève "Marie Curie" de la classe "2NDEB"
Et que l'élève "Marie Curie" a été transféré dans l'établissement "TEST" en classe "1EREB"
Expand Down
2 changes: 1 addition & 1 deletion spec/requests/schoolings_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
end
end

describe "retry_eligibile_payment_requests" do
describe "retry_eligible_payment_requests" do
let(:expected_error_message) do
I18n.t(
"asp/payment_request.attributes.ready_state_validation.needs_abrogated_attributive_decision",
Expand Down

0 comments on commit 256a9e9

Please sign in to comment.