To create a custom search in suitescript with a condition of inactive false and display on the website true.
var methodNotAllowedError = {
status: 405,
code: ‘INVALID_ID’,
message: ‘Sorry, you are not allowed to perform this action.’
};
var config = {
record: ‘customrecord_favourites’,
fields: {
internalid: ‘internalid’,
customers: ‘custrecord_fav_customer’,
item: ‘custrecord_fav_item’
}
};
try {
var list = function list(options) {
var parsedFav = [];
var itemIds = [];
var pageIndex = options.pageIndex ? options.pageIndex : 0;
var currentUser = Runtime.getCurrentUser();
var favSearchObj = search.create({
type: config.record,
filters:
[{
name: ‘isinactive’,
operator: ‘is’,
values: ‘F’
}, {
name: config.fields.customers,
operator: ‘is’,
values: currentUser.id
},
search.createFilter({
name: ‘isonline’,
join: config.fields.item, // this is likely ‘custrecord_fav_item’
operator: ‘is’,
values: ‘T’
})
],
columns:
[
config.fields.internalid,
config.fields.customers,
config.fields.item
],
});
var searchResultCount = favSearchObj.runPaged().count;
favSearchObj.run().each(function (result) {
var itemid = result.getValue({ name: config.fields.item });
itemIds.push(itemid)
return true;
});
var resultPerPage = options.resultPerPage || 2
var searchObj = favSearchObj.run();
var favResultSet = searchObj.getRange({
start: parseInt(pageIndex) * resultPerPage,
end: (parseInt(pageIndex) + 1) * resultPerPage
});
favResultSet.map(function (result) {
var itemid = result.getValue({ name: config.fields.item });
parsedFav.push({
recid: result.getValue({ name: config.fields.internalid }),
customers: result.getValue({ name: config.fields.customers }),
itemid: itemid,
});
return true;
});
return {
parsedFav: parsedFav,
searchResultCount: searchResultCount,
itemIds: itemIds
};
};
} catch (error) {
log.debugg(error);
}
var create = function create(itemID) {
var currentUser;
var newFav;
var newFavId = 0;
var newCount;
try {
newCount = searchItem(itemID);
if (newCount == 0) {
currentUser = Runtime.getCurrentUser();
var newFav;
newFav = record.create({
type: config.record,
isDynamic: true
});
newFav.setValue({ fieldId: config.fields.customers, value: currentUser.id });
newFav.setValue({ fieldId: config.fields.item, value: itemID });
newFavId = newFav.save({
ignoreMandatoryFields: true
});
newCount = searchItem(itemID);
}
return newCount;
} catch (e) {
return methodNotAllowedError;
}
return newCount;
};
function deleteRecord(searchArr) {
try {
searchArr = JSON.parse(searchArr);
log.debug(“searchArr123”, searchArr);
if (searchArr.length > 0) {
for (var index = 0; index < searchArr.length; index++) {
log.debug(“searchArr”, searchArr[index]);
record.delete({
type: “customrecord_favourites”,
id: searchArr[index],
});
}
}
return true;
} catch (error) {
log.error(“@fn deleteRemove”, error);
}
}
function searchItem(itemID) {
try {
var currentUser = Runtime.getCurrentUser();
var FavSearch = search.create({
type: “customrecord_favourites”,
filters:
[
[“custrecord_fav_item”, “anyof”, [itemID]],
“AND”,
[“isinactive”, “is”, “F”],
“AND”,
[“custrecord_fav_customer”, “anyof”, currentUser.id]
],
columns:
[
search.createColumn({ name: “custrecord_fav_customer”, label: “Customer ” }),
search.createColumn({ name: “custrecord_fav_item”, label: “Favourite Item” })
]
});
var searchResultCount = FavSearch.runPaged().count;
log.debug(“FavSearch result count”, searchResultCount);
return searchResultCount;
} catch (error) {
log.error(“@fn deleteRemove”, error);
}
}
function deleteFavItem(itemID) {
try {
var currentUser = Runtime.getCurrentUser();
var FavSearch = search.create({
type: “customrecord_favourites”,
filters:
[
[“custrecord_fav_item”, “anyof”, [itemID]],
“AND”,
[“isinactive”, “is”, “F”],
“AND”,
[“custrecord_fav_customer”, “anyof”, currentUser.id]
],
columns:
[
search.createColumn({ name: “custrecord_fav_customer”, label: “Customer ” }),
search.createColumn({ name: “custrecord_fav_item”, label: “Favourite Item” }),
search.createColumn({ name: “internalid”, label: “Internal ID” })
]
});
var searchResultCount = FavSearch.runPaged().count;
if (searchResultCount > 0) {
FavSearch.run().each(function (result) {
var recid = result.getValue({ name: “internalid” });
record.delete({
type: “customrecord_favourites”,
id: recid,
});
return true;
});
}
return true;
} catch (error) {
log.error(“@fn deleteRemove”, error);
}
}