Bỏ qua

Trung tâm nhân sự (TT nhân sự) — Base dữ liệu

Vị trí trên portal: TT nhân sự (ns)

Module dùng Base HRIS (YrxBbFJO1aIiAwsy40jlg0A4gae) — Base nhân sự gốc của công ty: hồ sơ, quá trình công tác, ca, chấm công, công tổng hợp, lương, BHXH, hợp đồng và các phiếu đơn từ. Bảng "Phân quyền Portal" cùng Base được mô tả ở module Quản trị. Base phụ Sinh nhật (ADFPbTXTAa9D6Ysd3uZlPTkQg7g) dùng cho thông báo sinh nhật Leader.

Nhóm bảng theo đánh số

Nhóm Bảng Vai trò
0.0.x Khai báo địa giới hành chính, Sơ đồ tổ chức Danh mục dùng chung
2.x Thông tin nhân sự, người phụ thuộc, quá trình làm việc, thay đổi vị trí, thay đổi AM, ca thai sản Hồ sơ và lịch sử công tác
3.x Tính công tổng hợp, quy tắc nghỉ, lịch tháng, đăng ký ca, đổi ca, kiểm tra bảng công ngày, chấm công chi tiết, công TTS/bảo vệ, công theo địa điểm Chấm công
4.x Bảng lương tổng hợp, phụ cấp, thu nhập, hiệu suất TTS, KPI tổng hợp Lương
5.x Thống kê/QL BHXH, chi phí BHXH tháng Bảo hiểm
6.x Form gửi hồ sơ, hồ sơ nhân sự, HĐTV, HĐLĐ, HĐ khác, quyết định Hồ sơ – hợp đồng
7.1.x Danh sách nhân sự hệ thống, phòng ban, Attendance_Records, bảng chấm công copy Dữ liệu hệ thống / đồng bộ
Phiếu … Nghỉ, ra ngoài, làm thêm giờ, điều chỉnh công, WFH, xác nhận công chưa có tài khoản; bản "đã tách ngày" Đơn từ (Lark Approval → Base)

Bảng có chữ "Copy", "Bản sao", "Chấm công tháng 8" là bảng sao/lưu trữ trên Base; code ONE-ANNA chỉ đọc 3.7 - Bảng chấm công chi tiết ngày Copy và 7.1.3 - Bảng chấm công chi tiết Copy (khai trong config/lark-tables.mjs). Mục đích các bảng sao còn lại: cần xác nhận.

Cách đọc bảng cột

Cột Ý nghĩa
Cột Tên cột trên Lark Base (🔑 = cột chính / primary field)
Kiểu Kiểu dữ liệu Lark Base
Nguồn giá trị Nhập liệu (người hoặc automation điền), Tự tính (công thức), Tự lấy (tra cứu) từ bảng khác, Liên kết bản ghi, Hệ thống (ngày tạo, người tạo…)
Chi tiết / công thức Công thức (đã đổi mã cột/bảng sang tên), bảng tra cứu, bảng liên kết, danh sách lựa chọn (ẩn nếu > 20 lựa chọn hoặc chứa tên người)
Mô tả trên Base Mô tả do người tạo Base ghi. Ô để trống = Base chưa có mô tả; ý nghĩa hiểu theo tên cột, cần xác nhận khi dùng cho nghiệp vụ quan trọng

Cấu trúc đọc qua Lark API (chỉ đọc) ngày 22/10/2026. Bảng/cột có thể đã thay đổi sau ngày này.

Base HRIS (nhân sự, công, lương) — YrxBbFJO1aIiAwsy40jlg0A4gae

Danh sách bảng mô tả bên dưới:

Bảng Số cột Code tham chiếu
2.1 - QL Thông tin nhân sự 61 có
2.2 - QL Người phụ thuộc 12 không
2.3 - QL Quá trình làm việc 12 có
2.4 - QL Quá trình thay đổi vị trí 16 có
2.5 - QL Thay đổi AM 33 không
2.6 - QL Ca làm việc khối cửa hàng - Thai sản 9 không
3.0 - Bảng tính công tổng hợp - Attendance 69 có
3.1 - Bảng tính công tổng hợp - Tính lương 58 có
3.2 - Quy tắc nghỉ 7 không
3.3 - Lịch tháng 6 không
3.4 - Đăng ký ca_Cửa hàng 37 có
3.5 - Đổi ca làm việc 9 không
3.6 - Kiểm tra bảng công ngày 26 có
3.7 - Bảng chấm công chi tiết ngày 68 có
3.8 - Quản lý công Thực tập sinh 11 không
3.9 - Bảng công bảo vệ + Tạp vụ 5 không
3.10 - Công theo địa điểm chấm công 8 có
3.11 - Chấm công theo địa điểm 11 có
3.12 - Tổng hợp chấm công theo địa điểm 10 có
3.4 - Đăng ký ca_Cửa hàng Copy 35 không
4.0.1 - Bảng lương tổng hợp - Nội bộ 77 có
Bảng 1 không
4.2.1 - Khai báo phụ cấp - Phúc lợi 9 không
4.3.1 - Khai báo thu nhập nhân sự 14 không
4.4.1 - Hiệu suất thực tập sinh - Cửa hàng 10 không
4.4.2 - Bảng tổng hợp KPI 11 không
5.0 - Thống kê BHXH 4 không
5.1 - QL BHXH 24 có
5.2 - QL Chi phí BHXH Hàng tháng 19 có
6.0 - Form gửi hồ sơ nhân sự 17 không
6.1 - QL Hồ sơ nhân sự 24 có
6.2 - QL HĐTV 12 có
6.3 - QL HĐLĐ 17 có
6.4 - QL HĐLĐ khác 17 có
6.5 - QL Quyết định 11 không
7.1.1 - Danh sách nhân sự hệ thống 18 không
7.1.2 - Danh sách phòng ban 10 không
7.1.4 - Attendance_Records 7 không
7.1.3 - Bảng chấm công chi tiết Copy 62 có
Đồng bộ phiếu & tính công 3 không
Phiếu xin nghỉ - đi muộn&về sớm 31 không
Phiếu xin ra ngoài cho việc cá nhân 22 không
Phiếu đề xuất làm thêm giờ - form cũ 28 có
Phiếu đề xuất làm thêm giờ - form mới 25 không
Phiếu điều chỉnh công 24 không
Phiếu đề xuất ra ngoài thực hiện công việc công ty 22 không
Phiếu xin làm việc tại nhà 20 không
Phiếu xác nhận công - chưa có tài khoản 17 có
Đánh giá kết quả thực hành TTS KXNK 22 không
Phiếu xin nghỉ_đã tách ngày 16 có
Phiếu xin ra ngoài cho việc cá nhân_đã tách ngày 16 không
Phiếu đề xuất ra ngoài thực hiện công việc công ty_đã tách ngày 16 có
Phiếu xin làm việc tại nhà_đã tách ngày 18 có
0.0.1 - Khai báo - Địa giới hành chính 3 không
0.0.2 - Khai báo - Sơ đồ tổ chức 11 không
Bản sao 3.6 - Kiểm tra bảng công ngày 26 không
3.7 - Bảng chấm công chi tiết ngày Copy 64 có
Chấm công tháng 8 66 không
Task công việc 5 không

2.1 - QL Thông tin nhân sự

Ghi chú nghiệp vụ: bảng gốc của mỗi nhân sự (khoá: mã nhân viên). Đây là nguồn của getMyEmployeeRecord, danh bạ, báo cáo M1/M4, và là điểm nối của hầu hết bảng khác (liên kết "Mã nhân sự"). Job runHrisPersonnelSync (08:30 VN) bảo đảm mỗi nhân sự có dòng ở 2.3 và 6.1 cùng hợp đồng theo trạng thái (hiện HRIS_SYNC_DRY_RUN = "1" → chỉ chạy thử).

# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 user_id 🔑 Văn bản Nhập liệu
2 user Người (User) Nhập liệu Một người
3 Leader Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [leader]. Biểu thức: '7.1.1 - Danh sách nhân sự hệ thống'.FILTER(CurrentValue.[user]=[user]).[leader].LISTCOMBINE()
4 Họ và tên Văn bản Nhập liệu
5 Ngày sinh Ngày giờ Nhập liệu Định dạng dd/MM/yyyy
6 Số điện thoại Văn bản Nhập liệu
7 Email cá nhân Văn bản Nhập liệu
8 Số CCCD Văn bản Nhập liệu
9 Ngày cấp Ngày giờ Nhập liệu Định dạng dd/MM/yyyy
10 Nơi cấp Văn bản Nhập liệu
11 Ngày hết hạn Ngày giờ Nhập liệu Định dạng dd/MM/yyyy
12 Quốc tịch Văn bản Nhập liệu
13 Dân tộc Văn bản Nhập liệu
14 Tôn giáo Văn bản Nhập liệu
15 Tỉnh/TP - Hộ khẩu thường trú Chọn một Nhập liệu 34 lựa chọn (không liệt kê)
16 Xã/Phường - Hộ khẩu thường trú Chọn một Nhập liệu 2993 lựa chọn (không liệt kê)
17 Địa chỉ chi tiết - Hộ khẩu thường trú Văn bản Nhập liệu Thông tin số nhà, ngõ, ngách, tên chung cư
18 Tỉnh/TP - Chỗ ở hiện tại Chọn một Nhập liệu 34 lựa chọn (không liệt kê)
19 Xã/Phường - Chỗ ở hiện tại Chọn một Nhập liệu 2993 lựa chọn (không liệt kê)
20 Địa chỉ chi tiết - Chỗ ở hiện tại Văn bản Nhập liệu Thông tin số nhà, ngõ, ngách, tên chung cư
21 Trình độ học vấn Chọn một Nhập liệu 15 lựa chọn (không liệt kê)
22 Trường đào tạo Văn bản Nhập liệu
23 Chuyên ngành Văn bản Nhập liệu
24 Sổ BHXH Văn bản Nhập liệu
25 MST Cá nhân Văn bản Nhập liệu
26 Tên tài khoản Văn bản Nhập liệu
27 Số tài khoản Văn bản Nhập liệu
28 Ngân hàng Chọn một Nhập liệu 160 lựa chọn (không liệt kê)
29 Họ và tên (LHKC) Văn bản Nhập liệu
30 Số điện thoại (LHKC) Số điện thoại Nhập liệu
31 Mối quan hệ (LHKC) Chọn một Nhập liệu Lựa chọn: Bố, Mẹ, Chồng, Vợ, Anh/em, Chị/em, Bạn
32 2.2 - QL Người phụ thuộc Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.2 - QL Người phụ thuộc (một bản ghi); cột đối ứng: [Mã nhân viên]
33 2.3 - QL Quá trình làm việc Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.3 - QL Quá trình làm việc (một bản ghi); cột đối ứng: [Mã nhân viên]
34 2.4 - QL Quá trình thay đổi vị trí Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.4 - QL Quá trình thay đổi vị trí (một bản ghi); cột đối ứng: [Mã nhân sự]
35 6.1 - Liên kết hai chiều Liên kết bản ghi Liên kết tới 6.1 - QL Hồ sơ nhân sự (một bản ghi); cột đối ứng: [Mã nhân sự]
36 6.2 - QL HĐTV Liên kết hai chiều Liên kết bản ghi Liên kết tới 6.2 - QL HĐTV (một bản ghi); cột đối ứng: [Mã nhân sự]
37 6.3 - QL HĐLĐ-Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 6.3 - QL HĐLĐ (một bản ghi); cột đối ứng: [Mã nhân sự]
38 6.4 - QL Quyết định Liên kết hai chiều Liên kết bản ghi Liên kết tới 6.5 - QL Quyết định (một bản ghi); cột đối ứng: [Mã nhân sự]
39 5.1 - Liên kết hai chiều Liên kết bản ghi Liên kết tới 5.1 - QL BHXH (một bản ghi); cột đối ứng: [Mã nhân sự]
40 5.2 - QL Chi phí BHXH Hàng tháng Liên kết hai chiều Liên kết bản ghi Liên kết tới 5.2 - QL Chi phí BHXH Hàng tháng (một bản ghi); cột đối ứng: [Mã nhân sự]
41 4.3.1 - Khai báo thu nhập nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 4.3.1 - Khai báo thu nhập nhân sự (một bản ghi); cột đối ứng: [Mã nhân sự]
42 Bản sao 6.3 - QL HĐLĐ khác Liên kết hai chiều Liên kết bản ghi Liên kết tới 6.4 - QL HĐLĐ khác (một bản ghi); cột đối ứng: [Mã nhân sự]
43 Ngày thay đổi vị trí gần nhất Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày bắt đầu]. Biểu thức: '2.4 - QL Quá trình thay đổi vị trí'.FILTER(CurrentValue.[Mã nhân sự]=[user_id]).[Ngày bắt đầu].LISTCOMBINE().MAX()
44 Ban Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Khối]. Biểu thức: '2.4 - QL Quá trình thay đổi vị trí'.FILTER(CurrentValue.[Mã nhân sự]=[user_id]&&CurrentValue.[Ngày bắt đầu]=[Ngày thay đổi vị trí gần nhất]).[Khối].LISTCOMBINE()
45 Đơn vị Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Đơn vị]. Biểu thức: '2.4 - QL Quá trình thay đổi vị trí'.FILTER(CurrentValue.[Mã nhân sự]=[user_id]&&CurrentValue.[Ngày bắt đầu]=[Ngày thay đổi vị trí gần nhất]).[Đơn vị].LISTCOMBINE()
46 Vị trí Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Vị trí]. Biểu thức: '2.4 - QL Quá trình thay đổi vị trí'.FILTER(CurrentValue.[Mã nhân sự]=[user_id]&&CurrentValue.[Ngày bắt đầu]=[Ngày thay đổi vị trí gần nhất]).[Vị trí].LISTCOMBINE()
47 Phân loại Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Phân loại]. Biểu thức: '0.0.2 - Khai báo - Sơ đồ tổ chức'.FILTER(CurrentValue.[Vị trí]=[Vị trí]).[Phân loại].LISTCOMBINE().UNIQUE()
48 Ngày thay đổi trạng thái làm việc gần nhất Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày bắt đầu]. Biểu thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[user_id]).[Ngày bắt đầu].LISTCOMBINE().MAX()
49 Trạng thái làm việc Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Trạng thái làm việc]. Biểu thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[user_id]&&CurrentValue.[Ngày bắt đầu]=[Ngày thay đổi trạng thái làm việc gần nhất]).[Trạng thái làm việc].LISTCOMBINE().UNIQUE()
50 2.6 - QL Ca làm việc khối cửa hàng-Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.6 - QL Ca làm việc khối cửa hàng - Thai sản (một bản ghi); cột đối ứng: [Mã nhân sự]
51 4.2.1 - Khai báo phụ cấp - Phúc lợi Liên kết hai chiều Liên kết bản ghi Liên kết tới 4.2.1 - Khai báo phụ cấp - Phúc lợi (một bản ghi); cột đối ứng: [Mã nhân sự]
52 4.0.1 - Bảng lương tổng hợp - Nội bộ Liên kết hai chiều Liên kết bản ghi Liên kết tới 4.0.1 - Bảng lương tổng hợp - Nội bộ (một bản ghi); cột đối ứng: [Mã nhân sự]
53 3.0 - Bảng tính công tổng hợp - Attendance Liên kết hai chiều Liên kết bản ghi Liên kết tới 3.0 - Bảng tính công tổng hợp - Attendance (một bản ghi); cột đối ứng: [Mã nhân sự]
54 Trạng thái hoạt động Văn bản Nhập liệu
55 Ngày bắt đầu làm việc Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày bắt đầu]. Biểu thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[user_id]).[Ngày bắt đầu].LISTCOMBINE().MIN()
56 Thâm niên Công thức Tự tính (công thức) Công thức: IF( [Ngày bắt đầu làm việc] = "", "", MAX( 0, (YEAR(TODAY()) - YEAR([Ngày bắt đầu làm việc])) * 12 + MONTH(TODAY()) - MONTH([Ngày bắt đầu làm việc]) - IF( DAY(TODAY()) < DAY([Ngày bắt đầu làm việc]), 1, 0 ) ) )
57 Giờ công tiêu chuẩn Bảo vệ + Tạp vụ theo ngày Số Nhập liệu Định dạng 0.0
58 Giờ công tiêu chuẩn Bảo vệ + Tạp vụ theo tháng Số Nhập liệu Định dạng 0.0
59 Check trùng Công thức Tự tính (công thức) Công thức: IF([user]!="",IF('2.1 - QL Thông tin nhân sự'.COUNTIF(CurrentValue.[user]=[user])>1,"🚫Trùng user",""),"")
60 3.1 - Bảng tính công tổng hợp - Tính lương Liên kết hai chiều Liên kết bản ghi Liên kết tới 3.1 - Bảng tính công tổng hợp - Tính lương (một bản ghi); cột đối ứng: [Mã nhân sự]
61 Role phân quyền Công thức Tự tính (công thức) Công thức: IFS(CONTAINTEXT([Vị trí],"Khúc xạ"),"KTV",CONTAINTEXT([Vị trí],"Stylist"),"Stylist",CONTAINTEXT([Vị trí],"QLCH"),"QLCH",TRUE(),"")

2.2 - QL Người phụ thuộc

  • Table ID: tblOoOks0W8ympcI · Base: Base HRIS (nhân sự, công, lương) · Số cột: 12 · Cột chính: Ngày bắt đầu
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Liên kết tới: 2.1 - QL Thông tin nhân sự
  • Cơ cấu cột: 1 công thức · 4 tra cứu · 1 liên kết · 6 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày bắt đầu 🔑 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
2 Ngày kết thúc Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
3 Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.1 - QL Thông tin nhân sự (một bản ghi); cột đối ứng: [2.2 - QL Người phụ thuộc]
4 Nhân sự Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[user].LISTCOMBINE()
5 Họ và tên Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Họ và tên]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[Họ và tên].LISTCOMBINE()
6 CCCD người nộp thuế Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Số CCCD]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[Số CCCD].LISTCOMBINE()
7 MST Người nộp thuế Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [MST Cá nhân]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[MST Cá nhân].LISTCOMBINE()
8 Họ và tên (NPT) Văn bản Nhập liệu
9 Ngày sinh (NPT) Ngày giờ Nhập liệu Định dạng dd/MM/yyyy
10 Quan hệ với NNT Chọn một Nhập liệu Lựa chọn: Con, Cha, Mẹ, Khác
11 MST NPT Văn bản Nhập liệu
12 Trạng thái Công thức Tự tính (công thức) Công thức: IF( AND([Ngày bắt đầu] != "", [Ngày kết thúc] != ""), IF( [Ngày kết thúc] <= TODAY(), "Hết hiệu lực", "Còn hiệu lực" ), IF( AND([Ngày bắt đầu] != "", [Ngày kết thúc] = ""), "Còn hiệu lực", "" ) )

2.3 - QL Quá trình làm việc

  • Table ID: tblmHy8TOslGNUgv · Base: Base HRIS (nhân sự, công, lương) · Số cột: 12 · Cột chính: Ngày bắt đầu
  • Khoá trong config/lark-tables.mjs: HRIS.QUA_TRINH_CONG_TAC
  • Code ONE-ANNA tham chiếu: apps/api/src/portal/hris-personnel-sync.js, apps/api/src/portal/seed-36-store-gaps/index.js, legacy/gas/EmployeeDirectory.js, legacy/gas/EmployeeSearch.html, legacy/gas/EmployeeSearch.js, legacy/gas/Mã.js, legacy/gas/apps-script/lark-attendance-location/Config.js, scripts/seed-permission-table.mjs
  • Liên kết tới: 2.1 - QL Thông tin nhân sự
  • Cơ cấu cột: 2 công thức · 2 tra cứu · 1 liên kết · 7 cột nhập/hệ thống

Ghi chú nghiệp vụ: quá trình làm việc (trạng thái đang làm/nghỉ). Seed 3.6 dùng bảng này để lọc nhân sự đang làm; runHrisPersonnelSync bảo đảm mỗi nhân sự có dòng.

# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày bắt đầu 🔑 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
2 Ngày kết thúc Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
3 Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.1 - QL Thông tin nhân sự (một bản ghi); cột đối ứng: [2.3 - QL Quá trình làm việc]
4 Nhân sự Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[user].LISTCOMBINE()
5 Họ và tên Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Họ và tên]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[Họ và tên].LISTCOMBINE()
6 Trạng thái làm việc Chọn một Nhập liệu Lựa chọn: Thực tập sinh, Thử việc, Chính thức, Nghỉ thai sản, Nghỉ dài ngày, Nghỉ việc, Chuẩn bị nghỉ việc
7 Lý do nghỉ việc Văn bản Nhập liệu
8 Ghi chú Văn bản Nhập liệu
9 Trạng thái Công thức Tự tính (công thức) Công thức: IF( [Trạng thái làm việc] = "Nghỉ việc", "Hết hiệu lực", IF( [Ngày bắt đầu] = "", "", IF( [Ngày bắt đầu] > NOW(), "Chưa bắt đầu", IF( [Ngày kết thúc] != "", IF( [Ngày kết thúc] <= TODAY(), "Hết hiệu lực", "Còn hiệu lực" ), "Còn hiệu lực" ) ) ) )
10 Ghi chú tính lương thực tập sinh Chọn một Nhập liệu Lựa chọn: Tính theo ngày công, Tính theo hiệu suất
11 User_id Văn bản Nhập liệu
12 Check trùng Công thức Tự tính (công thức) Công thức: IF('2.3 - QL Quá trình làm việc'.COUNTIF(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Ngày bắt đầu]=[Ngày bắt đầu])>1,"🚫repetitive","")

2.4 - QL Quá trình thay đổi vị trí

  • Table ID: tblVB6GRmXabLzc4 · Base: Base HRIS (nhân sự, công, lương) · Số cột: 16 · Cột chính: Ngày bắt đầu
  • Khoá trong config/lark-tables.mjs: HRIS.THAY_DOI_VI_TRI
  • Code ONE-ANNA tham chiếu: apps/api/src/portal/native-rpc/perm-matrix.js, legacy/gas/Mã.js, scripts/seed-permission-table.mjs
  • Liên kết tới: 2.1 - QL Thông tin nhân sự
  • Cơ cấu cột: 3 công thức · 4 tra cứu · 1 liên kết · 8 cột nhập/hệ thống

Ghi chú nghiệp vụ: mỗi dòng là một giai đoạn vị trí của một nhân sự (Ngày bắt đầu → Ngày kết thúc, Khối/Phòng/Bộ phận/Đơn vị/Vị trí, Văn bản quyết định). Cột công thức Tháng/Năm/Trạng thái tự tính từ ngày. Dùng cho báo cáo M4 Luân chuyển (getMobilityAnalytics), getActivePositionChange và ma trận phân quyền (perm-matrix.js đọc Đơn vị/Vị trí hiện tại).

# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày bắt đầu 🔑 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
2 Ngày kết thúc Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
3 Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.1 - QL Thông tin nhân sự (một bản ghi); cột đối ứng: [2.4 - QL Quá trình thay đổi vị trí]
4 Nhân sự Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[user].LISTCOMBINE()
5 Họ và tên Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Họ và tên]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[Họ và tên].LISTCOMBINE().UNIQUE()
6 Khối Chọn một Nhập liệu Lựa chọn: Ban Giám Đốc, Ban Hành chính Nhân sự, Phòng Công nghệ thông tin, Phòng Kho vận, Phòng Kiểm soát nội bộ, Ban Tài chính - Kế toán, Khối Mua hàng - Cung ứng, Phòng Mua hàng, Phòng Phát triển Dự án, Ban Marketing, Phòng Trải nghiệm khách hàng, Khối Vận Hành - Kinh Doanh, Phòng Marketing miền Nam, Phòng chuyển đổi số và ERP
7 Phòng Chọn một Nhập liệu 23 lựa chọn (không liệt kê)
8 Bộ phận Chọn một Nhập liệu 54 lựa chọn (không liệt kê)
9 Đơn vị Chọn một Nhập liệu 125 lựa chọn (không liệt kê)
10 Vị trí Chọn một Nhập liệu 123 lựa chọn (không liệt kê)
11 Văn bản Văn bản Nhập liệu
12 Ngày nghỉ việc Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày bắt đầu]. Biểu thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Trạng thái làm việc]='2.3 - QL Quá trình làm việc'.[Trạng thái làm việc].$option[opt0wkM3Os]).[Ngày bắt đầu].LISTCOMBINE()
13 Tháng Công thức Tự tính (công thức) Công thức: IF([Ngày bắt đầu]!="",[Ngày bắt đầu].MONTH(),"")
14 Năm Công thức Tự tính (công thức) Công thức: IF([Ngày bắt đầu]!="",[Ngày bắt đầu].YEAR(),"")
15 Phân loại Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Phân loại]. Biểu thức: '0.0.2 - Khai báo - Sơ đồ tổ chức'.FILTER(CurrentValue.[Vị trí]=[Vị trí]&&CurrentValue.[Đơn vị]=[Đơn vị]).[Phân loại].LISTCOMBINE().UNIQUE()
16 Trạng thái Công thức Tự tính (công thức) Công thức: IF( [Ngày nghỉ việc] != "", "Hết hiệu lực", IF( AND( [Ngày bắt đầu] != "", [Ngày kết thúc] != "" ), IF( [Ngày kết thúc] <= TODAY(), "Hết hiệu lực", "Còn hiệu lực" ), IF( AND( [Ngày bắt đầu] != "", [Ngày kết thúc] = "" ), "Còn hiệu lực", "" ) ) )

2.5 - QL Thay đổi AM

  • Table ID: tblvOhNZR5nuErzp · Base: Base HRIS (nhân sự, công, lương) · Số cột: 33 · Cột chính: Ngày bắt đầu
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 1 công thức · 0 tra cứu · 0 liên kết · 32 cột nhập/hệ thống

Ghi chú nghiệp vụ: lịch sử phân công AM cho cửa hàng (Cửa hàng, AM, Ngày bắt đầu/kết thúc, Trạng thái tự tính). Các cột "Trường 1…28" là cột văn bản trống mặc định của Lark. Không thấy code ONE-ANNA đọc bảng này — người dùng và cách dùng: cần xác nhận.

# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày bắt đầu 🔑 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
2 Ngày kết thúc Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
3 Cửa hàng Chọn một Nhập liệu 125 lựa chọn (không liệt kê)
4 AM Người (User) Nhập liệu Một người
5 Trạng thái Công thức Tự tính (công thức) Công thức: IF( AND([Ngày bắt đầu]!= "", [Ngày kết thúc] != ""), IF( [Ngày kết thúc] <= TODAY(), "Hết hiệu lực", "Còn hiệu lực" ), IF( AND([Ngày bắt đầu] != "", [Ngày kết thúc] = ""), "Còn hiệu lực", "" ) )
6 Trường 1 Văn bản Nhập liệu
7 Trường 2 Văn bản Nhập liệu
8 Trường 3 Văn bản Nhập liệu
9 Trường 4 Văn bản Nhập liệu
10 Trường 5 Văn bản Nhập liệu
11 Trường 6 Văn bản Nhập liệu
12 Trường 7 Văn bản Nhập liệu
13 Trường 8 Văn bản Nhập liệu
14 Trường 9 Văn bản Nhập liệu
15 Trường 10 Văn bản Nhập liệu
16 Trường 11 Văn bản Nhập liệu
17 Trường 12 Văn bản Nhập liệu
18 Trường 13 Văn bản Nhập liệu
19 Trường 14 Văn bản Nhập liệu
20 Trường 15 Văn bản Nhập liệu
21 Trường 16 Văn bản Nhập liệu
22 Trường 17 Văn bản Nhập liệu
23 Trường 18 Văn bản Nhập liệu
24 Trường 19 Văn bản Nhập liệu
25 Trường 20 Văn bản Nhập liệu
26 Trường 21 Văn bản Nhập liệu
27 Trường 22 Văn bản Nhập liệu
28 Trường 23 Văn bản Nhập liệu
29 Trường 24 Văn bản Nhập liệu
30 Trường 25 Văn bản Nhập liệu
31 Trường 26 Văn bản Nhập liệu
32 Trường 27 Văn bản Nhập liệu
33 Trường 28 Văn bản Nhập liệu

2.6 - QL Ca làm việc khối cửa hàng - Thai sản

  • Table ID: tblSdpi9ip39rNfw · Base: Base HRIS (nhân sự, công, lương) · Số cột: 9 · Cột chính: Ngày bắt đầu
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Liên kết tới: 2.1 - QL Thông tin nhân sự
  • Cơ cấu cột: 1 công thức · 2 tra cứu · 1 liên kết · 5 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày bắt đầu 🔑 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
2 Ngày kết thúc Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
3 Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.1 - QL Thông tin nhân sự (một bản ghi); cột đối ứng: [2.6 - QL Ca làm việc khối cửa hàng-Mã nhân sự]
4 Nhân sự Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[user].LISTCOMBINE()
5 Họ và tên Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Họ và tên]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[Họ và tên].LISTCOMBINE()
6 Ca làm việc Chọn một Nhập liệu Lựa chọn: 8, 12, 7
7 Lý do thay đổi ca Văn bản Nhập liệu
8 Ghi chú Văn bản Nhập liệu
9 Trạng thái Công thức Tự tính (công thức) Công thức: IF(AND([Ngày bắt đầu]!="",[Ngày kết thúc]!=""),IF([Ngày kết thúc]<=TODAY(),"Hết hiệu lực","Còn hiệu lực"),IF(AND([Ngày bắt đầu]!="",[Ngày kết thúc]=""),"Còn hiệu lực",""))

3.0 - Bảng tính công tổng hợp - Attendance

  • Table ID: tblv0wlq5h8W4Zsp · Base: Base HRIS (nhân sự, công, lương) · Số cột: 69 · Cột chính: Ngày đầu tháng
  • Khoá trong config/lark-tables.mjs: HRIS.CONG_TONG_HOP
  • Code ONE-ANNA tham chiếu: apps/api/scripts/backfill-snapshots.mjs, apps/api/src/portal/payroll-31-resync/event.js, apps/api/src/portal/payroll-snapshot.js, apps/api/src/portal/schema-watch.js, legacy/gas/MaHoSoNhanVien.js, legacy/gas/Mã.js, scripts/base-setup-confirm-columns.mjs, scripts/lib/resync-confirmed-payroll-31-lib.mjs
  • Liên kết tới: 2.1 - QL Thông tin nhân sự
  • Cơ cấu cột: 55 công thức · 4 tra cứu · 1 liên kết · 9 cột nhập/hệ thống

Ghi chú nghiệp vụ: công tổng hợp theo tháng × nhân sự (Attendance). Job backfillMonthlyPayrollSheets (08:30 VN, sau runHrisPersonnelSync) tạo dòng tháng cho nhân sự mới. Khi nhân sự bấm Xác nhận công, ONE-ANNA ghi trạng thái xác nhận (qua D1 payroll_outbox, job drainPayrollOutbox) và chụp snapshot (payroll_attendance_snapshots); job checkSnapshotDrift (02:00 VN) phát hiện dòng bị sửa sau khi đã chốt.

# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày đầu tháng 🔑 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
2 Ngày thay đổi trong tháng Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày bắt đầu]. Biểu thức: '4.3.1 - Khai báo thu nhập nhân sự'.FILTER(CurrentValue.[Ngày bắt đầu]>=[Ngày đầu tháng]&&CurrentValue.[Ngày kết thúc]<=[Ngày cuối tháng]&&CurrentValue.[Nhân sự]=[Nhân sự]).[Ngày bắt đầu].LISTCOMBINE()
3 Ngày bắt đầu làm việc Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày bắt đầu]. Biểu thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]).[Ngày bắt đầu].LISTCOMBINE().MIN()
4 Ngày cuối tháng Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
5 Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.1 - QL Thông tin nhân sự (một bản ghi); cột đối ứng: [3.0 - Bảng tính công tổng hợp - Attendance]
6 Nhân sự Công thức Tự tính (công thức) Công thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[user].LISTCOMBINE()
7 Họ và tên Công thức Tự tính (công thức) Công thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[Họ và tên].LISTCOMBINE()
8 Email cá nhân Công thức Tự tính (công thức) Công thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[Email cá nhân]
9 Ngày thay đổi quá trình làm việc gần nhất Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Ngày bắt đầu]>=[Ngày đầu tháng]&&CurrentValue.[Ngày bắt đầu]<=[Ngày cuối tháng]).[Ngày bắt đầu].UNIQUE()
10 Trạng thái làm việc Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Ngày bắt đầu]=[Ngày thay đổi quá trình làm việc gần nhất]).[Trạng thái làm việc].UNIQUE()
11 Đơn vị Công thức Tự tính (công thức) Công thức: IF( [Mã nhân sự] = "", "", SUBSTITUTE( '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Nhân sự] = [Nhân sự] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && OR( CurrentValue.[Ngày kết thúc] = "", CurrentValue.[Ngày kết thúc] + 1 >= [Ngày đầu tháng] ) ) .[Đơn vị], "[", "" ).SUBSTITUTE("]", "") )
12 Vị trí Công thức Tự tính (công thức) Công thức: IF( [Mã nhân sự] = "", "", SUBSTITUTE( '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && OR( CurrentValue.[Ngày kết thúc] = "", CurrentValue.[Ngày kết thúc] + 1 >= [Ngày đầu tháng] ) ) .[Vị trí], "[", "" ).SUBSTITUTE("]", "") )
13 Phân loại Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Phân loại]. Biểu thức: '0.0.2 - Khai báo - Sơ đồ tổ chức'.FILTER(CurrentValue.[Đơn vị]=[Đơn vị]&&CurrentValue.[Vị trí]=[Vị trí]).[Phân loại].LISTCOMBINE().UNIQUE()
14 Ngày công tiêu chuẩn Công thức Tự tính (công thức) Công thức: IF( [Phân loại] = "Full công", NETWORKDAYS([Ngày đầu tháng], [Ngày cuối tháng]), '3.2 - Quy tắc nghỉ' .FILTER( CurrentValue.[Ngày tạo] >= [Ngày đầu tháng] && CurrentValue.[Ngày tạo] <= [Ngày cuối tháng] && CurrentValue.[Phân loại] = [Phân loại] ) .[Công chuẩn theo tháng] .UNIQUE() )
15 Giờ công tiêu chuẩn Công thức Tự tính (công thức) Công thức: IF( [Vị trí] = "Tạp vụ" && [Mã nhân sự] = "«mã NV»", NETWORKDAYS( [Ngày đầu tháng], [Ngày cuối tháng], "0000001" ) * 8, IF( ([Vị trí] = "Bảo vệ" \|\| [Vị trí] = "Tạp vụ") && [Mã nhân sự] != "«mã NV»", '2.1 - QL Thông tin nhân sự' .FILTER( CurrentValue.[user_id] = [Mã nhân sự] ) .[Giờ công tiêu chuẩn Bảo vệ + Tạp vụ theo tháng] .LISTCOMBINE(), IF( [Vị trí] != "Bảo vệ" && [Vị trí] != "Tạp vụ" && [Mã nhân sự] != "«mã NV»", IF( '2.6 - QL Ca làm việc khối cửa hàng - Thai sản' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Trạng thái làm việc] .UNIQUE() = "", VALUE(8), VALUE( '2.6 - QL Ca làm việc khối cửa hàng - Thai sản' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Trạng thái làm việc] .UNIQUE() ) ) * [Ngày công tiêu chuẩn], "" ) ) ) 1. Khối văn phòng 1 ngày công 8 tiếng. 2. Khối cửa hàng có bạn ca 8 tiếng, ca 12 tiếng.
16 Tổng số công Công thức Tự tính (công thức) Công thức: '3.7 - Bảng chấm công chi tiết ngày'.FILTER(CurrentValue.[Employee]=[Nhân sự]&&CurrentValue.[Date]>=[Ngày đầu tháng]&&CurrentValue.[Date]<=[Ngày cuối tháng]).[Số giờ làm việc].SUM()
17 Số phút đi muộn Công thức Tự tính (công thức) Công thức: '3.7 - Bảng chấm công chi tiết ngày'.FILTER(CurrentValue.[Employee]=[Nhân sự]&&CurrentValue.[Date]>=[Ngày đầu tháng]&&CurrentValue.[Date]<=[Ngày cuối tháng]).[Số phút đi muộn].SUM()
18 Số phút về sớm Công thức Tự tính (công thức) Công thức: '3.7 - Bảng chấm công chi tiết ngày'.FILTER(CurrentValue.[Employee]=[Nhân sự]&&CurrentValue.[Date]>=[Ngày đầu tháng]&&CurrentValue.[Date]<=[Ngày cuối tháng]).[Số phút về sớm].SUM()
19 Công nghỉ lễ - TV Công thức Tự tính (công thức) Công thức: IF( '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Trạng thái làm việc] = "Thử việc" ) .[Công lễ] .SUM() = 0, "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Trạng thái làm việc] = "Thử việc" ) .[Công lễ] .SUM() )
20 Công nghỉ lễ - CT - Trước điều chỉnh Công thức Tự tính (công thức) Công thức: IF( '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Công lễ] .SUM() = 0, "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Công lễ] .SUM() )
21 Công nghỉ lễ - CT - Sau điều chỉnh Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", "", IF( '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] > [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Công lễ] .SUM() = 0, "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] > [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Công lễ] .SUM() ) )
22 Tổng số gờ công nghỉ lễ - CT Công thức Tự tính (công thức) Công thức: IF([Công nghỉ lễ - CT - Trước điều chỉnh]+[Công nghỉ lễ - CT - Sau điều chỉnh]=0,"",[Công nghỉ lễ - CT - Trước điều chỉnh]+[Công nghỉ lễ - CT - Sau điều chỉnh])
23 Công đi làm lễ - TV Công thức Tự tính (công thức) Công thức: IF( '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] != "" ) .[Tổng giờ thực tế] .LISTCOMBINE() .SUM() = 0, "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] != "" ) .[Tổng giờ thực tế] .LISTCOMBINE() .SUM() )
24 Công đi làm lễ - CT - Trước điều chỉnh Công thức Tự tính (công thức) Công thức: IF( IF( [Ngày thay đổi trong tháng] = "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Ngày lễ] != "" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ thực tế] .SUM(), '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày thay đổi trong tháng] && CurrentValue.[Ngày lễ] != "" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ thực tế] .SUM() ) = 0, "", IF( [Ngày thay đổi trong tháng] = "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Ngày lễ] != "" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ thực tế] .SUM(), '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày thay đổi trong tháng] && CurrentValue.[Ngày lễ] != "" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ thực tế] .SUM() ) )
25 Công đi làm lễ - CT - Sau điều chỉnh Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Ngày lễ] != "" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ thực tế] .SUM() )
26 Tổng số giờ công đi làm lễ - CT Công thức Tự tính (công thức) Công thức: IF([Công đi làm lễ - CT - Trước điều chỉnh]+[Công đi làm lễ - CT - Sau điều chỉnh]=0,"",[Công đi làm lễ - CT - Trước điều chỉnh]+[Công đi làm lễ - CT - Sau điều chỉnh])
27 Công ngày thường - TTS Công thức Tự tính (công thức) Công thức: IF( IF( [Nhân sự]!="", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[Employee]=[Nhân sự] && CurrentValue.[Trạng thái làm việc]="Thực tập sinh" && CurrentValue.[Date]>=[Ngày đầu tháng] && CurrentValue.[Date]<=[Ngày cuối tháng] && CurrentValue.[Ngày lễ]="" ) .[Tổng giờ thực tế] .SUM(), '3.8 - Quản lý công Thực tập sinh' .FILTER( CurrentValue.[Mã nhân viên]=[Mã nhân sự] && CurrentValue.[Ngày xác nhận công]>=[Ngày đầu tháng] && CurrentValue.[Ngày xác nhận công]<=[Ngày cuối tháng] && CurrentValue.[Quản lý xác nhận]="Xác nhận" && CurrentValue.[Ngày lễ]="" ) .[Số giờ công làm việc] .SUM() )=0, "", IF( [Nhân sự]!="", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[Employee]=[Nhân sự] && CurrentValue.[Trạng thái làm việc]="Thực tập sinh" && CurrentValue.[Date]>=[Ngày đầu tháng] && CurrentValue.[Date]<=[Ngày cuối tháng] && CurrentValue.[Ngày lễ]="" ) .[Tổng giờ thực tế] .SUM(), '3.8 - Quản lý công Thực tập sinh' .FILTER( CurrentValue.[Mã nhân viên]=[Mã nhân sự] && CurrentValue.[Ngày xác nhận công]>=[Ngày đầu tháng] && CurrentValue.[Ngày xác nhận công]<=[Ngày cuối tháng] && CurrentValue.[Quản lý xác nhận]="Xác nhận" && CurrentValue.[Ngày lễ]="" ) .[Số giờ công làm việc] .SUM() ) ) TH1: Nếu có mã nhân viên + tài khoản Lark không trống tính công theo bảng công chi tiết TH2: Nếu có mã nhân viên không có Lark thì tìm bên bảng công thực tập sinh
28 Công ngày thường - TV Công thức Tự tính (công thức) Công thức: IF( '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] = "" ) .[Tổng giờ thực tế] .LISTCOMBINE() .SUM() = 0, "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] = "" ) .[Tổng giờ thực tế] .LISTCOMBINE() .SUM() )
29 Công ngày thường - CT - Trước điều chỉnh Công thức Tự tính (công thức) Công thức: IF( IF( [Ngày thay đổi trong tháng] = "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ thực tế] .SUM(), '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày thay đổi trong tháng] && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ thực tế] .SUM() ) = 0, "", IF( [Ngày thay đổi trong tháng] = "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ thực tế] .SUM(), '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày thay đổi trong tháng] && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ thực tế] .SUM() ) )
30 Công ngày thường - CT - Sau điều chỉnh Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ thực tế] .SUM() )
31 Tổng số giờ công ngày thường - CT Công thức Tự tính (công thức) Công thức: IF([Công ngày thường - CT - Trước điều chỉnh]+[Công ngày thường - CT - Sau điều chỉnh]=0,"",[Công ngày thường - CT - Trước điều chỉnh]+[Công ngày thường - CT - Sau điều chỉnh])
32 Công OT TV - Ngày lễ Công thức Tự tính (công thức) Công thức: IF( [Phân loại] = "Cửa hàng", IF( '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] != "" ) .[Giờ công OT - Cửa hàng] .SUM() = 0, "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] != "" ) .[Giờ công OT - Cửa hàng] .SUM() ), IF( ( 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] != "" ) .[Tổng giờ OT] .LISTCOMBINE() .SUM() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] != "" ) .[Tổng giờ OT] .LISTCOMBINE() .SUM() ) = 0, "", 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] != "" ) .[Tổng giờ OT] .LISTCOMBINE() .SUM() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] != "" ) .[Tổng giờ OT] .LISTCOMBINE() .SUM() ) ) 1. Nếu Phân loại = Cửa hàng -> Tham chiếu bảng công chi tiết 2. nếu Phân loại != Cửa hàng -> Tham chiếu phiếu OT 3. 300% lương cơ bản
33 Công OT CT - Ngày lễ - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( [Phân loại] = "Cửa hàng", IF( '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && ( CurrentValue.[Ngày lễ] != "" \|\| CurrentValue.[Công lễ] > 0 ) && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Công OT] .SUM() = 0, "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && ( CurrentValue.[Ngày lễ] != "" \|\| CurrentValue.[Công lễ] > 0 ) && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Công OT] .SUM() ), IF( ( 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Ngày lễ] != "" && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Ngày lễ] != "" && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() ) = 0, "", 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Ngày lễ] != "" && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Ngày lễ] != "" && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() ) ) 1. Nếu Phân loại = Cửa hàng -> Tham chiếu bảng công chi tiết 2. nếu Phân loại != Cửa hàng -> Tham chiếu phiếu OT
34 Công OT CT - Ngày lễ - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", "", IF( [Phân loại] != "Cửa hàng", 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Status] = "Approved" && CurrentValue.[Ngày lễ] != "" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Status] = "Approved" && CurrentValue.[Ngày lễ] != "" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM(), '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Ngày lễ] != "" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ thực tế] .SUM() ) ) 1. Nếu Phân loại = Cửa hàng -> Tham chiếu bảng công chi tiết 2. nếu Phân loại != Cửa hàng -> Tham chiếu phiếu OT
35 Tổng số giờ công OT CT - Ngày lễ Công thức Tự tính (công thức) Công thức: IF([Công OT CT - Ngày lễ - Trước thay đổi]+[Công OT CT - Ngày lễ - Sau thay đổi]=0,"",[Công OT CT - Ngày lễ - Trước thay đổi]+[Công OT CT - Ngày lễ - Sau thay đổi])
36 Công OT TV - Ngày nghỉ Công thức Tự tính (công thức) Công thức: IF( [Phân loại] = "Cửa hàng", IF( '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] = "" && (CurrentValue.[Thứ] = "T7" \|\| CurrentValue.[Thứ] = "CN") ) .[Giờ công OT - Cửa hàng] .SUM() = 0, "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] = "" && (CurrentValue.[Thứ] = "T7" \|\| CurrentValue.[Thứ] = "CN") ) .[Giờ công OT - Cửa hàng] .SUM() ), IF( ( 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] = "" && (CurrentValue.[Thứ] = "T7" \|\| CurrentValue.[Thứ] = "CN") ) .[Tổng giờ OT] .LISTCOMBINE() .SUM() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] = "" && (CurrentValue.[Thứ] = "T7" \|\| CurrentValue.[Thứ] = "CN") ) .[Tổng giờ OT] .LISTCOMBINE() .SUM() ) = 0, "", 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] = "" && (CurrentValue.[Thứ] = "T7" \|\| CurrentValue.[Thứ] = "CN") ) .[Tổng giờ OT] .LISTCOMBINE() .SUM() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] = "" && (CurrentValue.[Thứ] = "T7" \|\| CurrentValue.[Thứ] = "CN") ) .[Tổng giờ OT] .LISTCOMBINE() .SUM() ) )
37 Công OT CT - Ngày nghỉ - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( [Phân loại] = "Cửa hàng", IF( '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Ngày lễ] = "" && (CurrentValue.[Thứ] = "T7" \|\| CurrentValue.[Thứ] = "CN") && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Giờ công OT - Cửa hàng] .SUM() = 0, "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Ngày lễ] = "" && (CurrentValue.[Thứ] = "T7" \|\| CurrentValue.[Thứ] = "CN") && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Giờ công OT - Cửa hàng] .SUM() ), IF( ( 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Ngày lễ] = "" && (CurrentValue.[Thứ] = "T7" \|\| CurrentValue.[Thứ] = "CN") && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Ngày lễ] = "" && (CurrentValue.[Thứ] = "T7" \|\| CurrentValue.[Thứ] = "CN") && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() ) = 0, "", 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Ngày lễ] = "" && (CurrentValue.[Thứ] = "T7" \|\| CurrentValue.[Thứ] = "CN") && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Ngày lễ] = "" && (CurrentValue.[Thứ] = "T7" \|\| CurrentValue.[Thứ] = "CN") && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() ) )
38 Công OT CT - Ngày nghỉ - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", "", IF( [Phân loại] != "Cửa hàng", 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Status] = "Approved" && CurrentValue.[Ngày lễ] = "" && (CurrentValue.[Thứ] = "T7" \|\| CurrentValue.[Thứ] = "CN") && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Status] = "Approved" && CurrentValue.[Ngày lễ] = "" && (CurrentValue.[Thứ] = "T7" \|\| CurrentValue.[Thứ] = "CN") && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM(), '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Ngày lễ] = "" && (CurrentValue.[Thứ] = "T7" \|\| CurrentValue.[Thứ] = "CN") && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ thực tế] .SUM() ) )
39 Tổng số giờ công OT CT - Ngày nghỉ Công thức Tự tính (công thức) Công thức: IF([Công OT CT - Ngày nghỉ - Trước thay đổi]+[Công OT CT - Ngày nghỉ - Sau thay đổi]=0,"",[Công OT CT - Ngày nghỉ - Trước thay đổi]+[Công OT CT - Ngày nghỉ - Sau thay đổi])
40 Công OT TV - Ngày thường Công thức Tự tính (công thức) Công thức: IF( [Phân loại] = "Cửa hàng", IF( '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" ) .[Giờ công OT - Cửa hàng] .SUM() = 0, "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" ) .[Giờ công OT - Cửa hàng] .SUM() ), IF( ( 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" ) .[Tổng giờ OT] .LISTCOMBINE() .SUM() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" ) .[Tổng giờ OT] .LISTCOMBINE() .SUM() ) = 0, "", 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" ) .[Tổng giờ OT] .LISTCOMBINE() .SUM() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Thử việc" && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" ) .[Tổng giờ OT] .LISTCOMBINE() .SUM() ) )
41 Công OT CT - Ngày thường - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( [Phân loại] = "Cửa hàng", IF( '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Giờ công OT - Cửa hàng] .SUM() = 0, "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Giờ công OT - Cửa hàng] .SUM() ), IF( ( 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() ) = 0, "", 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" && CurrentValue.[Status] = "Approved" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() ) )
42 Công OT CT - Ngày thường - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", "", IF( [Phân loại] != "Cửa hàng", IF( ( 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Status] = "Approved" && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Status] = "Approved" && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() ) = 0, "", 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Status] = "Approved" && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Status] = "Approved" && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Tổng giờ OT] .SUM() ), IF( '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Giờ công OT - Cửa hàng] .SUM() = 0, "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[User id] = [Mã nhân sự] && CurrentValue.[Date] >= [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Ngày lễ] = "" && CurrentValue.[Thứ] != "T7" && CurrentValue.[Thứ] != "CN" && CurrentValue.[Trạng thái làm việc] = "Chính thức" ) .[Giờ công OT - Cửa hàng] .SUM() ) ) )
43 Tổng số giờ công OT CT - Ngày thường Công thức Tự tính (công thức) Công thức: IF([Công OT CT - Ngày thường - Trước thay đổi]+[Công OT CT - Ngày thường - Sau thay đổi]=0,"",[Công OT CT - Ngày thường - Trước thay đổi]+[Công OT CT - Ngày thường - Sau thay đổi])
44 Công nghỉ phép - Trước thay đổi - Cửa hàng Công thức Tự tính (công thức) Công thức: IF( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Trạng thái phiếu cuối cùng] = "Approved" ) .[Tổng thời gian nghỉ] .SUM() = 0, "", 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày đầu tháng] && CurrentValue.[Date] <= IF( [Ngày thay đổi trong tháng] = "", [Ngày cuối tháng], [Ngày thay đổi trong tháng] ) && CurrentValue.[Trạng thái phiếu cuối cùng] = "Approved" ) .[Tổng thời gian nghỉ] .SUM() )
45 Công nghỉ phép - Sau thay đổi - Cửa hàng Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", "", IF( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Trạng thái phiếu cuối cùng] = "Approved" ) .[Tổng thời gian nghỉ] .SUM() = 0, "", 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Date] >= [Ngày thay đổi trong tháng] && CurrentValue.[Date] <= [Ngày cuối tháng] && CurrentValue.[Trạng thái phiếu cuối cùng] = "Approved" ) .[Tổng thời gian nghỉ] .SUM() ) )
46 Tổng số giờ công nghỉ phép - Cửa hàng Công thức Tự tính (công thức) Công thức: IF([Công nghỉ phép - Trước thay đổi - Cửa hàng]+[Công nghỉ phép - Sau thay đổi - Cửa hàng]=0,"",[Công nghỉ phép - Trước thay đổi - Cửa hàng]+[Công nghỉ phép - Sau thay đổi - Cửa hàng])
47 Số giờ công ra ngoài việc cá nhân Công thức Tự tính (công thức) Công thức: IF( 'Phiếu xin ra ngoài cho việc cá nhân_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Start time] >= [Ngày đầu tháng] && CurrentValue.[Start time] <= [Ngày cuối tháng] && CurrentValue.[Trạng thái phiếu cuối cùng] = "Approved" ) .[Tổng thời gian nghỉ] .SUM() = 0, "", 'Phiếu xin ra ngoài cho việc cá nhân_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Nhân sự] && CurrentValue.[Start time] >= [Ngày đầu tháng] && CurrentValue.[Start time] <= [Ngày cuối tháng] && CurrentValue.[Trạng thái phiếu cuối cùng] = "Approved" ) .[Tổng thời gian nghỉ] .SUM() ) - công này trên bảng
48 Số giờ công WFH Công thức Tự tính (công thức) Công thức: '3.7 - Bảng chấm công chi tiết ngày'.FILTER(CurrentValue.[Date]>=[Ngày đầu tháng]&&CurrentValue.[Date]<=[Ngày cuối tháng]&&CurrentValue.[User id]=[Mã nhân sự]).[Công WFH].SUM() - công này trên bảng
49 Số giờ công remote Công thức Tự tính (công thức) Công thức: '3.7 - Bảng chấm công chi tiết ngày'.FILTER(CurrentValue.[Date]>=[Ngày đầu tháng]&&CurrentValue.[Date]<=[Ngày cuối tháng]&&CurrentValue.[User id]=[Mã nhân sự]).[Công Remote].SUM() - công này trên bảng
50 Tổng công - Bảo vệ + Tạp vụ Công thức Tự tính (công thức) Công thức: IF('3.9 - Bảng công bảo vệ + Tạp vụ'.FILTER(CurrentValue.[Ngày làm việc]>=[Ngày đầu tháng]&&CurrentValue.[Ngày làm việc]<=[Ngày cuối tháng]&&CurrentValue.[user_id]=[Mã nhân sự]).[Giờ công].SUM()=0,"",'3.9 - Bảng công bảo vệ + Tạp vụ'.FILTER(CurrentValue.[Ngày làm việc]>=[Ngày đầu tháng]&&CurrentValue.[Ngày làm việc]<=[Ngày cuối tháng]&&CurrentValue.[user_id]=[Mã nhân sự]).[Giờ công].SUM())
51 Tổng công - TTS Công thức Tự tính (công thức) Công thức: [Công ngày thường - TTS]
52 Tổng công - Thử việc Công thức Tự tính (công thức) Công thức: IF([Công nghỉ lễ - TV]+[Công đi làm lễ - TV]+[Công ngày thường - TV]+[Công OT TV - Ngày lễ]+[Công OT TV - Ngày nghỉ] + [Công OT TV - Ngày thường]=0,"",[Công nghỉ lễ - TV]+[Công đi làm lễ - TV]+[Công ngày thường - TV]+[Công OT TV - Ngày lễ]+[Công OT TV - Ngày nghỉ] + [Công OT TV - Ngày thường])
53 Tổng công chính thức - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( [Công nghỉ lễ - CT - Trước điều chỉnh] + [Công đi làm lễ - CT - Trước điều chỉnh] + [Công ngày thường - CT - Trước điều chỉnh] + [Công OT CT - Ngày lễ - Trước thay đổi] + [Công OT CT - Ngày nghỉ - Trước thay đổi] + [Công OT CT - Ngày thường - Trước thay đổi] + [Công nghỉ phép - Trước thay đổi - Cửa hàng] = 0, "", [Công nghỉ lễ - CT - Trước điều chỉnh] + [Công đi làm lễ - CT - Trước điều chỉnh] + [Công ngày thường - CT - Trước điều chỉnh] + [Công OT CT - Ngày lễ - Trước thay đổi] + [Công OT CT - Ngày nghỉ - Trước thay đổi] + [Công OT CT - Ngày thường - Trước thay đổi] + [Công nghỉ phép - Trước thay đổi - Cửa hàng] )
54 Tổng công chính thức - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( [Công nghỉ lễ - CT - Sau điều chỉnh] + [Công đi làm lễ - CT - Sau điều chỉnh] + [Công OT CT - Ngày lễ - Sau thay đổi] + [Công OT CT - Ngày nghỉ - Sau thay đổi] + [Công OT CT - Ngày thường - Sau thay đổi] + [Công ngày thường - CT - Sau điều chỉnh] + [Công nghỉ phép - Sau thay đổi - Cửa hàng] = 0, "", [Công nghỉ lễ - CT - Sau điều chỉnh] + [Công đi làm lễ - CT - Sau điều chỉnh] + [Công OT CT - Ngày lễ - Sau thay đổi] + [Công OT CT - Ngày nghỉ - Sau thay đổi] + [Công OT CT - Ngày thường - Sau thay đổi] + [Công ngày thường - CT - Sau điều chỉnh] + [Công nghỉ phép - Sau thay đổi - Cửa hàng] )
55 Tổng công - Chính thức Công thức Tự tính (công thức) Công thức: IF([Tổng công chính thức - Trước thay đổi]+[Tổng công chính thức - Sau thay đổi]=0,"",[Tổng công chính thức - Trước thay đổi]+[Tổng công chính thức - Sau thay đổi])
56 Tổng công Công thức Tự tính (công thức) Công thức: IF( [Phân loại] = "Full công", [Giờ công tiêu chuẩn], IF( [Phân loại] = "Cửa hàng", IF( [Tổng công - TTS] + [Tổng công - Thử việc] + [Số giờ công remote] + [Số giờ công WFH] + [Tổng công - Chính thức] - [Số giờ công ra ngoài việc cá nhân] - [Tổng số giờ công OT CT - Ngày thường] - [Tổng số giờ công OT CT - Ngày nghỉ] = 0, "", [Tổng công - TTS] + [Tổng công - Thử việc] + [Số giờ công remote] + [Số giờ công WFH] + [Tổng công - Chính thức] - [Số giờ công ra ngoài việc cá nhân] - [Tổng số giờ công OT CT - Ngày thường] - [Tổng số giờ công OT CT - Ngày nghỉ] ), IF( [Tổng công - TTS] + [Tổng công - Thử việc] + [Số giờ công remote] + [Số giờ công WFH] + [Tổng công - Chính thức] - [Số giờ công ra ngoài việc cá nhân] = 0, "", [Tổng công - TTS] + [Tổng công - Thử việc] + [Số giờ công remote] + [Số giờ công WFH] + [Tổng công - Chính thức] - [Số giờ công ra ngoài việc cá nhân] ) ) )
57 Text Công thức Tự tính (công thức) Công thức: IF( [Phân loại] = "Full công", [Giờ công tiêu chuẩn], IF( [Phân loại] = "Cửa hàng", IF( [Tổng công - TTS] + [Tổng công - Thử việc] + [Số giờ công remote] + [Số giờ công WFH] + [Tổng công - Chính thức] - [Số giờ công ra ngoài việc cá nhân] - [Tổng số giờ công OT CT - Ngày thường] - [Tổng số giờ công OT CT - Ngày nghỉ] = 0, "", [Tổng công - TTS] + [Tổng công - Thử việc] + [Số giờ công remote] + [Số giờ công WFH] + [Tổng công - Chính thức] - [Số giờ công ra ngoài việc cá nhân] - [Tổng số giờ công OT CT - Ngày thường] - [Tổng số giờ công OT CT - Ngày nghỉ] ), IF( [Tổng công - TTS] + [Tổng công - Thử việc] + [Số giờ công remote] + [Số giờ công WFH] + [Tổng công - Chính thức] - [Số giờ công ra ngoài việc cá nhân] = 0, "", [Tổng công - TTS] + [Tổng công - Thử việc] + [Số giờ công remote] + [Số giờ công WFH] + [Tổng công - Chính thức] - [Số giờ công ra ngoài việc cá nhân] ) ) )
58 Xác nhận công Chọn một Nhập liệu Lựa chọn: Xác nhận công
59 Gửi mail bảng công Nút bấm Nút (automation) Nút bấm trên Base (kích hoạt automation) — cần xác nhận hành động
60 Update công tính lương Nút bấm Nút (automation) Nút bấm trên Base (kích hoạt automation) — cần xác nhận hành động
61 Check trùng Công thức Tự tính (công thức) Công thức: IF('3.0 - Bảng tính công tổng hợp - Attendance'.COUNTIF(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Ngày đầu tháng]=[Ngày đầu tháng])>1,"🚫repetitive","")
62 User_id Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Mã nhân sự]. Biểu thức: '3.0 - Bảng tính công tổng hợp - Attendance'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Ngày đầu tháng]=[Ngày đầu tháng]).[Mã nhân sự].LISTCOMBINE()
63 Tháng Công thức Tự tính (công thức) Công thức: "Tháng "&MONTH([Ngày đầu tháng])&"/"&YEAR([Ngày đầu tháng])
64 Số giờ công lớn nhất tại 1 địa điểm Công thức Tự tính (công thức) Công thức: '3.10 - Công theo địa điểm chấm công'.FILTER(CurrentValue.[Tháng]=[Tháng]&&CurrentValue.[User id]=[Mã nhân sự]).[Sum: Tổng giờ thực tế].MAX()
65 Cửa hàng tính thưởng Công thức Tự tính (công thức) Công thức: '3.10 - Công theo địa điểm chấm công'.FILTER(CurrentValue.[User id]=[User_id]&&CurrentValue.[Tháng]=[Tháng]&&CurrentValue.[Sum: Tổng giờ thực tế]=[Số giờ công lớn nhất tại 1 địa điểm]).[Check out location name].LIST()
66 Confirm_Status Chọn một Nhập liệu Lựa chọn: Pending, Confirmed
67 Confirmed_At Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
68 Active_Snapshot_Ver Số Nhập liệu Định dạng 0
69 Unlock_Request Checkbox Nhập liệu

3.1 - Bảng tính công tổng hợp - Tính lương

  • Table ID: tbleH0TjZdye5kJA · Base: Base HRIS (nhân sự, công, lương) · Số cột: 58 · Cột chính: Ngày đầu tháng
  • Khoá trong config/lark-tables.mjs: HRIS.CONG_TINH_LUONG
  • Code ONE-ANNA tham chiếu: apps/api/src/portal/payroll-31-resync/heal.js, legacy/gas/MaHoSoNhanVien.js, legacy/gas/Mã.js, scripts/lib/resync-confirmed-payroll-31-lib.mjs
  • Liên kết tới: 2.1 - QL Thông tin nhân sự
  • Cơ cấu cột: 22 công thức · 3 tra cứu · 1 liên kết · 32 cột nhập/hệ thống

Ghi chú nghiệp vụ: công tổng hợp dùng để tính lương. Job healDriftedPayroll31 đồng bộ lại 3.1 khi snapshot 3.0 lệch (tối đa 20 dòng/lượt) và xử lý trường hợp HR xoá xác nhận; có cơ chế thử lại payroll-31-retry (thẻ Lark). ID cũ tblpWV11cfsbZUrl đã chết (404) — không dùng lại.

# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày đầu tháng 🔑 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
2 Ngày thay đổi trong tháng Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày bắt đầu]. Biểu thức: '4.3.1 - Khai báo thu nhập nhân sự'.FILTER(CurrentValue.[Ngày bắt đầu]>=[Ngày đầu tháng]&&CurrentValue.[Ngày kết thúc]<=[Ngày cuối tháng]&&CurrentValue.[Nhân sự]=[Nhân sự]).[Ngày bắt đầu].LISTCOMBINE()
3 Ngày bắt đầu làm việc Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày bắt đầu]. Biểu thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]).[Ngày bắt đầu].LISTCOMBINE().MIN()
4 Ngày cuối tháng Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
5 Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.1 - QL Thông tin nhân sự (một bản ghi); cột đối ứng: [3.1 - Bảng tính công tổng hợp - Tính lương]
6 Nhân sự Công thức Tự tính (công thức) Công thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[user].LISTCOMBINE()
7 Họ và tên Công thức Tự tính (công thức) Công thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[Họ và tên].LISTCOMBINE()
8 Email cá nhân Công thức Tự tính (công thức) Công thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[Email cá nhân]
9 Ngày thay đổi quá trình làm việc gần nhất Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Ngày bắt đầu]>=[Ngày đầu tháng]&&CurrentValue.[Ngày bắt đầu]<=[Ngày cuối tháng]).[Ngày bắt đầu].UNIQUE()
10 Trạng thái làm việc Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Ngày bắt đầu]=[Ngày thay đổi quá trình làm việc gần nhất]).[Trạng thái làm việc].UNIQUE()
11 Đơn vị Công thức Tự tính (công thức) Công thức: IF( [Mã nhân sự] = "", "", SUBSTITUTE( '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Nhân sự] = [Nhân sự] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && OR( CurrentValue.[Ngày kết thúc] = "", CurrentValue.[Ngày kết thúc] + 1 >= [Ngày đầu tháng] ) ) .[Đơn vị], "[", "" ).SUBSTITUTE("]", "") )
12 Vị trí Công thức Tự tính (công thức) Công thức: IF( [Mã nhân sự] = "", "", SUBSTITUTE( '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && OR( CurrentValue.[Ngày kết thúc] = "", CurrentValue.[Ngày kết thúc] + 1 >= [Ngày đầu tháng] ) ) .[Vị trí], "[", "" ).SUBSTITUTE("]", "") )
13 Phân loại Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Phân loại]. Biểu thức: '0.0.2 - Khai báo - Sơ đồ tổ chức'.FILTER(CurrentValue.[Đơn vị]=[Đơn vị]&&CurrentValue.[Vị trí]=[Vị trí]).[Phân loại].LISTCOMBINE().UNIQUE()
14 Ngày công tiêu chuẩn Công thức Tự tính (công thức) Công thức: IF([Phân loại]="Full công",NETWORKDAYS([Ngày đầu tháng],[Ngày cuối tháng]),'3.2 - Quy tắc nghỉ'.FILTER(CurrentValue.[Ngày tạo]>=[Ngày đầu tháng]&&CurrentValue.[Ngày tạo]<=[Ngày cuối tháng]&&CurrentValue.[Phân loại]=[Phân loại]).[Công chuẩn theo tháng].UNIQUE())
15 Giờ công tiêu chuẩn Công thức Tự tính (công thức) Công thức: IF( [Vị trí] = "Tạp vụ" && [Mã nhân sự] = "«mã NV»", NETWORKDAYS( [Ngày đầu tháng], [Ngày cuối tháng], "0000001" ) * 8, IF( ([Vị trí] = "Bảo vệ" \|\| [Vị trí] = "Tạp vụ") && [Mã nhân sự] != "«mã NV»", '2.1 - QL Thông tin nhân sự' .FILTER( CurrentValue.[user_id] = [Mã nhân sự] ) .[Giờ công tiêu chuẩn Bảo vệ + Tạp vụ theo tháng] .LISTCOMBINE(), IF( [Vị trí] != "Bảo vệ" && [Vị trí] != "Tạp vụ" && [Mã nhân sự] != "«mã NV»", IF( '2.6 - QL Ca làm việc khối cửa hàng - Thai sản' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Trạng thái làm việc] .UNIQUE() = "", VALUE(8), VALUE( '2.6 - QL Ca làm việc khối cửa hàng - Thai sản' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Trạng thái làm việc] .UNIQUE() ) ) * [Ngày công tiêu chuẩn], "" ) ) ) 1. Khối văn phòng 1 ngày công 8 tiếng. 2. Khối cửa hàng có bạn ca 8 tiếng, ca 12 tiếng.
16 Tổng số công Số Nhập liệu Định dạng 0.0
17 Số phút đi muộn Số Nhập liệu Định dạng 0.0
18 Số phút về sớm Công thức Tự tính (công thức) Công thức: '3.7 - Bảng chấm công chi tiết ngày'.FILTER(CurrentValue.[Employee]=[Nhân sự]&&CurrentValue.[Date]>=[Ngày đầu tháng]&&CurrentValue.[Date]<=[Ngày cuối tháng]).[Số phút về sớm].SUM()
19 Công nghỉ lễ - TV Số Nhập liệu Định dạng 0.0
20 Công nghỉ lễ - CT - Trước điều chỉnh Số Nhập liệu Định dạng 0.0
21 Công nghỉ lễ - CT - Sau điều chỉnh Số Nhập liệu Định dạng 0.0
22 Tổng số gờ công nghỉ lễ - CT Công thức Tự tính (công thức) Công thức: IF([Công nghỉ lễ - CT - Trước điều chỉnh]+[Công nghỉ lễ - CT - Sau điều chỉnh]=0,"",[Công nghỉ lễ - CT - Trước điều chỉnh]+[Công nghỉ lễ - CT - Sau điều chỉnh])
23 Công đi làm lễ - TV Số Nhập liệu Định dạng 0.0
24 Công đi làm lễ - CT - Trước điều chỉnh Số Nhập liệu Định dạng 0.0
25 Công đi làm lễ - CT - Sau điều chỉnh Số Nhập liệu Định dạng 0.0
26 Tổng số giờ công đi làm lễ - CT Công thức Tự tính (công thức) Công thức: IF([Công đi làm lễ - CT - Trước điều chỉnh]+[Công đi làm lễ - CT - Sau điều chỉnh]=0,"",[Công đi làm lễ - CT - Trước điều chỉnh]+[Công đi làm lễ - CT - Sau điều chỉnh])
27 Công ngày thường - TTS Số Nhập liệu Định dạng 0.0 TH1: Nếu có mã nhân viên + tài khoản Lark không trống tính công theo bảng công chi tiết TH2: Nếu có mã nhân viên không có Lark thì tìm bên bảng công thực tập sinh
28 Công ngày thường - TV Số Nhập liệu Định dạng 0.0
29 Công ngày thường - CT - Trước điều chỉnh Số Nhập liệu Định dạng 0.0
30 Công ngày thường - CT - Sau điều chỉnh Số Nhập liệu Định dạng 0.0
31 Tổng số giờ công ngày thường - CT Công thức Tự tính (công thức) Công thức: IF([Công ngày thường - CT - Trước điều chỉnh]+[Công ngày thường - CT - Sau điều chỉnh]=0,"",[Công ngày thường - CT - Trước điều chỉnh]+[Công ngày thường - CT - Sau điều chỉnh])
32 Công OT TV - Ngày lễ Số Nhập liệu Định dạng 0.0 1. Nếu Phân loại = Cửa hàng -> Tham chiếu bảng công chi tiết 2. nếu Phân loại != Cửa hàng -> Tham chiếu phiếu OT 3. 300% lương cơ bản
33 Công OT CT - Ngày lễ - Trước thay đổi Số Nhập liệu Định dạng 0.0 1. Nếu Phân loại = Cửa hàng -> Tham chiếu bảng công chi tiết 2. nếu Phân loại != Cửa hàng -> Tham chiếu phiếu OT
34 Công OT CT - Ngày lễ - Sau thay đổi Số Nhập liệu Định dạng 0.0 1. Nếu Phân loại = Cửa hàng -> Tham chiếu bảng công chi tiết 2. nếu Phân loại != Cửa hàng -> Tham chiếu phiếu OT
35 Tổng số giờ công OT CT - Ngày lễ Công thức Tự tính (công thức) Công thức: IF([Công OT CT - Ngày lễ - Trước thay đổi]+[Công OT CT - Ngày lễ - Sau thay đổi]=0,"",[Công OT CT - Ngày lễ - Trước thay đổi]+[Công OT CT - Ngày lễ - Sau thay đổi])
36 Công OT TV - Ngày nghỉ Số Nhập liệu Định dạng 0.0
37 Công OT CT - Ngày nghỉ - Trước thay đổi Số Nhập liệu Định dạng 0.00
38 Công OT CT - Ngày nghỉ - Sau thay đổi Số Nhập liệu Định dạng 0.0
39 Tổng số giờ công OT CT - Ngày nghỉ Công thức Tự tính (công thức) Công thức: IF([Công OT CT - Ngày nghỉ - Trước thay đổi]+[Công OT CT - Ngày nghỉ - Sau thay đổi]=0,"",[Công OT CT - Ngày nghỉ - Trước thay đổi]+[Công OT CT - Ngày nghỉ - Sau thay đổi])
40 Công OT TV - Ngày thường Số Nhập liệu Định dạng 0.00
41 Công OT CT - Ngày thường - Trước thay đổi Số Nhập liệu Định dạng 0.00
42 Công OT CT - Ngày thường - Sau thay đổi Số Nhập liệu Định dạng 0.0
43 Tổng số giờ công OT CT - Ngày thường Công thức Tự tính (công thức) Công thức: IF([Công OT CT - Ngày thường - Trước thay đổi]+[Công OT CT - Ngày thường - Sau thay đổi]=0,"",[Công OT CT - Ngày thường - Trước thay đổi]+[Công OT CT - Ngày thường - Sau thay đổi])
44 Công nghỉ phép - Trước thay đổi - Cửa hàng Số Nhập liệu Định dạng 0.00
45 Công nghỉ phép - Sau thay đổi - Cửa hàng Số Nhập liệu Định dạng 0.0
46 Tổng số giờ công nghỉ phép - Cửa hàng Công thức Tự tính (công thức) Công thức: IF([Công nghỉ phép - Trước thay đổi - Cửa hàng]+[Công nghỉ phép - Sau thay đổi - Cửa hàng]=0,"",[Công nghỉ phép - Trước thay đổi - Cửa hàng]+[Công nghỉ phép - Sau thay đổi - Cửa hàng])
47 Số giờ công ra ngoài việc cá nhân Số Nhập liệu Định dạng 0.0 - công này trên bảng
48 Số giờ công WFH Số Nhập liệu Định dạng 0.00
49 Số giờ công remote Số Nhập liệu Định dạng 0.00
50 Tổng công - Bảo vệ + Tạp vụ Số Nhập liệu Định dạng 0.0
51 Tổng công - TTS Số Nhập liệu Định dạng 0.0
52 Tổng công - Thử việc Số Nhập liệu Định dạng 0.0
53 Tổng công chính thức - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF([Công nghỉ lễ - CT - Trước điều chỉnh]+[Công đi làm lễ - CT - Trước điều chỉnh]+[Công ngày thường - CT - Trước điều chỉnh]+[Công OT CT - Ngày lễ - Trước thay đổi]+[Công OT CT - Ngày nghỉ - Trước thay đổi]+[Công OT CT - Ngày thường - Trước thay đổi]+[Công nghỉ phép - Trước thay đổi - Cửa hàng]=0,"",[Công nghỉ lễ - CT - Trước điều chỉnh]+[Công đi làm lễ - CT - Trước điều chỉnh]+[Công ngày thường - CT - Trước điều chỉnh]+[Công OT CT - Ngày lễ - Trước thay đổi]+[Công OT CT - Ngày nghỉ - Trước thay đổi]+[Công OT CT - Ngày thường - Trước thay đổi]+[Công nghỉ phép - Trước thay đổi - Cửa hàng])
54 Tổng công chính thức - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF([Công nghỉ lễ - CT - Sau điều chỉnh]+[Công đi làm lễ - CT - Sau điều chỉnh]+[Công OT CT - Ngày lễ - Sau thay đổi]+[Công OT CT - Ngày nghỉ - Sau thay đổi]+[Công OT CT - Ngày thường - Sau thay đổi]+[Công ngày thường - CT - Sau điều chỉnh]+[Công nghỉ phép - Sau thay đổi - Cửa hàng]=0,"",[Công nghỉ lễ - CT - Sau điều chỉnh]+[Công đi làm lễ - CT - Sau điều chỉnh]+[Công OT CT - Ngày lễ - Sau thay đổi]+[Công OT CT - Ngày nghỉ - Sau thay đổi]+[Công OT CT - Ngày thường - Sau thay đổi]+[Công ngày thường - CT - Sau điều chỉnh]+[Công nghỉ phép - Sau thay đổi - Cửa hàng])
55 Tổng công - Chính thức Công thức Tự tính (công thức) Công thức: IF([Tổng công chính thức - Trước thay đổi]+[Tổng công chính thức - Sau thay đổi]=0,"",[Tổng công chính thức - Trước thay đổi]+[Tổng công chính thức - Sau thay đổi])
56 Tổng công Công thức Tự tính (công thức) Công thức: IF([Phân loại]="Full công",[Giờ công tiêu chuẩn],IF([Phân loại]="Cửa hàng",IF([Tổng công - TTS]+[Tổng công - Thử việc]+[Số giờ công remote]+[Số giờ công WFH]+[Tổng công - Chính thức]-[Số giờ công ra ngoài việc cá nhân]-[Tổng số giờ công OT CT - Ngày thường]-[Tổng số giờ công OT CT - Ngày nghỉ]=0,"",[Tổng công - TTS]+[Tổng công - Thử việc]+[Số giờ công remote]+[Số giờ công WFH]+[Tổng công - Chính thức]-[Số giờ công ra ngoài việc cá nhân]-[Tổng số giờ công OT CT - Ngày thường]-[Tổng số giờ công OT CT - Ngày nghỉ]),IF([Tổng công - TTS]+[Tổng công - Thử việc]+[Số giờ công remote]+[Số giờ công WFH]+[Tổng công - Chính thức]-[Số giờ công ra ngoài việc cá nhân]=0,"",[Tổng công - TTS]+[Tổng công - Thử việc]+[Số giờ công remote]+[Số giờ công WFH]+[Tổng công - Chính thức]-[Số giờ công ra ngoài việc cá nhân])))
57 Xác nhận công Chọn một Nhập liệu Lựa chọn: Xác nhận công
58 Check trùng Công thức Tự tính (công thức) Công thức: IF('3.1 - Bảng tính công tổng hợp - Tính lương'.COUNTIF(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Ngày đầu tháng]=[Ngày đầu tháng])>1,"🚫repetitive","")

3.2 - Quy tắc nghỉ

  • Table ID: tblqyDw83p3XFgC0 · Base: Base HRIS (nhân sự, công, lương) · Số cột: 7 · Cột chính: Phân loại
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 2 công thức · 3 tra cứu · 0 liên kết · 2 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Phân loại 🔑 Văn bản Nhập liệu
2 Tháng Công thức Tự tính (công thức) Công thức: "Tháng "&MONTH([Ngày tạo])&"/"&YEAR([Ngày tạo])
3 Days of month Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày]. Biểu thức: '3.3 - Lịch tháng'.FILTER(CurrentValue.[Tháng]=[Tháng]).[Ngày].LISTCOMBINE().COUNTA()
4 Saturday of month Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày]. Biểu thức: '3.3 - Lịch tháng'.FILTER(CurrentValue.[Thứ]='3.3 - Lịch tháng'.[Thứ].$option[optAflLuPW]&&CurrentValue.[Tháng]=[Tháng]).[Ngày].LISTCOMBINE().COUNTA()
5 Sunday of month Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày]. Biểu thức: '3.3 - Lịch tháng'.FILTER(CurrentValue.[Thứ]='3.3 - Lịch tháng'.[Thứ].$option[optAUlztPe]&&CurrentValue.[Tháng]=[Tháng]).[Ngày].LISTCOMBINE().COUNTA()
6 Công chuẩn theo tháng Công thức Tự tính (công thức) Công thức: SWITCH( [Phân loại], "Văn phòng", [Days of month] - [Sunday of month] - ([Saturday of month] / 2), "Ecom", [Days of month] - [Sunday of month] - ([Saturday of month] / 2), "Kho vận", [Days of month] - [Sunday of month], "Trực page", [Days of month] - [Sunday of month], "CSKH", [Days of month] - [Sunday of month], "AM", 26, "Cửa hàng", 26, "Full công", [Days of month] - [Saturday of month] - [Sunday of month], "" )
7 Ngày tạo Ngày giờ Nhập liệu Định dạng dd/MM/yyyy · tự điền

3.3 - Lịch tháng

  • Table ID: tblLj0wHDpBj9pRr · Base: Base HRIS (nhân sự, công, lương) · Số cột: 6 · Cột chính: Ngày
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 4 công thức · 0 tra cứu · 0 liên kết · 2 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày 🔑 Ngày giờ Nhập liệu Định dạng dd/MM/yyyy
2 Tháng Công thức Tự tính (công thức) Công thức: "Tháng "&MONTH([Ngày])&"/"&YEAR([Ngày])
3 Thứ Công thức Tự tính (công thức) Công thức: SWITCH( WEEKDAY([Ngày]), 1, "CN", 2, "T2", 3, "T3", 4, "T4", 5, "T5", 6, "T6", 7, "T7", "" )
4 Ngày nghỉ lễ Chọn một Nhập liệu Lựa chọn: Nghỉ lễ
5 Record ID Công thức Tự tính (công thức) Công thức: RECORD_ID()
6 Ngày_Text Công thức Tự tính (công thức) Công thức: TEXT([Ngày],"dd/mm/yyyy")

3.4 - Đăng ký ca_Cửa hàng

  • Table ID: tbl2rbpYE639zVRc · Base: Base HRIS (nhân sự, công, lương) · Số cột: 37 · Cột chính: Họ và tên
  • Khoá trong config/lark-tables.mjs: HRIS.DANG_KY_CA
  • Code ONE-ANNA tham chiếu: apps/api/src/portal/dup-alert/config.js, legacy/gas/Mã.js
  • Cơ cấu cột: 24 công thức · 2 tra cứu · 0 liên kết · 11 cột nhập/hệ thống

Ghi chú nghiệp vụ: nhân sự cửa hàng đăng ký ca theo ngày (6 khung Ca1…Ca6). Nguồn của "Lịch làm việc" trên Trang chủ và getPersonalWorkSchedule. Job scanDuplicateRecords (mỗi 30 phút 06:00–23:00 VN) quét bản ghi trùng ở 3.4/3.6/3.7 và gửi thẻ có nút xoá (mặc định dry-run).

# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Họ và tên 🔑 Công thức Tự tính (công thức) Công thức: [Account]
2 Account Người (User) Nhập liệu Một người
3 Vị trí Công thức Tự tính (công thức) Công thức: '2.4 - QL Quá trình thay đổi vị trí'.FILTER(CurrentValue.[Nhân sự]=[Account]&&CurrentValue.[Ngày bắt đầu]=[Ngày thay đổi gần nhất]).[Vị trí].UNIQUE()
4 User_id Công thức Tự tính (công thức) Công thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[Account]).[user_id].LISTCOMBINE().UNIQUE()
5 Cửa hàng Công thức Tự tính (công thức) Công thức: '2.4 - QL Quá trình thay đổi vị trí'.FILTER(CurrentValue.[Ngày bắt đầu]=[Ngày thay đổi gần nhất]&&CurrentValue.[Nhân sự]=[Account]).[Đơn vị].UNIQUE()
6 AM Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [parent_department_name]. Biểu thức: '7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[Cửa hàng]).[parent_department_name].LISTCOMBINE().UNIQUE()
7 Leader Công thức Tự tính (công thức) Công thức: '7.1.1 - Danh sách nhân sự hệ thống'.FILTER([Tên leader].CONTAINTEXT(CurrentValue.[name])).[user].LISTCOMBINE()
8 Tên TCH Công thức Tự tính (công thức) Công thức: IF('7.1.1 - Danh sách nhân sự hệ thống'.FILTER(CurrentValue.[user]=[Họ và tên]).[leader].LISTCOMBINE()=[Leader],[Họ và tên],'7.1.1 - Danh sách nhân sự hệ thống'.FILTER(CurrentValue.[user]=[Họ và tên]).[leader].LISTCOMBINE().UNIQUE())
9 TCH Công thức Tự tính (công thức) Công thức: '7.1.1 - Danh sách nhân sự hệ thống'.FILTER(CurrentValue.[name]=[Tên TCH]).[user]
10 Tên leader Công thức Tự tính (công thức) Công thức: SUBSTITUTE(SUBSTITUTE(IF('7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[AM]).[leader]="",'7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[AM khi điều chuyển]).[leader],IF('7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[AM khi điều chuyển]).[leader]="",'7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[AM]).[leader],'7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[AM]).[leader]&", "&'7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[AM khi điều chuyển]).[leader].UNIQUE())),"[",""),"]","")
11 Ngày làm việc Ngày giờ Nhập liệu Định dạng dd/MM/yyyy
12 Thứ Công thức Tự tính (công thức) Công thức: SWITCH( WEEKDAY([Ngày làm việc]), 1, "Chủ Nhật", 2, "Thứ Hai", 3, "Thứ Ba", 4, "Thứ Tư", 5, "Thứ Năm", 6, "Thứ Sáu", 7, "Thứ Bảy", "" )
13 Ngày làm việc_Text Công thức Tự tính (công thức) Công thức: TEXT([Ngày làm việc],"DD/MM/YYYY")
14 AM khi điều chuyển Công thức Tự tính (công thức) Công thức: '7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[Đi ca CH khác]).[parent_department_name].LISTCOMBINE()
15 Thời gian làm việc UTC0 Công thức Tự tính (công thức) Công thức: [Ngày làm việc]-DURATION(0,TEXT([Ngày làm việc],"HH"))
16 Tuần Công thức Tự tính (công thức) Công thức: "Tuần "&(WEEKNUM([Ngày làm việc],2)-WEEKNUM(TODATE(TEXT([Ngày làm việc],"YYYY/MM")&"/01"),2)+1)
17 Tháng Công thức Tự tính (công thức) Công thức: "Tháng "&MONTH([Ngày làm việc])&"/"&YEAR([Ngày làm việc])
18 Đi ca CH khác Chọn một Nhập liệu 90 lựa chọn (không liệt kê)
19 Ca1_(08:00 a.m - 09:00 a.m) Chọn một Nhập liệu Lựa chọn: 0.5, 1, 1.5, 2, 2.5, 3, OFF PHÉP, School Tour, Đào tạo, OFF, 2
20 Ca2_(09:00 a.m - 12:00 p.m) Chọn một Nhập liệu Lựa chọn: 0.5, 0.75, 1.75, 1, 1.5, 2, 2.25, 2.50, 2.75, 2.5, 3, OFF, OFF Phép
21 Ca3_(12:00 p.m - 15:00 p.m) Chọn một Nhập liệu Lựa chọn: 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.5, 3, OFF Phép, OFF,
22 Ca4_(15:00 p.m - 18:00 p.m) Chọn một Nhập liệu Lựa chọn: 1, 2, 3, 1.5, 2.5, 0.5, 0.25, 1.75, 1.25, 0.75, 2.25, 2.75, OFF, «mã NV»
23 Ca5_(18:00 p.m - 21:00 p.m) Chọn một Nhập liệu Lựa chọn: 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.5, 2.75, 3, OFF Phép, OFF, «tên người»
24 Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca Chọn một Nhập liệu Lựa chọn: 0.25, 0.50, 0.75, 1, 1.5, 3, 2, 2.25, 2.5, 2.75, 4, 5, 3.5, 4.5, Kỹ thuật viên Khúc xạ
25 Tổng giờ làm việc Công thức Tự tính (công thức) Công thức: IF( OR( [Ca1_(08:00 a.m - 09:00 a.m)] = "off", [Ca2_(09:00 a.m - 12:00 p.m)] = "off", [Ca3_(12:00 p.m - 15:00 p.m)] = "off", [Ca4_(15:00 p.m - 18:00 p.m)] = "off", [Ca5_(18:00 p.m - 21:00 p.m)] = "off", [Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca] = "off" ), "", IF( SUM( [Ca1_(08:00 a.m - 09:00 a.m)], [Ca2_(09:00 a.m - 12:00 p.m)], [Ca3_(12:00 p.m - 15:00 p.m)], [Ca4_(15:00 p.m - 18:00 p.m)], [Ca5_(18:00 p.m - 21:00 p.m)], [Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca] ) = 0, "", SUM( [Ca1_(08:00 a.m - 09:00 a.m)], [Ca2_(09:00 a.m - 12:00 p.m)], [Ca3_(12:00 p.m - 15:00 p.m)], [Ca4_(15:00 p.m - 18:00 p.m)], [Ca5_(18:00 p.m - 21:00 p.m)], [Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca] ) ) ) Tổng thời gian làm việc tính theo ngày
26 Thời gian bắt đầu Công thức Tự tính (công thức) Công thức: SWITCH(TRUE(),[Ca1_(08:00 a.m - 09:00 a.m)]!="",[Thời gian làm việc UTC0]+DURATION(0,8),[Ca2_(09:00 a.m - 12:00 p.m)]!="",[Thời gian làm việc UTC0]+DURATION(0,9),[Ca3_(12:00 p.m - 15:00 p.m)]!="",[Thời gian làm việc UTC0]+DURATION(0,12),[Ca4_(15:00 p.m - 18:00 p.m)]!="",[Thời gian làm việc UTC0]+DURATION(0,15),[Ca5_(18:00 p.m - 21:00 p.m)]!="",[Thời gian làm việc UTC0]+DURATION(0,18),[Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca]!="",[Thời gian làm việc UTC0]+DURATION(0,21),[Thời gian làm việc UTC0]) Thời gian bắt đầu làm việc theo ngày
27 Thời gian kết thúc Công thức Tự tính (công thức) Công thức: SWITCH(TRUE(),[Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca]!="",[Thời gian làm việc UTC0]+DURATION(0,22),[Ca5_(18:00 p.m - 21:00 p.m)]!="",[Thời gian làm việc UTC0]+DURATION(0,21),[Ca4_(15:00 p.m - 18:00 p.m)]!="",[Thời gian làm việc UTC0]+DURATION(0,18),[Ca3_(12:00 p.m - 15:00 p.m)]!="",[Thời gian làm việc UTC0]+DURATION(0,15),[Ca2_(09:00 a.m - 12:00 p.m)]!="",[Thời gian làm việc UTC0]+DURATION(0,12),[Ca1_(08:00 a.m - 09:00 a.m)]!="",[Thời gian làm việc UTC0]+DURATION(0,9),[Thời gian làm việc UTC0]) Thời gian kết thúc làm việc theo ngày
28 Name shift time Công thức Tự tính (công thức) Công thức: IF(LEN(IF([Ca1_(08:00 a.m - 09:00 a.m)]!="","Ca1, ","")&IF([Ca2_(09:00 a.m - 12:00 p.m)]!="","Ca2, ","")&IF([Ca3_(12:00 p.m - 15:00 p.m)]!="","Ca3, ","")&IF([Ca4_(15:00 p.m - 18:00 p.m)]!="","Ca4, ","")&IF([Ca5_(18:00 p.m - 21:00 p.m)]!="","Ca5, ","")&IF([Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca]!="","Ca6, ",""))=0,"",LEFT(IF([Ca1_(08:00 a.m - 09:00 a.m)]!="","Ca1, ","")&IF([Ca2_(09:00 a.m - 12:00 p.m)]!="","Ca2, ","")&IF([Ca3_(12:00 p.m - 15:00 p.m)]!="","Ca3, ","")&IF([Ca4_(15:00 p.m - 18:00 p.m)]!="","Ca4, ","")&IF([Ca5_(18:00 p.m - 21:00 p.m)]!="","Ca5, ","")&IF([Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca]!="","Ca6, ",""),LEN(IF([Ca1_(08:00 a.m - 09:00 a.m)]!="","Ca1, ","")&IF([Ca2_(09:00 a.m - 12:00 p.m)]!="","Ca2, ","")&IF([Ca3_(12:00 p.m - 15:00 p.m)]!="","Ca3, ","")&IF([Ca4_(15:00 p.m - 18:00 p.m)]!="","Ca4, ","")&IF([Ca5_(18:00 p.m - 21:00 p.m)]!="","Ca5, ","")&IF([Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca]!="","Ca6, ",""))-2))
29 Trigger Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '7.1.1 - Danh sách nhân sự hệ thống'.FILTER(CurrentValue.[Phòng ban chi tiết]=[Cửa hàng]).[user].LISTCOMBINE()
30 Trigger Anycross Công thức Tự tính (công thức) Công thức: IF(TEXT(TODAY(),"DD/MM/YYYY")=[Ngày làm việc_Text],"Triger","")
31 Điều kiện hiển thị Công thức Tự tính (công thức) Công thức: IF(TODAY()-DURATION(2)>[Ngày làm việc],"Khóa","")
32 Tạo record trong 2.3 Chọn một Nhập liệu Lựa chọn: Tạo, Khóa
33 SourceID Văn bản Nhập liệu
34 Ngày thay đổi gần nhất Công thức Tự tính (công thức) Công thức: '2.4 - QL Quá trình thay đổi vị trí'.FILTER(CurrentValue.[Nhân sự]=[Account]).[Ngày bắt đầu].MAX()
35 Date Công thức Tự tính (công thức) Công thức: VALUE([Ngày làm việc])
36 Trạng thái làm việc Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Nhân sự]=[Account]&&CurrentValue.[Ngày bắt đầu]<=[Date]&&(CurrentValue.[Ngày kết thúc]=""\|\|[Date]<=CurrentValue.[Ngày kết thúc])).[Trạng thái làm việc].UNIQUE()
37 Check trùng Công thức Tự tính (công thức) Công thức: IF('3.4 - Đăng ký ca_Cửa hàng'.COUNTIF(CurrentValue.[Account]=[Account]&&CurrentValue.[Ngày làm việc]=[Ngày làm việc])>1,"🚫repetitive","")

3.5 - Đổi ca làm việc

  • Table ID: tbl50kjWDbYUty6x · Base: Base HRIS (nhân sự, công, lương) · Số cột: 9 · Cột chính: ID nhân sự
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 2 công thức · 2 tra cứu · 0 liên kết · 5 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 ID nhân sự 🔑 Công thức Tự tính (công thức) Công thức: '7.1.1 - Danh sách nhân sự hệ thống'.FILTER(CurrentValue.[user]=[Người tạo]).[user_id].LISTCOMBINE()
2 Loại nhân sự Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Phân loại]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[Người tạo]).[Phân loại].LISTCOMBINE()
3 Người tạo Người (User) Nhập liệu Một người
4 Phân loại Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Phân loại]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[Người tạo]).[Phân loại].LISTCOMBINE()
5 Ngày Ngày giờ Nhập liệu Định dạng dd/MM/yyyy
6 Ca làm việc Chọn một Nhập liệu Lựa chọn: TP1_08h-17h, TP2_15h-23h, AM/RSM_14h-21h, AM/RSM_9h-18h
7 Nội dung làm việc Văn bản Nhập liệu
8 Group name Công thức Tự tính (công thức) Công thức: SWITCH([Loại nhân sự],"AM","Nhóm AM/RSM","Calinhhoat")
9 SourceID Văn bản Nhập liệu

3.6 - Kiểm tra bảng công ngày

  • Table ID: tblWnYvbaijbLkLw · Base: Base HRIS (nhân sự, công, lương) · Số cột: 26 · Cột chính: User id
  • Khoá trong config/lark-tables.mjs: HRIS.KIEM_TRA_BANG_CONG_NGAY
  • Code ONE-ANNA tham chiếu: apps/api/src/portal/seed-36-store-gaps/index.js
  • Cơ cấu cột: 7 công thức · 7 tra cứu · 0 liên kết · 12 cột nhập/hệ thống

Ghi chú nghiệp vụ: mỗi dòng là một ngày × nhân sự cửa hàng cần kiểm tra công (giờ vào/ra, cảnh báo, giờ tính lương theo ca đăng ký, Duyệt công, Xác nhận, Khoá bảng công). Dòng do ONE-ANNA tự tạo (thay workflow Lark): seed36StoreGapsDaily 02:30 VN cho hôm qua và seed36StoreGapsToday 15:00 VN cho hôm nay — chọn "NV Cửa hàng ∩ đang làm 2.3".

# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 User id 🔑 Văn bản Nhập liệu
2 Employee Người (User) Nhập liệu Một người
3 Cửa hàng Văn bản Nhập liệu
4 AM Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [leader]. Biểu thức: '7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[Cửa hàng]).[leader].LISTCOMBINE()
5 Date Ngày giờ Nhập liệu Định dạng dd/MM/yyyy
6 Leader Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [leader]. Biểu thức: '7.1.1 - Danh sách nhân sự hệ thống'.FILTER(CurrentValue.[user_id]=[User id]).[leader].LISTCOMBINE()
7 RSM/AM Văn bản Nhập liệu
8 Tháng Công thức Tự tính (công thức) Công thức: "Tháng "&MONTH([Date])&"/"&YEAR([Date])
9 Ngày_text Công thức Tự tính (công thức) Công thức: Text([Date],"DD/MM/YYYY")
10 Shift name Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Name shift time]. Biểu thức: '3.4 - Đăng ký ca_Cửa hàng'.FILTER(CurrentValue.[Account]=[Employee]&&CurrentValue.[Ngày làm việc_Text]=[Ngày_text]).[Name shift time].LISTCOMBINE()
11 Check in time Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Check in time]. Biểu thức: '3.7 - Bảng chấm công chi tiết ngày'.FILTER(CurrentValue.[Employee]=[Employee]&&CurrentValue.[Ngày_Text]=[Ngày_text]).[Check in time].LISTCOMBINE()
12 Check out time Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Check out time]. Biểu thức: '3.7 - Bảng chấm công chi tiết ngày'.FILTER(CurrentValue.[Employee]=[Employee]&&CurrentValue.[Ngày_Text]=[Ngày_text]).[Check out time].LISTCOMBINE()
13 Cảnh báo Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Cảnh báo]. Biểu thức: '3.7 - Bảng chấm công chi tiết ngày'.FILTER(CurrentValue.[Record ID]=[Record ID_1.1]).[Cảnh báo].LISTCOMBINE() Cảnh báo bất thường về giờ làm việc, trong trường hợp: - Giờ check-in muộn hơn giờ đã đăng ký - Giờ check-out sớm hơn giờ đã đăng ký
14 Tổng giờ tính lương (theo ca CH đăng ký) Công thức Tự tính (công thức) Công thức: IF( '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[Employee] = [Employee] && CurrentValue.[Ngày_Text] = [Ngày_text] ) .[Thời gian làm việc theo đăng ký] .LISTCOMBINE() .SUM() = 0, "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[Employee] = [Employee] && CurrentValue.[Ngày_Text] = [Ngày_text] ) .[Thời gian làm việc theo đăng ký] .LISTCOMBINE() .SUM() )
15 Giờ thực tế C&B tính Công thức Tự tính (công thức) Công thức: ([Check out time]-[Check in time])*24
16 Thời gian làm phiếu correction Công thức Tự tính (công thức) Công thức: 'Phiếu điều chỉnh công'.FILTER(CurrentValue.[Requester]=[Employee]&&Text(CurrentValue.[Date of error],"DD/MM/YYYY")=[Ngày_text]).[Replenishment time].LISTCOMBINE()
17 Duyệt công Chọn một Nhập liệu Lựa chọn: Duyệt, Từ chối, TRUE, 3
18 Lý do duyêt/từ chối Văn bản Nhập liệu Nếu có
19 Xác nhận Checkbox Nhập liệu
20 Khóa bảng công Công thức Tự tính (công thức) Công thức: IF(And([Xác nhận]=1,[Duyệt công]="Duyệt"),"Khóa","")
21 Record ID_1.1 Văn bản Nhập liệu
22 Tra cứu 8 Chọn nhiều Nhập liệu 141 lựa chọn (không liệt kê)
23 Ngày tạo 2 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
24 Check trùng bản ghi Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Record ID_1.1]. Biểu thức: '3.6 - Kiểm tra bảng công ngày'.FILTER(CurrentValue.[Employee]=[Employee]&&CurrentValue.[Date]=[Date]&&CurrentValue.[Record ID_1.1]=[Record ID_1.1]).[Record ID_1.1].LISTCOMBINE()
25 SourceID Văn bản Nhập liệu
26 Check trùng Công thức Tự tính (công thức) Công thức: IF('3.6 - Kiểm tra bảng công ngày'.COUNTIF(CurrentValue.[User id]=[User id]&&CurrentValue.[Date]=[Date])>1,"🚫repetitive","")

3.7 - Bảng chấm công chi tiết ngày

  • Table ID: tbliEbx4YBZpDuSe · Base: Base HRIS (nhân sự, công, lương) · Số cột: 68 · Cột chính: User id
  • Khoá trong config/lark-tables.mjs: HRIS.CONG_CHI_TIET
  • Code ONE-ANNA tham chiếu: apps/api/src/portal/dup-alert/config.js, apps/api/src/portal/no-account-timesheet-sync.js, apps/api/src/portal/timesheet-detail-sync.js, legacy/gas/MaHoSoNhanVien.js, legacy/gas/Mã.js, legacy/gas/apps-script/lark-attendance-location/Config.js
  • Cơ cấu cột: 39 công thức · 5 tra cứu · 0 liên kết · 24 cột nhập/hệ thống

Ghi chú nghiệp vụ: chấm công chi tiết từng ngày (nguồn hiển thị "Chấm công ngày" và chi tiết chấm công). timesheet-detail-sync và job syncNoAccountTimesheet (20 phút/lần) ghi công từ "Phiếu xác nhận công - chưa có tài khoản" đã Approved vào bảng này. Job syncAttendanceCacheBatch (15 phút/lần 07–19h VN) đọc tháng hiện tại vào D1 employee_attendance_cache.

# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 User id 🔑 Văn bản Nhập liệu
2 Result id Văn bản Nhập liệu
3 Date Ngày giờ Nhập liệu Định dạng yyyy/MM/dd
4 Employee Người (User) Nhập liệu Một người
5 Leader Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [leader]. Biểu thức: '7.1.1 - Danh sách nhân sự hệ thống'.FILTER(CurrentValue.[user_id]=[User id]).[leader].LISTCOMBINE()
6 Trạng thái làm việc Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc' .FILTER( CurrentValue.[Nhân sự] = [Employee] && CurrentValue.[Ngày bắt đầu] <= [Date] && ( CurrentValue.[Ngày kết thúc] = "" \|\| [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Trạng thái làm việc] .UNIQUE()
7 Đơn vị Công thức Tự tính (công thức) Công thức: SUBSTITUTE( '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Nhân sự] = [Employee] && [Date] >= CurrentValue.[Ngày bắt đầu] && OR( CurrentValue.[Ngày kết thúc] = "", [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Đơn vị], "[", "" ).SUBSTITUTE("]", "")
8 Vị trí Công thức Tự tính (công thức) Công thức: SUBSTITUTE( '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Nhân sự] = [Employee] && [Date] >= CurrentValue.[Ngày bắt đầu] && OR( CurrentValue.[Ngày kết thúc] = "", [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Vị trí], "[", "" ).SUBSTITUTE("]", "")
9 Phân loại Công thức Tự tính (công thức) Công thức: '0.0.2 - Khai báo - Sơ đồ tổ chức'.FILTER(CurrentValue.[Vị trí]=[Vị trí]&&CurrentValue.[Đơn vị]=[Đơn vị]).[Phân loại].LISTCOMBINE().UNIQUE()
10 Group name Văn bản Nhập liệu
11 Check in record id Văn bản Nhập liệu
12 Shift name Văn bản Nhập liệu
13 Check in time Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
14 Check in shift time Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
15 Check in location name Văn bản Nhập liệu
16 Check in - Is offsite Chọn một Nhập liệu Lựa chọn: true, false
17 Check in type Chọn một Nhập liệu Lựa chọn: User attendance, Administrator modification, User correction, Automatically generated by the system, Clock-out is not required, Attendance machine, Express attendance, Imports to attendance open platform
18 Check in result Chọn một Nhập liệu Lựa chọn: NoNeedCheck, SystemCheck, Normal, Early, Late, Lack, Todo
19 Check in result supplement Chọn một Nhập liệu Lựa chọn: None, ManagerModification, CardReplacement, ShiftChange, Travel, Leave, GoOut, CardReplacementApplication, FieldPunch
20 Check out record id Văn bản Nhập liệu
21 Check out time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
22 Check out shift time Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
23 Check out location name Văn bản Nhập liệu
24 Check out - Is offsite Chọn một Nhập liệu Lựa chọn: true, false
25 Check out type Chọn một Nhập liệu Lựa chọn: User attendance, Administrator modification, User correction, Automatically generated by the system, Clock-out is not required, Attendance machine, Express attendance, Imports to attendance open platform
26 Check out result Chọn một Nhập liệu Lựa chọn: NoNeedCheck, SystemCheck, Normal, Early, Late, Lack, Todo
27 Check out result supplement Chọn một Nhập liệu Lựa chọn: None, ManagerModification, CardReplacement, ShiftChange, Travel, Leave, GoOut, CardReplacementApplication, FieldPunch
28 Kết thúc ca sáng Công thức Tự tính (công thức) Công thức: [Date]-DURATION(0,Hour([Date]),MINUTE([Date]))+DURATION(0,12)
29 Bắt đầu ca chiều Công thức Tự tính (công thức) Công thức: [Date]-DURATION(0,Hour([Date]),MINUTE([Date]))+DURATION(0,13)
30 Tổng giờ thực tế Công thức Tự tính (công thức) Công thức: IF( [Phân loại] = "Cửa hàng", IF( OR( [Thời gian làm việc theo đăng ký] = "", [Thời gian làm việc theo đăng ký] = 0 ), "", IF( OR( [Check in time] = "", [Check out time] = "" ), [Thời gian làm việc theo đăng ký] / 2, MAX( 0, MIN( [Thời gian làm việc theo đăng ký], [Tổng giờ thực tế theo in/out] ) ) + [Công đi muộn] ) ), IF( AND( [Giờ nghỉ phép] > 0, [Giờ nghỉ phép] + [Tổng giờ thực tế theo in/out] >= 8 ), 8 - [Giờ nghỉ phép], IF( AND( [Công Remote] > 0, [Công Remote] + [Số giờ làm việc] > 8 ), 8 - [Công Remote], IF( OR( [Check in time] = "", [Check out time] = "" ), MIN( 8, [Số giờ làm việc] + [Công đi muộn] ), MIN( 8, MIN( [Số giờ làm việc], MAX( 0, ROUND( ( MIN( [Check out time], [Check out shift time] ) - [Check in time] ) * 24, 2 ) ) ) + [Công đi muộn] ) ) ) ) )
31 Text 11 Công thức Tự tính (công thức) Công thức: IF( [Phân loại] = "Cửa hàng", IF( OR( [Thời gian làm việc theo đăng ký] = "", [Thời gian làm việc theo đăng ký] = 0 ), "", IF( OR( [Check in time] = "", [Check out time] = "" ), [Thời gian làm việc theo đăng ký] / 2, MAX( 0, MIN( [Thời gian làm việc theo đăng ký], [Tổng giờ thực tế theo in/out] ) ) + [Công đi muộn] ) ), IF( AND( [Giờ nghỉ phép] > 0, [Giờ nghỉ phép] + [Tổng giờ thực tế theo in/out] >= 8 ), 8 - [Giờ nghỉ phép], IF( AND( [Công Remote] > 0, [Công Remote] + [Số giờ làm việc] > 8 ), 8 - [Công Remote], IF( OR( [Check in time] = "", [Check out time] = "" ), MIN( 8, [Số giờ làm việc] + [Công đi muộn] ), MIN( 8, MIN( [Số giờ làm việc], MAX( 0, ROUND( ( MIN( [Check out time], [Check out shift time] ) - [Check in time] ) * 24, 2 ) ) ) + [Công đi muộn] ) ) ) ) )
32 Thời gian làm việc theo đăng ký Công thức Tự tính (công thức) Công thức: '3.4 - Đăng ký ca_Cửa hàng'.FILTER(CurrentValue.[User_id]=[User id]&&Text(CurrentValue.[Ngày làm việc],"DD/MM/YYYY")=TEXT([Date],"DD/MM/YYYY")).[Tổng giờ làm việc].LISTCOMBINE()
33 Tổng giờ thực tế theo in/out Công thức Tự tính (công thức) Công thức: IF( [Check in time] = "" \|\| [Check out time] = "", 0, ROUND( ([Check out time] - [Check in time]) * 24, 2 ) )
34 Tổng giờ làm việc Văn bản Nhập liệu
35 Tổng giờ đi muộn Công thức Tự tính (công thức) Công thức: IF( ( IF( [Check in time] > [Bắt đầu ca chiều] && [Check in time] > [Check in shift time] && [Check in shift time] < [Bắt đầu ca chiều], HOUR(TEXT([Check in time] - [Bắt đầu ca chiều], "hh:mm")) + MINUTE(TEXT([Check in time] - [Bắt đầu ca chiều], "hh:mm")) / 60, IF( [Check in time] > [Check in shift time] && [Check in time] < [Kết thúc ca sáng], HOUR(TEXT([Check in time] - [Check in shift time], "hh:mm")) + MINUTE(TEXT([Check in time] - [Check in shift time], "hh:mm")) / 60, IF( [Check in time] > [Kết thúc ca sáng] && [Check in time] < [Bắt đầu ca chiều] && [Phân loại] != "Cửa hàng" && [Check in time] > [Check in shift time], HOUR(TEXT([Kết thúc ca sáng] - [Check in shift time], "hh:mm")) + MINUTE(TEXT([Kết thúc ca sáng] - [Check in shift time], "hh:mm")) / 60, 0 ) ) ) ) = 0, "", IF( [Check in time] > [Bắt đầu ca chiều] && [Check in time] > [Check in shift time] && [Check in shift time] < [Bắt đầu ca chiều], HOUR(TEXT([Check in time] - [Bắt đầu ca chiều], "hh:mm")) + MINUTE(TEXT([Check in time] - [Bắt đầu ca chiều], "hh:mm")) / 60, IF( [Check in time] > [Check in shift time] && [Check in time] < [Kết thúc ca sáng], HOUR(TEXT([Check in time] - [Check in shift time], "hh:mm")) + MINUTE(TEXT([Check in time] - [Check in shift time], "hh:mm")) / 60, IF( [Check in time] > [Kết thúc ca sáng] && [Check in time] < [Bắt đầu ca chiều] && [Phân loại] != "Cửa hàng" && [Check in time] > [Check in shift time], HOUR(TEXT([Kết thúc ca sáng] - [Check in shift time], "hh:mm")) + MINUTE(TEXT([Kết thúc ca sáng] - [Check in shift time], "hh:mm")) / 60, 0 ) ) ) )
36 Giờ nghỉ phép Công thức Tự tính (công thức) Công thức: IF( SUM( VALUE( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && NOT(CurrentValue.[Leave type] = "Đề xuất nghỉ không lương") && NOT(CurrentValue.[Leave type] = "Xin đi muộn/ về sớm") && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) ) = 0, "", SUM( VALUE( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && NOT(CurrentValue.[Leave type] = "Đề xuất nghỉ không lương") && NOT(CurrentValue.[Leave type] = "Xin đi muộn/ về sớm") && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) ) )
37 Nghỉ không lương Công thức Tự tính (công thức) Công thức: IF( VALUE( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Leave type] = "Đề xuất nghỉ không lương" && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && TEXT(CurrentValue.[End time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) = 0, "", VALUE( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Leave type] = "Đề xuất nghỉ không lương" && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && TEXT(CurrentValue.[End time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) )
38 Công Remote Công thức Tự tính (công thức) Công thức: IF( SUM( VALUE( 'Phiếu đề xuất ra ngoài thực hiện công việc công ty_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] &&CurrentValue.[Trạng thái phiếu cuối cùng]="Approved"&& TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE().SUM() ) ) = 0, "", SUM( VALUE( 'Phiếu đề xuất ra ngoài thực hiện công việc công ty_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] &&CurrentValue.[Trạng thái phiếu cuối cùng]="Approved"&& TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE().SUM() ) ) )
39 Công lễ Công thức Tự tính (công thức) Công thức: IF( OR( [Trạng thái làm việc].CONTAINTEXT("Chính thức"), [Trạng thái làm việc].CONTAINTEXT("Thử việc") ), IF( '3.3 - Lịch tháng' .FILTER(CurrentValue.[Ngày_Text] = [Ngày_Text]) .[Ngày nghỉ lễ] .LISTCOMBINE() = "", "", 8 ), "" )
40 Thời gian làm phiếu correction Công thức Tự tính (công thức) Công thức: 'Phiếu điều chỉnh công'.FILTER(CurrentValue.[Requester]=[Employee]&&Text(CurrentValue.[Date of error],"DD/MM/YYYY")=Text([Date],"DD/MM/YYYY")&&CurrentValue.[Status]="Approved").[Replenishment time].LISTCOMBINE().UNIQUE()
41 Công OT Công thức Tự tính (công thức) Công thức: IF( ( 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Ngày OT] = TEXT([Date], "DD/MM/YYYY") && CurrentValue.[Status] = "Approved" ) .[Tổng giờ OT] .LISTCOMBINE() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Ngày OT] = [Ngày_Text] && CurrentValue.[Status] = "Approved" ) .[Tổng giờ OT] .LISTCOMBINE() ) = 0, "", 'Phiếu đề xuất làm thêm giờ - form cũ' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Ngày OT] = TEXT([Date], "DD/MM/YYYY") && CurrentValue.[Status] = "Approved" ) .[Tổng giờ OT] .LISTCOMBINE() + 'Phiếu đề xuất làm thêm giờ - form mới' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Ngày OT] = [Ngày_Text] && CurrentValue.[Status] = "Approved" ) .[Tổng giờ OT] .LISTCOMBINE() )
42 Giờ công OT - Cửa hàng Công thức Tự tính (công thức) Công thức: IF([Phân loại]="Cửa hàng"&&[Tổng giờ thực tế]>12,[Tổng giờ thực tế]-12,"")
43 Công WFH Công thức Tự tính (công thức) Công thức: IF( VALUE( 'Phiếu xin làm việc tại nhà_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Trạng thái phiếu cuối cùng] = "Approved" && CurrentValue.[Ngày_Text] = [Ngày_Text] ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) = 0, "", VALUE( 'Phiếu xin làm việc tại nhà_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Trạng thái phiếu cuối cùng] = "Approved" && CurrentValue.[Ngày_Text] = [Ngày_Text] ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) )
44 Công đi muộn Công thức Tự tính (công thức) Công thức: IF( VALUE( 'Phiếu xin nghỉ - đi muộn&về sớm' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Status] = "Approved" && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && TEXT(CurrentValue.[End time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && CurrentValue.[Leave type] = "Xin đi muộn/ về sớm" ) .[Duration] .LISTCOMBINE() ) = 0, "", VALUE( 'Phiếu xin nghỉ - đi muộn&về sớm' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Status] = "Approved" && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && TEXT(CurrentValue.[End time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && CurrentValue.[Leave type] = "Xin đi muộn/ về sớm" ) .[Duration] .LISTCOMBINE() ) )
45 in_role Công thức Tự tính (công thức) Công thức: SWITCH( [Group name], "VP_Giolamviec_8h-17h", "08:00", "Ca VP_8h30-17h30", "08:30", "VP_Giolamviec_9h-18h", "09:00", "Khối cửa hàng", "", "Trực page", IF( [Shift name] = "TP1_08h-17h", "08:00", IF( [Shift name] = "TP2_15h-23h", "15:00", "" ) ), "CSKH_Giolamviec_8h-17h", "08:00", "Ca livestream", "", "Ecommer", IF( [Shift name] = "Calamviec_9h-18h", "09:00", "" ), "Giolamviec_Fullcong", "08:00", "" )
46 out_role Công thức Tự tính (công thức) Công thức: SWITCH( [Group name], "VP_Giolamviec_8h-17h", "17:00", "Ca VP_8h30-17h30", "17:30", "VP_Giolamviec_9h-18h", "18:00", "Khối cửa hàng", "", "Trực page", IF( [Shift name] = "TP1_08h-17h", "17:00", IF( [Shift name] = "TP2_15h-23h", "23:00", "" ) ), "CSKH_Giolamviec_8h-17h", "17:00", "Ca livestream", "", "Ecommer", IF( [Shift name] = "Calamviec_9h-18h", "18:00", "" ), "Giolamviec_Fullcong", "17:00", "" )
47 outGC Công thức Tự tính (công thức) Công thức: IF( AND( [Group name] != "Nhóm AM/RSM", [Group name] != "Khối cửa hàng" ), "12:00", "" )
48 inGC Công thức Tự tính (công thức) Công thức: IF( AND( [Group name] != "Nhóm AM/RSM", [Group name] != "Khối cửa hàng" ), "13:00", "" )
49 Số phút đi muộn Công thức Tự tính (công thức) Công thức: IF( [Check in time] = "", "", IF( [inGC] != "", IF( (HOUR([Check in time]) * 60 + MINUTE([Check in time])) > (VALUE(LEFT([inGC], 2)) * 60 + VALUE(RIGHT([inGC], 2))), (HOUR([Check in time]) * 60 + MINUTE([Check in time])) - (VALUE(LEFT([inGC], 2)) * 60 + VALUE(RIGHT([inGC], 2))), 0 ), IF( AND([in_role] != "", [outGC] != ""), IF( (HOUR([Check in time]) * 60 + MINUTE([Check in time])) > (VALUE(LEFT([in_role], 2)) * 60 + VALUE(RIGHT([in_role], 2))), (HOUR([Check in time]) * 60 + MINUTE([Check in time])) - (VALUE(LEFT([in_role], 2)) * 60 + VALUE(RIGHT([in_role], 2))), 0 ), "" ) ) )
50 Số phút về sớm Công thức Tự tính (công thức) Công thức: IF( [Check out time] = "", "", IF( [outGC] != "", IF( (HOUR([Check out time]) * 60 + MINUTE([Check out time])) < (VALUE(LEFT([outGC], 2)) * 60 + VALUE(RIGHT([outGC], 2))), (VALUE(LEFT([outGC], 2)) * 60 + VALUE(RIGHT([outGC], 2))) - (HOUR([Check out time]) * 60 + MINUTE([Check out time])), 0 ), IF( [out_role] != "", IF( (HOUR([Check out time]) * 60 + MINUTE([Check out time])) < (VALUE(LEFT([out_role], 2)) * 60 + VALUE(RIGHT([out_role], 2))), (VALUE(LEFT([out_role], 2)) * 60 + VALUE(RIGHT([out_role], 2))) - (HOUR([Check out time]) * 60 + MINUTE([Check out time])), 0 ), "" ) ) )
51 Số giờ làm việc Công thức Tự tính (công thức) Công thức: IF( [Group name] = "Giolamviec_Fullcong", 8, IF( OR( AND([Check in time] != "", [Check out time] = ""), AND([Check in time] = "", [Check out time] != "") ), 4, IF( AND( [Check in time] != "", [Check out time] != "", [in_role] != "", [out_role] != "", [outGC] != "", [inGC] != "" ), ( IF( (HOUR([Check in time]) * 60 + MINUTE([Check in time])) < (VALUE(LEFT([outGC], 2)) * 60 + VALUE(RIGHT([outGC], 2))), (VALUE(LEFT([outGC], 2)) * 60 + VALUE(RIGHT([outGC], 2))) - IF( (HOUR([Check in time]) * 60 + MINUTE([Check in time])) > (VALUE(LEFT([in_role], 2)) * 60 + VALUE(RIGHT([in_role], 2))), (HOUR([Check in time]) * 60 + MINUTE([Check in time])), (VALUE(LEFT([in_role], 2)) * 60 + VALUE(RIGHT([in_role], 2))) ), 0 ) + IF( (HOUR([Check out time]) * 60 + MINUTE([Check out time])) > (VALUE(LEFT([inGC], 2)) * 60 + VALUE(RIGHT([inGC], 2))), IF( (HOUR([Check out time]) * 60 + MINUTE([Check out time])) < (VALUE(LEFT([out_role], 2)) * 60 + VALUE(RIGHT([out_role], 2))), (HOUR([Check out time]) * 60 + MINUTE([Check out time])) - (VALUE(LEFT([inGC], 2)) * 60 + VALUE(RIGHT([inGC], 2))), (VALUE(LEFT([out_role], 2)) * 60 + VALUE(RIGHT([out_role], 2))) - (VALUE(LEFT([inGC], 2)) * 60 + VALUE(RIGHT([inGC], 2))) ), 0 ) ) / 60, "" ) ) )
52 Giờ điều chỉnh công Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Replenishment time]. Biểu thức: 'Phiếu điều chỉnh công'.FILTER(CurrentValue.[Requester]=[Employee]&&CurrentValue.[Date of error]=[Date]).[Replenishment time].LISTCOMBINE()
53 Kiểm tra cập nhật điều chỉnh công Công thức Tự tính (công thức) Công thức: IF( [Trạng thái phiếu điều chỉnh công] != "Approved", "", IF( OR( [Giờ điều chỉnh công] = [Check in time], [Giờ điều chỉnh công] = [Check out time] ), "Đã cập nhật", "Chưa cập nhật" ) )
54 Month Công thức Tự tính (công thức) Công thức: [Date].MONTH()
55 Year Công thức Tự tính (công thức) Công thức: [Date].YEAR()
56 Ngày_Text Công thức Tự tính (công thức) Công thức: TEXT([Date],"DD/MM/YYYY")
57 Tháng Công thức Tự tính (công thức) Công thức: "Tháng "&MONTH([Date])&"/"&YEAR([Date])
58 Cảnh báo Công thức Tự tính (công thức) Công thức: If([Check in time]<=[Check in shift time]&&[Check out time]>=[Check out shift time],"Bình thường","Bất thường")
59 Xác nhận Công thức Tự tính (công thức) Công thức: If('3.6 - Kiểm tra bảng công ngày'.FILTER(CurrentValue.[Record ID_1.1]=[Record ID]&&CurrentValue.[Duyệt công]="Duyệt"&&CurrentValue.[Xác nhận]=1).[User id].LISTCOMBINE()!="","Đã duyệt","Chờ duyệt")
60 Record ID Công thức Tự tính (công thức) Công thức: RECORD_ID()
61 Trạng thái phiếu điều chỉnh công Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Status]. Biểu thức: 'Phiếu điều chỉnh công'.FILTER(CurrentValue.[Requester]=[Employee]&&CurrentValue.[Ngày_Text]=[Ngày_Text]).[Status].LISTCOMBINE().UNIQUE()
62 Ngày lễ Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày nghỉ lễ]. Biểu thức: '3.3 - Lịch tháng'.FILTER(CurrentValue.[Ngày]=[Date]).[Ngày nghỉ lễ].LISTCOMBINE()
63 RSM/AM Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [AM]. Biểu thức: '2.5 - QL Thay đổi AM'.FILTER(CurrentValue.[Cửa hàng]=[Bộ phận]).[AM].LISTCOMBINE()
64 Bộ phận Công thức Tự tính (công thức) Công thức: '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Nhân sự] = [Employee] && [Date] >= CurrentValue.[Ngày bắt đầu] && ( CurrentValue.[Ngày kết thúc] = "" \|\| [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Đơn vị] .UNIQUE()
65 Thứ Công thức Tự tính (công thức) Công thức: SWITCH( WEEKDAY([Date]), 1, "CN", 2, "T2", 3, "T3", 4, "T4", 5, "T5", 6, "T6", 7, "T7", "" )
66 Kiểm tra giờ công bất thường Công thức Tự tính (công thức) Công thức: IF([Phân loại]!="Cửa hàng"&&[Công OT]=""&&[Tổng giờ thực tế]>8,"Bất thường","")
67 Check trùng Công thức Tự tính (công thức) Công thức: IF('3.7 - Bảng chấm công chi tiết ngày'.COUNTIF(CurrentValue.[User id]=[User id]&&CurrentValue.[Date]=[Date])>1,"🚫repetitive","")
68 Ghi chú Văn bản Nhập liệu

3.8 - Quản lý công Thực tập sinh

  • Table ID: tblO4Z1l79MJb2VQ · Base: Base HRIS (nhân sự, công, lương) · Số cột: 11 · Cột chính: Mã nhân viên
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 1 công thức · 5 tra cứu · 0 liên kết · 5 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Mã nhân viên 🔑 Văn bản Nhập liệu
2 Họ và tên Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Họ và tên]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân viên]).[Họ và tên].LISTCOMBINE()
3 Tài khoản Lark Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân viên]).[user].LISTCOMBINE()
4 Ngày xác nhận công Ngày giờ Nhập liệu Định dạng dd/MM/yyyy
5 Số giờ công làm việc Số Nhập liệu Định dạng 0.00
6 Cửa hàng Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Đơn vị]. Biểu thức: '2.4 - QL Quá trình thay đổi vị trí'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân viên]).[Đơn vị].LISTCOMBINE()
7 Quản lý cửa hàng Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [QLCH]. Biểu thức: '7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[Cửa hàng]).[QLCH].LISTCOMBINE()
8 Quản lý xác nhận Chọn một Nhập liệu Lựa chọn: Xác nhận, Huỷ xác nhận
9 Check trùng Văn bản Nhập liệu
10 Trạng thái làm việc Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân viên] && CurrentValue.[Ngày bắt đầu] <= [Ngày xác nhận công] && ( CurrentValue.[Ngày kết thúc] = "" \|\| [Ngày xác nhận công] <= CurrentValue.[Ngày kết thúc] ) ) .[Trạng thái làm việc] .UNIQUE()
11 Ngày lễ Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày nghỉ lễ]. Biểu thức: '3.3 - Lịch tháng'.FILTER(CurrentValue.[Ngày]=[Ngày xác nhận công]).[Ngày nghỉ lễ].LISTCOMBINE()

3.9 - Bảng công bảo vệ + Tạp vụ

  • Table ID: tblQ5HFB0oOY3YiI · Base: Base HRIS (nhân sự, công, lương) · Số cột: 5 · Cột chính: Ngày làm việc
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 2 công thức · 0 tra cứu · 0 liên kết · 3 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày làm việc 🔑 Ngày giờ Nhập liệu Định dạng dd/MM/yyyy
2 user_id Văn bản Nhập liệu
3 Giờ công Số Nhập liệu Định dạng 0.0
4 Năm Công thức Tự tính (công thức) Công thức: IF([Ngày làm việc]!="",[Ngày làm việc].YEAR(),"")
5 Tháng Công thức Tự tính (công thức) Công thức: IF([Ngày làm việc]!="",[Ngày làm việc].MONTH(),"")

3.10 - Công theo địa điểm chấm công

  • Table ID: tblOZgjwWF0rdNMs · Base: Base HRIS (nhân sự, công, lương) · Số cột: 8 · Cột chính: No.
  • Khoá trong config/lark-tables.mjs: HRIS.CONG_THEO_DIA_DIEM_CU
  • Code ONE-ANNA tham chiếu: legacy/gas/apps-script/lark-attendance-location/Config.js
  • Cơ cấu cột: 0 công thức · 0 tra cứu · 0 liên kết · 8 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 No. 🔑 Số Nhập liệu Định dạng 0
2 User id Văn bản Nhập liệu
3 Employee Người (User) Nhập liệu Nhiều người
4 Đơn vị Văn bản Nhập liệu
5 Check out location name Văn bản Nhập liệu
6 Tháng Văn bản Nhập liệu
7 Sum: Tổng giờ thực tế Số Nhập liệu Định dạng 0.00
8 SourceID Văn bản Nhập liệu

3.11 - Chấm công theo địa điểm

  • Table ID: tblrZV4Dvgai6zte · Base: Base HRIS (nhân sự, công, lương) · Số cột: 11 · Cột chính: Mã định danh (Key)
  • Khoá trong config/lark-tables.mjs: HRIS.CHAM_CONG_THEO_DIA_DIEM
  • Code ONE-ANNA tham chiếu: legacy/gas/apps-script/lark-attendance-location/Config.js
  • Liên kết tới: 2.3 - QL Quá trình làm việc
  • Cơ cấu cột: 0 công thức · 0 tra cứu · 1 liên kết · 10 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Mã định danh (Key) 🔑 Văn bản Nhập liệu
2 Mã nhân sự Văn bản Nhập liệu
3 Nhân sự Liên kết một chiều Liên kết bản ghi Liên kết tới 2.3 - QL Quá trình làm việc (một bản ghi)
4 Tháng Văn bản Nhập liệu
5 Ngày đầu tháng Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
6 Ngày cuối tháng Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
7 Check in location name Văn bản Nhập liệu
8 Nguồn địa điểm Chọn một Nhập liệu Lựa chọn: Check in, Check out
9 Tổng giờ thực tế Số Nhập liệu Định dạng 0.00
10 Lần đồng bộ cuối Văn bản Nhập liệu
11 Nguồn giờ Chọn một Nhập liệu Lựa chọn: Tổng giờ thực tế, Tổng giờ làm việc

3.12 - Tổng hợp chấm công theo địa điểm

  • Table ID: tblgi8RLoZ0r9HWI · Base: Base HRIS (nhân sự, công, lương) · Số cột: 10 · Cột chính: Mã định danh (Key)
  • Khoá trong config/lark-tables.mjs: HRIS.TONG_HOP_CHAM_CONG_DIA_DIEM
  • Code ONE-ANNA tham chiếu: legacy/gas/apps-script/lark-attendance-location/Config.js
  • Liên kết tới: 2.3 - QL Quá trình làm việc
  • Cơ cấu cột: 0 công thức · 1 tra cứu · 1 liên kết · 8 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Mã định danh (Key) 🔑 Văn bản Nhập liệu
2 Mã nhân sự Văn bản Nhập liệu
3 Nhân sự Liên kết một chiều Liên kết bản ghi Liên kết tới 2.3 - QL Quá trình làm việc (một bản ghi)
4 Tháng Văn bản Nhập liệu
5 Ngày đầu tháng Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
6 Ngày cuối tháng Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
7 Địa điểm làm việc chính (Check in location name) Văn bản Nhập liệu
8 Tổng công tại địa điểm chính Số Nhập liệu Định dạng 0.00
9 Lần đồng bộ cuối Văn bản Nhập liệu
10 Công bảng 3.10 Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Sum: Tổng giờ thực tế]. Biểu thức: '3.10 - Công theo địa điểm chấm công'.FILTER(CurrentValue.[User id]=[Mã nhân sự]&&CurrentValue.[Tháng]=[Tháng]).[Sum: Tổng giờ thực tế].LISTCOMBINE().MAX()

3.4 - Đăng ký ca_Cửa hàng Copy

  • Table ID: tblWNQx5sIMX6Asi · Base: Base HRIS (nhân sự, công, lương) · Số cột: 35 · Cột chính: Họ và tên
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 22 công thức · 2 tra cứu · 0 liên kết · 11 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Họ và tên 🔑 Công thức Tự tính (công thức) Công thức: [Account]
2 Account Người (User) Nhập liệu Một người
3 Vị trí Công thức Tự tính (công thức) Công thức: '2.4 - QL Quá trình thay đổi vị trí'.FILTER(CurrentValue.[Nhân sự]=[Account]&&CurrentValue.[Ngày bắt đầu]=[Ngày thay đổi gần nhất]).[Vị trí].UNIQUE()
4 User_id Công thức Tự tính (công thức) Công thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[Account]).[user_id].LISTCOMBINE().UNIQUE()
5 Cửa hàng Công thức Tự tính (công thức) Công thức: '2.4 - QL Quá trình thay đổi vị trí'.FILTER(CurrentValue.[Ngày bắt đầu]=[Ngày thay đổi gần nhất]&&CurrentValue.[Nhân sự]=[Account]).[Đơn vị].UNIQUE()
6 AM Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [parent_department_name]. Biểu thức: '7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[Cửa hàng]).[parent_department_name].LISTCOMBINE()
7 Leader Công thức Tự tính (công thức) Công thức: '7.1.1 - Danh sách nhân sự hệ thống'.FILTER([Tên leader].CONTAINTEXT(CurrentValue.[name])).[user].LISTCOMBINE()
8 Tên TCH Công thức Tự tính (công thức) Công thức: IF('7.1.1 - Danh sách nhân sự hệ thống'.FILTER(CurrentValue.[user]=[Họ và tên]).[leader].LISTCOMBINE()=[Leader],[Họ và tên],'7.1.1 - Danh sách nhân sự hệ thống'.FILTER(CurrentValue.[user]=[Họ và tên]).[leader].LISTCOMBINE().UNIQUE())
9 TCH Công thức Tự tính (công thức) Công thức: '7.1.1 - Danh sách nhân sự hệ thống'.FILTER(CurrentValue.[name]=[Tên TCH]).[user]
10 Tên leader Công thức Tự tính (công thức) Công thức: SUBSTITUTE( SUBSTITUTE( IF( '7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[AM]).[leader] = "", '7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[AM khi điều chuyển]).[leader], IF( '7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[AM khi điều chuyển]).[leader] = "", '7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[AM]).[leader], '7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[AM]).[leader] & ", " & '7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[AM khi điều chuyển]).[leader] ) ), "[", "" ), "]", "" )
11 Ngày làm việc Ngày giờ Nhập liệu Định dạng dd/MM/yyyy
12 Thứ Công thức Tự tính (công thức) Công thức: SWITCH( WEEKDAY([Ngày làm việc]), 1, "Chủ Nhật", 2, "Thứ Hai", 3, "Thứ Ba", 4, "Thứ Tư", 5, "Thứ Năm", 6, "Thứ Sáu", 7, "Thứ Bảy", "" )
13 Ngày làm việc_Text Công thức Tự tính (công thức) Công thức: TEXT([Ngày làm việc],"DD/MM/YYYY")
14 AM khi điều chuyển Công thức Tự tính (công thức) Công thức: '7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[Đi ca CH khác]).[parent_department_name].LISTCOMBINE()
15 Thời gian làm việc UTC0 Công thức Tự tính (công thức) Công thức: [Ngày làm việc]-duration(0,Text([Ngày làm việc],"HH"))
16 Tuần Công thức Tự tính (công thức) Công thức: "Tuần " & ( WEEKNUM([Ngày làm việc], 2) - WEEKNUM( TODATE(TEXT([Ngày làm việc], "YYYY/MM") & "/01"), 2 ) + 1 )
17 Tháng Công thức Tự tính (công thức) Công thức: "Tháng "& MONTH([Ngày làm việc])&"/"&YEAR([Ngày làm việc])
18 Đi ca CH khác Chọn một Nhập liệu 85 lựa chọn (không liệt kê)
19 Ca1_(08:00 a.m - 09:00 a.m) Chọn một Nhập liệu Lựa chọn: 0.5, 1, 1.5, 2, 2.5, 3, OFF PHÉP, School Tour, Đào tạo
20 Ca2_(09:00 a.m - 12:00 p.m) Chọn một Nhập liệu Lựa chọn: 0.5, 0.75, 1.75, 1, 1.5, 2, 2.25, 2.50, 2.75, 2.5, 3, OFF, OFF Phép
21 Ca3_(12:00 p.m - 15:00 p.m) Chọn một Nhập liệu Lựa chọn: 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.5, 3, OFF Phép, OFF
22 Ca4_(15:00 p.m - 18:00 p.m) Chọn một Nhập liệu Lựa chọn: 1, 2, 3, 1.5, 2.5, 0.5, 0.25, 1.75, 1.25, 0.75, 2.25, 2.75, OFF
23 Ca5_(18:00 p.m - 21:00 p.m) Chọn một Nhập liệu Lựa chọn: 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.5, 2.75, 3, OFF Phép, OFF
24 Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca Chọn một Nhập liệu Lựa chọn: 0.25, 0.50, 0.75, 1, 1.5
25 Tổng giờ làm việc Công thức Tự tính (công thức) Công thức: IF( OR( [Ca1_(08:00 a.m - 09:00 a.m)] = "off", [Ca2_(09:00 a.m - 12:00 p.m)] = "off", [Ca3_(12:00 p.m - 15:00 p.m)] = "off", [Ca4_(15:00 p.m - 18:00 p.m)] = "off", [Ca5_(18:00 p.m - 21:00 p.m)] = "off", [Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca] = "off" ), "", IF( SUM( [Ca1_(08:00 a.m - 09:00 a.m)], [Ca2_(09:00 a.m - 12:00 p.m)], [Ca3_(12:00 p.m - 15:00 p.m)], [Ca4_(15:00 p.m - 18:00 p.m)], [Ca5_(18:00 p.m - 21:00 p.m)], [Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca] ) = 0, "", SUM( [Ca1_(08:00 a.m - 09:00 a.m)], [Ca2_(09:00 a.m - 12:00 p.m)], [Ca3_(12:00 p.m - 15:00 p.m)], [Ca4_(15:00 p.m - 18:00 p.m)], [Ca5_(18:00 p.m - 21:00 p.m)], [Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca] ) ) ) Tổng thời gian làm việc tính theo ngày
26 Thời gian bắt đầu Công thức Tự tính (công thức) Công thức: SWITCH( TRUE(), [Ca1_(08:00 a.m - 09:00 a.m)] != "", [Thời gian làm việc UTC0] + DURATION(0, 8), [Ca2_(09:00 a.m - 12:00 p.m)] != "", [Thời gian làm việc UTC0] + DURATION(0, 9), [Ca3_(12:00 p.m - 15:00 p.m)] != "", [Thời gian làm việc UTC0] + DURATION(0, 12), [Ca4_(15:00 p.m - 18:00 p.m)] != "", [Thời gian làm việc UTC0] + DURATION(0, 15), [Ca5_(18:00 p.m - 21:00 p.m)] != "", [Thời gian làm việc UTC0] + DURATION(0, 18), [Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca] != "", [Thời gian làm việc UTC0] + DURATION(0, 21), [Thời gian làm việc UTC0] ) Thời gian bắt đầu làm việc theo ngày
27 Thời gian kết thúc Công thức Tự tính (công thức) Công thức: SWITCH( TRUE(), [Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca] != "", [Thời gian làm việc UTC0] + DURATION(0,22), [Ca5_(18:00 p.m - 21:00 p.m)] != "", [Thời gian làm việc UTC0] + DURATION(0,21), [Ca4_(15:00 p.m - 18:00 p.m)] != "", [Thời gian làm việc UTC0] + DURATION(0,18), [Ca3_(12:00 p.m - 15:00 p.m)] != "", [Thời gian làm việc UTC0] + DURATION(0,15), [Ca2_(09:00 a.m - 12:00 p.m)] != "", [Thời gian làm việc UTC0] + DURATION(0,12), [Ca1_(08:00 a.m - 09:00 a.m)] != "", [Thời gian làm việc UTC0] + DURATION(0,9), [Thời gian làm việc UTC0] ) Thời gian kết thúc làm việc theo ngày
28 Name shift time Công thức Tự tính (công thức) Công thức: IF( LEN( IF([Ca1_(08:00 a.m - 09:00 a.m)] != "", "Ca1, ", "") & IF([Ca2_(09:00 a.m - 12:00 p.m)] != "", "Ca2, ", "") & IF([Ca3_(12:00 p.m - 15:00 p.m)] != "", "Ca3, ", "") & IF([Ca4_(15:00 p.m - 18:00 p.m)] != "", "Ca4, ", "") & IF([Ca5_(18:00 p.m - 21:00 p.m)] != "", "Ca5, ", "") & IF([Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca] != "", "Ca6, ", "") ) = 0, "", LEFT( IF([Ca1_(08:00 a.m - 09:00 a.m)] != "", "Ca1, ", "") & IF([Ca2_(09:00 a.m - 12:00 p.m)] != "", "Ca2, ", "") & IF([Ca3_(12:00 p.m - 15:00 p.m)] != "", "Ca3, ", "") & IF([Ca4_(15:00 p.m - 18:00 p.m)] != "", "Ca4, ", "") & IF([Ca5_(18:00 p.m - 21:00 p.m)] != "", "Ca5, ", "") & IF([Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca] != "", "Ca6, ", ""), LEN( IF([Ca1_(08:00 a.m - 09:00 a.m)] != "", "Ca1, ", "") & IF([Ca2_(09:00 a.m - 12:00 p.m)] != "", "Ca2, ", "") & IF([Ca3_(12:00 p.m - 15:00 p.m)] != "", "Ca3, ", "") & IF([Ca4_(15:00 p.m - 18:00 p.m)] != "", "Ca4, ", "") & IF([Ca5_(18:00 p.m - 21:00 p.m)] != "", "Ca5, ", "") & IF([Ca6_(21:00 p.m - 22:00 p.m) hoặc tăng ca] != "", "Ca6, ", "") ) - 2 ) )
29 Trigger Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '7.1.1 - Danh sách nhân sự hệ thống'.FILTER(CurrentValue.[Phòng ban chi tiết]=[Cửa hàng]).[user].LISTCOMBINE()
30 Trigger Anycross Công thức Tự tính (công thức) Công thức: IF(TEXT(Today(),"DD/MM/YYYY")=[Ngày làm việc_Text],"Triger","")
31 Điều kiện hiển thị Công thức Tự tính (công thức) Công thức: If(today()-DURATION(2)>[Ngày làm việc],"Khóa","")
32 Tạo record trong 2.3 Chọn một Nhập liệu Lựa chọn: Tạo
33 SourceID Văn bản Nhập liệu
34 Ngày thay đổi gần nhất Công thức Tự tính (công thức) Công thức: '2.4 - QL Quá trình thay đổi vị trí'.FILTER(CurrentValue.[Nhân sự]=[Account]).[Ngày bắt đầu].MAX()
35 Date Công thức Tự tính (công thức) Công thức: VALUE([Ngày làm việc])

4.0.1 - Bảng lương tổng hợp - Nội bộ

  • Table ID: tblQ5hxDr8tUTVfZ · Base: Base HRIS (nhân sự, công, lương) · Số cột: 77 · Cột chính: Ngày đầu tháng
  • Khoá trong config/lark-tables.mjs: HRIS.BANG_LUONG
  • Code ONE-ANNA tham chiếu: apps/api/src/portal/payroll-snapshot.js, apps/api/src/portal/schema-watch.js, legacy/gas/MaHoSoNhanVien.js, legacy/gas/Mã.js
  • Liên kết tới: 2.1 - QL Thông tin nhân sự
  • Cơ cấu cột: 55 công thức · 5 tra cứu · 1 liên kết · 16 cột nhập/hệ thống

Ghi chú nghiệp vụ: bảng lương tổng hợp nội bộ theo tháng × nhân sự — nguồn của Phiếu lương (getPayrollSlip). Nhân sự bấm Xác nhận lương → confirmPayrollSlip (qua payroll_outbox). Dòng tháng mới do backfillMonthlyPayrollSheets tạo. Webhook /api/webhook/payroll-unlock (Lark Automation) mở khoá phiếu.

# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày đầu tháng 🔑 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
2 Ngày thay đổi trong tháng Công thức Tự tính (công thức) Công thức: '4.3.1 - Khai báo thu nhập nhân sự'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Ngày bắt đầu]>[Ngày đầu tháng]&&CurrentValue.[Ngày bắt đầu]<[Ngày cuối tháng]).[Ngày bắt đầu].LISTCOMBINE()
3 Ngày cuối tháng Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
4 Năm Công thức Tự tính (công thức) Công thức: [Ngày đầu tháng].YEAR()
5 Tháng Công thức Tự tính (công thức) Công thức: [Ngày đầu tháng].MONTH()
6 Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.1 - QL Thông tin nhân sự (một bản ghi); cột đối ứng: [4.0.1 - Bảng lương tổng hợp - Nội bộ]
7 Nhân sự Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[user].LISTCOMBINE()
8 Họ và tên Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Họ và tên]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[Họ và tên].LISTCOMBINE()
9 Đơn vị Công thức Tự tính (công thức) Công thức: IF( [Mã nhân sự] = "", "", SUBSTITUTE( '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && OR( CurrentValue.[Ngày kết thúc] = "", CurrentValue.[Ngày kết thúc] + 1 >= [Ngày đầu tháng] ) ) .[Đơn vị], "[", "" ).SUBSTITUTE("]", "") )
10 Vị trí Công thức Tự tính (công thức) Công thức: IF( [Mã nhân sự] = "", "", SUBSTITUTE( '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && OR( CurrentValue.[Ngày kết thúc] = "", CurrentValue.[Ngày kết thúc] + 1 >= [Ngày đầu tháng] ) ) .[Vị trí], "[", "" ).SUBSTITUTE("]", "") )
11 Phân loại Công thức Tự tính (công thức) Công thức: '0.0.2 - Khai báo - Sơ đồ tổ chức'.FILTER(CurrentValue.[Vị trí]=[Vị trí]&&CurrentValue.[Đơn vị]=[Đơn vị]).[Phân loại].LISTCOMBINE().UNIQUE()
12 Ngày thay đổi gần nhất Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày bắt đầu]. Biểu thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]).[Ngày bắt đầu].LISTCOMBINE().MAX()
13 Trạng thái làm việc Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Ngày bắt đầu]=[Ngày thay đổi gần nhất]&&CurrentValue.[Mã nhân sự]=[Mã nhân sự]).[Trạng thái làm việc]
14 Kết quả KPIs đạt trong tháng Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Kết quả KPIs đạt được trong tháng]. Biểu thức: '4.4.2 - Bảng tổng hợp KPI'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Kỳ đánh giá]=[Ngày đầu tháng]).[Kết quả KPIs đạt được trong tháng].LISTCOMBINE()
15 KPIs Tính lương - Văn phòng Văn bản Nhập liệu
16 Ngày công tiêu chuẩn Công thức Tự tính (công thức) Công thức: IF( [Phân loại] = "Full công", NETWORKDAYS([Ngày đầu tháng], [Ngày cuối tháng]), '3.2 - Quy tắc nghỉ' .FILTER( CurrentValue.[Ngày tạo] >= [Ngày đầu tháng] && CurrentValue.[Ngày tạo] <= [Ngày cuối tháng] && CurrentValue.[Phân loại] = [Phân loại] ) .[Công chuẩn theo tháng] .LISTCOMBINE() ) Full công : T2-T6 Kho vận và Trải nghiệm KH : nghỉ 1 ngày/tuần Các phòng ban còn lại: nghỉ 2 T7 và CN hàng tuần
17 Giờ công tiêu chuẩn Công thức Tự tính (công thức) Công thức: (IF( '2.6 - QL Ca làm việc khối cửa hàng - Thai sản' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Trạng thái làm việc] .UNIQUE() = "", VALUE(8), VALUE( '2.6 - QL Ca làm việc khối cửa hàng - Thai sản' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Trạng thái làm việc] .UNIQUE() ) ))*[Ngày công tiêu chuẩn]
18 Ngày công thực tế Văn bản Nhập liệu - Đối với Khối VP max bằng công chuẩn ( làm vượt công chuẩn ko được tính lương) - Đối với khối Cửa hàng theo giờ công thực tế đi làm
19 Giờ công thực tế Văn bản Nhập liệu
20 Mức lương học việc Công thức Tự tính (công thức) Công thức: IF( [Trạng thái làm việc] = "Thực tập sinh", '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Thưởng KPIs mục tiêu (VP)] .UNIQUE(), "" ) Giống với lương thử việc
21 Mức lương thử việc Công thức Tự tính (công thức) Công thức: IF( CONTAINS([Trạng thái làm việc], "Thử việc"), '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Lương cơ bản] .UNIQUE(), "" )
22 Mức lương chính thức - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( CONTAINTEXT([Trạng thái làm việc], "Chính thức"), IF( [Ngày thay đổi trong tháng] = "", '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Còn hiệu lực" && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Lương cơ bản] .LISTCOMBINE(), '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Hết hiệu lực" && CurrentValue.[Ngày bắt đầu] <= [Ngày thay đổi trong tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Lương cơ bản] .LISTCOMBINE() ), "" )
23 Mức lương chính thức - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( CONTAINTEXT([Trạng thái làm việc], "Chính thức"), IF( [Ngày thay đổi trong tháng] = "", "", '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Còn hiệu lực" && CurrentValue.[Ngày bắt đầu] >= [Ngày thay đổi trong tháng] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày thay đổi trong tháng] ) ) .[Lương cơ bản] .LISTCOMBINE() ), "" )
24 Mức thưởng KPIs mục tiêu (VP) - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Còn hiệu lực" && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Thưởng KPIs mục tiêu (VP)] .LISTCOMBINE(), '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Hết hiệu lực" && CurrentValue.[Ngày bắt đầu] <= [Ngày thay đổi trong tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Thưởng KPIs mục tiêu (VP)] .LISTCOMBINE() )
25 Mức thưởng KPIs mục tiêu (VP) - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", "", '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Còn hiệu lực" && CurrentValue.[Ngày bắt đầu] >= [Ngày thay đổi trong tháng] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày thay đổi trong tháng] ) ) .[Thưởng KPIs mục tiêu (VP)] .LISTCOMBINE() )
26 Mức Phụ cấp chức vụ - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Còn hiệu lực" && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Phụ cấp chức vụ] .LISTCOMBINE(), '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Hết hiệu lực" && CurrentValue.[Ngày bắt đầu] <= [Ngày thay đổi trong tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Phụ cấp chức vụ] .LISTCOMBINE() )
27 Mức Phụ cấp chức vụ - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", "", '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Còn hiệu lực" && CurrentValue.[Ngày bắt đầu] >= [Ngày thay đổi trong tháng] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày thay đổi trong tháng] ) ) .[Phụ cấp chức vụ] .LISTCOMBINE() )
28 Mức Phụ cấp kiêm nhiệm - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Còn hiệu lực" && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Phụ cấp kiêm nhiệm] .LISTCOMBINE(), '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Hết hiệu lực" && CurrentValue.[Ngày bắt đầu] <= [Ngày thay đổi trong tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Phụ cấp kiêm nhiệm] .LISTCOMBINE() )
29 Mức phụ cấp kiêm nhiệm - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", "", '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Còn hiệu lực" && CurrentValue.[Ngày bắt đầu] >= [Ngày thay đổi trong tháng] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày thay đổi trong tháng] ) ) .[Phụ cấp kiêm nhiệm] .LISTCOMBINE() )
30 Mức Phụ cấp thu hút - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Còn hiệu lực" && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Phụ cấp thu hút] .LISTCOMBINE(), '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Hết hiệu lực" && CurrentValue.[Ngày bắt đầu] <= [Ngày thay đổi trong tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Phụ cấp thu hút] .LISTCOMBINE() )
31 Mức Phụ cấp thu hút - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", "", '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Còn hiệu lực" && CurrentValue.[Ngày bắt đầu] >= [Ngày thay đổi trong tháng] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày thay đổi trong tháng] ) ) .[Phụ cấp thu hút] .LISTCOMBINE() )
32 Mức Phụ cấp xăng xe - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Còn hiệu lực" && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Phụ cấp xăng xe] .LISTCOMBINE(), '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Hết hiệu lực" && CurrentValue.[Ngày bắt đầu] <= [Ngày thay đổi trong tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày đầu tháng] ) ) .[Phụ cấp xăng xe] .LISTCOMBINE() )
33 Mức Phụ cấp xăng xe - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", "", '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Còn hiệu lực" && CurrentValue.[Ngày bắt đầu] >= [Ngày thay đổi trong tháng] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày thay đổi trong tháng] ) ) .[Phụ cấp xăng xe] .LISTCOMBINE() )
34 Mức Hỗ trợ ăn ca Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", "", '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Còn hiệu lực" && CurrentValue.[Ngày bắt đầu] >= [Ngày thay đổi trong tháng] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày thay đổi trong tháng] ) ) .[Hỗ trợ ăn ca] .LISTCOMBINE() )
35 Mức Hỗ trợ đi lại Công thức Tự tính (công thức) Công thức: IF( [Ngày thay đổi trong tháng] = "", "", '4.3.1 - Khai báo thu nhập nhân sự' .FILTER( CurrentValue.[Mã nhân sự] = [Mã nhân sự] && CurrentValue.[Trạng thái] = "Còn hiệu lực" && CurrentValue.[Ngày bắt đầu] >= [Ngày thay đổi trong tháng] && CurrentValue.[Ngày bắt đầu] <= [Ngày cuối tháng] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Ngày thay đổi trong tháng] ) ) .[Hỗ trợ đi lại] .LISTCOMBINE() )
36 Lương Thực tập sinh - Theo ngày công Văn bản Nhập liệu
37 Lương Thực tập sinh - Hiệu suất công việc Văn bản Nhập liệu
38 Lương thử việc - Nghỉ lễ Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( [Mức lương thử việc] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công nghỉ lễ - TV] .LISTCOMBINE() = 0, "", [Mức lương thử việc] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công nghỉ lễ - TV] .LISTCOMBINE() ) )
39 Lương chính thức - Nghỉ lễ - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( [Mức lương chính thức - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công nghỉ lễ - CT - Trước điều chỉnh] .LISTCOMBINE() = 0, "", [Mức lương chính thức - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công nghỉ lễ - CT - Trước điều chỉnh] .LISTCOMBINE() ) )
40 Lương chính thức - Nghỉ lễ - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( [Mức lương chính thức - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công nghỉ lễ - CT - Sau điều chỉnh] .LISTCOMBINE() = 0, "", [Mức lương chính thức - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công nghỉ lễ - CT - Sau điều chỉnh] .LISTCOMBINE() ) )
41 Lương thử việc - Đi làm ngày lễ Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( [Mức lương thử việc] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công đi làm lễ - TV] .LISTCOMBINE() = 0, "", [Mức lương thử việc] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công đi làm lễ - TV] .LISTCOMBINE() ) )
42 Lương chính thức - Đi làm ngày lễ - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( [Mức lương chính thức - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công đi làm lễ - CT - Trước điều chỉnh] .LISTCOMBINE() = 0, "", [Mức lương chính thức - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công đi làm lễ - CT - Trước điều chỉnh] .LISTCOMBINE() ) )
43 Lương chính thức - Đi làm ngày lễ - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( [Mức lương chính thức - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công đi làm lễ - CT - Sau điều chỉnh] .LISTCOMBINE() = 0, "", [Mức lương chính thức - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công đi làm lễ - CT - Sau điều chỉnh] .LISTCOMBINE() ) )
44 Lương thực tập sinh Văn bản Nhập liệu
45 Lương thử việc - Ngày thường Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( [Mức lương thử việc] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - TV] .LISTCOMBINE() = 0, "", [Mức lương thử việc] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - TV] .LISTCOMBINE() ) )
46 Lương chính thức - Ngày thường - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( [Mức lương chính thức - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - CT - Trước điều chỉnh] .LISTCOMBINE() = 0, "", [Mức lương chính thức - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - CT - Trước điều chỉnh] .LISTCOMBINE() ) )
47 Lương chính thức - Ngày thường - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( [Mức lương chính thức - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - CT - Sau điều chỉnh] .LISTCOMBINE() = 0, "", [Mức lương chính thức - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - CT - Sau điều chỉnh] .LISTCOMBINE() ) )
48 Lương - Thưởng KPIs mục tiêu (VP) - Thử việc - Trước thay đổi Văn bản Nhập liệu
49 Lương - Thưởng KPIs mục tiêu (VP) - Chính thức - Trước thay đổi Văn bản Nhập liệu
50 Lương - Thưởng KPIs mục tiêu (VP) - Sau thay đổi Văn bản Nhập liệu
51 Phụ cấp chức vụ - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( [Mức Phụ cấp chức vụ - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - CT - Trước điều chỉnh] .LISTCOMBINE() = 0, "", [Mức Phụ cấp chức vụ - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - CT - Trước điều chỉnh] .LISTCOMBINE() ) )
52 Phụ cấp chức vụ - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( [Mức Phụ cấp chức vụ - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - CT - Sau điều chỉnh] .LISTCOMBINE() = 0, "", [Mức Phụ cấp chức vụ - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - CT - Sau điều chỉnh] .LISTCOMBINE() ) )
53 Phụ cấp kiêm nhiệm - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( [Mức Phụ cấp kiêm nhiệm - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - CT - Trước điều chỉnh] .LISTCOMBINE() = 0, "", [Mức Phụ cấp kiêm nhiệm - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - CT - Trước điều chỉnh] .LISTCOMBINE() ) )
54 Phụ cấp kiêm nhiệm - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( [Mức phụ cấp kiêm nhiệm - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - CT - Sau điều chỉnh] .LISTCOMBINE() = 0, "", [Mức phụ cấp kiêm nhiệm - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - CT - Sau điều chỉnh] .LISTCOMBINE() ) )
55 Phụ cấp thu hút - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( [Mức Phụ cấp thu hút - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - CT - Trước điều chỉnh] .LISTCOMBINE() = 0, "", [Mức Phụ cấp thu hút - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - CT - Trước điều chỉnh] .LISTCOMBINE() ) )
56 Phụ cấp thu hút - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( [Mức Phụ cấp thu hút - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - CT - Sau điều chỉnh] .LISTCOMBINE() = 0, "", [Mức Phụ cấp thu hút - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công ngày thường - CT - Sau điều chỉnh] .LISTCOMBINE() ) )
57 Phụ cấp xăng xe Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( [Mức Phụ cấp xăng xe - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Tổng công] = 0, "", [Mức Phụ cấp xăng xe - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Tổng công] ) ) Tính theo ngày công thực tế/Công chuẩn
58 Hỗ trợ ăn ca Văn bản Nhập liệu Mức hỗ trợ mục tiêu * Số giờ công đi làm thực tế
59 Hỗ trợ đi lại Văn bản Nhập liệu Mức hỗ trợ mục tiêu * Số giờ công đi làm thực tế
60 Phụ cấp gửi xe Văn bản Nhập liệu - Khối VP ( Trừ các trưởng bộ phận/trực page/Tuấn đào tạo/ Ánh mắt): 10,000 đồng * Số ngày đi làm thực tế - BP Kho vận và Livestream: 250,000/tháng
61 Phụ cấp điện thoại Văn bản Nhập liệu Tính dựa trên ngày công đi làm thực tế/Công chuẩn
62 Lương OT Ngày thường - Thử việc Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( ( [Mức lương thử việc] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT TV - Ngày thường] .LISTCOMBINE() ) * 1.5 = 0, "", ( [Mức lương thử việc] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT TV - Ngày thường] .LISTCOMBINE() ) * 1.5 ) )
63 Lương OT Ngày thường - Chính thức - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( ( [Mức lương chính thức - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT CT - Ngày thường - Trước thay đổi] .LISTCOMBINE() ) * 1.5 = 0, "", ( [Mức lương chính thức - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT CT - Ngày thường - Trước thay đổi] .LISTCOMBINE() ) * 1.5 ) )
64 Lương OT Ngày thường - Chính thức - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( ( [Mức lương chính thức - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT CT - Ngày thường - Sau thay đổi] .LISTCOMBINE() ) * 1.5 = 0, "", ( [Mức lương chính thức - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT CT - Ngày thường - Sau thay đổi] .LISTCOMBINE() ) * 1.5 ) )
65 Lương OT Thử việc - Ngày nghỉ Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( ( [Mức lương chính thức - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT TV - Ngày nghỉ] .LISTCOMBINE() ) * 2 = 0, "", ( [Mức lương chính thức - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT TV - Ngày nghỉ] .LISTCOMBINE() ) * 2 ) )
66 Lương OT Chính thức - Ngày nghỉ - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( ( [Mức lương chính thức - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT CT - Ngày nghỉ - Trước thay đổi] .LISTCOMBINE() ) * 1.5 = 0, "", ( [Mức lương chính thức - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT CT - Ngày nghỉ - Trước thay đổi] .LISTCOMBINE() ) * 1.5 ) )
67 Lương OT Chính thức - Ngày nghỉ - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( ( [Mức lương chính thức - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT CT - Ngày nghỉ - Sau thay đổi] .LISTCOMBINE() ) * 1.5 = 0, "", ( [Mức lương chính thức - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT CT - Ngày nghỉ - Sau thay đổi] .LISTCOMBINE() ) * 1.5 ) )
68 Lương OT Thử việc - Ngày lễ Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( ( [Mức lương thử việc] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT TV - Ngày lễ] .LISTCOMBINE() ) * 1.5 = 0, "", ( [Mức lương thử việc] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT TV - Ngày lễ] .LISTCOMBINE() ) * 1.5 ) )
69 Lương OT Chính thức - Ngày lễ - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( ( [Mức lương chính thức - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT CT - Ngày lễ - Trước thay đổi] .LISTCOMBINE() ) * 1.5 = 0, "", ( [Mức lương chính thức - Trước thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT CT - Ngày lễ - Trước thay đổi] .LISTCOMBINE() ) * 1.5 ) )
70 Lương OT Chính thức - Ngày lễ - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( OR( [Giờ công tiêu chuẩn] = "", [Giờ công tiêu chuẩn] = 0 ), "", IF( ( [Mức lương chính thức - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT CT - Ngày lễ - Sau thay đổi] .LISTCOMBINE() ) * 1.5 = 0, "", ( [Mức lương chính thức - Sau thay đổi] / [Giờ công tiêu chuẩn] * '3.1 - Bảng tính công tổng hợp - Tính lương' .FILTER( CurrentValue.[Ngày đầu tháng] = [Ngày đầu tháng] && CurrentValue.[Ngày cuối tháng] = [Ngày cuối tháng] && CurrentValue.[Mã nhân sự] = [Mã nhân sự] ) .[Công OT CT - Ngày lễ - Sau thay đổi] .LISTCOMBINE() ) * 1.5 ) )
71 Tổng lương chính thức - Trước thay đổi Công thức Tự tính (công thức) Công thức: IF( [Lương chính thức - Nghỉ lễ - Trước thay đổi] + [Lương chính thức - Đi làm ngày lễ - Trước thay đổi] + [Lương chính thức - Ngày thường - Trước thay đổi] + [Lương OT Chính thức - Ngày nghỉ - Trước thay đổi] + [Lương OT Chính thức - Ngày lễ - Trước thay đổi] + [Lương OT Ngày thường - Chính thức - Trước thay đổi] = 0, "", [Lương chính thức - Nghỉ lễ - Trước thay đổi] + [Lương chính thức - Đi làm ngày lễ - Trước thay đổi] + [Lương chính thức - Ngày thường - Trước thay đổi] + [Lương OT Chính thức - Ngày nghỉ - Trước thay đổi] + [Lương OT Chính thức - Ngày lễ - Trước thay đổi] + [Lương OT Ngày thường - Chính thức - Trước thay đổi] )
72 Tổng lương chính thức - Sau thay đổi Công thức Tự tính (công thức) Công thức: IF( [Lương chính thức - Nghỉ lễ - Sau thay đổi] + [Lương chính thức - Đi làm ngày lễ - Sau thay đổi] + [Lương chính thức - Ngày thường - Sau thay đổi] + [Lương OT Ngày thường - Chính thức - Sau thay đổi] + [Lương OT Chính thức - Ngày nghỉ - Sau thay đổi] + [Lương OT Chính thức - Ngày lễ - Sau thay đổi] = 0, "", [Lương chính thức - Nghỉ lễ - Sau thay đổi] + [Lương chính thức - Đi làm ngày lễ - Sau thay đổi] + [Lương chính thức - Ngày thường - Sau thay đổi] + [Lương OT Ngày thường - Chính thức - Sau thay đổi] + [Lương OT Chính thức - Ngày nghỉ - Sau thay đổi] + [Lương OT Chính thức - Ngày lễ - Sau thay đổi] )
73 Tổng lương thử việc Công thức Tự tính (công thức) Công thức: IF( [Lương thử việc - Nghỉ lễ] + [Lương thử việc - Đi làm ngày lễ] + [Lương thử việc - Ngày thường] + [Lương OT Ngày thường - Thử việc] + [Lương OT Thử việc - Ngày nghỉ] + [Lương OT Thử việc - Ngày lễ] = 0, "", [Lương thử việc - Nghỉ lễ] + [Lương thử việc - Đi làm ngày lễ] + [Lương thử việc - Ngày thường] + [Lương OT Ngày thường - Thử việc] + [Lương OT Thử việc - Ngày nghỉ] + [Lương OT Thử việc - Ngày lễ] )
74 Tổng lương chính thức Công thức Tự tính (công thức) Công thức: IF([Tổng lương chính thức - Trước thay đổi]+[Tổng lương chính thức - Sau thay đổi]=0,"",[Tổng lương chính thức - Trước thay đổi]+[Tổng lương chính thức - Sau thay đổi])
75 Check trùng Công thức Tự tính (công thức) Công thức: IF('4.0.1 - Bảng lương tổng hợp - Nội bộ'.COUNTIF(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Ngày đầu tháng]=[Ngày đầu tháng])>1,"🚫repetitive","")
76 Xác nhận công Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Xác nhận công]. Biểu thức: '3.1 - Bảng tính công tổng hợp - Tính lương'.FILTER(CurrentValue.[Ngày đầu tháng]=[Ngày đầu tháng]&&CurrentValue.[Ngày cuối tháng]=[Ngày cuối tháng]&&CurrentValue.[Nhân sự]=[Nhân sự]).[Xác nhận công].LISTCOMBINE()
77 Xác nhận lương Chọn một Nhập liệu Lựa chọn: Xác nhận lương

Bảng

  • Table ID: tbla95ZeOAciTU6t · Base: Base HRIS (nhân sự, công, lương) · Số cột: 1 · Cột chính: Văn bản
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 0 công thức · 0 tra cứu · 0 liên kết · 1 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Văn bản 🔑 Văn bản Nhập liệu

4.2.1 - Khai báo phụ cấp - Phúc lợi

  • Table ID: tblacUd7dZYKxvww · Base: Base HRIS (nhân sự, công, lương) · Số cột: 9 · Cột chính: Ngày bắt đầu
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Liên kết tới: 2.1 - QL Thông tin nhân sự
  • Cơ cấu cột: 0 công thức · 2 tra cứu · 1 liên kết · 6 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày bắt đầu 🔑 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
2 Ngày kết thúc Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
3 Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.1 - QL Thông tin nhân sự (một bản ghi); cột đối ứng: [4.2.1 - Khai báo phụ cấp - Phúc lợi]
4 Nhân sự Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[user].LISTCOMBINE()
5 Họ và tên Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Họ và tên]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[Họ và tên].LISTCOMBINE()
6 Loại phúc lợi - phụ cấp Chọn một Nhập liệu Lựa chọn: Phụ cấp điện thoại
7 Mức phụ cấp Số Nhập liệu Định dạng 1,000
8 Ghi chú Văn bản Nhập liệu
9 Trạng thái Văn bản Nhập liệu

4.3.1 - Khai báo thu nhập nhân sự

  • Table ID: tblDg7x8omtmWLFb · Base: Base HRIS (nhân sự, công, lương) · Số cột: 14 · Cột chính: Ngày bắt đầu
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Liên kết tới: 2.1 - QL Thông tin nhân sự
  • Cơ cấu cột: 1 công thức · 2 tra cứu · 1 liên kết · 10 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày bắt đầu 🔑 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
2 Ngày kết thúc Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
3 Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.1 - QL Thông tin nhân sự (một bản ghi); cột đối ứng: [4.3.1 - Khai báo thu nhập nhân sự]
4 Nhân sự Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[user].LISTCOMBINE()
5 Họ và tên Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Họ và tên]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[Họ và tên].LISTCOMBINE()
6 Lương cơ bản Số Nhập liệu Định dạng 1,000
7 Thưởng KPIs mục tiêu (VP) Số Nhập liệu Định dạng 1,000
8 Phụ cấp chức vụ Số Nhập liệu Định dạng 1,000
9 Phụ cấp kiêm nhiệm Số Nhập liệu Định dạng 1,000
10 Phụ cấp thu hút Số Nhập liệu Định dạng 1,000
11 Phụ cấp xăng xe Số Nhập liệu Định dạng 1,000
12 Hỗ trợ ăn ca Số Nhập liệu Định dạng 1,000
13 Hỗ trợ đi lại Số Nhập liệu Định dạng 1,000
14 Trạng thái Công thức Tự tính (công thức) Công thức: IF( AND([Ngày bắt đầu] != "", [Ngày kết thúc] != ""), IF( [Ngày kết thúc] <= TODAY(), "Hết hiệu lực", "Còn hiệu lực" ), IF( AND([Ngày bắt đầu] != "", [Ngày kết thúc] = ""), "Còn hiệu lực", "" ) )

4.4.1 - Hiệu suất thực tập sinh - Cửa hàng

  • Table ID: tbl31loumDhLtk4P · Base: Base HRIS (nhân sự, công, lương) · Số cột: 10 · Cột chính: MNV
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 4 công thức · 0 tra cứu · 0 liên kết · 6 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 MNV 🔑 Văn bản Nhập liệu
2 Họ và tên - Theo phiếu Văn bản Nhập liệu
3 Mã nhân sự Công thức Tự tính (công thức) Công thức: UPPER([MNV])
4 Họ và tên - Hệ thống Công thức Tự tính (công thức) Công thức: TRIM( '2.1 - QL Thông tin nhân sự' .FILTER( TRIM(CurrentValue.[user_id]) = TRIM([Mã nhân sự]) ) .[Họ và tên] )
5 Check thông tin Công thức Tự tính (công thức) Công thức: IF([Họ và tên - Hệ thống]=[Họ và tên - Theo phiếu],"Trùng nhau","Không trùng nhau")
6 Chu kỳ lương Số Nhập liệu Định dạng 0
7 Tiêu chí (1/3): Kỹ thuật Khúc xạ và Mài lắp_Chấm điểm tiêu chí 1 Số Nhập liệu Định dạng 0
8 Tiêu chí (2/3): Kỹ năng Tư vấn & Sản phẩm_Chấm điểm tiêu chí 2 Số Nhập liệu Định dạng 0
9 Tiêu chí (3/3): Tác phong & Ý thức Kỷ luật_Chấm điểm tiêu chí 3 Số Nhập liệu Định dạng 0
10 Tổng điểm thực hành Công thức Tự tính (công thức) Công thức: [Tiêu chí (1/3): Kỹ thuật Khúc xạ và Mài lắp_Chấm điểm tiêu chí 1]*0.5+[Tiêu chí (2/3): Kỹ năng Tư vấn & Sản phẩm_Chấm điểm tiêu chí 2]*0.2+[Tiêu chí (3/3): Tác phong & Ý thức Kỷ luật_Chấm điểm tiêu chí 3]*0.3

4.4.2 - Bảng tổng hợp KPI

  • Table ID: tblXQFkqVHKVn4N3 · Base: Base HRIS (nhân sự, công, lương) · Số cột: 11 · Cột chính: Kỳ đánh giá
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 4 công thức · 2 tra cứu · 0 liên kết · 5 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Kỳ đánh giá 🔑 Ngày giờ Nhập liệu Định dạng dd/MM/yyyy
2 Mã nhân sự Văn bản Nhập liệu
3 Nhân sự Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[user].LISTCOMBINE()
4 Họ và tên Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Họ và tên]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[Họ và tên].LISTCOMBINE()
5 Đơn vị Công thức Tự tính (công thức) Công thức: IF( [Nhân sự] = "", "", '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Nhân sự] = [Nhân sự] && CurrentValue.[Ngày bắt đầu] <= [Kỳ đánh giá] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Kỳ đánh giá] ) ) .[Đơn vị] .UNIQUE() )
6 Vị trí Công thức Tự tính (công thức) Công thức: IF( [Nhân sự] = "", "", '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Nhân sự] = [Nhân sự] && CurrentValue.[Ngày bắt đầu] <= [Kỳ đánh giá] && ( CurrentValue.[Ngày kết thúc] = "" \|\| CurrentValue.[Ngày kết thúc] >= [Kỳ đánh giá] ) ) .[Vị trí] .UNIQUE() )
7 A - Điểm đánh giá hiệu suất làm việc (theo kết quả đánh giá của Quản lý) Số Nhập liệu Định dạng 0.00%
8 B - Điểm KPIs Hành vi, thái độ, ý thức (theo kết quả đánh giá của Quản lý) Số Nhập liệu Định dạng 0.00%
9 C - Điểm KPIs theo tỷ lệ hoàn thành Target Số Nhập liệu Định dạng 0.00%
10 Kết quả KPIs đạt được trong tháng Công thức Tự tính (công thức) Công thức: IF( [A - Điểm đánh giá hiệu suất làm việc (theo kết quả đánh giá của Quản lý)] + [B - Điểm KPIs Hành vi, thái độ, ý thức (theo kết quả đánh giá của Quản lý)] + [C - Điểm KPIs theo tỷ lệ hoàn thành Target]= 0, "", [A - Điểm đánh giá hiệu suất làm việc (theo kết quả đánh giá của Quản lý)] + [B - Điểm KPIs Hành vi, thái độ, ý thức (theo kết quả đánh giá của Quản lý)] + [C - Điểm KPIs theo tỷ lệ hoàn thành Target] )
11 Phân loại Công thức Tự tính (công thức) Công thức: '0.0.2 - Khai báo - Sơ đồ tổ chức'.FILTER(CurrentValue.[Vị trí]=[Vị trí]&&CurrentValue.[Đơn vị]=[Đơn vị]).[Phân loại].LISTCOMBINE().UNIQUE()

5.0 - Thống kê BHXH

  • Table ID: tbl8IJkVsSQKOTMK · Base: Base HRIS (nhân sự, công, lương) · Số cột: 4 · Cột chính: Tháng
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 2 công thức · 0 tra cứu · 0 liên kết · 2 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Tháng 🔑 Số Nhập liệu Định dạng 0
2 Năm Số Nhập liệu Định dạng 0
3 Tổng nhân sự đóng BHXH Công thức Tự tính (công thức) Công thức: '5.2 - QL Chi phí BHXH Hàng tháng'.FILTER(CurrentValue.[Ngày đầu tháng].MONTH()=[Tháng]&&CurrentValue.[Ngày đầu tháng].YEAR()&&CurrentValue.[Mã nhân sự]!="").[Mã nhân sự].COUNTA()
4 Tổng mức đóng BHXH Công thức Tự tính (công thức) Công thức: '5.2 - QL Chi phí BHXH Hàng tháng'.FILTER(CurrentValue.[Ngày đầu tháng].MONTH()=[Tháng]&&CurrentValue.[Ngày đầu tháng].YEAR()&&CurrentValue.[Mã nhân sự]!="").[Mức đóng].SUM()

5.1 - QL BHXH

  • Table ID: tblCQyHjtGb4oIi7 · Base: Base HRIS (nhân sự, công, lương) · Số cột: 24 · Cột chính: Ngày bắt đầu
  • Khoá trong config/lark-tables.mjs: HRIS.BHXH
  • Code ONE-ANNA tham chiếu: legacy/gas/Mã.js
  • Liên kết tới: 2.1 - QL Thông tin nhân sự
  • Cơ cấu cột: 4 công thức · 7 tra cứu · 1 liên kết · 12 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày bắt đầu 🔑 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
2 Ngày kết thúc Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
3 Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.1 - QL Thông tin nhân sự (một bản ghi); cột đối ứng: [5.1 -]
4 Nhân sự Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[user].LISTCOMBINE()
5 Họ và tên Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Họ và tên]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[Họ và tên].LISTCOMBINE()
6 Số BHXH Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Sổ BHXH]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[Sổ BHXH].LISTCOMBINE()
7 Ngày học việc/ thử việc Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày bắt đầu]. Biểu thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Trạng thái làm việc].CONTAIN(LIST('2.3 - QL Quá trình làm việc'.[Trạng thái làm việc].$option[opt8PSpfOG],'2.3 - QL Quá trình làm việc'.[Trạng thái làm việc].$option[optIkcWWz5]))).[Ngày bắt đầu].LISTCOMBINE()
8 Ngày chính thức Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày bắt đầu]. Biểu thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Trạng thái làm việc].CONTAIN('2.3 - QL Quá trình làm việc'.[Trạng thái làm việc].$option[optfOTNZJL])).[Ngày bắt đầu].LISTCOMBINE()
9 Ngày nghỉ dài ngày/ thai sản Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày bắt đầu]. Biểu thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Trạng thái làm việc].CONTAIN(LIST('2.3 - QL Quá trình làm việc'.[Trạng thái làm việc].$option[optY0Mbje8],'2.3 - QL Quá trình làm việc'.[Trạng thái làm việc].$option[optayFhEtw]))).[Ngày bắt đầu].LISTCOMBINE()
10 Ngày nghỉ việc Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày bắt đầu]. Biểu thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Trạng thái làm việc].CONTAIN('2.3 - QL Quá trình làm việc'.[Trạng thái làm việc].$option[opt0wkM3Os])).[Ngày bắt đầu].LISTCOMBINE()
11 Công ty đóng BHXH Chọn một Nhập liệu Lựa chọn: ALC, ANNA
12 Mức đóng Số Nhập liệu Định dạng 1,000
13 Loại nghiệp vụ Chọn một Nhập liệu Lựa chọn: Báo tăng/Điều chỉnh tăng, Báo giảm
14 Lý do báo tăng/giảm Chọn một Nhập liệu Lựa chọn: Tăng mới có sổ, Tăng mới chưa có sổ, Tăng do đi làm lại, Tăng khác, Tăng do truy thu, Giảm hẳn do nghỉ việc, Tăng do điều chỉnh mức đóng, Thay đổi đơn vị đóng, Giảm do không có nhu cầu đóng, Giảm do nghỉ thai sản, Tăng do chuyển đơn vị , Nghỉ khác
15 Trạng thái gửi hồ sơ Chọn một Nhập liệu Lựa chọn: Đã báo tăng, Đã báo giảm, Đã gửi sổ BHXH, Đã nhận sổ BHXH
16 Trạng thái sổ BHXH Chọn một Nhập liệu Lựa chọn: Đã nhận từ nhân sự, Đã trả nhân sự
17 Ngày nhận sổ BHXH từ nhân sự Ngày giờ Nhập liệu Định dạng dd/MM/yyyy
18 Ngày gửi sổ BHXH Ngày giờ Nhập liệu Định dạng dd/MM/yyyy
19 Ngày trả sổ BHXH Ngày giờ Nhập liệu Định dạng dd/MM/yyyy
20 Ngày thay đổi gần nhất Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]).[Ngày bắt đầu].LISTCOMBINE().MAX()
21 Trạng thái làm việc Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Ngày bắt đầu]=[Ngày thay đổi gần nhất]).[Trạng thái làm việc].LISTCOMBINE().UNIQUE()
22 Số lần thay đổi Công thức Tự tính (công thức) Công thức: IF([Mã nhân sự]!="",CONCATENATE("Thay đổi lần thứ ",IF([Mã nhân sự]!="",'5.1 - QL BHXH'.COUNTIF(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Ngày bắt đầu]<=[Ngày bắt đầu]),"")),"")
23 Trạng thái Công thức Tự tính (công thức) Công thức: IF([Ngày bắt đầu]="","",IF(AND([Trạng thái làm việc]="Chính thức",[Ngày bắt đầu]='5.1 - QL BHXH'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]).[Ngày bắt đầu].MAX()),"Còn hiệu lực","Hết hiệu lực"))
24 Thu BHYT Do báo giảm chậm Checkbox Nhập liệu

5.2 - QL Chi phí BHXH Hàng tháng

  • Table ID: tblpAFWBw2k81EI2 · Base: Base HRIS (nhân sự, công, lương) · Số cột: 19 · Cột chính: Ngày đầu tháng
  • Khoá trong config/lark-tables.mjs: HRIS.BHXH_CHI_PHI_THANG
  • Code ONE-ANNA tham chiếu: legacy/gas/Mã.js
  • Liên kết tới: 2.1 - QL Thông tin nhân sự
  • Cơ cấu cột: 10 công thức · 2 tra cứu · 1 liên kết · 6 cột nhập/hệ thống

Ghi chú nghiệp vụ: chi phí BHXH hàng tháng × nhân sự: Mức đóng (nhập), tick Thu BHYT / Đóng BHTNLĐ-BNN, các cột công thức phần người lao động (BHXH 8%, BHYT 1,5%, BHTN 1%) và doanh nghiệp (BHXH 17%, TNLĐ 0,5%, BHYT 3%, BHTN 1%). Dòng tháng do backfillMonthlyPayrollSheets tạo.

# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày đầu tháng 🔑 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
2 Ngày cuối tháng Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
3 Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.1 - QL Thông tin nhân sự (một bản ghi); cột đối ứng: [5.2 - QL Chi phí BHXH Hàng tháng]
4 Nhân sự Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[user].LISTCOMBINE()
5 Họ và tên Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Họ và tên]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[Họ và tên].LISTCOMBINE()
6 Mức đóng Số Nhập liệu Định dạng 1,000
7 Thu BHYT Checkbox Nhập liệu
8 Đóng BHTNLĐ BNN Checkbox Nhập liệu
9 NLĐ - BHXH 8% Công thức Tự tính (công thức) Công thức: IF( [Mức đóng]!="" && [Mã nhân sự]!="" && [Thu BHYT]=0 && [Đóng BHTNLĐ BNN]=0, [Mức đóng]*0.08, "" )
10 NLĐ - BHYT 1.5% Công thức Tự tính (công thức) Công thức: IF([Mức đóng]!=""&&[Mã nhân sự]!=""&&[Đóng BHTNLĐ BNN]=0,[Mức đóng]*0.015,"")
11 NLĐ - BHTN 1% Công thức Tự tính (công thức) Công thức: IF([Mức đóng]!=""&&[Mã nhân sự]!=""&&[Thu BHYT]=0&&[Đóng BHTNLĐ BNN]=0,[Mức đóng]*0.01,"")
12 NLĐ - Tổng đóng Công thức Tự tính (công thức) Công thức: [NLĐ - BHXH 8%]+[NLĐ - BHYT 1.5%]+[NLĐ - BHTN 1%]
13 DN - BHXH 17% Công thức Tự tính (công thức) Công thức: IF([Mức đóng]!=""&&[Mã nhân sự]!=""&&[Thu BHYT]=0&&[Đóng BHTNLĐ BNN]=0,[Mức đóng]*0.17,"")
14 DN - TNLD 0.5% Công thức Tự tính (công thức) Công thức: IF([Mức đóng]!=""&&[Mã nhân sự]!=""&&[Thu BHYT]=0,[Mức đóng]*0.005,"")
15 DN - BHYT 3% Công thức Tự tính (công thức) Công thức: IF([Mức đóng]!=""&&[Mã nhân sự]!=""&&[Đóng BHTNLĐ BNN]=0,[Mức đóng]*0.03,"")
16 DN - BHTN 1% Công thức Tự tính (công thức) Công thức: IF([Mức đóng]!=""&&[Mã nhân sự]!=""&&[Thu BHYT]=0&&[Đóng BHTNLĐ BNN]=0,[Mức đóng]*0.01,"")
17 DN - Tổng đóng Công thức Tự tính (công thức) Công thức: [DN - BHXH 17%]+[DN - BHYT 3%]+[DN - BHTN 1%]+[DN - TNLD 0.5%]
18 Tổng BHXH Công thức Tự tính (công thức) Công thức: [NLĐ - Tổng đóng]+[DN - Tổng đóng]
19 Ghi chú Văn bản Nhập liệu

6.0 - Form gửi hồ sơ nhân sự

  • Table ID: tblC0GGUkGCBc1rh · Base: Base HRIS (nhân sự, công, lương) · Số cột: 17 · Cột chính: Hồ sơ còn thiếu
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 2 công thức · 2 tra cứu · 0 liên kết · 13 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Hồ sơ còn thiếu 🔑 Công thức Tự tính (công thức) Công thức: IF( [Nhân sự] = "", "", IF( [Nhóm nhân sự] = "Fulltime", IF( OR( [Sơ yếu lý lịch] = 0, [CCCD] = 0, [Giấy khám sức khỏe] = 0 ), LEFT( IF([Sơ yếu lý lịch] = 0, "Sơ yếu lý lịch - ", "") & IF([CCCD] = 0, "CCCD - ", "") & IF([Giấy khám sức khỏe] = 0, "Giấy khám sức khoẻ - ", ""), LEN( IF([Sơ yếu lý lịch] = 0, "Sơ yếu lý lịch - ", "") & IF([CCCD] = 0, "CCCD - ", "") & IF([Giấy khám sức khỏe] = 0, "Giấy khám sức khoẻ - ", "") ) - 3 ), "" ), IF( [Nhóm nhân sự] = "Thực tập sinh", IF( OR([Thẻ sinh viên] = 0, [CCCD] = 0), LEFT( IF([Thẻ sinh viên] = 0, "Thẻ sinh viên - ", "") & IF([CCCD] = 0, "CCCD - ", ""), LEN( IF([Thẻ sinh viên] = 0, "Thẻ sinh viên - ", "") & IF([CCCD] = 0, "CCCD - ", "") ) - 3 ), "" ), "" ) ) )
2 Nhân sự Người (User) Nhập liệu Một người
3 Họ và tên Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Họ và tên]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[Nhân sự]&&CurrentValue.[user]!="").[Họ và tên].LISTCOMBINE()
4 Nhóm nhân sự Chọn một Nhập liệu Lựa chọn: Fulltime, Thực tập sinh
5 Ngày bắt đầu làm việc Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày bắt đầu]. Biểu thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Nhân sự]=[Nhân sự]&&CurrentValue.[Trạng thái làm việc].CONTAIN(LIST('2.3 - QL Quá trình làm việc'.[Trạng thái làm việc].$option[opt8PSpfOG],'2.3 - QL Quá trình làm việc'.[Trạng thái làm việc].$option[optIkcWWz5]))).[Ngày bắt đầu].LISTCOMBINE()
6 Sơ yếu lý lịch Tệp đính kèm Nhập liệu
7 Giấy khám sức khỏe Tệp đính kèm Nhập liệu
8 CCCD Tệp đính kèm Nhập liệu
9 Bằng cấp Tệp đính kèm Nhập liệu
10 Chứng chỉ khúc xạ Tệp đính kèm Nhập liệu
11 Thẻ sinh viên Tệp đính kèm Nhập liệu
12 Deadline Công thức Tự tính (công thức) Công thức: IF( [Ngày bắt đầu làm việc] != "", DATE( YEAR([Ngày bắt đầu làm việc]), MONTH([Ngày bắt đầu làm việc]), DAY([Ngày bắt đầu làm việc]) ) + 14, "" )
13 Thời gian gửi Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm · tự điền
14 Link Wiki đích URL Nhập liệu
15 Chuyển dữ liệu Checkbox Nhập liệu
16 Trạng thái chuyển Văn bản Nhập liệu
17 Thời gian chuyển Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm

6.1 - QL Hồ sơ nhân sự

  • Table ID: tblV4J8b0mJoGtx9 · Base: Base HRIS (nhân sự, công, lương) · Số cột: 24 · Cột chính: Hồ sơ còn thiếu
  • Khoá trong config/lark-tables.mjs: HRIS.HO_SO
  • Code ONE-ANNA tham chiếu: apps/api/src/portal/hris-personnel-sync.js, apps/api/src/portal/native-rpc/hr-dossier.js
  • Liên kết tới: 2.1 - QL Thông tin nhân sự
  • Cơ cấu cột: 5 công thức · 5 tra cứu · 1 liên kết · 13 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Hồ sơ còn thiếu 🔑 Công thức Tự tính (công thức) Công thức: IF( [Mã nhân sự] = "", "", IF( [Nhóm nhân sự] = "Fulltime", IF( OR( [Sơ yếu lý lịch] = 0, [CCCD] = 0, [Giấy khám sức khỏe] = 0 ), LEFT( IF([Sơ yếu lý lịch] = 0, "Sơ yếu lý lịch - ", "") & IF([CCCD] = 0, "CCCD - ", "") & IF([Giấy khám sức khỏe] = 0, "Giấy khám sức khoẻ - ", ""), LEN( IF([Sơ yếu lý lịch] = 0, "Sơ yếu lý lịch - ", "") & IF([CCCD] = 0, "CCCD - ", "") & IF([Giấy khám sức khỏe] = 0, "Giấy khám sức khoẻ - ", "") ) - 3 ), "" ), IF( [Nhóm nhân sự] = "Thực tập sinh", IF( OR([Thẻ sinh viên] = 0, [CCCD] = 0), LEFT( IF([Thẻ sinh viên] = 0, "Thẻ sinh viên - ", "") & IF([CCCD] = 0, "CCCD - ", ""), LEN( IF([Thẻ sinh viên] = 0, "Thẻ sinh viên - ", "") & IF([CCCD] = 0, "CCCD - ", "") ) - 3 ), "" ), "" ) ) )
2 Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.1 - QL Thông tin nhân sự (một bản ghi); cột đối ứng: [6.1 -]
3 Nhân sự Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[user].LISTCOMBINE()
4 Họ và tên Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Họ và tên]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[Họ và tên].LISTCOMBINE()
5 Nhóm nhân sự Chọn một Nhập liệu Lựa chọn: Fulltime, Thực tập sinh
6 Ngày bắt đầu làm việc Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày bắt đầu]. Biểu thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Trạng thái làm việc].CONTAIN(LIST('2.3 - QL Quá trình làm việc'.[Trạng thái làm việc].$option[opt8PSpfOG],'2.3 - QL Quá trình làm việc'.[Trạng thái làm việc].$option[optIkcWWz5]))).[Ngày bắt đầu].LISTCOMBINE()
7 Sơ yếu lý lịch Checkbox Nhập liệu
8 Giấy khám sức khỏe Checkbox Nhập liệu
9 CCCD Checkbox Nhập liệu
10 Bằng cấp Checkbox Nhập liệu
11 Chứng chỉ khúc xạ Checkbox Nhập liệu
12 Thẻ sinh viên Checkbox Nhập liệu
13 Link URL Nhập liệu
14 File đính kèm Tệp đính kèm Nhập liệu
15 Deadline Công thức Tự tính (công thức) Công thức: IF( [Ngày bắt đầu làm việc] != "", DATE( YEAR([Ngày bắt đầu làm việc]), MONTH([Ngày bắt đầu làm việc]), DAY([Ngày bắt đầu làm việc]) ) + 14, "" )
16 Ngày update gần nhất Ngày sửa cuối Hệ thống
17 Ngày thay đổi gần đây nhất Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày bắt đầu]. Biểu thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]).[Ngày bắt đầu].LISTCOMBINE().MAX()
18 Trạng thái làm việc Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Trạng thái làm việc]. Biểu thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Ngày bắt đầu]=[Ngày thay đổi gần đây nhất]&&CurrentValue.[Mã nhân sự]=[Mã nhân sự]).[Trạng thái làm việc].LISTCOMBINE()
19 Ngày nhắc nhở lần 1 Công thức Tự tính (công thức) Công thức: IF( AND( [Hồ sơ còn thiếu] != "", [Trạng thái làm việc] != "Nghỉ việc", [Ngày bắt đầu làm việc]!="" ), DATE( YEAR([Ngày bắt đầu làm việc]), MONTH([Ngày bắt đầu làm việc]), DAY([Ngày bắt đầu làm việc]) ) + 11 / 24, "" )
20 Ngày nhắc nhở lần 2 Công thức Tự tính (công thức) Công thức: IF( AND( [Hồ sơ còn thiếu] != "", [Trạng thái làm việc] != "Nghỉ việc", [Ngày bắt đầu làm việc]!="" ), DATE( YEAR([Ngày bắt đầu làm việc]), MONTH([Ngày bắt đầu làm việc]), DAY([Ngày bắt đầu làm việc]) ) + 7 + 11 / 24, "" )
21 Ngày nhắc nhở lần 3 Công thức Tự tính (công thức) Công thức: IF( AND( [Hồ sơ còn thiếu] != "", [Trạng thái làm việc] != "Nghỉ việc", [Ngày bắt đầu làm việc]!="" ), DATE( YEAR([Ngày bắt đầu làm việc]), MONTH([Ngày bắt đầu làm việc]), DAY([Ngày bắt đầu làm việc]) ) + 14 + 11 / 24, "" )
22 Ghi log gửi thông báo lần 1 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
23 Ghi log gửi thông báo lần 2 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
24 Ghi log gửi thông báo lần 3 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm

6.2 - QL HĐTV

  • Table ID: tblGypp9iFNF1FQ2 · Base: Base HRIS (nhân sự, công, lương) · Số cột: 12 · Cột chính: Ngày bắt đầu
  • Khoá trong config/lark-tables.mjs: HRIS.HDTV
  • Code ONE-ANNA tham chiếu: apps/api/src/portal/hris-personnel-sync.js
  • Liên kết tới: 2.1 - QL Thông tin nhân sự
  • Cơ cấu cột: 3 công thức · 2 tra cứu · 1 liên kết · 6 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày bắt đầu 🔑 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
2 Thời hạn hợp đồng (Ngày) Số Nhập liệu Định dạng 0
3 Ngày kết thúc Công thức Tự tính (công thức) Công thức: IF( [Ngày bắt đầu] != "" && [Thời hạn hợp đồng (Ngày)] != "", VALUE( DATE( YEAR([Ngày bắt đầu] + [Thời hạn hợp đồng (Ngày)] - 1), MONTH([Ngày bắt đầu] + [Thời hạn hợp đồng (Ngày)] - 1), DAY([Ngày bắt đầu] + [Thời hạn hợp đồng (Ngày)] - 1) ) + DURATION(0,23,59,59) ), "" )
4 Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.1 - QL Thông tin nhân sự (một bản ghi); cột đối ứng: [6.2 - QL HĐTV]
5 Nhân sự Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[user].LISTCOMBINE()
6 Họ và tên Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Họ và tên]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[Họ và tên].LISTCOMBINE()
7 Công ty ký Văn bản Nhập liệu
8 Số HĐTV Văn bản Nhập liệu
9 Ngày nghỉ việc Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Mã nhân sự]!=""&&CurrentValue.[Trạng thái làm việc]="Nghỉ việc").[Ngày bắt đầu].LISTCOMBINE()
10 File hợp đồng Tệp đính kèm Nhập liệu
11 Trạng thái hồ sơ Công thức Tự tính (công thức) Công thức: IFERROR( IFS( OR([Ngày bắt đầu]="", [Ngày kết thúc]=""), "", OR([Ngày nghỉ việc]!="", [Ngày kết thúc]<TODAY()), "Hết hiệu lực", [Ngày kết thúc]-TODAY()<=15, "Sắp hế hạn", TRUE(), "Còn hiệu lực" ), "" )
12 Ghi chú Văn bản Nhập liệu

6.3 - QL HĐLĐ

  • Table ID: tblQ3chCe3pSkqs7 · Base: Base HRIS (nhân sự, công, lương) · Số cột: 17 · Cột chính: Ngày bắt đầu
  • Khoá trong config/lark-tables.mjs: HRIS.HDLD
  • Code ONE-ANNA tham chiếu: apps/api/src/portal/hris-personnel-sync.js
  • Liên kết tới: 2.1 - QL Thông tin nhân sự, 6.3 - QL HĐLĐ
  • Cơ cấu cột: 4 công thức · 2 tra cứu · 2 liên kết · 9 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày bắt đầu 🔑 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
2 Thời hạn hợp đồng (tháng) Số Nhập liệu Định dạng 1,000
3 Ngày kết thúc Công thức Tự tính (công thức) Công thức: IF( [Loại hợp đồng] = "Không xác định thời hạn", "", IF( AND( [Ngày bắt đầu] != "", [Loại hợp đồng] = "Xác định thời hạn", [Thời hạn hợp đồng (tháng)] != "" ), IF( DAY([Ngày bắt đầu]) <= 15, VALUE( DATE( YEAR( DATE( YEAR([Ngày bắt đầu]), MONTH([Ngày bắt đầu]) + [Thời hạn hợp đồng (tháng)], DAY([Ngày bắt đầu]) ) - DURATION(1,0,0,0) ), MONTH( DATE( YEAR([Ngày bắt đầu]), MONTH([Ngày bắt đầu]) + [Thời hạn hợp đồng (tháng)], DAY([Ngày bắt đầu]) ) - DURATION(1,0,0,0) ), 15 ) + DURATION(0,23,59,59) ), VALUE( DATE( YEAR( DATE( YEAR([Ngày bắt đầu]), MONTH([Ngày bắt đầu]) + [Thời hạn hợp đồng (tháng)], DAY([Ngày bắt đầu]) ) - DURATION(1,0,0,0) ), MONTH( DATE( YEAR([Ngày bắt đầu]), MONTH([Ngày bắt đầu]) + [Thời hạn hợp đồng (tháng)], DAY([Ngày bắt đầu]) ) - DURATION(1,0,0,0) ) + 1, 1 ) - DURATION(0,0,0,1) ) ), "" ) )
4 Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.1 - QL Thông tin nhân sự (một bản ghi); cột đối ứng: [6.3 - QL HĐLĐ-Mã nhân sự]
5 Nhân sự Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[user].LISTCOMBINE()
6 Quản lý trực tiếp Văn bản Nhập liệu
7 Họ và tên Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Họ và tên]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[Họ và tên].LISTCOMBINE()
8 Công ty ký Văn bản Nhập liệu
9 Loại hợp đồng Chọn một Nhập liệu Lựa chọn: Không xác định thời hạn, Xác định thời hạn, HĐLĐ xác định thời hạn, HĐLĐ không xác định thời hạn, Hợp đồng thử việc, CÔNG TY CỔ PHẦN ALC PHÚ QUÝ
10 Số HĐLĐ Văn bản Nhập liệu
11 File hợp đồng URL Nhập liệu
12 Link hợp đồng Tệp đính kèm Nhập liệu
13 Ngày nghỉ việc Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Mã nhân sự]!=""&&CurrentValue.[Trạng thái làm việc]="Nghỉ việc").[Ngày bắt đầu].LISTCOMBINE()
14 Trạng thái Công thức Tự tính (công thức) Công thức: IFERROR( IFS( OR([Ngày bắt đầu]="", [Ngày kết thúc]=""), "", OR([Ngày nghỉ việc]!="", [Ngày kết thúc]<TODAY()), "Hết hiệu lực", [Ngày kết thúc]-TODAY()<=30, "Sắp hết hạn", TRUE(), "Còn hiệu lực" ), "" )
15 Số lần ký Công thức Tự tính (công thức) Công thức: IF([Mã nhân sự]!="","Ký lần thứ "&'6.3 - QL HĐLĐ'.COUNTIF(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Ngày bắt đầu]<=[Ngày bắt đầu]),"")
16 Ghi chú Văn bản Nhập liệu
17 Các mục mẹ Liên kết một chiều Liên kết bản ghi Liên kết tới 6.3 - QL HĐLĐ (một bản ghi)

6.4 - QL HĐLĐ khác

  • Table ID: tbl8lEYmsLvMPd7g · Base: Base HRIS (nhân sự, công, lương) · Số cột: 17 · Cột chính: Ngày bắt đầu
  • Khoá trong config/lark-tables.mjs: HRIS.HD_KHAC
  • Code ONE-ANNA tham chiếu: apps/api/src/portal/hris-personnel-sync.js
  • Liên kết tới: 2.1 - QL Thông tin nhân sự, 6.4 - QL HĐLĐ khác
  • Cơ cấu cột: 4 công thức · 2 tra cứu · 2 liên kết · 9 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày bắt đầu 🔑 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
2 Thời hạn hợp đồng (tháng) Số Nhập liệu Định dạng 0
3 Ngày kết thúc Công thức Tự tính (công thức) Công thức: IF( [Loại hợp đồng] = "Không xác định thời hạn", "", IF( AND( [Ngày bắt đầu] != "", [Loại hợp đồng] = "Xác định thời hạn", [Thời hạn hợp đồng (tháng)] != "" ), IF( DAY([Ngày bắt đầu]) <= 15, VALUE( DATE( YEAR( DATE( YEAR([Ngày bắt đầu]), MONTH([Ngày bắt đầu]) + [Thời hạn hợp đồng (tháng)], DAY([Ngày bắt đầu]) ) - DURATION(1,0,0,0) ), MONTH( DATE( YEAR([Ngày bắt đầu]), MONTH([Ngày bắt đầu]) + [Thời hạn hợp đồng (tháng)], DAY([Ngày bắt đầu]) ) - DURATION(1,0,0,0) ), 15 ) + DURATION(0,23,59,59) ), VALUE( DATE( YEAR( DATE( YEAR([Ngày bắt đầu]), MONTH([Ngày bắt đầu]) + [Thời hạn hợp đồng (tháng)], DAY([Ngày bắt đầu]) ) - DURATION(1,0,0,0) ), MONTH( DATE( YEAR([Ngày bắt đầu]), MONTH([Ngày bắt đầu]) + [Thời hạn hợp đồng (tháng)], DAY([Ngày bắt đầu]) ) - DURATION(1,0,0,0) ) + 1, 1 ) - DURATION(0,0,0,1) ) ), "" ) )
4 Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.1 - QL Thông tin nhân sự (một bản ghi); cột đối ứng: [Bản sao 6.3 - QL HĐLĐ khác]
5 Nhân sự Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[user].LISTCOMBINE()
6 Quản lý trực tiếp Văn bản Nhập liệu
7 Họ và tên Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Họ và tên]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]&&CurrentValue.[user_id]!="").[Họ và tên].LISTCOMBINE()
8 Công ty ký Văn bản Nhập liệu
9 Loại hợp đồng Chọn một Nhập liệu Lựa chọn: Thỏa thuận TTS, Hợp đồng dịch vụ, Hợp đồng đào tạo
10 Số HĐLĐ Văn bản Nhập liệu
11 File hợp đồng URL Nhập liệu
12 Link hợp đồng Văn bản Nhập liệu
13 Ngày nghỉ việc Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Mã nhân sự]!=""&&CurrentValue.[Trạng thái làm việc]="Nghỉ việc").[Ngày bắt đầu].LISTCOMBINE()
14 Trạng thái Công thức Tự tính (công thức) Công thức: IFERROR( IFS( OR([Ngày bắt đầu]="", [Ngày kết thúc]=""), "", OR([Ngày nghỉ việc]!="", [Ngày kết thúc]<TODAY()), "Hết hiệu lực", [Ngày kết thúc]-TODAY()<=30, "Sắp hết hạn", TRUE(), "Còn hiệu lực" ), "" )
15 Số lần ký Công thức Tự tính (công thức) Công thức: IF([Mã nhân sự]!="","Ký lần thứ "&'6.4 - QL HĐLĐ khác'.COUNTIF(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Ngày bắt đầu]<=[Ngày bắt đầu]),"")
16 Ghi chú Văn bản Nhập liệu
17 Các mục mẹ Liên kết một chiều Liên kết bản ghi Liên kết tới 6.4 - QL HĐLĐ khác (một bản ghi)

6.5 - QL Quyết định

  • Table ID: tblE8sFcZPgMARzn · Base: Base HRIS (nhân sự, công, lương) · Số cột: 11 · Cột chính: Ngày bắt đầu
  • Khoá trong config/lark-tables.mjs: HRIS.QUYET_DINH
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Liên kết tới: 2.1 - QL Thông tin nhân sự
  • Cơ cấu cột: 1 công thức · 3 tra cứu · 1 liên kết · 6 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày bắt đầu 🔑 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
2 Ngày kết thúc Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
3 Mã nhân sự Liên kết hai chiều Liên kết bản ghi Liên kết tới 2.1 - QL Thông tin nhân sự (một bản ghi); cột đối ứng: [6.4 - QL Quyết định]
4 Nhân sự Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[user].LISTCOMBINE()
5 Họ và tên Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Họ và tên]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[Mã nhân sự]).[Họ và tên].LISTCOMBINE()
6 Loại quyết định Chọn một Nhập liệu Lựa chọn: TĂNG LƯƠNG, THAY ĐỔI VỊ TRÍ CÔNG VIỆC, KỶ LUẬT, BỔ NHIỆM, MIỄN NHIỆM, THAY ĐỔI CA LÀM VIỆC, TĂNG PHỤ CẤP
7 Công ty Văn bản Nhập liệu
8 File hồ sơ Tệp đính kèm Nhập liệu
9 Trạng thái Công thức Tự tính (công thức) Công thức: IFERROR( IFS( OR([Ngày bắt đầu]="", [Ngày kết thúc]=""), "", OR([Ngày nghỉ việc]!="", [Ngày kết thúc]<TODAY()), "Hết hiệu lực", [Ngày kết thúc]-TODAY()<=15, "Sắp hết hạn", TRUE(), "Còn hiệu lực" ), "" )
10 Ghi chú Văn bản Nhập liệu
11 Ngày nghỉ việc Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày bắt đầu]. Biểu thức: '2.3 - QL Quá trình làm việc'.FILTER(CurrentValue.[Mã nhân sự]=[Mã nhân sự]&&CurrentValue.[Trạng thái làm việc]='2.3 - QL Quá trình làm việc'.[Trạng thái làm việc].$option[opt0wkM3Os]).[Ngày bắt đầu].LISTCOMBINE()

7.1.1 - Danh sách nhân sự hệ thống

  • Table ID: tbl6wVc4SJqZmrsm · Base: Base HRIS (nhân sự, công, lương) · Số cột: 18 · Cột chính: user_id
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 1 công thức · 1 tra cứu · 0 liên kết · 16 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 user_id 🔑 Văn bản Nhập liệu
2 employee_no Văn bản Nhập liệu
3 name Văn bản Nhập liệu
4 user Người (User) Nhập liệu Một người
5 employee_type Chọn một Nhập liệu Lựa chọn: Regular, Intern, others, Consultant, Outsourcing
6 email Văn bản Nhập liệu
7 mobile Văn bản Nhập liệu
8 department_ids Chọn nhiều Nhập liệu 150 lựa chọn (không liệt kê)
9 departments Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [name]. Biểu thức: '7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[department_id]=[department_ids]).[name].LISTCOMBINE()
10 leader Người (User) Nhập liệu Nhiều người
11 join_time Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
12 job_title Văn bản Nhập liệu
13 country Văn bản Nhập liệu
14 city Văn bản Nhập liệu
15 work_station Văn bản Nhập liệu
16 en_name Văn bản Nhập liệu
17 gender Chọn một Nhập liệu Lựa chọn: Female, Male
18 Phòng ban chi tiết Công thức Tự tính (công thức) Công thức: '7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[department_id].CONTAIN([department_ids])).[name].ARRAYJOIN(", ")

7.1.2 - Danh sách phòng ban

  • Table ID: tblz59FPs9DzdHQK · Base: Base HRIS (nhân sự, công, lương) · Số cột: 10 · Cột chính: department_id
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 0 công thức · 1 tra cứu · 0 liên kết · 9 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 department_id 🔑 Văn bản Nhập liệu
2 name Văn bản Nhập liệu
3 parent_department_name Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [name]. Biểu thức: '7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[department_id]=[parent_department_id]).[name].LISTCOMBINE()
4 leader Người (User) Nhập liệu Nhiều người
5 chat_id Văn bản Nhập liệu
6 status Chọn một Nhập liệu Lựa chọn: normal, is_deleted
7 order Số Nhập liệu Định dạng 0
8 parent_department_id Văn bản Nhập liệu
9 leader_user_id Văn bản Nhập liệu
10 QLCH Người (User) Nhập liệu Một người

7.1.4 - Attendance_Records

  • Table ID: tblVUMePmX7V3P9r · Base: Base HRIS (nhân sự, công, lương) · Số cột: 7 · Cột chính: User id
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 0 công thức · 0 tra cứu · 0 liên kết · 7 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 User id 🔑 Văn bản Nhập liệu
2 Record id Văn bản Nhập liệu
3 Date Ngày giờ Nhập liệu Định dạng yyyy/MM/dd
4 Employee Người (User) Nhập liệu Một người
5 Check time Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
6 Check location name Văn bản Nhập liệu
7 Is offsite Chọn một Nhập liệu Lựa chọn: true, false

7.1.3 - Bảng chấm công chi tiết Copy

  • Table ID: tbljCfpGUookTwZA · Base: Base HRIS (nhân sự, công, lương) · Số cột: 62 · Cột chính: User id
  • Khoá trong config/lark-tables.mjs: HRIS.CONG_CHI_TIET_BAN_SAO
  • Code ONE-ANNA tham chiếu: apps/api/src/portal/timesheet-detail-sync.js
  • Cơ cấu cột: 34 công thức · 5 tra cứu · 0 liên kết · 23 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 User id 🔑 Văn bản Nhập liệu
2 Result id Văn bản Nhập liệu
3 Date Ngày giờ Nhập liệu Định dạng yyyy/MM/dd
4 Employee Người (User) Nhập liệu Một người
5 Leader Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [leader]. Biểu thức: '7.1.1 - Danh sách nhân sự hệ thống'.FILTER(CurrentValue.[user_id]=[User id]).[leader].LISTCOMBINE()
6 Trạng thái làm việc Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc' .FILTER( CurrentValue.[Nhân sự] = [Employee] && CurrentValue.[Ngày bắt đầu] <= [Date] && ( CurrentValue.[Ngày kết thúc] = "" \|\| [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Trạng thái làm việc] .UNIQUE()
7 Đơn vị Công thức Tự tính (công thức) Công thức: SUBSTITUTE( '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Nhân sự] = [Employee] && [Date] >= CurrentValue.[Ngày bắt đầu] && OR( CurrentValue.[Ngày kết thúc] = "", [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Đơn vị], "[", "" ).SUBSTITUTE("]", "")
8 Vị trí Công thức Tự tính (công thức) Công thức: SUBSTITUTE( '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Nhân sự] = [Employee] && [Date] >= CurrentValue.[Ngày bắt đầu] && OR( CurrentValue.[Ngày kết thúc] = "", [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Vị trí], "[", "" ).SUBSTITUTE("]", "")
9 Phân loại Công thức Tự tính (công thức) Công thức: '0.0.2 - Khai báo - Sơ đồ tổ chức'.FILTER(CurrentValue.[Vị trí]=[Vị trí]&&CurrentValue.[Đơn vị]=[Đơn vị]).[Phân loại].LISTCOMBINE().UNIQUE()
10 Group name Văn bản Nhập liệu
11 Check in record id Văn bản Nhập liệu
12 Shift name Văn bản Nhập liệu
13 Check in time Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
14 Check in shift time Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
15 Check in location name Văn bản Nhập liệu
16 Check in - Is offsite Chọn một Nhập liệu Lựa chọn: true, false
17 Check in type Chọn một Nhập liệu Lựa chọn: User attendance, Administrator modification, User correction, Automatically generated by the system, Clock-out is not required, Attendance machine, Express attendance, Imports to attendance open platform
18 Check in result Chọn một Nhập liệu Lựa chọn: NoNeedCheck, SystemCheck, Normal, Early, Late, Lack, Todo
19 Check in result supplement Chọn một Nhập liệu Lựa chọn: None, ManagerModification, CardReplacement, ShiftChange, Travel, Leave, GoOut, CardReplacementApplication, FieldPunch
20 Check out record id Văn bản Nhập liệu
21 Check out time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
22 Check out shift time Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
23 Check out location name Văn bản Nhập liệu
24 Check out - Is offsite Chọn một Nhập liệu Lựa chọn: true, false
25 Check out type Chọn một Nhập liệu Lựa chọn: User attendance, Administrator modification, User correction, Automatically generated by the system, Clock-out is not required, Attendance machine, Express attendance, Imports to attendance open platform
26 Check out result Chọn một Nhập liệu Lựa chọn: NoNeedCheck, SystemCheck, Normal, Early, Late, Lack, Todo
27 Check out result supplement Chọn một Nhập liệu Lựa chọn: None, ManagerModification, CardReplacement, ShiftChange, Travel, Leave, GoOut, CardReplacementApplication, FieldPunch
28 Kết thúc ca sáng Công thức Tự tính (công thức) Công thức: [Date]-DURATION(0,Hour([Date]),MINUTE([Date]))+DURATION(0,12)
29 Bắt đầu ca chiều Công thức Tự tính (công thức) Công thức: [Date]-DURATION(0,Hour([Date]),MINUTE([Date]))+DURATION(0,13)
30 Tổng giờ thực tế Công thức Tự tính (công thức) Công thức: IF( ( IF( [Phân loại] = "Full công", 8, IF( [Phân loại].CONTAINTEXT("Cửa hàng"), [Thời gian làm việc theo đăng ký], IF( [Check in time] = "" \|\| [Check out time] = "", IF( HOUR([Tổng giờ làm việc]) + MINUTE([Tổng giờ làm việc]) / 60 + [Giờ nghỉ phép] + [Công Remote] + [Công WFH] + [Công đi muộn] > 8, 8, HOUR([Tổng giờ làm việc]) + MINUTE([Tổng giờ làm việc]) / 60 + [Giờ nghỉ phép] + [Công Remote] + [Công WFH] + [Công đi muộn] ), IF( ( HOUR([Tổng giờ làm việc]) + MINUTE([Tổng giờ làm việc]) / 60 + [Giờ nghỉ phép] + [Công đi muộn] ) + IF([Công Remote] = "", 0, [Công Remote]) > 8, 8, ( HOUR([Tổng giờ làm việc]) + MINUTE([Tổng giờ làm việc]) / 60 + [Giờ nghỉ phép] + [Công đi muộn] ) + IF([Công Remote] = "", 0, [Công Remote]) ) ) ) ) ) = 0, "", IF( [Phân loại] = "Full công", 8, IF( [Phân loại].CONTAINTEXT("Cửa hàng"), [Thời gian làm việc theo đăng ký], IF( [Check in time] = "" \|\| [Check out time] = "", IF( HOUR([Tổng giờ làm việc]) + MINUTE([Tổng giờ làm việc]) / 60 + [Giờ nghỉ phép] + [Công Remote] + [Công WFH] + [Công đi muộn] > 8, 8, HOUR([Tổng giờ làm việc]) + MINUTE([Tổng giờ làm việc]) / 60 + [Giờ nghỉ phép] + [Công Remote] + [Công WFH] + [Công đi muộn] ), IF( ( HOUR([Tổng giờ làm việc]) + MINUTE([Tổng giờ làm việc]) / 60 + [Giờ nghỉ phép] + [Công đi muộn] ) + IF([Công Remote] = "", 0, [Công Remote]) > 8, 8, ( HOUR([Tổng giờ làm việc]) + MINUTE([Tổng giờ làm việc]) / 60 + [Giờ nghỉ phép] + [Công đi muộn] ) + IF([Công Remote] = "", 0, [Công Remote]) ) ) ) ) )
31 Thời gian làm việc theo đăng ký Công thức Tự tính (công thức) Công thức: '3.4 - Đăng ký ca_Cửa hàng'.FILTER(CurrentValue.[User_id]=[User id]&&Text(CurrentValue.[Ngày làm việc],"DD/MM/YYYY")=TEXT([Date],"DD/MM/YYYY")).[Tổng giờ làm việc].LISTCOMBINE()
32 Tổng giờ làm việc Văn bản Nhập liệu
33 Tổng giờ đi muộn Công thức Tự tính (công thức) Công thức: IF( ( IF( [Check in time] > [Bắt đầu ca chiều] && [Check in time] > [Check in shift time] && [Check in shift time] < [Bắt đầu ca chiều], HOUR(TEXT([Check in time] - [Bắt đầu ca chiều], "hh:mm")) + MINUTE(TEXT([Check in time] - [Bắt đầu ca chiều], "hh:mm")) / 60, IF( [Check in time] > [Check in shift time] && [Check in time] < [Kết thúc ca sáng], HOUR(TEXT([Check in time] - [Check in shift time], "hh:mm")) + MINUTE(TEXT([Check in time] - [Check in shift time], "hh:mm")) / 60, IF( [Check in time] > [Kết thúc ca sáng] && [Check in time] < [Bắt đầu ca chiều] && [Phân loại] != "Cửa hàng" && [Check in time] > [Check in shift time], HOUR(TEXT([Kết thúc ca sáng] - [Check in shift time], "hh:mm")) + MINUTE(TEXT([Kết thúc ca sáng] - [Check in shift time], "hh:mm")) / 60, 0 ) ) ) ) = 0, "", IF( [Check in time] > [Bắt đầu ca chiều] && [Check in time] > [Check in shift time] && [Check in shift time] < [Bắt đầu ca chiều], HOUR(TEXT([Check in time] - [Bắt đầu ca chiều], "hh:mm")) + MINUTE(TEXT([Check in time] - [Bắt đầu ca chiều], "hh:mm")) / 60, IF( [Check in time] > [Check in shift time] && [Check in time] < [Kết thúc ca sáng], HOUR(TEXT([Check in time] - [Check in shift time], "hh:mm")) + MINUTE(TEXT([Check in time] - [Check in shift time], "hh:mm")) / 60, IF( [Check in time] > [Kết thúc ca sáng] && [Check in time] < [Bắt đầu ca chiều] && [Phân loại] != "Cửa hàng" && [Check in time] > [Check in shift time], HOUR(TEXT([Kết thúc ca sáng] - [Check in shift time], "hh:mm")) + MINUTE(TEXT([Kết thúc ca sáng] - [Check in shift time], "hh:mm")) / 60, 0 ) ) ) )
34 Giờ nghỉ phép Công thức Tự tính (công thức) Công thức: IF( SUM( VALUE( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && NOT(CurrentValue.[Leave type] = "Đề xuất nghỉ không lương") && NOT(CurrentValue.[Leave type] = "Xin đi muộn/ về sớm") && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) ) = 0, "", SUM( VALUE( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && NOT(CurrentValue.[Leave type] = "Đề xuất nghỉ không lương") && NOT(CurrentValue.[Leave type] = "Xin đi muộn/ về sớm") && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) ) )
35 Nghỉ không lương Công thức Tự tính (công thức) Công thức: IF( VALUE( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Leave type] = "Đề xuất nghỉ không lương" && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && TEXT(CurrentValue.[End time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) = 0, "", VALUE( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Leave type] = "Đề xuất nghỉ không lương" && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && TEXT(CurrentValue.[End time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) )
36 Công Remote Công thức Tự tính (công thức) Công thức: IF( SUM( VALUE( 'Phiếu đề xuất ra ngoài thực hiện công việc công ty_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) ) = 0, "", SUM( VALUE( 'Phiếu đề xuất ra ngoài thực hiện công việc công ty_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) ) )
37 Công lễ Công thức Tự tính (công thức) Công thức: IF( '3.3 - Lịch tháng' .FILTER( TEXT(CurrentValue.[Ngày], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Ngày nghỉ lễ] .LISTCOMBINE() = "", "", 8 )
38 Thời gian làm phiếu correction Công thức Tự tính (công thức) Công thức: 'Phiếu điều chỉnh công'.FILTER(CurrentValue.[Requester]=[Employee]&&Text(CurrentValue.[Date of error],"DD/MM/YYYY")=Text([Date],"DD/MM/YYYY")&&CurrentValue.[Status]="Approved").[Replenishment time].LISTCOMBINE()
39 Công OT Công thức Tự tính (công thức) Công thức: 'Phiếu đề xuất làm thêm giờ - form cũ'.FILTER(CurrentValue.[Requester]=[Employee]&&CurrentValue.[Ngày OT]=TEXT([Date],"DD/MM/YYY")).[Tổng giờ OT].LISTCOMBINE()
40 Công WFH Công thức Tự tính (công thức) Công thức: IF( VALUE( 'Phiếu xin làm việc tại nhà_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Status] = "APPROVED" && CurrentValue.[Date] = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) = 0, "", VALUE( 'Phiếu xin làm việc tại nhà_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Status] = "APPROVED" && CurrentValue.[Date] = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) )
41 Công đi muộn Công thức Tự tính (công thức) Công thức: IF( VALUE( 'Phiếu xin nghỉ - đi muộn&về sớm' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Status] = "Approved" && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && TEXT(CurrentValue.[End time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && CurrentValue.[Leave type] = "Xin đi muộn/ về sớm" ) .[Duration] .LISTCOMBINE() ) = 0, "", VALUE( 'Phiếu xin nghỉ - đi muộn&về sớm' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Status] = "Approved" && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && TEXT(CurrentValue.[End time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && CurrentValue.[Leave type] = "Xin đi muộn/ về sớm" ) .[Duration] .LISTCOMBINE() ) )
42 in_role Công thức Tự tính (công thức) Công thức: SWITCH( [Group name], "VP_Giolamviec_8h-17h", "08:00", "Ca VP_8h30-17h30", "08:30", "VP_Giolamviec_9h-18h", "09:00", "Khối cửa hàng", "", "Trực page", IF( [Shift name] = "TP1_08h-17h", "08:00", IF( [Shift name] = "TP2_15h-23h", "15:00", "" ) ), "CSKH_Giolamviec_8h-17h", "08:00", "Ca livestream", "", "Ecommer", IF( [Shift name] = "Calamviec_9h-18h", "09:00", "" ), "Giolamviec_Fullcong", "08:00", "" )
43 out_role Công thức Tự tính (công thức) Công thức: SWITCH( [Group name], "VP_Giolamviec_8h-17h", "17:00", "Ca VP_8h30-17h30", "17:30", "VP_Giolamviec_9h-18h", "18:00", "Khối cửa hàng", "", "Trực page", IF( [Shift name] = "TP1_08h-17h", "17:00", IF( [Shift name] = "TP2_15h-23h", "23:00", "" ) ), "CSKH_Giolamviec_8h-17h", "17:00", "Ca livestream", "", "Ecommer", IF( [Shift name] = "Calamviec_9h-18h", "18:00", "" ), "Giolamviec_Fullcong", "17:00", "" )
44 outGC Công thức Tự tính (công thức) Công thức: IF( AND( [Group name] != "Nhóm AM/RSM", [Group name] != "Khối cửa hàng" ), "12:00", "" )
45 inGC Công thức Tự tính (công thức) Công thức: IF( AND( [Group name] != "Nhóm AM/RSM", [Group name] != "Khối cửa hàng" ), "13:00", "" )
46 Số phút đi muộn Công thức Tự tính (công thức) Công thức: IF( [Check in time] = "", "", IF( [inGC] != "", IF( (HOUR([Check in time]) * 60 + MINUTE([Check in time])) > (VALUE(LEFT([inGC], 2)) * 60 + VALUE(RIGHT([inGC], 2))), (HOUR([Check in time]) * 60 + MINUTE([Check in time])) - (VALUE(LEFT([inGC], 2)) * 60 + VALUE(RIGHT([inGC], 2))), 0 ), IF( AND([in_role] != "", [outGC] != ""), IF( (HOUR([Check in time]) * 60 + MINUTE([Check in time])) > (VALUE(LEFT([in_role], 2)) * 60 + VALUE(RIGHT([in_role], 2))), (HOUR([Check in time]) * 60 + MINUTE([Check in time])) - (VALUE(LEFT([in_role], 2)) * 60 + VALUE(RIGHT([in_role], 2))), 0 ), "" ) ) )
47 Số phút về sớm Công thức Tự tính (công thức) Công thức: IF( [Check out time] = "", "", IF( [outGC] != "", IF( (HOUR([Check out time]) * 60 + MINUTE([Check out time])) < (VALUE(LEFT([outGC], 2)) * 60 + VALUE(RIGHT([outGC], 2))), (VALUE(LEFT([outGC], 2)) * 60 + VALUE(RIGHT([outGC], 2))) - (HOUR([Check out time]) * 60 + MINUTE([Check out time])), 0 ), IF( [out_role] != "", IF( (HOUR([Check out time]) * 60 + MINUTE([Check out time])) < (VALUE(LEFT([out_role], 2)) * 60 + VALUE(RIGHT([out_role], 2))), (VALUE(LEFT([out_role], 2)) * 60 + VALUE(RIGHT([out_role], 2))) - (HOUR([Check out time]) * 60 + MINUTE([Check out time])), 0 ), "" ) ) )
48 Số giờ làm việc Công thức Tự tính (công thức) Công thức: IF( [Group name] = "Giolamviec_Fullcong", 8, IF( AND( [Check in time] != "", [Check out time] != "", [in_role] != "", [out_role] != "", [outGC] != "", [inGC] != "" ), ( IF( (HOUR([Check in time]) * 60 + MINUTE([Check in time])) < (VALUE(LEFT([outGC],2)) * 60 + VALUE(RIGHT([outGC],2))), ( VALUE(LEFT([outGC],2)) * 60 + VALUE(RIGHT([outGC],2)) ) - IF( (HOUR([Check in time]) * 60 + MINUTE([Check in time])) > (VALUE(LEFT([in_role],2)) * 60 + VALUE(RIGHT([in_role],2))), (HOUR([Check in time]) * 60 + MINUTE([Check in time])), (VALUE(LEFT([in_role],2)) * 60 + VALUE(RIGHT([in_role],2))) ), 0 ) + IF( (HOUR([Check out time]) * 60 + MINUTE([Check out time])) > (VALUE(LEFT([inGC],2)) * 60 + VALUE(RIGHT([inGC],2))), IF( (HOUR([Check out time]) * 60 + MINUTE([Check out time])) < (VALUE(LEFT([out_role],2)) * 60 + VALUE(RIGHT([out_role],2))), (HOUR([Check out time]) * 60 + MINUTE([Check out time])) - (VALUE(LEFT([inGC],2)) * 60 + VALUE(RIGHT([inGC],2))), (VALUE(LEFT([out_role],2)) * 60 + VALUE(RIGHT([out_role],2))) - (VALUE(LEFT([inGC],2)) * 60 + VALUE(RIGHT([inGC],2))) ), 0 ) ) / 60, "" ) )
49 Giờ điều chỉnh công Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Replenishment time]. Biểu thức: 'Phiếu điều chỉnh công'.FILTER(CurrentValue.[Requester]=[Employee]&&CurrentValue.[Date of error]=[Date]).[Replenishment time].LISTCOMBINE()
50 Kiểm tra cập nhật điều chỉnh công Công thức Tự tính (công thức) Công thức: IF( [Trạng thái phiếu điều chỉnh công] != "Approved", "", IF( OR( [Giờ điều chỉnh công] = [Check in time], [Giờ điều chỉnh công] = [Check out time] ), "Đã cập nhật", "Chưa cập nhật" ) )
51 Month Công thức Tự tính (công thức) Công thức: [Date].MONTH()
52 Year Công thức Tự tính (công thức) Công thức: [Date].YEAR()
53 Ngày_Text Công thức Tự tính (công thức) Công thức: TEXT([Date],"DD/MM/YYYY")
54 Tháng Công thức Tự tính (công thức) Công thức: "Tháng "&MONTH([Date])&"/"&YEAR([Date])
55 Cảnh báo Công thức Tự tính (công thức) Công thức: If([Check in time]<=[Check in shift time]&&[Check out time]>=[Check out shift time],"Bình thường","Bất thường")
56 Xác nhận Công thức Tự tính (công thức) Công thức: If('3.6 - Kiểm tra bảng công ngày'.FILTER(CurrentValue.[Record ID_1.1]=[Record ID]&&CurrentValue.[Duyệt công]="Duyệt"&&CurrentValue.[Xác nhận]=1).[User id].LISTCOMBINE()!="","Đã duyệt","Chờ duyệt")
57 Record ID Công thức Tự tính (công thức) Công thức: RECORD_ID()
58 Trạng thái phiếu điều chỉnh công Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Status]. Biểu thức: 'Phiếu điều chỉnh công'.FILTER(CurrentValue.[Requester]=[Employee]&&CurrentValue.[Ngày_Text]=[Ngày_Text]).[Status].LISTCOMBINE()
59 Giờ OT - Cửa hàng Công thức Tự tính (công thức) Công thức: IF([Phân loại]="Cửa hàng"&&[Tổng giờ thực tế]>12,[Tổng giờ thực tế]-12,"")
60 Ngày lễ Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày nghỉ lễ]. Biểu thức: '3.3 - Lịch tháng'.FILTER(CurrentValue.[Ngày]=[Date]).[Ngày nghỉ lễ].LISTCOMBINE()
61 RSM/AM Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [AM]. Biểu thức: '2.5 - QL Thay đổi AM'.FILTER(CurrentValue.[Cửa hàng]=[Bộ phận]).[AM].LISTCOMBINE()
62 Bộ phận Công thức Tự tính (công thức) Công thức: '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Nhân sự] = [Employee] && [Date] >= CurrentValue.[Ngày bắt đầu] && ( CurrentValue.[Ngày kết thúc] = "" \|\| [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Đơn vị] .UNIQUE()

Đồng bộ phiếu & tính công

  • Table ID: tblwcyj4rZZp9Bda · Base: Base HRIS (nhân sự, công, lương) · Số cột: 3 · Cột chính: Ghi chú
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 0 công thức · 0 tra cứu · 0 liên kết · 3 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ghi chú 🔑 Văn bản Nhập liệu
2 Đồng bộ phiếu Nút bấm Nút (automation) Nút bấm trên Base (kích hoạt automation) — cần xác nhận hành động
3 Tính công Nút bấm Nút (automation) Nút bấm trên Base (kích hoạt automation) — cần xác nhận hành động

Phiếu xin nghỉ - đi muộn&về sớm

  • Table ID: tblhiMpcJkItB8Fq · Base: Base HRIS (nhân sự, công, lương) · Số cột: 31 · Cột chính: Request No.
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 4 công thức · 1 tra cứu · 0 liên kết · 26 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Request No. 🔑 URL Nhập liệu
2 Status Chọn một Nhập liệu Lựa chọn: Approved, Deleted, Processing, Rejected, Canceled, Terminated, Recalled, Under Review
3 Approval process Chọn một Nhập liệu Lựa chọn: Phiếu xin nghỉ
4 Submitted at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
5 Completed at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
6 Requester Người (User) Nhập liệu Nhiều người
7 User_id Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user_id]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[Requester]).[user_id].LISTCOMBINE()
8 Initiator department Văn bản Nhập liệu The department the user was in when the request was submitted
9 Current assignee Người (User) Nhập liệu Nhiều người
10 Approval steps Văn bản Nhập liệu
11 Leave type Chọn một Nhập liệu Lựa chọn: Đề xuất xin nghỉ phép, Xin đi muộn/ về sớm, Đề xuất nghỉ không lương, Nghỉ ốm, thai sản (Hưởng BHXH), Đề xuất xin nghỉ hiếu hỉ, Đề xuất nghỉ thai sản, Xin nghỉ ốm đau (Hưởng BHXH)
12 Start time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
13 Kết thúc ca sáng Công thức Tự tính (công thức) Công thức: [Start time]-TEXT([Start time],"HH:MM")+DURATION(0,12)
14 Bắt đầu ca chiều Công thức Tự tính (công thức) Công thức: [End time]-TEXT([End time],"HH:MM")+DURATION(0,13)
15 End time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
16 Duration Chọn một Nhập liệu 53 lựa chọn (không liệt kê)
17 Reason for leave Văn bản Nhập liệu
18 Leave unit Chọn một Nhập liệu Lựa chọn: day, 0.5 day, hour, Half-hours, Minutes
19 Late for Work (mins) Chọn một Nhập liệu Lựa chọn: 0, 15, 30, 45, 60, 75, 90, 105, 120
20 Leave Early (min) Chọn một Nhập liệu Lựa chọn: 0, 15, 30, 45, 60, 75, 90, 105, 120
21 Daily Rest (hours) Văn bản Nhập liệu
22 Supporting documents URL Nhập liệu
23 Details_Loại nghỉ Chọn một Nhập liệu Lựa chọn: Nghỉ hiếu (đám tang), Nghỉ hỉ (kết hôn)
24 Details_Đối tượng là gì với nhân viên Chọn nhiều Nhập liệu Lựa chọn: Cha mẹ đẻ (hoặc bố mẹ vợ/chồng), Vợ/chồng, Con đẻ (con nuôi)
25 Details_Thiệp mời/Cáo phó đính kèm URL Nhập liệu
26 Nghỉ chế độ BHXH_Nghỉ ốm đau (bản thân/con ốm), tai nạn, có giấy ra viện hoặc giấy nghỉ việc hưởng BHXH Chọn một Nhập liệu Lựa chọn: Nghỉ bản thân ốm, Nghỉ chăm con ốm
27 Nghỉ chế độ BHXH_Giấy ra viện/Giấy nghỉ việc hưởng BHXH URL Nhập liệu
28 SourceID Văn bản Nhập liệu
29 Trạng thái tách phiếu Chọn một Nhập liệu Lựa chọn: Done
30 Tháng Công thức Tự tính (công thức) Công thức: [Start time].MONTH()
31 Năm Công thức Tự tính (công thức) Công thức: [Start time].YEAR()

Phiếu xin ra ngoài cho việc cá nhân

  • Table ID: tblbxZDWDUyYlcuQ · Base: Base HRIS (nhân sự, công, lương) · Số cột: 22 · Cột chính: Request No.
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 3 công thức · 1 tra cứu · 0 liên kết · 18 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Request No. 🔑 URL Nhập liệu
2 Status Chọn một Nhập liệu Lựa chọn: Approved, Deleted, Processing, Rejected, Canceled, Terminated, Recalled, Under Review
3 Approval process Chọn một Nhập liệu Lựa chọn: Phiếu xin ra ngoài cho việc cá nhân
4 Submitted at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
5 Completed at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
6 Requester Người (User) Nhập liệu Nhiều người
7 Initiator department Văn bản Nhập liệu The department the user was in when the request was submitted
8 Current assignee Người (User) Nhập liệu Nhiều người
9 Approval steps Văn bản Nhập liệu
10 Out-of-office type Chọn một Nhập liệu
11 Duration unit Chọn một Nhập liệu Lựa chọn: day, hour
12 Start time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
13 End time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
14 Duration Chọn một Nhập liệu 21 lựa chọn (không liệt kê)
15 Reasons Văn bản Nhập liệu
16 Photo URL Nhập liệu
17 SourceID Văn bản Nhập liệu
18 Kết thúc ca sáng Công thức Tự tính (công thức) Công thức: [Start time]-TEXT([Start time],"HH:MM")+DURATION(0,12)
19 Bắt đầu ca chiều Công thức Tự tính (công thức) Công thức: [End time]-TEXT([End time],"HH:MM")+DURATION(0,13)
20 Tổng thời gian nghỉ Công thức Tự tính (công thức) Công thức: IF( OR( [Start time] <= [Kết thúc ca sáng] && [End time] >= [Bắt đầu ca chiều], [Start time] > [Kết thúc ca sáng] && [End time] >= [Bắt đầu ca chiều] && [Start time] < [Bắt đầu ca chiều] ), DATEDIF([Start time], [End time], "D") * 8 + (HOUR( text([End time] - [Start time], "hh:mm") - DURATION(0, 1) ) + MINUTE(text([End time] - [Start time], "hh:mm")) / 60), (HOUR(text([End time] - [Start time], "hh:mm")) + MINUTE(text([End time] - [Start time], "hh:mm")) / 60) )
21 user_id Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user_id]. Biểu thức: '7.1.1 - Danh sách nhân sự hệ thống'.FILTER(CurrentValue.[user]=[Requester]).[user_id].LISTCOMBINE()
22 Trạng thái tách phiếu Chọn một Nhập liệu Lựa chọn: Done

Phiếu đề xuất làm thêm giờ - form cũ

  • Table ID: tblUDavHbsCftVcY · Base: Base HRIS (nhân sự, công, lương) · Số cột: 28 · Cột chính: Request No.
  • Khoá trong config/lark-tables.mjs: HRIS.TANG_CA
  • Code ONE-ANNA tham chiếu: legacy/gas/Mã.js
  • Cơ cấu cột: 7 công thức · 2 tra cứu · 0 liên kết · 19 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Request No. 🔑 URL Nhập liệu
2 Status Chọn một Nhập liệu Lựa chọn: Approved, Deleted, Processing, Rejected, Canceled, Terminated, Recalled, Under Review
3 Approval process Chọn một Nhập liệu Lựa chọn: Phiếu đề xuất làm thêm giờ, Phiếu đề xuất làm thêm giờ 1, Phiếu đề xuất làm thêm giờ - form cũ
4 Submitted at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
5 Completed at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
6 Requester Người (User) Nhập liệu Nhiều người
7 Initiator department Văn bản Nhập liệu The department the user was in when the request was submitted
8 Current assignee Người (User) Nhập liệu Nhiều người
9 Approval steps Văn bản Nhập liệu
10 Overtime type Chọn một Nhập liệu
11 Start time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
12 End time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
13 Overtime hours Số Nhập liệu Định dạng 0.00
14 Reason for overtime Văn bản Nhập liệu
15 Duration Unit Chọn một Nhập liệu Lựa chọn: day, Half-days, hour, Half-hours, Minutes
16 Overtime Details Văn bản Nhập liệu
17 Overtime Person Người (User) Nhập liệu Nhiều người
18 Nội dung công việc Văn bản Nhập liệu
19 SourceID Văn bản Nhập liệu
20 Tổng giờ OT Công thức Tự tính (công thức) Công thức: (HOUR(text([End time]-[Start time],"hh:mm"))+MINUTE(text([End time]-[Start time],"hh:mm"))/60)
21 Ngày OT Công thức Tự tính (công thức) Công thức: TExt([Start time],"DD/MM/YYYY")
22 user_id Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user_id]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[Requester]).[user_id].LISTCOMBINE()
23 Thứ Công thức Tự tính (công thức) Công thức: IF( [Ngày OT] = "", "", SWITCH( WEEKDAY( DATE( VALUE(RIGHT([Ngày OT], 4)), VALUE(MID([Ngày OT], 4, 2)), VALUE(LEFT([Ngày OT], 2)) ) ), 1, "CN", 2, "T2", 3, "T3", 4, "T4", 5, "T5", 6, "T6", 7, "T7", "" ) )
24 Date Công thức Tự tính (công thức) Công thức: VALUE([Start time])
25 Ngày lễ Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày nghỉ lễ]. Biểu thức: '3.3 - Lịch tháng'.FILTER(CurrentValue.[Ngày_Text]=[Ngày OT]).[Ngày nghỉ lễ].LISTCOMBINE()
26 Trạng thái làm việc Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc' .FILTER( CurrentValue.[Nhân sự] = [Requester] && CurrentValue.[Ngày bắt đầu] <= [Date] && ( CurrentValue.[Ngày kết thúc] = "" \|\| [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Trạng thái làm việc] .UNIQUE()
27 Năm Công thức Tự tính (công thức) Công thức: [Date].YEAR()
28 Tháng Công thức Tự tính (công thức) Công thức: [Date].MONTH()

Phiếu đề xuất làm thêm giờ - form mới

  • Table ID: tblJVxUYftznAvhJ · Base: Base HRIS (nhân sự, công, lương) · Số cột: 25 · Cột chính: Request No.
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 7 công thức · 3 tra cứu · 0 liên kết · 15 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Request No. 🔑 URL Nhập liệu
2 Status Chọn một Nhập liệu Lựa chọn: Approved, Deleted, Processing, Rejected, Canceled, Terminated, Recalled, Under Review
3 Approval process Chọn một Nhập liệu Lựa chọn: Phiếu đề xuất làm thêm giờ
4 Submitted at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
5 Completed at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
6 Requester Người (User) Nhập liệu Nhiều người
7 Phân loại Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Phân loại]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[Requester]).[Phân loại].LISTCOMBINE()
8 Initiator department Văn bản Nhập liệu The department the user was in when the request was submitted
9 Current assignee Người (User) Nhập liệu Nhiều người
10 Approval steps Văn bản Nhập liệu
11 Thời gian bắt đầu Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
12 Thời gian kết thúc Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
13 Giờ làm thêm dự kiến Số Nhập liệu Định dạng 0.0
14 Lý do làm thêm giờ Văn bản Nhập liệu
15 Nội dung công việc Văn bản Nhập liệu
16 SourceID Văn bản Nhập liệu
17 Tổng giờ OT Công thức Tự tính (công thức) Công thức: IF( [Phân loại] != "Cửa hàng", MIN( 8, IF( [Giờ làm thêm dự kiến] >= 9, [Giờ làm thêm dự kiến] - 1, [Giờ làm thêm dự kiến] ) ), [Giờ làm thêm dự kiến] )
18 Ngày OT Công thức Tự tính (công thức) Công thức: TExt([Thời gian bắt đầu],"DD/MM/YYYY")
19 user_id Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user_id]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[Requester]).[user_id].LISTCOMBINE()
20 Thứ Công thức Tự tính (công thức) Công thức: IF( [Ngày OT] = "", "", SWITCH( WEEKDAY( DATE( VALUE(RIGHT([Ngày OT], 4)), VALUE(MID([Ngày OT], 4, 2)), VALUE(LEFT([Ngày OT], 2)) ) ), 1, "CN", 2, "T2", 3, "T3", 4, "T4", 5, "T5", 6, "T6", 7, "T7", "" ) )
21 Date Công thức Tự tính (công thức) Công thức: VALUE([Thời gian bắt đầu])
22 Ngày lễ Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày nghỉ lễ]. Biểu thức: '3.3 - Lịch tháng'.FILTER(CurrentValue.[Ngày_Text]=[Ngày OT]).[Ngày nghỉ lễ].LISTCOMBINE()
23 Trạng thái làm việc Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc' .FILTER( CurrentValue.[Nhân sự] = [Requester] && CurrentValue.[Ngày bắt đầu] <= [Date] && ( CurrentValue.[Ngày kết thúc] = "" \|\| [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Trạng thái làm việc] .UNIQUE()
24 Năm Công thức Tự tính (công thức) Công thức: [Date].YEAR()
25 Tháng Công thức Tự tính (công thức) Công thức: [Date].MONTH()

Phiếu điều chỉnh công

  • Table ID: tblbBGGLC2w1nHZ6 · Base: Base HRIS (nhân sự, công, lương) · Số cột: 24 · Cột chính: Request No.
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 4 công thức · 3 tra cứu · 0 liên kết · 17 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Request No. 🔑 URL Nhập liệu
2 Status Chọn một Nhập liệu Lựa chọn: Approved, Deleted, Processing, Rejected, Canceled, Terminated, Recalled, Under Review
3 Approval process Chọn một Nhập liệu Lựa chọn: Phiếu chỉnh sửa quên chấm công
4 Submitted at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
5 Completed at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
6 Requester Người (User) Nhập liệu Nhiều người
7 Initiator department Văn bản Nhập liệu The department the user was in when the request was submitted
8 Current assignee Người (User) Nhập liệu Nhiều người
9 Approval steps Văn bản Nhập liệu
10 Loại chỉnh sửa Chọn một Nhập liệu Lựa chọn: Quên chấm công, Lỗi hệ thống, Khác
11 Date of error Ngày giờ Nhập liệu Định dạng yyyy-MM-dd
12 Ngày điều chỉnh Công thức Tự tính (công thức) Công thức: VALUE([Date of error])
13 Original record Chọn một Nhập liệu 23 lựa chọn (không liệt kê)
14 Văn bản 5 Công thức Tự tính (công thức) Công thức: IF(CONTAINTEXT([Original record],"Start time"),"Checkin",IF(CONTAINTEXT([Original record],"End time"),"Checkout",""))
15 Replenishment time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
16 Thời gian điều chỉnh Công thức Tự tính (công thức) Công thức: VALUE([Replenishment time])
17 Đối chiếu Checkin Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Check in time]. Biểu thức: '3.7 - Bảng chấm công chi tiết ngày'.FILTER(CurrentValue.[Employee]=[Requester]&&CurrentValue.[Ngày_Text]=[Ngày_Text]).[Check in time].LISTCOMBINE()
18 Đối chiếu Checkout Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Check out time]. Biểu thức: '3.7 - Bảng chấm công chi tiết ngày'.FILTER(CurrentValue.[Employee]=[Requester]&&CurrentValue.[Ngày_Text]=[Ngày_Text]).[Check out time].LISTCOMBINE()
19 Reason for correction Văn bản Nhập liệu
20 Bằng chứng URL Nhập liệu
21 SourceID Văn bản Nhập liệu
22 Trạng thái update phiếu Chọn một Nhập liệu Lựa chọn: Done
23 User id Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user_id]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[Requester]).[user_id].LISTCOMBINE()
24 Ngày_Text Công thức Tự tính (công thức) Công thức: [Date of error].Text("DD/MM/YYYY")

Phiếu đề xuất ra ngoài thực hiện công việc công ty

  • Table ID: tblBt8SnFnxDLEUY · Base: Base HRIS (nhân sự, công, lương) · Số cột: 22 · Cột chính: Request No.
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 3 công thức · 1 tra cứu · 0 liên kết · 18 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Request No. 🔑 URL Nhập liệu
2 Status Chọn một Nhập liệu Lựa chọn: Approved, Deleted, Processing, Rejected, Canceled, Terminated, Recalled, Under Review
3 Approval process Chọn một Nhập liệu Lựa chọn: Phiếu đề xuất ra ngoài thực hiện công việc công ty
4 Submitted at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
5 Completed at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
6 Requester Người (User) Nhập liệu Nhiều người
7 Initiator department Văn bản Nhập liệu The department the user was in when the request was submitted
8 Current assignee Người (User) Nhập liệu Nhiều người
9 Approval steps Văn bản Nhập liệu
10 Out-of-office type Chọn một Nhập liệu
11 Duration unit Chọn một Nhập liệu Lựa chọn: day, hour
12 Start time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
13 End time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
14 Duration Chọn một Nhập liệu 55 lựa chọn (không liệt kê)
15 Reasons Văn bản Nhập liệu
16 Photo URL Nhập liệu
17 SourceID Văn bản Nhập liệu
18 Kết thúc ca sáng Công thức Tự tính (công thức) Công thức: [Start time]-Text([Start time],"HH:MM")+DURATION(0,12)
19 Bắt đầu ca chiều Công thức Tự tính (công thức) Công thức: [End time]-Text([End time],"HH:MM")+DURATION(0,13)
20 Tổng thời gian Công thức Tự tính (công thức) Công thức: IF( OR( [Start time] <= [Kết thúc ca sáng] && [End time] >= [Bắt đầu ca chiều], [Start time] > [Kết thúc ca sáng] && [End time] >= [Bắt đầu ca chiều] && [Start time] < [Bắt đầu ca chiều] ), DATEDIF([Start time], [End time], "D") * 8 + (HOUR( text([End time] - [Start time], "hh:mm") - DURATION(0, 1) ) + MINUTE(text([End time] - [Start time], "hh:mm")) / 60), (HOUR(text([End time] - [Start time], "hh:mm")) + MINUTE(text([End time] - [Start time], "hh:mm")) / 60) )
21 Trạng thái tách phiếu Chọn một Nhập liệu Lựa chọn: Done
22 User_id Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user_id]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[Requester]).[user_id].LISTCOMBINE()

Phiếu xin làm việc tại nhà

  • Table ID: tbl73aBkC4vVUPyl · Base: Base HRIS (nhân sự, công, lương) · Số cột: 20 · Cột chính: Request No.
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 3 công thức · 1 tra cứu · 0 liên kết · 16 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Request No. 🔑 URL Nhập liệu
2 Status Chọn một Nhập liệu Lựa chọn: Approved, Deleted, Processing, Rejected, Canceled, Terminated, Recalled, Under Review
3 Approval process Chọn một Nhập liệu Lựa chọn: Phiếu xin làm việc tại nhà
4 Submitted at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
5 Completed at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
6 Requester Người (User) Nhập liệu Nhiều người
7 Initiator department Văn bản Nhập liệu The department the user was in when the request was submitted
8 Current assignee Người (User) Nhập liệu Nhiều người
9 Approval steps Văn bản Nhập liệu
10 Thời gian bắt đầu làm việc Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
11 Kết thúc ca sáng Công thức Tự tính (công thức) Công thức: [Thời gian bắt đầu làm việc]-TEXT([Thời gian bắt đầu làm việc],"HH:MM")+DURATION(0,12)
12 Bắt đầu ca chiều Công thức Tự tính (công thức) Công thức: [Thời gian kết thúc]-TEXT([Thời gian kết thúc],"HH:MM")+DURATION(0,13)
13 Thời gian kết thúc Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
14 Tổng thời gian1 Số Nhập liệu Định dạng 0.0
15 Tổng thời gian Công thức Tự tính (công thức) Công thức: IF( OR( [Thời gian bắt đầu làm việc] <= [Kết thúc ca sáng] && [Thời gian kết thúc] >= [Bắt đầu ca chiều], [Thời gian bắt đầu làm việc] > [Kết thúc ca sáng] && [Thời gian kết thúc] >= [Bắt đầu ca chiều] && [Thời gian bắt đầu làm việc] < [Bắt đầu ca chiều] ), DATEDIF([Thời gian bắt đầu làm việc], [Thời gian kết thúc], "D") * 8 + (HOUR( text([Thời gian kết thúc] - [Thời gian bắt đầu làm việc], "hh:mm") - DURATION(0, 1) ) + MINUTE(text([Thời gian kết thúc] - [Thời gian bắt đầu làm việc], "hh:mm")) / 60), (HOUR(text([Thời gian kết thúc] - [Thời gian bắt đầu làm việc], "hh:mm")) + MINUTE(text([Thời gian kết thúc] - [Thời gian bắt đầu làm việc], "hh:mm")) / 60) )
16 Lý do xin làm việc từ xa Văn bản Nhập liệu
17 Nội dung công việc Văn bản Nhập liệu
18 SourceID Văn bản Nhập liệu
19 User_id Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user_id]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[Requester]).[user_id].LISTCOMBINE()
20 Trạng thái tách phiếu Chọn một Nhập liệu Lựa chọn: Done

Phiếu xác nhận công - chưa có tài khoản

  • Table ID: tblxbvQ59AuopcYJ · Base: Base HRIS (nhân sự, công, lương) · Số cột: 17 · Cột chính: Request No.
  • Khoá trong config/lark-tables.mjs: HRIS.PHIEU_CONG_CHUA_TAI_KHOAN
  • Code ONE-ANNA tham chiếu: apps/api/src/portal/no-account-timesheet-sync.js
  • Cơ cấu cột: 2 công thức · 1 tra cứu · 0 liên kết · 14 cột nhập/hệ thống

Ghi chú nghiệp vụ: phiếu xác nhận công cho nhân sự chưa có tài khoản Lark. Phiếu Approved, chưa Done → job syncNoAccountTimesheet ghi sang bảng công chi tiết.

# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Request No. 🔑 URL Nhập liệu
2 Status Chọn một Nhập liệu Lựa chọn: Approved, Deleted, Processing, Rejected, Canceled, Terminated, Recalled, Under Review
3 Approval process Chọn một Nhập liệu Lựa chọn: Phiếu xác nhận công - chưa có tài khoản
4 Submitted at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
5 Completed at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
6 Requester Người (User) Nhập liệu Nhiều người
7 Initiator department Văn bản Nhập liệu The department the user was in when the request was submitted
8 Current assignee Người (User) Nhập liệu Nhiều người
9 Approval steps Văn bản Nhập liệu
10 Thông tin chấm công_Thời gian bắt đầu Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
11 Thông tin chấm công_Thời gian kết thúc Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
12 Thông tin chấm công_Số giờ làm việc Số Nhập liệu Định dạng 0.0
13 User_id Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [user_id]. Biểu thức: '2.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[Requester]).[user_id].LISTCOMBINE()
14 SourceID Văn bản Nhập liệu
15 Ngày_Text Công thức Tự tính (công thức) Công thức: TEXT([Thông tin chấm công_Thời gian bắt đầu],"dd/mm/yyyy")
16 Date Công thức Tự tính (công thức) Công thức: VALUE([Thông tin chấm công_Thời gian bắt đầu])
17 Trạng thái cập nhật phiếu Chọn một Nhập liệu Lựa chọn: Done

Đánh giá kết quả thực hành TTS KXNK

  • Table ID: tblaEReVdinC7eaE · Base: Base HRIS (nhân sự, công, lương) · Số cột: 22 · Cột chính: Request No.
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 0 công thức · 0 tra cứu · 0 liên kết · 22 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Request No. 🔑 URL Nhập liệu
2 Status Chọn một Nhập liệu Lựa chọn: Approved, Deleted, Processing, Rejected, Canceled, Terminated, Recalled, Under Review
3 Approval process Chọn một Nhập liệu Lựa chọn: Đánh giá kết quả thực hành TTS KXNK
4 Submitted at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
5 Completed at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
6 Requester Người (User) Nhập liệu Nhiều người
7 Initiator department Văn bản Nhập liệu The department the user was in when the request was submitted
8 Current assignee Người (User) Nhập liệu Nhiều người
9 Approval steps Văn bản Nhập liệu
10 user_id Chọn một Nhập liệu 15 lựa chọn (không liệt kê)
11 name Chọn một Nhập liệu 15 lựa chọn (không liệt kê)
12 Phòng ban chi tiết. Chọn một Nhập liệu Lựa chọn: HCM_Q10 - 379 Sư Vạn Hạnh, HCM_TPH - 915 Lũy Bán Bích, HNO_CGI - 61 Lê Văn Lương, HCM_BTA - 37 Tên Lửa, HNO_DDA - 60 Chùa Bộc, HNO_HBT - 540 Bạch Mai, HNO_DDA - 173 Chùa Bộc, HCM_Q06 - 87E Nguyễn Thị Nhỏ (PK), HCM_PNH - 47 Trần Huy Liệu, Phòng bán hàng (RSM-AM), HCM_Q01 - 212A Nguyễn Trãi, HNO_DDA - 22 Chùa Láng, HNO_HBT - 459 Minh Khai
13 MNV Văn bản Nhập liệu
14 Họ và tên Văn bản Nhập liệu
15 Tiêu chí (1/3): Kỹ thuật Khúc xạ và Mài lắp_Chấm điểm tiêu chí 1 Chọn một Nhập liệu Lựa chọn: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
16 Tiêu chí (1/3): Kỹ thuật Khúc xạ và Mài lắp_Nhận xét của QLTT Văn bản Nhập liệu
17 Tiêu chí (2/3): Kỹ năng Tư vấn & Sản phẩm_Chấm điểm tiêu chí 2 Chọn một Nhập liệu Lựa chọn: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
18 Tiêu chí (2/3): Kỹ năng Tư vấn & Sản phẩm_Nhận xét của QLTT Văn bản Nhập liệu
19 Tiêu chí (3/3): Tác phong & Ý thức Kỷ luật_Chấm điểm tiêu chí 3 Chọn một Nhập liệu Lựa chọn: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
20 Tiêu chí (3/3): Tác phong & Ý thức Kỷ luật_Nhận xét của QLTT Văn bản Nhập liệu
21 SourceID Văn bản Nhập liệu
22 Kỳ đánh giá Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm

Phiếu xin nghỉ_đã tách ngày

  • Table ID: tbl55uEUTuLNfHBT · Base: Base HRIS (nhân sự, công, lương) · Số cột: 16 · Cột chính: Request No
  • Khoá trong config/lark-tables.mjs: HRIS.NGHI_THEO_NGAY
  • Code ONE-ANNA tham chiếu: legacy/gas/Mã.js
  • Cơ cấu cột: 3 công thức · 1 tra cứu · 0 liên kết · 12 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Request No 🔑 Văn bản Nhập liệu
2 Status Chọn một Nhập liệu Lựa chọn: Approved, Deleted, Processing, Rejected, Canceled, Terminated, Recalled, Under Review, APPROVED
3 Approval process Chọn một Nhập liệu Lựa chọn: Phiếu xin nghỉ
4 Submitted at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
5 Completed at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
6 Requester Người (User) Nhập liệu Nhiều người
7 Leave type Chọn một Nhập liệu Lựa chọn: Đề xuất xin nghỉ phép, Xin đi muộn/ về sớm, Đề xuất nghỉ không lương, Đề xuất nghỉ thai sản, Đề xuất xin nghỉ hiếu hỉ, Xin nghỉ ốm đau (Hưởng BHXH)
8 Reason for leave Văn bản Nhập liệu
9 Start time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
10 End time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
11 Tổng thời gian nghỉ Số Nhập liệu Định dạng 0.0
12 SourceID Văn bản Nhập liệu
13 Date Công thức Tự tính (công thức) Công thức: VALUE([Start time])
14 Năm Công thức Tự tính (công thức) Công thức: [Start time].YEAR()
15 Tháng Công thức Tự tính (công thức) Công thức: [Start time].MONTH()
16 Trạng thái phiếu cuối cùng Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Status]. Biểu thức: 'Phiếu xin nghỉ - đi muộn&về sớm'.FILTER(CurrentValue.[Request No.]=[Request No]).[Status].LISTCOMBINE()

Phiếu xin ra ngoài cho việc cá nhân_đã tách ngày

  • Table ID: tblbtpYOgYDSgDiX · Base: Base HRIS (nhân sự, công, lương) · Số cột: 16 · Cột chính: Request No
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 3 công thức · 1 tra cứu · 0 liên kết · 12 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Request No 🔑 Văn bản Nhập liệu
2 Status Chọn một Nhập liệu Lựa chọn: Approved, Deleted, Processing, Rejected, Canceled, Terminated, Recalled, Under Review, APPROVED
3 Approval process Chọn một Nhập liệu Lựa chọn: Phiếu xin nghỉ, Phiếu xin ra ngoài cho việc cá nhân, Phiếu xin ra ngoài cho việc cá nhân
4 Approval process Copy Ngày giờ Nhập liệu Định dạng yyyy/MM/dd
5 Submitted at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
6 Completed at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
7 Requester Người (User) Nhập liệu Nhiều người
8 Reason for leave Văn bản Nhập liệu
9 Start time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
10 End time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
11 Tổng thời gian nghỉ Số Nhập liệu Định dạng 0.0
12 SourceID Văn bản Nhập liệu
13 Date Công thức Tự tính (công thức) Công thức: VALUE([Start time])
14 Năm Công thức Tự tính (công thức) Công thức: [Date].YEAR()
15 Tháng Công thức Tự tính (công thức) Công thức: [Date].MONTH()
16 Trạng thái phiếu cuối cùng Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Status]. Biểu thức: 'Phiếu xin ra ngoài cho việc cá nhân'.FILTER(CurrentValue.[Request No.]=[Request No]).[Status].LISTCOMBINE()

Phiếu đề xuất ra ngoài thực hiện công việc công ty_đã tách ngày

  • Table ID: tblZ6DwQRDwiJQD6 · Base: Base HRIS (nhân sự, công, lương) · Số cột: 16 · Cột chính: Request No
  • Khoá trong config/lark-tables.mjs: HRIS.RA_NGOAI_CONG_TY_THEO_NGAY
  • Code ONE-ANNA tham chiếu: legacy/gas/Mã.js
  • Cơ cấu cột: 3 công thức · 1 tra cứu · 0 liên kết · 12 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Request No 🔑 Văn bản Nhập liệu
2 Status Chọn một Nhập liệu Lựa chọn: Approved, Deleted, Processing, Rejected, Canceled, Terminated, Recalled, Under Review, APPROVED
3 Approval process Chọn một Nhập liệu Lựa chọn: Phiếu xin nghỉ, Phiếu đề xuất ra ngoài thực hiện công việc công ty
4 Submitted at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
5 Completed at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
6 Requester Người (User) Nhập liệu Nhiều người
7 Leave type Chọn một Nhập liệu Lựa chọn: Đề xuất xin nghỉ phép, Xin đi muộn/ về sớm, Đề xuất nghỉ không lương, Đề xuất nghỉ thai sản, Đề xuất xin nghỉ hiếu hỉ, default
8 Reason for leave Văn bản Nhập liệu
9 Start time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
10 End time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
11 Tổng thời gian nghỉ Số Nhập liệu Định dạng 0.0
12 SourceID Văn bản Nhập liệu
13 Date Công thức Tự tính (công thức) Công thức: VALUE([Start time])
14 Năm Công thức Tự tính (công thức) Công thức: [Date].YEAR()
15 Tháng Công thức Tự tính (công thức) Công thức: [Date].MONTH()
16 Trạng thái phiếu cuối cùng Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Status]. Biểu thức: 'Phiếu đề xuất ra ngoài thực hiện công việc công ty'.FILTER(CurrentValue.[Request No.]=[Request No]).[Status].LISTCOMBINE()

Phiếu xin làm việc tại nhà_đã tách ngày

  • Table ID: tblrF4J4Nqd3LSGu · Base: Base HRIS (nhân sự, công, lương) · Số cột: 18 · Cột chính: Request No
  • Khoá trong config/lark-tables.mjs: HRIS.WFH_THEO_NGAY
  • Code ONE-ANNA tham chiếu: legacy/gas/Mã.js
  • Cơ cấu cột: 4 công thức · 1 tra cứu · 0 liên kết · 13 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Request No 🔑 Văn bản Nhập liệu
2 Status Chọn một Nhập liệu Lựa chọn: Approved, Deleted, Processing, Rejected, Canceled, Terminated, Recalled, Under Review, APPROVED
3 Approval process Chọn một Nhập liệu Lựa chọn: Phiếu xin nghỉ, Phiếu xin làm việc tại nhà
4 Approval process Copy Ngày giờ Nhập liệu Định dạng yyyy/MM/dd
5 Submitted at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
6 Completed at Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
7 Requester Người (User) Nhập liệu Nhiều người
8 Leave type Chọn một Nhập liệu Lựa chọn: Đề xuất xin nghỉ phép, Xin đi muộn/ về sớm, Đề xuất nghỉ không lương, Đề xuất nghỉ thai sản, Đề xuất xin nghỉ hiếu hỉ
9 Reason for leave Văn bản Nhập liệu
10 Start time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
11 End time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
12 Tổng thời gian Số Nhập liệu Định dạng 0.0
13 SourceID Văn bản Nhập liệu
14 Date Công thức Tự tính (công thức) Công thức: VALUE([Start time])
15 Năm Công thức Tự tính (công thức) Công thức: [Date].YEAR()
16 Tháng Công thức Tự tính (công thức) Công thức: [Date].MONTH()
17 Trạng thái phiếu cuối cùng Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Status]. Biểu thức: 'Phiếu xin làm việc tại nhà'.FILTER(CurrentValue.[Request No.]=[Request No]).[Status].LISTCOMBINE()
18 Ngày_Text Công thức Tự tính (công thức) Công thức: TEXT([Start time],"dd/mm/yyyy")

0.0.1 - Khai báo - Địa giới hành chính

  • Table ID: tbl3LfL9OuvefrVZ · Base: Base HRIS (nhân sự, công, lương) · Số cột: 3 · Cột chính: Stt
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 0 công thức · 0 tra cứu · 0 liên kết · 3 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Stt 🔑 Số tự tăng Hệ thống
2 Tỉnh/Thành phố Chọn một Nhập liệu 34 lựa chọn (không liệt kê)
3 Xã/Phường Chọn một Nhập liệu 2993 lựa chọn (không liệt kê)

0.0.2 - Khai báo - Sơ đồ tổ chức

  • Table ID: tblUQODdvY0jGbHG · Base: Base HRIS (nhân sự, công, lương) · Số cột: 11 · Cột chính: Ngày bắt đầu
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 0 công thức · 0 tra cứu · 0 liên kết · 11 cột nhập/hệ thống

Ghi chú nghiệp vụ: danh mục cơ cấu tổ chức theo thời gian (Ngày bắt đầu/kết thúc) gồm Ban → Phòng → Bộ phận → Đơn vị → Vị trí, kèm AM phụ trách và Phân loại. Không thấy code ONE-ANNA đọc trực tiếp bảng này; các bảng 2.4 và 2.1 dùng cùng bộ giá trị Khối/Phòng/Bộ phận/Đơn vị/Vị trí. Quan hệ chính xác với 2.4 (lựa chọn đồng bộ hay nhập tay): cần xác nhận.

# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Ngày bắt đầu 🔑 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
2 Ngày kết thúc Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
3 Ban Chọn một Nhập liệu Lựa chọn: Ban Giám Đốc, Ban Hành chính Nhân sự, Phòng Công nghệ thông tin, Phòng Kho vận, Phòng Kiểm soát nội bộ, Ban Tài chính - Kế toán, Khối Mua hàng - Cung ứng, Phòng Mua hàng, Phòng Phát triển Dự án, Ban Marketing, Phòng Trải nghiệm khách hàng, Khối Vận Hành - Kinh Doanh, Phòng Marketing miền Nam, Phòng chuyển đổi số và ERP
4 Phòng Chọn một Nhập liệu 23 lựa chọn (không liệt kê)
5 Bộ phận Chọn một Nhập liệu 54 lựa chọn (không liệt kê)
6 Đơn vị Chọn một Nhập liệu 125 lựa chọn (không liệt kê)
7 Vị trí Chọn một Nhập liệu 123 lựa chọn (không liệt kê)
8 AM Người (User) Nhập liệu Một người
9 Phân loại Chọn một Nhập liệu Lựa chọn: Cửa hàng, CSKH, Văn phòng, Trực page, Kho vận, Full công, AM, BP Design & Media, Phòng bán hàng (RSM-AM)
10 Bộ phận (1) Chọn một Nhập liệu 53 lựa chọn (không liệt kê)
11 Đơn vị (1) Chọn một Nhập liệu 121 lựa chọn (không liệt kê)

Bản sao 3.6 - Kiểm tra bảng công ngày

  • Table ID: tblbTubmc6nYEJqX · Base: Base HRIS (nhân sự, công, lương) · Số cột: 26 · Cột chính: User id
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 6 công thức · 7 tra cứu · 0 liên kết · 13 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 User id 🔑 Văn bản Nhập liệu
2 Employee Người (User) Nhập liệu Một người
3 Date Ngày giờ Nhập liệu Định dạng dd/MM/yyyy
4 Cửa hàng Văn bản Nhập liệu
5 AM Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [leader]. Biểu thức: '7.1.2 - Danh sách phòng ban'.FILTER(CurrentValue.[name]=[Cửa hàng]).[leader].LISTCOMBINE()
6 Leader Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [leader]. Biểu thức: '7.1.1 - Danh sách nhân sự hệ thống'.FILTER(CurrentValue.[user_id]=[User id]).[leader].LISTCOMBINE()
7 RSM/AM Văn bản Nhập liệu
8 Date Copy Ngày giờ Nhập liệu Định dạng dd/MM/yyyy · tự điền
9 Ngày_text Công thức Tự tính (công thức) Công thức: Text([Date],"DD/MM/YYYY")
10 Tháng Công thức Tự tính (công thức) Công thức: "Tháng "&MONTH([Date])&"/"&YEAR([Date])
11 Shift name Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Name shift time]. Biểu thức: '3.4 - Đăng ký ca_Cửa hàng'.FILTER(CurrentValue.[Account]=[Employee]&&CurrentValue.[Ngày làm việc_Text]=[Ngày_text]).[Name shift time].LISTCOMBINE()
12 Check in time Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Check in time]. Biểu thức: '3.7 - Bảng chấm công chi tiết ngày'.FILTER(CurrentValue.[Employee]=[Employee]&&CurrentValue.[Ngày_Text]=[Ngày_text]).[Check in time].LISTCOMBINE()
13 Check out time Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Check out time]. Biểu thức: '3.7 - Bảng chấm công chi tiết ngày'.FILTER(CurrentValue.[Employee]=[Employee]&&CurrentValue.[Ngày_Text]=[Ngày_text]).[Check out time].LISTCOMBINE()
14 Cảnh báo Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Cảnh báo]. Biểu thức: '3.7 - Bảng chấm công chi tiết ngày'.FILTER(CurrentValue.[Record ID]=[Record ID_1.1]).[Cảnh báo].LISTCOMBINE() Cảnh báo bất thường về giờ làm việc, trong trường hợp: - Giờ check-in muộn hơn giờ đã đăng ký - Giờ check-out sớm hơn giờ đã đăng ký
15 Tổng giờ tính lương (theo ca CH đăng ký) Công thức Tự tính (công thức) Công thức: IF( '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[Employee] = [Employee] && CurrentValue.[Ngày_Text] = [Ngày_text] ) .[Thời gian làm việc theo đăng ký] .LISTCOMBINE() .SUM() = 0, "", '3.7 - Bảng chấm công chi tiết ngày' .FILTER( CurrentValue.[Employee] = [Employee] && CurrentValue.[Ngày_Text] = [Ngày_text] ) .[Thời gian làm việc theo đăng ký] .LISTCOMBINE() .SUM() )
16 Giờ thực tế C&B tính Công thức Tự tính (công thức) Công thức: ([Check out time]-[Check in time])*24
17 Thời gian làm phiếu correction Công thức Tự tính (công thức) Công thức: 'Phiếu điều chỉnh công'.FILTER(CurrentValue.[Requester]=[Employee]&&Text(CurrentValue.[Date of error],"DD/MM/YYYY")=[Ngày_text]).[Replenishment time].LISTCOMBINE()
18 Duyệt công Chọn một Nhập liệu Lựa chọn: Duyệt, Từ chối
19 Lý do duyêt/từ chối Văn bản Nhập liệu Nếu có
20 Xác nhận Checkbox Nhập liệu
21 Khóa bảng công Công thức Tự tính (công thức) Công thức: IF(And([Xác nhận]=1,[Duyệt công]="Duyệt"),"Khóa","")
22 Record ID_1.1 Văn bản Nhập liệu
23 Tra cứu 8 Chọn nhiều Nhập liệu 141 lựa chọn (không liệt kê)
24 Ngày tạo 2 Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
25 Check trùng bản ghi Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Record ID_1.1]. Biểu thức: 'Bản sao 3.6 - Kiểm tra bảng công ngày'.FILTER(CurrentValue.[Employee]=[Employee]&&CurrentValue.[Date]=[Date]&&CurrentValue.[Record ID_1.1]=[Record ID_1.1]).[Record ID_1.1].LISTCOMBINE()
26 SourceID Văn bản Nhập liệu

3.7 - Bảng chấm công chi tiết ngày Copy

  • Table ID: tblcvmsdzd4hDTjg · Base: Base HRIS (nhân sự, công, lương) · Số cột: 64 · Cột chính: User id
  • Khoá trong config/lark-tables.mjs: HRIS.CONG_CHI_TIET_NGAY_BAN_SAO
  • Code ONE-ANNA tham chiếu: legacy/gas/apps-script/lark-attendance-location/Config.js
  • Cơ cấu cột: 36 công thức · 5 tra cứu · 0 liên kết · 23 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 User id 🔑 Văn bản Nhập liệu
2 Result id Văn bản Nhập liệu
3 Date Ngày giờ Nhập liệu Định dạng yyyy/MM/dd
4 Employee Người (User) Nhập liệu Một người
5 Leader Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [leader]. Biểu thức: '7.1.1 - Danh sách nhân sự hệ thống'.FILTER(CurrentValue.[user_id]=[User id]).[leader].LISTCOMBINE()
6 Trạng thái làm việc Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc' .FILTER( CurrentValue.[Nhân sự] = [Employee] && CurrentValue.[Ngày bắt đầu] <= [Date] && ( CurrentValue.[Ngày kết thúc] = "" \|\| [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Trạng thái làm việc] .UNIQUE()
7 Đơn vị Công thức Tự tính (công thức) Công thức: SUBSTITUTE( '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Nhân sự] = [Employee] && [Date] >= CurrentValue.[Ngày bắt đầu] && OR( CurrentValue.[Ngày kết thúc] = "", [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Đơn vị], "[", "" ).SUBSTITUTE("]", "")
8 Vị trí Công thức Tự tính (công thức) Công thức: SUBSTITUTE( '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Nhân sự] = [Employee] && [Date] >= CurrentValue.[Ngày bắt đầu] && OR( CurrentValue.[Ngày kết thúc] = "", [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Vị trí], "[", "" ).SUBSTITUTE("]", "")
9 Phân loại Công thức Tự tính (công thức) Công thức: '0.0.2 - Khai báo - Sơ đồ tổ chức'.FILTER(CurrentValue.[Vị trí]=[Vị trí]&&CurrentValue.[Đơn vị]=[Đơn vị]).[Phân loại].LISTCOMBINE().UNIQUE()
10 Group name Văn bản Nhập liệu
11 Check in record id Văn bản Nhập liệu
12 Shift name Văn bản Nhập liệu
13 Check in time Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
14 Check in shift time Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
15 Check in location name Văn bản Nhập liệu
16 Check in - Is offsite Chọn một Nhập liệu Lựa chọn: true, false
17 Check in type Chọn một Nhập liệu Lựa chọn: User attendance, Administrator modification, User correction, Automatically generated by the system, Clock-out is not required, Attendance machine, Express attendance, Imports to attendance open platform
18 Check in result Chọn một Nhập liệu Lựa chọn: NoNeedCheck, SystemCheck, Normal, Early, Late, Lack, Todo
19 Check in result supplement Chọn một Nhập liệu Lựa chọn: None, ManagerModification, CardReplacement, ShiftChange, Travel, Leave, GoOut, CardReplacementApplication, FieldPunch
20 Check out record id Văn bản Nhập liệu
21 Check out time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
22 Check out shift time Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
23 Check out location name Văn bản Nhập liệu
24 Check out - Is offsite Chọn một Nhập liệu Lựa chọn: true, false
25 Check out type Chọn một Nhập liệu Lựa chọn: User attendance, Administrator modification, User correction, Automatically generated by the system, Clock-out is not required, Attendance machine, Express attendance, Imports to attendance open platform
26 Check out result Chọn một Nhập liệu Lựa chọn: NoNeedCheck, SystemCheck, Normal, Early, Late, Lack, Todo
27 Check out result supplement Chọn một Nhập liệu Lựa chọn: None, ManagerModification, CardReplacement, ShiftChange, Travel, Leave, GoOut, CardReplacementApplication, FieldPunch
28 Kết thúc ca sáng Công thức Tự tính (công thức) Công thức: [Date]-DURATION(0,Hour([Date]),MINUTE([Date]))+DURATION(0,12)
29 Bắt đầu ca chiều Công thức Tự tính (công thức) Công thức: [Date]-DURATION(0,Hour([Date]),MINUTE([Date]))+DURATION(0,13)
30 Tổng giờ thực tế Công thức Tự tính (công thức) Công thức: IF( ( IF( [Phân loại] = "Full công", 8, IF( [Phân loại].CONTAINTEXT("Cửa hàng"), [Thời gian làm việc theo đăng ký], ROUND( HOUR([Tổng giờ làm việc]) + MINUTE([Tổng giờ làm việc]) / 60, 2 ) ) ) ) = 0, "", IF( IF( [Phân loại] = "Full công", 8, IF( [Phân loại].CONTAINTEXT("Cửa hàng"), [Thời gian làm việc theo đăng ký], ROUND( HOUR([Tổng giờ làm việc]) + MINUTE([Tổng giờ làm việc]) / 60, 2 ) ) ) < [Tổng giờ thực tế theo in/out], IF( [Phân loại] = "Full công", 8, IF( [Phân loại].CONTAINTEXT("Cửa hàng"), [Thời gian làm việc theo đăng ký], ROUND( HOUR([Tổng giờ làm việc]) + MINUTE([Tổng giờ làm việc]) / 60, 2 ) ) ), [Tổng giờ thực tế theo in/out] ) )
31 Thời gian làm việc theo đăng ký Công thức Tự tính (công thức) Công thức: '3.4 - Đăng ký ca_Cửa hàng'.FILTER(CurrentValue.[User_id]=[User id]&&Text(CurrentValue.[Ngày làm việc],"DD/MM/YYYY")=TEXT([Date],"DD/MM/YYYY")).[Tổng giờ làm việc].LISTCOMBINE()
32 Tổng giờ thực tế theo in/out Công thức Tự tính (công thức) Công thức: ROUND(([Check out time] - [Check in time]) * 24, 2)
33 Tổng giờ làm việc Văn bản Nhập liệu
34 Tổng giờ đi muộn Công thức Tự tính (công thức) Công thức: IF( ( IF( [Check in time] > [Bắt đầu ca chiều] && [Check in time] > [Check in shift time] && [Check in shift time] < [Bắt đầu ca chiều], HOUR(TEXT([Check in time] - [Bắt đầu ca chiều], "hh:mm")) + MINUTE(TEXT([Check in time] - [Bắt đầu ca chiều], "hh:mm")) / 60, IF( [Check in time] > [Check in shift time] && [Check in time] < [Kết thúc ca sáng], HOUR(TEXT([Check in time] - [Check in shift time], "hh:mm")) + MINUTE(TEXT([Check in time] - [Check in shift time], "hh:mm")) / 60, IF( [Check in time] > [Kết thúc ca sáng] && [Check in time] < [Bắt đầu ca chiều] && [Phân loại] != "Cửa hàng" && [Check in time] > [Check in shift time], HOUR(TEXT([Kết thúc ca sáng] - [Check in shift time], "hh:mm")) + MINUTE(TEXT([Kết thúc ca sáng] - [Check in shift time], "hh:mm")) / 60, 0 ) ) ) ) = 0, "", IF( [Check in time] > [Bắt đầu ca chiều] && [Check in time] > [Check in shift time] && [Check in shift time] < [Bắt đầu ca chiều], HOUR(TEXT([Check in time] - [Bắt đầu ca chiều], "hh:mm")) + MINUTE(TEXT([Check in time] - [Bắt đầu ca chiều], "hh:mm")) / 60, IF( [Check in time] > [Check in shift time] && [Check in time] < [Kết thúc ca sáng], HOUR(TEXT([Check in time] - [Check in shift time], "hh:mm")) + MINUTE(TEXT([Check in time] - [Check in shift time], "hh:mm")) / 60, IF( [Check in time] > [Kết thúc ca sáng] && [Check in time] < [Bắt đầu ca chiều] && [Phân loại] != "Cửa hàng" && [Check in time] > [Check in shift time], HOUR(TEXT([Kết thúc ca sáng] - [Check in shift time], "hh:mm")) + MINUTE(TEXT([Kết thúc ca sáng] - [Check in shift time], "hh:mm")) / 60, 0 ) ) ) )
35 Giờ nghỉ phép Công thức Tự tính (công thức) Công thức: IF( SUM( VALUE( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && NOT(CurrentValue.[Leave type] = "Đề xuất nghỉ không lương") && NOT(CurrentValue.[Leave type] = "Xin đi muộn/ về sớm") && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) ) = 0, "", SUM( VALUE( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && NOT(CurrentValue.[Leave type] = "Đề xuất nghỉ không lương") && NOT(CurrentValue.[Leave type] = "Xin đi muộn/ về sớm") && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) ) )
36 Nghỉ không lương Công thức Tự tính (công thức) Công thức: IF( VALUE( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Leave type] = "Đề xuất nghỉ không lương" && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && TEXT(CurrentValue.[End time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) = 0, "", VALUE( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Leave type] = "Đề xuất nghỉ không lương" && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && TEXT(CurrentValue.[End time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) )
37 Công Remote Công thức Tự tính (công thức) Công thức: IF( SUM( VALUE( 'Phiếu đề xuất ra ngoài thực hiện công việc công ty_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) ) = 0, "", SUM( VALUE( 'Phiếu đề xuất ra ngoài thực hiện công việc công ty_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) ) )
38 Công lễ Công thức Tự tính (công thức) Công thức: IF( '3.3 - Lịch tháng' .FILTER( TEXT(CurrentValue.[Ngày], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Ngày nghỉ lễ] .LISTCOMBINE() = "", "", 8 )
39 Thời gian làm phiếu correction Công thức Tự tính (công thức) Công thức: 'Phiếu điều chỉnh công'.FILTER(CurrentValue.[Requester]=[Employee]&&Text(CurrentValue.[Date of error],"DD/MM/YYYY")=Text([Date],"DD/MM/YYYY")&&CurrentValue.[Status]="Approved").[Replenishment time].LISTCOMBINE().UNIQUE()
40 Công OT Công thức Tự tính (công thức) Công thức: 'Phiếu đề xuất làm thêm giờ - form cũ'.FILTER(CurrentValue.[Requester]=[Employee]&&CurrentValue.[Ngày OT]=TEXT([Date],"DD/MM/YYY")&&CurrentValue.[Status]="Approved").[Tổng giờ OT].LISTCOMBINE()
41 Giờ công OT - Cửa hàng Công thức Tự tính (công thức) Công thức: IF([Phân loại]="Cửa hàng"&&[Tổng giờ thực tế]>12,[Tổng giờ thực tế]-12,"")
42 Công WFH Công thức Tự tính (công thức) Công thức: IF( VALUE( 'Phiếu xin làm việc tại nhà_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Trạng thái phiếu cuối cùng] = "Approved" && CurrentValue.[Date] = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) = 0, "", VALUE( 'Phiếu xin làm việc tại nhà_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Trạng thái phiếu cuối cùng] = "Approved" && CurrentValue.[Date] = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) )
43 Công đi muộn Công thức Tự tính (công thức) Công thức: IF( VALUE( 'Phiếu xin nghỉ - đi muộn&về sớm' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Status] = "Approved" && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && TEXT(CurrentValue.[End time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && CurrentValue.[Leave type] = "Xin đi muộn/ về sớm" ) .[Duration] .LISTCOMBINE() ) = 0, "", VALUE( 'Phiếu xin nghỉ - đi muộn&về sớm' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Status] = "Approved" && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && TEXT(CurrentValue.[End time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && CurrentValue.[Leave type] = "Xin đi muộn/ về sớm" ) .[Duration] .LISTCOMBINE() ) )
44 in_role Công thức Tự tính (công thức) Công thức: SWITCH( [Group name], "VP_Giolamviec_8h-17h", "08:00", "Ca VP_8h30-17h30", "08:30", "VP_Giolamviec_9h-18h", "09:00", "Khối cửa hàng", "", "Trực page", IF( [Shift name] = "TP1_08h-17h", "08:00", IF( [Shift name] = "TP2_15h-23h", "15:00", "" ) ), "CSKH_Giolamviec_8h-17h", "08:00", "Ca livestream", "", "Ecommer", IF( [Shift name] = "Calamviec_9h-18h", "09:00", "" ), "Giolamviec_Fullcong", "08:00", "" )
45 out_role Công thức Tự tính (công thức) Công thức: SWITCH( [Group name], "VP_Giolamviec_8h-17h", "17:00", "Ca VP_8h30-17h30", "17:30", "VP_Giolamviec_9h-18h", "18:00", "Khối cửa hàng", "", "Trực page", IF( [Shift name] = "TP1_08h-17h", "17:00", IF( [Shift name] = "TP2_15h-23h", "23:00", "" ) ), "CSKH_Giolamviec_8h-17h", "17:00", "Ca livestream", "", "Ecommer", IF( [Shift name] = "Calamviec_9h-18h", "18:00", "" ), "Giolamviec_Fullcong", "17:00", "" )
46 outGC Công thức Tự tính (công thức) Công thức: IF( AND( [Group name] != "Nhóm AM/RSM", [Group name] != "Khối cửa hàng" ), "12:00", "" )
47 inGC Công thức Tự tính (công thức) Công thức: IF( AND( [Group name] != "Nhóm AM/RSM", [Group name] != "Khối cửa hàng" ), "13:00", "" )
48 Số phút đi muộn Công thức Tự tính (công thức) Công thức: IF( [Check in time] = "", "", IF( [inGC] != "", IF( (HOUR([Check in time]) * 60 + MINUTE([Check in time])) > (VALUE(LEFT([inGC], 2)) * 60 + VALUE(RIGHT([inGC], 2))), (HOUR([Check in time]) * 60 + MINUTE([Check in time])) - (VALUE(LEFT([inGC], 2)) * 60 + VALUE(RIGHT([inGC], 2))), 0 ), IF( AND([in_role] != "", [outGC] != ""), IF( (HOUR([Check in time]) * 60 + MINUTE([Check in time])) > (VALUE(LEFT([in_role], 2)) * 60 + VALUE(RIGHT([in_role], 2))), (HOUR([Check in time]) * 60 + MINUTE([Check in time])) - (VALUE(LEFT([in_role], 2)) * 60 + VALUE(RIGHT([in_role], 2))), 0 ), "" ) ) )
49 Số phút về sớm Công thức Tự tính (công thức) Công thức: IF( [Check out time] = "", "", IF( [outGC] != "", IF( (HOUR([Check out time]) * 60 + MINUTE([Check out time])) < (VALUE(LEFT([outGC], 2)) * 60 + VALUE(RIGHT([outGC], 2))), (VALUE(LEFT([outGC], 2)) * 60 + VALUE(RIGHT([outGC], 2))) - (HOUR([Check out time]) * 60 + MINUTE([Check out time])), 0 ), IF( [out_role] != "", IF( (HOUR([Check out time]) * 60 + MINUTE([Check out time])) < (VALUE(LEFT([out_role], 2)) * 60 + VALUE(RIGHT([out_role], 2))), (VALUE(LEFT([out_role], 2)) * 60 + VALUE(RIGHT([out_role], 2))) - (HOUR([Check out time]) * 60 + MINUTE([Check out time])), 0 ), "" ) ) )
50 Số giờ làm việc Công thức Tự tính (công thức) Công thức: IF( [Group name] = "Giolamviec_Fullcong", 8, IF( AND( [Check in time] != "", [Check out time] != "", [in_role] != "", [out_role] != "", [outGC] != "", [inGC] != "" ), ( IF( (HOUR([Check in time]) * 60 + MINUTE([Check in time])) < (VALUE(LEFT([outGC],2)) * 60 + VALUE(RIGHT([outGC],2))), ( VALUE(LEFT([outGC],2)) * 60 + VALUE(RIGHT([outGC],2)) ) - IF( (HOUR([Check in time]) * 60 + MINUTE([Check in time])) > (VALUE(LEFT([in_role],2)) * 60 + VALUE(RIGHT([in_role],2))), (HOUR([Check in time]) * 60 + MINUTE([Check in time])), (VALUE(LEFT([in_role],2)) * 60 + VALUE(RIGHT([in_role],2))) ), 0 ) + IF( (HOUR([Check out time]) * 60 + MINUTE([Check out time])) > (VALUE(LEFT([inGC],2)) * 60 + VALUE(RIGHT([inGC],2))), IF( (HOUR([Check out time]) * 60 + MINUTE([Check out time])) < (VALUE(LEFT([out_role],2)) * 60 + VALUE(RIGHT([out_role],2))), (HOUR([Check out time]) * 60 + MINUTE([Check out time])) - (VALUE(LEFT([inGC],2)) * 60 + VALUE(RIGHT([inGC],2))), (VALUE(LEFT([out_role],2)) * 60 + VALUE(RIGHT([out_role],2))) - (VALUE(LEFT([inGC],2)) * 60 + VALUE(RIGHT([inGC],2))) ), 0 ) ) / 60, "" ) )
51 Giờ điều chỉnh công Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Replenishment time]. Biểu thức: 'Phiếu điều chỉnh công'.FILTER(CurrentValue.[Requester]=[Employee]&&CurrentValue.[Date of error]=[Date]).[Replenishment time].LISTCOMBINE()
52 Kiểm tra cập nhật điều chỉnh công Công thức Tự tính (công thức) Công thức: IF( [Trạng thái phiếu điều chỉnh công] != "Approved", "", IF( OR( [Giờ điều chỉnh công] = [Check in time], [Giờ điều chỉnh công] = [Check out time] ), "Đã cập nhật", "Chưa cập nhật" ) )
53 Month Công thức Tự tính (công thức) Công thức: [Date].MONTH()
54 Year Công thức Tự tính (công thức) Công thức: [Date].YEAR()
55 Ngày_Text Công thức Tự tính (công thức) Công thức: TEXT([Date],"DD/MM/YYYY")
56 Tháng Công thức Tự tính (công thức) Công thức: "Tháng "&MONTH([Date])&"/"&YEAR([Date])
57 Cảnh báo Công thức Tự tính (công thức) Công thức: If([Check in time]<=[Check in shift time]&&[Check out time]>=[Check out shift time],"Bình thường","Bất thường")
58 Xác nhận Công thức Tự tính (công thức) Công thức: If('3.6 - Kiểm tra bảng công ngày'.FILTER(CurrentValue.[Record ID_1.1]=[Record ID]&&CurrentValue.[Duyệt công]="Duyệt"&&CurrentValue.[Xác nhận]=1).[User id].LISTCOMBINE()!="","Đã duyệt","Chờ duyệt")
59 Record ID Công thức Tự tính (công thức) Công thức: RECORD_ID()
60 Trạng thái phiếu điều chỉnh công Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Status]. Biểu thức: 'Phiếu điều chỉnh công'.FILTER(CurrentValue.[Requester]=[Employee]&&CurrentValue.[Ngày_Text]=[Ngày_Text]).[Status].LISTCOMBINE()
61 Ngày lễ Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày nghỉ lễ]. Biểu thức: '3.3 - Lịch tháng'.FILTER(CurrentValue.[Ngày]=[Date]).[Ngày nghỉ lễ].LISTCOMBINE()
62 RSM/AM Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [AM]. Biểu thức: '2.5 - QL Thay đổi AM'.FILTER(CurrentValue.[Cửa hàng]=[Bộ phận]).[AM].LISTCOMBINE()
63 Bộ phận Công thức Tự tính (công thức) Công thức: '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Nhân sự] = [Employee] && [Date] >= CurrentValue.[Ngày bắt đầu] && ( CurrentValue.[Ngày kết thúc] = "" \|\| [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Đơn vị] .UNIQUE()
64 Thứ Công thức Tự tính (công thức) Công thức: SWITCH( WEEKDAY([Date]), 1, "CN", 2, "T2", 3, "T3", 4, "T4", 5, "T5", 6, "T6", 7, "T7", "" )

Chấm công tháng 8

  • Table ID: tblEUdd8mKjXHQay · Base: Base HRIS (nhân sự, công, lương) · Số cột: 66 · Cột chính: User id
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 38 công thức · 5 tra cứu · 0 liên kết · 23 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 User id 🔑 Văn bản Nhập liệu
2 Result id Văn bản Nhập liệu
3 Date Ngày giờ Nhập liệu Định dạng yyyy/MM/dd
4 Employee Người (User) Nhập liệu Một người
5 Leader Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [leader]. Biểu thức: '7.1.1 - Danh sách nhân sự hệ thống'.FILTER(CurrentValue.[user_id]=[User id]).[leader].LISTCOMBINE()
6 Trạng thái làm việc Công thức Tự tính (công thức) Công thức: '2.3 - QL Quá trình làm việc' .FILTER( CurrentValue.[Nhân sự] = [Employee] && CurrentValue.[Ngày bắt đầu] <= [Date] && ( CurrentValue.[Ngày kết thúc] = "" \|\| [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Trạng thái làm việc] .UNIQUE()
7 Đơn vị Công thức Tự tính (công thức) Công thức: SUBSTITUTE( '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Nhân sự] = [Employee] && [Date] >= CurrentValue.[Ngày bắt đầu] && OR( CurrentValue.[Ngày kết thúc] = "", [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Đơn vị], "[", "" ).SUBSTITUTE("]", "")
8 Vị trí Công thức Tự tính (công thức) Công thức: SUBSTITUTE( '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Nhân sự] = [Employee] && [Date] >= CurrentValue.[Ngày bắt đầu] && OR( CurrentValue.[Ngày kết thúc] = "", [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Vị trí], "[", "" ).SUBSTITUTE("]", "")
9 Phân loại Công thức Tự tính (công thức) Công thức: '0.0.2 - Khai báo - Sơ đồ tổ chức'.FILTER(CurrentValue.[Vị trí]=[Vị trí]&&CurrentValue.[Đơn vị]=[Đơn vị]).[Phân loại].LISTCOMBINE().UNIQUE()
10 Group name Văn bản Nhập liệu
11 Check in record id Văn bản Nhập liệu
12 Shift name Văn bản Nhập liệu
13 Check in time Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
14 Check in shift time Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
15 Check in location name Văn bản Nhập liệu
16 Check in - Is offsite Chọn một Nhập liệu Lựa chọn: true, false
17 Check in type Chọn một Nhập liệu Lựa chọn: User attendance, Administrator modification, User correction, Automatically generated by the system, Clock-out is not required, Attendance machine, Express attendance, Imports to attendance open platform
18 Check in result Chọn một Nhập liệu Lựa chọn: NoNeedCheck, SystemCheck, Normal, Early, Late, Lack, Todo
19 Check in result supplement Chọn một Nhập liệu Lựa chọn: None, ManagerModification, CardReplacement, ShiftChange, Travel, Leave, GoOut, CardReplacementApplication, FieldPunch
20 Check out record id Văn bản Nhập liệu
21 Check out time Ngày giờ Nhập liệu Định dạng yyyy-MM-dd HH:mm
22 Check out shift time Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
23 Check out location name Văn bản Nhập liệu
24 Check out - Is offsite Chọn một Nhập liệu Lựa chọn: true, false
25 Check out type Chọn một Nhập liệu Lựa chọn: User attendance, Administrator modification, User correction, Automatically generated by the system, Clock-out is not required, Attendance machine, Express attendance, Imports to attendance open platform
26 Check out result Chọn một Nhập liệu Lựa chọn: NoNeedCheck, SystemCheck, Normal, Early, Late, Lack, Todo
27 Check out result supplement Chọn một Nhập liệu Lựa chọn: None, ManagerModification, CardReplacement, ShiftChange, Travel, Leave, GoOut, CardReplacementApplication, FieldPunch
28 Kết thúc ca sáng Công thức Tự tính (công thức) Công thức: [Date]-DURATION(0,Hour([Date]),MINUTE([Date]))+DURATION(0,12)
29 Bắt đầu ca chiều Công thức Tự tính (công thức) Công thức: [Date]-DURATION(0,Hour([Date]),MINUTE([Date]))+DURATION(0,13)
30 Tổng giờ thực tế Công thức Tự tính (công thức) Công thức: IF( ( IF( [Phân loại] = "Full công", 8, IF( [Phân loại].CONTAINTEXT("Cửa hàng"), [Thời gian làm việc theo đăng ký], ROUND( HOUR([Tổng giờ làm việc]) + MINUTE([Tổng giờ làm việc]) / 60, 2 ) ) ) ) = 0, "", IF( IF( [Phân loại] = "Full công", 8, IF( [Phân loại].CONTAINTEXT("Cửa hàng"), [Thời gian làm việc theo đăng ký], ROUND( HOUR([Tổng giờ làm việc]) + MINUTE([Tổng giờ làm việc]) / 60, 2 ) ) ) < [Tổng giờ thực tế theo in/out], IF( [Phân loại] = "Full công", 8, IF( [Phân loại].CONTAINTEXT("Cửa hàng"), [Thời gian làm việc theo đăng ký], ROUND( HOUR([Tổng giờ làm việc]) + MINUTE([Tổng giờ làm việc]) / 60, 2 ) ) ), [Tổng giờ thực tế theo in/out] ) )
31 Thời gian làm việc theo đăng ký Công thức Tự tính (công thức) Công thức: '3.4 - Đăng ký ca_Cửa hàng'.FILTER(CurrentValue.[User_id]=[User id]&&Text(CurrentValue.[Ngày làm việc],"DD/MM/YYYY")=TEXT([Date],"DD/MM/YYYY")).[Tổng giờ làm việc].LISTCOMBINE()
32 Tổng giờ thực tế theo in/out Công thức Tự tính (công thức) Công thức: IF( [Check in time] = "" \|\| [Check out time] = "", 0, ROUND( ([Check out time] - [Check in time]) * 24, 2 ) )
33 Tổng giờ làm việc Văn bản Nhập liệu
34 Tổng giờ đi muộn Công thức Tự tính (công thức) Công thức: IF( ( IF( [Check in time] > [Bắt đầu ca chiều] && [Check in time] > [Check in shift time] && [Check in shift time] < [Bắt đầu ca chiều], HOUR(TEXT([Check in time] - [Bắt đầu ca chiều], "hh:mm")) + MINUTE(TEXT([Check in time] - [Bắt đầu ca chiều], "hh:mm")) / 60, IF( [Check in time] > [Check in shift time] && [Check in time] < [Kết thúc ca sáng], HOUR(TEXT([Check in time] - [Check in shift time], "hh:mm")) + MINUTE(TEXT([Check in time] - [Check in shift time], "hh:mm")) / 60, IF( [Check in time] > [Kết thúc ca sáng] && [Check in time] < [Bắt đầu ca chiều] && [Phân loại] != "Cửa hàng" && [Check in time] > [Check in shift time], HOUR(TEXT([Kết thúc ca sáng] - [Check in shift time], "hh:mm")) + MINUTE(TEXT([Kết thúc ca sáng] - [Check in shift time], "hh:mm")) / 60, 0 ) ) ) ) = 0, "", IF( [Check in time] > [Bắt đầu ca chiều] && [Check in time] > [Check in shift time] && [Check in shift time] < [Bắt đầu ca chiều], HOUR(TEXT([Check in time] - [Bắt đầu ca chiều], "hh:mm")) + MINUTE(TEXT([Check in time] - [Bắt đầu ca chiều], "hh:mm")) / 60, IF( [Check in time] > [Check in shift time] && [Check in time] < [Kết thúc ca sáng], HOUR(TEXT([Check in time] - [Check in shift time], "hh:mm")) + MINUTE(TEXT([Check in time] - [Check in shift time], "hh:mm")) / 60, IF( [Check in time] > [Kết thúc ca sáng] && [Check in time] < [Bắt đầu ca chiều] && [Phân loại] != "Cửa hàng" && [Check in time] > [Check in shift time], HOUR(TEXT([Kết thúc ca sáng] - [Check in shift time], "hh:mm")) + MINUTE(TEXT([Kết thúc ca sáng] - [Check in shift time], "hh:mm")) / 60, 0 ) ) ) )
35 Giờ nghỉ phép Công thức Tự tính (công thức) Công thức: IF( SUM( VALUE( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && NOT(CurrentValue.[Leave type] = "Đề xuất nghỉ không lương") && NOT(CurrentValue.[Leave type] = "Xin đi muộn/ về sớm") && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) ) = 0, "", SUM( VALUE( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && NOT(CurrentValue.[Leave type] = "Đề xuất nghỉ không lương") && NOT(CurrentValue.[Leave type] = "Xin đi muộn/ về sớm") && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) ) )
36 Nghỉ không lương Công thức Tự tính (công thức) Công thức: IF( VALUE( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Leave type] = "Đề xuất nghỉ không lương" && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && TEXT(CurrentValue.[End time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) = 0, "", VALUE( 'Phiếu xin nghỉ_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Leave type] = "Đề xuất nghỉ không lương" && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && TEXT(CurrentValue.[End time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) )
37 Công Remote Công thức Tự tính (công thức) Công thức: IF( SUM( VALUE( 'Phiếu đề xuất ra ngoài thực hiện công việc công ty_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) ) = 0, "", SUM( VALUE( 'Phiếu đề xuất ra ngoài thực hiện công việc công ty_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) ) )
38 Công lễ Công thức Tự tính (công thức) Công thức: IF( '3.3 - Lịch tháng' .FILTER( TEXT(CurrentValue.[Ngày], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") ) .[Ngày nghỉ lễ] .LISTCOMBINE() = "", "", 8 )
39 Thời gian làm phiếu correction Công thức Tự tính (công thức) Công thức: 'Phiếu điều chỉnh công'.FILTER(CurrentValue.[Requester]=[Employee]&&Text(CurrentValue.[Date of error],"DD/MM/YYYY")=Text([Date],"DD/MM/YYYY")&&CurrentValue.[Status]="Approved").[Replenishment time].LISTCOMBINE().UNIQUE()
40 Công OT Công thức Tự tính (công thức) Công thức: 'Phiếu đề xuất làm thêm giờ - form cũ'.FILTER(CurrentValue.[Requester]=[Employee]&&CurrentValue.[Ngày OT]=TEXT([Date],"DD/MM/YYY")&&CurrentValue.[Status]="Approved").[Tổng giờ OT].LISTCOMBINE()
41 Giờ công OT - Cửa hàng Công thức Tự tính (công thức) Công thức: IF([Phân loại]="Cửa hàng"&&[Tổng giờ thực tế]>12,[Tổng giờ thực tế]-12,"")
42 Công WFH Công thức Tự tính (công thức) Công thức: IF( VALUE( 'Phiếu xin làm việc tại nhà_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Trạng thái phiếu cuối cùng] = "Approved" && CurrentValue.[Ngày_Text] = [Ngày_Text] ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) = 0, "", VALUE( 'Phiếu xin làm việc tại nhà_đã tách ngày' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Trạng thái phiếu cuối cùng] = "Approved" && CurrentValue.[Ngày_Text] = [Ngày_Text] ) .[Tổng thời gian nghỉ] .LISTCOMBINE() ) )
43 Công đi muộn Công thức Tự tính (công thức) Công thức: IF( VALUE( 'Phiếu xin nghỉ - đi muộn&về sớm' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Status] = "Approved" && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && TEXT(CurrentValue.[End time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && CurrentValue.[Leave type] = "Xin đi muộn/ về sớm" ) .[Duration] .LISTCOMBINE() ) = 0, "", VALUE( 'Phiếu xin nghỉ - đi muộn&về sớm' .FILTER( CurrentValue.[Requester] = [Employee] && CurrentValue.[Status] = "Approved" && TEXT(CurrentValue.[Start time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && TEXT(CurrentValue.[End time], "DD/MM/YYYY") = TEXT([Date], "DD/MM/YYYY") && CurrentValue.[Leave type] = "Xin đi muộn/ về sớm" ) .[Duration] .LISTCOMBINE() ) )
44 in_role Công thức Tự tính (công thức) Công thức: SWITCH( [Group name], "VP_Giolamviec_8h-17h", "08:00", "Ca VP_8h30-17h30", "08:30", "VP_Giolamviec_9h-18h", "09:00", "Khối cửa hàng", "", "Trực page", IF( [Shift name] = "TP1_08h-17h", "08:00", IF( [Shift name] = "TP2_15h-23h", "15:00", "" ) ), "CSKH_Giolamviec_8h-17h", "08:00", "Ca livestream", "", "Ecommer", IF( [Shift name] = "Calamviec_9h-18h", "09:00", "" ), "Giolamviec_Fullcong", "08:00", "" )
45 out_role Công thức Tự tính (công thức) Công thức: SWITCH( [Group name], "VP_Giolamviec_8h-17h", "17:00", "Ca VP_8h30-17h30", "17:30", "VP_Giolamviec_9h-18h", "18:00", "Khối cửa hàng", "", "Trực page", IF( [Shift name] = "TP1_08h-17h", "17:00", IF( [Shift name] = "TP2_15h-23h", "23:00", "" ) ), "CSKH_Giolamviec_8h-17h", "17:00", "Ca livestream", "", "Ecommer", IF( [Shift name] = "Calamviec_9h-18h", "18:00", "" ), "Giolamviec_Fullcong", "17:00", "" )
46 outGC Công thức Tự tính (công thức) Công thức: IF( AND( [Group name] != "Nhóm AM/RSM", [Group name] != "Khối cửa hàng" ), "12:00", "" )
47 inGC Công thức Tự tính (công thức) Công thức: IF( AND( [Group name] != "Nhóm AM/RSM", [Group name] != "Khối cửa hàng" ), "13:00", "" )
48 Số phút đi muộn Công thức Tự tính (công thức) Công thức: IF( [Check in time] = "", "", IF( [inGC] != "", IF( (HOUR([Check in time]) * 60 + MINUTE([Check in time])) > (VALUE(LEFT([inGC], 2)) * 60 + VALUE(RIGHT([inGC], 2))), (HOUR([Check in time]) * 60 + MINUTE([Check in time])) - (VALUE(LEFT([inGC], 2)) * 60 + VALUE(RIGHT([inGC], 2))), 0 ), IF( AND([in_role] != "", [outGC] != ""), IF( (HOUR([Check in time]) * 60 + MINUTE([Check in time])) > (VALUE(LEFT([in_role], 2)) * 60 + VALUE(RIGHT([in_role], 2))), (HOUR([Check in time]) * 60 + MINUTE([Check in time])) - (VALUE(LEFT([in_role], 2)) * 60 + VALUE(RIGHT([in_role], 2))), 0 ), "" ) ) )
49 Số phút về sớm Công thức Tự tính (công thức) Công thức: IF( [Check out time] = "", "", IF( [outGC] != "", IF( (HOUR([Check out time]) * 60 + MINUTE([Check out time])) < (VALUE(LEFT([outGC], 2)) * 60 + VALUE(RIGHT([outGC], 2))), (VALUE(LEFT([outGC], 2)) * 60 + VALUE(RIGHT([outGC], 2))) - (HOUR([Check out time]) * 60 + MINUTE([Check out time])), 0 ), IF( [out_role] != "", IF( (HOUR([Check out time]) * 60 + MINUTE([Check out time])) < (VALUE(LEFT([out_role], 2)) * 60 + VALUE(RIGHT([out_role], 2))), (VALUE(LEFT([out_role], 2)) * 60 + VALUE(RIGHT([out_role], 2))) - (HOUR([Check out time]) * 60 + MINUTE([Check out time])), 0 ), "" ) ) )
50 Số giờ làm việc Công thức Tự tính (công thức) Công thức: IF( [Group name] = "Giolamviec_Fullcong", 8, IF( AND( [Check in time] != "", [Check out time] != "", [in_role] != "", [out_role] != "", [outGC] != "", [inGC] != "" ), ( IF( (HOUR([Check in time]) * 60 + MINUTE([Check in time])) < (VALUE(LEFT([outGC],2)) * 60 + VALUE(RIGHT([outGC],2))), ( VALUE(LEFT([outGC],2)) * 60 + VALUE(RIGHT([outGC],2)) ) - IF( (HOUR([Check in time]) * 60 + MINUTE([Check in time])) > (VALUE(LEFT([in_role],2)) * 60 + VALUE(RIGHT([in_role],2))), (HOUR([Check in time]) * 60 + MINUTE([Check in time])), (VALUE(LEFT([in_role],2)) * 60 + VALUE(RIGHT([in_role],2))) ), 0 ) + IF( (HOUR([Check out time]) * 60 + MINUTE([Check out time])) > (VALUE(LEFT([inGC],2)) * 60 + VALUE(RIGHT([inGC],2))), IF( (HOUR([Check out time]) * 60 + MINUTE([Check out time])) < (VALUE(LEFT([out_role],2)) * 60 + VALUE(RIGHT([out_role],2))), (HOUR([Check out time]) * 60 + MINUTE([Check out time])) - (VALUE(LEFT([inGC],2)) * 60 + VALUE(RIGHT([inGC],2))), (VALUE(LEFT([out_role],2)) * 60 + VALUE(RIGHT([out_role],2))) - (VALUE(LEFT([inGC],2)) * 60 + VALUE(RIGHT([inGC],2))) ), 0 ) ) / 60, "" ) )
51 Giờ điều chỉnh công Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Replenishment time]. Biểu thức: 'Phiếu điều chỉnh công'.FILTER(CurrentValue.[Requester]=[Employee]&&CurrentValue.[Date of error]=[Date]).[Replenishment time].LISTCOMBINE()
52 Kiểm tra cập nhật điều chỉnh công Công thức Tự tính (công thức) Công thức: IF( [Trạng thái phiếu điều chỉnh công] != "Approved", "", IF( OR( [Giờ điều chỉnh công] = [Check in time], [Giờ điều chỉnh công] = [Check out time] ), "Đã cập nhật", "Chưa cập nhật" ) )
53 Month Công thức Tự tính (công thức) Công thức: [Date].MONTH()
54 Year Công thức Tự tính (công thức) Công thức: [Date].YEAR()
55 Ngày_Text Công thức Tự tính (công thức) Công thức: TEXT([Date],"DD/MM/YYYY")
56 Tháng Công thức Tự tính (công thức) Công thức: "Tháng "&MONTH([Date])&"/"&YEAR([Date])
57 Cảnh báo Công thức Tự tính (công thức) Công thức: If([Check in time]<=[Check in shift time]&&[Check out time]>=[Check out shift time],"Bình thường","Bất thường")
58 Xác nhận Công thức Tự tính (công thức) Công thức: If('3.6 - Kiểm tra bảng công ngày'.FILTER(CurrentValue.[Record ID_1.1]=[Record ID]&&CurrentValue.[Duyệt công]="Duyệt"&&CurrentValue.[Xác nhận]=1).[User id].LISTCOMBINE()!="","Đã duyệt","Chờ duyệt")
59 Record ID Công thức Tự tính (công thức) Công thức: RECORD_ID()
60 Trạng thái phiếu điều chỉnh công Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Status]. Biểu thức: 'Phiếu điều chỉnh công'.FILTER(CurrentValue.[Requester]=[Employee]&&CurrentValue.[Ngày_Text]=[Ngày_Text]).[Status].LISTCOMBINE().UNIQUE()
61 Ngày lễ Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [Ngày nghỉ lễ]. Biểu thức: '3.3 - Lịch tháng'.FILTER(CurrentValue.[Ngày]=[Date]).[Ngày nghỉ lễ].LISTCOMBINE()
62 RSM/AM Tra cứu (Lookup) Tự lấy (tra cứu) Tra cứu, cột [AM]. Biểu thức: '2.5 - QL Thay đổi AM'.FILTER(CurrentValue.[Cửa hàng]=[Bộ phận]).[AM].LISTCOMBINE()
63 Bộ phận Công thức Tự tính (công thức) Công thức: '2.4 - QL Quá trình thay đổi vị trí' .FILTER( CurrentValue.[Nhân sự] = [Employee] && [Date] >= CurrentValue.[Ngày bắt đầu] && ( CurrentValue.[Ngày kết thúc] = "" \|\| [Date] <= CurrentValue.[Ngày kết thúc] ) ) .[Đơn vị] .UNIQUE()
64 Thứ Công thức Tự tính (công thức) Công thức: SWITCH( WEEKDAY([Date]), 1, "CN", 2, "T2", 3, "T3", 4, "T4", 5, "T5", 6, "T6", 7, "T7", "" )
65 Kiểm tra giờ công bất thường Công thức Tự tính (công thức) Công thức: IF([Phân loại]!="Cửa hàng"&&[Công OT]=""&&[Tổng giờ thực tế]>8,"Bất thường","")
66 Check trùng Công thức Tự tính (công thức) Công thức: IF('Chấm công tháng 8'.COUNTIF(CurrentValue.[User id]=[User id]&&CurrentValue.[Date]=[Date])>1,"🚫repetitive","")

Task công việc

  • Table ID: tbl8N3rSdyUOYcsh · Base: Base HRIS (nhân sự, công, lương) · Số cột: 5 · Cột chính: Tên công việc
  • Code ONE-ANNA tham chiếu: không thấy trong code (bảng chỉ dùng trên Lark, hoặc bảng sao/lưu trữ — cần xác nhận)
  • Cơ cấu cột: 0 công thức · 0 tra cứu · 0 liên kết · 5 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Tên công việc 🔑 Văn bản Nhập liệu
2 Người thực hiện Người (User) Nhập liệu Một người
3 Deadline Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
4 Nội dung Văn bản Nhập liệu
5 Chuyển task Checkbox Nhập liệu

Base Sinh nhật — ADFPbTXTAa9D6Ysd3uZlPTkQg7g

0. Danh sách nhân sự

  • Table ID: tblQrlSJP8yDMHFr · Base: Base Sinh nhật · Số cột: 22 · Cột chính: user_id
  • Khoá trong config/lark-tables.mjs: BIRTHDAY.NHAN_SU
  • Code ONE-ANNA tham chiếu: apps/api/src/portal/birthday-notify.js
  • Cơ cấu cột: 0 công thức · 0 tra cứu · 0 liên kết · 22 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 user_id 🔑 Văn bản Nhập liệu
2 user Người (User) Nhập liệu Một người
3 Leader Người (User) Nhập liệu Nhiều người
4 Họ và tên Văn bản Nhập liệu
5 Ngày sinh Ngày giờ Nhập liệu Định dạng dd/MM/yyyy
6 Số điện thoại Văn bản Nhập liệu
7 Email cá nhân Văn bản Nhập liệu
8 Dân tộc Văn bản Nhập liệu
9 Tôn giáo Văn bản Nhập liệu
10 Ban Chọn nhiều Nhập liệu Lựa chọn: Ban Giám Đốc, Ban Hành chính Nhân sự, Phòng Công nghệ thông tin, Phòng Kho vận, Phòng Kiểm soát nội bộ, Ban Tài chính - Kế toán, Khối Mua hàng - Cung ứng, Phòng Mua hàng, Phòng Phát triển Dự án, Ban Marketing, Phòng Trải nghiệm khách hàng, Khối Vận Hành - Kinh Doanh, Phòng Marketing miền Nam, Phòng chuyển đổi số và ERP
11 Đơn vị Chọn nhiều Nhập liệu 125 lựa chọn (không liệt kê)
12 Vị trí Chọn nhiều Nhập liệu 123 lựa chọn (không liệt kê)
13 Phân loại Chọn nhiều Nhập liệu Lựa chọn: Cửa hàng, CSKH, Văn phòng, Trực page, Kho vận, Full công, AM, BP Design & Media, Phòng bán hàng (RSM-AM)
14 Trạng thái làm việc Chọn nhiều Nhập liệu Lựa chọn: Thực tập sinh, Thử việc, Chính thức, Nghỉ thai sản, Nghỉ dài ngày, Nghỉ việc, Chuẩn bị nghỉ việc
15 Trạng thái hoạt động Văn bản Nhập liệu
16 Ngày bắt đầu làm việc Ngày giờ Nhập liệu Định dạng yyyy/MM/dd HH:mm
17 Check trùng Văn bản Nhập liệu
18 SourceID Văn bản Nhập liệu
19 Ảnh nhân sự Tệp đính kèm Nhập liệu
20 Lời chúc Văn bản Nhập liệu
21 Role phân quyền Văn bản Nhập liệu
22 Thâm niên Số Nhập liệu Định dạng 0.00

Lời chúc

  • Table ID: tblYEIKnvk8MtEW1 · Base: Base Sinh nhật · Số cột: 2 · Cột chính: Lời chúc
  • Khoá trong config/lark-tables.mjs: BIRTHDAY.LOI_CHUC
  • Code ONE-ANNA tham chiếu: apps/api/src/portal/birthday-notify.js
  • Cơ cấu cột: 0 công thức · 0 tra cứu · 0 liên kết · 2 cột nhập/hệ thống
# Cột Kiểu Nguồn giá trị Chi tiết / công thức Mô tả trên Base
1 Lời chúc 🔑 Văn bản Nhập liệu
2 Giới tính Chọn một Nhập liệu Lựa chọn: Nam, Nữ