Vendor centre access using Suitelet

Jira Code : BLUEL-31

Script to create custom purchase order list for the required status. The purchase orders will be taken by search and show it as a list by suitelet.

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */
/**
 * Script Description
 *  BLUEL-31 Vendor access. List the PO for vendor role.
 */
/*******************************************************************************
 * Brandscope Pty Ltd
 * **************************************************************************
 * 
 * Date: 06/06/2019
 * 
 * Author: Jobin & Jismi IT Services LLP
 * 
 * 
 * REVISION HISTORY
 * 
 * Revision 1 $ 06/06/2019 Maria: Create
 * 
 ******************************************************************************/
define(['N/record', 'N/search', 'N/ui/serverWidget', 'N/runtime'],

function(record, search, serverWidget, runtime) {
   
    /**
     * 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 vendorId = runtime.getCurrentUser().id;
    		
    		//search to get the PO list for the logged vendor
    		var purchaseorderSearchObj = search.create({
    			   type: "purchaseorder",
    			   filters:
    			   [
    			      ["type","anyof","PurchOrd"], 
    			      "AND",     			  
					  [ "mainline", "is", "T" ],
					    "AND",
    			      ["status","anyof","PurchOrd:D","PurchOrd:E","PurchOrd:B"], 
    			      "AND",
					  [ "vendor.internalidnumber", "equalto",
						  vendorId ]
    			   ],
    			   columns:
    			   [
    			      search.createColumn({name: "internalid", label: "Internal ID"}),
    			      search.createColumn({name: "trandate", label: "Date"}),
    			      search.createColumn({name: "tranid", label: "Document Number"}),
    			      search.createColumn({name: "entity", label: "Name"}),
    			      search.createColumn({name: "statusref", label: "Status"}),
    			      search.createColumn({name: "amount", label: "Amount"})
    			   ]
    			});
    			var searchResultCount = purchaseorderSearchObj.runPaged().count;
    			log.debug("purchaseorderSearchObj result count",searchResultCount);

    			var searchResultCount = purchaseorderSearchObj.runPaged().count;
				var array = [];			
				
				var start = 0;
				var end = 1000;

				var poresultarray = [];
				var result;			

				for (var i = 0; i < Math.ceil(searchResultCount / 1000); i++) {
					result = purchaseorderSearchObj.run().getRange({
						start : start,
						end : end
					});

					for (var j = 0; j < result.length; j++) {
						
						var singleresult = {};
						singleresult.id = result[j].getValue({
							name : "internalid",
							label : "Internal ID"
						});
						singleresult.date = result[j].getValue({
							name: "trandate", 
							label: "Date"
						});
						singleresult.tranid = result[j].getValue({
							name: "tranid", 
							label: "Document Number"
						});
						singleresult.status = result[j].getValue({
							name: "statusref", 
							label: "Status"
						});
						singleresult.amount = result[j].getValue({
							name: "amount", 
							label: "Amount"
						});
						poresultarray.push(singleresult);
					}
					logme("poresultarray",poresultarray);
					start = end;
					end = end + 1000;
				}    			

    				// Custom form
	    			var form = serverWidget.createForm({
	                    title: 'Update Purchase Orders'
	                });
	    			
	    			var po_sublist = form.addSublist({
	                    id: 'custpage_purchase_order_sublist',
	                    type: serverWidget.SublistType.LIST,
	                    label: 'Purchase Orders',
	                    align: serverWidget.LayoutJustification.CENTER	
	                });
	    			
	    			
	    			var po_trandate = po_sublist.addField({
                        id: 'custpage_purchase_order_trandate',
                        type: serverWidget.FieldType.TEXT,
                        label: 'Date',
                    });
	    			var po_tranid = po_sublist.addField({
                        id: 'custpage_purchase_order_tranid',
                        type: serverWidget.FieldType.TEXT,
                        label: 'Document Number',
                    });
	    			var po_statusref = po_sublist.addField({
                        id: 'custpage_purchase_order_statusref',
                        type: serverWidget.FieldType.TEXT,
                        label: 'STATUS',
                    });
	    			var po_amount = po_sublist.addField({
                        id: 'custpage_purchase_order_amount',
                        type: serverWidget.FieldType.TEXT,
                        label: 'AMOUNT',
                    });
	    			
	    			var po_internalid = po_sublist.addField({
                        id: 'custpage_purchase_order_internalid',
                        type: serverWidget.FieldType.TEXT,
                        label: 'Edit',
                    });

	    			if (poresultarray) {

                        for (j = 0; j < poresultarray.length; j++) {

                            if (poresultarray[j].id) {
                            	
                            	
                            	po_sublist.setSublistValue({
                                    id: 'custpage_purchase_order_internalid',
                                    line: j,
                                    value:  "<a href='/app/site/hosting/scriptlet.nl?script=442&deploy=1&purchase_order=" + poresultarray[j].id + "'>Edit</a>" 
                                });
                            }
                            if (poresultarray[j].date) {
                            	po_sublist.setSublistValue({
                                    id: 'custpage_purchase_order_trandate',
                                    line: j,
                                    value: poresultarray[j].date
                                });
                            }
                            if (poresultarray[j].tranid) {
                            	po_sublist.setSublistValue({
                                    id: 'custpage_purchase_order_tranid',
                                    line: j,
                                    value: (poresultarray[j].tranid)
                                });
                            }
                            if (poresultarray[j].status) {
                            	po_sublist.setSublistValue({
                                    id: 'custpage_purchase_order_statusref',
                                    line: j,
                                    value: (poresultarray[j].status)
                                });
                            }
                            if (poresultarray[j].amount) {
                            	po_sublist.setSublistValue({
                                    id: 'custpage_purchase_order_amount',
                                    line: j,
                                    value: (poresultarray[j].amount)
                                });
                            }
                        }
                    }	
	    				
	    			
	    			context.response.writePage(form);

    		
	    }catch (e) {
			logme("error@onRequest", getError(e));
		}

    }
    /*******************************************************************************
	 * return error
	 * 
	 * @param e
	 * @returns
	 * 
	 * Created on 6-June-2019 by Maria
	 */
	function getError(e) {
		var stErrMsg = '';
		if (e.getDetails != undefined) {
			stErrMsg = '_' + e.getCode() + '<br>' + e.getDetails() + '<br>'
			+ e.getStackTrace();
		} else {
			stErrMsg = '_' + e.toString();
		}
		return stErrMsg;
	}

	/*******************************************************************************
	 * Log these data
	 * 
	 * @param title
	 * @param details
	 * @returns
	 * 
	 * Created on 14-May-2019 by Maria
	 */
	function logme(title, details) {
		log.debug({
			title : title,
			details : details
		});
	}

    return {
        onRequest: onRequest
    };
    
});

Leave a comment

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