protected function getVariantId(ProductAttributeInterface $attribute = null)
 {
     if (null === $attribute) {
         return 0;
     }
     return $attribute->getId();
 }
 public function __construct(ProductInterface $product, ProductAttributeInterface $attribute = null, $quantity, \Exception $previous)
 {
     $message = sprintf('Cannot add item with id: "%s", attribute: "%s" and quantity: "%s" to cart', $product->getId(), null === $attribute ? 0 : $attribute->getId(), $quantity);
     parent::__construct($message, $previous->getCode(), $previous);
 }
 /**
  * Returns the attribute's data
  *
  * @param ProductAttributeInterface $productAttribute
  *
  * @return array
  */
 protected function getAttributeData(ProductAttributeInterface $productAttribute)
 {
     $sellPrice = $productAttribute->getSellPrice();
     $baseCurrency = $sellPrice->getCurrency();
     return ['id' => $productAttribute->getId(), 'finalPriceGross' => $this->currencyHelper->convertAndFormat($sellPrice->getFinalGrossAmount(), $baseCurrency), 'sellPriceGross' => $this->currencyHelper->convertAndFormat($sellPrice->getGrossAmount(), $baseCurrency), 'discountPriceGross' => $this->currencyHelper->convertAndFormat($sellPrice->getDiscountedGrossAmount(), $baseCurrency), 'stock' => $productAttribute->getStock(), 'symbol' => $productAttribute->getSymbol()];
 }