Skip to main content

Task Permissions

Task Permissions is the bottom part of the Operator card. Each row says: this operator may take this type of task in this work area. The row is the permission. No row, no right. The list is operator_task_permission_list_form. The form to add or change a row is operator_task_permission_normal_form. The table is operator_task_permission. The list is read by the method list_operator_task_permission, filtered by the operator of the card.

List​

LabelColumnTypeShown at firstWhat it shows
IDidWhole numberNoThe row key.
Task Typetask_typeTextYesPick, Putaway, Replenish, Move, Count.
Work Areawork_area_idWhole number, shown as the work area codeYesThe work area.
Pick Executionpick_execution_enabledYes/NoYesThe rollout switch for new pick work. See below.

The list has check boxes. Click a row to open it in the form below the list.

Toolbar of the list​

ButtonNeedsWhat it does
NewNothingOpens an empty form for a new row (generic_new). The operator is the one on the card.
DeleteOne or more ticked rowsDeletes the ticked rows (generic_delete_selected). No question is asked.
RefreshNothingReads the list again.

Form​

Table: operator_task_permission. The operator is not a field. The row belongs to the operator on the card and cannot be moved to another one.

LabelColumnTypeRequiredAllowed values / defaultWhat it does
Task Typetask_typeChoice of a listYesPick, Putaway, Replenish, Move, CountThe type of task the operator may take.
Work Areawork_area_idWhole number, chosen from the list of work areas (shows the code)YesAn existing work areaWhere the operator may take it.
Pick Executionpick_execution_enabledCheck boxYesDefault No (database default false)Whether the operator is offered new pick work in this area.

Buttons: Save (generic_validate, then generic_save) and Delete (generic_delete). Both return to the list.

A row is unique for one operator, one task type and one work area (uq_operator_task_permission). A work area that has permission rows cannot be deleted (foreign key RESTRICT), and an operator cannot be deleted either. Source: crates/libs/wms-lib-sql/sql/wms-app/migrations/001_baseline.sql (table operator_task_permission and its constraints).

Not confirmed by code: the exact text shown when you save a second row for the same operator, type and area. The database refuses it. To verify: add the same row twice on a test warehouse.

What the rights do​

RightEffect
A row for the type and areaThe operator may be given tasks of that type from the zones of that work area. Without any row, the claim is refused with you have no right to take {type} tasks in any work area — ask a supervisor. With rows, but none in the area the terminal named, with you have no right to take {type} tasks in work area {area} — ask a supervisor.
Pick Execution = Yes on a Pick rowThe operator may be given new pick work from locations in the zones of that area.
Pick Execution = No on a Pick rowNew pick work is refused for the operator in that area. Work the operator already holds can be finished.

The flag has no effect on the other task types. It is read only when pick work is handed out. Sources: crates/libs/wms-tasks/src/error.rs (NoWorkArea), crates/libs/wms-lib-core/src/model/tasks/operator_task_permission.rs:106-140, crates/libs/wms-outbound/src/picking/infrastructure/dispatch.rs:205-245, 039_pick_cutover_hardening.sql.

Zones belong to a work area. The zone of a location decides which area a task is in (work_area_zone). The equipment profile of the operator then removes the zones and tasks the machine cannot serve. See Operator card.

Who can use it​

RoleReadNew, Save, Delete
ADMIN, MANAGERYesYes
SUPERVISORNot confirmedNo by default: create_, update_, delete_operator_task_permission are for ADMIN and MANAGER
OPERATOR, VIEWERYesNo: the method refuses

What it affects​

  • Who is offered which task on the RF terminal.
  • Nothing already held: a task that an operator holds is not taken away when the row is deleted.

Not confirmed by code: that a held task is not taken away. No code path was found that reacts to a deleted permission row. To verify: delete a row while the operator holds a task of that type.

  • Operator card
  • Setting an operator's rights
  • API: list_operator_task_permission, get_operator_task_permission (read); create_operator_task_permission, update_operator_task_permission, delete_operator_task_permission, delete_many_operator_task_permission
  • RF terminal: none. The refusal text above appears on the terminal that asks for work.