{{ toastMsg }}
Hàng đợi xử lý
Các tác vụ tải và lưu đang được xử lý an toàn
{{ writeQueueItems.length }} tác vụ
{{ item.label }}
{{ item.message || 'Đang chờ hệ thống xử lý' }}
{{ writeQueueStatusLabel(item.status) }}
Đang tải dữ liệu

{{ getHeaderMeta(viewMode).title }}

{{ getHeaderMeta(viewMode).subtitle }}

Đang tải dữ liệu…

Báo Cáo Tổng Quan Doanh Nghiệp

Năm {{ pnlYear }} - {{ generalDashMonthLabel }}
Chọn thời gian
Doanh Thu Thuần
{{ Math.round(generalDashFinancials.revenue.pct) }}% kế hoạch
{{ formatCurrency(generalDashFinancials.revenue.actual) }}
Kế hoạch: {{ formatCurrency(generalDashFinancials.revenue.plan) }}
TB Tháng: {{ formatMoneyCompact(generalDashFinancials.revenue.avgMonthly) }} YoY: +{{ generalDashFinancials.revenue.yoy.toFixed(1) }}%
Tổng Chi Phí
{{ generalDashFinancials.costRatio.toFixed(1) }}% doanh thu
{{ formatCurrency(generalDashFinancials.cost.actual) }}
Kế hoạch: {{ formatCurrency(generalDashFinancials.cost.plan) }}
Cố định (FC): {{ formatMoneyCompact(generalDashFinancials.cost.fixed) }} Biến đổi (VC): {{ formatMoneyCompact(generalDashFinancials.cost.variable) }}
Lợi Nhuận Ròng
Biên ròng: {{ generalDashFinancials.netProfitMargin.toFixed(1) }}%
{{ formatCurrency(generalDashFinancials.profit.actual) }}
Kế hoạch: {{ formatCurrency(generalDashFinancials.profit.plan) }}
EBIT: {{ formatMoneyCompact(generalDashFinancials.profit.ebit) }} Biên gộp: {{ generalDashFinancials.profit.grossMargin.toFixed(1) }}%
Điểm Hòa Vốn (BEP)
{{ generalDashFinancials.safetyMargin.toFixed(1) }}% an toàn
{{ formatCurrency(generalDashFinancials.bep.value) }}
MoS: {{ formatMoneyCompact(generalDashFinancials.bep.mos) }} {{ generalDashFinancials.revenue.actual >= generalDashFinancials.bep.value ? 'Vượt BEP: +' + formatMoneyCompact(generalDashFinancials.revenue.actual - generalDashFinancials.bep.value) : 'Thiếu BEP: -' + formatMoneyCompact(generalDashFinancials.bep.value - generalDashFinancials.revenue.actual) }}
Hòa vốn/Tháng: {{ formatMoneyCompact(generalDashFinancials.bep.monthly) }} Tỷ lệ CM: {{ generalDashFinancials.bep.cmRatio.toFixed(1) }}%

Quyền truy cập bị giới hạn

Bạn không có quyền xem thông tin Kế hoạch Tài chính (P&L).

Xu Hướng Doanh Thu, Chi Phí & Lợi Nhuận Ròng

Cơ Cấu Doanh Thu & Chi Phí Thực Tế

Tổng DT {{ formatMoneyCompact(generalDashFinancials.revenue.actual) }}
Doanh Thu
{{ seg.label }}
{{ seg.percent }}%
Tổng CP {{ formatMoneyCompact(generalDashFinancials.cost.actual) }}
Chi Phí
{{ seg.label }}
{{ seg.percent }}%

Quyền truy cập bị giới hạn

Tài khoản của bạn không có quyền xem báo cáo phân tích xu hướng tài chính.

Kế Hoạch & Mục Tiêu Chiến Lược

Bản đồ mục tiêu
Hiệu suất Viễn cảnh
{{ p.name }}
{{ p.avgProgress }}% Đạt
Đo lường tiến độ thực tế dựa trên mục tiêu chiến lược và kết quả then chốt (KPI)
Mục tiêu chiến dịch
{{ p.name }}
{{ p.avgProgress }}%
{{ obj.name }}
KPIs: {{ obj.kpisCount }} {{ obj.progress }}%

Tiến Độ Theo Nhãn Phòng Ban

Quản lý nhãn
Trực quan tiến độ phòng ban

{{ lbl.Name }}

{{ lbl.progress }}%
{{ lbl.ManagerInitials }}
{{ lbl.ManagerName }}
{{ lbl.ManagerPosition }}
{{ lbl.progress >= 80 ? 'Tốt' : (lbl.progress >= 70 ? 'Khá' : 'Cần chú ý') }}

Quyền truy cập bị giới hạn

Tài khoản của bạn không có quyền xem thông tin Kế hoạch chiến lược và mục tiêu doanh nghiệp.

Hiệu Suất & Xếp Hạng KPI Nhân Sự

Chi tiết
Đạt tối thiểu
{{ generalDashHrKpiData.passRate }}% nhân sự
Đánh giá
{{ generalDashHrKpiData.evaluatedCount }} nhân sự
Dẫn đầu
{{ generalDashHrKpiData.topDept }}
Cải thiện
{{ generalDashHrKpiData.lowDept }}
Phân bổ xếp hạng KPI TB: {{ generalDashHrKpiData.averageScore }}% ({{ generalDashHrKpiData.trend }})
XS ({{ generalDashHrKpiData.dist.excellent }}%)
Tốt ({{ generalDashHrKpiData.dist.good }}%)
Đạt ({{ generalDashHrKpiData.dist.average }}%)
Yếu ({{ generalDashHrKpiData.dist.weak }}%)
Bảng Xếp Hạng KPI Nhân Sự (Top 5)
{{ idx + 1 }}
{{ emp.name.charAt(0) }}

{{ emp.name }}

{{ emp.dept }}
{{ emp.score }}%

Quyền truy cập bị giới hạn

Tài khoản của bạn không có quyền xem thông tin Đánh giá KPI Nhân Sự.

Chỉ Số Vận Hành Công Việc Sự Vụ

Chi tiết
Đúng Hạn (SLA)
{{ taskStats.onTimeRate }}%
SLA Trọng yếu: {{ taskStats.criticalSla }}%
Độ ưu tiên
P1 Gấp-QT
{{ taskStats.priorityDist.critical }}%
P2 QT-KG
{{ taskStats.priorityDist.high }}%
P3 Gấp
{{ taskStats.priorityDist.medium }}%
P4
{{ taskStats.priorityDist.low }}%
Tổng {{ taskStats.total }}
Đúng hạn {{ taskStats.done }}
Trễ {{ taskStats.doneLate }}
Quá hạn {{ taskStats.overdue }}
Các việc đang trễ deadline
{{ t.title }}
Phụ trách: {{ t.owner }}
{{ t.dueDate }}

Quyền truy cập bị giới hạn

Tài khoản của bạn không có quyền xem Chỉ số vận hành công việc sự vụ.

Lọc:
{{ k.label }}
{{ k.value }}

Phễu Bán Hàng

Nguồn Khách Hàng

Hiệu Suất Nhân Viên

HỆ THỐNG HOẠCH ĐỊNH CHIẾN LƯỢC

Năm làm việc Lọc dữ liệu
Chọn các tháng
|
Không tìm thấy nhãn phù hợp

Không có quyền truy cập

Bạn không có quyền truy cập vào bất kỳ phân hệ con nào của Lập Kế Hoạch Tổng Thể. Vui lòng liên hệ Admin để được phân quyền.

{{ pers.Name }}

Ngoài kỳ

{{ item.Name }}

{{ lbl.Name }} Chưa liên kết PB
Chỉ số KPIs: {{getObjectiveKpis(item.ID).length}} KPIs
TB: {{calcObjAvgProgress(item)}}%
Chưa có mục tiêu hiển thị
x

Danh sách mục tiêu và chỉ số KPI

Bộ lọc: {{getSelectedMonthsLabel()}}{{masterYearFilter}}

{{selectedKpis.length}} đã chọn
KPI

Chưa có chỉ tiêu KPI nào được giao

Vui lòng bấm nút "Khai báo & Giao KPI" để phân bổ chỉ số từ thư viện sang các mục tiêu chiến lược của năm {{ masterYearFilter }}.

{{obj.perspectiveName}} Mục tiêu ưu tiên

{{ obj.objectiveName }}

{{ obj.kpis.length }} KPIs
Tiến độ {{formatNumber(calcObjAvgProgress(obj), 1)}}%
Chỉ số KPI
Link báo cáo
Phân loại
Mục tiêu Thực đạt
Tiến độ

{{ kpi.KPIName }}

{{kpi.Description}}

{{kpi.KPIType}} ĐVT: {{ kpi.Unit }} {{kpi.Status}} Chưa gán nhãn
--
{{ kpi.Classification }}
Tỷ trọng: {{formatNumber(kpi.Weight, 1)}}%
{{formatNumber(kpi.Target, 2)}} {{formatNumber(kpi.Actual, 2)}}
{{formatNumber(kpi.Achievement, 1)}}%

Cập nhật 12 tháng

Bật/tắt thẻ KPI cho từng tháng. Tháng bị tắt sẽ không đóng góp vào mục tiêu năm.

DỮ LIỆU THÁNG {{m}}
Trạng thái
Khóa
Mục tiêu
{{ formatNumber(bpTrackerEditRow.months[m].Target, 1) }}
Thực đạt
{{ formatNumber(bpTrackerEditRow.months[m].Actual, 1) }}
Tỷ lệ đạt
{{ getTrackerMonthAchievement(bpTrackerEditRow.months[m], kpi.CalcMethod) === null ? '---' : formatNumber(getTrackerMonthAchievement(bpTrackerEditRow.months[m], kpi.CalcMethod), 1) + '%' }}
-

Sửa hàng loạt {{selectedKpis.length}} chỉ số KPI

Cập nhật nhanh mục tiêu liên kết và giá trị chỉ tiêu target

Chọn một mục tiêu chung ở trên nếu bạn muốn chuyển tất cả {{ selectedKpis.length }} KPI này sang mục tiêu đó.

Chỉ số KPI Chỉ tiêu Target mới
{{ item.KPIName }}
ĐVT: {{ item.Unit || 'N/A' }} Tự động Nhập tay mục tiêu Nhập tay thực tế Nhập trực tiếp
{{formatNumber(item.Target, 2)}}

III. Kế hoạch hành động

{{apSelectedIds.length}} đã chọn
Đang tải danh sách công việc... Đã tải {{ tasksLoadingState.loadedCount }} công việc — đang tải thêm ở nền... {{ tasksLoadingState.error }}
STT Hành động cụ thể Người phụ trách Thời gian Ưu tiên & Trạng thái Tiến độ (%) Kết quả (Báo cáo) Thao tác
Không tìm thấy kế hoạch hành động nào khớp với bộ lọc
{{ col.name }}
{{ kanbanColumns[col.key] ? kanbanColumns[col.key].length : 0 }}
{{ row.ActionName }}
P1 P2 P3 P4
{{ row.ObjectiveName || 'Mục tiêu liên kết' }} {{ row.KPIName || 'KPI liên kết' }}
BĐ: {{ apFormatDate(row.StartDate) || '--' }} | KT: {{ apFormatDate(row.EndDate) || '--' }}
Tiến độ {{ row.Progress }}%
Đúng hạn
Trễ hạn
{{ getAvatarInitials(row.AssignedTo) }} {{ getAvatarInitials(row.Supervisor) }}
Không có công việc nào
Màu sắc ưu tiên: Gấp - Quan trọng (P1) Quan trọng - Không gấp (P2) Gấp - Không quan trọng (P3) Không gấp - Không quan trọng (P4) Di chuột qua thanh bar để xem chi tiết.
DANH SÁCH HÀNH ĐỘNG CỤ THỂ
THÁNG {{ m }}
DANH SÁCH HÀNH ĐỘNG CỤ THỂ
{{ h.label }}
{{ col.label }}
Không tìm thấy kế hoạch hành động nào
Đang sửa
{{apFilteredData.length}} hành động {{apFilteredData.filter(r => Number(r.Progress) >= 100).length}} hoàn thành {{apFilteredData.filter(r => Number(r.Progress) > 0 && !(Number(r.Progress) >= 100)).length}} đang thực hiện {{apOverdueCount}} trễ hạn

{{ apBulkEditMode ? 'Chỉnh sửa kế hoạch hành động' : 'Khai báo kế hoạch hành động mới' }}

{{ apBulkEditMode ? 'Cập nhật chi tiết hành động của bạn' : 'Thiết lập nhanh danh sách hành động cần thực hiện (Hệ thống tự động liên kết mục tiêu tương ứng)' }}

{{ apBulkEditMode ? 'Chỉnh sửa thông tin chi tiết của hành động. Các trường có dấu (*) là bắt buộc.' : 'Nhập trực tiếp danh sách hành động cần tạo hàng loạt. Điền tên hành động để lưu.' }}
# KPI liên kết * Tên hành động * Mô tả chi tiết Phụ trách chính * Phối hợp (Supervisor) Ưu tiên * Bắt đầu * Kết thúc * Tiến độ (%) Kết quả (Báo cáo) Xóa
{{ idx + 1 }}
Các trường có dấu (*) là bắt buộc. Nhập tên hành động để lưu lại thành công.

Bản Đồ Chiến Lược

{{pers.Name}}

Ngoài kỳ
{{calcObjAvgProgress(item)}}%

{{item.Name}}

{{item.Description || 'Chưa có mô tả mục tiêu chiến lược...'}}

{{ lbl.Name }} Chưa liên kết
Chưa có mục tiêu hiển thị
1. Chọn Mục Tiêu Gốc (Từ đâu?)
{{pers.Name}}
{{item.Name}}
2. Chọn Mục Tiêu Đích (Mục tiêu '{{(strategyItems.find(i => i.ID === activeSourceID) || {}).Name}}' sẽ tác động đến...) Đang cấu hình liên kết ra

Vui lòng chọn một mục tiêu ở cột bên trái trước

{{pers.Name}}

{{item.Name}}
{{item.Description}}
# {{ strategyConfigMode === 'objectives' ? 'Tên Mục Tiêu' : 'Tên Viễn Cảnh' }} Thuộc Viễn Cảnh Màu Sắc / Icon Hiển Thị Thao Tác
{{idx+1}}
{{item.Name}}
{{item.Description}}
{{item.PerspectiveID}}
Chưa có dữ liệu

Thêm hàng loạt mục tiêu ({{stObjBulkRows.length}} dòng)

# Tên mục tiêu * Mô tả Viễn cảnh * Màu sắc
{{ri + 1}}
-

Cấu hình thẻ hiển thị

Trường mặc định
{{stage.name}} {{ getDealsByStage(stage.id).length }}
{{ formatCurrency(getStageTotal(stage.id)) }}
{{ deal.DealName }}
{{ getCustomerName(deal.CustomerID) }}
{{ formatCurrency(deal.Value) }}
{{ getCustomerPhone(deal.CustomerID) }}
{{ getOwnerInfo(deal.Owner).initial }}
{{getOwnerInfo(deal.Owner).name}}{{getOwnerInfo(deal.Owner).dept}}
{{ formatDateDisplay(deal.CreatedDate) }} · {{ getDealAge(deal.CreatedDate) }}d
Phụ trách:
Giai đoạn:
Thời gian:
-
Cơ Hội & Khách Hàng Giai đoạn Giá trị
{{d.DealName}}
{{getCustomerName(d.CustomerID)}}
{{ getStageName(d.StageID) }}
{{formatCurrency(d.Value)}}
{{formatDateDisplay(d.CreatedDate)}}
Loại:
Thời gian:
-
Khách Hàng Phân loại {{cf.label}}
{{c.Name}}
{{c.Phone}}
{{c.Type}}

Thêm Hàng Loạt Khách Hàng

STT Tên KH * SĐT * Loại Email {{cf.label}} *
{{bi+1}}

Chưa có dòng nào

Nhấn "Thêm dòng" để bắt đầu nhập khách hàng

Các dòng có Tên + SĐT sẽ được lưu. Trường có * là bắt buộc.
Người tạo:
Thời gian:
-
Nhà Cung Cấp
{{s.Name}}
{{s.Phone || '---'}}

Chưa có nhà cung cấp nào.

{{currentSupplier.SupplierID ? 'Sửa' : 'Thêm'}} Nhà Cung Cấp

Thông Tin NCC
Trường tùy chỉnh
Tổng Còn lại Hạn TT Trạng thái
{{dd.ContractNo || '-'}} {{formatCurrency(dd.TotalAmount)}} {{formatCurrency((getDebtAdjustedTotal(dd.DebtID, dd.TotalAmount))-(Number(dd.PaidUpfront)||0)-getDebtPaidAmount(dd.DebtID))}} {{dd.DueDate ? formatDateDisplay(dd.DueDate) : '-'}} {{debtStatusLabel(getDebtStatus(dd))}}
Chưa có công nợ
{{suppDebtsDataPaged.total}} hợp đồng
{{suppDebtsPage}} / {{suppDebtsDataPaged.pages}}
Ngày Loại Số tiền Lý do Người tạo
{{formatDateDisplay(lg.Date)}} {{(suppDebtsData.find(d => d.DebtID === lg.DebtID) || {}).ContractNo || '-'}} {{lg.Type === 'increase' ? 'Tăng thêm' : 'Giảm trừ'}} {{formatCurrency(lg.Amount)}} {{lg.Reason || '-'}} {{lg.CreatedBy}}
Chưa có điều chỉnh nào
{{suppDebtLogsDataPaged.total}} điều chỉnh
{{suppLogsPage}} / {{suppDebtLogsDataPaged.pages}}
Thu
{{formatNumber(suppLedgerData.income)}}
Chi
{{formatNumber(suppLedgerData.expense)}}
Thuần
{{formatNumber(suppLedgerData.income - suppLedgerData.expense)}}
Chưa có giao dịch nào với NCC này
STT Ngày Loại Danh mục Quỹ Số Tiền Mô Tả
{{(suppLedgerPage - 1) * 10 + idx + 1}} {{e.Date ? e.Date.substring(0, 10) : ''}} {{e.Type === 'income' ? 'Thu' : 'Chi'}} {{e.Category || ''}} {{(funds.find(f => f.FundID === e.FundID) || {}).FundName || ''}} {{e.Type === 'income' ? '+' : '-'}}{{formatNumber(Math.abs(Number(e.Amount) || 0))}} {{String(e.Description || '')}}
{{suppLedgerData.total}} giao dịch
{{suppLedgerPage}} / {{suppLedgerData.pages}}

Thêm Hàng Loạt Nhà Cung Cấp

STT Tên NCC * SĐT Email {{cf.label}} *
{{bi+1}}

Chưa có dòng nào

Nhấn "Thêm dòng" để bắt đầu nhập NCC

Các dòng có Tên sẽ được lưu. Trường có * là bắt buộc.

Chưa cấu hình Link báo cáo Looker Studio.

Người đang sở hữu

{{transferUsersList.length}}
{{u.name}}
{{u.position || '---'}} • {{u.team || '---'}}
{{u.role}} • {{getAssetsOfUser(u.username).length}} deals
{{u.role}}
Không tìm thấy nhân sự
{{ selectedTeamUser.name.charAt(0) }}

{{ selectedTeamUser.name }}

{{selectedTeamUser.username}} • {{transferAssetsList.length}} Deals

Đã chọn
{{transferSelection.length}}
Quản lý danh mục sở hữu
Thông tin Deal Đặc điểm & Phân loại Giá trị Giai đoạn
{{item.name}}
{{getCustomerName(item.CustomerID)}} {{getCustomerPhone(item.CustomerID)}} {{formatDateDisplay(item.CreatedDate, true)}}
{{formatCurrency(item.val)}} {{ getStageName(item.StageID) }}

Không tìm thấy Deals nào phù hợp

Vui lòng chọn nhân viên sở hữu bên trái

Quản lý hiệu quả danh mục cơ hội

Quản Lý Phòng Ban

{{teamsList.length}} Phòng ban đang hoạt động

Tên Phòng Ban Trưởng Phòng Thành Viên Mô Tả Thao Tác
{{t.TeamName}}
{{(getUserName(t.Lead) || '?').charAt(0)}}
{{getUserName(t.Lead)}}
---
{{getTeamMemberCount(t.TeamName)}} thành viên {{t.Description || '---'}}
Không có dữ liệu phòng ban
Ban Giám Đốc
BAN QUẢN TRỊ
{{(getUserName(boardOfDirectorsTeam.Lead) || '?').charAt(0)}}
{{getUserName(boardOfDirectorsTeam.Lead)}}
@{{boardOfDirectorsTeam.Lead}}
{{u.name.charAt(0)}}
{{getTeamMemberCount(boardOfDirectorsTeam.TeamName)}} thành viên
OmniPlan Company
{{t.TeamName}}
{{getTeamMemberCount(t.TeamName)}} thành viên

{{t.Description || 'Chưa có mô tả phòng ban.'}}

Trưởng phòng
{{(getUserName(t.Lead) || '?').charAt(0)}}
{{getUserName(t.Lead)}}
@{{t.Lead}}
Chưa gán quản lý
{{u.name.charAt(0)}}
+{{getTeamMemberCount(t.TeamName) - 4}}
Không có dữ liệu phòng ban

{{selectedTeamDetail.TeamName}}

Chi tiết phòng ban & Thành viên

Trưởng phòng
{{(getUserName(selectedTeamDetail.Lead) || '?').charAt(0)}}
{{getUserName(selectedTeamDetail.Lead)}}
@{{selectedTeamDetail.Lead}}
Chưa gán Trưởng phòng
Danh sách thành viên ({{selectedTeamMembers.length}})
{{u.name.charAt(0)}}
{{u.name}}
@{{u.username}} - {{u.team || 'Chưa gán phòng'}}
Không tìm thấy nhân sự phù hợp
{{m.name.charAt(0)}}
{{m.name}}
{{m.position}}
Không tìm thấy thành viên nào
Mô tả phòng ban

{{selectedTeamDetail.Description || 'Không có mô tả.'}}

STT KPI Đơn vị tính thực đạt & target Giải thích ý nghĩa KPI Mục đích sử dụng KPI Điểm thách thức (1-10) Nguồn lấy dữ liệu Chiều hướng Cách tính tỷ lệ đạt Loại KPI Mô tả cách tính Phân loại Trạng thái Thao tác
Mới Active
Chua co chi so KPI nao. Bam "Them KPI" de bat dau.
Phân loại:
STT Tháng Viễn cảnh Mục tiêu KPI Đơn vị Điểm thách thức Target Thực đạt Tỷ lệ đạt (%) Tỷ trọng (%) Trạng thái Thao tác
Mới
{{bpNewRow.ObjectiveID ? (strategyItems.find(s => s.Type === 'Objective' && String(s.ID) === String(bpNewRow.ObjectiveID)) || {}).Name || '-- Chọn mục tiêu --' : '-- Chọn mục tiêu --'}}
{{obj.Name}}
Không tìm thấy
{{bpNewRow.LibID ? (kpiLibrary.find(k => k.LibID === bpNewRow.LibID) || {}).KPIName || '-- Chọn KPI --' : '-- Chọn KPI --'}}
{{kpi.KPIName}}
Không tìm thấy
{{calcAchievement(bpNewRow.Actual, bpNewRow.Target, bpNewRow.CalcMethod).toFixed(1)}}% {{calcWeight(bpNewRow).toFixed(1)}}% Active
Chưa có KPI nào. Bấm "Thêm KPI" để bắt đầu.

Khóa KHKD - Năm {{bpSelectedYear}}

Chọn tháng cần khóa để bảo vệ dữ liệu KHKD

Khóa Chỉ số KPI - Năm {{masterYearFilter}}

Chọn tháng cần khóa để bảo vệ dữ liệu Chỉ tiêu & Thực đạt KPI

Tháng:

I. Mục tiêu KPI tổng thể

Bảng tổng hợp chỉ tiêu Target theo từng tháng

Tên mục tiêu
KPI
Đơn vị tính thực đạt & target
Loại KPI
Cả năm
Tháng {{m}}
Chưa có dữ liệu KPI cho năm {{bpSelectedYear}}
{{dbPivotData.length}} Mục tiêu
{{dbPivotData.reduce((sum, g) => sum + g.kpis.length, 0)}} Chỉ số KPI
Tháng hiện tại: {{new Date().getMonth() + 1}}

II. Theo dõi tỷ lệ đạt mục tiêu chiến lược

Tỷ lệ đạt mục tiêu theo tháng ({{bpSelectedYear}})

Tên mục tiêu
Cả năm
Tháng {{m}}
{{obj.objectiveName}} {{obj.yearlyAvg}}% {{obj.monthlyAchievement[m]}}%
Chưa có dữ liệu

Xu hướng tỷ lệ đạt — {{selectedObjForChart}} — Tất cả mục tiêu

Tỷ lệ đạt của mục tiêu

Tỷ trọng theo số lượng KPI

III. Theo dõi tỷ lệ đạt các chỉ số KPI then chốt

Chi tiết Target / Thực đạt / Tỷ lệ đạt theo từng tháng ({{bpSelectedYear}})

Tên mục tiêu
KPI
Cả năm Tháng {{m}}
Target
Thực đạt
Tỷ lệ đạt KPI(%)
Chưa có dữ liệu

Tỷ lệ đạt (trung bình) — {{selectedKPIForS3}}

Tỷ lệ đạt theo thời gian — {{selectedKPIForS3}}

STT Tháng Mã NV Tên nhân viên Vị trí Phòng Ban Tên mục tiêu KPI Phân loại Đơn vị Cách tính Mô tả cách tính Target Thực đạt Tỷ lệ đạt (%) Check Trạng thái Thao tác
*
{{hrKpiNewRow.Username ? (hrKpiNewRow.EmployeeName || hrKpiNewRow.Username) : '-- Chọn nhân viên --'}}
{{u.name}} {{u.position}} {{u.team}}
Không tìm thấy
{{hrKpiNewRow.ObjectiveID ? getObjName(hrKpiNewRow.ObjectiveID) : '-- Chọn mục tiêu --'}}
{{obj.Name}}
Không tìm thấy
{{hrKpiNewRow.LibID ? getKpiName(hrKpiNewRow.LibID) : '-- Chọn KPI --'}}
{{kpi.KPIName}}
Không tìm thấy
{{ getHRKPISourceLabel(hrKpiNewRow) }}
{{calcAchievement(hrKpiNewRow.Actual, hrKpiNewRow.Target, hrKpiNewRow.CalcMethod).toFixed(1)}}%

Không có dữ liệu KPI

Khóa KPI - Năm {{hrKpiSelectedYear}}

Chọn tháng cần khóa để bảo vệ dữ liệu KPI

Đối chiếu KPI tổng thể

{{hrKpiCrossRefModal.kpiName}} - Năm {{hrKpiCrossRefModal.hrKpiRow ? hrKpiCrossRefModal.hrKpiRow.Year : ''}}

Kế hoạch kinh doanh (BP) - Tổng hợp

Tháng Target (BP) Thực đạt Đạt (%)
Tháng {{m}} {{formatNumber(hrKpiCrossRefModal.monthlyData[m] ? hrKpiCrossRefModal.monthlyData[m].target : 0)}} {{formatNumber(hrKpiCrossRefModal.monthlyData[m] ? hrKpiCrossRefModal.monthlyData[m].actual : 0)}} {{hrKpiCrossRefModal.monthlyData[m] && hrKpiCrossRefModal.monthlyData[m].target > 0 ? (hrKpiCrossRefModal.monthlyData[m].actual / hrKpiCrossRefModal.monthlyData[m].target * 100).toFixed(1) + '%' : '---'}}
TỔNG {{formatNumber(hrKpiCrossRefModal.totalTarget)}} {{formatNumber(hrKpiCrossRefModal.totalActual)}} {{hrKpiCrossRefModal.totalPct ? hrKpiCrossRefModal.totalPct.toFixed(1) : 0}}%

KPI Nhân viên đang thiết lập

Nhân viên: {{hrKpiCrossRefModal.hrKpiRow.EmployeeName}}
Bộ phận: {{hrKpiCrossRefModal.hrKpiRow.Department}}
Target NV: {{formatNumber(hrKpiCrossRefModal.hrKpiRow.Target)}}
Thực đạt: {{formatNumber(hrKpiCrossRefModal.hrKpiRow.Actual)}}
Chiếm: {{(hrKpiCrossRefModal.hrKpiRow.Target / hrKpiCrossRefModal.totalTarget * 100).toFixed(1)}}% BP target
Tháng:

I. Mục tiêu KPI chi tiết theo nhân viên

Bảng tổng hợp chỉ tiêu Target theo từng tháng — Năm {{hrKpiSelectedYear}}

Bộ phận
Tên nhân viên
Vị trí
Mục tiêu
KPI
Cả năm
Tháng {{m}}
Chưa có dữ liệu KPI cho năm {{hrKpiSelectedYear}}
{{hrKpiDbStats.deptCount}} Bộ phận
{{hrKpiDbStats.empCount}} Nhân viên
{{hrKpiDbStats.kpiCount}} Chỉ số KPI
Tháng hiện tại: {{new Date().getMonth() + 1}}

II. Số lượng KPI theo bộ phận & nhân viên

Phân bổ chỉ số KPI theo từng bộ phận và nhân viên — Năm {{hrKpiSelectedYear}}

KPI theo bộ phận

Tỷ trọng KPI theo bộ phận

KPI theo nhân viên

III. Tỷ lệ đạt KPI bộ phận & nhân sự theo tháng

Phân tích tỷ lệ hoàn thành chỉ tiêu KPI — Năm {{hrKpiSelectedYear}}

Tỷ lệ đạt KPI theo bộ phận

Tỷ lệ đạt KPI của nhân sự

Tên nhân viên Tháng {{m}}
{{row.name}} {{row.monthly[m] !== null ? row.monthly[m].toFixed(2) + '%' : '-'}}
Chưa có dữ liệu

Tỷ lệ đạt theo nhân viên

Tỷ lệ đạt theo tháng

Tỷ lệ đạt KPI tổng thể

{{hrKpiOverallAchievement.toFixed(1)}}%

Tỷ lệ đạt KPI của nhân sự

Tháng / Tỷ lệ đạt KPI của nhân sự

Tháng Tỷ lệ đạt (%) Biểu đồ
Tháng {{m.month}} {{m.avg !== null ? m.avg.toFixed(2) + '%' : '-'}}

IV. Bảng KPI chi tiết nhân viên

Chi tiết Target / Thực đạt / Tỷ lệ đạt theo từng tháng — Năm {{hrKpiSelectedYear}}

Tên nhân viên
Tên mục tiêu
KPI
Cả năm Tháng {{m}}
Target
Thực đạt
Tỷ lệ đạt(%)
Chưa có dữ liệu

Quản Lý Nhân Sự

{{usersList.length}} Tài khoản đang tồn tại

Mã NV Nhân Viên Email SĐT Username Mã Đăng Nhập Quyền Vị Trí Phòng Ban Trạng Thái Thao Tác
{{u.employeeCode || '---'}}
{{u.name.charAt(0)}}
{{u.name}}
{{u.email || '---'}} {{u.phone || '---'}} {{u.username}}
{{u.tempOtp}}
Chưa tạo
{{getRoleName(u.role)}} {{u.position || '---'}} {{u.team || '---'}} {{u.status}}
Không tìm thấy nhân sự phù hợp
Không có dữ liệu
Không có dữ liệu
STT Tên mục tiêu
KPI
Hành động cụ thể
Mô tả
Mức ưu tiên
Nơi thực hiện
Người thực hiện
Người phối hợp
Tần suất
Bắt đầu
Kết thúc
Trạng thái
Ngày HT
Tiến độ
Kết quả hoàn thành
{{wk.label}}
{{wk.range}}
Chưa có kế hoạch hành động nào
Đang sửa
{{apFilteredData.length}} hành động {{apFilteredData.filter(r => Number(r.Progress) >= 100).length}} hoàn thành {{apFilteredData.filter(r => Number(r.Progress) > 0 && !(Number(r.Progress) >= 100)).length}} đang thực hiện {{apOverdueCount}} trễ hạn
Hành động cụ thể Quy trình Công việc con Vai trò Người phụ trách Thời gian Ưu tiên & Trạng thái Tiến độ (%) Kết quả (Báo cáo) Ghi chú Thao tác
Chưa có công việc sự vụ nào
Hiển thị dòng mỗi trang. Tổng số: {{ tasksLoadingState.totalCount || cvsvFilteredData.length }} công việc.
Đang sửa
{{col.label}} {{col.tasks.length}}
{{task.Title||'Không tiêu đề'}} PH {{task.Priority||''}}
{{apGetUserNames(task.AssignedTo)}} {{apGetUserNames(task.AssignedTo)}} {{apFormatDate(task.DueDate)}}
{{Number(task.Progress)||0}}%
Không có công việc

Chi tiết công việc

Công việc phối hợp chỉ sửa được Tiến độ và Kết quả

{{cvsvKanbanEditRow.Title || 'Không tiêu đề'}}

{{cvsvKanbanEditRow.Description || 'Không có mô tả chi tiết cho công việc này.'}}
Chưa có công việc con
{{Number(cvsvKanbanEditRow.Progress)||0}}%
Tự tính theo công việc con
Thông tin chi tiết
Trạng thái {{cvsvAutoStatus(cvsvKanbanEditRow)==='done'?'Hoàn thành đúng hạn': cvsvAutoStatus(cvsvKanbanEditRow)==='done_late'?'Hoàn thành trễ hạn': cvsvAutoStatus(cvsvKanbanEditRow)==='in_progress'?'Đang thực hiện': cvsvAutoStatus(cvsvKanbanEditRow)==='overdue'?'Trễ hạn':'Chưa bắt đầu'}}
Ưu tiên {{cvsvKanbanEditRow.Priority==='P1'?'● Gấp - Quan trọng': cvsvKanbanEditRow.Priority==='P2'?'● Quan trọng - Không gấp': cvsvKanbanEditRow.Priority==='P3'?'● Gấp - Không quan trọng': '⚪ Không gấp - Không quan trọng'}}
Người thực hiện {{apGetUserName(cvsvKanbanEditRow.AssignedTo)}}
Người phối hợp {{cvsvKanbanEditRow.Supervisor ? apGetUserNames(cvsvKanbanEditRow.Supervisor) : '—'}}
Ngày bắt đầu {{apFormatDate(cvsvKanbanEditRow.StartDate) || '—'}}
Hạn hoàn thành {{apFormatDate(cvsvKanbanEditRow.DueDate) || '—'}}
Thực tế HT {{cvsvKanbanEditRow.CompletedDate ? apFormatDate(cvsvKanbanEditRow.CompletedDate) : '—'}}
Chú thích & Hiển thị
MÀU SẮC TIẾN ĐỘ THEO ƯU TIÊN: P1 (Khẩn cấp, Quan trọng) P2 (Quan trọng, Không khẩn) P3 (Khẩn cấp, Ít quan trọng) P4 (Ít quan trọng, Không khẩn) | Di chuột qua thanh bar hoặc click đúp dòng để xem chi tiết.
Hiển thị: Từng ngày (Bước 1 ngày) Bước 5 ngày Bước 10 ngày Bước 15 ngày
STT
HÀNH ĐỘNG CỤ THỂ / PHỤ TRÁCH
{{ h.label }}
STT
Tiêu đề công việc
{{ col.label }}
{{ String((cvsvCurrentPage - 1) * cvsvItemsPerPage + idx + 1).padStart(2, '0') }}
{{ row.Title }}
{{ getAvatarInitials(row.AssignedTo) }} {{ apGetUserName(row.AssignedTo) }} | {{ cvsvGetStatusText(row) }}
{{ row.Progress }}%
Không tìm thấy công việc sự vụ nào
Hiển thị dòng mỗi trang. Tổng số: {{ tasksLoadingState.totalCount || cvsvFilteredData.length }} công việc.
Chọn tháng
|
Tổng công việc sự vụ
{{apDbKpiCards.totalTasks}}
Hoàn thành
{{apDbKpiCards.doneCount}}
Quá hạn
{{apDbKpiCards.overdueCount}}

Hiệu suất nhân sự

Thống kê hiệu suất theo nhân sự (Công việc sự vụ) — Năm {{apSelectedYear}}

Tổng công việc
{{apDbStaffKpis.totalTasks}}
Hoàn thành: {{apDbStaffKpis.totalDone}}
Tỷ lệ đúng hạn
{{apDbStaffKpis.onTimeRate}}%
{{apDbStaffKpis.totalOnTime}} / {{apDbStaffKpis.totalTasks}} công việc
Tỷ lệ quá hạn
{{apDbStaffKpis.overdueRate}}%
{{apDbStaffKpis.totalOverdue}} công việc quá hạn
Trung bình tiến độ
{{apDbStaffKpis.avgProgress}}%
Trung bình toàn bộ nhân sự

Top nhân sự hoàn thành nhiều nhất

Top nhân sự quá hạn nhiều nhất

# Nhân sự Phòng ban Tổng công việc Hoàn thành Đúng hạn Quá hạn Tỷ lệ đúng hạn Trung bình tiến độ
{{idx + 1}} {{s.name}} {{s.dept || ''}} {{s.total}} {{s.done}} {{s.onTime}} {{s.overdue}} {{s.onTimeRate}}%
{{s.avgProgress}}%
Chưa có dữ liệu hiệu suất

Cấu Hình Hệ Thống

1

Thông Tin Chung

2

Pipeline (V1)

Chưa có bước nào
2

Quản Lý Vị Trí

Quản lý và đồng bộ danh mục chức danh nhân sự

{{filteredPositionsList.length}}/{{positionsList.length}} vị trí
Bạn có thay đổi chưa lưu trên danh sách Vị Trí. Vui lòng bấm Lưu Cấu Hinh để áp dụng vào hệ thống.
STT Tên Vị Trí Nhân Sự Đang Giữ Trạng Thái Thao Tác
{{ idx + 1 }}
{{ pos }}
{{ getPositionUserCount(pos) }} nhân sự
Đang hoạt động Chưa sử dụng
{{ positionsList.length === 0 ? 'Chưa có vị trí nào được khai báo' : 'Không tìm thấy vị trí phù hợp' }}
6

Dọn Dẹp Lịch Sử Hoạt Động

Xóa activities cũ để giảm dung lượng Google Sheet

Hành động này không thể hoàn tác. Activities bị xóa sẽ không khôi phục được.

Nhật Ký Hoạt Động Hệ Thống

Theo dõi, kiểm tra lịch sử thao tác của các tài khoản và phân hệ

Hiển thị {{ filteredActivityLogs.length }} / {{ activityLogs ? activityLogs.length : 0 }} hoạt động

Đang tải nhật ký hoạt động...

Không tìm thấy nhật ký hoạt động nào

Vui lòng thay đổi từ khóa hoặc bộ lọc để hiển thị nhiều hơn.

STT Thời gian Tài khoản Phân hệ Hành động Chi tiết nội dung
{{ idx + 1 }} {{ log.Timestamp || log.CreatedTime }} {{ log.User || log.user || log.username || log.CreatedBy || log.createdBy || 'System' }} {{ log.RefID }} {{ log.Type }} {{ log.Content }}

Quản Lý Quyền Hệ Thống

{{ role.RoleName }}
{{ role.userCount || 0 }}
{{ role.Description || 'Chưa có mô tả' }}
Chưa có vai trò nào

Chọn một vai trò để xem và chỉnh sửa quyền

Hoặc tạo vai trò mới bằng nút phía trên

{{ permSelectedRole.RoleName }}

{{permSelectedRole.Description || 'Chưa có mô tả'}}

Module
Phạm vi
Xem
Thêm
Sửa
Xóa

{{ roleFormData.RoleID ? 'Sửa Vai Trò' : 'Tạo Vai Trò Mới' }}

Tên vai trò mặc định không thể thay đổi

Lịch Sử Thao Tác

Theo dõi hoạt động Thêm/Sửa/Xóa

Thời gian User Module Hành động
{{log.Timestamp}}
{{log.User}}
{{log.Module}} {{log.Content}}
Chưa có lịch sử giao dịch nào.

Sales Dashboard

Phân tích hiệu suất bán hàng

Lọc:

Quản Trị Dòng Tiền

Ghi nhận mọi giao dịch thu/chi của doanh nghiệp

{{ledgerFilters.category || 'Tất cả danh mục'}}
  • ■ Tất cả danh mục
  • {{c.label}}
{{ledgerFilters.group || 'Tất cả nhóm'}}
  • ■ Tất cả nhóm
  • {{g.name}}
Thêm Giao Dịch Mới {{ledgerBulkRows[0].Type==='income' ? '↑ Thu' : '↓ Chi'}}

Ngày giờ sẽ tự động lấy theo thời điểm lưu

Tổng Dòng Thu
{{formatNumber(ledgerTotals.income)}}
Tổng Dòng Chi
{{formatNumber(ledgerTotals.expense)}}
Dòng Tiền Thuần
{{ledgerTotals.net >= 0 ? '+' : ''}}{{formatNumber(ledgerTotals.net)}}
Ngày giờ
Người tạo
Loại
Nhóm
Danh mục
Quỹ
Khách Hàng
Nhà Cung Cấp
Hợp Đồng
Hóa Đơn
Số tiền
Mô tả
{{cf.label}}

Chưa có giao dịch nào

Bấm "Thêm giao dịch" để ghi nhận giao dịch đầu tiên

Hiển thị {{(ledgerPage - 1) * ledgerPageSize + 1}}–{{Math.min(ledgerPage * ledgerPageSize, filteredLedger.length)}} / {{filteredLedger.length}} giao dịch (Đã chọn: {{selectedLedger.length}})
{{ledgerPage}} / {{ledgerTotalPages}}

Tổng Dòng Thu & Tổng Dòng Chi Theo Ngày

Không có dữ liệu trong khoảng thời gian này

Dòng Thu, Dòng Chi & Dòng Tiền Thuần Theo Tháng

Không có dữ liệu

Cơ Cấu Dòng Thu

Không có dữ liệu thu

Cơ Cấu Dòng Chi

Không có dữ liệu chi

Top 10 Khách Hàng (Dòng Thu Lớn Nhất)

Không có dữ liệu

Top 10 Nhà Cung Cấp (Dòng Chi Lớn Nhất)

Không có dữ liệu

Bảng Phân Tích Dòng Tiền Theo Hạng Mục

# Loại / Tên Hạng Mục T{{parseInt(m.slice(5),10)}}-{{m.slice(0,4)}} Grand Total
- DÒNG THU {{formatCurrency(ldPivotData.revTotal[m]) || '-'}} {{formatCurrency(ldPivotData.revTotal.Total) || '-'}}
{{idx+1}} {{r.cat}} {{formatCurrency(r[m]) || ''}} {{formatCurrency(r.Total) || ''}}
- DÒNG CHI {{formatCurrency(ldPivotData.expTotal[m]) || '-'}} {{formatCurrency(ldPivotData.expTotal.Total) || '-'}}
{{idx+1}} {{r.cat}} {{formatCurrency(r[m]) || ''}} {{formatCurrency(r.Total) || ''}}
DÒNG TIỀN THUẦN {{ldPivotData.grandTotal[m] >= 0 ? '+' : ''}}{{formatCurrency(ldPivotData.grandTotal[m]) || '0'}} {{ldPivotData.grandTotal.Total >= 0 ? '+' : ''}}{{formatCurrency(ldPivotData.grandTotal.Total) || '0'}}

Không có dữ liệu giao dịch trong khoảng thời gian này

Số Dư Quỹ Hiện Tại

Tổng Số Dư Cuối Kỳ

{{formatCurrency(ldFundBalances.reduce((sum, f) => sum + f.EndingBalance, 0))}}
Số dư quỹ hiện tại

Chi Tiết Số Dư

# Tên quỹ Số dư cuối kỳ (hiện tại)
{{i + 1}} {{f.FundName}}
{{formatCurrency(f.EndingBalance)}}
Chưa có dữ liệu quỹ

Cơ Cấu Số Dư Các Quỹ

Không có dữ liệu số dư

Lịch Sử Số Tiền Giao Dịch Vào / Ra ({{(ldFundBalances.find(f => f.FundID === ldSelectedFund) || {}).FundName}})

Đang xử lý chuyển quỹ...

Chuyển Quỹ Nội Bộ

Tự động theo giờ hệ thống

Đang khóa tháng...

Khóa Sổ Thu Chi - Năm {{ledgerFilters.year}}

Chọn tháng cần khóa để bảo vệ dữ liệu Sổ Thu Chi

Đang khóa tháng...

Khóa Công Nợ - Năm {{debtFilters.year}}

Chọn tháng cần khóa để bảo vệ dữ liệu Công Nợ

Ghi nhận thanh toán vẫn hoạt động bình thường khi tháng bị khóa

Công Nợ

{{(customers.find(c => c.CustomerID === debtFilters.customerId) || {}).Name || 'Tất cả KH'}}
  • Tất cả KH
  • {{c.Name}}
{{(suppliers.find(s => s.SupplierID === debtFilters.supplierId) || {}).Name || 'Tất cả NCC'}}
  • Tất cả NCC
  • {{s.Name}}
Thêm Công Nợ Mới {{debtNewRow.Type==='receivable' ? 'Phải thu' : 'Phải trả'}}
Còn lại phải trả: {{formatCurrency((debtNewRow.TotalAmount||0)-(debtNewRow.PaidUpfront||0))}}
Tổng Phải Thu
{{formatCurrency(debtTotals.receivable)}}
Tổng Phải Trả
{{formatCurrency(debtTotals.payable)}}
Công Nợ Ròng
{{formatCurrency(debtTotals.net)}}
TỔNG PHẢI THU
{{formatCurrency(dbDashboardMetrics.totalRec)}} đ
Quá hạn: {{formatCurrency(dbDashboardMetrics.totalRecOverdue)}}đ {{dbDashboardMetrics.totalRec === 0 ? '0' : (dbDashboardMetrics.totalRecOverdue / dbDashboardMetrics.totalRec * 100).toFixed(1)}}%
TỔNG PHẢI TRẢ
{{formatCurrency(dbDashboardMetrics.totalPay)}} đ
Quá hạn: {{formatCurrency(dbDashboardMetrics.totalPayOverdue)}}đ {{dbDashboardMetrics.totalPay === 0 ? '0' : (dbDashboardMetrics.totalPayOverdue / dbDashboardMetrics.totalPay * 100).toFixed(1)}}%
CÔNG NỢ RÒNG
{{formatCurrency(dbDashboardMetrics.totalRec - dbDashboardMetrics.totalPay)}} đ
Chênh lệch Phải Thu và Phải Trả
Kỳ phân tích: {{dbDashboardMetrics.periodLabel}} Số liệu tính theo ngày phát sinh hợp đồng
Đầu kỳ · Phải Thu
{{formatCurrency(dbDashboardMetrics.openRecOpening)}}
Dư nợ trước kỳ
Phát sinh · Phải Thu
{{formatCurrency(dbDashboardMetrics.periodRecNew)}}
HĐ mới trong kỳ
Đã thu · Trong kỳ
{{formatCurrency(dbDashboardMetrics.periodRecPaid)}}
Thanh toán trong kỳ
Cuối kỳ · Phải Thu
{{formatCurrency(dbDashboardMetrics.closingRec)}}
= Đầu kỳ + Phát sinh − Đã thu
Đầu kỳ · Phải Trả
{{formatCurrency(dbDashboardMetrics.openPayOpening)}}
Dư nợ trước kỳ
Phát sinh · Phải Trả
{{formatCurrency(dbDashboardMetrics.periodPayNew)}}
HĐ mới trong kỳ
Đã trả · Trong kỳ
{{formatCurrency(dbDashboardMetrics.periodPayPaid)}}
Thanh toán trong kỳ
Cuối kỳ · Phải Trả
{{formatCurrency(dbDashboardMetrics.closingPay)}}
= Đầu kỳ + Phát sinh − Đã trả
Công Nợ Ròng Cuối Kỳ
{{formatCurrency(dbDashboardMetrics.closingRec - dbDashboardMetrics.closingPay)}}
Phải thu cuối kỳ: {{ formatCurrency(dbDashboardMetrics.closingRec) }}
Phải trả cuối kỳ: {{ formatCurrency(dbDashboardMetrics.closingPay) }}

Dư Nợ Phải Thu Theo Khách Hàng {{dbDashboardMetrics.periodLabel}}

Khách hàng Dư nợ hiện tại Sau điều chỉnh Quá hạn Tỷ lệ quá hạn Dư nợ đầu kỳ Phát sinh trong kỳ Sau điều chỉnh Đã thu trong kỳ Dư nợ cuối kỳ Quá hạn (hiện tại) Tỷ lệ quá hạn / dư nợ cuối kỳ Tỷ trọng
Không có dữ liệu phải thu
{{c.CustomerID==='khach_le'?'Khách lẻ':getDebtCustomerName(c.CustomerID)}} {{ formatCurrency(c.TotalRemaining) }} {{c.Overdue > 0 ? formatCurrency(c.Overdue) : '-'}} {{c.TotalRemaining > 0 ? (c.Overdue / c.TotalRemaining * 100).toFixed(1) + '%' : '0%'}} {{c.OpeningBalance > 0 ? formatCurrency(c.OpeningBalance) : '-'}} {{c.PeriodNew > 0 ? formatCurrency(c.PeriodNew) : '-'}} {{c.PeriodPaid > 0 ? formatCurrency(c.PeriodPaid) : '-'}} {{ formatCurrency(c.ClosingBalance) }} {{c.Overdue > 0 ? formatCurrency(c.Overdue) : '-'}} {{c.ClosingBalance > 0 ? (c.Overdue / c.ClosingBalance * 100).toFixed(1) + '%' : '0%'}}
{{((dbDashboardMetrics.hasTimePeriod ? c.ClosingBalance : c.TotalRemaining) / dbDashboardMetrics.receivables.reduce((a,x)=>a+(dbDashboardMetrics.hasTimePeriod?x.ClosingBalance:x.TotalRemaining),0) * 100).toFixed(1)}}%

Dư Nợ Phải Trả Theo Nhà Cung Cấp {{dbDashboardMetrics.periodLabel}}

Nhà cung cấp Dư nợ hiện tại Sau điều chỉnh Quá hạn Tỷ lệ quá hạn Dư nợ đầu kỳ Phát sinh trong kỳ Sau điều chỉnh Đã trả trong kỳ Dư nợ cuối kỳ Quá hạn (hiện tại) Tỷ lệ quá hạn / dư nợ cuối kỳ Tỷ trọng
Không có dữ liệu phải trả
{{c.SupplierID==='ncc_le'?'Nhà cung cấp lẻ':getDebtSupplierName(c.SupplierID)}} {{formatCurrency(c.TotalRemaining)}} {{c.Overdue > 0 ? formatCurrency(c.Overdue) : '-'}} {{c.TotalRemaining > 0 ? (c.Overdue / c.TotalRemaining * 100).toFixed(1) + '%' : '0%'}} {{c.OpeningBalance > 0 ? formatCurrency(c.OpeningBalance) : '-'}} {{c.PeriodNew > 0 ? formatCurrency(c.PeriodNew) : '-'}} {{c.PeriodPaid > 0 ? formatCurrency(c.PeriodPaid) : '-'}} {{formatCurrency(c.ClosingBalance)}} {{c.Overdue > 0 ? formatCurrency(c.Overdue) : '-'}} {{c.ClosingBalance > 0 ? (c.Overdue / c.ClosingBalance * 100).toFixed(1) + '%' : '0%'}}
{{((dbDashboardMetrics.hasTimePeriod ? c.ClosingBalance : c.TotalRemaining) / dbDashboardMetrics.payables.reduce((a,x)=>a+(dbDashboardMetrics.hasTimePeriod?x.ClosingBalance:x.TotalRemaining),0) * 100).toFixed(1)}}%

Cơ cấu dư nợ Phải Thu (Top 10)

⚠ Cơ cấu theo dư nợ cuối kỳ

Cơ cấu dư nợ Phải Trả (Top 10)

⚠ Cơ cấu theo dư nợ cuối kỳ

Phải Thu Quá Hạn Chi Tiết Thời điểm hiện tại

Khách hàng Số tiền Quá hạn
✨ Không có khoản quá hạn
{{r.CustomerID==='khach_le'?'Khách lẻ':getDebtCustomerName(r.CustomerID)}}
HĐ: {{ r.ContractNo }}
{{ formatCurrency(r.Amount) }} đ {{r.Days}} ngày

Phải Trả Quá Hạn Chi Tiết Thời điểm hiện tại

Nhà cung cấp Số tiền Quá hạn
✨ Không có khoản quá hạn
{{r.SupplierID==='ncc_le'?'Nhà cung cấp lẻ':getDebtSupplierName(r.SupplierID)}}
HĐ: {{ r.ContractNo }}
{{ formatCurrency(r.Amount) }} đ {{r.Days}} ngày

Cấn trừ Giao dịch cho: {{(debtLinkModal.debt || {}).ContractNo || '-'}}

Chọn các Giao dịch có thể cấn trừ (chưa gắn Mã hợp đồng) bên dưới để tự động hạch toán giảm nợ.

Ngày Loại Số tiền Chi tiết
{{formatDateDisplay(tx.Date)}} {{tx.Type === 'income' ? 'Thu' : 'Chi'}} {{formatCurrency(tx.Amount)}} {{tx.Description}}
Không có giao dịch nào có thể cấn trừ cho Khách hàng / Nhà cung cấp này.
Đã chọn: {{debtLinkModal.selectedIds.length}} giao dịch

Điều chỉnh giá trị HĐ: {{(debtAdjustModal.debt || {}).ContractNo || '-'}}

Giao dịch này sẽ được ghi nhận vào Lịch sử điều chỉnh nhưng KHÔNG làm thay đổi Sổ Quỹ (Ledger).
Danh mục Tháng {{m}} Tổng năm
DỰ BÁO DÒNG THU
● Công nợ
TỔNG DÒNG THU DỰ KIẾN
{{formatCurrency(cashplanSummary.revenue.plan['m'+m] || 0)}}
TT: {{formatCompact(cashplanSummary.revenue.actual['m'+m])}}
{{formatCurrency(cashplanSummary.revenue.planTotal || 0)}}
TT: {{formatCompact(cashplanSummary.revenue.actualTotal)}}
{{Math.round(cashplanSummary.revenue.actualTotal/cashplanSummary.revenue.planTotal*100)}}%
DỰ BÁO DÒNG CHI
● Công nợ
TỔNG DÒNG CHI DỰ KIẾN
{{formatCurrency(cashplanSummary.expense.plan['m'+m] || 0)}}
TT: {{formatCompact(cashplanSummary.expense.actual['m'+m])}}
{{formatCurrency(cashplanSummary.expense.planTotal || 0)}}
TT: {{formatCompact(cashplanSummary.expense.actualTotal)}}
{{Math.round(cashplanSummary.expense.actualTotal/cashplanSummary.expense.planTotal*100)}}%
DÒNG TIỀN THUẦN DỰ KIẾN
{{formatCurrency(cashplanSummary.net.plan['m'+m] || 0)}}
{{formatCurrency(cashplanSummary.net.actual['m'+m] || 0)}}
{{formatCurrency(cashplanSummary.net.planTotal || 0)}}
TT: {{formatCompact(cashplanSummary.net.actualTotal || 0)}}
Cân đối Kế Hoạch (T1-T{{cashplanRebalanceInfo.revenue.currentM}} so với thực tế)
THU
Danh mục KH (T1-T{{cashplanRebalanceInfo.revenue.currentM}}) Thực tế Chênh lệch Đề xuất/tháng
CHI
Danh mục KH (T1-T{{cashplanRebalanceInfo.expense.currentM}}) Thực tế Chênh lệch Đề xuất/tháng
TT / Dự Báo Thu (Tháng {{cashplanDashMonth}})(Luỹ kế năm)
{{formatCurrency(cpDashData.revenue.plan)}}
Thực đạt: {{formatCompact(cpDashData.revenue.actual)}} {{cpDashData.revenue.pct}}%
TT / Kế Hoạch Chi (Tháng {{cashplanDashMonth}})(Luỹ kế năm)
{{formatCurrency(cpDashData.expense.plan)}}
Thực đạt: {{formatCompact(cpDashData.expense.actual)}} {{cpDashData.expense.pct}}%
Dòng Tiền Thuần (Tháng {{cashplanDashMonth}})(Luỹ kế năm)
+{{formatCurrency(cpDashData.net.plan)}}
Thực đạt: {{formatCompact(cpDashData.net.actual)}} {{ Math.round((cpDashData.net.actual / cpDashData.net.plan) * 100) }}%

Dự báo Thu (12 Tháng)

Tỷ trọng Thu T{{cashplanDashMonth}}Lũy kế năm

Tổng Thu {{formatCompact(cpDashData.revenue.actual)}} {{formatCompact(cpDashData.revenue.plan)}}

Dự báo Chi (12 Tháng)

Tỷ trọng Chi T{{cashplanDashMonth}}Lũy kế năm

Tổng Chi {{formatCompact(cpDashData.expense.actual)}} {{formatCompact(cpDashData.expense.plan)}}

Tỷ lệ hoàn thành dự báo thu

Tỷ lệ chi theo kế hoạch chi

Tổng Hợp Dòng Tiền (12 Tháng)

Xóa dữ liệu dòng tiền

Vui lòng chọn phạm vi tính toán xóa dữ liệu (chỉ xóa số tiền, không xóa danh mục):

Lịch công nợ

{{cfTitle}}
Dự kiến Thu (tháng)
{{formatCurrency(cfMonthSummary.receivable)}}
Dự kiến Chi (tháng)
{{formatCurrency(cfMonthSummary.payable)}}
Dòng tiền thuần dự kiến
{{formatCurrency(cfMonthSummary.net)}}
Quá hạn chưa thu/trả
{{cfMonthSummary.overdueCount}}
khoản cần xử lý
{{d}}
{{cell.day}}
+{{formatCompact(cell.receivable)}}
-{{formatCompact(cell.payable)}}
{{cell.count}} khoản

Công nợ đến hạn ngày {{cfSelectedDay}}

{{cfDebtPage}}/{{cfSelectedDayDebts.totalPages}} ({{cfSelectedDayDebts.total}})
Không có công nợ đến hạn
Loại KH / NCC Hợp đồng Tổng Còn lại
{{debt.Type==='receivable'?'Phải thu':'Phải trả'}} {{debt.Type==='receivable' ? getCustomerName(debt.CustomerID) : getSupplierName(debt.SupplierID)}} {{debt.ContractNo || '-'}} {{formatCurrency(debt.TotalAmount)}} {{formatCurrency(debt.remaining)}}
Xem Thay Đổi ({{ pnlEditsList.length + Object.keys(pnlPendingConfigs).length }})
Hoạch định P&L Năm {{ pnlYear }} — Nhãn: {{ pnlLabelFilter === 'all' ? 'Tất cả chi nhánh' : labelIdToName(pnlLabelFilter) }}
Thuế: %
Danh mục
Tháng {{m}} Tổng năm
THU NHẬP TRƯỚC THUẾ (EBT)
{{(pnlSummary.months[m-1]?.ebt.plan || 0) !== 0 ? formatCurrency(pnlSummary.months[m-1].ebt.plan) : ''}}
Thực đạt: {{formatCurrency(pnlSummary.months[m-1].ebt.actual)}}
{{formatCurrency(pnlSummary.totals.ebt.plan)}}
Thực đạt: {{formatCurrency(pnlSummary.totals.ebt.actual)}}
(-) Thuế TNDN ({{pnlTaxRate}}%)
Tính theo từng tháng riêng lẻ. Quyết toán thực tế có thể khác.
{{(pnlSummary.months[m-1]?.tax.plan || 0) > 0 ? formatCurrency(pnlSummary.months[m-1].tax.plan) : ''}}
Thực đạt: {{formatCurrency(pnlSummary.months[m-1]?.tax.actual || 0)}}
{{pnlSummary.totals.tax.plan > 0 ? formatCurrency(pnlSummary.totals.tax.plan) : '0'}}
Thực đạt: {{formatCurrency(pnlSummary.totals.tax.actual || 0)}}
LỢI NHUẬN RÒNG
{{(pnlSummary.months[m-1]?.net.plan || 0) !== 0 ? formatCurrency(pnlSummary.months[m-1].net.plan) : ''}}
Thực đạt: {{formatCurrency(pnlSummary.months[m-1].net.actual)}}
{{formatCurrency(pnlSummary.totals.net.plan)}}
Thực đạt: {{formatCurrency(pnlSummary.totals.net.actual)}}
Margin: {{(pnlSummary.ratioTotals.net.plan.num / pnlSummary.ratioTotals.net.plan.den * 100).toFixed(1)}}%
Tỷ suất LN ròng
Kế hoạch: {{(pnlSummary.ratioTotals.net.plan.num / pnlSummary.ratioTotals.net.plan.den * 100).toFixed(1)}}%
Thực đạt: {{(pnlSummary.ratioTotals.net.actual.num / pnlSummary.ratioTotals.net.actual.den * 100).toFixed(1)}}%
{{((pnlSummary.ratioTotals.net.actual.num / pnlSummary.ratioTotals.net.actual.den) / (pnlSummary.ratioTotals.net.plan.num / pnlSummary.ratioTotals.net.plan.den) * 100).toFixed(0)}}% đạt KH
Đã chọn {{ pnlSelectedRows.length }} dòng
Chưa lưu cấu hình Nhấp để đồng bộ Google Sheet
Lũy kế tháng:
Tổng lũy kế: {{pnlDashMonths.length}} tháng
Doanh Thu
{{formatCurrency(pnlDashMetrics.revenue.plan)}}
Thực đạt: {{formatCurrency(pnlDashMetrics.revenue.actual)}} {{pnlDashMetrics.revenue.plan > 0 ? ((pnlDashMetrics.revenue.actual / pnlDashMetrics.revenue.plan) * 100).toFixed(1) : 0}}%
Giá Vốn (COGS)
{{formatCurrency(pnlDashMetrics.cogs.plan)}}
Thực đạt: {{formatCurrency(pnlDashMetrics.cogs.actual)}} {{pnlDashMetrics.cogs.plan > 0 ? ((pnlDashMetrics.cogs.actual / pnlDashMetrics.cogs.plan) * 100).toFixed(1) : 0}}%
LỢI NHUẬN GỘP
{{formatCurrency(pnlDashMetrics.gross_profit.plan)}}
Thực đạt: {{formatCurrency(pnlDashMetrics.gross_profit.actual)}} {{pnlDashMetrics.gross_profit.plan > 0 ? ((pnlDashMetrics.gross_profit.actual / pnlDashMetrics.gross_profit.plan) * 100).toFixed(1) : 0}}%
CHI PHÍ HOẠT ĐỘNG
{{formatCurrency(pnlDashMetrics.opex.plan)}}
Thực đạt: {{formatCurrency(pnlDashMetrics.opex.actual)}} {{pnlDashMetrics.opex.plan > 0 ? ((pnlDashMetrics.opex.actual / pnlDashMetrics.opex.plan) * 100).toFixed(1) : 0}}%
LỢI NHUẬN TRƯỚC THUẾ
{{formatCurrency(pnlDashMetrics.ebt.plan)}}
Thực đạt: {{formatCurrency(pnlDashMetrics.ebt.actual)}} {{pnlDashMetrics.ebt.plan > 0 ? ((pnlDashMetrics.ebt.actual / pnlDashMetrics.ebt.plan) * 100).toFixed(1) : 0}}%
LỢI NHUẬN RÒNG
{{formatCurrency(pnlDashMetrics.net_profit.plan)}}
Thực đạt: {{formatCurrency(pnlDashMetrics.net_profit.actual)}} {{pnlDashMetrics.net_profit.plan > 0 ? ((pnlDashMetrics.net_profit.actual / pnlDashMetrics.net_profit.plan) * 100).toFixed(1) : 0}}%

So sánh Doanh thu & Lợi nhuận Ròng

Xu hướng Kế hoạch & Thực tế hàng tháng (Cả năm)

Chỉ số Hiệu quả Lợi nhuận (% Biên LN)

Xu hướng Kế hoạch & Thực tế hàng tháng (Cả năm)

Cơ cấu 1 Đồng Doanh Thu Dự Báo (Theo tháng Kế hoạch)

{{ pnlDashRevChartMode === 'actual' ? 'Cơ cấu Doanh Thu Thực Tế' : 'Cơ cấu Doanh Thu Kế Hoạch' }}

Top 5 danh mục & phần còn lại (Lũy kế)

{{ pnlDashCogsChartMode === 'actual' ? 'Cơ cấu Giá Vốn Thực Tế' : 'Cơ cấu Giá Vốn Kế Hoạch' }}

Top 5 danh mục & phần còn lại (Lũy kế)

{{ pnlDashOpexChartMode === 'actual' ? 'Cơ cấu Chi Phí Hoạt Động Thực Tế (OPEX)' : 'Cơ cấu Chi Phí Hoạt Động Kế Hoạch (OPEX)' }}

Top 5 danh mục & phần còn lại (Lũy kế)

Phân Tích Hiệu Quả Theo Nhãn

Bảng đối soát hiệu quả và phân bổ tỷ trọng doanh thu, chi phí, lợi nhuận giữa các nhãn (Lũy kế các tháng đã chọn)

Nhãn P&L Doanh thu Giá vốn (COGS) Lợi nhuận gộp Chi phí (OPEX) Lợi nhuận ròng % Hoàn thành KH (Thực tế / Kế hoạch Doanh thu)
{{ b.name }}
{{ formatCurrency(b.revenue.plan) }} ({{(b.revenue.plan / (pnlDashMetrics.revenue.plan || 1) * 100).toFixed(1)}}%)
Thực đạt: {{ formatCurrency(b.revenue.actual) }} ({{(b.revenue.actual / (pnlDashMetrics.revenue.actual || 1) * 100).toFixed(1)}}%)
{{ formatCurrency(b.cogs.plan) }} ({{(b.cogs.plan / (pnlDashMetrics.cogs.plan || 1) * 100).toFixed(1)}}%)
Thực đạt: {{ formatCurrency(b.cogs.actual) }} ({{(b.cogs.actual / (pnlDashMetrics.cogs.actual || 1) * 100).toFixed(1)}}%)
{{ formatCurrency(b.gross.plan) }} ({{(b.gross.plan / (pnlDashMetrics.gross_profit.plan || 1) * 100).toFixed(1)}}%)
Thực đạt: {{ formatCurrency(b.gross.actual) }} ({{(b.gross.actual / (pnlDashMetrics.gross_profit.actual || 1) * 100).toFixed(1)}}%)
{{ formatCurrency(b.opex.plan) }} ({{(b.opex.plan / (pnlDashMetrics.opex.plan || 1) * 100).toFixed(1)}}%)
Thực đạt: {{ formatCurrency(b.opex.actual) }} ({{(b.opex.actual / (pnlDashMetrics.opex.actual || 1) * 100).toFixed(1)}}%)
{{ formatCurrency(b.net.plan) }} ({{(b.net.plan / (pnlDashMetrics.net_profit.plan || 1) * 100).toFixed(1)}}%)
Thực đạt: {{ formatCurrency(b.net.actual) }} ({{(b.net.actual / (pnlDashMetrics.net_profit.actual || 1) * 100).toFixed(1)}}%)
{{ b.revenue.plan > 0 ? ((b.revenue.actual / b.revenue.plan) * 100).toFixed(1) : 0 }}%
TỔNG CỘNG
{{ formatCurrency(pnlDashMetrics.revenue.plan) }} (100.0%)
Thực đạt: {{ formatCurrency(pnlDashMetrics.revenue.actual) }} (100.0%)
{{ formatCurrency(pnlDashMetrics.cogs.plan) }} (100.0%)
Thực đạt: {{ formatCurrency(pnlDashMetrics.cogs.actual) }} (100.0%)
{{ formatCurrency(pnlDashMetrics.gross_profit.plan) }} (100.0%)
Thực đạt: {{ formatCurrency(pnlDashMetrics.gross_profit.actual) }} (100.0%)
{{ formatCurrency(pnlDashMetrics.opex.plan) }} (100.0%)
Thực đạt: {{ formatCurrency(pnlDashMetrics.opex.actual) }} (100.0%)
{{ formatCurrency(pnlDashMetrics.net_profit.plan) }} (100.0%)
Thực đạt: {{ formatCurrency(pnlDashMetrics.net_profit.actual) }} (100.0%)
{{pnlDashMetrics.revenue.plan > 0 ? ((pnlDashMetrics.revenue.actual / pnlDashMetrics.revenue.plan) * 100).toFixed(1) : 0}}%

Cơ cấu Doanh Thu KH (Theo Nhãn)

Cơ cấu Doanh Thu TT (Theo Nhãn)

Cơ cấu LN Ròng KH (Theo Nhãn)

Cơ cấu LN Ròng TT (Theo Nhãn)

Chưa thiết lập Chi phí Cố định (FC). Điểm hòa vốn hiển thị = 0 vì chưa có danh mục nào được gán loại Cố định (CĐ) trong tab Dự báo P&L. Hãy vào tab Dự báo P&L → bấm vào badge của từng danh mục chi phí để chuyển sang .
Doanh thu hòa vốn dự kiến
{{formatCurrency(beAnalysis.breakEvenPoint)}}
Chi phí cố định dự kiến
{{formatCurrency(beAnalysis.fixedCost)}}
Chi phí biến đổi dự kiến
{{formatCurrency(beAnalysis.variableCost)}}
{{beAnalysis.passedBep ? 'ĐÃ VƯỢT ĐIỂM HÒA VỐN' : 'CHƯA ĐẠT ĐIỂM HÒA VỐN'}}
DT thực đạt: {{formatCurrency(beAnalysis.actualRevenue)}} Mốc hòa vốn: {{formatCurrency(beAnalysis.breakEvenPoint)}} Chênh lệch: {{beAnalysis.bepDiff >= 0 ? '+' : ''}}{{formatCurrency(beAnalysis.bepDiff)}}
Biên An Toàn (MoS)
{{beAnalysis.marginOfSafety.toFixed(1)}}%
{{beAnalysis.marginOfSafety >= 20 ? 'Tín hiệu an toàn' : beAnalysis.marginOfSafety >= 0 ? 'Tín hiệu rủi ro thấp' : 'Nguy cơ rủi ro cao'}}

I. Tương Quan Doanh Thu Lũy Kế & Điểm Hòa Vốn

Thời gian Doanh số lũy kế Mức hòa vốn Chênh lệch
Tháng {{d.month}} {{formatCompact(d.cumRevActual)}} {{formatCompact(beAnalysis.breakEvenPoint)}} {{d.bepActualDiff >= 0 ? '+' : ''}}{{formatCompact(d.bepActualDiff)}}

Mức Độ Tương Quan & Điểm Giao Cắt

II. Chi Phí Cố Định (FC)

Tổng cấu thành FC
{{formatCurrency(beAnalysis.fixedCost)}}
Hạng mục chi phí cố định Chi phí ước tính Tỷ trọng
{{it.name}} {{formatCurrency(it.value)}} {{it.percent.toFixed(1)}}%
Không có dữ liệu định phí (FC).

III. Chi Phí Biến Đổi (VC) Tại Mức Điểm Hòa Vốn

Tỷ lệ biến phí (VC Ratio)
{{beAnalysis.totalRevenue > 0 ? ((beAnalysis.variableCost/beAnalysis.totalRevenue)*100).toFixed(1) : 0}}%
Hạng mục chi phí biến đổi CP tại điểm hòa vốn Tỷ trọng
{{it.name}} {{formatCurrency(it.valueAtBep)}} {{it.percent.toFixed(1)}}%
Không có dữ liệu biến phí (VC).

IV. Phân Tích Độ Nhạy (Định Phí) & Biểu Đồ Tuyến Tính Trực Quan

* Chạm (Click) vào từng tùy chọn Kịch bản Định phí (FC) để phân tích Điểm hòa vốn tương ứng trên Biểu đồ bên phải.

Kịch bản Định phí (FC) Điểm cân bằng mới & Biến động bù trừ
-
{{s.label}}
Biến động bù trừ: {{s.diff > 0 ? '+' : ''}}{{s.diff === 0 ? '-' : formatCurrency(s.diff)}}
{{formatCurrency(s.bep)}}

Phân Tích Giao Cắt Tuyến Tính ({{beSensitivity.find(s => s.delta === selectedSensitivityDelta)?.label || 'Hiện tại'}})

V. So Sánh & Phân Tích Điểm Hòa Vốn Theo Nhãn

So sánh mốc doanh số hòa vốn dự kiến và khả năng sinh lời giữa các nhãn hoạt động trong kỳ

Nhãn P&L Doanh thu KH Doanh thu TT Định phí (FC) Biến phí (VC) Tỷ suất CM Mốc Hòa Vốn Biên an toàn (MOS) Trạng thái
{{ lbl.name }} {{ formatCurrency(lbl.revenuePlan) }} {{ formatCurrency(lbl.revenueActual) }} {{ formatCurrency(lbl.fixedCost) }} {{ formatCurrency(lbl.variableCost) }} {{ (lbl.cmRatio * 100).toFixed(1) }}% {{ formatCurrency(lbl.bep) }} {{ lbl.marginOfSafety.toFixed(1) }}% Vượt hòa vốn Dưới hòa vốn
TỔNG CỘNG {{ formatCurrency(beAnalysis.totalRevenue) }} {{ formatCurrency(beAnalysis.actualRevenue) }} {{ formatCurrency(beAnalysis.fixedCost) }} {{ formatCurrency(beAnalysis.variableCost) }} {{ (beAnalysis.cmRatio * 100).toFixed(1) }}% {{ formatCurrency(beAnalysis.breakEvenPoint) }} {{ beAnalysis.marginOfSafety.toFixed(1) }}% Vượt hòa vốn Dưới hòa vốn

So Sánh DT vs Mốc Hòa Vốn Theo Nhãn

Lũy kế tháng: Lũy kế: {{pnlSimMonths.length}}T

Bảng Kịch Bản

{{simItems.length}} biến số

Chưa có biến số nào

Thêm biến số để mô phỏng sự thay đổi của Doanh thu, Chi phí.

{{ item.category }}
{{item.labelId === 'global' ? 'Chung' : ((pnlLabelsList || []).find(l => l && l.id === item.labelId)?.name || item.labelId)}} {{ item.months.length }} tháng
%
Gốc ({{ simGetItemImpact(item).count }}T): {{formatCompact(simGetItemImpact(item).sumBase)}} {{ formatCompact(simGetItemImpact(item).sumSim) }}
Tổng doanh thu
Kế hoạch: {{formatCompact(simHealthCards.rev.plan)}}
Thực đạt
{{formatCompact(simHealthCards.rev.actual)}} {{simHealthCards.rev.deltaAct > 0 ? '+' : ''}}{{ formatCompact(simHealthCards.rev.deltaAct) }}
Giả định
{{formatCompact(simHealthCards.rev.sim)}} {{simHealthCards.rev.deltaSim > 0 ? '+' : ''}}{{ formatCompact(simHealthCards.rev.deltaSim) }}
Tổng lợi nhuận gộp {{ simHealthCards.gross.grossMargin }}%
Kế hoạch: {{formatCompact(simHealthCards.gross.plan)}}
Thực đạt
{{formatCompact(simHealthCards.gross.actual)}} {{simHealthCards.gross.deltaAct > 0 ? '+' : ''}}{{formatCompact(simHealthCards.gross.deltaAct)}}
Giả định
{{formatCompact(simHealthCards.gross.sim)}} {{simHealthCards.gross.deltaSim > 0 ? '+' : ''}}{{formatCompact(simHealthCards.gross.deltaSim)}}
Chi phí hoạt động (OPEX)
Kế hoạch: {{formatCompact(simHealthCards.opex.plan)}}
Thực đạt
{{formatCompact(simHealthCards.opex.actual)}} {{simHealthCards.opex.deltaAct > 0 ? '+' : ''}}{{formatCompact(simHealthCards.opex.deltaAct)}}
Giả định
{{formatCompact(simHealthCards.opex.sim)}} {{simHealthCards.opex.deltaSim > 0 ? '+' : ''}}{{formatCompact(simHealthCards.opex.deltaSim)}}
Tổng lợi nhuận ròng
Kế hoạch: {{formatCompact(simHealthCards.net.plan)}}
Thực đạt
{{formatCompact(simHealthCards.net.actual)}} {{simHealthCards.net.deltaAct > 0 ? '+' : ''}}{{ formatCompact(simHealthCards.net.deltaAct) }}
Giả định
{{formatCompact(simHealthCards.net.sim)}} {{simHealthCards.net.deltaSim > 0 ? '+' : ''}}{{ formatCompact(simHealthCards.net.deltaSim) }}
Độ lệch của Tổng Lợi Nhuận Ròng
{{ simHealthCards.deltaNet.value > 0 ? '+' : '' }}{{ formatCompact(simHealthCards.deltaNet.value) }}

Phân Tích Điểm Hòa Vốn (BEP)

Doanh Thu Hòa Vốn
{{ formatCompact(simBepMetrics.bepRev) }}
Kế hoạch: {{formatCompact(simBepMetrics.baseBepRev)}} Δ: {{formatCompact(simBepMetrics.bepRev - simBepMetrics.baseBepRev)}}
Biên An Toàn
{{simBepMetrics.safety.toFixed(1)}}%
Kế hoạch: {{simBepMetrics.baseSafety.toFixed(1)}}% Δ: {{(simBepMetrics.safety - simBepMetrics.baseSafety) > 0 ? '+' : ''}}{{(simBepMetrics.safety - simBepMetrics.baseSafety).toFixed(1)}}%
Thời Điểm Hòa Vốn
{{simBepMetrics.noFC ? 'Không có FC' : (simBepMetrics.bepMonth ? 'Tháng ' + simBepMetrics.bepMonth : 'Không đạt')}}
Kế hoạch: {{simBepMetrics.baseBepMonth ? 'Tháng ' + simBepMetrics.baseBepMonth : '-'}}
Đòn Bẩy (DOL)
{{simBepMetrics.dol !== null ? simBepMetrics.dol.toFixed(2) + 'x' : '-'}}
Kế hoạch: {{simBepMetrics.baseDol !== null ? simBepMetrics.baseDol.toFixed(2) + 'x' : '-'}}

Lợi nhuận ròng: So sánh Giả định và kế hoạch gốc

ĐỘ LỆCH CỦA TỔNG LỢI NHUẬN RÒNG THEO NHÃN

Biến động P&L các tháng tác động

Chỉ tiêu Tháng {{ m }} Tổng thay đổi
Doanh Thu
Kế hoạch: {{formatCompact(pnlSummary?.months?.[m-1]?.revenue?.plan || 0)}}
Giả định: {{formatCompact(simulatedPnlSummary.months[m-1].rev)}}
{{formatCompact(simAffectedMonths.reduce((sum, m) => sum + simulatedPnlSummary.months[m-1].rev - (pnlSummary?.months?.[m-1]?.revenue?.plan || 0), 0))}}
Lợi Nhuận Gộp
Kế hoạch: {{formatCompact(pnlSummary?.months?.[m-1]?.gross?.plan || 0)}}
Giả định: {{formatCompact(simulatedPnlSummary.months[m-1].gross)}}
{{formatCompact(simAffectedMonths.reduce((sum, m) => sum + simulatedPnlSummary.months[m-1].gross - (pnlSummary?.months?.[m-1]?.gross?.plan || 0), 0))}}
Chi phí hoạt động (OPEX)
Kế hoạch: {{formatCompact(pnlSummary?.months?.[m-1]?.opex?.plan || 0)}}
Giả định: {{formatCompact(simulatedPnlSummary.months[m-1].opex)}}
{{formatCompact(simAffectedMonths.reduce((sum, m) => sum + simulatedPnlSummary.months[m-1].opex - (pnlSummary?.months?.[m-1]?.opex?.plan || 0), 0))}}
Lợi Nhuận Ròng
Kế hoạch: {{formatCompact(pnlSummary?.months?.[m-1]?.net?.plan || 0)}}
Giả định: {{formatCompact(simulatedPnlSummary.months[m-1].net)}}
{{formatCompact(simAffectedMonths.reduce((sum, m) => sum + simulatedPnlSummary.months[m-1].net - (pnlSummary?.months?.[m-1]?.net?.plan || 0), 0))}}
Chưa có tháng nào bị tác động.
ROI Kịch bản
{{simBepMetrics.roi !== null ? simBepMetrics.roi.toFixed(1) + '%' : '-'}}
Thời gian hoàn vốn
{{simBepMetrics.payback !== null ? simBepMetrics.payback.toFixed(1) + ' tháng' : '-'}}
Rủi ro hòa vốn
{{simBepMetrics.bepRisk !== null ? simBepMetrics.bepRisk.toFixed(1) + '%' : '-'}}
Tỷ trọng FC (FC Ratio)
{{simBepMetrics.fcRatio !== null ? simBepMetrics.fcRatio.toFixed(1) + '%' : '-'}}
Chọn nhãn:
{{simDeltaByLabel.filter(x => x.hasItem).length}}/{{simDeltaByLabel.length}} nhãn có kịch bản tác động.

Thêm biến số kịch bản

1
2
3
Danh mục Tháng Giá trị

{{ sec.name }}

Đã chọn:
{{ simAddCategory?.category }}
Nhãn: {{simAddCategory?.labelId === 'global' ? 'Chung' : ((pnlLabelsList || []).find(l => l && l.id === simAddCategory?.labelId)?.name || simAddCategory?.labelId)}}

Chọn tháng tác động

{{simAddMonths.length}}/12
Preset:
{{ simAddCategory?.category }}
{{simAddMonths.length}} tháng: {{ simAddMonths.sort((a,b)=>a-b).map(m=>'T'+m).join(', ') }}

Điều chỉnh giá trị

Giảm (-20%)
{{ simAddMultiplier > 0 ? '+' : '' }}{{ simAddMultiplier }}%
Tăng (+20%)
Preview Kết Quả
Tổng các tháng gốc:
{{ formatCompact(simAddPreview.base) }}
{{formatCompact(simAddPreview.base + simAddPreview.totalDelta)}}
Tổng thay đổi ({{ simAddMonths.length }} tháng):
{{ simAddPreview.totalDelta > 0 ? '+' : ''}}{{ formatCompact(simAddPreview.totalDelta) }}

Đã ghi vào Kế hoạch!

Kịch bản mô phỏng đã được áp dụng. Tổng cộng {{simApplyCount}} ô dữ liệu đã được ghi đè trong bảng P&L.

Lưu ý: Dữ liệu mới chỉ lưu tạm thời. Hãy sang tab Dự báo P&L kiểm tra và nhấn Lưu thay đổi để ghi lên hệ thống.

Thêm danh mục — {{pnlBulkAddSection === 'revenue' ? 'Doanh Thu' : (pnlBulkAddSection === 'cogs' ? 'Giá Vốn' : 'Chi phí OPEX')}}

Tham chiếu Kế hoạch % Doanh thu
Tham chiếu Kế hoạch % Doanh thu

Cập nhật cấu hình hàng loạt

Đang cập nhật cấu hình cho {{pnlSelectedRows.length}} danh mục được chọn.

Nhân bản hàng loạt ({{pnlSelectedRows.length}} mục)

Cấu hình công thức

Đang cấu hình cho:
{{ pnlConfigFormulaRow.split('|')[1] }}
Hệ thống đang trỏ tới: {{ pnlFormulaBaseCombined.split('|')[0] || 'Tất cả danh mục' }} ({{pnlFormulaBaseCombined.split('|')[1] === 'global' ? 'Chung (Global)' : pnlGetLabelName(pnlFormulaBaseCombined.split('|')[1] || 'global')}})

Xóa dữ liệu Dự Báo P&L

Vui lòng chọn phạm vi tính toán xóa dữ liệu (chỉ xóa số tiền, không xóa danh mục):

Xem trước kết quả nhập Excel P&L

Thông tin file Excel
Tên file: {{ pnlImportModal.fileName }}
Năm dữ liệu: {{ pnlImportModal.fileYear || 'Không xác định' }}
Thông tin hệ thống
Năm đang chọn: {{ pnlImportModal.systemYear }}
Trạng thái đối chiếu: Khớp năm Lệch năm
Cảnh báo lệch năm!
Năm trong file Excel ({{ pnlImportModal.fileYear }}) không trùng khớp với Năm đang chọn trên hệ thống ({{ pnlImportModal.systemYear }}). Hành động ghi đè hoặc nhập đè có thể dẫn đến sai sót dữ liệu. Vui lòng kiểm tra kỹ trước khi tiếp tục.
Thông báo kiểm tra ({{ pnlImportModal.errorsCount }} Lỗi, {{ pnlImportModal.warningsCount }} Cảnh báo)
Dòng {{ idx + 1 }} ({{ row.category }}): {{ err }}
Dòng {{ idx + 1 }} ({{ row.category }}): {{ wrn }}
Phân loại Danh mục Chi nhánh Kiểu Trạng thái Tổng năm hiện tại Tổng năm Excel Chênh lệch
{{ row.pnlLineName }} {{ row.category }} {{ row.labelName }} {{ row.dataType === 'plan' ? 'Kế hoạch' : 'Thực tế' }} Lỗi Thêm mới Cập nhật Không đổi {{ row.inputModePlan === 'percent' ? (row.oldTotal.toFixed ? Number(row.oldTotal.toFixed(2)) : row.oldTotal) + '%' : formatCurrency(row.oldTotal) }} {{ row.inputModePlan === 'percent' ? (row.newTotal.toFixed ? Number(row.newTotal.toFixed(2)) : row.newTotal) + '%' : formatCurrency(row.newTotal) }} {{ row.newTotal - row.oldTotal > 0 ? '+' : '' }}{{ row.inputModePlan === 'percent' ? (Number((row.newTotal - row.oldTotal).toFixed(2))) + '%' : formatCurrency(row.newTotal - row.oldTotal) }}
Không tìm thấy dữ liệu thay đổi nào.
Dữ liệu sau khi bấm áp dụng sẽ chỉ được ghi vào bộ nhớ tạm thời trên lưới và có màu cam nổi bật. Bạn cần bấm "Lưu Thay Đổi" trên thanh lưu để ghi nhận thực tế.

Khởi Tạo KPI Tài Chính

Thiết lập tự động từ cấu trúc P&L hoặc tạo công thức tùy chỉnh linh hoạt

Nhóm Dữ Liệu P&L

Hệ thống đã phân tích sơ đồ P&L và gợi ý {{suggestedKpisGrouped.flatMap(g => g.items).length}} chỉ số có thể liên kết tự động.

{{ suggestedKpisGrouped[suggestedKpisActiveGroupIdx].label }}

Không có chỉ số nào trong nhóm này
{{manualKpiFormulaError}} Công thức hợp lệ! Sẵn sàng liên kết.
Chèn thẻ dữ liệu P&L
Chỉ số Tổng hợp P&L
{{ tag.label }}
Danh mục Doanh thu
{{ c.label }}
Danh mục Chi phí (COGS / OPEX)
{{ c.label }}
Chỉ số KPI từ Lập kế hoạch tổng thể
{{ kpi.labelText }}
Đã chọn: {{selectedSuggestedKpisCount}} chỉ số gợi ý Chế độ thiết lập công thức tự do

Danh sách KPI Tài chính

Đang tải dữ liệu...
Tên KPI (Thư viện) Tham chiếu P&L (Mapping) Mục tiêu (Target) Thực tế (Actual) Thao tác

Chưa có chỉ số KPI tài chính nào

Bạn có thể tạo nhanh bằng cách nhấp "Đề xuất KPI" hoặc tự xây dựng công thức liên kết P&L.

{{ kpi.KPIName }}
Đơn vị: {{ kpi.Unit }}
KPI Công thức (Bấm Cấu hình để xem/sửa)
{{kpiMappingsObj[kpi.LibID]?.pnlSource ? formatPnlSource(kpiMappingsObj[kpi.LibID].pnlSource) : 'Không liên kết'}}
{{formatKpiValue(getKpiVal(kpi.LibID, 'Target', activeMonth, isAccumulated, pnlYear), kpi.Unit)}} P&L
Nhập tay
{{formatKpiValue(getKpiVal(kpi.LibID, 'Actual', activeMonth, isAccumulated, pnlYear), kpi.Unit)}} P&L
Nhập tay
-
Tên KPI / Tham chiếu P&L Phân loại Tháng {{ m }} Cả năm Thao tác
Không có dữ liệu KPI Tài chính.

Cấu hình chỉ số đơn lẻ

{{ kpiMappingActiveKpiName }}

Tên KPI
Đơn vị
Mã liên kết
Kế hoạch (Target):
Thực đạt (Actual):
Phương thức gộp kỳ:

Công thức tùy chỉnh

Chèn thẻ biến số (Click để thêm):
Đồng bộ thông minh

Đồng bộ KPI sang Thư viện chỉ số

● Tự động Đề xuất Thông số BSC Dựa trên tên chỉ số "{{ syncForm.name }}", hệ thống tự động tra cứu và điền sẵn các trường thông tin tiêu chuẩn từ Thư viện chỉ số để bạn duyệt nhanh.
{{duplicateType === 'exact' ? '⚠️ Phát Hiện Chỉ Số Trùng Lặp Hoàn Toàn (Exact Match)' : '⚠️ Phát Hiện Trùng Lặp Tiềm Năng (Potential Match)'}}
Chỉ số "{{ syncForm.name }}" đã tồn tại trong Thư viện chỉ số. Hãy chọn hành động xử lý để chống rác dữ liệu:
Phát hiện chỉ số có tên tương tự trong Thư viện: "{{duplicateTargetKpi ? duplicateTargetKpi.KPIName : ''}}" (Trùng khớp Levenshtein cao). Hãy chọn giải pháp tốt nhất:
{{syncForm.complexity}}/10
KPI sau khi đồng bộ sẽ sẵn sàng để gán cho các phòng ban.

Cấu hình Nhãn Hoạch định Tài chính (P&L)

Thêm Nhãn Mới

STT Tên Nhãn / Chi nhánh Màu hiển thị Thao tác
1 Chung (Global) Mặc định slate Hệ thống
{{ idx + 2 }}
Chưa khai báo thêm nhãn tùy chỉnh nào. Nhập ở biểu mẫu phía trên để thêm!
Thay đổi cần được lưu để đồng bộ lên máy chủ.

Xem trước các thay đổi chưa lưu (P&L)

Dưới đây là danh sách toàn bộ các giá trị ô dữ liệu P&L đã thay đổi nhưng chưa được đồng bộ lên Google Sheets.

Chi tiết thay đổi số liệu ({{ pnlEditsList.length }} ô)
STT Phân loại Danh mục Nhãn / Chi nhánh Kiểu Tháng Giá trị cũ Giá trị mới Chênh lệch Thao tác
{{ idx + 1 }} {{ formatPnlSource(edit.pnlLine) }} {{ edit.category }} {{ pnlGetLabelName(edit.labelId) }} {{ edit.dataType === 'plan' ? 'Kế hoạch' : 'Thực tế' }} Tháng {{ edit.month }} {{ getPnlOldDisplay(edit.dataType, edit.pnlLine, edit.category, edit.labelId, edit.month) }} {{ getPnlNewDisplay(edit.dataType, edit.pnlLine, edit.category, edit.labelId, edit.month) }}
Không tìm thấy thay đổi nào về số liệu ô.
Thay đổi cấu hình danh mục ({{ Object.keys(pnlModifiedConfigs).length }} danh mục)
STT Phân loại Danh mục Thuộc tính thay đổi Giá trị cũ Giá trị mới Thao tác

Dashboard KPI Tài chính

Năm {{ pnlYear }} · {{ pnlLabelFilter === 'all' ? 'Tất cả nhãn' : pnlLabelFilter }}
Tháng Đang chọn {{ financialKpiDashboardSelectedMonths.length }} tháng
KPI hiển thị
{{ financialKpiDashboardSummary.total }}
Tỷ lệ đạt TB
{{ financialKpiDashboardSummary.avg.toFixed(1) }}%
Đạt mục tiêu
{{ financialKpiDashboardSummary.safe }}
Cảnh báo
{{ financialKpiDashboardSummary.risk }}
Đang tải dashboard
Chưa có KPI nào được kết nối
{{ row.profile.KPIName }}
{{ row.profile.Unit }} · {{ row.profile.KPIType }}
{{ row.status.label }}
{{ row.achievement === null ? '--' : row.achievement.toFixed(1) + '%' }}
Tỷ lệ đạt
Thực tế: {{ formatKpiValue(row.actual, row.profile.Unit) }}
Mục tiêu: {{ formatKpiValue(row.target, row.profile.Unit) }}
Xu hướng 12 tháng
KPI Công thức đạt Mục tiêu Thực tế Đạt Trạng thái Xu hướng Thao tác
{{ row.profile.KPIName }}
{{ row.profile.Unit }} · {{ row.profile.DataSource }}
{{ row.profile.CalcMethod }} {{ formatKpiValue(row.target, row.profile.Unit) }} {{ formatKpiValue(row.actual, row.profile.Unit) }} {{ row.achievement === null ? '--' : row.achievement.toFixed(1) + '%' }} {{ row.status.label }}
Phân tích chi tiết 12 tháng
{{ financialKpiDashboardSelectedRow && financialKpiDashboardSelectedRow.profile.KPIName }}
Đơn vị: {{ financialKpiDashboardSelectedRow && financialKpiDashboardSelectedRow.profile.Unit }}
Ma trận hiệu suất 12 tháng
Tỷ lệ hoàn thành KPI theo từng tháng
KPI T{{ m }}
{{ row.profile.KPIName }} {{ getFinancialKpiDashboardAchievement(row.kpi, m) === null ? '--' : Math.round(getFinancialKpiDashboardAchievement(row.kpi, m)) + '%' }}
Dashboard KPI tài chính

Kết nối KPI

KPI Nguồn Profile Trạng thái Thao tác
{{ row.profile && row.profile.KPIName || row.kpi.KPIName }}
{{ row.profile && row.profile.Unit || row.kpi.Unit || '--' }}
{{ row.profile && row.profile.DataSource || '--' }}
{{ row.ready ? 'Đã chuẩn hóa' : 'Cần profile tạm' }} {{ row.connected ? 'Đã kết nối' : 'Chưa kết nối' }}

{{ financialKpiDashboardSelectedRow.profile.KPIName }}

{{ financialKpiDashboardSelectedRow.profile.Direction }} · {{ financialKpiDashboardSelectedRow.profile.CalcMethod }}
Nguồn dữ liệu
{{ financialKpiDashboardSelectedRow.profile.DataSource }}
Độ phức tạp/trọng số
{{ financialKpiDashboardSelectedRow.profile.Complexity }}/10
Ý nghĩa KPI
{{ financialKpiDashboardSelectedRow.profile.Description }}
Mục đích theo dõi
{{ financialKpiDashboardSelectedRow.profile.Purpose }}
Mô tả cách tính
{{ financialKpiDashboardSelectedRow.profile.FormulaNote }}
Chuẩn hóa Dashboard

Profile KPI tài chính

Hoạch định tài chính

Định mức Chi phí & Ngân sách

Theo dõi ngân sách kế hoạch, chi phí thực tế và mức tiêu hao từ dữ liệu Dự báo P&L hiện hành.

Lũy kế tháng:
Tổng lũy kế: {{budgetSelectedMonths.length}} tháng
Chọn nhóm lớn
Chọn danh mục
Chưa có danh mục phù hợp

Tổng ngân sách

{{ formatBudgetMoney(budgetMetrics.totalPlan) }}

{{ budgetSelectedRangeLabel }}

Thực tế đã chi

{{ formatBudgetMoney(budgetMetrics.totalActual) }}

Lấy trực tiếp từ P&L

Chênh lệch ngân sách

{{ formatBudgetMoney(budgetMetrics.variance) }}

Kế hoạch trừ thực tế

Tỷ lệ tiêu hao

{{ Math.round((budgetMetrics.spendRatio || 0) * 100) }}%

Phân tích Pareto

{{ budgetMetrics.paretoCount }}/{{ budgetMetrics.itemCount }}

Hạng mục tạo 80% chi phí

Biến động theo tháng

So sánh kế hoạch và thực tế theo dòng chi phí

{{ budgetMetrics.status.label }}

Cơ cấu chi phí

Theo thực tế hoặc kế hoạch nếu chưa có thực tế

Bảng kiểm soát định mức

Các dòng chi phí đang được lọc theo {{ budgetSelectedRangeLabel }}

{{ budgetTableRows.filter(r => r.type === 'item').length }} hạng mục
Hạng mục Nhãn Kế hoạch Thực tế Còn lại Tiêu hao Trạng thái
Không có dữ liệu chi phí phù hợp cho kỳ lọc hiện tại.
{{ row.name }}
{{ row.labelName }} {{ formatBudgetMoney(row.plan) }} {{ formatBudgetMoney(row.actual) }} {{ formatBudgetMoney(row.variance) }}
{{ Math.round((row.ratio || 0) * 100) }}%
{{ row.status.label }}

Nhóm quy trình

Tất cả quy trình
{{ bpmProcesses.length }}
{{ grp.Name }}
{{ bpmProcesses.filter(p => p.GroupID === grp.GroupID).length }}

{{ bpmSelectedGroupId === 'all' ? 'Tất cả quy trình vận hành' : bpmGroups.find(g => g.GroupID === bpmSelectedGroupId)?.Name || 'Danh mục quy trình' }}

Xây dựng, lưu trữ và xuất bản quy trình vận hành chuẩn của doanh nghiệp

Chưa có quy trình nào

Bắt đầu trực quan hóa các quy trình vận hành SOP bằng công cụ vẽ sơ đồ tương tác thông minh của OmniPlan.

{{ bpmSelectedProcess.Name }}

Chế độ xem quy trình

Thành phần sơ đồ

Kéo thả khối vào khung vẽ

Điểm Bắt đầu
Công việc (Task)
Quyết định
Điểm Kết thúc
Chú thích chữ
Làn phân vai
Khung Blueprint

Phân tích & SLA

Phản hồi & tối ưu sơ đồ

Tổng SLA chu trình {{ bpmValidationResults.totalSla }} Độ dài đường tới hạn (Critical Path)
Lỗi sơ đồ ({{ bpmValidationResults.errors.length }})
{{ err }}
Cảnh báo ({{ bpmValidationResults.warnings.length }})
{{ warn }}
Sơ đồ quy trình chuẩn hóa thành công!
Nối nhanh

Cấu hình bước

{{ bpmGroupForm.GroupID ? 'Cập nhật nhóm quy trình' : 'Thêm nhóm quy trình mới' }}

{{ bpmProcessForm.ProcessID ? 'Cập nhật quy trình' : 'Thiết lập quy trình mới' }}

Nhóm công việc quy trình

{{ bpmCurrentProcessTaskGroups.length }} nhóm — Quy trình: {{ bpmSelectedProcess?.Name }}

Chưa có nhóm công việc nào

Bạn có thể tự động tạo các nhóm công việc dựa trên các bước có checklist của sơ đồ quy trình này

{{ item.text }}
Không có mục nào
Đang tạo lại...

{{ bpmDeletingGroupId === 'batch' ? 'Xác nhận xóa hàng loạt?' : 'Xác nhận xóa nhóm việc?' }}

{{bpmDeletingGroupId === 'batch' ? 'Bạn có chắc chắn muốn xóa ' + bpmSelectedTaskGroupIds.length + ' nhóm công việc đã chọn? Các task CVSV đã import các nhóm này sẽ không bị ảnh hưởng.' : 'Bạn có chắc chắn muốn xóa nhóm này? Các task CVSV đã import nhóm này sẽ không bị ảnh hưởng.'}}

Thư viện công việc quy trình toàn cục

Tổng số quy trình có nhóm công việc: {{ bpmGroupedProcessTaskGroups.length }}

Không tìm thấy quy trình nào

Không có dữ liệu quy trình trùng khớp hoặc chưa có quy trình nào có nhóm công việc.

{{ subGrp.Name }}
{{ subGrp.items ? subGrp.items.length : 0 }} checklist
{{ item.text }}
Không có mục nào

Công cụ sơ đồ

{{ Math.round(bpmZoomScale * 100) }}%

Sơ đồ liên kết 6 bước

Liên kết tài chính đến vận hành BPM

Độ hoàn thiện chuỗi {{ chainCompletionPercent }}%
DOANH THU & LỢI NHUẬN MỤC TIÊU
{{ linkDiagramStats.revenueTarget }} / {{ linkDiagramStats.profitTarget }}
MỤC TIÊU ĐÃ XÂY DỰNG
{{ linkDiagramStats.objectivesCount }} Mục tiêu
KẾ HOẠCH ĐÃ TẠO
{{ linkDiagramStats.plansCount }} Kế hoạch
KPI ĐÃ XÂY DỰNG
{{ linkDiagramStats.kpisCount }} KPI
CÔNG VIỆC HOÀN THÀNH
{{ linkDiagramStats.completedTasks }} / {{ linkDiagramStats.totalTasks }}
QUY TRÌNH ĐÃ XÂY DỰNG
{{ linkDiagramStats.bpmProcessesCount }} Quy trình

{{ step.name }}

BƯỚC 0{{ step.id }}
P&L Forecast BEP Target
BEP
Strategy Map
Tài chính
Khách hàng
Quy trình
Học hỏi
Action Timeline MKT & Sales
Plan MKT
Sales Goal
HR Recruitment
HR Performance Score
85%
Giao chỉ tiêu
Đã chốt KPI
Weekly Kanban Tasks
To Do
In Progress
Done
BPM Operation Flow
Yêu cầu
Xét duyệt
Ký số SOP
Độ hoàn thiện {{ getStepCompletionPercent(step.id) }}%
Mã phân hệ: BƯỚC {{ selectedStepDrawer.id }}

{{ selectedStepDrawer.name }}

Tiến độ xây dựng phân hệ {{ getStepCompletionPercent(selectedStepDrawer.id) }}%

Chỉ dẫn nghiệp vụ của CEO

{{ selectedStepDrawer.whyImportant }}

Checklist chi tiết từng nghiệp vụ con

Luồng liên kết đầu vào & đầu ra

Dữ liệu đầu vào
{{ selectedStepDrawer.input }}
Dữ liệu đầu ra
{{ selectedStepDrawer.output }}

{{currentDeal.DealID ? 'Chi Tiết' : (isCustomerViewMode ? 'Hồ Sơ Khách Hàng' : 'Tạo Mới')}}

Đang theo dõi KH Đang theo dõi

Thông Tin Khách Hàng

Đang theo dõi
Mã Khách
Tên Khách *
{{s.Name}}
{{s.Phone}}
Liên Hệ *
{{f.label}} *
{{ getOwnerInfo(currentCust.Owner).initial }}
Người Phụ Trách
{{ getOwnerInfo(currentCust.Owner).name }}
{{[getOwnerInfo(currentCust.Owner).position, getOwnerInfo(currentCust.Owner).dept].filter(Boolean).join(' · ')}}
Người theo dõi
{{ w.trim() }}

Thông Tin Deal

Tên Deal *
Giá trị
Giai đoạn *
{{f.label}} *
{{ getOwnerInfo(currentDeal.Owner).initial }}
Người Phụ Trách
{{ getOwnerInfo(currentDeal.Owner).name }}
{{[getOwnerInfo(currentDeal.Owner).position, getOwnerInfo(currentDeal.Owner).dept].filter(Boolean).join(' · ')}}
Người theo dõi Deal
{{ w.trim() }}
Chỉ lưu thông tin Khách hàng — không sửa được Deal
Chỉ lưu Deal — không sửa được thông tin KH
Bạn chỉ có quyền theo dõi khách hàng này
Tổng Còn lại Hạn TT Trạng thái
{{dd.ContractNo || '-'}} {{formatCurrency(dd.TotalAmount)}} {{formatCurrency((getDebtAdjustedTotal(dd.DebtID, dd.TotalAmount))-(Number(dd.PaidUpfront)||0)-getDebtPaidAmount(dd.DebtID))}} {{dd.DueDate ? formatDateDisplay(dd.DueDate) : '-'}} {{debtStatusLabel(getDebtStatus(dd))}}
Chưa có công nợ
{{custDebtsDataPaged.total}} hợp đồng
{{custDebtsPage}} / {{custDebtsDataPaged.pages}}
Ngày Loại Số tiền Lý do Người tạo
{{formatDateDisplay(lg.Date)}} {{(custDebtsData.find(d => d.DebtID === lg.DebtID) || {}).ContractNo || '-'}} {{lg.Type === 'increase' ? 'Tăng thêm' : 'Giảm trừ'}} {{formatCurrency(lg.Amount)}} {{lg.Reason || '-'}} {{lg.CreatedBy}}
Chưa có điều chỉnh nào
{{custDebtLogsDataPaged.total}} điều chỉnh
{{custLogsPage}} / {{custDebtLogsDataPaged.pages}}
Thu
{{formatNumber(custLedgerData.income)}}
Chi
{{formatNumber(custLedgerData.expense)}}
Thuần
{{formatNumber(custLedgerData.income - custLedgerData.expense)}}
Chưa có giao dịch nào với khách hàng này
STT Ngày Loại Danh mục Quỹ Số Tiền Mô Tả
{{(custLedgerPage - 1) * 10 + idx + 1}} {{e.Date ? e.Date.substring(0, 10) : ''}} {{e.Type === 'income' ? 'Thu' : 'Chi'}} {{e.Category || ''}} {{(funds.find(f => f.FundID === e.FundID) || {}).FundName || ''}} {{e.Type === 'income' ? '+' : '-'}}{{formatNumber(Math.abs(Number(e.Amount) || 0))}} {{String(e.Description || '')}}
{{custLedgerData.total}} giao dịch
{{custLedgerPage}} / {{custLedgerData.pages}}
Lưu Deal trước khi tạo Task
{{(usersList.find(u => u.username === user.username)||{}).name || user.username}}
Chưa có công việc sự vụ nào
STT Hành động Mô tả Ưu tiên Người TH Người PH Tần suất Bắt đầu Kết thúc Trạng thái Ngày HT Tiến độ Kết quả
{{ti+1}}
{{t.Title}}
{{t.Description||''}} {{t.Priority==='P1'?'●':t.Priority==='P2'?'●':t.Priority==='P3'?'●':'⚪'}} {{t.Priority==='P1'?'Gấp-QT':t.Priority==='P2'?'QT':t.Priority==='P3'?'Gấp':t.Priority||''}} {{apGetUserName(t.AssignedTo)||t.AssignedTo}} {{apGetUserNames(t.Supervisor)}} {{t.Frequency||''}} {{apFormatDate(t.StartDate)}} {{apFormatDate(t.DueDate)}} {{cvsvAutoStatus(t)==='done'?'Hoàn thành đúng hạn':cvsvAutoStatus(t)==='done_late'?'Hoàn thành trễ hạn':cvsvAutoStatus(t)==='in_progress'?'Đang thực hiện':cvsvAutoStatus(t)==='overdue'?'Trễ hạn':'Chưa bắt đầu'}} {{apFormatDate(t.CompletedDate)}}
{{Number(t.Progress)||0}}%
{{t.Result||''}}
{{getModalTasks.length}} công việc {{getModalTasks.filter(t=>t.Status==='Done').length}} xong
Lịch Sử Deal
Chưa có deal nào.
{{d.DealName}}
{{formatDateDisplay(d.CreatedDate)}}
{{formatCurrency(d.Value)}}
{{getStageName(d.StageID)}}

Đang tải lịch sử...

Chưa có hoạt động nào.

{{formatDateDisplay(a.CreatedTime,true)}}
{{a.Content}}

Chuyển Giao {{transferType === 'deal' ? 'Cơ Hội' : 'Khách Hàng'}}

Chỉ chuyển quyền sở hữu Deal. Khách hàng giữ nguyên — người nhận sẽ được thêm làm Người theo dõi KH. Hành động này sẽ chuyển quyền sở hữu của Deal và Khách hàng liên quan. Chỉ chuyển quyền sở hữu Khách hàng. Deals giữ nguyên chủ sở hữu cũ. Hành động này sẽ chuyển quyền sở hữu của Khách hàng và tất cả Deal liên quan.

Chuyển Giao Hàng Loạt {{bulkTransferType === 'deal' ? 'Deals' : 'Khách Hàng'}}

Đã chọn: {{bulkTransferType === 'deal' ? selectedDeals.length : selectedCustomers.length}} mục
Deals đã chọn sẽ được chuyển. Khách hàng giữ nguyên — người nhận được thêm làm Người theo dõi. Tất cả Deals đã chọn sẽ được chuyển sang người phụ trách mới. Khách hàng liên quan cũng sẽ được đồng bộ. Khách hàng đã chọn sẽ được chuyển. Deals giữ nguyên chủ sở hữu cũ. Tất cả Khách hàng đã chọn sẽ được chuyển sang người phụ trách mới. Deals liên quan cũng sẽ được đồng bộ.

{{currentUserForm.isEdit ? 'Sửa Nhân Viên' : 'Thêm Nhân Viên'}}

{{currentUserForm.isEdit ? 'Cập nhật thông tin nhân viên' : 'Điền đầy đủ thông tin để tạo tài khoản mới'}}

Cảnh báo {{ isBod(currentUserForm.Team) ? 'Phụ trách chính' : 'Trưởng phòng' }}: Phòng ban {{currentUserForm.Team}} đã có {{ isBod(currentUserForm.Team) ? 'Phụ trách chính' : 'Trưởng phòng' }} là {{showManagerDuplicateWarning.leadName}}. Bạn không thể lưu người này làm {{ isBod(currentUserForm.Team) ? 'Phụ trách chính' : 'Trưởng phòng' }} trừ khi hạ chức {{ isBod(currentUserForm.Team) ? 'Phụ trách chính' : 'Trưởng phòng' }} cũ trước.

Đặt Lại Mật Khẩu

{{ otpModalUsernames.length > 1 ? 'Đặt lại cho ' + otpModalUsernames.length + ' nhân sự' : 'Đặt lại cho ' + otpModalNames[0] }}

{{ name }} ({{ otpModalUsernames[idx] }})
Mật khẩu sẽ được đặt về 123456. Nhân sự sẽ bị bắt đổi mật khẩu ngay lần đăng nhập tới. Hệ thống không gửi email — hãy báo trực tiếp cho nhân sự.

Quản Lý Vị Trí

Thêm hoặc xóa các vị trí nhân sự

Chưa có vị trí nào

{{pos}}

{{ currentTeamForm.isEdit ? 'Sửa Phòng Ban' : 'Thêm Phòng Ban Mới' }}

{{user.name.charAt(0)}}

Hồ Sơ Cá Nhân

Cập nhật thông tin của bạn

Thông tin chỉnh sửa

Bảo mật & Phiên làm việc

Nếu bạn nghi ngờ tài khoản bị truy cập trái phép hoặc quên đăng xuất trên thiết bị khác, bạn có thể đăng xuất khỏi tất cả các thiết bị.

Tham số chiến lược

Cấu hình Bản đồ Chiến lược Doanh nghiệp

Thêm Viễn cảnh chiến lược mới

Chọn biểu tượng

Danh sách viễn cảnh chiến lược

Kéo thả hàng hoặc dùng nút di chuyển để sắp xếp thứ tự hiển thị của các Viễn cảnh trên Bản đồ.

{{perspectives.length}} viễn cảnh
Thứ tự
Tên viễn cảnh chiến lược
Biểu tượng
Màu sắc giao diện
Liên kết
Xóa
{{pers.Code}} Hàng {{ idx + 1 }}
Thay đổi biểu tượng
{{ objectives.filter(o => o.PerspectiveID === pers.Name).length }} mục tiêu

Thêm Mục tiêu chiến lược mới

Danh sách & Lộ trình Mục tiêu chiến lược

Quản lý và lập lịch hoạt động cho các mục tiêu chiến lược. Lựa chọn các chế độ hiển thị phù hợp bên dưới.

{{objectives.length}} mục tiêu
{{pers.Code}}
{{ pers.Name }}
{{ objectives.filter(o => o.PerspectiveID === pers.Name).length }} mục tiêu chiến lược
Thứ tự
Tên mục tiêu chiến lược
KPIs liên kết
Chuyển Viễn cảnh
Xóa
{{ pers.Code }}{{ objIdx + 1 }}
{{pers.Code}} Thứ tự {{ objIdx + 1 }}
{{ k.name }} Chưa gắn KPI
Chưa có mục tiêu chiến lược nào thuộc viễn cảnh này.

Lộ trình Thời gian Hoạt động của Mục tiêu

Lập lịch hoạt động linh hoạt cho các tháng trong năm {{ matrixYear }}. Các tháng hoạt động liền kề sẽ tự động nối thành các dải lộ trình liền mạch.

{{objectives.length}} mục tiêu
Kỳ Hoạch Định Năm:
Mã & Tên mục tiêu chiến lược Viễn cảnh Kỳ hoạch định năm {{ matrixYear }} (Tháng hoạt động T1 - T12) Lập lịch nhanh (Năm {{ matrixYear }})
{{ (perspectives.find(p => p.Name === obj.PerspectiveID) || {}).Code || 'OBJ' }} {{ obj.Name }}
{{ obj.PerspectiveID }}
Chưa có mục tiêu nào được tạo.

Quản lý Nhãn Kế hoạch & Nhân sự Phụ trách (HOD)

Cấu hình danh sách nhãn phòng ban động, màu sắc giao diện và ánh xạ trưởng phòng phụ trách đồng bộ bền vững.

Thêm Nhãn Bộ Phận Mới

{{ newLabelForm.Color }}
Tên nhãn bộ phận Trưởng phòng phụ trách (HOD) Chức danh / Vai trò Ẩn nhãn Visual & Color Thao tác
{{ lbl.Role || 'Nhân viên / Chưa đồng bộ' }}
Chưa có nhãn bộ phận nào được khai báo. Hãy dùng biểu mẫu phía trên để thêm nhãn mới!
⚠️ Thông Báo

Vui lòng nhập đầy đủ các trường bắt buộc:

  • {{err}}

Chi tiết KPI

{{kpiDetailModal.data.KPIName}}

{{kpiDetailModal.data.Unit || '---'}} {{kpiDetailModal.data.Status}}

Chiều hướng

{{kpiDetailModal.data.Direction || '---'}}

Cách tính tỷ lệ đạt

{{kpiDetailModal.data.CalcMethod || '---'}}

Loại KPI

{{kpiDetailModal.data.KPIType || 'Lũy kế'}}

Điểm thách thức

{{kpiDetailModal.data.Complexity || '0'}}/10

Giải thích ý nghĩa KPI

{{kpiDetailModal.data.Description || 'Chưa có dữ liệu'}}

Mục đích sử dụng KPI

Nguồn lấy dữ liệu

{{kpiDetailModal.data.DataSource || 'Chưa có dữ liệu'}}

Mô tả cách tính

{{kpiDetailModal.data.FormulaNote || 'Chưa có dữ liệu'}}

QUẢN LÝ NHÃN, MỤC TIÊU VÀ KPI

Đang lưu toàn bộ cấu trúc...

Chỉ số KPI / Cấu trúc gốc Thuộc Mục tiêu (Thay đổi) Gán Nhãn Phụ trách Trạng thái (12 Tháng)

Logic tự động đồng bộ (Auto-sync):

Khi bạn thay đổi Nhãn của KPI hoặc chuyển KPI sang Mục tiêu khác, hệ thống sẽ tự động cấu trúc lại dữ liệu tương ứng. Dữ liệu sẽ được lưu khi bấm nút Lưu phía dưới.

KHAI BÁO & GIAO KPI CHO BỘ PHẬN

Phân bổ chỉ số chiến lược từ Thư viện KPI mẫu

1. Cấu hình giao KPI hàng loạt

{{ obj.Name }}
Chưa có mục tiêu chiến lược nào.
Không có bộ phận nào khả dụng hoặc bạn không có quyền giao KPI cho các bộ phận hiện tại.
|

2. Chọn KPI mẫu từ thư viện

Đã chọn: {{ assignModalSelectedKpiIds.size }}
Tên chỉ số & Đặc tả ĐVT / Chu kỳ
{{ kpi.KPIName }} {{kpi.Description}}
ĐVT: {{ kpi.Unit || 'N/A' }} {{ kpi.KPIType || 'Lũy kế' }}
Không tìm thấy KPI nào khớp với từ khóa tìm kiếm.
KPI được chọn sẽ tự động được gán target = 100 nếu thuộc loại "Tự đánh giá", hoặc = 0 cho loại khác.

Khai thác chỉ số mục tiêu

{{ explorerObj.Name }}

Viễn cảnh: {{ explorerObj.PerspectiveID }}

{{explorerObj.Description || 'Chưa có mô tả chi tiết cho mục tiêu này...'}}

Tiến độ trung bình

{{ explorerObjAvgProgress }}%

Số lượng KPIs

{{ explorerObjKpis.length }} KPIs

KPI Đạt chỉ tiêu

{{ explorerObjKpis.filter(k => k.progress >= 90).length }} / {{ explorerObjKpis.length }}

KPI Cần cải thiện

{{ explorerObjKpis.filter(k => 90 > k.progress && k.progress >= 60).length }} / {{explorerObjKpis.length}}

Danh sách KPIs chi tiết

Mã KPI Tên chỉ số KPI con Phòng ban Đơn vị Tiến độ Trạng thái
{{ kpi.id }} {{ kpi.name }}
Chung
{{ kpi.unit || 'N/A' }} {{ formatNumber(kpi.progress) }}% Hoàn thành Khá tốt Cảnh báo
Mục tiêu này chưa có chỉ số KPI nào được thiết lập.

Cập nhật Nhãn phụ trách

Đang chỉnh sửa: {{ editLabelNameDisplay }}

Chọn các Nhãn phòng ban phụ trách:

Chưa có dữ liệu Nhãn phòng ban.

Lưu ý: Thao tác này sẽ áp dụng thay đổi Nhãn cho toàn bộ 12 tháng của KPI này trong cấu hình kế hoạch hiện tại.

Link báo cáo

{{customReportLinkDialog.title}}

Link này đi theo KPI, nhãn và năm đang xem. Để trống rồi bấm Lưu nếu muốn xóa link.

{{customReportLinkDialog.error}}

{{customDialog.headerLabel}}

{{customDialog.title}}

{{customDialog.message}}

Cảnh báo

Xung đột dữ liệu!

Dữ liệu đã được người dùng khác cập nhật trong khi bạn đang chỉnh sửa.
Bạn muốn làm gì?

Đang tải lại dữ liệu...

Vui lòng chờ trong giây lát

Tải dữ liệu mới thành công!

Dữ liệu đã được cập nhật

Lỗi tải dữ liệu!

Vui lòng thử lại

Cấu hình đơn vị KPI

Đơn vị hiện có

Chưa có đơn vị nào.

Thêm đơn vị mới

{{row.DisplayOrder}}
Bấm vào đây để thêm đơn vị mới
Đang thêm {{bulkNewUnits.length}} đơn vị
Cấu hình phân loại nhãn KPI

Nhãn hiện có

Chưa có phân loại nhãn nào.

Thêm nhãn mới

{{row.DisplayOrder}}
Bấm để thêm dòng nhãn mới
Đang thêm {{bulkNewSources.length}} nhãn mới