public function createAdvertTransactionFront($advert, $unitPrice, $quantity, $discount, $subtotal, $totalPrice) { /** @var TransactionRepository $transactionRepository */ $transactionRepository = $this->manager->getRepository('EcommerceBundle:Transaction'); // create a new transaction $transactionKey = $transactionRepository->getNextNumber(); $transaction = new Transaction(); $transaction->setAdvert($advert); $transaction->setTransactionKey($transactionKey); $transaction->setStatus(Transaction::STATUS_CREATED); $transaction->setActor($this->securityContext->getToken()->getUser()); $transaction->setVat(21); $transaction->setTotalPrice($totalPrice); // create a new productpurchase $productPurchase = new ProductPurchase(); $productPurchase->setAdvert($advert); $productPurchase->setBasePrice($unitPrice); $productPurchase->setQuantity($quantity); $productPurchase->setDiscount($discount); $productPurchase->setTotalPrice($subtotal); $productPurchase->setTransaction($transaction); $productPurchase->setReturned(false); $productPurchase->setDeliveryExpenses(0); $this->manager->persist($productPurchase); $transaction->addItem($productPurchase); $this->manager->persist($transaction); $this->manager->flush(); $this->createInvoice(null, $transaction); return $transaction; }