1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- /**
- * Downloadable products price model
- *
- * @author Magento Core Team <core@magentocommerce.com>
- */
- namespace Magento\Downloadable\Model\Product;
- class Price extends \Magento\Catalog\Model\Product\Type\Price
- {
- /**
- * Retrieve product final price
- *
- * @param integer $qty
- * @param \Magento\Catalog\Model\Product $product
- * @return float
- */
- public function getFinalPrice($qty, $product)
- {
- if ($qty === null && $product->getCalculatedFinalPrice() !== null) {
- return $product->getCalculatedFinalPrice();
- }
- $finalPrice = parent::getFinalPrice($qty, $product);
- /**
- * links prices are added to base product price only if they can be purchased separately
- */
- if ($product->getLinksPurchasedSeparately()) {
- if ($linksIds = $product->getCustomOption('downloadable_link_ids')) {
- $linkPrice = 0;
- $links = $product->getTypeInstance()->getLinks($product);
- foreach (explode(',', $linksIds->getValue()) as $linkId) {
- if (isset($links[$linkId])) {
- $linkPrice += $links[$linkId]->getPrice();
- }
- }
- $finalPrice += $linkPrice;
- }
- }
- $product->setData('final_price', $finalPrice);
- return max(0, $product->getData('final_price'));
- }
- }
|