| Code | Nhân viên | OT |
|---|
| No. | Tên dự án | Project OT Summary | Lý do / Kế hoạch | Duyệt bởi ECM / HODs | Ghi chú |
|---|
| No. | Tên dự án | Project OT Summary | Lý do / Kế hoạch | Duyệt bởi ECM / HODs | Ghi chú |
|---|
Lưu ý: Khi Tải lên (Save), dữ liệu trên Sheet sẽ bị ghi đè bằng dữ liệu hiện tại của bạn. Khi Tải xuống (Load), dữ liệu local sẽ bị thay bằng dữ liệu trên Sheet.
Sau khi đổi, nhớ bấm "💾 Lưu & Đồng bộ lên Sheet" để dùng được ở máy khác.
sendNotifyEmail dùng MailApp.sendEmail() để tự gửi từ tài khoản anhtuan@taikisha-vn.com mà không cần mở email cá nhân.
2. Bấm Tải lên Sheet ở đây để đồng bộ cho mọi người cùng xem
3. Người khác mở app (đã cấu hình cùng URL) → bấm Tải xuống từ Sheet để lấy data mới nhất
4. Nếu bật tự động tải lên, mọi thay đổi (upload, xóa tháng...) sẽ tự sync ngay
1) File chấm công In/Out (như file gốc) — app tự tính OT theo công thức: MAX(0, Tổng giờ đã làm cả kỳ − Tổng giờ tiêu chuẩn cả kỳ) (8h/ngày thường, 4h/thứ 7, 0h/CN). Xem chi tiết ở mục "Công thức tính".
2) File đơn giản: Tên NV · Phòng Ban · Ngày · Giờ OT (đã có sẵn số giờ OT).
Chu kỳ tháng công ty: mỗi "tháng" tính từ ngày 16 đến ngày 15 tháng sau.
Upload theo từng mốc luỹ kế: mỗi lần upload, file chứa dữ liệu từ 16 đến ngày bất kỳ (ví dụ 16-26/04, lần sau 16/04-03/05, lần sau 16/04-10/05...). App lưu OT theo từng ngày cụ thể và ghi nhận mỗi lần upload là 1 "mốc" — vào tab Dashboard có nút chọn xem lại từng mốc, mốc cuối cùng (xa nhất) = báo cáo luỹ kế cả tháng.
Lưu ý: Dữ liệu lưu trong trình duyệt này (localStorage). Dùng nút Xuất PDF hoặc Báo cáo HTML ở mục Báo cáo để backup định kỳ.
Vì sao nên dùng file này thay vì 2 mục ở trên? Cách upload OT (theo chu kỳ lương 16→15) và Off Day (theo tháng dương lịch) riêng biệt trước đây có thể bị lệch ngày giữa 2 nguồn, khiến WLB tính sai. File này có cả OT và Off Day cùng nằm trong 1 file, cùng tính theo tháng dương lịch — đảm bảo luôn khớp đúng.
Sau khi upload, dữ liệu từ file này sẽ được ưu tiên dùng cho mọi tính toán WLB (tháng nào có trong file) — các trang OT/Đi trễ khác không bị ảnh hưởng.
Xuất PDF
Báo cáo 4 mục theo tháng/quý đã chọn ở trên, sẵn sàng để in hoặc chia sẻ qua email.
Báo cáo HTML
Cùng nội dung báo cáo trên, mở trực tiếp trên trình duyệt, dễ chia sẻ link nội bộ.
Công thức tổng quát (tính theo cả kỳ, không phải "vượt ngưỡng mỗi ngày" như trước):
OT = MAX(0, Tổng giờ ĐÃ LÀM trong kỳ − Tổng giờ TIÊU CHUẨN trong kỳ)
Mỗi ngày chỉ đóng góp 2 con số: giờ đã làm và giờ tiêu chuẩn. OT chỉ thật sự "lộ ra" ở phần chênh lệch cộng dồn của cả kỳ — không giới hạn theo từng ngày riêng lẻ.
1. Giờ đã làm mỗi ngày (tự động trừ giờ nghỉ trưa 12h-13h, có tính cả giờ đến sớm):
Giờ làm = max(0, min(12h, Giờ ra) − Giờ vào) + max(0, Giờ ra − max(13h, Giờ vào))
Giờ vào/ra được làm tròn 2 bước trước khi tính: làm tròn LÊN 15 phút, rồi làm tròn XUỐNG 30 phút. Ví dụ 7:32 → 7:45 → 7:30.
Thiếu dữ liệu chấm công: thiếu 1 trong 2 (thiếu giờ vào HOẶC thiếu giờ ra) → ngày đó đóng góp 0 giờ làm (không có giả định 8:00/17:00 nào — khớp đúng file gốc công ty đã kiểm chứng), nhưng vẫn tính đủ giờ tiêu chuẩn của ngày đó (xem bên dưới) — nên ngày thiếu chấm công sẽ làm giảm OT cộng dồn của kỳ.
2. Giờ tiêu chuẩn mỗi ngày (luôn cộng dồn dù có đi làm hay không):
| Loại ngày | Giờ tiêu chuẩn |
|---|---|
| Thứ 2 – Thứ 6 | 8h |
| Thứ 7 | 4h |
| Chủ nhật | 0h |
⚠️ Khác với file Excel gốc: file gốc không giảm giờ tiêu chuẩn cho ngày lễ (khiến người nghỉ đúng ngày lễ bị kéo tụt OT tháng đó một cách bất hợp lý). App đã sửa: ngày lễ/Tết được miễn giờ tiêu chuẩn (0h) — người nghỉ đúng ngày lễ sẽ không bị trừ quota ngày đó. Người vẫn đi làm đúng ngày lễ thì không đổi gì — giờ làm hôm đó vẫn được tính 100% là OT như file gốc.
OT sau 22h (Night OT): phần giờ làm sau 22:00 (đã làm tròn), hiển thị ở cột "OT sau 22h" trong Danh sách NV OT. Ở bảng danh sách, cột "OT bình thường" = Tổng OT − OT sau 22h, đảm bảo OT bình thường + OT sau 22h luôn = Tổng OT luỹ kế (nếu quota tháng đó đã "hấp thụ" hết OT thực làm, phần khuya cũng không còn được công nhận riêng — khớp đúng công thức Tổng OT chính thức). Trang Tổng quan OT có thêm biểu đồ "Tần suất OT sau 22h" — đếm số ngày mỗi NV có OT khuya trong kỳ đang xem, giúp phát hiện ai làm khuya thường xuyên (không chỉ 1-2 lần ngẫu nhiên).
Theo tháng (chu kỳ 16→15):
Tổng OT luỹ kế = MAX(0, tổng giờ làm − tổng giờ tiêu chuẩn) tính từ ngày 16 đầu chu kỳ đến ngày được chọn (Week 1/2/3/4).
Quy định OT: không vượt quá 70h/tháng. Trong mức 70h là bình thường/hợp lệ; vượt quá 70h mới thật sự là vượt mức cần xử lý.
| Mức OT luỹ kế | Trạng thái | Ý nghĩa |
|---|---|---|
| ≤ 70h | Bình thường | Trong mức quy định |
| > 70h | Vượt mức | Vượt trần 70h — cần xử lý/xin duyệt |
% Giới hạn = Tổng OT luỹ kế ÷ 70h × 100%. Dùng chung công thức này ở mọi tab: Tổng quan OT, OT phòng ban — chỉ khác cách lấy mốc thời gian (theo tuần hoặc theo cả tháng).
Mục "OT phòng ban" và "So sánh OT" (Tuần / Tháng / Quý):
Các biểu đồ/bảng ở đây hiển thị Tổng OT (cộng dồn toàn bộ giờ OT của các NV trong phòng ban/công ty), không phải số trung bình:
| Tab | Cách tính |
|---|---|
| OT phòng ban | Tổng OT luỹ kế của từng phòng ban, theo tuần đang chọn hoặc cả tháng |
| So sánh — Tuần | Tổng OT phát sinh riêng trong từng tuần (không cộng dồn từ tuần trước) của từng phòng ban |
| So sánh — Tháng | Tổng OT cả tháng của từng phòng ban |
| So sánh — Quý | Tổng OT của 3 tháng trong quý, cộng lại theo từng phòng ban |
Ý nghĩa: Tổng OT cho biết phòng ban/công ty đang "tiêu tốn" bao nhiêu giờ OT thực tế trong kỳ — phù hợp để theo dõi chi phí OT, áp lực nhân sự theo quy mô phòng ban.
Ghi chú (chưa áp dụng): Nếu muốn xem theo trung bình (Tổng OT ÷ số NV trong phòng ban), số liệu sẽ cho biết mức OT bình quân mỗi người đang gánh — phù hợp để so sánh áp lực giữa các phòng ban có quy mô nhân sự khác nhau (vì phòng 50 người luôn có Tổng OT lớn hơn phòng 5 người, dù mỗi người làm OT ít hơn). Hiện bản này tạm bỏ chỉ số trung bình, chỉ hiển thị Tổng — có thể bổ sung lại nếu cần.
Trang Tổng quan OT có thêm biểu đồ đường "Xu hướng Tổng OT theo phòng ban" — thể hiện tổng giờ OT phát sinh riêng mỗi tuần (không cộng dồn) của từng phòng ban, giúp thấy rõ tuần nào tăng/giảm.
Tên nhân viên trên mọi biểu đồ trong toàn app hiển thị theo dạng "Mã NV - Tên" (ví dụ: NV0123 - Nguyễn Văn A) để dễ tra cứu, tránh nhầm lẫn giữa các NV trùng tên.
Mỗi ngày (có 5 phút ân hạn):
Số phút trễ = max(0, Giờ vào − 8:05)
Vào trước hoặc đúng 8:05 sáng → không tính trễ (khoảng 8:00-8:05 là thời gian ân hạn). Vào sau 8:05 mới bắt đầu tính phút trễ.
Dữ liệu lấy tự động từ file chấm công In/Out đã upload ở mục OT (không cần upload riêng) — chỉ tính cho 6 phòng ban được phép theo dõi đi trễ: S-AD, S-AZ, S-PD, S-PU, S-QC, S-ED.
Chia 2 mốc:
| Mốc | Điều kiện | Ý nghĩa |
|---|---|---|
| Mốc 1 | < 15 phút | Đi trễ nhẹ — phổ biến nhất (NV thường chỉ trễ 5–10p) |
| Mốc 2 | ≥ 30 phút | Cần xin phép quản lý / evident — tô đỏ + icon nhấp nháy |
Khoảng 15–29 phút không thuộc mốc nào (ít gặp), chỉ được cộng vào Tổng số lần / Tổng phút chung — không hiển thị thành cột riêng. Số lần và tổng phút được tính riêng cho từng mốc, sau đó mới cộng lại thành Tổng.
Bảng chi tiết đi trễ hiển thị theo kiểu liệt kê: mỗi NV 1 dòng, cột "Ngày đi trễ" ghi CHÍNH XÁC những ngày NV đó đi trễ kèm giờ vào thực tế (vd "28/06, 8:03"), không hiển thị cả lịch tháng. Ngày trễ ≥30 phút được tô đỏ đậm để dễ nhận biết. Cột "Tổng lượt"/"Tổng phút" đặt sau cột ngày đi trễ. Áp dụng cho cả tab Theo tháng và Theo quý (tab Quý gộp dữ liệu 3 tháng, ghi rõ tháng nào khi hover vào từng ngày).
Các biểu đồ tổng hợp (số lần/tổng phút theo phòng ban) vẫn chia theo 2 mốc Mốc 1 (<15p) / Mốc 2 (≥30p) để dễ so sánh trực quan giữa các phòng ban — riêng bảng chi tiết từng NV thì không cần chia mốc nữa vì đã thấy rõ từng ngày cụ thể.
Biểu đồ "Top NV đi trễ nhiều nhất" ưu tiên hiển thị Mốc 1 (<15p) làm phần chính của cột (vì đây là tình trạng phổ biến nhất), phần Mốc 2 xếp chồng phía trên bằng màu đỏ để dễ nhận biết các trường hợp cần xin phép.
Mục Đi trễ có 2 tab: Theo tháng (chi tiết từng tháng đang chọn) và Theo Quý (tổng hợp 3 tháng/quý theo từng phòng ban, 2 mốc) — tương tự cách xem theo Tuần/Tháng/Quý ở mục So sánh OT.
WLB = (Ngày nghỉ (off) tích luỹ ÷ Giờ OT tích luỹ) × 100%
Tỷ lệ % càng cao nghĩa là số ngày nghỉ tương xứng với giờ OT đã làm — cân bằng tốt. Tỷ lệ % càng thấp (nghỉ ít so với OT nhiều) là dấu hiệu mất cân bằng.
| Tỷ lệ % | Kết quả |
|---|---|
| > 10% | Đạt |
| ≤ 10% | Không đạt |
Theo tháng: tính trực tiếp bằng dữ liệu Off Day + OT của đúng tháng đang chọn.
Theo quý: cộng dồn 3 tháng liên tiếp, chồng lấp 1 tháng giữa các quý — không phải quý lịch chuẩn (Jan-Mar/Apr-Jun...). Cụ thể: Quý 1 = tháng 1+2+3, Quý 2 = tháng 3+4+5, Quý 3 = tháng 5+6+7... (tháng cuối của quý trước = tháng đầu của quý sau).
Dữ liệu Off Day cần được upload riêng ở mục Cài đặt → Upload file Off Day (khác với file chấm công OT) — WLB chỉ tính được cho tháng nào đã có cả 2 nguồn dữ liệu (OT + Off Day).