Bút toán công từ Chấm công
Tạo bút toán công tự động từ dữ liệu check-in/check-out thực tế
Module Work Entries - Attendance mở rộng module Work Entry để tạo bút toán công dựa trên dữ liệu chấm công thực tế (check_in/check_out) thay vì chỉ dựa vào lịch làm việc tĩnh.
Module này tự động tạo bút toán công khi chấm công được đóng, đồng bộ khi sửa/xóa chấm công, quản lý tăng ca từ dữ liệu attendance overtime, và chặn sửa/xóa chấm công nếu bút toán liên quan đã vào phiếu lương.
Tính năng chính
Điểm chính
• Tạo bút toán công tự động khi chấm công được đóng (có check-out)
• Đồng bộ bút toán công khi sửa/xóa chấm công
• Quản lý tăng ca từ dữ liệu attendance overtime
• Chặn sửa/xóa chấm công nếu bút toán liên quan đã vào phiếu lương (validated)
• Hỗ trợ cấu hình tính tăng ca vào work entry
Khi nào nên dùng nguồn Attendance
Dùng khi doanh nghiệp cần tính lương theo giờ làm thực tế thay vì giờ chuẩn lịch làm việc. Phù hợp với nhân viên làm việc linh hoạt, không theo lịch cố định.
Thuật ngữ quan trọng
| Fields | Trường dữ liệu | Description |
|---|---|---|
| Attendances | Chấm công | Dữ liệu check-in/check-out của nhân viên |
| Attendance | Bản ghi chấm công | Một lần chấm công vào/ra |
| Overtime | Tăng ca | Giờ làm vượt quá giờ chuẩn |
| Overtime Rule | Quy tắc tăng ca | Cấu hình cách tính tăng ca |
| Work Entry Source | Nguồn bút toán công | Nguồn tạo bút toán: Working Schedule, Attendance, hoặc Planning |
| Extra Hours | Giờ tăng ca | Số giờ làm thêm |
Cấu hình nguồn Attendance
Để sử dụng chấm công làm nguồn tạo bút toán công, cần cấu hình trên hồ sơ nhân viên.
Các bước thực hiện
1. Mở hồ sơ nhân viên (Employees → Employees)
2. Vào phần thông tin hợp đồng/phiên bản đang hiệu lực
3. Trường Work Entry Source chọn: Attendance
4. Lưu hồ sơ nhân viên
Cấu hình tăng ca từ chấm công
Trên phiên bản nhân viên có thể bật Extra hours (overtime_from_attendance). Nếu bật, hệ thống sẽ đưa overtime line đã duyệt vào bút toán công theo loại work entry type của rule tăng ca.
Quy trình tạo bút toán công từ check-in/check-out
Khi tạo attendance, nếu chưa có check_out thì chưa tạo work entry. Khi có check_out, hệ thống tự động tìm phiên bản nhân viên chồng lấp khoảng thời gian và sinh work entries tương ứng.
Điểm chính
• Hệ thống tìm các work entries cũ trùng nhân viên + ngày
• So sánh theo interval thời gian
• Các work entry cũ nằm trong interval mới sẽ bị archive (active=False)
• Work entry chồng lấp một phần sẽ bỏ liên kết attendance_id
• Mục tiêu: tránh trùng giờ công và giữ dữ liệu clean cho payroll
Quản lý tăng ca từ chấm công
Mỗi overtime rule có work_entry_type_id và amount_rate (tự lấy từ work entry type). Khi overtime được duyệt, hệ thống sinh work entry tăng ca đúng loại để payroll đọc đúng tỷ lệ lương.
Điểm chính
• Chế độ kết hợp tỷ lệ (rate combination mode): max lấy work entry type có amount_rate cao nhất, split tạo nhiều work entry theo từng rule
• Overtime bị từ chối: Hệ thống trừ phần giờ overtime đã bị từ chối khỏi interval làm việc
Trạng thái xác nhận và giới hạn chỉnh sửa
Nếu attendance liên kết với work entry có state=validated, không thể write hoặc unlink attendance. Hệ thống báo lỗi để bảo vệ dữ liệu payroll đã chốt.
Điểm chính
• Không được sửa attendance khi đã vào payslip
• Regenerate sẽ tự bỏ qua các bản ghi đã validated
Tái tạo bút toán công khi sửa/xóa chấm công
Khi sửa check-in/check-out, hệ thống tìm work entry theo nhân viên + ngày, gọi wizard regenerate theo slot impacted, nullify liên kết attendance cũ, và sinh lại work entry đúng theo dữ liệu attendance mới.
Điểm chính
• Khi xóa attendance: Hệ thống chạy error checking trước, xóa attendance, regenerate work entries cho các ngày/nhân viên bị ảnh hưởng
• Kết quả: Dữ liệu work entry luôn nhất quán sau thao tác attendance
Tích hợp với tính lương
Module này giúp payroll lấy dữ liệu đúng theo giờ làm thực tế. Work entry thường lấy từ attendance interval, work entry tăng ca lấy từ overtime line đã approved.
Ví dụ tính lương
| Loại | Số giờ | Tỷ lệ | Loại work entry |
|---|---|---|---|
| Attendance thường | 8 giờ | 100% | Attendance |
| Overtime approved | 2 giờ | 150% | Overtime 150% |
Mẹo vận hành thực tế
Điểm chính
• Chỉ bật nguồn Attendance cho nhóm nhân viên thật sự chấm công theo giờ thực tế
• Chốt quy tắc overtime trước kỳ lương để tránh regenerate nhiều lần
• Hạn chế sửa attendance đã cũ sau khi đã bắt đầu chạy payroll
• Trước khi lock payslip, lọc và kiểm tra work entry conflict và work entry thiếu attendance/overtime link bất thường
• Nếu cần sửa dữ liệu lớn, nên regenerate theo khoảng ngày thay vì sửa thủ công từng dòng