Giao diện
Quản lý đội xe (Fleet)
TKHQ quản lý xe, tài xế, chuyến vận chuyển và tự sinh chi phí chuyến vào Debit Note — kết nối GPS VietMap bằng API key của bạn để theo dõi vị trí thực tế. Route: /fleet.
Tổng quan
Fleet Module quản lý đội xe nội bộ (xe nhà) và theo dõi chuyến thuê xe ngoài (nhà xe TRUCKER):
| Đối tượng | Mô tả |
|---|---|
| Xe (Vehicle) | Xe tải, xe container thuộc sở hữu workspace |
| Tài xế (Driver) | Tài xế nội bộ, liên kết với xe |
| Chuyến (Trip) | Một lần vận chuyển từ A đến B |
| Nhà xe (TRUCKER partner) | Xe thuê ngoài — Trip.vendorCost |
Dải chỉ số đầu trang /fleet (bấm vào từng chỉ số để mở thẳng danh sách lọc sẵn):
| Chỉ số | Ý nghĩa |
|---|---|
| Xe hoạt động | Xe đang sẵn sàng, đã gán chuyến hoặc đang trên đường |
| Chuyến đang chạy | Số chuyến đang vận chuyển (IN_TRANSIT) |
| Giấy tờ xe quá hạn | Đăng kiểm hoặc bảo hiểm đã hết hạn (chỉ hiện khi có) |
| Giấy tờ xe sắp hết (30 ngày) | Đăng kiểm/bảo hiểm hết hạn trong 30 ngày tới |
| Bằng lái gấp (≤7 ngày) | Bằng lái tài xế hết hạn trong 7 ngày tới |
| Bằng lái sắp hết (30 ngày) | Bằng lái hết hạn trong 30 ngày tới |
Số liệu tính trên toàn bộ đội xe của workspace, không giới hạn số dòng — vẫn chính xác với đội xe quy mô lớn.

Xe & tài xế
Thêm xe:
- Vào
/fleet/vehicles→ + Thêm xe - Điền: biển số, loại xe (đầu kéo / xe thùng / xe lạnh...), tải trọng, năm SX
- Nhập
vietmapDeviceIdnếu xe có GPS VietMap - Ngày đăng kiểm, ngày bảo hiểm — hệ thống cảnh báo trước 30 ngày hết hạn
Thêm tài xế:
- Vào
/fleet/drivers→ + Thêm tài xế - Điền: họ tên, CCCD, số bằng lái, hạng bằng lái
- Ngày hết hạn bằng lái — cảnh báo trước 30 ngày
- Gán xe mặc định (có thể thay đổi per-trip)
Cảnh báo đăng kiểm
Xe sắp hết đăng kiểm trong 30 ngày → Telegram alert đến OPS + ADMIN. Xe hết đăng kiểm không được tạo Trip mới.
Nhãn hạn (expiry badge):
Danh sách xe và tài xế hiển thị nhãn màu theo mức độ khẩn cấp của ngày hết hạn (đăng kiểm, bảo hiểm, bằng lái):
| Mức | Điều kiện | Màu |
|---|---|---|
| OK | Còn > 30 ngày | Mặc định |
| SOON | Còn ≤ 30 ngày | Vàng |
| URGENT | Còn ≤ 7 ngày | Đỏ |
| EXPIRED | Đã quá hạn | Đỏ (hiện "Quá hạn N ngày") |
Bấm vào dòng tài xế (hoặc tên tài xế) mở trang chi tiết riêng — hiển thị đầy đủ thông tin hồ sơ, toàn bộ lịch sử chuyến, và một checklist hồ sơ tài xế — gắn mẫu checklist tuỳ chỉnh (ví dụ: đã nộp CCCD, đã khám sức khỏe, đã ký hợp đồng lao động) rồi tick từng mục khi hoàn tất. Mẫu checklist tạo/sửa tại mục quản lý checklist chung của hệ thống.
Chuyến (Trip)
Tạo chuyến vận chuyển:
- Từ chi tiết Container (GATE_OUT) → nút Tạo chuyến hoặc vào
/fleet/trips→ + Tạo Trip - Điền:
- Container — liên kết container cần vận chuyển
- Xe / Tài xế — hoặc chọn Nhà xe ngoài (TRUCKER partner)
- Địa điểm đi — cảng / kho
- Địa điểm đến — kho khách / cảng
- Ngày giờ xuất phát
- Phí cầu đường, phụ cấp tài xế (nếu biết trước)
- Lưu → Trip status = PLANNED
Vòng đời Trip:
| Trạng thái | Trigger |
|---|---|
| PLANNED | Mới tạo, chưa gán xe/tài xế |
| ASSIGNED | Đã gán xe + tài xế (hoặc nhà xe ngoài) |
| IN_TRANSIT | Xe rời điểm đi (GPS auto hoặc tài xế xác nhận) |
| COMPLETED | Tài xế xác nhận giao hàng + upload bằng chứng |
| CANCELLED | Chuyến bị huỷ |
Mục đích chuyến
Mỗi Trip có trường Mục đích chuyến (purpose) — tuỳ chọn, cho biết chuyến xe này đang làm gì:
| Mục đích | Ý nghĩa |
|---|---|
| Lấy hàng | CARGO_PICKUP |
| Giao hàng | DELIVERY |
| Lấy vỏ rỗng | EMPTY_PICKUP |
| Trả vỏ rỗng | EMPTY_RETURN |
| Khác | OTHER |
Mục đích chuyến quyết định container liên kết có tự đẩy trạng thái theo Trip hay không, và đẩy sang trạng thái nào — khi Trip chuyển IN_TRANSIT hoặc COMPLETED, hệ thống tra theo cặp (mục đích, trạng thái Trip, loại lô hàng container). Để trống hoặc chọn Khác → Trip không tự đẩy trạng thái container (giữ hành vi cũ cho chuyến chưa gắn mục đích).
Vì sao cần khai mục đích chuyến
Không khai → container liên kết sẽ không tự cập nhật trạng thái khi Trip hoàn tất, phải cập nhật tay. Khai đúng mục đích giúp trạng thái container tự trôi theo tiến độ vận chuyển thực tế mà không cần thao tác thêm.
Tự sinh Debit Note khi Trip COMPLETED:
| Loại cost | Nguồn |
|---|---|
| Xăng dầu | FuelLog liên kết Trip |
| Phí cầu đường | Trip.tollFee |
| Phụ cấp tài xế | Trip.driverAllowance |
| Cước nhà xe ngoài | Trip.vendorCost |

Chi tiết một chuyến xe
Nhấn vào dòng Trip trong danh sách để xem toàn bộ thông tin: lộ trình GPS, mốc giờ ra/vào cảng, và bảng breakdown chi phí (xăng, cầu đường, phụ cấp, cước nhà xe).

Checklist đóng chuyến (COMPLETED / CANCELLED):
Khi Trip chuyển sang hoàn tất hoặc bị hủy, chi tiết Trip hiện một checklist các bước cần hoàn tất để chốt sổ:
- Chuyến hoàn tất (hoặc đã hủy)
- Xác nhận chi phí xăng/cước vận chuyển
- Với chuyến thuê nhà xe ngoài (TRUCKER): ghi công nợ phải trả (AP) cho đối tác
Checklist đánh dấu ✓ từng bước theo dữ liệu thực tế — giúp kế toán biết chuyến nào còn thiếu bước xác nhận trước khi tất toán.
GPS & vị trí thực
Khi kết nối VietMap GPS:
- Vị trí xe cập nhật realtime mỗi 30–60 giây
- Bản đồ hiển thị tất cả xe đang hoạt động
- Geofence cảng: xe vào/ra tự ghi gate timestamp
- Trip tự chuyển IN_TRANSIT khi xe bắt đầu di chuyển
- Đề xuất COMPLETED khi xe dừng > 10 phút tại địa điểm đến
Xem cách kết nối tại Tích hợp VietMap GPS.
Lịch & báo cáo
Lịch chuyến tuần:
Timeline view hiển thị tất cả Trip theo xe — dễ phát hiện xe trống hoặc chồng lịch.
Báo cáo Fleet theo kỳ:
| Báo cáo | Nội dung |
|---|---|
| Hiệu suất xe | Km, số chuyến, doanh thu / chi phí per xe |
| Tiêu hao nhiên liệu | Lít/100km, so sánh giữa các xe |
| Hiệu suất tài xế | Số chuyến, đúng giờ, sự cố |
| Chi phí chuyến | Tổng trip cost, breakdown theo loại |
Cảnh báo hết hạn tự động
Hệ thống kiểm tra định kỳ và gửi cảnh báo theo 3 mốc: 30 ngày / 14 ngày / 7 ngày trước hạn:
| Đối tượng | Loại hết hạn | Người nhận alert |
|---|---|---|
| Xe | Đăng kiểm | OPS + ADMIN |
| Xe | Bảo hiểm | OPS + ADMIN |
| Xe | Đăng ký xe (phù hiệu) | OPS + ADMIN |
| Tài xế | Bằng lái | OPS + ADMIN |
Cảnh báo gửi qua Telegram (nếu đã cấu hình) + in-app notification. Xe hết đăng kiểm sẽ bị khóa không tạo Trip mới cho đến khi cập nhật ngày đăng kiểm.
Trip billing — tự sinh Debit Note
Khi Trip chuyển sang COMPLETED, hệ thống tự động:
- Tổng hợp toàn bộ cost của Trip (xăng, cầu đường, phụ cấp, cước nhà xe)
- Tạo Debit Note ở trạng thái
DRAFTvớiorigin = TRIP_AUTO - Liên kết vào Shipment → Container → Trip (chain đầy đủ cho P&L)
- Kế toán review và chuyển sang
SENTkhi sẵn sàng gửi khách
Không cần nhập tay chi phí
Mọi chi phí Trip được tự động đẩy lên Debit Note — kế toán chỉ cần review và approve, không cần nhập tay từng dòng.
Xem chi tiết → Debit Note.
Phân công xe + tài xế
Quy tắc phân công:
- 1 xe chỉ có 1 Trip
IN_TRANSITtại một thời điểm - 1 tài xế chỉ có 1 Trip
IN_TRANSITtại một thời điểm - Hệ thống cảnh báo nếu cố assign xe/tài xế đang bận vào Trip mới
Nhà xe ngoài (TRUCKER):
Nếu không có xe nhà, tạo Trip với TRUCKER partner thay vì xe nội bộ:
- Chọn Nhà xe → search partner có role
TRUCKER - Nhập cước nhà xe (
vendorCost) - Không cần vehicle/driver record — Trip vẫn tạo được
- Cost tự sinh vào Debit Note AP nhà xe