Adds a tap-driven enrollment workflow so managers can pair NFC/RFID cards to employees using a USB HID reader at their desk: - New wizard model fusion.clock.nfc.enrollment.wizard with auto-focused Card UID field, employee picker, and reassignment warning if the card is already held by someone else. - Two actions: 'Enroll Card' (single) and 'Enroll & Next' (bulk). - Menu entry under Fusion Clock root, manager-gated. - Exposes x_fclk_nfc_card_uid on the Employee form Clock Settings section (next to Kiosk PIN) so it can be inspected/edited directly. - Bumps manifest to 19.0.3.1.0 for asset cache bust. Wizard reuses FusionClockNfcKiosk._normalize_uid so stored format matches what the kiosk /tap endpoint looks up later. Reassignment clears the UID from the previous holder and logs both events to the activity log under 'card_enrollment'.
106 lines
4.4 KiB
Python
106 lines
4.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Copyright 2026 Nexa Systems Inc.
|
|
# License OPL-1 (Odoo Proprietary License v1.0)
|
|
# Part of the Fusion Clock product family.
|
|
|
|
{
|
|
'name': 'Fusion Clock',
|
|
'version': '19.0.3.1.0',
|
|
'category': 'Human Resources/Attendances',
|
|
'summary': 'Complete Employee T&A with Geofencing, Shifts, Penalties, Overtime, Kiosk, Dashboard & Payroll Export',
|
|
'description': """
|
|
Fusion Clock - Complete Employee Time & Attendance
|
|
====================================================
|
|
|
|
A modern, mobile-first attendance module that provides:
|
|
|
|
* **Geofenced Clock-In/Out** - GPS and IP whitelist verification
|
|
* **Shift Scheduling** - Per-employee shift assignment with break management
|
|
* **Auto Clock-Out** - Automatic clock-out after shift + grace period
|
|
* **Penalty Tracking** - Auto-deduction for late clock-in and early clock-out
|
|
* **Overtime Tracking** - Daily and weekly overtime with configurable thresholds
|
|
* **Activity Logging** - Comprehensive audit trail of every attendance event
|
|
* **Absence Tracking** - Automatic detection with monthly/yearly counters
|
|
* **Leave Requests** - Portal-based leave requests with auto-approval
|
|
* **Timesheet Corrections** - Employee correction requests with approval workflow
|
|
* **Manager Dashboard** - Live status, alerts, and team overview
|
|
* **Kiosk Mode** - Shared-device clock-in/out with PIN verification
|
|
* **Photo Verification** - Optional selfie capture at clock-in
|
|
* **On-Time Streak** - Gamification with milestone tracking
|
|
* **CSV Export** - Configurable payroll-compatible export
|
|
* **Team Lead Views** - Filtered read-only access for direct reports
|
|
* **Pay Period Reports** - PDF reports with email automation
|
|
* **Employee Notifications** - Clock-in/out reminders and weekly summaries
|
|
* **Portal UI** - Dark-themed mobile-first portal with FAB and modals
|
|
* **Systray Widget** - Backend users can clock in/out from any Odoo page
|
|
|
|
Integrates natively with Odoo's hr.attendance module for full payroll compatibility.
|
|
""",
|
|
'author': 'Nexa Systems Inc.',
|
|
'website': 'https://nexasystems.io',
|
|
'license': 'OPL-1',
|
|
'depends': [
|
|
'hr_attendance',
|
|
'hr',
|
|
'portal',
|
|
'mail',
|
|
'resource',
|
|
],
|
|
'data': [
|
|
# Security
|
|
'security/security.xml',
|
|
'security/ir.model.access.csv',
|
|
# Data
|
|
'data/ir_config_parameter_data.xml',
|
|
'data/ir_cron_data.xml',
|
|
# Reports (must load before mail templates that reference them)
|
|
'report/clock_report_template.xml',
|
|
'report/clock_employee_report.xml',
|
|
# Mail templates
|
|
'data/mail_template_data.xml',
|
|
# Views - Backend
|
|
'views/clock_location_views.xml',
|
|
'views/hr_attendance_views.xml',
|
|
'views/clock_report_views.xml',
|
|
'views/clock_penalty_views.xml',
|
|
'views/res_config_settings_views.xml',
|
|
'views/clock_activity_log_views.xml',
|
|
'views/clock_leave_request_views.xml',
|
|
'views/clock_shift_views.xml',
|
|
'views/clock_correction_views.xml',
|
|
'views/clock_dashboard_views.xml',
|
|
'views/hr_employee_views.xml',
|
|
'views/clock_menus.xml',
|
|
# Views - Portal
|
|
'views/portal_clock_templates.xml',
|
|
'views/portal_timesheet_templates.xml',
|
|
'views/portal_report_templates.xml',
|
|
'views/kiosk_templates.xml',
|
|
'views/kiosk_nfc_templates.xml',
|
|
# Wizards
|
|
'wizard/clock_nfc_enrollment_views.xml',
|
|
],
|
|
'assets': {
|
|
'web.assets_frontend': [
|
|
'fusion_clock/static/src/css/portal_clock.css',
|
|
'fusion_clock/static/src/scss/nfc_kiosk.scss',
|
|
'fusion_clock/static/src/js/fusion_clock_portal.js',
|
|
'fusion_clock/static/src/js/fusion_clock_kiosk.js',
|
|
'fusion_clock/static/src/js/fusion_clock_nfc_kiosk.js',
|
|
],
|
|
'web.assets_backend': [
|
|
'fusion_clock/static/src/scss/fusion_clock.scss',
|
|
'fusion_clock/static/src/js/fusion_clock_systray.js',
|
|
'fusion_clock/static/src/xml/systray_clock.xml',
|
|
'fusion_clock/static/src/js/fusion_clock_dashboard.js',
|
|
'fusion_clock/static/src/xml/fusion_clock_dashboard.xml',
|
|
'fusion_clock/static/src/js/fusion_clock_location_map.js',
|
|
'fusion_clock/static/src/js/fusion_clock_location_places.js',
|
|
'fusion_clock/static/src/xml/fusion_clock_location.xml',
|
|
],
|
|
},
|
|
'installable': True,
|
|
'auto_install': False,
|
|
'application': True,
|
|
}
|