Created a field in the item record applied for inventory and assembly items. Created a workflow for the sales order. Context is website and it will be triggered after submit. The workflow will check for the items whose sale item checkbox field is checked and if inventory in location sales is 0, remove the item from category sales.
This script will uncheck the Display in Website checkbox. During sales orders after submit context, scripts will check whether the Sales Order contains a Sale item. An item is a Sale Item, only when the item record Sale Item checkbox is checked.
workflowactionscript
/**
* @NApiVersion 2.x
* @NScriptType workflowactionscript
*/
define(['N/record','N/search'],
function(record, search) {
/**
* Definition of the Suitelet script trigger point.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.newRecord - New record
* @param {Record} scriptContext.oldRecord - Old record
* @Since 2016.1
*/
function onAction(scriptContext) {
try{
log.debug("scriptContext",scriptContext.type);
var salesorderId = scriptContext.newRecord.id;
log.debug("salesorderId",salesorderId);
var salesorder = record.load({
type: record.Type.SALES_ORDER,
id: salesorderId
});
//Sales Order Line count
var numLines = salesorder.getLineCount({
sublistId: 'item'
});
for(i=0;i<numLines;i++){
//To get Line items
var itemid = salesorder.getSublistValue({
sublistId: 'item',
fieldId: 'item',
line: i
});
//Item Type whether inventory or assembly item
var sublistvaluetype = salesorder.getSublistValue({
sublistId: 'item',
fieldId: 'itemtype',
line: i
});
//When item type is Inventory, loads the item record and chech whether the field sale item
//is checked. If checked, Display in Website field is unchecked.
if(sublistvaluetype == 'InvtPart') {
var itemRecord = record.load({
type: record.Type.INVENTORY_ITEM,
id: itemid
});
var saleitem_value = itemRecord.getValue({
fieldId: 'custitem_scg_sale_item'
});
if(saleitem_value == true){
itemRecord.setValue({
fieldId: 'isonline',
value: false,
ignoreFieldChange: true
});
itemRecord.save();
}
}
//When item type is Assembly, loads the item record and chech whether the field sale item
//is checked. If checked, Display in Website field is unchecked.
if(sublistvaluetype == 'Assembly'){
var itemRecord = record.load({
type: record.Type.ASSEMBLY_ITEM,
id: itemid
});
var saleitem_value = itemRecord.getValue({
fieldId: 'custitem_scg_sale_item'
});
if(saleitem_value == true){
itemRecord.setValue({
fieldId: 'isonline',
value: false,
ignoreFieldChange: true
});
itemRecord.save();
}
}
}
}catch(error){
log.debug('error@onAction',error);
}
}
return {
onAction : onAction
};
});