When the Order Level Status update “Received in Delivery Terminal” it triggers the script to send the details to Package AI.
Check if RMA is issued to that respective Order.
If the RMA is not issued will fetch the details of each Sales Order and POST the data to the Package AI.
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
*/
/**
* Script Description
* This suitelet to send orders to Package AI.
*/
/*******************************************************************************
*
* NetSuite Name :{JJ} AM-183 Send Orders to Package AI
* Script ID :customscript_jj_send_order_to_package_ai
*
* *****************************************************************************
*
*
* $Author: Jobin & Jismi IT Services LLP $
*
* DESCRIPTION
* This suitelet to send orders to Package AI.
* The script is triggered from the User event of record on the Button Click.
*
* Date Created :26th August 2019
*
* REVISION HISTORY Update:
*
*
*
******************************************************************************/
define(['N/search', 'N/runtime', 'N/record', 'N/https', 'N/encode', 'N/ui/serverWidget', 'N/email', 'N/format'],
function (search, runtime, record, https, encode, serverWidget, email, format) {
var main = {
onRequest: function (context) {
var do_number = context.request.parameters.do_number
log.debug("do_number", do_number)
var deliveryorder = record.load({
type: record.Type.SALES_ORDER,
id: do_number
});
var jsonBody = main.jsonCreation(deliveryorder);
if (jsonBody != false) {
var accessToken = 'eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3BhY2thZ2UuYWkvIiwiaWF0IjoxNTY3NDkwMTMzLCJzdWIiOiJmd01rTG5Sb3BoZkYiLCJyb2xlIjoib3BlcmF0b3IiLCJhY2NvdW50SWQiOiJmSUg4OFk2UXNsWTAiLCJuYW1lIjoiRGV2IiwiYWxsb3dlZEh1YnMiOlsiZklJYVFsTnZxT3h1IiwiZklJYVFsQ0RaQkZtIl19.LduO0brvEqfZkxVGKoIw70zOvkmarQoeh64iAtuN_Uw'
var headerObj = {
"Authorization": "Bearer " + accessToken,
"Content-Type": 'application/json',
"Accept": 'application/json'
};
var response = https.post({
url: 'https://api.package.ai/am-sandbox/v1/orders',
headers: headerObj,
body: JSON.stringify(jsonBody),
json: true
});
log.debug("response", response)
if (response.code == 201) {
var serviceType = deliveryorder.getValue({
fieldId: 'custbody17'
});
var linenumber = deliveryorder.getLineCount({
sublistId: 'item'
});
if (serviceType == 2) {
for (var a = 0; a < linenumber; a++) {
deliveryorder.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_item_level_statuses',
line: a,
value: 4
});
}
deliveryorder.setValue({
fieldId: 'custbody_order_level_status',
value: 18
});
}
if (serviceType == 5) {
for (var a = 0; a < linenumber; a++) {
deliveryorder.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_item_level_statuses',
line: a,
value: 12
});
}
deliveryorder.setValue({
fieldId: 'custbody_order_level_status',
value: 58
});
}
var routeDateTime = main.getFormatTimeZone(new Date())
var historyset = "Order automatically routed to PAI on:" + routeDateTime;
deliveryorder.setValue({
fieldId: 'custbody_cl_order_history',
value: historyset
});
var data = JSON.parse(response.body)
log.debug("data", data.id)
deliveryorder.setValue({
fieldId: 'custbody_jj_package_ai_id',
value: data.id
});
}
var id = deliveryorder.save({
enableSourcing: false,
ignoreMandatoryFields: true
});
} else
log.debug("check", "it have rma");
},
jsonCreation: function (deliveryorder) {
var dataObj = {};
dataObj.ordernumber = deliveryorder.getValue({
fieldId: 'tranid'
});
//AB update 29.08
var releatedRec = deliveryorder.getText({
fieldId: 'custbody_jj_rma_number'
});
log.debug('releatedRec', releatedRec)
var getValue = 0
if (releatedRec.length > 0) {
for (var i = 0; i < releatedRec.length; i++) {
var index = releatedRec[i].indexOf('Return Authorization');
log.debug('index', index)
if (index == -1) {
continue;
} else
getValue = 1
}
}
var hubid = deliveryorder.getText({
fieldId: "custbody_delivery_branch"
});
if (hubid == "NJT" || hubid == "NCT") {
} else {
getValue = 1
}
if (getValue != 1) {
var visiting = deliveryorder.getText({
fieldId: 'custbody17'
});
dataObj.bolnumber = deliveryorder.getValue({
fieldId: 'custbody_seller_bol_no'
});
dataObj.priority2 = deliveryorder.getText({
fieldId: 'custbody_p1_priority'
});
dataObj.priority1 = deliveryorder.getText({
fieldId: 'custbody_customer_loading_priority'
});
dataObj.dt_route = deliveryorder.getValue({
fieldId: "custbody_dt_delivery_route"
});
dataObj.origin = deliveryorder.getValue({
fieldId: 'custbody30'
});
dataObj.firstrecievedon = deliveryorder.getText({
fieldId: 'custbody_first_received_on'
});
dataObj.custbody_default_store_instructions = deliveryorder.getValue({
fieldId: 'custbody_default_store_instructions'
});
dataObj.delivery_route = deliveryorder.getValue({
fieldId: 'custbody_delivery_route'
});
//ab update end
dataObj.custbody_delivery_branch = deliveryorder.getText({
fieldId: "custbody_delivery_branch"
});
var shipadd = deliveryorder.getValue({
fieldId: "custbody_delivery_address_jj"
}); {
var shippingaddresss = JSON.parse(shipadd);
var addrname = shippingaddresss.addresse
addrname = addrname.split(" ")
dataObj.firstName = addrname[0]
var namelast = '';
for (var m = 1; m < addrname.length; m++) {
namelast += addrname[m] + " "
}
dataObj.lastName = namelast
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
}
dataObj.shipdate = deliveryorder.getValue({
fieldId: 'custbody_first_received_on'
});
dataObj.deliveryinstruction = deliveryorder.getValue({
fieldId: 'custbody_default_store_instructions'
});
dataObj.memo = deliveryorder.getValue({
fieldId: 'memo'
});
dataObj.endDate = deliveryorder.getValue({
fieldId: 'custbody_eta_date_calc'
});
dataObj.startDate = deliveryorder.getValue({
fieldId: 'custbodyeta_date_calc_from'
});
var fields = deliveryorder.getSublistFields({
sublistId: 'item'
});
var lineObj = main.fetchLines(deliveryorder, fields);
log.debug("lineObj", lineObj)
var eachObj = {};
var itemArr = []
for (var key in lineObj) {
var keyObj = lineObj[key]
eachObj.title = keyObj.item_display;
eachObj.description = keyObj.custcol6;
eachObj.barcode = keyObj.custcol_serial_number;
eachObj.visitPurpose = visiting;
var weight = keyObj.custcol9
eachObj.load = { weight: weight }
itemArr.push(eachObj);
eachObj = {}
//eachObj.location = visiting;
}
var date = main.getFormatDate(new Date());
log.debug("date", date)
if (dataObj.endDate)
var endDate = main.getFormatDate(dataObj.endDate);
if (dataObj.startDate)
var startDate = main.getFormatDate(dataObj.startDate);
var jsonData = {
"hubId": "NJT",
"orderId": dataObj.ordernumber,
"bol": dataObj.bolnumber,
"visitPurpose": visiting,
"recipient": {
"firstName": dataObj.firstName,
"lastName": dataObj.lastName,
"phone1": dataObj.phone,
"phone2": dataObj.altphone,
"email": dataObj.email
},
"address": {
"streetAddress": dataObj.address1,
"city": dataObj.city,
"stateOrRegion": dataObj.state,
"zipCode": dataObj.zip,
"addressNotes": dataObj.address2d
},
//"shippingDate": date,
"deliverByDate": endDate,
"earliestShippingDate": startDate,
// "startTime": "09:00",
// "finishTime": "13:30",
// "visitDuration": 30,
"deliveryNotes": dataObj.deliveryinstruction + "\n" + dataObj.memo,
// "cashOnDelivery": "147",
// "salesRep": "sales rep 1",
"items": itemArr,
"extraParams": {
"prioritylevel": (dataObj.priority1 + " , " || dataObj.priority2) || ' ',
"Route": dataObj.dt_route || ' ',
"Delivery route": dataObj.delivery_route || ' ',
"origin": dataObj.origin || ' ',
"First recieve on": dataObj.firstrecievedon || ' ',
"Store instruction": dataObj.custbody_default_store_instructions || ' '
}
}
log.debug('jsonData', jsonData)
return jsonData;
} else
return false
},
getFormatDate: function (dateValue) {
log.debug("dateValue", dateValue)
var NEWYORK = format.format({
value: dateValue,
type: format.Type.DATETIME,
timezone: format.Timezone.AMERICA_NEW_YORK
});
var initialFormattedDateString = NEWYORK;
var parsedDateStringAsRawDateObject = format.parse({
value: initialFormattedDateString,
type: format.Type.DATE
});
var formattedDateString = format.format({
value: parsedDateStringAsRawDateObject,
type: format.Type.DATE
});
formattedDateString = formattedDateString.split("-")
var dd = new Date(formattedDateString).getDate()
var mm = new Date(formattedDateString).getMonth() + 1
if (mm < 10) {
mm = "0" + mm
}
if (dd < 10) {
dd = "0" + dd
}
var yyyy = new Date(formattedDateString).getFullYear()
var date = yyyy + "-" + mm + "-" + dd
return date;
},
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;
},
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;
},
}
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;
});