Zum Hauptinhalt springen

Fahrzeuge

Zweck

Der Fuhrpark in SpeamCore haelt alle Fahrzeuge des Mandanten — sowohl Leasing- als auch Eigentumsfahrzeuge — mit Stammdaten, Kilometerstand-Historie, Reifenwechseln und Vertragsdokumenten. Fahrzeuge sind über VehicleAssignment einem Mitarbeiter zuordenbar.

Voraussetzungen

- Berechtigung `create:Vehicle`. - `ownershipType` muss bei der Anlage gesetzt sein und ist danach **disabled** — Wechsel des Besitzverhaeltnisses erfordert einen neuen Datensatz.

Berechtigungen (CASL)

Frontend-Page-Guard:

ActionSubjectKeycloak-Rolle
viewFE_Vehicle, Vehicle

Tab-Subjects:

TabSub-PfadSubject
Kilometerstaende/vehicles/:id/mileagesVehicleMileage:view
Kontakte/vehicles/:id/contactsContact:view
Reifen/vehicles/:id/tiresVehicleTire:view
Vertragsdokumente/vehicles/:id/contract-documentsDocument:view
Anschreiben/vehicles/:id/letter-documentsDocument:view
Protokolle/vehicles/:id/protocol-documentsDocument:view

Schritt-für-Schritt-Anleitung

Fahrzeug anlegen

  1. Fahrzeuge (/vehicles) → + Neu.
  2. Wichtig: ownershipType (leasing oder ownership) auswählen — danach nicht mehr änderbar.
  3. Stammdaten: name, registrationNumber (Kennzeichen), vin, Hersteller (manufacturerId), Modell.
  4. Bei leasing: Vertrags-Felder (Vertragsnummer, Netto-Rate, Laufzeit, Mehr-/Minder-Kilometerpreis, Toleranz).
  5. Bei ownership: Kaufpreis, Versicherungsdaten.
  6. Speichern. Status startet auf active.

Kilometerstand erfassen

  1. Tab Kilometerstaende+ Neu.
  2. Datum und km-Stand eintragen.
  3. Speichern. Validierung: neuer Wert ≥ vorhergehender Wert (Hook am Modell).

Fahrzeug archivieren

status auf archived setzen — die meisten Felder werden danach disabled.

Listenansicht — vehicles

Toolbar (Detail-Seite)

Schlanke Toolbar oben rechts:

IconAktion (aria-label)CASLWirkung
ZurückgehenZurück zur Liste.
🏠Zur Startseite gehenSpringt auf das Dashboard / /.
⏮/◀/▶/⏭PaginationNavigation durch die gefilterte Liste — Massen-Bearbeitung ohne Liste-Sprung.

Wie auf jeder Detail-Seite verfuegbar — siehe Floating-Quickbar:

  • KAL. (Mini-Kalender)
  • ZEIT (Persoenliche Wochen-Arbeitszeit)
  • ARBEIT (Eigene bevorstehende Aufträge)

UI-Elemente

Button: „+ Neu"

Erfordert create:Vehicle. Beim Anlegen muss ownershipType zwingend gesetzt sein.

Felder und Eingaben

Stammdaten:

FeldnamePflichtDatentypWirkung beim AusfuellenVoraussetzung
nameneinStringAnzeigename in Auswahl-Listen und Auftragszuweisungen.
registrationNumberneinStringKennzeichen — Identifikator für Fuhrpark-Reports und Halter-Doku.
vinneinStringFahrgestellnummer für eindeutige Identifikation und Versicherungs-Korrespondenz.
manufacturerCode / modelCodeneinStringHersteller- und Modell-Code für detaillierte Berichte.
firstRegistrationDateneinDATEErstzulassung — beeinflusst Wartungsintervall-Berechnung.
manufacturerIdneinUUIDHersteller-Verknuepfung.view:Manufacturer.
ownershipTypejaleasing/ownershipSteuert Sichtbarkeit der Leasing- vs. Eigentum-Felder. Disabled nach Anlage — Wechsel des Besitzverhaeltnisses erfordert neuen Datensatz.Muss vor erstem Speichern gesetzt sein.
statusjaactive/archivedarchived macht die meisten Felder disabled und blendet das Fahrzeug in Auswahl-Listen aus.
parentId + parentTypeneinpolymorphTypisch VehicleAssignment — Verknuepfung zum aktuellen Mitarbeiter.view:VehicleAssignment.
trackMileagejaBooleanSteuert, ob beim Fahrer KM-Eingaben angefragt werden (Workorder-Start, Tour-Start, Mileage-Log). Default true — Bestandsverhalten. Bei false werden die KM-Prompts unterdrückt, z. B. bei Werkstatt-Werkzeug-Fahrzeugen oder elektrischen Stapler-Trolleys ohne klassisches Tacho-Konzept.

Antrieb:

FeldnameDatentypWirkung beim AusfuellenVoraussetzung
driveTypehybrid/electric/diesel/petrol/gasKlassifizierung für Reports (CO₂-Bilanz, Tank-/Lade-Optionen).
gearboxTypeautomatic/manualDisposition (welcher Mitarbeiter darf das Fahrzeug fahren).

Leasing-Felder (nur bei ownershipType = leasing sichtbar):

FeldnameWirkung beim AusfuellenVoraussetzung
contractNumberVertragsidentifikation für Korrespondenz mit Leasinggeber.
contractNetRateMonatliche Rate (netto) für Kosten-Reports.
contractTermMonthsVertragslaufzeit in Monaten.
contractStartDate / contractEndDateVertragszeitraum — Anker für Erinnerungen vor Vertragsende.endDate >= startDate.
contractMileageAllowanceErlaubte Gesamt-Kilometerleistung. Anker für Mehr-/Minder-Berechnung.
contractToleranceKilometerToleranzgrenze für Mehr-/Minderkilometer ohne Mehrkosten.
contractOvermileagePrice / contractUndermileagePricePreis pro Mehr- bzw. Minderkilometer über/unter der Toleranz.

Eigentum-Felder (nur bei ownershipType = ownership sichtbar):

FeldnameWirkung beim AusfuellenVoraussetzung
purchasePriceNetAnschaffungspreis (netto) für Anlagevermoegens-Reports.
purchasePriceDateAnschaffungs-Datum als Anker für AfA-Berechnung.
insuranceNumberVersicherungsnummer für Schadensfall.
insuranceCompanyVersicherungsgesellschaft.

Workflows und Zustaende

Wiederverwendbare Konzepte

Verknuepfungen zu anderen Modulen

  • MitarbeiterVehicleAssignment verknuepft Fahrzeug und Mitarbeiter.
  • HerstellermanufacturerId.
  • Kontakte — Vertragsansprechpartner via ContactParent.
  • Dokumente — drei Doc-Kategorien: Verträge, Anschreiben, Protokolle.

Häufige Fehler und Lösungen

FehlerLösung
ownershipType nicht änderbarPer Design — neuer Datensatz, alter wird archiviert.
Kilometerstand wird abgelehntNeuer Wert kleiner als letzter erfasster Wert — prüfen oder vorigen Eintrag korrigieren.
Leasing-Felder ausgeblendetownershipType = ownership gewählt.

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/vehiclesListeview Vehicle
GET/api/vehicles/:idDetailview Vehicle
POST/api/vehiclesAnlegencreate Vehicle
PATCH/api/vehicles/:idÄndernupdate Vehicle
DELETE/api/vehicles/:idSoft-Deletedelete Vehicle

Versionshinweise

  • 2026-06-12: Fahrzeugliste hat jetzt ein Rich-Filter-Panel (analog Verkaufsbelege: Kennzeichen, Hersteller, Mitarbeiter, Status, Name); der Status-Filter steht standardmäßig auf active, sodass archivierte Fahrzeuge ausgeblendet sind (auch in der Mitarbeiter-Fahrzeugliste). Verifiziert an VehicleListPage.tsx. Zugehörig: KM-Foto-KI-Prüfung auf /vehicles-mileages.
  • 2026-05-20 (Welle 132): Neues Feld trackMileage (Boolean, Default true). Bei false werden Fahrer-KM-Prompts (Workorder-Start, Tour-Start, Mileage-Log) unterdrückt — Backend-Services prüfen das Flag vor der Prompt-Erzeugung. Bestandsfahrzeuge bleiben auf true. Quelle: BE 7fe94db9 + Migration 20260519100001-add-track-mileage-to-vehicles.js, FE e51e5e46 (Switch im Vehicle-Form, i18n DE „Km-Tracking" / EN „Mileage Tracking").

Frühere Versionen

  • 2026-04-29: Initiale Veroeffentlichung.