Model: attendance_machine_import
Menu: Human Resource → Timesheets → Attendance Machine Imports
Modul Odoo: ssi_attendance_machine, diperluas ssi_attendance_machine_operating_unit dan ssi_attendance_machine_documenso_signing
Import Data Kehadiran Mesin adalah dokumen transaksi untuk mengimport data kehadiran dari mesin fisik. Dokumen ini membaca berkas kehadiran yang diekspor dari mesin, membuat data mentah (raw data), kemudian memproses melalui queue job untuk membuat/memperbarui record kehadiran karyawan (hr.timesheet_attendance).
Format berkas yang dibaca mengikuti CSV Mapping pada Mesin Kehadiran yang dipilih, bukan asumsi tetap. Di Odoo YPII terdapat dua format yang benar-benar dipakai: CSV / Delimited Text (mapping Presensi Cabang YPII Semarang dan Presensi Marsudi Utami (NIK)) serta Excel (mapping Presensi Cabang YPII Bandung).
Setiap baris Import Data diproses satu per satu. Baris yang gagal diproses (kode karyawan tidak terdaftar pada mesin, tidak ada baris check-in yang cocok untuk baris check-out, format datetime tidak sesuai CSV Mapping, dsb.) tidak menggagalkan queue job — baris tersebut ditandai status Error dengan pesan kesalahan tersimpan pada baris. Dokumen baru berpindah otomatis dari Queue To Done ke Done setelah seluruh queue job selesai dan tidak ada lagi baris berstatus Draft atau Error (baris error harus di-Retry hingga berhasil atau di-Ignore terlebih dahulu).
Workflow: Draft → Waiting for Approval → Queue To Done → Done.
Jalur lain: Waiting for Approval → Rejected (ditolak approver), dan Draft / Waiting for Approval / Done → Queue To Cancel → Cancelled (dibatalkan). Dokumen Rejected maupun Cancelled dapat dikembalikan ke Draft lewat tombol Restart.
Nilai teknis status pada basis data (
draft,confirm,reject,queue_done,done,queue_cancel,cancel) berbeda dari label yang tampil di statusbar. Label yang dilihat pengguna adalah Draft, Waiting for Approval, Rejected, Queue To Done, Done, Queue To Cancel, dan Cancelled.
Nomor dokumen import. Terisi / selama dokumen belum mencapai status Done, lalu terbentuk otomatis dari Sequence Template Standard saat dokumen berpindah ke Done (format nyata di Odoo YPII: AMI/2026/000009).
Nilai Default: /
Wajib Diisi: Ya (terisi otomatis)
Dapat Dirubah: Ya, hanya oleh pengguna dalam grup Attendance Machine Import / Validator saat status Draft — lihat Mereset Nomor Dokumen Import Data Kehadiran
Mekanisme Pengisian Otomatis: Terbentuk saat dokumen berpindah ke status Done
Perusahaan pemilik dokumen import.
Nilai Default: Perusahaan pengguna yang membuat dokumen (diisi otomatis)
Wajib Diisi: Ya
Dapat Dirubah: Ya
Mekanisme Pengisian Otomatis: Diisi otomatis dari perusahaan pengguna
Pengguna yang bertanggung jawab atas dokumen import. Field ini menentukan dokumen mana yang terlihat oleh pengguna biasa (record rule Internal Users membatasi tampilan pada dokumen yang Responsible-nya adalah pengguna itu sendiri).
Nilai Default: Pengguna yang membuat dokumen (diisi otomatis)
Wajib Diisi: Ya
Dapat Dirubah: Ya (hanya saat Draft)
Mekanisme Pengisian Otomatis: Diisi otomatis dari pengguna pembuat dokumen
Pengguna yang bertugas mereview dokumen. Berbeda dari approver, kecuali dikonfigurasi sama.
Nilai Default: (kosong)
Wajib Diisi: Tidak
Dapat Dirubah: Ya (hanya saat Draft)
Mekanisme Pengisian Otomatis: N/A
Unit operasional (cabang/sekolah) pemilik dokumen import. Ditambahkan modul ssi_attendance_machine_operating_unit. Field ini menentukan dokumen mana yang terlihat oleh pengguna dalam grup Attendance Machine Import / Operating Unit.
Nilai Default: (kosong)
Wajib Diisi: Tidak
Dapat Dirubah: Ya
Mekanisme Pengisian Otomatis: N/A
Tanggal import data kehadiran. Diisi otomatis dengan tanggal hari ini saat dokumen dibuat, tetapi dapat diubah saat dokumen masih dalam status draft.
Nilai Default: Tanggal hari ini (diisi otomatis)
Wajib Diisi: Ya
Dapat Dirubah: Ya (hanya saat draft)
Mekanisme Pengisian Otomatis: N/A
Referensi ke mesin kehadiran yang berkas datanya akan diimport. Pemilihan mesin menentukan CSV Mapping yang dipakai untuk membaca berkas (termasuk format berkas: CSV / Delimited Text atau Excel) sekaligus daftar karyawan yang terdaftar pada mesin.
Nilai Default: (kosong, harus diisi)
Wajib Diisi: Ya
Dapat Dirubah: Ya (hanya saat draft)
Pembatasan Pilihan: Hanya mesin kehadiran yang aktif
Mekanisme Pengisian Otomatis: N/A
Berkas kehadiran mentah (raw data) yang diekspor dari mesin kehadiran fisik. Format berkas mengikuti CSV Mapping pada Mesin Kehadiran yang dipilih: berkas CSV / teks berdelimiter, atau berkas Excel (.xls/.xlsx).
Nilai Default: (kosong)
Wajib Diisi: Tidak (tetapi tanpa berkas, tombol Load Data tidak menghasilkan baris Import Data apa pun)
Dapat Dirubah: Ya (hanya saat Draft)
Mekanisme Pengisian Otomatis: N/A
Nama berkas yang diupload. Diisi otomatis berdasarkan nama berkas yang dipilih saat upload. Field ini tidak ditampilkan tersendiri pada form; namanya muncul menyertai berkas pada field Attendance File.
Nilai Default: (kosong, diisi otomatis)
Wajib Diisi: Tidak
Dapat Dirubah: Ya (hanya saat Draft)
Mekanisme Pengisian Otomatis: Diisi otomatis saat berkas diupload
SHA-256 hash dari berkas yang diupload. Digunakan sistem untuk menolak import berkas yang sama dua kali.
Field ini tidak ditampilkan pada form Odoo YPII. Pengguna tidak pernah melihat nilainya — yang terlihat hanyalah pesan penolakan bertuliskan "This file has already been imported (see document: …)" saat berkas duplikat diproses.
Nilai Default: (kosong, dihitung otomatis)
Wajib Diisi: Tidak
Dapat Dirubah: Tidak (dihitung otomatis)
Mekanisme Pengisian Otomatis: Dihitung dari isi berkas saat tombol Load Data diklik
Tabel baris data mentah (raw data) yang dibaca dari berkas kehadiran, sekaligus melacak status pemrosesan tiap baris menjadi record kehadiran karyawan. Setiap baris menyimpan satu baris berkas sumber dalam format JSON.
Tabel ini hanya-baca: baris tidak dapat ditambah, diedit langsung, atau dihapus dari tabel. Baris hanya dapat dibuat lewat tombol Load Data, dan hanya dapat diubah lewat tombol per baris (Retry, Edit Data, Ignore) yang muncul saat baris berstatus Draft atau Error.
Nilai Default: (kosong)
Wajib Diisi: Tidak
Dapat Dirubah: Tidak langsung (lihat penjelasan di atas)
Mekanisme Pengisian Otomatis: Diisi otomatis saat tombol Load Data diklik, dibaca dari Attendance File
Setiap baris pada tabel Import Data memiliki field berikut:
Nomor urut baris, mengikuti urutan baris pada berkas kehadiran sumber.
Nilai Default: N/A
Wajib Diisi: Ya
Dapat Dirubah: Tidak
Data mentah satu baris berkas kehadiran dalam format JSON, ditampilkan dengan widget JSON viewer.
Nilai Default: (kosong)
Wajib Diisi: Tidak
Dapat Dirubah: Ya, hanya saat baris berstatus Draft atau Error, melalui wizard Edit Data — lihat Memvalidasi Queue Import Data Kehadiran bagian Edit Data — Koreksi Lalu Retry
Mekanisme Pengisian Otomatis: Diisi otomatis saat tombol Load Data diklik
Karyawan yang dipadankan, diturunkan dari timesheet pada record Attendance yang terbentuk dari baris ini.
Nilai Default: (kosong)
Wajib Diisi: Tidak
Dapat Dirubah: Tidak
Mekanisme Pengisian Otomatis: Diisi otomatis mengikuti field Attendance
Referensi ke record hr.timesheet.attendance yang terbentuk/diperbarui dari baris ini.
Nilai Default: (kosong)
Wajib Diisi: Tidak
Dapat Dirubah: Tidak
Mekanisme Pengisian Otomatis: Diisi otomatis saat baris berhasil diproses (status Done)
Status pemrosesan baris. Nilai yang mungkin: Draft (belum diproses), Done (berhasil dikonversi menjadi record kehadiran), Error (gagal diproses — lihat Error Message), atau Ignored (sengaja dikecualikan dari import melalui aksi Ignore).
Nilai Default: Draft
Wajib Diisi: Ya
Dapat Dirubah: Tidak (berubah otomatis melalui pemrosesan queue job, atau aksi Retry/Edit Data/Ignore)
Mekanisme Pengisian Otomatis: Berubah otomatis saat baris diproses, di-Retry, dikoreksi lewat Edit Data (kembali ke Draft), atau di-Ignore
Pesan penyebab kegagalan pemrosesan baris. Terisi otomatis saat baris berstatus Error, dan dikosongkan kembali saat baris di-Retry.
Nilai Default: (kosong)
Wajib Diisi: Tidak
Dapat Dirubah: Tidak
Mekanisme Pengisian Otomatis: Diisi otomatis saat pemrosesan baris gagal
Alasan mengapa baris dikecualikan dari import. Terisi dari field Reason pada wizard Ignore (per baris) atau wizard Ignore All Errors (massal) — bukan diketik langsung pada baris tabel.
Nilai Default: (kosong)
Wajib Diisi: Tidak (wajib diisi di wizard saat melakukan aksi Ignore)
Dapat Dirubah: Tidak langsung — hanya melalui wizard Ignore / Ignore All Errors
Jumlah total baris pada tabel Import Data.
Nilai Default: N/A
Wajib Diisi: N/A
Dapat Dirubah: Tidak
Mekanisme Pengisian Otomatis: Dihitung otomatis dari jumlah baris Import Data
Jumlah baris Import Data yang berhasil dikonversi menjadi record kehadiran (status Done).
Nilai Default: N/A
Wajib Diisi: N/A
Dapat Dirubah: Tidak
Mekanisme Pengisian Otomatis: Dihitung otomatis dari baris berstatus Done
Jumlah baris Import Data yang gagal diproses (status Error). Dokumen tidak dapat berpindah ke status done selama jumlah ini lebih dari nol.
Nilai Default: N/A
Wajib Diisi: N/A
Dapat Dirubah: Tidak
Mekanisme Pengisian Otomatis: Dihitung otomatis dari baris berstatus Error
Jumlah baris Import Data yang dikecualikan dari import (status Ignored).
Nilai Default: N/A
Wajib Diisi: N/A
Dapat Dirubah: Tidak
Mekanisme Pengisian Otomatis: Dihitung otomatis dari baris berstatus Ignored
Jumlah record kehadiran unik yang terbentuk dari dokumen import ini, ditampilkan sebagai smart button di bagian atas form. Baris Import Data yang menunjuk record kehadiran yang sama (mis. baris check-in dan baris check-out pasangannya) dihitung satu kali. Mengklik smart button ini membuka daftar record kehadiran tersebut.
Nilai Default: N/A
Wajib Diisi: N/A
Dapat Dirubah: Tidak
Mekanisme Pengisian Otomatis: Dihitung otomatis dari field Attendance pada baris Import Data
Catatan bebas terkait dokumen import, berada pada tab Note.
Nilai Default: (kosong)
Wajib Diisi: Tidak
Dapat Dirubah: Ya
Mekanisme Pengisian Otomatis: N/A
Status dokumen dalam workflow import, ditampilkan pada statusbar. Nilai yang mungkin: Draft, Waiting for Approval, Rejected, Queue To Done, Done, Queue To Cancel, Cancelled. Statusbar hanya menampilkan empat status jalur utama (Draft, Waiting for Approval, Queue To Done, Done); status lain muncul menggantikan saat dokumen berada di dalamnya.
Nilai Default: Draft
Wajib Diisi: N/A
Dapat Dirubah: Tidak (berubah otomatis melalui workflow)
Mekanisme Pengisian Otomatis: Berubah otomatis melalui aksi workflow
Tombol-tombol pada dokumen ini hanya muncul bila konfigurasi berikut terpasang. Ketiganya sudah ada di Odoo YPII per 2026-08-14.
| Konfigurasi | Record aktif | Akibat bagi pengguna |
|---|---|---|
| Policy Template | Standard (kondisi result=True, selalu cocok) |
Menentukan siapa yang melihat tombol Confirm, Cancel, Restart, Restart Approval Process, dan Reset Document Number |
| Approval Template | Standard (kondisi result = True, Approval by Sequence aktif, satu level approver = grup Attendance Machine Import / Validator) |
Menentukan siapa yang dapat menekan Approve / Reject |
| Sequence Template | Standard | Nomor dokumen terbentuk saat status Done |
Kewenangan per tombol menurut Policy Template Standard:
| Tombol | Grup yang berwenang | Hanya pada status |
|---|---|---|
| Confirm | Attendance Machine Import / User | Draft |
| Approve, Reject | Approver pada Approval Template (grup Attendance Machine Import / Validator) | Waiting for Approval |
| Restart Approval Process | Attendance Machine Import / Validator | Waiting for Approval |
| Cancel | Attendance Machine Import / Validator | Draft, Waiting for Approval, Done |
| Restart | Attendance Machine Import / Validator | Rejected, Cancelled |
| Reset Document Number | Attendance Machine Import / Validator | Draft |
Tombol Load Data, Retry All Errors, Ignore All Errors, Requeue, Recompute Queue Done Result, serta tombol per baris Retry, Edit Data, dan Ignore tidak dijaga policy — cukup hak tulis dari grup Attendance Machine Import / User.
Tab Signature Requests muncul pada form karena modul
ssi_attendance_machine_documenso_signingterpasang, tetapi Approval Template Standard di Odoo YPII tidak memakai Documenso Signing Template. Persetujuan tetap berjalan lewat tombol Approve biasa; tab tersebut tidak dipakai pada alur import kehadiran.
Tiga otomasi sistem berjalan pada dokumen ini dan menjelaskan mengapa dokumen berpindah status tanpa ada tombol yang diklik:
| Otomasi | Pemicu | Yang dilakukan sistem |
|---|---|---|
| Action Recompute Queue Done Result | Setiap penyimpanan dokumen ketika To Done Queue Job Batch State bernilai Finished | Memeriksa ulang hasil queue dan memindahkan dokumen ke Done bila tidak ada lagi baris Draft/Error |
| Action Recompute Queue Cancel Result | Setiap penyimpanan dokumen ketika To Cancel Queue Job Batch State bernilai Finished | Memindahkan dokumen dari Queue To Cancel ke Cancelled |
| Attendance Machine Import: Try Action Done | Sapuan terjadwal, berjalan setiap 10 menit terlepas dari status Job Batch | Memeriksa ulang setiap dokumen berstatus Queue To Done dan memindahkannya ke Done bila tidak ada lagi baris Draft/Error — menjangkau dokumen yang tertahan karena baris hasil Retry berdiri di luar Job Batch atau batch-nya sudah Finished lebih dulu |