⚠️ HIGH |
Category: Odoo Tips |
ID: T07 |
Owner: CEO
T07 — Odoo 19 Salary Rules: sequence + category quyết định tính toán
Bài học
Payslip tính lương theo sequence (thứ tự) và category (nhóm). Sai sequence = sai kết quả.
Sequence chuẩn VN 2026
seq 1 BASIC = wage (category: BASIC)
seq 2-4 OT150/200/300 = OT theo giờ (category: ALW → gộp vào GROSS)
seq 5-9 ALW_LUNCH, ALW_OTHER, BONUS_* (category: ALW)
seq 10 GROSS = categories['BASIC'] + categories['ALW']
seq 20 BHXH_NV = -min(BASIC, 46.8M) × 8% (category: DED)
seq 21 BHYT_NV = -min(BASIC, 46.8M) × 1.5%
seq 22 BHTN_NV = -min(BASIC, 46.8M) × 1%
seq 30 TNCN = -biểu lũy tiến(TNTT) (category: DED)
seq 50 NET = GROSS + categories['DED'] (DED là số âm)
Rules quan trọng
Category ALW tự động vào GROSS
Rules có categoryALW → Odoo tự cộng vào categories['ALW']. GROSS dùng categories['BASIC'] + categories['ALW'] → bao gồm tất cả ALW.
BHXH tính trên BASIC (không phải GROSS)
BHXH_NV = -min(contract.wage, 46800000) * 0.08
TNCN 5 bậc lũy tiến (2026)
TNCT = GROSS - BHXH_NV - BHYT_NV - BHTN_NV - ALW_LUNCH - OT_exempt
TNTT = TNCT - 15500000 - (children * 6200000)
OT miễn 100% (Luật 109/2025)
Ăn ca miễn toàn bộ (bỏ trần 730K)
CTV: TNCN 10% cố định (không lũy tiến)
if "CTV" in contract_type:
TNCN = -GROSS * 0.10
Gotchas
Áp dụng khi
📚 Published from Company Knowledge Base — T07
Last updated: 2026-03-11
Review by: 2026-06-09