Module · WS đào tạo · 07/7/2026

finance — Kế toán & hóa đơn điện tử v1.5

Xuất hóa đơn điện tử (tích hợp nhà cung cấp HĐĐT), sổ thu–chi, doanh thu theo khóa/hạng và đối soát doanh thu học phí ↔ hóa đơn. Phần gắn hồ sơ học viên vẫn ở tuition.

⚠️ Chưa có trong code — scaffold ở v1.5.
1

Feature / BO / Action

FeatureBO chínhAction
invoiceHóa đơn điện tửviewexportissuevoid
ledgerSổ thu–chi, doanh thu theo khóa/hạngviewreportexport
reconcileĐối soát doanh thuviewreconcile
2

Dữ liệu chính

BOTrường chính
Hóa đơnSố HĐ (từ nhà cung cấp HĐĐT) · phiếu thu gốc (ref tuition) · người mua · tiền · thuế · trạng thái (phát hành/hủy/thay thế) · file XML/PDF
Sổ thu–chiKhoản thu/chi · nguồn (học phí/thuê xe/khác) · khóa/hạng · kỳ
Đối soátKỳ × Σ phiếu thu (tuition) ↔ Σ hóa đơn đã phát hành ↔ giao dịch cổng (payment v2) — chênh lệch + lý do
3

Quy tắc & liên kết

Quy tắc nghiệp vụ

  • Hóa đơn phát hành từ phiếu thu tuition; số HĐ ghi ngược về công nợ đợt
  • Hủy/thay thế hóa đơn theo đúng quy định HĐĐT — giữ vết bản gốc
  • Khóa sổ kỳ: sau khóa sổ không sửa chứng từ trong kỳ (chỉ bút toán điều chỉnh)
  • Tích hợp nhà cung cấp HĐĐT qua adapter (đổi nhà cung cấp không sửa lõi)

Liên kết chéo

  • tuition — phiếu thu → hóa đơn
  • payment (v2) — giao dịch cổng vào đối soát
  • bi (v3) — dữ liệu doanh thu–chi phí

⚠ Câu hỏi mở

  • Vĩnh An dùng nhà cung cấp HĐĐT nào (Viettel/VNPT/Misa…)?
  • Có cần sổ kế toán đầy đủ hay chỉ doanh thu (kế toán thuế làm ngoài)?
Quyền

Ma trận phân quyền — ốp vào manifest & seed role

Khối permissions[] dán vào manifest.json; bảng dưới là gán quyền theo vai trò (seed rt_role). Permission key đầy đủ: finance.main.<feature>.<action>.

▸ permissions[] — manifest.json

[ { "group": "main", "feature": "invoice", "label": "Hóa đơn điện tử", "actions": [ "view", "export", "issue", "void" ] }, { "group": "main", "feature": "ledger", "label": "Sổ thu–chi", "actions": [ "view", "report", "export" ] }, { "group": "main", "feature": "reconcile", "label": "Đối soát doanh thu", "actions": [ "view", "reconcile" ] } ]

⚠️ Action đặc thù (issue, reconcile, void) cần bổ sung vào validator manifest — xem plan data-scope P1.

▸ Ma trận vai trò × feature

FeatureQTHTGIAM_DOCKE_TOAN
invoiceRRW
ledgerRRR
reconcileRRW

R xem · W tạo/sửa · A duyệt · không có quyền · ¹ dữ liệu phân công · ² của chính mình · ³ theo trạng thái hồ sơ. Vai trò không liệt kê = không có quyền.

Đặc thù: invoice +issue,void (hủy HĐĐT theo quy định) · reconcile +reconcile (KE_TOAN)