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 @@
This equipment is overdue.
- At a fee of <%= number_to_currency(reservation.late_fee) %> / day, the renter owes <%= number_to_currency(reservation.late_fee * (Time.zone.today - reservation.due_date).to_i) %> total.
+ At a fee of <%= number_to_currency(reservation.equipment_model.late_fee) %> / day, the renter owes <%= number_to_currency(reservation.late_fee) %> total.
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 @@
This equipment is due back on <%= reservation.due_date.to_s(:long) %>.
- An overdue return will incur a combined late fee of <%= number_to_currency(reservation.late_fee) %> / day.
+ An overdue return will incur a combined late fee of <%= number_to_currency(reservation.equipment_model.late_fee) %> / day.
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 %>