示例#1
0
 /**
  * @param \Magento\Catalog\Model\Product $product
  * @return array
  */
 protected function getVisibilities($product)
 {
     /** @var \Magento\Catalog\Model\Product[] $collection */
     $collection = $product->getTypeInstance()->getAssociatedProducts($product) ?: [];
     $visibilities = [];
     /** @var \Magento\Catalog\Model\Product $item */
     foreach ($collection as $item) {
         if ($this->msrpData->canApplyMsrp($item)) {
             $visibilities[] = $item->getMsrpDisplayActualPriceType() == TypePrice::TYPE_USE_CONFIG ? $this->config->getDisplayActualPriceType() : $item->getMsrpDisplayActualPriceType();
         }
     }
     return $visibilities;
 }
示例#2
0
 /**
  * Check if can apply Minimum Advertise price to product
  * in specific visibility
  *
  * @param int|Product $product
  * @param int|null $visibility Check displaying price in concrete place (by default generally)
  * @return bool
  *
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  */
 public function canApplyMsrp($product, $visibility = null)
 {
     if (!$this->config->isEnabled()) {
         return false;
     }
     if (is_numeric($product)) {
         $product = $this->productRepository->getById($product, false, $this->storeManager->getStore()->getId());
     }
     $result = $this->msrp->canApplyToProduct($product);
     if ($result && $visibility !== null) {
         $productPriceVisibility = $product->getMsrpDisplayActualPriceType();
         if ($productPriceVisibility == Type\Price::TYPE_USE_CONFIG) {
             $productPriceVisibility = $this->config->getDisplayActualPriceType();
         }
         $result = $productPriceVisibility == $visibility;
     }
     if ($product->getTypeInstance()->isComposite($product) && (!$result || $visibility !== null)) {
         $isEnabledInOptions = $this->productOptions->isEnabled($product, $visibility);
         if ($isEnabledInOptions !== null) {
             $result = $isEnabledInOptions;
         }
     }
     return $result;
 }