Thiết kế workflow tính lương tự động trên Cleeksy (Lương thời gian - Lương sản phẩm - Lương cố định)

Chào mọi người,

Trong quá trình build giải pháp Hành chính Nhân sự trên Cleeksy, mình dành khá nhiều thời gian để xử lý bài toán tính lương. Ban đầu mình nghĩ đây chỉ là bài toán tính toán đơn gian, nhưng khi đi vào thực tế mới thấy doanh nghiệp có nhiều trường hợp khác nhau: nhân viên văn phòng hưởng lương thời gian, công nhân hưởng lương sản phẩm, quản lý hưởng lương cố định, cộng lương OT (tăng ca), nghỉ phép, bảo hiểm xã hội, thuế Thu nhập cá nhân,…

Sau nhiều lần chỉnh sửa cấu trúc database, mình rút được một “công thức” mà mình nghĩ có thể tái sử dụng trong doanh nghiệp.

:wrench: Công thức là gì?

Thay vì đưa toàn bộ logic vào một công thức tính lương rất dài, mình chia bài toán thành nhiều lớp dữ liệu độc lập.

Hồ sơ nhân viên

Lưu các thông tin cố định:

  • Mức lương
  • Phương pháp lương
  • Phụ cấp
  • Người phụ thuộc
  • Tỷ lệ lương (100%, 85%,…)

Chấm công

Quản lý dữ liệu phát sinh hàng ngày:

  • Check-in
  • Check-out
  • Đi trễ
  • Về sớm
  • Công được tính
  • OT ngày thường
  • OT cuối tuần
  • OT ngày lễ

Nghỉ phép

Quản lý:

  • Nghỉ hưởng lương
  • Nghỉ không lương

Đơn tăng ca

Quản lý số giờ OT theo từng loại ngày

Bảng tính lương

Đây là nơi chỉ làm nhiệm vụ tổng hợp.

Thay vì viết một công thức dài hàng chục dòng, mình chia thành các nhóm field:

  • Lương thời gian
  • Lương sản phẩm
  • Lương cố định
  • Luơng chính
  • Tổng lương OT
  • Tổng phụ cấp
  • Lương trước khấu trừ
  • Bảo hiểm xã hội
  • Thuế Thu nhập cá nhân
  • Tổng khấu trừ
  • Lương thực lĩnh

Nhờ vậy khi cần kiểm tra sai sót chỉ cần nhìn từng nhóm là biết lỗi phát sinh ở đâu.

:office_building: Bài toán doanh nghiệp nào có thể áp dụng?

Theo mình, mô hình này phù hợp với khá nhiều doanh nghiệp sản xuất hoặc thương mại có từ vài chục đến vài trăm nhân sự.

Đặc biệt phù hợp khi doanh nghiệp có nhiều phương pháp trả lương cùng lúc, ví dụ:

  • Nhân viên văn phòng hưởng lương thời gian.
  • Công nhân sản xuất hưởng lương sản phẩm.
  • Quản lý hưởng lương cố định.
  • Có phát sinh OT, nghỉ phép, nghỉ không lương, phụ cấp và khấu trừ bảo hiểm xã hội, thuế.

Nếu vẫn làm trên Excel, mỗi kỳ lương thường phải tổng hợp dữ liệu từ nhiều file khác nhau. Với cách setup này, dữ liệu được liên kết xuyên suốt giữa các app nên đến kỳ lương chỉ cần tạo bảng lương là hệ thống tự tổng hợp.

:sparkles: Vì sao mình nghĩ công thức này đáng để thử?

Điểm mình thích nhất là tách logic thành nhiều bước nhỏ thay vì dồn hết vào một công thức.

Ví dụ, thay vì tính trực tiếp “Lương thực lĩnh”, mình chia thành:

  • Lương chính (Tuỳ vào nhân viên thuộc đối tượng nào sẽ tổng hợp ra loại lương phù hợp)
  • Tổng phụ cấp
  • Tổng OT
  • Lương trước khấu trừ
  • Bảo hiểm xã hội
  • Thuế thu nhập cá nhân
  • Tổng khấu trừ
  • Lương thực lĩnh

Nhờ vậy:

  • Dễ đọc và dễ debug khi có sai số.
  • Dễ mở rộng nếu doanh nghiệp phát sinh thêm phụ cấp hoặc chính sách lương mới.
  • Người tiếp nhận hệ thống cũng dễ hiểu hơn vì mỗi field đều có ý nghĩa rõ ràng.

Trong quá trình build mình cũng nhận ra một bài học khá hữu ích là database tốt sẽ giúp workflow đơn giản hơn rất nhiều. Khi các bảng được thiết kế đúng ngay từ đầu thì công thức và automation phía sau sẽ ngắn gọn, dễ bảo trì và tái sử dụng hơn.

Đây là “công thức” mình thấy có thể áp dụng cho nhiều doanh nghiệp chứ không chỉ riêng dự án mình đang làm. Nếu mọi người từng triển khai bài toán tính lương trên Cleeksy thì rất mong được trao đổi thêm để tối ưu hơn nữa. :rocket:

2 Likes