Description
The TARGET colour in RED until it meets the target then when it does meet the target change the color to BLUE.
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
*/
define(['N/search', 'N/record', 'N/file', "N/render"],
function(search, record, file, render) {
var ITEM_OBJ = {};
var main = {
onRequest: function(context) {
try {
if (context.request.method == 'GET') {
var filter = context.request.parameters.filter;
if (filter) {
var content = main.fetch_Phonecalldetails(filter);
} else {
var content = main.fetch_Phonecalldetails(filter);
}
var datahtml = file.load({ id: 152384 }).getContents();
/* log.debug("datahtml", datahtml);*/
/*log.debug("content", content);*/
var renderer = render.create();
renderer.templateContent = datahtml;
renderer.addCustomDataSource({
format: render.DataSource.OBJECT,
alias: "content",
data: content
});
log.debug("ITEM_OBJ", ITEM_OBJ);
context.response.write(renderer.renderAsString());
}
} catch (er) {
log.debug('err@onRequest', er.message);
}
},
fetch_Phonecalldetails: function(filter) {
log.debug("filter", filter)
var Phonecalldetails_array = [];
var filterArr_phone = [];
var columnSearch;
filterArr_phone.push(["employee.salesrole", "anyof", "-2"]);
filterArr_phone.push("AND");
var phonecallSearchObj;
if (!filter || filter == "daily") {
/*log.debug("entered1");*/
filterArr_phone.push(["createddate", "within", "today"]);
columnSearch = [
search.createColumn({
name: "assigned",
summary: "GROUP",
}),
search.createColumn({
name: "custentity__outbound_call",
join: "employee",
summary: "GROUP",
}),
search.createColumn({
name: "internalid",
summary: "COUNT",
label: "Number of Outbound Calls"
}),
search.createColumn({
name: "custentity__number_of_quotes",
join: "employee",
summary: "GROUP",
}),
search.createColumn({
name: "custentity__online_logins",
join: "employee",
summary: "GROUP",
}),
search.createColumn({
name: "formulanumeric",
summary: "SUM",
formula: "CASE WHEN {custevent_online_login_set_up}='T' THEN 1 ELSE 0 END",
}),
search.createColumn({
name: "custentity__number_of_opportunities",
join: "employee",
summary: "GROUP",
}),
search.createColumn({
name: "custentity__appointments_set_up",
join: "employee",
summary: "GROUP",
}),
search.createColumn({
name: "formulanumeric",
summary: "SUM",
formula: "CASE WHEN {custevent_set_up_appt_for_rep_visit}='T' THEN 1 ELSE 0 END",
}),
/*search.createColumn({
name: "custentity__number_of_new_clients",
join: "employee",
summary: "GROUP",
})*/
]
} else if (filter == "weekly") {
/*log.debug("entered2");*/
filterArr_phone.push(["createddate", "within", "thisweek"]);
columnSearch = [
search.createColumn({
name: "assigned",
summary: "GROUP",
}),
search.createColumn({
name: "custentity__outbound_call_weekly",
join: "employee",
summary: "GROUP",
}),
search.createColumn({
name: "internalid",
summary: "COUNT",
label: "Number of Outbound Calls"
}),
search.createColumn({
name: "custentity__number_of_quotes_weekly",
join: "employee",
summary: "GROUP",
}),
search.createColumn({
name: "custentity__online_logins_weekly",
join: "employee",
summary: "GROUP",
}),
search.createColumn({
name: "formulanumeric",
summary: "SUM",
formula: "CASE WHEN {custevent_online_login_set_up}='T' THEN 1 ELSE 0 END",
}),
search.createColumn({
name: "custentity__number_of_opportunities_week",
join: "employee",
summary: "GROUP",
}),
search.createColumn({
name: "custentity__appointments_set_up_weekly",
join: "employee",
summary: "GROUP",
}),
search.createColumn({
name: "formulanumeric",
summary: "SUM",
formula: "CASE WHEN {custevent_set_up_appt_for_rep_visit}='T' THEN 1 ELSE 0 END",
}),
/*search.createColumn({
name: "custentity__number_of_new_clients",
join: "employee",
summary: "GROUP",
})*/
]
} else if (filter == "monthly") {
/*log.debug("entered3");*/
filterArr_phone.push(["createddate", "within", "thismonth"]);
columnSearch = [
search.createColumn({
name: "assigned",
summary: "GROUP",
}),
search.createColumn({
name: "custentity__outbound_call_monthly",
join: "employee",
summary: "GROUP",
}),
search.createColumn({
name: "internalid",
summary: "COUNT",
label: "Number of Outbound Calls"
}),
search.createColumn({
name: "custentity__number_of_quotes_monthly",
join: "employee",
summary: "GROUP",
}),
search.createColumn({
name: "custentity__online_logins_monthly",
join: "employee",
summary: "GROUP",
}),
search.createColumn({
name: "formulanumeric",
summary: "SUM",
formula: "CASE WHEN {custevent_online_login_set_up}='T' THEN 1 ELSE 0 END",
}),
search.createColumn({
name: "custentity__number_of_opportunities_mont",
join: "employee",
summary: "GROUP",
}),
search.createColumn({
name: "custentity__appointments_set_up_monthly",
join: "employee",
summary: "GROUP",
}),
search.createColumn({
name: "formulanumeric",
summary: "SUM",
formula: "CASE WHEN {custevent_set_up_appt_for_rep_visit}='T' THEN 1 ELSE 0 END",
}),
/*search.createColumn({
name: "custentity__number_of_new_clients",
join: "employee",
summary: "GROUP",
})*/
]
}
phonecallSearchObj = search.create({
type: "phonecall",
filters: filterArr_phone,
columns: columnSearch
});
var getValue = true
var searchResultCount = phonecallSearchObj.runPaged().count;
log.debug("phonecallSearchObj result count", searchResultCount);
if (searchResultCount == 0) {
phonecallSearchObj = main.fetch_employee(filter);
getValue = false;
}
log.debug('filterArr_phone', filterArr_phone)
var Outbound_targetsum = 0;
var Outbound_actualsum = 0;
var quotes_targetsum = 0;
var quotes_actualsum = 0;
var logins_targetsum = 0;
var logins_actualsum = 0;
var opportunities_targetsum = 0;
var opportunities_actualsum = 0;
var Appointment_targetsum = 0;
var Appointment_actualsum = 0;
var clients_targetsum = 0;
var clients_actualsum = 0;
phonecallSearchObj.run().each(function(result) {
var Phonecalldetails_obj = {};
if (getValue == true) {
var Organizer = result.getText(phonecallSearchObj.columns[0]);
Phonecalldetails_obj.Organizer = Organizer;
} else {
var Organizer = result.getValue(phonecallSearchObj.columns[2]);
var ID = result.getValue(phonecallSearchObj.columns[8]);
log.debug(result.getValue(phonecallSearchObj.columns[2]) , result.getValue(phonecallSearchObj.columns[8]))
Phonecalldetails_obj.Organizer = ID + ' ' + Organizer;
}
var Outbound_calls_target = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[1]));
Outbound_targetsum += Number(Outbound_calls_target);
Phonecalldetails_obj.Outbound_calls_target = Outbound_calls_target;
if (getValue == true) {
var Outbound_calls_actual = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[2]));
Outbound_actualsum += Number(Outbound_calls_actual);
Phonecalldetails_obj.Outbound_calls_actual = Outbound_calls_actual;
} else
Phonecalldetails_obj.Outbound_calls_actual = "";
var Organizer_id = result.getValue(phonecallSearchObj.columns[0]);
var Number_quotes_target = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[3]));
quotes_targetsum += Number(Number_quotes_target);
Phonecalldetails_obj.Number_quotes_target = Number_quotes_target;
var Number_quotes_actual = main.assigndefault_value(main.fetch_quotedeatils(Organizer_id, "Quote", filter));
quotes_actualsum += Number(Number_quotes_actual);
Phonecalldetails_obj.Number_quotes_actual = Number_quotes_actual;
var Online_logins_target = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[4]));
logins_targetsum += Number(Online_logins_target);
Phonecalldetails_obj.Online_logins_target = Online_logins_target;
if (getValue == true) {
var Online_logins_actual = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[5]));
logins_actualsum += Number(Online_logins_actual);
Phonecalldetails_obj.Online_logins_actual = Online_logins_actual;
} else
Phonecalldetails_obj.Online_logins_actual = "";
var Number_opportunities_target = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[6]));
opportunities_targetsum += Number(Number_opportunities_target);
Phonecalldetails_obj.Number_opportunities_target = Number_opportunities_target;
var Number_opportunities_actual = main.assigndefault_value(main.fetch_quotedeatils(Organizer_id, "Opportunity", filter));
opportunities_actualsum += Number(Number_opportunities_actual);
Phonecalldetails_obj.Number_opportunities_actual = Number_opportunities_actual;
var Appointment_setup_target = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[7]));
Appointment_targetsum += Number(Appointment_setup_target);
Phonecalldetails_obj.Appointment_setup_target = Appointment_setup_target;
if (getValue == true) {
var Appointment_setup_actual = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[8]));
Appointment_actualsum += Number(Appointment_setup_actual);
Phonecalldetails_obj.Appointment_setup_actual = Appointment_setup_actual;
} else
Phonecalldetails_obj.Appointment_setup_actual = "";
/* var Number_clients_target = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[9]));
clients_targetsum += Number(Number_clients_target);
Phonecalldetails_obj.Number_clients_target = Number_clients_target;
var Number_clients_actual = main.assigndefault_value(main.fetch_customerdeatils(Organizer_id, filter));
clients_actualsum += Number(Number_clients_actual);
Phonecalldetails_obj.Number_clients_actual = Number_clients_actual;*/
Phonecalldetails_array.push(Phonecalldetails_obj);
return true;
});
ITEM_OBJ.date_filter = filter;
ITEM_OBJ.items = Phonecalldetails_array;
ITEM_OBJ.Outbound_targetsum = Number(Outbound_targetsum);
ITEM_OBJ.Outbound_actualsum = Number(Outbound_actualsum);
ITEM_OBJ.quotes_targetsum = Number(quotes_targetsum);
ITEM_OBJ.quotes_actualsum = Number(quotes_actualsum);
ITEM_OBJ.logins_targetsum = Number(logins_targetsum);
ITEM_OBJ.logins_actualsum = Number(logins_actualsum);
ITEM_OBJ.opportunities_targetsum = Number(opportunities_targetsum);
ITEM_OBJ.opportunities_actualsum = Number(opportunities_actualsum);
ITEM_OBJ.Appointment_targetsum = Number(Appointment_targetsum);
ITEM_OBJ.Appointment_actualsum = Number(Appointment_actualsum);
/* ITEM_OBJ.clients_targetsum = Number(clients_targetsum);
ITEM_OBJ.clients_actualsum = Number(clients_actualsum);*/
file.create({
name: 'arrayFile.json',
fileType: file.Type.JSON,
contents: JSON.stringify(ITEM_OBJ),
folder: -15
}).save();
ITEM_OBJ.items1 = JSON.stringify(Phonecalldetails_array);
return ITEM_OBJ;
},
fetch_employee: function(type) {
if (!type ||type == 'daily') {
var employeeSearchObj = search.create({
type: "employee",
filters: [
["salesrole", "anyof", "-2"],
"AND",
[
[
["custentity__appointments_set_up", "isnotempty", ""]
], "OR", [
["custentity__number_of_opportunities", "isnotempty", ""]
], "OR", [
["custentity__online_logins", "isnotempty", ""]
], "OR", [
["custentity__number_of_quotes", "isnotempty", ""]
], "OR", [
["custentity__outbound_call", "isnotempty", ""]
]
]
],
columns: [
search.createColumn({ name: "internalid", label: "Internal ID" }),
search.createColumn({ name: "custentity__outbound_call", label: "Number of Outbound calls (Daily Target)" }),
search.createColumn({ name: "altname", label: "Name" }),
search.createColumn({ name: "custentity__number_of_quotes", label: "Number of Quotes (Daily Target)" }),
search.createColumn({ name: "custentity__online_logins", label: "Number of Online Logins (Daily Target)" }),
search.createColumn({ name: "datecreated", label: "Date Created" }),
search.createColumn({ name: "custentity__number_of_opportunities", label: "Number of Opportunities (Daily Target)" }),
search.createColumn({ name: "custentity__appointments_set_up", label: "Number of Appointments set up (Daily Target)" }),
search.createColumn({ name: "entityid", label: "ID" }),
]
});
var searchResultCount = employeeSearchObj.runPaged().count;
log.debug("employeeSearchObj result count", searchResultCount);
return employeeSearchObj
} else if (type == 'weekly') {
var employeeSearchObj = search.create({
type: "employee",
filters: [
["salesrole", "anyof", "-2"],
"AND",
[
[
["custentity__appointments_set_up_weekly", "isnotempty", ""]
], "OR", [
["custentity__number_of_opportunities_week", "isnotempty", ""]
], "OR", [
["custentity__online_logins_weekly", "isnotempty", ""]
], "OR", [
["custentity__number_of_quotes_weekly", "isnotempty", ""]
], "OR", [
["custentity__outbound_call_weekly", "isnotempty", ""]
]
]
],
columns: [
search.createColumn({ name: "internalid", label: "Internal ID" }),
search.createColumn({ name: "custentity__outbound_call_weekly", label: "Number of Outbound calls (Daily Target)" }),
search.createColumn({ name: "altname", label: "Name" }),
search.createColumn({ name: "custentity__number_of_quotes_weekly", label: "Number of Quotes (Daily Target)" }),
search.createColumn({ name: "custentity__online_logins_weekly", label: "Number of Online Logins (Daily Target)" }),
search.createColumn({ name: "datecreated", label: "Date Created" }),
search.createColumn({ name: "custentity__number_of_opportunities_week", label: "Number of Opportunities (Daily Target)" }),
search.createColumn({ name: "custentity__appointments_set_up_weekly", label: "Number of Appointments set up (Daily Target)" }),
search.createColumn({
name: "entityid",
sort: search.Sort.ASC,
label: "ID"
}),
]
});
var searchResultCount = employeeSearchObj.runPaged().count;
log.debug("employeeSearchObj result count", searchResultCount);
return employeeSearchObj
} else if (type == 'monthly') {
var employeeSearchObj = search.create({
type: "employee",
filters: [
["salesrole", "anyof", "-2"],
"AND",
[
[
["custentity__appointments_set_up_monthly", "isnotempty", ""]
], "OR", [
["custentity__number_of_opportunities_mont", "isnotempty", ""]
], "OR", [
["custentity__online_logins_monthly", "isnotempty", ""]
], "OR", [
["custentity__number_of_quotes_monthly", "isnotempty", ""]
], "OR", [
["custentity__outbound_call_monthly", "isnotempty", ""]
]
]
],
columns: [
search.createColumn({ name: "internalid", label: "Internal ID" }),
search.createColumn({ name: "custentity__outbound_call_monthly", label: "Number of Outbound calls (Daily Target)" }),
search.createColumn({ name: "altname", label: "Name" }),
search.createColumn({ name: "custentity__number_of_quotes_monthly", label: "Number of Quotes (Daily Target)" }),
search.createColumn({ name: "custentity__online_logins_monthly", label: "Number of Online Logins (Daily Target)" }),
search.createColumn({ name: "datecreated", label: "Date Created" }),
search.createColumn({ name: "custentity__number_of_opportunities_mont", label: "Number of Opportunities (Daily Target)" }),
search.createColumn({ name: "custentity__appointments_set_up_monthly", label: "Number of Appointments set up (Daily Target)" }),
search.createColumn({
name: "entityid",
sort: search.Sort.ASC,
label: "ID"
}),
]
});
var searchResultCount = employeeSearchObj.runPaged().count;
log.debug("employeeSearchObj result count", searchResultCount);
return employeeSearchObj
}
},
fetch_quotedeatils: function(Organizer_id, type, filter) {
var filterArr = [];
var Number_quotes;
if (type == "Opportunity") {
filterArr.push(["type", "anyof", "Opprtnty"]);
filterArr.push("AND");
filterArr.push(["salesrep", "anyof", Organizer_id]);
filterArr.push("AND");
if (!filter || filter == "daily") {
/*log.debug("Opportunityentered1");*/
filterArr.push(["trandate", "within", "today"]);
} else if (filter == "weekly") {
/*log.debug("Opportunityentered2");*/
filterArr.push(["trandate", "within", "thisweek"]);
} else if (filter == "monthly") {
/*log.debug("Opportunityentered3");*/
filterArr.push(["trandate", "within", "thismonth"]);
}
} else if (type == "Quote") {
filterArr.push(["type", "anyof", "Estimate"]);
filterArr.push("AND");
filterArr.push(["salesrep", "anyof", Organizer_id]);
filterArr.push("AND");
if (!filter || filter == "daily") {
/*log.debug("Quoteentered1");*/
filterArr.push(["trandate", "within", "today"]);
} else if (filter == "weekly") {
/*log.debug("Quoteentered2");*/
filterArr.push(["trandate", "within", "thisweek"]);
} else if (filter == "monthly") {
/* log.debug("Quoteentered3");*/
filterArr.push(["trandate", "within", "thismonth"]);
}
}
var estimateSearchObj = search.create({
type: "transaction",
filters: filterArr,
columns: [
search.createColumn({
name: "internalid",
summary: "COUNT",
})
]
})
var searchResultCount = estimateSearchObj.runPaged().count;
/*log.debug("estimateSearchObj result count", searchResultCount);*/
estimateSearchObj.run().each(function(result) {
Number_quotes = result.getValue(estimateSearchObj.columns[0]);
return true;
});
return Number_quotes;
},
fetch_customerdeatils: function(Organizer_id, filter) {
var filterArr_customer = []
var Number_clients;
filterArr_customer.push(["salesrep", "anyof", Organizer_id]);
filterArr_customer.push("AND");
if (!filter || filter == "daily") {
log.debug("customerentered1");
filterArr_customer.push(["datecreated", "within", "today"]);
} else if (filter == "weekly") {
log.debug("customerentered2");
filterArr_customer.push(["datecreated", "within", "thisweek"]);
} else if (filter == "monthly") {
/*log.debug("customerentered3");*/
filterArr_customer.push(["datecreated", "within", "thismonth"]);
}
var customerSearchObj = search.create({
type: "customer",
filters: filterArr_customer,
columns: [
search.createColumn({
name: "internalid",
summary: "COUNT",
label: "Number New Clients"
})
]
});
var searchResultCount = customerSearchObj.runPaged().count;
/*log.debug("customerSearchObj result count", searchResultCount);*/
customerSearchObj.run().each(function(result) {
Number_clients = result.getValue(customerSearchObj.columns[0]);
return true;
});
return Number_clients;
},
assigndefault_value: function(parameter) {
if (parameter !== "" && parameter !== null && parameter !== undefined && parameter !== false && parameter !== "null" && parameter !== "undefined" && parameter !== 'false' &&
parameter !== " " && parameter !== Infinity && parameter !== "- None -" && parameter !== "0") {
return parameter;
} else {
parameter = "";
return parameter;
}
}
}
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;
});