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.

Shopware 6 – añadir nueva condición de invalidación de promoción junto a Máximo de usos totales y Máximo de usos por cliente.

Intento añadir una funcionalidad de Presupuesto Máximo a las promociones de Shopware 6. Este campo se supone que funciona de la misma manera que los campos de Uso Máximo Total (MaxRedemptionsGlobal) y Uso Máximo por Cliente (MaxRedemptionsPerCustomer).

Esto significa que si la promoción tiene un presupuesto de, digamos… 1000 euros, cuando el descuento de esta promoción para todos los pedidos llegue a los 1000 euros, la promoción será inválida. Al igual que cuando se alcanza el umbral de Uso Máximo Total.

Añadí MaxBudget como una extensión de entidad y tengo un campo para ello debajo de Uso Máximo por Cliente en la administración.

En cuanto al carrito de la tienda, noté las condiciones para el Uso Máximo (global y por cliente) y verifiqué en PromotionCollector. En la función privada “getEligiblePromotionsWithDiscounts” hay este código que valida el uso máximo por cliente del pedido y el uso máximo global del pedido:

if (!$promotion->isOrderCountValid()) {
    continue;
}

if ($customer !== null && !$promotion->isOrderCountPerCustomerCountValid($customer->getId())) {
    continue;
}

Lo que necesito hacer es, justo después de estas dos condiciones, agregar una condición adicional como la siguiente:

if ($promotion->getMaxBudget()->maxBudgetReached()) {
    continue;
}

Entonces, la pregunta sería, ¿dónde puedo agregar una condición adicional además de estas dos, para verificar el presupuesto máximo? ¿Tengo que extender la clase PromotionCollector y anular el método? Tal vez puedo agregar una nueva clase como PromotionMaxBudgetCollector. No estoy seguro si este es el enfoque adecuado.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en php, e-commerce, shopware y shopware6, puedes agregar una condición adicional para verificar el presupuesto máximo en el método private function getEligiblePromotionsWithDiscounts. Puedes extender la clase PromotionCollector y sobrescribir el método para permitir la condición adicional, o puedes crear una nueva clase específicamente para verificar el presupuesto máximo, como PromotionMaxBudgetCollector. Ambos enfoques serían válidos y la elección dependería de las necesidades y la arquitectura específica del proyecto. Una vez que se agregue la condición adicional y se actualice el método, la promoción será inválida una vez que se alcance el presupuesto máximo, al igual que con el umbral de uso máximo total existente.

Comments are closed.