Add last service date and mileage methods to Vehicle model and update views

This commit is contained in:
2026-08-11 18:07:43 -04:00
parent fe81cb6ff8
commit 9d101fef38
3 changed files with 39 additions and 11 deletions
+17
View File
@@ -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
+7 -8
View File
@@ -49,16 +49,15 @@
</div>
</div>
<% last = vehicle.issues.last %>
<% if last %>
<% mileage = last.custom_values.find_by(custom_field_id: CustomField.find_by_name("Mileage").id) %>
<% if mileage %>
<%
mileage = vehicle.last_service_mileage
%>
<% if mileage %>
<p>
<b><%=t(:label_last_service) %></b> <%= last&.closed_on&.to_date || l(:label_unknown) %>
at <%= mileage.value %>
<%=t(:label_miles) %>
<b><%= t(:label_last_service) %></b> <%= vehicle.last_service_date %>
at <%= mileage %> <%= t(:label_miles) %>
</p>
<% end %>
<% end %>
<div style="float: right;">
+13 -1
View File
@@ -21,10 +21,22 @@
<% if show_customer %>
<%= vehicle.customer %>
<% end %>
</div>
<%
mileage = vehicle.last_service_mileage
%>
<% if mileage %>
<br/>
<b><%= t(:label_last_service) %></b> <%= vehicle.last_service_date %>
at <%= mileage %> <%= t(:label_miles) %>
<% end %>
</div>
<br/>
</div>
</div>
<% end %>