Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Attendances
  3. Attendance Suite Base v 17.0
  4. Sales Conditions FAQ

Attendance Suite Base

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 17.0 Third Party 38
Download for v 17.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Attendances (hr_attendance)
• Discuss (mail)
• Employees (hr)
Community Apps Dependencies Show
EH HR Compatibility
Lines of code 1510
Technical Name eh_hr_attendance_base
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
Versions 16.0 17.0 18.0 19.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Attendances (hr_attendance)
• Discuss (mail)
• Employees (hr)
Community Apps Dependencies Show
EH HR Compatibility
Lines of code 1510
Technical Name eh_hr_attendance_base
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
Versions 16.0 17.0 18.0 19.0
ERP Heritage · HR Platform
ERP Heritage Attendance Suite

Attendance Suite Base

The shared compliance engine under every ERP Heritage attendance module: biometric consent lifecycle, kiosk device registry, exception log, and an immutable audit trail for Odoo 17 Community.

Free · LGPL-3FreeLGPL-3v1.0.0
Biometric consent lifecycle
Kiosk device registry
Immutable audit trail
Attendance exception log
Daily retention sweeps

Why this module

Attendance Suite Base

Consent first

Consent is a record, not a checkbox

Every face, fingerprint, photo or geolocation capture is gated by an eh.hr.consent row with explicit pending, granted, withdrawn and expired states. The exact consent prose shown to the employee is snapshotted onto the record at grant time, so the audit copy cannot drift if the company default text later changes.

Defensible

An audit trail managers cannot rewrite

Every kiosk event lands in eh.hr.kiosk.event with timestamp, device, employee, confidence and IP. Fields are read-only and no role has write access to the log. Managers and auditors read it; only an admin can purge it on the configured retention horizon. That is a defensible record for a fair-work dispute.

Shared engine

One registry for every capture type

Site model, device registry, exception log and audit trail live here once, so the face kiosk, reporting and roster modules share a single source of truth instead of each reinventing devices and consent. Install it alone, or let any ERP Heritage attendance module pull it in as a dependency.

Day in the life

A site supervisor pairs a new kiosk and triages the morning's exceptions

From the kiosk site form the supervisor clicks Pair a new device. Odoo shows a six-digit PIN valid for five minutes and one use only. The tablet at the door POSTs the site code and PIN and receives a long opaque device token it stores once; every later heartbeat carries that token, and an unknown or revoked token is turned away with a 401. Through the morning each clock-in writes an audit event. Later the supervisor opens the Exceptions list, sees the late check-ins and one missed check-out raised by the kiosk, resolves each with a note, and the resolution is stamped with their user and the time. Overnight the retention crons expire any consent past its validity window and trim the audit log to the company horizon, in bounded batches that never freeze a worker.

Edge cases

The cases most modules quietly ignore.

In the shipped code today, each one a place where a cheaper module silently does the wrong thing.

One-shot pairing

The pairing PIN is single-use and expires after five minutes. It is consumed on first success and a wrong site code is rejected, so a leaked or stale PIN cannot mint a second device token.

Audit immutability

Kiosk event fields are read-only and no group holds write access on the log. Managers and the read-only auditor role can view it; only an admin can delete, and only via the retention purge.

Bounded retention crons

Each daily sweep is capped by a batch limit and reports remaining work through ir.cron progress so the framework re-triggers. A database with years of stale rows is drained over successive runs rather than locking a worker on one long delete.

Consent withdrawal integrity

Withdrawal demands a withdrawn-on date and rejects any withdrawal dated before the grant. Withdrawn or expired rows are kept for the configured audit window, then deleted, so the record's purpose ends cleanly with its legal retention.

Multi-company scoping

Global record rules scope all five models to the user's active companies, and a plain attendance user sees only their own consent and exception rows while managers see the team. Device tokens and the kiosk PIN are gated to manager and admin groups.

Frozen consent text

The consent prose is copied onto each consent record at grant time. Editing the company default later never alters what an already-granted employee agreed to, so the audit copy is the version they actually saw.

Soft heartbeat throttle

Heartbeats inside one second of the device's last-seen time are rejected with a 429, damping a runaway or misbehaving kiosk without extra infrastructure.

What is inside

Built to do the job, end to end.

  • Five core models. eh.hr.consent (consent lifecycle), eh.hr.kiosk.site (locations with optional geofence coordinates), eh.hr.kiosk.terminal (device registry with per-device token), eh.hr.attendance.exception (typed, severity-graded exceptions), and eh.hr.kiosk.event (the read-only audit trail). Each is company-scoped and chatter-tracked where it matters.
  • Two public APIs for other modules. eh.hr.kiosk.event.log(event_type, ...) is the single entry point any module uses to write the audit trail, and eh.hr.attendance.exception.raise_exception(employee, type, ...) creates an exception and logs a matching audit event in one call. Build face, roster or geofence modules on top without touching the base internals.
  • Four roles and a kiosk controller. User, Manager, Admin and a standalone read-only Auditor group, wired to a single access-level dropdown by the install hook. An HTTP controller exposes device pairing, token-authenticated heartbeat, and a whoami bootstrap, with client IP and user-agent recorded on each call.

Honest about the edges

What this does not do, so nothing surprises you.

  • This is the base engine. It stores consent, devices, sites, exceptions and the audit trail and exposes the APIs to write them, but it does not itself capture faces, compute biometric matches, or post attendance. Those live in the face kiosk module that depends on this one.
  • Geofence coordinates and radius are stored on the site and served to the kiosk, but this module does not enforce a geofence or evaluate GPS position. Enforcement belongs to the mobile and geofence modules.
  • Exceptions support resolve and reopen with a stamped resolver. There is no multi-step approval or escalation ladder, and no automatic detection: exceptions are raised by other modules or entered manually.
  • Pairing PINs are held in process memory for their five-minute life. On a multi-worker deployment the admin retries pairing on the worker that issued the PIN; the token itself, once issued, is stored in the database and works across all workers.
  • The optional kiosk fallback PIN is a manager-restricted field, not a hashed secret. Use it as a convenience fallback, not as a primary credential.
  • Targets Odoo 17 Community. The retention crons rely on the Odoo 17 cron progress mechanism.
Search

Odoo 17 attendance, biometric consent Odoo, face attendance kiosk, time and attendance Odoo, employee clock in clock out, kiosk device registry, attendance exception log, kiosk audit trail, hr_attendance base, GDPR consent attendance, consent retention policy, multi-company attendance, time clock Odoo Community, geofence attendance, attendance compliance Odoo

ERP Heritage

Production-grade Odoo accounting, built to an engineering bar and documented honestly. Support: info@erpheritage.com.au
Developed by Odoo Implementation Australia

v1.0.0 · LGPL-3 · Odoo 17 Community

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with