Tích hợp Kế toán Bảng lương
Tự động hóa bút toán kế toán từ phiếu lương và thanh toán
Module Payroll Accounting là lớp tích hợp giữa Payroll và Accounting, giúp chuyển dữ liệu lương thành bút toán kế toán tự động.
Module bổ sung Salary Journal trên cấu trúc lương, tài khoản hạch toán cho từng Salary Rule, và hỗ trợ thanh toán lương trực tiếp từ phiếu lương.
Chức năng chính
Điểm chính
• Tự động tạo bút toán kế toán (Journal Entry) từ payslip/pay run khi xác nhận
• Cấu hình Salary Journal trên cấu trúc lương để xác định sổ nhật ký
• Thiết lập tài khoản Nợ/Có cho từng Salary Rule
• Thanh toán lương trực tiếp từ payslip bằng Payment Register
• Hỗ trợ gộp dòng hạch toán theo công ty (Batch Payroll Move Lines)
• Liên kết ngược giữa payslip/pay run và journal entry
• Phân bổ phân tích (Analytic Distribution) cho chi phí lương
• Hỗ trợ thẻ thuế (Tax Grids) trên dòng bút toán
Thuật ngữ kế toán
| Fields | Trường dữ liệu | Description |
|---|---|---|
| Salary Journal | Sổ nhật ký lương | Sổ kế toán dùng để ghi nhận các bút toán lương |
| Accounting Entry | Bút toán kế toán | Chứng từ kế toán được tạo từ payslip |
| Move State | Trạng thái bút toán | Draft (nháp), Posted (đã ghi sổ), hoặc Cancel (đã hủy) |
| Debit Account | Tài khoản ghi Nợ | Tài khoản bên Nợ trong bút toán |
| Credit Account | Tài khoản ghi Có | Tài khoản bên Có trong bút toán |
| Reconciliation | Đối soát | Quá trình khớp các dòng kế toán với thanh toán |
| Payment Register | Đăng ký thanh toán | Wizard để tạo chứng từ thanh toán |
| Analytic Distribution | Phân bổ phân tích | Phân bổ chi phí theo chiều phân tích (phòng ban, dự án) |
| Tax Grids | Thẻ thuế | Nhãn thuế gắn vào dòng bút toán |
| Batch Payroll Move Lines | Gộp dòng bút toán lương | Gộp nhiều payslip thành ít dòng kế toán hơn |
Trạng thái bút toán
Các trạng thái của Journal Entry
| Trạng thái | Ý nghĩa | Hành động |
|---|---|---|
| Draft | Bút toán nháp, chưa ghi sổ | Có thể chỉnh sửa, Post để ghi sổ |
| Posted | Đã ghi sổ, không thể sửa | Có thể thanh toán, Reset to Draft nếu cần sửa |
| Cancel | Đã hủy, không còn hiệu lực | Không thể sử dụng |
Cấu hình Salary Journal trên Structure
Trước khi chạy lương, cần cấu hình Salary Journal trên cấu trúc lương để xác định sổ nhật ký sẽ dùng cho bút toán.
Các bước thực hiện
1. Vào Payroll → Configuration → Salary → Structures
2. Mở hoặc tạo Structure cần cấu hình
3. Điền trường Salary Journal (journal_id) - đây là trường bắt buộc
4. Đảm bảo currency của journal trùng với currency công ty
5. Lưu cấu hình
Cấu hình tài khoản trên Salary Rule
Mỗi Salary Rule cần có tài khoản Nợ/Có để hệ thống biết cách hạch toán khoản lương đó.
Các bước thực hiện
1. Vào Payroll → Configuration → Salary → Rules
2. Mở rule cần cấu hình
3. Vào tab Accounting
4. Điền Debit Account (account_debit): tài khoản ghi Nợ
5. Điền Credit Account (account_credit): tài khoản ghi Có
6. Tùy chọn: cấu hình Analytic Distribution, Tax Grids, Split on names, Set employee on account line
7. Lưu cấu hình
Các tùy chọn nâng cao trên Salary Rule
Điểm chính
• Analytic Distribution: Phân bổ chi phí theo chiều phân tích (phòng ban, dự án, chi nhánh)
• Debit Tax Grids / Credit Tax Grids: Gắn thẻ thuế vào dòng Nợ/Có
• Split on names: Tách dòng bút toán theo tên nhân viên
• Set employee on account line: Gắn thông tin nhân viên vào dòng bút toán
• Excluded from Net: Loại trừ khỏi tính Net (không tính vào lương thực nhận)
Quy trình tạo bút toán từ Payslip
Khi xác nhận payslip, hệ thống tự động tạo bút toán kế toán dựa trên cấu hình Salary Rules.
Các bước thực hiện
1. Tạo và tính payslip bình thường trong Payroll
2. Nhấn Create Draft Entry (thay vì Confirm thông thường)
3. Hệ thống chuyển state payslip và gọi _action_create_account_move()
4. Dòng bút toán được tạo từ line_ids của payslip qua _prepare_slip_lines()
5. Nếu lệch Nợ/Có, hệ thống thêm dòng Adjustment Entry bằng tài khoản mặc định của journal
6. move_id được gắn lại vào payslip (và pay run nếu bật batch)
7. Mở Journal Entry từ smart button trên payslip để xem chi tiết
Thanh toán lương từ Journal Entry
Sau khi bút toán đã Posted, có thể thanh toán lương trực tiếp từ payslip.
Điểm chính
• Điều kiện: payslip chưa ở state paid, bút toán đã posted, tài khoản credit của rule NET phải reconcile=True
• Tài khoản ngân hàng nhân viên phải trusted (allow_out_payment)
• Nhấn nút Pay trên payslip để mở Payment Register wizard
• Wizard có context hr_payroll_payment_register để xử lý đặc thù payroll
• Sau khi reconcile đủ residual, payslip tự cập nhật state = paid và paid_date
Batch Payroll Move Lines
Tùy chọn này cho phép gộp nhiều payslip cùng journal/kỳ thành ít dòng bút toán hơn, giúp giảm số lượng dòng kế toán.
Điểm chính
• Bật: Gộp nhiều payslip thành ít dòng bút toán, ẩn bớt chi tiết cá nhân
• Tắt: Tạo chi tiết theo từng payslip/rule, dễ truy vết từng nhân viên
• Trade-off: Batch giúp giảm số dòng kế toán nhưng hạn chế một số thao tác thanh toán đơn lẻ
Các bước thực hiện
1. Vào Settings → Payroll
2. Bật tùy chọn Batch Account Move Lines (batch_payroll_move_lines)
3. Lưu cấu hình
Phân bổ phân tích trên nhân viên
Có thể cấu hình Analytic Distribution mặc định trên nhân viên để tự động phân bổ chi phí lương.
Điểm chính
• Mở form Employee trong Payroll
• Điền trường Analytic Distribution
• Phân bổ này sẽ được dùng làm fallback khi rule không có analytic riêng
• Ví dụ: 100% cho phòng ban IT, hoặc 50% dự án A + 50% dự án B
Liên kết ngược từ Journal Entry
Từ bút toán kế toán, có thể mở lại payslip liên quan để xem chi tiết.
Điểm chính
• Mở Journal Entry trong Accounting
• Nhấn stat button Payslip để mở payslip liên quan
• Giúp truy vết từ kế toán ngược lại nguồn gốc lương
Xử lý khi Cancel Payslip
Khi hủy payslip đã có bút toán, hệ thống tự động xử lý bút toán liên quan.
Điểm chính
• Module gọi _unlink_or_reverse() trên move_id trước khi tiếp luồng gốc
• Bút toán sẽ được reverse (đảo ngược) hoặc unlink (xóa) tùy trạng thái
• Đảm bảo tính nhất quán giữa Payroll và Accounting
Quyền hạn và kiểm soát
Quyền hiển thị các điểm kế toán chính dùng group kế toán.
Điểm chính
• account.group_account_readonly: Xem smart button Journal Entry
• account.group_account_invoice: Thực hiện nút Pay
• Các hành động payroll vẫn tuân theo quyền Payroll (group_hr_payroll_user, group_hr_payroll_manager)
Lưu ý quan trọng
Điểm chính
• action_payslip_done() tạo bút toán ngay sau khi xác nhận payslip
• Nếu structure thiếu journal_id, payslip sẽ có warning
• Khi batch_payroll_move_lines=True, employee_move_line bị ẩn trên UI rule
• Trên rule NET, not_computed_in_net ảnh hưởng cách tính dòng NET khi build bút toán
• Dòng thuế (debit_tag_ids/credit_tag_ids) được đẩy sang move lines theo account debit/credit
Mẹo vận hành thực tế
Điểm chính
• Chuẩn hóa Salary Rules kế toán trước khi chạy lương kỳ đầu tiên
• Luôn kiểm tra trạng thái Journal Entry (Draft/Posted) từ payslip/pay run trước khi thanh toán
• Nếu có sai lệch định khoản, debug theo thứ tự: Rule account → Structure journal → NET rule reconcile → Bank trust
• Chỉ bật Batch Payroll Move Lines khi doanh nghiệp chấp nhận mức chi tiết kế toán thấp hơn
• Dùng analytic_distribution nhất quán giữa rule và employee để báo cáo chi phí đúng chiều phân tích
• Test với một payslip trước khi chạy hàng loạt để đảm bảo cấu hình đúng