Jira Code: AHD-111
Create function on the purchase order to manually send the order to DispatchTrack. Using send to button click, the purchase order details will auto-populated in the dispatchTrack.
//User event script for creating a button in the purchase order.
/**
* @NApiVersion 2.x
* @NScriptType UserEventScript
* @NModuleScope SameAccount
*/
define(['N/record', 'N/search'],
function(record, search) {
function beforeLoad(context) {
try {
if (context.type == 'view') {
var purchaseOrder = context.form;
context.form.clientScriptFileId = 10460864;
var purchaseOrderBtn = purchaseOrder.addButton({
id: 'custpage_purchasebtn',
label: 'Send to DT',
functionName: 'purchasebtn'
});
}
} catch (er) {
log.debug('er', er);
}
}
return {
beforeLoad: beforeLoad
};
});
// creating client script for button actions
/**
* @NApiVersion 2.x
* @NScriptType ClientScript
* @NModuleScope SameAccount
*/
define(['N/currentRecord', 'N/url', 'N/https'],
function(currentRecord, url, https) {
/**
* Function to be executed after page is initialized.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.currentRecord - Current form record
* @param {string} scriptContext.mode - The mode in which the record is being accessed (create, copy, or edit)
*
* @since 2015.2
*/
function pageInit(scriptContext) {
console.log("hands up")
}
function purchasebtn(scriptContext) {
try {
var po = cu.rrentRecordget();
var po_id = po.id;
console.log(po_id);
var output = url.resolveScript({
scriptId: 'customscript_jj_sl_ahd_111_purchase_ored',
deploymentId: 'customdeploy_jj_sl_ahd_111_purchase_ored',
returnExternalUrl: true,
}) + '&po_id=' + po_id;
console.log(output);
https.get({
url: output
});
} catch (er) {
log.debug('er', er);
}
}
return {
pageInit: pageInit,
purchasebtn: purchasebtn
};
});
//create suitelet for xml updation in dispatchtrack
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
*/
/**
* Script Description
*/
/*******************************************************************************
*
* AM Trucking
* AHD - 66 SL Order List form
*
* NetSuite Name :AHD-66 SL Order List form
* Script ID: customscript_jj_suitlet_form
*
* *****************************************************************************
*
*
* $Author: Jobin & Jismi IT Services LLP $
*
* DESCRIPTION
*
* Date Created :23/03/2019
*
* REVISION HISTORY Update:
*
*
*
******************************************************************************/
define(['N/file', 'N/search', 'N/runtime', 'N/record', 'N/https', 'N/email', 'N/ui/serverWidget', 'N/xml'],
function(file, search, runtime, record, https, email, serverWidget, xml) {
var main = {
//function for onRequest-We create the UI
onRequest: function(context) {
log.debug("check");
var do_number = context.request.parameters.do_number
log.debug("do_number", do_number)
var orders = main.findtheOrders(do_number);
for (var j = 0; j < orders.length; j++) {
var orderswithStatus = main.pushtoDispatch(orders[j]);
}
},
findtheOrders: function(do_number) {
var orders = [];
var salesorderSearchObj = search.create({
type: "salesorder",
filters: [
["type", "anyof", "SalesOrd"],
"AND",
["tranid", "is", do_number],
"AND",
["mainline", "is", "T"],
"AND",
["custbody_on_hold", "is", "F"]
],
columns: [
search.createColumn({
name: "tranid",
label: "tranid"
}),
search.createColumn({
name: "internalid",
label: "internalid"
}),
search.createColumn({
name: "custbody_delivery_branch",
label: "custbody_delivery_branch"
}),
search.createColumn({
name: "custbody_stc_total_after_discount",
label: "custbody_stc_total_after_discount"
}),
search.createColumn({
name: "shipdate",
label: "shipdate"
}),
search.createColumn({
name: "lastmodifieddate",
label: "lastmodifieddate"
}),
search.createColumn({
name: "custbody17",
label: "custbody17"
}),
search.createColumn({
name: "addressee",
join: "shippingAddress",
label: " Addressee"
}),
search.createColumn({
name: "address1",
join: "shippingAddress",
label: " Address 1"
}),
search.createColumn({
name: "address2",
join: "shippingAddress",
label: " Address 2"
}),
search.createColumn({
name: "city",
join: "shippingAddress",
label: " City"
}),
search.createColumn({
name: "state",
join: "shippingAddress",
label: " State"
}),
search.createColumn({
name: "zip",
join: "shippingAddress",
label: " Zip"
}),
search.createColumn({
name: "phone",
join: "shippingAddress",
label: " Phone"
}),
search.createColumn({
name: "custrecord152",
join: "shippingAddress",
label: "Email"
}),
search.createColumn({
name: "custrecord_alt_phone",
join: "shippingAddress",
label: "Alt Phone"
})
]
});
var columns = salesorderSearchObj.columns;
var searchResultCount = salesorderSearchObj.runPaged().count;
log.debug("salesorderSearchObj result count", searchResultCount);
salesorderSearchObj.run().each(function(result) {
var dataObj = {};
for (var i = 0 in columns) {
dataObj[columns[i].label] = result.getValue(columns[i]);
if (columns[i].label == "internalid") {
var deliveryorder = record.load({
type: record.Type.SALES_ORDER,
id: dataObj.internalid
});
dataObj.ordernumber = deliveryorder.getValue({
fieldId: 'custbody_cl_pro_number'
});
dataObj.orderdate = deliveryorder.getText({
fieldId: 'trandate'
});
dataObj.deliveryzone = deliveryorder.getValue({
fieldId: 'custbody_do_delivery_zone'
});
dataObj.origin = deliveryorder.getValue({
fieldId: 'custbody30'
});
dataObj.bolnumber = deliveryorder.getValue({
fieldId: 'custbody_seller_bol_no'
});
dataObj.ponumber = deliveryorder.getValue({
fieldId: 'otherrefnum'
});
dataObj.orderstatus = deliveryorder.getText({
fieldId: 'custbody_order_level_status'
});
dataObj.firstrecievedon = deliveryorder.getText({
fieldId: 'custbody_first_received_on'
});
dataObj.estimatedate = deliveryorder.getText({
fieldId: 'custbody_eta_date_calc'
});
dataObj.schedule = deliveryorder.getText({
fieldId: 'custbody_mzc_pkup_schd_day_sh'
});
dataObj.priority2 = deliveryorder.getText({
fieldId: 'custbody_p1_priority'
});
dataObj.priority1 = deliveryorder.getText({
fieldId: 'custbody_customer_loading_priority'
});
dataObj.manifest = deliveryorder.getText({
fieldId: 'custbody_cl_manifest_number'
});
dataObj.customername = deliveryorder.getValue({
fieldId: 'custbody_seller_name'
});
dataObj.entity = deliveryorder.getValue({
fieldId: 'entity'
});
dataObj.memo = deliveryorder.getValue({
fieldId: 'memo'
});
dataObj.deliveryinstruction = deliveryorder.getValue({
fieldId: 'custbody_do_con_service5'
});
dataObj.delivery_route = deliveryorder.getValue({
fieldId: 'custbody_delivery_route'
});
dataObj.servicetype = deliveryorder.getValue({
fieldId: 'custbody_service_level_description_dt'
});
if (dataObj.servicetype == "STANDARD") {
dataObj.servicetype = "DELIVERY"
}
dataObj.createddate = deliveryorder.getValue({
fieldId: "createddate"
});
dataObj.shipadd = deliveryorder.getValue({
fieldId: "custbody_delivery_address_jj"
});
dataObj.dt_route = deliveryorder.getValue({
fieldId: "custbody_dt_delivery_route"
});
dataObj.custbody_delivery_driver_notes = deliveryorder.getValue({
fieldId: "custbody_delivery_driver_notes"
});
log.debug("dataObj.shipadd", (dataObj.shipadd).length)
if (dataObj.shipadd == "" || dataObj.shipadd == null) {
dataObj.addrname = result.getValue({
name: "addressee",
join: "shippingAddress",
label: " Addressee"
});
dataObj.address1 = result.getValue({
name: "address1",
join: "shippingAddress",
label: " Address 1"
});
dataObj.address2d = result.getValue({
name: "address2",
join: "shippingAddress",
label: " Address 2"
});
dataObj.city = result.getValue({
name: "city",
join: "shippingAddress",
label: " City"
});
dataObj.state = result.getValue({
name: "state",
join: "shippingAddress",
label: " State"
});
dataObj.zip = result.getValue({
name: "zip",
join: "shippingAddress",
label: " Zip"
});
dataObj.phone = result.getValue({
name: "phone",
join: "shippingAddress",
label: " Phone"
});
dataObj.email = result.getValue({
name: "custrecord152",
join: "shippingAddress",
label: "Email"
});
dataObj.altphone = result.getValue({
name: "custrecord152",
join: "shippingAddress",
label: "Alt Phone"
});
} else {
var shippingaddresss = JSON.parse(dataObj.shipadd);
dataObj.addrname = shippingaddresss.addresse
dataObj.address1 = shippingaddresss.address1
dataObj.address2d = shippingaddresss.address2d
dataObj.city = shippingaddresss.city
dataObj.state = shippingaddresss.state
dataObj.zip = shippingaddresss.zip
dataObj.phone = shippingaddresss.phone
dataObj.email = shippingaddresss.email
dataObj.altphone = shippingaddresss.altphone
}
var numLines = deliveryorder.getLineCount({
sublistId: 'item'
});
log.debug("numLines", numLines);
var testarray = [];
for (var k = 0; k < numLines; k++) {
var itemslists = {};
itemslists.itemname = deliveryorder.getSublistText({
sublistId: 'item',
fieldId: "item",
line: k
});
itemslists.serialnumber = deliveryorder.getSublistValue({
sublistId: 'item',
fieldId: "custcol_serial_number",
line: k
});
itemslists.quantity = deliveryorder.getSublistValue({
sublistId: 'item',
fieldId: "quantity",
line: k
});
itemslists.amount = deliveryorder.getSublistValue({
sublistId: 'item',
fieldId: "amount",
line: k
});
itemslists.weight = deliveryorder.getSublistValue({
sublistId: 'item',
fieldId: "custcol9",
line: k
});
itemslists.location = deliveryorder.getSublistText({
sublistId: 'item',
fieldId: "custcol_fb_pickup_location",
line: k
});
itemslists.pallet = deliveryorder.getSublistText({
sublistId: 'item',
fieldId: "custcol_no_plts",
line: k
});
itemslists.description = deliveryorder.getSublistText({
sublistId: 'item',
fieldId: "custcol6",
line: k
});
if (itemslists.description == "" || itemslists.description == null) {
itemslists.description = itemslists.itemname;
}
testarray.push(itemslists);
}
dataObj.itemslists = testarray;
var customer = record.load({
type: record.Type.CUSTOMER,
id: dataObj.entity
});
dataObj.entityid = customer.getText({
fieldId: 'entityid'
});
}
}
dataObj.custbody17 = result.getText({
name: "custbody17",
label: "custbody17"
});
dataObj.custbody_delivery_branch = result.getText({
name: "custbody_delivery_branch",
label: "custbody_delivery_branch"
});
orders.push(dataObj);
return true;
});
return orders;
},
/* Sending the delivery order details to Dispatch Track*/
pushtoDispatch: function(orderDetails) {
},
/* Creating the xml content .*/
createxml: function(orderDetails) {
log.debug("orderDetails", orderDetails)
var XML = "";
var myXMLFile = file.load({
id: '3544445'
});
var myXMLFile_value = myXMLFile.getContents();
var TABLE = "";
for (var p = 0; p < orderDetails.itemslists.length; p++) {
var strVar = "";
var descrip = orderDetails.itemslists[p].description.split('&')
log.debug("descrip", descrip)
var descripr = ""
strVar += "<item>"
strVar += "<sale_sequence>1</sale_sequence>"
strVar += "<item_id>" + orderDetails.itemslists[p].itemname + "</item_id>"
strVar += "<number>" + orderDetails.itemslists[p].serialnumber + "</number>"
strVar += "<weight>" + orderDetails.itemslists[p].weight + "</weight>"
strVar += "<price>" + orderDetails.itemslists[p].amount + "</price>"
if (orderDetails.itemslists[p].pallet > 0) {
strVar += "<description>" + "PALLET containing " + orderDetails.itemslists[p].quantity + " | " + orderDetails.itemslists[p].description + "</description>"
if (orderDetails.custbody17 == "RETURN") {
strVar += "<quantity>" + "-" + orderDetails.itemslists[p].pallet + "</quantity>"
} else {
strVar += "<quantity>" + orderDetails.itemslists[p].pallet + "</quantity>"
}
} else {
strVar += "<description>" + orderDetails.itemslists[p].description + "</description>"
if (orderDetails.custbody17 == "RETURN") {
strVar += "<quantity>" + "-" + orderDetails.itemslists[p].quantity + "</quantity>"
} else {
strVar += "<quantity>" + orderDetails.itemslists[p].quantity + "</quantity>"
}
}
strVar += "</item>"
TABLE = TABLE + strVar;
};
log.debug("TABLE", TABLE)
TABLE = TABLE.replace(/&/g, "&")
var note = orderDetails.custbody_delivery_driver_notes
if (note) {
var splitnote = note.split(/\r\n|\n\n|\r/);
log.debug("splitnote", splitnote.length)
var TABLE1 = "";
for (var k = 0; k < splitnote.length; k++) {
var str = "";
var notedata = splitnote[k].split("|")
str = '<note created_at="' + notedata[1] + '" author="' + notedata[0] + '">' + notedata[2] + '</note>'
TABLE1 = TABLE1 + str
}
TABLE1 = TABLE1.replace(/&/g, "&")
log.debug("TABLE1", TABLE1)
}
var timeoforder = [];
var ordernumber = orderDetails.ordernumber
timeoforder = ordernumber.split("-");
XML = myXMLFile_value.replace(/<!-- REPLACEWITHDNO -->/g, timeoforder[0]);
var XML = XML.replace('<!-- REPLACEWITHACCOUNT -->', orderDetails.custbody_delivery_branch);
XML = XML.replace('<!-- REPLACEWITHAMOUNT -->', orderDetails.custbody_stc_total_after_discount);
XML = XML.replace('<!-- REPLACEWITHSHIPDATE -->', orderDetails.shipdate);
XML = XML.replace('<!-- REPLACEWITHCLIENTCODE -->', orderDetails.entityid);
XML = XML.replace('<!-- REPLACEWITHSHIPADDRSEE -->', orderDetails.addrname);
XML = XML.replace('<!-- REPLACEWITHMODIFY -->', orderDetails.lastmodifieddate);
XML = XML.replace(/<!-- REPLACEWITHNAME -->/g, orderDetails.customername);
XML = XML.replace('<!-- REPLACEWITHSHIPADDR1-->', orderDetails.address1);
XML = XML.replace('<!-- REPLACEWITHSHIPCITY -->', orderDetails.city);
XML = XML.replace('<!-- REPLACEWITHSHIPSTATE -->', orderDetails.state);
XML = XML.replace('<!-- REPLACEWITHZIP -->', orderDetails.zip);
XML = XML.replace('<!-- REPLACEWITHTABLE -->', TABLE);
XML = XML.replace('<!-- REPLACEWITHTABLE1 -->', TABLE1);
XML = XML.replace('<!-- REPLACEWITHMAIL -->', orderDetails.email);
XML = XML.replace('<!-- REPLACEWITHPHONE -->', orderDetails.phone);
XML = XML.replace('<!-- REPLACEWITHSERVICE -->', orderDetails.servicetype);
XML = XML.replace('<!-- REPLACEWITHSHIPADDR2-->', orderDetails.address2d);
XML = XML.replace(/<!-- REPLACEWITHCLIENTNAME -->/g, orderDetails.customername);
XML = XML.replace(/<!-- REPLACEWITHBOLNUMBER -->/g, orderDetails.bolnumber);
XML = XML.replace('<!-- REPLACEWITHPONumber -->', orderDetails.ponumber);
XML = XML.replace('<!-- REPLACEWITHCLPRONumber -->', timeoforder[0]);
XML = XML.replace(/<!-- REPLACEWITHOrderDate -->/g, orderDetails.orderdate);
XML = XML.replace(/<!-- REPLACEWITHDeliveryZone -->/g, orderDetails.deliveryzone);
XML = XML.replace('<!-- REPLACEWITHPriorityLevel -->', orderDetails.priority1 + "," + orderDetails.priority2);
XML = XML.replace('<!-- REPLACEWITHNSORDERNUMBER -->', orderDetails.tranid);
XML = XML.replace(/<!-- REPLACEWITHSCHDLDAYS -->/g, orderDetails.estimatedate);
XML = XML.replace('<!-- REPLACEWITHOriginRoute -->', orderDetails.origin);
XML = XML.replace('<!-- REPLACEWITHFIRST -->', orderDetails.firstrecievedon);
XML = XML.replace('<!-- REPLACEWITHMEMO -->', orderDetails.memo);
XML = XML.replace('<!-- REPLACEWITHINTRUCTIONS -->', orderDetails.memo + " \n " + orderDetails.deliveryinstruction);
XML = XML.replace('<!-- REPLACEWITHDeliveryRoute -->', orderDetails.delivery_route);
XML = XML.replace('<!-- REPLACEWITHRoute -->', orderDetails.dt_route);
XML = XML.replace('<!-- REPLACEWITHMANIFEST -->', orderDetails.manifest);
XML = XML.replace('<!-- REPLACEWITHDATECREATED -->', orderDetails.orderdate);
XML = XML.replace('<!-- REPLACEWITHDELIVERYDAYS -->', orderDetails.schedule);
XML = XML.replace(/;/g, "|");
return XML;
}
}
for (var key in main) {
if (typeof main[key] === 'function') {
main[key] = trycatch(main[key], key);
}
}
function trycatch(myfunction, key) {
return function() {
try {
return myfunction.apply(this, arguments);
} catch (e) {
log.debug("e in " + key, e);
}
}
};
return main;
});