es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Compre x y obtenga gratis y – fórmula

Tratando de descubrir cómo formular una compra de x y llevar y gratis. Ejemplo de comprar 10 y llevar 1 gratis, comprar 20 y llevar 2 gratis y así sucesivamente. Por ahora, solo uso esta fórmula. Esta fórmula no funcionará cuando se cambie al ejemplo: Comprar 5 y llevar 1 gratis, comprar 10 y llevar 2 gratis.

Ts

//Código de JavaScript, sin traducción

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para calcular la fórmula “compra x y lleva gratis y”, se debe considerar el número de ítems que se compran y el umbral mínimo para los ítems gratis. El código actual usa una función de filtro y reducción para calcular el total de ítems que se están comprando.

    Sin embargo, la implementación actual usa valores codificados para 1, 2 y 3 ítems gratuitos basados en el porcentaje del umbral mínimo. Este enfoque no es escalable ya que no funcionará para todas las combinaciones de ofertas de “compra x y lleva gratis y”.

    Un enfoque mejor sería calcular el número de ítems gratuitos basados en la proporción de ítems comprados al umbral mínimo. Por ejemplo, si la oferta es “compra 5 y lleva 1 gratis” y el cliente está comprando 10 ítems, es elegible para 2 ítems gratuitos (10/5 = 2).

    Aquí hay un fragmento de código actualizado que calcula los ítems gratuitos en base a la proporción:

    getFreeItem(){
    
        let countTotal;
    
        this.commonService.getOrderList$.subscribe((x) => {
            x.filter(item => {
    
                item.forEach((element, i) => {
    
                    if (element.freeDealMin !== null) {
                        item.forEach(item => {
                            let purchasedCount = item.count ? item.count : 1;
                            let freeItemCount = Math.floor(purchasedCount / element.freeDealMin);
    
                            if (freeItemCount > this.freeDealQty) {
                                this.freeDealQty = freeItemCount;
                            }
                        });
                    }
                });
            });
        });
    }
    

    En este código actualizado, iteramos a través de cada ítem que se está comprando y calculamos el número de ítems gratuitos en base a la proporción de ítems comprados al umbral mínimo. Usamos la función Math.floor para redondear hacia abajo al número entero más cercano, ya que no son posibles fracciones de ítems gratuitos. Por último, comparamos el recuento de ítems gratuitos calculado con el actual freeDealQty y lo actualizamos si es necesario.

    Esta implementación es más flexible y puede manejar cualquier combinación de ofertas de “compra x y lleva gratis y”.

Comments are closed.