Meine Einträge

🚗 Fahrtkosten (Kilometergeld)
<% @total_kilometer_costs_by_year.each do |year, sum| %> <% rate = MileageRate.find_by(year: year)&.rate_per_km || 0.42 %> <% km = rate > 0 ? (sum.to_f / rate).round(1) : "?" %>

<%= year %>: <%= number_to_currency(sum, unit: "€", separator: ",", delimiter: ".", precision: 2) %> (<%= km %> km bei <%= number_to_currency(rate, unit: "€", separator: ",", delimiter: ".", precision: 2) %>/km)

<% end %>
💶 Fortbildungskosten
<% @fortbildungskosten_by_year.each do |year, sum| %>

<%= year %>: <%= number_to_currency(sum, unit: "€", separator: ",", delimiter: ".", precision: 2) %>

<% end %>
🧠 Selbsterfahrungskosten
<% @selbsterfahrungskosten_by_year.each do |year, sum| %>

<%= year %>: <%= number_to_currency(sum, unit: "€", separator: ",", delimiter: ".", precision: 2) %>

<% end %>
👨‍🏫 Supervision
<% @selbstsupervision_by_year.each do |year, sum| %>

<%= year %>: <%= number_to_currency(sum, unit: "€", separator: ",", delimiter: ".", precision: 2) %>

<% end %>
📊 Gesamtkosten (Werbungskosten)
<% @allekosten_by_year.each do |year, sum| %>

<%= year %>: <%= number_to_currency(sum, unit: "€", separator: ",", delimiter: ".", precision: 2) %>

<% end %>
🕒 Gesamtzeit

Total: <%= @total_minutes / 60 %>h <%= @total_minutes % 60 %> min

Propädeutikum: <%= @total_minutes_praktikum_prop / 60 %>h <%= @total_minutes_praktikum_prop % 60 %> min

Fachspezifikum: <%= @total_minutes_praktikum_fach / 60 %>h <%= @total_minutes_praktikum_fach % 60 %> min

📊 Übersicht je Kombination

<% ["propädeutikum", "fachspezifikum"].each do |typ| %> <% ["Praktikum", "Selbsterfahrung", "Supervision"].each do |art| %> <% remaining = @remaining_minutes_matrix.dig(typ, art) %> <% soll = current_user.required_hours_matrix.dig(typ, art) %> <% weekly = current_user.weekly_target_matrix.dig(typ, art) %> <% ende = @estimated_end_by_typ_art.dig(typ, art) %> <% if remaining.present? || soll.present? || weekly.present? %> <% end %> <% end %> <% end %>
Typ Art Verbleibend Soll (h) Wöchentlich Vorauss. Ende Fortschritt
<%= typ.capitalize %> <%= art.capitalize %> <%= remaining ? "#{remaining / 60} h #{remaining % 60} min" : "—" %> <%= soll || "—" %> h <%= weekly || "—" %> h/Woche <%= ende.present? ? ende.strftime("%d.%m.%Y") : "—" %> <% percent = @completion_percent_by_typ_art[[typ, art]] %> <%= percent ? "#{percent} %" : "—" %>

⏱ Timer

<% if @running_entry.present? %>
Laufender Eintrag: <%= @running_entry.praktikums_typ %> – <%= @running_entry.entry_art %>
Gestartet: <%= l(@running_entry.start_time, format: :short) %>
Dauer: Berechne …
<%= form_with url: stop_timer_entry_path(@running_entry), method: :post, local: true do |f| %>
<%= f.check_box :lunch_break, class: 'form-check-input', id: 'lunch_break' %> <%= f.label :lunch_break, '30 Min Mittagspause abziehen', class: 'form-check-label' %>
<%= f.submit '⏹️ Stoppen', class: "btn btn-danger" %> <% end %>
<% end %>
<%= form_with url: start_timer_entries_path, method: :post, local: true do %>
<%= label_tag :typ, 'Typ' %> <%= select_tag :typ, options_for_select( current_user.praepedeutikum_abgeschlossen? ? Entry::PRAKTIKUMSTYPEN.reject { |typ| typ == 'propädeutikum' } : Entry::PRAKTIKUMSTYPEN ), class: "form-select" %>
<%= label_tag :art, 'Art' %> <%= select_tag :art, options_for_select(Entry::ENTRY_ARTEN), class: "form-select" %>
<%= submit_tag '▶️ Start', class: "btn btn-success w-100", disabled: @running_entry.present? %>
<% end %>
<%= link_to '➕ Neuer Eintrag', new_entry_path, class: 'btn btn-outline-primary mt-3 w-100 w-md-auto mb-3' %>

📋 Einträge

<% @entries.each do |entry| %> <% end %>
Datum Zeit Typ Art Beschreibung Kilometer Pauschale Kosten Zählt als Fortbildung Aktionen
<%= entry.date.strftime('%d.%m.%Y') %> <% if entry.hours.to_i > 0 || entry.minutes.to_i > 0 %> <%= formatted_duration(entry) if formatted_duration(entry) %> <% end %> <%= ["Fortbildung", "Semesterkosten"].include?(entry.entry_art) ? entry.entry_art : entry.praktikums_typ.capitalize %> <%= ["Fortbildung", "Semesterkosten"].include?(entry.entry_art) ? entry.beschreibung : entry.entry_art.capitalize %> <%= entry.beschreibung %> <%= entry.distance_km.to_f %> km <%= number_to_currency(entry.kilometer_pauschale, unit: "€", separator: ",", delimiter: ".") %> <%= number_to_currency(entry.kosten, unit: "€", separator: ",", delimiter: ".") %> <%= check_box_tag "fortbildung_#{entry.id}", '1', entry.zaehlt_als_fortbildung, disabled: true %>
<%= link_to 'Bearbeiten', edit_entry_path(entry), class: 'btn btn-sm btn-outline-primary' %> <%= link_to 'Löschen', entry_path(entry), class: 'btn btn-sm btn-outline-danger open-delete-modal' %>
<%= link_to "Export als CSV", export_csv_entries_path(format: :csv), class: "btn btn-outline-secondary mt-3 w-100 w-md-auto" %>