Workflow: Fleet Management — Viața unui Vehicul
Module implicate: Fleet (Vehicles · Bookings · Logbooks · Work Orders · Fuel · Maintenance · Inspections · Parts · Insurance) · HR Profile · Purchase · Expenses · Invoices
Cine îl folosește: Fleet Manager · Șoferi (Driver role) · Financiar · Mentenanță
Durata tipică: Continuu (booking zilnic) + ciclu lunar (costuri) + ciclu anual (inspecții, asigurări)
Overview
Modulul Fleet gestionează întregul ciclu de viață al unui vehicul de companie: înregistrare, asignare șofer, rezervări (booking), logbook de deplasare, mentenanță, piese de schimb, combustibil, inspecții și asigurări. Costurile de mentenanță sunt trasate financiar prin Expenses (from_fleet=1), iar rezervările facturate prin Invoices (from_fleet=1).
Dependențe obligatorii: Modulele
hr_profileșipurchasetrebuie să fie active. Fleet verifică la fiecare încărcare — dacă unul lipsește, redirecționează cu eroare. Fără aceste module, Fleet nu funcționează.
Note despre Assets: Nu există o legătură funcțională între modulul Fleet și modulul Assets (
tblassets). Stub-urile de integrare există în cod dar metodele referite nu sunt implementate.
Diagrama fluxului
[CONFIGURARE INIȚIALĂ — admin]
│
├── Vehicle Groups + Vehicle Types
├── Garages (+ Maintenance Teams)
├── Insurance Categories / Types / Status / Companies
├── Part Groups + Part Types
├── Inspection Forms (cu întrebări și criterii de eșec)
├── Criteria (pentru beneficii/penalități șoferi)
└── Atribuire rol 'Fleet: Driver' angajaților care conduc
│
↓
[ÎNREGISTRARE VEHICUL]
│
├── Vehicul nou: tip, grup, număr înmatriculare, VIN, date tehnice
├── Asigurare adăugată: categorie, tip, companie, valabilitate, sumă
└── Piese inventariate și asignate vehiculului
│
↓
[BOOKING — REZERVARE]
│
├── Client sau intern depune rezervare (Fleet_client controller)
├── Status inițial: new
├── Fleet Manager aprobă manual: new → approved
│ (sau: rejected / processing)
└── Booking confirmat → Amount setat pentru facturare ulterioară
│
↓
[LOGBOOK — EXECUȚIE DEPLASARE]
│
├── Logbook creat pentru booking confirmat: vehicul + șofer + dată
├── Time Cards adăugate: start_time / end_time per sesiune de lucru
├── Status logbook: new → processing → complete
└── Înregistrare combustibil: odometru, litri, preț, tip, furnizor
│
↓
[MENTENANȚĂ / WORK ORDER (dacă apare defecțiune sau service planificat)]
│
├── Work Order creat: vehicul, furnizor, odometru intrare/ieșire
├── Status: open → in_progress → parts_ordered → complete
├── Piese consumate adăugate ca Work Order Details (part_id, qty, price)
├── La finalizare: Create Expense → Expense creat cu category 'Fleet: Work Order'
│ from_fleet=1 · vendor = furnizorul din Work Order
└── (Alternativă mentenanță simplă: Maintenance record fără Work Order)
│
↓
[INSPECȚIE (periodică sau la incident)]
│
├── Inspecție creată pe baza unui Inspection Form configurat
├── Rezultate completate per întrebare (answer, boxdescriptionid)
├── Răspunsuri cu is_fail=1 → inspecție marcată ca eșuată
└── Inspecțiile pot fi recurente (recurring_type, cycles)
│
↓
[FACTURARE BOOKING]
│
├── Din booking finalizat: butonul Create Invoice
├── Invoice creat automat cu amount din booking + from_fleet=1
└── Factură urmărită și plătită ca orice invoice standard
│
↓
[RAPOARTE & COSTURI]
│
├── Fleet → Transactions: toate invoice + expense cu from_fleet=1
├── Fleet → Reports: Profit & Loss · Sales Chart per vehicul
└── Beneficii/Penalități șoferi: înregistrate cu criteriu + sumă
[VEHICUL SCOS DIN SERVICIU → out_of_service_date + odometru final]
Pas cu pas
1. Configurare inițială (admin)
Unde: /admin/fleet → Settings
Ordinea de configurare contează — unele entități depind de altele:
1a. Lookup-uri vehicule
Unde: Settings → Vehicle Groups + Vehicle Types
Creați cel puțin un grup (ex: „Autoturisme", „Utilitare") și un tip (ex: „Sedan", „SUV", „Camion"). Sunt obligatorii la crearea unui vehicul.
1b. Garaje
Unde: Settings → Garages → Add Garage
Câmpuri: name, country, city, address. După creare, puteți adăuga Maintenance Team: angajați (staff) asignați acelui garaj pentru mentenanță.
1c. Insurance setup (4 tabele separate)
Unde: Settings → Insurance Categories / Insurance Types / Insurance Status / Insurance Company
Toate 4 sunt necesare înainte de adăugarea unei polițe de asigurare pe vehicul.
1d. Part Groups + Part Types
Unde: Settings → Part Groups + Part Types
Necesare înainte de crearea pieselor de inventar.
1e. Inspection Forms
Unde: Settings → Inspection Forms → New Form
Fiecare formular are:
- Întrebări cu tipuri de răspuns (checkbox, text, etc.)
is_failsetat pe răspunsurile care marchează inspecția ca eșuată
Formularele pot fi configurate ca recurente (recurring=1, recurring_type, cycles).
1f. Criteria (pentru beneficii/penalități)
Unde: Settings → Criteria → Add Criteria
Utilizate în Fleet → Benefits & Penalties pentru înregistrarea formală a recompenselor sau penalităților șoferilor.
1g. Atribuire rol șofer
Unde: /admin/staff → editare staff → Roles → bifați „Fleet: Driver"
Rolul Fleet: Driver este creat automat la instalarea modulului. Numai staff-ul cu acest rol apare în dropdown-urile de șofer din Fleet (Assignments, Logbooks, Work Orders etc.).
2. Înregistrare vehicul
Unde: /admin/fleet → Vehicles → Add Vehicle
Câmpuri obligatorii:
| Câmp | Descriere |
|---|---|
name |
Denumire/identificator vehicul |
vehicle_type_id |
FK → fleet_vehicle_types |
vehicle_group_id |
FK → fleet_vehicle_groups |
license_plate |
Număr înmatriculare |
Câmpuri recomandate:
| Câmp | Descriere |
|---|---|
vin |
VIN (serie șasiu) |
make / model / year |
Date identificare |
fuel_type |
Tip combustibil |
in_service_date |
Data intrării în parcul auto |
odometer |
Kilometraj curent |
estimated_service_life_in_months |
Durata estimată de serviciu |
Asigurare vehicul: Unde: fișa vehiculului → tab Insurance → Add Insurance
| Câmp | Descriere |
|---|---|
insurance_category_id |
FK → fleet_insurance_categories |
insurance_type_id |
FK → fleet_insurance_types |
insurance_company_id |
FK → fleet_insurance_company |
insurance_status_id |
FK → fleet_insurance_status |
start_date / end_date |
Valabilitate |
amount |
Prima de asigurare |
Piese asignate vehiculului:
Unde: /admin/fleet → Parts → Add Part → asignare vehicul
3. Asignare șofer la vehicul
Unde: /admin/fleet → Vehicle Assignments → Add Assignment
| Câmp | Descriere |
|---|---|
driver_id |
Staff cu rolul Fleet: Driver |
vehicle_id |
FK → fleet_vehicles |
start_time / end_time |
Intervalul asignării |
starting_odometer / ending_odometer |
Kilometraj la preluare/predare |
Un vehicul poate avea mai multe asignări succesive. Istoricul se păstrează integral.
4. Booking — rezervare vehicul
Unde: client extern → portal /clients/fleet (Fleet_client controller) sau admin → /admin/fleet/bookings
Statusuri booking (fleet_bookings.status):
| Status | Culoare | Semnificație |
|---|---|---|
new |
Albastru | Cerere nouă, neprocessată |
approved |
Verde-teal | Aprobat de fleet manager |
rejected |
Verde | Respins |
processing |
Albastru | În curs de procesare |
complete |
Verde | Finalizat |
cancelled |
Roșu | Anulat |
Important: Nu există flux de aprobare automatizat. Coloana
approved(INT) există în tabel dar nu este citită sau scrisă de nicio metodă activă din cod. Tranziția statusului este exclusiv manuală — fleet manager-ul schimbă statusul explicit.
Permisiune necesară pentru schimbare status: service_management → edit SAU is_admin().
Câmpuri cheie booking:
| Câmp | Descriere |
|---|---|
subject |
Descriere rezervare |
contactid |
Contactul care face rezervarea |
delivery_date |
Data livrării |
receipt_address / delivery_address |
Adrese |
amount |
Suma de facturat (completată de admin) |
5. Logbook — execuție deplasare
Unde: /admin/fleet → Work Performance (Logbooks) → Add
Logbook-ul documentează execuția unui booking sau o deplasare independentă.
Statusuri logbook (fleet_logbooks.status):
| Status | Semnificație |
|---|---|
new |
Înregistrat, nestartat |
processing |
În curs |
complete |
Finalizat |
cancelled |
Anulat |
Time Cards: per logbook se adaugă sesiuni de lucru cu start_time și end_time (fleet_time_cards). Permit calculul orelor totale.
Combustibil:
Unde: /admin/fleet → Fuel History → Add
| Câmp | Descriere |
|---|---|
vehicle_id |
Vehiculul alimentat |
fuel_time |
Data/ora alimentării |
odometer |
Km la alimentare |
gallons |
Cantitate (litri sau gallons) |
price |
Cost total |
fuel_type |
Tipul combustibilului |
vendor_id |
Furnizorul (stație) |
6. Work Order — mentenanță cu piese
Unde: /admin/fleet → Work Orders → New Work Order
Statusuri work order (fleet_work_orders.status):
| Status | Semnificație |
|---|---|
open |
Deschis (implicit la creare) |
in_progress |
Lucrare în curs |
parts_ordered |
Piese comandate, așteptare |
complete |
Finalizat |
Câmpuri cheie:
| Câmp | Descriere |
|---|---|
vehicle_id |
Vehiculul reparat |
vendor_id |
Furnizorul service |
odometer_in / odometer_out |
Km la intrare/ieșire |
issue_date / start_date / complete_date |
Datele lucrării |
work_requested |
Descrierea lucrărilor cerute |
total |
Cost total calculat din liniile de piese |
Piese consumate (Work Order Details):
Adăugați linii cu part_id (din inventarul Fleet), qty, price → total se calculează automat.
Generare cheltuială din Work Order (status=complete): Butonul Create Expense din Work Order → crează automat:
tblexpensescufrom_fleet=1,amount=work_order.total,category='Fleet: Work Order',vendor_id=work_order.vendor_id- Work Order primește
expense_idîn câmpul de legătură
7. Inspecție vehicul
Unde: /admin/fleet → Inspections → New Inspection
Selectați vehiculul + Inspection Form. Completați răspunsurile per întrebare. Răspunsurile marcate is_fail=1 marchează inspecția ca eșuată automat.
Inspecțiile pot fi setate ca recurente (recurring=1): sistemul generează automat viitoarele inspecții conform recurring_type și cycles.
8. Facturare booking
Unde: /admin/fleet → Bookings → fișa booking → Create Invoice
Metoda create_invoice_by_booking($id) generează automat:
- O factură standard (
tblinvoices) cuamountdin booking șifrom_fleet=1 - Booking-ul primește
invoice_idșiinvoice_hashîn câmpurile de legătură
Factura generată apare și în /admin/invoices și poate fi gestionată ca orice factură standard (trimitere, plată, reminder, eFactura).
9. Rapoarte și costuri
Unde: /admin/fleet → Transactions / Reports
| Secțiune | Ce afișează |
|---|---|
| Transactions | Toate tblinvoices și tblexpenses cu from_fleet=1 |
| Profit & Loss Chart | Venituri (invoices from_fleet) vs. Cheltuieli (expenses from_fleet) |
| Sales Chart | Venituri per perioadă pentru vehiculele fleet |
Permisiuni necesare
| Permisiune | Entitate |
|---|---|
fleet_vehicle → view/create/edit/delete |
Vehicule |
fleet_driver → view/create/edit/delete |
Șoferi |
fleet_vehicle_assignment → create/edit |
Asignări vehicul-șofer |
fleet_maintenance → view/create/edit/delete |
Mentenanță simplă |
fleet_fuel → view/create/edit/delete |
Combustibil |
fleet_inspection → view/create/edit/delete |
Inspecții |
fleet_bookings → view/create/edit/delete |
Rezervări |
fleet_work_orders → view/create/edit/delete |
Work Orders |
fleet_work_performance → view/create/edit/delete |
Logbooks + Time Cards |
fleet_event → view/create/edit/delete |
Evenimente |
fleet_insurance → view/create/edit/delete |
Asigurări |
fleet_benefit_and_penalty → view/create/edit/delete |
Beneficii/Penalități |
fleet_part → view/create/edit/delete |
Piese |
fleet_garage → create/edit/delete |
Garaje |
fleet_transaction → view |
Raport costuri |
fleet_setting → view/create/edit/delete |
Configurare |
service_management → edit SAU is_admin() |
Schimbare status booking/logbook/work order |
Gotchas
| Problemă | Cauză | Soluție |
|---|---|---|
| Modulul Fleet nu se încarcă, eroare redirect | hr_profile sau purchase modul inactiv |
Activați ambele module din /admin/modules |
| Șoferul nu apare în dropdown | Nu are rolul Fleet: Driver asignat |
Staff → Roles → bifați Fleet: Driver |
| Booking nu poate fi aprobat | Lipsesc permisiunile service_management → edit |
Asignați permisiunea sau acordați admin |
| Work Order nu generează Expense | Work Order nu este pe status complete |
Finalizați Work Order-ul (status=complete) înainte de Create Expense |
| Vehiculul nu apare în booking | Nu are Vehicle Type sau Vehicle Group setat | Completați ambele câmpuri pe fișa vehiculului |
| Factura din booking nu apare în Invoices | from_fleet=1 filtru — factura există dar cu flag fleet |
Factura apare normal în /admin/invoices — filtrul Fleet Transactions o arată separat |
Referințe module
- Fleet — documentație modul
- Assets — managementul activelor (separat de Fleet)
- Expenses — cheltuielile generate de Work Orders
- Invoices — facturile generate din Bookings
- HR — Staff — asignare rol Fleet: Driver
Verificați raportul Memento-uri Reînnoire Vehicule săptămânal — consolidează toate datele de expirare ale asigurărilor și documentelor într-un singur calendar astfel nimic nu expiră neobservat și aveți timp de avans pentru reînnoire.
Marcați vehiculele retrase ca Inactive în loc să le ștergeți. Ștergerea rupe pista de audit pe toate rezervările, comenzile de lucru, jurnalele de combustibil și polițele de asigurare legate. Înregistrările istorice rămân accesibile numai dacă înregistrarea vehiculului este păstrată.