- Rework /fusion_clock/dashboard_data into a personal block (everyone) plus a team block (team lead = direct reports, manager = org-wide). A regular employee's payload never contains another employee's data. - New OWL stacked layout: gradient KPI cards (Today/Week/OT/Streak), Today's Shift, Recent Activity, Upcoming Leave, Recent Penalties; team band adds Present/Absent/Late/Pending, roster, and Needs Attention. - Dark/light via compile-time $o-webclient-color-scheme branching; drop the old runtime html.o_dark dashboard block. - Open the Dashboard menu to group_fusion_clock_user (lead/manager imply). - Add HttpCase permission/no-leak tests. Bump 3.13.2 -> 3.14.0. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
186 lines
7.4 KiB
XML
186 lines
7.4 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
|
|
<!-- Top-Level Menu -->
|
|
<menuitem id="menu_fusion_clock_root"
|
|
name="Fusion Clock"
|
|
web_icon="fusion_clock,static/description/icon.png"
|
|
sequence="45"
|
|
groups="group_fusion_clock_user"/>
|
|
|
|
<!-- Dedicated kiosk app: a separate top-level icon (same artwork) that opens
|
|
the NFC kiosk. Gated to Kiosk Operator so shared tablet accounts see ONLY
|
|
this app, not the full Fusion Clock backend. -->
|
|
<record id="action_fusion_clock_kiosk_nfc" model="ir.actions.act_url">
|
|
<field name="name">Fusion Clock Kiosk</field>
|
|
<field name="url">/fusion_clock/kiosk/nfc</field>
|
|
<field name="target">self</field>
|
|
</record>
|
|
|
|
<menuitem id="menu_fusion_clock_kiosk_app_root"
|
|
name="Fusion Clock Kiosk"
|
|
web_icon="fusion_clock,static/description/icon.png"
|
|
action="action_fusion_clock_kiosk_nfc"
|
|
sequence="46"
|
|
groups="group_fusion_clock_kiosk_app"/>
|
|
|
|
<!-- Dashboard — layered & role-aware: personal band for everyone,
|
|
team band for leads (direct reports), org band for managers.
|
|
Gated to the base clock-user group (lead/manager imply it). -->
|
|
<menuitem id="menu_fusion_clock_dashboard"
|
|
name="Dashboard"
|
|
parent="menu_fusion_clock_root"
|
|
action="action_fusion_clock_dashboard"
|
|
sequence="5"
|
|
groups="group_fusion_clock_user"/>
|
|
|
|
<!-- ============================================================
|
|
Attendance — day-to-day operational records
|
|
============================================================ -->
|
|
<menuitem id="menu_fusion_clock_attendance"
|
|
name="Attendance"
|
|
parent="menu_fusion_clock_root"
|
|
sequence="10"/>
|
|
|
|
<menuitem id="menu_fusion_clock_attendance_list"
|
|
name="All Attendances"
|
|
parent="menu_fusion_clock_attendance"
|
|
action="hr_attendance.hr_attendance_action"
|
|
sequence="10"
|
|
groups="group_fusion_clock_manager,group_fusion_clock_team_lead"/>
|
|
|
|
<menuitem id="menu_fusion_clock_leaves"
|
|
name="Leave Requests"
|
|
parent="menu_fusion_clock_attendance"
|
|
action="action_fusion_clock_leave_request"
|
|
sequence="20"
|
|
groups="group_fusion_clock_manager"/>
|
|
|
|
<menuitem id="menu_fusion_clock_corrections"
|
|
name="Correction Requests"
|
|
parent="menu_fusion_clock_attendance"
|
|
action="action_fusion_clock_correction"
|
|
sequence="30"
|
|
groups="group_fusion_clock_manager"/>
|
|
|
|
<menuitem id="menu_fusion_clock_penalties"
|
|
name="Penalties"
|
|
parent="menu_fusion_clock_attendance"
|
|
action="action_fusion_clock_penalty"
|
|
sequence="40"
|
|
groups="group_fusion_clock_manager,group_fusion_clock_team_lead"/>
|
|
|
|
<!-- ============================================================
|
|
Scheduling — building and posting schedules
|
|
============================================================ -->
|
|
<menuitem id="menu_fusion_clock_scheduling"
|
|
name="Scheduling"
|
|
parent="menu_fusion_clock_root"
|
|
sequence="20"
|
|
groups="group_fusion_clock_manager"/>
|
|
|
|
<menuitem id="menu_fusion_clock_shift_planner"
|
|
name="Shift Planner"
|
|
parent="menu_fusion_clock_scheduling"
|
|
action="action_fusion_clock_shift_planner"
|
|
sequence="5"
|
|
groups="group_fusion_clock_manager"/>
|
|
|
|
<menuitem id="menu_fusion_clock_scheduled_shifts"
|
|
name="Scheduled Shifts"
|
|
parent="menu_fusion_clock_scheduling"
|
|
action="action_fusion_clock_schedule"
|
|
sequence="10"
|
|
groups="group_fusion_clock_manager"/>
|
|
|
|
<menuitem id="menu_fusion_clock_shifts"
|
|
name="Shifts"
|
|
parent="menu_fusion_clock_scheduling"
|
|
action="action_fusion_clock_shift"
|
|
sequence="15"
|
|
groups="group_fusion_clock_manager"/>
|
|
|
|
<menuitem id="menu_fusion_clock_schedule_audit"
|
|
name="Schedule Audit"
|
|
parent="menu_fusion_clock_scheduling"
|
|
action="action_fusion_clock_schedule_audit"
|
|
sequence="20"
|
|
groups="group_fusion_clock_manager"/>
|
|
|
|
<!-- Activity Logs — cross-cutting audit trail -->
|
|
<menuitem id="menu_fusion_clock_activity_logs"
|
|
name="Activity Logs"
|
|
parent="menu_fusion_clock_root"
|
|
action="action_fusion_clock_activity_log"
|
|
sequence="30"
|
|
groups="group_fusion_clock_manager,group_fusion_clock_team_lead"/>
|
|
|
|
<!-- Reports Sub-Menu -->
|
|
<menuitem id="menu_fusion_clock_reports_parent"
|
|
name="Reports"
|
|
parent="menu_fusion_clock_root"
|
|
sequence="40"
|
|
groups="group_fusion_clock_manager"/>
|
|
|
|
<menuitem id="menu_fusion_clock_reports"
|
|
name="All Reports"
|
|
parent="menu_fusion_clock_reports_parent"
|
|
action="action_fusion_clock_report"
|
|
sequence="10"
|
|
groups="group_fusion_clock_manager"/>
|
|
|
|
<menuitem id="menu_fusion_clock_generate_historical"
|
|
name="Generate Historical Reports"
|
|
parent="menu_fusion_clock_reports_parent"
|
|
action="action_server_generate_historical"
|
|
sequence="20"
|
|
groups="group_fusion_clock_manager"/>
|
|
|
|
<!-- Employees -->
|
|
<menuitem id="menu_fusion_clock_employees"
|
|
name="Employees"
|
|
parent="menu_fusion_clock_root"
|
|
action="hr.open_view_employee_list_my"
|
|
sequence="50"
|
|
groups="group_fusion_clock_manager,group_fusion_clock_team_lead"/>
|
|
|
|
<!-- ============================================================
|
|
Configuration — setup
|
|
============================================================ -->
|
|
<menuitem id="menu_fusion_clock_config"
|
|
name="Configuration"
|
|
parent="menu_fusion_clock_root"
|
|
sequence="90"
|
|
groups="group_fusion_clock_manager"/>
|
|
|
|
<record id="action_fusion_clock_config_settings" model="ir.actions.act_window">
|
|
<field name="name">Fusion Clock Settings</field>
|
|
<field name="res_model">res.config.settings</field>
|
|
<field name="view_mode">form</field>
|
|
<field name="target">current</field>
|
|
<field name="context">{'module': 'fusion_clock', 'bin_size': False}</field>
|
|
</record>
|
|
|
|
<menuitem id="menu_fusion_clock_settings"
|
|
name="Settings"
|
|
parent="menu_fusion_clock_config"
|
|
action="action_fusion_clock_config_settings"
|
|
sequence="10"
|
|
groups="group_fusion_clock_manager"/>
|
|
|
|
<menuitem id="menu_fusion_clock_locations_config"
|
|
name="Locations"
|
|
parent="menu_fusion_clock_config"
|
|
action="action_fusion_clock_location"
|
|
sequence="20"
|
|
groups="group_fusion_clock_manager"/>
|
|
|
|
<menuitem id="menu_fusion_clock_nfc_enrollment"
|
|
name="Enroll NFC Card"
|
|
parent="menu_fusion_clock_config"
|
|
action="action_fusion_clock_nfc_enrollment_wizard"
|
|
sequence="30"
|
|
groups="group_fusion_clock_manager"/>
|
|
|
|
</odoo>
|