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:
2.1 - QL Thông tin nhân sự¶
- Table ID:
tbl8RCV9OJFu9KpQ· Base: Base HRIS (nhân sự, công, lương) · Số cột: 61 · Cột chính: user_id - Khoá trong
config/lark-tables.mjs:HRIS.NHAN_SU - Code ONE-ANNA tham chiếu:
apps/api/core/functions/utils/lark.js,apps/api/src/modules/dao-tao-hr-enrich/enrich.js,apps/api/src/modules/role-mention/handler.js,apps/api/src/portal/approval-base-sync/enrich-requester-hr.js,apps/api/src/portal/hris-personnel-sync.js,apps/api/src/portal/native-rpc/hr-dossier.js,apps/api/src/portal/reconciliation-registry.js,apps/api/src/portal/role-core/io.js,apps/api/src/portal/role-native.js,apps/api/src/portal/seed-36-store-gaps/index.jsvà 5 file khác - Liên kết tới: 6.4 - QL HĐLĐ khác, 5.1 - QL BHXH, 4.3.1 - Khai báo thu nhập nhân sự, 6.5 - QL Quyết định, 6.2 - QL HĐTV, 2.2 - QL Người phụ thuộc, 6.3 - QL HĐLĐ, 4.0.1 - Bảng lương tổng hợp - Nội bộ, 2.6 - QL Ca làm việc khối cửa hàng - Thai sản, 6.1 - QL Hồ sơ nhân sự, 2.4 - QL Quá trình thay đổi vị trí, 4.2.1 - Khai báo phụ cấp - Phúc lợi, 3.1 - Bảng tính công tổng hợp - Tính lương, 2.3 - QL Quá trình làm việc, 5.2 - QL Chi phí BHXH Hàng tháng, 3.0 - Bảng tính công tổng hợp - Attendance
- Cơ cấu cột: 3 công thức · 9 tra cứu · 16 liên kết · 33 cột nhập/hệ thống
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 | 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ữ |