Tổng thu quỹ
{{ formatMoney(stats.income) }}đ
Tổng chi quỹ
{{ formatMoney(stats.expense) }}đ
Số dư tồn quỹ
{{ formatMoney(stats.balance) }}đ
Tổng lượng tồn kho
{{ stats.total_items }} SP
🏷️ Mảng Bán Lẻ Sản Phẩm
Tháng này
Doanh thu
{{ formatMoney(stats.sell_revenue_month) }}đ
Tiền vốn bán
{{ formatMoney(stats.sell_cost_month) }}đ
Lãi gộp bán
{{ formatMoney(stats.sell_profit_month) }}đ
🏗️ Mảng Hợp Đồng Công Trình
Tháng này
Giá trị HĐ
{{ formatMoney(stats.project_revenue_month) }}đ
Vốn VT kho
{{ formatMoney(stats.project_cost_month) }}đ
Chênh lệch HĐ
{{ formatMoney(stats.project_profit_month) }}đ
🗓️ Lịch Ghé Tuyến ({{ scheduleScope === 'today' ? 'Thứ ' + currentDayOfWeekName : (scheduleScope === 'tomorrow' ? 'Ngày mai Thứ ' + tomorrowDayOfWeekName : 'Toàn bộ tuần') }})
{{ dashboardScheduleClients.length }} điểm
Đang ưu tiên hiển thị khách cần chăm sóc
Không có lịch hẹn chăm sóc khách hàng nào phù hợp với bộ lọc.
Thứ {{ c.visit_day_of_week == 7 ? 'Chủ Nhật' : (Number(c.visit_day_of_week) + 1) }}
{{ c.name }}
•
{{ c.phone }}
{{ c.service_status || 'Đang thực hiện' }}
📍 {{ c.address }}
🛠️ Phụ trách: {{ c.assigned_staff }}
📝 Ghi chú/Vật tư gần nhất: {{ c.visit_note }}
Xem biến động:
{{ item.name }}
Mã: {{ item.sku }}
Kho: {{ item.warehouse_code || 'KHO-CHINH' }}
{{ stockPeriod === 'today' ? 'Hôm nay:' : (stockPeriod === 'week' ? 'Tuần này:' : 'Tháng này:') }}
▲ +{{ getStat(item, 'in', stockPeriod) }}
▼ -{{ getStat(item, 'out', stockPeriod) }}
Tồn: {{ item.quantity }} {{ item.unit }}
Doanh thu: {{ formatMoney(getStat(item, 'revenue', stockPeriod)) }}đ
Vốn: {{ formatMoney(getStat(item, 'cost', stockPeriod)) }}đ
Lãi: {{ formatMoney(getStat(item, 'profit', stockPeriod)) }}đ
Giá bán: {{ formatMoney(item.unit_price) }}đ / {{ item.unit }}
(Vốn: {{ formatMoney(item.cost_price) }}đ)
⏳ Hạn dùng: {{ item.expiry_date }}
Nhật ký biến động kho & Lịch sử
Hiển thị 60 bản ghi mới nhất
{{ log.type === 'in' ? '▲ NHẬP KHO' : (log.sub_type === 'project' ? '🏗️ XUẤT CÔNG TRÌNH' : '🏷️ XUẤT BÁN') }} ({{ log.quantity }})
✓ {{ log.status || 'Thành công' }}
{{ log.log_message }}
📦 Sản phẩm: {{ log.product_name }}
🏢 Mã kho: {{ log.warehouse_code }}
💵 Đơn giá: {{ formatMoney(log.price) }}đ
📅 Ngày: {{ log.action_date }}
Sổ Quỹ Thu & Chi
Xem lại lịch sử dòng tiền theo từng tháng và từng năm
Thu {{ cashSelectedMonth === 'all' ? 'Năm ' + cashSelectedYear : 'Tháng ' + cashSelectedMonth }}
+{{ formatMoney(cashSummary.income) }}đ
Chi {{ cashSelectedMonth === 'all' ? 'Năm ' + cashSelectedYear : 'Tháng ' + cashSelectedMonth }}
-{{ formatMoney(cashSummary.expense) }}đ
Dòng tiền dư
{{ formatMoney(cashSummary.balance) }}đ
Không có phát sinh thu chi nào trong {{ cashSelectedMonth === 'all' ? 'năm ' + cashSelectedYear : 'tháng ' + cashSelectedMonth + '/' + cashSelectedYear }}.
{{ c.type === 'income' ? 'THU' : 'CHI' }}
[{{ c.category }}] {{ c.note || 'Không có ghi chú' }}
{{ c.created_at }} • Thực hiện: {{ c.created_by }}
{{ c.type === 'income' ? '+' : '-' }}{{ formatMoney(c.amount) }}đ
Quản Lý Khách Hàng & Hợp Đồng
Tiến độ, hoa hồng CTV & tuyến đường
{{ cl.contract_code }}
{{ cl.name }}
📞 {{ cl.phone }}
• 📍 {{ cl.address }}
Giá trị HĐ:
{{ formatMoney(cl.contract_value) }}đ
Tạm ứng:
{{ formatMoney(cl.advance_payment) }}đ
Còn chưa thu:
{{ formatMoney(Math.max(0, Number(cl.contract_value || 0) - Number(cl.discount_value || 0) - Number(cl.advance_payment || 0))) }}đ
Hoa hồng CTV:
({{ calcCommissionPercent(cl.ctv_amount, cl.contract_value, cl.discount_value) }}%)
{{ formatMoney(cl.ctv_amount || 0) }}đ
{{ cl.ctv_status || 'Chưa chi' }}
✍️ NV ký HĐ: {{ cl.signer_staff || '---' }} • 🛠️ Phụ trách: {{ cl.assigned_staff || 'Chưa gán' }}
🛡️ Bảo hành: {{ cl.warranty_info || 'Theo hợp đồng' }}
🤝 Người giới thiệu: {{ cl.referred_by }}
🗓️ Tuyến cố định: Thứ {{ cl.visit_day_of_week == 7 ? 'Chủ Nhật' : (Number(cl.visit_day_of_week) + 1) }}
⏳ Lần ghé gần nhất: {{ cl.last_visited || 'Chưa ghé' }}
📦 Vật tư / Ghi chú gần nhất: {{ cl.visit_note }}
📝 Nhật ký / Ghi chú:
{{ cl.notes }}
Danh sách tài khoản & Phân quyền
{{ u.fullname }} ({{ u.username }})
Mã NV: {{ u.staff_code || 'NV01' }} • Quyền: {{ u.role }}
Số quyền cấp: {{ u.role === 'admin' ? 'Toàn quyền (*)' : (u.permissions ? u.permissions.length : 0) + ' quyền' }}