Inventory Section
The inventory section loads whenever the mobile app is started or refreshed, and provides inventory or item data for the quote
, consumables
, salesorder
, order
, receive
, and return
tabs.
It loads four elements, each with a specific purpose:
-
consumable
-
kit
-
orderable
-
receivable
You can see the basic configuration shell in the code block below.
"inventory": {
"element": {
"consumable": {
"uri": "consumable",
"type": "datalist",
"options": {
.... }
},
"kit": {
"uri": "kit",
"type": "datalist",
"options": {
.... }
},
"orderable": {
"uri": "orderable",
"type": "datalist",
"options": {
.... }
},
"receivable": {
"uri": "receivable",
"type": "datalist",
"options": {
.... }
}
}
}
The Consumable Element
The consumable element loads inventory from the employee's location set to appear on mobile.
This data is used on the consumables
, salesorder
and return
tabs.
The base product is set up to load these types of items:
-
Inventory Item
-
Serialized Inventory Item
-
Lot Numbered Inventory Item
-
Assembly Item
-
Serialized Assembly Item
-
Lot Numbered Assembly Item
Only items available in the employee's location and with the Field Service Show On Mobile box checked will be loaded. Item Groups are also loaded if the box is checked, but location availability isn’t validated.
If you change your inventory or item features, the searches here will also change. Don’t copy this section between accounts. Use the config preview as your starting point. You’ll see different search labels below, but it’s best to view the code directly in the account using the Configuration Preview feature.
"inventory": {
"element": {
"consumable": {
"group": {},
"location": {},
"inventorylocation": {},
"inventorynumber": {},
"inventorynumberbinonhand": {},
"binnumber":{},
"binonhand": {}
}
}
}
The Kit Element
The kit element works with the consumable element on the salesorder
tab and checks if all components and quantities are in the user's location. If so, the kit will appear in the available items list on the salesorder
tab.
The Orderable Element
The orderable element loads any items with the Field Service Show On Mobile box checked. This data is used on the quote and order tabs.
Don’t set up more than 20,000 items to show on the mobile quote and order tabs, since this slows down the app. Show only the most common parts and set up a miscellaneous item for the back office to flag extra parts. FSM isn't meant to replace NetSuite for this.
The Receivable Element
The receivable option loads any transfer orders pending receipt to the employee's location, plus the lines, items, and quantities to be received. This data is used on the receive
tab.
To learn more about the inventory section, see the following:
Default Configuration
Elements loaded in the inventory section can be accessed elsewhere on the mobile through user resources.
"user": {
"employee": {
...
"map": {
....
},
"resources": [
{
"resources": [
"inventory"
]
}
]
}
},
You can also add new components that aren’t inventory or item related and they'll be available on mobile too. For more examples, see Configurability.
Limitations and Key Considerations
Data loaded in options is cached until you refresh the mobile app, so item quantities aren’t updated automatically. Updates appear after they're saved in NetSuite and the mobile app is refreshed.
You can add or configure elements, but inventory and item searches are used elsewhere in mobile. For instance, the consumable
option loads available stock to fulfill sales orders. Changing these searches can cause order errors, so you shouldn’t modify them.
Configurability
You can add more content to the inventory section and make it available to mobile. To do this, define additional elements in the same way as the default content.
For example, you might add elements like taskresources
or services
.
Every item must have a unique uniform resource identifier (uri
) property, a datalist type, and a set of options.
"inventory": {
"element": {
"consumable": {
....
},
"orderable": {
},
"taskresources": {
"uri": "taskresources",
"type": "datalist",
"options": {
"sort": "label",
"employee": {
"record": "employee",
"filters": [
["isinactive","is","F"],"and",
["custentity_nx_region","noneof","@NONE@"]
],
"map": {
"id": "internalid",
"label": "formulatext:nvl(trim(trim(trim({firstname})||' '||{middlename})||' '||{lastname}), {entityid})"
}
}
}
},
"services": {
"uri": "services",
"type": "datalist",
"options": {
"all": true,
"record": "item",
"filters": [
["isinactive","is","F"],"and",
["type","anyof","Service"]
],
"map": {
"id": "internalid",
"label": "name"
}
}
},
"timeclass": {
"uri": "time_class",
"type": "datalist",
"options": {
"all": true,
"record": "classification",
"filters": [
["isinactive","is","F"]
],
"map": {
"id": "=internalid",
"label": "formulatext: {name} || ' : ' || {custrecord_lit_class_description} || ' : ' || {custrecord_del_as_pl_assetnumber.custrecord_del_as_pl_platenu}",
"items": "=custrecord_lit_other_service_options[]",
"defaultitem": "=custrecord_lit_main_service_item"
}
}
},
"plant_items": {
"uri": "plant_items",
"type": "datalist",
"options": {
"all": true,
"record": "item",
"filters": [
["isinactive","is","F"],"and",
["custitem_lit_cost_type","anyof","2"],"and",
["type","anyof","Service"]
],
"map": {
"id": "=internalid",
"label": "formulatext: nvl({custitem_nxc_mobile_display_name},{itemid})",
"maxplant": "formulatext:nvl({custitem_nxc_mobile_max},24)[integer]"
}
}
}
}
}
You can reference these extra elements by their uri
, like time_class
, to return their options elsewhere in the mobile app.
"timeclass": {
"type": "select",
"label": "Plant",
"search": true,
"class": "el-6",
"required": true,
"column": 1,
"options": "time_class.options"
},