public function createInvoiceEntity(Request $request)
 {
     $json = $request->cookies->get('cart');
     $cart = json_decode($json, true);
     $invoice = new Invoice();
     if ($cart && is_array($cart)) {
         $quantity = 0;
         $amount = 0;
         foreach ($cart as $id => $qty) {
             $product = $this->em->getRepository('AppBundle\\Entity\\Product')->find($id);
             if ($product instanceof Product && $qty > 0) {
                 $price = $product->getSale() ? $product->getPriceSpecial() : $product->getPrice();
                 $item = new InvoiceItem();
                 $item->setProduct($product)->setPrice($price)->setQty((int) $qty);
                 $invoice->addItem($item);
                 $quantity += $qty;
                 $amount += $price * $qty;
             }
         }
         $invoice->setQuantity($quantity)->setAmount($amount);
         $user = $this->tokenStorage->getToken()->getUser();
         if ($user != 'anon.') {
             /** @var User $user */
             $invoice->setCustomer($user)->setCustomerName($user->getUsername() ? $user->getUsername() : null)->setDelivery($user->getAddress() ? $user->getAddress() : null)->setPhone($user->getPhoneNumber() ? $user->getPhoneNumber() : null)->setEmail($user->getEmail() ? $user->getEmail() : null);
         }
     }
     return $invoice;
 }
 /**
  * Add item
  *
  * @param \AppBundle\Entity\InvoiceItem $item
  *
  * @return Invoice
  */
 public function addItem(InvoiceItem $item)
 {
     $item->setInvoice($this);
     $this->items[] = $item;
     return $this;
 }