redirect to new page after checkout from portal
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-29-2019 04:25 PM
I have a requirement where upon adding items and checkout from the cart as of now Request is created and a info message is shown , i would like to redirect that to another page (sc_cart is cloned and we customized it as per our business need )
Can some one help me where to change that ? Below is the client script and server script of the widget
function ($scope, spUtil, $location, spModal, spAriaUtil) {
var c = this;
c.m = $scope.data.msgs;
c.deliverTo = "";
c.additionalDetails = "";
$scope.$on("$sp.service_catalog.cart.update", function() {
$scope.server.update().then(function() {
$scope.$emit("$sp.service_catalog.cart.count", getItemCount());
});
});
c.updateQuantity = function(item) {
spAriaUtil.sendLiveMessage(c.data.msgs.updatedMsq + " " + item.name + " " + c.data.msgs.quantityToMsg + " " + item.quantity);
c.server.get({
action: "update_quantity",
itemID: item.sys_id,
quantity: item.quantity
}).then(function(response) {
$rootScope.$broadcast("$sp.service_catalog.cart.update");
});
};
/*
loop through c.data.cartItems and find any Cart Items where
price is > 500 and set c.hasPriceItem500 to TRUE
price is > 3000 and set c.hasPriceItem3000 to TRUE
this function is also run when items are removed from the cart
*/
itemPriceCheck();
function itemPriceCheck() {
c.hasPriceItem3000 = false;
c.hasPriceItem500 = false;
c.hasPriceItem1000 = false;
c.isUdakLifeCare = false;
var itemPrice = 0;
c.data.cartItems.forEach(function(item) {
itemPrice = parseInt(item.price);
if (itemPrice > 500) {
c.hasPriceItem500 = true;
} else if (itemPrice < 500 && c.hasPriceItem500 != true) {
c.hasPriceItem500 = false;
}
if(itemPrice > 1000){
c.hasPriceItem1000 = true;
}else if (itemPrice < 1000 && c.hasPriceItem1000 != true){
c.hasPriceItem1000 = false;
}
if (itemPrice > 3000) {
c.hasPriceItem3000 = true;
}
if (c.hasPriceItem3000 == true) {
c.u_capital_purchase = true;
setTimeout(function() {
$("#u_capital_purchase").attr("disabled", true);
}, 250);
}
if (c.hasPriceItem3000 == false) {
c.u_capital_purchase = false;
setTimeout(function() {
$("#u_capital_purchase").removeAttr("disabled");
}, 250);
}
});
c.data.priceInt = c.data.cart.subtotal;
}
c.getCostCenterApprovers = function() {
$('#u_udak_approver').select2("val","");
c.data.action = "u_udak_approver";
c.data.u_udak = c.u_udak;
c.data.requested_for = c.requestedFor.value;
c.data.show_u_udak_approver = c.u_udak;
c.data.priceInt = c.data.cart.subtotal;
c.server.update().then(function(response) {
c.data.action = null;
c.data.refQual = response.approvers_list;
var udak_dv = response.udak_dv;
if (c.hasPriceItem500 == true && c.u_udak.value && udak_dv.startsWith('55')) {
c.u_capital_purchase = true;
$("#u_capital_purchase").attr("disabled", true);
}else if(c.hasPriceItem1000 == true && c.u_udak.value && udak_dv.startsWith('09')){
c.u_capital_purchase = true;
$("#u_capital_purchase").attr("disabled", true);
}else if(c.hasPriceItem1000 == true && c.u_udak.value && udak_dv.startsWith('10')){
c.u_capital_purchase = true;
$("#u_capital_purchase").attr("disabled", true);
}
else if (!c.u_udak.value) {
$("#u_capital_purchase").removeAttr("disabled");
}
if (c.hasPriceItem3000 == true) {
c.u_capital_purchase = true;
$("#u_capital_purchase").attr("disabled", true);
}
});
};
c.clearCapPurchase = function() {
c.u_tracking_number = '';
c.u_cip = '';
};
c.getLocationSetReqFor = function(ReqForChanged) {
c.data.action = "get_location_set_reqfor";
c.data.requested_for = c.requestedFor.value;
c.data.field_change = ReqForChanged;
c.server.update().then(function(response) {
c.data.action = "set_location_reqfor";
c.data.shipping_location = response.location;
c.u_shipping_location = {
displayValue: response.location_dv,
value: response.location,
name: 'u_shipping_location'
};
if (ReqForChanged == 'true') {
c.u_udak = {
displayValue: '',
value: '',
name: 'u_udak'
};
c.u_udak_approver = {
displayValue: '',
value: '',
name: 'u_udak_approver'
};
c.data.u_udak = null;
c.data.u_udak_approver = null;
c.data.show_u_udak_approver = false;
}
c.server.update().then(function(response) {
c.data.action = null;
c.data.field_change = null;
});
});
};
c.setLocationReqFor = function() {
c.data.action = "set_location_reqfor";
c.data.shipping_location = c.u_shipping_location.value;
c.data.u_udak = c.u_udak;
c.server.update().then(function(response) {
c.data.action = null;
});
};
c.fieldUpdated = function() {
c.data.action = "u_udak";
c.data.u_udak = c.u_udak;
c.data.u_udak_approver = c.u_udak_approver;
c.data.u_capital_purchase = c.u_capital_purchase;
c.data.u_cip = c.u_cip;
c.data.u_tracking_number = c.u_tracking_number;
c.server.update().then(function(response) {
c.data.action = null;
c.data.u_udak = null;
c.data._udak_approver = null;
c.data.u_capital_purchase = null;
c.data.u_cip = null;
c.data.u_tracking_number = null;
});
};
c.triggerCheckout = function($evt, twostepCheckout) {
if (twostepCheckout) {
$location.url('?id=sc_cart');
// $location.url('?id=cart_success'); I tried this but still not redirecting
return;
}
$evt.stopPropagation();
$evt.preventDefault();
c.checkoutInProgress = true;
c.data.action = "checkout";
c.data.deliverTo = c.deliverTo;
c.data.additionalDetails = c.additionalDetails;
c.server.update().then(function(response) {
c.data.action = null;
c.checkoutInProgress = false;
var requestData = $scope.data.requestData;
issueMessage(requestData.number, requestData.table, requestData.sys_id);
$rootScope.$broadcast("$sp.service_catalog.cart.update");
});
};
c.removeItem = function($evt, item) {
$evt.stopPropagation();
$evt.preventDefault();
$scope.server.get({
cartName: "DEFAULT",
action: "remove_item",
removeItemID: item.sys_id
}).then(function(response) {
c.data.cart = response.data.cart;
c.data.cartItems = response.data.cartItems;
spAriaUtil.sendLiveMessage(item.name + " " + c.data.msgs.itemRemovedMsg);
$rootScope.$broadcast("$sp.service_catalog.cart.update");
itemPriceCheck();
});
};
c.clearCart = function() {
spModal.confirm(c.data.msgs.clearCartConfirmationMsg).then(function(confirmed) {
if (confirmed) {
c.server.get({
action: "clear_cart"
}).then(function(response) {
c.data.cart = response.data.cart;
c.data.cartItems = response.data.cartItems;
$rootScope.$broadcast("$sp.service_catalog.cart.update");
spUtil.addTrivialMessage(c.data.msgs.cartEmptiedMsg);
});
itemPriceCheck();
}
});
};
c.editItem = function(itemID) {
c.server.get({
itemID: itemID,
action: "edit_item"
}).then(function(response) {
var myModalCtrl;
var unregister = $scope.$on('$sp.service_catalog.cart.update', function(){
myModalCtrl.close();
});
var myModal = angular.copy(response.data.editVariablesModal);
myModal.options.afterOpen = function(ctrl){
myModalCtrl = ctrl;
};
myModal.options.afterClose = function() {
unregister();
c.editVariablesModal = null;
myModalCtrl = null;
};
c.editVariablesModal = myModal;
});
};
c.saveBundle = function() {
var saveCartModalCtrl;
var unregister = $scope.$on('$sp.service_catalog.cart.save_cart', function(){
saveCartModalCtrl.close();
});
var saveCartModal = angular.copy(c.data.saveCartModal);
saveCartModal.options.afterOpen = function(ctrl){
saveCartModalCtrl = ctrl;
};
saveCartModal.options.afterClose = function() {
unregister();
c.saveCartModal = null;
saveCartModalCtrl = null;
};
c.saveCartModal = saveCartModal;
};
c.requestedFor = {
displayValue: c.data.cart.requested_for_display_name,
value: c.data.cart.requested_for,
name: 'requested_for'
};
$scope.$on("field.change", function(evt, parms) {
if (parms.field.name == 'requested_for')
c.data.cart.requested_for = parms.newValue;
});
function issueMessage(n, table, sys_id) {
var page = table == 'sc_request' ? 'sc_request' : 'ticket';
var t = c.m.createdMsg + " " + n + " - ";
t += c.m.trackMsg;
t += ' <a href="?id=' + page + '&table=' + table + '&sys_id=' + sys_id + '">' + c.m.clickMsg + '</a>';
spUtil.addInfoMessage(t);
}
$scope.$emit("$sp.service_catalog.cart.count", getItemCount());
function getItemCount() {
return c.data.cartItems.length || 0;
}
}
(function() {
var m = data.msgs = {};
m.createdMsg = gs.getMessage("Created");
m.trackMsg = gs.getMessage("track using 'View My Tickets' in the header or");
m.clickMsg = gs.getMessage("click here to view");
m.cartEmptiedMsg = gs.getMessage("Your cart has been emptied");
m.itemRemovedMsg = gs.getMessage("has been removed from your cart");
m.updatedMsq = gs.getMessage("Updated");
m.quantityToMsg = gs.getMessage("quantity to");
m.clearCartConfirmationMsg = gs.getMessage("Are you sure you want to empty your cart?");
var userID = gs.getUser().getID();
var cart = new SPCart(input.cartName, userID);
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", showItemTitle: true, 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 == "u_udak_approver") {
var costCenter = input.u_udak.value;
var price = input.priceInt;
var userFor = input.requested_for;
var cc = new GlideRecord('cmn_cost_center');
cc.get('sys_id', costCenter);
data.udak_dv = cc.code.toString();
if(!userFor){
userFor = gs.getUserID();
}
var mgrID = '';
var userGR = new GlideRecord('sys_user');
userGR.get(userFor);
if(userGR.isValidRecord()){
mgrID = ''+userGR.manager;
}
var approverID = [];
var cca = new GlideRecord('u_cost_center_approvers');
cca.addQuery('cost_center',costCenter);
cca.addQuery('approval_limit_int', '>=', price);
cca.addQuery('approver.active', true);
cca.orderBy('approval_limit_int');
cca.query();
var tierCost = -1;
while(cca.next()){
// Per STRY0049708, only include the lowest capable tier
// But also check if Manager can approve and make sure he/she is in list
var apprCost = parseInt(cca.getValue('approval_limit_int'));
var apprID = ''+cca.approver.sys_id;
if(tierCost == -1 || apprCost <= tierCost){
approverID.push(apprID);
tierCost = apprCost;
}else if(apprID == mgrID){
approverID.push(mgrID);
break;
}
}
data.approvers_list = 'sys_idIN' + approverID.join(',');
}
if(input && input.action === "get_location_set_reqfor") {
if (input.requested_for != '') {
var scCartGet = new GlideRecord('sc_cart');
scCartGet.addQuery('user', gs.getUserID());
scCartGet.addQuery('name', 'DEFAULT');
scCartGet.query();
if(scCartGet.next()) {
if(scCartGet.u_location.sys_id.toString() != '' && input.field_change == "false") {
data.location = scCartGet.u_location.sys_id.toString();
data.location_dv = scCartGet.u_location.name.toString();
}
else {
var user = new GlideRecord('sys_user');
if (user.get(input.requested_for)) {
data.location = user.location.sys_id.toString();
data.location_dv = user.location.name.toString();
var scCart = new GlideRecord('sc_cart');
scCart.addQuery('user', gs.getUserID());
scCart.addQuery('name', 'DEFAULT');
scCart.query();
if(scCart.next()) {
scCart.requested_for = input.requested_for;
scCart.update();
}
}
}
}
}
else {
var scCartBlank = new GlideRecord('sc_cart');
scCartBlank.addQuery('user', gs.getUserID());
scCartBlank.addQuery('name', 'DEFAULT');
scCartBlank.query();
if(scCartBlank.next()) {
scCartBlank.requested_for = gs.getUserID();
scCartBlank.update();
}
}
}
if(input && input.action === "set_location_reqfor") {
var scCartLocation = new GlideRecord('sc_cart');
scCartLocation.addQuery('user', gs.getUserID());
scCartLocation.addQuery('name', 'DEFAULT');
scCartLocation.query();
if(scCartLocation.next()) {
scCartLocation.u_location = input.shipping_location;
scCartLocation.update();
}
addUdakInfoToCart();
}
if(input && input.action === "u_udak") {
addUdakInfoToCart();
}
if (input && input.action === "checkout") {
cart.setSpecialInstructions(input.additionalDetails);
cart.setRequestedFor(input.cart.requested_for);
cart.setDeliveryAddress(input.deliverTo);
var request = cart.placeOrder();
data.requestData = {
number: request.getValue("number"),
table: request.getTableName(),
sys_id: request.getUniqueValue()
};
cart.setSpecialInstructions("");
cart.setRequestedFor(userID);
cart.setDeliveryAddress("");
var scClearCartLocation = new GlideRecord('sc_cart');
scClearCartLocation.addQuery('user', gs.getUserID());
scClearCartLocation.addQuery('name', 'DEFAULT');
scClearCartLocation.query();
if(scClearCartLocation.next()) {
scClearCartLocation.u_location = '';
scClearCartLocation.update();
}
}
if (input && input.action === "remove_item") {
var itemGR = new GlideRecord('sc_cart_item');
if (itemGR.get(input.removeItemID))
itemGR.deleteRecord();
}
if (input && input.action === "clear_cart") {
cart.clearCart();
}
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();
function addUdakInfoToCart() {
var u_location = '';
var u_udak = '';
var u_udak_approver = '';
var u_cip = '';
var u_tracking_number = '';
if (input.shipping_location) {
u_location = input.shipping_location;
}
if (input.u_udak) {
u_udak = input.u_udak.value;
}
if (input.u_udak_approver) {
u_udak_approver = input.u_udak_approver.value;
}
if (input.u_cip) {
u_cip = input.u_cip.value;
}
if (input.u_tracking_number) {
u_tracking_number = input.u_tracking_number;
}
if(u_udak == undefined){
u_udak = '';
}
if(u_udak_approver == undefined){
u_udak_approver = '';
}
if(input.u_capital_purchase == true){
if(u_cip == undefined) {
u_cip = '';
}
if(u_tracking_number == undefined){
u_tracking_number = '';
}
}
var cart_item = new GlideRecord('sc_cart_item');
cart_item.addQuery('cart.user', gs.getUserID());
cart_item.addQuery('cart.name', 'DEFAULT');
cart_item.addQuery('active', 'true');
cart_item.query();
//If found, add the field/value pairs to the 'hints' parameter for the cart
while(cart_item.next()) {
//Send the values to the request record
var hintVal = 'u_udakIS' + u_udak + '^u_udak_approverIS' + u_udak_approver + '^u_capital_purchaseIS' + input.u_capital_purchase + '^u_cipIS' + u_cip + '^u_tracking_numberIS' + u_tracking_number + '^locationIS' + u_location;
cart_item.hints = '<hints><entry key="sysparm_processing_hint" value="setfield:request.u_cartpop=' + hintVal + '"/></hints>';
cart_item.update();
}
}
})();
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-31-2019 10:32 AM
tried that still having that delay
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-31-2019 10:59 AM
Hi,
try
document.location = your url
Regards,
Munender
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-31-2019 10:58 AM
Hi,
try
document.location = your url
Regards,
Munender
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-04-2019 07:22 AM
I tried that as well
"document.location = your url"
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-09-2020 03:01 PM