Customer Profitability Report of transaction

Jira Code: TM-85
To display the correct transaction in the profitability report

Client Script : TM-85 JJ CS Customer Profitability

/**
* @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'
        	});
        
        pageId = parseInt(pageId.split('_')[1]);
       
        document.location  = url.resolveScript({
			scriptId : getParameterFromURL('script'),
			deploymentId : getParameterFromURL('deploy'),
			params : {
				'page' : pageId,
				'datefrom' : dateFrom,
				'dateto' : dateTo
			}
		});

	

        }	
    	}
    	catch(e)
        {
           console.log({
                    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)
        {
           console.log{
                    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]);
                }

            }
            return (false);
    	}
    	catch(e)
        {
           console.log({
                    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 urlToSend = url.resolveScript({
    				scriptId :'customscript_tm85_jj_cust_prof_rep',
    				deploymentId : 'customdeploy_tm85_jj_cust_prof_rep',
    				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);
    	}
    	
    } 
   
   
   // 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 urlToSend = url.resolveScript({
    				scriptId :'customscript_jj_test_customer_prof',
    				deploymentId : 'customdeploy_jj_test_customer_prof',
    				params : {
    					'MODE':'DOWNLOAD',
    					'datefrom' : datefrom,
    					'dateto' : dateto
    				}
    			});
    			window.open(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);
        }
    }

    return {
    	pageInit:pageInit,
        fieldChanged : fieldChanged,
        getSuiteletPage : getSuiteletPage,
        display: display,
        backButton:backButton,
        download:download
    };

});

Suitelet Script: TM-85 JJ SL Invoice Search

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */
/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 * @Script Title TM-85 JJ SL INVOICE SEARCH
 * @ScriptId customscript_tm_85_jj_sl_invoicesearch
 * @Description This script is used to display the invoices of customers within a specified date
 */
/*******************************************************************************
 *TAKE 5 MEDIA
 * **************************************************************************
 * Date: 16/07/2018
 * 
 * Author: Jobin & Jismi IT Services LLP
 * 
 * 
 * REVISION HISTORY :
 * 
 * Revision 1.0 $ 16/07/2018 nd : Created
 * 
 ******************************************************************************/
define(['N/search','N/ui/serverWidget',	
	'N/url'],
		/**
	     * @param {search} search
	     * @param {serverWidget} serverWidget
	     */

function(search,serverWidget,url) {
	
	
	//to check for null value
	function checkif(singleitem) {

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

		  return singleitem;
		 }
		}
   
    /**
     * Definition of the Suitelet script trigger point.
     *
     * @param {Object} context
     * @param {ServerRequest} context.request - Encapsulation of the incoming request
     * @param {ServerResponse} context.response - Encapsulation of the Suitelet response
     * @Since 2015.2
     */
    function onRequest(context) {
    	try{

        	//to create form
        	var customerId=context.request.parameters.customerId;
        	var datefrm=context.request.parameters.dtFrm;
        	var dateTofield=context.request.parameters.dtTo;
        	 var pageId = context.request.parameters.page;
//        	var dateFrom, dateTo;
//        	datefrm.defaultValue= dateFrom;
//        	dateTofield.defaultValue= dateTo;

        	var form = serverWidget.createForm({
    			title: 'INVOICE LIST'
    		});
        	//to link with clientscript
        	form.clientScriptFileId = 1043;
        	//to add sublist
        	var invSub = form.addSublist({
        		id: 'custpage_invdet',
    			type: serverWidget.SublistType.LIST,
    			label:'INVOICE DETAILS'
        	});
        	//to add fields to sublist
        	var datef = form.addField({
    			id:'custpage_datefrm',
    			type:serverWidget.FieldType.TEXT,
    			label:'Date from'
    		});
        	datef.defaultValue = datefrm;
        	datef.updateDisplayType({
                displayType: serverWidget.FieldDisplayType.DISABLED
                	});
        	var datet = form.addField({
    			id:'custpage_dateto',
    			type:serverWidget.FieldType.TEXT,
    			label:'Date To'
    		});
        	datet.defaultValue = dateTofield;
        	datet.updateDisplayType({
                displayType: serverWidget.FieldDisplayType.DISABLED
                	});
        	invSub.addField({
    			id:'custpage_invid',
    			type:serverWidget.FieldType.TEXT,
    			label:'Invoice Id'
    		});
        	invSub.addField({
    			id:'custpage_name',
    			type:serverWidget.FieldType.TEXT,
    			label:'Customer Name'
    		});
        	invSub.addField({
    			id:'custpage_invamount',
    			type:serverWidget.FieldType.TEXT,
    			label:'Amount'
    		});
        	invSub.addField({
    			id:'custpage_invdate',
    			type:serverWidget.FieldType.TEXT,
    			label:'Date'
    		});
        	var pageId1 = form.addField({
    			id:'custpage_pageid',
    			type:serverWidget.FieldType.TEXT,
    			label:'pageId'
    		});
        	pageId1.defaultValue = pageId;
        	pageId1.updateDisplayType({
                displayType: serverWidget.FieldDisplayType.HIDDEN
                	});
        	
        	//array of search filter
        	var filters_all = [];
           filters_all.push(["type", "anyof", "CustInvc"]);
          filters_all.push("AND");
          filters_all.push(["mainline","is","T"]);
          filters_all.push("AND");
          filters_all.push(["customermain.internalid","anyof",customerId]);
         filters_all.push("AND");
        	if((datefrm != "") &&  (datefrm != null) && (datefrm != undefined) && (dateTofield != "") &&  (dateTofield != null) && (dateTofield != undefined))
    		{
    			filters_all.push(["trandate","within",datefrm,dateTofield]);
    		}
    		else{
    			if((datefrm != "") &&  (datefrm != null) && (datefrm != undefined)){
    				filters_all.push("AND");
    				filters_all.push(["trandate","onorafter",datefrm]);
    			}


    			if((dateTofield != "") &&  (dateTofield != null) && (dateTofield != undefined)){
    				filters_all.push("AND");
    				filters_all.push(["trandate","onorbefore",dateTofield]);
    			}
    		}
        	//create search
        	var invoiceSearchObj = search.create({
        		   type: "invoice",
        		   filters:filters_all,
        		   
        		     
        		   columns:
        		   [
        		    
        		      
        		    //  search.createColumn({
        		      //   name: "transactionnumber",
         		        // label: "Transaction Number"
        		      //}),
        			   search.createColumn({
        			         name: "transactionname",
        			         
        			         label: "Transaction Name"
        			      }),
        		      search.createColumn({
        		         name: "entityid",
        		         join: "customerMain",
        		         label: "Name"
        		      }),
                       search.createColumn({
        		         name: "internalid",
        		         label: "Internal ID"
        		      }),
        		      search.createColumn({
        		         name: "amount",
        		         label: "Amount"
        		      }),
        		      search.createColumn({
        		          name: "trandate",
        		          sort: search.Sort.ASC,
        		          label: "Date"
        		       })
        		   ]
        		});
        	//run search
        	var searchResult = invoiceSearchObj.run().getRange({
    			start:0,
    			end:1000
    		});
        	for( var j=0; j< searchResult.length; j++){
    			var singleResult = searchResult[j];
    			//getting values from search
    			var invoiceid = singleResult.getValue({
    				name: "transactionname",
    		        
    			});

    			var entityid = singleResult.getValue({
    				name:'entityid',
    				join: "customerMain"
    			});
          var internalid = singleResult.getValue({
    				name:'internalid'
    			});

    			var amount = singleResult.getValue({
    				name:'amount'
    			});
    			var trandate = singleResult.getValue({
    				name:'trandate'
    			});
    			
    			
    			invSub.setSublistValue({
    				id:'custpage_name',
    				line:j,
                  value:entityid
    			});
    			
    			//url module is used to set link to the respective job
    			var urltoInvoice = url.resolveRecord({
    			    recordType: 'invoice',
    			    recordId: internalid,
    			    isEditMode: false
    			});
    			//link is set
    			var transId = '<a href ='+urltoInvoice+'>'+checkif(invoiceid)+'</a>'
    			//setting sublist value
    			invSub.setSublistValue({
    				id:'custpage_invid',
    				line:j,
    				value: transId
    			});
    			
    			invSub.setSublistValue({
    				id:'custpage_invamount',
    				line:j,
    				value: checkif(amount)
    			});
    			invSub.setSublistValue({
    				id:'custpage_invdate',
    				line:j,
    				value: checkif(trandate)
    			});
    			
        	}
        	//button to return back
        	form.addButton({
        	    id : 'custpage_button',
        	    label : 'Return to Summary',
        	    functionName : 'backButton'
        	   });
        	//to display the form
        	context.response.writePage(form);

        
    	}catch (e) {
            log.error("Err@ fn", e.message);
        }
    }

    return {
        onRequest: onRequest
    };
    
});

Leave a comment

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