Jira Code: SC-2, SC-22
We created a suitelet form where we can choose the Artist Name and Date Type.
After selecting that fields ,the sublist will show as the invoices.
When you click on the download button it will download the pdf report.
The button ‘Save to File cabinet’ will send the report to be stored in the File cabinet.
The button ‘Send EMail’ will send the report that stored in the File cabinet to that respective artists.
Download Action
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
*/
/**
*
* This suitelet to create a Artist Royalty Report.
*
*/
/*******************************************************************************
* SKN Complex
* SC-21 Artist Loyality Report
*
* NetSuite Name :SC-21 Artist Loyality Report
*
* **************************************************************************
*
* Date: 30-07-2018
*
* Author: Jobin & Jismi IT Services LLP
*
*****************************************************************************
**/
define(['N/email', 'N/file', 'N/url', 'N/https', 'N/record', 'N/runtime', 'N/search', 'N/ui/serverWidget', 'N/task', 'N/render'],
/**
* @param {email} email
* @param {file} file
* @param {http} http
* @param {https} https
* @param {record} record
* @param {runtime} runtime
* @param {search} search
* @param {serverWidget} serverWidget
*/
function (email, file, url, https, record, runtime, search, serverWidget, task, render) {
var main = {
onRequest: function (context) {
/*UI Part */
if (context.request.method === 'GET') {
//GET Condition
var form = serverWidget.createForm({
title: 'Artist Report'
});
form.clientScriptFileId = '110738';
var customlist3SearchObj = search.create({
type: "customlist3",
filters: [
["isinactive", "is", "F"],
"AND",
["name", "isnot", "Inhouse"]
],
columns: [
search.createColumn({
name: "name",
sort: search.Sort.ASC,
label: "Name"
}),
search.createColumn({
name: "internalid",
label: "Internal ID"
})
]
});
var searchResultCount = customlist3SearchObj.runPaged().count;
log.debug("customlist3 result count", searchResultCount);
var artname = [];
var intid = [];
var searchResult = customlist3SearchObj.run().getRange(0, 100);
for (var i = 0; i < searchResult.length; i++) {
var nameofart = searchResult[i].getValue('name');
artname.push(nameofart)
var artid = searchResult[i].getValue('internalid');
intid.push(artid)
}
var ArtistCategory = form.addField({
id: 'category',
label: 'Artists',
type: serverWidget.FieldType.MULTISELECT,
})
for (var b = 0; b < intid.length; b++) {
ArtistCategory.addSelectOption({
value: intid[b],
text: artname[b]
});
}
var category = context.request.parameters.category;
if ((category == null) || (category == "")) {
category = [""]
} else {
category = category.split(",");
ArtistCategory.defaultValue = category;
}
var datefiltertype = main.createField(form, 'datefiltertype', 'Date', 'SELECT');
datefiltertype.isMandatory = true;
var datetype = context.request.parameters.datefiltertype
datefiltertype.updateDisplayType({
displayType: serverWidget.FieldDisplayType.DISABLED
});
main.addtype(datefiltertype);
datefiltertype.defaultValue = "WITHIN";
if ((datetype == null) || (datetype == "")) {
datefiltertype.defaultValue = 'WITHIN';
datetype = 'WITHIN'
} else {
datefiltertype.defaultValue = datetype;
}
var fromdate = main.createField(form, 'fromdate', 'From', 'DATE');
fromdate.isMandatory = true;
var datefrom = context.request.parameters.fromdate;
if ((datefrom == null) || (datefrom == "")) {
var date = main.getDateString(-30, new Date());
var month = date.getMonth() + 1;
date = date.getDate() + "/" + month + "/" + date.getFullYear();
fromdate.defaultValue = date;
datefrom = date;
} else {
fromdate.defaultValue = datefrom;
}
var todate = main.createField(form, 'todate', 'Todate', 'DATE');
todate.isMandatory = true;
var dateto = context.request.parameters.todate;
if ((dateto == null) || (dateto == "")) {
var date = main.getDateString(0, new Date());
log.debug("date", date)
var month = date.getMonth() + 1;
date = date.getDate() + "/" + month + "/" + date.getFullYear();
todate.defaultValue = date;
dateto = date;
} else {
todate.defaultValue = dateto;
}
var newsub = form.addSublist({
id: 'artistlist',
type: serverWidget.SublistType.LIST,
label: 'Artist Report'
});
//Adding Fields
var artistName = main.createField(newsub, "artists", 'Artist', "TEXT");
var collectionName = main.createField(newsub, "collectionname", 'Collection Name', "TEXT");
var Size = main.createField(newsub, "size", 'Size', "TEXT");
var displayName = main.createField(newsub, "displayname", 'Display Name', "TEXT");
var royality = main.createField(newsub, "royality", 'royality', "TEXT");
var sumofQuantity = main.createField(newsub, "sumofquantityty", 'Sum Of Quantity', "TEXT");
var royalityPayable = main.createField(newsub, "royalitypay", 'Royality Payable', "TEXT");
//Adding Button to UI
form.addSubmitButton({
label: 'Download Report'
});
form.addButton({
id: 'apply',
label: 'Apply Date',
functionName: 'applydate'
});
form.addButton({
id: 'reset',
label: 'Reset',
functionName: 'myreset'
});
form.addButton({
id: 'savetoFilecab',
label: 'Save To File Cabinet',
functionName: 'savetoFilecab'
});
form.addButton({
id: 'summaryreport',
label: 'Summary Report',
functionName: 'summaryreport'
});
form.addButton({
id: 'emailsend',
label: 'Send Mail',
functionName: 'emailsend'
});
context.response.writePage(form);
log.debug("datefrom", datefrom)
log.debug("dateto", dateto)
var frm = datefrom.toString().split("/")
var to = dateto.toString().split("/")
var datearray = [];
var datefrm = new Date(frm[2], frm[1] - 1, frm[0]);
var datet = new Date(to[2], to[1] - 1, to[0]);
var month = datet.getMonth();
datearray = main.genDatesInRange(datefrm, datet, month)
var len = datearray.length
//Search for creating sublist Content
if (datearray.length > 2) {
log.debug("datearray.length", datearray.length)
var totalArray = []
for (var i = 0; i < len; i++) {
log.debug("len", len)
var frm = datearray[i]
var to = datearray[i + 1]
var dateFilter = ["trandate", "onorafter", frm];
var dateFilter1 = ["trandate", "onorbefore", to];
var dataArray = main.fetchReport(category, datearray, dateFilter, dateFilter1);
totalArray.push(dataArray);
i++;
}
log.debug("dataArrayof get", dataArray)
var fullarray = [].concat.apply([], totalArray);
main.setsublist(fullarray, newsub);
} else {
log.debug("else", "else")
var dateFilterr = ["trandate", datetype, datefrom, dateto];
var dataArray = main.fetchReport(category, datearray, dateFilterr);
//totalArray.push(dataArray);
log.debug("dataArrayof get", dataArray)
main.setsublist(dataArray, newsub);
}
} else {
//POST condition
log.debug("Post", context.request.method)
var category = context.request.parameters.category.toString().split("");
log.debug("in Post", category)
var lengthe = category.length
var myflag = true
if ((category[0] == "") || (category.length > 1)) {
myflag = false
}
var datefrom = context.request.parameters.fromdate;
var dateto = context.request.parameters.todate;
var frm = datefrom.toString().split("/")
var to = dateto.toString().split("/")
var month = new Array();
month[0] = "January";
month[1] = "February";
month[2] = "March";
month[3] = "April";
month[4] = "May";
month[5] = "June";
month[6] = "July";
month[7] = "August";
month[8] = "September";
month[9] = "October";
month[10] = "November";
month[11] = "December";
monthtodate = month[to[1] - 1]
monthfromdate = month[frm[1] - 1]
var datetype = context.request.parameters.datefiltertype;
var datefrm = new Date(frm[2], frm[1], frm[0]);
var month = datefrm.getMonth();
var datefrm = month + "/" + datefrm.getDate() + "/" + datefrm.getFullYear()
var datet = new Date(to[2], to[1], to[0]);
var month = datet.getMonth();
var datet = month + "/" + datet.getDate() + "/" + datet.getFullYear()
var datearray = []
var newarray = []
datearray = main.genDatesInRange(datefrm, datet, month)
var len = datearray.length
log.debug("datearray", datearray)
var j = 0;
//search for report content
if (datearray.length > 2) {
try {
for (var i = 0; i < len; i++) {
var frm = datearray[i]
var to = datearray[i + 1]
log.debug("dateFilter length", datearray.length)
var dateFilter = ["trandate", "onorafter", frm];
var dateFilter1 = ["trandate", "onorbefore", to];
var dataArray = main.pdfreport(category, datearray, dateFilter, dateFilter1);
log.debug("ddataArray", dataArray)
newarray.push(dataArray);
i++;
}
} catch (e) {
log.debug("error", e)
log.debug("Xmlenter", "Enter catch if datearray for multi")
var xmlStr = main.getXMLDataExcel(myflag, datearray, newarray, datefrom, dateto, monthtodate, monthfromdate)
}
var xmlStr = main.getXMLDataExcel(myflag, datearray, newarray, datefrom, dateto, monthtodate, monthfromdate)
} else {
var dateFilterr = ["trandate", datetype, datefrom, dateto];
var dataArray = main.pdfreport(category, datearray, dateFilterr);
log.debug("Xmlenter", "Enter catch if datearray for single")
var xmlStr = main.getXMLDataExcel(myflag, datearray, dataArray, datefrom, dateto, monthtodate, monthfromdate)
}
var pdfFile = render.xmlToPdf({
xmlString: xmlStr
});
if ((category.length == 1) && (category[0] != "")) {
var itemSearchObj = search.create({
type: "item",
filters: [
["custitem2", "anyof", category]
],
columns: [
search.createColumn({
name: "custitem2",
label: "Artist"
})
]
});
log.debug("itemSearchObj", "itemSearchObj");
var artistname;
itemSearchObj.run().each(function (result) {
var tempObj = {}
artistname = main.checkifnull(result.getText({
name: "custitem2",
label: "Artist"
}));
log.debug("artistname", artistname);
});
log.debug("artistname", artistname);
pdfFile.name = artistname + " " + datefrom + " - " + dateto + ".pdf"
} else {
pdfFile.name = "Quarterly " + datefrom + "-" + dateto + ".pdf"
}
context.response.writeFile(pdfFile)
}
},
getDateString: function (count, dateObj) {
var currentDate = ((dateObj) ? (dateObj) : (new Date()));
currentDate = currentDate.setDate(currentDate.getDate() + count);
currentDate = new Date(currentDate);
return currentDate;
},
//Adding fields to form
createField: function (field, id, label, type, source) {
var netsuiteType = {
TEXT: serverWidget.FieldType.TEXT,
MULTISELECT: serverWidget.FieldType.MULTISELECT,
SELECT: serverWidget.FieldType.SELECT,
DATE: serverWidget.FieldType.DATE
};
return field.addField({
id: id,
label: label,
type: netsuiteType[type],
source: source
});
},
alignLeft: function (r) {
return '<p align="Left">' + r + '</p>';
},
alignCenter: function (r) {
return '<p align="Center">' + r + '</p>';
},
toISODate: function (date) {
return date.getDate() ? ('0' + date.getDate()).slice(-2) + '/' + ('0' + (date.getMonth() + 1)).slice(-2) + '/' + ('000' + date.getFullYear()).slice(-4) : date.toString();
},
genDatesInRange: function (fromDate, toDate, monthly) {
var s = new Date(fromDate);
var e = new Date(toDate);
var dates = [];
// Check that dates are valid
if (!s.getDate() || !e.getDate()) return;
if (monthly) {
s.setDate(s.getDate());
e.setDate(1);
}
var i = 0;
while (s <= e) {
dates.push(main.toISODate(s).substr(0, 10));
if (i == 0) {
dates.push(main.toISODate(new Date(s.getFullYear(), s.getMonth() + 1, 0)).substr(0, 10))
}
if (s.getDate() != 1)
s.setDate(1);
s.setMonth(s.getMonth() + 1);
}
dates.pop();
dates.push(main.toISODate(new Date(toDate)))
if (dates.length == 2) {
dates.shift()
}
log.debug("datsssss", dates)
return dates;
},
/*Artist Report Search To show as sublist*/
fetchReport: function (category, datearray, dateFilter, dateFilter1) {
var dataArray = [];
log.debug("datearray", datearray)
if (datearray.length > 1) {
var filterArray = [
["type", "anyof", "CustInvc"],
"AND", ["custbody2", "is", "F"],
"AND", dateFilter,
"AND", dateFilter1,
"AND", ["mainline", "is", "F"],
"AND", ["item.isinactive", "is", "F"],
"AND",
["systemnotes.field", "noneof", "CUSTBODY2"]
];
} else {
var filterArray = [
["type", "anyof", "CustInvc"],
"AND", ["custbody2", "is", "F"],
"AND", dateFilter,
"AND", ["mainline", "is", "F"],
"AND", ["item.isinactive", "is", "F"],
"AND",
["systemnotes.field", "noneof", "CUSTBODY2"]
];
}
if (category == null || category == "" || category == undefined) {
filterArray.push("AND", ["item.custitem2", "noneof", "@NONE@", "47"]);
} else {
filterArray.push("AND", ["item.custitem2", "anyof", category]);
}
log.debug("fetchReport", filterArray)
var transactionSearchObj = search.create({
type: "transaction",
filters: filterArray,
columns: [
search.createColumn({
name: "custitem2",
join: "item",
summary: "GROUP",
sort: search.Sort.ASC,
label: "Artist"
}),
search.createColumn({
name: "custitem_scd_collection_name",
join: "item",
summary: "GROUP",
sort: search.Sort.ASC,
label: "Collection Name"
}),
search.createColumn({
name: "custitem5",
join: "item",
summary: "GROUP",
label: "Size"
}),
search.createColumn({
name: "displayname",
join: "item",
summary: "GROUP",
label: "Display Name"
}),
search.createColumn({
name: "custitem3",
join: "item",
summary: "GROUP",
label: "Royalty"
}),
search.createColumn({
name: "quantity",
summary: "SUM",
label: "Quantity"
}),
search.createColumn({
name: "formulacurrency",
summary: "SUM",
formula: "case when instr({item.custitem3},'$') = 1 then to_number(substr({item.custitem3},2)) * {quantity} else {custcol2} *{quantity} * (to_number(substr({item.custitem3},1,2))/100) end",
label: "Royalty Payable"
}),
search.createColumn({
name: "baseprice",
join: "item",
summary: "MAX",
label: "Base Price"
})
]
});
var searchResultCount = transactionSearchObj.runPaged().count;
log.debug("transactionSearchObj result count", searchResultCount);
if (searchResultCount > 3999) {
hiddenfield.defaultValue = '<html> <body> <script> alert("Search Result is more than the Limit"); </script> </body> </html>'
return []
}
transactionSearchObj.run().each(function (result) {
var tempObj = {}
tempObj.artist = main.checkifnull(result.getText({
name: "custitem2",
join: "item",
summary: "GROUP"
}));
tempObj.collectionname = main.checkifnull(result.getText({
name: "custitem_scd_collection_name",
join: "item",
summary: "GROUP"
}));
tempObj.size = main.checkifnull(result.getText({
name: "custitem5",
join: "item",
summary: "GROUP",
label: "Size"
}));
tempObj.displayname = main.checkifnull(result.getValue({
name: "displayname",
join: "item",
summary: "GROUP"
}));
tempObj.royality = main.checkifnull(result.getText({
name: "custitem3",
join: "item",
summary: "GROUP"
}));
tempObj.qty = main.checkifnull(result.getValue({
name: "quantity",
summary: "SUM",
label: "Quantity"
}));
tempObj.royalitypayable = main.checkifnull(result.getValue({
name: "formulacurrency",
summary: "SUM",
formula: "case when instr({item.custitem3},'$') = 1 then to_number(substr({item.custitem3},2)) * {quantity} else {custcol2} *{quantity} * (to_number(substr({item.custitem3},1,2))/100) end",
}));
tempObj.basepercent = main.checkifnull(result.getValue({
name: "baseprice",
join: "item",
summary: "MAX",
label: "Base Price"
}));
dataArray.push(tempObj);
return true;
});
return dataArray;
},
/*Set Sublist Values */
setsublist: function (dataArray, sublist, j) {
var sublistroyality = 0;
var sublistpayable = 0;
var sublistqty = 0;
var sublistbasepayable = 0;
for (var i = 0; i < dataArray.length; i++) {
var check = false;
if (dataArray[i].royality != "- None -") {
var checker = dataArray[i].royality.toString().indexOf("$");
if (checker > -1) {
check = true
} else {
var textValue = dataArray[i].royality;
var floatedValue = parseInt(textValue.replace(/[^\d\.]/, ''));
var sublistvalue = ((dataArray[i].qty) * (dataArray[i].basepercent) * (floatedValue / 100))
}
} else {
sublistvalue = 0
}
sublist.setSublistValue({
id: 'artists',
line: i,
value: main.alignLeft(dataArray[i].artist)
});
sublist.setSublistValue({
id: 'collectionname',
line: i,
value: main.alignLeft(dataArray[i].collectionname)
});
sublist.setSublistValue({
id: 'size',
line: i,
value: main.alignCenter(dataArray[i].size)
});
sublist.setSublistValue({
id: 'displayname',
line: i,
value: main.alignLeft(dataArray[i].displayname)
});
sublist.setSublistValue({
id: 'royality',
line: i,
value: main.alignLeft(dataArray[i].royality)
})
sublist.setSublistValue({
id: 'sumofquantityty',
line: i,
value: main.alignLeft(dataArray[i].qty)
});
if (check == true) {
sublist.setSublistValue({
id: 'royalitypay',
line: i,
value: main.alignLeft("$" + dataArray[i].royalitypayable)
});
} else {
sublist.setSublistValue({
id: 'royalitypay',
line: i,
value: main.alignLeft("$" + sublistvalue.toFixed(2))
});
}
sublistqty += parseInt(dataArray[i].qty)
if (check == true) {
sublistpayable += parseInt(dataArray[i].royalitypayable)
} else {
sublistbasepayable += (parseFloat(sublistvalue.toFixed(2)))
}
}
sublist.setSublistValue({
id: 'artists',
line: i,
value: "TOTAL"
});
sublist.setSublistValue({
id: 'collectionname',
line: i,
value: "-"
});
sublist.setSublistValue({
id: 'size',
line: i,
value: "-"
});
sublist.setSublistValue({
id: 'displayname',
line: i,
value: "-"
});
sublist.setSublistValue({
id: 'royality',
line: i,
value: "-"
})
sublist.setSublistValue({
id: 'sumofquantityty',
line: i,
value: main.alignLeft(sublistqty)
});
sublist.setSublistValue({
id: 'royalitypay',
line: i,
value: main.alignLeft("$" + (sublistpayable + sublistbasepayable).toFixed(2))
});
},
//Search for pdf report to be printed
pdfreport: function (category, datearray, dateFilter, dateFilter1) {
log.debug("category", category)
if (datearray.length > 1) {
var filterArray = [
["type", "anyof", "CustInvc"],
"AND", ["custbody2", "is", "F"],
"AND", [dateFilter],
"AND", [dateFilter1],
"AND", ["mainline", "is", "F"],
"AND", ["item.isinactive", "is", "F"],
"AND",
["systemnotes.field", "noneof", "CUSTBODY2"]
];
} else {
var filterArray = [
["type", "anyof", "CustInvc"],
"AND", ["custbody2", "is", "F"],
"AND", [dateFilter],
"AND", ["mainline", "is", "F"],
"AND", ["item.isinactive", "is", "F"],
"AND",
["systemnotes.field", "noneof", "CUSTBODY2"]
];
}
if (category == null || category == "" || category == undefined) {
filterArray.push("AND", ["item.custitem2", "noneof", "@NONE@", "47"]);
} else {
filterArray.push("AND", ["item.custitem2", "anyof", category]);
}
log.debug("pdfReport", filterArray)
var transactionSearchObj = search.create({
type: "transaction",
filters: filterArray,
columns: [
search.createColumn({
name: "custitem2",
join: "item",
summary: "GROUP",
sort: search.Sort.ASC,
label: "Artist"
}),
search.createColumn({
name: "custitem_scd_collection_name",
join: "item",
summary: "GROUP",
sort: search.Sort.ASC,
label: "Collection Name"
}),
search.createColumn({
name: "custitem5",
join: "item",
summary: "GROUP",
label: "Size"
}),
search.createColumn({
name: "displayname",
join: "item",
summary: "GROUP",
label: "Display Name"
}),
search.createColumn({
name: "custitem3",
join: "item",
summary: "GROUP",
label: "Royalty"
}),
search.createColumn({
name: "quantity",
summary: "SUM",
label: "Quantity"
}),
search.createColumn({
name: "formulacurrency",
summary: "SUM",
formula: "case when instr({item.custitem3},'$') = 1 then to_number(substr({item.custitem3},2)) * {quantity} else {custcol2} *{quantity} * (to_number(substr({item.custitem3},1,2))/100) end",
label: "Royalty Payable"
}),
search.createColumn({
name: "baseprice",
join: "item",
summary: "MAX",
label: "Base Price"
})
]
});
var searchResultCount = transactionSearchObj.runPaged().count;
log.debug("searchResultCount", searchResultCount)
if (searchResultCount >= 1) {
var dataArray11 = {};
var temp = "";
transactionSearchObj.run().each(function (result) {
var flag = false;
var artist = main.checkifnull(result.getText({
name: "custitem2",
join: "item",
summary: "GROUP"
}));
if (temp == artist) {} else {
flag = true;
temp = artist;
}
var collectionname = main.checkifnull(result.getText({
name: "custitem_scd_collection_name",
join: "item",
summary: "GROUP"
}));
var size = main.checkifnull(result.getText({
name: "custitem5",
join: "item",
summary: "GROUP",
label: "Size"
}));
var displayname = main.checkifnull(result.getValue({
name: "displayname",
join: "item",
summary: "GROUP"
}));
var royality = main.checkifnull(result.getText({
name: "custitem3",
join: "item",
summary: "GROUP"
}));
var qty = main.checkifnull(result.getValue({
name: "quantity",
summary: "SUM",
label: "Quantity"
}));
var royalitypayable = main.checkifnull(result.getValue({
name: "formulacurrency",
summary: "SUM",
formula: "case when instr({item.custitem3},'$') = 1 then to_number(substr({item.custitem3},2)) * {quantity} else {custcol2} *{quantity} * (to_number(substr({item.custitem3},1,2))/100) end",
}));
var baseprice = main.checkifnull(result.getValue({
name: "baseprice",
join: "item",
summary: "MAX",
}));
try {
var obj = {};
obj.size = size;
obj.displayname = displayname;
obj.qty = qty;
obj.royality = royality;
obj.royalitypayable = royalitypayable;
obj.baseprice = baseprice;
dataArray11[artist][collectionname].push(obj);
} catch (e) {
if (flag == true) {
dataArray11[artist] = {};
}
dataArray11[artist][collectionname] = [];
var obj = {};
obj.size = size;
obj.displayname = displayname;
obj.qty = qty;
obj.royality = royality;
obj.royalitypayable = royalitypayable;
obj.baseprice = baseprice;
dataArray11[artist][collectionname].push(obj);
}
return true;
});
}
log.debug("dataArray11", dataArray11)
return dataArray11;
},
//Generating PDF from XML
getXMLDataExcel: function (myflag, datearray, contantArray, datefrom, dateto) {
var amount = 0;
var confamt = 0;
log.debug("Date Array Length", datearray.length)
if (datearray.length <= 1) {
log.debug("getXMLDataExcel", "check nd enter to single month")
var XML = "";
var sizee = Object.keys(contantArray).length
log.debug("Size of Contant Array of Object for single month", sizee)
if ((sizee = 1) && (myflag == true)) {
if (myflag == true) {
log.debug("getXMLDataExcel Single", "single month single artist")
//for single artist of single month
var myXMLFile = file.load({
id: '111727'
});
var totalcalu = 0
var totalqty = 0
var totalpric = 0
var totalvalue = 0
var myXMLFile_value = myXMLFile.getContents();
var TABLE = "";
for (var artist in contantArray) {
var strVar = "";
for (var collectionname in contantArray[artist]) {
var singleResult = contantArray[artist][collectionname]
for (var i = 0; i < singleResult.length; i++) {
var check = false
var checker = singleResult[i].royality.toString().indexOf("$");
if (checker > -1) {
check = true
}
var textValue = singleResult[i].royality;
var floatedValue = parseInt(textValue.replace(/[^\d\.]/, ''));
strVar += "<tr>";
strVar += "<td style='text-align: left'>" + singleResult[i].displayname + "<\/td>";
strVar += "<td style='text-align: left'>" + singleResult[i].size + "<\/td>";
strVar += "<td align='center'><p style='text-align: left'>" + singleResult[i].qty + "<\/p><\/td>";
if (check == true) {
strVar += "<td align='center' style='text-align: left'>$" + singleResult[i].royalitypayable + "<\/td>";
} else {
strVar += "<td align='center' style='text-align: left'>$" + parseFloat(parseFloat((singleResult[i].baseprice)) * parseFloat((singleResult[i].qty)) * parseFloat((floatedValue) / 100)).toFixed(2) + "<\/td>";
}
strVar += "<\/tr>";
strVar = strVar + '\n';
totalqty += parseInt(singleResult[i].qty)
var dollar = false;
if (singleResult[i].royalitypayable != "-") {
var checker = singleResult[i].royality.toString().indexOf("$");
if (checker > -1) {
dollar = true
totalpric += parseFloat(singleResult[i].royalitypayable)
} else {
var textValue = singleResult[i].royality;
var floatedValue = parseInt(textValue.replace(/[^\d\.]/, ''));
var tot = parseFloat(parseFloat(singleResult[i].baseprice) * parseFloat(singleResult[i].qty) * parseFloat(floatedValue) / 100).toFixed(2)
totalvalue += parseFloat(tot)
}
} else {
totalpric = "0"
}
totalcalu = parseFloat(totalpric) + parseFloat(totalvalue)
}
}
strVar += "<tr style='border-bottom:1px;border-bottom-color:#8c8c8c;border-top-color:#8c8c8c'>"
strVar += "</tr>"
TABLE = TABLE + strVar;
}
XML = myXMLFile_value.replace('<!-- REPLACEWITHTABLEBODY -->', TABLE);
var XML0 = XML.replace('<!-- REPLACEWITHQTY -->', totalqty);
var XML1 = XML0.replace('<!-- REPLACEWITHROY -->', "$" + totalcalu.toFixed(2))
var XML2 = XML1.replace('<!-- REPLACEWITHART -->', artist);
var XML3 = XML2.replace('<!-- REPLACEWITHDATE -->', datefrom + " to " + dateto);
if (monthfromdate == monthtodate) {
var XML4 = XML3.replace('<!-- REPLACEWITHMONTH -->', monthfromdate)
var XML5 = XML4.replace('<!-- REPLACEWITHMON -->', monthfromdate)
} else {
var XML4 = XML3.replace('<!-- REPLACEWITHMONTH -->', monthfromdate + " - " + monthtodate)
var XML5 = XML4.replace('<!-- REPLACEWITHMON -->', monthfromdate + " - " + monthtodate)
}
if (toString().indexOf("&") <= 1) {
var XMLfinal = XML5.replace(/&/g, '&');
} else {
var XMLfinal = XML5
}
log.debug("Exit getXMLDataExcel", "single month single artist")
}
} else {
//For multi artists of single month
log.debug("getXMLDataExcel Single month", "Single month multiple artist enter")
var myXMLFile = file.load({
id: '111585'
});
var myXMLFile_value = myXMLFile.getContents();
var TABLE = "";
var grandtotal = 0
for (var artist in contantArray) {
var totalpric = 0
var totalqty = 0
var totalroy = 0
var totalpricforper = 0
var strVar = "";
strVar += "<tr>";
strVar += "<td style='font-weight: bold'><p style ='text-align:left'>" + artist + "<\/p><\/td>";
strVar += "<\/tr>";
for (var collectionname in contantArray[artist]) {
strVar += "<tr>";
strVar += "<td><\/td>";
strVar += "<td style='font-weight: bold'><p style ='text-align:left'>" + collectionname + "<\/p><\/td>";
strVar += "<\/tr>";
for (var i = 0; i < contantArray[artist][collectionname].length; i++) {
var singleResult = contantArray[artist][collectionname][i]
var check = false
var checker = singleResult.royality.toString().indexOf("$");
if (checker > -1) {
check = true
}
var textValue = singleResult.royality;
var floatedValue = parseInt(textValue.replace(/[^\d\.]/, ''));
strVar += "<tr>";
strVar += "<td><\/td>";
strVar += "<td><\/td>";
strVar += "<td><p style ='text-align:left'>" + singleResult.displayname + "<\/p><\/td>";
strVar += "<td align='center'><p style ='text-align:left'>" + singleResult.size + "<\/p><\/td>";
strVar += "<td align='center'><p style ='text-align:center'>" + singleResult.qty + "<\/p><\/td>";
if (check == true) {
strVar += "<td align='center'><p style ='text-align:left'>$" + parseFloat(floatedValue).toFixed(2) + "<\/p><\/td>";
strVar += "<td align='center'><p style ='text-align:left'>$" + parseFloat(singleResult.royalitypayable).toFixed(2) + "<\/p><\/td>";
} else {
strVar += "<td align='center'><p style ='text-align:left'>" + parseFloat(floatedValue).toFixed(2) + "%<\/p><\/td>";
var totalvalueofper = parseFloat(parseFloat((singleResult.baseprice)) * parseFloat((singleResult.qty)) * parseFloat((floatedValue) / 100)).toFixed(2)
if (totalvalueofper == "NaN") {
totalvalueofper = 0
}
strVar += "<td align='center' style='text-align: left'>$" + parseFloat(totalvalueofper).toFixed(2) + "<\/td>";
}
strVar += "<\/tr>";
strVar = strVar + '\n';
var checking = false
if (singleResult.royalitypayable != "-" && singleResult.royality != "- None -") {
var checksum = singleResult.royality.toString().indexOf("$");
if (checksum > -1) {
checking = true
totalpric += parseFloat(singleResult.royalitypayable)
} else {
var totalvalueofper = parseFloat(parseFloat((singleResult.baseprice)) * parseFloat((singleResult.qty)) * parseFloat((floatedValue) / 100)).toFixed(2);
totalpricforper += parseFloat(totalvalueofper)
}
} else {
totalpric = 0
}
totalqty += parseInt(singleResult.qty)
var dollar = false;
if (singleResult.royality != "- None -") {
var checkvalue = singleResult.royality.toString().indexOf("$");
if (checkvalue > -1) {
dollar = true
}
var textValue = singleResult.royality;
var floatedValue = parseInt(textValue.replace(/[^\d\.]/, ''));
totalroy += parseInt(floatedValue)
} else {
totalroy = 0
}
totalamt = totalpricforper + totalpric;
}
}
strVar += "<tr style='border-bottom:1px;border-bottom-color:#49A7FA;border-top-color:#49A7FA'>"
strVar += "</tr>"
strVar += "<tr style='border-bottom:1px;border-bottom-color:#49A7FA;border-top-color:#49A7FA'>"
strVar += "<td style='font-weight: bold'><p style ='text-align:left'>" + artist + " Total<\/p></td>"
strVar += "<td></td>"
strVar += "<td></td>"
strVar += "<td></td>"
strVar += "<td align='center'><p style ='text-align:left;font-weight: bold'>" + parseInt(totalqty) + "<\/p></td>"
if (dollar == true) {
strVar += "<td align='center' style='font-weight: bold'><p style ='text-align:left'>$" + parseInt(totalroy).toFixed(2) + "<\/p></td>"
} else {
strVar += "<td align='center' style='font-weight: bold'><p style ='text-align:left'>" + parseInt(totalroy).toFixed(2) + "%<\/p></td>"
}
strVar += "<td align='center' style='font-weight: bold'><p style ='text-align:left'>$" + parseFloat(totalamt).toFixed(2) + "<\/p></td>"
strVar += "</tr>"
grandtotal += parseFloat(parseFloat(totalamt).toFixed(2))
TABLE = TABLE + strVar;
}
XML = myXMLFile_value.replace('<!-- REPLACEWITHTABLEBODY -->', TABLE);
var XML2 = XML.replace('<!-- REPLACEWITHTOTAL -->', "$" + grandtotal.toFixed(2))
var XML3 = XML2.replace('<!-- REPLACEWITHDATE -->', datefrom + " - " + dateto);
if (toString().indexOf("&") <= 1) {
var XMLfinal = XML3.replace(/&/g, '&');
} else {
var XMLfinal = XML3
}
log.debug("Exit getXMLDataExcel", "single month multi artist")
}
return XMLfinal;
} else {
log.debug("getXMLDataExcel multi", "Multi month")
var XML = "";
log.debug("Enter contantArray", contantArray)
var sizee = contantArray.length
log.debug("size", sizee);
var totalmonthprice = 0
var totamt = 0;
var totalprice = 0
var grand = []
var TABLE = "";
var z = 0;
var a = 0;
var b = 0;
for (var i = 0; i < contantArray.length; i++) {
var totalMonthamount = [];
log.debug("i", i);
try {
var count = Object.keys(contantArray[i])
if ((count.length = 1) && (myflag == true)) {
//for single artist of multiple month
log.debug("i", i)
log.debug("myflag", myflag)
if (myflag == true) {
log.debug("getXMLDataExcel multi", "Multi month for single artist")
var sizee = contantArray.length
var myXMLFile = file.load({
id: '111727'
});
var totalqty = 0
var totalpric = 0
var totalvalue = 0
log.debug("contantArray[i]", contantArray[i])
var myXMLFile_value = myXMLFile.getContents();
var count = Object.keys(contantArray[i])
for (var artist in contantArray[i]) {
var strVar = "";
for (var collectionname in contantArray[i][artist]) {
var singleResult = contantArray[i][artist][collectionname]
for (var j = 0; j < singleResult.length; j++) {
var check = false
var checker = singleResult[j].royality.toString().indexOf("$");
if (checker > -1) {
check = true
}
var textValue = singleResult[j].royality;
var floatedValue = parseInt(textValue.replace(/[^\d\.]/, ''));
strVar += "<tr>";
strVar += "<td style='text-align: left'>" + singleResult[j].displayname + "<\/td>";
strVar += "<td style='text-align: left'>" + singleResult[j].size + "<\/td>";
strVar += "<td align='center'><p style='text-align: left'>" + singleResult[j].qty + "<\/p><\/td>";
if (check == true) {
strVar += "<td align='center' style='text-align: left'>$" + singleResult[j].royalitypayable + "<\/td>";
} else {
strVar += "<td align='center' style='text-align: left'>$" + parseFloat(parseFloat((singleResult[j].baseprice)) * parseFloat((singleResult[j].qty)) * parseFloat((floatedValue) / 100)).toFixed(2) + "<\/td>";
}
strVar += "<\/tr>";
strVar = strVar + '\n';
totalqty += parseInt(singleResult[j].qty)
var dollar = false;
if (singleResult[j].royalitypayable != "-") {
var checker = singleResult[j].royality.toString().indexOf("$");
if (checker > -1) {
dollar = true
totalpric += parseFloat(singleResult[j].royalitypayable)
} else {
var textValue = singleResult[j].royality;
var floatedValue = parseInt(textValue.replace(/[^\d\.]/, ''));
var totalval = parseFloat(parseFloat((singleResult[j].baseprice)) * parseFloat((singleResult[j].qty)) * parseFloat((floatedValue) / 100)).toFixed(2);
totalvalue += parseFloat(totalval)
}
} else {
totalpric = "0"
}
totamt = parseFloat(totalvalue) + parseFloat(totalpric)
}
}
strVar += "<tr style='border-bottom:1px;border-bottom-color:#8c8c8c;border-top-color:#8c8c8c'>"
strVar += "</tr>"
totalprice += parseFloat(totamt)
}
strVar += ""
strVar += "<tr style='text-align: left;font-weight: bold;border-bottom:2px;border-bottom-color:#8c8c8c'>";
strVar += "<td>" + datearray[a] + " to " + datearray[a + 1] + " Total<\/td>";
strVar += "<td ><\/td>";
strVar += "<td><\/td>";
strVar += "<td align='center' style='text-align: left'>$" + parseFloat(totamt).toFixed(2) + "<\/td>";
strVar += "<\/tr>";
strVar += "<tr style='border-bottom:1px;border-bottom-color:#8c8c8c;border-top-color:#8c8c8c'>"
strVar += "</tr>"
a = a + 2;
TABLE = TABLE + strVar;
XML = myXMLFile_value.replace('<!-- REPLACEWITHTABLEBODY -->', TABLE);
var XML1 = XML.replace('<!-- REPLACEWITHROY -->', "$" + parseFloat(totalprice).toFixed(2));
var XML2 = XML1.replace('<!-- REPLACEWITHART -->', artist);
var XML3 = XML2.replace('<!-- REPLACEWITHDATE -->', datefrom + " to " + dateto);
if (monthfromdate == monthtodate) {
var XML4 = XML3.replace('<!-- REPLACEWITHMONTH -->', monthfromdate)
var XML5 = XML4.replace('<!-- REPLACEWITHMON -->', monthfromdate)
} else {
var XML4 = XML3.replace('<!-- REPLACEWITHMONTH -->', monthfromdate + " - " + monthtodate)
var XML5 = XML4.replace('<!-- REPLACEWITHMON -->', monthfromdate + " - " + monthtodate)
}
if (toString().indexOf("&") <= 1) {
var XMLfinal = XML5.replace(/&/g, '&');
} else {
var XMLfinal = XML5
}
log.debug("Exit getXMLDataExcel multi", " Exit Multi month for single artist")
}
} else {
log.debug("getXMLDataExcel multi", "Multi month multi artist")
//For multi artists of multiple month
var myXMLFile = file.load({
id: '111585'
});
var myXMLFile_value = myXMLFile.getContents();
var totalmonthpercentpric = 0
var totalmonthpric = 0
for (var artist in contantArray[i]) {
var totalpric = 0
var totalqty = 0
var totalroy = 0
var totalpricforper = 0
var strVar = "";
strVar += "<tr>";
strVar += "<td style='font-weight: bold'><p style ='text-align:left'>" + artist + "<\/p><\/td>";
strVar += "<\/tr>";
var artistTotal = [];
for (var collectionname in contantArray[i][artist]) {
strVar += "<tr>";
strVar += "<td><\/td>";
strVar += "<td style='font-weight: bold'><p style ='text-align:left'>" + collectionname + "<\/p><\/td>";
strVar += "<\/tr>";
for (var k = 0; k < contantArray[i][artist][collectionname].length; k++) {
var singleResult = contantArray[i][artist][collectionname][k]
var check = false
var checker = singleResult.royality.toString().indexOf("$");
if (checker > -1) {
check = true
}
var textValue = singleResult.royality;
var floatedValue = parseInt(textValue.replace(/[^\d\.]/, ''));
strVar += "<tr>";
strVar += "<td><\/td>";
strVar += "<td><\/td>";
strVar += "<td><p style ='text-align:left'>" + singleResult.displayname + "<\/p><\/td>";
strVar += "<td align='center'><p style ='text-align:left'>" + singleResult.size + "<\/p><\/td>";
strVar += "<td align='center'><p style ='text-align:center'>" + singleResult.qty + "<\/p><\/td>";
if (check == true) {
strVar += "<td align='center'><p style ='text-align:left'> $" + parseFloat(floatedValue).toFixed(2) + "<\/p><\/td>";
strVar += "<td align='center'><p style ='text-align:left'>$" + singleResult.royalitypayable + "<\/p><\/td>";
} else {
strVar += "<td align='center'><p style ='text-align:left'>" + parseFloat(floatedValue).toFixed(2) + "%<\/p><\/td>";
var pricofper = parseFloat(parseFloat((singleResult.baseprice)) * parseFloat((singleResult.qty)) * parseFloat((floatedValue) / 100)).toFixed(2);
if (pricofper == "NaN") {
pricofper = 0
}
strVar += "<td align='center' style='text-align: left'>$" + pricofper + "<\/td>";
}
strVar += "<\/tr>";
strVar = strVar + '\n';
var checking = false
if (singleResult.royalitypayable != "-" && singleResult.royality != "- None -") {
var checksum = singleResult.royality.toString().indexOf("$");
if (checksum > -1) {
checking = true
totalpric = parseFloat(singleResult.royalitypayable).toFixed(2) + parseFloat(totalpric);
artistTotal.push(singleResult.royalitypayable);
} else {
var pricofper = parseFloat(parseFloat((singleResult.baseprice)) * parseFloat((singleResult.qty)) * parseFloat((floatedValue) / 100)).toFixed(2);
totalpricforper += parseFloat(pricofper).toFixed(2)
artistTotal.push(pricofper);
}
} else {
totalpric = 0
}
var confamts = main.findarrayTotal(artistTotal);
totalqty += parseInt(singleResult.qty)
var dollar = false;
if (singleResult.royality != "- None -") {
var checkvalue = singleResult.royality.toString().indexOf("$");
if (checkvalue > -1) {
dollar = true
}
var textValue = singleResult.royality;
var floatedValue = parseInt(textValue.replace(/[^\d\.]/, ''));
totalroy += parseInt(floatedValue)
} else {
totalroy = "0"
}
}
}
totalMonthamount.push(confamts);
totalmonthpric += parseFloat(totalpric).toFixed(2)
totalmonthpercentpric += parseFloat(totalpricforper).toFixed(2)
strVar += "<tr style='border-bottom:1px;border-bottom-color:#49A7FA;border-top-color:#49A7FA'>"
strVar += "</tr>"
strVar += "<tr style='border-bottom:1px;border-bottom-color:#49A7FA;border-top-color:#49A7FA'>"
strVar += "<td style='font-weight: bold'><p style ='text-align:left'>" + artist + " Total<\/p></td>"
strVar += "<td></td>"
strVar += "<td></td>"
strVar += "<td></td>"
strVar += "<td align='center'><p style ='text-align:left;font-weight: bold'>" + parseInt(totalqty) + "<\/p></td>"
if (dollar == true) {
strVar += "<td align='center' style='font-weight: bold'><p style ='text-align:left'>$" + parseInt(totalroy).toFixed(2) + "<\/p></td>"
} else {
strVar += "<td align='center' style='font-weight: bold'><p style ='text-align:left'>" + parseInt(totalroy).toFixed(2) + "%<\/p></td>"
}
strVar += "<td align='center' style='font-weight: bold'><p style ='text-align:left'>$" + confamts + "<\/p></td>"
strVar += "</tr>"
TABLE = TABLE + strVar;
}
strVar = "";
log.debug("datearray before tottal", datearray);
strVar += "<tr style='border-bottom:1px;border-bottom-color:#49A7FA;border-top-color:#49A7FA'>"
strVar += "<td style='font-weight: bold'><p style ='text-align:left'>" + datearray[z] + " to " + datearray[z + 1] + " Total<\/p></td>"
strVar += "<td></td>"
strVar += "<td></td>"
strVar += "<td></td>"
strVar += "<td></td>"
strVar += "<td></td>"
strVar += "<td align='center' style='font-weight: bold'><p style ='text-align:left'> $" + main.findarrayTotal(totalMonthamount) + "<\/p></td>"
strVar += "</tr>"
z = z + 2;
TABLE = TABLE + strVar;
grand.push(main.findarrayTotal(totalMonthamount))
log.debug("grand", grand)
XML = myXMLFile_value.replace('<!-- REPLACEWITHTABLEBODY -->', TABLE);
var XML2 = XML.replace('<!-- REPLACEWITHTOTAL -->', "$" + main.findarrayTotal(grand))
var XML3 = XML2.replace('<!-- REPLACEWITHDATE -->', datefrom + " - " + dateto);
if (toString().indexOf("&") <= 1) {
var XMLfinal = XML3.replace(/&/g, '&');
} else {
var XMLfinal = XML3
}
log.debug("Exit getXMLDataExcel multi", " Exit Multi month multi artist")
}
} catch (e) {
log.debug("e", e)
}
}
}
return XMLfinal;
},
findarrayTotal: function (arrays) {
var total = 0;
for (var i = 0; i < arrays.length; i++) {
total += parseFloat(arrays[i])
}
return total.toFixed(2);
},
checkifnull: function (data) {
if (data == "" || data == null) {
return '0'
} else {
return data
}
},
/*Add type filter for date*/
addtype: function (field) {
var dateobj = [{
"value": "WITHIN",
"text": "within"
}];
for (var key in dateobj) {
field.addSelectOption({
value: dateobj[key]["value"],
text: dateobj[key]["text"]
});
}
return field;
}
}
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;
});
Client Script
/**
* @NApiVersion 2.x
* @NScriptType ClientScript
* @NModuleScope SameAccount
*/
/**
*
* This ClientScript that support for creating a Artist Royalty Report and Batch Mail.
*
*/
/*******************************************************************************
* SC-21 Loyality Report
*
* NetSuite Name :SC-21 CS Artist Loyalty Report
*
* **************************************************************************
*
* Date: 18-07-2018
*
* Author: Jobin & Jismi IT Services LLP
*
*****************************************************************************
**/
define(['N/search', 'N/https', 'N/record', 'N/currentRecord', 'N/url'],
function (search, https, record, currentRecord, url) {
var flag = false;
var main = {
pageInit: function (scriptContext) {
var records = scriptContext.currentRecord;
var fromdate = main.getParameterByName("fromdate")
if (fromdate == null || fromdate == "") {
var date = main.getDateString(-30, new Date());
var month = date.getMonth() + 1;
date = date.getDate() + "/" + month + "/" + date.getFullYear();
records.setText({
fieldId: 'fromdate',
text: date,
});
}
var todate = main.getParameterByName("todate")
if (todate == null || todate == "") {
var date = main.getDateString(0, new Date());
var month = date.getMonth() + 1;
date = date.getDate() + "/" + month + "/" + date.getFullYear();
records.setText({
fieldId: 'todate',
text: date,
});
}
},
summaryreport: function () {
var records = currentRecord.get();
var numLines = records.getLineCount({
sublistId: 'artistlist'
});
console.log("numLines", numLines)
if (numLines <= 1) {
alert("There is no content for this report")
} else {
var type = records.getValue({
fieldId: 'datefiltertype'
});
var todate = records.getText({
fieldId: 'todate'
});
var fromdate = records.getText({
fieldId: 'fromdate'
});
var artists = records.getValue({
fieldId: 'category'
});
console.log(artists);
var post_url = url.resolveScript({
scriptId: "customscript_summaryreport",
deploymentId: "customdeploy1",
returnExternalUrl: false,
params: {
todate: todate,
fromdate: fromdate,
datefiltertype: type
}
});
var urls = post_url + "&category=" + artists;
console.log(urls);
var response = https.get({
url: urls
})
alert("Sucessfully Saved to File Cabinet")
}
},
emailsend: function () {
var records = currentRecord.get();
console.log(flag);
// if (flag == false) {
// alert("Press Apply Date Button")
// } else {
var type = records.getValue({
fieldId: 'datefiltertype'
});
var todate = records.getText({
fieldId: 'todate'
});
var fromdate = records.getText({
fieldId: 'fromdate'
});
var artists = records.getValue({
fieldId: 'category'
});
var folderSearchObj = search.create({
type: "folder",
filters: [
["name", "is", fromdate + "-" + todate]
],
columns: [
search.createColumn({
name: "name",
sort: search.Sort.ASC,
label: "Name"
}),
search.createColumn({
name: "foldersize",
label: "Size (KB)"
}),
search.createColumn({
name: "lastmodifieddate",
label: "Last Modified"
}),
search.createColumn({
name: "internalid",
label: "internalid"
}),
search.createColumn({
name: "numfiles",
label: "# of Files"
})
]
});
var searchResultCount = folderSearchObj.runPaged().count;
if (searchResultCount < 1) {
alert("There is No File to Send")
} else {
console.log(artists);
var post_url = url.resolveScript({
scriptId: "customscript_sl_batchmail",
deploymentId: "customdeploy_batchmail",
returnExternalUrl: false,
params: {
todate: todate,
fromdate: fromdate,
datefiltertype: type
}
});
var urls = post_url + "&category=" + artists;
console.log(urls);
var response = https.get({
url: urls
})
alert("Sucessfully sending mail to the artist")
}
//}
},
applydate: function () {
flag = true;
var records = currentRecord.get();
var type = records.getValue({
fieldId: 'datefiltertype'
});
var todate = records.getText({
fieldId: 'todate'
});
var fromdate = records.getText({
fieldId: 'fromdate'
});
var artists = records.getValue({
fieldId: 'category'
});
console.log(artists);
var post_url = url.resolveScript({
scriptId: "customscriptsc_21_sl_artist_loyality",
deploymentId: "customdeploysc_21_sl_artist_loyality",
returnExternalUrl: false
});
/*changing the location to orcder items page*/
window.location = post_url + "&todate=" + todate + "&fromdate=" + fromdate + "&datefiltertype=" + type + "&category=" + artists;
},
savetoFilecab: function () {
var records = currentRecord.get();
// var numLines = records.getLineCount({
// sublistId: 'artistlist'
// });
// console.log("numLines",numLines)
// if(numLines<=1){
// alert("There is no content for this report")
// }
// else{
var type = records.getValue({
fieldId: 'datefiltertype'
});
var todate = records.getText({
fieldId: 'todate'
});
var fromdate = records.getText({
fieldId: 'fromdate'
});
var artists = records.getValue({
fieldId: 'category'
});
console.log(artists);
var post_url = url.resolveScript({
scriptId: "customscript161",
deploymentId: "customdeploy1",
returnExternalUrl: false,
params: {
todate: todate,
fromdate: fromdate,
datefiltertype: type
}
});
var urls = post_url + "&category=" + artists;
console.log(urls);
var response = https.get({
url: urls
})
alert("Sucessfully Saved to File Cabinet")
// }
},
myreset: function () {
var records = currentRecord.get();
//var apply = main.getParameterByName("apply");
var fromdate = main.getParameterByName("fromdate")
if (fromdate == null || fromdate == "") {
var date = main.getDateString(-30, new Date());
var month = date.getMonth() + 1;
date = date.getDate() + "/" + month + "/" + date.getFullYear();
records.setText({
fieldId: 'fromdate',
text: date,
});
} else {
var date = main.getDateString(-30, new Date());
var month = date.getMonth() + 1;
date = date.getDate() + "/" + month + "/" + date.getFullYear();
records.setText({
fieldId: 'fromdate',
text: date,
});
}
var todate = main.getParameterByName("todate")
if (todate == null || todate == "") {
var date = main.getDateString(0, new Date());
var month = date.getMonth() + 1;
date = date.getDate() + "/" + month + "/" + date.getFullYear();
records.setText({
fieldId: 'todate',
text: date,
});
} else {
var date = main.getDateString(0, new Date());
var month = date.getMonth() + 1;
date = date.getDate() + "/" + month + "/" + date.getFullYear();
records.setText({
fieldId: 'todate',
text: date,
});
}
var artists = main.getParameterByName("category")
records.setValue({
fieldId: 'category',
value: []
})
},
saveRecord: function (scriptContext) {
var records = scriptContext.currentRecord;
var numLines = records.getLineCount({
sublistId: 'artistlist'
});
if (numLines <= 1) {
alert("There is no content for this report")
} else {
return true;
}
},
getParameterByName: function (name, url) {
if (!url)
url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex
.exec(url);
if (!results)
return null;
if (!results[2])
return ' ';
return decodeURIComponent(results[2].replace(/\+/g, " "));
},
getDateString: function (count, dateObj) {
var currentDate = ((dateObj) ? (dateObj) : (new Date()));
currentDate = currentDate.setDate(currentDate.getDate() + count);
currentDate = new Date(currentDate);
return currentDate;
},
/*Field Change event*/
fieldChanged: function (scriptContext) {
var records = scriptContext.currentRecord;
if (scriptContext.fieldId == "datefiltertype") {
var type = records.getValue({
fieldId: 'datefiltertype'
});
var aad = records.getValue({
fieldId: 'fromdate'
});
if (type == "NOTWITHIN" || type == "WITHIN") {
jQuery("#fromdate_fs_lbl_uir_label").html("Date");
jQuery("#todate_fs_lbl_uir_label").html("Date");
jQuery("#fromdate_fs_lbl_uir_label").show();
jQuery("#fromdate").show()
} else {
jQuery("#fromdate").val("");
jQuery("#fromdate_fs_lbl_uir_label").hide();
jQuery("#fromdate").hide();
}
}
}
}
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) {
console.error(e);
}
}
};
return main
});
Schedule Script to Store in File Cabinet
/**
* @NApiVersion 2.x
* @NScriptType ScheduledScript
* @NModuleScope SameAccount
*/
/**
*
* This ScheduledScript to support for creating a Artist Royalty Report.
*
*/
/*******************************************************************************
* SKN Complex
* SC-21 SS Artist Royalty Report Support
*
* NetSuite Name :SC-21 SS Artist Royalty Report Support
*
* Dependent to : SC-21 Artist Loyality Report Support
*
* **************************************************************************
*
* Date: 28-08-2018
*
* Author: Jobin & Jismi IT Services LLP
*
*****************************************************************************
**/
define(['N/email', 'N/file', 'N/url', 'N/https', 'N/record', 'N/runtime', 'N/search', 'N/ui/serverWidget', 'N/task', 'N/render'],
/**
* @param {email} email
* @param {http} http
* @param {https} https
* @param {record} record
* @param {runtime} runtime
* @param {search} search
* @param {url} url
*/
function (email, file, url, https, record, runtime, search, serverWidget, task, render) {
/**
* Definition of the Scheduled script trigger point.
*
* @param {Object} scriptContext
* @param {string} scriptContext.type - The context in which the script is executed. It is one of the values from the scriptContext.InvocationType enum.
* @Since 2015.2
*/
var main = {
execute: function (scriptContext) {
log.debug("Post", "comethodntext.request")
var category = runtime.getCurrentScript().getParameter("custscript_category");
if ((category == null) || (category == "")) {
category = [""];
} else {
category = category.split(",");
}
log.debug("category", category)
var lengthe = category.length
log.debug("lengthe", lengthe)
var myflag = true
if ((category[0] == "")) {
myflag = false
}
var datefrom = runtime.getCurrentScript().getParameter("custscript_datefrom");
var dateto = runtime.getCurrentScript().getParameter("custscript_dateto");
var frm = datefrom.toString().split("/")
var to = dateto.toString().split("/")
var month = new Array();
month[0] = "January";
month[1] = "February";
month[2] = "March";
month[3] = "April";
month[4] = "May";
month[5] = "June";
month[6] = "July";
month[7] = "August";
month[8] = "September";
month[9] = "October";
month[10] = "November";
month[11] = "December";
monthtodate = month[to[1] - 1]
monthfromdate = month[frm[1] - 1]
var datetype = runtime.getCurrentScript().getParameter("custscript_datetype");
//var datetype = context.request.parameters.datefiltertype;
var datefrm = new Date(frm[2], frm[1], frm[0]);
var month = datefrm.getMonth();
var datefrm = month + "/" + datefrm.getDate() + "/" + datefrm.getFullYear()
var datet = new Date(to[2], to[1], to[0]);
var month = datet.getMonth();
var datet = month + "/" + datet.getDate() + "/" + datet.getFullYear()
var datearray = []
datearray = main.genDatesInRange(datefrm, datet, month)
var len = datearray.length
log.debug("datearray", datearray)
var j = 0;
//Generating Report Contant by Search
if (lengthe > 1) {
for (var n = 0; n < lengthe; n++) {
var newarray = []
if (datearray.length > 2) {
try {
for (var i = 0; i < len; i++) {
var frm = datearray[i]
var to = datearray[i + 1]
log.debug("dateFilter length", datearray.length)
var dateFilter = ["trandate", "onorafter", frm];
var dateFilter1 = ["trandate", "onorbefore", to];
var dataArray = main.pdfreport(category[n], datearray, dateFilter, dateFilter1);
log.debug("ddataArraycat", dataArray)
if ((dataArray == " ") || (dataArray == null) || (dataArray == undefined)) {} else {
newarray.push(dataArray);
}
i++;
}
} catch (e) {
log.debug("error", e)
log.debug("Xmlentercat", "Enter catch if datearray for multi")
var xmlStr = main.getXMLDataExcel(myflag, datearray, newarray, datefrom, dateto, monthtodate, monthfromdate)
}
log.debug("newarray", newarray);
var allarray = newarray;
var xmlStr = main.getXMLDataExcel(myflag, datearray, newarray, datefrom, dateto, monthtodate, monthfromdate)
} else {
var dateFilterr = ["trandate", datetype, datefrom, dateto];
var dataArray = main.pdfreport(category[n], datearray, dateFilterr);
log.debug("Xmlentercat", "Enter catch if datearray for single")
var allarray = dataArray;
var xmlStr = main.getXMLDataExcel(myflag, datearray, dataArray, datefrom, dateto, monthtodate, monthfromdate)
}
log.debug("allarray", allarray);
if ((allarray == []) || (allarray == null) || (allarray == undefined) || (allarray == " ")) {
var customlist3SearchObj = search.create({
type: "customlist3",
filters:
[
["internalidnumber","equalto",category[n]]
],
columns:
[
search.createColumn({
name: "name",
sort: search.Sort.ASC,
label: "Name"
})
]
});
var artistname;
customlist3SearchObj.run().each(function (result) {
var tempObj = {}
artistname = main.checkifnull(result.getValue("name"));
log.debug("artistname", artistname);
});
log.debug("TOTESTALLARRAY", allarray);
var pdftosave = file.create({
name: artistname + " " + datefrom + " - " + dateto + ".txt",
fileType: file.Type.PLAINTEXT,
contents: 'Unfortunetly,there is no royalties were due in this time period.'
});
var folderid;
var init = main.checkforfolder(datefrom, dateto);
if (init == true) {
folderid = main.createfolder(datefrom, dateto);
} else {
folderid = init;
}
log.debug("filename", pdftosave.name)
var file1 = main.checkforfile(pdftosave.name)
if (file1.length >= 1) {
} else {
pdftosave.folder = folderid;
var fileid = pdftosave.save();
log.debug("fileid", fileid)
}
} else {
if ((allarray.length < 1)) {
var customlist3SearchObj = search.create({
type: "customlist3",
filters:
[
["internalidnumber","equalto",category[n]]
],
columns:
[
search.createColumn({
name: "name",
sort: search.Sort.ASC,
label: "Name"
})
]
});
var artistname;
customlist3SearchObj.run().each(function (result) {
var tempObj = {}
artistname = main.checkifnull(result.getValue("name"));
log.debug("artistname", artistname);
});
log.debug("TOTESTALLARRAY", allarray);
var pdftosave = file.create({
name: artistname + " " + datefrom + " - " + dateto + ".txt",
fileType: file.Type.PLAINTEXT,
contents: 'Unfortunetly,there is no royalties were due in this time period.'
});
var folderid;
var init = main.checkforfolder(datefrom, dateto);
if (init == true) {
folderid = main.createfolder(datefrom, dateto);
} else {
folderid = init;
}
log.debug("filename", pdftosave.name)
var file1 = main.checkforfile(pdftosave.name)
if (file1.length >= 1) {
} else {
pdftosave.folder = folderid;
var fileid = pdftosave.save();
log.debug("fileid", fileid)
}
} else {
var pdfFile = render.xmlToPdf({
xmlString: xmlStr
});
log.debug("xmlStr", xmlStr);
var itemSearchObj = search.create({
type: "item",
filters: [
["custitem2", "anyof", category[n]]
],
columns: [
search.createColumn({
name: "custitem2",
label: "Artist"
})
]
});
log.debug("itemSearchObj", "itemSearchObj");
var artistname;
itemSearchObj.run().each(function (result) {
var tempObj = {}
artistname = main.checkifnull(result.getText({
name: "custitem2",
label: "Artist"
}));
log.debug("artistname", artistname);
});
log.debug("artistname", artistname);
pdfFile.name = artistname + " " + datefrom + " - " + dateto + ".pdf"
var folderid;
var init = main.checkforfolder(datefrom, dateto);
if (init == true) {
folderid = main.createfolder(datefrom, dateto);
} else {
folderid = init;
}
// Saving the pdffile of monthly to the file cabinet for multiple artist
var file1 = main.checkforfile(pdfFile.name)
if (file1.length >= 1) {
} else {
pdfFile.folder = folderid;
var fileid = pdfFile.save();
log.debug("fileid", fileid)
}
}
}
}
} else {
var newarray = []
if (datearray.length > 2) {
try {
for (var i = 0; i < len; i++) {
var frm = datearray[i]
var to = datearray[i + 1]
log.debug("dateFilter length", datearray.length)
var dateFilter = ["trandate", "onorafter", frm];
var dateFilter1 = ["trandate", "onorbefore", to];
var dataArray = main.pdfreport(category, datearray, dateFilter, dateFilter1);
log.debug("ddataArray", dataArray)
if ((dataArray == " ") || (dataArray == null) || (dataArray == undefined)) {} else {
newarray.push(dataArray);
}
i++;
}
} catch (e) {
log.debug("error", e)
log.debug("Xmlenter", newarray)
var xmlStr = main.getXMLDataExcel(myflag, datearray, newarray, datefrom, dateto, monthtodate, monthfromdate)
}
log.debug("Xmlenter1111", newarray)
var allarray = newarray;
var xmlStr = main.getXMLDataExcel(myflag, datearray, newarray, datefrom, dateto, monthtodate, monthfromdate)
} else {
var dateFilterr = ["trandate", datetype, datefrom, dateto];
var dataArray = main.pdfreport(category, datearray, dateFilterr);
log.debug("XmlenterdataArray", dataArray)
var allarray = dataArray;
var xmlStr = main.getXMLDataExcel(myflag, datearray, dataArray, datefrom, dateto, monthtodate, monthfromdate)
}
log.debug("allarray", allarray);
if ((allarray == " ") || (allarray == null) || (allarray == undefined) || (allarray == [])) {
var customlist3SearchObj = search.create({
type: "customlist3",
filters:
[
["internalidnumber","equalto",category]
],
columns:
[
search.createColumn({
name: "name",
sort: search.Sort.ASC,
label: "Name"
})
]
});
var artistname;
customlist3SearchObj.run().each(function (result) {
var tempObj = {}
artistname = main.checkifnull(result.getValue("name"));
log.debug("artistname", artistname);
});
log.debug("TOTESTALLARRAY", allarray);
var pdftosave = file.create({
name: artistname + " " + datefrom + " - " + dateto + ".txt",
fileType: file.Type.PLAINTEXT,
contents: 'Unfortunetly,there is no royalties were due in this time period.'
});
var folderid;
var init = main.checkforfolder(datefrom, dateto);
if (init == true) {
folderid = main.createfolder(datefrom, dateto);
} else {
folderid = init;
}
log.debug("filename", pdftosave.name)
var file1 = main.checkforfile(pdftosave.name)
if (file1.length >= 1) {
} else {
pdftosave.folder = folderid;
var fileid = pdftosave.save();
log.debug("fileid", fileid)
}
} else {
if ((allarray.length < 1)) {
var customlist3SearchObj = search.create({
type: "customlist3",
filters:
[
["internalidnumber","equalto",category]
],
columns:
[
search.createColumn({
name: "name",
sort: search.Sort.ASC,
label: "Name"
})
]
});
var artistname;
customlist3SearchObj.run().each(function (result) {
var tempObj = {}
artistname = main.checkifnull(result.getValue("name"));
log.debug("artistname", artistname);
});
log.debug("TOTESTALLARRAY", allarray);
var pdftosave = file.create({
name: artistname + " " + datefrom + " - " + dateto + ".txt",
fileType: file.Type.PLAINTEXT,
contents: 'Unfortunetly,there is no royalties were due in this time period.'
});
var folderid;
var init = main.checkforfolder(datefrom, dateto);
if (init == true) {
folderid = main.createfolder(datefrom, dateto);
} else {
folderid = init;
}
log.debug("filename", pdftosave.name)
var file1 = main.checkforfile(pdftosave.name)
if (file1.length >= 1) {
} else {
pdftosave.folder = folderid;
var fileid = pdftosave.save();
log.debug("fileid", fileid)
}
} else {
var pdfFile = render.xmlToPdf({
xmlString: xmlStr
});
log.debug("xmlStr", xmlStr);
if ((category.length == 1) && (category[0] != "")) {
var itemSearchObj = search.create({
type: "item",
filters: [
["custitem2", "anyof", category]
],
columns: [
search.createColumn({
name: "custitem2",
label: "Artist"
})
]
});
log.debug("itemSearchObj", "itemSearchObj");
var artistname;
itemSearchObj.run().each(function (result) {
var tempObj = {}
artistname = main.checkifnull(result.getText({
name: "custitem2",
label: "Artist"
}));
log.debug("artistname", artistname);
});
log.debug("artistname", artistname);
pdfFile.name = artistname + " " + datefrom + " - " + dateto + ".pdf"
} else {
pdfFile.name = "Quarterly " + datefrom + " - " + dateto + ".pdf"
}
var folderid;
var init = main.checkforfolder(datefrom, dateto);
if (init == true) {
folderid = main.createfolder(datefrom, dateto);
} else {
folderid = init;
}
// Saving the pdffile to the file cabinet
log.debug("filename", pdfFile.name)
var file1 = main.checkforfile(pdfFile.name)
if (file1.length >= 1) {
} else {
pdfFile.folder = folderid;
var fileid = pdfFile.save();
log.debug("fileid", fileid)
}
}
}
}
},
toISODate: function (date) {
return date.getDate() ? ('0' + date.getDate()).slice(-2) + '/' + ('0' + (date.getMonth() + 1)).slice(-2) + '/' + ('000' + date.getFullYear()).slice(-4) : date.toString();
},
genDatesInRange: function (fromDate, toDate, monthly) {
var s = new Date(fromDate);
var e = new Date(toDate);
var dates = [];
// Check that dates are valid
if (!s.getDate() || !e.getDate()) return;
if (monthly) {
s.setDate(s.getDate());
e.setDate(1);
}
var i = 0;
while (s <= e) {
dates.push(main.toISODate(s).substr(0, 10));
if (i == 0) {
dates.push(main.toISODate(new Date(s.getFullYear(), s.getMonth() + 1, 0)).substr(0, 10))
}
if (s.getDate() != 1)
s.setDate(1);
s.setMonth(s.getMonth() + 1);
}
dates.pop();
dates.push(main.toISODate(new Date(toDate)))
if (dates.length == 2) {
dates.shift()
}
log.debug("datsssss", dates)
return dates;
},
createfolder: function (datefrom, dateto) {
//Creating folder in the file cabinet
var folderRec = record.create({
type: record.Type.FOLDER,
isDynamic: true
});
folderRec.setValue({
fieldId: 'parent',
value: 111696
});
folderRec.setValue({
fieldId: 'name',
value: datefrom + "-" + dateto
});
var folderId = folderRec.save({
enableSourcing: true,
ignoreMandatoryFields: true
});
return folderId;
},
checkforfolder: function (datefrom, dateto) {
//checking for the folder in the file cabinet
var folderSearchObj = search.create({
type: "folder",
filters: [
["name", "is", datefrom + "-" + dateto]
],
columns: [
search.createColumn({
name: "name",
sort: search.Sort.ASC,
label: "Name"
}),
search.createColumn({
name: "foldersize",
label: "Size (KB)"
}),
search.createColumn({
name: "lastmodifieddate",
label: "Last Modified"
}),
search.createColumn({
name: "internalid",
label: "internalid"
}),
search.createColumn({
name: "numfiles",
label: "# of Files"
})
]
});
var searchResultCount = folderSearchObj.runPaged().count;
if (searchResultCount < 1) {
return true
} else {
var internalid;
folderSearchObj.run().each(function (result) {
internalid = result.getValue("internalid");
return true;
});
return internalid;
}
},
checkforfile: function (filename) {
var fileSearchObj = search.create({
type: "file",
filters: [
["name", "is", filename]
],
columns: [
search.createColumn({
name: "name",
sort: search.Sort.ASC
}),
"folder",
"url",
"filetype"
]
});
var searchResult = fileSearchObj.run().getRange(0, 100);
for (var i = 0; i < searchResult.length; i++) {
var name = searchResult[i].getValue('name');
var folder = searchResult[i].getValue('folder');
var url = searchResult[i].getValue('url');
var filetype = searchResult[i].getValue('filetype');
}
log.debug("searchResult", searchResult.length)
return searchResult;
},
pdfreport: function (category, datearray, dateFilter, dateFilter1) {
//Search for the getting the content for the report
log.debug("category", category)
log.debug("category.length", category.length)
if (datearray.length > 1) {
var filterArray = [
["type", "anyof", "CustInvc"],
"AND", ["custbody2", "is", "F"],
"AND", [dateFilter],
"AND", [dateFilter1],
"AND", ["mainline", "is", "F"],
"AND", ["item.isinactive", "is", "F"],
"AND",
["systemnotes.field","noneof","CUSTBODY2"]
];
} else {
var filterArray = [
["type", "anyof", "CustInvc"],
"AND", ["custbody2", "is", "F"],
"AND", [dateFilter],
"AND", ["mainline", "is", "F"],
"AND", ["item.isinactive", "is", "F"],
"AND",
["systemnotes.field","noneof","CUSTBODY2"]
];
}
if (category == null || category == "" || category == undefined) {
filterArray.push("AND", ["item.custitem2", "noneof", "@NONE@","47"]);
} else {
filterArray.push("AND", ["item.custitem2", "anyof", category]);
}
log.debug("pdfrepofilter", filterArray)
var transactionSearchObj = search.create({
type: "transaction",
filters: filterArray,
columns: [
search.createColumn({
name: "custitem2",
join: "item",
summary: "GROUP",
sort: search.Sort.ASC,
label: "Artist"
}),
search.createColumn({
name: "custitem_scd_collection_name",
join: "item",
summary: "GROUP",
sort: search.Sort.ASC,
label: "Collection Name"
}),
search.createColumn({
name: "custitem5",
join: "item",
summary: "GROUP",
label: "Size"
}),
search.createColumn({
name: "displayname",
join: "item",
summary: "GROUP",
label: "Display Name"
}),
search.createColumn({
name: "custitem3",
join: "item",
summary: "GROUP",
label: "Royalty"
}),
search.createColumn({
name: "quantity",
summary: "SUM",
label: "Quantity"
}),
search.createColumn({
name: "formulacurrency",
summary: "SUM",
formula: "case when instr({item.custitem3},'$') = 1 then to_number(substr({item.custitem3},2)) * {quantity} else {custcol2} *{quantity} * (to_number(substr({item.custitem3},1,2))/100) end",
label: "Royalty Payable"
}),
search.createColumn({
name: "baseprice",
join: "item",
summary: "MAX",
label: "Base Price"
})
]
});
var searchResultCount = transactionSearchObj.runPaged().count;
log.debug("searchResultCount", searchResultCount)
if (searchResultCount >= 1) {
var dataArray11 = {};
var temp = "";
transactionSearchObj.run().each(function (result) {
var flag = false;
var artist = main.checkifnull(result.getText({
name: "custitem2",
join: "item",
summary: "GROUP"
}));
if (temp == artist) {} else {
flag = true;
temp = artist;
}
var collectionname = main.checkifnull(result.getText({
name: "custitem_scd_collection_name",
join: "item",
summary: "GROUP"
}));
var size = main.checkifnull(result.getText({
name: "custitem5",
join: "item",
summary: "GROUP",
label: "Size"
}));
var displayname = main.checkifnull(result.getValue({
name: "displayname",
join: "item",
summary: "GROUP"
}));
var royality = main.checkifnull(result.getText({
name: "custitem3",
join: "item",
summary: "GROUP"
}));
var qty = main.checkifnull(result.getValue({
name: "quantity",
summary: "SUM",
label: "Quantity"
}));
var royalitypayable = main.checkifnull(result.getValue({
name: "formulacurrency",
summary: "SUM",
formula: "case when instr({item.custitem3},'$') = 1 then to_number(substr({item.custitem3},2)) * {quantity} else {custcol2} *{quantity} * (to_number(substr({item.custitem3},1,2))/100) end",
}));
var baseprice = main.checkifnull(result.getValue({
name: "baseprice",
join: "item",
summary: "MAX",
}));
try {
var obj = {};
obj.size = size;
obj.displayname = displayname;
obj.qty = qty;
obj.royality = royality;
obj.royalitypayable = royalitypayable;
obj.baseprice = baseprice;
dataArray11[artist][collectionname].push(obj);
} catch (e) {
if (flag == true) {
dataArray11[artist] = {};
}
dataArray11[artist][collectionname] = [];
var obj = {};
obj.size = size;
obj.displayname = displayname;
obj.qty = qty;
obj.royality = royality;
obj.royalitypayable = royalitypayable;
obj.baseprice = baseprice;
dataArray11[artist][collectionname].push(obj);
}
return true;
});
}
log.debug("dataArray11", dataArray11)
return dataArray11;
},
//Generating PDF from XML
getXMLDataExcel: function (myflag, datearray, contantArray, datefrom, dateto) {
//Generating Xml from the search result
var amount = 0;
var confamt = 0;
log.debug("Date Array Length", datearray.length)
if (datearray.length <= 1) {
log.debug("getXMLDataExcel", "check nd enter to single month")
var XML = "";
var sizee = Object.keys(contantArray).length
log.debug("Contant Array of Object for single month", contantArray)
if ((sizee = 1) && (myflag == true)) {
if (myflag == true) {
log.debug("getXMLDataExcel Single", "single month single artist")
//for single artist
var myXMLFile = file.load({
id: '111727'
});
var totalcalu = 0
var totalqty = 0
var totalpric = 0
var totalvalue = 0
var myXMLFile_value = myXMLFile.getContents();
var TABLE = "";
for (var artist in contantArray) {
var strVar = "";
for (var collectionname in contantArray[artist]) {
var singleResult = contantArray[artist][collectionname]
for (var i = 0; i < singleResult.length; i++) {
var check = false
var checker = singleResult[i].royality.toString().indexOf("$");
if (checker > -1) {
check = true
}
var textValue = singleResult[i].royality;
var floatedValue = parseInt(textValue.replace(/[^\d\.]/, ''));
if(singleResult[i].royality=="- None -"){
singleResult[i].royalitypayable = 0
check = true
}
strVar += "<tr>";
strVar += "<td style='text-align: left'>" + singleResult[i].displayname + "<\/td>";
strVar += "<td style='text-align: left'>" + singleResult[i].size + "<\/td>";
strVar += "<td align='center'><p style='text-align: left'>" + singleResult[i].qty + "<\/p><\/td>";
if (check == true) {
strVar += "<td align='center' style='text-align: left'>$" + singleResult[i].royalitypayable + "<\/td>";
} else {
strVar += "<td align='center' style='text-align: left'>$" + parseFloat(parseFloat((singleResult[i].baseprice)) * parseFloat((singleResult[i].qty)) * parseFloat((floatedValue) / 100)).toFixed(2) + "<\/td>";
}
strVar += "<\/tr>";
strVar = strVar + '\n';
totalqty += parseInt(singleResult[i].qty)
var dollar = false;
if (singleResult[i].royalitypayable != "-") {
var checker = singleResult[i].royality.toString().indexOf("$");
if (checker > -1) {
dollar = true
totalpric += parseFloat(singleResult[i].royalitypayable)
} else {
var textValue = singleResult[i].royality;
var floatedValue = parseInt(textValue.replace(/[^\d\.]/, ''));
var tot = parseFloat(parseFloat(singleResult[i].baseprice) * parseFloat(singleResult[i].qty) * parseFloat(floatedValue) / 100).toFixed(2)
totalvalue += parseFloat(tot)
}
} else {
totalpric = "0"
}
totalcalu = parseFloat(totalpric) + parseFloat(totalvalue)
}
}
strVar += "<tr style='border-bottom:1px;border-bottom-color:#8c8c8c;border-top-color:#8c8c8c'>"
strVar += "</tr>"
TABLE = TABLE + strVar;
}
XML = myXMLFile_value.replace('<!-- REPLACEWITHTABLEBODY -->', TABLE);
var XML0 = XML.replace('<!-- REPLACEWITHQTY -->', totalqty);
var XML1 = XML0.replace('<!-- REPLACEWITHROY -->', "$" + totalcalu.toFixed(2))
var XML2 = XML1.replace('<!-- REPLACEWITHART -->', artist);
var XML3 = XML2.replace('<!-- REPLACEWITHDATE -->', datefrom + " to " + dateto);
if (monthfromdate == monthtodate) {
var XML4 = XML3.replace('<!-- REPLACEWITHMONTH -->', monthfromdate)
var XML5 = XML4.replace('<!-- REPLACEWITHMON -->', monthfromdate)
} else {
var XML4 = XML3.replace('<!-- REPLACEWITHMONTH -->', monthfromdate + " - " + monthtodate)
var XML5 = XML4.replace('<!-- REPLACEWITHMON -->', monthfromdate + " - " + monthtodate)
}
if (toString().indexOf("&") <= 1) {
var XMLfinal = XML5.replace(/&/g, '&');
} else {
var XMLfinal = XML5
}
log.debug("Exit getXMLDataExcel", "single month single artist")
}
} else {
//For multi artists
log.debug("getXMLDataExcel Single month", "Single month multiple artist enter")
var myXMLFile = file.load({
id: '111585'
});
var myXMLFile_value = myXMLFile.getContents();
var TABLE = "";
var grandtotal = 0
for (var artist in contantArray) {
var totalpric = 0
var totalqty = 0
var totalroy = 0
var totalpricforper = 0
var strVar = "";
strVar += "<tr>";
strVar += "<td style='font-weight: bold'><p style ='text-align:left'>" + artist + "<\/p><\/td>";
strVar += "<\/tr>";
for (var collectionname in contantArray[artist]) {
strVar += "<tr>";
strVar += "<td><\/td>";
strVar += "<td style='font-weight: bold'><p style ='text-align:left'>" + collectionname + "<\/p><\/td>";
strVar += "<\/tr>";
for (var i = 0; i < contantArray[artist][collectionname].length; i++) {
var singleResult = contantArray[artist][collectionname][i]
var check = false
var checker = singleResult.royality.toString().indexOf("$");
if (checker > -1) {
check = true
}
var textValue = singleResult.royality;
var floatedValue = parseInt(textValue.replace(/[^\d\.]/, ''));
strVar += "<tr>";
strVar += "<td><\/td>";
strVar += "<td><\/td>";
strVar += "<td><p style ='text-align:left'>" + singleResult.displayname + "<\/p><\/td>";
strVar += "<td align='center'><p style ='text-align:left'>" + singleResult.size + "<\/p><\/td>";
strVar += "<td align='center'><p style ='text-align:center'>" + singleResult.qty + "<\/p><\/td>";
if (check == true) {
strVar += "<td align='center'><p style ='text-align:left'>$" + parseFloat(floatedValue).toFixed(2) + "<\/p><\/td>";
strVar += "<td align='center'><p style ='text-align:left'>$" + parseFloat(singleResult.royalitypayable).toFixed(2) + "<\/p><\/td>";
} else {
strVar += "<td align='center'><p style ='text-align:left'>" + parseFloat(floatedValue).toFixed(2) + "%<\/p><\/td>";
var totalvalueofper = parseFloat(parseFloat((singleResult.baseprice)) * parseFloat((singleResult.qty)) * parseFloat((floatedValue) / 100)).toFixed(2)
if (totalvalueofper == "NaN") {
totalvalueofper = 0
}
strVar += "<td align='center' style='text-align: left'>$" + parseFloat(totalvalueofper).toFixed(2) + "<\/td>";
}
strVar += "<\/tr>";
strVar = strVar + '\n';
var checking = false
if (singleResult.royalitypayable != "-" && singleResult.royality != "- None -") {
var checksum = singleResult.royality.toString().indexOf("$");
if (checksum > -1) {
checking = true
totalpric += parseFloat(singleResult.royalitypayable)
} else {
var totalvalueofper = parseFloat(parseFloat((singleResult.baseprice)) * parseFloat((singleResult.qty)) * parseFloat((floatedValue) / 100)).toFixed(2);
totalpricforper += parseFloat(totalvalueofper)
}
} else {
totalpric = 0
}
totalqty += parseInt(singleResult.qty)
var dollar = false;
if (singleResult.royality != "- None -") {
var checkvalue = singleResult.royality.toString().indexOf("$");
if (checkvalue > -1) {
dollar = true
}
var textValue = singleResult.royality;
var floatedValue = parseInt(textValue.replace(/[^\d\.]/, ''));
totalroy += parseInt(floatedValue)
} else {
totalroy = 0
}
totalamt = totalpricforper + totalpric;
}
}
strVar += "<tr style='border-bottom:1px;border-bottom-color:#49A7FA;border-top-color:#49A7FA'>"
strVar += "</tr>"
strVar += "<tr style='border-bottom:1px;border-bottom-color:#49A7FA;border-top-color:#49A7FA'>"
strVar += "<td style='font-weight: bold'><p style ='text-align:left'>" + artist + " Total<\/p></td>"
strVar += "<td></td>"
strVar += "<td></td>"
strVar += "<td></td>"
strVar += "<td align='center'><p style ='text-align:left;font-weight: bold'>" + parseInt(totalqty) + "<\/p></td>"
if (dollar == true) {
strVar += "<td align='center' style='font-weight: bold'><p style ='text-align:left'>$" + parseInt(totalroy).toFixed(2) + "<\/p></td>"
} else {
strVar += "<td align='center' style='font-weight: bold'><p style ='text-align:left'>" + parseInt(totalroy).toFixed(2) + "%<\/p></td>"
}
strVar += "<td align='center' style='font-weight: bold'><p style ='text-align:left'>$" + parseFloat(totalamt).toFixed(2) + "<\/p></td>"
strVar += "</tr>"
grandtotal += parseFloat(parseFloat(totalamt).toFixed(2))
TABLE = TABLE + strVar;
}
XML = myXMLFile_value.replace('<!-- REPLACEWITHTABLEBODY -->', TABLE);
var XML2 = XML.replace('<!-- REPLACEWITHTOTAL -->', "$" + grandtotal.toFixed(2))
var XML3 = XML2.replace('<!-- REPLACEWITHDATE -->', datefrom + " - " + dateto);
if (toString().indexOf("&") <= 1) {
var XMLfinal = XML3.replace(/&/g, '&');
} else {
var XMLfinal = XML3
}
log.debug("Exit getXMLDataExcel", "single month multi artist")
}
return XMLfinal;
} else {
log.debug("getXMLDataExcel multi", "Multi month")
var XML = "";
log.debug("Enter contantArray", contantArray)
var sizee = contantArray.length
log.debug("size", sizee);
if (sizee == 0) {
var myXMLFile = file.load({
id: '120871'
});
var myXMLFile_value = myXMLFile.getContents();
var XMLfinal = myXMLFile_value
}
var totalmonthprice = 0
var totamt = 0;
var totalprice = 0
var grand = []
var TABLE = "";
var z = 0;
var a = 0;
var b = 0;
for (var i = 0; i < contantArray.length; i++) {
var totalMonthamount = [];
log.debug("i", i);
try {
var count = Object.keys(contantArray[i])
if ((count.length = 1) && (myflag == true)) {
//for single artist
log.debug("i", i)
log.debug("myflag", myflag)
if (myflag == true) {
log.debug("getXMLDataExcel multi", "Multi month for single artist")
var sizee = contantArray.length
var myXMLFile = file.load({
id: '111727'
});
var totalqty = 0
var totalpric = 0
var totalvalue = 0
log.debug("contantArray[i]", contantArray[i])
var myXMLFile_value = myXMLFile.getContents();
var count = Object.keys(contantArray[i])
for (var artist in contantArray[i]) {
var strVar = "";
for (var collectionname in contantArray[i][artist]) {
var singleResult = contantArray[i][artist][collectionname]
for (var j = 0; j < singleResult.length; j++) {
var check = false
var checker = singleResult[j].royality.toString().indexOf("$");
if (checker > -1) {
check = true
}
var textValue = singleResult[j].royality;
var floatedValue = parseInt(textValue.replace(/[^\d\.]/, ''));
if(singleResult[j].royality=="- None -"){
singleResult[j].royalitypayable = 0
check = true
}
strVar += "<tr>";
strVar += "<td style='text-align: left'>" + singleResult[j].displayname + "<\/td>";
strVar += "<td style='text-align: left'>" + singleResult[j].size + "<\/td>";
strVar += "<td align='center'><p style='text-align: left'>" + singleResult[j].qty + "<\/p><\/td>";
if (check == true) {
strVar += "<td align='center' style='text-align: left'>$" + singleResult[j].royalitypayable + "<\/td>";
} else {
strVar += "<td align='center' style='text-align: left'>$" + parseFloat(parseFloat((singleResult[j].baseprice)) * parseFloat((singleResult[j].qty)) * parseFloat((floatedValue) / 100)).toFixed(2) + "<\/td>";
}
strVar += "<\/tr>";
strVar = strVar + '\n';
totalqty += parseInt(singleResult[j].qty)
var dollar = false;
if (singleResult[j].royalitypayable != "-") {
var checker = singleResult[j].royality.toString().indexOf("$");
if (checker > -1) {
dollar = true
totalpric += parseFloat(singleResult[j].royalitypayable)
} else {
var textValue = singleResult[j].royality;
var floatedValue = parseInt(textValue.replace(/[^\d\.]/, ''));
var totalval = parseFloat(parseFloat((singleResult[j].baseprice)) * parseFloat((singleResult[j].qty)) * parseFloat((floatedValue) / 100)).toFixed(2);
totalvalue += parseFloat(totalval)
}
} else {
totalpric = "0"
}
totamt = parseFloat(totalvalue) + parseFloat(totalpric)
}
}
strVar += "<tr style='border-bottom:1px;border-bottom-color:#8c8c8c;border-top-color:#8c8c8c'>"
strVar += "</tr>"
totalprice += parseFloat(totamt)
}
strVar += ""
strVar += "<tr style='text-align: left;font-weight: bold;border-bottom:2px;border-bottom-color:#8c8c8c'>";
strVar += "<td>" + datearray[a] + " to " + datearray[a + 1] + " Total<\/td>";
strVar += "<td ><\/td>";
strVar += "<td><\/td>";
strVar += "<td align='center' style='text-align: left'>$" + parseFloat(totamt).toFixed(2) + "<\/td>";
strVar += "<\/tr>";
strVar += "<tr style='border-bottom:1px;border-bottom-color:#8c8c8c;border-top-color:#8c8c8c'>"
strVar += "</tr>"
a = a + 2;
TABLE = TABLE + strVar;
XML = myXMLFile_value.replace('<!-- REPLACEWITHTABLEBODY -->', TABLE);
var XML1 = XML.replace('<!-- REPLACEWITHROY -->', "$" + parseFloat(totalprice).toFixed(2));
var XML2 = XML1.replace('<!-- REPLACEWITHART -->', artist);
var XML3 = XML2.replace('<!-- REPLACEWITHDATE -->', datefrom + " to " + dateto);
if (monthfromdate == monthtodate) {
var XML4 = XML3.replace('<!-- REPLACEWITHMONTH -->', monthfromdate)
var XML5 = XML4.replace('<!-- REPLACEWITHMON -->', monthfromdate)
} else {
var XML4 = XML3.replace('<!-- REPLACEWITHMONTH -->', monthfromdate + " - " + monthtodate)
var XML5 = XML4.replace('<!-- REPLACEWITHMON -->', monthfromdate + " - " + monthtodate)
}
if (toString().indexOf("&") <= 1) {
var XMLfinal = XML5.replace(/&/g, '&');
} else {
var XMLfinal = XML5
}
log.debug("Exit getXMLDataExcel multi", " Exit Multi month for single artist")
}
} else {
log.debug("getXMLDataExcel multi", "Multi month multi artist")
//For multi artists
var myXMLFile = file.load({
id: '111585'
});
var myXMLFile_value = myXMLFile.getContents();
var totalmonthpercentpric = 0
var totalmonthpric = 0
for (var artist in contantArray[i]) {
var totalpric = 0
var totalqty = 0
var totalroy = 0
var totalpricforper = 0
var strVar = "";
strVar += "<tr>";
strVar += "<td style='font-weight: bold'><p style ='text-align:left'>" + artist + "<\/p><\/td>";
strVar += "<\/tr>";
var artistTotal = [];
for (var collectionname in contantArray[i][artist]) {
strVar += "<tr>";
strVar += "<td><\/td>";
strVar += "<td style='font-weight: bold'><p style ='text-align:left'>" + collectionname + "<\/p><\/td>";
strVar += "<\/tr>";
for (var k = 0; k < contantArray[i][artist][collectionname].length; k++) {
var singleResult = contantArray[i][artist][collectionname][k]
var check = false
var checker = singleResult.royality.toString().indexOf("$");
if (checker > -1) {
check = true
}
var textValue = singleResult.royality;
var floatedValue = parseInt(textValue.replace(/[^\d\.]/, ''));
strVar += "<tr>";
strVar += "<td><\/td>";
strVar += "<td><\/td>";
strVar += "<td><p style ='text-align:left'>" + singleResult.displayname + "<\/p><\/td>";
strVar += "<td align='center'><p style ='text-align:left'>" + singleResult.size + "<\/p><\/td>";
strVar += "<td align='center'><p style ='text-align:center'>" + singleResult.qty + "<\/p><\/td>";
if (check == true) {
strVar += "<td align='center'><p style ='text-align:left'>$" + parseFloat(floatedValue).toFixed(2) + "<\/p><\/td>";
strVar += "<td align='center'><p style ='text-align:left'>$" + singleResult.royalitypayable + "<\/p><\/td>";
} else {
strVar += "<td align='center'><p style ='text-align:left'>" + parseFloat(floatedValue).toFixed(2) + "%<\/p><\/td>";
var pricofper = parseFloat(parseFloat((singleResult.baseprice)) * parseFloat((singleResult.qty)) * parseFloat((floatedValue) / 100)).toFixed(2);
if (pricofper == "NaN") {
pricofper = 0
}
strVar += "<td align='center' style='text-align: left'>$" + pricofper + "<\/td>";
}
strVar += "<\/tr>";
strVar = strVar + '\n';
var checking = false
if (singleResult.royalitypayable != "-" && singleResult.royality != "- None -") {
var checksum = singleResult.royality.toString().indexOf("$");
if (checksum > -1) {
checking = true
totalpric = parseFloat(singleResult.royalitypayable).toFixed(2) + parseFloat(totalpric);
artistTotal.push(singleResult.royalitypayable);
} else {
var pricofper = parseFloat(parseFloat((singleResult.baseprice)) * parseFloat((singleResult.qty)) * parseFloat((floatedValue) / 100)).toFixed(2);
totalpricforper += parseFloat(pricofper).toFixed(2)
artistTotal.push(pricofper);
}
} else {
totalpric = 0
}
var confamts = main.findarrayTotal(artistTotal);
totalqty += parseInt(singleResult.qty)
var dollar = false;
if (singleResult.royality != "- None -") {
var checkvalue = singleResult.royality.toString().indexOf("$");
if (checkvalue > -1) {
dollar = true
}
var textValue = singleResult.royality;
var floatedValue = parseInt(textValue.replace(/[^\d\.]/, ''));
totalroy += parseInt(floatedValue)
} else {
totalroy = "0"
}
}
}
totalMonthamount.push(confamts);
totalmonthpric += parseFloat(totalpric).toFixed(2)
totalmonthpercentpric += parseFloat(totalpricforper).toFixed(2)
strVar += "<tr style='border-bottom:1px;border-bottom-color:#49A7FA;border-top-color:#49A7FA'>"
strVar += "</tr>"
strVar += "<tr style='border-bottom:1px;border-bottom-color:#49A7FA;border-top-color:#49A7FA'>"
strVar += "<td style='font-weight: bold'><p style ='text-align:left'>" + artist + " Total<\/p></td>"
strVar += "<td></td>"
strVar += "<td></td>"
strVar += "<td></td>"
strVar += "<td align='center'><p style ='text-align:left;font-weight: bold'>" + parseInt(totalqty) + "<\/p></td>"
if (dollar == true) {
strVar += "<td align='center' style='font-weight: bold'><p style ='text-align:left'>$" + parseInt(totalroy).toFixed(2) + "<\/p></td>"
} else {
strVar += "<td align='center' style='font-weight: bold'><p style ='text-align:left'>" + parseInt(totalroy).toFixed(2) + "%<\/p></td>"
}
strVar += "<td align='center' style='font-weight: bold'><p style ='text-align:left'>$" + confamts + "<\/p></td>"
strVar += "</tr>"
TABLE = TABLE + strVar;
}
strVar = "";
log.debug("datearray before tottal", datearray);
strVar += "<tr style='border-bottom:1px;border-bottom-color:#49A7FA;border-top-color:#49A7FA'>"
strVar += "<td style='font-weight: bold'><p style ='text-align:left'>" + datearray[z] + " to " + datearray[z + 1] + " Total<\/p></td>"
strVar += "<td></td>"
strVar += "<td></td>"
strVar += "<td></td>"
strVar += "<td></td>"
strVar += "<td></td>"
strVar += "<td align='center' style='font-weight: bold'><p style ='text-align:left'> $" + main.findarrayTotal(totalMonthamount) + "<\/p></td>"
strVar += "</tr>"
z = z + 2;
TABLE = TABLE + strVar;
grand.push(main.findarrayTotal(totalMonthamount))
log.debug("grand", grand)
XML = myXMLFile_value.replace('<!-- REPLACEWITHTABLEBODY -->', TABLE);
var XML2 = XML.replace('<!-- REPLACEWITHTOTAL -->', "$" + main.findarrayTotal(grand))
var XML3 = XML2.replace('<!-- REPLACEWITHDATE -->', datefrom + " - " + dateto);
if (toString().indexOf("&") <= 1) {
var XMLfinal = XML3.replace(/&/g, '&');
} else {
var XMLfinal = XML3
}
log.debug("Exit getXMLDataExcel multi", " Exit Multi month multi artist")
}
} catch (e) {
log.debug("e", e)
}
}
}
return XMLfinal;
},
findarrayTotal: function (arrays) {
var total = 0;
for (var i = 0; i < arrays.length; i++) {
total += parseFloat(arrays[i])
}
return total.toFixed(2);
},
checkifnull: function (data) {
if (data == "" || data == null) {
return '0'
} else {
return data
}
},
}
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;
});
Send Email Code
/**
* @NApiVersion 2.x
* @NScriptType ScheduledScript
* @NModuleScope SameAccount
*/
/**
*
* This ScheduledScript to support for sending mail to Artist.
*
*/
/*******************************************************************************
* SKN Complex
* SC-23 SS Batch Mail Send
*
* NetSuite Name :SC-23 SS Batch Mail Send
*
* Dependent to : SC-23 SL BatchMail
*
* **************************************************************************
*
* Date: 14-09-2018
*
* Author: Jobin & Jismi IT Services LLP
*
*****************************************************************************
**/
define(['N/email', 'N/file', 'N/url', 'N/https', 'N/record', 'N/runtime', 'N/search', 'N/ui/serverWidget', 'N/task', 'N/render'],
/**
* @param {email} email
* @param {http} http
* @param {https} https
* @param {record} record
* @param {runtime} runtime
* @param {search} search
* @param {url} url
*/
function (email, file, url, https, record, runtime, search, serverWidget, task, render) {
/**
* Definition of the Scheduled script trigger point.
*
* @param {Object} scriptContext
* @param {string} scriptContext.type - The context in which the script is executed. It is one of the values from the scriptContext.InvocationType enum.
* @Since 2015.2
*/
var main = {
execute: function (scriptContext) {
log.debug("Post", "comethodntext.request")
var category = runtime.getCurrentScript().getParameter("custscriptcustscript_category");
if ((category == null) || (category == "")) {
category = [""];
} else {
category = category.split(",");
}
log.debug("category", category)
var lengthe = category.length
log.debug("lengthe", lengthe)
var myflag = true
if ((category[0] == "")) {
myflag = false
}
var datefrom = runtime.getCurrentScript().getParameter("custscriptcustscript_datefrom");
var dateto = runtime.getCurrentScript().getParameter("custscriptcustscript_dateto");
var frm = datefrom.toString().split("/")
var to = dateto.toString().split("/")
var month = new Array();
month[0] = "January";
month[1] = "February";
month[2] = "March";
month[3] = "April";
month[4] = "May";
month[5] = "June";
month[6] = "July";
month[7] = "August";
month[8] = "September";
month[9] = "October";
month[10] = "November";
month[11] = "December";
monthtodate = month[to[1] - 1]
monthfromdate = month[frm[1] - 1]
var datetype = runtime.getCurrentScript().getParameter("custscriptcustscript_datetype");
//var datetype = context.request.parameters.datefiltertype;
var datefrm = new Date(frm[2], frm[1], frm[0]);
var month = datefrm.getMonth();
var datefrm = month + "/" + datefrm.getDate() + "/" + datefrm.getFullYear()
var datet = new Date(to[2], to[1], to[0]);
var month = datet.getMonth();
var datet = month + "/" + datet.getDate() + "/" + datet.getFullYear()
var datearray = []
datearray = main.genDatesInRange(datefrm, datet, month)
var len = datearray.length
var j = 0;
//Generating Report Contant by Search
var init = main.checkforfolder(datefrom, dateto);
var filedata = main.fileidsearch(datefrom, dateto)
for (var i = 0; i < filedata.length; i++) {
var fileid = filedata[i].id
var fileObj = file.load({
id: fileid
});
var artifile = main.filenamesearch(fileid)
artifilename = artifile.split(" ")
var artistmailid = main.artistsearch(artifilename)
log.debug("artistmailid", artistmailid)
if (fileObj.fileType == "PLAINTEXT") {
var mergeResult = render.mergeEmail({
templateId: 18
});
var template = mergeResult.body
var mailtemplate = template.toString().replace("Hi", "Hi "+artifilename[0]+",")
email.send({
author: -5,
recipients: 'vickilaw27@gmail.com',
cc: ['anju.m@jobinandjismi.com'],
subject: mergeResult.subject,
body: mailtemplate
});
log.debug("artistd", "artistmailid")
} else {
var mergeResult = render.mergeEmail({
templateId: 6
});
var template = mergeResult.body
var mailtemplate = template.toString().replace("Hi", "Hi "+artifilename[0]+",")
var mailbody = "Please find attached is your Royalty Statement for the period " + datefrom + " to " + dateto + "\n \n"
if (artistmailid == null || artistmailid == "" || artistmailid == [] || artistmailid == 0) {
artistmailid = 'info@designerboys.com.au'
email.send({
author: -5,
recipients: 'anju.m@jobinandjismi.com',
cc: ['vickilaw27@gmail.com'],
subject: mergeResult.subject,
attachments: [fileObj],
body: mailbody
});
log.debug("artistd", "artistmailid")
} else {
email.send({
author: -5,
recipients: 'vickilaw27@gmail.com',
cc: ['anju.m@jobinandjismi.com'],
subject: mergeResult.subject,
attachments: [fileObj],
body: mailtemplate
});
log.debug("artistd", "artistmailid")
}
}
}
},
toISODate: function (date) {
return date.getDate() ? ('0' + date.getDate()).slice(-2) + '/' + ('0' + (date.getMonth() + 1)).slice(-2) + '/' + ('000' + date.getFullYear()).slice(-4) : date.toString();
},
genDatesInRange: function (fromDate, toDate, monthly) {
var s = new Date(fromDate);
var e = new Date(toDate);
var dates = [];
// Check that dates are valid
if (!s.getDate() || !e.getDate()) return;
if (monthly) {
s.setDate(s.getDate());
e.setDate(1);
}
var i = 0;
while (s <= e) {
dates.push(main.toISODate(s).substr(0, 10));
if (i == 0) {
dates.push(main.toISODate(new Date(s.getFullYear(), s.getMonth() + 1, 0)).substr(0, 10))
}
if (s.getDate() != 1)
s.setDate(1);
s.setMonth(s.getMonth() + 1);
}
dates.pop();
dates.push(main.toISODate(new Date(toDate)))
if (dates.length == 2) {
dates.shift()
}
log.debug("datsssss", dates)
return dates;
},
artistsearch: function (arrayofname) {
var contactSearchObj = search.create({
type: "contact",
filters: [
["entityid", "haskeywords", arrayofname[0] + " " + arrayofname[1]]
],
columns: [
search.createColumn({
name: "email",
label: "Email"
}),
]
});
var searchResultCount = contactSearchObj.runPaged().count;
log.debug("searchResultCountArtist", searchResultCount);
var artistemailaddr;
if (searchResultCount > 0) {
contactSearchObj.run().each(function (result) {
artistemailaddr = result.getValue("email");
log.debug("artistemailaddr", artistemailaddr);
});
}
return artistemailaddr;
},
checkforfolder: function (datefrom, dateto) {
//checking for the folder in the file cabinet
var folderSearchObj = search.create({
type: "folder",
filters: [
["name", "is", datefrom + "-" + dateto]
],
columns: [
search.createColumn({
name: "name",
sort: search.Sort.ASC,
label: "Name"
}),
search.createColumn({
name: "foldersize",
label: "Size (KB)"
}),
search.createColumn({
name: "lastmodifieddate",
label: "Last Modified"
}),
search.createColumn({
name: "internalid",
label: "internalid"
}),
search.createColumn({
name: "numfiles",
label: "# of Files"
})
]
});
var searchResultCount = folderSearchObj.runPaged().count;
if (searchResultCount < 1) {
return true
} else {
var internalid;
folderSearchObj.run().each(function (result) {
internalid = result.getValue("internalid");
return true;
});
return internalid;
}
},
fileidsearch: function (datefrom, dateto) {
var fileSearchObj = search.create({
type: "file",
filters: [
["name", "haskeywords", datefrom]
],
columns: [
search.createColumn({
name: "name",
sort: search.Sort.ASC
})
]
});
var searchResult = fileSearchObj.run().getRange(0, 100);
for (var i = 0; i < searchResult.length; i++) {
var name = searchResult[i].getValue('name');
}
return searchResult;
},
filenamesearch: function (fileid) {
var fileSearchObj = search.create({
type: "file",
filters: [
["internalid", "is", fileid]
],
columns: [
search.createColumn({
name: "name",
sort: search.Sort.ASC
})
]
});
var searchResult = fileSearchObj.run().getRange(0, 2);
for (var i = 0; i < searchResult.length; i++) {
var name = searchResult[i].getValue('name');
log.debug("namefrom file search", name)
}
return name;
},
findarrayTotal: function (arrays) {
var total = 0;
for (var i = 0; i < arrays.length; i++) {
total += parseFloat(arrays[i])
}
return total.toFixed(2);
},
checkifnull: function (data) {
if (data == "" || data == null) {
return '0'
} else {
return data
}
},
}
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;
});
XML Code Single Artist
<?xml version="1.0"?><!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<pdf>
<head>
<!-- <if .locale == "ru_RU">
<link name="verdana" type="font" subtype="opentype" src="${nsfont.verdana}" src-bold="${nsfont.verdana_bold}" bytes="2" />
</if> -->
<macrolist>
<macro id="nlheader">
</macro>
<macro id="nlfooter">
<table class="footer" style="width: 100%;"><tr>
<td align="right"><pagenumber/> of <totalpages/></td>
</tr></table>
</macro>
</macrolist>
<style type="text/css">
<!-- table1 {
background-color:#f2f2f2;
width:60%;
margin-left: 100px
} -->
<!--
table2 {
width: 80%;
border-collapse: collapse;
} -->
<!-- td2 {
text-align: left;
border-bottom:1px solid black;
} -->
<!-- td3 {
text-align: left;
border-bottom:2px solid black;
} -->
<!-- ex1 {
margin-top: -20px;
} -->
</style>
</head>
<body header="nlheader" header-height="5%" footer="nlfooter" footer-height="20pt" PageWidth="8inch" PageHeight="25cm" >
<Image>
<img align="center" width="350" height="100" src="https://system.na2.netsuite.com/core/media/media.nl?id=598&c=4115651&h=aaf9ef5ff7909409e103" />
</Image>
<!-- <h1 style="margin-top: -10px" > -->
<h2 align="center">Royalty Statement</h2>
<h4 style="margin-top: -20px;font-style: normal" align="center"><!-- REPLACEWITHDATE --></h4>
<br/><br/>
<table style="background-color:#f2f2f2;width:40%;margin-left: 75px" >
<tr>
<th align="left">Artist : <!-- REPLACEWITHART --></th>
</tr>
</table>
<br/>
<table align="center" style="width: 80%;border-collapse: collapse" border = "0">
<tr style="background-color:#8c8c8c">
<th align="left" width="50%" color="#ffffff"><b>Display Name</b></th>
<th align="justify" width="30%" color="#ffffff"><b style="text-align:center">Size</b></th>
<th align="center" width="0%" color="#ffffff"><p style="text-align:left"><b>Date <!-- REPLACEWITHMONTH --> QTY</b></p></th>
<th align="right" width="0%" color="#ffffff"><p style="text-align:center"><b>Values <!-- REPLACEWITHMON --> Royality$</b></p></th>
</tr>
<!-- REPLACEWITHTABLEBODY -->
<!-- <tr>
<td style="text-align: left;border-bottom:1px;border-bottom-color:#8c8c8c">Majestic Sails II</td>
<td style="text-align: left;border-bottom:1px;border-bottom-color:#8c8c8c">L</td>
<td style="text-align: left;border-bottom:1px;border-bottom-color:#8c8c8c">1</td>
<td style="text-align: left;border-bottom:1px;border-bottom-color:#8c8c8c">$15.00</td>
</tr> -->
<tr>
<td style="text-align: left;border-bottom:2px;border-bottom-color:#8c8c8c"><b>Grand Total</b></td>
<td style="text-align: left;border-bottom:2px;border-bottom-color:#8c8c8c"></td>
<td align="center" style="text-align: left;border-bottom:2px;border-bottom-color:#8c8c8c"><b><!-- REPLACEWITHQTY --></b></td>
<td align="center" style="text-align: left;border-bottom:2px;border-bottom-color:#8c8c8c"><b><!-- REPLACEWITHROY --></b></td>
</tr>
</table>
</body>
</pdf>
XML Code For Multiple Artist
<?xml version="1.0"?><!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<pdf>
<head>
<!-- <#if .locale == "ru_RU">
<link name="verdana" type="font" subtype="opentype" src="${nsfont.verdana}" src-bold="${nsfont.verdana_bold}" bytes="2" />
</#if> -->
<macrolist>
<macro id="nlheader">
</macro>
<macro id="nlfooter">
<table class="footer" style="width: 100%;"><tr>
<td align="right"><pagenumber/> of <totalpages/></td>
</tr></table>
</macro>
</macrolist>
<style type="text/css">
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
text-align: left;
padding: 8px;
width :13%
}
</style>
</head>
<body header="nlheader" header-height="15%" footer="nlfooter" footer-height="20pt" padding="5mm 5mm 10mm 5mm" size="A4-LANDSCAPE">
<h2 align="center">ARTIST ROYALTY PAYABLE</h2>
<h3> </h3>
<h4> </h4>
<table style="width:30%">
<tr style="background-color:#D4E5F0;;border-bottom-color:#0672D1">
<th>Maximum of Date : <!-- REPLACEWITHDATE --></th>
</tr>
</table>
<br/>
<table style="width:100%">
<tr style="background-color:#D4E5F0;;border-bottom-color:#0672D1">
<th style="font-weight: bold"><p style ='text-align:left'>Artist</p></th>
<th style="font-weight: bold"><p style ='text-align:left'>Collection Name</p></th>
<th style="font-weight: bold"><p style ='text-align:left'>Display Name</p></th>
<th align="center" style="font-weight: bold"><p style ='text-align:left'>Size</p></th>
<th align="center" style="font-weight: bold"><p style ='text-align:left'>Total QTY</p></th>
<th align="center" style="font-weight: bold"><p style ='text-align:left'>Royalty</p></th>
<th align="center" style="font-weight: bold"><p style ='text-align:left'>Royalty Payable</p></th>
</tr>
<!-- REPLACEWITHTABLEBODY -->
<tr style="border-bottom:1px;border-bottom-color:#49A7FA;background-color:#D4E5F0" >
<td style="font-weight: bold">Grand Total</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td align="center" style="font-weight: bold"><!-- REPLACEWITHTOTAL --></td>
</tr>
<!-- <tr style="border-bottom:1px;border-bottom-color:#49A7FA" >
<td style="font-weight: bold">Alex Buckingham Total</td>
<td></td>
<td></td>
<td></td>
<td>2</td>
<td>$</td>
<td>20.00</td>
</tr>
<tr>
<td style="font-weight: bold">Danielle Sullivan</td>
<td style="font-weight: bold">Baruna Collection</td>
<td>Ancestral Sky III</td>
<td>L</td>
<td>1</td>
<td>$</td>
<td>20.00</td>
</tr>
<tr>
<td></td>
<td></td>
<td>Ancestral Sky V</td>
<td>S</td>
<td>1</td>
<td>$</td>
<td>10.00</td>
</tr>
<tr>
<td></td>
<td></td>
<td>Ancestral Sky VI</td>
<td>L</td>
<td>1</td>
<td>$</td>
<td>20.00</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td>S</td>
<td>1</td>
<td>$</td>
<td>10.00</td>
</tr> -->
</table>
</body>
</pdf>