/**
  * @Route("/add", name="recurring_add")
  * @Template("SiwappRecurringInvoiceBundle:RecurringInvoice:edit.html.twig")
  */
 public function addAction(Request $request)
 {
     $em = $this->getDoctrine()->getManager();
     $invoice = new RecurringInvoice();
     $invoice->addItem(new Item());
     $terms = $em->getRepository('SiwappConfigBundle:Property')->get('legal_terms');
     if ($terms) {
         $invoice->setTerms($terms);
     }
     $form = $this->createForm('Siwapp\\RecurringInvoiceBundle\\Form\\RecurringInvoiceType', $invoice, ['action' => $this->generateUrl('recurring_add')]);
     $form->handleRequest($request);
     if ($form->isValid()) {
         $em->persist($invoice);
         $em->flush();
         $this->addTranslatedMessage('flash.added');
         return $this->redirect($this->generateUrl('recurring_edit', array('id' => $invoice->getId())));
     }
     return array('form' => $form->createView(), 'entity' => $invoice, 'currency' => $em->getRepository('SiwappConfigBundle:Property')->get('currency'));
 }
Пример #2
0
 public function generatePending(RecurringInvoice $recurring)
 {
     $generated = 0;
     while ($recurring->countPendingInvoices($recurring) > 0) {
         $invoice = new Invoice();
         $invoice->setCustomerName($recurring->getCustomerName());
         $invoice->setCustomerEmail($recurring->getCustomerEmail());
         $invoice->setCustomerIdentification($recurring->getCustomerIdentification());
         $invoice->setContactPerson($recurring->getContactPerson());
         $invoice->setInvoicingAddress($recurring->getInvoicingAddress());
         $invoice->setShippingAddress($recurring->getShippingAddress());
         $invoice->setSeries($recurring->getSeries());
         foreach ($recurring->getItems() as $item) {
             $invoiceItem = new Item();
             $invoiceItem->setDescription($item->getDescription());
             $invoiceItem->setQuantity($item->getQuantity());
             $invoiceItem->setDiscount($item->getDiscount());
             $invoiceItem->setUnitaryCost($item->getUnitaryCost());
             foreach ($item->getTaxes() as $tax) {
                 $invoiceItem->addTax($tax);
             }
             $invoice->addItem($invoiceItem);
         }
         $invoice->setNotes($recurring->getNotes());
         $invoice->setTerms($recurring->getTerms());
         if ($d = $recurring->getDaysToDue()) {
             $invoice->setDueDate(new \DateTime('+ ' . $d . ' days'));
         }
         $recurring->addInvoice($invoice);
         $generated++;
     }
     $recurring->setLastExecutionDate(new \DateTime());
     $this->em->persist($recurring);
     $this->em->flush();
     return $generated;
 }