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.

Attendance
Chấm công
Work Entries
Overtime
Tăng ca

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

FieldsTrường dữ liệuDescription
AttendancesChấm côngDữ liệu check-in/check-out của nhân viên
AttendanceBản ghi chấm côngMột lần chấm công vào/ra
OvertimeTăng caGiờ làm vượt quá giờ chuẩn
Overtime RuleQuy tắc tăng caCấu hình cách tính tăng ca
Work Entry SourceNguồn bút toán côngNguồn tạo bút toán: Working Schedule, Attendance, hoặc Planning
Extra HoursGiờ tăng caSố 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ạiSố giờTỷ lệLoại work entry
Attendance thường8 giờ100%Attendance
Overtime approved2 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