PDF report from suitelet, saves to file cabinet and send an email.

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>

Leave a comment

Your email address will not be published. Required fields are marked *