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
};
});