Skip to content

Commit

Permalink
Modification du badge 'validée' en fonction de l'état de sa 'payment_…
Browse files Browse the repository at this point in the history
…request' (#1125)

Liste des classes :
![image](https://github.com/user-attachments/assets/0a5c84e2-2ba4-4887-984e-e93730c0021a)
Liste des élèves par classe :
![image](https://github.com/user-attachments/assets/96e9a107-7edf-40cf-b1b0-ec4fcd3a85de)

---------

Co-authored-by: pskl <[email protected]>
  • Loading branch information
tnicolas1 and pskl authored Oct 10, 2024
1 parent eb6157b commit 76b6df5
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 11 deletions.
28 changes: 28 additions & 0 deletions app/facades/classes_facade.rb
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,24 @@ def nb_pfmps(class_id, state)
pfmps_by_classe_and_state.dig(class_id, state.to_s) || 0
end

def nb_payment_requests(class_id, states)
count = 0
states.each do |state|
count += payments_requests_by_classe_and_state.dig(class_id, state.to_s) || 0
end
count
end

private

def pfmps_by_classe_and_state
@pfmps_by_classe_and_state ||= group_pfmps_by_classe_and_state
end

def payments_requests_by_classe_and_state
@payments_requests_by_classe_and_state ||= group_payments_requests_by_classe_and_state
end

def group_pfmps_by_classe_and_state
counts = {}

Expand All @@ -64,4 +76,20 @@ def group_pfmps_by_classe_and_state

counts
end

def group_payments_requests_by_classe_and_state
counts = {}

ASP::PaymentRequest.joins(:schooling)
.joins("LEFT JOIN asp_payment_request_transitions ON asp_payment_request_transitions.asp_payment_request_id = asp_payment_requests.id AND asp_payment_request_transitions.most_recent = true") # rubocop:disable Layout/LineLength
.where(schoolings: { classe_id: @classes.pluck(:id) })
.group("schoolings.classe_id", "COALESCE(asp_payment_request_transitions.to_state, 'pending')")
.count
.each do |(class_id, state), count|
counts[class_id] ||= {}
counts[class_id][state.presence || "pending"] = count
end

counts
end
end
8 changes: 8 additions & 0 deletions app/views/classes/_pfmps_payments_table.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
- schooling.pfmps.each do |pfmp|
.fr-grid-row
.fr-col-md-7
= dsfr_link_to pfmp.listing_to_s, school_year_class_schooling_pfmp_path(selected_school_year, @classe, schooling, pfmp), title: pfmp.full_dates
.fr-col-md-5
-if pfmp.latest_payment_request.present?
= pfmp.latest_payment_request.status_badge
= dsfr_link_to "Ajouter une PFMP individuelle", new_school_year_class_schooling_pfmp_path(selected_school_year, @classe, schooling)
7 changes: 2 additions & 5 deletions app/views/classes/_students_table.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
.fr-mr-1w Coordonnées bancaires
= ribs_progress_badge(schoolings)
%th{scope: "col"}
PFMPs
PFMPs et Paiements
= "(#{nb_pfmps(schoolings)})"

%tbody
Expand Down Expand Up @@ -47,7 +47,4 @@
%p= dsfr_badge(status: :error) { "Non saisies" }
= dsfr_link_to "Saisir les coordonnées bancaires", new_student_rib_path(student)
%td
%ul
- schooling.pfmps.each do |pfmp|
%li= dsfr_link_to pfmp.listing_to_s, school_year_class_schooling_pfmp_path(selected_school_year, @classe, schooling, pfmp), title: pfmp.full_dates
%li= dsfr_link_to "Ajouter une PFMP individuelle", new_school_year_class_schooling_pfmp_path(selected_school_year, @classe, schooling)
= render partial: "pfmps_payments_table", locals: { schooling: schooling }
15 changes: 9 additions & 6 deletions app/views/classes/index.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
%th{scope: "col"} Décisions d'attribution
%th{scope: "col"} Coordonnées bancaires
%th{scope: "col"} PFMPs
%th{scope: "col"} Paiements
%tbody
- @classes.each do |classe|
- nb_students = @classes_facade.nb_students_per_class[classe.id]
Expand All @@ -19,9 +20,11 @@
%td= progress_badge @classes_facade.nb_attributive_decisions_per_class[classe.id], nb_students
%td= progress_badge @classes_facade.nb_ribs_per_class[classe.id], nb_students
%td
.fr-grid-row
%div
= pfmps_status_count_badge :pending, @classes_facade.nb_pfmps(classe.id, :pending)
= pfmps_status_count_badge :completed, @classes_facade.nb_pfmps(classe.id, :completed)
%div
= pfmps_status_count_badge :validated, @classes_facade.nb_pfmps(classe.id, :validated)
= pfmps_status_count_badge :pending, @classes_facade.nb_pfmps(classe.id, :pending)
= pfmps_status_count_badge :completed, @classes_facade.nb_pfmps(classe.id, :completed)
= pfmps_status_count_badge :validated, @classes_facade.nb_pfmps(classe.id, :validated)
%td
= payment_requests_status_count_badge :pending, @classes_facade.nb_payment_requests(classe.id, %i[pending ready])
= payment_requests_status_count_badge :sent, @classes_facade.nb_payment_requests(classe.id, %i[sent integrated])
= payment_requests_status_count_badge :incomplete, @classes_facade.nb_payment_requests(classe.id, %i[incomplete rejected unpaid])
= payment_requests_status_count_badge :paid, @classes_facade.nb_payment_requests(classe.id, %i[paid])

0 comments on commit 76b6df5

Please sign in to comment.