From 816cc5632dab6e1d4498a8f026bfb9c9f421411c Mon Sep 17 00:00:00 2001 From: tnicolas1 Date: Thu, 24 Oct 2024 15:28:55 +0200 Subject: [PATCH] =?UTF-8?q?Relance=20en=20paiement=20les=20PFMPs=20bloqu?= =?UTF-8?q?=C3=A9es=20pour=20des=20motifs=20li=C3=A9s=20=C3=A0=20l'adresse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/ribs_controller.rb | 2 +- app/jobs/sync/student_job.rb | 11 +++++++++++ app/models/asp/payment_request.rb | 4 ++-- app/models/student.rb | 1 + spec/models/asp/payment_request_spec.rb | 8 ++++---- 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/app/controllers/ribs_controller.rb b/app/controllers/ribs_controller.rb index dbb08ee5c..77fc1544e 100644 --- a/app/controllers/ribs_controller.rb +++ b/app/controllers/ribs_controller.rb @@ -152,7 +152,7 @@ def rib_is_readonly def retry_rejected_or_unpaid_payment_request! @student.pfmps.in_state(:validated).each do |pfmp| - if pfmp.latest_payment_request&.eligible_for_rejected_or_unpaid_auto_retry? + if pfmp.latest_payment_request&.eligible_for_rejected_or_unpaid_auto_retry?(%w[RIB BIC PAIEMENT]) p_r = PfmpManager.new(pfmp).create_new_payment_request! p_r.mark_ready! end diff --git a/app/jobs/sync/student_job.rb b/app/jobs/sync/student_job.rb index cb2d22a30..fac6917fa 100644 --- a/app/jobs/sync/student_job.rb +++ b/app/jobs/sync/student_job.rb @@ -23,6 +23,17 @@ def fetch_student_data(schooling) api.fetch_resource(:student, ine: schooling.student.ine) .then { |data| map_student_attributes(data, api) } .then { |attributes| schooling.student.update!(attributes) } + + changes = schooling.student.previous_changes + if !changes.key?("address_line1") || !changes.key?("address_line2") || + !changes.key?("address_city_insee_code") || !changes.key?("address_country_code") + student.pfmps.in_state(:validated).each do |pfmp| + if pfmp.latest_payment_request&.eligible_for_rejected_or_unpaid_auto_retry?(%w[ADRESSE PAYS]) + p_r = PfmpManager.new(pfmp).create_new_payment_request! + p_r.mark_ready! + end + end + end end def map_student_attributes(data, api) diff --git a/app/models/asp/payment_request.rb b/app/models/asp/payment_request.rb index d34585072..e6452207f 100644 --- a/app/models/asp/payment_request.rb +++ b/app/models/asp/payment_request.rb @@ -126,12 +126,12 @@ def eligible_for_incomplete_retry? last_transition.metadata["incomplete_reasons"]["ready_state_validation"].intersect?(retryable_messages) end - def eligible_for_rejected_or_unpaid_auto_retry? + def eligible_for_rejected_or_unpaid_auto_retry?(reasons) return false unless in_state?(:rejected) || in_state?(:unpaid) decorator = ActiveDecorator::Decorator.instance.decorate(self) message = in_state?(:rejected) ? decorator.rejected_reason : decorator.unpaid_reason - %w[RIB BIC PAIEMENT].any? { |word| message.upcase.include?(word) } + reasons.any? { |word| message.upcase.include?(word) } end end end diff --git a/app/models/student.rb b/app/models/student.rb index 8e3f22aab..1b73ef1eb 100644 --- a/app/models/student.rb +++ b/app/models/student.rb @@ -66,6 +66,7 @@ class Student < ApplicationRecord # rubocop:disable Metrics/ClassLength sourced_from_external_api :birthdate, :address_line1, + :address_line2, :address_postal_code, :address_city_insee_code, :address_country_code, diff --git a/spec/models/asp/payment_request_spec.rb b/spec/models/asp/payment_request_spec.rb index c8437686d..a2d7e04b2 100644 --- a/spec/models/asp/payment_request_spec.rb +++ b/spec/models/asp/payment_request_spec.rb @@ -170,7 +170,7 @@ let(:p_r) { create(:asp_payment_request, :rejected) } it "returns false" do - expect(p_r.eligible_for_rejected_or_unpaid_auto_retry?).to be false + expect(p_r.eligible_for_rejected_or_unpaid_auto_retry?(%w[RIB BIC PAIEMENT])).to be false end end @@ -180,7 +180,7 @@ end it "returns true" do - expect(p_r.eligible_for_rejected_or_unpaid_auto_retry?).to be true + expect(p_r.eligible_for_rejected_or_unpaid_auto_retry?(%w[RIB BIC PAIEMENT])).to be true end end @@ -188,7 +188,7 @@ let(:p_r) { create(:asp_payment_request, :unpaid) } it "returns false" do - expect(p_r.eligible_for_rejected_or_unpaid_auto_retry?).to be false + expect(p_r.eligible_for_rejected_or_unpaid_auto_retry?(%w[RIB BIC PAIEMENT])).to be false end end @@ -198,7 +198,7 @@ end it "returns true" do - expect(p_r.eligible_for_rejected_or_unpaid_auto_retry?).to be true + expect(p_r.eligible_for_rejected_or_unpaid_auto_retry?(%w[RIB BIC PAIEMENT])).to be true end end end