Pick Task
Pick tasks record the picking and staging details of items for released orders. Item fulfillment records of picked and staged items are generated from the pick task record.
Pick task records can only be generated from wave transactions.
The pick task record is available when the Warehouse Management feature is enabled. For help working with this record in the UI, see Releasing Orders to the Warehouse.
The internal ID for this record is picktask
.
The pick task record contains the Inventory Detail subrecord. For details about subrecords in SuiteScript, see SuiteScript 2.x Scripting Subrecords.
See the SuiteScript Records Browser for all internal IDs associated with this record.
For information about using the SuiteScript Records Browser, see Working with the SuiteScript Records Browser in the NetSuite Help Center.
For information about scripting with this record in SuiteScript, see the following help topics:
Supported Script Types
The pick task record is scriptable in both client and server SuiteScript.
Supported Functions
The pick task record is partially scriptable — it can be updated, deleted, and searched using SuiteScript. Pick tasks cannot be created or copied using SuiteScript.
Usage Notes
See the following sections for more details about working with this record:
Fields
Note the following usage notes for specific fields on this record:
Field Names |
Read-Only? |
Comments |
---|---|---|
Wave # Location Item |
Yes |
These fields display the values in their corresponding fields on the associated wave transaction. |
Total Picked Quantity Total Remaining Quantity |
Yes |
These fields are calculated automatically from the values in the Picked Quantity and Remaining Quantity columns in the Line Items sublist. |
Assigned Picker |
No |
By default, this field is populated automatically with the value in its corresponding field on the associated wave transaction. If pickers have a specified warehouse location on their employee records, their name appears in this list only when the pick task belongs to a wave that has the same warehouse location. |
Units |
Yes |
This field is displayed only on accounts that have the Multiple Units of Measure feature enabled. It is populated automatically with the value of item’s unit of measure. |
Serial/Lot Number |
Yes |
For serialized or lot items, this field displays the value in its corresponding field on the associated wave transaction. |
Status |
Yes |
Initially, this field is set to the following statuses based on the status of the associated wave transaction
After a wave has been released, this field is updated automatically based on the status of the line items. |
Sublists
Note the following usage notes for columns in the Line Items sublist:
-
The values in the following columns are populated automatically with values entered using the mobile device: Picked Quantity, Staging Bin, and Inventory Detail.
-
The Transaction Number column displays the link to the fulfillment record, which is generated for each pick task line item in Done status.
-
If the Multiple Shipping Routes feature is enabled on the account, the following columns are populated automatically with values entered in the line items of the associated order transaction: Ship To and Ship Via.
-
The Override Fulfillment Creation box is displayed and enabled for pick task lines with a Failed status and a value of Yes in the Allow Retry column.
-
The following fields are displayed and enabled if you set the Show Additional Pick Task Columns preference: User Field 1 and User Field 2.
For more information, see Setting Warehouse Management Preferences.
Code Samples
The following sample code in SuiteScript 2.x includes editing pick tasks.
require(["N/record"], function (record) {
/* Pick Task cannot be created manually. It is always created automatically during creation of a wave! */
function editPickTask() {
var pickTaskId = 14;
var pickerId = 103;
var GOOD_INVENTORY_STATUS = 1;
var pickTask = record.load({type: record.Type.PICK_TASK, id: pickTaskId, isDynamic: true});
pickTask.setValue({fieldId: "picker", value: pickerId});
pickTask.setValue({fieldId: "memo", value: "Call Mike when done, please."});
editLineItem(pickTask, {
line: 0,
pickedQuantity: 1.5,
stagingBinId: 124,
inventoryDetailLines: [
{lotNumber: "L1", binNumberId: 122, inventoryStatusId: GOOD_INVENTORY_STATUS, quantity: 1},
{lotNumber: "L2", binNumberId: 123, inventoryStatusId: GOOD_INVENTORY_STATUS, quantity: 0.5}
]
});
pickTask.save();
}
function editLineItem(pickTask, lineItem) {
pickTask.selectLine({sublistId: "pickactions", line: lineItem.line});
pickTask.setCurrentSublistValue({sublistId: "pickactions", fieldId: "pickedquantity", value: lineItem.pickedQuantity});
createInventoryDetail(pickTask, lineItem.inventoryDetailLines);
pickTask.setCurrentSublistValue({sublistId: "pickactions", fieldId: "stagingbin", value: lineItem.stagingBinId});
pickTask.commitLine({sublistId: "pickactions"});
}
function createInventoryDetail(pickTask, inventoryDetailLines) {
var inventoryDetail = pickTask.getCurrentSublistSubrecord({sublistId: "pickactions", fieldId: "inventorydetail"});
for (var i = 0; i < inventoryDetailLines.length; i++) {
var line = inventoryDetailLines[i];
inventoryDetail.selectNewLine({sublistId: "inventoryassignment"});
inventoryDetail.setCurrentSublistText({sublistId: "inventoryassignment", fieldId: "issueinventorynumber", text: line.lotNumber});
inventoryDetail.setCurrentSublistValue({sublistId: "inventoryassignment", fieldId: "binnumber", value: line.binNumberId});
inventoryDetail.setCurrentSublistValue({sublistId: "inventoryassignment", fieldId: "inventorystatus", value: line.inventoryStatusId});
inventoryDetail.setCurrentSublistValue({sublistId: "inventoryassignment", fieldId: "quantity", value: line.quantity});
inventoryDetail.commitLine({sublistId: "inventoryassignment"});
}
}
editPickTask();
});