diff --git a/fusion_plating/fusion_plating_shopfloor/__manifest__.py b/fusion_plating/fusion_plating_shopfloor/__manifest__.py index 38dba377..ae2a3253 100644 --- a/fusion_plating/fusion_plating_shopfloor/__manifest__.py +++ b/fusion_plating/fusion_plating_shopfloor/__manifest__.py @@ -45,6 +45,7 @@ Copyright (c) 2026 Nexa Systems Inc. All rights reserved. 'security/ir.model.access.csv', 'data/fp_sequence_data.xml', 'data/fp_cron_data.xml', + 'data/fp_tablet_config_data.xml', 'views/fp_shopfloor_station_views.xml', 'views/fp_bake_oven_views.xml', 'views/fp_bake_window_views.xml', diff --git a/fusion_plating/fusion_plating_shopfloor/data/fp_tablet_config_data.xml b/fusion_plating/fusion_plating_shopfloor/data/fp_tablet_config_data.xml new file mode 100644 index 00000000..a7df1ff1 --- /dev/null +++ b/fusion_plating/fusion_plating_shopfloor/data/fp_tablet_config_data.xml @@ -0,0 +1,31 @@ + + + + + + fp.shopfloor.tablet_idle_lock_minutes + 5 + + + + fp.shopfloor.tablet_pin_fail_threshold + 5 + + + + fp.shopfloor.tablet_pin_fail_lockout_minutes + 5 + + + + fp.shopfloor.tablet_warn_seconds_before_lock + 30 + + + diff --git a/fusion_plating/fusion_plating_shopfloor/models/fp_shopfloor_station.py b/fusion_plating/fusion_plating_shopfloor/models/fp_shopfloor_station.py index bafa4080..34409b15 100644 --- a/fusion_plating/fusion_plating_shopfloor/models/fp_shopfloor_station.py +++ b/fusion_plating/fusion_plating_shopfloor/models/fp_shopfloor_station.py @@ -73,6 +73,26 @@ class FpShopfloorStation(models.Model): string='Notes', ) + # Phase 6 tablet PIN gate — per-station roster + idle override. + x_fc_authorised_user_ids = fields.Many2many( + 'res.users', + relation='fp_shopfloor_station_authorised_user_rel', + column1='station_id', + column2='user_id', + string='Authorised Operators', + help='If set, the tablet lock screen only shows tiles for these ' + 'users. Empty = all operator-group users are shown. Use to ' + 'restrict a tablet at a specialised station (e.g. EN Plating) ' + 'to techs trained on that station.', + ) + x_fc_idle_lock_minutes = fields.Integer( + string='Idle Lock (minutes)', + help='Per-station override for the auto-lock idle threshold. ' + 'Leave blank to use the global default ' + '(ir.config_parameter fp.shopfloor.tablet_idle_lock_minutes, ' + 'default 5).', + ) + _sql_constraints = [ ( 'fp_shopfloor_station_code_uniq', diff --git a/fusion_plating/fusion_plating_shopfloor/views/fp_shopfloor_station_views.xml b/fusion_plating/fusion_plating_shopfloor/views/fp_shopfloor_station_views.xml index 4b787433..fba61866 100644 --- a/fusion_plating/fusion_plating_shopfloor/views/fp_shopfloor_station_views.xml +++ b/fusion_plating/fusion_plating_shopfloor/views/fp_shopfloor_station_views.xml @@ -49,6 +49,13 @@ + + + +