ActiveELC user table

Giới thiệu


Khi thực hiện công tác tính lương cho 1 giai đoạn thời gian, ta cần sử dụng danh mục các hợp đồng lao động Employee Labor Contract đang còn hiệu lực trong khoảng thời gian tính lương. Ngoài ra còn cần phải tính số ngày hiệu lực của mỗi hợp đồng trong giai đoạn tính lương và tính đến cả việc hợp đồng mới thay thế hợp đồng cũ.

Đó là ý nghĩa của user table ActiveELC này.

Nếu cảm thấy khó hiểu kết quả trích xuất, hãy chạy lệnh này ở chế độ Debug Mode, chi tiết thuật toán sẽ được ghi vào file log.

Sử dụng


user table(pbs.BO.Data.ActiveELC?Period=<<2013005..2013006&.....other filters)

Các tham số

Các điều kiện lọc khác bao gồm: StartDate, EndDate, $top, $bottom Nếu StartDate và EndDate được khai báo, user table ActiveELC sẽ ưu tiên dùng giá trị này thay cho Period

No Name Example value Description
1 Period 2017004 Kỳ lấy dữ liệu
2 StartDate Ngày bắt đầu
3 EndDate Ngày kết thúc
4 $top 2 Chỉ lấy 2 hợp đồng cũ nhất
5 $bottom 1 Chỉ lấy 1 hợp đồng mới nhất - ta dùng tùy chọn này để tính lại dựa theo hợp đồng cuối cùng mà thôi.

💡 Ghi chú

Nguyên tắc hoạt động của cú pháp trên như sau:

Bước 1: Xác định ngày đầu - cuối của khoảng thời gian cho trước.

Bước 2: Liệt kê toàn bộ hợp đồng trong khoảng thời gian hiệu lực bước 1.

Bước 3: Sắp xếp theo giảm dần theo thứ tự: IssuedDate (Ngày quyết định) > EffectiveDate (Ngày hiệu lực) > CtrNo (Số hợp đồng).

Bước 4: Đối với mỗi nhân viên, lấy những hợp đồng mới nhất ở bước 3 và tính toán ExpiryDate (Ngày hết hạn) theo nguyên tắc lấy ngày liền kề trước EffectiveDate của hợp đồng kế tiếp 1 ngày.

Lưu ý: khi nhập liệu thông tin hợp đồng lao động thì việc nhập ExpiryDate phải chính xác hoặc không nhập (chương trình sẽ tự tính ở bước này).

Bước 5: Lấy các hợp đồng có EffectiveDate và ExpiryDate nằm trong khoảng thời gian cho trước, và đó là kết quả cuối cùng.

Lưu ý:

Trong trường hợp cả Period, StartDate, EndDate đều không được khai báo, user table ActiveELC sẽ dùng tháng hiện tại.

Giả sử ta có 1 danh mục các hợp đồng sau:

7cd2b5d4-7f3b-4621-b925-578cad019c30.usertables_pbs_bo_data_activeelc_md

Khi tìm các hợp đồng có hiệu lực để tính lương cho 2 tháng 5->6/2013, ta sẽ dùng cú pháp sau:

user table(pbs.BO.Data.ActiveELC?Period=<<2013005..2013006)

7a42364e-bb24-4f44-8738-ae45fb6d9c2c.usertables_pbs_bo_data_activeelc_md

Chương trình sẽ chia thời gian thành từng tháng. Trong mỗi tháng, hợp đồng nào có hiệu lực trong tháng thì liệt kê vào.

Hợp đồng có hiệu lực trong tháng khi nó không bị Suspend và có khoảng thời gian giữa ngày hiệu lực → ngày hết hạn chứa ít nhất 1 ngày của tháng.

Nếu trong 1 tháng 1 người có 2 hợp đồng cùng hiệu lực thì khoảng thời gian trùng lắp sẽ tính 1 lần thôi, tất nhiên là tính theo hợp đồng có ngày quyết định ra sau.

Các công ty nhà nước hay có trường hợp này, họ có thể ra 1 quyết định ở thời điểm hiện tại tăng lương cho nhân viên, nhưng ngày hiệu lực là đầu tháng trước. Nhân viên khi đó có thể lãnh lương bổ sung khoản còn thiếu của tháng trước.

WorkingRatio

Trước tiên xác định số ngày active của hđ trong tháng, sau đó trừ đi số ngày nghỉ và ngày lễ ra số ngày làm việc trong tháng wkd.

Nếu wkd = tổng số ngày làm việc của tháng thì tỷ lệ này = 1.

Nếu wkd nhỏ hơn số ngày làm việc của tháng, công thức tính là : Round(wkd * 12 / 260, 4) - làm tròn 4 dấu thập phân

Nếu có nhiều hợp đồng active trong tháng, và wkd của các hđ = tổng số ngày làm việc của tháng thì chương trình sẽ đảm bảo tổng WorkingRatio của các HĐ = 1.

DaysRatioInPeriod

Là tỷ lệ được chương trình tự xác định dựa trên số ngày hiệu lực của mỗi hợp đồng trong tháng 4. Kết quả này thường được dùng tính lương.

Thứ tự ưu tiên khi xác định hợp đồng thay thế: IssueDateEffectiveDateContractNo.

Ví dụ 1:

Ông A có 4 hợp đồng lao động có Ngày hiệu lực lần lượt như sau:

  1. HĐ1- 01/01/2016
  2. HĐ2- 15/04/2016
  3. HĐ3- 27/04/2016
  4. HĐ4- 01/02/2016

Các hợp đồng có hiệu lực trong tháng 4/2016 là:

  • HĐ4 (thay thế cho HĐ1) hiệu lực từ 1/4->14/4
  • HĐ2 (thay thế cho HĐ4) hiệu lực từ 15/4->26/4
  • HĐ3 (thay thế cho HĐ2) hiệu lực từ 27/4->30/4

image0

HĐ1 có ngày kết thúc là 31/01/2016 (được tính bởi chương trình dựa trên HĐ4 có ngày bắt đầu là 01/02/2016), do đó HĐ1 bị loại ra trong danh sách này.

CtrNo IssuedDate EffectiveDate ExpiryDate CalculationPeriod EffectiveStart

DateInPeriod
EffectiveEnd

DateInPeriod
EffectiveDays

InPeriod
DaysRatio

InPeriod
HĐ4 1/2/2016 Apr-16 1/4/2016 14/04/2016 14 0.466666667
HĐ2 15/04/2016 Apr-16 15/04/2016 26/04/2016 12 0.4
HĐ3 27/04/2016 Apr-16 27/04/2016 30/04/2016 4 0.133333333

  Đây là kết quả chạy bằng cú pháp ActiveELC: pbs.BO.Data.ActiveELC?Period=2016004 chỉ có 3 hợp đồng số HĐ2, HĐ3 & HĐ4 được liệt kê.

Các tên cột được tô đậm là do chương trình tự động tính toán và điền vào khi xuất báo cáo bằng ActiveELC.

Ví dụ 2:

Ông B có 3 hợp đồng có Ngày quyết định và Ngày hiệu lực lần lượt như sau:

Stt   Ngày quyết định Ngày hiệu lực
HĐ1-    01/04/2016             27/04/2016
HĐ2-    02/04/2016             27/04/2016
HĐ3-                            01/02/2016

image1

Kết quả pbs.BO.Data.ActiveELC?Period=2016004:

CtrNo IssuedDate EffectiveDate ExpiryDate CalculationPeriod EffectiveStart EffectiveEndDate Effective DaysRatioIn
DateInPeriod InPeriod DaysInPeriod Period
HĐ3 1/2/2016 Apr-16 1/4/2016 26/04/2016 26 0.866666667
HĐ2 2/4/2016 27/04/2016 Apr-16 27/04/2016 30/04/2016 4 0.133333333

  Chỉ có 2 hợp đồng số HĐ2 & HĐ3 được liệt kê. HĐ1Ngày quyết định trước ngày quyết định của HĐ2, do đó bị loại ra khỏi danh sách này.

Xem thêm



Updated on : 2023-09-29 05:06:06. by : . at X1-EXTREME.

Topic : usertables/pbs.bo.data.activeelc