Jira Code: PROT-215
This script is to adjust the number of labels based on the number of unique CONTAINER CODES. If the same ‘container Code’ has multiple ‘AVC Item id’ then the label should show ‘Mixed SKUs’ otherwise the AVC Item id should be shown.
Suitelet:PROT-193 SL Print SSCC Label
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
*/
/*******************************************************************************
*
* Author : Jobin and jismi created on:09/05/2019 SV
*
******************************************************************************/
define(["N/search", "N/record", "N/render", "N/file"], function(search, record, render, file) {
var LOGO = {
"PT": "https://system.na1.netsuite.com/core/media/media.nl?id=254836&c=1312745&h=2483fad4245a495342b6",
"BLVD": "https://system.na1.netsuite.com/core/media/media.nl?id=254895&c=1312745&h=3aaa3dce17a3d5bbd3d4",
"NG": "https://system.na1.netsuite.com/core/media/media.nl?id=535&c=1312745&h=2204bb9caa70411d50b2",
"SUNJEEN": "https://system.na1.netsuite.com/core/media/media.nl?id=254836&c=1312745&h=2483fad4245a495342b6"
}
var EMAILS = {
"PT": "protecstyle.com",
"BLVD": "iloveblvd.com",
"NG": "thenailgenie.com",
"SUNJEEN": "protecstyle.com"
}
function onRequest(context) {
try {
var recId = context.request.parameters.recId;
var avc = {};
var itemfulfillmentLookUp = search.lookupFields({
type: "itemfulfillment",
id: recId,
columns: ["createdfrom.custbody_cust_po_number", "shipaddress", "createdfrom.department", "item.custitem30"]
});
var amazon_ASIN_num = itemfulfillmentLookUp["item.custitem30"];
log.debug('amazon_ASIN_num', amazon_ASIN_num)
log.debug('itemfulfillmentLookUp', itemfulfillmentLookUp)
var department = itemfulfillmentLookUp["createdfrom.department"][0]["text"];
department = department ? department : "PT";
var itemfulfillment = {
soid: itemfulfillmentLookUp["createdfrom.custbody_cust_po_number"],
shipto: (itemfulfillmentLookUp["shipaddress"]).replace(/\n/g, "<br/>"),
logo: LOGO[department],
email: EMAILS[department]
};
var acnAvsDetailsSearch = search.create({
type: "customrecord_cps_avc_asn_details",
filters: [
["custrecord_cps_asn_if.internalid", "anyof", recId]
],
columns: [
// search.createColumn({
// name: "internalid",
// label: "internalid",
// summary: "GROUP"
// }),
search.createColumn({
name: "custrecord_cps_avc_asn_sscc",
label: "containercode",
summary: "GROUP"
}),
search.createColumn({
name: "custrecord_cps_asn_item_sku",
label: "avcitem",
summary: "MIN"
}),
search.createColumn({
name: "custrecord_cps_avc_asn_quantity",
label: "qty",
summary: "MIN"
}),
// search.createColumn({name: "custrecord_cps_avc_asn_quantity", label: "qtySingle"})
]
});
var index = 1;
var containerCount = acnAvsDetailsSearch.runPaged().count;
if (containerCount == 0) {
context.response.write("<html><head></head><body><script>alert('This itemfulFillment Does not have any container code');window.close();</script></body></html>");
return;
}
//var isMultiple = containerCount>1;
//AJ MOD 16.05.19
var isMultiple;
var qty = 0;
var avsDetails = [];
acnAvsDetailsSearch.run().each(function(result) {
var avsDetail = JSON.parse(JSON.stringify(itemfulfillment));
for (var i = 0; i < acnAvsDetailsSearch.columns.length; i++)
avsDetail[acnAvsDetailsSearch.columns[i].label] = result.getValue(acnAvsDetailsSearch.columns[i]);
log.debug('avsDetail.containercode', avsDetail.containercode)
avsDetail.carton = index + " of " + containerCount;
var currentQty = parseInt(avsDetail.qty);
qty += isNaN(currentQty) ? 0 : currentQty;
// AJ MOD ON 16.05.2019
avsDetail.qtyOfCarton = currentQty;
// if (isMultiple != 1) {
// for (var j = 0; j < avsDetails.length; j++) {
// if (avsDetail.avcitem != avsDetails[j]['avcitem']) {
// isMultiple = 1;
// avsDetails[j]['avcitem'] = "Mixed SKUs";
// }
// }
// }
/* MODIFIED BY ND 14-06-19*/
var customrecord_cps_avc_asn_detailsSearchObj = search.create({
type: "customrecord_cps_avc_asn_details",
filters: [
["custrecord_cps_avc_asn_sscc", "is", avsDetail.containercode],
"AND", ["custrecord_cps_asn_if", "anyof", recId]
],
columns: [
search.createColumn({
name: "custrecord_cps_avc_asn_sscc",
label: "Container Code"
}),
search.createColumn({
name: "custrecord_cps_asn_item_sku",
label: "AVC Item Id"
}),
search.createColumn({
name: "custrecord_cps_avc_asn_quantity",
label: "Quantity"
})
]
});
log.debug('avsDetail', avsDetail)
var containerCode_count = customrecord_cps_avc_asn_detailsSearchObj.runPaged().count;
if (containerCode_count > 1) {
var sum=0;
var searchResult = customrecord_cps_avc_asn_detailsSearchObj.run().getRange({
start: 0,
end: 100
});
for (var j = 0; j < searchResult.length; j++) {
var qty_count = searchResult[j].getValue({
name: "custrecord_cps_avc_asn_quantity"
});
sum = parseInt(sum)+ parseInt(qty_count)
}
avsDetail.qtyOfCarton =sum
avsDetail.avcitem = "Mixed SKUs"
log.debug('sum', sum)
} else if (containerCode_count == 1) {
}
log.debug('avsDetail.avcitem', avsDetail.avcitem)
index++;
// isMultiple ? avsDetail.avcitem = "Mixed SKUs" : "";
avsDetails.push(avsDetail);
return true;
});
var renderer = render.create();
renderer.templateContent = file.load(765148).getContents();
renderer.addCustomDataSource({
format: render.DataSource.OBJECT,
alias: "avcs",
data: {
qty: qty,
avcs: avsDetails
}
});
var ssccLabel = renderer.renderAsPdf();
context.response.writeFile(ssccLabel, true);
} catch (err) {
log.debug("error@onRequest", err)
}
}
return {
onRequest: onRequest
}
});
Sample Print:https://drive.google.com/open?id=1AwHQYlW5qqfwuS9UwlCRbXWARREMoazV