ScanState<TScanState> is a class for a barcode scan state. This class
represents a component that contains the logic for handling a non-fixed input (such as a
barcode, quantity, or date) of a barcode-driven MYOB Acumatica
form.
Learning Objectives
In this chapter, you will learn how to do the following:
Create a set of scan states of a scan mode
Implement the input scan state
Implement the confirmation scan state
Applicable Scenarios
You create scan states in the following cases:
You have created a scan mode on a custom form and need to implement the set of scan states
of this mode.
You have added a new scan mode on an existing barcode-driven form and need to implement the
set of scan states of this mode.
You need to define a new scan state for an existing scan mode of a barcode-driven from.
Scan State Classes
You create particular instances of the ScanState<TScanState> class in
the ScanMode<TScanBasis>.CreateStates() method. The order of states used
in this method doesn't imply the actual order of the input states.
A scan state class can be one of the following types:
EntityState<TScanBasis, TEntity>: An input scan state that is used to
transform a barcode to a particular entity, validate it, and then apply it to the
barcode-driven form
ConfirmationState<TScanBasis>: A confirmation scan state that
validates and confirms all changes accumulated by other scan states and completes the barcode
processing cycle
CommandOnlyState<TScanBasis>: A built-in scan state that rejects any
non-fixed input and reports to users that they should use only commands
Usually a scan mode has multiple input states and no more than one confirmation state.