{{ serverSyncMessage }}
NHAT TIN CORPORATION - BUILD TO LAST

Nhất Tín - Quản Trị Nội Bộ

Đăng nhập bằng email và mật khẩu.
Lần đầu: chọn "Lập Tài Khoản Mới", nhập email cá nhân, số điện thoại (10 số) và tự đặt mật khẩu (≥6 ký tự). Tài khoản dùng được sau khi quản lý duyệt.

{{ registerNotice }}
{{ loginError }}

Tài khoản mới được tạo với vai trò Nhân Viên Kinh Doanh và chờ duyệt. Giám đốc hoặc Quản trị duyệt và phân lại vai trò trong mục Cài Đặt.

🔒 Mỗi nhân sự đăng nhập bằng email cá nhân của mình.

{{ tabTitle }}

MST: 4101584768 • {{ currentDateFormatted }}
{{ currentUser?.fullName }}

Số liệu tự tổng hợp từ hợp đồng, tiến độ, dự toán, nghiệm thu, thu chi, giao việc, KPI. Đơn vị: tỷ = tỷ đồng, tr = triệu đồng.

Dự án đang thực hiện · trừ dự án đã quyết toán, bảo hành, hủy · bấm dòng để mở dự án
Mã HĐ Công trình Tình trạng Giá trị HĐ % KH % hoàn thành SPI CPI Biên LN Công nợ
Chưa có dự án đang thực hiện.
{{ r.o.orderCode }}
{{ r.o.projectName || getCustomerName(r.o.customerId) }}
CHT: {{ (userById(r.o.siteManagerId) || {}).fullName || '—' }}
{{ r.health }} {{ fmtBillion(r.f.adjusted) }} {{ r.p.plan === null ? '—' : fmtPct1(r.p.plan) }}
{{ fmtPct1(r.p.done) }}
{{ r.p.spi === null ? '—' : fmtIdx(r.p.spi) }} {{ r.f.cpi === null ? '—' : fmtIdx(r.f.cpi) }} {{ fmtPct1(r.f.margin) }} — {{ r.f.ar ? fmtMillion(r.f.ar) : '—' }}
Dòng tiền thu – chi theo tháng · năm {{ execYear }}, triệu đồng
Tuổi nợ phải thu · triệu đồng
Chưa có công nợ phải thu.
Hợp đồng – doanh thu thực hiện – chi phí theo dự án · tỷ đồng, dự án đang thực hiện
Chưa có dự án đang thực hiện.
Chi phí năm {{ execYear }} theo hạng mục · triệu đồng, trước VAT
Chưa có chi phí trong năm.
Cơ hội đang theo đuổi · tỷ đồng
{{ dashChartData.pipelineCount }} cơ hội · gia quyền {{ fmtBillion(dashChartData.pipelineWeighted) }}
Không có cơ hội đang mở.
Công việc theo khối · hôm nay
Xếp loại KPI quý {{ kpiPeriod }}
Chưa chấm KPI quý {{ kpiPeriod }}.
6 chỉ số sức khỏe công ty (Điều 19)
Chỉ sốMục tiêuThực tếĐánh giá
{{ h.name }} {{ h.cmp }} {{ healthValueText(h.kind, h.target) }} {{ healthValueText(h.kind, h.actual) }} — {{ h.ok ? '✔ Đạt' : '✘ Chưa đạt' }}

Mục tiêu sửa ở Tham Số Tài Chính. DSO = công nợ phải thu ÷ (giá trị nghiệm thu gồm VAT 365 ngày gần nhất ÷ 365). Bàn giao đúng hạn tính trên các dự án đã có ngày hoàn thành thực tế.

Cảnh báo cần xử lý
Nội dungSố lượngGiá trị
{{ a.text }} {{ a.count }} {{ a.count && a.value !== null ? fmtMillion(a.value) : '—' }}

Việc Của Tôi

{{ myTaskView === 'MINE' ? 'Các việc được giao cho bạn' : 'Các việc bạn đã giao cho người khác' }}, việc gần hạn và quá hạn nằm trên cùng

Cần làm
{{ myTaskGroups.todo.length }}
Quá hạn
{{ myTaskGroups.late }}
Chờ nghiệm thu
{{ myTaskGroups.review.length }}
Đã xong (10 gần nhất)
{{ myTaskGroups.done.length }}
Có {{ lateRequestsToApprove.length }} yêu cầu xin gia hạn chờ bạn duyệt
{{ t.lateRequest.requestedByName }} · {{ t.title }} · hạn {{ fmtDate(taskEffectiveDue(t)) }} → {{ fmtDate(t.lateRequest.newDue) }}
Lý do: {{ t.lateRequest.reason }}
Khách hàng tôi phụ trách / liên quan ({{ myCustomers.length }})
{{ r.c.name }} {{ r.owner ? 'Phụ trách' : 'Liên quan' }}
{{ customerStatusText(r.c.status) }} {{ r.c.phone }} {{ r.c.assignedSalesName }}
Báo xong, chờ nghiệm thu
{{ submitDialog.task.title }}
File nộp *(không bắt buộc)
{{ fl.name }}đã nộp
{{ f.name }}{{ fileSizeText(f.size) }}

{{ aiGreeting }}

Đang suy nghĩ...
Trợ lý báo cáo
Gợi ý
{{ currentCustomer360.name }}
Chi tiết dữ liệu
{{ f.label }}
{{ currentCustomer360[f.key] || 'Chưa có dữ liệu' }}
Trạng thái chăm sóc
Phân công cho
Ngày tạo
{{ currentCustomer360.createdAt ? currentCustomer360.createdAt.split('-').reverse().join('/') : '—' }} {{ currentCustomer360.createdTime || '' }}
Ghi nhận tương tác
Chưa có tương tác nào
{{ log.userName }} · {{ noteChannelText(log.channel) }}
{{ log.createdAt }}
{{ log.content }}

Hoạt động gần đây

Chưa có hoạt động nào.
{{ log.userName }} {{ log.content }}
{{ log.userName }} · {{ noteChannelText(log.channel) }}
{{ log.createdAt }}
{{ log.content }}
MãCơ hộiGiai đoạnGiá trịKhả năngPhụ trách
{{ d.dealCode }} {{ d.title }} {{ dealStageText(d) }} {{ formatCurrency(d.expectedValue) }} {{ d.winProbability }}% {{ d.assignedName }}
Chưa có cơ hội nào.
Mã HĐNgày kýGiá trịĐã thanh toánTrạng thái
{{ o.orderCode }} {{ (o.orderDate || '').split('-').reverse().join('/') }} {{ formatCurrency(o.finalAmount) }} {{ formatCurrency(o.paidAmount) }} {{ orderStatusText(o.status) }}
Chưa có hợp đồng nào.
Mã HĐHạn thanh toánTổngĐã trảCòn nợTình trạng
{{ d.orderCode }} {{ (d.dueDate || '').split('-').reverse().join('/') }} {{ formatCurrency(d.totalAmount) }} {{ formatCurrency(d.paidAmount) }} {{ formatCurrency(d.balance) }} {{ debtRiskText(getDaysOverdue(d)) }}
Không có công nợ.

Đính kèm file sẽ có khi chuyển dữ liệu lên server.

Bộ nhớ trình duyệt hiện tại chỉ chứa được khoảng 5MB nên chưa lưu file vào đây.

Đường Ống Đấu Thầu & Hợp Đồng Dự Án

Khảo sát ➔ Lập dự toán & báo giá ➔ Đàm phán ➔ Ký Hợp đồng

{{ col.title }}
{{ getDealsInStage(col.id).length }}
{{ deal.dealCode }} {{ deal.winProbability }}% trúng thầu

{{ deal.title }}

{{ getCustomerName(deal.customerId) }}
{{ formatCurrency(deal.expectedValue) }}
Phụ trách: {{ deal.assignedName }}
Tổng Thu Giải Ngân (+)
{{ formatCurrency(totalIncome) }}
Tổng Chi Vật Tư & Nhân Công (-)
{{ formatCurrency(totalExpense) }}
Số Dư Quỹ Khả Dụng (=)
{{ formatCurrency(cashBalance) }}
Mã Chứng Từ Ngày Hạng Mục Hợp Đồng Diễn Giải Nội Dung Số Tiền (VNĐ) Trạng Thái Thao Tác
{{ t.transCode }} {{ fmtDate(t.transDate) }} {{ t.type === 'INCOME' ? 'THU' : 'CHI' }} {{ t.categoryName }} {{ t.orderCode || '—' }} {{ t.notes }} {{ t.type === 'INCOME' ? '+' : '-' }} {{ formatCurrency(t.amount) }} {{ t.status === 'APPROVED' ? 'Đã duyệt' : 'Chờ duyệt' }}
Cấp duyệt: {{ approvalLevelText(t) }}
{{ filteredDebts.length }} hợp đồng

Công nợ tính theo từng đợt nghiệm thu: chỉ phần đã nghiệm thu (gồm VAT, trừ giữ lại bảo hành) mới là nợ, mỗi đợt có hạn thu riêng. Phần hợp đồng chưa nghiệm thu chưa phải là nợ. Lập đợt nghiệm thu ở tab "Nghiệm thu & thu tiền" của từng dự án.

Tổng phải thu (đã nghiệm thu)
{{ formatCurrency(agingDebts.ar) }}
Quá hạn ({{ agingDebts.overdueCount }} đợt)
{{ formatCurrency(agingDebts.overdue) }}
Giữ lại bảo hành (thu sau bảo hành)
{{ formatCurrency(agingDebts.retention) }}
HĐ chưa nghiệm thu (chưa phải nợ)
{{ formatCurrency(agingDebts.unbilled) }}

Tuổi nợ theo hạn thu từng đợt

{{ b.label }}
{{ formatCurrency(agingDebts.buckets[b.id]) }}
{{ b.note }}
Công nợ theo hợp đồng · bấm dòng để xem từng đợt
Hợp đồng Chủ đầu tư Giá trị HĐ gồm VAT Đã nghiệm thu Đã thu Còn phải thu Quá hạn Tình trạng
Không có công nợ nào phù hợp bộ lọc.
Công nợ nhập tay từ bản cũ ({{ legacyDebts.length }})
Các khoản này không gắn với hợp đồng nào đang có trong hệ thống nên giữ nguyên để không mất số. Thu xong thì bấm "Gạch nợ".
{{ d.customerName }} {{ d.orderCode }} Hạn {{ fmtDate(d.dueDate) }} Tổng {{ formatCurrency(d.totalAmount) }} Còn {{ formatCurrency(d.balance) }}

Quản Lý Tiến Độ Công Trường & Nhiệm Vụ

Giám sát các hạng mục thi công, nghiệm thu công trình

{{ tcol.title }} {{ getTasksInStage(tcol.id).length }}
{{ task.taskCode }} {{ priorityText(task.priority) }}
{{ task.title }}
{{ task.description }}
{{ task.progress }}%
{{ task.customerName }}
{{ task.assigneeName }}
{{ fmtDate(task.dueDate) }} {{ taskDueText(task) }}
Phạm vi: {{ isDirector ? 'Toàn công ty' : 'Bạn và người dưới quyền' }}
Nhân sự đang làm việc
{{ overviewStats.staff }}
Hoàn thành đúng hạn (90 ngày)
{{ overviewStats.onTime === null ? '—' : overviewStats.onTime + '%' }}
Bức tranh theo khối
Khối Vị trí trống / tổng Nhân sự Việc đang mở Quá hạn Sắp đến hạn % đúng hạn (90 ngày)
{{ b.name }} {{ b.posVacant }} / {{ b.posTotal }}— {{ b.staff }} {{ b.open }} {{ b.overdue }} {{ b.dueSoon }} {{ b.onTime === null ? '—' : b.onTime + '%' }}
Bức tranh theo nhân sự · bấm một người để xem việc của họ
Họ và tên Vị trí Khối Việc đang mở Quá hạn Sắp đến hạn % đúng hạn Quản lý trực tiếp
{{ p.user.fullName }} {{ p.position || '—' }} {{ p.block || '—' }} {{ p.open }} {{ p.overdue }} {{ p.dueSoon }} {{ p.onTime === null ? '—' : p.onTime + '%' }} {{ p.manager || '—' }}
Việc quá hạn cần xử lý ({{ overdueTasks.length }})
Mã việc Người thực hiện Nội dung công việc Hạn hiệu lực Trễ (ngày) Người giao Cập nhật gần nhất
{{ t.taskCode }} {{ t.assigneeName || '—' }} {{ t.title }} {{ fmtDate(taskEffectiveDue(t)) }} {{ boardCell(t, 'lateDays').text }} {{ t.assignedByName || '—' }} {{ t.notes || '—' }} · {{ fmtDate(t.updatedAt) }}
Không có việc nào quá hạn.
{{ boardRows.length }} việc
{{ c.label }} {{ boardSortMark(c.key) }}
{{ t.progress || 0 }}%
{{ boardCell(t, c.key).text }} {{ boardCell(t, c.key).text }} {{ boardCell(t, c.key).text }}
Không có công việc nào khớp bộ lọc.

Tiêu đề xanh đậm: cột nhập · tiêu đề xám: cột tự tính. Bấm một dòng để sửa. Báo trễ trước hạn và có hạn điều chỉnh thì tính trễ theo hạn mới.

Tổ Chức, Vị Trí & Hồ Sơ Nhân Sự

{{ isDirector ? 'Sửa trực tiếp trong bảng, tự lưu.' : 'Chỉ Ban Giám Đốc được sửa.' }} Khối và vị trí hiện là dữ liệu mẫu theo file Excel, sửa lại khi có số thật.

Hồ sơ nhân sự
Mã NV Họ và tên Vị trí chính Khối Kiêm nhiệm Quản lý trực tiếp Ngày vào làm Trạng thái Việc mở Quá hạn
{{ u.staffCode }} {{ u.fullName }} {{ (userPosition(u) || {}).name || '—' }} {{ userBlockName(u) || '—' }} {{ (positionById(u.concurrentPositionId) || {}).name || '—' }} {{ (userById(u.managerId) || {}).fullName || 'Hội đồng quản trị' }} {{ fmtDate(u.joinDate) }} {{ u.staffStatus }} {{ workStats(tasks.filter(t => t.assigneeId === u.id)).open }} {{ workStats(tasks.filter(t => t.assigneeId === u.id)).overdue }}

Quản lý trực tiếp quyết định ai xem được việc của ai: mỗi người xem được việc của mình và của người dưới quyền. Thêm tài khoản mới ở mục Nhân Sự & Pháp Lý.

Khối chức năng & vị trí ({{ positions.length }} vị trí)
Mã VT Tên vị trí Báo cáo cho Bậc nghề Người đảm nhận Tình trạng
Thêm vị trí:
{{ kpiPeriod }}

Ghi mọi lỗi chất lượng, vi phạm an toàn, sự cố tại công trường; theo dõi khắc phục đến khi đóng. Tai nạn mất ngày công được tính vào chỉ số sức khỏe công ty.

Đang mở
{{ hseSummary.open }}
Quá hạn xử lý
{{ hseSummary.overdue }}
TNLĐ mất ngày công (năm nay)
{{ hseSummary.lostDays }}
Đã đóng trong năm
{{ hseSummary.closedYear }}
{{ filteredHse.length }} sự việc
Ngày Công trình Loại / mức độ Sự việc – biện pháp khắc phục Phụ trách – hạn Tình trạng
{{ hseIssues.length ? 'Không có sự việc nào phù hợp bộ lọc.' : 'Chưa ghi sự việc nào. Bấm "Ghi sự việc" khi phát hiện lỗi chất lượng, vi phạm an toàn hoặc sự cố.' }}
{{ fmtDate(h.date) }}
{{ h.orderCode || '—' }}
{{ projectNameOf(h.orderCode) }}
{{ h.type }}
{{ h.severity }} Mất ngày công
{{ h.desc }}
→ {{ h.fix }}
{{ (userById(h.ownerId) || {}).fullName || '—' }}
Hạn {{ fmtDate(h.deadline) }}
Đóng {{ fmtDate(h.closedDate) }}
{{ hseDueState(h) }}
{{ h.status }}
Số mã vật tư
{{ inventorySummary.count }}
Giá trị tồn (giá tham khảo)
{{ formatCurrency(inventorySummary.value) }}
Cần đặt hàng (dưới tồn tối thiểu)
{{ inventorySummary.reorder }}
Dòng nhập – xuất tháng này
{{ inventorySummary.movesMonth }}

Nhà Cung Cấp – Thầu Phụ – Tổ Đội

Công nợ phải trả tự cộng từ các phiếu chi gắn nhà cung cấp. Bấm một dòng để xem chứng từ và trả tiền.

Số nhà cung cấp
{{ suppliers.length }}
Tổng công nợ phải trả
{{ formatCurrency(payablesSummary.owing) }}
Nợ quá hạn ({{ payablesSummary.overdueCount }} chứng từ)
{{ formatCurrency(payablesSummary.overdue) }}
Mã Tên nhà cung cấp / thầu phụ Phân loại Liên hệ Xếp hạng Tổng mua (gồm VAT) Đã trả Còn nợ Quá hạn
Chưa có nhà cung cấp nào.

Thu tiền theo ngày thu, chi tiền theo ngày trả NCC (gồm VAT). Doanh thu theo ngày nghiệm thu, giá vốn theo ngày chứng từ (trước VAT).

Dự báo khả năng thanh toán 60 ngày tới (Điều 28) · đến {{ fmtDate(cashflowData.forecast.horizon) }}
Số dư tiền ước tính hôm nay
{{ formatCurrency(cashflowData.forecast.cashToday) }}
(+) Phải thu đến hạn, gồm quá hạn
{{ formatCurrency(cashflowData.forecast.receivable) }}
(−) Phải trả đến hạn, gồm quá hạn
{{ formatCurrency(cashflowData.forecast.payable) }}
→ Số dư sau 60 ngày
{{ formatCurrency(cashflowData.forecast.end) }}
{{ cashflowData.forecast.end < 0 ? '⚠ Thiếu hụt dòng tiền – Kế toán trưởng dừng / giãn các khoản chi chưa cấp bách, đôn đốc thu nợ quá hạn.' : '✔ Đủ khả năng chi trả trong 60 ngày tới.' }}
Giả định chủ đầu tư trả đúng hạn; nên chiết khấu các khoản nợ quá hạn lâu khi lập kế hoạch chi.
Sẽ thu ({{ cashflowData.forecast.recv.length }} đợt)
Không có đợt nào đến hạn.
{{ r.a.orderCode }} Đợt {{ r.a.no }} · {{ r.a.content }} {{ fmtDate(r.due) }} {{ formatCurrency(r.remaining) }}
Phải trả ({{ cashflowData.forecast.pay.length }} khoản)
Không có khoản nào đến hạn.
{{ t.transCode }} {{ t.supplier || t.notes || '—' }} {{ t.dueDate ? fmtDate(t.dueDate) : 'Chưa đặt hạn' }} {{ formatCurrency(payableOf(t)) }}
Dòng tiền (thực thu – thực chi, gồm VAT) Kết quả kinh doanh ước tính (trước VAT)
Tháng Thu tiền Chi tiền Dòng tiền thuần Số dư cuối tháng DT nghiệm thu Giá vốn công trình Chi phí QLDN LN trước thuế ƯT
{{ m.label }} {{ fmtCash0(m.inflow) }} {{ fmtCash0(m.outflow) }} {{ fmtCash0(m.net) }} {{ formatCurrency(m.balance) }} {{ fmtCash0(m.revenue) }} {{ fmtCash0(m.cogs) }} {{ fmtCash0(m.overhead) }} {{ fmtCash0(m.profit) }}
Cả năm {{ formatCurrency(cashflowData.total.inflow) }} {{ formatCurrency(cashflowData.total.outflow) }} {{ formatCurrency(cashflowData.total.net) }} {{ formatCurrency(cashflowData.total.balance) }} {{ formatCurrency(cashflowData.total.revenue) }} {{ formatCurrency(cashflowData.total.cogs) }} {{ formatCurrency(cashflowData.total.overhead) }} {{ formatCurrency(cashflowData.total.profit) }}

Tham Số Tài Chính

{{ isDirector ? 'Sửa trực tiếp, tự lưu.' : 'Chỉ Ban Giám Đốc được sửa.' }} Các con số hiện là dữ liệu mẫu theo file Excel Quản trị doanh nghiệp, sửa lại theo quy định thật của công ty.

Hạn mức phê duyệt chi (Điều 8)
Một lần chi dướiCấp phê duyệt
Từ mức trên trở lên {{ l.level }}

Phiếu chi tự gán cấp duyệt theo tổng tiền. Ban Giám Đốc duyệt được mọi cấp; giám đốc khối (vị trí Kx-01) duyệt cấp 1–2; chỉ huy trưởng, trưởng bộ phận, người có cấp dưới duyệt cấp 1.

Biên lợi nhuận theo loại hợp đồng (Điều 12)
Loại hợp đồngMục tiêu (%)Sàn (%)
{{ c.name }} {{ pct(c.target) }}% {{ pct(c.floor) }}%

Dự án có biên lợi nhuận dưới sàn cần Hội đồng quản trị duyệt.

Mục tiêu sức khỏe công ty (Điều 19)
{{ h.t }} {{ healthTargetInput(h.k, h.kind) }} {{ h.u }}

Dùng cho 6 chỉ số ở Bảng Điều Hành. Số dư tiền đầu năm nhập ở trang Dòng Tiền.

Hạng mục chi phí
{{ c }}
Tham số khoán công trình P3 (Điều 24 – dự thảo)
{{ k.t }} {{ pct(finConfig.p3[k.k]) }} %
Phân bổ phần đội
{{ a.name }} {{ pct(a.pct) }} %
Kiểm tra tổng phân bổ (phải = 100%) {{ pct(finConfig.p3.alloc.reduce((x, a) => x + (a.pct || 0), 0)) }}%
Danh mục an toàn – chất lượng
Loại sự việc
{{ c }}
Đơn vị tính vật tư
{{ c }}

Báo Cáo Kết Quả Hoạt Động Kinh Doanh & Dự Án (P&L)

Số liệu tài chính Nhất Tín Corporation

{{ report.orderCount }} hợp đồng trong kỳ

{{ COMPANY_INFO.name }}

BÁO CÁO KẾT QUẢ KINH DOANH {{ report.periodLabel }} (Đơn vị tính: VNĐ)

Chỉ Tiêu Tài Chính Mã Số Số Tiền (VNĐ) Tỷ Trọng (%)
1. DOANH THU THUẦN HỢP ĐỒNG THI CÔNG 01 {{ formatCurrency(report.revenue) }} 100.0%
2. Giá vốn vật tư, nhân công & thiết bị (COGS) 02 {{ formatCurrency(report.cogs) }} {{ report.cogsPct }}%
3. LỢI NHUẬN GỘP DỰ ÁN (GROSS PROFIT = 01 - 02) 10 {{ formatCurrency(report.gross) }} {{ report.grossMargin }}%
Chi phí vận hành (OPEX) là chi phí chung của toàn công ty, không tách được theo nhánh công trình, nên báo cáo theo nhánh chỉ tính đến lợi nhuận gộp. Chọn "Tất cả công trình" để xem lợi nhuận ròng.

Hồ Sơ Doanh Nghiệp (Pháp Lý & Nhận Diện)

Tên tiếng Việt: {{ COMPANY_INFO.name }}
Tên quốc tế: {{ COMPANY_INFO.intlName }}
Mã số thuế: {{ COMPANY_INFO.taxCode }}
Tình trạng hoạt động: 🟢 {{ COMPANY_INFO.status }}
Địa chỉ trụ sở thuế: {{ COMPANY_INFO.address }}
Hotline: {{ COMPANY_INFO.hotline }}
Tài khoản ngân hàng: {{ COMPANY_INFO.bankAccount }}
Chủ TK: {{ COMPANY_INFO.bankAccountName }}

Danh Sách Nhân Sự Nhất Tín Corporation

Giám đốc có toàn quyền nghiệp vụ; Quản Trị Hệ Thống (IT) có thêm quyền quản lý vai trò.

Chưa có tài khoản Quản Trị Hệ Thống (IT). Giám đốc có thể chỉ định người IT đầu tiên ngay tại cột Vai Trò.

Có {{ pendingUserCount }} tài khoản đang chờ duyệt.

Họ Và Tên Email Đăng Nhập Mật Khẩu Phòng Ban Vai Trò
{{ u.avatarInitials || 'NT' }} {{ u.fullName }} Đang dùng Chờ duyệt {{ u.email }} •••••• {{ u.department }} {{ roleLabel(u.role) }}

Quản Trị Cơ Sở Dữ Liệu

Mẫu In Hợp Đồng / Báo Giá Thi Công - Nhất Tín Corporation
NHAT TIN

{{ COMPANY_INFO.name }}

MST: {{ COMPANY_INFO.taxCode }}

Đ/c: {{ COMPANY_INFO.address }}

Hotline: {{ COMPANY_INFO.hotline }} • Email: {{ COMPANY_INFO.email }}

Tài khoản: {{ COMPANY_INFO.bankAccount }}

HỢP ĐỒNG THI CÔNG Số: {{ activeInvoice.orderCode }}

Ngày lập: {{ activeInvoice.orderDate }}

Chủ Đầu Tư:
{{ getCustomerName(activeInvoice.customerId) }}
Trạng Thái:
{{ activeInvoice.paymentStatus === 'PAID' ? 'ĐÃ GIẢI NGÂN ĐỦ' : 'CÒN CÔNG NỢ' }}
STT Hạng Mục Công Trình / Dịch Vụ Khối Lượng Đơn Giá (VNĐ) Thành Tiền
{{ idx + 1 }} {{ it.itemName }} {{ it.quantity }} {{ formatCurrency(it.unitPrice) }} {{ formatCurrency(it.quantity * it.unitPrice) }}
Thuế GTGT (VAT {{ orderVatLabel(activeInvoice) }}): {{ formatCurrency(activeInvoice.taxAmount) }}
TỔNG GIÁ TRỊ: {{ formatCurrency(activeInvoice.finalAmount) }}
ĐẠI DIỆN CHỦ ĐẦU TƯ

(Ký, ghi rõ họ tên)

{{ COMPANY_INFO.name }}

(Tổng Giám Đốc ký đóng dấu)

{{ editingCustomerId ? 'Sửa Thông Tin Khách Hàng' : 'Thêm Khách Hàng Mới' }}

Thông tin Công trình Nhà nước

Lập Dự Thảo Hợp Đồng Thi Công Mới — {{ orderFilter.sector === 'STATE' ? 'Công trình Nhà nước' : 'Công trình Tư nhân' }}

Giá trị trước thuế: {{ formatCurrency(calculatedOrderSubtotal) }}
Thuế GTGT (VAT {{ Math.round(orderForm.vatRate * 100) }}%): {{ formatCurrency(calculatedOrderTax) }}
Tổng giá trị hợp đồng: {{ formatCurrency(calculatedOrderFinal) }}

{{ activeModal === 'income' ? '+ Phiếu Thu Tiền / Giải Ngân' : '- Phiếu Chi Vật Tư / Nhân Công' }}

Phiếu chấm KPI {{ kpiEdit.rec.period }} – {{ kpiEdit.user.fullName }}

{{ userPosition(kpiEdit.user).id }} · {{ userPosition(kpiEdit.user).name }} Chưa gán vị trí · Người chấm: {{ (userById(kpiEdit.rec.scorerId) || {}).fullName || 'Hội đồng quản trị' }}
Tổng điểm
{{ kpiEditResult.total !== null ? fmtKpi1(kpiEditResult.total) : '—' }}
{{ kpiEditResult.grade.id }}
Phiếu đã chốt ngày {{ fmtDate(kpiEdit.rec.closedDate) }}. Ban Giám Đốc có thể . Chỉ Ban Giám Đốc được mở khóa.
Bạn chỉ xem được phiếu này. Quản lý trực tiếp hoặc Ban Giám Đốc mới chấm được.
1. Kết quả KPI ({{ kpiConfig.maxKpi }} điểm)
Vị trí của nhân sự này chưa có KPI trong thư viện. Gán vị trí ở trang Tổ chức hoặc thêm KPI ở tab Thư viện KPI, rồi bấm "Lấy lại KPI từ thư viện".
Chỉ tiêu KPI Trọng số Mục tiêu / sàn Thực tế % đạt
{{ it.name }}
{{ it.kpiId }} · thấp hơn = tốt
{{ fmtKpiNum(it.weight) }}% {{ kpiValueText(it.target, it.unit) }} / {{ kpiValueText(it.floor, it.unit) }} {{ kpiValueText(it.actual, it.unit) }}
{{ Math.round(kpiItemPct(it) * 100) }}%
Chưa có số
Điểm KPI {{ kpiEditResult.kpiPoints !== null ? fmtKpi1(kpiEditResult.kpiPoints) : '—' }} / {{ kpiConfig.maxKpi }}
2. Tuân thủ ({{ kpiConfig.maxCompliance }} điểm)
TT{{ i + 1 }} {{ c }} Gợi ý: {{ kpiEdit.stats.ok }}/{{ kpiEdit.stats.counted }} việc đóng đúng hạn hoặc báo trễ trước hạn ({{ Math.round(kpiEdit.stats.pct * 100) }}%) → {{ kpiEdit.stats.suggest }} điểm {{ fmtKpiNum(kpiEdit.rec.compliance[i]) }} /{{ fmtKpiNum(kpiItemMax('compliance')) }}
Cộng {{ fmtKpiNum(kpiEditResult.compliance) }} / {{ kpiConfig.maxCompliance }}
3. Giá trị cốt lõi ({{ kpiConfig.maxValues }} điểm)
GT{{ i + 1 }} {{ c }} {{ fmtKpiNum(kpiEdit.rec.values[i]) }} /{{ fmtKpiNum(kpiItemMax('values')) }}
Cộng {{ fmtKpiNum(kpiEditResult.values) }} / {{ kpiConfig.maxValues }}
4. Trao đổi & chốt điểm
Báo cáo công việc & KPI cá nhân
NHAT TIN
{{ COMPANY_INFO.name }}
Báo cáo công việc & KPI cá nhân
Kỳ KPI: {{ kpiReport.period }} ({{ fmtDate(quarterRange(kpiReport.period).from) }} – {{ fmtDate(quarterRange(kpiReport.period).to) }})
Ngày báo cáo: {{ fmtDate(kpiReport.printedAt) }}
1. THÔNG TIN NHÂN SỰ
Họ và tên{{ kpiReport.user.fullName }}
Mã nhân sự{{ kpiReport.user.staffCode || '—' }}
Vị trí{{ userPosition(kpiReport.user) ? userPosition(kpiReport.user).id + ' – ' + userPosition(kpiReport.user).name : '—' }}
Khối{{ userBlockName(kpiReport.user) || '—' }}
Quản lý trực tiếp{{ kpiReport.manager ? kpiReport.manager.fullName : 'Hội đồng quản trị' }}
Ngày vào làm{{ fmtDate(kpiReport.user.joinDate) }}
Trạng thái{{ kpiReport.user.staffStatus || '—' }}
2. CÔNG VIỆC (tính đến hôm nay)
Việc đang mở
{{ kpiReport.work.open }}
Việc quá hạn
{{ kpiReport.work.overdue }}
Sắp đến hạn
{{ kpiReport.work.dueSoon }}
% xong đúng hạn (90 ngày)
{{ kpiReport.work.onTime === null ? '—' : kpiReport.work.onTime + '%' }}
Hoàn thành trong kỳ
{{ kpiReport.stats.doneInPeriod }}
% đóng / báo trễ trước hạn
{{ kpiReport.stats.pct === null ? '—' : Math.round(kpiReport.stats.pct * 100) + '%' }}
3. KẾT QUẢ KPI – KỲ {{ kpiReport.period }} (chưa có phiếu chấm kỳ này)
4. VIỆC ĐANG MỞ
Mã việc Nội dung công việc Hạn hiệu lực % xong Tình trạng hạn Người giao
Không có việc đang mở.
{{ t.taskCode }} {{ t.title }} {{ fmtDate(taskEffectiveDue(t)) }} {{ t.progress || 0 }}% {{ taskDueState(t) }} {{ t.assignedByName || (userById(t.assignedById) || {}).fullName || '—' }}
NHÂN SỰ
(Ký, ghi rõ họ tên)
{{ kpiReport.user.fullName }}
QUẢN LÝ TRỰC TIẾP
(Ký, ghi rõ họ tên)
{{ kpiReport.manager ? kpiReport.manager.fullName : '' }}
TỔNG GIÁM ĐỐC
(Ký, ghi rõ họ tên)
{{ kpiReport.director ? kpiReport.director.fullName : '' }}

{{ supplierForm.id ? 'Sửa nhà cung cấp' : 'Thêm nhà cung cấp / thầu phụ' }}

Báo cáo tình hình dự án {{ projectReportData.o.orderCode }}
NHAT TIN
{{ COMPANY_INFO.name }}
Báo cáo tình hình dự án
{{ projectReportData.o.orderCode }}
{{ projectReportData.o.projectName }}
Ngày báo cáo: {{ fmtDate(projectReportData.printedAt) }}
1. THÔNG TIN CHUNG
Chủ đầu tư{{ getCustomerName(projectReportData.o.customerId) }}
Loại công trình{{ projectReportData.o.buildingType || '—' }}
Loại hợp đồng{{ projectReportData.o.contractType || '—' }}
DT sàn / số tầng{{ projectReportData.o.floorArea ? projectReportData.o.floorArea + ' m²' : '—' }} · {{ projectReportData.o.floors || '—' }} tầng
Chỉ huy trưởng{{ (userById(projectReportData.o.siteManagerId) || {}).fullName || '—' }}
NV kinh doanh{{ (userById(projectReportData.o.salesUserId) || {}).fullName || '—' }}
Ngày ký HĐ{{ fmtDate(projectReportData.o.orderDate) }}
Ngày khởi công{{ fmtDate(projectReportData.o.startDate) }}
Hoàn thành theo HĐ{{ fmtDate(projectReportData.o.plannedEndDate) }}
Hoàn thành thực tế{{ fmtDate(projectReportData.o.actualEndDate) }}
Trạng thái{{ projectReportData.o.projectStatus }}
Tình trạng tiến độ{{ projectReportData.health }}
2. GIÁ TRỊ – HIỆU QUẢ (phương pháp giá trị thu được – EVM)
Giá trị HĐ gốc{{ formatCurrency(projectReportData.f.contractValue) }}Phát sinh đã duyệt{{ formatCurrency(projectReportData.f.changeValue) }}
Giá trị HĐ điều chỉnh{{ formatCurrency(projectReportData.f.adjusted) }}Giá trị HĐ gồm VAT{{ formatCurrency(projectReportData.grossValue) }}
Ngân sách giá vốn – BAC{{ formatCurrency(projectReportData.f.bac) }}Chi phí thực tế – AC{{ formatCurrency(projectReportData.f.ac) }}
% kế hoạch đến hôm nay{{ fmtPct1(projectReportData.p.plan) }}% hoàn thành thực tế{{ fmtPct1(projectReportData.p.done) }}
Giá trị kế hoạch – PV{{ formatCurrency(Math.round(projectReportData.pv)) }}Giá trị thu được – EV{{ formatCurrency(Math.round(projectReportData.ev)) }}
Chỉ số chi phí – CPI{{ projectReportData.f.cpi === null ? '—' : fmtIdx(projectReportData.f.cpi) }}Chỉ số tiến độ – SPI{{ projectReportData.p.spi === null ? '—' : fmtIdx(projectReportData.p.spi) }}
Giá vốn dự báo – EAC{{ projectReportData.f.eac === null ? '—' : formatCurrency(projectReportData.f.eac) }}Chênh lệch ngân sách – VAC{{ projectReportData.vac === null ? '—' : formatCurrency(projectReportData.vac) }}
LN gộp dự kiến{{ formatCurrency(projectReportData.f.profit) }}Biên LN dự kiến{{ fmtPct1(projectReportData.f.margin) }} ({{ projectReportData.f.rating }})
LN dự báo khi hoàn thành{{ projectReportData.f.forecastProfit === null ? '—' : formatCurrency(projectReportData.f.forecastProfit) }}Biên LN dự báo{{ fmtPct1(projectReportData.forecastMargin) }}
Đã đề nghị thanh toán (gồm VAT){{ formatCurrency(projectReportData.f.billedGross) }}Đã thu{{ formatCurrency(projectReportData.f.received) }}
Công nợ phải thu{{ formatCurrency(projectReportData.f.ar) }}% đã thu / HĐ gồm VAT{{ fmtPct1(projectReportData.collectedPct) }}
CPI = EV ÷ AC (dưới 1: chi vượt so với khối lượng làm được) · SPI = % HT ÷ % KH (dưới 1: chậm tiến độ) · EAC = BAC ÷ CPI.
3. NGÂN SÁCH – THỰC TẾ THEO HẠNG MỤC CHI PHÍ
Hạng mụcNgân sáchThực tếCòn lại% sử dụngĐánh giá
Chưa lập dự toán.
{{ b.category }} {{ formatCurrency(b.budget) }} {{ formatCurrency(b.actual) }} {{ formatCurrency(b.remaining) }} {{ fmtPct1(b.use) }} {{ b.warn }}
Chi phí phát sinh đã duyệt{{ formatCurrency(projectReportData.changeCost) }}
TỔNG CỘNG{{ formatCurrency(projectReportData.f.bac) }}{{ formatCurrency(projectReportData.f.ac) }}{{ formatCurrency(projectReportData.f.bac - projectReportData.f.ac) }}{{ projectReportData.f.acPct === null ? '—' : projectReportData.f.acPct + '%' }}
4. TIẾN ĐỘ CÁC HẠNG MỤC CÔNG VIỆC
Công việcBắt đầuKết thúcTỷ trọng% KH% HTTrạng thái
Chưa lập kế hoạch tiến độ.
{{ s.no }}. {{ s.name }} {{ fmtDate(s.start) }} {{ fmtDate(s.end) }} {{ s.weight }}% {{ schedulePlanPct(s) === null ? '—' : Math.round(schedulePlanPct(s) * 100) + '%' }} {{ s.done || 0 }}% {{ scheduleState(s) }}
5. CÁC ĐỢT NGHIỆM THU – THANH TOÁN
Đợt / nội dungNgàyGồm VATPhải thuĐã thuCòn phải thuTình trạng
Chưa có đợt nghiệm thu.
Đợt {{ r.a.no }} · {{ r.a.content }} {{ fmtDate(r.a.date) }} {{ formatCurrency(r.gross) }} {{ formatCurrency(r.payable) }} {{ formatCurrency(r.received) }} {{ formatCurrency(r.remaining) }} {{ r.state }}{{ r.overdueDays ? ' ' + r.overdueDays + ' ngày' : '' }}
6. ƯỚC TÍNH QUỸ KHOÁN CÔNG TRÌNH P3 (Điều 24 – dự thảo)
Giá vốn khoán (= BAC){{ formatCurrency(projectReportData.p3.bac) }}Giá vốn thực tế / dự báo (EAC){{ formatCurrency(projectReportData.p3.eac) }}
Quỹ khoán = khoán − thực tế{{ formatCurrency(projectReportData.p3.fund) }}Phần đội{{ formatCurrency(Math.round(projectReportData.p3.team)) }}
Trần phần đội{{ formatCurrency(Math.round(projectReportData.p3.cap)) }}Phần đội sau áp trần{{ formatCurrency(Math.round(projectReportData.p3.capped)) }}
Chi khi quyết toán{{ formatCurrency(Math.round(projectReportData.p3.payNow)) }}Giữ lại đến hết bảo hành{{ formatCurrency(Math.round(projectReportData.p3.hold)) }}
Đã thu / HĐ gồm VAT{{ fmtPct1(projectReportData.p3.collected) }}Điều kiện chi{{ projectReportData.p3.eligible ? '✔ Đủ điều kiện' : '✘ Chưa đủ (thu ≥ ' + fmtPct1(finConfig.p3.minCollected) + ')' }}
Phân bổ phần đội
{{ a.name }} ({{ fmtPct1(a.pct) }})
{{ formatCurrency(a.amount) }}
Số liệu tham khảo theo dự thảo Thể chế vận hành – chỉ áp dụng khi HĐQT ban hành; quyết toán chính thức theo BM-14.
NGƯỜI LẬP
(Ký, ghi rõ họ tên)
CHỈ HUY TRƯỞNG
(Ký, ghi rõ họ tên)
{{ (userById(projectReportData.o.siteManagerId) || {}).fullName || '' }}
TỔNG GIÁM ĐỐC
(Ký, đóng dấu)

Thông tin dự án — {{ orderDetail && orderDetail.orderCode }}

% hoàn thành tự tính từ tab Tiến độ: {{ fmtPct1(detailSchedule.done) }}

{{ hseForm.id ? 'Sửa sự việc' : 'Ghi sự việc an toàn – chất lượng' }}

{{ materialForm.id ? 'Sửa vật tư' : 'Thêm vật tư' }}

{{ changeForm.id ? 'Sửa phát sinh' : 'Ghi phát sinh mới' }} — {{ changeForm.orderCode }}

{{ acceptanceForm.id ? 'Sửa' : 'Ghi' }} nghiệm thu đợt {{ acceptanceForm.no }} — {{ acceptanceForm.orderCode }}

Phải thu đợt này: {{ formatCurrency(Math.round((acceptanceForm.value || 0) * (1 + (acceptanceForm.vatRate || 0))) - (acceptanceForm.retention || 0)) }}

{{ contractTransForm.kind === 'INCOME' ? '+ Phiếu thu tiền khách' : contractTransForm.kind === 'MATERIAL' ? '- Phiếu chi vật tư' : '- Phiếu chi nhân công / ca máy' }} — HĐ {{ contractTransForm.orderCode }}

Còn phải thu: {{ formatCurrency(orderDetail.remainingDebt) }}
Cấp duyệt theo hạn mức: {{ approvalLevelText({ amount: contractTransTotal }) }}
Tổng: {{ formatCurrency(contractTransTotal) }}

Tạo hợp đồng

Cơ hội "{{ contractPromptDeal.title }}" đã chốt thắng. Bạn có muốn tạo hợp đồng không?

{{ editingDealId ? 'Sửa cơ hội' : 'Tạo cơ hội' }}

Thêm Dự Án / Cơ Hội Đấu Thầu Mới

{{ editingTaskId ? 'Sửa Công Việc' : 'Giao Việc / Nhiệm Vụ Công Trường' }}

Xin gia hạn (báo trễ trước hạn)
✓ Đã được duyệt gia hạn tới {{ fmtDate(editingTask.adjustedDueDate) }} – xong trước hạn này thì không bị trừ KPI.
⏳ Đang chờ duyệt gia hạn tới {{ fmtDate(editingTask.lateRequest.newDue) }}. Lý do: {{ editingTask.lateRequest.reason }}
✗ Yêu cầu gia hạn tới {{ fmtDate(editingTask.lateRequest.newDue) }} bị từ chối: {{ editingTask.lateRequest.rejectNote }}. Vẫn tính theo hạn cũ.

Phải xin trước hạn chót. Người giao việc / quản lý duyệt thì mới tính theo hạn mới và không bị trừ KPI.

{{ editingTask.lateRequest.requestedByName }} xin gia hạn tới {{ fmtDate(editingTask.lateRequest.newDue) }} – {{ editingTask.lateRequest.reason }}

Biết sẽ trễ thì báo trước hạn và ghi hạn mới: hoàn thành trước hạn mới thì không bị tính trễ.