Add items button in Inventory Transfer Record

Jira code: MR-161
User should be able to add the items into Inventory Transfer record by scanning product barcode.

Client Script: MR-161 CL Barcode Scanning

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
define(["N/search", "N/currentRecord"], function(search,currentRecord) {
    function fieldChanged(context) {
        try {
        	
            if (context.fieldId == "barcode") {
            
                var item, internalid,description;
                var subsidiary = getParameterByName('subsi');
                console.log('subsidiary',subsidiary)
                search.create({
                    type: "inventorynumber",
                    filters: [
                        ["inventorynumber", "is", context.currentRecord.getCurrentSublistValue({ fieldId: "barcode",sublistId: "items" })],
                        "AND", 
                        ["item.subsidiary","anyof",subsidiary],
                        "AND", 
                        ["item.isinactive","is","F"]
                    ],
                    columns: [
                    			search.createColumn({ name: "item", label: "Item" }),
                    			search.createColumn({
                    				name: "salesdescription",
                    				join: "item",
                    				label: "Description"
                    		})
                    	]
                }).run().each(function(r) {
                    internalid = r.getValue({ name: "item", label: "Item" });
                    item = r.getText({ name: "item", label: "Item" });
                    description = r.getValue({ name: "salesdescription",join: "item", label: "Description" });
                    return false;
                });
                
                
                console.log('item',item)
                if (item) {
                    context.currentRecord.setCurrentSublistValue({ fieldId: "items", sublistId: "items", value: item });
                    context.currentRecord.setCurrentSublistValue({ fieldId: "internalid", sublistId: "items", value: internalid });
                    context.currentRecord.setCurrentSublistValue({ fieldId: "description", sublistId: "items", value: description });
                   
                    return true;
                }else{
                	context.currentRecord.setCurrentSublistValue({ fieldId: "barcode", sublistId: "items", value: null});
                	alert('The item has a different subsidiary or the item is inactive')
                	
                    return false;
                }
                	
            }

        } catch (err) {
            console.log(err);
        }

     // for getting parameter by name .................
        function getParameterByName(name, url) {
            if (!url)
                url = window.location.href;
            name = name.replace(/[\[\]]/g, "\\$&");
            var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
                results = regex
                .exec(url);
            if (!results)
                return null;
            if (!results[2])
                return ' ';
            return decodeURIComponent(results[2].replace(/\+/g, " "));
        }
    }


    function addItems() {
        try {

            var currentRec = currentRecord.get();
            var itemsArray=[];
            var itemsCumulative=[];
            for(var i=0;i<currentRec.getLineCount({sublistId: "items"});i++)
            	{
            		var itemId=currentRec.getSublistValue({sublistId: "items",fieldId: "internalid",line :i});
            		var description = currentRec.getSublistValue({sublistId: "items",fieldId: "description",line :i});
            		var itemName=currentRec.getSublistValue({sublistId: "items",fieldId: "items",line :i});
            		var index=itemsArray.indexOf(itemId);
            		if(index==-1)
            		{
            			itemsArray.push(itemId);
            			itemsCumulative.push({itemId:itemId,qty:1,itemName:itemName,description:description});
            		}
            		else itemsCumulative[index].qty++;        		
            	}	

//            	window.opener.setFile(data,line,id,price,itemclass,increment,percent,totalOptional,itemLine,totalAdditional,totalFree);
//            	window.ITEMS_SELECTED=itemsCumulative;
//            	window.open("/core/media/media.nl?id=285957&c=3815745&h=bdf9fb3c331a5f92e7b3&_xt=.html", "Preview", "height=700,width=800");
            	window.opener.ADD_ITEMS(itemsCumulative);
            	window.onbeforeunload=function(){};
            	window.close();

            


        } catch (err) {
            alert("error@addItems"+err)
            console.log(err);
        }
    }

    function previewItems() {
        try {

            var currentRec = currentRecord.get();
            var itemsArray=[];
            var itemsCumulative=[];
            for(var i=0;i<currentRec.getLineCount({sublistId: "items"});i++)
            	{
            		var itemId=currentRec.getSublistValue({sublistId: "items",fieldId: "internalid",line :i});
            		var description = currentRec.getSublistValue({sublistId: "items",fieldId: "description",line :i});
            		var itemName=currentRec.getSublistValue({sublistId: "items",fieldId: "items",line :i});
            		var index=itemsArray.indexOf(itemId);
            		if(index==-1)
            		{
            			itemsArray.push(itemId);
            			itemsCumulative.push({itemId:itemId,qty:1,description:description,itemName:itemName});
            		}
            		else itemsCumulative[index].qty++;        		
            	}	

            	//window.opener.setFile(data,line,id,price,itemclass,increment,percent,totalOptional,itemLine,totalAdditional,totalFree);


            	
            	window.ITEMS_SELECTED=itemsCumulative;
            	 window.open("/core/media/media.nl?id=285957&c=3815745&h=bdf9fb3c331a5f92e7b3&_xt=.html", "Preview", "height=700,width=800");

            	
            	//window.opener.ADD_ITEMS(itemsCumulative);

            	//window.close();

            


        } catch (err) {
            alert("error@addItems")
            console.log(err);
        }
    }

    return {
        validateField:fieldChanged,
        addItems:addItems,
        previewItems:previewItems
    }
});


Client Script: MR-161 CS Add Item Function

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
define(["N/currentRecord"],
    function(currentRecord) {

        function additem() {    
        	 var subsid;
        	 var currentRec = currentRecord.get();
            if(window.ADD_ITEMS==undefined)
                window.ADD_ITEMS=function(items)
                    {
                var  rConfig =  JSON.parse( '{}' ) ; 
                rConfig['context'] = '/SuiteBundles/Bundle 20038/Megatel Custom/Jobin and Jismi/MR-161 CS Add item function'; 
                var entryPointRequire = require.config(rConfig); entryPointRequire(['/SuiteBundles/Bundle 20038/Megatel Custom/Jobin and Jismi/MR-161 CS Add item function'], 
        function(mod){ try{    if (!!window)    {       
        var origScriptIdForLogging = window.NLScriptIdForLogging;        
        var origDeploymentIdForLogging = window.NLDeploymentIdForLogging;      
        window.NLScriptIdForLogging = 'customscript_jj_mr161_ue_add_item_button';      
         window.NLDeploymentIdForLogging = 'CUSTOMDEPLOY_JJ_MR161_UE_ADD_ITEM_BUTTON'; 
        }mod.addItemsToLine(items);}finally{ 
           if (!!window)    {       
            window.NLScriptIdForLogging = origScriptIdForLogging;       
             window.NLDeploymentIdForLogging = origDeploymentIdForLogging;    
         }} }); return false;
        
        
            }
            subsid = currentRec.getValue({
        	    fieldId: 'subsidiary'
         });
         console.log('subsid',subsid)
         if(subsid){
        	 window.open("/app/site/hosting/scriptlet.nl?script=499&deploy=1&subsi="+subsid, "Scan Barcode", "height=700,width=800"); 
         }else{
        	 alert('please select the subsidiary first')
         }
            
        

        }
        /**
         * Function to be executed after page is initialized.
         *
         * @param {Object} scriptContext
         * @param {Record} scriptContext.currentRecord - Current form record
         * @param {string} scriptContext.mode - The mode in which the record is being accessed (create, copy, or edit)
         *
         * @since 2015.2
         */
        function pageInit(scriptContext) {

        

        }


        function addItemsToLine(items){
            try{
                //items array of [{itemId:1234,qty:2},.....]
            	
                 var currentRec = currentRecord.get();
                 console.log('currentRec',currentRec)
                  console.log('items.length',items.length)
//                  var numLines = currentRec.getLineCount({
//                	  sublistId: 'inventory'
//                  });
                for(var i=0;i<items.length;i++)
                {
                   console.log(items); 
                   currentRec.selectNewLine({sublistId:"inventory"});
                   currentRec.setCurrentSublistValue({  sublistId: "inventory",fieldId: "item",value: items[i].itemId,ignoreFieldChange: true,forceSyncSourcing:true});
                   currentRec.setCurrentSublistValue({  sublistId: "inventory",fieldId: "adjustqtyby", value: items[i].qty,ignoreFieldChange: true,forceSyncSourcing:true});
                   currentRec.setCurrentSublistValue({  sublistId: "inventory",fieldId: "description", value: items[i].description,ignoreFieldChange: true,forceSyncSourcing:true });
                   
                   currentRec.commitLine({sublistId:"inventory"});
                   console.log('items[i].qty',items[i].qty);
                }

            }catch(err)
            {
                console.log(err);
            }
        }

        return {
            pageInit: pageInit,
            additem: additem,
            addItemsToLine:addItemsToLine
        };

    });

Suitelet script: MR-161 SL Barcode scanning

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */
define(['N/ui/serverWidget'],

    function(serverWidget) {
        /**
         * Definition of the Suitelet script trigger point.
         *
         * @param {Object} context
         * @param {ServerRequest} context.request - Encapsulation of the incoming request
         * @param {ServerResponse} context.response - Encapsulation of the Suitelet response
         * @Since 2015.2
         */
        /**
         * MR-161 Add Items button in Inventory transfer Record
         * Able to add the items into Inventory Transfer record by scanning product barcode
         * Description : Scan the item barcode and add the multiple items into the inventory transfer. 
         */


       //  var CLIENT_SCRIPT = "SuiteScripts/Jobin & Jismi IT Services LLP/MR - 161/CL/MR- 161 CL Barcode scanning.js";

         var CLIENT_SCRIPT =285726


         function createForm(context)
                {
             try{

              var form = serverWidget.createForm({ title: 'Barcode Items'});

                form.clientScriptFileId = CLIENT_SCRIPT;

                form.addButton({
                            id: 'add_item',
                            label: 'Add items',
                            functionName: 'addItems',
                            align : serverWidget.LayoutJustification.RIGHT
                            });
                form.addButton({
                    id: 'preview_page',
                    label: 'Preview',
                    functionName: 'previewItems',
                    align : serverWidget.LayoutJustification.RIGHT
                    });
                
                var sublist = form.addSublist({
                        id: 'items',
                        type: serverWidget.SublistType.EDITOR,
                        label: 'Add item'
                        });

               var barcode = sublist.addField({
                        id : 'barcode',
                        type : serverWidget.FieldType.TEXT,
                        label : 'Barcode'
                        });

               barcode.isMandatory =true;

               var internalid = sublist.addField({
                        id : 'internalid',
                        type : serverWidget.FieldType.TEXT,
                        source:"item",
                        label : 'internalId'
                        });

//               internalid.isMandatory =true;

               internalid.updateDisplayType({
                     displayType : serverWidget.FieldDisplayType.HIDDEN
                    });
               
               var description = sublist.addField({
                   id : 'description',
                   type : serverWidget.FieldType.TEXT,
                   label : 'description'
                   });
               description.updateDisplayType({
                displayType : serverWidget.FieldDisplayType.HIDDEN
               });
               
  

                 var items = sublist.addField({
                        id : 'items',
                        type : serverWidget.FieldType.TEXT,
                        source:"item",
                        label : 'Items'
                        });

                items.updateDisplayType({ displayType : serverWidget.FieldDisplayType.DISABLED });

             items.isMandatory =true;

                 

                return form;

                }
                catch(err)
                   {
                    log.debug("err",err);
                    return;
                   }
                }
        function onRequest(context) {
            try {
                
                context.response.writePage(createForm(context));

            } catch (err) {
                log.debug("err", err);
            }

        }

        return {
            onRequest: onRequest
        };

    });

Leave a comment

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