Suitelet page for displaying items in the customer portal

/**
 * @NApiVersion 2.1
 * @NScriptType Suitelet
 */


define(['N/ui/serverWidget', 'N/record', 'N/redirect', 'N/search'],

  (serverWidget, record, redirect, search) => {
    /***
     * Function to retrieve custom list options
     * */
    function getCustomListOptions() {
      try{
      let options = [];
      let searchObj = search.create({
        type: 'customlist_jj_size_list',
        filters: [
        ],
        columns: [
          search.createColumn({
            name: 'name',
            sort: search.Sort.ASC
          }),
          search.createColumn({
            name: 'internalid'
          })
        ]
      });
      searchObj.run().each(function (result) {
        let value = result.getValue({ name: 'internalid' });
        let text = result.getValue({ name: 'name' });
        options.push({
          value: value,
          text: text
        });
        return true;
      });
      return options;
    }catch(e){
      log.error("error@getCustomListOptions", e)
    }
    }
    /**
     * Defines the Suitelet script trigger point.
     * @param {Object} scriptContext
     * @param {ServerRequest} scriptContext.request - Incoming request
     * @param {ServerResponse} scriptContext.response - Suitelet response
     * @since 2015.2
     */
    const onRequest = (scriptContext) => {

      if (scriptContext.request.method === 'GET') {
        try {
          let dataObj = scriptContext.request.parameters.currentRec
          let palletForm = serverWidget.createForm({
            title: 'Enter Pallet Information'
          });
          let idField = palletForm.addField({
            id: 'custpage_variable',
            type: serverWidget.FieldType.TEXT,
            label: 'Variable',
            defaultValue: dataObj
          });
          idField.defaultValue = dataObj;
          palletForm.getField({
            id: "custpage_variable"
          }).updateDisplayType({
            displayType: serverWidget.FieldDisplayType.HIDDEN
          });
          // Retrieve the custom list options using search
          let customListOptions = getCustomListOptions();
          // Number of dropdown fields to create
          let numDropdowns = 2;
          for (let i = 1; i <= numDropdowns; i++) {
            let dropdownField = palletForm.addField({
              id: 'dropdown_' + i,
              type: serverWidget.FieldType.SELECT,
              label: 'Size ' + i
            });
            // Set the options for each dropdown field
            dropdownField.addSelectOption({
              value: '',
              text: '',
              isSelected: true
            });
            for (let j = 0; j < customListOptions.length; j++) {
              dropdownField.addSelectOption({
                value: customListOptions[j].value,
                text: customListOptions[j].text
              });
            }
          }
          palletForm.addField({
            id: 'custpage_text1',
            type: serverWidget.FieldType.TEXT,
            label: 'PALLET QUANTITY #1'
          });
          palletForm.addField({
            id: 'custpage_text2',
            type: serverWidget.FieldType.TEXT,
            label: 'PALLET QUANTITY #2'
          });

          // Add a submit button
          palletForm.addSubmitButton({
            label: 'Submit'
          });

          scriptContext.response.writePage(palletForm);
        } catch (e) {
          log.debug("error@GET", e)
        }
      }

      else if (scriptContext.request.method === 'POST') {
        try {
          let internalId = scriptContext.request.parameters.custpage_variable;
          let sizeOne = scriptContext.request.parameters.dropdown_1;
          let sizeTwo = scriptContext.request.parameters.dropdown_2;
          let quantityOne = scriptContext.request.parameters.custpage_text1;
          let quantityTwo = scriptContext.request.parameters.custpage_text2;
          let recordObject = record.load({
            type: record.Type.ITEM_RECEIPT,
            id: internalId,
            isDynamic: true,
          });
          recordObject.setValue({
            fieldId: 'custbody_jj_size_1',
            value: sizeOne
          })
          recordObject.setValue({
            fieldId: 'custbody_jj_size2',
            value: sizeTwo
          })
          recordObject.setValue({
            fieldId: 'custbody_jj_pallet_quantity_1',
            value: quantityOne
          })
          recordObject.setValue({
            fieldId: 'custbody_jj_pallet_quantity_2',
            value: quantityTwo
          })
          recordObject.save();
          redirect.redirect({
            url: 'https://5272043-sb1.app.netsuite.com/app/accounting/transactions/itemrcpt.nl?id=' + internalId + '&whence=',
          })

        } catch (e) {
          log.debug("error@POST", e)
        }
      }
    }
    return { onRequest }

  });

Leave a comment

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