Получить расчетную цену вариации продукта

Получить расчетную цену вариации продукта

26.09.2019 10:18:59 Просмотров 53 Источник

Я создал промо-акцию с типом предложения - Fixed amount off each matching productи применяется к Specific product. В моем пользовательском блоке я получаю сущность продукта, но не вижу там никаких рекламных акций. Как я могу его получить?

UPD: попытался решить эту проблему с помощью via commerce_order.price_calculator услуги.

commercePriceCalc = \Drupal::service('commerce_order.price_calculator');
$context = new Context(\Drupal::entityTypeManager()->getStorage('user')->load(1), 
                     \Drupal::entityTypeManager()->getStorage('commerce_store')->load(1));
$prices = $commercePriceCalc->calculate($slide->field_product->entity, 1, $context);

Итак, calculateобъект PriceCalculatorResult с 2 свойствами, PriceCalculatorResultи calculatedPrice, но они идентичны, как если бы скидка не применялась, но я вижу, что она применяется в корзине.

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/58123403/get-a-calculated-price-of-product-variation#comment102754562_58123403
Мне не нужно было этого делать. Но официальные документы предлагают использовать другой сервис: commerce_price.chain_price_resolver. Источник: docs.drupalcommerce.org/commerce2/developer-guide/…
https://stackoverflow.com/questions/58123403/get-a-calculated-price-of-product-variation#comment102789568_58123403
Спасибо за ваш ответ, но я уже решил эту проблему, проверьте мой ответ

Ответы - Получить расчетную цену вариации продукта / Get a calculated price of Product Variation

Является ответом!
TheWorldNode

02.10.2019 07:36:01

Решил эту проблему, передав 4-й аргумент $adjustment_types$commercePriceCalc->calculate.

$adjustment_types = array("promotion" => "promotion");

Итак, окончательная версия кода

$commercePriceCalc = \Drupal::service('commerce_order.price_calculator');
$context = new Context(\Drupal::currentUser(), 
                     \Drupal::entityTypeManager()->getStorage('commerce_store')->load($store_id));
$prices = $commercePriceCalc->calculate($slide->field_product->entity, 1, $context, $adjustment_types);
Помочь в развитии проекта:
Закрыть X