Script for Quantity Order column in Purchase order

The client script that validates the line based on location on the purchase order and data is sourced to on hand field.

define(['N/currentRecord', 'N/record', 'N/search'],
    /**
     * @param{currentRecord} currentRecord
     * @param{record} record
     * @param{search} search
     */
    function (currentRecord, record, search) {

        "use strict"
        /**
         * @description checks the value
         * @param {string} parameter 
         * @returns boolean
         */
        function checkForParameter(parameter) {
            if (parameter !== "" && parameter !== null && parameter !== undefined && parameter !== false && parameter !== "null" && parameter !== "undefined" && parameter !== " " && parameter !== 'false') {
                return true;
            } else {
                return false;
            }
        }

        /**
         * @description search to get on hand value
         * @param {string} item 
         * @returns array
         */
        function itemSearch(item, locationValue) {
            try {
                let itemSearchObj = search.create({
                    type: "item",
                    filters:
                        [
                            ["internalid", "is", item],
                            "AND",
                            ["inventorylocation.name", "is", locationValue]
                        ],
                    columns:
                        [
                            search.createColumn({ name: "type", label: "Type" }),
                            search.createColumn({ name: "locationquantityonorder", label: "Location On Order" }),
                        ]
                });
                let quantityOnOrder = null;
                itemSearchObj.run().each(function (result) {
                    quantityOnOrder = result.getValue({
                        name: "locationquantityonorder",
                    });
                    return false;
                });
                return quantityOnOrder;
            }
            catch (e) {
                console.log("error @itemSearch", e)
                return null;
            }
        }

        /**
         * Validation function to be executed when sublist line is committed.
         * @param {Object} scriptContext
         * @param {Record} scriptContext.currentRecord - Current form record
         * @param {string} scriptContext.sublistId - Sublist name
         * @returns {boolean} Return true if sublist line is valid
         * @since 2015.2
         */
        function validateLine(scriptContext) {
            try {
                let currentRecord = scriptContext.currentRecord;
                let locationValue = currentRecord.getText({
                    fieldId: "location"
                })
                let item = currentRecord.getCurrentSublistValue({
                    sublistId: "item",
                    fieldId: 'item'
                });
                if (checkForParameter(item) && checkForParameter(locationValue)) {
                    let itemRes = itemSearch(item, locationValue);
                    itemRes = checkForParameter(itemRes) ? itemRes : 0;
                    currentRecord.setCurrentSublistValue({
                        sublistId: "item",
                        fieldId: 'custcol_jj_on_order',
                        value: Number(itemRes),
                        ignoreFieldChange: true
                    });
                }
                return true;
            } catch (e) {
                console.log("error @validateLine", e);
                return true;

            }
        }

        return {
            validateLine: validateLine,
        };

    });

Leave a comment

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