For updating an item option in the cart when a customer adds any item to the cart, we can update it by using the function setItemOptions.
Syntax:
setItemOptions(itemlineid,optionMap)
Updates the item options for a particular cart row.
Parameters
itemlineid[required]optionMap[required] {Array of Item Option ID value pairs}
Example
Extending Liveorder Model file to update the price and personalized price ( extra price for customized items) ino the cart, based on Wholesale and retail customers.
Extension: Code (suitescript file)
Application.on('after:LiveOrder.get', function afterLiveOrderGet(Model, response) {
try {
if (ModelsInit.session.isLoggedIn2()) {
var selectedShipMethod = response.shipmethod
var currentShipMethods = response.shipmethods;
var currentShipSummary = response.summary;
try {
var shipmethod = ModelsInit.order.getFieldValues({ shipmethod: ['shipmethod'] });
if (shipmethod && shipmethod.shipmethod && shipmethod.shipmethod.shipmethod) {
var selectedShipMethod = shipmethod.shipmethod.shipmethod;
var currentShipMethods = Model.getShipMethodsOnly()
}
} catch (err) {
console.error('LiveOrderModelShipping', err)
}
//cart update 18/04/2022
try{
console.error("response",response);
console.error("responsestringy",JSON.stringify(response));
// var order = nlapiGetWebContainer().getShoppingSession().getOrder();
// console.error("Order_test", order);
response.lines.forEach(function(obj){
var order_item = obj.internalid
var item_rate = obj.rate
var onlineprice = obj.item.onlinecustomerprice_detail.onlinecustomerprice
var personalized_price = obj.options[4]["value"].label
console.error("personalized_price@",personalized_price)
console.error("onlineprice@",onlineprice)
console.error("item_rate@",item_rate)
console.error("order_item@",order_item)
// var order_cart = nlapiGetWebContainer().getShoppingSession().getOrder();
// console.error("Order_test", JSON.stringify(order_cart));
try{
var itemoptions = ModelsInit.order.getItemOption(order_item);
var order = nlapiGetWebContainer().getShoppingSession().getOrder();
console.error("itemoptions",JSON.stringify(itemoptions))
var optionMap = {
'custcol_jj_ptc_395_personaliseprice': '2.50'
};
var order_item1= order.setItemOptions(order_item,optionMap)
console.error("order_item1",JSON.stringify(order_item1))
var optionMap1 = {
'custcol_jj_ptc_395_personaliseonline': onlineprice.toString()
};
var order_item2= order.setItemOptions(order_item1,optionMap1)
console.error("order_item2",JSON.stringify(order_item2))
var itemoptions1 = order.getItemOption(order_item2);
console.error("itemoptions1",JSON.stringify(itemoptions1))
}catch(err){
console.error("itemoptionserr",JSON.stringify(err))
}
// var setitem = nlapiGetWebContainer().getShoppingSession().getOrder().setItemOptions(order_item,optionMap)
// console.error("setitem",JSON.stringify(setitem))
// var updatedItemoptions = nlapiGetWebContainer().getShoppingSession().getOrder().getItemOption(setitem);
// console.error("updatedItemoptions",JSON.stringify(updatedItemoptions))
})
}
catch (err){
console.error('LiveOrderModelItemlineupdate', err)
}
//cart update 18/04/2022
if (response.summary) {
if (selectedShipMethod) {
var customshipmethodset = _.findWhere(currentShipMethods, { internalid: selectedShipMethod});
if (customshipmethodset) {
currentShipSummary.total = currentShipSummary.total - currentShipSummary.shippingcost;
LiveOrderModel.customshipmethodObj = JSON.parse(JSON.stringify(customshipmethodset));
currentShipSummary.shippingcost = customshipmethodset.rate || currentShipSummary.shippingcost || 0;
currentShipSummary.total = currentShipSummary.total + currentShipSummary.shippingcost;
currentShipSummary.total_formatted = Utils.formatCurrency(currentShipSummary.total);
currentShipSummary.shippingcost_formatted = Utils.formatCurrency(currentShipSummary.shippingcost);
}
}
}
}
} catch (err) {
console.error('LiveOrderModelShippingget', err)
}
})