vw_attendance_combined → sp_get_attendance_month_V3
| Employee | Late (min) |
1Wed | 2Thu | 3Fri | 4Sat | 5Sun | 6Mon | 7Tue | 8Wed | 9Thu | 10Fri | 11Sat | 12Sun | 13Mon | 14Tue | 15Wed | 16Thu | 17Fri | 18Sat | 19Sun | 20Mon | 21Tue | 22Wed | 23Thu | 24Fri | 25Sat | 26Sun | 27Mon | 28Tue | 29Wed | 30Thu | 31Fri | |||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | In | Out | ||
| Atthavit Mungmai100012 | 74 | 08:55 | 17:41 | 09:21 | 17:55 | 09:25 | 18:20 | – | – | – | – | 08:58 | 18:17 | 08:53 | 18:01 | 08:52 | 17:40 | 09:07 | 17:42 | 08:49 | 18:00 | – | – | – | – | 08:58 | 18:16 | 08:51 | 18:00 | 08:50 | 17:43 | 08:43 | 17:57 | 08:52 | 18:05 | – | – | – | – | 08:58 | 18:15 | 08:50 | 17:56 | 08:55 | 17:58 | – | – | 08:52 | 18:13 | – | – | – | – | 08:42 | 18:18 | – | – | – | – | – | – | 09:21 | 17:59 |
| Veerasak Sanyamuang100013 | 7 | 08:57 | 18:08 | 08:51 | 17:57 | 08:57 | 17:59 | – | – | – | – | AL– | – | AL– | – | 08:48 | 18:10 | 08:57 | 18:09 | 08:49 | 17:41 | – | – | – | – | 08:58 | 18:16 | 08:43 | 17:42 | 08:52 | 18:07 | 08:54 | 18:07 | 08:59 | 18:11 | – | – | – | – | 08:55 | 17:54 | 09:07 | 18:02 | – | – | 08:46 | 18:06 | – | – | – | – | – | – | 08:54 | 18:11 | – | – | – | – | – | – | – | – |
| Sasipimol Sornsirikulpong100014 | 47 | 08:48 | 18:03 | 08:51 | 17:57 | 08:51 | 17:40 | – | – | – | – | 08:42 | 18:20 | 09:22 | 17:59 | 08:42 | 18:14 | 08:47 | 17:36 | 08:48 | 18:10 | – | – | – | – | 08:45 | 18:15 | 08:47 | 17:36 | 08:50 | 18:16 | 08:51 | 18:17 | 08:56 | 18:00 | – | – | – | – | 08:55 | 18:14 | 09:25 | 17:36 | 08:44 | 18:05 | 08:47 | 17:58 | 08:44 | 18:03 | – | – | – | – | 08:50 | 17:38 | – | – | – | – | – | – | 08:46 | 18:10 |
| Phattira Sookcharoen100016 | 110 | 08:57 | 18:07 | 09:29 | 18:15 | 08:51 | 18:09 | – | – | – | – | 08:47 | 17:50 | 09:29 | 18:17 | 08:49 | 18:09 | 08:47 | 18:13 | 08:49 | 18:16 | – | – | – | – | 08:56 | 17:57 | 09:01 | 18:11 | 09:25 | 17:59 | 08:48 | 18:03 | – | – | – | – | – | – | 08:51 | 17:57 | 08:47 | 18:16 | 08:49 | 18:01 | 08:55 | 18:17 | 08:49 | 18:20 | – | – | – | – | 09:26 | 18:03 | – | – | – | – | – | – | 08:48 | 18:13 |
| Maneekhat Atcharaphorn100026 | 61 | 08:54 | 18:18 | 08:43 | 18:05 | 08:53 | 17:56 | – | – | – | – | 09:33 | 18:17 | 08:58 | 18:20 | – | – | 08:55 | 18:05 | 08:58 | 18:04 | – | – | – | – | 08:56 | 18:00 | 08:56 | 18:01 | SL– | – | 08:50 | 17:37 | 08:57 | 18:03 | – | – | – | – | 08:56 | 18:00 | 08:56 | 18:13 | – | – | 08:43 | 17:59 | 08:49 | 18:12 | – | – | – | – | 09:28 | 18:15 | – | – | – | – | – | – | 08:51 | 17:56 |
| Prasopchokchai Arutchaporn100031 | 26 | – | – | 09:08 | 18:00 | 08:42 | 18:16 | – | – | – | – | 08:54 | 18:01 | 08:49 | 18:00 | 09:13 | 18:13 | 09:05 | 18:13 | 08:58 | 17:43 | – | – | – | – | 08:47 | 18:15 | – | – | 08:53 | 17:33 | 08:49 | 17:54 | 08:58 | 18:16 | – | – | – | – | 08:42 | 18:04 | 08:53 | 17:50 | 08:45 | 18:10 | 08:58 | 18:02 | 08:54 | 17:59 | – | – | – | – | 08:47 | 18:16 | – | – | – | – | – | – | 08:48 | 17:58 |
| Nyein Su Su100100 | 92 | 08:55 | 18:07 | 09:05 | 18:05 | 08:47 | 17:58 | – | – | – | – | 09:25 | 17:58 | 08:52 | 18:20 | 08:52 | 18:01 | – | – | 08:48 | 18:20 | – | – | – | – | 09:25 | 18:02 | 09:37 | 18:16 | 08:52 | 18:13 | – | – | 08:43 | 18:17 | – | – | – | – | PL– | – | PL– | – | PL– | – | 08:46 | 18:01 | 08:58 | 17:42 | – | – | – | – | 08:45 | 17:54 | – | – | – | – | – | – | 08:52 | 17:47 |
| Pasunun Arphaphat100144 | 140 | 09:15 | 18:19 | 08:54 | 18:11 | 08:51 | 18:01 | – | – | – | – | 08:54 | 18:11 | 09:30 | 18:11 | 08:51 | 18:12 | 08:52 | 17:35 | 09:28 | 18:08 | – | – | – | – | 08:50 | 18:10 | 08:43 | 18:19 | 08:57 | 18:00 | 08:44 | 18:03 | 08:42 | 18:14 | – | – | – | – | 08:54 | 18:04 | 08:49 | 18:02 | 09:31 | 18:04 | 08:46 | 17:56 | 09:36 | 18:14 | – | – | – | – | 08:51 | 18:12 | – | – | – | – | – | – | 08:57 | 18:20 |
Rule: use the Odoo model where one exists; fall back to the XENHR backend DB (or the biometric machine) only for what Odoo lacks.
| Report field | Source of record | Where it comes from |
|---|---|---|
| Employee name / code | Odoo | hr.employee (name, barcode/registration no. as employee_code) |
| Shift start / end | Odoo | resource.calendar on the employee's working schedule |
| Leave overlays (AL/PL/SL) | Odoo | hr.leave + hr.leave.type (approved leaves in range) |
| Public holidays | Odoo | resource.calendar.leaves (global) — else XENHR holidays |
| App / GPS punches | XENHR | attendance_records — no Odoo equivalent for the GPS-geofence source yet (gap #9) |
| Biometric punches (raw) | Machine | [192.168.67.51].attendance.dbo.Transcantime (enrollnumber, datetimescan) |
| In / Out per day | Derived | MIN / MAX scan per employee-day across the merged set (SP step 2) |
| Employee-code corrections | XENHR | 8 hard-coded remaps in the SP — must move to a mapping table, not stay in SQL |