Sales Order Tab
The sales order tab lets technicians create sales orders and use inventory from their van or location in real time. When a sales order is saved on mobile, it gets created and fulfilled in NetSuite right away. The sales order is then returned and shown on the mobile. If the user is offline, it is cached until they're online.
The sales order tab has a set of body fields and a table of items, similar to the NetSuite UI.
Since the sales order is created and fulfilled in real time on mobile, only one technician should create and manage it.
The sales order tab can show a pre-existing sales order on mobile, but those lines are read-only by default. Mobile users can only add new lines and fulfill them from their van or location.
The sales order tab works differently from the consumables or inventory tab, which adds items to a custom record and creates the sales order in NetSuite after the task is done. With that tab, mobile users never see the sales order. For more information, see Deciding Between the Consumables and Sales Order Tab
To learn more about the sales order tab, see the following:
Default Configuration
You can view the default configuration of the sales order tab using the Configuration Preview feature.
By default, the tab allows only one sales order to be created or shown on the mobile.
"max": 1,
When the sales order is created, it sets the task, case, customer, subsidiary, project, and asset on the body. If there’s no project, only the customer is set.
"defaults": {
...
"customer": "${ event.customer }",
"project": "${ event.company == event.customer ? null : event.company }",
"custbody_nx_task": "${ event.crmtask }",
"custbody_nx_projecttask": "${ event.projecttask }",
"custbody_nx_case": "${ event.supportcase }",
"custbody_nx_asset": "${ event.asset }",
"subsidiary": "${ event.subsidiary }",
...
},
The default search filter shows sales orders that have the same project or task set on the body as the related task.
"filters": "${ event.company && event.company != event.customer ? ['job.internalid', 'anyof', event.company] : ['custbody_nx_task', 'anyof', event.crmtask || 0] }",
The lines on the sales order are set from the task or project task and are as follows : task or project task, technician's van or location, and the asset.
"task": {
"type": "hidden",
"value": "${ event.crmtask }",
"parent": "items"
},
"projecttask": {
"type": "hidden",
"value": "${ event.projecttask }",
"parent": "items"
},
"asset": {
"type": "hidden",
"value": "${ event.asset }",
"parent": "items"
},
By default, only lines added or created on the same task or project are editable on mobile. Item group types are also set to read-only.
"readonly": "formulatext:case when {item.type.id} like '%Group%' then 'T' when ({custcol_nx_task.id} = '${ event.internalid }' or {custcol_nx_projecttask.id} = '${ event.internalid }') then 'F' else 'T' end",
Mandatory Fields
The item
and quantity
fields are required for each row in the sales order table. A sales order can't be saved unless these fields are filled in for every row.
"item": {
...
"required": true,
...
},
"quantity": {
...
"required": true,
...
},
Limitations and Key Considerations
Here are a some things to keep in mind, including some limitations, when using the sales order tab.
-
The items you can select in the sales order tab's
item
element are controlled by searches in theconsumable
part of theinventory
section in theroutes/mobile
configuration. Only experienced users should change this. -
The
options
property on theitem
element points to theconsumable
component. Only experienced users should modify this. -
Don't copy or duplicate the sales order tab in your configuration. Since it runs core product code, only the original tab will work properly. Handle multiple use cases by configuring the single sales order tab provided.
-
Only one person should create or update a sales order on a task. It's best to have only one assignee creating or editing the sales order. You can let each task assignee create a sales order, but this is usually not ideal.
-
Make sure all inventory for the job is transferred to the van of the technician processing the sales order.
-
The sales order tab is the only way to consume inventory on project tasks.
-
By default, each sales order line uses the asset set on the task. For multi-asset jobs, lines default to the parent asset, so tracking profit by child asset isn't supported unless you reconfigure the line to let technicians select the asset. But this isn't a great experience for technicians, so it's better to use the consumables or inventory tab for multi-asset jobs.
-
The sales order tab isn't meant for editing lines from existing sales orders. It's only for creating sales orders or adding new lines.
-
The sales order tab doesn't support partial fulfillment of lines.
-
You can configure the sales order tab to show price levels, but it's not meant to support custom price levels or to show rates at the line level.
-
If you show price levels on the sales order on mobile, it overrides any default NetSuite behaviors such as customer-level custom pricing.
Supported Item Types
The table below lists the NetSuite item types and their support levels when used with the sales order tab.
Item Type |
Item Subtype |
Support Level |
Limitations |
---|---|---|---|
Description |
– |
Unsupported |
|
Discount |
– |
Unsupported |
|
Inventory Item |
– |
Supported |
|
Inventory Item - Lot Numbered |
– |
Supported |
|
Inventory Item - Serialized |
– |
Supported |
|
Item Group |
– |
Partially Supported |
Item groups load on mobile even if the component items aren’t in stock. This may cause unfulfilled sales orders. Add item groups only as the last step when creating or editing a sales order, because you won’t be able to edit the sales order after adding one. If you need to make changes, you’ll have to delete and recreate the sales order. This happens because the 'End of Item Group' line on the sales order leaves the required quantity field blank, making the record uneditable. |
Kit/Package |
– |
Supported |
Kits load on mobile, but you can only select them if enough components are in stock to make at least one kit. The mobile doesn’t validate kit quantities, so this can lead to unfulfilled sales orders. |
Markup |
– |
Unsupported |
|
Non-Inventory Item |
For Purchase |
Unsupported |
|
For Sale |
Supported |
|
|
For Resale |
Supported |
|
|
Other Charge |
For Purchase |
Unsupported |
|
For Sale |
Supported |
|
|
For Resale |
Supported |
|
|
Payment |
– |
Unsupported |
|
Service |
For Purchase |
Unsupported |
|
For Sale |
Supported |
|
|
For Resale |
Supported |
|
|
Subtotal |
– |
Unsupported |
|
You can add searches in the consumable
section of the inventory
component to include non-inventory, service, and other charge items, but not other item types.
Configurability
The following components and properties are configurable on the sales order tab:
-
Standard properties such as
min
,max
,enable
,disable
,level
-
Filters
-
Additional body fields
-
Additional line fields
-
Additional body field defaults
-
Additional line field defaults
-
Dynamic logic on fields
-
Autofulfill