Portal Widget shopping cart - Add sort condition for cost center field
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-29-2024 03:29 AM - edited 02-29-2024 03:31 AM
There is a field 'cost center' in the shopping cart . Right now it is getting sort based on 'cost center name' (in the second line of the screenshot).
The requirement is to sort it based on cost center CODE. Right now it not sorted - E19000 comes first and then E14000 . Tried with grCC.orderBy('code'); doesn't work.
below is the server side code.
(function() {
var m = data.msgs = {};
m.createdMsg = gs.getMessage("Created");
m.trackMsg = gs.getMessage("track using 'Requests' in the header or");
m.clickMsg = gs.getMessage("click here to view");
var gdt = new GlideDateTime().toString();
data.dateTime = {
dateTime: gdt
}
var userID = gs.getUser().getID();
var cart = new SPCart(input.cartName, userID);
//Sushant'code
var CC = gs.getUser().getRecord().getValue('cost_center');
var grCC = new GlideRecord('cmn_cost_center');
grCC.addQuery('sys_id',CC);
// Do not show cost centers without L1 approvals, STRY0014857, LDG
grCC.addNotNullQuery('u_level_1_approver');
// added check for validity of cost center, STRY0027359, BIJ
grCC.addNotNullQuery('valid_to');
grCC.addEncodedQuery('valid_from<=' + gdt + '^valid_to>=' + gdt);
grCC.query();
if (grCC.next()) {
data.cost_center = grCC.getValue('sys_id');
data.cost_center_display_name = grCC.getValue('code');
}
//end
if (input && input.action === "edit_item") {
data.editVariablesModal = $sp.getWidget('widget-modal', {embeddedWidgetId: 'sp-variable-editor', embeddedWidgetOptions: {sys_id: input.itemID, table: "sc_cart_item", isOrdering: true}});
return;
}
if (input && input.action === "update_quantity") {
var cartItemGR = new GlideRecord("sc_cart_item");
if (cartItemGR.get(input.itemID)) {
cartItemGR.setValue("quantity", input.quantity);
cartItemGR.update();
}
}
if (input && input.action === "checkout") {
cart.setSpecialInstructions(input.additionalDetails);
cart.setRequestedFor(input.cart.requested_for);
cart.setDeliveryAddress(input.deliverTo);
var cartValues = "<root>";
cartValues += "<u_location>"+ input.u_location + "</u_location>";
cartValues += "<u_cost_center>"+ input.cost_center + "</u_cost_center>";
cartValues += "</root>";
//Changes by Sushant
var cart_item = new GlideRecord('sc_cart_item');
cart_item.addQuery('cart', cart.getCartID());
cart_item.addQuery('active', 'true');
cart_item.query();
if(cart_item.next()) {
var hints = "<hints><entry key='sysparm_processing_hint' value='setfield:request.u_cart_values="+escape(cartValues)+"'/></hints>";
cart_item.hints = hints;
cart_item.update();
}
var request = cart.placeOrder();
data.requestData = {
number: request.getValue("number"),
table: request.getTableName(),
sys_id: request.getUniqueValue()
}
cart.setSpecialInstructions("");
cart.setRequestedFor(userID);
cart.setDeliveryAddress("");
}
if (input && input.action === "remove_item") {
var itemGR = new GlideRecord('sc_cart_item');
if (itemGR.get(input.removeItemID))
itemGR.deleteRecord();
}
if (input && input.action === "save_cart") {
var newCart = new SPCart(input.newCartName, userID);
newCart.loadCart(cart.getCartID());
}
data.sys_properties = {
twostep_checkout: gs.getProperty("glide.sc.checkout.twostep", "false") == 'true'
};
var cartID = cart.getCartID();
data.saveCartModal = $sp.getWidget('widget-modal', {embeddedWidgetId: 'sc_save_bundle', embeddedWidgetOptions: {}});
data.cart = cart.getCartObj();
data.cartItems = cart.getItems();
})();