Module Bảng lương (Payroll)
Tính lương tự động, quản lý quy tắc và xử lý hàng loạt trong Odoo 19
Module Payroll là phân hệ xử lý bảng lương thực tế trong Odoo 19, tập trung vào tạo và tính phiếu lương theo kỳ, chạy lương theo lô, cấu hình cấu trúc lương và xây dựng quy tắc lương bằng điều kiện và công thức.
Module tích hợp chặt chẽ với Work Entries để tính toán ngày công, hỗ trợ tham số quy tắc có lịch sử hiệu lực theo thời gian, và cung cấp khả năng tự động khấu trừ qua Salary Adjustments.
Tính năng chính
Điểm chính
• Tạo và tính phiếu lương (Payslip) tự động theo kỳ với công thức linh hoạt
• Chạy lương theo lô (Pay Runs) để xử lý hàng loạt nhiều nhân viên
• Cấu hình cấu trúc lương (Payroll Structure) và loại cấu trúc (Structure Type)
• Xây dựng quy tắc lương (Salary Rules) bằng điều kiện và công thức Python
• Quản lý tham số quy tắc (Rule Parameters) có lịch sử hiệu lực theo thời gian
• Tự động khấu trừ định kỳ qua Salary Adjustments
• Phân tích dữ liệu Payroll và Work Entries qua báo cáo pivot/list
• Dashboard cảnh báo để phát hiện bất thường trước khi chốt lương
Thuật ngữ quan trọng
| Fields | Trường dữ liệu | Description |
|---|---|---|
| Payslip | Phiếu lương | Chứng từ lương của nhân viên cho một kỳ cụ thể |
| Pay Run | Lô chạy lương | Nhóm nhiều phiếu lương cùng kỳ để xử lý hàng loạt |
| Salary Structure | Cấu trúc lương | Bộ quy tắc lương áp dụng cho nhân viên |
| Salary Rule | Quy tắc lương | Công thức tính các khoản lương (lương cơ bản, phụ cấp, khấu trừ) |
| Rule Parameter | Tham số quy tắc | Giá trị tham số có lịch sử thay đổi theo thời gian |
| Worked Days | Ngày công | Số ngày làm việc thực tế trong kỳ lương |
| Salary Inputs | Đầu vào lương | Dữ liệu nhập thêm (thưởng, phạt, tạm ứng) |
| Salary Adjustment | Điều chỉnh lương | Khoản trừ hoặc cộng định kỳ tự động |
| Gross Salary | Lương gộp | Tổng lương trước khi khấu trừ |
| Net Salary | Lương thực nhận | Lương sau khi trừ các khoản khấu trừ |
Trạng thái phiếu lương
Các trạng thái của Payslip
| Trạng thái | Ý nghĩa | Hành động có thể thực hiện |
|---|---|---|
| Draft | Phiếu lương nháp, chưa tính toán | Compute Sheet để tính lương |
| Done / Validated | Đã tính và xác nhận, chờ thanh toán | Mark as Paid hoặc Set to Draft |
| Paid | Đã thanh toán cho nhân viên | Revert to Done nếu cần điều chỉnh |
| Cancelled | Đã hủy, không còn hiệu lực | Set to Draft để tái sử dụng |
Cấu trúc menu chính
Module Payroll tổ chức menu theo các nhóm chức năng chính: Dashboard, Employees, Work Entries, Payslips, Reporting và Configuration.
Điểm chính
• Dashboard: Tổng quan và cảnh báo hệ thống
• Employees: Quản lý nhân viên và Salary Adjustments
• Work Entries: Dữ liệu công làm nền tảng cho tính lương
• Payslips: Phiếu lương và Pay Runs (lô chạy lương)
• Reporting: Work Entries Analysis, Headcount, Payslip Lines, Work Days Lines, Other Inputs
• Configuration: Settings, Salary (Rules, Parameters, Categories, Structures, Structure Types, Other Input Types), Dashboard Warnings
Cấu hình cấu trúc lương
Trước khi chạy lương, cần cấu hình Structure Types và Structures để xác định chu kỳ trả lương, lịch làm việc và bộ quy tắc áp dụng.
Các bước thực hiện
1. Vào Payroll → Configuration → Salary → Structure Types
2. Thiết lập chu kỳ trả lương mặc định (default_schedule_pay): hàng tháng, hai tuần, hàng tuần
3. Chọn lịch làm việc mặc định (default_resource_calendar_id)
4. Xác định loại work entry mặc định (default_work_entry_type_id)
5. Vào Payroll → Configuration → Salary → Structures
6. Tạo hoặc chỉnh sửa Structure, gắn các Salary Rules cần áp dụng
7. Bật/tắt sử dụng worked day lines theo nhu cầu
Quy tắc lương và tham số
Salary Rules là trái tim của hệ thống tính lương, cho phép định nghĩa điều kiện áp dụng và cách tính cho từng khoản lương.
Điểm chính
• Khai báo điều kiện bằng condition_select: domain, input, python hoặc always
• Khai báo cách tính bằng amount_select: fixed amount, percentage, input, hoặc python code
• Sử dụng Python code trong condition_python và amount_python_compute để tính toán phức tạp
• Các biến có sẵn: payslip, employee, version, result_rules, categories, worked_days, inputs
• Rule Parameters cho phép quản lý tham số theo mã (code) với lịch sử thay đổi theo thời gian
• Tab History trong Rule Parameters lưu giá trị theo date_from để dễ dàng điều chỉnh
Quy trình chạy bảng lương
Quy trình chuẩn để chạy lương hàng tháng hoặc theo kỳ trong Odoo Payroll.
Các bước thực hiện
1. Chuẩn hóa dữ liệu: Kiểm tra Work Entries, Employee Record (version_id) và Salary Adjustments
2. Tạo Pay Run: Vào Payslips → Pay Runs, tạo mới và chọn kỳ (date_start, date_end), structure, schedule
3. Generate Payslips: Nhấn nút Generate Payslips để tạo phiếu lương cho tất cả nhân viên đủ điều kiện
4. Tính lương: Nhấn Compute trong Pay Run để tính tất cả payslip, hoặc Compute Sheet trên từng payslip riêng lẻ
5. Kiểm tra: Xem lại các dòng lương, kiểm tra issues/warning_count trên từng payslip
6. Chốt lương: Nhấn Confirm (action_validate) để chuyển lô sang Done
7. Thanh toán: Nhấn Mark as Paid (action_paid) khi đã thanh toán cho nhân viên
Điều chỉnh lương (Salary Adjustments)
Salary Adjustments cho phép khai báo các khoản khấu trừ hoặc điều chỉnh định kỳ tự động, như khoản vay, tạm ứng, hoặc các khoản phạt.
Điểm chính
• Truy cập tại Employees → Salary Adjustments
• Thiết lập theo nhân viên, loại input (Other Input Type), số tiền hàng kỳ (monthly_amount)
• Xác định tổng số tiền (total_amount) và thời gian hiệu lực (date_start, date_end)
• Trạng thái: open (đang chạy) hoặc close (đã hoàn thành)
• Thao tác: Mark as Completed, Running, Split (khi nhiều nhân viên)
• Hệ thống tự động thêm vào Salary Inputs của payslip trong kỳ hiệu lực
Salary Inputs trên phiếu lương
Ngoài các khoản tính tự động từ Salary Rules, có thể nhập thêm các khoản phát sinh cho kỳ hiện tại.
Điểm chính
• Mở payslip, vào tab Salary Inputs
• Nhấn Add Inputs (action_configure_payslip_inputs) để thêm khoản mới
• Chọn loại input (Other Input Type) và nhập số tiền
• Các input này sẽ được sử dụng trong công thức salary rule để tính ra kết quả cuối
• Thích hợp cho thưởng đột xuất, phạt, hoặc các khoản không định kỳ
Dashboard và cảnh báo
Dashboard Payroll cung cấp tổng quan và cảnh báo về các vấn đề cần xử lý trước khi chốt lương.
Điểm chính
• Truy cập Dashboard qua menu Payroll → Dashboard
• Cấu hình cảnh báo tại Configuration → Dashboard → Warnings
• Mỗi warning có evaluation_code (Python) và có thể bật/tắt theo quốc gia
• Trên payslip có hệ thống issues, warning_count, error_count
• Kiểm tra và xử lý cảnh báo trước khi Confirm để tránh sai sót
Báo cáo và phân tích
Module cung cấp nhiều báo cáo phân tích để theo dõi chi phí lương, ngày công và các khoản đầu vào.
Điểm chính
• Work Entries Analysis: Phân tích ngày công theo nhân viên, loại work entry, thời gian
• Headcount: Thống kê số lượng nhân viên
• Payslip Lines: Phân tích chi tiết các dòng lương theo rule, category
• Payslip Work Days Lines: Phân tích ngày công trên phiếu lương
• Payslip Other Inputs: Phân tích các khoản đầu vào khác
• Hỗ trợ view Pivot, Graph, List để phân tích đa chiều
In chứng từ và xuất báo cáo
Hệ thống hỗ trợ in phiếu lương và xuất báo cáo thanh toán để phục vụ quy trình nghiệp vụ.
Điểm chính
• Payslip PDF: In phiếu lương chi tiết (action_report_payslip)
• Payslip Light: In phiếu lương rút gọn (action_report_light_payslip)
• Contribution Registers: Báo cáo đóng góp (action_report_register)
• Payment Report: Tạo file thanh toán hàng loạt từ Pay Run hoặc Payslip
• Hỗ trợ xuất PDF và các định dạng khác tùy cấu hình
Quyền hạn và bảo mật
Record rules đảm bảo phân quyền theo công ty (multi-company) và vai trò người dùng.
Các nhóm quyền chính
| Group | Tên hiển thị | Phạm vi quyền |
|---|---|---|
| group_hr_payroll_user | Officer: Manage all contracts | Quản lý hợp đồng, work entries và tạo payslips |
| group_hr_payroll_manager | Administrator | Toàn quyền phân hệ Payroll, cấu hình rules và structures |
| group_payslip_display | Display payslip PDF | Quyền hiển thị và in PDF phiếu lương |
Mẹo sử dụng thực tế
Điểm chính
• Chốt dữ liệu Work Entries trước khi bấm Compute để giảm sai lệch bảng lương
• Quản lý Rule Parameters theo lịch sử hiệu lực thay vì sửa trực tiếp hard-code trong nhiều rules
• Chuẩn hóa mã rule (code) và category từ đầu để dễ kiểm tra báo cáo/pivot
• Dùng Pay Run cho xử lý hàng loạt; chỉ dùng payslip off-cycle cho ngoại lệ
• Theo dõi issues/warning_count trên payslip trước khi Confirm
• Với Salary Adjustments nhiều nhân viên, dùng Split để dễ kiểm soát trạng thái từng người
• Backup dữ liệu trước khi chạy lương kỳ đầu tiên hoặc khi thay đổi cấu trúc lương lớn