Solo quiero saber cuál es el mejor tipo de estructura de datos o alguna idea para ejecutar múltiples códigos de promoción para obtener descuentos en el orden correcto. Por ejemplo, puedo tener $164.99 en artículos en mi carrito de compras. Después de aplicar el código de promoción que reduce el 5 % del precio inicial y luego aplico el código de promoción de -20 dólares, obtengo 136,74 como precio final. Ahora digamos que quiero cambiar el pedido de promociones que se han agregado a la cesta. En el precio inicial de $ 164.99, primero quiero aplicar un código de promoción de -20 dólares y luego un código de promoción del 5% y obtengo el 137.74 como precio final. Como puedo hacer para que siempre tenga el precio correcto en este caso seria $136.74 digamos.
Solo apliqué un caso de interruptor para eso y aquí está:
export const priceAfterDiscount = (cart, promotions) => { let totalReturnedPrice = getCartTotal(cart); promotions.forEach(element => { switch(element){ case "5%OFF": var reducedPrice = (totalReturnedPrice * 5) / 100; totalReturnedPrice -= reducedPrice; break; case "20EUROFF": totalReturnedPrice -= 20; break; case "20%OFF": var reducedPrice = (totalReturnedPrice * 20) / 100; totalReturnedPrice -= reducedPrice; break; } }); return totalReturnedPrice; }
Todo lo que puede hacer es aplicar cada descuento al valor original.
-digamos 5% aplicado en $164.99. por lo tanto, el descuento será de $ 8.2495, debe guardar este valor
el segundo descuento es de $20 por lo que el descuento total se convierte en $(20+8,2495) $164,99-28,2495
Por lo tanto, el descuento se mantuvo igual independientemente del orden de la promoción.