From f013b367beedde33f76658e1754a42f98cf773ac Mon Sep 17 00:00:00 2001 From: squidgetx Date: Sun, 22 Mar 2015 20:33:29 -0400 Subject: [PATCH] Allows viewing of returned overdue reservations in the reservations index page. Closes #1121 * Overdue table also shows late fee --- app/controllers/reservations_controller.rb | 6 +++--- app/models/reservation.rb | 9 ++++++++- .../admin_mailer/overdue_checked_in_fine_admin.html.erb | 2 +- app/views/reservations/_check_in_form.html.erb | 2 +- app/views/reservations/_check_out_form.html.erb | 2 +- app/views/reservations/_index_nav.html.erb | 1 + app/views/reservations/_reservations_list.html.erb | 6 ++++++ app/views/user_mailer/_returned_overdue.html.erb | 2 +- 8 files changed, 22 insertions(+), 8 deletions(-) diff --git a/app/controllers/reservations_controller.rb b/app/controllers/reservations_controller.rb index 126183223..0a6706323 100644 --- a/app/controllers/reservations_controller.rb +++ b/app/controllers/reservations_controller.rb @@ -34,9 +34,9 @@ def set_filter f = (can? :manage, Reservation) ? :upcoming : :reserved - @filters = [:reserved, :checked_out, :overdue, :returned, :upcoming, - :requested, :approved_requests, :denied] - @filters << :missed unless AppConfig.check(:res_exp_time) + @filters = [:reserved, :checked_out, :overdue, :returned, :returned_overdue, + :upcoming, :requested, :approved_requests, :denied] + @filters << :missed unless AppConfig.first.res_exp_time # if filter in session set it if session[:filter] diff --git a/app/models/reservation.rb b/app/models/reservation.rb index 8ac826ddb..212b08140 100644 --- a/app/models/reservation.rb +++ b/app/models/reservation.rb @@ -131,7 +131,14 @@ def time_checked_out end def late_fee - equipment_model.late_fee.to_f + if checked_in + end_date = checked_in.to_date + else + end_date = Time.zone.today + end + fee = equipment_model.late_fee * (end_date - due_date) + fee = 0 if fee < 0 + fee end def reserver diff --git a/app/views/admin_mailer/overdue_checked_in_fine_admin.html.erb b/app/views/admin_mailer/overdue_checked_in_fine_admin.html.erb index 8c0930578..413b731dc 100644 --- a/app/views/admin_mailer/overdue_checked_in_fine_admin.html.erb +++ b/app/views/admin_mailer/overdue_checked_in_fine_admin.html.erb @@ -11,7 +11,7 @@ Notes: <%= markdown(@overdue_checked_in.notes) %> <% end %> -

The late fee is <%= number_to_currency(@overdue_checked_in.equipment_model.late_fee) %> per day, for a total of <%= number_to_currency(((@overdue_checked_in.checked_in.to_date - @overdue_checked_in.due_date )).to_i*(@overdue_checked_in.equipment_model.late_fee))%> +

The late fee is <%= number_to_currency(@overdue_checked_in.equipment_model.late_fee) %> per day, for a total of <%= number_to_currency(@overdue_checked_in.late_fee) %>


diff --git a/app/views/reservations/_check_in_form.html.erb b/app/views/reservations/_check_in_form.html.erb index 0d9ee3e57..885c531ce 100644 --- a/app/views/reservations/_check_in_form.html.erb +++ b/app/views/reservations/_check_in_form.html.erb @@ -70,7 +70,7 @@ diff --git a/app/views/reservations/_check_out_form.html.erb b/app/views/reservations/_check_out_form.html.erb index 89a3d5697..403737631 100644 --- a/app/views/reservations/_check_out_form.html.erb +++ b/app/views/reservations/_check_out_form.html.erb @@ -53,7 +53,7 @@ diff --git a/app/views/reservations/_index_nav.html.erb b/app/views/reservations/_index_nav.html.erb index 55fadeb30..0fcca5025 100644 --- a/app/views/reservations/_index_nav.html.erb +++ b/app/views/reservations/_index_nav.html.erb @@ -11,6 +11,7 @@ <%= render partial: 'index_nav_tab', locals: {filter: :missed, text: 'Missed'} %> <% end %> <%= render partial: 'index_nav_tab', locals: {filter: :returned, text: 'Returned'} %> + <%= render partial: 'index_nav_tab', locals: {filter: :returned_overdue, text: 'Returned Overdue'} %> <%= render partial: 'index_nav_tab', locals: {filter: :approved_requests, text: 'Approved'} %> <%= render partial: 'index_nav_tab', locals: {filter: :denied, text: 'Denied'} %> diff --git a/app/views/reservations/_reservations_list.html.erb b/app/views/reservations/_reservations_list.html.erb index bc1be7c8d..1bc712e94 100644 --- a/app/views/reservations/_reservations_list.html.erb +++ b/app/views/reservations/_reservations_list.html.erb @@ -9,6 +9,9 @@ Item Start Date Due Date + <% if @filter == :overdue || @filter == :returned_overdue %> + Late Fee + <% end %> @@ -38,6 +41,9 @@ <%= reservation.start_date.to_s(:long) %> <%= reservation.due_date.to_s(:long) %> + <% if @filter == :overdue || @filter == :returned_overdue %> + <%= number_to_currency reservation.late_fee %> + <% end %> <% end %> diff --git a/app/views/user_mailer/_returned_overdue.html.erb b/app/views/user_mailer/_returned_overdue.html.erb index 6fe4e89e6..378538fe9 100644 --- a/app/views/user_mailer/_returned_overdue.html.erb +++ b/app/views/user_mailer/_returned_overdue.html.erb @@ -1,6 +1,6 @@

This is a receipt for your late equipment return.

<% if @reservation.equipment_model.late_fee > 0 %> -

Your late fee is <%= number_to_currency(@reservation.equipment_model.late_fee) %> per day, for a total of <%= number_to_currency(((@reservation.checked_in.to_date - @reservation.due_date)).to_i*(@reservation.equipment_model.late_fee))%> +

Your late fee is <%= number_to_currency(@reservation.equipment_model.late_fee) %> per day, for a total of <%= number_to_currency(@reservation.late_fee) %>

<% end %>