dennysutanto
04/19/2025, 4:27 AMCeligo AI
04/19/2025, 4:27 AMAI generated answer (using internal Slack threads):In SuiteScript, when transforming a Sales Order to an Item Fulfillment, the system automatically suggests lines to be fulfilled based on the Sales Order. However, there is no direct way to remove these suggested lines and add them one by one to match a JSON object. However, you can manipulate the lines in the Item Fulfillment after the transformation. Here's a general approach: 1. Transform the Sales Order to an Item Fulfillment using
record.transform
.
2. Loop through the lines in the Item Fulfillment.
3. For each line, use getCurrentSublistSubrecord
to get the Inventory Detail Subrecord.
4. Use removeLine
to remove the lines you don't want from the Inventory Detail Subrecord.
5. Use selectNewLine
and setCurrentSublistValue
to add the lines you want to the Inventory Detail Subrecord.
6. Commit the changes to the Inventory Detail Subrecord and the Item Fulfillment line.
7. Save the Item Fulfillment.
Here's a code snippet that illustrates this approach:
javascript
let itemFulfillment = record.transform({
fromType: record.Type.SALES_ORDER,
fromId: salesOrderId,
toType: record.Type.ITEM_FULFILLMENT,
isDynamic: true,
});
let lineCount = itemFulfillment.getLineCount({sublistId: 'item'});
for(let i = 0; i < lineCount; i++){
itemFulfillment.selectLine({sublistId: 'item', line: i});
let subRec = itemFulfillment.getCurrentSublistSubrecord({
sublistId: 'item',
fieldId: 'inventorydetail'
});
// Remove lines from subrecord
let subRecLineCount = subRec.getLineCount({sublistId: 'inventoryassignment'});
for(let j = subRecLineCount - 1; j >= 0; j--){
subRec.removeLine({sublistId: 'inventoryassignment', line: j});
}
// Add lines to subrecord based on JSON object
// Assuming jsonLine is an object representing a line from your JSON
for(let jsonLine of jsonLines){
subRec.selectNewLine({sublistId: 'inventoryassignment'});
subRec.setCurrentSublistValue({sublistId: 'inventoryassignment', fieldId: 'issueinventorynumber', value: jsonLine.issueinventorynumber});
subRec.setCurrentSublistValue({sublistId: 'inventoryassignment', fieldId: 'quantity', value: jsonLine.quantity});
subRec.commitLine({sublistId: 'inventoryassignment'});
}
itemFulfillment.commitLine({sublistId: 'item'});
}
let itemFulfillmentId = itemFulfillment.save();
Remember to replace salesOrderId
and jsonLines
with your actual Sales Order ID and JSON object.
******
Disclaimer:
This response was generated by an artificial intelligence assistant based on previous conversations from multiple Slack channels, and may contain inaccuracies or mistakes.
******Celigo AI
04/19/2025, 4:27 AMSlack thread 1: here (available only if the original thread was posted in the last 90 days)
Similarity score: 0.818240702
Slack thread 2: here (available only if the original thread was posted in the last 90 days)
Similarity score: 0.81769824
Slack thread 3: here (available only if the original thread was posted in the last 90 days)
Similarity score: 0.817448199
Celigo AI
04/19/2025, 4:27 AM