From 9d101fef3840cdc9251a3f9d7eca96b5c746d652 Mon Sep 17 00:00:00 2001 From: Rick Barrette Date: Tue, 11 Aug 2026 18:07:43 -0400 Subject: [PATCH] Add last service date and mileage methods to Vehicle model and update views --- app/models/vehicle.rb | 17 +++++++++++++++++ app/views/vehicles/_details.html.erb | 19 +++++++++---------- app/views/vehicles/_list.html.erb | 14 +++++++++++++- 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/app/models/vehicle.rb b/app/models/vehicle.rb index d6479fd..5ece192 100644 --- a/app/models/vehicle.rb +++ b/app/models/vehicle.rb @@ -33,6 +33,23 @@ class Vehicle < ApplicationRecord issues.includes(:invoices).flat_map(&:invoices).uniq.compact end + def last_service + return issues + .joins(:custom_values) + .where(custom_values: { custom_field_id: CustomField.find_by(name: "Mileage")&.id }) + .where.not(custom_values: { value: ['', nil] }) + .order(created_on: :desc) + .first + end + + def last_service_date + return last_service.created_on&.to_date + end + + def last_service_mileage + return last_service&.custom_values&.find_by(custom_field_id: CustomField.find_by(name: "Mileage")&.id)&.value.presence + end + def make=(val) super(val.to_s.strip) end diff --git a/app/views/vehicles/_details.html.erb b/app/views/vehicles/_details.html.erb index 1a1b3d9..b46a232 100644 --- a/app/views/vehicles/_details.html.erb +++ b/app/views/vehicles/_details.html.erb @@ -49,16 +49,15 @@ -<% last = vehicle.issues.last %> -<% if last %> - <% mileage = last.custom_values.find_by(custom_field_id: CustomField.find_by_name("Mileage").id) %> - <% if mileage %> -

- <%=t(:label_last_service) %> <%= last&.closed_on&.to_date || l(:label_unknown) %> - at <%= mileage.value %> - <%=t(:label_miles) %> -

- <% end %> +<% + mileage = vehicle.last_service_mileage +%> + +<% if mileage %> +

+ <%= t(:label_last_service) %> <%= vehicle.last_service_date %> + at <%= mileage %> <%= t(:label_miles) %> +

<% end %>
diff --git a/app/views/vehicles/_list.html.erb b/app/views/vehicles/_list.html.erb index d30144e..2dbdfbe 100644 --- a/app/views/vehicles/_list.html.erb +++ b/app/views/vehicles/_list.html.erb @@ -21,10 +21,22 @@ <% if show_customer %> <%= vehicle.customer %> <% end %> + + <% + mileage = vehicle.last_service_mileage + %> + + <% if mileage %> +
+ <%= t(:label_last_service) %> <%= vehicle.last_service_date %> + at <%= mileage %> <%= t(:label_miles) %> + <% end %> +
+
-
+ <% end %>