When the Order in Package AI is updated the JSON data will send to the suitlet, which is set up in the Package AI. The suitlet will get that JSON data and create a custom record. Later we will update the PO order based on the JSON data.
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
*/
/**
* Script Description
* This suitelet to create custom record Package AI.
*/
/*******************************************************************************
*
* NetSuite Name :AHDTC-23 Pakage API Custom Record
* Script ID :customscript_jj_package_ai_sl_url
*
* *****************************************************************************
*
*
* $Author: Jobin & Jismi IT Services LLP $
*
* DESCRIPTION
* This suitelet to create custom record Package AI with the details that are posted by the third party(Package API)
*
* Date Created :24-07-2019
*
* REVISION HISTORY Update:
*
*
*
******************************************************************************/
define(['N/search', 'N/runtime', 'N/record', 'N/https', 'N/encode', 'N/ui/serverWidget', 'N/email'],
function (search, runtime, record, https, encode, serverWidget, email) {
var main = {
onRequest: function (context) {
log.debug("context.request.body", context.request.body)
var data = JSON.parse(context.request.body)
try {
var packageRecord = record.create({
type: 'customrecord_jj_package_ai'
})
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_event',
value: data.eventType
});
if (data.eventType == 'ORDER_COMMUNICATED') {
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_time_stamp',
value: data.timestamp
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_order_number',
value: data.orderStateUpdate.orderId
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_state',
value: data.orderStateUpdate.state
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_truck',
value: data.orderStateUpdate.vehicleId
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_service_unit',
value: data.orderStateUpdate.routeName
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_scheduled_date',
value: data.orderStateUpdate.scheduledDate
});
packageRecord.setValue({
fieldId: 'custrecord_jj_scheduled_time_window',
value: data.orderStateUpdate.scheduledTimeWindowStart + " - " + data.orderStateUpdate.scheduledTimeWindowEnd
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_conversation_li',
value: data.orderStateUpdate.conversationLink
});
} else if (data.eventType == 'ORDER_CONFIRMED') {
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_time_stamp',
value: data.timestamp
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_order_number',
value: data.orderStateUpdate.orderId
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_state',
value: data.orderStateUpdate.state
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_scheduled_date',
value: data.orderStateUpdate.scheduledDate
});
packageRecord.setValue({
fieldId: 'custrecord_jj_scheduled_time_window',
value: data.orderStateUpdate.scheduledTimeWindowStart + " - " + data.orderStateUpdate.scheduledTimeWindowEnd
});
} else if (data.eventType == 'ORDER_RESCHEDULED') {
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_time_stamp',
value: data.timestamp
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_order_number',
value: data.orderRescheduled.orderId
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_state',
value: data.orderRescheduled.state
});
if (data.orderRescheduled.state == "PLANNED") {
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_truck',
value: data.orderRescheduled.vehicleId
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_service_unit',
value: data.orderRescheduled.routeName
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_scheduled_date',
value: data.orderRescheduled.scheduledDate
});
packageRecord.setValue({
fieldId: 'custrecord_jj_scheduled_time_window',
value: data.orderRescheduled.scheduledTimeWindowStart + " - " + data.orderRescheduled.scheduledTimeWindowEnd
});
} else {
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_truck',
value: ""
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_service_unit',
value: ""
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_scheduled_date',
value: ""
});
packageRecord.setValue({
fieldId: 'custrecord_jj_scheduled_time_window',
value: ""
});
}
} else if (data.eventType == 'ORDER_OUT_ON_ROUTE') {
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_time_stamp',
value: data.timestamp
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_order_number',
value: data.orderStateUpdate.orderId
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_state',
value: data.orderStateUpdate.state
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_truck',
value: data.orderStateUpdate.vehicleId
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_service_unit',
value: data.orderStateUpdate.routeName
});
} else if (data.eventType == 'ORDER_COMPLETED') {
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_time_stamp',
value: data.timestamp
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_order_number',
value: data.orderStateUpdate.orderId
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_state',
value: data.orderStateUpdate.state
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_signed_by',
value: data.orderStateUpdate.signedBy
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_signature_url',
value: data.orderStateUpdate.signatureUrl
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_summary_url',
value: data.orderStateUpdate.summaryUrl
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_photo_url',
value: data.orderStateUpdate.photoURLs[0]
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_driver_note',
value: data.orderStateUpdate.driverNotes
});
} else if (data.eventType == 'ORDER_FAILED') {
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_time_stamp',
value: data.timestamp
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_order_number',
value: data.orderStateUpdate.orderId
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_state',
value: data.orderStateUpdate.state
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_photo_url',
value: data.orderStateUpdate.photoURLs[0]
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_driver_note',
value: data.orderStateUpdate.driverNotes + "\n" + data.orderStateUpdate.failureReason
});
} else if (data.eventType == 'POSITIVE_FEEDBACK_RECEIVED') {
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_time_stamp',
value: data.timestamp
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_order_number',
value: data.orderFeedback.orderId
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_feedback_score',
value: data.orderFeedback.score
});
// packageRecord.setValue({
// fieldId: 'custrecord_jj_package_ai_truck',
// value: data.orderStateUpdate.vehicleId
// });
} else if (data.eventType == 'OPERATOR_NOTES_ADDED') {
// packageRecord.setValue({
// fieldId: 'custrecord_jj_package_ai_time_stamp',
// value: data.timestamp
// });
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_order_number',
value: data.orderNotes.orderId
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_driver_note',
value: data.orderNotes.note + " by " + data.orderNotes.writtenBy
});
}
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_json_data',
value: JSON.stringify(data)
});
packageRecord.save();
} catch (er) {
log.debug("er", er)
var packageRecord = record.create({
type: 'customrecord_jj_package_ai'
})
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_event',
value: 'ERROR_OCCURRED'
});
packageRecord.setValue({
fieldId: 'custrecord_jj_package_ai_error_message',
value: er.message
});
packageRecord.save();
}
}
}
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 UserEventScript
* @NModuleScope SameAccount
*/
/*******************************************************************************
* AHDTC-24 UE Custom Record to DO update
* *************************************************************************
*
* Date: 24-07-2019
*
*
* Author: Jobin & Jismi IT Services LLP
*
*****************************************************************************
**/
define(['N/file', 'N/url', 'N/search', 'N/runtime', 'N/record', 'N/https', 'N/ui/serverWidget', 'N/email', 'N/task', 'N/format'],
function (file, url, search, runtime, record, https, serverWidget, email, task, format) {
var main = {
afterSubmit: function (scriptContext) {
if (scriptContext.type == "create") {
var packageAI = scriptContext.newRecord;
var eventType = packageAI.getValue('custrecord_jj_package_ai_event');
if (eventType == "ERROR_OCCURED") {
email.send({
author: -5,
recipients: 'dean@wglgroupusa.com',
subject: "ERROR IN PACKAGE AI RESPONSE",
body: packageAI.getValue('custrecord_jj_package_ai_error_message')
});
} else {
var orderNumber = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_order_number'
});
var deliveryid = main.salesOrderFind(orderNumber, packageAI)
if (deliveryid) {
var deliveryorder = record.load({
type: record.Type.SALES_ORDER,
id: deliveryid
});
if (eventType == "ORDER_COMMUNICATED") {
var timeStamp = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_time_stamp'
});
var status = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_state'
});
var truck = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_truck'
});
var scheduledDate = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_scheduled_date'
});
var timeWindow = packageAI.getValue({
fieldId: 'custrecord_jj_scheduled_time_window'
});
var conversationLink = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_conversation_li'
});
var serviceUnit = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_service_unit'
});
var UserID = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_user'
});
var stop = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_stop'
});
var driverTeam = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_driver_team'
});
var jsonData = JSON.parse(packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_json_data'
}));
deliveryorder.setValue({
fieldId: 'custbody_delivery_event_time_stamp',
value: timeStamp
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_stop_number',
value: stop
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_driver_helper',
value: driverTeam
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_status',
value: status
});
deliveryorder.setValue({
fieldId: 'custbody_truck',
value: truck
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_service_unit',
value: serviceUnit
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_schedule_date',
value: scheduledDate
});
deliveryorder.setValue({
fieldId: 'custbody_scheduled_time_window',
value: timeWindow
});
deliveryorder.setValue({
fieldId: 'custbody_conversation_link',
value: conversationLink
});
deliveryorder.setValue({
fieldId: 'custbody_cl_order_history',
value: 'Order Planned By ' + UserID + ' , ' + timeWindow + ' , ' + serviceUnit + ' , Stop# ' + stop
});
deliveryorder.setValue({
fieldId: 'custbody_extra_params',
value: jsonData.orderStateUpdate.extraParams.toString()
});
var itemDetails = jsonData.orderStateUpdate.items
for (var i = 0; i < itemDetails.length; i++) {
try {
if (itemDetails[i].barcode) {
var serialBarcode = itemDetails[i].barcode
var lineNumber = deliveryorder.findSublistLineWithValue({
sublistId: 'item',
fieldId: 'custcol_serial_number',
value: serialBarcode
});
deliveryorder.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_item_level_statuses',
line: lineNumber,
value: 45
});
} else {
var itemid = main.itemSearch(itemDetails[i].title)
if (itemid) {
var lineNumber = deliveryorder.findSublistLineWithValue({
sublistId: 'item',
fieldId: 'item',
value: itemid
});
deliveryorder.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_item_level_statuses',
line: lineNumber,
value: 45
});
}
}
} catch (err) {
log.debug("err", err)
}
}
var fields = deliveryorder.getSublistFields({
sublistId: 'item'
});
var orderStatusorg = deliveryorder.getValue({
fieldId: 'custbody_order_level_status'
});
var lineObject = main.fetchLines(deliveryorder, fields);
var orderStatus = main.getOrderstatus(lineObject, orderStatusorg);
if (orderStatus != false) {
deliveryorder.setValue({
fieldId: "custbody_order_level_status",
value: orderStatus
});
}
} else if (eventType == 'ORDER_CONFIRMED') {
var timeStamp = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_time_stamp'
});
var status = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_state'
});
var scheduledDate = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_scheduled_date'
});
var timeWindow = packageAI.getValue({
fieldId: 'custrecord_jj_scheduled_time_window'
});
var serviceUnit = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_service_unit'
});
// var UserID = packageAI.getValue({
// fieldId: 'custrecord_jj_package_ai_user'
// });
var stop = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_stop'
});
var driverTeam = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_driver_team'
});
var jsonData = JSON.parse(packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_json_data'
}));
deliveryorder.setValue({
fieldId: 'custbody_delivery_event_time_stamp',
value: timeStamp
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_stop_number',
value: stop
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_driver_helper',
value: driverTeam
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_service_unit',
value: serviceUnit
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_status',
value: status
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_schedule_date',
value: scheduledDate
});
deliveryorder.setValue({
fieldId: 'custbody_scheduled_time_window',
value: timeWindow
});
deliveryorder.setValue({
fieldId: 'custbody_cl_order_history',
value: 'Schedule Confirmed by Customer: ' + timeWindow + ',' + serviceUnit + ', Stop# ' + stop
});
var itemDetails = jsonData.orderStateUpdate.items
for (var i = 0; i < itemDetails.length; i++) {
try {
if (itemDetails[i].barcode) {
var serialBarcode = itemDetails[i].barcode
var lineNumber = deliveryorder.findSublistLineWithValue({
sublistId: 'item',
fieldId: 'custcol_serial_number',
value: serialBarcode
});
deliveryorder.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_item_level_statuses',
line: lineNumber,
value: 17
});
} else {
var itemid = main.itemSearch(itemDetails[i].title)
if (itemid) {
var lineNumber = deliveryorder.findSublistLineWithValue({
sublistId: 'item',
fieldId: 'item',
value: itemid
});
deliveryorder.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_item_level_statuses',
line: lineNumber,
value: 17
});
}
}
} catch (err) {
log.debug("err", err)
}
}
var fields = deliveryorder.getSublistFields({
sublistId: 'item'
});
var orderStatusorg = deliveryorder.getValue({
fieldId: 'custbody_order_level_status'
});
var lineObject = main.fetchLines(deliveryorder, fields);
var orderStatus = main.getOrderstatus(lineObject, orderStatusorg);
if (orderStatus != false) {
deliveryorder.setValue({
fieldId: "custbody_order_level_status",
value: orderStatus
});
}
} else if (eventType == 'ORDER_RESCHEDULED') {
var timeStamp = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_time_stamp'
});
var status = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_state'
});
var jsonData = JSON.parse(packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_json_data'
}));
deliveryorder.setValue({
fieldId: 'custbody_delivery_event_time_stamp',
value: timeStamp
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_status',
value: status
});
if (jsonData.orderRescheduled.state == "PLANNED") {
var truck = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_truck'
});
var serviceUnit = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_service_unit'
});
var scheduledDate = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_scheduled_date'
});
var timeWindow = packageAI.getValue({
fieldId: 'custrecord_jj_scheduled_time_window'
});
var UserID = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_user'
});
deliveryorder.setValue({
fieldId: 'custbody_truck',
value: truck
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_service_unit',
value: serviceUnit
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_schedule_date',
value: scheduledDate
});
deliveryorder.setValue({
fieldId: 'custbody_scheduled_time_window',
value: timeWindow
});
} else {
deliveryorder.setValue({
fieldId: 'custbody_truck',
value: ""
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_service_unit',
value: ""
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_schedule_date',
value: ""
});
deliveryorder.setValue({
fieldId: 'custbody_scheduled_time_window',
value: ""
});
}
deliveryorder.setValue({
fieldId: 'custbody_cl_order_history',
value: 'Removed from Route by ' + UserID
});
// // var itemDetails = jsonData.orderRescheduled.items
var numLines = deliveryorder.getLineCount({
sublistId: 'item'
});
for (var i = 0; i < numLines; i++) {
try {
deliveryorder.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_item_level_statuses',
line: i,
value: 43
});
} catch (err) {
log.debug("err", err)
}
}
var fields = deliveryorder.getSublistFields({
sublistId: 'item'
});
var orderStatusorg = deliveryorder.getValue({
fieldId: 'custbody_order_level_status'
});
var lineObject = main.fetchLines(deliveryorder, fields);
var orderStatus = main.getOrderstatus(lineObject, orderStatusorg);
if (orderStatus != false) {
deliveryorder.setValue({
fieldId: "custbody_order_level_status",
value: orderStatus
});
}
} else if (eventType == 'ORDER_OUT_ON_ROUTE') {
var timeStamp = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_time_stamp'
});
var status = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_state'
});
var truck = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_truck'
});
var serviceUnit = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_service_unit'
});
var jsonData = JSON.parse(packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_json_data'
}));
deliveryorder.setValue({
fieldId: 'custbody_delivery_event_time_stamp',
value: timeStamp
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_status',
value: status
});
deliveryorder.setValue({
fieldId: 'custbody_truck',
value: truck
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_service_unit',
value: serviceUnit
});
var itemDetails = jsonData.orderStateUpdate.items
for (var i = 0; i < itemDetails.length; i++) {
try {
if (itemDetails[i].barcode) {
var serialBarcode = itemDetails[i].barcode
var lineNumber = deliveryorder.findSublistLineWithValue({
sublistId: 'item',
fieldId: 'custcol_serial_number',
value: serialBarcode
});
deliveryorder.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_item_level_statuses',
line: lineNumber,
value: 33
});
} else {
var itemid = main.itemSearch(itemDetails[i].title)
if (itemid) {
var lineNumber = deliveryorder.findSublistLineWithValue({
sublistId: 'item',
fieldId: 'item',
value: itemid
});
deliveryorder.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_item_level_statuses',
line: lineNumber,
value: 33
});
}
}
} catch (err) {
log.debug("err", err)
}
}
var fields = deliveryorder.getSublistFields({
sublistId: 'item'
});
var orderStatusorg = deliveryorder.getValue({
fieldId: 'custbody_order_level_status'
});
var lineObject = main.fetchLines(deliveryorder, fields);
var orderStatus = main.getOrderstatus(lineObject, orderStatusorg);
if (orderStatus != false) {
deliveryorder.setValue({
fieldId: "custbody_order_level_status",
value: orderStatus
});
}
} else if (eventType == 'ORDER_COMPLETED') {
var timeStamp = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_time_stamp'
});
var status = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_state'
});
var signedBy = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_signed_by'
});
var signatureUrl = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_signature_url'
});
var summaryUrl = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_summary_url'
});
var photoUrl = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_photo_url'
});
var driverNote = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_driver_note'
});
var jsonData = JSON.parse(packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_json_data'
}));
deliveryorder.setValue({
fieldId: 'custbody_delivery_event_time_stamp',
value: timeStamp
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_status',
value: status
});
deliveryorder.setValue({
fieldId: 'custbody_signed_by',
value: signedBy
});
deliveryorder.setValue({
fieldId: 'custbody_signature_url',
value: signatureUrl
});
deliveryorder.setValue({
fieldId: 'custbody_order_photos_url',
value: photoUrl
});
deliveryorder.setValue({
fieldId: 'custbody_order_summary_url',
value: summaryUrl
});
var driverNote1 = deliveryorder.getValue({
fieldId: 'custbody_delivery_driver_notes'
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_driver_notes',
value: driverNote1 + " \n " + driverNote
});
var itemDetails = jsonData.orderStateUpdate.items
for (var i = 0; i < itemDetails.length; i++) {
try {
if (itemDetails[i].barcode) {
var serialBarcode = itemDetails[i].barcode
var lineNumber = deliveryorder.findSublistLineWithValue({
sublistId: 'item',
fieldId: 'custcol_serial_number',
value: serialBarcode
});
if (itemDetails[i].itemState == "COMPLETED") {
deliveryorder.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_item_level_statuses',
line: lineNumber,
value: 28
});
} else {
deliveryorder.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_item_level_statuses',
line: lineNumber,
value: 44
});
}
} else {
var itemid = main.itemSearch(itemDetails[i].title)
if (itemid) {
var lineNumber = deliveryorder.findSublistLineWithValue({
sublistId: 'item',
fieldId: 'item',
value: itemid
});
if (itemDetails[i].itemState == "COMPLETED") {
deliveryorder.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_item_level_statuses',
line: lineNumber,
value: 28
});
} else {
deliveryorder.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_item_level_statuses',
line: lineNumber,
value: 44
});
}
}
}
deliveryorder.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_line_photos_url',
line: lineNumber,
value: itemDetails[i].photoURLs[0]
});
} catch (err) {
log.debug("err", err)
}
}
var fields = deliveryorder.getSublistFields({
sublistId: 'item'
});
var orderStatusorg = deliveryorder.getValue({
fieldId: 'custbody_order_level_status'
});
var lineObject = main.fetchLines(deliveryorder, fields);
var orderStatus = main.getOrderstatus(lineObject, orderStatusorg);
if (orderStatus != false) {
deliveryorder.setValue({
fieldId: "custbody_order_level_status",
value: orderStatus
});
}
} else if (eventType == 'ORDER_FAILED') {
var timeStamp = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_time_stamp'
});
var status = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_state'
});
var photoUrl = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_photo_url'
});
var driverNote = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_driver_note'
});
var jsonData = JSON.parse(packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_json_data'
}));
deliveryorder.setValue({
fieldId: 'custbody_delivery_event_time_stamp',
value: timeStamp
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_status',
value: status
});
deliveryorder.setValue({
fieldId: 'custbody_order_photos_url',
value: photoUrl
});
var driverNote1 = deliveryorder.getValue({
fieldId: 'custbody_delivery_driver_notes'
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_driver_notes',
value: driverNote1 + " \n " + driverNote
});
var itemDetails = jsonData.orderStateUpdate.items
for (var i = 0; i < itemDetails.length; i++) {
try {
if (itemDetails[i].barcode) {
var serialBarcode = itemDetails[i].barcode
var lineNumber = deliveryorder.findSublistLineWithValue({
sublistId: 'item',
fieldId: 'custcol_serial_number',
value: serialBarcode
});
deliveryorder.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_item_level_statuses',
line: lineNumber,
value: 44
});
} else {
var itemid = main.itemSearch(itemDetails[i].title)
if (itemid) {
var lineNumber = deliveryorder.findSublistLineWithValue({
sublistId: 'item',
fieldId: 'item',
value: itemid
});
deliveryorder.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_item_level_statuses',
line: lineNumber,
value: 44
});
}
}
} catch (err) {
log.debug("err", err)
}
}
var fields = deliveryorder.getSublistFields({
sublistId: 'item'
});
var orderStatusorg = deliveryorder.getValue({
fieldId: 'custbody_order_level_status'
});
var lineObject = main.fetchLines(deliveryorder, fields);
var orderStatus = main.getOrderstatus(lineObject, orderStatusorg);
if (orderStatus != false) {
deliveryorder.setValue({
fieldId: "custbody_order_level_status",
value: orderStatus
});
}
} else if (eventType == 'POSITIVE_FEEDBACK_RECEIVED') {
var timeStamp = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_time_stamp'
});
var score = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_feedback_score'
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_event_time_stamp',
value: timeStamp
});
deliveryorder.setValue({
fieldId: 'custbody_feedback_score',
value: score
});
deliveryorder.setValue({
fieldId: 'custbody_feedback_text',
value: score
});
} else if (eventType == 'OPERATOR_NOTES_ADDED') {
var driverNote = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_driver_note'
});
var UserID = packageAI.getValue({
fieldId: 'custrecord_jj_package_ai_user'
});
var driverNote1 = deliveryorder.getValue({
fieldId: 'custbody_delivery_driver_notes'
});
deliveryorder.setValue({
fieldId: 'custbody_delivery_driver_notes',
value: driverNote1 + " \n " + driverNote
});
deliveryorder.setValue({
fieldId: 'custbody_cl_order_history',
value: 'Note added By ' + UserID
});
}
var id = deliveryorder.save({
enableSourcing: false,
ignoreMandatoryFields: true
});
}
}
}
},
itemSearch: function (itemName) {
var itemSearchObj = search.create({
type: "item",
filters: [
["name", "is", itemName]
],
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"
});
return itemid;
} else {
return false;
}
},
getOrderstatus: function (lineObj, orderStatus) {
log.debug("orderStatus", orderStatus);
if (orderStatus == "") {
/*Order Manually*/
if (main.checkStatus(lineObj, 3, '', false))
return 3
}
/*Received in Delivery Terminal*/
if (main.checkStatus(lineObj, 10, 15, '', false))
return 32
/*Received in Consol Center*/
if (main.checkStatus(lineObj, 11, '', false))
return 15
/*Routed for pickup*/
if (main.checkStatus(lineObj, 5, '', false))
return 4
/*Routed for pickup*/
// if (main.checkStatus(lineObj, 4, '', false))
// return 4
/*Routed for Delivery*/
if (main.checkStatus(lineObj, 4, '', false))
return 18
/*Finished*/
if (main.checkStatus(lineObj, 28, '', false))
return 36
/*ETA Delay*/
if (main.checkStatus(lineObj, 30, '', false))
return 38
/*Hold*/
if (main.checkStatus(lineObj, 27, '', false))
return 35
/*Failed*/
if (main.checkStatus(lineObj, 44, '', false))
return 66
/*Rescheduled*/
if (main.checkStatus(lineObj, 43, '', false))
return 65
/*Started*/
if (main.checkStatus(lineObj, 29, '', false))
return 37
/*Unable Start*/
if (main.checkStatus(lineObj, 21, '', false))
return 27
/*Unable Finish*/
if (main.checkStatus(lineObj, 22, '', false))
return 28
/*In-Transit to Delivery Terminal*/
if (main.checkStatus(lineObj, 31, '', false))
return 20
/*In-Transit to Consol Center*/
if (main.checkStatus(lineObj, 32, '', false))
return 33
/*In-Transit */
if (main.checkStatus(lineObj, 33, '', false))
return 40
/*Planned */
if (main.checkStatus(lineObj, 45, '', false))
return 67
/*Scheduled For Delivery */
if (main.checkStatus(lineObj, 17, '', false))
return 22
/*Picked up from Store*/
if (main.checkStatus(lineObj, 9, '', false))
return 56
if (orderStatus == "") {
/*Partially Received in electronic Orders recieved*/
if (main.checkStatus(lineObj, 1, '', true))
return 1
}
/*Partially Planned */
if (main.checkStatus(lineObj, 45, '', true))
return 68
/*Partially Received in Delivery Terminal*/
if (main.checkStatus(lineObj, 10, 15, true))
return 16
/*Partially Received in Consol Center*/
if (main.checkStatus(lineObj, 11, '', true))
return 17
/*Partialy Routed for Delivery*/
if (main.checkStatus(lineObj, 12, '', true))
return 34
// /*Partialy Routed for pickup*/
// if (main.checkStatus(lineObj, 5, '', true))
// return 5
/*Partialy In-Transit to Delivery Terminal*/
if (main.checkStatus(lineObj, 31, '', true))
return 21
/*Partialy In-Transit to Consol Center*/
if (main.checkStatus(lineObj, 32, '', true))
return 39
/*Partially Scheduled for Delivery*/
if (main.checkStatus(lineObj, 17, '', true))
return 42
/*Partially Picked Up from Store*/
if (main.checkStatus(lineObj, 9, '', true))
return 57
return false
},
checkStatus: function (lineObj, checkStatus1, checkStatus2, single) {
var flag = false;
for (var key in lineObj) {
if (lineObj[key]['itemtype'] == "InvtPart") {
var itemStatus = lineObj[key]['custcol_item_level_statuses'];
if (itemStatus == checkStatus1 || itemStatus == checkStatus2) {
flag = true;
} else {
if (single == false) {
flag = false;
return flag;
}
}
}
}
return flag;
},
fetchLines: function (deliveryorder, fields) {
var numLines = deliveryorder.getLineCount({
sublistId: 'item'
});
var lineObj = {};
for (var i = 0; i < numLines; i++) {
lineObj[i] = {};
for (var k = 0; k < fields.length; k++) {
lineObj[i][fields[k]] = deliveryorder.getSublistValue({
fieldId: fields[k],
sublistId: 'item',
line: i
});
}
}
return lineObj;
},
salesOrderFind: function (orderno, packageAI) {
var deliveryid;
var salesorderSearchObj = search.create({
type: "salesorder",
filters: [
["type", "anyof", "SalesOrd"],
"AND",
["numbertext", "is", orderno],
"AND",
["mainline", "is", "T"]
],
columns: [
search.createColumn({
name: "internalid",
label: "Internal ID"
})
]
});
var searchResultCount = salesorderSearchObj.runPaged().count;
log.debug("salesorderSearchObj result count", searchResultCount);
if (searchResultCount == 0) {
var otherId = record.submitFields({
type: 'customrecord_jj_package_ai',
id: packageAI.id,
values: {
'custrecord_jj_package_ai_event': 'ERROR_OCCURRED',
'custrecord_jj_package_ai_error_message': 'Order is not present'
}
});
} else {
salesorderSearchObj.run().each(function (result) {
deliveryid = result.getValue({
name: "internalid",
label: "Internal ID"
});
});
return deliveryid;
}
}
};
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;
});