User Manual - HR Attendance Fingerspot¶
Modul: HR Attendance Fingerspot Versi: 18.0.1.3.1 Odoo: Community Edition 18
Daftar Isi¶
- Pendahuluan
- Hak Akses User
- Setup Awal
- Konfigurasi Mesin
- Mapping Employee ke PIN
- Pull Data Attendance
- Sync Attendance
- Webhook (Real-time Data)
- Menu Attendance
- Menu Raw Attlog
- Menu Webhook Logs
- Menu Sync Logs
- Koreksi Manual oleh Admin
- Cron Job (Auto Pull & Sync)
- Tracking / Audit Log
- Troubleshooting
1. Pendahuluan¶
Modul ini mengintegrasikan mesin absensi Fingerspot dengan Odoo melalui Fingerspot Cloud API. Data absensi ditarik dari cloud, disimpan di tabel raw, kemudian diproses menjadi data attendance valid (check-in/check-out per hari per karyawan).
Alur Data¶
Fingerspot Cloud API Fingerspot Device
| |
| [Pull Attlog] | [Webhook - real-time]
v v
Raw Attlog (tabel temporary) ←────┘
- Semua data scan mentah
- Bisa ratusan record/hari
|
| [Sync Attendance]
| (hanya PIN yang sudah di-link ke employee)
v
Attendance (tabel valid) → Sync Log (audit trail)
- 1 record per karyawan per hari
- Check In = scan paling AWAL (MIN) di hari itu
- Check Out = scan paling AKHIR (MAX) di hari itu
- Jika hanya 1 scan → Check In = Check Out
- Total Hours otomatis dihitung
Data bisa masuk melalui 2 jalur: 1. Pull - tarik data historis dari Fingerspot Cloud API (maks 2 hari per request) 2. Webhook - terima data real-time langsung dari mesin Fingerspot
2. Hak Akses User¶
Modul ini memiliki 3 level akses:
| Level | Cara Dapat | Attendance | Machine & Raw Attlog | Edit/Koreksi |
|---|---|---|---|---|
| Own Reader | Otomatis (semua internal user) | Lihat record sendiri saja | Tidak bisa akses | Tidak |
| Readonly | Set manual di Settings | Lihat semua record | Tidak bisa akses | Tidak |
| Administrator | Set manual di Settings | Lihat semua, full akses | Full akses | Ya |
Cara Set Hak Akses¶
- Masuk Settings > Users & Companies > Users
- Klik user yang ingin diatur
- Scroll ke bagian Fingerspot
- Pilih level: Readonly / Administrator
- Klik Save
Catatan: Semua internal user secara otomatis mendapat akses "Own Reader" — bisa melihat data attendance miliknya sendiri tanpa perlu set permission apapun. Ini sama seperti behavior default modul hr_attendance bawaan Odoo.
3. Setup Awal¶
Prasyarat¶
- Akun Fingerspot Developer (https://developer.fingerspot.io)
- Cloud ID mesin (didapat dari mesin Fingerspot yang sudah terdaftar di cloud)
- API Token (Bearer token dari akun developer Fingerspot)
Langkah Install¶
- Copy folder modul
hr_attendance_fingerspotke folder addons Odoo - Restart Odoo server
- Masuk Odoo > Apps > hapus filter "Apps" > cari "fingerspot"
- Klik Install
4. Konfigurasi Mesin¶
Menambah Mesin Baru¶
- Masuk menu Fingerspot > Machines
- Klik New
- Isi field berikut:
| Field | Keterangan | Contoh |
|---|---|---|
| Machine Name | Nama identitas mesin | Mesin Lantai 1 |
| Cloud ID | Cloud ID mesin Fingerspot | XXXXXXXXXXXXXXXX |
| API Token | Bearer token dari Fingerspot | YOUR_API_TOKEN |
| API URL | URL API Fingerspot (sudah terisi default) | https://developer.fingerspot.io |
| Webhook URL | URL webhook untuk mesin (otomatis, bisa di-copy) | http://your-server/fingerspot/webhook |
- Klik Save
- Copy Webhook URL dan set di dashboard Fingerspot Cloud (lihat bagian Webhook)
Tombol Aksi di Form Mesin¶
| Tombol | Fungsi |
|---|---|
| Pull Attlog | Tarik data scan mentah dari Fingerspot ke tabel Raw Attlog |
| Sync Attendance | Buka wizard sync — proses data raw menjadi attendance valid |
| Pull & Sync | Buka wizard — Pull lalu Sync dalam satu langkah (dengan pilihan tanggal) |
| Get Device Info | Ambil informasi mesin, hasilnya tampil di tab Notes (auto-refresh) |
| Get All PINs | Ambil daftar semua PIN user di mesin, hasilnya di tab Notes (auto-refresh) |
Smart Button¶
| Button | Keterangan |
|---|---|
| Raw Logs (N) | Klik untuk melihat semua data scan mentah dari mesin ini |
| Attendances (N) | Klik untuk melihat data attendance valid dari mesin ini |
| Webhooks (N) | Klik untuk melihat log webhook yang diterima dari mesin ini |
| Sync Logs (N) | Klik untuk melihat riwayat eksekusi sync dari mesin ini |
5. Mapping Employee ke PIN¶
Agar data attendance ter-sync ke karyawan, PIN di mesin Fingerspot harus di-mapping ke employee. Sync hanya memproses PIN yang sudah di-link ke employee — PIN tanpa employee akan di-skip (data raw tetap tersimpan untuk sync ulang nanti).
Cara Setting¶
- Masuk Employees > [pilih karyawan]
- Klik tab Fingerspot
- Isi field Fingerspot PIN dengan nomor PIN karyawan di mesin
- Klik Save
Penting: PIN harus sama persis dengan yang terdaftar di mesin Fingerspot. Gunakan tombol Get All PINs di form mesin untuk melihat daftar PIN yang tersedia.
Tips¶
- Jika belum tahu PIN karyawan, buka form Mesin > klik Get All PINs > lihat daftar di tab Notes
- Satu PIN hanya boleh di-assign ke satu karyawan
- Setelah PIN di-link ke employee, jalankan Sync Attendance untuk memproses data raw yang sebelumnya di-skip
6. Pull Data Attendance¶
Pull adalah proses menarik data scan mentah dari Fingerspot Cloud API ke tabel Raw Attlog.
Pull Manual¶
- Masuk Fingerspot > Machines
- Buka form mesin yang ingin di-pull
- Klik tombol Pull Attlog
- Sistem akan menarik data dari tanggal Last Pull Date sampai hari ini
- Notifikasi muncul: "X raw attendance records pulled"
Catatan¶
- Pull pertama kali: data ditarik untuk hari ini saja
- Pull berikutnya: data ditarik dari tanggal terakhir pull
- Data duplikat otomatis di-skip (berdasarkan kombinasi machine + pin + scan_date)
- Field Last Pull Date di form mesin akan ter-update otomatis
- API Fingerspot membatasi maksimal 2 hari per request — sistem otomatis membagi (chunk) periode panjang menjadi bagian-bagian 2 hari
7. Sync Attendance¶
Sync adalah proses mengolah data Raw Attlog menjadi data Attendance valid.
Logika Sync¶
Untuk setiap karyawan (PIN) per hari: - Check In = waktu scan paling awal (MIN) di hari tersebut - Check Out = waktu scan paling akhir (MAX) di hari tersebut - Jika hanya ada 1 scan di hari itu → Check In = Check Out, Worked Hours = 0:00 - Total Hours = selisih Check Out - Check In (otomatis dihitung)
Syarat Sync¶
- PIN harus sudah di-link ke employee (via Fingerspot PIN di form employee)
- PIN tanpa employee akan di-skip — data raw tetap tersimpan (is_synced = False)
- Setelah PIN di-link, jalankan sync ulang dan data akan terproses
Sync Manual (via Wizard)¶
- Masuk Fingerspot > Machines
- Buka form mesin
- Klik tombol Sync Attendance
- Popup wizard muncul dengan:
- Date From — default: tanggal 1 bulan ini
- Date To — default: hari ini
- Ubah periode jika perlu, lalu klik Sync Now
- Wizard menampilkan hasil:
- Banner hijau jika sukses, kuning jika ada error
- Synced — jumlah record yang berhasil di-sync
- Errors — jumlah record yang gagal
- Error Details — detail error per PIN/tanggal (jika ada)
Pull & Sync Sekaligus¶
- Klik tombol Pull & Sync di form mesin
- Wizard muncul dengan pilihan tanggal (Date From / Date To)
- Klik Pull & Sync Now
- Wizard menampilkan hasil:
- Pulled — jumlah raw record yang ditarik
- Synced — jumlah record yang berhasil di-sync
- Errors — jumlah record yang gagal
Penanganan Error Saat Sync¶
- Jika satu record gagal (misal data corrupt), record lain tetap diproses
- Record yang gagal di-skip dan dilaporkan di Error Details
- Record yang gagal tidak ditandai sebagai synced, sehingga bisa di-retry
Catatan¶
- Hanya data raw yang belum di-sync yang akan diproses
- Data raw yang sudah di-sync ditandai dengan flag Synced = True
- Jika ada data raw baru untuk tanggal yang sudah ada attendance-nya, sistem akan update jika ditemukan MIN lebih awal atau MAX lebih akhir
- Record yang sudah dikoreksi manual (Manually Corrected = True) tidak akan di-overwrite oleh sync
- Setiap eksekusi sync otomatis tercatat di Sync Log (lihat bagian Sync Logs)
8. Webhook (Real-time Data)¶
Selain Pull (tarik data dari cloud), modul ini juga mendukung webhook untuk menerima data secara real-time langsung dari mesin Fingerspot.
Cara Kerja Webhook¶
- Mesin Fingerspot mengirim data scan ke Odoo via HTTP POST
- Data diterima di endpoint
/fingerspot/webhook - Data otomatis disimpan ke Raw Attlog dan di-log ke Webhook Log
Setup Webhook¶
- Buka form mesin di Fingerspot > Machines
- Copy Webhook URL (klik icon copy di sebelah field)
- Login ke Fingerspot Cloud Dashboard (developer.fingerspot.io)
- Set URL webhook di pengaturan mesin dengan URL yang di-copy
- Selesai — data akan masuk otomatis setiap ada scan di mesin
Tipe Webhook yang Didukung¶
| Tipe | Keterangan |
|---|---|
| attlog | Data scan kehadiran (otomatis masuk ke Raw Attlog) |
| get_userid_list | Daftar user ID dari mesin |
| get_userinfo | Info detail user dari mesin |
Catatan Penting¶
- Webhook URL harus bisa diakses dari internet (public URL)
- Jika Odoo diakses via reverse proxy, pastikan path
/fingerspot/webhookdi-forward dengan benar - Untuk setup multi-database, pastikan
dbfilterdikonfigurasi diodoo.confagar Odoo tahu database mana yang dituju - Semua data webhook yang masuk tercatat di Webhook Logs untuk audit trail
9. Menu Attendance¶
Menu Fingerspot > Attendance menampilkan data attendance yang sudah divalidasi. Tampilannya mengikuti style default modul Attendance Odoo.
Kolom Utama¶
| Kolom | Keterangan |
|---|---|
| Employee | Nama karyawan dengan avatar |
| Check In | Waktu masuk (scan paling awal) |
| Check Out | Waktu pulang (scan paling akhir) |
| Worked Hours | Durasi kerja (jam) |
Kolom Optional (klik icon kolom untuk menampilkan)¶
| Kolom | Keterangan |
|---|---|
| Department | Departemen karyawan |
| Job Position | Posisi/jabatan |
| Manager | Atasan langsung |
| PIN | Nomor PIN di mesin |
| Date | Tanggal kehadiran |
| Machine | Mesin asal data |
| Status | Not Synced / Synced |
Pivot View¶
Tersedia pivot view untuk analisis attendance: - Baris: Department > Employee - Kolom: Bulan - Measure: Total Hours
Graph View¶
Tersedia graph view (bar chart): - Sumbu X: Department - Measure: Total Hours
Filter & Group By¶
Filter: - Today - data hari ini - This Week - data minggu ini - This Month - data bulan ini - No Check Out - karyawan yang belum check out - Synced / Not Synced - berdasarkan status
Group By: - Employee - kelompokkan per karyawan - Department - kelompokkan per departemen - Manager - kelompokkan per atasan - Date - kelompokkan per tanggal - Machine - kelompokkan per mesin - Status - kelompokkan per status sync
10. Menu Raw Attlog¶
Menu Fingerspot > Raw Attlog menampilkan data scan mentah. Menu ini hanya bisa diakses oleh Administrator.
Kolom yang Ditampilkan¶
| Kolom | Keterangan |
|---|---|
| PIN | Nomor PIN di mesin |
| Employee | Nama karyawan (auto-link) |
| Scan Date | Waktu scan persis dari mesin |
| Verify Mode | Kode metode verifikasi dari mesin |
| Status Scan | Kode status scan dari mesin |
| Machine | Nama mesin asal |
| Synced | Apakah sudah diproses ke attendance |
Kegunaan¶
- Audit trail - melihat semua data scan asli dari mesin
- Debugging - cek jika ada data yang tidak ter-sync dengan benar
- Verifikasi - bandingkan data raw dengan data attendance
11. Menu Webhook Logs¶
Menu Fingerspot > Webhook Logs (atau via smart button Webhooks di form mesin) menampilkan semua data yang diterima via webhook. Menu ini hanya bisa diakses oleh Administrator.
Kolom yang Ditampilkan¶
| Kolom | Keterangan |
|---|---|
| Machine | Mesin asal data (berdasarkan cloud_id) |
| Webhook Type | Tipe data: attlog, get_userid_list, get_userinfo, dll |
| Raw Data | Data JSON mentah yang diterima |
| Created on | Waktu data diterima |
Kegunaan¶
- Audit trail - bukti semua data yang masuk via webhook
- Debugging - cek jika data webhook tidak terproses dengan benar
- Monitoring - pastikan mesin mengirim data secara rutin
12. Menu Sync Logs¶
Menu Fingerspot > Sync Logs (atau via smart button Sync Logs di form mesin) mencatat setiap eksekusi sync. Menu ini hanya bisa diakses oleh Administrator.
Kolom yang Ditampilkan¶
| Kolom | Keterangan |
|---|---|
| Date | Waktu sync dijalankan |
| Machine | Mesin yang di-sync |
| Date From | Awal periode sync |
| Date To | Akhir periode sync |
| Synced | Jumlah record yang berhasil di-sync |
| Errors | Jumlah record yang gagal |
| Triggered By | Siapa yang menjalankan: nama user atau "Cron" |
Filter & Group By¶
Filter: - Has Errors - tampilkan hanya sync yang ada error - Today - sync hari ini
Group By: - Machine - kelompokkan per mesin - Triggered By - kelompokkan per pemicu (user/cron)
Kegunaan¶
- Monitoring - pantau apakah sync berjalan lancar setiap hari
- Troubleshooting - identifikasi sync yang gagal dan lihat detail error
- Audit - siapa dan kapan sync dijalankan
13. Koreksi Manual oleh Admin¶
Admin dapat mengedit data attendance untuk keperluan koreksi. Record yang sudah dikoreksi dilindungi dari overwrite oleh sync berikutnya.
Cara Koreksi¶
- Masuk Fingerspot > Attendance
- Buka record yang ingin dikoreksi
- Edit field yang perlu diubah:
- Check In - koreksi waktu masuk
- Check Out - koreksi waktu pulang
- Klik Save
- Field Manually Corrected otomatis tercentang
Proteksi Koreksi Manual¶
- Saat admin mengedit Check In atau Check Out, field Manually Corrected otomatis aktif
- Record dengan Manually Corrected = True tidak akan di-overwrite oleh sync berikutnya
- Jika ingin record kembali mengikuti data dari mesin, uncheck Manually Corrected lalu jalankan sync ulang
Contoh Case¶
| Situasi | Yang Terjadi |
|---|---|
| Karyawan checkin lalu dinas luar, tidak kembali | Check In = Check Out = waktu scan. Admin koreksi Check Out sesuai jam pulang |
| Karyawan langsung ke client, pulang ke kantor lalu checkout | Check In = Check Out = waktu scan. Admin koreksi Check In sesuai jam berangkat |
| Karyawan hanya 1x scan (lupa checkout) | Check In = Check Out, Worked Hours = 0:00. Admin edit Check Out |
Yang Perlu Diperhatikan¶
- Setiap perubahan akan tercatat di log (lihat bagian Tracking)
- Hanya user dengan level Administrator yang bisa mengedit
- Perubahan pada Check In / Check Out akan otomatis menghitung ulang Total Hours
- Record yang dikoreksi aman dari overwrite sync
14. Cron Job (Auto Pull & Sync)¶
Modul ini menyediakan scheduled action yang otomatis menjalankan Pull dan Sync.
Konfigurasi Default¶
- Nama: Fingerspot: Pull & Sync Attendance
- Interval: 1x per hari
- Proses: Pull data raw dari semua mesin aktif, lalu sync ke attendance
Cara Mengubah Jadwal¶
- Masuk Settings > Technical > Automation > Scheduled Actions
- Cari "Fingerspot: Pull & Sync Attendance"
- Ubah interval sesuai kebutuhan (misal: setiap 6 jam)
- Klik Save
Catatan¶
- Cron berjalan untuk semua mesin aktif
- Cron hanya sync 2 hari terakhir (kemarin + hari ini) untuk performa optimal
- Untuk sync periode lebih panjang, gunakan wizard Sync Attendance secara manual
- Jika ada mesin yang gagal, error di-log dan mesin lainnya tetap diproses
- Setiap eksekusi cron tercatat di Sync Logs dengan triggered_by = "Cron"
- Cek log error di Settings > Technical > Logging atau di Fingerspot > Sync Logs
15. Tracking / Audit Log¶
Setiap perubahan pada data Attendance dicatat secara otomatis di bagian chatter (log di bawah form).
Field yang Di-track¶
| Field | Keterangan |
|---|---|
| Machine | Perubahan mesin asal |
| PIN | Perubahan PIN |
| Employee | Perubahan mapping karyawan |
| Date | Perubahan tanggal |
| Check In | Perubahan waktu masuk |
| Check Out | Perubahan waktu pulang |
| Status | Perubahan status (Not Synced → Synced) |
| Manually Corrected | Perubahan flag koreksi manual |
Cara Melihat Log¶
- Buka record Attendance
- Scroll ke bawah form, lihat bagian Chatter / Log
- Setiap perubahan tercatat dengan informasi:
- Siapa yang mengubah (user)
- Kapan diubah (tanggal & waktu)
- Apa yang diubah (field lama → field baru)
16. Troubleshooting¶
"Connection to Fingerspot API timed out"¶
- Penyebab: Server Odoo tidak bisa terhubung ke API Fingerspot
- Solusi: Cek koneksi internet server. Pastikan URL API benar
"Fingerspot API error: 401"¶
- Penyebab: API Token tidak valid
- Solusi: Periksa kembali API Token di form mesin. Pastikan token masih aktif di akun Fingerspot developer
"Fingerspot API error: 404"¶
- Penyebab: Endpoint API tidak ditemukan
- Solusi: Pastikan API URL diisi dengan
https://developer.fingerspot.io
Data attendance tidak muncul setelah Pull¶
- Penyebab 1: Data sudah di-pull tapi belum di-sync
-
Solusi: Klik tombol Sync Attendance di form mesin
-
Penyebab 2: PIN belum di-link ke employee
- Solusi: Sync hanya memproses PIN yang sudah ada employee-nya. Link PIN ke employee dulu, lalu sync ulang
Employee tidak ter-link di attendance¶
- Penyebab: Fingerspot PIN belum di-set di employee
- Solusi: Buka form employee > tab Fingerspot > isi PIN > Save. Jalankan sync ulang untuk memproses data raw yang sebelumnya di-skip
Check In = Check Out (Worked Hours 0:00)¶
- Penyebab: Hanya ada 1 scan di hari tersebut (misal hanya checkin atau hanya checkout)
- Solusi: Admin bisa koreksi manual Check In atau Check Out sesuai kondisi sebenarnya. Record akan otomatis dilindungi dari overwrite sync
Koreksi manual ter-overwrite oleh sync¶
- Penyebab: Field "Manually Corrected" tidak tercentang
- Solusi: Ini seharusnya tidak terjadi — field otomatis tercentang saat edit Check In/Check Out. Jika terjadi, centang manual field tersebut
Webhook 404 / data tidak masuk¶
- Penyebab 1: Webhook URL tidak bisa diakses dari internet
-
Solusi: Pastikan server Odoo memiliki public URL atau gunakan reverse proxy
-
Penyebab 2: Multi-database tanpa
dbfilter -
Solusi: Tambahkan
dbfilter = nama_databasediodoo.conf, lalu restart Odoo -
Penyebab 3: URL webhook belum di-set di Fingerspot Cloud
- Solusi: Copy Webhook URL dari form mesin dan paste di dashboard Fingerspot
Cron tidak jalan¶
- Penyebab: Scheduled action tidak aktif atau Odoo cron worker tidak berjalan
- Solusi: Cek di Settings > Technical > Scheduled Actions, pastikan "Fingerspot: Pull & Sync Attendance" dalam status Active
Sync error pada beberapa record¶
- Penyebab: Data corrupt atau PIN tidak valid
- Solusi: Cek detail error di Sync Logs atau di wizard sync. Record yang gagal tidak ditandai synced dan bisa di-retry setelah masalah diperbaiki