// User Manual 05 — Budget Ngân sách dự án
// 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 Ngân sách Dự án",
    "Phần 05: Budget - Tạo Ngân sách + Hạng mục + Liên kết HĐ/PE",
  ),

  h1("1. Ngân sách dự án là gì?"),
  p("Module Ngân sách quản lý dự toán chi phí cho từng dự án. Mỗi dự án có thể có 1 hoặc nhiều ngân sách (theo năm hoặc theo hạng mục lớn)."),
  bullet("HĐ + Phiếu PE có thể liên kết Ngân sách để theo dõi \"đã chi vs ngân sách\""),
  bullet("Workflow đơn giản 3 bước: Đang soạn thảo → Chờ CCM → Chờ CEO → Đã duyệt"),

  h1("2. Tạo ngân sách mới"),
  num("Sidebar → \"Ngân sách\" → \"Tạo mới\""),
  num("Hoặc URL /budgets/new"),
  num("Điền Header: Tên ngân sách, Năm, Dự án, Phòng ban, Mô tả"),
  num("Click \"Lưu nháp\""),
  note("Mã ngân sách format NS-{Năm tháng}-{số thứ tự} — tự gen."),

  h1("3. Thêm hạng mục ngân sách"),
  num("Mở ngân sách → section \"Hạng mục\""),
  num("Click \"Thêm hạng mục\""),
  num("Nhập: Mã nhóm / Tên nhóm / Mã hạng mục / Nội dung / Đơ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("Tổng ngân sách tự tổng hợp ở Header"),
  num("Click \"Lưu\""),
  tip("Mã nhóm + Mã hạng mục dùng để match với chi tiết HĐ/PE khi đối chiếu \"đã chi vs ngân sách\"."),

  h1("4. Sửa hạng mục"),
  num("Mở ngân sách ở phase Đang soạn thảo"),
  num("Click vào ô cần sửa → inline edit"),
  num("Click ngoài để lưu (auto-save)"),
  warn("Sau khi trình duyệt, ngân sách bị khóa edit. Phải reject về Đang soạn thảo mới sửa được."),

  h1("5. Trình duyệt ngân sách"),
  num("Mở ngân sách ở phase Đang soạn thảo"),
  num("Panel Quy trình bên phải → click \"Trình → Chờ CCM\""),
  num("CCM duyệt → \"Chờ CEO\""),
  num("CEO duyệt → \"Đã duyệt\""),
  note("Workflow Budget cũng có duyệt 2-cấp phòng ban (NV Review → TPB Confirm) — xem Phần 03."),

  h1("6. Liên kết HĐ / Phiếu PE với ngân sách"),
  p("Khi tạo HĐ hoặc Phiếu PE, chọn ngân sách trong ô \"Liên kết Ngân sách\":"),
  num("Tạo HĐ mới → form Header có dropdown \"Ngân sách\""),
  num("Filter chỉ hiện ngân sách: Phase = Đã duyệt + cùng Dự án"),
  num("Chọn ngân sách → HĐ liên kết với ngân sách đó"),

  h1("7. Cột \"So với ngân sách\" trong Phiếu PE"),
  p("Khi PE có liên kết ngân sách, bảng Hạng mục có thêm cột \"NS link · Δ\":"),
  bullet("Match dòng PE với ngân sách qua key \"Mã nhóm | Mã hạng mục\""),
  bullet("Hiển thị Đơn giá ngân sách + Δ chênh lệch"),
  bullet("Δ < 0 (xanh) — báo giá NCC dưới ngân sách (tốt)"),
  bullet("Δ > 0 (đỏ) — báo giá vượt ngân sách (cảnh báo)"),
  bullet("Δ = 0 (xám) — khớp ngân sách"),

  h1("8. Xem changelog ngân sách"),
  num("Mở ngân sách → Panel phải → section \"Lịch sử thay đổi\""),
  p("Ghi nhận: ai sửa, sửa gì (Header / hạng mục / phase transition), thời gian."),

  h1("9. Xóa ngân sách nháp"),
  num("Mở ngân sách ở phase Đang soạn thảo / Từ chối"),
  num("Click icon thùng rác ở Header"),
  num("Xác nhận \"Xóa\""),
  warn("Chỉ xóa được ngân sách ở phase Đang soạn thảo / Từ chối. Đã duyệt KHÔNG xóa được."),
];

const doc = buildDoc(
  "User Manual - 05 Ngân sách",
  "SOLUTION_ERP - User Manual - 05 Budget Ngân sách",
  children,
);

const outPath = path.join(__dirname, 'user', '05-Budget-Ngan-sach.docx');
Packer.toBuffer(doc).then(buf => {
  fs.writeFileSync(outPath, buf);
  console.log('✅ Generated:', outPath);
  console.log('   Size:', (buf.length / 1024).toFixed(1) + ' KB');
});
