/** * @param \Extcode\Cart\Domain\Model\Cart\BeVariant $newBeVariant * @return mixed */ public function addBeVariant(\Extcode\Cart\Domain\Model\Cart\BeVariant $newBeVariant) { $newBeVariantId = $newBeVariant->getId(); /** @var \Extcode\Cart\Domain\Model\Cart\BeVariant $beVariant */ $beVariant = $this->beVariants[$newBeVariantId]; if ($beVariant) { if ($beVariant->getBeVariants()) { $beVariant->addBeVariants($newBeVariant->getBeVariants()); } else { $newQuantity = $beVariant->getQuantity() + $newBeVariant->getQuantity(); $beVariant->setQuantity($newQuantity); } } else { $this->beVariants[$newBeVariantId] = $newBeVariant; } $this->reCalc(); }
/** * Adds Variants of a Variant to Order Item * * @param \Extcode\Cart\Domain\Model\Cart\BeVariant $variant * @param int $level Level * * @return void */ protected function addVariantsOfVariant(\Extcode\Cart\Domain\Model\Cart\BeVariant $variant, $level) { $level += 1; foreach ($variant->getBeVariants() as $variantInner) { /** * Cart Variant Inner * @var \Extcode\Cart\Domain\Model\Cart\BeVariant $variantInner */ if ($variantInner->getBeVariants()) { $this->addVariantsOfVariant($variantInner, $level); } else { $this->addBeVariant($variantInner, $level); } } }