Example #1
0
 /**
  * {@inheritdoc}
  */
 public function process()
 {
     /** @var InvoiceRepository $invoiceRepository */
     $invoiceRepository = $this->entityManager->getRepository('CSBillInvoiceBundle:Invoice');
     $invoices = $invoiceRepository->getRecurringInvoices();
     foreach ($invoices as $invoice) {
         $recurringInfo = $invoice->getRecurringInfo();
         if (null !== $recurringInfo->getDateEnd() && Carbon::instance($recurringInfo->getDateEnd())->isFuture()) {
             continue;
         }
         $cron = CronExpression::factory($recurringInfo->getFrequency());
         if (true === $cron->isDue(Carbon::now())) {
             $newInvoice = $this->invoiceManager->duplicate($invoice);
             $this->setItemsDescription($newInvoice);
             $this->invoiceManager->accept($newInvoice);
         }
     }
 }