Exemple #1
0
 /**
  * @param Invoice $invoice
  *
  * @return Invoice
  *
  * @throws InvalidTransitionException
  */
 public function create(Invoice $invoice)
 {
     if ($invoice->isRecurring()) {
         $invoice->setStatus(Graph::STATUS_RECURRING);
         $firstInvoice = clone $invoice;
         $firstInvoice->setRecurring(false);
         $firstInvoice->setRecurringInfo(null);
         $this->entityManager->persist($invoice);
         $this->entityManager->flush();
         $invoice = $firstInvoice;
     }
     // Set the invoice status as new and save, before we transition to the correct status
     $invoice->setStatus(Graph::STATUS_NEW);
     $this->entityManager->persist($invoice);
     $this->entityManager->flush();
     $this->applyTransition($invoice, Graph::TRANSITION_NEW);
     $this->dispatcher->dispatch(InvoiceEvents::INVOICE_PRE_CREATE, new InvoiceEvent($invoice));
     $this->entityManager->persist($invoice);
     $this->entityManager->flush();
     $this->dispatcher->dispatch(InvoiceEvents::INVOICE_POST_CREATE, new InvoiceEvent($invoice));
     return $invoice;
 }