User event script to set Stock Tag in Work Order.

Jira code: AN-2 Task 2

Place one Stock Tag button in the work order(WO) record. This button is set only if that WO is not created from a Sales Order. On that button click, it will create the Stock tag PDF with the data from the WO. The tag includes details such as Product, WO#, Lot Number, COO, Date Received, and Mfg. Date.

User Event Script

/**
 * @NApiVersion 2.x
 * @NScriptType UserEventScript
 * @NModuleScope SameAccount
 */

/**
 * Script Description: This script is for setting a buttons in the Work Order record
 */

/*******************************************************************************
 * * AN * *
 * **************************************************************************
 * Date:06/11/18 
 * Script name: AN UE WO Buttons
 * Script id: customscript_an_ue_wo_buttons
 * Deployment id: customdeploy_an_ue_wo_buttons
 * Applied to: Work order
 * 

 ******************************************************************************/

define(['N/search'],

function(search) {
   
    /**
     * Function definition to be triggered before record is loaded.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.newRecord - New record
     * @param {string} scriptContext.type - Trigger type
     * @param {Form} scriptContext.form - Current form
     * @Since 2015.2
     */
    function beforeLoad(scriptContext) {
    	try {
    		
    		
    		var CustRec=scriptContext.form;
    		if(scriptContext.type == 'view'){
    			
    			
    			
    			//Loading Client Script
    			CustRec.clientScriptFileId = 10173;
    			
    			var recId=scriptContext.newRecord.id;
    			log.debug({    
    				title: 'recId',
                    details: recId
                });
    			
    			var transactionSearchObj = search.create({
    				   type: "transaction",
    				   filters:
    				   [
    				      ["mainline","is","T"], 
    				      "AND", 
    				      ["internalidnumber","equalto",recId], 
    				      "AND", 
    				      ["createdfrom.type","anyof","SalesOrd"]
    				   ],
    				   columns:
    				   [
    				      search.createColumn({
    				         name: "tranid",
    				         sort: search.Sort.ASC,
    				         label: "Document Number"
    				      })
    				   ]
    				});
    				var searchResultCount = transactionSearchObj.runPaged().count;
    				log.debug("transactionSearchObj result count",searchResultCount);
    				
    			
              	
              	if(searchResultCount==0){
              		
              	//Set Raw Material Tag button
        			var stockTag=CustRec.addButton({
        				id:'custpage_stock_tag_btn',
        				label:'Stock Tag',
        				functionName:'stockTag'
        			});
              		
              	}
		    
    		}
    	
			
		} catch (e) {
			
			log.debug({    
				title: e.name,
                details: e.message
            });
		}

    }

   

    return {
        beforeLoad: beforeLoad
    };
    
});

Client Script

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */

/**
 * Script Description: This script defining the function of button   
 */

/*******************************************************************************
 * * AN * *
 * **************************************************************************
 * Date:6/11/18 
 * Script name: AN CS WO Btn Action
 * Script id: customscript_an_cs_wo_btn_action
 * Deployment id: customdeploy_an_cs_wo_btn_action
 * Applied to: Work order
 * 

 ******************************************************************************/


define(['N/currentRecord','N/record','N/url'],

function(currentRecord,record,url) {
    
    /**
     * 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) {
    	try {
    		console.log("In");
			
		} catch (e) {
			console.log(e.name,e.message);
		}
    }
    
    function stockTag() {
    	try {
    		console.log("stockTag");
    		var recID = currentRecord.get().id;

            var parameterObj = {
                intenalId: recID
            };
            var recObj = record.load({ type: "workorder", id: recID });
          
          
            var labelUrl = url.resolveScript({
                scriptId: "customscript_sl_stock_tag",
                deploymentId: "customdeploy_sl_stock_tag",
                returnExternalUrl: false,
                params: parameterObj
            });
            var childwindow = window.open(labelUrl);
			
		} catch (e) {
			console.log(e.name,e.message);
		}
		
	}
    

    

    return {
        pageInit: pageInit,
        stockTag: stockTag
    };
    
});

XML Code

<?xml version="1.0"?>
<!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<pdf>

    <head>
        <macrolist>
            <macro id="nlfooter">
                <table class="footer" style="width: 100%;">
                    <tr> 
                        <td align="center" class="pagenumber">
                            <pagenumber /> of
                            <totalpages />
                        </td> 
                     </tr>       
                </table>
            </macro>
         
        </macrolist>
        <style type="text/css">
        span.title {
            font-size: 24pt;
        }

        span.pagenumber {
            font-size: 10pt;
        }

        span.number {
            font-size: 16pt;
        }
        .pagenumber {
            font-size: 6pt;
        }

        .addressheader {
            font-size: 9pt;
        }

        span.itemname {
            font-weight: bold;
            line-height: 150%;
        }
        barcode{
        	width: 450px;
        	height:75px;
        }
       
        </style>
    </head>

    <body header="nlheader" header-height="10%" footer="nlfooter" footer-height="10pt" padding="0.35in 0.35in 0.35in 0.35in" size="A4">
    		<br></br>
    			<p class="title" align="center" style="font-size:28px;">
                 	<b>Stock Tag</b>
                </p>				

             <br></br> 
        ReplacewithContent
    </body>
</pdf>

Suitelet

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */

/**
 * Script Description: PDF Creation 
 */

/*******************************************************************************
 * * AN * *
 * **************************************************************************
 * Date:6/11/18 
 * Script name: AN SL Stock Tag
 * Script id: customscript_sl_stock_tag
 * Deployment id: customdeploy_sl_stock_tag
 * 

 ******************************************************************************/

define(['N/file','N/render','N/record','N/search'],

function(file,render,record,search) {
   
    /**
     * 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
     */
    function onRequest(context) {
    	try {
    		
    		 
             
             var internalId = context.request.parameters.intenalId;
             log.debug({    
  				title: "record internalId",
                  details: internalId
              });
             var recordObj = record.load({ type: "workorder", id: internalId });
             var WoNo=recordObj.getText({
    			 fieldId: 'tranid'
        	 });
             var itemNameV=recordObj.getValue({
    			 fieldId: 'assemblyitem'
        	 });
             var itemName=recordObj.getText({
    			 fieldId: 'assemblyitem'
        	 });
             var locationv=recordObj.getValue({
    			 fieldId: 'location'
        	 });
             
             var countryofOrigindtls = null;
             if((locationv!=null) && (locationv!=undefined) && (locationv!='')){
             	var countryofOrigindtls = search.lookupFields({
                     type: record.Type.LOCATION,
                     id: locationv,
                     columns: ['country']
                 });
            
             }
             
             var receiveDate = recordObj.getText({
    			 fieldId: 'trandate'
        	 });
             var mfgDate= recordObj.getText({
    			 fieldId: 'enddate'
        	 });
             var countryofOrigin=countryofOrigindtls.country;
             
             log.debug({    
    				title: "WoNo",
                    details: WoNo
                });
             
             
             var numLines = recordObj.getLineCount({
                 sublistId: 'item'
             });
             log.debug({    
   				title: "numLines",
                   details: numLines
               });
             var bodyContent = '';
 
             var numpages = 0;
             
             var assemblyitemSearchObj = search.create({
            	   type: "assemblyitem",
            	   filters:
            	   [
            	      ["type","anyof","Assembly"], 
            	      "AND", 
            	      ["internalidnumber","equalto",itemNameV]
            	   ],
            	   columns:
            	   [
            	      search.createColumn({
            	         name: "itemid",
            	         summary: "GROUP",
            	         sort: search.Sort.ASC,
            	         label: "Name"
            	      }),
            	      search.createColumn({
            	         name: "serialnumber",
            	         summary: "MAX",
            	         label: "Serial/Lot Number"
            	      })
            	   ]
            	});
            	var searchResultCount = assemblyitemSearchObj.runPaged().count;
            	log.debug("assemblyitemSearchObj result count",searchResultCount);
            	
            	var lotNumber=null;
            	if(searchResultCount>0){
            		result = assemblyitemSearchObj.run().getRange({
						start: 0,
						end: 1
					});
            		lotNumber = result[0].getValue({
						name: "serialnumber",
           	         	summary: "MAX"
					});	
            		
            	}
            	
            	
                  
                 var content = '<div style="border:1px;"> <table style="width: 100%; margin-top: 10px;font-size:24px;"> <tr> <td align="center"> <b>Product: '+itemName+'</b></td> </tr> <tr><td> Replacewithitemcode </td> </tr> <tr> <td align="center"><b> WO#: '+WoNo+' </b></td> </tr> <tr><td> ReplacewithWONo </td></tr><tr> <td align="center"><b> COO: '+countryofOrigin+'</b> </td> </tr> <tr><td> ReplacewithCountryofOrigin </td></tr> <tr> <td align="center"><b> Lot Number: '+lotNumber+'</b> </td> </tr> <tr><td> ReplacewithLotNumber </td> </tr> <tr> <td align="center"><b> Date Received: '+receiveDate+'</b> </td> </tr> <tr><td> Replacewithdate </td></tr> <tr> <td> </td> </tr> <tr> <td align="center"><b> Mfg. Date: '+mfgDate+'</b> </td> </tr> <tr><td> Replacewithmfgdate </td></tr> <tr> <td> </td> </tr> </table> </div><br></br><br></br>';
                
                 
                 
                 if((itemName!=null) && (itemName!=undefined) && (itemName!='')){
                	 content = content.replace("Replacewithitemcode", '<barcode codetype="code128"  style="width: 640px;" align="center" showtext="false" value="'+itemName+'"> </barcode>');
                 }
                 else{
                	 content = content.replace("Replacewithitemcode", '<span></span>');
                 }
                 
                 
                 if((WoNo!=null) && (WoNo!=undefined) && (WoNo!='')){
                	 content = content.replace("ReplacewithWONo", '<barcode codetype="code128" align="center" showtext="false" value="'+WoNo+'"> </barcode>');
                 }
                 else{
                	 content = content.replace("ReplacewithWONo", '<span></span>');
                 }
                 
                 if((countryofOrigin!=null) && (countryofOrigin!=undefined) && (countryofOrigin!='')){
                	 content = content.replace("ReplacewithCountryofOrigin", '<barcode codetype="code128" align="center" showtext="false" value="'+countryofOrigin+'"> </barcode>');
                 }
                 else{
                	 content = content.replace("ReplacewithCountryofOrigin", '<span></span>');
                 }
                 
                 
                 if((lotNumber!=null) && (lotNumber!=undefined) && (lotNumber!='')){
                	 content = content.replace("ReplacewithLotNumber", '<barcode codetype="code128" align="center" showtext="false" value="'+lotNumber+'"></barcode>');
                 }
                 else{
                	 content = content.replace("ReplacewithLotNumber", '<span></span>');
                 }
                 
                 
                 if((receiveDate!=null) && (receiveDate!=undefined) && (receiveDate!='')){
                	 content = content.replace("Replacewithdate", '<barcode codetype="code128" align="center" showtext="false" value="'+receiveDate+'"></barcode>');
                 }
                 else{
                	 content = content.replace("Replacewithdate", '<span></span>');
                 }
                 
                 if((mfgDate!=null) && (mfgDate!=undefined) && (mfgDate!='')){
                	 content = content.replace("Replacewithmfgdate", '<barcode codetype="code128" align="center" showtext="false" value="'+mfgDate+'"></barcode>');
                 }
                 else{
                	 content = content.replace("Replacewithmfgdate", '<span></span>');
                 }
            	
            	
                 bodyContent += content;
            	
            	
             
             var myXMLFile = file.load({
                 id: '10172'
             });
             var xmlContent = myXMLFile.getContents();
             
             xmlContent = xmlContent.replace("ReplacewithContent",bodyContent);
             var pdfFile = render.xmlToPdf({
                 xmlString: xmlContent
             });
             pdfFile.name = "stockTag.pdf"
             context.response.writeFile(pdfFile,true);
			
		} catch (e) {
			log.debug({    
				title: e.name,
                details: e.message
            });
		}

    }

    return {
        onRequest: onRequest
    };
    
});

Leave a comment

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