_.extend(LiveOrderModel, {
// @method getShipMethods
// @param {Array<String>} order_fields
// @returns {Array<OrderShipMethod>}
getShipMethods: function getShipMethods(order_fields) {
try {
var shipmethods = _.map(order_fields.shipmethods, function (shipmethod) {
var rate = Utils.toCurrency(shipmethod.rate.replace(/^D+/g, '')) || 0;
return {
internalid: shipmethod.shipmethod,
name: shipmethod.name,
shipcarrier: shipmethod.shipcarrier,
rate: rate,
rate_formatted: shipmethod.rate
};
});
order_fields.nsShippMethods = shipmethods;
var customerShipMethods = _.map(_.filter(Configuration.get('customshipmethods.setupshipmethod'), function (shipId) { return shipId.customersegment.indexOf(Configuration.get('customshipmethods.customerSegment')) > -1 }), function (shipId) { return parseInt(shipId.shipMethodID) });
var profile = ProfileModel.get();
console.error('customerShipMethods', JSON.stringify(customerShipMethods))
if (profile.shippingitem && !_.find(customerShipMethods, function (id) { return parseInt(profile.shippingitem) === parseInt(id) })) {
customerShipMethods.push(parseInt(profile.shippingitem))
}
console.error('customerShipMethods', JSON.stringify(customerShipMethods))
return _.filter(shipmethods, function (ship) { return !!_.find(customerShipMethods, function (id) { return parseInt(id) === parseInt(ship.internalid) }) });
} catch (error) {
console.error('customerShipMethods error', JSON.stringify(error))
return shipmethods || [];
}
},
chunkSize: 6e4,
customshipmethodObj: {},
submit: _.wrap(LiveOrderModel.submit, function update(fn) {
var result = fn.apply(this, _.toArray(arguments).slice(1));
try {
var soInternalID = result.internalid;
if (soInternalID) {
var shipmethod = ModelsInit.order.getFieldValues({ shipmethod: ['shipmethod'] });
if (shipmethod && shipmethod.shipmethod && shipmethod.shipmethod.shipmethod) {
var selectedShipMethod = shipmethod.shipmethod.shipmethod;
var field_valuescust = this.getFieldValues({
keys: ['shipmethods'],
items: []
});
var currentShipMethods = this.getShipMethodsOnly();
var customshipmethodset = _.findWhere(currentShipMethods, { internalid: selectedShipMethod });
try {
if (this.customshipmethodObj)
var customshipmethodset = this.customshipmethodObj;
} catch (err) {
console.error('methodsCust', err)
}
if (customshipmethodset && customshipmethodset.rate) {
if (result.summary) {
result.summary.total = result.summary.total - result.summary.shippingcost;
result.summary.shippingcost = customshipmethodset.rate || result.summary.shippingcost || 0;
result.summary.total = result.summary.total + result.summary.shippingcost;
result.summary.total_formatted = Utils.formatCurrency(result.summary.total);
result.summary.shippingcost_formatted = Utils.formatCurrency(result.summary.shippingcost);
}
}
}
}
} catch (err) {
console.error('submit', err)
}
return result;
})
})
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 updating price in the cart, when a customer login after adding item to the cart.
try {
var Iswholsale2 = false;
var custrecord = ModelsInit.session.customer.customFieldValues;
var segfind = _.findWhere(custrecord, { name: "custentity_hidden_customersegment" });
var segarray = segfind.value;
var segValues = JSON.parse(segarray)
_.each(segValues, function (each) {
if (each.id === "67166") {
Iswholsale2 = true;
}
})
if (!ModelsInit.session.customer.guest && (Iswholsale2 === true)) {
var wholsaleprice = Configuration.get("ProductConfig.wholesalePrice");
wholsaleprice = !!wholsaleprice ? parseFloat(wholsaleprice).toFixed(2) : parseFloat('3').toFixed(2);
response.lines.forEach(function (obj) {
var order_item = obj.internalid;
var onlineprice = obj.item.onlinecustomerprice_detail.onlinecustomerprice;
try {
var itemoptions = ModelsInit.order.getItemOption(order_item);
function getIsPersonalized(itemoptions) {
//Checking whether the item is personalized or not for setting the online price
try {
for (var i = 0; i < itemoptions.length; i++) {
if (
itemoptions[i].id === "CUSTCOL_JJ_PTC_395_PERSONALISEFONT" ||
itemoptions[i].id === "CUSTCOL_JJ_PTC_395_PERSONALISETEXT" ||
itemoptions[i].id === "CUSTCOL_JJ_PTC_395_PERSONALISESAYING"
) {
if (itemoptions[i].value) {
return true;
}
}
}
return false;
} catch (e) {
console.error("getIsPersonalized", e);
return false;
}
}
var isPersonalized = getIsPersonalized(itemoptions);
var order = nlapiGetWebContainer().getShoppingSession().getOrder();
var optionMap;
//Setting the price based on isPersonalized in custcol_jj_ptc_395_personaliseprice is adding for non personalized items
if (isPersonalized) {
var order = nlapiGetWebContainer().getShoppingSession().getOrder();
var optionMap;
optionMap = {
'custcol_jj_ptc_395_personaliseprice': wholsaleprice.toString() || '3.00'
};
var order_item1 = order.setItemOptions(order_item, optionMap)
var optionMap1 = {
'custcol_jj_ptc_395_personaliseonline': onlineprice.toString()
};
var order_item2 = order.setItemOptions(order_item1, optionMap1)
var itemoptions1 = order.getItemOption(order_item2);
}
} catch (err) {
console.error("itemoptionserr", JSON.stringify(err))
}
})
}
}
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)
}
})