1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- declare(strict_types=1);
- namespace Magento\Catalog\Pricing\Price;
- use Magento\Catalog\Model\Product\Configuration\Item\ItemInterface;
- /**
- * Configured Options model.
- */
- class ConfiguredOptions
- {
- /**
- * Get value of configured options.
- *
- * @param float $basePrice
- * @param ItemInterface $item
- *
- * @return float
- */
- public function getItemOptionsValue(float $basePrice, ItemInterface $item): float
- {
- $product = $item->getProduct();
- $value = 0.;
- $optionIds = $item->getOptionByCode('option_ids');
- if ($optionIds) {
- foreach (explode(',', $optionIds->getValue()) as $optionId) {
- $option = $product->getOptionById($optionId);
- if ($option !== null) {
- $itemOption = $item->getOptionByCode('option_' . $option->getId());
- /** @var $group \Magento\Catalog\Model\Product\Option\Type\DefaultType */
- $group = $option->groupFactory($option->getType())
- ->setOption($option)
- ->setConfigurationItem($item)
- ->setConfigurationItemOption($itemOption);
- $value += $group->getOptionPrice($itemOption->getValue(), $basePrice);
- }
- }
- }
- return $value;
- }
- }
|