Customer Profitability Report using suitelet.

Jira Code: TM 85

Create a customer profitability report using the script (It is not achievable through standard report customization). Add the fields – jobs, related amounts, transaction amounts, vendor bill, vendor bill amount.

Suitelet Script

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 * @Script Title TM 85 JJ Customer Profitability report
 * @ScriptId customscript_tm85_jj_cust_prof_rep
 * @Description This script is used to show all the Customer profitability as report 
 */
/*******************************************************************************
 *TAKE 5 MEDIA
 * **************************************************************************
 * Date: 13/07/2018
 * 
 * Author: Jobin & Jismi IT Services LLP
 * 
 * 
 * REVISION HISTORY :
 * 
 * Revision 1.0 $ 13/07/2018 aj : Created
 * 
 * Revision 2.0 $ 05/10/2018 aj : Add Download option
 * 
 ******************************************************************************/
define(['N/record', 'N/search', 'N/ui/serverWidget','N/url','N/file', 'N/encode','N/render','N/xml',"SuiteScripts/moment.js"],
    /**
     * @param {record} record
     * @param {search} search
     * @param {serverWidget} serverWidget
     */
    function(record, search, serverWidget,url,file,encode,render,xml,moment) {

        CLIENT_SCRIPT_FILE_ID = 1043;
        var PAGE_SIZE = 50;
        /**
         * Definition of the Suitelet script trigger point.
         *
         * @param {Object} context
         * @param {ServerRequest} context.request - Encapsulation of the incoming request
         * @param {ServerResponse} context.response - Encapsulation of the Suitelet response
         * @Since 2015.2
         */
        function onRequest(context) {

            // create a form 

        	
        	var response = context.response;
            var entity = context.request.parameters.entity;
            var MODE = context.request.parameters.MODE;
             dateFrom = context.request.parameters.datefrom;
            dateTo = context.request.parameters.dateto;
            log.debug("MODE",MODE);
            var mode = context.request.method;
            log.debug("mode=",mode);
            var dateFrom, dateTo;
            dateFrom = context.request.parameters.datefrom;
            dateTo = context.request.parameters.dateto;
            customerIdurl = context.request.parameters.customerId;
            
            if (checkifPresent(dateFrom)&& checkifPresent(dateTo)) {
                try {
                 /*   var d = new Date();
                    var date = d.getDate();
                    var m = d.getMonth();
                    var y = d.getFullYear();
                    var cM = parseInt(m) + 1;
                    dateFrom = m + '/' + date + '/' + y;
                    dateTo = cM + '/' + date + '/' + y;*/
                	
                	var today=moment();
                	dateTo = today.format("MM/DD/YYYY");
                	dateFrom = today.subtract(1,"months").format("MM/DD/YYYY");
                	log.debug('dateFrom',dateFrom);
                	log.debug('dateTo',dateTo);
                             
                    
                } catch (e) {
                    log.debug("Err@GET fn", e.message);
                }
            }
          
            
            try {
            	
            	if(MODE!='DOWNLOAD'){
            		
            		
            		 var form = serverWidget.createForm({
                         title: 'Customer Profitability Report'
                     });
                     form.clientScriptFileId = CLIENT_SCRIPT_FILE_ID;
                     var pageId = parseInt(context.request.parameters.page);
                     var scriptId = context.request.parameters.script;
                     var deploymentId = context.request.parameters.deploy;


                     // to add sublist
                     var dashboardSublist = form.addSublist({
                         id: 'custpage_sublist',
                         type: serverWidget.SublistType.LIST,
                         label: 'Related Information'
                     });

                     var datefrm = form.addField({
                         id: 'custpage_datefrm',
                         type: serverWidget.FieldType.DATE,
                         label: 'Date From'
                         // source: 'department'
                     });
                    datefrm.defaultValue = dateFrom;
                    
                     var dateTofield = form.addField({
                         id: 'custpage_dateto',
                         type: serverWidget.FieldType.DATE,
                         label: 'Date To'
                         // source: 'department'
                     });
                     dateTofield.defaultValue = dateTo;
                     
                     var customerId = form.addField({
                         id: 'custpage_customerid',
                         type: serverWidget.FieldType.SELECT,
                         label: 'Customer Id',
                         source: 'customer'
                     });
                     
                     log.debug('customerIdurl',customerIdurl)
                     
                    // if(customerIdurl!=null && customerIdurl!=" " && customerIdurl!=undefined){
                    	 customerId.defaultValue = customerIdurl;
                     //}
                 
                    // customerId = customerId.defaultValue;
                     
                     

                     var TotalCount = form.addField({
                         id: 'custpage_totalcount',
                         label: 'Total',
                         type: serverWidget.FieldType.INTEGER

                     });

                     form.addButton({
                         id: 'display',
                         label: 'Refresh',
                         functionName: 'display'
                     });


                     form.addButton({
                         id: 'download',
                         label: 'Download',
                         functionName: 'download'
                     });

                     var customer = dashboardSublist.addField({
                         id: 'custpage_customer',
                         label: 'Customer ID',
                         type: serverWidget.FieldType.TEXT
                     });

                     var totalCost = dashboardSublist.addField({
                         id: 'custpage_totalcost',
                         label: 'Total Cost',
                         type: serverWidget.FieldType.TEXT
                     });

                     var totalRevenue = dashboardSublist.addField({
                         id: 'custpage_revenue',
                         label: 'Total Revenue',
                         type: serverWidget.FieldType.TEXT
                     });


                     var totalProfit = dashboardSublist.addField({
                         id: 'custpage_profit',
                         label: 'Total Profit',
                         type: serverWidget.FieldType.FLOAT
                     });

                

                     //setting a hidden field for saving the entity
                     var entityid = form.addField({
                         id: 'custpage_entityid',
                         label: 'EntityId',
                         type: serverWidget.FieldType.TEXT

                     });
                     entityid.defaultValue = entity;
                     entityid.updateDisplayType({
                         displayType: serverWidget.FieldDisplayType.HIDDEN
                     });

                     //context.response.writePage(form);
                     
                     
                     
                   /*  if(!customerId)
                    	 {
                    	 customerId = null;
                    	 }
                     if(dateFrom)
                    	 {
                    	 customerId = customerIdurl;
                    	// customerId.defaultValue = customerIdurl;
                    	 }
*/
                    
                     // Run search and determine page count
                     var retrieveSearch = runSearch(PAGE_SIZE, entity, dateFrom, dateTo,MODE, customerIdurl);
                     //  log.debug("retrieveSearch immediate after search",retrieveSearch);

                     // to get the Job results

                     var searchTrn = runSearchTransn(PAGE_SIZE, dateFrom, dateTo,MODE);
                     //log.debug("searchTrn immediate after search",searchTrn);

                     //getting the total count
                     var len = retrieveSearch.count;
                     var len2 = searchTrn.pageRanges.length;

                     TotalCount.defaultValue = len;

                     var pageCount = parseFloat(retrieveSearch.count / PAGE_SIZE);

                     // Set pageId to correct value if out of index
                     if (!pageId || pageId == '' || pageId < 0)
                         pageId = 0;
                     else if (pageId >= pageCount)
                         pageId = pageCount - 1;

                     // Add buttons to simulate Next & Previous
                     if (pageId != 0) {
                         form.addButton({
                             id: 'custpage_previous',
                             label: 'Previous',
                             functionName: 'getSuiteletPage(' + scriptId + ', ' +
                                 deploymentId + ', ' + (pageId - 1) +
                                 /*, '
                                 + entity +*/
                                 ')'
                         });
                     }

                     if (pageId <= pageCount - 1) {
                     	form.addButton({
                             id: 'custpage_next',
                             label: 'Next',
                             functionName: 'getSuiteletPage(' + scriptId + ', ' +
                                 deploymentId + ', ' + (pageId + 1) +
                                 ' , '+ dateFrom +', '+dateTo+
                                 ')'
                         });
                     	
                     }
                    
                     // Add drop-down and options to navigate to specific page
                     var selectOptions = form.addField({
                         id: 'custpage_pageid',
                         label: 'Page Index',
                         type: serverWidget.FieldType.SELECT
                     });


                     var recordLength = len;
                     if (recordLength < 50) {
                         PAGE_SIZE = recordLength;
                     }
                     if (recordLength == 0) {
                         PAGE_SIZE = 1;
                     }
                     //log.debug('recordLength', recordLength);

                     //setting the page index
                     for (var i = 0; i < pageCount; i++) {
                         if (i == pageId) {
                             if (parseInt(pageCount) == i) {
                                 selectOptions.addSelectOption({
                                     value: 'pageid_' + i,
                                     text: ((i * PAGE_SIZE) + 1) + ' - ' +
                                         recordLength,
                                     isSelected: true
                                 });

                             } else {
                                 selectOptions.addSelectOption({
                                     value: 'pageid_' + i,
                                     text: ((i * PAGE_SIZE) + 1) + ' - ' +
                                         ((i + 1) * PAGE_SIZE),
                                     isSelected: true
                                 });
                             }
                         } else {
                             if (parseInt(pageCount) == i) {
                                 selectOptions.addSelectOption({
                                     value: 'pageid_' + i,
                                     text: ((i * PAGE_SIZE) + 1) + ' - ' +
                                         recordLength
                                 });
                             } else {
                                 selectOptions.addSelectOption({
                                     value: 'pageid_' + i,
                                     text: ((i * PAGE_SIZE) + 1) + ' - ' +
                                         ((i + 1) * PAGE_SIZE)
                                 });
                             }
                         }
                     }



                     if (pageId >= 0 && pageCount != 0) {

                         // Get subset of data to be shown on page
                         var addResults = fetchSearchResult(retrieveSearch, pageId, searchTrn,len,len2,MODE);
                        // log.debug("addResults", addResults);

                         // Set data returned to columns


                         // Set data returned to columns
                         var j = 0;
                         for (var key in addResults) {

                             /* dashboardSublist.setSublistValue({
                             id: 'custpage_jobid',
                             line: j,
                             value: checkif(result.jobId)

                         });

                         dashboardSublist.setSublistValue({
                             id: 'custpage_jobname',
                             line: j,
                             value: checkif(result.jobName) 

                         });
                          */

                             /*  dashboardSublist.setSublistValue({
                                   id: 'custpage_customer',
                                   line: j,
                                   value: checkif(key)

                               });*/
                               var obj = addResults[key];
                              var link_invoice = url.resolveScript({
                                   scriptId : 'customscript_tm_85_jj_sl_invoicesearch',
                                   deploymentId : 'customdeploy_jj_tm_85_invoicesearch',
                                   params : {
                                       'customerId' : key,
                                       'dtFrm' : dateFrom,
                                       'dtTo' : dateTo,
                                       'page' : pageId
                                   }
                               });
                              var link_job = url.resolveScript({
                                  scriptId : 'customscript_tm_85_jj_sl_jobsearch',
                                  deploymentId : 'customdeploy_tm_85_jj_sl_jobsearch',
                                  params : {
                                      'customerId' : key,
                                      'dtFrm' : dateFrom,
                                      'dtTo' : dateTo,
                                      'page' : pageId
                                  }
                              });
                               var cost = (parseFloat(checkif(obj.totalCost))+parseFloat(checkif(obj.exCart))).toFixed(2);
                               var link = '<a href= '+link_invoice+'>'+checkif(obj.totalRevenue)+'</a>';
                               var link1 = '<a href= '+link_job+'>'+checkif(cost)+'</a>';

                             
                            log.debug("obj",obj)
                             dashboardSublist.setSublistValue({
                                 id: 'custpage_customer',
                                 line: j,
                                 value: checkif(obj.customerName)

                             });
                             
                             dashboardSublist.setSublistValue({
                                 id: 'custpage_totalcost',
                                 line: j,
                                 value: checkif(link1)

                             });

                             dashboardSublist.setSublistValue({
                                 id: 'custpage_revenue',
                                 line: j,
                                 value: checkif(link)

                             });

                             var profits= (parseFloat(checkif(obj.totalRevenue)) - parseFloat(checkif(cost))).toFixed(2);
                             dashboardSublist.setSublistValue({
                                 id: 'custpage_profit',
                                 line: j,
                                 value: checkif(profits)
                             });
                             // your code
                             
                             j++;
                         }
                         //    });

                     }
                     context.response.writePage(form);

	
            		
            	}
            	/****
            	 * To download as excel 
            	 */
            	if(MODE=='DOWNLOAD'){
            		log.debug("inn of download","in of download");
            		var retrieveSearch = runSearch(PAGE_SIZE, entity, dateFrom, dateTo,MODE,customerIdurl);
                    //  log.debug("retrieveSearch immediate after search",retrieveSearch);

                    // to get the Job results

            		var len1= retrieveSearch.length;
            		
                    var searchTrn = runSearchTransn(PAGE_SIZE, dateFrom, dateTo,MODE);
            		
                    var len2 = searchTrn.length;
                    
            		var resultToExcel = fetchSearchResult(retrieveSearch, 1, searchTrn,len1,len2,MODE);
            		
            	

        			var XML_TO_PRINT = getXMLDataExcel(resultToExcel, file);

        			var strXmlEncoded = encode.convert({
        				string : XML_TO_PRINT,
        				inputEncoding : encode.Encoding.UTF_8,
        				outputEncoding : encode.Encoding.BASE_64
        			});
        			
        			
        			if (checkForParameter(XML_TO_PRINT)) {
        				try{
        					var pdfFile = file.create({
                				name : 'CustomerProfitabilityReport.xls',
                				fileType : file.Type.EXCEL,
                				contents : strXmlEncoded
                			});
                			response.writeFile(pdfFile, true);
        				}catch(e)
        				{
        					response.write("File exceeds 10MB"); 
        				}
        			
        			}
        			else{
        				
        				response.write("No Result Found. Please change the filters"); 
                    }
            		
            		
            	}
                

            } catch (e) {
                log.debug('Err@ Create report', e.message);
            }

            //}
        }

        return {
            onRequest: onRequest
        };

        function checkForParameter(parameter, parameterName) {
            if (parameter != "" && parameter != null && parameter != undefined && parameter != "null" && parameter != "undefined" && parameter != " ") {
                return true;
            } else {
                if (parameterName)
                    log.debug('Empty Value found', 'Empty Value for parameter ' + parameterName);
                return false;
            }
        }



        function runSearchTransn(searchPageSize, datefrom, dateto,MODE) {


            var filters_all = [];

            filters_all.push(["type", "anyof", "CustInvc"]);
            filters_all.push("AND");
          filters_all.push(["mainline","is","T"]);

            if ((datefrom != "") && (datefrom != null) && (datefrom != undefined)) {
                filters_all.push("AND");
                filters_all.push(["trandate", "onorafter", datefrom]);
            }


            if ((dateto != "") && (dateto != null) && (dateto != undefined)) {
                filters_all.push("AND");
                filters_all.push(["trandate", "onorbefore", dateto]);
            }

            // Create Search
            var jobSearchObj = search.create({
                type: 'transaction',

                /* columns : [ {
                name: "entityid",
                 summary: "MAX"
            }, {
                name: "amount",
                 join: "transaction",
                 summary: "SUM"

            }
            ], */



                columns: [{
                        name: "internalid",
                        join: "customer",
                        summary: "GROUP",
                        sort: search.Sort.ASC,

                        label: "Name"
                    },
                    {
                        name: "amount",
                        summary: "SUM",
                        label: "Amount"
                    }
                ],
                filters: filters_all
            });


            //if mode is not download
            if(MODE!='DOWNLOAD')
            	{
            	return jobSearchObj.runPaged({
                    pageSize: 1000
                });
            	
            	}
            else{
            	var responseArray=[];
            	
            	
            var trnCount = jobSearchObj.runPaged().count;
                log.debug("trnCount", trnCount);
                if (trnCount < 1)
                    return responseArray;

                var start = 0;
                var end = 1000;

                var raresultarray1 = [];
                var singleresult;
                var result = [];


                for (var i = 0; i < Math.ceil(trnCount / 1000); i++) {
                    result = [];
                    result = jobSearchObj.run().getRange({
                        start: start,
                        end: end
                    });

                    for (var j = 0; j < result.length; j++) {
                         singleresult = result[j];
                         raresultarray1.push(singleresult);
                        responseArray.push(result[j]);
                    }
                    start = end;
                    end = end + 1000;
                }
                return responseArray;
            	
            	
            	
            	
            }
            

        }





        //creating the search
        function runSearch(searchPageSize, entity, dateFrom, dateto,MODE, customerId) {


            var filters_all = [];

            //filters_all.push(["stage","anyof","CUSTOMER"]);
            /*filters_all.push("AND");*/
            if ((dateFrom != "") && (dateFrom != null) && (dateFrom != undefined) && (dateto != "") && (dateto != null) && (dateto != undefined)) {
                filters_all.push(["datecreated", "within", dateFrom, dateto]);
            } else {
                if ((dateFrom != "") && (dateFrom != null) && (dateFrom != undefined)) {
                    //filters_all.push("AND");
                    filters_all.push(["datecreated", "onorafter", dateFrom]);
                }


                if ((dateto != "") && (dateto != null) && (dateto != undefined)) {
                    //filters_all.push("AND");
                    filters_all.push(["datecreated", "onorbefore", dateto]);
                }

                
            }
            
        
            
           // if(customerId)
            	if((customerId != "") && (customerId != null) && (customerId != undefined))
            	{
            filters_all.push("AND");
                filters_all.push(["customer","anyof",customerId]);
            	}
            else
            	{
            	 filters_all.push("AND");
                 filters_all.push(["customer","noneof","@NONE@"]);
            	}
            // Create Search
            var customerSearchObj = search.create({
                type: 'job',

                columns: [{

                        name: "amount",
                        join: "transaction",
                        summary: "SUM",
                        label: "Amount"
                    },
                    {
                        name: "customer",
                        summary: "GROUP",
                        sort: search.Sort.ASC,
                        label: "Customer"
                    },
                   
                    {
                        name: "formulanumeric",
                        summary: "SUM",
                        formula: "TO_NUMBER({custentity_transaction_amount})",
                        label: "Formula (Numeric)"
                     }

                ],
                filters: filters_all
            });

            log.debug({
                    title: ' filters_all',
                    details:  filters_all
                });
            
            if(MODE!='DOWNLOAD'){
            	return customerSearchObj.runPaged({
                pageSize: searchPageSize
            });
            }
            
            else{
            	var responseArray=[];
            	
            	
            var trnCount = customerSearchObj.runPaged().count;
              //  log.debug("trnCount", trnCount);
                if (trnCount < 1)
                    return responseArray;

                var start = 0;
                var end = 1000;

                var raresultarray1 = [];
                var singleresult;
                var result = [];


                for (var i = 0; i < Math.ceil(trnCount / 1000); i++) {
                    result = [];
                    result = customerSearchObj.run().getRange({
                        start: start,
                        end: end
                    });

                    for (var j = 0; j < result.length; j++) {
                         singleresult = result[j];
                         raresultarray1.push(singleresult);
                        responseArray.push(result[j]);
                    }
                    start = end;
                    end = end + 1000;
                }
                return responseArray;
            	}

        }
        /****
         * FOR DOWNLOAD
         */
        
        

        //getting data based on the rage 
        function fetchSearchResult(pagedData, pageIndex, data2,len1,len2,MODE) {

            try {
                var results = new Array();
                var resultsObj = {};
                var Objct = {};
                /*job search */
                if(MODE!='DOWNLOAD'){
                	
                	 var searchPage = pagedData.fetch({
                         index: pageIndex
                     });
                	   searchPage.data.forEach(function(result) { // fetching values
                           

                           var customer = result.getValue({
                               name: "customer",
                               summary: "GROUP",
                               sort: search.Sort.ASC
                           });
                           
                           
                           
                           var customerName = result.getText({
                               name: "customer",
                               summary: "GROUP"
                               
                           });
                           
                         
                           var totalCost = result.getValue({
                               name: "amount",
                               join: "transaction",
                               summary: "SUM",
                               label: "Amount"
                           });
                           // to get the ext cart individual amt
                            var exCart = result.getValue({
                           	 
                           	 name: "formulanumeric",
                                summary: "SUM",
                                formula: "TO_NUMBER({custentity_transaction_amount})",
                                label: "Formula (Numeric)"
                           	 
                             
                           });
                          

                
                           Objct[customer] = {};
                           Objct[customer].exCart =0;
                           Objct[customer].totalCost = totalCost;
                           Objct[customer].customerName =customerName;
                           Objct[customer].exCart =exCart;
           
                       });
                       log.debug("len2",len2);
                       // run the search for trn invoice
                       
                      for(var i =0;i<len2;i++){
                       var data2search = data2.fetch({
                           index: i
                       });
                       data2search.data.forEach(function(result1) { 
// fetching values
                           // from saved search
                           // results
                           var customerTn = result1.getValue({
                               name: "internalid",
                               join: "customer",
                               summary: "GROUP",
                               sort: search.Sort.ASC
                           });

                           var totalRevenue = result1.getValue({
                               name: "amount",
                               summary: "SUM"
                           });
                        
                           try {
                               Objct[customerTn].totalRevenue = totalRevenue;
                           } catch (e) {
                           
                           }

                       
                       });
                      
       }
                	
                }
                else{
                	
                	
                	var lengthOfTotalData = pagedData.length;
                	
                	
                	
                	
                	
                	
                
                		pagedData.forEach(function(result) {
 // fetching values
                           

                           var customer = result.getValue({
                               name: "customer",
                               summary: "GROUP",
                               sort: search.Sort.ASC
                           });
                           
                           
                           
                           var customerName = result.getText({
                               name: "customer",
                               summary: "GROUP"
                               
                           });
                           
                         
                            
                           var totalCost = result.getValue({
                               name: "amount",
                               join: "transaction",
                               summary: "SUM",
                               label: "Amount"
                           });
                           // to get the ext cart individual amt
                            var exCart = result.getValue({
                           	 
                           	 name: "formulanumeric",
                                summary: "SUM",
                                formula: "TO_NUMBER({custentity_transaction_amount})",
                                label: "Formula (Numeric)"
                           	 
                              
                           });
                          
                         
                
                           Objct[customer] = {};
                           Objct[customer].exCart =0;
                           Objct[customer].totalCost = totalCost;
                           Objct[customer].customerName =customerName;
                           Objct[customer].exCart =exCart;
           
                       });
                		
                		
                		
                		
                		
                		
                		
                		
                		
                		
                        log.debug("len2",len2);
                        // run the search for trn invoice
                        
                       
                        data2.forEach(function(result1) { // fetching values
                            // from saved search
                            // results
                            var customerTn = result1.getValue({
                                name: "internalid",
                                join: "customer",
                                summary: "GROUP",
                                sort: search.Sort.ASC
                            });

                            var totalRevenue = result1.getValue({
                                name: "amount",
                                summary: "SUM"
                            });
                          
                            try {
                                Objct[customerTn].totalRevenue = totalRevenue;
                            } catch (e) {
                             
                            }

                        
                        });
                        log.debug({
                            title: 'Objct',
                            details: Objct
                        });
      
                		
                		
                	}
                
                return Objct;

               
            } catch (e) {
                log.debug({
                    title: 'err@search fetch',
                    details: e.message
                });
            }
        }



        function checkif(singleitem) {

            if (singleitem == "" || singleitem == null || singleitem == undefined) {
                return "0";
            } else {

                return singleitem;
            }
        }

        function checkifPresent(singleitem) {

            if (singleitem == "" || singleitem == null || singleitem == undefined) {
                return true;
            } else {

                return false;
            }


        }

        /*******************************************************************************
         * To download XML
         */

        function getXMLDataExcel(searchResult, file) {
        	try {
        		var XML = "";

        		var myXMLFile = file.load({
        			id : '1057'
        		});
        		var myXMLFile_value = myXMLFile.getContents();

        		var length = Object.keys(searchResult).length;
        		
        		
        		if (length > 0) {
        			var TABLE = "";

        			log.debug("searchResult.length", length);
        			
        			
        			 for (var key in searchResult) {
        			
        				 var obj = searchResult[key];
        				
        				 var cost = (parseFloat(checkif(obj.totalCost))+parseFloat(checkif(obj.exCart))).toFixed(2);
        				 
        				 var profits= (parseFloat(checkif(obj.totalRevenue)) - parseFloat(checkif(cost))).toFixed(2);

        				var strVar = "";
        				strVar += "   <Row ss:AutoFitHeight=\"0\">";
        				strVar += "    <Cell><Data ss:Type=\"String\">" + checkif(obj.customerName)
        						+ "<\/Data><\/Cell>";
        				strVar += "    <Cell><Data ss:Type=\"String\">" + checkif(cost)
        						+ "<\/Data><\/Cell>";
        				strVar += "    <Cell><Data ss:Type=\"String\">" + checkif(obj.totalRevenue)
        						+ "<\/Data><\/Cell>";
        				strVar += "    <Cell><Data ss:Type=\"String\">" + checkif(profits)
        						+ "<\/Data><\/Cell>";
        				
        				strVar += "   <\/Row>";

        				if (i < (length - 1)) {
        					strVar = strVar + '\n';
        				}
        				TABLE = TABLE + strVar;

        			}

        			XML = myXMLFile_value.replace('<!-- REPLACEWITHTABLEBODY -->',
        					TABLE);
        		}
        		log.debug("XML", XML);
        		return XML;

        	} catch (e) {
        		log.debug("err@getXMLData", e);
        	}
        }

    });

Client script

/**
* @NApiVersion 2.x
* @NScriptType ClientScript
* @Script  Title TM 85 JJ CS Customer Profitability.js
* @Scriptid 
* @Dependency TM 85 JJ Customer Profitability report,TM-85 JJ SL INVOICE SEARCH,TM 85 JJ JOB SEARCH.
* @Author Jobin and Jismi IT Services LLP
* @Description for implementing multiple pages,to refresh the result after selecting dates,to go back to the start page.
*/
 
	define(['N/url','N/currentRecord','N/runtime','N/search'],
    function (url,currentRecord,runtime,search) {
	
		function pageInit(scriptContext) {
			
			if (window.onbeforeunload) {
		        window.onbeforeunload = function() {
		            null;
		        };
		    }

		}
    function fieldChanged(context) {
    	try
    	{
    		
        // Navigate to selected page
        if (context.fieldId == 'custpage_pageid') {
        	
        var pageId = context.currentRecord.getValue({
       		fieldId : 'custpage_pageid'
        	});
        var dateFrom = context.currentRecord.getText({
       		fieldId : 'custpage_datefrm'
        	});
        var dateTo = context.currentRecord.getText({
       		fieldId : 'custpage_dateto'
        	});
        
           //  console.log('dateTo',dateFrom+','+dateTo);
        
        pageId = parseInt(pageId.split('_')[1]);
       
        document.location  = url.resolveScript({
			scriptId : getParameterFromURL('script'),
			deploymentId : getParameterFromURL('deploy'),
			params : {
				'page' : pageId,
				'datefrom' : dateFrom,
				'dateto' : dateTo
			}
		});
     
		//console.log(document.location);
	

        }	
    	}
    	catch(e)
        {
           log.debug({
                    title: 'error',
                    details: e.message
                    });
          
        }
       
    }

    //for next and previous buttons
    function getSuiteletPage(suiteletScriptId, suiteletDeploymentId, pageId,dateFrom,dateTo) {
    	try
    	{
    		
    		
    		
    		var record = currentRecord.get();
			
			var datefrom = record.getText({
				fieldId : 'custpage_datefrm'
			});
			
			var dateto = record.getText({
				fieldId : 'custpage_dateto'
			});
			
			
			var urlToSend = url.resolveScript({
				scriptId :'customscript_tm85_jj_cust_prof_rep',
				deploymentId : 'customdeploy_tm85_jj_cust_prof_rep',
				params : {
					'page' : pageId,
					'datefrom' : datefrom,
					'dateto' : dateto
				}
			});
			
				//var url = window.location.href;
				if (urlToSend.indexOf('?') > -1) {
					urlToSend += /*'&MODE=DOWNLOAD&'+*/'&datefrom='+datefrom +'&dateto='+dateto+'&page='+pageId;
				} else {
					urlToSend += /*'?MODE=DOWNLOAD&='+*/'&datefrom='+datefrom +'&dateto='+dateto+'&page='+pageId;
				}
				window.location.href = urlToSend;
			
    	}
    	catch(e)
        {
           log.debug({
                    title: 'getSuiteletPage',
                    details: e.message
                    });
          
        }
        
    }

    function getParameterFromURL(param) {
    	try
    	{
    		var query = window.location.search.substring(1);
            var vars = query.split("&");
            for (var i = 0; i < vars.length; i++) {
                var pair = vars[i].split("=");
                if (pair[0] == param) {
                    return decodeURIComponent(pair[1]);
                }
              //  console.log('inn');
            }
            return (false);
    	}
    	catch(e)
        {
           log.debug({
                    title: 'getParameterFromURL',
                    details: e.message
                    });
          
        }
        
    }
    // for refresh button
   function display(){
    	try{
    			
    			var record = currentRecord.get();
    			
    			var datefrom = record.getText({
    				fieldId : 'custpage_datefrm'
    			});
    			
    			var dateto = record.getText({
    				fieldId : 'custpage_dateto'
    			});
    			
    			 var customerId = record.getValue({
 		       		fieldId : 'custpage_customerid'
 		        	});
    			
    			var urlToSend = url.resolveScript({
    				scriptId :'customscript_tm85_jj_cust_prof_rep',
    				deploymentId : 'customdeploy_tm85_jj_cust_prof_rep',
    				params : {
    					'datefrom' : datefrom,
    					'dateto' : dateto,
    					'customerId' : customerId
    				}
    			});
    			
    				//var url = window.location.href;
    				if (urlToSend.indexOf('?') > -1) {
    					urlToSend += /*'&MODE=DOWNLOAD&'+*/'&datefrom='+datefrom +'&dateto='+dateto+'&customerId='+customerId;
    				} else {
    					urlToSend += /*'?MODE=DOWNLOAD&='+*/'&datefrom='+datefrom +'&dateto='+dateto+'&customerId='+customerId;
    				}
    				window.location.href = urlToSend;
    			
    		
    		
    	}catch(e)
    	{
    		console.log("Err@Fn Display",e);
    	}
    	
    } 
   
   
   // for refresh button
   function download(){
    	try{
    		

    			
    			var record = currentRecord.get();
    			
    			var datefrom = record.getText({
    				fieldId : 'custpage_datefrm'
    			});
    			
    			var dateto = record.getText({
    				fieldId : 'custpage_dateto'
    			});
    			
    			 var customerId = record.getValue({
    		       		fieldId : 'custpage_customerid'
    		        	});
    			 
    			 log.debug('customerId',customerId);
    			
    			var urlToSend = url.resolveScript({
    				scriptId :'customscript_tm85_jj_cust_prof_rep',
    				deploymentId : 'customdeploy_tm85_jj_cust_prof_rep',
    				params : {
    					'MODE':'DOWNLOAD',
    					'datefrom' : datefrom,
    					'dateto' : dateto,
    					'customerId' : customerId
    				}
    			});
    			window.open(urlToSend);
    			console.log(urlToSend)
    				/*//var url = window.location.href;
    				if (urlToSend.indexOf('?') > -1) {
    					urlToSend += '&MODE=DOWNLOAD&'+'&datefrom='+datefrom +'&dateto='+dateto;
    				} else {
    					urlToSend += '?MODE=DOWNLOAD&='+'&datefrom='+datefrom +'&dateto='+dateto;
    				}
    				window.open(urlToSend);
    				console.log(urlToSend)*/
    		
    		
    	}catch(e)
    	{
    		console.log("Err@Fn Display",e);
    	}
    	
    } 
   
   
   
   
   //for return to summary button
    function backButton(){
       try{
                
                var record = currentRecord.get();
                
                var datefrom = record.getText({
                    fieldId : 'custpage_datefrm'
                }); 
                
                var dateto = record.getText({
                    fieldId : 'custpage_dateto'
                });
                var pageId = record.getText({
                    fieldId : 'custpage_pageid'
                });
                  
                 //alert("datefrom="+datefrom+"dateto="+dateto);
                var urlToSend = url.resolveScript({
                    scriptId :'customscript_tm85_jj_cust_prof_rep',
                    deploymentId : 'customdeploy_tm85_jj_cust_prof_rep',
                    params : {
                        'datefrom' : datefrom,
                        'dateto' : dateto,
                        'page': pageId
                    }
                });
                if (urlToSend.indexOf('?') > -1) {
                        urlToSend += /*'&MODE=DOWNLOAD&'+*/'&datefrom='+datefrom +'&dateto='+dateto+'&page='+pageId;
                    } else {
                        urlToSend += /*'&MODE=DOWNLOAD&'+*/'&datefrom='+datefrom +'&dateto='+dateto+'&page='+pageId;
                    }
                    window.location.href = urlToSend;
                
            
            
        }catch(e)
        {
            console.log("Err@Fn backButton",e);
        }
    }
    
    //Download action on Job List
    function download_job_report() {
        try {
            var get_url=window.location.href;
           
            
            get_url += '&mode=DOWNLOAD';
            window.open(get_url);

        } catch (err) {
            console.log(err)
        }
    }
    
    
    //Download action on Job List
    function downloadInvoice() {
        try {
            var get_url=window.location.href;
           
            get_url += '&mode=DOWNLOAD';
            window.open(get_url);

        } catch (err) {
            console.log(err)
        }
    }
    
    /*function downloadTest() {
        try {
            var get_url=window.location.href;
           
            get_url += '&mode=DOWNLOAD';
            window.open(get_url);

        } catch (err) {
            console.log(err)
        }
    }
    
    
    
    // for refresh button
    function displayTest(){
     	try{
     		

     			
     			var record = currentRecord.get();
     			
     			var datefrom = record.getText({
     				fieldId : 'custpage_datefrm'
     			});
     			
     			var dateto = record.getText({
     				fieldId : 'custpage_dateto'
     			});
     			
     			var urlToSend = url.resolveScript({
     				scriptId :'customscript_jj_test_customer_prof',
     				deploymentId : 'customdeploy_jj_test_customer_prof',
     				params : {
     					'datefrom' : datefrom,
     					'dateto' : dateto
     				}
     			});
     			
     				//var url = window.location.href;
     				if (urlToSend.indexOf('?') > -1) {
     					urlToSend += '&MODE=DOWNLOAD&'+'&datefrom='+datefrom +'&dateto='+dateto;
     				} else {
     					urlToSend += '?MODE=DOWNLOAD&='+'&datefrom='+datefrom +'&dateto='+dateto;
     				}
     				window.location.href = urlToSend;
     			
     		
     		
     	}catch(e)
     	{
     		console.log("Err@Fn Display",e);
     	}
     	
     } */

    return {
    	pageInit:pageInit,
        fieldChanged : fieldChanged,
        getSuiteletPage : getSuiteletPage,
        display: display,
        backButton:backButton,
        download:download,
        download_job_report:download_job_report,
        downloadInvoice:downloadInvoice/*,
        downloadTest:downloadTest,
        displayTest:displayTest*/
    };

});

Leave a comment

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