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-29-2019 11:15 PM
function ($scope, spUtil, $location, spModal, spAriaUtil, $window) {
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);
$window.location.href = "?id=' + page + '&table=' + table + '&sys_id=' + sys_id;
}
$scope.$emit("$sp.service_catalog.cart.count", getItemCount());
function getItemCount() {
return c.data.cartItems.length || 0;
}
}
Hi Kam,
Try below client script
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-30-2019 07:10 AM
Hello Rahul
its still not redirecting to new page
even I cant see any thing in logs
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-30-2019 10:32 AM
HI , i am able to redirect it to another page but once the order is placed before redirecting , it is showing the cart is empty page for 3-4 seconds , is there a way where we can redirect to the page without any lag
Below is the code
Client
function ($scope, spUtil, $location, spModal, spAriaUtil ,$window) {
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');
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);
$window.location.href = '?id=cart_success';
}
$scope.$emit("$sp.service_catalog.cart.count", getItemCount());
function getItemCount() {
return c.data.cartItems.length || 0;
}
}
----------------------------------------------------------------
Server Code -----------------------------------------------------
(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();
}
}
})();
------------------------------------------------------------------------
Template : which is linked to this widget
-----------------------------------------------------------------
<style>
.select2-results .select2-result-label div div {
width: 50px !important;
padding: 0 10px;
}
</style>
<div>
<h1 ng-show="c.data.cartItems.length > 0" class="h3">${Your Cart}</h1>
<div ng-show="c.data.cartItems.length > 0" class="panel panel-primary b">
<table id="cart" class="table table-hover table-condensed">
<thead>
<tr>
<th style="width: 52%;">${Product}</th>
<th style="width: 10%;">${Price}</th>
<th style="width: 8%;">${Quantity}</th>
<th style="width: 10%;">${Subtotal}</th>
<th style="width: 10%;"><span style="visibility: hidden;">${Item Controls}</span></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in c.data.cartItems track by item.sys_id | orderBy: 'order'">
<td data-th="Product">
<div class="row">
<div class="col-sm-2 hidden-xs"><img ng-show="item.picture" ng-src="{{item.picture}}" alt="{{item.name}}" class="img-responsive item-image"/></div>
<div class="col-sm-10">
<h2 class="nomargin h4"><a ng-href="?id=sc_cat_item&sys_id={{item.item_id}}">{{item.name}}</a></h2>
<p class="hidden-xs">{{item.short_description}}</p>
</div>
</div>
</td>
<td>
<strong>{{item.display_price}}</strong>
<div ng-show="item.recurring_price > 0">+ {{item.display_recurring_price}} {{item.recurring_frequency_display}}</div>
</td>
<td data-th="Quantity">
<input type="number"
title="${Quantity}"
ng-if="item.show_quantity"
class="form-control text-center"
ng-model="item.quantity"
min="1"
max="99"
ng-model-options="{ updateOn: 'blur' }"
ng-change="c.updateQuantity(item)">
<span ng-if="!item.show_quantity">-</span>
</td>
<td>
<strong>{{item.subtotal_price}}</strong>
<div ng-show="item.recurring_subtotal > 0">+ {{item.recurring_subtotal_price}} {{item.recurring_frequency_display}}</div>
</td>
<td class="actions" data-th="">
<!-- Commented out Edit functionality because all of the Sentara Catalog Items are not yet compatible with Service Portal -->
<!-- Uncomment once all items are compatible -->
<!--<button class="btn btn-info btn-sm" aria-label="${Edit Item} {{item.name}}" ng-show="item.has_options" ng-click="c.editItem(item.sys_id)"><i class="fa fa-pencil"></i></button>-->
<button class="btn btn-danger btn-sm" aria-label="${Remove Item From Cart} {{item.name}}" ng-click="c.removeItem($event, item)"><i class="fa fa-trash-o"></i></button>
</td>
</tr>
</tbody>
</table>
<div class="panel-footer clearfix">
<div class="pull-right">
<div class="h4 text-bold">${Total price}: {{c.data.cart.display_subtotal}}</div>
<div class="h5 text-bold" ng-repeat="(key, value) in c.data.cart.recurring_subtotals">+ {{value}} {{key}}</div>
</div>
</div>
</div>
<div class="panel b" ng-show="c.data.cartItems.length > 0">
<div class="order-details-container form-group">
<div class="order-details requested-for-details col-md-6 col-xs-12">
<div>
<label for="requested-for">${Requested For}</label>
<sn-record-picker id="requested-for" field="c.requestedFor" table="'sys_user'" display-field="'name'" display-fields="'user_name,title,u_company_role'" value-field="'sys_id'" search-fields="'name'" page-size="100" ng-init="c.getLocationSetReqFor('false')" ng-change="c.getLocationSetReqFor('true')"></sn-record-picker>
</div>
<div>
<label for="u_shipping_location">${Shipping location}</label>
<sn-record-picker id="u_shipping_location" field="c.u_shipping_location" table="'cmn_location'" display-field="'name'" display-fields="'city,state,zip'" value-field="'sys_id'" search-fields="'name'" page-size="100" ng-init="c.getLocationSetReqFor('false')" ng-change="c.setLocationReqFor()" ></sn-record-picker>
</div>
<!--START UDAK INPUT FIELDS-->
<div ng-if="c.data.priceInt > 0">
<div class="m-t-xl m-b-lg">
<label for="u_capital_purchase" class="label-text-bigger">${Mark this box if this is a capital purchase}</label>
<input type="checkbox" ng-model="c.u_capital_purchase" id="u_capital_purchase" name="u_capital_purchase" ng-change="c.fieldUpdated();c.clearCapPurchase()" ng-click="toggled = !toggled" />
<span class="text-smaller text-muted" ng-if="c.u_capital_purchase == true"><br />${Non-capital items such as warranty/support/maintenance fees, equipment moves and purchases that do not meet the capitalization thresholds will be expensed to the cost center below. For all entities across the system the capitalization threshold is $3,000, with the exception of entities 55, 09 and 10 which fall under the $1,000 threshold or for purchases associated with a CIP project that meet the criteria for capital even if below the capitalization threshold. Please reach out to GACAPITALPO@sentara.com if you have specific questions on this policy.
}</span>
</div>
<div class="m-b-sm">
<label for="u_udak" class="mandatory-label">${UDAK Code}</label>
<sn-record-picker id="u_udak" field="c.u_udak" table="'cmn_cost_center'" display-field="'code'" value-field="'sys_id'" search-fields="'code'" page-size="100" ng-change="c.fieldUpdated();c.getCostCenterApprovers()" ></sn-record-picker>
</div>
<div class="m-b-sm" ng-if="c.data.show_u_udak_approver">
<label for="u_udak_approver" class="mandatory-label">${UDAK Approver}</label> <a target="_blank" style="text-decoration:underline;padding-left:5px;" href="?id=kb_article&sys_id=64774d210f8312008be8317ce1050ed3">${Approvals FAQ}</a>
<sn-record-picker id="u_udak_approver" field="c.u_udak_approver" table="'sys_user'" default-query="c.data.refQual" display-field="'name'" value-field="'sys_id'" search-fields="'name'" page-size="100" ng-change="c.fieldUpdated()" ></sn-record-picker>
</div>
<div class="m-b-sm" ng-if="c.u_capital_purchase == true">
<label for="u_cip" class="mandatory-label">${CIP}</label>
<!-- 20171130 - Should be showing the u_cip_approver.u_approver.name (Approver person's name) but do to a limitation in sn-record-picker we cannot dot-walk to the name of the approver in the display-fields or display-field -->
<!-- see https://community.servicenow.com/message/1074691#1074691 -->
<sn-record-picker id="u_cip" field="c.u_cip" table="'u_cip_approver'" display-field="'u_cip'" display-fields="'u_approver.name'" value-field="'sys_id'" search-fields="'u_cip,u_approver.name'" page-size="100" ng-change="c.fieldUpdated()"></sn-record-picker>
<span class="text-smaller text-muted">${CIP or Clearing Account Number <br />Example: CIP Accounts (17000-18999) or Clearing account (16xxx)
<br />For best results search for CIP by the last 5 digits... ex 17658 <br />
Please reach out to your local finance leader if you have questions on what to select.
}</span>
</div>
<!--HIDING TRACKING NUMBER -->
<!-- <div class="m-b-sm" ng-if="c.u_capital_purchase == true">
<label for="u_tracking_number" class="mandatory-label">${Tracking Number}</label>
<textarea class="form-control" ng-model="c.u_tracking_number" id="u_tracking_number" ng-change="c.fieldUpdated()"></textarea>
</div> -->
</div>
<!--END UDAK INPUT FIELDS -->
<!--<div>
<label for="deliver-to">${Deliver To}</label>
<textarea class="form-control" ng-model="c.deliverTo" id="deliver-to"></textarea>
</div>-->
</div>
<div class="order-details special-instructions-details col-md-6 col-xs-12">
<label for="special-instructions">${Special Instructions}</label>
<textarea class="form-control" ng-model="c.additionalDetails" id="special-instructions" rows="4"></textarea>
</div>
</div>
<div class="panel-footer">
<a href="?id=sc_home" name="submit" ng-click="triggerOnSubmit()" class="btn btn-default m-r-xs">${Continue Shopping}</a>
<!-- Saved Carts won't work properly until entire Sentara Catalog works in Service Portal, once the iframe workaround is removed "edit" and "saved cart" functionality can be added back -->
<!--<button class="btn btn-default"
ng-click="c.saveBundle()">${Save as Bundle}</button>-->
<button class="btn btn-default"
ng-click="c.clearCart()">${Clear Cart}</button>
<button ng-if="c.data.priceInt > 0" ng-disabled="((c.checkoutInProgress) || (!c.u_capital_purchase && (!c.u_udak.value || !c.u_udak_approver.value)) || (c.u_capital_purchase && (!c.u_udak.value || !c.u_udak_approver.value || !c.u_cip.value )))" name="submit" ng-click="c.triggerCheckout($event)" class="btn btn-primary m-l-xs pull-right hidden-xs">
<span ng-show="!c.checkoutInProgress">${Checkout}</span>
<span ng-show="c.checkoutInProgress">${Ordering...}</span>
</button>
<button ng-if="c.data.priceInt > 0" ng-disabled="((c.checkoutInProgress) || (!c.u_capital_purchase && (!c.u_udak.value || !c.u_udak_approver.value)) || (c.u_capital_purchase && (!c.u_udak.value || !c.u_udak_approver.value || !c.u_cip.value )))" name="submit" ng-click="c.triggerCheckout($event)" class="btn btn-primary m-l-xs visible-xs large-checkout">
<span ng-show="!c.checkoutInProgress">${Checkout}</span>
<span ng-show="c.checkoutInProgress">${Ordering...}</span>
</button>
<button ng-disabled="c.checkoutInProgress" ng-if="c.data.priceInt <= 0" name="submit" ng-click="c.triggerCheckout($event)" class="btn btn-primary m-l-xs pull-right hidden-xs">
<span ng-show="!c.checkoutInProgress">${Checkout}</span>
<span ng-show="c.checkoutInProgress">${Ordering...}</span>
</button>
<button ng-disabled="c.checkoutInProgress" ng-if="c.data.priceInt <= 0" name="submit" ng-click="c.triggerCheckout($event)" class="btn btn-primary m-l-xs visible-xs large-checkout">
<span ng-show="!c.checkoutInProgress">${Checkout}</span>
<span ng-show="c.checkoutInProgress">${Ordering...}</span>
</button>
</div>
</div>
<p class="alert alert-warning" ng-if="(c.data.priceInt > 0 && !c.u_capital_purchase && (!c.u_udak.value || !c.u_udak_approver.value)) || (c.u_capital_purchase && (!c.u_udak.value || !c.u_udak_approver.value || !c.u_cip.value ))">${Required fields must be populated before checkout}</p>
<div ng-show="c.data.cartItems.length == 0" class="panel panel-default b">
<div class="panel-body">
<div class="empty-state-content">
<span class="fa fa-shopping-cart" aria-label="${Shopping cart icon}"></span>
<h2 class="h3">${Your shopping cart is empty}</h2>
<p>${Once you have added items to your shopping cart, you can check out from here.}</p>
<a class="btn btn-primary" href="?id=sc_landing">${View the Catalog}</a>
</div>
</div>
</div>
</div>

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-30-2019 09:01 PM
Hi
instead of $location.url can you try with $window.location.href once?