Suitelet Form to List the Delivery Order

Jira Code: AHD-65

We created a Suitelet form where we can enter the Manifest Number. The script will trigger a search for the delivery order based on the Manifest Number in the CL Manifest Number field and list out the delivery orders in the form.

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */
/**
 * Script Description
 */
/*******************************************************************************
 * 
 * AM Trucking
 * AHD - 66 SL Order List form
 * 
 * NetSuite Name :AHD-66 SL Order List form
 * Script ID: customscript_jj_suitlet_form
 * 
 * *****************************************************************************
 * 
 *  
 * $Author: Jobin & Jismi IT Services LLP $
 * 
 * DESCRIPTION
 * 
 * Date Created :23/03/2019
 * 
 * REVISION HISTORY Update:
 * 
 * 
 * 
 ******************************************************************************/
define(['N/file', 'N/search', 'N/runtime', 'N/record', 'N/https', 'N/encode', 'N/ui/serverWidget', 'N/email'],
    function (file, search, runtime, record, https, encode, serverWidget, email) {
        var main = {
            //function for onRequest-We create the UI
            onRequest: function (context) {
                if (context.request.method === 'GET') {
                    //Enter to GET
                    var response = context.response
                    var form = serverWidget.createForm({
                        title: "Order List"
                    })

                    // form.addButton({
                    //     id: 'Submit',
                    //     label: 'Apply Filter',
                    //     functionName: 'filter'
                    // // })
                    // var hiddenfield = form.addField({
                    //     id: 'hiddenfield',
                    //     type: serverWidget.FieldType.INLINEHTML,
                    //     label: 'Hidden'
                    // })
                    var manifest_numberfield = form.addField({
                        id: 'manifest_number',
                        type: serverWidget.FieldType.TEXT,
                        label: 'Manifest No.'
                    })
                    manifest_numberfield.isMandatory = true;

                    var sublist = form.addSublist({
                        id: 'orderlist',
                        type: serverWidget.SublistType.LIST,
                        label: 'Order List'
                    })
                    sublist.addMarkAllButtons();
                    var checkbox = sublist.addField({
                        id: 'custpage_check',
                        label: '<p align="center">check</p>',
                        type: serverWidget.FieldType.CHECKBOX
                    });
                    checkbox.updateDisplayType({
                        displayType: serverWidget.FieldDisplayType.ENTRY
                    });
                    sublist.addField({
                        id: 'do_order_number',
                        type: serverWidget.FieldType.TEXT,
                        label: 'Delivery Order Number',

                    })
                    sublist.addField({
                        id: 'order_status',
                        type: serverWidget.FieldType.TEXT,
                        label: 'Order Level Status',

                    })
                    // sublist.addField({
                    //     id: 'sku',
                    //     type: serverWidget.FieldType.TEXT,
                    //     label: 'SKU',
                    // })

                    // sublist.addField({
                    //     id: 'displayname',
                    //     type: serverWidget.FieldType.TEXT,
                    //     label: 'Display Name',
                    // })
                    sublist.addField({
                        id: 'cl_manifest_number',
                        type: serverWidget.FieldType.TEXT,
                        label: 'Manifest Number',
                    })
                    //Call for the Client Script and getting values from the Client Script.
                    form.clientScriptFileId = '3488644';
                    var manifest_number = context.request.parameters.manifest_number

                    if (manifest_number == null || manifest_number == undefined || manifest_number == "") {
                        manifest_numberfield.defaultValue = ""
                    } else {
                        var itemvalue = main.itemSearch(sublist, manifest_number, response)
                        manifest_numberfield.defaultValue = manifest_number
                    }
                    form.addSubmitButton({
                        label: 'Send TO Dispatch Tracker'
                    });
                    context.response.writePage(form);
                } else {
                    //POST Part
                    var lines = context.request.getLineCount({
                        group: "orderlist"
                    });
                    log.debug("Post", context)
                    //Getting the values from the selected fields to the array
                    var poobj = [];
                    for (var i = 0; i < lines; i++) {
                        var chkboxvalue = context.request.getSublistValue({
                            group: 'orderlist',
                            name: 'custpage_check',
                            line: i
                        });
                        if (chkboxvalue == 'T') {
                            var so = context.request.getSublistValue({
                                group: 'orderlist',
                                name: 'do_order_number',
                                line: i
                            });
                            poobj.push(so)
                            var response = https.get({
                                url: 'https://forms.na3.netsuite.com/app/site/hosting/scriptlet.nl?script=323&deploy=1&compid=4301600&h=363edd61c2e4501e9bc5&do_number=' + so
                            });
                        }
                    }
                    log.debug("poobj", poobj)
                    var form = serverWidget.createForm({
                        title: "Order List"
                    })
                    var hiddenfield = form.addField({
                        id: 'hiddenfield',
                        type: serverWidget.FieldType.INLINEHTML,
                        label: 'Hidden'
                    })
                    hiddenfield.defaultValue = "<script> window.location.href='/app/site/hosting/scriptlet.nl?script=322&deploy=1';</script>"
                    context.response.writePage(form)
                }

            },

            alignLeft: function (r) {
                return '<p align="Left">' + r + '</p>';
            },
            alignCenter: function (r) {
                return '<p align="Center">' + r + '</p>';
            },
            // Search for the items
            itemSearch: function (sublist, manifest_number, response) {
                var salesorderSearchObj = search.create({
                    type: "salesorder",
                    filters: [
                        ["type", "anyof", "SalesOrd"],
                        "AND",
                        ["custbody_order_level_status", "noneof", "25", "36", "41", "23", "26", "22", "37", "27", "28"],
                        "AND",
                        ["mainline", "is", "T"],
                        "AND",
                        ["custbody_cl_manifest_number", "contains", manifest_number]
                    ],
                    columns: [
                        search.createColumn({
                            name: "custbody_cl_manifest_number",
                            sort: search.Sort.DESC,
                            label: "Manifest Number"
                        }),
                        search.createColumn({
                            name: "trandate",
                            label: "Create Date"
                        }),
                        search.createColumn({
                            name: "custbody_first_received_on",
                            label: "Pickup Date"
                        }),
                        search.createColumn({
                            name: "tranid",
                            label: "Order NUmber"
                        }),
                        search.createColumn({
                            name: "custbody_seller_bol_no",
                            label: "Seller BOL No."
                        }),
                        search.createColumn({
                            name: "otherrefnum",
                            label: "PO/Check Number"
                        }),
                        search.createColumn({
                            name: "custbody_seller_name",
                            label: "Seller"
                        }),
                        search.createColumn({
                            name: "custbody_service_level_description",
                            label: "Service Level"
                        }),
                        search.createColumn({
                            name: "custbody_items_summary",
                            label: "Items Summary"
                        }),
                        search.createColumn({
                            name: "custbody_service_items_summary",
                            label: "Service Items Summary"
                        }),
                        search.createColumn({
                            name: "custbody29",
                            label: "Pickup Terminal"
                        }),
                        search.createColumn({
                            name: "custbody_delivery_branch",
                            label: "Delivery Terminal"
                        }),
                        search.createColumn({
                            name: "custbody_do_con_service5",
                            label: "Special Instructions"
                        }),
                        search.createColumn({
                            name: "custbody_order_level_status",
                            label: "Order Status"
                        })
                    ]
                });
                var searchResultCount = salesorderSearchObj.runPaged().count;
                log.debug("transactionSearchObj result count", searchResultCount);
                var newobj = [];
                var itemlength = searchResultCount
                if (searchResultCount > 3999) {
                    hiddenfield.defaultValue = '<html> <body> <script> alert("Search Result is more than the Limit"); </script> </body> </html>'
                    return []
                }
                salesorderSearchObj.run().each(function (result) {
                    var tempObj = {};
                    var custbody_cl_manifest_number = main.checkifnull(result.getValue({
                        name: "custbody_cl_manifest_number",
                        sort: search.Sort.DESC,
                        label: "Manifest Number"
                    }));
                    tempObj.custbody_cl_manifest_number = custbody_cl_manifest_number;
                    var trandate = main.checkifnull(result.getValue({
                        name: "trandate",
                        label: "Create Date"
                    }));
                    tempObj.trandate = trandate;
                    var custbody_first_received_on = main.checkifnull(result.getText({
                        name: "custbody_first_received_on",
                        label: "Pickup Date"
                    }));
                    tempObj.custbody_first_received_on = custbody_first_received_on;
                    var tranid = main.checkifnull(result.getValue({
                        name: "tranid",
                        label: "Order NUmber"
                    }));
                    tempObj.tranid = tranid;
                    var custbody_seller_bol_no = main.checkifempty(result.getValue({
                        name: "custbody_seller_bol_no",
                        label: "Seller BOL No."
                    }));
                    tempObj.custbody_seller_bol_no = custbody_seller_bol_no;
                    var otherrefnum = main.checkifempty(result.getValue({
                        name: "otherrefnum",
                        label: "PO/Check Number"
                    }));
                    tempObj.otherrefnum = otherrefnum;
                    var custbody_seller_name = main.checkifnull(result.getValue({
                        name: "custbody_seller_name",
                        label: "Seller"
                    }));
                    tempObj.custbody_seller_name = custbody_seller_name;
                    var custbody_service_level_description = main.checkifempty(result.getText({
                        name: "custbody_service_level_description",
                        label: "Service Level"
                    }));
                    tempObj.custbody_service_level_description = custbody_service_level_description;
                    var custbody_order_level_status = main.checkifempty(result.getText({
                        name: "custbody_order_level_status",
                        label: "Order Status"
                    }));
                    tempObj.custbody_order_level_status = custbody_order_level_status;

                    newobj.push(tempObj);
                    return true;
                });

                main.setValue(newobj, sublist, itemlength, response)

            },
            //Setting Values to the Sublist
            setValue: function (itemvalue, sublist, j, response) {
                log.debug("itemvalue111", itemvalue)
                for (i = 0; i < j; i++) {
                    sublist.setSublistValue({
                        id: 'custpage_check',
                        line: i,
                        value: 'T'
                    });
                    sublist.setSublistValue({
                        id: 'cl_manifest_number',
                        line: i,
                        value: main.alignLeft(itemvalue[i].custbody_cl_manifest_number)
                    });
                    // sublist.setSublistValue({
                    //     id: 'po',
                    //     line: i,
                    //     value: main.alignLeft(itemvalue[i].trandate)
                    // });
                    // sublist.setSublistValue({
                    //     id: 'sku',
                    //     line: i,
                    //     value: main.alignLeft(itemvalue[i].custbody_first_received_on)
                    // });
                    sublist.setSublistValue({
                        id: 'do_order_number',
                        line: i,
                        value: itemvalue[i].tranid
                    });
                    // sublist.setSublistValue({
                    //     id: 'qty',
                    //     line: i,
                    //     value: itemvalue[i].custbody_seller_bol_no
                    // });
                    // sublist.setSublistValue({
                    //     id: 'price',
                    //     line: i,
                    //     value: itemvalue[i].otherrefnum
                    // });
                    // sublist.setSublistValue({
                    //     id: 'totallaneitem',
                    //     line: i,
                    //     value: itemvalue[i].custbody_seller_name
                    // });
                    // sublist.setSublistValue({
                    //     id: 'vendorcode',
                    //     line: i,
                    //     value: main.alignCenter(itemvalue[i].custbody_service_level_description)
                    // });
                    sublist.setSublistValue({
                        id: 'order_status',
                        line: i,
                        value: itemvalue[i].custbody_order_level_status
                    });

                }


            },
            checkifnull: function (argument) {
                if (argument != undefined && argument != null && argument != '')
                    return argument;
                else
                    return "-";
            },
            checkifempty: function (argument) {
                if (argument != undefined && argument != null && argument != '')
                    return argument;
                else
                    return 0;
            },


        }

        for (var key in main) {
            if (typeof main[key] === 'function') {
                main[key] = trycatch(main[key], key);
            }
        }

        function trycatch(myfunction, key) {
            return function () {
                try {
                    return myfunction.apply(this, arguments);
                } catch (e) {
                    log.debug("e in  " + key, e);
                }
            }
        };

        return main;
    });

Leave a comment

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