/** * Create Price Info object for particular product * * @param SaleableInterface $saleableItem * @param array $arguments * @return \Magento\Framework\Pricing\PriceInfoInterface * @throws \InvalidArgumentException */ public function create(SaleableInterface $saleableItem, array $arguments = []) { $type = $saleableItem->getTypeId(); if (isset($this->types[$type]['infoClass'])) { $priceInfo = $this->types[$type]['infoClass']; } else { $priceInfo = $this->types['default']['infoClass']; } if (isset($this->types[$type]['prices'])) { $priceCollection = $this->types[$type]['prices']; } else { $priceCollection = $this->types['default']['prices']; } $arguments['saleableItem'] = $saleableItem; $quantity = $saleableItem->getQty(); if ($quantity) { $arguments['quantity'] = $quantity; } $arguments['prices'] = $this->objectManager->create($priceCollection, ['saleableItem' => $arguments['saleableItem'], 'quantity' => $quantity]); return $this->objectManager->create($priceInfo, $arguments); }