/** * @param array $data * @return \Shopware\Bundle\StoreFrontBundle\Struct\Product\PriceRule */ public function hydratePriceRule(array $data) { $price = new Struct\Product\PriceRule(); $price->setId((int) $data['__price_id']); $price->setFrom((int) $data['__price_from']); $price->setPrice((double) $data['__price_price']); $price->setPseudoPrice((double) $data['__price_pseudoprice']); if (strtolower($data['__price_to']) == 'beliebig') { $price->setTo(null); } else { $price->setTo((int) $data['__price_to']); } if (isset($data['__price___attribute_id'])) { $attribute = $this->attributeHydrator->hydrate($this->extractFields('__attribute_', $data)); $price->addAttribute('core', $attribute); } return $price; }
/** * Calculates the cheapest price considering the variant min purchase * @param Struct\ListProduct $product * @param Struct\Product\PriceRule $priceRule * @param Struct\ProductContextInterface $context * @return Struct\Product\Price */ private function calculateCheapestAvailablePrice(Struct\ListProduct $product, Struct\Product\PriceRule $priceRule, Struct\ProductContextInterface $context) { $priceRule->setPrice($priceRule->getUnit()->getMinPurchase() * $priceRule->getPrice()); $priceRule->getUnit()->setPurchaseUnit($priceRule->getUnit()->getMinPurchase() * $priceRule->getUnit()->getPurchaseUnit()); $priceRule->setPseudoPrice($priceRule->getUnit()->getMinPurchase() * $priceRule->getPseudoPrice()); $tax = $context->getTaxRule($product->getTax()->getId()); return $this->calculatePriceStruct($priceRule, $tax, $context); }