Esempio n. 1
0
 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;
 }
Esempio n. 2
0
 /**
  * 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);
         }
     }
 }
Esempio n. 3
0
 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;
 }