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
};
});