Exemple #1
0
 /**
  * @param Request $request
  * @param Client  $client
  *
  * @return Response
  */
 public function createAction(Request $request, Client $client = null)
 {
     /** @var \CSBill\ClientBundle\Repository\ClientRepository $clients */
     $clients = $this->getRepository('CSBillClientBundle:Client');
     if (!$clients->getTotalClients() > 0) {
         return $this->render('CSBillInvoiceBundle:Default:empty_clients.html.twig');
     }
     $invoice = new Invoice();
     $invoice->setClient($client);
     $form = $this->createForm('invoice', $invoice);
     $form->handleRequest($request);
     if ($form->isValid()) {
         $action = $request->request->get('save');
         $invoiceManager = $this->get('invoice.manager');
         $invoice->setBalance($invoice->getTotal());
         $invoice = $invoiceManager->create($invoice);
         if ($action === Graph::STATUS_PENDING) {
             $invoiceManager->accept($invoice);
         }
         $this->flash($this->trans('invoice.create.success'), 'success');
         return $this->redirect($this->generateUrl('_invoices_view', array('id' => $invoice->getId())));
     }
     return $this->render('CSBillInvoiceBundle:Default:create.html.twig', array('form' => $form->createView()));
 }
Exemple #2
0
 /**
  * @param Invoice $invoice
  *
  * @return Invoice
  */
 public function duplicate(Invoice $invoice)
 {
     // We don't use 'clone', since cloning an invoice will clone all the item id's and nested values.
     // We rather set it manually
     $newInvoice = new Invoice();
     $now = Carbon::now();
     $newInvoice->setCreated($now);
     $newInvoice->setClient($invoice->getClient());
     $newInvoice->setBaseTotal($invoice->getBaseTotal());
     $newInvoice->setDiscount($invoice->getDiscount());
     $newInvoice->setNotes($invoice->getNotes());
     $newInvoice->setTotal($invoice->getTotal());
     $newInvoice->setTerms($invoice->getTerms());
     $newInvoice->setUsers($invoice->getUsers()->toArray());
     $newInvoice->setBalance($newInvoice->getTotal());
     if (null !== $invoice->getTax()) {
         $newInvoice->setTax($invoice->getTax());
     }
     foreach ($invoice->getItems() as $item) {
         $invoiceItem = new Item();
         $invoiceItem->setCreated($now);
         $invoiceItem->setTotal($item->getTotal());
         $invoiceItem->setDescription($item->getDescription());
         $invoiceItem->setPrice($item->getPrice());
         $invoiceItem->setQty($item->getQty());
         if (null !== $item->getTax()) {
             $invoiceItem->setTax($item->getTax());
         }
         $newInvoice->addItem($invoiceItem);
     }
     $this->create($newInvoice);
     return $newInvoice;
 }
Exemple #3
0
 /**
  * Add invoice.
  *
  * @param Invoice $invoice
  *
  * @return Client
  */
 public function addInvoice(Invoice $invoice)
 {
     $this->invoices[] = $invoice;
     $invoice->setClient($this);
     return $this;
 }