Remove duplicates in item-location combination.

Jira Code: AD-29
The ADV- Item-location plan record is prevented from being saved if the item-location combination is duplicated. An error will be displayed on saving such items.

Workflow Action Script : AD-29 JJ WA Item Location Combination

/**
 * @NApiVersion 2.x
 * @NScriptType workflowactionscript
 * @ScriptTitle AD-29 JJ WA Item Location Combination
 * @ScriptID customscript_ad29_jj_wa_itmlocplan
 * @Description To Prevent saving of Custom record "ADV - Item Location Plan records",
 * 				if there exists an Item-Location Combination.
 * @AppliedTo ADV - Item Location Plan records
 * @CreatedBy ND 04/01/2019
 */
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{
    		var filterArray =[];
    		// to get the current record data
    		var currRec = scriptContext.newRecord;
    		var mode = scriptContext.type
    		log.debug('mode',mode)
    		
    		var recordId = currRec.id
    		log.debug('recordId',recordId)
    		//to get item
    		var item = currRec.getValue({
    			fieldId:'custrecord_adv_itemlocplan_item'
    		});
    		log.debug("item",item);
    		var location = currRec.getValue({
    			fieldId:'custrecord_adv_itemlocplan_planloc'
    		});
    		
    		log.debug("location",location);
    		
    		// check if customer is empty
    		if(location)
    			{
    			filterArray.push(["custrecord_adv_itemlocplan_planloc.internalidnumber","equalto",location]);
    			}
    		else
    			{
    			filterArray.push(["custrecord_adv_itemlocplan_planloc.entityid","isempty",""]);
    			}
    		if(item)
    			{
    			filterArray.push("AND",["custrecord_adv_itemlocplan_item.internalidnumber","equalto",item]);
    			}
    		else
    			{
    			filterArray.push("AND",["custrecord_adv_itemlocplan_item","anyof","@NONE@"]);
    			}
    		if(recordId){
    			filterArray.push("AND", ["internalid","noneof",recordId]);
    		}
    		log.debug("filterArray",filterArray);
    		// to create search for finding the Customer-Item combination exists
    		var customrecord_adv_itemlocplanSearchObj  = search.create({
    			   type: "customrecord_adv_itemlocplan",
    			   filters:filterArray
    			  /* [
    			      ["custrecord_adv_item_customer.internalidnumber","equalto",customer], 
    			      "AND", 
    			      ["custrecord_adv_item.internalidnumber","equalto",item]
    			   ]*/,
    			   columns:
    			   [
    				   search.createColumn({name: "custrecord_adv_itemlocplan_planloc", label: "Replenishment Planning Location"}),
    				   search.createColumn({name: "custrecord_adv_itemlocplan_item", label: "Item"})
    
    			   ]
    			});
    			var searchResultCount = customrecord_adv_itemlocplanSearchObj.runPaged().count;
    			log.debug("customrecord_adv_itemlocplanSearchObj result count",searchResultCount);
    			/*customrecord_adv_customer_item_detailSearchObj.run().each(function(result){
    			   // .run().each has a limit of 4,000 results
    			   return true;
    			});*/
    			
    			if(searchResultCount>0)
    				{
    				return false;
    				}
    			else{
    				return true;
    			}
    			
    	}catch(e)
    	{
    		log.debug("Err@ FN onAction ",e.message);
    		//console.log("Err@ FN =",e.message);
    	}

    

    }

    return {
        onAction : onAction
    };
    
});

Leave a comment

Your email address will not be published. Required fields are marked *