Creating Orders from Custom Record

The custom record is created by the RssBus and we are creating the Orders from those custom records by making necessary validations, case creation if the process failed.

When the Custom records and it’s child records created RssBus is updating the ORDER COMPLETED field. The MapReduce script that runs on each 15 minute will find the custom records that are created and updated with the ORDER COMPLETED field by RssBus and call the suitlet to create PO for that respective custom records.

/**
 * @NApiVersion 2.x
 * @NScriptType MapReduceScript
 * @NModuleScope SameAccount
 */
/**

* Script Description

* This Map Reduce to create update the Order
* 
/*******************************************************************************
 * 
 * AM-205 MU Update Custom Record
 * 
 * *******************************************************************************
 * 
 * $Author: Jobin & Jismi IT Services LLP $
 * 
 * Date: 14 - 09 - 2019
 * 
 * DESCRIPTION
 * 
 * 
 ******************************************************************************/
define(['N/record', 'N/url', 'N/email', 'N/runtime', 'N/search', 'N/email', 'N/encode', 'N/task', 'N/https'],
    function (record, url, email, runtime, search, email, encode, task, https) {
        var main = {
            /*Get inputData for Processing */
            getInputData: function () {
                var customrecord_inbound_ordersSearchObj = search.create({
                    type: "customrecord_inbound_orders",
                    filters:
                        [
                            ["custrecord175","isempty",""], 
                            "AND", 
                            ["custrecord_order_complete","is","T"]
                        ],
                    columns:
                        [
                            search.createColumn({ name: "id", label: "ID" }),
                            search.createColumn({ name: "internalid", label: "Internal ID" }),
                            search.createColumn({
                                name: "created",
                                sort: search.Sort.ASC,
                                label: "Date Created"
                            })
                        ]
                });
                return customrecord_inbound_ordersSearchObj;
            },

            /*Reduce Function of map Reduce */
            reduce: function (context) {
                log.debug("context.key", context.key)

                try {
                    // var objRecord = record.load({
                    //     type: 'customrecord_inbound_orders',
                    //     id: context.key
                    // });
                    var poCreation = url.resolveScript({
                        scriptId: "customscript_jj_po_creation_custom_rec",
                        deploymentId: "customdeploy_jj_po_creation_custom_rec",
                        returnExternalUrl: true,
                    });
                    var response = https.get({
                        url: poCreation + "&inbound_order=" + context.key
                    });
                    // var id = objRecord.save({
                    //     enableSourcing: false,
                    //     ignoreMandatoryFields: true
                    // });
                } catch (e) {

                }
            },
            summarize: function (context) {
                try {
                    var customrecord_inbound_ordersSearchObj = search.create({
                        type: "customrecord_inbound_orders",
                        filters:
                            [
                                ["custrecord175", "isempty", ""]
                            ],
                        columns:
                            [
                                search.createColumn({ name: "id", label: "ID" }),
                                search.createColumn({ name: "internalid", label: "Internal ID" }),
                                search.createColumn({
                                    name: "created",
                                    sort: search.Sort.ASC,
                                    label: "Date Created"
                                })
                            ]
                    });
                    var searchResultCount = customrecord_inbound_ordersSearchObj.runPaged().count;
                    log.debug("searchResultCount", searchResultCount);
                    if (searchResultCount == 0) {
                    } else {
                        var mrTask = task.create({
                            taskType: task.TaskType.MAP_REDUCE,
                            scriptId: "customscript_jj_mu_update_customrecord",
                            deploymentId: "customdeploy_jj_mu_update_customrecord",
                        });
                        var scriptTaskId = mrTask.submit();
                    }
                    return;

                } catch (err) {
                    log.debug("error@summarize", err)
                }

            }
        }
        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;

    });
/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */
/**

* Script Description

* This Map Reduce to create Delivery Orders
* 
/*******************************************************************************
 * 
 * AHD-193 PO creation Custom Rec
 * 
 * *******************************************************************************
 * 
 * $Author: Jobin & Jismi IT Services LLP $
 * 
 * Date: 07 - 09 - 2019
 * 
 * DESCRIPTION
 * 
 * 
 ******************************************************************************/
define(['N/record', 'N/file', 'N/format', 'N/runtime', 'N/search', 'N/email', 'N/encode', 'N/task', 'N/https'],
    function (record, file, format, runtime, search, email, encode, task, https) {
        var main = {
            onRequest: function (context) {
                var idcustomer;
                var inboundOrder = context.request.parameters.inbound_order;
                log.debug("inbound_order", inboundOrder)
                var salesID = inboundOrder;
                var objRecord = record.load({
                    type: 'customrecord_inbound_orders',
                    id: inboundOrder
                });
                try {
                    var tranValue = objRecord.getValue("custrecord_pronumber");
                    var tranid = tranValue.split("-")[0];
                    var duplicateorder = main.duplicateOrder(tranid)
                    log.debug("duplicate", duplicateorder)
                    if (!duplicateorder) {
                        var purchaseOrder = record.create({
                            type: record.Type.PURCHASE_ORDER,
                            isDynamic: false,
                            defaultValues: {
                                customform: 162
                            }
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_cl_pro_number',
                            value: tranValue,
                            ignoreFieldChange: true
                        });
                        purchaseOrder.setValue({
                            fieldId: 'tranid',
                            value: tranid,
                            ignoreFieldChange: true
                        });
                        purchaseOrder.setValue({
                            fieldId: 'externalid',
                            value: tranid,
                            ignoreFieldChange: true
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_jj_hidden_document_no',
                            value: tranid,
                            ignoreFieldChange: true
                        });
                        var custserviceType = objRecord.getValue("custrecord_servicetype")
                        var serviceLevel = objRecord.getValue("custrecord_service_type_code")
                        if (custserviceType == "Delivery") {
                            purchaseOrder.setValue({
                                fieldId: 'custbody17',
                                value: 2,
                                ignoreFieldChange: true
                            });
                            if (serviceLevel == "STANDARD") {
                                purchaseOrder.setText({
                                    fieldId: 'custbody_service_level',
                                    text: "CURB",
                                    ignoreFieldChange: true
                                });
                            } else {
                                purchaseOrder.setText({
                                    fieldId: 'custbody_service_level',
                                    text: serviceLevel,
                                    ignoreFieldChange: true
                                });
                            }
                        } else if (custserviceType == "Pickup" || custserviceType == "PickUp" || custserviceType == "PICKUP") {
                            purchaseOrder.setValue({
                                fieldId: 'custbody17',
                                value: 5,
                                ignoreFieldChange: true
                            });
                        } else {
                            purchaseOrder.setValue({
                                fieldId: 'custbody17',
                                value: 4,
                                ignoreFieldChange: true
                            });
                            purchaseOrder.setText({
                                fieldId: 'custbody_service_level',
                                text: serviceLevel,
                                ignoreFieldChange: true
                            });
                        }
                        var billCustNo = objRecord.getValue("custrecord_billto_custno")
                        var consigneeCustNo = objRecord.getValue("custrecord_consignee_custno")
                        if (consigneeCustNo == billCustNo) {
                            purchaseOrder.setValue({
                                fieldId: 'custbody17',
                                value: 5,
                                ignoreFieldChange: true
                            });
                        } else if (objRecord.getValue("custrecord_consignee_name").indexOf("AM WAREHOUSE") == 0) {
                            purchaseOrder.setValue({
                                fieldId: 'custbody17',
                                value: 5,
                                ignoreFieldChange: true
                            });
                        } else {
                            purchaseOrder.setValue({
                                fieldId: 'custbody17',
                                value: 2,
                                ignoreFieldChange: true
                            });
                        }
                        if (serviceLevel == "INST") {
                            purchaseOrder.setText({
                                fieldId: 'custbody_service_level',
                                text: "CURB",
                                ignoreFieldChange: true
                            });
                        }
                        var po_seller_bol_no = objRecord.getValue("custrecord_reference_bol")
                        purchaseOrder.setValue({
                            fieldId: 'custbody_seller_bol_no',
                            value: po_seller_bol_no,
                            ignoreFieldChange: true
                        });
                        var instruction = main.pinNumber(tranValue, tranid)
                        var po_otherrefnum = objRecord.getValue("custrecord_po_number")
                        purchaseOrder.setValue({
                            fieldId: 'otherrefnum',
                            value: po_otherrefnum,
                            ignoreFieldChange: true
                        });
                        var po_trandate = objRecord.getValue("custrecord_orderdate")
                        purchaseOrder.setValue({
                            fieldId: 'trandate',
                            value: new Date(po_trandate),
                            ignoreFieldChange: false
                        });
                        var po_shipdate = objRecord.getValue("custrecord_shipdate")
                        purchaseOrder.setValue({
                            fieldId: 'shipdate',
                            value: new Date(po_shipdate),
                            ignoreFieldChange: false
                        });

                        var customerSearchObj = search.create({
                            type: "customer",
                            filters: [
                                ["entityid", "is", billCustNo]
                            ],
                            columns: [
                                search.createColumn({
                                    name: "entityid",
                                    sort: search.Sort.ASC,
                                    label: "ID"
                                }),
                                search.createColumn({
                                    name: "internalid",
                                    label: "Internal ID"
                                })
                            ]
                        });
                        var searchResultCount = customerSearchObj.runPaged().count;
                        var resultsearch = customerSearchObj.run().getRange(0, 1);

                        if (searchResultCount > 0) {
                            idcustomer = resultsearch[0].getValue({
                                name: "internalid",
                                label: "Internal ID"
                            });
                        } else {
                            var seller = record.create({
                                type: record.Type.CUSTOMER,
                                isDynamic: false
                            });
                            seller.setValue({
                                fieldId: 'entityid',
                                value: billCustNo,
                                ignoreFieldChange: true
                            });
                            seller.setValue({
                                fieldId: 'autoname',
                                value: false,
                                ignoreFieldChange: true
                            });
                            seller.setValue({
                                fieldId: 'companyname',
                                value: objRecord.getValue("custrecord_billto_name"),
                                ignoreFieldChange: true
                            });
                            seller.setValue({
                                fieldId: 'subsidiary',
                                value: 1,
                                ignoreFieldChange: true
                            });
                            idcustomer = seller.save({
                                enableSourcing: false,
                                ignoreMandatoryFields: true
                            });
                            log.debug("idcustomer", idcustomer)
                        }
                        purchaseOrder.setValue({
                            fieldId: 'entity',
                            value: 1749,
                            ignoreFieldChange: true
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_seller_name_pickup_order',
                            value: idcustomer,
                            ignoreFieldChange: true
                        });
                        var rec = record.load({
                            type: record.Type.CUSTOMER,
                            id: idcustomer,
                            isDynamic: false
                        });
                        var defaultaddress = rec.getText("defaultaddress");
                        purchaseOrder.setText({
                            fieldId: 'billaddress',
                            text: defaultaddress,
                            ignoreFieldChange: true
                        });
                        var lineItems = main.fetchLineItems(tranValue, inboundOrder)
                        log.debug("lineItems", lineItems)
                        var items = lineItems
                        for (var k = 0; k < items.length; k++) {

                            if (items[k].Model == "" || items[k].Model == null || items[k].Model == undefined) {
                                items[k].Model = "UNDEFINED"

                            }
                            items[k].Model = items[k].Model.trim();
                            var itemSearchObj = search.create({
                                type: "item",
                                filters: [
                                    ["nameinternal", "is", items[k].Model]
                                ],
                                columns: [
                                    search.createColumn({
                                        name: "itemid",
                                        sort: search.Sort.ASC,
                                        label: "Name"
                                    }),
                                    search.createColumn({
                                        name: "internalid",
                                        label: "Internal ID"
                                    })
                                ]
                            });
                            var searchResultCount = itemSearchObj.runPaged().count;
                            var itemid;
                            if (searchResultCount > 0) {
                                var result = itemSearchObj.run().getRange(0, 1);
                                itemid = result[0].getValue({
                                    name: "internalid",
                                    label: "Internal ID"
                                });
                            } else {
                                var newitem = record.create({
                                    type: record.Type.SERIALIZED_INVENTORY_ITEM,
                                    isDynamic: false
                                });
                                newitem.setValue({
                                    fieldId: 'itemid',
                                    value: items[k].Model,
                                    ignoreFieldChange: true
                                });
                                var item_displayname = items[k].Description
                                newitem.setValue({
                                    fieldId: 'displayname',
                                    value: item_displayname.substr(0, 60),
                                    ignoreFieldChange: true
                                });
                                newitem.setValue({
                                    fieldId: 'usebins',
                                    value: true,
                                    ignoreFieldChange: true
                                });
                                newitem.setValue({
                                    fieldId: 'cogsaccount',
                                    value: 212,
                                    ignoreFieldChange: true
                                });
                                newitem.setValue({
                                    fieldId: 'assetaccount',
                                    value: 565,
                                    ignoreFieldChange: true
                                });
                                newitem.setValue({
                                    fieldId: 'taxschedule',
                                    value: 2,
                                    ignoreFieldChange: true
                                });
                                newitem.setValue({
                                    fieldId: 'cost',
                                    value: 0.00,
                                    ignoreFieldChange: true
                                });
                                itemid = newitem.save({
                                    enableSourcing: false,
                                    ignoreMandatoryFields: true
                                });
                                log.debug("itemid", itemid)
                            }
                            try {
                                purchaseOrder.setSublistValue({
                                    sublistId: 'item',
                                    fieldId: 'item',
                                    value: itemid,
                                    line: k,
                                    ignoreFieldChange: true
                                });
                                purchaseOrder.setSublistValue({
                                    sublistId: 'item',
                                    fieldId: 'quantity',
                                    value: items[k].Pieces,
                                    line: k,
                                    ignoreFieldChange: true
                                });
                                var item_displayname = items[k].Description
                                purchaseOrder.setSublistValue({
                                    sublistId: 'item',
                                    fieldId: 'custcol6',
                                    value: item_displayname.substr(0, 60),
                                    line: k,
                                    ignoreFieldChange: true
                                });
                                purchaseOrder.setSublistValue({
                                    sublistId: 'item',
                                    fieldId: 'custcol_item_level_statuses',
                                    value: 1,
                                    line: k,
                                    ignoreFieldChange: true
                                });
                                try {
                                    purchaseOrder.setSublistValue({
                                        sublistId: 'item',
                                        fieldId: 'custcol9',
                                        value: items[k].Weight,
                                        line: k,
                                        ignoreFieldChange: true
                                    });
                                } catch (weight) {

                                }
                                try {
                                    purchaseOrder.setSublistValue({
                                        sublistId: 'item',
                                        fieldId: 'custcol4',
                                        value: items[k].Height,
                                        line: k,
                                        ignoreFieldChange: true
                                    });
                                } catch (height) {

                                }
                                try {
                                    purchaseOrder.setSublistValue({
                                        sublistId: 'item',
                                        fieldId: 'custcol2',
                                        value: items[k].Length,
                                        line: k,
                                        ignoreFieldChange: true
                                    });
                                } catch (Length) {

                                }
                                try {
                                    purchaseOrder.setSublistValue({
                                        sublistId: 'item',
                                        fieldId: 'custcol3',
                                        value: items[k].Width,
                                        line: k,
                                        ignoreFieldChange: true
                                    });
                                } catch (width) {

                                }
                                purchaseOrder.setSublistValue({
                                    sublistId: 'item',
                                    fieldId: 'custcol_no_plts',
                                    value: items[k].Pallets,
                                    line: k,
                                    ignoreFieldChange: true
                                });
                                purchaseOrder.setSublistValue({
                                    sublistId: 'item',
                                    fieldId: 'amount',
                                    value: 0,
                                    line: k,
                                    ignoreFieldChange: true
                                });
                            } catch (err) {
                                log.debug(err.name, err.message);
                            }
                        }
                        try {
                            var serviceItems = main.fetchServiceItems(tranValue, inboundOrder)
                            var seritems = serviceItems

                            if (seritems == "" || seritems == null) {

                            } else {
                                for (var p = 0; p < seritems.length; p++) {
                                    var itemdescription = seritems[p].Description
                                    var itemdescriptioncount = itemdescription.search("SERVICE LEVEL:");
                                    if (itemdescriptioncount == -1) {
                                        seritems[p].ServiceCode = seritems[p].ServiceCode.trim();
                                        var itemSearchObj = search.create({
                                            type: "item",
                                            filters: [
                                                ["type", "anyof", "Service"],
                                                "AND",
                                                ["nameinternal", "is", seritems[p].ServiceCode]
                                            ],
                                            columns: [
                                                search.createColumn({
                                                    name: "itemid",
                                                    sort: search.Sort.ASC,
                                                    label: "Name"
                                                }),
                                                search.createColumn({
                                                    name: "internalid",
                                                    label: "Internal ID"
                                                })
                                            ]
                                        });
                                        var searchResultCount = itemSearchObj.runPaged().count;
                                        var itemid;
                                        if (searchResultCount > 0) {
                                            var result = itemSearchObj.run().getRange(0, 1);
                                            itemid = result[0].getValue({
                                                name: "internalid",
                                                label: "Internal ID"
                                            });
                                        } else {
                                            var newitem = record.create({
                                                type: record.Type.SERVICE_ITEM,
                                                isDynamic: false
                                            });
                                            newitem.setValue({
                                                fieldId: 'itemid',
                                                value: seritems[p].ServiceCode,
                                                ignoreFieldChange: true
                                            });
                                            newitem.setValue({
                                                fieldId: 'itemtypename',
                                                value: "Service for Resale",
                                                ignoreFieldChange: true
                                            });
                                            newitem.setValue({
                                                fieldId: 'displayname',
                                                value: seritems[p].Description,
                                                ignoreFieldChange: true
                                            });
                                            newitem.setValue({
                                                fieldId: 'taxschedule',
                                                value: 2,
                                                ignoreFieldChange: true
                                            });
                                            newitem.setValue({
                                                fieldId: 'expenseaccount',
                                                value: 493,
                                                ignoreFieldChange: true
                                            });
                                            itemid = newitem.save({
                                                enableSourcing: false,
                                                ignoreMandatoryFields: true
                                            });
                                            log.debug("new seritemid", itemid)
                                        }
                                        try {
                                            purchaseOrder.setSublistValue({
                                                sublistId: 'item',
                                                fieldId: 'item',
                                                value: itemid,
                                                line: k,
                                                ignoreFieldChange: true
                                            });
                                            purchaseOrder.setSublistValue({
                                                sublistId: 'item',
                                                fieldId: 'custcol6',
                                                value: seritems[p].Description,
                                                line: k,
                                                ignoreFieldChange: true
                                            });
                                            purchaseOrder.setSublistValue({
                                                sublistId: 'item',
                                                fieldId: 'custcol_item_level_statuses',
                                                value: 1,
                                                line: k,
                                                ignoreFieldChange: true
                                            });
                                            purchaseOrder.setSublistValue({
                                                sublistId: 'item',
                                                fieldId: 'amount',
                                                value: 0,
                                                line: k,
                                                ignoreFieldChange: true
                                            });
                                            k++;
                                        } catch (err) {
                                            log.debug(err.name, err.message);
                                        }
                                    }
                                }
                            }

                        } catch (errorrr) {
                            log.debug("errorrr", errorrr)
                        }

                        //reschedule the script based on the usage

                        try {
                            var memovalue = instruction
                            var noteItems = main.fetchNoteItems(tranValue, inboundOrder);
                            if (noteItems.length > 1) {
                                for (var q = 0; q < noteItems.length; q++) {
                                    memovalue = memovalue + "\t " + ' \n  ' + noteItems[q].Description + " ||"
                                }
                                purchaseOrder.setValue({
                                    fieldId: 'memo',
                                    value: memovalue.substr(0, 998)
                                });
                            } else {
                                purchaseOrder.setValue({
                                    fieldId: 'memo',
                                    value: memovalue + "\n" + noteItems[0].Description
                                });
                            }
                        } catch (e) {
                            var noteitem = instruction
                            purchaseOrder.setValue({
                                fieldId: 'memo',
                                value: noteitem
                            });
                        }
                        try {
                            if (serviceLevel == "INST") {
                                var inst = instruction
                                inst = inst.split("SERVICE LEVEL")
                                purchaseOrder.setValue({
                                    fieldId: 'custbody_do_con_service5',
                                    value: "INST" + inst[1]
                                });
                            } else {
                                purchaseOrder.setValue({
                                    fieldId: 'custbody_do_con_service5',
                                    value: instruction
                                });
                            }
                        } catch (e) {
                            purchaseOrder.setValue({
                                fieldId: 'custbody_do_con_service5',
                                value: instruction
                            });
                        }
                        purchaseOrder.setValue({
                            fieldId: 'custbody36',
                            value: objRecord.getValue("custrecord_shipper_name") + "<br />" + objRecord.getValue("custrecord_shipper_address1") + "<br />" + objRecord.getValue("custrecord_shipper_city") + " " + objRecord.getValue("custrecord_shipper_state") + " " + objRecord.getValue("custrecord_shipper_zip") + "<br />" + objRecord.getValue("custrecord_shipper_email") + " " + objRecord.getValue("custrecord_shipper_telephone")
                        });
                        var pickaddr = {};
                        pickaddr.name = objRecord.getValue("custrecord_shipper_name")
                        pickaddr.Address1 = objRecord.getValue("custrecord_shipper_address1")
                        pickaddr.Address2 = objRecord.getValue("custrecord_shipper_address2")
                        pickaddr.City = objRecord.getValue("custrecord_shipper_city")
                        pickaddr.State = objRecord.getValue("custrecord_shipper_state")
                        pickaddr.Zip = objRecord.getValue("custrecord_shipper_zip")
                        pickaddr.email = objRecord.getValue("custrecord_shipper_email")
                        pickaddr.PhoneNumber = objRecord.getValue("custrecord_shipper_telephone")
                        try {
                            purchaseOrder.setValue({
                                fieldId: "custbody_jj_pickup_address",
                                value: JSON.stringify(pickaddr)
                            });
                        } catch (setvalueerror) {
                            log.debug("setpickaddrerror", setvalueerror)
                        }
                        var res_pick = main.validateaddr(idcustomer, pickaddr, 'Pickup Address', custserviceType)
                        //log.debug("res_pick", res_pick)
                        if (custserviceType == "Pickup" || custserviceType == "PickUp" || custserviceType == "PICKUP") {

                        } else {
                            purchaseOrder.setValue({
                                fieldId: 'custbody_pickup_method',
                                value: res_pick.pickmethod
                            });
                        }
                        if (res_pick.hold == 'ON') {
                            purchaseOrder.setValue({
                                fieldId: 'custbody_on_hold',
                                value: true
                            });
                            purchaseOrder.setValue({
                                fieldId: 'custbody_hold_reason',
                                value: 'Please Contact Acct. Dept'
                            });
                        }
                        var zippickdetails = main.update_pu_dl(pickaddr.Zip)
                        //log.debug("zippickdetails", zippickdetails)
                        purchaseOrder.setValue({
                            fieldId: 'custbody29',
                            value: zippickdetails[3]
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody30',
                            value: zippickdetails[1]
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_pickup_route',
                            value: zippickdetails[2]
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_mzc_dmi_rel_day_sh',
                            value: zippickdetails[6]
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_mzc_day_trailer_loaded_sh',
                            value: zippickdetails[5]
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_dt_pickup_route',
                            value: zippickdetails[8]
                        });

                        var id = purchaseOrder.save({
                            enableSourcing: false,
                            ignoreMandatoryFields: true
                        });

                        purchaseOrder = record.load({
                            id: id,
                            type: record.Type.PURCHASE_ORDER
                        });
                        var routeDateTime = main.getFormatTimeZone(new Date())
                        purchaseOrder.setValue({
                            fieldId: 'custbody_cl_order_history',
                            value: 'Order inserted via RSSBus on ' + routeDateTime
                        });
                        var custbody_do_special_instruction = objRecord.getValue("custrecord_pronotes")
                        purchaseOrder.setValue({
                            fieldId: 'custbody_do_special_instruction',
                            value: custbody_do_special_instruction
                        });
                        var declaredvalue = '';
                        var declValue = objRecord.getValue("custrecord_billto_declvalue")
                        if (declValue) {
                            declValue = declValue.split("$")[1]
                            declValue = declValue.split(",")
                            for (var p = 0; p < declValue.length; p++) {
                                declaredvalue = declaredvalue + declValue[p]
                            }
                            purchaseOrder.setValue({
                                fieldId: 'custbody27',
                                value: declaredvalue
                            });
                        }
                        var shipaddr = {};
                        var shiperemail = objRecord.getValue("custrecord_cons_email")
                        shiperemail = shiperemail.split("," && ";");
                        shipaddr.createflag = false
                        shipaddr.attention = ""
                        shipaddr.altphone = ''
                        shipaddr.consignaltphone = ''
                        shipaddr.consignphone = ''
                        shipaddr.addresse = objRecord.getValue("custrecord_consignee_name")
                        shipaddr.address1 = objRecord.getValue("custrecord_consignee_address1")
                        shipaddr.address2d = objRecord.getValue("custrecord_consignee_address2")
                        shipaddr.city = objRecord.getValue("custrecord_consignee_city")
                        shipaddr.state = objRecord.getValue("custrecord_consignee_state")
                        shipaddr.zip = objRecord.getValue("custrecord_consignee_zip")
                        shipaddr.email = shiperemail[0]
                        shipaddr.phone = objRecord.getValue("custrecord_consignee_phonenumber")
                        shipaddr.telephoneextention = objRecord.getValue("custrecord_consignee_telephoneextension")
                        // try {
                        //     shipaddr.altphone = objRecord.getValue("custbody_do_special_instruction")
                        // } catch (er) {
                        //     shipaddr.altphone = ''
                        // }

                        // Search fields for DO
                        purchaseOrder.setValue({
                            fieldId: 'custbody_jj_ship_addresse',
                            value: shipaddr.addresse
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_jj_ship_address1',
                            value: shipaddr.address1
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_jj_ship_address2',
                            value: shipaddr.address2d
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_jj_ship_city',
                            value: shipaddr.city
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_jj_ship_state',
                            value: shipaddr.state
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_jj_ship_zip',
                            value: shipaddr.zip
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_jj_ship_phone',
                            value: shipaddr.phone
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_jj_ship_alt_no',
                            value: shipaddr.altphone
                        });
                        purchaseOrder.setValue({
                            fieldId: 'approvalstatus',
                            value: 2
                        });
                        var zipshipetails = main.update_pu_dl(shipaddr.zip)
                        purchaseOrder.setValue({
                            fieldId: 'custbody_delivery_branch',
                            value: zipshipetails[3]
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_do_delivery_zone',
                            value: zipshipetails[1]
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_delivery_route',
                            value: zipshipetails[2]
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_mzc_pkup_schd_day_sh',
                            value: zipshipetails[4]
                        });
                        purchaseOrder.setValue({
                            fieldId: 'custbody_mzc_special_ins_co',
                            value: zipshipetails[7]
                        });
                        try {
                            purchaseOrder.setValue({
                                fieldId: "custbody_delivery_address_jj",
                                value: JSON.stringify(shipaddr)
                            });
                        } catch (setvalueerror) {
                            log.debug("setvalueerror", setvalueerror)
                        }
                        purchaseOrder.setValue({
                            fieldId: 'shipaddresslist',
                            value: ""
                        });
                        var serviceType = purchaseOrder.getValue('custbody17');
                        if (serviceType == 5) {
                            purchaseOrder.setValue({
                                fieldId: 'custbody_service_level',
                                value: null
                            });
                            purchaseOrder.setValue({
                                fieldId: 'custbody_service_level_description_dt',
                                value: null
                            });
                        }
                        var po_number = purchaseOrder.getValue('tranid');

                        var validationemail = main.checkEmail(shipaddr, purchaseOrder);

                        if (validationemail == false) {
                            //Create case if email is not valid
                            var supportcase = record.create({
                                type: record.Type.SUPPORT_CASE,
                                isDynamic: false
                            })
                            supportcase.setValue({
                                fieldId: 'company',
                                value: idcustomer
                            });
                            supportcase.setValue({
                                fieldId: 'status',
                                value: 1
                            });
                            supportcase.setValue({
                                fieldId: 'title',
                                value: 'Invalid Consignee E-mail ' + shipaddr.email
                            });
                            supportcase.setValue({
                                fieldId: 'incomingmessage',
                                value: "Invalid Ship E-mail address  " + shipaddr.email + "for Delivery Order " + po_number
                            });
                            supportcase.setValue({
                                fieldId: 'email',
                                value: 'dean@wglgroupusa.com'
                            });
                            supportcase.setValue({
                                fieldId: 'emailform',
                                value: true
                            })
                            supportcase.setValue({
                                fieldId: 'custevent_customer_name',
                                value: shipaddr.addresse
                            });
                            supportcase.setValue({
                                fieldId: 'phone',
                                value: shipaddr.phone
                            });
                            supportcase.setValue({
                                fieldId: 'custevent_order_number',
                                value: po_number
                            });
                            supportcase.setValue({
                                fieldId: 'issue',
                                value: 12
                            });
                            supportcase.setValue({
                                fieldId: 'category',
                                value: 3
                            });
                            supportcase.setValue({
                                fieldId: 'origin',
                                value: -5
                            });
                            supportcase.setValue({
                                fieldId: 'priority',
                                value: 1
                            });
                            supportcase.setValue({
                                fieldId: 'assigned',
                                value: 4336
                            });

                            purchaseOrder = record.load({
                                id: id,
                                type: record.Type.PURCHASE_ORDER
                            });
                            supportcase.setValue({
                                fieldId: 'custevent_record_created_by',
                                value: 'SYSTEM'
                            });
                            supportcase.setValue({
                                fieldId: 'custevent_jj_do_order_number',
                                value: id
                            });
                            caseId = supportcase.save({
                                enableSourcing: true,
                                ignoreMandatoryFields: true
                            });
                            purchaseOrder.setValue({
                                fieldId: 'custbody_case_id_do',
                                value: caseId
                            });
                            purchaseOrder.save({
                                enableSourcing: true,
                                ignoreMandatoryFields: true
                            });
                            log.debug("caseId", caseId)
                        }
                        var remainingUsage = runtime.getCurrentScript().getRemainingUsage();
                        log.debug("rescheduleScriptandReturn_scriptTaskId", remainingUsage);
                        main.deleteService(tranValue)

                        main.deleteNote(tranValue)
                        //  main.deletePinNumber(tranValue)
                        main.deleteLineItems(tranValue)
                        var featureRecord = record.delete({
                            type: 'customrecord_inbound_orders',
                            id: inboundOrder
                        });
                        log.debug("featureRecord", featureRecord)
                        // var otherId = record.submitFields({
                        //     type: 'customrecord_inbound_orders',
                        //     id: inboundOrder,
                        //     values: {
                        //         'custrecord174': "SUCCESS"
                        //     }
                        // });
                    } else {
                        // var otherId = record.submitFields({
                        //     type: 'customrecord_inbound_orders',
                        //     id: inboundOrder,
                        //     values: {
                        //         'custrecord174': "SUCCESS"
                        //     }
                        // });
                        main.deleteService(tranValue)

                        main.deleteNote(tranValue)

                        main.deleteLineItems(tranValue)
                        //main.deletePinNumber(tranValue)
                        var featureRecord = record.delete({
                            type: 'customrecord_inbound_orders',
                            id: inboundOrder
                        });
                        log.debug("featureRecord", featureRecord)
                    }

                } catch (error) {
                    if (error.message.indexOf("record does not exist") == -1) {
                        log.debug("error", error.message);
                        var otherId = record.submitFields({
                            type: 'customrecord_inbound_orders',
                            id: inboundOrder,
                            values: {
                                'custrecord175': error.message
                            }
                        });
                        //Case creation when the delivery order is not created.
                        var error_case = main.errorcase(salesID, error.message, idcustomer, objRecord.getValue("custrecord_consignee_name"), objRecord.getValue("custrecord_consignee_phonenumber"), objRecord.getValue("custrecord_pronumber"))
                        log.debug("error_case", error_case)
                        var remainingUsage = runtime.getCurrentScript().getRemainingUsage();
                        log.debug("rescheduleScriptandReturn_scriptTaskId", remainingUsage);
                    }
                }
            },
            getFormatTimeZone: function (dateValue) {
                var NEWYORK = format.format({
                    value: dateValue,
                    type: format.Type.DATETIME,
                    timezone: format.Timezone.AMERICA_NEW_YORK
                });
                log.debug("NEWYORK", NEWYORK)
                return NEWYORK;
            },
            deleteLineItems: function (tranValue) {
                var customrecord_inbound_orders_lineitemsSearchObj = search.create({
                    type: "customrecord_inbound_orders_lineitems",
                    filters:
                        [
                            ["custrecord_order_number", "is", tranValue]
                        ],
                    columns:
                        [
                            search.createColumn({
                                name: "custrecord_order_number",
                                sort: search.Sort.ASC,
                                label: "Order Number"
                            }),
                            search.createColumn({ name: "custrecord_model", label: "Model" }),
                            search.createColumn({ name: "custrecord_pieces", label: "Pieces" }),
                            search.createColumn({ name: "custrecord_description", label: "Description" }),
                            search.createColumn({ name: "custrecord_pallets", label: "Pallets" }),
                            search.createColumn({ name: "custrecord_weight", label: "Weight" }),
                            search.createColumn({ name: "custrecord_class", label: "Class" }),
                            search.createColumn({ name: "custrecord_jj_length", label: "Length" }),
                            search.createColumn({ name: "custrecord_jj_width", label: "Width" }),
                            search.createColumn({ name: "custrecord_jj_height", label: "Height" }),
                            search.createColumn({ name: "internalid", label: "Internal ID" })
                        ]
                });
                var searchResultCount = customrecord_inbound_orders_lineitemsSearchObj.runPaged().count;
                log.debug("customrecord_inbound_orders_lineitemsSearchObj result count", searchResultCount);
                customrecord_inbound_orders_lineitemsSearchObj.run().each(function (result) {
                    var itemDetails = {};
                    itemDetails.Model = result.getValue({ name: "custrecord_model", label: "Model" })

                    var internalid = result.getValue({ name: "internalid", label: "Internal ID" })
                    var otherId = record.delete({
                        type: 'customrecord_inbound_orders_lineitems',
                        id: internalid
                    });
                    return true;
                });
            },
            deleteNote: function (tranValue) {
                var customrecord_inbound_order_notesitemsSearchObj = search.create({
                    type: "customrecord_inbound_order_notesitems",
                    filters:
                        [
                            ["custrecord179", "is", tranValue]
                        ],
                    columns:
                        [
                            search.createColumn({
                                name: "custrecord179",
                                sort: search.Sort.ASC,
                                label: "Order Number"
                            }),
                            search.createColumn({ name: "custrecord180", label: "Description" }),
                            search.createColumn({ name: "internalid", label: "Internal ID" })
                        ]
                });
                var searchResultCount = customrecord_inbound_order_notesitemsSearchObj.runPaged().count;
                log.debug("customrecord_inbound_order_notesitemsSearchObj result count", searchResultCount);
                customrecord_inbound_order_notesitemsSearchObj.run().each(function (result) {
                    var itemDetails = {};
                    itemDetails.Description = result.getValue({ name: "custrecord180", label: "Description" })

                    var noteinternalid = result.getValue({ name: "internalid", label: "Internal ID" })
                    var otherId = record.delete({
                        type: 'customrecord_inbound_order_notesitems',
                        id: noteinternalid
                    });
                    return true;
                });
            },
            deleteService: function (tranValue) {
                var customrecord_inbound_order_service_itemsSearchObj = search.create({
                    type: "customrecord_inbound_order_service_items",
                    filters:
                        [
                            ["custrecord170", "is", tranValue]
                        ],
                    columns:
                        [
                            search.createColumn({
                                name: "custrecord170",
                                sort: search.Sort.ASC,
                                label: "Order Number"
                            }),
                            search.createColumn({ name: "custrecord_service_code", label: "Service Code" }),
                            search.createColumn({ name: "custrecord171", label: "Description" }),
                            search.createColumn({ name: "internalid", label: "Internal ID" })
                        ]
                });
                var searchResultCount = customrecord_inbound_order_service_itemsSearchObj.runPaged().count;
                log.debug("customrecord_inbound_order_service_itemsSearchObj result count", searchResultCount);
                customrecord_inbound_order_service_itemsSearchObj.run().each(function (result) {
                    var itemDetails = {};
                    itemDetails.ServiceCode = result.getValue({ name: "custrecord_service_code", label: "Service Code" })
                    itemDetails.Description = result.getValue({
                        name: "custrecord171", label: "Description"
                    })
                    var internalid = result.getValue({ name: "internalid", label: "Internal ID" })
                    var otherId = record.delete({
                        type: 'customrecord_inbound_order_service_items',
                        id: internalid
                    });
                    return true;
                });
            },
            pinNumber: function (ordernumber, tranid) {
                var instructionValue = "";
                var pinArray = [];
                var customrecord_inbound_order_ref_itemsSearchObj = search.create({
                    type: "customrecord_inbound_order_ref_items",
                    filters:
                        [
                            ["custrecord184", "is", ordernumber]
                        ],
                    columns:
                        [
                            search.createColumn({ name: "custrecord189", label: "PIN" }),
                            search.createColumn({ name: "custrecord188", label: "Instructions" }),
                            search.createColumn({ name: "internalid", label: "Internal ID" })
                        ]
                });
                var searchResultCount = customrecord_inbound_order_ref_itemsSearchObj.runPaged().count;
                log.debug("customrecord_inbound_order_ref_itemsSearchObj result count", searchResultCount);
                customrecord_inbound_order_ref_itemsSearchObj.run().each(function (result) {
                    var internalid = result.getValue({ name: "internalid", label: "Internal ID" })
                    var pinNumber = result.getValue({ name: "custrecord189", label: "PIN" })
                    instructionValue += result.getValue({ name: "custrecord188", label: "Instructions" }) + " || "
                    if (pinNumber) {
                        pinArray.push(pinNumber)
                    }
                    var otherId = record.delete({
                        type: 'customrecord_inbound_order_ref_items',
                        id: internalid
                    });
                    return true;
                });
                // if (pinData) {
                var pinfile = file.create({
                    name: tranid + '.txt',
                    fileType: file.Type.PLAINTEXT,
                    contents: (pinArray).toString(),
                    folder: 900,
                });
                pinfile.save();
                // }
                return instructionValue;
            },
            deletePinNumber: function (ordernumber) {

                var customrecord_inbound_order_ref_itemsSearchObj = search.create({
                    type: "customrecord_inbound_order_ref_items",
                    filters:
                        [
                            ["custrecord184", "is", ordernumber]
                        ],
                    columns:
                        [
                            search.createColumn({ name: "custrecord189", label: "PIN" }),
                            search.createColumn({ name: "internalid", label: "Internal ID" })
                        ]
                });
                var searchResultCount = customrecord_inbound_order_ref_itemsSearchObj.runPaged().count;
                log.debug("customrecord_inbound_order_ref_itemsSearchObj result count", searchResultCount);
                customrecord_inbound_order_ref_itemsSearchObj.run().each(function (result) {
                    var internalid = result.getValue({ name: "internalid", label: "Internal ID" })

                    var otherId = record.delete({
                        type: 'customrecord_inbound_order_ref_items',
                        id: internalid
                    });
                    return true;
                });
            },
            fetchServiceItems: function (ordernumber, inboundOrder) {
                var itemArray = [];
                var customrecord_inbound_order_service_itemsSearchObj = search.create({
                    type: "customrecord_inbound_order_service_items",
                    filters:
                        [
                            ["custrecord170", "is", ordernumber]
                        ],
                    columns:
                        [
                            search.createColumn({
                                name: "custrecord170",
                                sort: search.Sort.ASC,
                                label: "Order Number"
                            }),
                            search.createColumn({ name: "custrecord_service_code", label: "Service Code" }),
                            search.createColumn({ name: "custrecord171", label: "Description" }),
                            search.createColumn({ name: "internalid", label: "Internal ID" })
                        ]
                });
                var searchResultCount = customrecord_inbound_order_service_itemsSearchObj.runPaged().count;
                log.debug("customrecord_inbound_order_service_itemsSearchObj result count", searchResultCount);
                customrecord_inbound_order_service_itemsSearchObj.run().each(function (result) {
                    var itemDetails = {};
                    var internalid = result.getValue({ name: "internalid", label: "Internal ID" })
                    // var otherId = record.submitFields({
                    //     type: 'customrecord_inbound_order_service_items',
                    //     id: internalid,
                    //     values: {
                    //         'custrecord169': inboundOrder
                    //     }
                    // });
                    itemDetails.ServiceCode = result.getValue({ name: "custrecord_service_code", label: "Service Code" })
                    itemDetails.Description = result.getValue({
                        name: "custrecord171", label: "Description"
                    })
                    itemArray.push(itemDetails)
                    return true;
                });
                return itemArray;
            },
            fetchNoteItems: function (ordernumber, inboundOrder) {
                var itemArray = [];
                var customrecord_inbound_order_notesitemsSearchObj = search.create({
                    type: "customrecord_inbound_order_notesitems",
                    filters:
                        [
                            ["custrecord179", "is", ordernumber]
                        ],
                    columns:
                        [
                            search.createColumn({
                                name: "custrecord179",
                                sort: search.Sort.ASC,
                                label: "Order Number"
                            }),
                            search.createColumn({ name: "custrecord180", label: "Description" }),
                            search.createColumn({ name: "internalid", label: "Internal ID" })
                        ]
                });
                var searchResultCount = customrecord_inbound_order_notesitemsSearchObj.runPaged().count;
                log.debug("customrecord_inbound_order_notesitemsSearchObj result count", searchResultCount);
                customrecord_inbound_order_notesitemsSearchObj.run().each(function (result) {
                    var itemDetails = {};
                    var internalid = result.getValue({ name: "internalid", label: "Internal ID" })
                    // var otherId = record.submitFields({
                    //     type: 'customrecord_inbound_order_notesitems',
                    //     id: internalid,
                    //     values: {
                    //         'custrecord178': inboundOrder
                    //     }
                    // });
                    itemDetails.Description = result.getValue({ name: "custrecord180", label: "Description" })
                    itemArray.push(itemDetails)
                    return true;
                });
                return itemArray;
            },
            fetchLineItems: function (ordernumber, inboundOrder) {
                var itemArray = [];
                var customrecord_inbound_orders_lineitemsSearchObj = search.create({
                    type: "customrecord_inbound_orders_lineitems",
                    filters:
                        [
                            ["custrecord_order_number", "is", ordernumber]
                        ],
                    columns:
                        [
                            search.createColumn({
                                name: "custrecord_order_number",
                                sort: search.Sort.ASC,
                                label: "Order Number"
                            }),
                            search.createColumn({ name: "custrecord_model", label: "Model" }),
                            search.createColumn({ name: "custrecord_pieces", label: "Pieces" }),
                            search.createColumn({ name: "custrecord_description", label: "Description" }),
                            search.createColumn({ name: "custrecord_pallets", label: "Pallets" }),
                            search.createColumn({ name: "custrecord_weight", label: "Weight" }),
                            search.createColumn({ name: "custrecord_class", label: "Class" }),
                            search.createColumn({ name: "custrecord_jj_length", label: "Length" }),
                            search.createColumn({ name: "custrecord_jj_width", label: "Width" }),
                            search.createColumn({ name: "custrecord_jj_height", label: "Height" }),
                            search.createColumn({ name: "internalid", label: "Internal ID" })
                        ]
                });
                var searchResultCount = customrecord_inbound_orders_lineitemsSearchObj.runPaged().count;
                log.debug("customrecord_inbound_orders_lineitemsSearchObj result count", searchResultCount);
                customrecord_inbound_orders_lineitemsSearchObj.run().each(function (result) {
                    var itemDetails = {};
                    var internalid = result.getValue({ name: "internalid", label: "Internal ID" })
                    // var otherId = record.submitFields({
                    //     type: 'customrecord_inbound_orders_lineitems',
                    //     id: internalid,
                    //     values: {
                    //         'custrecord_custom': inboundOrder
                    //     }
                    // });
                    itemDetails.Model = result.getValue({ name: "custrecord_model", label: "Model" })
                    itemDetails.Pieces = result.getValue({
                        name: "custrecord_pieces", label: "Pieces"
                    })
                    itemDetails.Description = result.getValue({
                        name: "custrecord_description", label: "Description"
                    })
                    itemDetails.Pallets = result.getValue({
                        name: "custrecord_pallets", label: "Pallets"
                    })
                    itemDetails.Weight = result.getValue({
                        name: "custrecord_weight", label: "Weight"
                    })
                    itemDetails.Class = result.getValue({
                        name: "custrecord_class", label: "Class"
                    })
                    itemDetails.Length = result.getValue({
                        name: "custrecord_jj_length", label: "Length"
                    })
                    itemDetails.Width = result.getValue({
                        name: "custrecord_jj_width", label: "Width"
                    })
                    itemDetails.Height = result.getValue({
                        name: "custrecord_jj_height", label: "Height"
                    })
                    itemArray.push(itemDetails)
                    return true;
                });
                return itemArray;
            },
            //check duplicate record.
            duplicateOrder: function (ordernumber) {
                var transactionSearch = search.create({
                    type: "purchaseorder",
                    filters: [
                        ["type", "anyof", "PurchOrd"],
                        "AND",
                        ["custbody_jj_hidden_document_no", "is", ordernumber]
                    ],
                    columns: [
                        search.createColumn({
                            name: "internalid",
                            label: "Internal ID"
                        })
                    ]
                });
                var searchResultCount = transactionSearch.runPaged().count;
                if (searchResultCount > 0) {
                    return true
                }
                return false;
            },
            //Case creation when the error in DO Creation
            errorcase: function (salesID, message, idcustomer, addresse, phone, tranValue) {

                var orderno = tranValue.split("-")[0];
                var supportcase = record.create({
                    type: record.Type.SUPPORT_CASE,
                    isDynamic: false
                })
                supportcase.setValue({
                    fieldId: 'company',
                    value: idcustomer
                });
                supportcase.setValue({
                    fieldId: 'status',
                    value: 1
                });
                supportcase.setValue({
                    fieldId: 'custevent_order_number',
                    value: orderno
                });
                supportcase.setValue({
                    fieldId: 'title',
                    value: 'Failed Order #' + orderno
                });
                supportcase.setValue({
                    fieldId: 'incomingmessage',
                    value: "The Order No " + orderno + " is failed due to " + message
                });
                supportcase.setValue({
                    fieldId: 'email',
                    value: 'dean@wglgroupusa.com'
                });
                supportcase.setValue({
                    fieldId: 'emailform',
                    value: true
                })
                supportcase.setValue({
                    fieldId: 'custevent_customer_name',
                    value: addresse
                });
                supportcase.setValue({
                    fieldId: 'phone',
                    value: phone
                });
                supportcase.setValue({
                    fieldId: 'quicknote',
                    value: message
                });
                supportcase.setValue({
                    fieldId: 'category',
                    value: 3
                });
                supportcase.setValue({
                    fieldId: 'origin',
                    value: -5
                });
                supportcase.setValue({
                    fieldId: 'priority',
                    value: 1
                });
                supportcase.setValue({
                    fieldId: 'assigned',
                    value: 11
                });
                supportcase.setValue({
                    fieldId: 'custevent_record_created_by',
                    value: 'SYSTEM'
                });
                caseId = supportcase.save({
                    enableSourcing: true,
                    ignoreMandatoryFields: true
                });
                // var attachid = record.attach({
                //     record: {
                //         type: 'customrecord_inbound_orders',
                //         id: salesID
                //     },
                //     to: {
                //         type: 'supportcase',
                //         id: caseId
                //     }
                // });

                return caseId;
            },
            checkEmail: function (shipaddr, purchaseOrder) {
                //To check the shipemail is valid or not
                var validmail = true
                try {
                    var shipermail = shipaddr.email
                    shipermail = shipermail.split(",")
                    purchaseOrder.setValue({
                        fieldId: 'custbody_jj_email',
                        value: shipermail[0]
                    });
                    if (!shipaddr.altphone) {
                        purchaseOrder.setValue({
                            fieldId: 'shipaddress',
                            value: shipaddr.addresse + "\n" + shipaddr.address1 + " " + shipaddr.address2d + "\n" + shipaddr.city + " " + shipaddr.state + " " + shipaddr.zip + " \n " + shipaddr.phone + "\n" + shipermail[0]
                        });
                    } else {
                        purchaseOrder.setValue({
                            fieldId: 'shipaddress',
                            value: shipaddr.addresse + "\n" + shipaddr.address1 + " " + shipaddr.address2d + "\n" + shipaddr.city + " " + shipaddr.state + " " + shipaddr.zip + " \n " + shipaddr.phone + " \n " + shipaddr.altphone + "\n" + shipermail[0]
                        });
                    }
                    var SoID = purchaseOrder.save({
                        enableSourcing: true,
                        ignoreMandatoryFields: true
                    });
                    log.debug("SoIDtry", SoID);
                } catch (emailerror) {
                    validmail = false
                    purchaseOrder.setValue({
                        fieldId: 'custbody_jj_email',
                        value: ""
                    });
                    if (shipaddr.altphone == undefined) {
                        purchaseOrder.setValue({
                            fieldId: 'shipaddress',
                            value: shipaddr.addresse + "\n" + shipaddr.address1 + " " + shipaddr.address2d + "\n" + shipaddr.city + " " + shipaddr.state + " " + shipaddr.zip + "\n" + shipaddr.phone
                        });
                    } else {
                        purchaseOrder.setValue({
                            fieldId: 'shipaddress',
                            value: shipaddr.addresse + "\n" + shipaddr.address1 + " " + shipaddr.address2d + "\n" + shipaddr.city + " " + shipaddr.state + " " + shipaddr.zip + "\n" + shipaddr.phone + " \n " + shipaddr.altphone
                        });
                    }
                    var SoID = purchaseOrder.save({
                        enableSourcing: true,
                        ignoreMandatoryFields: true
                    });
                    log.debug("SoIDcatch", SoID);
                }
                log.debug("validmail", validmail);

                return validmail
            },
            update_pu_dl: function (zip) {
                //To get the Zone,Branch and Route for PU/DL
                var arrRetData = [];
                var customrecord173SearchObj = search.create({
                    type: "customrecord173",
                    filters: [
                        ["name", "is", zip]
                    ],
                    columns: [
                        search.createColumn({
                            name: "custrecord_ratezone_zip_code",
                            label: "Zip Code"
                        }),
                        search.createColumn({
                            name: "custrecord_mzct_zone",
                            label: "Zone_"
                        }),
                        search.createColumn({
                            name: "custrecord_branch_id",
                            label: "Branch_ID"
                        }),
                        search.createColumn({
                            name: "custrecord_mzct_route",
                            label: "Route_"
                        }),
                        search.createColumn({
                            name: "custrecord_mzct_delivery_schedule_day",
                            label: "Delivery_Schedule_Day"
                        }),
                        search.createColumn({
                            name: "custrecord_mzct_day_trailer_is_loaded",
                            label: "Day_Trailer_is_Loaded"
                        }),
                        search.createColumn({
                            name: "custrecord_mzct_dmi_release_day",
                            label: "DMI_Release_Day"
                        }),
                        search.createColumn({
                            name: "custrecord_mzct_special_instructions",
                            label: "Special_Instructions"
                        }),
                        search.createColumn({
                            name: "custrecord_dt_route",
                            label: "DT Route"
                        })
                    ]
                });
                var searchResultCount = customrecord173SearchObj.runPaged().count;
                customrecord173SearchObj.run().each(function (result) {
                    var branch = result.getText({
                        name: "custrecord_branch_id",
                        label: "Branch_ID"
                    })
                    arrRetData.push(branch)
                    var zone = result.getValue({
                        name: "custrecord_mzct_zone",
                        label: "Zone_"
                    })
                    arrRetData.push(zone)
                    var route = result.getValue({
                        name: "custrecord_mzct_route",
                        label: "Route_"
                    })
                    arrRetData.push(route)
                    var branchtext = result.getValue({
                        name: "custrecord_branch_id",
                        label: "Branch_ID"
                    })
                    arrRetData.push(branchtext)
                    var delivery_schedule = result.getValue({
                        name: "custrecord_mzct_delivery_schedule_day",
                        label: "Delivery_Schedule_Day"
                    })
                    arrRetData.push(delivery_schedule)
                    var day_trailer = result.getValue({
                        name: "custrecord_mzct_day_trailer_is_loaded",
                        label: "Day_Trailer_is_Loaded"
                    })
                    arrRetData.push(day_trailer)
                    var dmi_release_day = result.getValue({
                        name: "custrecord_mzct_dmi_release_day",
                        label: "DMI_Release_Day"
                    })
                    arrRetData.push(dmi_release_day)
                    var special_instructions = result.getValue({
                        name: "custrecord_mzct_special_instructions",
                        label: "Special_Instructions"
                    })
                    arrRetData.push(special_instructions)
                    var dt_route = result.getValue({
                        name: "custrecord_dt_route",
                        label: "DT Route"
                    })
                    arrRetData.push(dt_route)
                });
                return arrRetData;
            },
            validateaddr: function (custId, objLineAdrs, labelname, ServiceType) {
                //To validate address of seller is exist or not
                var route_delivery;
                var pickmethod;
                var pickUpadrsId = "";
                var rec = record.load({
                    type: record.Type.CUSTOMER,
                    id: custId,
                    isDynamic: false
                });
                var hold = rec.getValue('creditholdoverride');
                var adrsLines = rec.getLineCount('addressbook');
                for (var iw = 0; iw < adrsLines; iw++) {
                    var flag = true;
                    var subrec = rec.getSublistSubrecord({
                        sublistId: 'addressbook',
                        fieldId: 'addressbookaddress',
                        line: iw
                    });
                    var addrsInternalId = rec.getSublistValue({
                        sublistId: 'addressbook',
                        fieldId: 'internalid',
                        line: iw
                    });
                    // Retrieve the subrecord to be checked.
                    var addressee = subrec.getValue('addressee');
                    var addr1 = subrec.getValue('addr1');
                    var addr2 = subrec.getValue('addr2');
                    var city = subrec.getValue('city');
                    var state = subrec.getValue('state');
                    var zip = subrec.getValue('zip');
                    var phone = subrec.getValue('addrphone');
                    var emailid = subrec.getValue('custrecord152');

                    if (addr1.toUpperCase() == objLineAdrs.Address1.toUpperCase() && addr2.toUpperCase() == objLineAdrs.Address2.toUpperCase() && city.toUpperCase() == objLineAdrs.City.toUpperCase() && state.toUpperCase() == objLineAdrs.State.toUpperCase() && zip == objLineAdrs.Zip) {
                        if (addressee.toUpperCase() == objLineAdrs.name.toUpperCase()) { } else {
                            //  log.debug(addressee, objLineAdrs.name)
                            subrec.setValue({
                                fieldId: 'addressee',
                                value: objLineAdrs.name
                            });
                        }

                        if (phone == objLineAdrs.PhoneNumber) { } else {
                            // log.debug("objLineAdrs.PhoneNumber", objLineAdrs.PhoneNumber)
                            subrec.setValue({
                                fieldId: 'addrphone',
                                value: objLineAdrs.PhoneNumber
                            });
                        }
                        try {
                            if (emailid == objLineAdrs.email) { } else {
                                // log.debug("objLineAdrs.email", objLineAdrs.email)
                                try {
                                    subrec.setValue({
                                        fieldId: 'custrecord152',
                                        value: objLineAdrs.email
                                    });
                                } catch (emailerr) {
                                    //log.debug("emailerr", emailerr)
                                }
                            }
                            pickUpadrsId = addrsInternalId;
                            // log.debug("pickUpadrsId", pickUpadrsId)
                            pickmethod = subrec.getValue('custrecord_pickup_method');
                            var recId = rec.save({
                                enableSourcing: true,
                                ignoreMandatoryFields: true
                            });
                        } catch (erro) {
                            //log.debug("erro", erro.message)
                        }
                    } else {
                        flag = false;
                    }
                }

                if (pickUpadrsId == "" || pickUpadrsId == null || pickUpadrsId == undefined) {
                    if (ServiceType == "Pickup" || ServiceType == "PickUp" || ServiceType == "PICKUP") {
                        return {
                            hold: hold,
                        }
                    } else {
                        var custrecId = main.createNewAdrs(custId, objLineAdrs, labelname);
                        log.debug("custrecId", custrecId)
                        var rec = record.load({
                            type: record.Type.CUSTOMER,
                            id: custId,
                            isDynamic: false
                        });
                        var adrsLines = rec.getLineCount('addressbook');
                        var subrec = rec.getSublistSubrecord({
                            sublistId: 'addressbook',
                            fieldId: 'addressbookaddress',
                            line: adrsLines - 1
                        });
                        var addrsInternalId = rec.getSublistValue({
                            sublistId: 'addressbook',
                            fieldId: 'internalid',
                            line: adrsLines - 1
                        });
                        pickmethod = subrec.getValue('custrecord_pickup_method');

                        return {
                            pickUpadrsId: addrsInternalId,
                            pickmethod: pickmethod,
                            hold: hold
                        }
                    }
                } else {
                    return {
                        pickUpadrsId: pickUpadrsId,
                        pickmethod: pickmethod,
                        hold: hold
                    }
                }

            },
            createNewAdrs: function (custId, objLineAdrs, labelname) {
                //create seller address
                // log.debug("createnewaddre", "createnewaddre")
                var caseId;
                var rec = record.load({
                    type: record.Type.CUSTOMER,
                    id: custId,
                    isDynamic: true
                });

                var pickup_method = rec.getValue('custentity_preferred_pickup_method');
                // Create a line in the Address sublist.
                rec.selectNewLine({
                    sublistId: 'addressbook'
                });

                // Set an optional field on the sublist line.
                rec.setCurrentSublistValue({
                    sublistId: 'addressbook',
                    fieldId: 'label',
                    value: labelname
                });

                // Create an address subrecord for the line.
                var subrec = rec.getCurrentSublistSubrecord({
                    sublistId: 'addressbook',
                    fieldId: 'addressbookaddress'
                });

                // Set body fields on the subrecord.
                subrec.setValue({
                    fieldId: 'addressee',
                    value: objLineAdrs.name
                });
                subrec.setValue({
                    fieldId: 'defaultshipping',
                    value: true
                });

                subrec.setValue({
                    fieldId: 'city',
                    value: objLineAdrs.City
                });

                subrec.setValue({
                    fieldId: 'state',
                    value: objLineAdrs.State
                });

                subrec.setValue({
                    fieldId: 'zip',
                    value: objLineAdrs.Zip
                });

                subrec.setValue({
                    fieldId: 'addr1',
                    value: objLineAdrs.Address1
                });

                subrec.setValue({
                    fieldId: 'addr2',
                    value: objLineAdrs.Address2
                });

                subrec.setText({
                    fieldId: 'addrphone',
                    text: objLineAdrs.PhoneNumber
                });
                subrec.setValue({
                    fieldId: 'custrecord_pickup_method',
                    value: pickup_method
                });
                try {
                    subrec.setValue({
                        fieldId: 'custrecord152',
                        value: objLineAdrs.email
                    });
                } catch (createemilerr) {
                    // log.debug("createemilerr", createemilerr)
                }
                // Save the sublist line.
                rec.commitLine({
                    sublistId: 'addressbook'
                });

                // Save the record.

                var recId = rec.save({
                    enableSourcing: true,
                    ignoreMandatoryFields: true
                });
                log.debug('New Adrress created successfully | Customer Id: ', recId);

                return recId;
            },
            getdate: function (date) {
                //get the date in the format
                var date = new Date(date);
                var newdate = new Date(date);

                newdate.setDate(newdate.getDate());

                var dd = newdate.getDate();
                var mm = newdate.getMonth() + 1;
                var y = newdate.getFullYear() + 100;
                var someFormattedDate = mm + '/' + dd + '/' + y;

                return someFormattedDate;
            },
        }
        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 *