Ejemplo n.º 1
0
 /**
  * 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);
 }