Updating Item options In Cart

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)
            }
        })

Leave a comment

Your email address will not be published. Required fields are marked *