Jira Code: AN-41
When the item is received on the PO, a script checks the “allergen” field on the item being received. If there are allergens listed, they will then show up on the barcode tab (below the 2 tags). (As PDF)
Note: The script which was already written for Raw material and Stock tag print was updated to include this as well.
Suitelet Script: AN-2 SL Stock Tag
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
*/
/**
* Script Description: PDF Creation
*/
/*******************************************************************************
AN
*************************************************************************
* Date:6/11/18
* Script name: AN-2 SL Stock Tag
* Script id: customscript_sl_stock_tag
* Deployment id: customdeploy_sl_stock_tag
*
* REVISION HISTORY
*
* Revision 1.0 ${06-02-2019} Link on Item Record
*
*
******************************************************************************/
define(['N/file','N/render','N/record','N/search'],
function(file,render,record,search) {
/**
* Definition of the Suitelet script trigger point.
*
* @param {Object} context
* @param {ServerRequest} context.request - Encapsulation of the incoming request
* @param {ServerResponse} context.response - Encapsulation of the Suitelet response
* @Since 2015.2
*/
function onRequest(context) {
try {
//Getting the parameters
var internalId = context.request.parameters.intenalId;
var usage = assignDefaultValue(context.request.parameters.usage, null);
var itemIntenalId = assignDefaultValue(context.request.parameters.itemIntenalId, null);
var itemSerialNumber = assignDefaultValue(context.request.parameters.itemSrl, null);
var tranIntenalId = assignDefaultValue(context.request.parameters.tranIntenalId, null);
var bodyContent = '';
//Action on the link from Item record
if(usage=='stockLink'){
var workorderSearchObj = search.create({
type: "workorder",
filters:
[
["type","anyof","WorkOrd"],
"AND",
["createdfrom.type","noneof","SalesOrd"],
"AND",
["mainline","is","T"],
"AND",
["internalidnumber","equalto",tranIntenalId],
"AND",
["item.internalidnumber","equalto",itemIntenalId],
"AND",
["applyingtransaction.serialnumber","is",itemSerialNumber],
],
columns:
[
search.createColumn({name: "tranid", label: "Document Number"}),
search.createColumn({
name: "binnumber",
join: "applyingTransaction",
label: "Transaction Bin Number"
}),
// search.createColumn({
// name: "serialnumber",
// join: "item",
// label: "Serial/Lot Number"
// }),
search.createColumn({
name: "serialnumbers",
join: "applyingTransaction",
label: "Serial/Lot Numbers"
}),
search.createColumn({
name: "countryofmanufacture",
join: "item",
label: "Manufacturer Country"
}),
search.createColumn({
name: "trandate",
sort: search.Sort.ASC,
label: "Date"
}),
search.createColumn({name: "enddate", label: "End Date"}),
search.createColumn({
name: "itemid",
join: "item",
label: "Name"
}),
search.createColumn({
name: "displayname",
join: "item",
label: "Display Name"
})
]
});
var searchResultCount = workorderSearchObj.runPaged().count;
if(searchResultCount>0){
//Getting values from the search result
resultWO = workorderSearchObj.run().getRange({
start: 0,
end: 1
});
var displayName = escape_for_xml(resultWO[0].getValue({
name: "displayname",
join: "item"
}));
var itemNumber = escape_for_xml(resultWO[0].getValue({
name: "itemid",
join: "item"
}));
var itemName=escape_for_xml(itemNumber+" "+displayName);
//var itemName=escape_for_xml(itemNumber);
var countryofOrigin = escape_for_xml(resultWO[0].getValue({
name: "countryofmanufacture",
join: "item"
}));
var lotNumber = escape_for_xml(resultWO[0].getValue({
name: "serialnumbers",
join: "applyingTransaction"
}));
var mfgDate = escape_for_xml(resultWO[0].getValue({
name: "enddate"
}));
var WoNo = escape_for_xml(resultWO[0].getValue({
name: "tranid"
}));
//Creating the xml for the creation of the PDF body
var content = '<div style="border:1px;"> <table style="width: 100%; margin-top: 10px;font-size:24px;"> <tr> <td align="center"> <b>Product: '+itemNumber+'</b></td> </tr> <tr><td> Replacewithitemcode </td> </tr> <tr> <td align="center"><b> WO#: '+WoNo+' </b></td> </tr> <tr><td> ReplacewithWONo </td></tr><tr> <td align="center"><b> COO: '+countryofOrigin+'</b> </td> </tr> <tr><td> ReplacewithCountryofOrigin </td></tr> <tr> <td align="center"><b> Lot Number: '+lotNumber+'</b> </td> </tr> <tr><td> ReplacewithLotNumber </td> </tr> <tr> <td> </td> </tr> <tr> <td align="center"><b> Mfg. Date: '+mfgDate+'</b> </td> </tr> <tr><td> Replacewithmfgdate </td></tr> <tr> <td> </td> </tr> </table> </div><br></br><br></br>';
if((itemName!=null) && (itemName!=undefined) && (itemName!='')){
content = content.replace("Replacewithitemcode", '<barcode codetype="code128" align="center" showtext="false" value="'+itemNumber+'"> </barcode>');
}
else{
content = content.replace("Replacewithitemcode", '<span></span>');
}
if((WoNo!=null) && (WoNo!=undefined) && (WoNo!='')){
content = content.replace("ReplacewithWONo", '<barcode codetype="code128" align="center" showtext="false" value="'+WoNo+'"> </barcode>');
}
else{
content = content.replace("ReplacewithWONo", '<span></span>');
}
if((countryofOrigin!=null) && (countryofOrigin!=undefined) && (countryofOrigin!='')){
content = content.replace("ReplacewithCountryofOrigin", '<barcode codetype="code128" align="center" showtext="false" value="'+countryofOrigin+'"> </barcode>');
}
else{
content = content.replace("ReplacewithCountryofOrigin", '<span></span>');
}
if((lotNumber!=null) && (lotNumber!=undefined) && (lotNumber!='')){
content = content.replace("ReplacewithLotNumber", '<barcode codetype="code128" align="center" showtext="false" value="'+lotNumber+'"></barcode>');
}
else{
content = content.replace("ReplacewithLotNumber", '<span></span>');
}
if((mfgDate!=null) && (mfgDate!=undefined) && (mfgDate!='')){
content = content.replace("Replacewithmfgdate", '<barcode codetype="code128" align="center" showtext="false" value="'+mfgDate+'"></barcode>');
}
else{
content = content.replace("Replacewithmfgdate", '<span></span>');
}
bodyContent += content;
}
}
//Action on the Stock Button click from WO record
else{
//Getting values for the PDF from WO
var recordObj = record.load({ type: "workorder", id: internalId });
var itemName = null;
var WoNo=escape_for_xml(recordObj.getText({
fieldId: 'tranid'
}));
var itemId=escape_for_xml(recordObj.getValue({
fieldId: 'assemblyitem'
}));
/*var fieldLookUp = search.lookupFields({
type: search.Type.ITEM,
id: itemId,
columns: ['itemid']
});
if (fieldLookUp.itemid != null && fieldLookUp.itemid != "" && fieldLookUp.itemid != undefined)
{
itemName = fieldLookUp.itemid;
}*/
var itemName=recordObj.getText({
fieldId: 'assemblyitem'
});
var mfgDate= escape_for_xml(recordObj.getText({
fieldId: 'enddate'
}));
var workorderSearchObj = search.create({
type: "workorder",
filters:
[
["type","anyof","WorkOrd"],
"AND",
["createdfrom.type","noneof","SalesOrd"],
"AND",
["mainline","is","T"],
"AND",
["internalidnumber","equalto",internalId]
],
columns:
[
search.createColumn({name: "tranid", label: "Document Number"}),
// search.createColumn({
// name: "serialnumbers",
// join: "applyingTransaction",
// label: "Serial/Lot Numbers"
// }),
search.createColumn({
name: "countryofmanufacture",
join: "item",
label: "Manufacturer Country"
}),
search.createColumn({
name: "custitem_allergen",
join: "item",
label: "Allergen"
}),
search.createColumn({
name: "internalid",
join: "applyingTransaction",
label: "Internal ID"
}),
search.createColumn({
name: "datecreated",
join: "applyingTransaction",
sort: search.Sort.DESC,
label: "Date Created"
}),
search.createColumn({
name: "itemid",
join: "item",
label: "Name"
}),
search.createColumn({
name: "displayname",
join: "item",
label: "Display Name"
}),
search.createColumn({
name: "formulatext",
formula: "CASE WHEN ({applyingtransaction.type} ='Work Order Completion' ) THEN {applyingtransaction.serialnumber} END",
label: "lot number"
})
]
});
var searchResult = workorderSearchObj.run().getRange({
start: 0,
end: 100
});
var test=null;
var lotNumber=null;
var itemNumber=null;
var countryofOrigin=null;
for(var k=0;k<searchResult.length;k++){
var lotNumber = searchResult[k].getValue({
name: "formulatext",
formula: "CASE WHEN ({applyingtransaction.type} ='Work Order Completion' ) THEN {applyingtransaction.serialnumbers} END"
});
var date_wocompletion = searchResult[k].getValue({
name: "datecreated",
join: "applyingTransaction",
sort: search.Sort.DESC
});
itemNumber = searchResult[k].getValue({
name: "itemid",
join: "item"
});
var displayName = searchResult[k].getValue({
name: "displayname",
join: "item"
});
if(displayName.indexOf(' ') == -1)
{
if(displayName.indexOf(',')!=-1)
{
arrayName = displayName.split(',', 2);
displayName = arrayName[0]+" , "+arrayName[1] ;
//log.debug('itemDisp11',itemDisp);
}
else if(displayName.indexOf('/')!=-1){
arrayName = displayName.split('/', 2);
displayName = arrayName[0]+" / "+arrayName[1] ;
}
}
var wo_compltion_id = searchResult[k].getValue({
name: "internalid",
join: "applyingTransaction"
});
var h=k+1;
if(h!=searchResult.length){
test = searchResult[h].getValue({
name: "internalid",
join: "applyingTransaction"
});
}
countryofOrigin = searchResult[k].getValue({
name: "countryofmanufacture",
join: "item"
});
var allergen = searchResult[k].getText({
name: "custitem_allergen",
join: "item"
});
var allerg = allergen.split(",");
var len = allerg.length
log.debug('allerg',allerg)
//Creating the xml for the creation of the PDF body
var content = '<div style="border:1px;"> <table style="width: 100%; margin-top: 10px;font-size:24px;"> <tr> <td align="center"> <b>Product: '+escape_for_xml(itemName)+'</b></td> </tr> <tr><td> Replacewithitemcode </td> </tr> <tr> <td align="center"><b> WO#: '+WoNo+' </b></td> </tr> <tr><td> ReplacewithWONo </td></tr><tr> <td align="center"><b> COO: '+countryofOrigin+'</b> </td> </tr> <tr><td> ReplacewithCountryofOrigin </td></tr> <tr> <td align="center"><b> Lot Number: '+lotNumber+'</b> </td> </tr> <tr><td> ReplacewithLotNumber </td> </tr> <tr> <td> </td> </tr> <tr> <td align="center"><b> Mfg. Date: '+mfgDate+'</b> </td> </tr> <tr><td> Replacewithmfgdate </td></tr> <tr> <td> </td> </tr> </table> </div><br></br><br></br>';
if((itemName!=null) && (itemName!=undefined) && (itemName!='')){
content = content.replace("Replacewithitemcode", '<barcode codetype="code128" align="center" showtext="false" value="'+escape_for_xml(itemNumber)+'"> </barcode>');
}
else{
content = content.replace("Replacewithitemcode", '<span></span>');
}
if((WoNo!=null) && (WoNo!=undefined) && (WoNo!='')){
content = content.replace("ReplacewithWONo", '<barcode codetype="code128" align="center" showtext="false" value="'+escape_for_xml(WoNo)+'"> </barcode>');
}
else{
content = content.replace("ReplacewithWONo", '<span></span>');
}
if((countryofOrigin!=null) && (countryofOrigin!=undefined) && (countryofOrigin!='')){
content = content.replace("ReplacewithCountryofOrigin", '<barcode codetype="code128" align="center" showtext="false" value="'+escape_for_xml(countryofOrigin)+'"> </barcode>');
}
else{
content = content.replace("ReplacewithCountryofOrigin", '<span></span>');
}
if((lotNumber!=null) && (lotNumber!=undefined) && (lotNumber!='')){
content = content.replace("ReplacewithLotNumber", '<barcode codetype="code128" align="center" showtext="false" value="'+escape_for_xml(lotNumber)+'"></barcode>');
}
else{
content = content.replace("ReplacewithLotNumber", '<span></span>');
}
if((mfgDate!=null) && (mfgDate!=undefined) && (mfgDate!='')){
content = content.replace("Replacewithmfgdate", '<barcode codetype="code128" align="center" showtext="false" value="'+escape_for_xml(mfgDate)+'"></barcode>');
}
else{
content = content.replace("Replacewithmfgdate", '<span></span>');
}
//to display allergence
/* content_allergence = '<div style="margin-left: 5%; margin-right:5%;"><table style="width: 90%;"><tr><td style="font-size:28px; width:20% "><p align="center">Replaceallergen1</p></td><td style="font-size:28px; width:10% "><p align="center"> </p></td><td style="font-size:28px; width:20% "><p align="center">Replaceallergen2</p></td><td style="font-size:28px; width:10% "><p align="center"> </p></td><td style="font-size:28px; width:20% "><p align="center">Replaceallergen3</p></td></tr></table></div>'
if((allerg!=null) && (allerg!=undefined) && (allerg!='') && (allerg!='- None -')){
if((allerg[0]!=null) && (allerg[0]!=undefined) && (allerg[0]!='') && (allerg[0]!='- None -')){
content_allergence = content_allergence.replace("Replaceallergen1", '<span><b>'+allerg[0]+'</b><br></br></span>');
}else{
content_allergence = content_allergence.replace("Replaceallergen1", '<span><br></br></span>');
}
if((allerg[1]!=null) && (allerg[1]!=undefined) && (allerg[1]!='') && (allerg[1]!='- None -')){
content_allergence = content_allergence.replace("Replaceallergen2", '<span><b>'+allerg[1]+'</b><br></br></span>');
}else{
content_allergence = content_allergence.replace("Replaceallergen2", '<span><br></br></span>');
}
if((allerg[2]!=null) && (allerg[2]!=undefined) && (allerg[2]!='') && (allerg[2]!='- None -')){
content_allergence = content_allergence.replace("Replaceallergen3", '<span><b>'+allerg[2]+'</b><br></br></span>');
}else{
content_allergence = content_allergence.replace("Replaceallergen3", '<span><br></br></span>');
}
}
else{
content_allergence = content_allergence.replace("Replaceallergen1", '<span><br></br></span>');
content_allergence = content_allergence.replace("Replaceallergen2", '<span><br></br></span>');
content_allergence = content_allergence.replace("Replaceallergen3", '<span><br></br></span>');
}*/
var all =null;
var content_allergence;
content_allergence = '<div style="margin-left: 5%; margin-right:5%;"><table style="width: 90% "><tr>Replaceallergen</tr></table></div>'
if((allerg!=null) && (allerg!=undefined) && (allerg!='') && (allerg!='- None -') && (allerg!="")){
var wid = 90/len;
for(var z=0; z<len; z++){
all+='<td style="font-size:28px; width:'+wid+'% " align="center"><b>'+allerg[z]+'</b></td> <td> </td>'
}
content_allergence = content_allergence.replace("Replaceallergen", all);
}else{
content_allergence = content_allergence.replace("Replaceallergen",'');
}
content += content_allergence;
if(lotNumber == "" || lotNumber == null || lotNumber == undefined || lotNumber =='- None -' || lotNumber == " " || lotNumber == NaN || lotNumber == 'NaN'){
if((k+1) == searchResult.length ){
bodyContent += content;
var content_pallet = nextPage(escape_for_xml(itemNumber),escape_for_xml(displayName),escape_for_xml(lotNumber),escape_for_xml(mfgDate));
bodyContent += content_pallet;
}
continue;
}
else if((lotNumber != "" && lotNumber != null && lotNumber != undefined && lotNumber !='- None -' && lotNumber != " " && lotNumber != NaN && lotNumber != 'NaN') && (test == wo_compltion_id)){
bodyContent += content;
var content_pallet = nextPage(escape_for_xml(itemNumber),escape_for_xml(displayName),escape_for_xml(lotNumber),escape_for_xml(mfgDate));
bodyContent += content_pallet;
continue;
}
else if((lotNumber != "" && lotNumber != null && lotNumber != undefined && lotNumber !='- None -' && lotNumber != " " && lotNumber != NaN && lotNumber != 'NaN') && ( test != wo_compltion_id)){
bodyContent += content;
var content_pallet = nextPage(escape_for_xml(itemNumber),escape_for_xml(displayName),escape_for_xml(lotNumber),escape_for_xml(mfgDate));
bodyContent += content_pallet;
break;
}
}
}
//Loading the XML layout file
var myXMLFile = file.load({
id: '10172'
});
var xmlContent = myXMLFile.getContents();
//Replacing the Body
xmlContent = xmlContent.replace("ReplacewithContent",bodyContent);
//Converting xml to a PDF file
var pdfFile = render.xmlToPdf({
xmlString: xmlContent
});
pdfFile.name = "stockTag.pdf"
context.response.writeFile(pdfFile,true);
} catch (e) {
log.debug({
title: e.name,
details: e.message
});
}
}
return {
onRequest: onRequest
};
//To check whether a value exists in parameter
function checkForParameter(parameter, parameterName) {
if (parameter != "" && parameter != null && parameter != undefined && parameter != "null" && parameter != "undefined" && parameter != " ") {
return true;
} else {
if (parameterName)
return false;
}
}
//To assign a default value if the it is empty
function assignDefaultValue(value, defaultValue) {
if (checkForParameter(value))
return value;
else
return defaultValue;
}
});
/*******************************************************************
* Fix text
*
* @param argument
* @returns Created By JJ on 15-Nov-2017 4:30:21 PM
*/
function escape_for_xml(argument) {
try {
if (argument != "" && argument != null) {
//var newString = xml.escape({
// xmlText : argument
//});
argument = argument.replace(/&/g, '&');
argument = argument.replace(/</g, '<');
argument = argument.replace(/>/g, '>');
argument = argument.replace(/"/g, '"');
argument = argument.replace(/'/g, ''');
return argument;
} else {
return "";
}
} catch (e) {
log.debug({
title : e.name,
details : e.message
});
}
}
function nextPage(itemNumber,itemDisp,lotNumber,mfgDate)
{
var bigFlag = false;
var dispFlag = false;
//xml NEXT PAGE
var content_pallet ='<div style="margin-left: 5%; margin-right:5%;"><table style="page-break-before: always"><tr><td style=" font-family: thai-font, sans-serif;font-weight: bold;"><p align="center">ReplaceItemNum</p></td></tr><tr><td style="font-family: thai-font,sans-serif;text-transform:uppercase;font-weight:bold ; "><p align="center">ReplacewithItemDesc</p></td></tr><tr><td style="font-family: tha-font, sans-serif; font-weight: bold;"><p align="center">ReplacewithLotNum</p></td></tr><tr><td style="font-family: tha-font, sans-serif; font-weight: bold;"><p align="center">ReplacewithmfgDate</p></td></tr></table></div>'
if((itemNumber!=null) && (itemNumber!=undefined) && (itemNumber!='') && (itemNumber.length < 9)){
content_pallet = content_pallet.replace("ReplaceItemNum", '<span style="font-size:140px;"><b>'+itemNumber+'</b><br></br></span>');
}
else if ((itemNumber!=null) && (itemNumber!=undefined) && (itemNumber!='') && (itemNumber.length >= 9) && (itemNumber.length <= 15))
{
content_pallet = content_pallet.replace("ReplaceItemNum", '<span style="font-size:100px;"><b>'+itemNumber+'</b><br></br></span>');
}
else if ((itemNumber!=null) && (itemNumber!=undefined) && (itemNumber!='') && (itemNumber.length > 15))
{
content_pallet = content_pallet.replace("ReplaceItemNum", '<span style="font-size:78px;"><b>'+itemNumber+'</b><br></br></span>');
}
else{
content_pallet = content_pallet.replace("ReplaceItemNum", '<span><br></br></span>');
}
if((itemDisp!=null) && (itemDisp!=undefined) && (itemDisp!='') && (itemDisp.length<=15)){
if(itemDisp.indexOf(' ')!=-1)
{
arrayName = itemDisp.split(' ');
for(var m=0;m<arrayName.length;m++)
{
if(arrayName[m].length > 7)
{
dispFlag = true;
break;
}
}
if(dispFlag)
{
content_pallet = content_pallet.replace("ReplacewithItemDesc",'<span style="font-size:120px;"><b>'+itemDisp+'</b><br></br></span>');
}
else
{
content_pallet = content_pallet.replace("ReplacewithItemDesc",'<span style="font-size:140px;"><b>'+itemDisp+'</b><br></br></span>');
}
}
else
content_pallet = content_pallet.replace("ReplacewithItemDesc",'<span style="font-size:140px;"><b>'+itemDisp+'</b><br></br></span>');
//content_pallet = content_pallet.replace("ReplacewithItemDesc",'<span style="font-size:140px;"><b>'+itemDisp+'</b><br></br></span>');
}
else if((itemDisp!=null) && (itemDisp!=undefined) && (itemDisp!='') && (itemDisp.length>15) && (itemDisp.length<25)){
content_pallet = content_pallet.replace("ReplacewithItemDesc",'<span style="font-size:96px;"><b>'+itemDisp+'</b><br></br></span>');
}
else if((itemDisp!=null) && (itemDisp!=undefined) && (itemDisp!='') && (itemDisp.length>=25)){
bigFlag = true;
content_pallet = content_pallet.replace("ReplacewithItemDesc",'<span style="font-size:90px;"><b>'+itemDisp+'</b><br></br></span>');
}
else if((itemDisp==null) && (itemDisp==undefined) && (itemDisp=='')){
content_pallet = content_pallet.replace("ReplacewithItemDesc", '<span><br> </br></span>');
}
if((lotNumber!=null) && (lotNumber!=undefined) && (lotNumber!='') && (lotNumber.length <9)){
content_pallet = content_pallet.replace("ReplacewithLotNum", '<span style="text-align:center;font-size:140px;"><b>'+lotNumber+'</b><br></br></span>');
}
else if((lotNumber!=null) && (lotNumber!=undefined) && (lotNumber!='') && (lotNumber.length >=9)){
content_pallet = content_pallet.replace("ReplacewithLotNum", '<span style="text-align:center;font-size:120px;"><b>'+lotNumber+'</b><br></br></span>');
}
else{
content_pallet = content_pallet.replace("ReplacewithLotNum", '<span><br></br></span>');
}
if((mfgDate!=null) && (mfgDate!=undefined) && (mfgDate!='') && (bigFlag)){
content_pallet = content_pallet.replace("ReplacewithmfgDate", '<span style="text-align:center;font-size:100px;"><b>'+mfgDate+'</b><br></br></span>');
}
else if((mfgDate!=null) && (mfgDate!=undefined) && (mfgDate!='')){
content_pallet = content_pallet.replace("ReplacewithmfgDate", '<span style="text-align:center;font-size:120px;"><b>'+mfgDate+'</b><br></br></span>');
}
else{
content_pallet = content_pallet.replace("ReplacewithmfgDate", '<span><br></br></span>');
}
return content_pallet;
}
Suitelet Script: AN-2 SL Raw Material Tag
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
*/
/**
* Script Description: PDF Creation
*/
/*******************************************************************************
* * AN * *
* **************************************************************************
* Date:2/11/18
* Script name: AN-2 SL Raw Material Tag
* Script id: customscript_sl_raw_material_tag
* Deployment id: customdeploy_sl_raw_material_tag
*
*
* REVISION HISTORY
*
* Revision 1.0 ${06-02-2019} Link on Item Record
*
*
******************************************************************************/
define(['N/file','N/render','N/record','N/search'],
function(file,render,record,search) {
/**
* Definition of the Suitelet script trigger point.
*
* @param {Object} context
* @param {ServerRequest} context.request - Encapsulation of the incoming request
* @param {ServerResponse} context.response - Encapsulation of the Suitelet response
* @Since 2015.2
*/
function onRequest(context) {
try {
//Getting the parameters
var itemid_arr=[];
var itemrec_arr=[];
var internalId = assignDefaultValue(context.request.parameters.poId, null);
var usage = assignDefaultValue(context.request.parameters.usage, null);
var itemIntenalId = assignDefaultValue(context.request.parameters.itemIntenalId, null);
var tranIntenalId = assignDefaultValue(context.request.parameters.tranIntenalId, null);
var itemid = assignDefaultValue(context.request.parameters.itemID, null);
itemid_arr = itemid.split(',');
var item_recid = assignDefaultValue(context.request.parameters.itemRecID, null);
itemrec_arr = item_recid.split(',');
var bodyContent = '';
var bodyContent_pallet = '';
var arrayName=[];
var arrayNum=[];
//Action on the link from Item record
if(usage=='link'){
//Searching for the details
var purchaseorderSearchObj = search.create({
type: "purchaseorder",
filters:
[
["type","anyof","PurchOrd"],
"AND",
["internalidnumber","equalto",tranIntenalId],
"AND",
["applyingtransaction.type","anyof","ItemRcpt"],
"AND",
["item.internalidnumber","equalto",itemIntenalId]
],
columns:
[
search.createColumn({name: "tranid", label: "Document Number"}),
search.createColumn({
name: "binnumber",
join: "applyingTransaction",
label: "Transaction Bin Number"
}),
search.createColumn({
name: "serialnumbers",
join: "applyingTransaction",
label: "Serial/Lot Numbers"
}),
search.createColumn({
name: "trandate",
join: "applyingTransaction",
label: "Date"
}),
search.createColumn({
name: "custcol_item_origin",
join: "applyingTransaction",
label: "Origin"
}),
search.createColumn({
name: "itemid",
join: "item",
label: "Name"
}),
search.createColumn({
name: "displayname",
join: "item",
label: "Display Name"
})
]
});
var searchResultCount = purchaseorderSearchObj.runPaged().count;
if(searchResultCount>0){
resultPO = purchaseorderSearchObj.run().getRange({
start: 0,
end: 1
});
//Getting values from the search result
displayName = resultPO[0].getValue({
name: "displayname",
join: "item",
});
if(displayName.indexOf('/')!=-1){
arrayName = displayName.split('/');
dispName = arrayName[0]+" / "+arrayName[1]
}else{
dispName=displayName
}
var itemNum = resultPO[0].getValue({
name: "itemid",
join: "item"
});
if(itemNum.indexOf('/')!=-1){
arrayNum = itemNum.split('/');
itemNumber = arrayNum[0]+" / "+arrayNum[1]
}else{
itemNumber=itemNum
}
var itemName=itemNumber+" "+dispName;
var receiveDate = resultPO[0].getValue({
name: "trandate",
join: "applyingTransaction"
});
var lotNumber = resultPO[0].getValue({
name: "serialnumbers",
join: "applyingTransaction"
});
var countryofOrigin = resultPO[0].getValue({
name: "custcol_item_origin",
join: "applyingTransaction"
});
var poNo = resultPO[0].getValue({
name: "tranid"
});
//Creating the xml for the creation of the PDF body
var content = '<div style="margin-left: 5%;border:1px;"> <table style="width: 95%; margin-top: 3px;font-size:24px;"> <tr> <td style="width: 40%;"> <b>Product:</b></td> <td> Replacewithitemcode </td> </tr> <tr> <td style="width: 40%;"><b> Date Received:</b></td> <td> Replacewithdate </td> </tr> <tr> <td style="width: 40%;"><b> Lot Number:</b></td> <td> ReplacewithLotNumber </td> </tr> <tr> <td style="width: 40%;"><b> Country of Origin:</b></td> <td> ReplacewithCountryofOrigin </td> </tr> <tr> <td style="width: 40%;"><b> PO#:</b></td> <td> ReplacewithPONo </td> </tr><tr> <td></td> </tr> </table> </div><br></br><br></br>';
if((itemName!=null) && (itemName!=undefined) && (itemName!='') && (itemName!='-None-')){
content = content.replace("Replacewithitemcode", '<span><b>'+itemName+'</b><br></br><barcode codetype="code128" align="left" showtext="false" value="'+itemNumber+'"> </barcode></span>');
}
else{
content = content.replace("Replacewithitemcode", '<span></span>');
}
if((receiveDate!=null) && (receiveDate!=undefined) && (receiveDate!='') && (receiveDate!='-None-')){
content = content.replace("Replacewithdate", '<span><b>'+receiveDate+'</b><br></br><barcode codetype="code128" align="left" showtext="false" value="'+receiveDate+'"></barcode></span>');
}
else{
content = content.replace("Replacewithdate", '<span></span>');
}
if((lotNumber!=null) && (lotNumber!=undefined) && (lotNumber!='') && (lotNumber!='-None-')){
content = content.replace("ReplacewithLotNumber", '<span><span><b>'+lotNumber+'</b></span><br></br><barcode codetype="code128" align="left" showtext="false" value="'+lotNumber+'"></barcode></span>');
}
else{
content = content.replace("ReplacewithLotNumber", '<span></span>');
}
if((countryofOrigin!=null) && (countryofOrigin!=undefined) && (countryofOrigin!='') && (countryofOrigin!='- None -')){
content = content.replace("ReplacewithCountryofOrigin", '<span><span><b>'+countryofOrigin+'</b></span><br></br><barcode codetype="code128" showtext="false" value="'+countryofOrigin+'"> </barcode></span>');
}
else{
content = content.replace("ReplacewithCountryofOrigin", '<span></span>');
}
if((poNo!=null) && (poNo!=undefined) && (poNo!='') && (poNo!='-None-')){
content = content.replace("ReplacewithPONo", '<span><span><b>'+poNo+'</b></span><br></br><barcode codetype="code128" showtext="false" value="'+poNo+'"> </barcode></span>');
}
else{
content = content.replace("ReplacewithPONo", '<span></span>');
}
bodyContent += content;
var content_pallet ='<div style="margin-left: 5%; margin-right:5%;"><table style="page-break-before: always"><tr><td style=" font-family: thai-font, sans-serif;font-weight: bold;font-size:160px;"><p align="center">ReplaceItemNum</p></td></tr><tr><td style="font-family: thai-font,sans-serif;text-transform:uppercase;font-weight:bold;"><p align="center">ReplacewithItemDesc</p></td></tr><tr><td style="font-family: tha-font, sans-serif; font-weight: bold;font-size:130px;"><p align="center">ReplacewithLotNum</p></td></tr></table></div>'
if((itemNumber!=null) && (itemNumber!=undefined) && (itemNumber!='') && (itemNumber!='-None-')){
content_pallet = content_pallet.replace("ReplaceItemNum", '<span><b>'+itemNumber+'</b><br></br></span>');
}
else{
content_pallet = content_pallet.replace("ReplaceItemNum", '<span><br></br></span>');
}
if((dispName!=null) && (dispName!=undefined) && (dispName!='') && (dispName!='-None-') && (dispName.length<=20) && (itemNumber.length<=11)){
content_pallet = content_pallet.replace("ReplacewithItemDesc",'<span style="font-size:140px;"><b>'+dispName+'</b><br></br></span>');
}
else if((dispName!=null) && (dispName!=undefined) && (dispName!='') && (dispName!='-None-') && (dispName.length>20)){
content_pallet = content_pallet.replace("ReplacewithItemDesc",'<span style="font-size:96px;"><b>'+dispName+'</b><br></br></span>');
}
else if((dispName==null) || (dispName==undefined) || (dispName=='') || (dispName=='-None-')){
content_pallet = content_pallet.replace("ReplacewithItemDesc", '<span><br></br></span>');
}
if((lotNumber!=null) && (lotNumber!=undefined) && (lotNumber!='') && (lotNumber!='- None -')&& (lotNumber.length<=12)){
content_pallet = content_pallet.replace("ReplacewithLotNum", '<span style="text-align:center;font-size:130px;"><b>'+lotNumber+'</b><br></br></span>');
}
else if((lotNumber!=null) && (lotNumber!=undefined) && (lotNumber!='') && (lotNumber!='- None -')&& (lotNumber.length>12)){
content_pallet = content_pallet.replace("ReplacewithLotNum", '<span style="text-align:center;font-size:70px;"><b>'+lotNumber+'</b><br></br></span>');
} else if((lotNumber==null) || (lotNumber==undefined) || (lotNumber=='') || (lotNumber=='- None -')){
content_pallet = content_pallet.replace("ReplacewithLotNum", '<span><br></br></span>');
}
bodyContent += content_pallet;
}
}
//Action on the Raw Material Button click from PO record
else{
var itemreceiptSearchObj = search.create({
type: "itemreceipt",
filters:
[
["type","anyof","ItemRcpt"],
"AND",
["createdfrom.internalidnumber","equalto",internalId],
"AND",
["item.internalid","anyof",itemid_arr],
"AND",
["internalid","anyof",itemrec_arr],
"AND",
["inventorydetail.item","noneof","@NONE@"]
],
columns:
[
search.createColumn({
name: "trandate",
summary: "GROUP",
sort: search.Sort.DESC,
label: "Date"
}),
search.createColumn({
name: "displayname",
join: "item",
summary: "GROUP",
label: "Display Name"
}),
search.createColumn({
name: "itemid",
join: "item",
summary: "GROUP",
label: "Name"
}),
search.createColumn({
name: "custcol_item_origin",
summary: "GROUP",
label: "Origin"
}),
search.createColumn({
name: "tranid",
join: "createdFrom",
summary: "GROUP",
label: "PO number"
}),
search.createColumn({
name: "inventorynumber",
join: "inventoryDetail",
summary: "GROUP",
label: " Number"
}),
search.createColumn({
name: "internalid",
join: "inventoryDetail",
summary: "GROUP",
label: "Internal ID"
}),
search.createColumn({
name: "custitem_allergen",
join: "item",
summary: "GROUP",
label: "Allergen"
})
]
});
var searchResult_item= itemreceiptSearchObj.run().getRange({
start:0,
end: 100
});
for (var i = 0; i<searchResult_item.length; i++) {
var receiveDate = searchResult_item[i].getValue({
name: "trandate",
summary: "GROUP",
sort: search.Sort.DESC
});
var itemName = searchResult_item[i].getValue({
name: "displayname",
join: "item",
summary: "GROUP"
});
//for big tag
var itemDisp="";
var itemDispname = itemName;
if(itemDispname.indexOf('/')!=-1){
arrayName = itemDispname.split('/');
itemDisp = arrayName[0]+" / "+arrayName[1]
}else{
itemDisp= itemDispname
}
var itemNumber;
var itemNum = searchResult_item[i].getValue({
name: "itemid",
join: "item",
summary: "GROUP"
});
//for big tag
if(itemNum.indexOf('/')!=-1){
arrayNum = itemNum.split('/');
itemNumber=arrayNum[0]+" / "+arrayNum[1]
}else{
itemNumber= itemNum
}
itemName = itemNumber+" "+itemName;
var lotNumber = searchResult_item[i].getText({
name: "inventorynumber",
join: "inventoryDetail",
summary: "GROUP"
});
var countryofOrigin = searchResult_item[i].getValue({
name: "custcol_item_origin",
summary: "GROUP"
});
var poNo =searchResult_item[i].getValue({
name: "tranid",
join: "createdFrom",
summary: "GROUP"
});
var allergen = searchResult_item[i].getText({
name: "custitem_allergen",
join: "item",
summary: "GROUP"
});
/*if(allergen.indexOf(',') != -1){
allergen = allergen.replace(/,/g,' ');
}*/
var allerg = allergen.split(",");
var len = allerg.length
log.debug('allerg',allerg)
//Creating the xml for the creation of the PDF body
var content = '<div style="margin-left: 5%;border:1px;"> <table style="width: 95%; margin-top: 3px;font-size:24px;"> <tr> <td style="width: 40%;"> <b>Product:</b></td> <td> Replacewithitemcode </td> </tr> <tr> <td style="width: 40%;"><b> Date Received:</b></td> <td> Replacewithdate </td> </tr> <tr> <td style="width: 40%;"><b> Lot Number:</b></td> <td> ReplacewithLotNumber </td> </tr> <tr> <td style="width: 40%;"><b> Country of Origin:</b></td> <td> ReplacewithCountryofOrigin </td> </tr> <tr> <td style="width: 40%;"><b> PO#:</b></td> <td> ReplacewithPONo </td> </tr><tr> <td></td> </tr> </table> </div><br></br><br></br>';
if((itemName!=null) && (itemName!=undefined) && (itemName!='') && (itemName!='- None -')){
content = content.replace("Replacewithitemcode", '<span><b>'+itemName+'</b><br></br><barcode codetype="code128" align="left" showtext="false" value="'+itemNumber+'"> </barcode></span>');
}
else{
content = content.replace("Replacewithitemcode", '<span></span>');
}
if((receiveDate!=null) && (receiveDate!=undefined) && (receiveDate!='') && (receiveDate!='- None -')){
content = content.replace("Replacewithdate", '<span><b>'+receiveDate+'</b><br></br><barcode codetype="code128" align="left" showtext="false" value="'+receiveDate+'"></barcode></span>');
}
else{
content = content.replace("Replacewithdate", '<span></span>');
}
if((lotNumber!=null) && (lotNumber!=undefined) && (lotNumber!='') && (lotNumber!='- None -')){
content = content.replace("ReplacewithLotNumber", '<span><span><b>'+lotNumber+'</b></span><br></br><barcode codetype="code128" align="left" showtext="false" value="'+lotNumber+'"></barcode></span>');
}
else{
content = content.replace("ReplacewithLotNumber", '<span></span>');
}
if((countryofOrigin!=null) && (countryofOrigin!=undefined) && (countryofOrigin!='') && (countryofOrigin!='- None -')){
content = content.replace("ReplacewithCountryofOrigin", '<span><span><b>'+countryofOrigin+'</b></span><br></br><barcode codetype="code128" showtext="false" value="'+countryofOrigin+'"> </barcode></span>');
}
else{
content = content.replace("ReplacewithCountryofOrigin", '<span></span>');
}
if((poNo!=null) && (poNo!=undefined) && (poNo!='') && (poNo!='- None -')){
content = content.replace("ReplacewithPONo", '<span><span><b>'+poNo+'</b></span><br></br><barcode codetype="code128" showtext="false" value="'+poNo+'"> </barcode></span>');
}
else{
content = content.replace("ReplacewithPONo", '<span></span>');
}
bodyContent += content;
//to display allergence
var all =null;
var content_allergence = '<div style="margin-left: 5%; margin-right:5%;"><table style="width: 90% "><tr>Replaceallergen</tr></table></div>'
if((allerg!=null) && (allerg!=undefined) && (allerg!='') && (allerg!='- None -')){
var wid = 90/len;
for(var z=0; z<len; z++){
all+='<td style="font-size:28px; width:'+wid+'% " align="center"><b>'+allerg[z]+'</b></td> <td> </td>'
}
content_allergence = content_allergence.replace("Replaceallergen", all);
}else{
content_allergence = content_allergence.replace("Replaceallergen",'');
}
/* if((allergen!=null) && (allergen!=undefined) && (allergen!='') && (allergen!='- None -')){
content_allergence = content_allergence.replace("Replaceallergen", '<span><b>'+allergen+'</b><br></br></span>');
}
else{
content_allergence = content_allergence.replace("Replaceallergen", '<span><br></br></span>');
}*/
bodyContent += content_allergence;
//xml for pallet tag
var content_pallet ='<div style="margin-left: 5%; margin-right:5%;"><table style="page-break-before: always"><tr><td style=" font-family: thai-font, sans-serif;font-weight: bold;font-size:160px;"><p align="center">ReplaceItemNum</p></td></tr><tr><td style="font-family: thai-font,sans-serif;text-transform:uppercase;font-weight:bold ; "><p align="center">ReplacewithItemDesc</p></td></tr><tr><td style="font-family: tha-font, sans-serif; font-weight: bold;"><p align="center">ReplacewithLotNum</p></td></tr></table></div>'
if((itemNumber!=null) && (itemNumber!=undefined) && (itemNumber!='') && (itemNumber!='- None -')){
content_pallet = content_pallet.replace("ReplaceItemNum", '<span><b>'+itemNumber+'</b><br></br></span>');
}
else{
content_pallet = content_pallet.replace("ReplaceItemNum", '<span><br></br></span>');
}
if((itemDisp!=null) && (itemDisp!=undefined) && (itemDisp!='') && (itemDisp!='- None -') && (itemDisp.length<=20) /*&& (itemNumber.length<=11)*/){
content_pallet = content_pallet.replace("ReplacewithItemDesc",'<span style="font-size:140px;"><b>'+itemDisp+'</b><br></br></span>');
}
else if((itemDisp!=null) && (itemDisp!=undefined) && (itemDisp!='') && (itemDisp!='- None -') && (itemDisp.length>20)){
content_pallet = content_pallet.replace("ReplacewithItemDesc",'<span style="font-size:96px;"><b>'+itemDisp+'</b><br></br></span>');
}
else if((itemDisp==null) || (itemDisp==undefined) || (itemDisp=='') || (itemDisp =='- None -')){
content_pallet = content_pallet.replace("ReplacewithItemDesc", '<span><br></br></span>');
}
if((lotNumber!=null) && (lotNumber!=undefined) && (lotNumber!='') && (lotNumber!='- None -')&& (lotNumber.length<=12)){
content_pallet = content_pallet.replace("ReplacewithLotNum", '<span style="text-align:center;font-size:130px;"><b>'+lotNumber+'</b><br></br></span>');
}
else if((lotNumber!=null) && (lotNumber!=undefined) && (lotNumber!='') && (lotNumber!='- None -')&& (lotNumber.length>12)){
content_pallet = content_pallet.replace("ReplacewithLotNum", '<span style="text-align:center;font-size:70px;"><b>'+lotNumber+'</b><br></br></span>');
} else if((lotNumber==null) || (lotNumber==undefined) || (lotNumber=='') || (lotNumber=='- None -')){
content_pallet = content_pallet.replace("ReplacewithLotNum", '<span><br></br></span>');
}
bodyContent += content_pallet;
}
}
//Loading the XML layout file
var myXMLFile = file.load({
id: '10168'
});
var xmlContent = myXMLFile.getContents();
//Replacing the Body
xmlContent = xmlContent.replace("ReplacewithContent",bodyContent);
//Converting xml to a PDF file
var pdfFile = render.xmlToPdf({
xmlString: xmlContent
});
pdfFile.name = "rawMaterialTag.pdf"
context.response.writeFile(pdfFile,true);
} catch (e) {
log.error({
title: e.name,
details: e.message
});
}
}
return {
onRequest: onRequest
};
//To check whether a value exists in parameter
function checkForParameter(parameter, parameterName) {
if (parameter != "" && parameter != null && parameter != undefined && parameter != "null" && parameter != "undefined" && parameter != " ") {
return true;
} else {
if (parameterName)
return false;
}
}
//To assign a default value if the it is empty
function assignDefaultValue(value, defaultValue) {
if (checkForParameter(value))
return value;
else
return defaultValue;
}
});