private function recalcPackage(Entity\Package $package, $agegroup, $deadline) { $itemArray = array(); $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager'); foreach ($package->getItems() as $item) { if ($item->getStatus() == 'refund') { continue; } if ($item->hasParentItems()) { continue; } $product = $item->getProduct(); $price = $product->getProductPrice($agegroup, $deadline); if ($item->getPrice() != $price->getCharge()) { /* * disable item and create new item */ #$newItem = clone $item; $newItem = new Entity\Item(); $newItem->populate($item->getArrayCopy()); foreach ($item->getItemVariants() as $itemVariant) { $newItemVariant = clone $itemVariant; $newItem->addItemVariant($newItemVariant); $newItemVariant->setItem($newItem); } $newItem->setPrice($price->getCharge()); $newItem->setProduct($item->getProduct()); $newItem->setPackage($item->getPackage()); if ($newItem->getStatus() == 'paid') { $newItem->setStatus('ordered'); } $code = new Entity\Code(); $code->genCode(); $codecheck = 1; while ($codecheck != null) { $code->genCode(); $codecheck = $em->getRepository("ErsBase\\Entity\\Code")->findOneBy(array('value' => $code->getValue())); } $newItem->setCodeId(null); $newItem->setCode($code); /* * add subitems to main item */ foreach ($item->getChildItems() as $cItem) { $itemPackage = new Entity\ItemPackage(); $itemPackage->setSurItem($newItem); $itemPackage->setSubItem($cItem); $newItem->addItemPackageRelatedBySurItemId($itemPackage); } $itemArray[$item->getId()]['after'] = $newItem; } $itemArray[$item->getId()]['before'] = $item; } return $itemArray; }
/** * set Package * even if a participant can have multiple packages this service will only * process one of them. So for multiple packages the participant will get * multiple e-Tickets. * * @param \ErsBase\Entity\Package $package */ public function setPackage(Entity\Package $package) { $this->_package = $package; $this->setParticipant($package->getParticipant()); foreach ($package->getItems() as $item) { if ($item->getProduct()->getPersonalized()) { $this->addPersonalItem($item); } else { $this->addItem($item); } } }
public function transferPackage(Entity\Package $package) { $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager'); $newPackage = clone $package; $newPackage->setOrder($package->getOrder()); foreach ($package->getItems() as $item) { if ($item->hasParentItems()) { continue; } $newItem = clone $item; $item->setTransferredItem($newItem); $item->setStatus('transferred'); $item->setPackage($package); $em->persist($item); $newPackage->addItem($newItem); $newItem->setPackage($newPackage); $em->persist($newItem); } $package->setTransferredPackage($newPackage); $em->persist($package); return $newPackage; }