// User Manual 02 — Hợp đồng (Tạo + Sửa + 7 loại + Xóa) // 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 Hợp đồng", "Phần 02: 7 loại HĐ - Tạo, Sửa, Xóa", ), h1("1. 7 loại hợp đồng"), bullet("HĐ Thầu phụ (HĐTP) — thuê NTP xây thô / hoàn thiện"), bullet("HĐ Giao khoán (HĐGK) — khoán công việc cho tổ đội"), bullet("HĐ NCC — mua vật tư, thiết bị từ NCC"), bullet("HĐ Dịch vụ (HĐDV) — thuê tư vấn, kiểm định, vệ sinh"), bullet("HĐ Mua bán (HĐMB) — mua bán thiết bị, vật phẩm"), bullet("HĐ Nguyên tắc NCC — khung nguyên tắc lâu dài với NCC"), bullet("HĐ Nguyên tắc DV — khung nguyên tắc dịch vụ lâu dài"), note("Tham khảo Phần 06 để biết field đặc thù mỗi loại."), h1("2. Inbox vs Hợp đồng của tôi"), bullet("Inbox (/inbox) — HĐ đang chờ vai trò bạn duyệt"), bullet("Hợp đồng của tôi (/my-contracts) — HĐ bạn là Drafter (mọi phase)"), tip("Filter theo loại: thêm ?type=N (1-7) vào URL hoặc dùng menu Sidebar."), h1("3. Tạo HĐ mới"), num("Sidebar → Hợp đồng → chọn loại HĐ → Tạo mới"), num("Hoặc URL trực tiếp /contracts/new?type=N (N = 1-7)"), num("Điền Header: Tên HĐ, NCC/NTP, Dự án, Phòng ban chủ trì, Giá trị, Ngày dự kiến"), num("(Tùy chọn) Liên kết Ngân sách dự án"), num("Click \"Lưu nháp\" → hệ thống tạo HĐ ở phase Đang soạn thảo"), note("Mã HĐ chưa gen ngay — sẽ tự gen khi chuyển sang phase Đang đóng dấu."), h1("4. Thêm chi tiết HĐ"), p("Sau khi tạo nháp, mở HĐ → tab \"Chi tiết\" để nhập hạng mục cụ thể."), num("Mở HĐ → tab \"Chi tiết\""), num("Click \"Thêm hạng mục\""), num("Nhập Mã / Tên hạng mục / Đơn vị / Khối lượng / Đơn giá"), num("Hệ thống tự tính Thành tiền = Khối lượng × Đơn giá"), num("Click \"Lưu\""), tip("Lặp lại để thêm nhiều hạng mục. Tổng giá trị HĐ tự tổng hợp."), h1("5. Sửa HĐ nháp"), num("Mở HĐ ở phase Đang soạn thảo"), num("Click \"Sửa\" ở Header hoặc inline edit từng hạng mục"), num("Click \"Lưu\""), warn("Sau khi trình duyệt (Phase ≠ Đang soạn thảo), HĐ bị khóa edit. Phải reject về Đang soạn thảo mới sửa được."), h1("6. Trình duyệt HĐ"), num("Mở HĐ ở phase Đang soạn thảo"), num("Panel Quy trình bên phải → click \"Trình → Đang góp ý\""), num("(Tùy chọn) Nhập ghi chú"), num("Click \"Xác nhận\""), p("HĐ chuyển sang phase tiếp theo, người duyệt nhận notification."), p("Chi tiết quy trình duyệt 9 phase: xem Phần 03 - Duyệt Workflow."), h1("7. Đính kèm file"), num("Mở HĐ → tab \"Đính kèm\" hoặc kéo thả file vào khu vực dropzone"), num("Chọn loại file: Báo giá / Yêu cầu KT / Phiếu duyệt / ..."), num("File upload xong, hiển thị trong danh sách"), num("Click tên file để tải về"), h1("8. Comment / Góp ý"), num("Mở HĐ → tab \"Bình luận\""), num("Nhập nội dung góp ý vào khung text"), num("Click \"Gửi\""), note("Drafter + role đã comment trước nhận notification realtime."), h1("9. Xóa HĐ nháp"), num("Mở HĐ ở phase Đang soạn thảo / Từ chối"), num("Click icon \"Xóa\" (thùng rác) ở Header"), num("Xác nhận \"Xóa\""), warn("Chỉ xóa được HĐ ở phase Đang soạn thảo hoặc Từ chối. HĐ đã trình duyệt KHÔNG xóa được."), h1("10. Tìm + Filter"), bullet("Search box: tìm theo Mã HĐ / Tên / NCC"), bullet("Filter Phase: dropdown 9 phase + Từ chối"), bullet("Filter NCC / Dự án: dropdown"), bullet("Filter SLA: chỉ hiện HĐ sắp đến hạn / quá hạn"), tip("URL có thể bookmark, vd /my-contracts?type=5&phase=2 = HĐ Mua bán phase Đang soạn thảo."), ]; const doc = buildDoc( "User Manual - 02 Hợp đồng", "SOLUTION_ERP - User Manual - 02 Hợp đồng", children, ); const outPath = path.join(__dirname, 'user', '02-Hop-dong.docx'); Packer.toBuffer(doc).then(buf => { fs.writeFileSync(outPath, buf); console.log('✅ Generated:', outPath); console.log(' Size:', (buf.length / 1024).toFixed(1) + ' KB'); });