Dashboard
Tháng 4, 2026
📅 Tháng:
Doanh thu & Chi phí
6 tháng gần nhất · Triệu đồng
Thu
Chi
Lợi nhuận
Cơ cấu chi phí
Phân bổ theo danh mục
Hợp đồng gần nhất
5 mới nhất
Số HĐKhách hàngGiá trịTrạng thái
Tình trạng xe
Cập nhật real-time
🏆 Top Tài xế
Theo tháng đang xem
Danh sách Hợp đồng
0 hợp đồng
Số HĐKhách hàngTuyến đườngNgàyXe/Tài xếGiá trịĐã thuTrạng thái
Danh sách Khách hàng
0 khách hàng
Mã KHKhách hàngLoạiĐiện thoạiTổng HĐDoanh số
Thu Chi theo tháng
6 tháng gần nhất
Thu
Chi
Cơ cấu chi phí
Tổng chi
0
Tổng chi
Lịch sử giao dịch
0 giao dịch
NgàyLoạiMô tảXe/Tài xếHình thứcSố tiền
Đang xem: Tháng 4/2026
Xu hướng Doanh thu & Chi phí
6 tháng gần nhất
Doanh thu
Chi phí
Lợi nhuận
Cơ cấu chi phí
Phân bổ danh mục
0
Tổng chi
Hiệu suất từng xe
Tháng 4/2026
XeDoanh thuChi phíLợi nhuậnTỷ suất
Top Tài xế
✅ Duyệt báo cáo tài xế
Đang tải...
💡 Báo cáo đổ dầu khi duyệt sẽ tự động tạo phiếu chi nhiên liệu tương ứng.
🔐 Tài khoản tài xế
Đăng nhập bằng Số điện thoại + Mật khẩu
Đang tải danh sách tài xế...
⚙️ Thông tin công ty
🗄️ Cấu trúc Database
Chạy SQL này trên Supabase để kích hoạt tính năng lịch sử bảo dưỡng
Vào Supabase → SQL Editor và chạy lệnh sau:
-- Bảng lịch sử bảo dưỡng xe
CREATE TABLE IF NOT EXISTS bao_duong_lich_su (
  id          uuid DEFAULT gen_random_uuid() PRIMARY KEY,
  bien_so_xe  text NOT NULL,
  loai        text NOT NULL, -- dang_kiem | bao_hiem | thay_nhot | sua_chua | khac
  ngay        date NOT NULL,
  km          integer,
  ghi_chu     text,
  created_at  timestamptz DEFAULT now()
);

-- Thêm cột km_thay_nhot vào bảng xe (nếu chưa có)
ALTER TABLE xe ADD COLUMN IF NOT EXISTS km_thay_nhot integer;

-- Thêm cột mật khẩu đăng nhập cho tài xế (nếu chưa có)
ALTER TABLE tai_xe ADD COLUMN IF NOT EXISTS mat_khau text;

-- Định mức tiêu hao & giá dầu tham chiếu cho từng xe (nếu chưa có)
ALTER TABLE xe ADD COLUMN IF NOT EXISTS dinh_muc_l100km numeric(5,1);
ALTER TABLE xe ADD COLUMN IF NOT EXISTS gia_dau_tk      integer;

-- Trạng thái duyệt báo cáo (cho_duyet | da_duyet | tu_choi)
-- Mặc định 'da_duyet' để không ảnh hưởng dữ liệu cũ
ALTER TABLE bao_cao ADD COLUMN IF NOT EXISTS trang_thai text DEFAULT 'da_duyet';
-- Báo cáo mới từ tài xế sẽ được gửi với trang_thai = 'cho_duyet'

-- Index để query nhanh theo biển số
CREATE INDEX IF NOT EXISTS idx_bd_bien_so ON bao_duong_lich_su(bien_so_xe);
CREATE INDEX IF NOT EXISTS idx_bd_loai    ON bao_duong_lich_su(loai);

-- ════════════════════════════════════════
-- Bảng lịch sử giá dầu toàn hệ thống
-- ════════════════════════════════════════
CREATE TABLE IF NOT EXISTS gia_dau (
  id            uuid DEFAULT gen_random_uuid() PRIMARY KEY,
  gia           integer NOT NULL,      -- giá đ/lít (VD: 22000)
  ngay_ap_dung  date NOT NULL,         -- ngày bắt đầu áp dụng
  ghi_chu       text,                  -- VD: "Xăng RON 95-III TP.HCM"
  created_at    timestamptz DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_gia_dau_ngay ON gia_dau(ngay_ap_dung DESC);
-- NOTE: xe.gia_dau_tk vẫn được dùng như giá override riêng từng xe.
--       Nếu không set, hệ thống tự lấy giá mới nhất từ bảng gia_dau.