// User Manual 04 — Phiếu Duyệt NCC (PE) tiền-HĐ // Style: end-user friendly — các bước đơn giản. const fs = require('fs'); const path = require('path'); const H = require('./_helpers'); const { h1, h2, h3, p, bullet, num, note, warn, tip, titlePage, buildDoc, Packer } = H; const children = [ ...titlePage( "Hướng dẫn Phiếu Duyệt NCC", "Phần 04: Phiếu so sánh NCC/Thầu phụ tiền-HĐ — 2 quy trình A/B", ), h1("1. Phiếu Duyệt NCC là gì?"), p("Phiếu Duyệt NCC (PE) là biểu mẫu so sánh giá / năng lực giữa nhiều NCC trước khi tạo Hợp đồng chính thức."), bullet("2 loại: \"Duyệt NCC\" (đơn giản) và \"Duyệt NCC + Giải pháp\" (có thêm bảng so sánh giải pháp kỹ thuật)"), bullet("Khi phiếu \"Đã duyệt\" → có thể sinh HĐ 1-click với NCC thắng thầu được chọn"), h1("2. Tạo phiếu mới"), num("Sidebar → \"Phiếu Duyệt NCC\" → chọn loại → \"Tạo mới\""), num("Hoặc URL /purchase-evaluations/new?type=1 (1 = NCC) hoặc ?type=2 (NCC + Giải pháp)"), num("Điền Header: Tên gói thầu, Dự án, Phòng ban, (tùy chọn) Liên kết Ngân sách"), num("Click \"Lưu nháp\""), note("Mã phiếu format PE/{Năm}/{A|B}/{số thứ tự} — tự gen ngay khi tạo."), h1("3. Thêm NCC tham gia"), num("Mở phiếu → section \"NCC/Thầu phụ tham gia\""), num("Click \"Thêm NCC\""), num("Chọn NCC từ danh sách (hoặc tạo NCC mới qua Master)"), num("Nhập điều khoản thanh toán + ghi chú (tùy chọn)"), num("Click \"Lưu\""), tip("Lặp lại để thêm 2-3 NCC so sánh. Tối thiểu 1 NCC, khuyến nghị 3 để chọn lựa."), h1("4. Thêm hạng mục + báo giá"), num("Mở phiếu → section \"Hạng mục + Báo giá\""), num("Click \"Thêm hạng mục\" (Mã / Tên / Đơn vị / Khối lượng ngân sách + Khối lượng thi công)"), num("Tại bảng matrix, mỗi NCC có 1 cột — nhập đơn giá báo giá NCC"), num("Hệ thống tự tính Thành tiền = Khối lượng × Đơn giá"), num("Click \"Lưu\""), tip("Cột \"NS link · Δ\" so sánh đơn giá báo giá vs ngân sách (xanh = dưới NS, đỏ = vượt)."), h1("5. Đính kèm báo giá NCC"), num("Mỗi dòng NCC có nút \"Tải lên\" → đính kèm file báo giá / hồ sơ năng lực"), num("Hoặc tab \"Đính kèm\" → upload file chung (Bảng so sánh tổng, Yêu cầu KT, ...)"), h1("6. Chọn NCC thắng thầu"), num("Sau khi nhập đủ báo giá, mở section \"Hạng mục + Báo giá\""), num("Tại mỗi dòng hạng mục, tick checkbox cột NCC bạn chọn"), num("Hoặc click \"Chọn NCC này\" để chọn cho toàn bộ hạng mục"), num("Tổng giá trị NCC thắng tự cập nhật"), h1("7. Ý kiến 4 phòng ban"), p("Section \"Ý kiến 4 phòng ban\" có 4 ô: Phê duyệt / P.CCM / P.Mua hàng / SM-PM. Mỗi phòng ban điền ý kiến và ký."), num("Trưởng phòng từng phòng ban mở phiếu"), num("Tìm ô tương ứng phòng mình → nhập nội dung ý kiến"), num("Click \"Lưu & Ký\" → ghi nhận chữ ký + thời gian"), h1("8. Trình duyệt phiếu"), num("Mở phiếu ở phase Đang soạn thảo"), num("Panel Quy trình bên phải → click \"Trình → [phase tiếp theo]\""), num("(Tùy chọn) Nhập ghi chú"), num("Click \"Xác nhận\""), p("Phiếu đi qua các phase tùy quy trình A (3 step: ChoPurchasing → ChoCCM → ChoCEONcc) hoặc B (5 step thêm ChoDuAn + ChoCEOPa)."), note("Quy trình PE cũng có duyệt 2-cấp phòng ban (NV Review → TPB Confirm) giống HĐ — xem Phần 03."), h1("9. Tạo HĐ từ phiếu Đã duyệt"), num("Mở phiếu ở phase \"Đã duyệt\" và đã chọn NCC thắng thầu"), num("Click \"Tạo HĐ từ phiếu\" (góc phải Header)"), num("Chọn loại HĐ (1-7) muốn tạo"), num("Click \"Tạo\""), p("Hệ thống tạo HĐ nháp tự động: copy NCC + Dự án + (tùy chọn) Ngân sách. Drafter mở HĐ để điền chi tiết tiếp."), h1("10. Sửa / Xóa phiếu nháp"), bullet("Phase Đang soạn thảo: sửa Header / NCC / hạng mục / báo giá tự do"), bullet("Phase ≠ Đang soạn thảo: bị khóa edit (tương tự HĐ)"), bullet("Xóa: chỉ ở phase Đang soạn thảo / Từ chối, click icon thùng rác"), ]; const doc = buildDoc( "User Manual - 04 Phiếu Duyệt NCC", "SOLUTION_ERP - User Manual - 04 PE Phiếu Duyệt NCC", children, ); const outPath = path.join(__dirname, 'user', '04-PE-Phieu-Duyet-NCC.docx'); Packer.toBuffer(doc).then(buf => { fs.writeFileSync(outPath, buf); console.log('✅ Generated:', outPath); console.log(' Size:', (buf.length / 1024).toFixed(1) + ' KB'); });