Create function on the purchase order to manually send the order to DispatchTrack

Jira Code: AHD-111

Create function on the purchase order to manually send the order to DispatchTrack. Using send to button click, the purchase order details will auto-populated in the dispatchTrack.

//User event script for creating a button in the purchase order.

/**
 * @NApiVersion 2.x
 * @NScriptType UserEventScript
 * @NModuleScope SameAccount
 */
define(['N/record', 'N/search'],
    function(record, search) {
        function beforeLoad(context) {
            try {
                if (context.type == 'view') {


                    var purchaseOrder = context.form;

                    context.form.clientScriptFileId = 10460864;

                    var purchaseOrderBtn = purchaseOrder.addButton({
                        id: 'custpage_purchasebtn',
                        label: 'Send to DT',
                        functionName: 'purchasebtn'
                    });

                }
            } catch (er) {
                log.debug('er', er);
            }

        }

        return {
            beforeLoad: beforeLoad
        };
    });



// creating client script for button actions


/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
define(['N/currentRecord', 'N/url', 'N/https'],

    function(currentRecord, url, https) {

        /**
         * Function to be executed after page is initialized.
         *
         * @param {Object} scriptContext
         * @param {Record} scriptContext.currentRecord - Current form record
         * @param {string} scriptContext.mode - The mode in which the record is being accessed (create, copy, or edit)
         *
         * @since 2015.2
         */
        function pageInit(scriptContext) {
            console.log("hands up")

        }

        function purchasebtn(scriptContext) {
            try {
                var po = cu.rrentRecordget();
                var po_id = po.id;
                console.log(po_id);
                var output = url.resolveScript({
                    scriptId: 'customscript_jj_sl_ahd_111_purchase_ored',
                    deploymentId: 'customdeploy_jj_sl_ahd_111_purchase_ored',
                    returnExternalUrl: true,
                }) + '&po_id=' + po_id;
                console.log(output);

                https.get({
                    url: output
                });
            } catch (er) {
                log.debug('er', er);
            }

        }

        return {
            pageInit: pageInit,
            purchasebtn: purchasebtn

        };

    });



//create suitelet for xml updation in dispatchtrack

/**
 * @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/email', 'N/ui/serverWidget', 'N/xml'],
    function(file, search, runtime, record, https, email, serverWidget, xml) {
        var main = {
            //function for onRequest-We create the UI
            onRequest: function(context) {
                log.debug("check");
                var do_number = context.request.parameters.do_number
                log.debug("do_number", do_number)
                var orders = main.findtheOrders(do_number);
                for (var j = 0; j < orders.length; j++) {
                    var orderswithStatus = main.pushtoDispatch(orders[j]);
                }
            },
            findtheOrders: function(do_number) {
                var orders = [];
                var salesorderSearchObj = search.create({
                    type: "salesorder",
                    filters: [
                        ["type", "anyof", "SalesOrd"],
                        "AND",
                        ["tranid", "is", do_number],
                        "AND",
                        ["mainline", "is", "T"],
                        "AND",
                        ["custbody_on_hold", "is", "F"]
                    ],
                    columns: [
                        search.createColumn({
                            name: "tranid",
                            label: "tranid"
                        }),
                        search.createColumn({
                            name: "internalid",
                            label: "internalid"
                        }),
                        search.createColumn({
                            name: "custbody_delivery_branch",
                            label: "custbody_delivery_branch"
                        }),
                        search.createColumn({
                            name: "custbody_stc_total_after_discount",
                            label: "custbody_stc_total_after_discount"
                        }),
                        search.createColumn({
                            name: "shipdate",
                            label: "shipdate"
                        }),
                        search.createColumn({
                            name: "lastmodifieddate",
                            label: "lastmodifieddate"
                        }),
                        search.createColumn({
                            name: "custbody17",
                            label: "custbody17"
                        }),
                        search.createColumn({
                            name: "addressee",
                            join: "shippingAddress",
                            label: " Addressee"
                        }),
                        search.createColumn({
                            name: "address1",
                            join: "shippingAddress",
                            label: " Address 1"
                        }),
                        search.createColumn({
                            name: "address2",
                            join: "shippingAddress",
                            label: " Address 2"
                        }),
                        search.createColumn({
                            name: "city",
                            join: "shippingAddress",
                            label: " City"
                        }),
                        search.createColumn({
                            name: "state",
                            join: "shippingAddress",
                            label: " State"
                        }),
                        search.createColumn({
                            name: "zip",
                            join: "shippingAddress",
                            label: " Zip"
                        }),
                        search.createColumn({
                            name: "phone",
                            join: "shippingAddress",
                            label: " Phone"
                        }),
                        search.createColumn({
                            name: "custrecord152",
                            join: "shippingAddress",
                            label: "Email"
                        }),
                        search.createColumn({
                            name: "custrecord_alt_phone",
                            join: "shippingAddress",
                            label: "Alt Phone"
                        })

                    ]
                });
                var columns = salesorderSearchObj.columns;
                var searchResultCount = salesorderSearchObj.runPaged().count;
                log.debug("salesorderSearchObj result count", searchResultCount);
                salesorderSearchObj.run().each(function(result) {
                    var dataObj = {};
                    for (var i = 0 in columns) {
                        dataObj[columns[i].label] = result.getValue(columns[i]);
                        if (columns[i].label == "internalid") {
                            var deliveryorder = record.load({
                                type: record.Type.SALES_ORDER,
                                id: dataObj.internalid
                            });
                            dataObj.ordernumber = deliveryorder.getValue({
                                fieldId: 'custbody_cl_pro_number'
                            });
                            dataObj.orderdate = deliveryorder.getText({
                                fieldId: 'trandate'
                            });
                            dataObj.deliveryzone = deliveryorder.getValue({
                                fieldId: 'custbody_do_delivery_zone'
                            });
                            dataObj.origin = deliveryorder.getValue({
                                fieldId: 'custbody30'
                            });
                            dataObj.bolnumber = deliveryorder.getValue({
                                fieldId: 'custbody_seller_bol_no'
                            });
                            dataObj.ponumber = deliveryorder.getValue({
                                fieldId: 'otherrefnum'
                            });
                            dataObj.orderstatus = deliveryorder.getText({
                                fieldId: 'custbody_order_level_status'
                            });
                            dataObj.firstrecievedon = deliveryorder.getText({
                                fieldId: 'custbody_first_received_on'
                            });
                            dataObj.estimatedate = deliveryorder.getText({
                                fieldId: 'custbody_eta_date_calc'
                            });
                            dataObj.schedule = deliveryorder.getText({
                                fieldId: 'custbody_mzc_pkup_schd_day_sh'
                            });
                            dataObj.priority2 = deliveryorder.getText({
                                fieldId: 'custbody_p1_priority'
                            });
                            dataObj.priority1 = deliveryorder.getText({
                                fieldId: 'custbody_customer_loading_priority'
                            });
                            dataObj.manifest = deliveryorder.getText({
                                fieldId: 'custbody_cl_manifest_number'
                            });
                            dataObj.customername = deliveryorder.getValue({
                                fieldId: 'custbody_seller_name'
                            });
                            dataObj.entity = deliveryorder.getValue({
                                fieldId: 'entity'
                            });
                            dataObj.memo = deliveryorder.getValue({
                                fieldId: 'memo'
                            });
                            dataObj.deliveryinstruction = deliveryorder.getValue({
                                fieldId: 'custbody_do_con_service5'
                            });
                            dataObj.delivery_route = deliveryorder.getValue({
                                fieldId: 'custbody_delivery_route'
                            });
                            dataObj.servicetype = deliveryorder.getValue({
                                fieldId: 'custbody_service_level_description_dt'
                            });
                            if (dataObj.servicetype == "STANDARD") {
                                dataObj.servicetype = "DELIVERY"
                            }
                            dataObj.createddate = deliveryorder.getValue({
                                fieldId: "createddate"
                            });
                            dataObj.shipadd = deliveryorder.getValue({
                                fieldId: "custbody_delivery_address_jj"
                            });
                            dataObj.dt_route = deliveryorder.getValue({
                                fieldId: "custbody_dt_delivery_route"
                            });
                            dataObj.custbody_delivery_driver_notes = deliveryorder.getValue({
                                fieldId: "custbody_delivery_driver_notes"
                            });
                            log.debug("dataObj.shipadd", (dataObj.shipadd).length)
                            if (dataObj.shipadd == "" || dataObj.shipadd == null) {
                                dataObj.addrname = result.getValue({
                                    name: "addressee",
                                    join: "shippingAddress",
                                    label: " Addressee"
                                });
                                dataObj.address1 = result.getValue({
                                    name: "address1",
                                    join: "shippingAddress",
                                    label: " Address 1"
                                });
                                dataObj.address2d = result.getValue({
                                    name: "address2",
                                    join: "shippingAddress",
                                    label: " Address 2"
                                });
                                dataObj.city = result.getValue({
                                    name: "city",
                                    join: "shippingAddress",
                                    label: " City"
                                });
                                dataObj.state = result.getValue({
                                    name: "state",
                                    join: "shippingAddress",
                                    label: " State"
                                });
                                dataObj.zip = result.getValue({
                                    name: "zip",
                                    join: "shippingAddress",
                                    label: " Zip"
                                });
                                dataObj.phone = result.getValue({
                                    name: "phone",
                                    join: "shippingAddress",
                                    label: " Phone"
                                });
                                dataObj.email = result.getValue({
                                    name: "custrecord152",
                                    join: "shippingAddress",
                                    label: "Email"
                                });
                                dataObj.altphone = result.getValue({
                                    name: "custrecord152",
                                    join: "shippingAddress",
                                    label: "Alt Phone"
                                });
                            } else {
                                var shippingaddresss = JSON.parse(dataObj.shipadd);
                                dataObj.addrname = shippingaddresss.addresse
                                dataObj.address1 = shippingaddresss.address1
                                dataObj.address2d = shippingaddresss.address2d
                                dataObj.city = shippingaddresss.city
                                dataObj.state = shippingaddresss.state
                                dataObj.zip = shippingaddresss.zip
                                dataObj.phone = shippingaddresss.phone
                                dataObj.email = shippingaddresss.email
                                dataObj.altphone = shippingaddresss.altphone
                            }
                            var numLines = deliveryorder.getLineCount({
                                sublistId: 'item'
                            });
                            log.debug("numLines", numLines);
                            var testarray = [];
                            for (var k = 0; k < numLines; k++) {
                                var itemslists = {};
                                itemslists.itemname = deliveryorder.getSublistText({
                                    sublistId: 'item',
                                    fieldId: "item",
                                    line: k
                                });
                                itemslists.serialnumber = deliveryorder.getSublistValue({
                                    sublistId: 'item',
                                    fieldId: "custcol_serial_number",
                                    line: k
                                });
                                itemslists.quantity = deliveryorder.getSublistValue({
                                    sublistId: 'item',
                                    fieldId: "quantity",
                                    line: k
                                });
                                itemslists.amount = deliveryorder.getSublistValue({
                                    sublistId: 'item',
                                    fieldId: "amount",
                                    line: k
                                });
                                itemslists.weight = deliveryorder.getSublistValue({
                                    sublistId: 'item',
                                    fieldId: "custcol9",
                                    line: k
                                });
                                itemslists.location = deliveryorder.getSublistText({
                                    sublistId: 'item',
                                    fieldId: "custcol_fb_pickup_location",
                                    line: k
                                });
                                itemslists.pallet = deliveryorder.getSublistText({
                                    sublistId: 'item',
                                    fieldId: "custcol_no_plts",
                                    line: k
                                });
                                itemslists.description = deliveryorder.getSublistText({
                                    sublistId: 'item',
                                    fieldId: "custcol6",
                                    line: k
                                });
                                if (itemslists.description == "" || itemslists.description == null) {
                                    itemslists.description = itemslists.itemname;
                                }
                                testarray.push(itemslists);
                            }
                            dataObj.itemslists = testarray;
                            var customer = record.load({
                                type: record.Type.CUSTOMER,
                                id: dataObj.entity
                            });
                            dataObj.entityid = customer.getText({
                                fieldId: 'entityid'
                            });
                        }
                    }
                    dataObj.custbody17 = result.getText({
                        name: "custbody17",
                        label: "custbody17"
                    });
                    dataObj.custbody_delivery_branch = result.getText({
                        name: "custbody_delivery_branch",
                        label: "custbody_delivery_branch"
                    });
                    orders.push(dataObj);
                    return true;
                });
                return orders;
            },
            /* Sending the delivery order details to Dispatch Track*/
            pushtoDispatch: function(orderDetails) {
               
            },
            /* Creating the xml content .*/
            createxml: function(orderDetails) {
                log.debug("orderDetails", orderDetails)
                var XML = "";
                var myXMLFile = file.load({
                    id: '3544445'
                });
                var myXMLFile_value = myXMLFile.getContents();
                var TABLE = "";
                for (var p = 0; p < orderDetails.itemslists.length; p++) {
                    var strVar = "";
                    var descrip = orderDetails.itemslists[p].description.split('&')
                    log.debug("descrip", descrip)
                    var descripr = ""
                    strVar += "<item>"
                    strVar += "<sale_sequence>1</sale_sequence>"
                    strVar += "<item_id>" + orderDetails.itemslists[p].itemname + "</item_id>"
                    strVar += "<number>" + orderDetails.itemslists[p].serialnumber + "</number>"
                    strVar += "<weight>" + orderDetails.itemslists[p].weight + "</weight>"
                    strVar += "<price>" + orderDetails.itemslists[p].amount + "</price>"
                    if (orderDetails.itemslists[p].pallet > 0) {
                        strVar += "<description>" + "PALLET containing " + orderDetails.itemslists[p].quantity + " | " + orderDetails.itemslists[p].description + "</description>"
                        if (orderDetails.custbody17 == "RETURN") {
                            strVar += "<quantity>" + "-" + orderDetails.itemslists[p].pallet + "</quantity>"
                        } else {
                            strVar += "<quantity>" + orderDetails.itemslists[p].pallet + "</quantity>"
                        }
                    } else {
                        strVar += "<description>" + orderDetails.itemslists[p].description + "</description>"
                        if (orderDetails.custbody17 == "RETURN") {
                            strVar += "<quantity>" + "-" + orderDetails.itemslists[p].quantity + "</quantity>"
                        } else {
                            strVar += "<quantity>" + orderDetails.itemslists[p].quantity + "</quantity>"
                        }
                    }

                    strVar += "</item>"
                    TABLE = TABLE + strVar;
                };
                log.debug("TABLE", TABLE)
                TABLE = TABLE.replace(/&/g, "&amp")
                var note = orderDetails.custbody_delivery_driver_notes
                if (note) {
                    var splitnote = note.split(/\r\n|\n\n|\r/);
                    log.debug("splitnote", splitnote.length)
                    var TABLE1 = "";
                    for (var k = 0; k < splitnote.length; k++) {
                        var str = "";
                        var notedata = splitnote[k].split("|")
                        str = '<note created_at="' + notedata[1] + '" author="' + notedata[0] + '">' + notedata[2] + '</note>'
                        TABLE1 = TABLE1 + str
                    }
                    TABLE1 = TABLE1.replace(/&/g, "&amp")
                    log.debug("TABLE1", TABLE1)
                }
                var timeoforder = [];
                var ordernumber = orderDetails.ordernumber
                timeoforder = ordernumber.split("-");
                XML = myXMLFile_value.replace(/<!-- REPLACEWITHDNO -->/g, timeoforder[0]);
                var XML = XML.replace('<!-- REPLACEWITHACCOUNT -->', orderDetails.custbody_delivery_branch);
                XML = XML.replace('<!-- REPLACEWITHAMOUNT -->', orderDetails.custbody_stc_total_after_discount);
                XML = XML.replace('<!-- REPLACEWITHSHIPDATE -->', orderDetails.shipdate);
                XML = XML.replace('<!-- REPLACEWITHCLIENTCODE -->', orderDetails.entityid);
                XML = XML.replace('<!-- REPLACEWITHSHIPADDRSEE -->', orderDetails.addrname);
                XML = XML.replace('<!-- REPLACEWITHMODIFY -->', orderDetails.lastmodifieddate);
                XML = XML.replace(/<!-- REPLACEWITHNAME -->/g, orderDetails.customername);
                XML = XML.replace('<!-- REPLACEWITHSHIPADDR1-->', orderDetails.address1);
                XML = XML.replace('<!-- REPLACEWITHSHIPCITY -->', orderDetails.city);
                XML = XML.replace('<!-- REPLACEWITHSHIPSTATE -->', orderDetails.state);
                XML = XML.replace('<!-- REPLACEWITHZIP -->', orderDetails.zip);
                XML = XML.replace('<!-- REPLACEWITHTABLE -->', TABLE);
                XML = XML.replace('<!-- REPLACEWITHTABLE1 -->', TABLE1);
                XML = XML.replace('<!-- REPLACEWITHMAIL -->', orderDetails.email);
                XML = XML.replace('<!-- REPLACEWITHPHONE -->', orderDetails.phone);
                XML = XML.replace('<!-- REPLACEWITHSERVICE -->', orderDetails.servicetype);
                XML = XML.replace('<!-- REPLACEWITHSHIPADDR2-->', orderDetails.address2d);
                XML = XML.replace(/<!-- REPLACEWITHCLIENTNAME -->/g, orderDetails.customername);
                XML = XML.replace(/<!-- REPLACEWITHBOLNUMBER -->/g, orderDetails.bolnumber);
                XML = XML.replace('<!-- REPLACEWITHPONumber -->', orderDetails.ponumber);
                XML = XML.replace('<!-- REPLACEWITHCLPRONumber -->', timeoforder[0]);
                XML = XML.replace(/<!-- REPLACEWITHOrderDate -->/g, orderDetails.orderdate);
                XML = XML.replace(/<!-- REPLACEWITHDeliveryZone -->/g, orderDetails.deliveryzone);
                XML = XML.replace('<!-- REPLACEWITHPriorityLevel -->', orderDetails.priority1 + "," + orderDetails.priority2);
                XML = XML.replace('<!-- REPLACEWITHNSORDERNUMBER -->', orderDetails.tranid);
                XML = XML.replace(/<!-- REPLACEWITHSCHDLDAYS -->/g, orderDetails.estimatedate);
                XML = XML.replace('<!-- REPLACEWITHOriginRoute -->', orderDetails.origin);
                XML = XML.replace('<!-- REPLACEWITHFIRST -->', orderDetails.firstrecievedon);
                XML = XML.replace('<!-- REPLACEWITHMEMO -->', orderDetails.memo);
                XML = XML.replace('<!-- REPLACEWITHINTRUCTIONS -->', orderDetails.memo + " \n " + orderDetails.deliveryinstruction);
                XML = XML.replace('<!-- REPLACEWITHDeliveryRoute -->', orderDetails.delivery_route);
                XML = XML.replace('<!-- REPLACEWITHRoute -->', orderDetails.dt_route);
                XML = XML.replace('<!-- REPLACEWITHMANIFEST -->', orderDetails.manifest);
                XML = XML.replace('<!-- REPLACEWITHDATECREATED -->', orderDetails.orderdate);
                XML = XML.replace('<!-- REPLACEWITHDELIVERYDAYS -->', orderDetails.schedule);
                XML = XML.replace(/;/g, "|");
                return XML;
            }

        }

        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 *