| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Attendances (hr_attendance)
• Time Off (hr_holidays) • Employees (hr) • Discuss (mail) • Calendar (calendar) |
| Lines of code | 8707 |
| Technical Name |
dotbd_hr_zk_attendance_suite |
| License | OPL-1 |
| Website | https://dotbdsolutions.com |
| Versions | 17.0 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Attendances (hr_attendance)
• Time Off (hr_holidays) • Employees (hr) • Discuss (mail) • Calendar (calendar) |
| Lines of code | 8707 |
| Technical Name |
dotbd_hr_zk_attendance_suite |
| License | OPL-1 |
| Website | https://dotbdsolutions.com |
| Versions | 17.0 18.0 19.0 |
ZKteco HR Attendance Suite
Complete Biometric Integration (Enhanced)
Or copy link: https://youtu.be/wx5P2C8AFA0
Transform Your Attendance Management
The most comprehensive attendance management solution for Odoo 18, featuring seamless ZKteco biometric device integration, ADMS Cloud Push Protocol, real-time live capture, device health monitoring, LCD message display, audio feedback, door access control, powerful analytics dashboard, intelligent anomaly detection, and enterprise-grade reporting capabilities.
Why Choose This Suite?
Biometric Integration
Connect unlimited ZKteco devices with face & fingerprint recognition
Real-Time Live Capture
Instant attendance capture as events happen - no polling delays!
Device Health Monitoring
Track firmware, storage, network, and capacity in real-time
LCD Message Display
Personalized welcome/goodbye messages on device screen
Audio Feedback
Custom sounds for check-in/out and errors (55+ voices)
Door Access Control
Unlock doors remotely with configurable duration
User Sync to Device
One-click employee enrollment from Odoo to biometric device
4-Tier Security Model
Admin, Manager, Officer, Employee role-based access control
Auto Mode
Intelligent check-in/check-out that prevents HR configuration mistakes
Three Powerful Connection Modes
Choose the perfect connection strategy for your deployment architecture.
Direct Mode (PyZK)
Best for local networks or VPN connections where Odoo can directly reach the device IP.
- 100% hardware control
- Real-time Live Capture
- LCD & Voice messages
- Door access control
uFace 202, uFace 800, K40, ZK4500, IN01, TX628, MB20, and any standard ZKteco device with Port 4370.
Cloud Mode (ADMS)
Best for SaaS/Cloud Odoo instances. The device pushes data to Odoo over HTTP(S). No port forwarding needed!
- Perfect for remote sites
- Bypass firewalls easily
- Auto-registers devices
- Remote Fingerprint Enrollment
uFace 800 Plus, K40 Pro, Silk104, SpeedFace, ProCapture, F22, and any device with ADMS firmware.
Hybrid Mode
The ultimate flexibilty. Uses ADMS for reliable attendance push, and PyZK for deep hardware control.
- Our Unique Offering!
- Best of both worlds
- Automatic attendance sync
- Full hardware capabilities
Devices equipped with BOTH an ethernet/Wi-Fi interface and the ADMS firmare (e.g., F22, SpeedFace V5L).
Four Intelligent Attendance Modes
Choose how your module processes each punch. Configurable per device — mix and match across your organization.
Traditional Mode
Uses the device's punch type directly.
- ✅ Punch type 0 = Check-in
- ✅ Punch type 1 = Check-out
- ⚠️ Device must be configured correctly
- 📝 Multiple records per day possible
Auto Mode
Ignores device punch type. Auto-alternates.
- ✅ 1st punch → Check-in
- ✅ 2nd punch → Check-out
- ✅ 3rd punch → Check-in again
- 🛡️ Prevents HR mistakes
Auto Per Day NEW
One attendance record per employee per day.
- ✅ First punch of day = Check-in
- ✅ Last punch of day = Check-out
- ✅ Middle punches update check-out
- 🔄 Auto-closes missed check-outs
08:55 → Check-in
12:00 → Check-out updated
13:00 → Check-out updated
17:30 → Final check-out
Traditional Per Day NEW
Device punch type respected, but max one in/out per day.
- ✅ Only first check-in counts
- ✅ Only first check-out counts
- 🚫 Duplicate punches ignored
- 🔄 Auto-closes missed check-outs
🛡️ Smart Edge Case Handling (Per-Day Modes)
Module auto-closes yesterday's record at 23:59:59, then creates today's new check-in normally.
In Auto Per Day, every punch after the first updates the check-out. The last punch always wins.
Uses the device's configured timezone to determine "today" — so midnight is always correct for your location.
PyZK Download, Live Capture, and ADMS Cloud Push all support all four attendance modes.
🛡️ Robust Error Logging & Transaction Protection
Enterprise-grade resilience. Every failed punch is logged with the exact reason — your bulk downloads never crash midway through.
Database Savepoint Protection
Each attendance record is processed inside an isolated database savepoint. If one record fails (overlap, invalid timestamp, missing employee), only that record is rolled back — the rest continue processing normally.
- ✅ Downloads 10,000+ records without crashing
- ✅ Bad records are skipped, not fatal
- ✅ Works for both PyZK & ADMS modes
- ✅ Cron jobs complete even with errors
Detailed Error Logs in UI
Every failed record is logged to the Device Logs screen with the exact error message. Admins can see at a glance why a punch failed and take corrective action.
- 📌 Employee ID, timestamp, and error reason logged
- 📌 Color-coded status: ✅ Success, ⚠️ Warning, ❌ Failed
- 📌 Searchable and filterable by device, date, status
- 📌 Download statistics: found, new, duplicates, failed
⚠️ Common Reasons a Punch May Fail (All Auto-Logged)
Employee already has an active shift covering the punch timestamp. Odoo rejects duplicate overlap.
Device sent a corrupted or impossible date (e.g. Jan 1, 1970 after a power reset).
Employee was removed from Odoo but still punches on the biometric device.
Device user ID not linked to any Odoo employee. Logged as a warning for admin review.
Quick Setup Guide
Get your ZKTeco devices connected in minutes. Choose the method that matches your network.
🔌 Direct Mode (PyZK) Setup
For local network / VPN deployments-
Install the PyZK library on your Odoo server:
pip3 install pyzk
- Find the device IP: On the device menu, go to COMM → Ethernet → IP Address.
- In Odoo, go to Attendances → ZK Devices → Create.
-
Fill in:
- Name: e.g. "Main Entrance"
- IP Address: The device IP (e.g. 192.168.1.201)
- Port: 4370 (default)
- Connection Mode: Direct (PyZK)
- Attendance Mode: Choose your preferred mode
- Click "Test Connection". If successful ✅, you're ready!
- Map employees: Set each employee's ZK Device User ID in their HR profile (must match the ID on the device).
- Click "Download Attendance" to fetch records, or enable the Scheduled Action for automatic downloads.
☁️ Cloud Mode (ADMS) Setup
For Odoo.sh, cloud hosting, or remote sites-
Ensure your Odoo is accessible via a public URL
(e.g.
https://mycompany.odoo.com). -
On the ZKTeco device, go to COMM → Cloud Server Setting:
- Enable: Yes
- Server Address: your-odoo-domain.com
- Server Port: 443 (HTTPS) or 80 (HTTP)
- Restart the device. It will automatically connect to Odoo and register itself.
- In Odoo, go to Attendances → ZK Devices. You'll see the device auto-created with its serial number.
-
Configure the device record:
- Connection Mode: Cloud (ADMS) or Hybrid
- Attendance Mode: Choose your preferred mode
- Map employees: Set each employee's ZK Device User ID to match the device.
- Done! 🎉 Attendance is pushed automatically in real-time whenever an employee punches.
⚡ Hybrid Mode — Best of Both Worlds
Want automatic attendance push (ADMS) plus hardware control like LCD messages, voice feedback, and door unlock (PyZK)? Set Connection Mode = Hybrid. The device pushes data via ADMS, while Odoo uses PyZK for hardware features. Requires both network paths to be available.
Remote Fingerprint Enrollment (ADMS)
Enroll employee fingerprints directly from Odoo without touching the device menu!
- Go to the Employee Profile and set their ZK Device User ID.
- Go to the device form and click Sync Users (ADMS).
- Back on the Employee profile, click Enroll Fingerprint (ADMS).
- Select the finger index and click Enroll.
- The device screen will ask the employee to place their finger 3 times. The template is saved to Odoo automatically!
Everything is managed centrally from Odoo. Command is queued instantly.
What's NEW in v18.0.4.0.0
Major reliability upgrade with device operation logging, live capture logging, and critical bug fixes!
Device Operation Logs
NEW- Download Logs: Track every attendance download with detailed statistics
- Live Capture Logs: Session start/stop, event counts, errors
- Smart Button: View all logs per device from the device form
- Status Tracking: Success, Warning, and Failed status for every operation
- Performance Metrics: Duration, records found/new/duplicate/failed per operation
Raw Punch Data Viewer
NEW- Biometric Punch Records: View all raw punches from devices
- Device Tracking: Each punch linked to source device
- SQL Unique Constraint: Prevents duplicate records at database level
- Filters: By date, employee, punch type, processed status
Live Capture Fixes
FIXED- Thread-safe error handling (no more silent crashes)
- Timezone conversion (Asia/Dhaka to UTC)
- Duplicate punch prevention
- Session logging with event counters
Download Improvements
IMPROVED- Per-record error handling (one bad record won't stop the batch)
- User lookup dict for faster matching
- Detailed operation log for every download
- Auto-close stale attendance (>24h open)
Other Fixes & Improvements
FIXED- Settings boolean bug fixed (no manual set/get)
- Leave attendance category support
- Late check-in ValueError handling
- Conditional payroll loading via post_init_hook
v18.0.3.0.0 Features - 100% PyZK Implementation
Real-Time Live Capture
- Instant Attendance: Capture events in real-time
- No Polling Delays: Zero lag between device punch and Odoo
- Background Processing: Thread-safe worker
- Live Event Counter: Track events captured today
Device Health Monitoring
- Firmware Information: Version, serial, platform
- Storage Monitoring: User, fingerprint, record capacity
- Network Information: IP, subnet, gateway
- Device Status: Online/Offline detection
LCD Message Display
- Welcome/Goodbye Messages
- Employee Names Display
- Test LCD Feature
Audio Feedback
- 55+ Voice Options
- Check-in/out Sounds
- Error Alerts
Door Access Control
- Remote Unlock
- Configurable Duration
- Lock State Check
How to Give User Permissions
Follow these steps to assign attendance permissions to users:
- Go to Settings
- Scroll down to the bottom
- Click on "Activate the developer mode"
- Go to Settings → Users & Companies → Users
- Or search for "Users" in the top search bar
- Click on the user name
- Click "Edit" button
- Find the section "ZK Attendance"
- Select the appropriate permission level
Administrator
Full system access, configure devices, manage all data
Manager
Configure devices, approve penalties, access all records
Officer
View all attendance, generate reports, read-only devices
Employee
View own attendance records only
Core Features
🔐 Advanced Biometric Integration
- Multi-device support (uFace 202, 800, K40, ZK4500)
- Face & fingerprint recognition
- Real-Time Live Capture
- Device Health Monitoring
- Automatic sync with configurable intervals
📊 Real-time Analytics Dashboard
- Interactive Chart.js visualizations
- Smart date filters (Today/Week/Month/Year)
- Live attendance metrics & KPIs
- Department analytics
- Export capabilities
🔍 Intelligent Anomaly Detection
- Missing check-in/out detection
- Duplicate punch identification
- Attendance violation tracking
- Automated categorization
- Issue resolution workflow
⏰ Late Check-in Management
- Configurable grace periods
- Automatic penalty calculation
- 4-state approval workflow
- Payroll integration
- Email notifications
What's New in This Version
🕒 Intelligent Time Sync & Auto-Correction
- Auto-Sync Before Download: Device clock is automatically checked and corrected before every attendance download — manual or cron
- Drift Detection: Detects clock drift >30 seconds and auto-corrects — no manual intervention needed
- Cron-Safe Timezone: Stores effective timezone on device record — cron jobs no longer depend on user timezone
- Flexible Options: Sync using Odoo User Time, Server UTC, Custom Timezone, or Manual override
- Live Capture Ready: Auto-sync also runs before live capture starts
- Visible Status: "Current Device TZ" field shows which timezone the device is running in
🛡️ Identity Protection
- Safe Sync Topology: Protects existing face/fingerprint data during sync
- Ghost Prevention: Stops cross-assignment of employee IDs
- Active Tracking: Logs unmapped device users into Odoo for HR review
Compatible ZKTeco Devices
* Any other ZKTeco device supporting TCP/IP and Standalone SDK Protocol is also compatible.
👤 Face Recognition
- uFace Series: uFace 202, 302, 402, 602, 800
- VF Series: VF300, VF350, VF380
- ProFace Series: ProFace X, ProFace Plus
- SpeedFace: V5L, H5, M4
- FacePass: FacePass 7
- MultiBio: 700, 800
👆 Fingerprint Terminals
- F Series: F16, F18, F19, F21, F22
- K Series: K14, K20, K28, K30, K40, K50, K60
- iClock: 260, 360, 560, 680, 700, 880, 990
- MA Series: MA300, MA500
- MB Series: MB10, MB160, MB200, MB360, MB460
- ZK Basic: ZK4500, ZK9500
💳 Card & Access Control
- UA Series: UA100, UA200, UA300, UA400, UA760
- U Series: U100, U160, U300, U350, U650
- Hybrid: X628, X990, G1, G2, G3, SilkID
- C3 Panels: C3-100, C3-200, C3-400
- inBio: inBio160, inBio260, inBio460
🔌 Connection Requirements
- Device must support TCP/IP
- Using Standalone SDK Protocol
- LAN: Same network connection
- VPN/Static IP: For remote locations
Getting Started Guide
🌐 Professional Support
Get expert assistance from the Dot BD Solutions Limited team
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module