GuidesEmployeeOrder Lifecycle

Order Lifecycle

Orders follow a strict state machine with defined transitions.

State Machine

Transitions

FromToActionWho
pendingin_progressclaimOrder()Employee
in_progresspendingunclaimOrder()Same employee
in_progressreadymarkReady()Same employee
readycompletedcompleteOrder()Any employee
AnycancelledDirect DB updateAdmin

Validation

Each transition is validated:

  • claimOrder: Must be pending, must not already have assigned_to
  • markReady: Must be in_progress, must be assigned to the current user
  • completeOrder: Must be ready
  • unclaimOrder: Must be assigned to the current user

Invalid transitions throw OrderQueueError.invalidStatusTransition.

Timestamps

FieldSet When
created_atOrder placed
claimed_atOrder claimed by staff
completed_atOrder completed (picked up)
updated_atAny status change

Order Number Format

Generated by OrderService.generateOrderNumber():

SC-{Letter}{3 digits}

Examples: SC-A042, SC-M371, SC-K899