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.

Accounting Integration
Journal Entries
Reconciliation
Payment Register
Batch Processing

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

FieldsTrường dữ liệuDescription
Salary JournalSổ nhật ký lươngSổ kế toán dùng để ghi nhận các bút toán lương
Accounting EntryBút toán kế toánChứng từ kế toán được tạo từ payslip
Move StateTrạng thái bút toánDraft (nháp), Posted (đã ghi sổ), hoặc Cancel (đã hủy)
Debit AccountTài khoản ghi NợTài khoản bên Nợ trong bút toán
Credit AccountTài khoản ghi CóTài khoản bên Có trong bút toán
ReconciliationĐối soátQuá trình khớp các dòng kế toán với thanh toán
Payment RegisterĐăng ký thanh toánWizard để tạo chứng từ thanh toán
Analytic DistributionPhân bổ phân tíchPhân bổ chi phí theo chiều phân tích (phòng ban, dự án)
Tax GridsThẻ thuếNhãn thuế gắn vào dòng bút toán
Batch Payroll Move LinesGộp dòng bút toán lươngGộ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ĩaHành động
DraftBú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ửaCó thể thanh toán, Reset to Draft nếu cần sửa
CancelĐã hủy, không còn hiệu lựcKhô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