Jira Code: PROT-198 (Update of PROT-195)
This article briefs about an update of SSCC label in IF record. If same AVC item id in an IF record then it should not be a mixed SKU, it should show each item name. Qty should be shown as 2 and 4 (qty for each carton). It also changed the font size as well.
Suitelet
/**
* @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"]
});
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:"MIN"}),
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]);
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";
}
}
}
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
}
});
Client script
/*******************************************************************************
*
* Author : Jobin and jismi created on:10/05/2019 SV
*
******************************************************************************/
//open the window for print page
define(['N/currentRecord'],function(currentRecord){
var SUITELET_SSCC = "/app/site/hosting/scriptlet.nl?script=685&deploy=1&recId=";
function printSSccLabel()
{
window.open(SUITELET_SSCC+currentRecord.get().id);
}
return{
printSSccLabel:printSSccLabel
}
});
XML Code
<?xml version="1.0"?><!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<pdfset>
<#list avcs.avcs as avc>
<pdf>
<head>
<link name="NotoSans" type="font" subtype="truetype" src="${nsfont.NotoSans_Regular}" src-bold="${nsfont.NotoSans_Bold}" src-italic="${nsfont.NotoSans_Italic}" src-bolditalic="${nsfont.NotoSans_BoldItalic}" bytes="2" />
<#if .locale == "zh_CN">
<link name="NotoSansCJKsc" type="font" subtype="opentype" src="${nsfont.NotoSansCJKsc_Regular}" src-bold="${nsfont.NotoSansCJKsc_Bold}" bytes="2" />
<#elseif .locale == "zh_TW">
<link name="NotoSansCJKtc" type="font" subtype="opentype" src="${nsfont.NotoSansCJKtc_Regular}" src-bold="${nsfont.NotoSansCJKtc_Bold}" bytes="2" />
<#elseif .locale == "ja_JP">
<link name="NotoSansCJKjp" type="font" subtype="opentype" src="${nsfont.NotoSansCJKjp_Regular}" src-bold="${nsfont.NotoSansCJKjp_Bold}" bytes="2" />
<#elseif .locale == "ko_KR">
<link name="NotoSansCJKkr" type="font" subtype="opentype" src="${nsfont.NotoSansCJKkr_Regular}" src-bold="${nsfont.NotoSansCJKkr_Bold}" bytes="2" />
<#elseif .locale == "th_TH">
<link name="NotoSansThai" type="font" subtype="opentype" src="${nsfont.NotoSansThai_Regular}" src-bold="${nsfont.NotoSansThai_Bold}" bytes="2" />
</#if>
</head>
<body padding="0.2in 0.2in 0.2in 0.2in" style="width:4in;height:6in">
<table width="100%" height="1.5in"><tr>
<td style="width:50%;border-right:1px;border-bottom:1px">
<table align="left"><tr>
<td align="left"><b>Ship From</b><br/>
<img src="${avc.logo}" style="width:150px;height:20px"/> <p align="left" style="font-size:12px" ><!--style="font-size:13px">-->
1340 Manhattan Ave.<br />
Fullerton, CA 92831<br />
T:714.441.0114<br />F:714.459.7477<br />
${avc.email}</p>
</td>
</tr></table>
</td>
<td style="width:50%;border-bottom:1px">
<table align="left"><tr>
<td><b>Ship To</b><br/><p align="left" style="font-size:12px">${avc.shipto}</p></td>
</tr></table>
</td>
</tr></table>
<table width="100%" height="1.8in">
<tr>
<td style="width:45%;border-right:1px;border-bottom:1px">
<table width="100%">
<tr height="0.7in">
<td><b>UPC:</b><br/>${avc.avcitem}</td>
</tr>
<tr height="0.7in">
<td><b>Qty:</b>${avc.qtyOfCarton}</td>
</tr>
<tr height="0.7in">
<td><b>Carton #:</b><br/>${avc.carton}</td>
</tr>
</table>
</td>
<td style="width:55%;border-bottom:1px">
<table width="100%">
<tr height="0.85in">
<td width="30%"><b>PO#</b></td><td align="center"><b>Code39</b></td>
</tr>
<tr height="0.85in">
<td>${avc.soid}</td><td align="center"><barcode style="width:90%;align:left" codetype="code128" showtext="false" value="${avc.soid}"/></td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" height="1.25in"><tr>
<td style="border-bottom:1px">
<p><b>Amazon Container Code(Code 128):</b><br/>${avc.containercode}</p>
<barcode style="height:0.5in;width:90%;align:center" codetype="code128" showtext="false" value="${avc.containercode}"/>
</td>
</tr></table>
</body>
</pdf>
</#list>
</pdfset>