Beispiel #1
0
 /**
  * Returns amount of already returned items for given order item.
  *
  * @param OrderItem $orderItem
  *
  * @return int
  */
 public function getOrderItemReturnedQuantity(OrderItem $orderItem)
 {
     $sum = 0;
     $orderItem->getReturnItems()->map(function (ReturnItem $returnItem) use(&$sum) {
         $sum += $returnItem->getQuantity();
     });
     return $sum;
 }
 /**
  * @param array $distribution
  * @param int   $total
  *
  * @return ReturnItem
  */
 protected function getItem($distribution = [10], $total = 10)
 {
     $orderItem = new OrderItem();
     $orderItem->setQuantity($total);
     $testedItem = null;
     foreach ($distribution as $q) {
         $returnItem = new ReturnItem($orderItem);
         $returnItem->setQuantity($q);
         if ($testedItem) {
             $orderItem->getReturnItems()->add($returnItem);
         } else {
             $testedItem = $returnItem;
         }
     }
     return $testedItem;
 }
Beispiel #3
0
 /**
  * create new order items and related entities
  * @param array $orderItem
  */
 private function createOrderItems($orderItem)
 {
     $order = $this->getRepository('MarelloOrderBundle:Order')->createQueryBuilder('o')->where('o.orderNumber LIKE :orderId')->setParameter('orderId', $orderItem['order_number'])->getQuery()->getSingleResult();
     $productResult = $this->getRepository('MarelloProductBundle:Product')->findBySku($orderItem['sku']);
     if (is_array($productResult)) {
         /** @var \Marello\Bundle\ProductBundle\Entity\Product $product */
         $product = array_shift($productResult);
     }
     $itemEntity = new OrderItem();
     $itemEntity->setProduct($product);
     $itemEntity->setOrder($order);
     $itemEntity->setQuantity($orderItem['qty']);
     $itemEntity->setPrice($orderItem['price']);
     $itemEntity->setTotalPrice($orderItem['total_price']);
     $itemEntity->setTax($orderItem['tax']);
     $order->addItem($itemEntity);
     // accumulate the totals for order
     $subtotal = $order->getSubtotal() + $itemEntity->getTotalPrice();
     $tax = $order->getTotalTax() + $itemEntity->getTax();
     $total = $order->getGrandTotal() + $itemEntity->getTotalPrice();
     $order->setSubtotal($subtotal)->setTotalTax($tax)->setGrandTotal($total);
     $this->manager->persist($order);
 }