Suitelet to Generate a Custom Sales Report
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
*/
define([‘N/ui/serverWidget’, ‘N/record’, ‘N/search’, ‘N/render’, ‘N/file’],
function(serverWidget, record, search, render, file) {
function onRequest(context) {
if (context.request.method === ‘GET’) {
var form = serverWidget.createForm({
title: ‘Custom Sales Report’
});
var startDateField = form.addField({
id: ‘custpage_startdate’,
type: serverWidget.FieldType.DATE,
label: ‘Start Date’
});
var endDateField = form.addField({
id: ‘custpage_enddate’,
type: serverWidget.FieldType.DATE,
label: ‘End Date’
});
form.addSubmitButton({
label: ‘Generate Report’
});
context.response.writePage(form);
} else if (context.request.method === ‘POST’) {
var startDate = context.request.parameters.custpage_startdate;
var endDate = context.request.parameters.custpage_enddate;
var salesOrderSearch = search.create({
type: search.Type.SALES_ORDER,
filters: [
[‘trandate’, ‘within’, startDate, endDate], // Date range filter
‘AND’,
[‘mainline’, ‘is’, ‘T’] // Only main line (summary) records
],
columns: [
search.createColumn({name: ‘tranid’, label: ‘Sales Order’}),
search.createColumn({name: ‘entity’, label: ‘Customer’}),
search.createColumn({name: ‘trandate’, label: ‘Date’}),
search.createColumn({name: ‘total’, label: ‘Total Amount’})
]
});
var reportHTML = ‘<h1>Sales Report</h1>’;
reportHTML += ‘<p>From: ‘ + startDate + ‘ To: ‘ + endDate + ‘</p>’;
reportHTML += ‘<table border=”1″>’;
reportHTML += ‘<tr><th>Sales Order</th><th>Customer</th><th>Date</th><th>Total Amount</th></tr>’;
salesOrderSearch.run().each(function(result) {
reportHTML += ‘<tr>’;
reportHTML += ‘<td>’ + result.getValue(‘tranid’) + ‘</td>’;
reportHTML += ‘<td>’ + result.getText(‘entity’) + ‘</td>’;
reportHTML += ‘<td>’ + result.getValue(‘trandate’) + ‘</td>’;
reportHTML += ‘<td>’ + result.getValue(‘total’) + ‘</td>’;
reportHTML += ‘</tr>’;
return true;
});
reportHTML += ‘</table>’;
context.response.write(reportHTML);
}
}
return {
onRequest: onRequest
};
});