Vehicles & Trailers Module¶
Status: 🔴 Not Started (Next after Drivers) Types: LKV (Heavy Trucks) + PKV (Light Vehicles) + Trailers
Business Logic¶
Problem:
❌ No centralized vehicle database
❌ Service schedules tracked in Excel
❌ Fines arrive months late (lost paperwork)
❌ Cannot see which vehicles are available
❌ Accident costs not tracked per vehicle
Solution:
✅ Digital vehicle profiles (technical specs + documents)
✅ Service request system (internal + external)
✅ Fine/accident tracking
✅ Availability dashboard
✅ Cost per vehicle analytics
Vehicle Types¶
1. LKV - Heavy Trucks (Nákladní vozidla)
Used for: - Long-haul transport - International deliveries - Assigned to Orders
Examples: - MAN TGX 18.440 - Mercedes-Benz Actros - Scania R450
Documents tracked: - Vehicle Registration (Technický průkaz) - Insurance (OSAGO, KASKO) - Annual Inspection (STK) - Tachograph Calibration - CMR Insurance
2. PKV - Light Vehicles (Osobní vozidla)
Used for: - Office errands - Quick deliveries (documents, small cargo) - Employee transport - NOT assigned to Orders
Examples: - Škoda Octavia - VW Transporter - Ford Transit
Assignment modes:
A) Assigned to specific driver (exclusive use)
B) Pool vehicle (anyone can use)
C) Unassigned (spare)
Documents tracked: - Vehicle Registration - Insurance - Annual Inspection
3. Trailers (Návěsy/přívěsy)
Types: - Standard (Standard) - Mega (extra height) - Frigo (refrigerated) - Van (enclosed box) - Tautliner (curtain-side)
Documents tracked: - Trailer Registration - Annual Inspection - Refrigeration Service (if Frigo)
Transport Unit Concept¶
Definition: Transport Unit = Driver + Vehicle + Trailer
Ready State:
interface TransportUnit {
driver: {
id: string;
status: 'active';
all_documents_valid: true; // All 🟢 or 🟡
};
vehicle: {
id: string;
type: 'lkv';
all_documents_valid: true;
not_in_service: true;
};
trailer: {
id: string;
type: 'standard' | 'mega' | 'frigo';
all_documents_valid: true;
not_in_service: true;
};
ready_for_order: true;
}
Order Assignment:
When Dispatcher creates Order:
1. Select Transport Unit from "Ready" list
2. Order.transport_unit_id = [unit_id]
3. System tracks:
- Which driver drove
- Which vehicle was used
- Which trailer was attached
4. If accident/fine → linked to correct driver + vehicle
Service Management¶
Scenario 1: Planned Service (Internal)
1. Vehicle VEH-0045 has 95,000 km
2. System alert: "Service due at 100,000 km"
3. HR/Admin creates Service Request:
- Type: Scheduled Maintenance
- Service Provider: Internal Workshop
- Scheduled Date: 2025-11-05
4. Mechanic performs service:
- Oil change
- Brake inspection
- Filter replacement
5. Cost: 3,500 CZK (internal labor + parts)
6. Vehicle status: Back to Active
Scenario 2: Emergency Repair (External)
1. Driver reports: "Strange engine noise"
2. Dispatcher creates Service Request:
- Priority: 🔴 High
- Location: Wrocław, Poland
- Issue: Engine noise
3. System finds nearby services:
- Auto Service PL (5 km) ⭐ 4.5/5
- MAN Service Center (12 km) ⭐ 4.8/5
4. Dispatcher selects: Auto Service PL
5. Service completed:
- Invoice uploaded: 500 EUR (Reverse Charge)
- Work done: Alternator replacement
6. Expense logged:
- vehicle_expenses table
- Category: External Service
- VAT mode: Reverse Charge (0%)
Fines & Accidents¶
Scenario: Speeding Fine
1. Fine letter arrives:
- Vehicle: VEH-0045 (MAN TGX 18.440)
- Date: 2025-10-15, 14:30
- Location: D1, km 45 (Czech Republic)
- Offense: Speeding (140 km/h in 120 zone)
- Amount: 500 CZK
2. Admin checks: Who was driving?
- Lookup Order history for that date/time
- Order: ORD-2025-0098
- Driver: Jan Novák (#DRV-0001)
3. System creates transaction:
- Fine added to driver_transactions
- Deducted from driver's salary
- Linked to Order (profitability impact)
4. History logs:
- Vehicle VEH-0045: "Fine: 500 CZK (Speeding)"
- Driver DRV-0001: "Fine: -500 CZK (Speeding, Order ORD-2025-0098)"
- Order ORD-2025-0098: "Fine expense: 500 CZK"
Scenario: Accident
1. Driver calls: "Accident on highway"
- Vehicle: VEH-0045
- Order: ORD-2025-0087
- Damage: Cargo damaged, truck body dented
2. Dispatcher creates Accident Report:
- Photos uploaded (via mobile)
- Police report number
- Damage estimate: 50,000 CZK
3. Vehicle status → "In Repair"
4. Insurance claim initiated:
- Claim #: INS-2025-123
- Status: Pending
5. Repair completed:
- Invoice from body shop: 48,000 CZK
- Insurance pays: 40,000 CZK
- Company pays: 8,000 CZK
- Driver pays: 5,000 CZK (deductible from salary)
6. Financial impact:
- Order ORD-2025-0087 profitability: -8,000 CZK
- Driver DRV-0001 salary: -5,000 CZK
- Vehicle VEH-0045 total costs YTD: +48,000 CZK
Last Updated: October 29, 2025 Version: 2.0.1 Source: Master Specification v3.1, Section 8 (Module 2: Vehicles & Trailers)