Clients need a commission report based on the item and salesperson in an invoice record.
We have provided a solution using custom record entries. In an invoice for each item and sales team combination we will create a custom record entry and the data on the custom record entry will be displayed in the suitelet report
Suitelet
/**
* @NApiVersion 2.1
* @NScriptType Suitelet
*/
/************************************************************************************************
* * Suitelet **
* * To view the Payments Received/Paid Report **
* * VCPRL-32 : Payments Received/Paid Report **
*
* **********************************************************************************************
*
* Author: Jobin and Jismi
*
* Date Created : 29 June 2022
*
* Created By: Athul Krishna, Jobin and Jismi
*
* Description :
*
* REVISION HISTORY
*
*
*
*
***********************************************************************************************/
define([
"N/log",
"N/record",
"N/task",
"N/ui/serverWidget",
"N/util",
"N/url",
"N/runtime",
"../Library/JJ CM NS Utility.js",
"../Model/JJ CM Resolver Model.js",
"../Excel Template/JJ CM Resolver Template",
]
/**
* @param{log} log
* @param{record} record
* @param{task} task
* @param{serverWidget} serverWidget
* @param{util} util
* @param{url} url
* @param{runtime} runtime
* @param{jjUtil} jjUtil
* @param{modelResolver} modelResolver
* @param{templateResolver} templateResolver
*/, (
log,
record,
task,
serverWidget,
util,
url,
runtime,
jjUtil,
modelResolver,
templateResolver,
) => {
let fetchModel;
let templateFetch;
const PAGE_SIZE = 1000;
const DEFAULT_SUBSIDIARY = "ALL";
/**
* To generate Date String on the format YYYY-MM-DD
* @param {Date} dateObj - javascript Date Object
*/
const generateDateString = function (dateObj) {
return (
dateObj.getFullYear() +
"-" +
(dateObj.getMonth() + 1) +
"-" +
dateObj.getDate()
);
};
const form = {
/**
* to refer suitelet form object
*/
formObj: null,
/**
* repository to refer all buttons
*/
buttons: {},
/**
* repository to refer all body fields
*/
bodyFields: {},
/**
* repository to refer all sublists
*/
subLists: {},
/**
* repository to refer all fieldgroups
*/
fieldGroups: {},
subtab:{},
init(formObj) {
this.formObj = formObj;
},
setformFieldProperty(field, propObj) {
const setFieldProp = {
updateLayoutType: function (field, value) {
field.updateLayoutType({
layoutType: value,
});
},
updateBreakType: function (field, value) {
field.updateBreakType({
breakType: value,
});
},
updateDisplayType: function (field, value) {
field.updateDisplayType({
displayType: value,
});
},
setHelpText: function (field, value) {
field.setHelpText({
help: value,
});
},
isMandatory: function (field, value) {
field.isMandatory = value;
},
defaultValue: function (field, value) {
field.defaultValue = value;
},
};
for (let prop in propObj)
if (propObj[prop]) setFieldProp[prop](field, propObj[prop]);
},
/**
* To set buttons in the Suitelet form
*/
setBodyButtons() {
let formObj = form.formObj;
form.buttons.custpage_btn_export = formObj.addButton({
id: "custpage_btn_export",
label: "Download",
functionName: "triggerExport",
});
form.buttons.custpage_btn_search = formObj.addButton({
id: "custpage_btn_search",
label: "Search",
functionName: 'triggerSearch',
});
},
/**
* To set body fields in the Suitelet form
*/
setBodyFields() {
let formObj = form.formObj;
//Inline HTML Field (Hidden)
form.bodyFields.custpage_field_hidden_inlinehtml = formObj.addField({
id: "custpage_field_hidden_inlinehtml",
type: serverWidget.FieldType.INLINEHTML,
label: "Inline HTML",
});
form.setformFieldProperty(
form.bodyFields.custpage_field_hidden_inlinehtml,
{
setHelpText: "Inline HTML",
isMandatory: true,
defaultValue: `<script>
window.ns_screenfields_suiteletform = window.ns_screenfields_suiteletform || {};
window.ns_screenfields_suiteletform.suiteletFormUrl = "${url.resolveScript(
{
scriptId: "customscript_jj_sl_commi_report_ahap60",
deploymentId: "customdeploy_jj_sl_commi_report_ahap60",
}
)}";
</script>`,
}
);
//Field Group
form.fieldGroups.custpage_group_filter = formObj.addFieldGroup({
id: "custpage_group_filter",
label: "Filter",
});
//form.fieldGroups.custpage_group_filter.isSingleColumn = true;
//Sales Person
let currentUser=runtime.getCurrentUser().id
let name= runtime.getCurrentUser().name
let currentRole=runtime.getCurrentUser().role
log.debug("current Role",currentRole)
log.debug("Current User",currentUser)
log.debug("Current",runtime.getCurrentUser())
// if(currentRole==='3'|| currentRole===3){
// form.bodyFields.custpage_filter_salesperson = formObj.addField({
// id: "custpage_filter_salesperson",
// label: "SalesPerson",
// type: serverWidget.FieldType.SELECT,
// source: 'employee',
// container: "custpage_group_filter",
// });
// }else {
form.bodyFields.custpage_filter_salesperson = formObj.addField({
id: "custpage_filter_salesperson",
label: "SalesPerson",
type: serverWidget.FieldType.SELECT,
//source: 'subsidiary',
container: "custpage_group_filter",
});
const salesPersonSavedSearchResult = fetchModel.models.fetchSalesPerson({
filterConfig: {},
searchConfig: {
PAGE_INDEX: false,
PAGE_SIZE: 1000,
},
role: currentRole,
user: currentUser
});
if(currentRole==='3'|| currentRole===3 || currentRole===1099 ||currentRole==='1099' || currentRole==1038 || currentRole=='1038') {
form.bodyFields.custpage_filter_salesperson.addSelectOption({
value: currentUser,
text: name,
//isSelected: true,
});
for (let elem of salesPersonSavedSearchResult) {
form.bodyFields.custpage_filter_salesperson.addSelectOption({
value: elem?.["Internal ID"].value,
text: elem?.["Name"].value,
//isSelected: true,
});
}
}
if(currentRole==1057 || currentRole==1045 || currentRole==1060){
form.bodyFields.custpage_filter_salesperson.addSelectOption({
value: currentUser,
text: name,
//isSelected: true,
});
}
if(currentRole==1088 || currentRole==1046 || currentRole==1055 || currentRole==1058){
form.bodyFields.custpage_filter_salesperson.addSelectOption({
value: currentUser,
text: name,
//isSelected: true,
});
}
// }
form.setformFieldProperty(form.bodyFields.custpage_filter_salesperson, {
// updateLayoutType: serverWidget.FieldLayoutType.STARTROW,
setHelpText: "Choose SalesPerson",
isMandatory: true,
defaultValue:
exports.parameters?.custpage_filter_salesperson || DEFAULT_SUBSIDIARY,
});
//Location
const locationSavedSearchResult = fetchModel.models.fetchLocation({
filterConfig: {},
searchConfig: {
PAGE_INDEX: false,
PAGE_SIZE: 1000,
},
role: currentRole,
user: currentUser,
});
//if(currentRole==='3'|| currentRole===3) {
// form.bodyFields.custpage_filter_location = formObj.addField({
// id: "custpage_filter_location",
// label: "Location",
// type: serverWidget.FieldType.SELECT,
// source: 'location',
// container: "custpage_group_filter",
// });
//}else {
form.bodyFields.custpage_filter_location = formObj.addField({
id: "custpage_filter_location",
label: "Location",
type: serverWidget.FieldType.SELECT,
// source: 'location',
container: "custpage_group_filter",
});
//if(currentRole==='3'|| currentRole===3) {
form.bodyFields.custpage_filter_location.addSelectOption({
value: "ALL",
text: "- All -",
//isSelected: true,
});
//}
for (let elem of locationSavedSearchResult) {
form.bodyFields.custpage_filter_location.addSelectOption({
value: elem?.["Internal ID"].value,
text: elem?.["Name"].value,
//isSelected: true,
});
}
//}
form.setformFieldProperty(form.bodyFields.custpage_filter_location, {
// updateLayoutType: serverWidget.FieldLayoutType.STARTROW,
setHelpText: "Choose Location",
isMandatory: true,
defaultValue: exports.parameters?.custpage_filter_location || "ALL",
});
//Vendor
// const vendorSavedSearchResult = fetchModel.models.fetchVendor({
// filterConfig: {},
// searchConfig: {
// PAGE_INDEX: false,
// PAGE_SIZE: 1000,
// },
// });
form.bodyFields.custpage_filter_start_date = formObj.addField({
id: "custpage_filter_start_date",
label: "Start Date",
type: serverWidget.FieldType.DATE,
container: "custpage_group_filter",
});
form.setformFieldProperty(form.bodyFields.custpage_filter_start_date, {
// updateLayoutType: serverWidget.FieldLayoutType.STARTROW,
setHelpText: "Choose Start Date",
isMandatory: true,
defaultValue: exports.parameters?.custpage_filter_start_date || new Date()
});
form.bodyFields.custpage_filter_end_date = formObj.addField({
id: "custpage_filter_end_date",
label: "End Date",
type: serverWidget.FieldType.DATE,
container: "custpage_group_filter",
});
form.setformFieldProperty(form.bodyFields.custpage_filter_end_date, {
// updateLayoutType: serverWidget.FieldLayoutType.STARTROW,
setHelpText: "Choose End Date",
isMandatory: true,
defaultValue: exports.parameters?.custpage_filter_end_date || new Date()
});
form.bodyFields.custpage_total_commission = formObj.addField({
id: "custpage_total_commission",
label: "Total Commission",
type: serverWidget.FieldType.TEXT,
container: "custpage_group_filter",
});
form.setformFieldProperty(form.bodyFields.custpage_total_commission, {
// updateLayoutType: serverWidget.FieldLayoutType.STARTROW,
setHelpText: "Total Commission",
isMandatory: false,
updateDisplayType: serverWidget.FieldDisplayType.DISABLED,
});
// form.bodyFields.custpage_total_commission.updateDisplayType=serverWidget.FieldDisplayType.DISABLED
},
/**
* To set the sublist in the Suitelet form
*/
setSublistFields() {
form.subtab.custpage_sub_tab=form.formObj.addSubtab({id: 'custpage_tab',label: 'Commission Report'});
form.subLists.custpage_subl_report = form.formObj.addSublist({
id: "custpage_subl_report",
type: serverWidget.SublistType.LIST,
label: "Commission Report",
});
// custpage_subl_report = form.subLists.custpage_subl_report;
const columnMap = {
SalesPerson: {
id: "custpage_salesperson",
label: "Sales Person",
type: serverWidget.FieldType.TEXT,
},
TranDate: {
id: "custpage_tran_date",
label: "Transaction Date",
type: serverWidget.FieldType.DATE,
},
ScheduledDate: {
id: "custpage_sched_date",
label: "Delivery Date",
type: serverWidget.FieldType.DATE,
},
ProductNumber: {
id: "custpage_product_number",
label: "Product Number",
type: serverWidget.FieldType.TEXT,
},
Quantity:{
id: "custpage_quantity",
label: "Quantity",
type: serverWidget.FieldType.TEXT,
},
Brand: {
id: "custpage_brand",
label: "Brand",
type: serverWidget.FieldType.TEXT,
},
Parent:{
id: "custpage_parent_class",
label: "Parent Class",
type: serverWidget.FieldType.TEXT,
},
Class:{
id: "custpage_class",
label: "Class",
type: serverWidget.FieldType.TEXT,
},
Status:{
id: "custpage_status",
label: "Status",
type: serverWidget.FieldType.TEXT,
},
OpenBox:{
id: "custpage_open_box",
label: "Open Box/Display",
type: serverWidget.FieldType.TEXT,
},
InvoiceNumber: {
id: "custpage_total_invoice_number",
label: "Invoice Number",
type: serverWidget.FieldType.TEXT,
},
InvoiceType:{
id: "custpage_invoice_type",
label: "Invoice Type",
type: serverWidget.FieldType.TEXT,
},
ParentRecord: {
id: "custpage_parent_record",
label: "Parent Record",
type: serverWidget.FieldType.TEXT,
},
ParentDate:{
id: "custpage_parent_date",
label: "Parent Tran Date",
type: serverWidget.FieldType.DATE,
},
UnitPrice: {
id: "custpage_unit_price",
label: "Sales Amount",
type: serverWidget.FieldType.TEXT,
},
SalesInvoiceCost: {
id: "custpage_total_cost",
label: "SALES INVOICE COST",
type: serverWidget.FieldType.TEXT,
},
Rebate: {
id: "custpage_rebate",
label: "Rebate Amount",
type: serverWidget.FieldType.TEXT,
},
TotalMargin: {
id: "custpage_total_margin",
label: "GP AMT AFTER REBATES",
type: serverWidget.FieldType.TEXT,
},
MarginPercentage: {
id: "custpage_margin_percentage",
label: "GP % AFTER REBATES",
type: serverWidget.FieldType.TEXT,
},
// PreLocCalculation: {
// id: "custpage_pre_loc_calculation",
// label: "Pre-Loc Calculated Commission",
// type: serverWidget.FieldType.TEXT,
// },
LocationCalculation: {
id: "custpage_location_calculation",
label: "Calculated Commission",
type: serverWidget.FieldType.TEXT,
},
Contribution: {
id: "custpage_contribution",
label: "Contribution %",
type: serverWidget.FieldType.TEXT,
},
SalesLocation: {
id: "custpage_sales_location",
label: "Sales Location",
type: serverWidget.FieldType.TEXT,
},
// GpAmountExpected:{
// id: "custpage_gp_amnt_expect",
// label: "GP Amount Expected",
// type: serverWidget.FieldType.TEXT,
// },
// GpPercentExpected:{
// id: "custpage_gp_per_expect",
// label: "GP % Expected",
// type: serverWidget.FieldType.TEXT,
// },
//
// CommissionExpected:{
// id: "custpage_commission_expect",
// label: "Commission Expected",
// type: serverWidget.FieldType.TEXT,
// },
};
let currentRole1=runtime.getCurrentUser().role
for (let column in columnMap) {
if ((currentRole1 == 1045 || currentRole1==1057) && (column == 'SalesInvoiceCost' || column == 'Rebate' )) {
} else {
form.subLists.custpage_subl_report.addField({
id: columnMap[column].id,
label: columnMap[column].label,
type: columnMap[column].type,
align: serverWidget.LayoutJustification.LEFT,
});
}
}
const runSearchResult = fetchModel.models.runSearch({
filterConfig: {
salesPerson: exports.parameters?.custpage_filter_salesperson
? exports.parameters?.custpage_filter_salesperson === "ALL"
? false
: exports.parameters?.custpage_filter_salesperson
: false,
location: exports.parameters?.custpage_filter_location_formatted
? exports.parameters?.custpage_filter_location_formatted === "ALL"
? false
: exports.parameters?.custpage_filter_location_formatted
: false,
startDate: exports.parameters?.custpage_filter_start_date
? exports.parameters?.custpage_filter_start_date === "ALL"
? false
: exports.parameters?.custpage_filter_start_date
: false,
endDate: exports.parameters?.custpage_filter_end_date
? exports.parameters?.custpage_filter_end_date === "ALL"
? false
: exports.parameters?.custpage_filter_end_date
: false,
},
searchConfig: {},
});
log.debug("Run Search Result In Suitelet Page",runSearchResult)
// const fetchTotalPayable = fetchModel.models.fetchTotalPayable({
// filterConfig: {},
// searchConfig: {},
// });
let total=0.00;
if (runSearchResult?.length) {
for (
let index = 0, len = runSearchResult.length;
index < len;
index++
)
for (let key in columnMap)
if((key=='ScheduledDate'&&runSearchResult[index][key]=='' )||(key=='ParentDate'&&runSearchResult[index][key]=='')){
}else {
if(key=='LocationCalculation' && runSearchResult[index][key]<0) {
form.subLists.custpage_subl_report.setSublistValue({
id: columnMap[key].id,
line: index,
value:
index == len
? `<p style="color: #ff0000;">${jjUtil.assignDefaultValue(
runSearchResult[index][key],
runSearchResult[index][key]
)}</p>` || "---"
:`<p style="color: #ff0000;">${ jjUtil.assignDefaultValue(
runSearchResult[index][key],
runSearchResult[index][key]
) }</p>`|| " ",
});
}
else if((key=='UnitPrice'|| key=='SalesInvoiceCost'|| key=='TotalMargin'||key=='MarginPercentage') && runSearchResult[index]['InvoiceNumber'].includes('CM') ) {
form.subLists.custpage_subl_report.setSublistValue({
id: columnMap[key].id,
line: index,
value:
index == len
? `<p style="color: #ff0000;">${jjUtil.assignDefaultValue(
runSearchResult[index][key],
runSearchResult[index][key]
)}</p>` || "---"
:`<p style="color: #ff0000;">${ jjUtil.assignDefaultValue(
runSearchResult[index][key],
runSearchResult[index][key]
) }</p>`|| " ",
});
}
else {
form.subLists.custpage_subl_report.setSublistValue({
id: columnMap[key].id,
line: index,
value:
index == len
? jjUtil.assignDefaultValue(
runSearchResult[index][key],
runSearchResult[index][key]
) || "---"
: jjUtil.assignDefaultValue(
runSearchResult[index][key],
runSearchResult[index][key]
) || " ",
});
}
if(key=='LocationCalculation'){
total=total+parseFloat(runSearchResult[index][key])
}
}
}
log.debug("total",total)
form.setformFieldProperty(form.bodyFields.custpage_total_commission, {
// updateLayoutType: serverWidget.FieldLayoutType.STARTROW,
defaultValue: parseFloat(total).toFixed(2)
});
},
generateForm() {
log.debug("generateForm", "generateForm");
//Initialize Suitelet Form
form.init(
serverWidget.createForm({
title: "Commission Report",
})
);
//Associate Client Script with Suitelet
form.formObj.clientScriptModulePath =
"./JJ CS Commission Report AHAP-60.js";
//Set Body Buttons
form.setBodyButtons();
//Set Body Fields
form.setBodyFields();
//Set Sublist Fields
form.setSublistFields();
return this.formObj;
},
};
jjUtil.applyTryCatch(
form,
"JJ SL Commission VCPRL-32.js, form"
);
const exports = {
context: "",
method: "",
parameters: {
custpage_filter_salesperson: "",
custpage_filter_location: "",
custpage_filter_start_date: "",
custpage_filter_end_date: "",
custpage_filter_start_date_formatted: "",
custpage_filter_end_date_formatted: "",
custpage_filter_location_formatted: "",
custpage_filter_pageindex: "",
custpage_filter_salesperson_formatted: "",
toBeDownloaded: false,
toBeScheduled: false,
},
body: "",
/**
* To initialise the
* @param {Object} scriptContext
* @param {ServerRequest} scriptContext.request - Incoming request
* @param {ServerResponse} scriptContext.response - Suitelet response
* @since 2015.2
*/
init(scriptContext) {
this.context = scriptContext;
this.method = scriptContext.request.method;
this.parameters = scriptContext.request.parameters;
this.body = scriptContext.request.body;
},
/**
* To initiate the direct report process export
* @returns {Boolean}
*/
toBeDownloaded() {
fetchModel = modelResolver.modelFetch("COMMISSION_REPORT");
const runSearchResult = fetchModel.models.runSearch({
filterConfig: {
salesPerson: exports.parameters?.custpage_filter_salesperson
? exports.parameters?.custpage_filter_salesperson === "ALL"
? false
: exports.parameters?.custpage_filter_salesperson
: false,
location: exports.parameters?.custpage_filter_location_formatted
? exports.parameters?.custpage_filter_location_formatted === "ALL"
? false
: exports.parameters?.custpage_filter_location_formatted
: false,
startDate: exports.parameters?.custpage_filter_start_date
? exports.parameters?.custpage_filter_start_date === "ALL"
? false
: exports.parameters?.custpage_filter_start_date
: false,
endDate: exports.parameters?.custpage_filter_end_date
? exports.parameters?.custpage_filter_end_date === "ALL"
? false
: exports.parameters?.custpage_filter_end_date
: false,
},
searchConfig: {},
});
log.debug("Run Search Result In Download",runSearchResult)
/*const vendorsList = [];
const modelSearchResult = [];
if (
exports.parameters?.custpage_filter_vendor &&
exports.parameters?.custpage_filter_vendor !== "ALL"
) {
vendorsList.push(exports.parameters?.custpage_filter_vendor);
} else {
const searchResult = fetchModel.models.fetchVendors({
filterConfig: {
subsidiary: exports.parameters?.custpage_filter_subsidiary
? exports.parameters?.custpage_filter_subsidiary === "ALL"
? false
: exports.parameters?.custpage_filter_subsidiary
: false,
market: exports.parameters?.custpage_filter_department
? exports.parameters?.custpage_filter_department === "ALL"
? false
: exports.parameters?.custpage_filter_department
: false,
quarter: exports.parameters?.custpage_filter_period_of_quarter
? exports.parameters?.custpage_filter_period_of_quarter === "ALL"
? false
: exports.parameters?.custpage_filter_period_of_quarter
: false,
year: exports.parameters?.custpage_filter_period_of_year
? exports.parameters?.custpage_filter_period_of_year === "ALL"
? false
: exports.parameters?.custpage_filter_period_of_year
: false,
isClosed: exports.parameters?.custpage_filter_isclosed
? exports.parameters?.custpage_filter_isclosed === "EITHER"
? false
: exports.parameters?.custpage_filter_isclosed
: false,
},
searchConfig: {
PAGE_INDEX:
Number(exports.parameters?.custpage_filter_pageindex) || 1,
PAGE_SIZE: PAGE_SIZE,
},
});
searchResult?.lines?.forEach((el) => {
if (el.VendorID.value !== "- None -") {
vendorsList.push(el.VendorID.value);
}
});
}
const runSearchResult = fetchModel.models.runSearch({
filterConfig: {
subsidiary: exports.parameters?.custpage_filter_subsidiary
? exports.parameters?.custpage_filter_subsidiary === "ALL"
? false
: exports.parameters?.custpage_filter_subsidiary
: false,
market: exports.parameters?.custpage_filter_department
? exports.parameters?.custpage_filter_department === "ALL"
? false
: exports.parameters?.custpage_filter_department
: false,
quarter: exports.parameters?.custpage_filter_period_of_quarter
? exports.parameters?.custpage_filter_period_of_quarter === "ALL"
? false
: exports.parameters?.custpage_filter_period_of_quarter
: false,
year: exports.parameters?.custpage_filter_period_of_year
? exports.parameters?.custpage_filter_period_of_year === "ALL"
? false
: exports.parameters?.custpage_filter_period_of_year
: false,
buyer: exports.parameters?.custpage_filter_buyer
? exports.parameters?.custpage_filter_buyer === "ALL"
? false
: exports.parameters?.custpage_filter_buyer
: false,
isClosed: exports.parameters?.custpage_filter_isclosed
? exports.parameters?.custpage_filter_isclosed === "EITHER"
? false
: exports.parameters?.custpage_filter_isclosed
: false,
vendorsList: vendorsList,
},
searchConfig: {},
});
const fetchTotalPayable = fetchModel.models.fetchTotalPayable({
filterConfig: {},
searchConfig: {},
});
for (let key in runSearchResult) {
if (runSearchResult[key]) {
let tempArray = [...new Set(runSearchResult[key]["poId"])];
let total = "0.00";
tempArray.forEach((el) => {
if (fetchTotalPayable[el]) {
total = parseFloat(total) + parseFloat(fetchTotalPayable[el]);
}
});
runSearchResult[key]["TotalPayable"] = total;
runSearchResult[key]["Difference"] =
parseFloat(runSearchResult[key]["TotalReceivable"]) -
parseFloat(runSearchResult[key]["TotalPayable"]);
delete runSearchResult[key]["poId"];
modelSearchResult.push(runSearchResult[key]);
}
}*/
templateFetch = templateResolver.templateFetch(
"ITEM PRICING REPORT"
);
log.debug("templateFetch",templateFetch)
let renderObj = templateFetch.templateRender.init();
log.debug("after")
templateFetch.templateRender.addCustomDataSource(renderObj, {
header: {
salesPerson: exports.parameters?.custpage_filetr_sale
? exports.parameters?.custpage_filetr_sale
: "ALL",
location: exports.parameters?.custpage_filter_location_formatted
? exports.parameters?.custpage_filter_location_formatted
: "ALL",
startDate: exports.parameters?.custpage_filter_start_date
? exports.parameters?.custpage_filter_start_date
: "ALL",
endDate: exports.parameters?.custpage_filter_end_date
? exports.parameters?.custpage_filter_end_date
: "ALL",
/*buyer: exports.parameters?.custpage_filter_buyer_formatted
? exports.parameters?.custpage_filter_buyer_formatted
: "ALL",
vendor: exports.parameters?.custpage_filter_vendor_formatted
? exports.parameters?.custpage_filter_vendor_formatted
: "ALL",
isClosed: exports.parameters?.custpage_filter_isclosed
? exports.parameters?.custpage_filter_isclosed
: "Either",*/
},
lines: runSearchResult,
summary: {},
});
let objXlsFile = templateFetch.templateRender.renderAsExcel(renderObj, {
filename: "",
});
return {
status: "EXPORT_SUCCESS",
value: objXlsFile,
};
},
/**
* To initiate the schedule process for report export
* @returns {Boolean}
*/
toBeScheduled() {
},
/**
* Defines the Suitelet script trigger point.
* @param {Object} scriptContext
* @param {ServerRequest} scriptContext.request - Incoming request
* @param {ServerResponse} scriptContext.response - Suitelet response
* @returns {Boolean}
* @since 2015.2
*/
onRequest(scriptContext) {
try {
//Initialize Suitelet
exports.init(scriptContext);
if (this.method == "POST") {
log.debug("In Post",exports.parameters.toBeDownloaded)
if (exports.parameters.toBeDownloaded == "true") {
log.debug("Inside Second IF")
let handleExportRequest = exports.toBeDownloaded();
log.debug("handleExportRequest",handleExportRequest)
if (
handleExportRequest &&
handleExportRequest.status == "EXPORT_SUCCESS"
) {
return (
exports.context.response.writeFile({
file: handleExportRequest.value,
}),
false
);
} else if (
handleExportRequest &&
handleExportRequest.status == "CANNOT_EXPORT_CAN_SCHEDULE"
) {
return (
exports.context.response.write("CANNOT_EXPORT_CAN_SCHEDULE"),
false
);
} else if (
handleExportRequest &&
handleExportRequest.status == "CANNOT_EXPORT_CANNOT_SCHEDULE"
) {
return (
exports.context.response.write("CANNOT_EXPORT_CANNOT_SCHEDULE"),
false
);
} else {
return (
exports.context.response.write("SOMETHING_WENT_WRONG"), false
);
}
} else if (exports.parameters.toBeScheduled == "true") {
let handleScheduleRequest = exports.toBeScheduled();
if (handleScheduleRequest) {
return exports.context.response.write("REPORT_SCHEDULED"), true;
} else {
return (
exports.context.response.write("REPORT_CANNOT_BE_SCHEDULED"),
true
);
}
} else {
return (
exports.context.response.write("ACTION_NOT_SPECIFIED"), false
);
}
} else
if (this.method == "GET") {
log.debug("exports.parameters", exports.parameters);
fetchModel = modelResolver.modelFetch("COMMISSION_REPORT");
const suiteletForm = form.generateForm();
if (suiteletForm)
return exports.context.response.writePage(suiteletForm), true;
return exports.context.response.write("SOMETHING_WENT_WRONG"), false;
}
return exports.context.response.write("SOMETHING_WENT_WRONG"), false;
} catch (err) {
log.error("err@suiteletForm", err);
return exports.context.response.write("SOMETHING_WENT_WRONG"), false;
}
},
};
return exports;
});
Client Script
/**
* @NApiVersion 2.x
* @NScriptType ClientScript
* @NModuleScope SameAccount
*/
/************************************************************************************************
* * ClientScript **
* * To view the Commission Report **
* * AHAP-60 : Commission Report **
*
* **********************************************************************************************
*
* Author: Jobin and Jismi
*
* Date Created : 26 September 2022
*
* Created By: Athul Krishna, Jobin and Jismi
*
* Description :
*
* REVISION HISTORY
*
*
*
*
***********************************************************************************************/
define(["N/currentRecord", "N/ui/message"]
/**
* @param{currentRecord} currentRecord
* @param{message} message
*/, function (currentRecord, message) {
var recordObj;
/**
* Function to be executed after page is initialized.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.currentRecord - Current form record
* @param {string} scriptContext.mode - The mode in which the record is being accessed (create, copy, or edit)
*
* @since 2015.2
*/
function pageInit(scriptContext) {
recordObj = currentRecord.get();
console.log("recordObj",recordObj)
window.onbeforeunload = function () {
return "";
};
window.onbeforeunload = null;
window.addEventListener("beforeunload", function (event) {
// Cancel the event as stated by the standard.
event.preventDefault();
// Chrome requires returnValue to be set.
event.returnValue = "";
});
return true;
}
/**
* Function to be executed when field is changed.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.currentRecord - Current form record
* @param {string} scriptContext.sublistId - Sublist name
* @param {string} scriptContext.fieldId - Field name
* @param {number} scriptContext.lineNum - Line number. Will be undefined if not a sublist or matrix field
* @param {number} scriptContext.columnNum - Line number. Will be undefined if not a matrix field
*
* @since 2015.2
*/
function fieldChanged(scriptContext) {
if (
[
// "custpage_filter_subsidiary",
// "custpage_filter_period_of_year",
// "custpage_filter_period_of_quarter",
// "custpage_filter_vendor",
// "custpage_filter_buyer",
// "custpage_filter_department",
// "custpage_filter_isclosed"
"custpage_filter_pageindex"
].indexOf(scriptContext.fieldId) > -1
)
triggerSearch({});
// else triggerSearch({});
return true;
}
/**
* Validation function to be executed when field is changed.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.currentRecord - Current form record
* @param {string} scriptContext.sublistId - Sublist name
* @param {string} scriptContext.fieldId - Field name
* @param {number} scriptContext.lineNum - Line number. Will be undefined if not a sublist or matrix field
* @param {number} scriptContext.columnNum - Line number. Will be undefined if not a matrix field
*
* @returns {boolean} Return true if field is valid
*
* @since 2015.2
*/
function validateField(scriptContext) {
return true;
}
/**
* Validation function to be executed when record is saved.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.currentRecord - Current form record
* @returns {boolean} Return true if record is valid
*
* @since 2015.2
*/
function saveRecord(scriptContext) {
return true;
}
function dateGenerate(date){
console.debug("Before change",date)
var currentDate=new Date(date);
console.log("Before ",currentDate)
var day=currentDate.getDate()
if(day<10)
day="0"+day;
var month=(currentDate.getMonth())+1;
console.log("Month",month);
// var originalDate=currentDate.getFullYear()+"-"+month+"-"+currentDate.getDate();
var originalDate=month+"/"+day+"/"+currentDate.getFullYear()
console.debug("original Date",originalDate)
return originalDate;
}
/**
* To set URL Parameters for filtering and pagination
* @param{Object} defaultParam - To override values to parameter
* @param{Boolean} doNotNavigate - Do not navigate the page, instead send back the URL
* @returns {boolean}
*/
function triggerSearch(defaultParam, doNotNavigate) {
var salesperson= recordObj.getValue({
fieldId: " custpage_filter_salesperson",
})
var location=recordObj.getValue({
fieldId: " custpage_filter_location",
})
var paramObj = {
custpage_filter_salesperson: recordObj.getValue({
fieldId: "custpage_filter_salesperson",
}),
custpage_filetr_sale:recordObj.getText({
fieldId: "custpage_filter_salesperson",
}),
custpage_filter_loc: recordObj.getValue({
fieldId: "custpage_filter_location",
}),
// custpage_filter_period_of_quarter: recordObj.getValue({
// fieldId: "custpage_filter_period_of_quarter",
// }),
custpage_filter_location: recordObj.getValue({
fieldId: "custpage_filter_location",
}),
// custpage_filter_buyer: recordObj.getValue({
// fieldId: "custpage_filter_buyer",
// }),
custpage_filter_start_date: dateGenerate(recordObj.getValue({
fieldId: "custpage_filter_start_date",
})),
custpage_filter_end_date: dateGenerate(recordObj.getValue({
fieldId: "custpage_filter_end_date",
})),
// custpage_filter_period_of_year: recordObj.getValue({
// fieldId: "custpage_filter_period_of_year",
// }),
// custpage_filter_pageindex: recordObj.getValue({
// fieldId: "custpage_filter_pageindex",
// }),
// custpage_filter_isclosed: recordObj.getValue({
// fieldId: "custpage_filter_isclosed"
// })
};
for (var key in paramObj) {
if (!paramObj[key]) {
alert("Fill all the mandatory fields");
return false;
}
}
paramObj = Object.assign(paramObj, defaultParam);
console.log("paramObj", paramObj)
paramObj.custpage_filter_salesperson_formatted = recordObj.getValue({
fieldId: "custpage_filter_salesperson",
});
paramObj.custpage_filetr_sale=recordObj.getText({
fieldId: "custpage_filter_salesperson",
}),
paramObj.custpage_filter_loc=recordObj.getValue({
fieldId: "custpage_filter_location",
}),
// paramObj.custpage_filter_year_formatted = recordObj.getText({
// fieldId: "custpage_filter_period_of_year",
// });
// paramObj.custpage_filter_as_of_date = recordObj.getText({
// fieldId: "custpage_filter_period_of_quarter",
// });
// paramObj.custpage_filter_subsidiary_formatted = recordObj.getValue({
// fieldId: "custpage_filter_subsidiary",
// });
paramObj.custpage_filter_location = recordObj.getValue({
fieldId: "custpage_filter_location",
});
paramObj.custpage_filter_location_formatted = recordObj.getText({
fieldId: "custpage_filter_location",
});
paramObj.custpage_filter_start_date_formatted = dateGenerate(recordObj.getValue({
fieldId: "custpage_filter_start",
}));
// paramObj.custpage_filter_buyer_formatted = recordObj.getText({
// fieldId: "custpage_filter_buyer",
// });
paramObj.custpage_filter_end_date_formatted = recordObj.getValue({
fieldId: "custpage_filter_end_date",
});
var urlparam = "";
for (var key in paramObj) urlparam += "&" + key + "=" + paramObj[key];
var generatedURL =
window.location.origin +
window.ns_screenfields_suiteletform.suiteletFormUrl +
urlparam;
console.log("Generated URL",generatedURL)
if (doNotNavigate) return generatedURL;
else return (window.location.href = generatedURL), true;
}
/**
* To trigger Report Export or Report Schedule
* @returns {boolean}
*/
function triggerExport() {
var paramObj = {
custpage_filter_salesperson: recordObj.getValue({
fieldId: "custpage_filter_salesperson",
}),
// custpage_filter_period_of_quarter: recordObj.getValue({
// fieldId: "custpage_filter_period_of_quarter",
// }),
custpage_filter_location: recordObj.getValue({
fieldId: "custpage_filter_location",
}),
// custpage_filter_buyer: recordObj.getValue({
// fieldId: "custpage_filter_buyer",
// }),
custpage_filter_start_date: recordObj.getValue({
fieldId: "custpage_filter_start_date",
}),
// custpage_filter_period_of_year: recordObj.getValue({
// fieldId: "custpage_filter_period_of_year",
// }),
custpage_filter_end_date: recordObj.getValue({
fieldId: "custpage_filter_end_date",
}),
// custpage_filter_isclosed: recordObj.getValue({
// fieldId: "custpage_filter_isclosed"
// }),
};
for (var key in paramObj) {
if (!paramObj[key]) {
alert("Fill all the mandatory fields");
return false;
}
}
var pageLength = 1;
var subsidiary = recordObj.getValue({
fieldId: "custpage_filter_salesperson",
});
//if (pageLength == 0) return alert("There is no data to download");
message
.create({
title: "REPORT EXPORT",
message: "Please wait and do not navigate while we prepare the export",
type: message.Type.CONFIRMATION,
})
.show({
duration: 15000, // will disappear after 15s
});
for (var index = 1; index <= pageLength; index++) {
(function (iNum, uniqueUrl) {
fetch(uniqueUrl, {
method: "POST",
headers: {
// 'Content-Type': 'application/json',
},
body: JSON.stringify({}),
})
.then(function (response) {
return response.blob();
})
.then(function (blob) {
var url = window.URL.createObjectURL(blob);
var a = document.createElement("a");
a.href = url;
a.download =
subsidiary + "-" + iNum + "-" + Date.now() / 1000 + ".xls";
document.body.appendChild(a); // we need to append the element to the dom -> otherwise it will not work in firefox
a.click();
a.remove(); //afterwards we remove the element again
});
})(
index,
triggerSearch(
{
custpage_filter_pageindex: index,
toBeDownloaded: true,
toBeScheduled: false,
},
true
)
);
//break;
}
return true;
}
/**
* To generate Date String on the format YYYY-MM-DD
* @param {Date} dateObj - javascript Date Object
*/
function generateDateString(dateObj) {
return (
dateObj.getFullYear() +
"-" +
(dateObj.getMonth() + 1) +
"-" +
dateObj.getDate()
);
}
return {
pageInit: pageInit,
fieldChanged: fieldChanged,
validateField: validateField,
saveRecord: saveRecord,
generateDateString: generateDateString,
triggerSearch: triggerSearch,
triggerExport: triggerExport,
};
});
Custom Module
/**
* @NApiVersion 2.1
*/
/************************************************************************************************
* * Model for Payments Received/Paid Report**
*
*
* **********************************************************************************************
*
* Author: Jobin and Jismi
*
* Date Created : 29-June-2022
*
* Created By: Athul Krishna, Jobin and Jismi
*
* Description : Model
*
* REVISION HISTORY
*
*
*
*
***********************************************************************************************/
define(["N/search", "N/util", "../../Library/JJ CM NS Utility.js","N/runtime"], /**
* @param{search} search
* @param{util} util
* @param{jjUtil} jjUtil
* @param{runtime} runtime
*/ (search, util, jjUtil,runtime) => {
/**
* To handle large results more than 4000
* @param s
* @returns {*[]}
*/
const handleLargeResults = (s) => {
try {
let results = s.run();
let searchResults = [];
let searchId = 0;
do {
var resultSlice = results.getRange({
start: searchId,
end: searchId + 1000,
});
resultSlice.forEach(function (slice) {
searchResults.push(slice);
searchId++;
});
} while (resultSlice.length >= 1000);
return searchResults;
} catch (e) {
log.error("Error @handleLargeResults", e);
return [];
}
};
const models = {
/**
* To run saved search to fetch the model
* @param {Object} param
* @param {Object} param.filterConfig
* @param {Object} param.searchConfig
* @returns {[]|Object[]}
*/
runSearch({ filterConfig = {}, searchConfig = {} }) {
try {
log.debug("filterConfig",filterConfig)
let filter=[]
if(filterConfig?.salesPerson){
filter.push(["custrecord_jj_sales_person_ahap_39","anyof",filterConfig.salesPerson])
}
else{
let currentUser=runtime.getCurrentUser().id
log.debug("currentUser",currentUser)
filter.push(["custrecord_jj_sales_person_ahap_39","anyof",currentUser])
}
if(filterConfig?.location && filterConfig.location!=='- All -'){
if(filter.length>0){
filter.push("AND",["custrecord_jj_sales_location_ahap39","is",filterConfig.location])
}else{
filter.push(["custrecord_jj_sales_location_ahap39","is",filterConfig.location])
}
}
if(filterConfig?.startDate && filterConfig?.endDate){
if(filter.length>0){
filter.push("AND",["custrecord_jj_trandate_ahap39","within",filterConfig.startDate,filterConfig.endDate])
}else{
filter.push(["custrecord_jj_trandate_ahap39","within",filterConfig.startDate,filterConfig.endDate])
}
}
else{
let currentDate=new Date();
let date= (currentDate.getMonth()+1)+'/'+currentDate.getDate()+'/'+currentDate.getFullYear()
filter.push(["custrecord_jj_trandate_ahap39","within",date,date])
}
filter.push("AND",["custrecord_jj_parent_class_ahap60","isnot","Labor"])
filter.push("AND",
["custrecord_jj_transaction_number","noneof","@NONE@"])
log.debug("Filter Array",filter)
const searchResultArray = [];
var customrecord_jj_trans_line_com_ahap_39SearchObj = search.create({
type: "customrecord_jj_trans_line_com_ahap_39",
filters: filter,
columns:
[
search.createColumn({
name: "name",
sort: search.Sort.ASC,
label: "Name"
}),
search.createColumn({name: "custrecord_jj_item_ahap_39", label: "Item "}),//1
search.createColumn({name: "custrecord_jj_item_class_ahap_39", label: "Item Class"}),//2
search.createColumn({name: "custrecord_jj_item_line_number_ahap_39", label: "Item Line Number"}),//3
search.createColumn({name: "custrecord_jj_transaction_number", label: "Invoice"}),//4
search.createColumn({name: "custrecord_jj_pre_cal_commission_ahap_39", label: "Pre-Loc Calculated Commission"}),//5
search.createColumn({name: "custrecord_jj_sales_person_ahap_39", label: "Sales Person"}),//6
search.createColumn({name: "custrecord_jj_sold_margin_amount_ahap_39", label: "Sold Margin Amount"}),//7
search.createColumn({name: "custrecord_jj_sold_margin_percent_ahap39", label: "Sold Margin Percentage"}),//8
search.createColumn({name: "custrecord_jj_total_margin_ahap39", label: "Total Margin "}),//9
search.createColumn({name: "custrecord_jj_margin_percentage_ahap39", label: "Margin Percentage"}),//10
search.createColumn({name: "custrecord_jj_trandate_ahap39", label: "Tran Date"}),//11
search.createColumn({name: "custrecord_jj_unit_price_ahap39", label: "Unit Price"}),//12
search.createColumn({name: "custrecord_jj_item_class_ahap_39", label: "Item Class"}),//13
search.createColumn({name: "custrecord_jj_item_brand_ahap39", label: "Item Brand"}),//14
search.createColumn({name: "custrecord_jj_sales_inv_cost_ahap60", label: "Sales Invoice Cost"}),//15
search.createColumn({name: "custrecord_jj_sales_location_ahap39", label: "Sales Location"}),//16
search.createColumn({name: "custrecord_jj_location_cal_ahap60", label: "Location Calculation"}),//17
search.createColumn({name: "custrecord_jj_parent_class_ahap60", label: "Parent Class"}),//18
search.createColumn({name: "custrecord_jj_item_status_ahap_60", label: "Item Status"}),//19
search.createColumn({name: "custrecord_jj_open_box_ahap60", label: "Open Box"}),//20
search.createColumn({name: "custrecord155", label: "Rebate Amount"}),//21
search.createColumn({name: "custrecord_jj_scheduled_date", label: "Scheduled Date"}),//22
search.createColumn({name: "custrecord_jj_contribution", label: "Contribution %"}),//23
search.createColumn({name: "custrecord_jj_created_from_ahap60", label: "Created From "}),//24
search.createColumn({name: "custrecord_jj_parent_tran_date_ahap60", label: "Parent Transaction Date"}),//25
search.createColumn({name: "custrecord_jj_commission_expect", label: "Commission Expected"}),//26
search.createColumn({name: "custrecord_jj_gp_amount_expect", label: "GP $ Expected"}),//27
search.createColumn({name: "custrecord_jj_gp_percen_expect", label: "GP% Expected"}),//28
search.createColumn({name: "custrecord_jj_invoice_type", label: "Invoice Type"}),
search.createColumn({name: "custrecord_jj_qunatity", label: "Quantity"})
]
});
var searchResultCount = customrecord_jj_trans_line_com_ahap_39SearchObj.runPaged().count;
log.debug("customrecord_jj_trans_line_com_ahap_39SearchObj result count",searchResultCount);
const resultArray = handleLargeResults(customrecord_jj_trans_line_com_ahap_39SearchObj);
resultArray.forEach((result) => {
let searchResult={}
let documentId=result.getValue(result.columns[4]);
let productId=result.getText(result.columns[1]);
let itemClass=result.getValue(result.columns[13]);
let itemLine=result.getValue(result.columns[3]);
let Invoice= result.getText(result.columns[4]);
let parent=result.getValue(result.columns[24]);
let parentName=result.getText(result.columns[24]);
let salesPerson= result.getText(result.columns[6]);
//let key=Invoice+productId+salesPerson+itemLine;
//searchResult[key]={}
let link=''
let parentLink=''
if(Invoice.includes("INV")) {
Invoice=Invoice.replace('Invoice #','')
parentName=parentName.replace('Sales Order #','')
link = `https://359045.app.netsuite.com/app/accounting/transactions/custinvc.nl?id=${documentId}`
parentLink=`https://359045.app.netsuite.com/app/accounting/transactions/salesord.nl?id=${parent}`
searchResult.UnitPrice=result.getValue({name: "custrecord_jj_unit_price_ahap39", label: "Unit Price"});
searchResult.SalesInvoiceCost=result.getValue({name: "custrecord_jj_sales_inv_cost_ahap60", label: "Sales Invoice Cost"});
searchResult.TotalMargin=result.getValue({name: "custrecord_jj_total_margin_ahap39", label: "Total Margin "});
searchResult.MarginPercentage=result.getValue({name: "custrecord_jj_margin_percentage_ahap39", label: "Margin Percentage "});
}else{
Invoice=Invoice.replace('Credit Memo #','')
parentName=parentName.replace('Return Authorization #','')
link=`https://359045.app.netsuite.com/app/accounting/transactions/custcred.nl?id=${documentId}`
let amnt=-Math.abs(result.getValue({name: "custrecord_jj_unit_price_ahap39", label: "Unit Price"}));
log.debug("amnt",amnt)
searchResult.UnitPrice=amnt
let salesCost=result.getValue({name: "custrecord_jj_sales_inv_cost_ahap60", label: "Sales Invoice Cost"});
searchResult.SalesInvoiceCost=-Math.abs(parseFloat(salesCost.replace(/\,/g,'')))
let totalMargin=-Math.abs(result.getValue({name: "custrecord_jj_total_margin_ahap39", label: "Total Margin "}));
searchResult.TotalMargin=totalMargin;
let marginPercentage=-Math.abs(searchResult.MarginPercentage=result.getValue({name: "custrecord_jj_margin_percentage_ahap39", label: "Margin Percentage "}));
searchResult.MarginPercentage=marginPercentage;
}
searchResult.ProductNumber=productId;
searchResult.Class=itemClass;
searchResult.itemLine=itemLine;
searchResult.InvoiceNumber=`<a href="${link}" style="color: blue; text-decoration: none">${Invoice}</a>`;
searchResult.PreLocCalculation=result.getValue({name: "custrecord_jj_pre_cal_commission_ahap_39", label: "Pre-Loc Calculated Commission"});
searchResult.SalesPerson=salesPerson
searchResult.Brand=result.getValue({name: "custrecord_jj_item_brand_ahap39", label: "Item Brand"});
// searchResult.UnitPrice=result.getValue({name: "custrecord_jj_unit_price_ahap39", label: "Unit Price"});
searchResult.TotalCost=result.getValue({name: "custrecord_jj_sold_margin_amount_ahap_39", label: "Sold Margin Amount"});
searchResult.soldPercentage=result.getValue({name: "custrecord_jj_sold_margin_percent_ahap39", label: "Sold Margin Percentage"});
//searchResult.TotalMargin=result.getValue({name: "custrecord_jj_total_margin_ahap39", label: "Total Margin "});
//searchResult.MarginPercentage=result.getValue({name: "custrecord_jj_margin_percentage_ahap39", label: "Margin Percentage "});
searchResult.TranDate=result.getValue({name: "custrecord_jj_trandate_ahap39", label: "Tran Date"});
searchResult.SalesLocation=result.getValue({name: "custrecord_jj_sales_location_ahap39", label: "Sales Location"});
searchResult.LocationCalculation=result.getValue({name: "custrecord_jj_location_cal_ahap60", label: "Location Calculation"})||0.0;
if(searchResult.LocationCalculation=='NaN' || searchResult.LocationCalculation===' '){
searchResult.LocationCalculation=0.0
}
searchResult.Parent=result.getValue({name: "custrecord_jj_parent_class_ahap60", label: "Parent Class"});
searchResult.Status=result.getValue({name: "custrecord_jj_item_status_ahap_60", label: "Item Status"});
searchResult.OpenBox=result.getValue({name: "custrecord_jj_open_box_ahap60", label: "Open Box"});
searchResult.documnetId=documentId;
searchResult.documentNumber=Invoice;
searchResult.parentRec=parentName;
searchResult.ScheduledDate=result.getValue({name: "custrecord_jj_scheduled_date", label: "Scheduled Date"});
searchResult.Quantity=result.getValue({name: "custrecord_jj_qunatity", label: "Quantity"});
searchResult.InvoiceType=result.getValue({name: "custrecord_jj_invoice_type", label: "Invoice Type"})
// if(searchResult.ScheduledDate==''){
// searchResult.ScheduledDate='--/--/----'
// }
searchResult.Rebate=result.getValue({name: "custrecord155", label: "Rebate Amount"});
searchResult.Contribution=result.getValue({name: "custrecord_jj_contribution", label: "Contribution %"})
searchResult.ParentRecord=`<a href="${parentLink}" style="color: blue; text-decoration: none">${parentName}</a>`;
searchResult.ParentDate=result.getValue({name: "custrecord_jj_parent_tran_date_ahap60", label: "Parent Transaction Date"})
searchResult.GpPercentExpected=result.getValue({name: "custrecord_jj_gp_percen_expect", label: "GP% Expected"})
searchResult.GpAmountExpected=result.getValue({name: "custrecord_jj_gp_amount_expect", label: "GP $ Expected"})
searchResult.CommissionExpected=result.getValue({name: "custrecord_jj_commission_expect", label: "Commission Expected"})
searchResultArray.push(searchResult)
});
return searchResultArray;
} catch (error) {
log.error("Error @runSearch", error);
}
},
fetchSalesPerson({ filterConfig = {}, searchConfig = {},role,user }) {
let currentRole=role;
let currentUser=user;
log.debug("currentRole in search",currentRole)
log.debug("Current User in Search",currentUser)
let filterConf=[]
if(currentRole==1088 || currentRole==1046 || currentRole==1055 || currentRole==1058){
filterConf.push(["internalid","anyof",currentUser])
}
// if(currentRole!=='3' || currentRole!==3){
// log.debug("Inside if Condition")
//
// }
var employeeSearchObj = search.create({
type: "employee",
filters: filterConf,
columns:
[
search.createColumn({
name: "entityid",
sort: search.Sort.ASC,
label: "ID"
}),
search.createColumn({name: "altname", label: "Name"}),
search.createColumn({name: "internalid", label: "Internal ID"}),
search.createColumn({name: "location", label: "Location"})
]
});
var searchResultCount = employeeSearchObj.runPaged().count;
log.debug("employeeSearchObj result count",searchResultCount);
return jjUtil.dataSets.iterateSavedSearch({
searchObj: employeeSearchObj,
columns: jjUtil.dataSets.fetchSavedSearchColumn(
employeeSearchObj,
"label"
),
...searchConfig,
});
},
/**
* List all period of years
* @param filterConfig
* @param searchConfig
* @returns {[]|Object[]}
*/
fetchLocation({ filterConfig = {}, searchConfig = {},role,user }) {
let filterConf=[]
if(!role=='3' || !role==3){
log.debug("Inside if Condition",runtime.getCurrentUser().location)
filterConf.push(["internalid","anyof",runtime.getCurrentUser().location])
}
var locationSearchObj = search.create({
type: "location",
filters: filterConf,
columns:
[
search.createColumn({
name: "name",
label: "Name"
}),
search.createColumn({name: "phone", label: "Phone"}),
search.createColumn({name: "city", label: "City"}),
search.createColumn({name: "state", label: "State/Province"}),
search.createColumn({name: "country", label: "Country"}),
search.createColumn({name: "internalid", label: "Internal ID"})
]
});
var searchResultCount = locationSearchObj.runPaged().count;
log.debug("locationSearchObj result count",searchResultCount);
return jjUtil.dataSets.iterateSavedSearch({
searchObj: locationSearchObj,
columns: jjUtil.dataSets.fetchSavedSearchColumn(
locationSearchObj,
"label"
),
...searchConfig,
});
},
};
return function () {
this.models = models;
return this;
};
});