Wizard "Sinh lịch hoá đơn dự kiến"
Wizard “Sinh lịch hoá đơn dự kiến”
Phần tiêu đề “Wizard “Sinh lịch hoá đơn dự kiến””Wizard này generate lịch thanh toán dự kiến từ SO / HĐ để Sales rep + KH cùng xem trước dòng tiền trước khi ký. Không tạo Invoice thực — chỉ preview.
Khi nào dùng?
Phần tiêu đề “Khi nào dùng?”- Sales rep tạo báo giá xong → KH hỏi “tổng cộng tôi trả bao nhiêu/tháng trong 30 năm?”
- Manager duyệt HĐ lớn → cần xem cash flow forecast
- FC forecast doanh thu 12 tháng tới cho báo cáo
Vị trí wizard
Phần tiêu đề “Vị trí wizard”Bước 1. Mở SO / HĐ có nhiều billing items
Phần tiêu đề “Bước 1. Mở SO / HĐ có nhiều billing items”Vd: HĐ thuê 30 năm với 3 billing items:
- Line 1: Tiền thuê 50,000 VND/m²/year × 5000 m² (yearly)
- Line 2: Phí QL 2,000 VND/m²/month × 5000 m² (monthly)
- Line 3: Phí kết nối điện 100,000,000 VND (one-time, milestone “Bàn giao”)
Bước 2. Tab ”📊 CPQ — Lịch thanh toán”
Phần tiêu đề “Bước 2. Tab ”📊 CPQ — Lịch thanh toán””Trên form SO / HĐ, có tab ”📊 CPQ — Lịch thanh toán” — tab này auto-refresh từ billing_items.
Nếu tab đã có sẵn data → skip wizard. Wizard chỉ dùng để regenerate hoặc preview trước khi save.
Bước 3. Click nút ”🧮 Sinh lịch hoá đơn dự kiến”
Phần tiêu đề “Bước 3. Click nút ”🧮 Sinh lịch hoá đơn dự kiến””Trên tab, header có nút này. Click → wizard modal mở.
Wizard flow
Phần tiêu đề “Wizard flow”Bước 4. Điền tham số wizard
Phần tiêu đề “Bước 4. Điền tham số wizard”| Field | Default | Ý nghĩa |
|---|---|---|
| Ngày bắt đầu | Ngày ký HĐ | Recurring bắt đầu từ ngày này |
| Số tháng preview | 24 | Sinh lịch cho N tháng tới (tối đa 360 = 30 năm) |
| Include one-time | ✅ | Include billing items one-time (default có) |
| Group by month | ✅ | Nhóm dòng tiền theo tháng thay vì per-item |
Bước 5. Click “Generate”
Phần tiêu đề “Bước 5. Click “Generate””Wizard chạy logic:
- Foreach billing_item:
- Cadence =
monthly→ sinh 1 dòng mỗi tháng - Cadence =
quarterly→ sinh 1 dòng mỗi 3 tháng - Cadence =
yearly→ sinh 1 dòng mỗi 12 tháng - Cadence =
one-time→ sinh 1 dòng tại ngày milestone
- Cadence =
- Normalize amount:
- Yearly amount / 12 → monthly equivalent
- Quarterly / 3 → monthly equivalent
- Escalation apply:
- Nếu billing_item có
escalation_pct→ mỗi N năm tăng %
- Nếu billing_item có
- Aggregate: nếu Group by month → sum tất cả items cùng tháng
Bước 6. Xem output table
Phần tiêu đề “Bước 6. Xem output table”Wizard show table:
| # | Ngày dự kiến | Mô tả | Recurring | One-time | Tổng | VAT | Có VAT |
|---|---|---|---|---|---|---|---|
| 1 | 1/8/2026 | Tháng 8/2026 | 21,666,667 | 100,000,000 | 121,666,667 | 12,166,667 | 133,833,334 |
| 2 | 1/9/2026 | Tháng 9/2026 | 21,666,667 | 0 | 21,666,667 | 2,166,667 | 23,833,334 |
| … | … | … | … | … | … | … | … |
| 25 | 1/8/2028 | Tháng 8/2028 | 22,750,000 | 0 | 22,750,000 | 2,275,000 | 25,025,000 |
Footer show:
- Tổng doanh thu 24 tháng: 550,833,333 VND
- Tổng VAT: 55,083,333 VND
- Grand total có VAT: 605,916,666 VND
Cadence normalization — công thức
Phần tiêu đề “Cadence normalization — công thức”Parkone chuẩn hoá mọi cadence về monthly-equivalent để so sánh + tổng hợp:
Monthly = Amount cadence-native / cadence_months
cadence_months: monthly = 1 quarterly = 3 yearly = 12 one_time = duration_months (spread evenly)- Line “Tiền thuê 50,000,000 VND/year” → monthly = 4,166,667 VND
- Line “Phí QL 2,500,000 VND/month” → monthly = 2,500,000 VND
- Line “Phí điện 100,000,000 VND one-time (spread 12 tháng)” → monthly = 8,333,333 VND
Tổng monthly = 15,000,000 VND. Yearly = 180,000,000 VND. 30 năm = 5,400,000,000 VND.
Escalation apply
Phần tiêu đề “Escalation apply”Nếu Lease Policy có escalation_pct = 5%, escalation_years = 5 (mỗi 5 năm tăng 5%):
Năm 1-5: giá gốc 50,000 VND/m²/yearNăm 6-10: 52,500 VND (+5%)Năm 11-15: 55,125 VND (+5% compound)Năm 16-20: 57,881Năm 21-25: 60,775Năm 26-30: 63,814Wizard tự apply, không cần Đại nhập.
Preview trong tab CPQ
Phần tiêu đề “Preview trong tab CPQ”Sau khi click Generate, wizard replace table trong tab ”📊 CPQ — Lịch thanh toán” của SO / HĐ. Đại có thể:
- Refresh nhiều lần (đổi Ngày bắt đầu / Số tháng preview)
- Export Excel (icon ⬇️)
- Print PDF (nút “In lịch thanh toán”)
Edge cases
Phần tiêu đề “Edge cases”KH trả trước 1 lần cho 12 tháng
Phần tiêu đề “KH trả trước 1 lần cho 12 tháng”- Đổi cadence billing_item từ
monthly→yearly - Regenerate → wizard show 1 dòng lớn tại tháng 1 thay vì 12 dòng nhỏ
Escalation apply mid-year
Phần tiêu đề “Escalation apply mid-year”Wizard rounding về đầu năm. Nếu HĐ ký giữa năm, escalation tính từ năm đầu tiên full.
One-time chưa có milestone date
Phần tiêu đề “One-time chưa có milestone date”Nếu billing_item one-time không có milestone_id gán → wizard treat như “spread evenly” over duration.
Muốn cụ thể: gán milestone → wizard sẽ show tại đúng date của milestone.
Xuất PDF lịch thanh toán
Phần tiêu đề “Xuất PDF lịch thanh toán”Trên tab CPQ → click “In lịch thanh toán” → PDF render qua Doc Engine.
Template PDF default có branding công ty (logo, header, footer) — customize được. Xem Doc Engine → Tạo template.
Wizard không show one-time
Phần tiêu đề “Wizard không show one-time”- Verify checkbox “Include one-time” tick khi Generate
- Verify billing_item one-time có
milestone_idgán + milestone date < end date
Sao tổng lịch khác tổng HĐ header?
Phần tiêu đề “Sao tổng lịch khác tổng HĐ header?”Header HĐ show total_amount = sum(monthly-equivalent × duration_months). Wizard show từng dòng cụ thể theo cadence gốc + escalation.
Có thể chênh do rounding (nhỏ), hoặc escalation apply (lớn hơn total header khi apply nhiều năm).
Verify: click “So sánh” (nếu có) hoặc export cả 2 xem diff.
Lịch quá dài (30 năm = 360 dòng) — hiển thị lag
Phần tiêu đề “Lịch quá dài (30 năm = 360 dòng) — hiển thị lag”Set “Số tháng preview” = 24 hoặc 60. Không preview full 360 trong UI.
Export Excel để xem full nếu cần.