Create Custom Reports with Suitelets

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

  };

});

Leave a comment

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