Script on the Sales order and quote item add alert

Jira code: SCL-295

When a user adds an item to SO/Quote, check whether the item has similar products. If a similar product exists for the item a dialogue box should be shown and a message should be displayed. Created a client script, the dialog alert shows on item add.

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
 /****************************************************************************
 * Seibert Consulting
 * MS-82 Script on Sales order and quote
 * **************************************************************************
 * Date: 13/07/2020
 * 
 * Script Description : Show alert while adding item lines in sales order and quote, when item contains similar products.
 * Date created : 13 July 2020
 *
 * REVISION HISTORY
 * 
 * Revision 1.0 13/07/2020 : Create
 * 
 ****************************************************************************/
define(['N/ui/dialog', 'N/search', 'N/runtime'],

function(dialog, search, runtime) {
    
    function validateLine(scriptContext) {
        try{
            var similatProductMessage = null;
            //Show alert only in UI context
            if(runtime.executionContext == "USERINTERFACE" && scriptContext.sublistId == "item"){
              
                //During item add
               // if(scriptContext.sublistId == "item" && scriptContext.operation == "commit"){
                                       
                    var currentRec = scriptContext.currentRecord;
                    //Get itemType
                    var ItemType = currentRec.getCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'itemtype'
                    });
                    //Checking similar product and similar product 2 in Inventory items
                    if(ItemType == "InvtPart"){
                        var ItemId = currentRec.getCurrentSublistValue({
                            sublistId: 'item',
                            fieldId: 'item'
                        });
                        //Get similar product and similar product 2 values
                        var ItemValues = search.lookupFields({
                            type: search.Type.INVENTORY_ITEM,
                            id: ItemId,
                            columns: ['custitem_similar_product', 'custitem_similar_product_2']
                        });
                        //Similar product and Similar product 2 field values
                        var similarProduct1 = ItemValues.custitem_similar_product;
                        var similarProduct2 = ItemValues.custitem_similar_product_2;
                        //Alert message
                        similatProductMessage = 'Linked item for item selected <br/>(';
                        //If not null, add in alert message
                        if(similarProduct1){
                            similatProductMessage = similatProductMessage + 'Similar Product - ' + similarProduct1 + '<br/>';

                        }
                        if(similarProduct2){
                            similatProductMessage = similatProductMessage + ' Similar Product 2 - ' + similarProduct2;
                        }
                        similatProductMessage = similatProductMessage + ')';
                        if(similarProduct1 || similarProduct2){
                            var options = {
                                    title: "Similar Product Alert",
                                    message: similatProductMessage
                                };
                            dialog.alert(options);                            
                        }                    
                    }
                    return true;
                    
               // }
            }            
        }catch(e){
            console.log("ERROR_ON_SUBLISTCHANGE", e);
        }

    }

    return {
        validateLine: validateLine
    };
    
});

Leave a comment

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