Ejemplo n.º 1
0
 public static function fromArray($data)
 {
     $item = new InvoiceItem();
     if (isset($data['quantity'])) {
         $item->setQuantity($data['quantity']);
     }
     if (isset($data['vat'])) {
         $item->setVat($data['vat']);
     }
     if (isset($data['price_item'])) {
         $item->setPriceItem($data['price_item']);
     }
     if (isset($data['price'])) {
         $item->setPrice($data['price']);
     }
     if (isset($data['price_total'])) {
         $item->setPriceTotal($data['price_total']);
     }
     if (isset($data['description'])) {
         $item->setPriceTotal($data['description']);
     }
     if (isset($data['discount']) && is_array($data['discount'])) {
         $item->setDiscount(Discount::fromArray($data['discount']));
     }
     return $item;
 }
Ejemplo n.º 2
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);
 }