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; }
/** * 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); }