/** * Add Invoice to the subscriptions * */ public function billSubscriptions() { $subscriptions = array(); foreach ($this->subscriptions as $subscription) { if ($subscription->getPaymentState() == $subscription::PAYMENT_OPEN || $subscription->getPaymentState() == $subscription::PAYMENT_RENEWAL && $subscription->getRenewalDate()->getTimestamp() <= time()) { $subscriptions[] = $subscription; } } if (empty($subscriptions)) { return; } //Create New Invoice $invoice = new Invoice(); foreach ($subscriptions as $subscription) { //Create New Invoice Item $invoiceItem = new InvoiceItem(); //Add InvoiceItem::$description to Subscription::getProductEntity() $invoiceItem->setDescription($subscription->getProduct()->getName() . ' (' . $subscription->getProductEntity() . ')'); //Add InvoiceItem::$price to Subscription::getPaymentAmount() $invoiceItem->setPrice($subscription->getPaymentAmount()); \Env::get('em')->persist($invoiceItem); //Attached to the created invoice $invoice->addInvoiceItem($invoiceItem); } $invoice->setOrder($this); \Env::get('em')->persist($invoice); //Attached to the order $this->addInvoice($invoice); }