update(newQuantity) - gmontero/bsale-market-design-doc GitHub Wiki
Descripción
Actualiza la vista del carro de compras. Se evalúa si el producto tiene descuento. En caso de que tenga descuento se muestra en la vista y de muestra el precio original y el precio con descuento, a su vez se actualiza el precio total de los items del carro. En caso que exista algún tipo de error.
async function update(newQuantity) {
try {
// lock user interactivity
disable(true)
const updatedItem = await bsale.cart.update(cartItem, newQuantity)
const discount = item.querySelector('[data-bs="cart.item.discount"]') //? item.querySelector('[data-bs="cart.item.discount"]'): undefined;
const oldPrice = item.querySelector('[data-bs="cart.item.oldPrice"]') //? item.querySelector('[data-bs="cart.item.oldPrice"]') : undefined;
// set unit final price
item.querySelector('[data-bs="cart.item.unitPrice"]').textContent = formatPrice(updatedItem.variant.finalPrice)
if (updatedItem.variant.discount > 0 ) {
if(discount !== null){
discount.querySelector('[data-bs="cart.item.discount.value"]').textContent = `-${Math.trunc(updatedItem.variant.discount)}%`
discount.classList.remove('d-none')
}
if(oldPrice !== null){
oldPrice.classList.remove('d-none')
}
}
else {
if(discount !== null){
discount.classList.add('d-none')
}
if(oldPrice !== null){
oldPrice.classList.add('d-none')
}
}
input.value = updatedItem.quantity
// update item's total price
item.querySelector('[data-bs="cart.item.finalPrice"]').textContent = formatPrice(updatedItem.variant.subTotal)
updateUI()
}
catch (error) {
input.value = prevQuantity;
alert(error.lineNumber +" "+ error.message);
}
finally {
// unlock user interactivity
disable(false)
}
}