You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

22 lines
708 B

module EntriesHelper
# Berechnet Kilometerpauschale für eine Entry anhand der gespeicherten MileageRate
# entry: muss attribute `distance_km` und `date` haben
def kilometrergeld_for(entry)
rate = MileageRate.for_year(entry.date.year)
if rate
(entry.distance_km.to_f * rate).round(2)
else
# Fallback: z. B. Standardrate 0.42
(entry.distance_km.to_f * 0.05).round(2)
end
end
# Für Summen: sum_meilen ist Summe der km oder Array von entries
def total_km_cost_for_year(user, year)
rate = MileageRate.for_year(year) || 0.42
total_km = user.entries
.where("EXTRACT(YEAR FROM date) = ?", year)
.sum(:distance_km).to_f
(total_km * rate).round(2)
end
end