Magento | Применить пользовательскую цену после того, как она уже была применена (Обновление корзины)

Я применяю индивидуальную цену к продукту, используя следующий метод:

  • Использовал событие «checkout_cart_product_add_after» и создал для него функцию соответственно.

  • В этой функции я использовал метод $ item-> setCustomPrice ($ value).

Товар добавлен в корзину по специальной цене, и все правильно. Включая применяемый налог и итоги.
Однако, когда я обновляю то же количество товара в корзине и устанавливаю другую пользовательскую цену, дела идут не так хорошо.

Я использую событие «checkout_cart_save_after», делаю то же самое, что упоминал ранее, и у меня возникают следующие проблемы:

  • Если я выберу следующую опцию «Налог» в бэк-офисе Magento «Показать цены на товары в каталоге: включая налоги», цена не изменится.

  • Если я не укажу налог на цены по каталогу, цена будет обновлена. Тем не менее, итоги все еще используют старую таможенную цену.

Я не знаю, использую ли я неправильное событие для этого. На данный момент я чувствую, что мое единственное решение — удалить продукт и добавить его в корзину по новой цене. Что я считаю, это не правильный путь.

Заранее спасибо всем, кто нашел время, чтобы взглянуть на этот вопрос.
Если мне не ясно с моей проблемой, я рад прояснить любые вопросы.

редактировать

Я добавлю еще несколько деталей, которые могут помочь:

FOREACH($observer->getCart()->getQuote()->getAllVisibleItems() AS $item){
$productPrice = $item->getProduct()->getPrice();

$discountValue = 20; //This will be a custom value that I load with a Web Service

$value = $productPrice - ($productPrice * $discountValue / 100);

$item->setCustomPrice($value);
$item->setOriginalCustomPrice($value);
}

Это работает при моем первом обновлении Custom Price, а не при обновлении моей корзины, как упоминалось ранее.

0

Решение

Вам нужно использовать как событие наблюдателя checkout_cart_product_add_after, так и checkout_cart_update_items_after

checkout_cart_update_items_after это событие сработало при обновлении кол-во в корзине. Так что вам нужно использовать это событие также.

0

Другие решения

Это должно исправить вашу проблему:

$item->setCustomPrice($value);
$item->setOriginalCustomPrice($value);
0

По вопросам рекламы [email protected]