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
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
|